sync/i3/run.sh

173 lines
5.4 KiB
Bash
Executable File

#!/usr/bin/env bash
if [ "$1" = "move" ]; then
shift
eval "$(xdotool getwindowfocus getwindowgeometry | grep Geometry: | perl -pe 's/^\s*Geometry: /WinH=/;s/x/\nWinW=/g')"
eval "$(xdotool getwindowfocus getwindowgeometry | grep Position: | perl -pe 's/^\s*Position: /WinY=/;s/,/\nWinX=/g;s/\s\(.+//')"
eval "$(xrandr | grep -w connected | perl -pe 's/.+?(\d+x\d+)\+\d+\+\d+.*/\1/g;s/^/MonH=/;s/x/\nMonW=/;' | head -n2)"
if [ "$1" = "top" ]; then
echo $((WinY))
xdotool getwindowfocus windowmove $((WinY - 1)) 0
elif [ "$1" = "right" ]; then
xdotool getwindowfocus windowmove $((MonH - WinH)) $((WinX - 1))
elif [ "$1" = "left" ]; then
xdotool getwindowfocus windowmove 0 $((WinX - 1))
elif [ "$1" = "bottom" ]; then
xdotool getwindowfocus windowmove $((WinY - 1)) $((MonW - WinW))
fi
elif [ "$1" = "lock" ];then
declare -i ID
ID=`xinput list | grep -Eo 'TouchPad\s*id\=[0-9]{1,2}' | grep -Eo '[0-9]{1,2}'`
declare -i STATE
STATE=`xinput list-props $ID|grep 'Device Enabled'|awk '{print $4}'`
if [ $STATE -eq 1 ];then
xinput disable $ID
echo "Touchpad disabled."
else
xinput enable $ID
echo "Touchpad enabled."
fi
fi
if [ "$1" = "pass" ];then
pass -c $(ls ~/.password-store/*/*|cut -b-37 --complement|rofi -dmenu|sed -e 's/\.gpg//')
fi
if [ "$1" = "screensaver" ];then
cat /tmp/noss||i3lock -di `shuf -n1 -e ~/.i3/wall/*`
fi
if [ "$1" = "wall" ];then
#if [[ -d ~/.i3/wallOM ]];then feh --bg-scale "`shuf -n1 -e ~/.i3/wallOM/*`";else feh --bg-scale "`shuf -n1 -e ~/.i3/wall/*`";fi;
#feh --bg-scale "$(shuf -n1 -e ~/.i3/wallOM/*)"
#feh --bg-scale ~/.i3/image.png
feh --bg-scale "$(shuf -n1 <(realpath /home/stonewareslord/sync/wallpaper/"$(hostname)"/*))"
fi
if [ "$1" = "swap" ];then
python << EOF
import i3
swap = [output for output in i3.get_outputs() if output['active']]
if len(swap) == 2:
for output in swap:
i3.workspace(output['current_workspace'])
i3.command('move', 'workspace to output right')
EOF
fi
if [ "$1" = "boot" ];then
test -f ~/.screenlayout/default.sh && ~/.screenlayout/default.sh
/usr/bin/xset -b
/usr/bin/xset +fp /usr/share/fonts/X11/misc
/usr/bin/xset +fp /usr/share/fonts/X11/Type1
/usr/bin/xset +fp built-ins
/usr/bin/xset s off
/usr/bin/xset -dpms
# This will segfault and ruin your day
#/usr/bin/urxvtd -q -f -o
if [ "$(hostname)" = "MMLin" ]; then
xrandr --output HDMI1 --primary
xmodmap <(echo pointer = 3 2 1)
elif [ "$(hostname)" = "G2" ]; then
#TODO: Figure out what the display is called
xrandr --output eDP1 --primary
xmodmap <(echo pointer = 1 2 3)
fi
feh --bg-scale $(shuf -n1 <(realpath /home/stonewareslord/owncloud/wallpaper/$(hostname)))
xinput --set-prop 'Logitech USB Optical Mouse' 'Device Accel Constant Deceleration' 3
$(which ck-launch-session 2>/dev/null) $(which i3)
fi
if [ "$1" = "screen-lock" ];then
revert(){
xset dpms 0 0 0
}
trap revert SIGHUP SIGINT SIGTERM
xset +dpms dpms 5 5 5
slock
revert
fi
if [ "$1" = "paste" ]; then
sleep 2
DISPLAY=:0.0 xdotool type --clearmodifiers --file <(xsel)
fi
if [ "$1" = "ping" ]; then
shift
# Return code
local RET=0
# nc has some intense divergence. netcat6 has no -z, but netcat has no -x
# -w3: 3 second timeout
# -4 : ipv4 only
# check if nc has -z
if nc -h |& grep -q -- -z; then
nc -w 1 -z4 "$1" "$2" >& /dev/null && RET=1
# check if nc has --transfer (-x)
elif nc -h |& grep -q -- --transfer; then
nc -w 1 -4 "$1" "$2" -x </dev/null >& /dev/null && RET=1
fi
echo $RET
fi
if [ "$1" = "ip" ]; then
shift
RET=0
if [ "$(hostname)" = "MMLin" ]; then
if grep -q "$1" < <(ifconfig enp2s0f0); then
RET=1
fi
elif [ "$(hostname)" = "G2" ]; then
if grep -q "$1" < <(ifconfig enp1s0;ifconfig wlp2s0); then
RET=1
fi
elif [ "$(hostname)" = "SGen" ]; then
if grep -q "$1" < <(ifconfig enp0s25); then
RET=1
fi
fi
echo $RET
fi
if [ "$1" = "copy" ]; then
(printf '-chegg ';xsel | perl -pe 's/[^a-zA-Z ]//g;chomp()') | xsel && notify-send "Copied" || notify-send "Error"
fi
if [ "$1" = "screenshot" ]; then
\rm -f ~/last-photo/*
sleep .2
#DISPLAY=:0.0 xfce4-screenshooter -r -s ~/last-photo
local FNAME="$HOME/last-photo/$(date +'%Y-%m-%d_%T').png"
DISPLAY=:0.0 import "${FNAME}"
DISPLAY=:0.0 xclip -selection clipboard -t image/png -i "${FNAME}"
#DISPLAY=:0.0 scrot -s "$HOME/last-photo/$(date +'%Y-%m-%d_%T').png"
\cp ~/last-photo/* ~/Pictures
fi
if [ "$1" = "shutdownprompt" ]; then
RESP=$(printf 'Sleep\nNMRestart\nShutdown\nRestart\nLogout\n' | rofi -i -dmenu 2>/dev/null)
if [[ ! -z "$RESP" ]]; then
case "$RESP" in
NMRestart) nmcli radio wifi off;sleep 1;nmcli radio wifi on;;
Restart)
sudo /sbin/shutdown -r now
;;
Shutdown)
sudo /sbin/poweroff
;;
Logout)
i3-msg exit
;;
Sleep)
amixer set Master 0% mute
slock&until echo mem|sudo tee /sys/power/state>/dev/null;do sleep 1;done
sleep 4
nmcli radio wifi off
sleep 3
nmcli radio wifi on
;;
esac
fi
fi
if [ "$1" = "run" ]; then
PATH="$HOME/bin:/usr/games/bin:$PATH" rofi -show run
fi
if [ "$1" = "window" ]; then
rofi -show window
fi
if [ "$1" = "clip" ]; then
# Get the rofi-selected index of what to paste
local INDEX="$(gpaste-client --oneline | colrm 80 | rofi -dmenu | perl -pe 's/:.*//')"
# If they made a selection, select it
if [[ ! -z "$INDEX" ]]; then
gpaste-client select "$INDEX"
fi
fi