summaryrefslogtreecommitdiff
path: root/.config/wmii-hg
diff options
context:
space:
mode:
Diffstat (limited to '.config/wmii-hg')
-rwxr-xr-x.config/wmii-hg/autostart13
-rw-r--r--.config/wmii-hg/config.sh95
-rw-r--r--.config/wmii-hg/fixes.sh24
-rwxr-xr-x.config/wmii-hg/quit8
-rwxr-xr-x.config/wmii-hg/rbar9
-rw-r--r--.config/wmii-hg/rbar.sh20
-rwxr-xr-x.config/wmii-hg/rbar_acpi18
-rwxr-xr-x.config/wmii-hg/rbar_battery9
-rwxr-xr-x.config/wmii-hg/rbar_clock19
-rwxr-xr-x.config/wmii-hg/rbar_cpu12
-rwxr-xr-x.config/wmii-hg/rbar_wifi68
-rw-r--r--.config/wmii-hg/rules2
-rw-r--r--.config/wmii-hg/theme-tango1
-rw-r--r--.config/wmii-hg/util.sh45
-rwxr-xr-x.config/wmii-hg/wmiirc17
15 files changed, 211 insertions, 149 deletions
diff --git a/.config/wmii-hg/autostart b/.config/wmii-hg/autostart
deleted file mode 100755
index cd040b3..0000000
--- a/.config/wmii-hg/autostart
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/bash
-. include.sh
-
-daemon xcompmgr &> /dev/null
-daemon lxpanel &> /dev/null
-daemon nm-applet &> /dev/null
-daemon dunst &> /dev/null
-daemon clipit -dn &> /dev/null
-
-#Action rbar_cpu 01 &
-#Action rbar_wifi 97 &
-#Action rbar_battery 98 &
-Action rbar_clock 99 &
diff --git a/.config/wmii-hg/config.sh b/.config/wmii-hg/config.sh
index 4889aac..7ef8305 100644
--- a/.config/wmii-hg/config.sh
+++ b/.config/wmii-hg/config.sh
@@ -7,13 +7,13 @@ LEFT=b
RIGHT=f
HIST="$XDG_CACHE_HOME/wmii/history"
-mkdir -p "${HIST%/*}"
+mkdir -p -- "${HIST%/*}"
# Colors tuples: "<text> <background> <border>"
. theme-tango-dark
Event() {
- event=$1; shift;
+ local event=$1; shift;
case "$event" in
## Mouse event meanings:
## MouseDown = mouse down
@@ -25,6 +25,8 @@ Event() {
## 1 = left
## 2 = middle
## 3 = right
+ ## 4 = scroll up
+ ## 5 = scroll down
## Custom (non-WMII-generated) events
WmiircStart) ## No args
@@ -36,22 +38,18 @@ Event() {
< "`conffile rules`" expand_variables >> $WMII_DIR/rules
< "`conffile ctl-init`" expand_variables >> $WMII_DIR/ctl
scansection Key | cut -sf2 >> $WMII_DIR/keys
- # Configure X11
- hsetroot -solid "$WMII_BACKGROUND"
+ #hsetroot -solid "$WMII_BACKGROUND"
# Clear the LBar and RBar
find $WMII_DIR/{l,r}bar -type f -delete
# Populate the LBar by emulating [Create|Focus]Tag events
- seltag=`sed 1q $WMII_DIR/tag/sel/ctl`
- lstags | while read tag; do
+ local tag seltag="$(sed 1q $WMII_DIR/tag/sel/ctl)"
+ while read -r tag; do
Event CreateTag "$tag"
if [ "$tag" = "$seltag" ]; then
Event FocusTag "$tag"
fi
- done
-
- # Run the autostart action
- Action autostart 2>/dev/null &
+ done < <(lstags)
;;
WmiircQuit) ## No args
echo ' ==> Stopping wmiirc'
@@ -65,11 +63,13 @@ Event() {
echo " -> Unmounting WMII_DIR=$WMII_DIR..."
fusermount -u "$WMII_DIR"
echo " -> Removing mountpoint WMII_DIR=$WMII_DIR..."
- rmdir "$WMII_DIR";;
+ rmdir -p "$WMII_DIR" 2>/dev/null;;
## WMII-meta events
Quit) ## No args
- echo ' ==> wmii quit: unmounting'
trap - EXIT
+ if [ -S "$NOTIFY_SOCKET" ]; then
+ echo STOPPING=1 | socat STDIO UNIX-SENDTO:"$NOTIFY_SOCKET"
+ fi
Event WmiircUnmount
Event WmiircQuit;;
Warning) ## $@=string
@@ -99,26 +99,29 @@ Event() {
NotUrgent) ## $1=client $2=[Manager|Client]
;;
ClientMouseDown) ## $1=client $2=button
- client=$1
- button=$2
+ local client=$1
+ local button=$2
case $button in
1) ;;
2) ;;
3)
{
- case `wmii9menu Delete Fullscreen` in
+ case $(wmii9menu Delete Fullscreen) in
Delete)
echo kill >> $WMII_DIR/client/$client/ctl;;
Fullscreen)
echo Fullscreen on >> $WMII_DIR/client/$1/ctl;;
esac
}& ;;
+ 4) ;;
+ 5) ;;
esac;;
ClientClick) ## $1=client $2=button
;;
Unresponsive) ## $1=client
- client=$1
- client_name=`cat $WMII_DIR/client/$client/label`
+ local client=$1
+ local client_name=$(< $WMII_DIR/client/$client/label)
+ local msg resp
msg="The client \`${client_name}' is not responding."
msg+=" What would you like to do?"
{
@@ -138,13 +141,13 @@ Event() {
DestroyTag) ## $1=tag
rm $WMII_DIR/lbar/$1;;
FocusTag) ## $1=tag
- echo colors "$WMII_FOCUSCOLORS" >> $WMII_DIR/lbar/$1;;
+ echo colors "$WMII_FOCUSCOLORS" >> $WMII_DIR/lbar/$1;;
UnfocusTag) ## $1=tag
- echo colors "$WMII_NORMCOLORS" >> $WMII_DIR/lbar/$1;;
- UrgentTag) ## $1=tag $2=[Manager|Client]
- echo "$WMII_URGENTCOLORS" >> $WMII_DIR/lbar/$1;;
- NotUrgentTag) ## $1=tag $2=[Manager|Client]
- echo "$WMII_NORMCOLORS" >> $WMII_DIR/lbar/$1;;
+ echo colors "$WMII_NORMCOLORS" >> $WMII_DIR/lbar/$1;;
+ UrgentTag) ## $1=[Manager|Client] $2=tag
+ echo colors "$WMII_URGENTCOLORS" >> $WMII_DIR/lbar/$2;;
+ NotUrgentTag) ## $1=[Manager|Client] $2=tag
+ echo colors "$WMII_NORMCOLORS" >> $WMII_DIR/lbar/$2;;
## LeftBar events (usually tag buttons)
LeftBarMouseDown) ## $1=button $2=bar_item
@@ -157,17 +160,20 @@ Event() {
## RightBar events
RightBarMouseDown) ## $1=button $2=bar_item
- ;;
+ local button=$1
+ local item=$2
+ local name=${item#[0-9][0-9]_}
+ name=${name%.*}
+ Action "rbar_$name" "$button" & ;;
RightBarClick) ## $1=button $2=bar_item
;;
RightMouseDND) ## $1=button $2=bar_item
Event RightBarClick "$@";;
esac
-} ## End Event
+}
-# Key Bindings
Key() {
- key=$1
+ local key=$1
case "$key" in
## Moving around
@@ -218,33 +224,34 @@ Key() {
## Running programs
$MODKEY-a) ## Open wmii actions menu
- Action $(path_ls $WMII_CONFPATH | wimenu -h "${HIST}.actions" -n 5000) & ;;
+ local action
+ action="$(path_ls "$WMII_CONFPATH" | wimenu -h "${HIST}.actions" -n 5000)" || return
+ Action "$action" & ;;
$MODKEY-x) ## Open program menu
- PATH=$_PATH setsid $(path_ls $PATH | wimenu -h "${HIST}.progs" -n 5000) & ;;
+ local command
+ command="$(path_ls "$_PATH" | wimenu -h "${HIST}.progs" -n 5000)" || return
+ ( PATH=$_PATH; unset _PATH NOTIFY_SOCKET; exec $command ) & ;;
$MODKEY-Return) ## Launch a terminal
- PATH=$_PATH setsid x-terminal-emulator & ;;
+ ( PATH=$_PATH; unset _PATH NOTIFY_SOCKET; exec x-terminal-emulator ) & ;;
## Tag actions
$MODKEY-t) ## Change to another tag
- {
- tag=$(lstags | wimenu -h "${HIST}.tags" -n 50) || return
- echo view $tag >> $WMII_DIR/ctl
- }& ;;
+ local tag
+ tag=$(lstags | wimenu -h "${HIST}.tags" -n 50) || return
+ echo view "$tag" >> $WMII_DIR/ctl;;
$MODKEY-Shift-t) ## Retag the selected client
+ local sel tag
sel=$(sed 1q $WMII_DIR/client/sel/ctl)
- {
- tag=$(lstags | wimenu -h "${HIST}.tags" -n 50) || return
- echo "$tag" >> $WMII_DIR/client/$sel/tags
- }& ;;
+ tag=$(lstags | wimenu -h "${HIST}.tags" -n 50) || return
+ echo "$tag" >> $WMII_DIR/client/$sel/tags;;
esac
-} ## End Key
+}
Action() {
- prog=`path_which "$WMII_CONFPATH" $1`; shift
+ local prog=$(path_which "$WMII_CONFPATH" "$1"); shift
if [ -n "$prog" ]; then
- "$prog" "$@"
- return $?
+ exec "$prog" "$@"
else
- return 1
+ exec false
fi
-} ## End Action
+}
diff --git a/.config/wmii-hg/fixes.sh b/.config/wmii-hg/fixes.sh
deleted file mode 100644
index 5858859..0000000
--- a/.config/wmii-hg/fixes.sh
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/bash
-# Fix various deficiencies in either the shell or the filesystem
-
-##
-# Usage: ls DIRECTORY
-# Linux's 9p kernel module sometimes omits entries in directory listings
-##
-unalias ls &>/dev/null
-ls() {
- local real_ls=("$(which ls)" -1F)
- [ $# = 0 ] && set -- "$PWD"
- f="${1/#${WMII_DIR}/}"
- if [ "$f" = "$1" ]; then
- "${real_ls[@]}" "$f"
- else
- wmiir ls "$f"
- fi
-}
-
-##
-# Usage: setsid cmd [arguments...]
-# I like wmiir's setsid better than linux-utils'
-##
-setsid() { wmiir setsid "$@"; }
diff --git a/.config/wmii-hg/quit b/.config/wmii-hg/quit
index 27d9052..341468e 100755
--- a/.config/wmii-hg/quit
+++ b/.config/wmii-hg/quit
@@ -1,3 +1,7 @@
#!/bin/bash
-. include.sh
-echo quit >> $WMII_DIR/ctl
+if type systemctl &>/dev/null; then
+ systemctl --user stop "wmii@$DISPLAY.service"
+else
+ . include.sh
+ echo quit >> $WMII_DIR/ctl
+fi
diff --git a/.config/wmii-hg/rbar b/.config/wmii-hg/rbar
new file mode 100755
index 0000000..9aaa485
--- /dev/null
+++ b/.config/wmii-hg/rbar
@@ -0,0 +1,9 @@
+#!/bin/bash
+IFS=:
+read -r name prefix DISPLAY <<<"$1"
+export DISPLAY
+
+id=$1
+name=${id#[0-9][0-9]_}
+
+exec "$0"_"$name" "${id}"
diff --git a/.config/wmii-hg/rbar.sh b/.config/wmii-hg/rbar.sh
new file mode 100644
index 0000000..4f6faf1
--- /dev/null
+++ b/.config/wmii-hg/rbar.sh
@@ -0,0 +1,20 @@
+#!/bin/bash
+setup_trap() {
+ trap "rm -f -- ${HOME}/n/wmii*/rbar/${1}" EXIT
+}
+
+write() {
+ dirs=("${HOME}"/n/wmii*/rbar/)
+ sponge|tee -a "${dirs[@]/%/${1}}" > /dev/null
+}
+
+set -eE
+shopt -s nullglob
+case "$1" in
+ 1) left-click;;
+ 2) middle-click;;
+ 3) right-click;;
+ 4) scroll-up;;
+ 5) scroll-down;;
+ [0-9][0-9]_*) update "$1";;
+esac
diff --git a/.config/wmii-hg/rbar_acpi b/.config/wmii-hg/rbar_acpi
new file mode 100755
index 0000000..bdcdf0f
--- /dev/null
+++ b/.config/wmii-hg/rbar_acpi
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+update() {
+ id=$1
+ setup_trap "${id}.*"
+
+ while true; do
+ acpi -bt | sed -r \
+ -e 's/^([A-Z])[a-z]+ ([0-9]+):/\1\2:/' \
+ -e 's/\s*degrees\s*/°/g' |
+ cat -n | while read -r n line; do
+ printf "label %s\n" "$line" | write "${id}.${n}"
+ done
+ sleep 1
+ done
+}
+
+. "$(dirname "$0")/rbar.sh"
diff --git a/.config/wmii-hg/rbar_battery b/.config/wmii-hg/rbar_battery
deleted file mode 100755
index f632f7e..0000000
--- a/.config/wmii-hg/rbar_battery
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/bash
-. include.sh
-
-priority=$1
-
-while connected_to_x_server; do
- printf 'label %s\n' "$(acpi -b)" >> "$WMII_DIR/rbar/${priority}_battery"
- sleep 1
-done
diff --git a/.config/wmii-hg/rbar_clock b/.config/wmii-hg/rbar_clock
index 6aecb92..a09f016 100755
--- a/.config/wmii-hg/rbar_clock
+++ b/.config/wmii-hg/rbar_clock
@@ -1,9 +1,16 @@
#!/bin/bash
-. include.sh
-priority=$1
+update() {
+ id=$1
+ setup_trap "$id"
-while connected_to_x_server; do
- printf 'label %s\n' "$(date)" >> "$WMII_DIR/rbar/${priority}_clock"
- sleep .5
-done
+ while true; do
+ {
+ printf 'label '
+ date +'%a, %F %T %Z(%:::z)'
+ } | write "$id"
+ sleep .5
+ done
+}
+
+. "$(dirname "$0")/rbar.sh"
diff --git a/.config/wmii-hg/rbar_cpu b/.config/wmii-hg/rbar_cpu
deleted file mode 100755
index 5531e60..0000000
--- a/.config/wmii-hg/rbar_cpu
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/bash
-. include.sh
-
-priority=$1
-
-while connected_to_x_server; do
- # This doesn't work for me, it shows capacity
- #echo -n 'Core MHz:' $(cat /proc/cpuinfo | grep 'cpu MHz' | sed 's/.*: //g; s/\..*//g;') >> "$WMII_DIR/rbar/${priority}_cpu"
- # This actually displays %idle
- echo 'label CPU: [ '$(tail -n3 ~/tmp/cputime|sed -ur 's/\s\s+/\t/g'|cut -f2,11|sed 's/\t\(.*\)/(\1)/')' ]' >> "$WMII_DIR/rbar/${priority}_cpu"
- sleep 1
-done
diff --git a/.config/wmii-hg/rbar_wifi b/.config/wmii-hg/rbar_wifi
index 18395a3..195df7c 100755
--- a/.config/wmii-hg/rbar_wifi
+++ b/.config/wmii-hg/rbar_wifi
@@ -1,9 +1,65 @@
#!/bin/bash
-. include.sh
-priority=$1
+iwinfo() {
+ local interface=$1
+ iwconfig "$interface" |
+ sed -r 's/ {2,}/\n/g' |
+ sed -e '/^\s*$/d' -e 's/:\s*/=/' \
+ -e '1s/^/Interface=/' \
+ -e '2s/^/MAC Protocol=/'
+}
-while connected_to_x_server; do
- echo 'label Wlan0:' $(iwconfig wlan0 | sed 's/ /\n/g' | grep Quality) >> "$WMII_DIR/rbar/${priority}_wifi"
- sleep 1
-done
+update() {
+ local id
+ id=$1
+ setup_trap "$id"
+ while true; do
+ {
+ printf 'label '
+ iwinfo wlp2s0|grep -E '^(ESSID|Link Quality)='|sed 'N;s/\n/ | /'
+ } | write "$id"
+ sleep 1
+ done
+}
+
+right-click() {
+ local list cur item
+
+ list=()
+ IFS=''
+ while read -r line; do
+ list+=("$line")
+ done < <({ netctl-auto list; printf '> %s\n' 'New Network' 'Disable All' 'Enable All';} | sed 's,$,$,' | column -s '$' -t)
+
+ cur=''
+ for item in "${list[@]}"; do
+ if [[ "$item" = '* '* ]]; then
+ cur="$item"
+ fi
+ done
+
+ item=$(wmii9menu -i "$cur" "${list[@]}")
+ case "$item" in
+ '')
+ # Nothing selected
+ ;;
+ '* '*)
+ # Already selected; do nothing
+ ;;
+ '> New Network'*)
+ urxvt +sb -title wifi-menu -e sudo wifi-menu
+ ;;
+ '> Disable All'*)
+ sudo netctl-auto disable-all
+ ;;
+ '> Enable All'*)
+ sudo netctl-auto enable-all
+ ;;
+ *)
+ # NB: do NOT quote $item; we need to strip whitespace
+ sudo netctl-auto switch-to $item
+ ;;
+ esac
+}
+
+. "$(dirname "$0")/rbar.sh"
diff --git a/.config/wmii-hg/rules b/.config/wmii-hg/rules
index cf735c9..3576983 100644
--- a/.config/wmii-hg/rules
+++ b/.config/wmii-hg/rules
@@ -4,5 +4,7 @@
/nm-applet/ floating=off
+/^FLTK:FLTK:/ floating=always
+
/Emacs|Navigator/ force-tags=+sel floating=never
/.*/ floating=off
diff --git a/.config/wmii-hg/theme-tango b/.config/wmii-hg/theme-tango
index e0e35d4..f4c20a2 100644
--- a/.config/wmii-hg/theme-tango
+++ b/.config/wmii-hg/theme-tango
@@ -7,4 +7,3 @@ TANGO_plum=( "#ad7fa8" "#75507b" "#5c3566")
TANGO_red=( "#ef2929" "#cc0000" "#a40000")
TANGO_alum=( "#eeeeec" "#d3d7cf" "#babdb6"
"#888a85" "#555753" "#2e3436")
-
diff --git a/.config/wmii-hg/util.sh b/.config/wmii-hg/util.sh
index 71dbc41..b28a3b6 100644
--- a/.config/wmii-hg/util.sh
+++ b/.config/wmii-hg/util.sh
@@ -1,8 +1,5 @@
#!/bin/bash
-# I moved "fixes" into a separate file because it isn't so much configuration...
-. fixes.sh
-
################################################################################
# Added shell features #
################################################################################
@@ -25,17 +22,17 @@ dquote() {
# Usage: expand_variables
# Expands variables read from /dev/stdin
##
-expand_variables() {
- while read; do
- eval printf "'%s\n'" "$(dquote "$REPLY")"
+expand_variables() (
+ IFS=''
+ while read -r line; do
+ eval printf "'%s\n'" "$(dquote "$line")"
done
-}
+)
is_mounted() {
local dir="$(readlink -m $1)"
local mntpnt="$(cut -d' ' -f2 /proc/mounts|grep -Fx -- "$dir")"
[[ $dir = "$mntpnt" ]]
- return $?
}
################################################################################
@@ -72,7 +69,7 @@ path_which() {
# Lists wmii tags
##
lstags() {
- ls "$WMII_DIR/tag" | sed -e 's@/$@@' -e '/^sel$/d'
+ ls "$WMII_DIR/tag" | sed -e 's,/$,,' -e '/^sel$/d'
}
################################################################################
@@ -85,7 +82,6 @@ lstags() {
##
connected_to_x_server() {
xdpyinfo &>/dev/null
- return $?
}
################################################################################
@@ -93,32 +89,25 @@ connected_to_x_server() {
################################################################################
##
-# Usage: scansection [SECTION]
+# Usage: scansection SECTION
# Reads the doc comments from a section of wmiirc.
-# If SECTION is not given, it reads all doc comments.
##
scansection() {
- local file=$(conffile config.sh)
local sec=$1
- local tmp=$(mktemp --tmpdir wmii-scansecion.XXXXXXXXXX)
- # Isolate the sections we want.
- if [ -n "$sec" ]; then
- # Find the section
- < "$file" sed -n "/^\s*$sec\s*()/,/##\s*End $sec/p" | sed '1d;$d'> "$tmp"
- else
- # Remove extra lines that mark the end of a section
- < "$file" sed "/\s*}\s*##\s*End\s/d" > "$tmp"
- fi
- < "$tmp" sed -n '/##/p' | while read; do
- var="$(echo "$REPLY" | sed -nr 's/^\s*(.*)\)\s*##.*/\1/p')"
- comment="$(echo "$REPLY" | sed -r 's/.*## ?//')"
- if [ -z "$var" ]; then
+
+ local file=$(conffile config.sh)
+ # Isolate the section we want.
+ < "$file" sed -n "/^\s*$sec\s*()/,/^}/{ /##/p }" |
+ # Parse each line.
+ while read -r line; do
+ symbol="$(sed -nr 's/^\s*(.*)\)\s*##.*/\1/p' <<<"$line")"
+ comment="$(sed -r 's/.*## ?//' <<<"$line")"
+ if [ -z "$symbol" ]; then
printf '%s\n' "$comment"
else
- printf '\t%s\t%s\n' "$(echo "$var"|expand_variables)" "$comment"
+ printf '\t%s\t%s\n' "$(expand_variables <<<"$symbol")" "$comment"
fi
done
- rm -- "$tmp"
}
##
diff --git a/.config/wmii-hg/wmiirc b/.config/wmii-hg/wmiirc
index a6bc4b4..6fd348f 100755
--- a/.config/wmii-hg/wmiirc
+++ b/.config/wmii-hg/wmiirc
@@ -1,15 +1,24 @@
#!/bin/bash
-export _PATH="$PATH"
-export PATH="$WMII_CONFPATH:$PATH"
+unset WMII_NAMESPACE
+unset WMII_DIR
+
+if [[ -z $_PATH ]]; then
+ export _PATH="$PATH"
+ export PATH="$WMII_CONFPATH:$PATH"
+fi
. include.sh
wmiir xwrite /event WmiircQuit # close any existing wmiirc's
Event WmiircStart
+# Notify systemd that we're ready
+if [ -S "$NOTIFY_SOCKET" ]; then
+ echo READY=1 | socat STDIO UNIX-SENDTO:"$NOTIFY_SOCKET"
+fi
trap "Event Quit" EXIT
-wmiir read /event 2>/dev/null | while read event; do
+while read -r event; do
Event $event
-done
+done < <(wmiir read /event 2>/dev/null)