summaryrefslogtreecommitdiff
path: root/.i3
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--.i3/config2
-rwxr-xr-x.i3/scripts/start_pidgin.sh24
2 files changed, 25 insertions, 1 deletions
diff --git a/.i3/config b/.i3/config
index c296885..c8a822b 100644
--- a/.i3/config
+++ b/.i3/config
@@ -200,7 +200,7 @@ bindsym $mod+space exec dmenu_run -b
# bindsym $mod+d exec --no-startup-id i3-dmenu-desktop
# Misc (minus shift are the focus options)
-bindsym $mod+Shift+p exec pidgin
+bindsym $mod+Shift+p exec $script/start_pidgin.sh
bindsym $mod+Shift+b exec firefox
bindsym $mod+Shift+m exec thunderbird
diff --git a/.i3/scripts/start_pidgin.sh b/.i3/scripts/start_pidgin.sh
new file mode 100755
index 0000000..5fbee02
--- /dev/null
+++ b/.i3/scripts/start_pidgin.sh
@@ -0,0 +1,24 @@
+#!/bin/zsh
+#
+# Start Pidgin and make sure, that the buddylist is shown.
+#
+
+# test for pidgin already running
+(( `pgrep -xc pidgin` )) && return
+
+# start pidgin in background
+pidgin &
+
+# wait for the DBus-Service to be available
+# we use '--profile' because it renders nicer output
+coproc dbus-monitor --profile "interface=im.pidgin.purple.PurpleInterface"
+
+while read -p line; do
+ [[ $line =~ 'UpdateIdle$' ]] && break
+ # if the blist is automatically shown, we exit
+ # else we would move the focus, which is bad
+ [[ $line =~ 'GtkblistUnhiding$' ]] && return
+done
+
+# if we are here, pidgin is running and the blist is not yet visible
+exec purple-send-async PurpleBlistSetVisible int32:1