bspwm安装和设置
sudo pacman -S bspwm sxhkd
安装完成后需要在$HOME/.xinitrc
中添加exec bspwm
,然后通过startx
即可启动。如果需要登录自动启动bspwm
,可以安装启动器(如lightdm
)。
本人比较喜欢使用startx
这种简单的方式。如果不想装启动器,又还是想用户登录后自动启动bspwm
的话,也可以在$HOME/.zprofile
中添加如下代码:
if systemctl -q is-active graphical.target && [[ ! $DISPLAY && $XDG_VTNR -eq 1 ]]; then
exec startx
fi
HiDPI注意事项
个人显示器是4k屏,所以需要进行额外的设置,在$HOME/.Xresources
中贴下如下代码:
Xft.autohint: 0
Xft.lcdfilter: lcddefault
# 看个人喜好,如果是1080(含)以下屏幕,
# 建议改为hintslight或者hintnone,
# 这样不会出现歪歪扭扭的字,但是字体
# 会显得稍有些模糊。
Xft.hintstyle: hintfull
# 开启字体自带的hinting
Xft.hinting: 1
# 开启反锯齿
Xft.antialias: 1
Xft.rgba: rgb
# 1080以下不用设置,默认是96,推荐设置:
# 150% - 144
# 175% - 168
# 200% - 192
Xft.dpi: 168
经过上述的设置后,需要将.Xresources
文件通过以下命令merge到xinitrc
中才能生效:
xrdb -merge ~/.Xresources
查看该命令是否成功,可以查看~/.xinitrc
文件中有没有下面所列,没有话的可以手动加入
[[ -f ~/.Xresources ]] && xrdb -merge -I$HOME ~/.Xresources
对于QT程序,在~/.xinitrc
中加入:
export QT_AUTO_SCREEN_SCALE_FACTOR=1
经过以上的设置,大部分程序应该都能够在4k屏下良好地显示了,可能还会有些程序会遇到一些问题,可以查看Archlinux Wiki - HiDPI条目解决。
bspwm的基本设置
bspwm
需要配合sxhkd
一起使用。bspwmrc
是用来管理窗口设置,sxhkdrc是用来设置快捷键。这两个配置文件分别位于
$HOME/.config/bspwm/bspwmrc
$HOME/.config/sxhkd/sxhkdrc
这两个配置文件非常容易上手,下面就贴一些我常用的设置
bspwmrc设置
# 启动Compositor,主要用于一些特殊效果,如透明背景,阴影等
# 这里还可以增加一些自启动的程序,比如我还增加了fcitx
picom -b &
fcitx &
...
# 给当前活动窗口加一个1px的红色框
bspc config border_width 1
bspc config focused_border_color "#ff0000"
# 设置窗口之间的空隙为10px
bspc config window_gap 10
# 下面为一些程序的窗口的特殊设置
# 将vlc和图片浏览设置为浮动窗口
bspc rule -a vlc state=floating
bspc rule -a Sxiv state=floating
# 虚拟机也需要使用浮动窗口
bspc rule -a "VirtualBox Manager" state=floating manage=off
bspc rule -a "VirtualBox Machine" state=floating manage=off
...
对于需要进行模式设置的窗口,但是又不知道应该用什么名称的,可以使用命令xprop | grep WM_CLASS
后,用鼠标点击窗口,
然后就可以得到WM_CLASS
的名称,接着就可以写到bspc rule -a
后了。需要注意的是如果class的名称中有空格的话,需要使用引号将其括起来,
就像上面配置中VirtualBox Manager
一样。
sxhkd设置
sxhkdrc文件也非常容易配置,整体规则就是
HotKey
Command
这部分非常简单,根据自己喜好更改即可。由于我是从i3
迁移过来的,所以一些键位习惯和i3
基本相同的。
特别注意,窗口为Floating模式时,按住Super键不松开,可以用鼠标左键移动窗口位置,使用鼠标右键调整窗口大小
Terminal模拟器 alacritty
sudo pacman -S alacritty
alacritty
号称是用上了GPU加速的最快Terminal Emulator。安装后可以在配置文件$HOME/.config/alacritty/alacritty.yml
中进行调整。
#设置字体
font:
normal:
family: Source Code Pro
style: Regular
bold:
family: Source Code Pro
style: Bold
italic:
family: Source Code Pro
style: Italic
#主题
#...
#设置背景透明度
background_opacity: 0.8
主题可从Alacritty Wiki中找到,粘贴过来即可。
文件管理器 ranger
sudo pacman -S ranger
ranger
是一个用于文件浏览与管理的CLI程序,非常适合在Tiling Window
Manager下使用。ranger是用python编写的,如果介意,也可以使用golang写的lfw代替。
ranger
基本操作和vim相同,j, k
用来上下选择文件,h, l
用来进上上级目录和子目录,如果是文件l, ENTER
会打开文件或者执行文件。打开文件使用
的是rfile
,而不使用系统的MIME信息。
ranger的配置文件位于$HOME/.config/ranger
,具体配置方法可以查看manpage,
就我来说,默认配置就已经完全满足要求了。
图片浏览与壁纸设置
图像浏览软件使用feh
和sxiv
,
其中feh
用于设置壁纸,sxiv
用于浏览图片和操作图片。要提一下的是,feh
也可以用于图片的浏览,但是貌似不支持快捷键对图片进行文件操作,所以还是额外安装了sxiv
用于图片的浏览和简单操作。
sudo pacman -S feh sxiv
壁纸配置 feh
feh
主要用于壁纸的设置。使用命令:
feh --bg-fill IMAGE_FILEPATH
feh --bg-tile IMAGE_FILEPATH
feh --bg-scale IMAGE_FILEPATH
feh --bg-center IMAGE_FILEPATH
feh --bg-max IMAGE_FILEPATH
同时feh
可以随机选择某个目录中的图片做为壁纸。使用--recursive
还能同时使用子目录中的图片。
feh --bg-fill --randomize --recursive IMAGES_DIR_PATH
结合sxhkd
, 可以将更换壁纸绑到到快揵键上,这样就能方便的随机切换壁纸。我一般会绑定到super+b
,同时我还会绑定一个快捷键super+shift+b
,
用于随机选择另一个目录中图片做为壁纸,那是一些NSFW的图片,比较适合在家里使用。在sxhkdrc
中绑定
super + {_, shift +}b
feh --recursive --randomize --bg-fill ~/Pictures/{backgrounds,nsfw}
同时在bspwmrc
中添加feh
,这样在启动时就可以应用壁纸。
如果需要定时切换壁纸,可以结合使用cron
设置定时任务
图片浏览 sxiv
sxiv
基本操作很简单,q
退出,
f
用于全屏和窗口模式切换;在打开含有图片的目录时,space
是下一图片,backspace
是上一图片,更多按键请查看manpage。此处,它还支持绑定一组额外的快捷键,首先使用Ctrl+X
开启,随后再使用定义的快捷键用于操作图片文件。根据Archlinux
Wiki中的例子,可以在~/.config/sxiv/exec/key-handler
中定义一些快捷键,别忘记了该文件要加可执行的权限。
脚本如下所示:
#!/bin/sh
while read file
do
case "$1" in
"C-d")
gio trash "$file" ;;
"C-r")
convert -rotate 90 "$file" "$file" ;;
"C-c")
echo -n "$file" | xclip -selection clipboard ;;
"C-b")
feh --bg-fill "$file" ;;
esac
done
其中,Ctrl+X Ctrl+D
用于删除文件,
Ctrl+X Ctrl+C
将文件保存在X
的剪贴版中,Ctrl+X Ctrl+B
用于将当前图片设置为壁纸。Ctrl+X Ctrl+R
则用于旋转图片。
同时安装sxiv-rifle
包,这样在ranger
中打开图片时,就可以同时浏览该目录下的所有文件了。
yay -S sxiv-rifle
特别的,可以将sxiv
设置为Floating模式的窗口,这样可能会比较方便一些。在bspwmrc
中设置sxiv
窗口为Floating窗口模式
bspc rule -a Sxiv state=floating