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

你可能感兴趣的:(archlinux,桌面)