Linux輕量級平鋪窗口管理器Bspwm使用經驗

Linux經典桌面

Linux下有許多優秀的桌面環境,好比輕量的XFCE,美觀的KDE和GNOME等。而且這些桌面一些功能菜單也能夠作到相似Windows一些佈局。node

平鋪桌面

可是,我從Windows轉頭Linux後,就喜歡用Linux獨有的操做習慣,而不是在Linux上模仿美化成Windows的樣子,因此我從最初的XFCE桌面切換到了平鋪桌面i3wm,使用了一段時間後,發現真心能夠讓鍵盤最大化的使用起來。做爲一個習慣用鍵盤多過鼠標的人而言,這無疑讓我堅決 了平鋪桌面及鍵盤的操做方式。i3wm的快鍵鍵能夠自定義成相似Vim的操做方式,大大節省了肌肉記憶,能夠讓喜歡vim操做的人立刻能夠上手這個平鋪桌面。git

入坑Bspwm

我是一個喜歡折騰的人,在入坑平鋪窗口管理器後,我就去搜索引擎上查找不一樣的平鋪管理器之間的對比了。在期間我就發現了Bspwm,網上評價它是一個入門門檻稍高的管理器。我一想不折騰不死心,立刻入坑。github

下載地址

找到Bspwm的開源地址,https://github.com/baskerville/bspwmvim

Bspwm介紹

bspwm是一個平鋪窗口管理器,它將窗口表示爲完整二叉樹的葉子。
它僅響應X事件以及它在專用套接字上接收的消息。
bspc是一個在bspwm的socket 上寫消息的程序。
bspwm不處理任何鍵盤或指針輸入:須要第三方程序(例如sxhkd)才能將鍵盤和指針事件轉換爲bspc調用。

概述的體系結構以下:less

PROCESS          SOCKET
sxhkd  -------->  bspc  <------>  bspwm

經常使用功能

這些配置最初都是參考自官方配置。
Bspwm的快鍵鍵須要依賴sxhkd,因此默認配置文件地址我放在.config/sxhkd/sxhkdrc下,socket

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/bspwmrcide

#! /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配置佈局

相關文章
相關標籤/搜索