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 10 months 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