summaryrefslogtreecommitdiff
path: root/ar/.local/bin/dmenuvirt
diff options
context:
space:
mode:
Diffstat (limited to 'ar/.local/bin/dmenuvirt')
-rwxr-xr-xar/.local/bin/dmenuvirt28
1 files changed, 28 insertions, 0 deletions
diff --git a/ar/.local/bin/dmenuvirt b/ar/.local/bin/dmenuvirt
new file mode 100755
index 0000000..615c557
--- /dev/null
+++ b/ar/.local/bin/dmenuvirt
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+# Select action
+CHOICE=$(printf "virt-manager\nstart\nshutdown" | dmenu -i -p "Choose an action:")
+[ -z "$CHOICE" ] && exit 1
+
+# Get list of VMs based on state
+case "$CHOICE" in
+virt-manager) setsid -f virt-manager && exit ;;
+start) VMLIST=$(virsh --connect qemu:///system list --all | awk '/shut off/ {print $2}') ;;
+shutdown) VMLIST=$(virsh --connect qemu:///system list --all | awk '/running/ {print $2}') ;;
+*) exit 1 ;;
+esac
+
+# Select a VM from the list
+VM=$(printf "%s\n" "$VMLIST" | dmenu -i -p "$CHOICE which VM?")
+[ -z "$VM" ] && exit 1
+
+# Perform the action
+case "$CHOICE" in
+start)
+ virsh --connect qemu:///system start "$VM" &&
+ setsid -f virt-viewer --connect qemu:///system "$VM" >/dev/null 2>&1
+ ;;
+shutdown)
+ virsh --connect qemu:///system shutdown "$VM"
+ ;;
+esac