sxhkd: Remove module
Remove left-over sxhkd module, not used anymore since the wayland switch.
This commit is contained in:
parent
6fabac6cd8
commit
367be559d7
5 changed files with 0 additions and 384 deletions
|
@ -1,7 +0,0 @@
|
|||
# for sxhkd-chain-labels script
|
||||
|
||||
# media manipulation mode: playing, pausing, skipping,..
|
||||
media:alt + m
|
||||
|
||||
# academia mode: opening bibtex readings, annotating,..
|
||||
academia:alt + a
|
|
@ -1,103 +0,0 @@
|
|||
# universal x key bindings
|
||||
|
||||
# System functionality
|
||||
|
||||
# Enable lock screen (TODO does not stop music, etc yet)
|
||||
super + x
|
||||
lockscreen
|
||||
|
||||
# Open System Power Menu
|
||||
super + BackSpace
|
||||
rofi -modi "powermenu:~/.config/rofi/modes/powermenu" -show powermenu -theme themes/powermenu -selected-row 2
|
||||
|
||||
# quick-switching of theme using styler
|
||||
super + F8
|
||||
styler set $(styler list themes | rofi -dmenu -theme /themes/dropdown -matching fuzzy -filter "-256 -atelier ")
|
||||
|
||||
super + F7
|
||||
polybar-msg cmd toggle
|
||||
|
||||
# enable function (/media) key functionality
|
||||
XF86MonBrightness{Up,Down}
|
||||
control-brightness {up, down} 10
|
||||
XF86AudioMute
|
||||
control-volume mute
|
||||
XF86Audio{LowerVolume,RaiseVolume}
|
||||
control-volume {down, up}
|
||||
|
||||
XF86Search
|
||||
~/.local/share/qutebrowser/userscripts/qutedmenu
|
||||
# dunstctl set-paused toggle && echo "$(dunstctl is-paused)" > /tmp/dunstpaused
|
||||
|
||||
# Open terminal emulator (the variable gets set in sh module basic env vars)
|
||||
super + Return
|
||||
$TERMINAL
|
||||
|
||||
# open quick start menu
|
||||
super + space
|
||||
rofi -show drun -theme themes/dmenu
|
||||
|
||||
# open more extensive run menu
|
||||
super + shift + space
|
||||
rofi -modi combi,ssh -show combi -combi-modi "window,clipboard:greenclip print,run" -theme themes/dropdown
|
||||
|
||||
# open dropdown calculator -- top left (small r), bottom right (capital R)
|
||||
super + { r, shift + r }
|
||||
rofi -modi calc -show calc -location { 1, 5 }
|
||||
|
||||
# open gopass frontend menu
|
||||
super + shift + p
|
||||
rofi-pass -theme themes/dropdown
|
||||
|
||||
# open surfraw rofi frontend
|
||||
super + shift + q
|
||||
rofi-surfraw
|
||||
|
||||
# insert emojis into any document/form
|
||||
super + shift + e
|
||||
rofimoji
|
||||
|
||||
super + shift + u
|
||||
alacritty --class floating,floating -e sharefile | xargs notify-send
|
||||
|
||||
# invoke qutebrowser userscript to open link (from history/marks)
|
||||
super + shift + o
|
||||
qutedmenu
|
||||
|
||||
## modes
|
||||
|
||||
# mode:media:alt + m
|
||||
# seek +/- 5 seconds
|
||||
alt + m : {h,l}
|
||||
playerctl position {5-,5+}
|
||||
# seek +/- 15 seconds
|
||||
alt + m : shift + {h,l}
|
||||
playerctl position {15-,15+}
|
||||
# decrease/increase volume
|
||||
alt + m : {j,k}
|
||||
pulsemixer --change-volume {-5,+5}
|
||||
# decrease/increase volume
|
||||
alt + m : shift + {j,k}
|
||||
playerctl {next,previous}
|
||||
# pause/stop player
|
||||
alt + m : {_,shift} + p
|
||||
playerctl {play-pause,stop}
|
||||
# exit mode
|
||||
alt + m : alt + m
|
||||
pkill -ALRM sxhkd
|
||||
|
||||
# mode:academia:alt + a
|
||||
# due papers this week
|
||||
alt + a : {F1,F2}
|
||||
rofi-bib-due -p{1,3} -u $(date --date='fri this week' +%Y-%m-%d)
|
||||
# due papers overall
|
||||
alt + a : shift + {F1,F2}
|
||||
rofi-bib-due -p{1,3}
|
||||
alt + a : F3
|
||||
rofi-bib-due
|
||||
# read wallabag articles from the cmdline
|
||||
alt + a : {r, shift+r}
|
||||
alacritty --class floating,floating -e wallr {-n,_}
|
||||
# exit mode
|
||||
alt + a : alt + a
|
||||
pkill -ALRM sxhkd
|
|
@ -1,196 +0,0 @@
|
|||
#!/usr/bin/env sh
|
||||
|
||||
# output is to stdout unless explicitly set through -o or env var
|
||||
OUTPUTF="$SXHKD_OUTPUTF"
|
||||
|
||||
# set fifo input file, according (somewhat) to xdg
|
||||
if [ -n "$SXHKD_FIFO" ]; then
|
||||
FIFO="$SXHKD_FIFO"
|
||||
elif [ -p "${XDG_RUNTIME_DIR}"/sxhkd_fifo ]; then
|
||||
FIFO="${XDG_RUNTIME_DIR}"/sxhkd_fifo
|
||||
elif [ -p "${XDG_CACHE_HOME:-$HOME/.cache}"/sxhkd_fifo ]; then
|
||||
FIFO="${XDG_CACHE_HOME:-$HOME/.cache}"/sxhkd_fifo
|
||||
elif [ -p "$HOME/.sxhkd_fifo" ]; then
|
||||
FIFO="$HOME/.sxhkd_fifo"
|
||||
fi
|
||||
|
||||
# set label config file, according (somewhat) to xdg
|
||||
if [ -n "$SXHKD_LABELCONFIG" ]; then
|
||||
LABELCONFIG="$SXHKD_LABELCONFIG"
|
||||
elif [ -f "${XDG_CONFIG_HOME:-$HOME/.config}"/sxhkd/chain-labels.conf ]; then
|
||||
LABELCONFIG="${XDG_CONFIG_HOME:-$HOME/.config}"/sxhkd/chain-labels.conf
|
||||
elif [ -f "$HOME/.chain-labels.conf" ]; then
|
||||
LABELCONFIG="$HOME/.chain-labels.conf"
|
||||
fi
|
||||
|
||||
SXHKDRC_FILE="$XDG_CONFIG_HOME"/sxhkd/sxhkdrc
|
||||
|
||||
main() {
|
||||
while read -r event; do
|
||||
detect_event "$event"
|
||||
done <"$FIFO"
|
||||
}
|
||||
|
||||
detect_event() {
|
||||
ev="$(echo "$1" | sed -e 's/^H.*$/hotkey/;s/^C.*$/command/;s/^BBegin chain.*$/chainstart/;s/^EEnd chain.*$/chainend/;')"
|
||||
|
||||
case $ev in
|
||||
hotkey) ev_hotkey "$(echo "$1" | sed -e 's/^H//')" ;;
|
||||
# command) ev_command "$(echo "$1" | sed -e 's/^C//')" ;;
|
||||
chainstart) ev_chainstart "$(echo "$1" | sed -e 's/^B//')" ;;
|
||||
chainend) ev_chainend "$(echo "$1" | sed -e 's/^E//')" ;;
|
||||
*) ;;
|
||||
esac
|
||||
}
|
||||
|
||||
send_msg() {
|
||||
if [ -n "$OUTPUTF" ]; then
|
||||
echo "$1" >"$OUTPUTF"
|
||||
else
|
||||
echo "$1"
|
||||
fi
|
||||
}
|
||||
|
||||
ev_hotkey() {
|
||||
LAST_HOTKEY="$1"
|
||||
}
|
||||
|
||||
# compare labels to last hotkey, return mode name
|
||||
ev_chainstart() {
|
||||
[ -z "$LAST_HOTKEY" ] && return 1
|
||||
found=$(echo "$LABELS" | sed -e "/$LAST_HOTKEY/!d;s/^\(.\+\):.*$/\1/")
|
||||
send_msg "$found"
|
||||
}
|
||||
|
||||
ev_chainend() {
|
||||
send_msg ""
|
||||
}
|
||||
|
||||
# TODO add option to also display last command done in chain
|
||||
# ev_command() {
|
||||
# send_msg "command: $1"
|
||||
# }
|
||||
|
||||
# read config from file, remove comments (lines starting with #) and empty lines
|
||||
read_config() {
|
||||
[ ! -f "$1" ] && return 1
|
||||
|
||||
parse_labels "$(cat "$1")"
|
||||
}
|
||||
|
||||
# parse sxhkdrc for mode compatible comments
|
||||
read_sxhkdrc() {
|
||||
[ ! -f "$1" ] && return 1
|
||||
|
||||
_sxhkdrc_content="$(sed -e '/^# mode:/!d;s/^# mode://' <"$1")"
|
||||
parse_labels "$_sxhkdrc_content"
|
||||
}
|
||||
|
||||
# append
|
||||
parse_labels() {
|
||||
LABELS="${LABELS}$(echo "$1" | sed -e '/^#/d;/^[[:blank:]]*$/d')"
|
||||
}
|
||||
|
||||
get_help() {
|
||||
printf \
|
||||
"Usage: sxhkd-chain-labels [-c config file][-o output file][-s input pipe]
|
||||
|
||||
By default will take the input from the input pipe (at XDG_RUNTIME_DIR/sxhkd_fifo) and
|
||||
print the current sxhkd chain mode to stdout. That means, sxhkd needs to be started
|
||||
with a fifo pipe running, ideally to the XDG_RUNTIME_DIR:
|
||||
|
||||
mkfifo \$XDG_RUNTIME_DIR/sxhkd_fifo && sxhkd -s \$XDG_RUNTIME_DIR/sxhkd_fifo
|
||||
|
||||
When given a key combination which maps to a specific mode, it will print out the name
|
||||
of the mode instead. These maps can be passed with -c flag, specifying an options file.
|
||||
By default it will look in \$XDG_CONFIG_HOME/sxhkd/sxhkd-chain-labels.conf
|
||||
|
||||
When passed the -o flag it will replace the contents of the file passed in with the
|
||||
current sxhkd chain mode, emptying the file when no mode is active.
|
||||
|
||||
Default lookup places for files, in descending order:
|
||||
:input fifo
|
||||
\$SXHKD_FIFO (env variable)
|
||||
\$XDG_RUNTIME_DIR/sxhkd_fifo
|
||||
\$XDG_CACHE_HOME/sxhkd_fifo
|
||||
~/.cache/sxhkd_fifo
|
||||
~/.sxhkd_fifo
|
||||
|
||||
:label configuration
|
||||
\$SXHKD_LABELCONFIG (env variable)
|
||||
\$XDG_CONFIG_HOME/sxhkd/chain-labels.conf
|
||||
~/.config/sxhkd/chain-labels.conf
|
||||
~/.chain-labels.conf
|
||||
\$XDG_CONFIG_HOME/sxhkd/sxhkdrc (parsing)
|
||||
|
||||
The label configuration file uses the following format:
|
||||
mode name:key chain
|
||||
|
||||
Lines beginning with a # will be ignored. Whitespace is important, sxhkd will, by
|
||||
default, put a single space between any component of the key combination.
|
||||
|
||||
An example file chain-labels.conf:
|
||||
media:super + alt + m
|
||||
system:super + backspace
|
||||
|
||||
Instead of using an explicit configuration file, you can put the chain mode
|
||||
information into the regular sxhkdrc as comments. They need to follow this exact format:
|
||||
# mode:mode-name:key-chain
|
||||
|
||||
They can occur anywhere in the file. The space between # and mode is necessary, and #
|
||||
needs to be the first character on the line.
|
||||
The above example file as written into the sxhkdrc:
|
||||
# mode:media:super + alt + m
|
||||
# mode:system:super + backspace
|
||||
|
||||
If an explicit configuration file exists, it will supersede any mode information in the
|
||||
sxhkdrc file.
|
||||
\n"
|
||||
}
|
||||
|
||||
get_version() {
|
||||
printf \
|
||||
"%s: 0.3
|
||||
|
||||
fifo input pipe:
|
||||
%s %s
|
||||
label configuration file:
|
||||
%s %s
|
||||
output:
|
||||
%s \n" \
|
||||
"$0" \
|
||||
"$FIFO" \
|
||||
"$([ -p "$FIFO" ] && echo "(found)" || echo "(NOT FOUND)")" \
|
||||
"${LABELCONFIG:-"$SXHKDRC_FILE"}" \
|
||||
"$([ -f "${LABELCONFIG:-"$SXHKDRC_FILE"}" ] && echo "(found)" || echo "(NOT FOUND)")" \
|
||||
"${OUTPUTF:-stdout}"
|
||||
}
|
||||
|
||||
while getopts "vho:s:c:" opt; do
|
||||
case "$opt" in
|
||||
\?)
|
||||
printf "Usage: sxhkd-chain-labels [-c config file][-o output file][-s input pipe]\n"
|
||||
exit 0
|
||||
;;
|
||||
h)
|
||||
get_help
|
||||
exit 0
|
||||
;;
|
||||
v)
|
||||
get_version
|
||||
exit 0
|
||||
;;
|
||||
o) OUTPUTF="$OPTARG" ;;
|
||||
s) FIFO="$OPTARG" ;;
|
||||
c) LABELCONFIG="$OPTARG" ;;
|
||||
esac
|
||||
done
|
||||
shift $((OPTIND - 1))
|
||||
|
||||
[ "${1:-}" = "--" ] && shift
|
||||
|
||||
# look for default label config, prefer config file to parsing sxhkdrc
|
||||
[ -z "$LABELS" ] && read_config "$LABELCONFIG"
|
||||
[ -z "$LABELS" ] && read_sxhkdrc "$SXHKDRC_FILE"
|
||||
|
||||
main "$@"
|
|
@ -1,32 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
# Starting sxhkd without arguments automatically creates
|
||||
# a fifo pipe in XDG_RUNTIME_DIR, to enable IPC for sxhkd.
|
||||
# Mostly used for sxhkd-chain-labels script.
|
||||
|
||||
type sxhkd >/dev/null 2>&1 || {
|
||||
return 1
|
||||
}
|
||||
|
||||
# get the complete path to sxhkd to avoid
|
||||
# recursion later on
|
||||
PROG="$(type sxhkd)"
|
||||
PROG="${PROG##* }"
|
||||
|
||||
FIFO="$XDG_RUNTIME_DIR"/sxhkd_fifo
|
||||
|
||||
args="$*"
|
||||
# create a fifo and start sxhkd with it
|
||||
sxhkd() {
|
||||
exist "$PROG" critical
|
||||
|
||||
if [[ "$args" = *"-s"* ]]; then
|
||||
"$PROG" "$@"
|
||||
else
|
||||
[ -e "$FIFO" ] && rm "$FIFO"
|
||||
|
||||
mkfifo "$FIFO"
|
||||
"$PROG" -s "$FIFO" "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
sxhkd "$@"
|
|
@ -1,46 +0,0 @@
|
|||
# sxhkd
|
||||
|
||||
[sxhkd](https://github.com/baskerville/sxhkd) -- simple X hotkey daemon
|
||||
|
||||
sxhkd is set up to manage most of the key bindings in this dotfile configuraition. It is primarily used for three things: system control, to invoke rofi, and to switch between different desktop operating modes.
|
||||
|
||||
## system control
|
||||
|
||||
* super+x: lock the system, i.e. put a lockscreen in front of it, unlocked with your password
|
||||
* media keys: control the Brightness, Volume, Mute of the system
|
||||
* super+return: open a terminal
|
||||
|
||||
## rofi invocations
|
||||
|
||||
* super+backspace: system management (shutdown,reboot,logout,..)
|
||||
* super+space: app launching
|
||||
* super+r: extended run menu
|
||||
* super+p: password/secret autofill menu
|
||||
* super+F8: theme setting menu
|
||||
* super+q: quick access to bookmarks and search bangs
|
||||
|
||||
## modal desktop
|
||||
|
||||
The modal setup of this desktop allows to first invoke an operating mode and then open the possibility for additional keybindings.
|
||||
For example, `alt + m` will invoke the `media` mode and then media playback can be controlled through the hjkl keys.
|
||||
Think of it like invoking the insert mode, or visual mode in a modal editor like vim.
|
||||
|
||||
The idea behind the modal system is to not overload normal system operation with key binds that are only needed every now and again, and mostly as a coherent package.
|
||||
If I want to control my media playback, by seeking forward or backward, having quick access to controlling the volume seems logical.
|
||||
But I may not want to open a scholarly pdf, or programming project at the same time, so these actions don't need to be included in a coherent 'media' mode.
|
||||
|
||||
The modes currently are:
|
||||
|
||||
* media, for controlling playback and volume
|
||||
* academia, for opening pdf, seeing upcoming readings, and editing references
|
||||
|
||||
They are still in flux and may change every now and again as I put this modal setup to the test. To get a closer look at the actual key binds, look into `.config/sxhkd/sxhkdrc` for now.
|
||||
|
||||
## modal notifications
|
||||
|
||||
To know which mode is currently active on the desktop, this module includes a script which will print sxhkd's current mode to stdout, or a file.
|
||||
This script can be used to show the active mode in a status bar, for example (as the polybar module in these dotfiles does).
|
||||
|
||||
The script lives in `.local/bin/sxhkd-chain-labels` and can be invoked from the path by default. To see available options and the configuration file format use `sxhkd-chain-labels -h`, or take look at the script itself.
|
||||
|
||||
This module overwrites the usual sxhkd program invocation using an alias, which makes sxhkd always (if no options are passed) create and use a named pipe in the XDG_RUNTIME_DIR directory. This is the default location the script will pick it up in.
|
Loading…
Reference in a new issue