Arch Linux 安装 bspwm

装了 bspwm,方便简单,不需要太多的修改就能使用。

yaourt bspwm-git sxhkd-git xdo-git xtitle-git clock-git feh rofi-git termite compton-git

sxhkd 定义快捷键,xdo、xtitle、clock 组成简单的 panel,feh 更换桌面背景、rofi 快捷启动器、compton 开启窗口特效。

bspwm 旧版和 git 版的某些配置语法不同,比如设置窗口的状态,所以要以 git 上的 Wiki 为准。

复制配置:

cp /usr/share/doc/bspwm/examples/bspwmrc ~/.config/bspwm/
cp /usr/share/doc/bspwm/examples/sxhkdrc ~/.config/sxhkd/
cp -r /usr/share/doc/bspwm/examples/panel ~/.config/bspwm/

.xinitrc 写入 exec bspwm即可。一般的 Display Manager 会查 /usr/share/xsessions/bspwm.desktop,自动列出 bspwm session。

环境变量、预启动程序都可写入 ~/.config/bspwm/bspwmrc ,启动时自动运行。

Java 程序白屏:

export _JAVA_AWT_WM_NONREPARENTING=1

确保 QT4 和 QT5 都用 fcitx:

export QT_IM_MODULE=fcitx

设置脱离了 plasma 的 QT5 应用主题,装 qt5ct,QT4 用 qtconfig-qt4

export QT_QPA_PLATFORMTHEME="qt5ct"

简单的 panel,须设环境变量和 PATH:

export PATH=$HOME/.config/bspwm/panel:$PATH
export PANEL_FIFO=/tmp/panel_fifo
export PANEL_FONT=Monaco
panel &

设置背景:

feh --bg-scale $HOME/wallper.jpg

添加混合特效:

compton -b

解决“X”指针,还要设置 ~/.icons/default/index.theme 确保不同框架的程序表现一致:

xsetroot -cursor_name left_ptr 

设置所有窗口为浮动:

bspc rule -a "*" state=floating

bspc rule 为指定的窗口添加规则,用 xprop | grep WM_CLASS 查找窗口类名,比如 Firefox:

WM_CLASS(STRING) = "Navigator", "Firefox"

类名就是后面的“Firefox”,大小写敏感,设定规则:

bspc rule -a Firefox desktop='^2' follow=on

始终在桌面2启动 Firefox,并切换到焦点。

要指定 desktop 下的所有 node 为浮动,添加脚本:

#!/bin/bash

# change the desktop number here
FLOATING_DESKTOP_ID=$(bspc query -D -d '^2')

bspc subscribe node_manage | while read -a msg ; do
   desk_id=${msg[2]}
   wid=${msg[3]}
   [ "$FLOATING_DESKTOP_ID" = "$desk_id" ] && bspc node "$wid" -t floating
   echo $FLOATING_DESKTOP_ID $desk_id $wid  >> /tmp/floatdesk.pid
done

然后在 .xinitrc 或 bspwmrc 后台运行此脚本。已知的是 Emacs 有一定概率不浮动,添加个规则即可:

bspc rule -a Emacs state=tiled