diff options
Diffstat (limited to 'qubes-dwm-6.2/scripts')
| -rwxr-xr-x | qubes-dwm-6.2/scripts/dmenu_all | 36 | ||||
| -rwxr-xr-x | qubes-dwm-6.2/scripts/dmenu_cur | 59 | ||||
| -rwxr-xr-x | qubes-dwm-6.2/scripts/dwm_status | 96 | ||||
| -rwxr-xr-x | qubes-dwm-6.2/scripts/get_id | 3 | ||||
| -rwxr-xr-x | qubes-dwm-6.2/scripts/get_qube | 3 | ||||
| -rwxr-xr-x | qubes-dwm-6.2/scripts/lock | 16 | ||||
| -rwxr-xr-x | qubes-dwm-6.2/scripts/sensible_terminal | 18 | ||||
| -rwxr-xr-x | qubes-dwm-6.2/scripts/toggle_autolock | 16 | ||||
| -rwxr-xr-x | qubes-dwm-6.2/scripts/wrap_dmenu | 3 | ||||
| -rwxr-xr-x | qubes-dwm-6.2/scripts/xdg_autostart | 30 |
10 files changed, 280 insertions, 0 deletions
diff --git a/qubes-dwm-6.2/scripts/dmenu_all b/qubes-dwm-6.2/scripts/dmenu_all new file mode 100755 index 0000000..e63bf80 --- /dev/null +++ b/qubes-dwm-6.2/scripts/dmenu_all @@ -0,0 +1,36 @@ +#!/bin/sh + +#app_path="/usr/share/applications/" +app_path="$HOME/.local/share/applications/" + +scrape_apps() { + grep '^Name=\|^Exec=' "$app_path"/*.desktop | grep ':Name=' | cut -d= -f2- +} + +exclude() { + grep -v "Qube Settings" +} + +tidy() { + sed 's/Rxvt Color Unicode Terminal/urxvt/' +} + +untidy() { + sed 's/urxvt/Rxvt Color Unicode Terminal/' +} + +find_file() { + grep "^Name=$1" "$app_path"/*.desktop | cut -d: -f1 +} + +# Expects the contents of a desktop file +execute_app() { + local cmd="$(grep '^Exec=' "$1" | cut -d= -f2-)" + eval " $cmd" +} + +choice=$(scrape_apps | exclude | tidy | sort | wrap_dmenu -p "Run" $* | untidy) +[ -z "$choice" ] && exit +file="$(find_file "$choice")" +[ -z "$file" ] && exit +execute_app "$file"
\ No newline at end of file diff --git a/qubes-dwm-6.2/scripts/dmenu_cur b/qubes-dwm-6.2/scripts/dmenu_cur new file mode 100755 index 0000000..fd8f152 --- /dev/null +++ b/qubes-dwm-6.2/scripts/dmenu_cur @@ -0,0 +1,59 @@ +#!/bin/sh + +get_colour() { + local colour=$(xprop -id $1 | grep '_QUBES_LABEL_COLOR(CARDINAL)' | cut -d\ -f3) + printf "#%06X" $colour +} + +app_path() { + if [ "$1" = "dom0" ]; then + echo "$HOME/.local/share/applications/" ; + else + echo "$HOME/.local/share/qubes-appmenus/$1"/apps/ ; + fi; +} + +scrape_apps() { + grep '^Name=\|^Exec=' "$(app_path $1)"/*.desktop | grep ':Name=' \ + | sed 's/'"$1"': //' | cut -d= -f2- | sort +} + +filter() { + grep -v "Qube Settings" +} + +tidy() { + sed 's/Rxvt Color Unicode Terminal/urxvt/' +} + +untidy() { + sed 's/urxvt/Rxvt Color Unicode Terminal/' +} + +find_file() { + grep "^Name=.*$2" "$(app_path $1)"/*.desktop | cut -d: -f1 +} + +# Expects the contents of a desktop file +execute_app() { + local cmd="$(grep '^Exec=' "$1" | cut -d= -f2-)" + eval " $cmd" +} + +win_id=$(get_id) +qube="$(get_qube)" + +if [ -z "$qube" ]; then + qube="dom0"; + colour=""; +else + colour="-sb $(get_colour $win_id)" +fi; + +choice=$(scrape_apps "$qube" | filter | tidy | sort | wrap_dmenu -p "$qube" $colour $* | untidy) +[ -z "$choice" ] && exit + +file="$(find_file "$qube" "$choice")" +[ -z "$file" ] && exit + +execute_app "$file" diff --git a/qubes-dwm-6.2/scripts/dwm_status b/qubes-dwm-6.2/scripts/dwm_status new file mode 100755 index 0000000..9d806f0 --- /dev/null +++ b/qubes-dwm-6.2/scripts/dwm_status @@ -0,0 +1,96 @@ +#!/bin/bash + +status_time() { + date '+%d/%Hh%M' +} + +status_bat() { + local report=$(acpi | tr -d ',') + echo $report | grep -qv Unknown + if [ "$?" = "0" ]; then + local status=$(echo $report | cut -d\ -f 3 | cut -b 1) + local perc=$(echo $report | cut -d\ -f 4) + local time=$(echo $report | cut -d\ -f 5 | sed 's/\([0-9]*\):\([0-9]*\).*/\1h\2m/') + local output="$status$perc" + if [ -n "$time" ]; then + output="$output"" $time" + fi; + echo "$output" + else + echo ? + fi +} + +status_load() { + local load=$(uptime) + load=${load/#*load average: } + load=${load%,*,*} + echo "Load: $load" +} + +status_temp() { + local temp=$(( $(cat /sys/class/thermal/thermal_zone0/temp) / 1000 )) + if [ "$temp" -gt "60" ]; then + echo "$temp C | " + else + echo + fi +} + +status_autolock() { + cat ~/.autolock_status +} + +status_ram() { + xl info | awk '/free_memory/ { printf("%.2fG free", $3/1024) } ' +} + +status_qubes() { + local qubes=$(qvm-ls --no-spinner --raw-data --fields FLAGS 2>/dev/null | grep -v '^0' | grep '^.r......' | wc -l) + echo "$qubes Qubes" +} + +status_disk() { + local disk='' + local free='' + local size='' + local usage='' + read size usage <<< $(qvm-pool -i $(qubes-prefs default-pool) | grep 'size\|usage' | sort | awk '{print $2}') + free=$(($size - $usage)) + case ${#free} in + 1[3-5]) + disk="$(($free / 1099511627776))T" ;; + 1[0-2]) + disk="$(($free / 1073741824))G" ;; + [7-9]) + disk="$(($free / 1048576))M" ;; + [4-6]) + disk="$(($free / 1024))K" ;; + [1-3]) + disk="$free Bytes" ;; + *) + disk="Error" ;; + esac + echo "$disk" +} + +main() { + local n + for ((n=0; ; ++n)); do + if (( n % 2 == 0 )); then + #local load=$(status_load) + local bat=$(status_bat) + local time=$(status_time) + fi + # local ram=$(status_ram) + # local disk=$(status_disk) + local temp=$(status_temp) + local qubes=$(status_qubes) + local autolock=$(status_autolock) + local status="$autolock$qubes | $temp$bat | $time" + xsetroot -name "$status" + sleep 30 + done +} + +main diff --git a/qubes-dwm-6.2/scripts/get_id b/qubes-dwm-6.2/scripts/get_id new file mode 100755 index 0000000..2b9b99e --- /dev/null +++ b/qubes-dwm-6.2/scripts/get_id @@ -0,0 +1,3 @@ +#!/bin/sh + +xprop -root _NET_ACTIVE_WINDOW | sed 's/.*# //' diff --git a/qubes-dwm-6.2/scripts/get_qube b/qubes-dwm-6.2/scripts/get_qube new file mode 100755 index 0000000..bd0710a --- /dev/null +++ b/qubes-dwm-6.2/scripts/get_qube @@ -0,0 +1,3 @@ +#!/bin/sh + +xprop -id $(get_id) | awk -- '/_QUBES_VMNAME/ { print substr($3,2,length($3)-2) }' diff --git a/qubes-dwm-6.2/scripts/lock b/qubes-dwm-6.2/scripts/lock new file mode 100755 index 0000000..a44e59a --- /dev/null +++ b/qubes-dwm-6.2/scripts/lock @@ -0,0 +1,16 @@ +#!/bin/sh + +# Lock vault +( if [ -n "$(qvm-ls | grep vault-keys | grep Running)" ]; then + qvm-run vault-keys "tomb close all; tomb slam all" +fi; ) & + +# We want powersaving now that screen is locked +xset +dpms +sleep 1; xset dpms force off + +# No fork i3lock +i3lock -c 000000 -f -n + +# Clean up on exit +trap "xset -dpms" EXIT diff --git a/qubes-dwm-6.2/scripts/sensible_terminal b/qubes-dwm-6.2/scripts/sensible_terminal new file mode 100755 index 0000000..52a45cd --- /dev/null +++ b/qubes-dwm-6.2/scripts/sensible_terminal @@ -0,0 +1,18 @@ +#!/bin/bash + +run_terminal=' +for t in "$TERMINAL" st urxvt rxvt xterm; do + command -v "$t" > /dev/null 2>&1 && exec "$t"; +done +' + +main() { + local vm=$(get_qube) + if [[ -n "$vm" ]]; then + qvm-run "$vm" "bash -c '$run_terminal'" + else # run terminal in dom0 + exec bash -c "$run_terminal" + fi +} + +main diff --git a/qubes-dwm-6.2/scripts/toggle_autolock b/qubes-dwm-6.2/scripts/toggle_autolock new file mode 100755 index 0000000..8adff84 --- /dev/null +++ b/qubes-dwm-6.2/scripts/toggle_autolock @@ -0,0 +1,16 @@ +#!/bin/sh + +#pid="$(pgrep xautolock)" +#if [ -n "$pid" ]; then +# kill $pid +# xautolock -detectsleep -time 5 -locker 'loginctl lock-session' -notify 30 -notifier "notify-send -t 2000 'Locking screen in 30 seconds'" & + +if [ -z "$(cat ~/.autolock_status)" ]; then + xset s off + echo "🔓! | " > ~/.autolock_status + notify-send 'Autolock DISABLED' +else + xset s 300 + echo "" > ~/.autolock_status + notify-send 'Autolock enabled' +fi diff --git a/qubes-dwm-6.2/scripts/wrap_dmenu b/qubes-dwm-6.2/scripts/wrap_dmenu new file mode 100755 index 0000000..060c17a --- /dev/null +++ b/qubes-dwm-6.2/scripts/wrap_dmenu @@ -0,0 +1,3 @@ +#!/bin/sh + +dmenu -i -l 10 -fn "xft:Sudo:size=16" -sb '#FF7F00' $*
\ No newline at end of file diff --git a/qubes-dwm-6.2/scripts/xdg_autostart b/qubes-dwm-6.2/scripts/xdg_autostart new file mode 100755 index 0000000..415cfa8 --- /dev/null +++ b/qubes-dwm-6.2/scripts/xdg_autostart @@ -0,0 +1,30 @@ +#!/bin/bash + +xdg_autostart() { + local config=$1 + shopt -s nullglob + if [[ -d "$config/autostart" ]]; then + local i + for i in $config/autostart/*.desktop; do + grep -q -E "^Hidden=true" "$i" && continue + if grep -q -E "^OnlyShowIn=" "$i"; then + # need to test twice, as lack of the line entirely means we still run it + grep -E "^OnlyShowIn=" "$i" | grep -q 'I3;' || continue + fi + grep -E "^NotShowIn=" "$i" | grep -q 'I3;' && continue + + local trycmd=$(grep -E "^TryExec=" "$i" | cut -d'=' -f2) + if [[ -n "$trycmd" ]]; then + which "$trycmd" >/dev/null 2>&1 || continue + fi + + local cmd=$(grep -E "^Exec=" "$i" | cut -d'=' -f2) + if [[ -n "$cmd" ]]; then + $cmd & + fi + done + fi +} + +xdg_autostart "${XDG_CONFIG_DIRS-/etc/xdg}" +xdg_autostart "${XDG_CONFIG_HOME-$HOME/.config}" |
