From f595cc66c3abe04653b0fd001250712e05b7a618 Mon Sep 17 00:00:00 2001 From: Abhay Rana Date: Thu, 25 Jun 2015 19:16:48 +0530 Subject: [PATCH] i3 scripts - lock is just blur based on imagemgaick - get window criteria is a helper script --- i3-get-window-criteria | 40 ++++++++++++++++++++++++++++++++++++++++ i3lock.sh | 6 ++++++ 2 files changed, 46 insertions(+) create mode 100755 i3-get-window-criteria create mode 100755 i3lock.sh diff --git a/i3-get-window-criteria b/i3-get-window-criteria new file mode 100755 index 0000000..c67f93d --- /dev/null +++ b/i3-get-window-criteria @@ -0,0 +1,40 @@ +#!/bin/sh + +# i3-get-window-criteria - Get criteria for use with i3 config commands + +# To use, run this script, then click on a window. +# Output is in the format: [= = ...] + +# Known problem: when WM_NAME is used as fallback for the 'title=""' criterion, +# quotes in "" are not escaped properly. This is a problem with the output of `xprop`, +# reported upstream: https://bugs.freedesktop.org/show_bug.cgi?id=66807 + +PROGNAME=`basename "$0"` + +# Check for xwininfo and xprop +for cmd in xwininfo xprop; do + if ! which $cmd > /dev/null 2>&1; then + echo "$PROGNAME: $cmd: command not found" >&2 + exit 1 + fi +done + +match_int='[0-9][0-9]*' +match_string='".*"' +match_qstring='"[^"\\]*(\\.[^"\\]*)*"' # NOTE: Adds 1 backreference + +{ + # Run xwininfo, get window id + window_id=`xwininfo -int | sed -nre "s/^xwininfo: Window id: ($match_int) .*$/\1/p"` + echo "id=$window_id" + + # Run xprop, transform its output into i3 criteria. Handle fallback to + # WM_NAME when _NET_WM_NAME isn't set + xprop -id $window_id | + sed -nr \ + -e "s/^WM_CLASS\(STRING\) = ($match_qstring), ($match_qstring)$/instance=\1\nclass=\3/p" \ + -e "s/^WM_WINDOW_ROLE\(STRING\) = ($match_qstring)$/window_role=\1/p" \ + -e "/^WM_NAME\(STRING\) = ($match_string)$/{s//title=\1/; h}" \ + -e "/^_NET_WM_NAME\(UTF8_STRING\) = ($match_qstring)$/{s//title=\1/; h}" \ + -e '${g; p}' +} | sort | tr "\n" " " | sed -r 's/^(.*) $/[\1]\n/' \ No newline at end of file diff --git a/i3lock.sh b/i3lock.sh new file mode 100755 index 0000000..72fe3e8 --- /dev/null +++ b/i3lock.sh @@ -0,0 +1,6 @@ +#!/bin/bash +xset -b #disable scrot beep +scrot /tmp/screen.png +mogrify -scale 10% -scale 1000% /tmp/screen.png +[[ -f /home/user/images/icons/lock-icon.png ]] && convert /tmp/screen.png /home/user/images/icons/lock-icon-1.png -gravity center -composite -matte /tmp/screen.png +i3lock -e -u -i /tmp/screen.png \ No newline at end of file