173 lines
5.4 KiB
Bash
Executable File
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
|