diff options
Diffstat (limited to 'packages/scripts')
-rw-r--r-- | packages/scripts/build.gradle | 6 | ||||
-rwxr-xr-x | packages/scripts/resources/bin/dmenu-pass.sh | 40 | ||||
-rwxr-xr-x | packages/scripts/resources/bin/dmenu-software.sh | 13 | ||||
-rwxr-xr-x | packages/scripts/resources/bin/gnome-commands.md | 19 | ||||
-rwxr-xr-x | packages/scripts/resources/bin/smtp-server.py | 20 | ||||
-rwxr-xr-x | packages/scripts/resources/bin/telepath-setpresence.sh | 6 | ||||
-rw-r--r-- | packages/scripts/resources/lib/activate.inc.sh | 68 | ||||
-rw-r--r-- | packages/scripts/resources/lib/environments.inc.sh | 46 |
8 files changed, 218 insertions, 0 deletions
diff --git a/packages/scripts/build.gradle b/packages/scripts/build.gradle new file mode 100644 index 0000000..d10b19e --- /dev/null +++ b/packages/scripts/build.gradle @@ -0,0 +1,6 @@ +version '1.0' + +ospackage { + into "/opt/${project.name}" + from files('resources') +} diff --git a/packages/scripts/resources/bin/dmenu-pass.sh b/packages/scripts/resources/bin/dmenu-pass.sh new file mode 100755 index 0000000..bb3be7a --- /dev/null +++ b/packages/scripts/resources/bin/dmenu-pass.sh @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +shopt -s nullglob globstar + +prefix=${PASSWORD_STORE_DIR-~/.password-store} +password_files=( "$prefix"/**/*.gpg ) +password_files=( "${password_files[@]#"$prefix"/}" ) +password_files=( "${password_files[@]%.gpg}" ) + +password=$(printf '%s\n' "${password_files[@]}" | dmenu "$@") + +[[ -n $password ]] || exit + +while true; do + pass show "$password" 2>&1 \ + | sed -e 's/^pass:.*/pass: XXXX/' \ + | xmessage -file - \ + -buttons "Done:1,Copy 'login':2,Copy 'pass':3,Copy all:4" \ + -default "Done" \ + -nearmouse -timeout 10 + case "$?" in + 2) + pass show "$password" 2>&1 \ + | sed -ne 's/^login: \(.*\)/\1/p' \ + | xclip -i -verbose -l 1 2>/dev/null + ;; + 3) + pass show "$password" 2>&1 \ + | sed -ne 's/^pass: \(.*\)/\1/p' \ + | xclip -i -verbose -l 1 2>/dev/null + ;; + 4) + pass show "$password" 2>&1 \ + | xclip -i -verbose -l 1 2>/dev/null + ;; + *) + break + ;; + esac +done diff --git a/packages/scripts/resources/bin/dmenu-software.sh b/packages/scripts/resources/bin/dmenu-software.sh new file mode 100755 index 0000000..bca5b54 --- /dev/null +++ b/packages/scripts/resources/bin/dmenu-software.sh @@ -0,0 +1,13 @@ +#!/bin/bash -l + +sysenv='System native environment' + +env=`(echo "$sysenv"; plain_list_envs) | dmenu` + +test -f "$HOME/.cache/dmenu_run" && rm -f "$HOME/.cache/dmenu_run" + +if [ "$env" == "$sysenv" ]; then + dmenu_run +else + bash -l -c "activate $env; dmenu_run" +fi diff --git a/packages/scripts/resources/bin/gnome-commands.md b/packages/scripts/resources/bin/gnome-commands.md new file mode 100755 index 0000000..56ff017 --- /dev/null +++ b/packages/scripts/resources/bin/gnome-commands.md @@ -0,0 +1,19 @@ + +here=`dirname "$0"` +here=`realpath "$here"` +set -x +dconf write /org/mate/marco/keybinding-commands/command-1 "'$here/telepath-setpresence.sh available'" +dconf write /org/mate/marco/global-keybindings/run-command-1 "'<Super>n'" + +dconf write /org/mate/marco/keybinding-commands/command-2 "'$here/telepath-setpresence.sh busy'" +dconf write /org/mate/marco/global-keybindings/run-command-2 "'<Super>b'" + +dconf write /org/mate/marco/keybinding-commands/command-3 "'mate-terminal'" +dconf write /org/mate/marco/global-keybindings/run-command-3 "'<Super>Return'" + +dconf write /org/mate/marco/keybinding-commands/command-4 "'$here/dmenu-software.sh'" +dconf write /org/mate/marco/global-keybindings/run-command-4 "'<Super>c'" + +dconf write /org/mate/marco/keybinding-commands/command-5 "'$here/dmenu-pass.sh'" +dconf write /org/mate/marco/global-keybindings/run-command-5 "'<Super>p'" + diff --git a/packages/scripts/resources/bin/smtp-server.py b/packages/scripts/resources/bin/smtp-server.py new file mode 100755 index 0000000..1cfef81 --- /dev/null +++ b/packages/scripts/resources/bin/smtp-server.py @@ -0,0 +1,20 @@ +#!/usr/bin/env python +import sys, os, mailbox, email, smtpd, asyncore + +class MaildirServer(smtpd.PureProxy): + def __init__(self, localaddr, remoteaddr): + smtpd.SMTPServer.__init__(self, localaddr, remoteaddr) + self.maildir = mailbox.Maildir("./Maildir", create=True) + def _deliver(self, mailfrom, rcpttos, data): + mail = email.message_from_string(data) + maildirMail = Message(mail) + self.maildir.add(maildirMail) + +if __name__ == '__main__': + muttrc = os.path.join(os.path.dirname(__file__), "muttrc") + print("Use `mutt -F {}' to read mails".format(muttrc)) + smtpd.DEBUGSTREAM = sys.stderr + server = MaildirServer(("0.0.0.0", 8025), (None, None)) + asyncore.loop() + +# vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4 diff --git a/packages/scripts/resources/bin/telepath-setpresence.sh b/packages/scripts/resources/bin/telepath-setpresence.sh new file mode 100755 index 0000000..5187bb6 --- /dev/null +++ b/packages/scripts/resources/bin/telepath-setpresence.sh @@ -0,0 +1,6 @@ +#!/bin/sh +# $1 can be 'available' or 'busy' or ? +qdbus org.freedesktop.Telepathy.Connection.haze.sipe.yves_2efischer_40cern_2ech_2cyfischer \ + /org/freedesktop/Telepathy/Connection/haze/sipe/yves_2efischer_40cern_2ech_2cyfischer \ + org.freedesktop.Telepathy.Connection.Interface.SimplePresence.SetPresence \ + "$1" "" diff --git a/packages/scripts/resources/lib/activate.inc.sh b/packages/scripts/resources/lib/activate.inc.sh new file mode 100644 index 0000000..79bed6b --- /dev/null +++ b/packages/scripts/resources/lib/activate.inc.sh @@ -0,0 +1,68 @@ + +# non-interactive activate + __activate_env() { + for func in $(typeset -F | cut -f 3 -d ' ' | grep -E '^__env_'); do + if [[ "$func" == "__env_$1" ]]; then + $func + echo "Activated $1" + return 0 + fi + done + echo "Error: Environment not found $1" >&2 + return 1 +} + +# print all defined envs +list_envs() { + for env in $(typeset -F | sed -n -e 's/^declare -f __env_//p'); do + active=false + for env_active in $ENV_ACTIVE; do + if [ "$env_active" == "$env" ]; then + active=true + fi + done + if $active; then + echo -n "${env}* " + else + echo -n "$env " + fi + done + echo "" +} + +plain_list_envs() { + typeset -F | sed -n -e 's/^declare -f __env_//p' +} + +# Interactive activate +activate() { + err=false + for env in $*; do + if ! typeset -F | grep -q -E "^declare -f __env_${env}$"; then + echo "Environment not defined: $env" + err=true + fi + done + if $err; then + return 1 + fi + + for env in $*; do + if typeset -F | grep -q -E "^declare -f __env_${env}$"; then + export ENV_ACTIVE="$ENV_ACTIVE${ENV_ACTIVE:+ }$env" + __env_${env} + fi + done + echo "Active: $ENV_ACTIVE" +} + +# initialization +for env_request in $ENV_ACTIVE; do + __activate_env $env_request +done + +# bash-completion for `activate' +_activate() { + _init_completion -s || return + COMPREPLY=( $(compgen -W "$(list_envs)" -- $cur) ) +} && complete -F _activate activate diff --git a/packages/scripts/resources/lib/environments.inc.sh b/packages/scripts/resources/lib/environments.inc.sh new file mode 100644 index 0000000..8960d95 --- /dev/null +++ b/packages/scripts/resources/lib/environments.inc.sh @@ -0,0 +1,46 @@ + +function __sub_java7() { + export JAVA_HOME=/usr/lib/jvm/java-7-oraclejdk + export PATH=$JAVA_HOME/bin:$PATH +} + +function __sub_java8() { + export JAVA_HOME=/usr/lib/jvm/java-8-oraclejdk + export PATH=$JAVA_HOME/bin:$PATH +} + +function __sub_tools() { + export PATH=/opt/idea-iu15/bin:$PATH + export PATH=/opt/gwt-chromium/bin:$PATH + + export PATH=/opt/grails3/bin:$PATH + + export PATH=/opt/cern-scripts/bin:$PATH + + export TNS_ADMIN=/home/yfischer/.cache/tnsnames/admin_localhost + export JAVA_OPTS="-Doracle.net.tns_admin=$TNS_ADMIN" + export GRADLE_OPTS="-Doracle.net.tns_admin=$TNS_ADMIN" +} + +function __env_ideajava8() { + __sub_java8 + __sub_tools +} + +function __env_ideajava7() { + __sub_java7 + __sub_tools +} + +function __env_fwk24() { + __sub_java7 + + export PATH=/opt/idea-iu15/bin:$PATH + export PATH=/opt/gwt-chromium/bin:$PATH + export PATH=/opt/grails2.2.1/bin:$PATH + export PATH=/opt/cern-scripts/bin:$PATH + + export TNS_ADMIN=/home/yfischer/.cache/tnsnames/admin_localhost + export JAVA_OPTS="-Doracle.net.tns_admin=$TNS_ADMIN" + export GRADLE_OPTS="-Doracle.net.tns_admin=$TNS_ADMIN" +} |