乐趣区

Linux轻量级平铺窗口管理器Bspwm使用经验

Linux 经典桌面
Linux 下有许多优秀的桌面环境,比如轻量的 XFCE,美观的 KDE 和 GNOME 等。并且这些桌面一些功能菜单也可以做到类似 Windows 一些布局。
平铺桌面
但是,我从 Windows 转头 Linux 后,就喜欢用 Linux 独有的操作习惯,而不是在 Linux 上模仿美化成 Windows 的样子,所以我从最初的 XFCE 桌面切换到了平铺桌面 i3wm,使用了一段时间后,发现真心可以让键盘最大化的使用起来。作为一个习惯用键盘多过鼠标的人而言,这无疑让我坚定 了平铺桌面及键盘的操作方式。i3wm 的快键键可以自定义成类似 Vim 的操作方式,大大节省了肌肉记忆,可以让喜欢 vim 操作的人马上可以上手这个平铺桌面。
入坑 Bspwm
我是一个喜欢折腾的人,在入坑平铺窗口管理器后,我就去搜索引擎上查找不同的平铺管理器之间的对比了。在期间我就发现了 Bspwm,网上评价它是一个入门门槛稍高的管理器。我一想不折腾不死心,马上入坑。
下载地址
找到 Bspwm 的开源地址,https://github.com/baskerville/bspwm。
Bspwm 介绍
bspwm 是一个平铺窗口管理器,它将窗口表示为完整二叉树的叶子。它仅响应 X 事件以及它在专用套接字上接收的消息。bspc 是一个在 bspwm 的 socket 上写消息的程序。bspwm 不处理任何键盘或指针输入:需要第三方程序(例如 sxhkd)才能将键盘和指针事件转换为 bspc 调用。
概述的体系结构如下:

PROCESS SOCKET
sxhkd ——–> bspc <——> bspwm
常用功能
这些配置最初都是参考自官方配置。Bspwm 的快键键需要依赖 sxhkd,所以默认配置文件地址我放在.config/sxhkd/sxhkdrc 下,
sxhkdrc 配置项

命令
功能
描述

super + Return
urxvt
打开 urxvt

super + @space
dmenu_run
打开 dmenu

super + d
rofi -show run
运行 rofi

super + ctrl + alt + b
blurlock
模糊锁屏

super + ctrl +alt + p
$HOME/.config/bspwm/scripts/touchpad.sh
运行脚本(禁用触摸板)

super + Escape
pkill -USR1 -x sxhkd
杀死 sxhkd

super + alt + Escape
bspc quit
退出 bspc

super + {_,shift +}w
bspc node -{c,k}
结束 / 杀死窗口

super + m
bspc desktop -l next
在平铺和单窗口间切换

super + y
bspc node newest.marked.local -n newest.!automatic.local
将标记的节点窗口移动到预选择的窗口上

super + g
bspc node -s biggest.local
切换到当前视图节点最大的窗口

super + {t,shift + t,s,f}
bspc node -t {tiled,pseudo_tiled,floating,fullscreen}
切换平铺 / 居中平铺 / 悬浮 / 窗口最大化状态

super + ctrl + {m,x,y,z}
bspc node -g {marked,locked,sticky,private}
节点标记 / 锁定 / 便签 / 私有

super + {_,shift +}{h,j,k,l}
bspc node -{f,s} {west,south,north,east}
移动节点焦点

super + {p,b,comma,period}
bspc node -f @{parent,brother,first,second}
选择父类节点,兄弟节点

super + {_,shift +}c
bspc node -f {next,prev}.local
前后节点切换

super + bracket{left,right}
bspc desktop -f {prev,next}.local
前后桌面切换

super + {grave,Tab}
bspc {node,desktop} -f last
切换上次切点 / 窗口

super + {o,i}
bspc wm -h off; bspc node {older,newer} -f; bspc wm -h on
切换最老 / 最新的节点

super + {_,shift +}{1-9,0}
bspc {desktop -f,node -d} ‘^{1-9,10}’
切换窗口

super + ctrl + {h,j,k,l}
bspc node -p {west,south,north,east}
预选则节点区域

super + ctrl + {1-9}
bspc node -o 0.{1-9}
根据数字比例预选则节点区域

super + ctrl + space
bspc node -p cancel
取消预选则当前焦点节点区域

super + ctrl + shift + space
bspc query -N -d | xargs -I id -n 1 bspc node id -p cancel
取消预选则窗口的节点区域

super + alt + {h,j,k,l}
bspc node -z {left -20 0,bottom 0 20,top 0 -20,right 20 0}
扩大范围

ksuper + alt + shift + {h,j,k,l}
bspc node -z {right -20 0,top 0 20,bottom 0 -20,left 20 0}
缩小节点大小

super + ctrl + alt +{h,j,k,l}
bspc node -v {-20 0,0 20,0 -20,20 0}
移动悬浮窗口

bspwmrc 配置项
配置文件目录地址为.config/bspwm/bspwmrc
#! /bin/sh
#LAUNCHERS
$HOME/.config/bspwm/autostart.sh

#bspc monitor -d I II III IV V VI VII VIII IX X
bspc monitor eDP-1 -d I II III IV V
bspc monitor HDMI-2 -d VI VII VIII IX X
#bspc monitor eDP-1 -s HDMI-2
#for monitor in $(bspc query -M); do
# bspc monitor $monitor -d I II III IV V VI VII VIII IX X
#done

bspc config border_width 2
bspc config window_gap 12

bspc config split_ratio 0.52
bspc config borderless_monocle true
bspc config gapless_monocle true

bspc rule -a Gimp desktop=’^8′ state=floating follow=on
bspc rule -a Chromium desktop=’^2′
#bspc rule -a jetbrains-idea desktop=’^3′
bspc rule -a jetbrains-datagrip desktop=’^3′
#bspc rule -a “VirtualBox Manager” desktop=’^10′
bspc rule -a rdesktop desktop=’^3′
bspc rule -a mplayer2 state=floating
bspc rule -a Kupfer.py focus=on
bspc rule -a Screenkey manage=off
我的配置文件
我的 Bspwm 配置

退出移动版