summaryrefslogtreecommitdiff
path: root/qubes-dwm-6.2/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'qubes-dwm-6.2/scripts')
-rwxr-xr-xqubes-dwm-6.2/scripts/dmenu_all36
-rwxr-xr-xqubes-dwm-6.2/scripts/dmenu_cur59
-rwxr-xr-xqubes-dwm-6.2/scripts/dwm_status96
-rwxr-xr-xqubes-dwm-6.2/scripts/get_id3
-rwxr-xr-xqubes-dwm-6.2/scripts/get_qube3
-rwxr-xr-xqubes-dwm-6.2/scripts/lock16
-rwxr-xr-xqubes-dwm-6.2/scripts/sensible_terminal18
-rwxr-xr-xqubes-dwm-6.2/scripts/toggle_autolock16
-rwxr-xr-xqubes-dwm-6.2/scripts/wrap_dmenu3
-rwxr-xr-xqubes-dwm-6.2/scripts/xdg_autostart30
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}"