dotfiles

*nix config files
git clone git://git.pyratebeard.net/dotfiles.git
Log | Files | Refs | README

commit 0e39b5b5e939afbcab53e3a105da86dc3684a54d
parent 1128a0a6d38ab684cb628241430e324efc511260
Author: pyratebeard <root@pyratebeard.net>
Date:   Fri, 11 Jul 2025 13:06:17 +0100

feat(herbstluft): browser launch keybind

Diffstat:
Mherbstluftwm/.config/herbstluftwm/autostart | 3+++
Aherbstluftwm/.config/herbstluftwm/autostart.darkmachine | 227+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aherbstluftwm/.config/herbstluftwm/autostart.slughead | 227+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 457 insertions(+), 0 deletions(-)

diff --git a/herbstluftwm/.config/herbstluftwm/autostart b/herbstluftwm/.config/herbstluftwm/autostart @@ -43,6 +43,9 @@ hc keybind $Mod-z spawn bash /home/pyratebeard/.local/bin/lock hc keybind $Mod-9 spawn bash /home/pyratebeard/.local/bin/herbstluftwm-remove-gap hc keybind $Mod-0 spawn bash /home/pyratebeard/.local/bin/herbstluftwm-add-gap +# browser +hc keybind $Mod-b spawn firefox + # scrot hc keybind $Mod-q spawn scrot -e 'mv $f ~trove/images/misc/scrots/pyratebeard/' diff --git a/herbstluftwm/.config/herbstluftwm/autostart.darkmachine b/herbstluftwm/.config/herbstluftwm/autostart.darkmachine @@ -0,0 +1,227 @@ +#!/bin/sh +# +# ██ ██ ██ ██ ████ ██ +# ░██ ░██ ░██ ░██ ░██░ ░██ +# ░██ █████ ██████░██ ██████ ██████ ░██ ██ ██ ██████ ██████ +# ░██████ ██░░░██░░██░░█░██████ ██░░░░ ░░░██░ ░██░██ ░██░░░██░ ░░░██░ +# ░██░░░██░███████ ░██ ░ ░██░░░██░░█████ ░██ ░██░██ ░██ ░██ ░██ +# ░██ ░██░██░░░░ ░██ ░██ ░██ ░░░░░██ ░██ ░██░██ ░██ ░██ ░██ +# ░██ ░██░░██████░███ ░██████ ██████ ░░██ ███░░██████ ░██ ░░██ +# ░░ ░░ ░░░░░░ ░░░ ░░░░░ ░░░░░░ ░░ ░░░ ░░░░░░ ░░ ░░ + +hc() { + herbstclient "$@" +} + +hc emit_hook reload + +# remove all existing keybindings +hc keyunbind --all + +# close tray if reloading +killall stalonetray + +# gap counter +echo 30 > /tmp/herbstluftwm-gap + +# keybindings +Mod=Mod4 +Alt=Mod1 + +# minimize and unminimise windows +bash /home/pyratebeard/.local/bin/herbstluftwm-min_max + +hc keybind $Mod-Control-s spawn bash /home/pyratebeard/.local/bin/herbstluftwm-miniscratch + +# run menu +hc keybind $Mod-w spawn /usr/bin/zsh /home/pyratebeard/.local/bin/rundmc + +# lock screen +hc keybind $Mod-z spawn bash /home/pyratebeard/.local/bin/lock + +# dynamic window gap +hc keybind $Mod-9 spawn bash /home/pyratebeard/.local/bin/herbstluftwm-remove-gap +hc keybind $Mod-0 spawn bash /home/pyratebeard/.local/bin/herbstluftwm-add-gap + +# scrot +hc keybind $Mod-q spawn scrot -e 'mv $f ~trove/images/misc/scrots/pyratebeard/' + +# generic actions +hc keybind $Mod-Shift-q quit +hc keybind $Mod-Shift-r reload +hc keybind $Mod-Shift-c close +hc keybind $Mod-Return spawn urxvtc + +# basic movement +# focusing clients +hc keybind $Mod-Left focus left +hc keybind $Mod-Down focus down +hc keybind $Mod-Up focus up +hc keybind $Mod-Right focus right +hc keybind $Mod-h focus left +hc keybind $Mod-j focus down +hc keybind $Mod-k focus up +hc keybind $Mod-l focus right + +# moving clients +hc keybind $Mod-Shift-Left shift left +hc keybind $Mod-Shift-Down shift down +hc keybind $Mod-Shift-Up shift up +hc keybind $Mod-Shift-Right shift right +hc keybind $Mod-Shift-h shift left +hc keybind $Mod-Shift-j shift down +hc keybind $Mod-Shift-k shift up +hc keybind $Mod-Shift-l shift right + +# splitting frames +# create an empty frame at the specified direction +hc keybind $Mod-u chain , split bottom 0.5 , focus down #row +hc keybind $Mod-o chain , split right 0.5 , focus right #column +# let the current frame explode into subframes +hc keybind $Mod-Control-space split explode + +# resizing frames +resizestep=0.01 +hc keybind $Mod-Control-h resize left +$resizestep +hc keybind $Mod-Control-j resize down +$resizestep +hc keybind $Mod-Control-k resize up +$resizestep +hc keybind $Mod-Control-l resize right +$resizestep +hc keybind $Mod-Control-Left resize left +$resizestep +hc keybind $Mod-Control-Down resize down +$resizestep +hc keybind $Mod-Control-Up resize up +$resizestep +hc keybind $Mod-Control-Right resize right +$resizestep + +# tags +tag_names=( {0..4} ) +tag_keys=( {1..5} 0 ) + +# set up normal tags +hc rename default "${tag_names[0]}" || true +for i in ${!tag_names[@]} ; do + hc add "${tag_names[$i]}" + key="${tag_keys[$i]}" + layoutfile=/home/pyratebeard/dot/herbstluftwm/layout-${key} + if ! [ -z "$key" ] ; then + hc keybind "$Mod-$key" \ + chain , silent substitute M tags."$i".my_monitor \ + focus_monitor M \ + , use_index "$i" + hc keybind "$Mod-Shift-$key" move_index "$i" + if [ -f ${layoutfile} ] ; then + hc load ${i} "$(cat ${layoutfile})" + fi + fi +done + +hc keybind $Mod-t chain \ + , new_attr string tags.focus.my_monitor \ + , substitute M monitors.focus.indix set_attr tags.focus.my_monitor M \ + , try and \ + . compare monitors.focus.name != "" \ + . substitute M monitors.focus.name \ + set_attr tags.focus.my_monitor M + +hc keybind $Mod-Shift-t \ + remove_attr tags.focus.my_monitor + +lock_tag_to_monitor() { + hc chain \ + , new_attr string tags.by-name."$1".my_monitor \ + , set_attr tags.by-name."$1".my_monitor "$2" +} + +lock_tag_to_monitor 0 1 +lock_tag_to_monitor 1 0 +lock_tag_to_monitor 2 1 +lock_tag_to_monitor 3 1 +lock_tag_to_monitor 4 1 + +# cycle through tags +hc keybind $Mod-$Alt-Left use_index -1 --skip-visible +hc keybind $Mod-$Alt-Right use_index +1 --skip-visible + +# layouting +hc keybind $Mod-x remove +hc keybind $Mod-space cycle_layout 1 +hc keybind $Mod-Shift-space cycle_layout -1 +hc keybind $Mod-s set_attr clients.focus.floating toggle +hc keybind $Mod-f fullscreen toggle +hc keybind $Mod-p pseudotile toggle + +# mouse +hc mouseunbind --all +hc mousebind $Mod-Button1 move +hc mousebind $Mod-Button2 zoom +hc mousebind $Mod-Button3 resize + +# focus +hc keybind $Mod-BackSpace cycle_monitor +hc keybind $Mod-Tab cycle_all +1 +hc keybind $Mod-Shift-Tab cycle_all -1 +hc keybind $Mod-n cycle +hc keybind $Mod-i jumpto urgent + +# theme +hc attr theme.tiling.reset 1 +hc attr theme.floating.reset 1 +hc set frame_border_active_color '#807b64' +hc set frame_border_normal_color '#131313' +hc set frame_bg_normal_color '#202020' +hc set frame_bg_active_color '#131313' +hc set frame_border_width 0 +hc set always_show_frame 0 +hc set frame_bg_transparent 1 +hc set frame_transparent_width 0 +hc set frame_gap 2 + +hc attr theme.active.color '#60928f' #6A8C8C +hc attr theme.normal.color '#121212' +hc attr theme.urgent.color '#515978' +hc attr theme.inner_width 6 +hc attr theme.inner_color '#2c2c2c' +hc attr theme.border_width 10 +hc attr theme.floating.border_width 3 +hc attr theme.floating.outer_width 1 +hc attr theme.floating.outer_color black +hc attr theme.active.inner_color '#2c2c2c' +hc attr theme.active.outer_color '#131313' +hc attr theme.background_color '#1e1b1c' +#hc attr theme.padding_left 14 + +hc set window_gap 30 +hc set frame_padding 0 +hc set smart_window_surroundings 0 +hc set smart_frame_surroundings 1 +hc set mouse_recenter_gap 0 + +# rules +hc unrule -F +#hc rule class=XTerm tag=3 # move all xterms to tag 3 +hc rule focus=on # normally focus new clients +#hc rule focus=off # normally do not focus new clients +# give focus to most common terminals +#hc rule class~'(.*[Rr]xvt.*|.*[Tt]erm|Konsole)' focus=on +hc rule windowtype~'_NET_WM_WINDOW_TYPE_(DIALOG|UTILITY|SPLASH)' pseudotile=on +hc rule windowtype='_NET_WM_WINDOW_TYPE_DIALOG' focus=on +hc rule windowtype~'_NET_WM_WINDOW_TYPE_(NOTIFICATION|DOCK|DESKTOP)' manage=off + +# unlock, just to be sure +hc unlock + +herbstclient set tree_style '╾│ ├└╼─┐' + +hc rule class=qutebrowser tag=1 +hc rule class=firefox tag=1 +hc rule class=Chromium tag=3 +hc rule class=teams-for-linux tag=3 +hc rule class=Gimp floating=true +hc rule class="Tor Browser" floating=true +hc rule class=xfreerdp floating=true +hc rule class="Qemu-system-x86_64" floating=true +hc rule title=scratchpad floating=true floatplacement=center +hc rule title=dmenu floating=true + +# do multi monitor setup here, e.g.: +# hc set_monitors 1280x1024+0+0 1280x1024+1280+0 +# or simply: +hc detect_monitors diff --git a/herbstluftwm/.config/herbstluftwm/autostart.slughead b/herbstluftwm/.config/herbstluftwm/autostart.slughead @@ -0,0 +1,227 @@ +#!/bin/sh +# +# ██ ██ ██ ██ ████ ██ +# ░██ ░██ ░██ ░██ ░██░ ░██ +# ░██ █████ ██████░██ ██████ ██████ ░██ ██ ██ ██████ ██████ +# ░██████ ██░░░██░░██░░█░██████ ██░░░░ ░░░██░ ░██░██ ░██░░░██░ ░░░██░ +# ░██░░░██░███████ ░██ ░ ░██░░░██░░█████ ░██ ░██░██ ░██ ░██ ░██ +# ░██ ░██░██░░░░ ░██ ░██ ░██ ░░░░░██ ░██ ░██░██ ░██ ░██ ░██ +# ░██ ░██░░██████░███ ░██████ ██████ ░░██ ███░░██████ ░██ ░░██ +# ░░ ░░ ░░░░░░ ░░░ ░░░░░ ░░░░░░ ░░ ░░░ ░░░░░░ ░░ ░░ + +hc() { + herbstclient "$@" +} + +hc emit_hook reload + +# remove all existing keybindings +hc keyunbind --all + +# close tray if reloading +killall stalonetray + +# gap counter +echo 30 > /tmp/herbstluftwm-gap + +# keybindings +Mod=Mod4 +Alt=Mod1 + +# minimize and unminimise windows +bash /home/pyratebeard/.local/bin/herbstluftwm-min_max + +hc keybind $Mod-Control-s spawn bash /home/pyratebeard/.local/bin/herbstluftwm-miniscratch + +# run menu +hc keybind $Mod-w spawn /usr/bin/zsh /home/pyratebeard/.local/bin/rundmc + +# lock screen +hc keybind $Mod-z spawn bash /home/pyratebeard/.local/bin/lock + +# dynamic window gap +hc keybind $Mod-9 spawn bash /home/pyratebeard/.local/bin/herbstluftwm-remove-gap +hc keybind $Mod-0 spawn bash /home/pyratebeard/.local/bin/herbstluftwm-add-gap + +# scrot +hc keybind $Mod-q spawn scrot -e 'mv $f ~trove/images/misc/scrots/pyratebeard/' + +# generic actions +hc keybind $Mod-Shift-q quit +hc keybind $Mod-Shift-r reload +hc keybind $Mod-Shift-c close +hc keybind $Mod-Return spawn urxvtc + +# basic movement +# focusing clients +hc keybind $Mod-Left focus left +hc keybind $Mod-Down focus down +hc keybind $Mod-Up focus up +hc keybind $Mod-Right focus right +hc keybind $Mod-h focus left +hc keybind $Mod-j focus down +hc keybind $Mod-k focus up +hc keybind $Mod-l focus right + +# moving clients +hc keybind $Mod-Shift-Left shift left +hc keybind $Mod-Shift-Down shift down +hc keybind $Mod-Shift-Up shift up +hc keybind $Mod-Shift-Right shift right +hc keybind $Mod-Shift-h shift left +hc keybind $Mod-Shift-j shift down +hc keybind $Mod-Shift-k shift up +hc keybind $Mod-Shift-l shift right + +# splitting frames +# create an empty frame at the specified direction +hc keybind $Mod-u chain , split bottom 0.5 , focus down #row +hc keybind $Mod-o chain , split right 0.5 , focus right #column +# let the current frame explode into subframes +hc keybind $Mod-Control-space split explode + +# resizing frames +resizestep=0.01 +hc keybind $Mod-Control-h resize left +$resizestep +hc keybind $Mod-Control-j resize down +$resizestep +hc keybind $Mod-Control-k resize up +$resizestep +hc keybind $Mod-Control-l resize right +$resizestep +hc keybind $Mod-Control-Left resize left +$resizestep +hc keybind $Mod-Control-Down resize down +$resizestep +hc keybind $Mod-Control-Up resize up +$resizestep +hc keybind $Mod-Control-Right resize right +$resizestep + +# tags +tag_names=( {0..4} ) +tag_keys=( {1..5} 0 ) + +# set up normal tags +hc rename default "${tag_names[0]}" || true +for i in ${!tag_names[@]} ; do + hc add "${tag_names[$i]}" + key="${tag_keys[$i]}" + layoutfile=/home/pyratebeard/dot/herbstluftwm/layout-${key} + if ! [ -z "$key" ] ; then + hc keybind "$Mod-$key" \ + chain , silent substitute M tags."$i".my_monitor \ + focus_monitor M \ + , use_index "$i" + hc keybind "$Mod-Shift-$key" move_index "$i" + if [ -f ${layoutfile} ] ; then + hc load ${i} "$(cat ${layoutfile})" + fi + fi +done + +hc keybind $Mod-t chain \ + , new_attr string tags.focus.my_monitor \ + , substitute M monitors.focus.indix set_attr tags.focus.my_monitor M \ + , try and \ + . compare monitors.focus.name != "" \ + . substitute M monitors.focus.name \ + set_attr tags.focus.my_monitor M + +hc keybind $Mod-Shift-t \ + remove_attr tags.focus.my_monitor + +lock_tag_to_monitor() { + hc chain \ + , new_attr string tags.by-name."$1".my_monitor \ + , set_attr tags.by-name."$1".my_monitor "$2" +} + +lock_tag_to_monitor 0 0 +lock_tag_to_monitor 1 1 +lock_tag_to_monitor 2 0 +lock_tag_to_monitor 3 1 +lock_tag_to_monitor 4 0 + +# cycle through tags +hc keybind $Mod-$Alt-Left use_index -1 --skip-visible +hc keybind $Mod-$Alt-Right use_index +1 --skip-visible + +# layouting +hc keybind $Mod-x remove +hc keybind $Mod-space cycle_layout 1 +hc keybind $Mod-Shift-space cycle_layout -1 +hc keybind $Mod-s set_attr clients.focus.floating toggle +hc keybind $Mod-f fullscreen toggle +hc keybind $Mod-p pseudotile toggle + +# mouse +hc mouseunbind --all +hc mousebind $Mod-Button1 move +hc mousebind $Mod-Button2 zoom +hc mousebind $Mod-Button3 resize + +# focus +hc keybind $Mod-BackSpace cycle_monitor +hc keybind $Mod-Tab cycle_all +1 +hc keybind $Mod-Shift-Tab cycle_all -1 +hc keybind $Mod-n cycle +hc keybind $Mod-i jumpto urgent + +# theme +hc attr theme.tiling.reset 1 +hc attr theme.floating.reset 1 +hc set frame_border_active_color '#807b64' +hc set frame_border_normal_color '#131313' +hc set frame_bg_normal_color '#202020' +hc set frame_bg_active_color '#131313' +hc set frame_border_width 0 +hc set always_show_frame 0 +hc set frame_bg_transparent 1 +hc set frame_transparent_width 0 +hc set frame_gap 2 + +hc attr theme.active.color '#14894c' #orp: 9c353e, zuke: bdc030, electronomicon: 7d3624 +hc attr theme.normal.color '#070606' +hc attr theme.urgent.color '#58333e' +hc attr theme.inner_width 8 +hc attr theme.inner_color '#2a2f33' +hc attr theme.border_width 12 +hc attr theme.floating.border_width 3 +hc attr theme.floating.outer_width 1 +hc attr theme.floating.outer_color black +hc attr theme.active.inner_color '#2a2f33' +hc attr theme.active.outer_color '#131313' +hc attr theme.background_color '#1e1b1c' +#hc attr theme.padding_left 14 + +hc set window_gap 30 +hc set frame_padding 0 +hc set smart_window_surroundings 0 +hc set smart_frame_surroundings 1 +hc set mouse_recenter_gap 0 + +# rules +hc unrule -F +#hc rule class=XTerm tag=3 # move all xterms to tag 3 +hc rule focus=on # normally focus new clients +#hc rule focus=off # normally do not focus new clients +# give focus to most common terminals +#hc rule class~'(.*[Rr]xvt.*|.*[Tt]erm|Konsole)' focus=on +hc rule windowtype~'_NET_WM_WINDOW_TYPE_(DIALOG|UTILITY|SPLASH)' pseudotile=on +hc rule windowtype='_NET_WM_WINDOW_TYPE_DIALOG' focus=on +hc rule windowtype~'_NET_WM_WINDOW_TYPE_(NOTIFICATION|DOCK|DESKTOP)' manage=off + +# unlock, just to be sure +hc unlock + +herbstclient set tree_style '╾│ ├└╼─┐' + +hc rule class=qutebrowser tag=1 +hc rule class=firefox tag=1 +hc rule class=Chromium tag=3 +hc rule class=teams-for-linux tag=3 +hc rule class=Gimp floating=true +hc rule class="Tor Browser" floating=true +hc rule class=xfreerdp floating=true +hc rule class="Qemu-system-x86_64" floating=true +hc rule title=scratchpad floating=true floatplacement=center +hc rule title=dmenu floating=true + +# do multi monitor setup here, e.g.: +# hc set_monitors 1280x1024+0+0 1280x1024+1280+0 +# or simply: +hc detect_monitors