summaryrefslogtreecommitdiffhomepage
path: root/examples/padding-icon.sh
diff options
context:
space:
mode:
authorjao <jao@gnu.org>2018-11-25 15:26:44 +0000
committerjao <jao@gnu.org>2018-11-25 15:26:44 +0000
commitf86bbb8ca5d3ba0d18e333cbe6cb57cc17e3ae07 (patch)
treeba34733d783dfcb65234ed835deac13a9a9c100e /examples/padding-icon.sh
parentb12fe3ebdaf3a4a539b85f742a582925d7e811f1 (diff)
downloadxmobar-f86bbb8ca5d3ba0d18e333cbe6cb57cc17e3ae07.tar.gz
xmobar-f86bbb8ca5d3ba0d18e333cbe6cb57cc17e3ae07.tar.bz2
doc, examples
Diffstat (limited to 'examples/padding-icon.sh')
-rwxr-xr-xexamples/padding-icon.sh56
1 files changed, 56 insertions, 0 deletions
diff --git a/examples/padding-icon.sh b/examples/padding-icon.sh
new file mode 100755
index 0000000..31f5eeb
--- /dev/null
+++ b/examples/padding-icon.sh
@@ -0,0 +1,56 @@
+#!/bin/bash
+
+# Detects the width of running window with name given as first
+# argument (xprop name '$1') and creates an XPM icon of that width,
+# 1px height, and transparent. Outputs an <icon>-tag for use in
+# xmobar to display the generated XPM icon.
+#
+# Run script from xmobar and trayer:
+# `Run Com "/where/ever/padding-icon.sh" ["panel"] "trayerpad" 10`
+# and use `%trayerpad%` in your template.
+# or, if you're using for instance stalonetray:
+# `Run Com "/where/ever/padding-icon.sh" ["stalonetray"] "tray" 10`
+
+# Very heavily based on Jonas Camillus Jeppensen code
+# https://github.com/jaor/xmobar/issues/239#issuecomment-233206552
+
+# Function to create a transparent Wx1 px XPM icon
+create_xpm_icon () {
+timestamp=$(date)
+pixels=$(for i in `seq $1`; do echo -n "."; done)
+
+cat << EOF > "$2"
+/* XPM *
+static char * trayer_pad_xpm[] = {
+/* This XPM icon is used for padding in xmobar to */
+/* leave room for trayer-srg. It is dynamically */
+/* updated by by trayer-pad-icon.sh which is run */
+/* by xmobar. */
+/* Created: ${timestamp} */
+/* <w/cols> <h/rows> <colors> <chars per pixel> */
+"$1 1 1 1",
+/* Colors (none: transparent) */
+". c none",
+/* Pixels */
+"$pixels"
+};
+EOF
+}
+
+# panel window name
+pname=${1:-panel}
+
+# Width of the trayer window
+width=$(xprop -name $pname | grep 'program specified minimum size' | cut -d ' ' -f 5)
+
+# Icon file name
+iconfile="/tmp/$pname-padding-${width:-0}px.xpm"
+
+# If the desired icon does not exist create it
+if [ ! -f $iconfile ]
+then
+ create_xpm_icon $width $iconfile
+fi
+
+# Output the icon tag for xmobar
+echo "<icon=${iconfile}/>"