Browse Source

Adapt polybar/bspwm/sxhkd to multimonitor setup. Adapt to bspwm/elvish/bedrock updates. Misc kakoune/nim changes. wlp is now a part of dotutils.

master
SolitudeSF 1 month ago
parent
commit
953c035d81
No known key found for this signature in database
13 changed files with 187 additions and 100 deletions
  1. 80
    60
      bedrock.conf
  2. 0
    5
      bin/wlp
  3. 3
    1
      bspwm
  4. 16
    16
      elvish/lib/completers.elv
  5. 1
    1
      elvish/lib/git.elv
  6. 1
    1
      kak/kakrc
  7. 0
    1
      nim.nim
  8. 33
    0
      ntr/contexts/causal_scheme
  9. 2
    1
      ntr/finishers/polybar
  10. 34
    2
      ntr/templates/polybar
  11. 3
    6
      splug.toml
  12. 1
    0
      sx.sh
  13. 13
    6
      sxhkd

+ 80
- 60
bedrock.conf View File

@@ -143,74 +143,92 @@ zsh/zshenv = /bedrock/share/zsh/include-bedrock

[env-vars]
#
# Many programs search environment variables consisting of a colon-separated
# list of directories. We can use these to teach these programs about
# cross-stratum content.
#
# Generally, the fields fall into three categories, which should be in the
# following order:
#
# - The file must come from a specific stratum.
# - For example, `reboot` should be provided by the stratum providing the
# current init.
# - Typically, these are provided by `/bedrock/cross/pin/[...]`.
# - The file must come from the local stratum.
# - Bedrock Linux assumes strata are self-sufficient in terms of hard
# dependencies. Thus, if something has a hard dependency on a given file
# that file *must* be available locally.
# - For example, if a given distro's `/bin/sh` is provided by bash, that
# distro's scripts may use bash-isms, and thus another distro's `/bin/sh`
# may be unsuitable.
# - Typically these values are the traditional values of the given
# environment variable.
# - The file may come from any stratum.
# - If the above two categories don't apply, we know the program isn't
# picky about the specific version of the given file, and thus any distro
# may provide it.
# - Typically, these are provided by `/bedrock/cross/[...]`.
#

PATH = /bedrock/cross/pin/bin:/bedrock/bin:/usr/local/sbin:/usr/local/bin:/opt/sbin:/opt/bin:/usr/sbin:/usr/bin:/sbin:/bin:/bedrock/cross/bin
MANPATH = /bedrock/share/man:/usr/local/share/man:/usr/share/man:/bedrock/cross/man
INFOPATH = /bedrock/share/info:/usr/local/share/info:/usr/share/info:/bedrock/cross/info
XDG_DATA_DIRS = /usr/local/share:/usr/share:/var/lib/snapd/desktop:/var/lib/flatpak/exports/share:/bedrock/cross
TERMINFO_DIRS = /usr/local/share/terminfo:/usr/share/terminfo:/bedrock/cross/terminfo
# Many programs search environment variables consisting of a (usually colon
# separated) list of directories. We can use these to teach these programs
# about cross-stratum content.
#
# These variables are typically searched in listed order. To manage this
# order, the configuration below is broken up into three sections for each
# variable:
#
# - PREFIX:<envvar> entries. Bedrock ensures these are at the front of the
# environment variable. These are used to ensure a given resource is provided
# by a specific stratum. For example, this ensures `reboot` is provided by the
# init stratum.
#
# - INFIX:<envvar> entries. These are used to ensure a given entry comes from
# the local stratum. For example, some software may request to be launched by
# sh via `#!/usr/bin/env sh` but utilize bash-isms which are valid on some
# distros which symlink `sh` to `bash`, but not others which don't. Such
# software must use the local stratum's `sh` to ensure the `bash` shell they
# expect is utilized.
#
# - SUFFIX:<envvar> entries. Bedrock ensures these are at the end of the
# environment variable. Given the PREFIX:<envvar> (specific stratum) and
# INFIX:<envvar> (local stratum) do not contain the item, it likely does not
# matter which stratum provides it, and so this contains resources from any
# strata which provide the resource.
#

PREFIX:PATH = /bedrock/cross/pin/bin:/bedrock/bin
INFIX:PATH = /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin
SUFFIX:PATH = /bedrock/cross/bin

PREFIX:MANPATH = /bedrock/cross/pin/man:/bedrock/share/man
INFIX:MANPATH = /usr/local/share/man:/usr/share/man:/bedrock/cross/man
SUFFIX:MANPATH = /bedrock/cross/man

PREFIX:INFOPATH = /bedrock/cross/pin/info:/bedrock/share/info
INFIX:INFOPATH = /usr/local/share/info:/usr/share/info
SUFFIX:INFOPATH = /bedrock/cross/info

PREFIX:XDG_DATA_DIRS = /bedrock/cross/pin
INFIX:XDG_DATA_DIRS = /usr/local/share:/usr/share
SUFFIX:XDG_DATA_DIRS = /bedrock/cross

PREFIX:TERMINFO_DIRS = /bedrock/cross/pin/terminfo
INFIX:TERMINFO_DIRS = /usr/local/share/terminfo:/usr/share/terminfo
SUFFIX:TERMINFO_DIRS = /bedrock/cross/terminfo

PREFIX:fpath = /bedrock/share/zsh/completion
SUFFIX:fpath = /bedrock/cross/zsh-completion

[restriction]
restrict = apt-key, debuild, dpkg-buildpackage, gdb, git, kiss, makepkg, rpmbuild
restrict = apt-key, debuild, dpkg-buildpackage, gdb, git, kiss, makepkg, pkgmk, prt-get, rpmbuild

[cross]
priority = void, arch

[cross-pass]
man = /bedrock/share/man, /usr/local/share/man, /usr/share/man
info = /bedrock/share/info, /usr/local/share/info, /usr/share/info
icons = /usr/local/share/icons, /usr/share/icons
pixmaps = /usr/local/share/pixmaps, /usr/share/pixmaps
man = $MANPATH
info = $INFOPATH
icons = $XDG_DATA_DIRS/icons
pixmaps = $XDG_DATA_DIRS/pixmaps
zoneinfo = /usr/share/zoneinfo
terminfo = /usr/local/share/terminfo, /usr/share/terminfo
terminfo = $TERMINFO_DIRS
src = /usr/local/src, /usr/src
bash-completion = /usr/share/bash-completion
zsh-completion = /usr/share/zsh/site-functions, /usr/share/zsh/vendor-completion, /usr/share/zsh/functions/Completion/Debian, /usr/share/zsh/functions/Completion/Mandriva, /usr/share/zsh/functions/Completion/openSUSE, /usr/share/zsh/functions/Completion/Redhat
zsh-completion = $fpath
firmware = /lib/firmware/updates/UTS_RELEASE, /lib/firmware/updates, /lib/firmware/UTS_RELEASE, /lib/firmware

[cross-bin]
bin = /usr/local/bin, /usr/local/sbin, /opt/bin, /opt/sbin, /usr/bin, /usr/sbin, /bin, /sbin, /usr/games, /usr/local/games, /snap/bin
bin = $PATH

#
# These programs are strongly related to the init system. If the stratum
# providing init provides these commands, that version should take priority.
# Typical Bedrock systems have /bedrock/pin/bin/ at the front of the $PATH.
#
pin/bin/systemctl = init:/usr/sbin/systemctl, init:/usr/bin/systemctl, init:/sbin/systemctl, init:/bin/systemctl
pin/bin/rc-service = init:/usr/sbin/rc-service, init:/usr/bin/rc-service, init:/sbin/rc-service, init:/bin/rc-service
pin/bin/rc-status = init:/usr/sbin/rc-status, init:/usr/bin/rc-status, init:/sbin/rc-status, init:/bin/rc-status
pin/bin/rc-update = init:/usr/sbin/rc-update, init:/usr/bin/rc-update, init:/sbin/rc-update, init:/bin/rc-update
pin/bin/rc-udevadm = init:/usr/sbin/rc-udevadm, init:/usr/bin/rc-udevadm, init:/sbin/rc-udevadm, init:/bin/rc-udevadm
pin/bin/sv = init:/usr/sbin/sv, init:/usr/bin/sv, init:/sbin/sv, init:/bin/sv
pin/bin/poweroff = init:/usr/sbin/poweroff, init:/sbin/poweroff, init:/usr/bin/poweroff, init:/bin/poweroff
pin/bin/reboot = init:/usr/sbin/reboot, init:/sbin/reboot, init:/usr/bin/reboot, init:/bin/reboot
pin/bin/shutdown = init:/usr/sbin/shutdown, init:/sbin/shutdown, init:/usr/bin/shutdown, init:/bin/shutdown
pin/bin/halt = init:/usr/sbin/halt, init:/sbin/halt, init:/usr/bin/halt, init:/bin/halt
pin/bin/systemctl = init:$PATH/systemctl
pin/bin/rc-service = init:$PATH/rc-service
pin/bin/rc-status = init:$PATH/rc-status
pin/bin/rc-update = init:$PATH/rc-update
pin/bin/rc-udevadm = init:$PATH/rc-udevadm
pin/bin/sv = init:$PATH/sv
pin/bin/poweroff = init:$PATH/poweroff
pin/bin/reboot = init:$PATH/reboot
pin/bin/shutdown = init:$PATH/shutdown
pin/bin/halt = init:$PATH/halt

# [restriction]/restrict items are only restricted if run through strat or
# cross. List any such items here to ensure they are run through cross to be
@@ -220,18 +238,20 @@ pin/bin/halt = init:/usr/sbin/halt, init:/sbin/halt, init:
# boundaries, just in case there is some dependency on its specific quirks.
# Ensure all items here use the local alias. If the item is not available
# locally, the call will fall through to un-pinned `bin` above.
pin/bin/apt-key = local:/usr/local/bin/apt-key, local:/usr/bin/apt-key
pin/bin/debuild = local:/usr/local/bin/debuild, local:/usr/bin/debuild
pin/bin/dpkg-buildpackage = local:/usr/local/bin/dpkg-buildpackage, local:/usr/bin/dpkg-buildpackage
pin/bin/gdb = local:/usr/local/bin/gdb, local:/usr/bin/gdb
pin/bin/git = local:/usr/local/bin/git, local:/usr/bin/git
pin/bin/kiss = local:/usr/local/bin/kiss, local:/usr/bin/kiss
pin/bin/makepkg = local:/usr/local/bin/makepkg, local:/usr/bin/makepkg
pin/bin/rpmbuild = local:/usr/local/bin/rpmbuild, local:/usr/bin/rpmbuild
pin/bin/apt-key = local:$PATH/apt-key
pin/bin/debuild = local:$PATH/debuild
pin/bin/dpkg-buildpackage = local:$PATH/dpkg-buildpackage
pin/bin/gdb = local:$PATH/gdb
pin/bin/git = local:$PATH/git
pin/bin/kiss = local:$PATH/kiss
pin/bin/makepkg = local:$PATH/makepkg
pin/bin/pkgmk = local:$PATH/pkgmk
pin/bin/prt-get = local:$PATH/prt-get
pin/bin/rpmbuild = local:$PATH/rpmbuild

[cross-ini]
applications = /usr/local/share/applications, /usr/share/applications, /var/lib/flatpak/exports/share/applications
xsessions = init:/usr/local/share/xsessions, init:/usr/share/xsessions, /usr/local/share/xsessions, /usr/share/xsessions
applications = $XDG_DATA_DIRS/applications
xsessions = init:$XDG_DATA_DIRS/xsessions, $XDG_DATA_DIRS/xsessions

dbus-system = /usr/share/dbus-1/system-services
dbus-session = /usr/share/dbus-1/services

+ 0
- 5
bin/wlp View File

@@ -1,5 +0,0 @@
#!/bin/sh
wall_path=$HOME/.wallpaper
cmd='setroot -z'
[ -n "$1" ] && printf %s "$1" >"$wall_path"
$cmd "$(cat "$wall_path")"

+ 3
- 1
bspwm View File

@@ -1,5 +1,6 @@
#!/bin/sh
bspc monitor -d 0 1 2 3 4 5 6 7 8 9
bspc monitor DisplayPort-3 -d 0 1 2 3 4 5 6 7 8 9
bspc monitor HDMI-A-3 -d 10 11 12 13 14 15 16 17 18 19

bspc config border_width 1
bspc config window_gap 3
@@ -8,6 +9,7 @@ bspc config removal_adjustment false
bspc config borderless_monocle true
bspc config gapless_monocle true
bspc config focus_follows_pointer true
bspc config pointer_follows_monitor true
bspc config click_to_focus button1

bspc rule -a Firefox desktop=^2

+ 16
- 16
elvish/lib/completers.elv View File

@@ -2,8 +2,7 @@ use re
use str
use util

use github.com/xiaq/edit.elv/compl/git
git:apply
use github.com/zzamboni/elvish-completions/git

fn overlap-at [a b]{
for i [(range 1 (- (count $b) 1))] {
@@ -17,7 +16,7 @@ fn prefix-completer [p a]{
if (eq (count $cmd) 2) {
$a $@cmd
} elif (has-key $edit:completion:arg-completer $cmd[1]) {
$edit:completion:arg-completer[$cmd[1]] (all $cmd[1:])
$edit:completion:arg-completer[$cmd[1]] (all $cmd[1..])
} else {
edit:complete-filename $cmd[-1]
}
@@ -58,7 +57,7 @@ edit:completion:arg-completer[waifu2x-converter-cpp] = [@cmd]{
} elif (eq $cmd[-2] --noise-level) {
put 0 1 2 3
} else {
put --scale-ratio --noise-level --mode --jobs --png-compression \
put --scale-ratio --noise-level --mode --jobs --png-compression ^
--image-quality --silent -i -o
}
}
@@ -68,7 +67,7 @@ kitty-kittens = $nil

edit:completion:arg-completer[kitty] = [@cmd]{
if (not $kitty-cmds) {
@kitty-cmds = (kitty @ --help | peach [x]{ if (re:match '^ \w' $x) { put $x[2:] } })
@kitty-cmds = (kitty @ --help | peach [x]{ if (re:match '^ \w' $x) { put $x[2..] } })
@kitty-kittens = (pwd=/usr/lib/kitty/kittens fd main.py | peach [x]{ path-dir $x })
}
if (has-value [kitten '+kitten'] $cmd[-2]) {
@@ -82,7 +81,7 @@ edit:completion:arg-completer[kitty] = [@cmd]{

edit:completion:arg-completer[sv] = [@cmd]{
if (eq (count $cmd) 2) {
put status up down once pause cont hup alarm interrupt quit kill term 1 2 \
put status up down once pause cont hup alarm interrupt quit kill term 1 2 ^
exit start try-restart check {force-,}{stop,reload,restart,shutdown}
} else {
pwd=/var/service put *
@@ -96,13 +95,13 @@ edit:completion:arg-completer[man] = [@cmd]{
}

edit:completion:arg-completer[kill] = [@cmd]{
ps -u (whoami) --no-headers -o pid,command |\
ps -u (whoami) --no-headers -o pid,command |^
eawk [_ p @c]{ edit:complex-candidate &display=(print ' '$@c) $p }
}

edit:completion:arg-completer[nimble] = [@cmd]{
if (eq (count $cmd) 2) {
put {un,}install develop check init publish build c cc js test doc{,2} \
put {un,}install develop check init publish build c cc js test doc{,2} ^
refresh search list tasks path dump
if ?(isnimbleproject) {
nimble tasks 2>&- | eawk [_ a @_]{ put $a }
@@ -116,11 +115,11 @@ edit:completion:arg-completer[nimble] = [@cmd]{
} else {
pkgs = [&]
nimble list -i | eawk [_ n @v]{
@ver = $@v[:-1]
ver[0] = $ver[0][1:]
@ver = $@v[..-1]
ver[0] = $ver[0][1..]
pkgs[$n] = $ver
}
pkg = $cmd[-1][:$idx]
pkg = $cmd[-1][..$idx]
if (has-key $pkgs $pkg) {
for v $pkgs[$pkg] { put $pkg@$v }
}
@@ -128,8 +127,8 @@ edit:completion:arg-completer[nimble] = [@cmd]{
}
}

pijul-cmds = [add apply branches checkout clone credit delete-branch diff dist\
generate-completions help init key log ls mv patch pull push\
pijul-cmds = [add apply branches checkout clone credit delete-branch diff dist^
generate-completions help init key log ls mv patch pull push^
record remove revert rollback show-dependencies sign status tag unrecord]

edit:completion:arg-completer[pijul] = [@cmd]{
@@ -187,12 +186,13 @@ edit:completion:arg-completer[mpv] = [@cmd]{
}

edit:completion:arg-completer[update] = [@cmd]{
update | each [x]{ if (has-prefix $x " ") { put $x[4:] } }
update | each [x]{ if (has-prefix $x " ") { put $x[4..] } }
}

edit:completion:arg-completer[xr] = [@cmd]{
xpkg -m
xpkg -O | peach [x]{ edit:complex-candidate &style='red;inverse' $x }
xpkg -O | peach [x]{ edit:complex-candidate $x }
# xpkg -O | peach [x]{ edit:complex-candidate &style='red;inverse' $x }
}

edit:completion:arg-completer[xi] = [@cmd]{
@@ -205,7 +205,7 @@ xbps-src-arch = $nil
edit:completion:arg-completer[xbps-src] = [@cmd]{
if (not $xbps-src-cmds) {
@xbps-src-cmds = (xbps-src -h | take 129 | drop 4 | each [x]{ put (re:find &max=1 '^\w+(\-\w+)*' $x)[text] })
@xbps-src-arch = (xbps-src -h | take 162 | drop 136)[1:]
@xbps-src-arch = (xbps-src -h | take 162 | drop 136)[1..]
}
if (eq $cmd[-2] '-a') {
all $xbps-src-arch

+ 1
- 1
elvish/lib/git.elv View File

@@ -20,7 +20,7 @@ fn refresh-status {
branch = [(str:split ' ' $data[1])][2]

if (and (> (count $data) 3) (has-prefix $data[3] '# branch.ab')) {
ahead behind = (all [(str:split ' ' $data[3])][2:])[1:]
ahead behind = (all [(str:split ' ' $data[3])][2..])[1..]
}

for i $data {

+ 1
- 1
kak/kakrc View File

@@ -173,7 +173,7 @@ hook global BufCreate .*srcpkgs/.+/template$ %{

hook global BufCreate .*/\.?((sx|xinit)(rc)?|profile) %{ set buffer filetype sh }
hook global BufCreate .*\.ino %{ set buffer filetype cpp }
hook global BufCreate .*\.cs %{ addhl buffer/java }
hook global BufCreate .*\.cs %{ addhl buffer/java ref java }
hook global BufCreate .*\.rasi %{ set buffer filetype css }
hook global BufCreate .*\.sccprofile %{ set buffer filetype json }


+ 0
- 1
nim.nim View File

@@ -69,5 +69,4 @@ else:
switch "nimcache", "/tmp/nim/" & projectName()

switch "styleCheck", "hint"
switch "hint", "Processing:off"
switch "hint", "Dependency:on"

+ 33
- 0
ntr/contexts/causal_scheme View File

@@ -0,0 +1,33 @@
meta
name*: scheme
author: causal agent
source: https://causal.agency/bin/scheme.html

color
bg: #14130E
fg: #B7A980
cursor: #72694F

color0: #161510
color8: #4C4635

color1: #A32810
color9: #CC3214

color2: #727A18
color10: #8E991E

color3: #A37720
color11: #CC9528

color4: #3D6266
color12: #4C7B7F

color5: #7A4955
color13: #995B6B

color6: #557A55
color14: #6B996B

color7: #8E8463
color15: #CCBC8E

+ 2
- 1
ntr/finishers/polybar View File

@@ -1,5 +1,6 @@
#!/bin/sh
for i in $(pgrep polybar)
do
[ "$(readlink -e "/proc/$i/exe")" = "/usr/bin/polybar" ] && kill -USR1 "$i" && exit 0
[ "$(readlink -e "/proc/$i/exe")" = "/usr/bin/polybar" ] && kill -USR1 "$i"
done
exit 0

+ 34
- 2
ntr/templates/polybar View File

@@ -13,6 +13,7 @@ green = <{color2}>
fg-bright = <{darken:<{color.fg}>:0.3}>

[bar/main]
monitor = DisplayPort-3
width = 1914
height = 24
offset-x = 3
@@ -20,7 +21,7 @@ offset-y = 3
padding-right = 1
module-margin = 1
modules-left = bspwm xwindow
modules-center = mpd
modules-center =
modules-right = net memory cpu temperature date
font-0 = Sarasa UI J:size=10;3
font-1 = 3270Medium Nerd Font Mono:size=15;4
@@ -35,6 +36,27 @@ tray-position = right
tray-detached = false
tray-padding = 1

[bar/secondary]
monitor = HDMI-A-3
width = 1914
height = 24
offset-x = 3
offset-y = 3
padding-right = 1
module-margin = 1
modules-left = bspwm
modules-center = mpd
modules-right = date
font-0 = Sarasa UI J:size=10;3
font-1 = 3270Medium Nerd Font Mono:size=15;4
background = ${color.background}
foreground = ${color.foreground}
border-size = 1
border-color = ${color.fg-bright}
wm-restack = bspwm
scroll-up = bspwm-desknext
scroll-down = bspwm-deskprev

[module/bspwm]
type = internal/bspwm
ws-icon-0 = 0;一
@@ -47,6 +69,16 @@ ws-icon-6 = 6;七
ws-icon-7 = 7;八
ws-icon-8 = 8;九
ws-icon-9 = 9;十
ws-icon-10 = 10;一
ws-icon-11 = 11;二
ws-icon-12 = 12;三
ws-icon-13 = 13;四
ws-icon-14 = 14;五
ws-icon-15 = 15;六
ws-icon-16 = 16;七
ws-icon-17 = 17;八
ws-icon-18 = 18;九
ws-icon-19 = 19;十
format = <label-state>
label-focused = %icon%
label-focused-background = #444
@@ -63,7 +95,7 @@ label-empty =

[module/xwindow]
type = internal/xwindow
label = %title:0:80:…%
label = %title:0:150:…%

[module/mpd]
type = internal/mpd

+ 3
- 6
splug.toml View File

@@ -1,8 +1,5 @@
# Kakoune plugins

["https://github.com/alexherbo2/auto-pairs.kak"]
files = ["rc/auto-pairs.kak"]

["https://github.com/alexherbo2/search-highlighter.kak"]
files = ["rc/search-highlighter.kak"]

@@ -12,9 +9,6 @@ files = ["rc/replace-mode.kak"]
["https://github.com/alexherbo2/word-select.kak"]
files = ["rc/word-select.kak"]

["https://github.com/alexherbo2/prelude.kak"]
files = ["rc/prelude.kak", "rc/prelude.sh" ]

["https://github.com/Delapouite/kakoune-auto-percent"]
files = ["auto-percent.kak"]

@@ -54,6 +48,9 @@ files = ["readline.kak"]
["https://gitlab.com/Screwtapello/kakoune-state-save"]
files = ["state-save.kak"]

["https://github.com/kakoune-editor/kakoune-extra-filetypes"]
files = ["rc/glsl.kak"]

# mpv plugins

["https://github.com/ekisu/mpv-webm"]

+ 1
- 0
sx.sh View File

@@ -10,6 +10,7 @@ disown unclutter &
disown /usr/libexec/xfce-polkit &
disown syncthing -no-browser &
disown polybar -q main &
disown polybar -q secondary &
disown devmon -s \
--exec-on-drive 'notify-send -a udevil -i media-removable "$l" "$f mounted at $d"' \
--exec-on-unmount 'notify-send -a udevil -i media-removable "$l" "$f unmounted from $d"' \

+ 13
- 6
sxhkd View File

@@ -62,9 +62,9 @@ super + m
super + y
bspc query -N -n focused.automatic && bspc node -n last.!automatic || bspc node last.leaf -n focused

# swap the current node and the biggest node
# swap the current node and the biggest local window
super + g
bspc node -s biggest.local
bspc node -s biggest.local.window

# toggle pointer focus
super + alt + p
@@ -104,9 +104,9 @@ super + {_,shift + }{h,j,k,l}
super + {p,b,comma,period}
bspc node -f @{parent,brother,first,second}

# focus the next/previous node in the current desktop
# focus the next/previous window in the current desktop
super + {_,shift + }c
bspc node -f {next,prev}.local
bspc node -f {next,prev}.local.!local.window

# focus the next/previous desktop
super + bracket{left,right}
@@ -123,8 +123,15 @@ super + {o,i}
bspc wm -h on

# focus/send to the given desktop
super + {_,shift + }{1-9,0}
bspc {desktop -f,node -d} '^{1-9,10}'
{_,shift + }{super,mode_switch} + {1-9,0}
bspc {desktop -f,node -d} {DisplayPort,HDMI-A}-3:'^{1-9,10}'

# focus/send to another monitor
super + minus
bspc monitor -f last

super + underscore
bspc node -m last --follow

#
# preselect

Loading…
Cancel
Save