#!/usr/bin/env sh WIN=$(xdotool getwindowfocus) INCOMINGCALL=$(cat /tmp/sxmo_incomingcall || echo NOCALL) programchoicesinit() { WMCLASS="${1:-$(xprop -id $(xdotool getactivewindow) | grep WM_CLASS | cut -d ' ' -f3-)}" # Default CHOICES="$(echo " Scripts ^ 0 ^ sxmo_appmenu.sh scripts Apps ^ 0 ^ sxmo_appmenu.sh applications Volume ↑ ^ 1 ^ sxmo_vol.sh up Volume ↓ ^ 1 ^ sxmo_vol.sh down Dialer ^ 1 ^ sxmo_phonecaller.exp dial Texts ^ 0 ^ sxmo_readtexts.sh Camera ^ 0 ^ sxmo_camera.sh Wifi ^ 0 ^ st -e "nmtui" System Config ^ 0 ^ sxmo_appmenu.sh control Logout ^ 0 ^ pkill -9 dwm Close Menu ^ 0 ^ quit ")" && WINNAME=Sys # E.g. for the system menu if there's an incoming call pop it on top of menu echo "$INCOMINGCALL" | grep -v NOCALL && CHOICES="$(echo " Pickup $INCOMINGCALL ^ 0 ^ sxmo_phonecaller.exp pickup $INCOMINGCALL ")""$CHOICES" echo $WMCLASS | grep -i "applications" && CHOICES="$(echo " Surf ^ 0 ^ surf NetSurf ^ 0 ^ netsurf Sacc ^ 0 ^ st -e sacc i-logout.cz/1/bongusta W3M ^ 0 ^ st -e w3m duck.com St ^ 0 ^ st Firefox ^ 0 ^ firefox Foxtrotgps ^ 0 ^ foxtrotgps Close Menu ^ 0 ^ quit ")" && WINNAME=Apps echo $WMCLASS | grep -i "scripts" && CHOICES="$(echo " Timer ^ 0 ^ sxmo_timermenu.sh Youtube ^ 0 ^ sxmo_youtube.sh Youtube (Audio) ^ 0 ^ sxmo_youtube.sh --no-video Weather ^ 0 ^ sxmo_weather.sh RSS ^ 0 ^ sxmo_rss.sh Close Menu ^ 0 ^ quit ")" && WINNAME=Scripts echo $WMCLASS | grep -i "control" && CHOICES="$(echo " Volume ↑ ^ 1 ^ sxmo_vol.sh up Volume ↓ ^ 1 ^ sxmo_vol.sh down Brightesss ↑ ^ 1 ^ sxmo_brightness.sh up Brightness ↓ ^ 1 ^ sxmo_brightness.sh down Modem Info ^ 1 ^ st -e 'mmcli -m 0 && read' Rotate ^ 1 ^ rotate Wifi ^ 0 ^ st -e "nmtui" Upgrade Pkgs ^ 0 ^ st -e sxmo_upgrade.sh Close Menu ^ 0 ^ quit ")" && WINNAME=Control echo $WMCLASS | grep -i "mpv" && CHOICES="$(echo " Pause ^ 0 ^ key space Seek ← ^ 1 ^ key Left Seek → ^ 1 ^ key Right App Volume ↑ ^ 1 ^ key 0 App Volume ↓ ^ 1 ^ key 9 Speed ↑ ^ 1 ^ key bracketright Speed ↓ ^ 1 ^ key bracketleft Screenshot ^ 1 ^ key s Loopmark ^ 1 ^ key l Info ^ 1 ^ key i Seek Info ^ 1 ^ key o Close Menu ^ 0 ^ quit ")" && WINNAME=Mpv # St echo $WMCLASS | grep -i "st-256color" && CHOICES="$(echo " Pastecomplete ^ 0 ^ key Ctrl+Shift+u Paste ^ 0 ^ key Ctrl+Shift+v Pipe Data ^ 0 ^ Zoom + ^ 1 ^ key Ctrl+Shift+Prior Zoom - ^ 1 ^ key Ctrl+Shift+Next Scroll ↑ ^ 1 ^ key Shift+Prior Scroll ↓ ^ 1 ^ key Shift+Next Invert ^ 1 ^ key Ctrl+Shift+x Hotkeys ^ 0 ^ sxmo_appmenu.sh sthotkeys Close Menu ^ 0 ^ quit ")" && WINNAME=st # St hotkeys echo $WMCLASS | grep -i "sthotkeys" && CHOICES="$(echo " Send Ctrl-C ^ 0 ^ key Ctrl+c Send Ctrl-L ^ 0 ^ key Ctrl+l Send Ctrl-D ^ 0 ^ key Ctrl+d Close Menu ^ 0 ^ quit ")" && WINNAME=st # Surf echo $WMCLASS | grep surf && CHOICES="$(echo " Navigate ^ 0 ^ key Ctrl+g Link Menu ^ 0 ^ key Ctrl+d Pipe URL ^ 0 ^ sxmo_urlhandler.sh Zoom + ^ 1 ^ key Ctrl+Shift+k Zoom - ^ 1 ^ key Ctrl+Shift+j Scroll ↑ ^ 1 ^ key Ctrl+space Scroll ↓ ^ 1 ^ key Ctrl+b JS Toggle ^ 1 ^ key Ctrl+Shift+s Search ^ 1 ^ key Ctrl+f History ← ^ 1 ^ key Ctrl+h History → ^ 1 ^ key Ctrl+l Close Menu ^ 0 ^ quit ")" && WINNAME=surf echo $WMCLASS | grep -i netsurf && CHOICES="$(echo " Pipe URL ^ 0 ^ sxmo_urlhandler.sh Zoom + ^ 1 ^ key Ctrl+plus Zoom - ^ 1 ^ key Ctrl+minus History ← ^ 1 ^ key Alt+Left History → ^ 1 ^ key Alt+Right Close Menu ^ 0 ^ quit ")" && WINNAME=netsurf echo $WMCLASS | grep -i foxtrot && CHOICES="$(echo " Zoom + ^ 1 ^ key i Zoom - ^ 1 ^ key o Panel toggle ^ 1 ^ key m Autocenter toggle ^ 0 ^ key a Route ^ 0 ^ key r Gmaps Transfer ^ 0 ^ key o Copy Cords ^ 0 ^ key o Close Menu ^ 0 ^ quit ")" && WINNAME=gps } rotate() { xrandr | grep primary | cut -d' ' -f 5 | grep right && xrandr -o normal || xrandr -o right } key() { xdotool windowactivate $WIN xdotool key --clearmodifiers $1 #--window $WIN } quit() { exit 0 } boot() { DMENUIDX=0 PICKED="" pgrep -f sxmo_appmenu.sh | grep -Ev "^${$}$" | xargs kill -9 pkill -9 dmenu } mainloop() { while : do PICKED=$( echo "$CHOICES" | xargs -0 echo | cut -d'^' -f1 | sed '/^[[:space:]]*$/d' | awk '{$1=$1};1' | dmenu -idx $DMENUIDX -l 14 -c -fn "Terminus-30" -p "$WINNAME" ) LOOP=$(echo "$CHOICES" | grep "$PICKED" | cut -d '^' -f2) CMD=$(echo "$CHOICES" | grep "$PICKED" | cut -d '^' -f3) DMENUIDX=$(echo $(echo "$CHOICES" | grep -n "$PICKED" | cut -d ':' -f1) - 1 | bc) eval $CMD echo $LOOP | grep 1 || quit done } boot programchoicesinit $@ mainloop