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呼叫。
概述的體系結構如下:
PROCESSSOCKET 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_width2 bspc config window_gap12 bspc config split_ratio0.52 bspc config borderless_monocletrue bspc config gapless_monocletrue 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