Arch桌面安装(endeavouros)

arch

直接装 endeavouros , 省事, 官方提供了中国的镜像下载, 修改软件源后选择的在线安装 bspwm社区版

参考教程:

https://www.bilibili.com/read/cv17475290/

https://wiki.archlinux.org/title/Installation_guide_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)

dotfiles

壁纸

登录器壁纸: /etc/lightdm/slick-greeter.conf

桌面壁纸: nitrogen默认配置路径~/.config/nitrogen/

yay

1
sudo pacman -S yay

vscode zsh终端里的特殊图标变方块

更换支持图标的字体

1
yay -S nerd-fonts-sarasa-term # 带图标补丁的等距更纱黑体

vim

设置默认编辑器

1
2
3
4
5
6
# 查看软件安装路径
whereis vim
# 查看默认编辑器
echo $EDITOR
# 设置为vim
export EDITOR=/usr/bin/vim

vim设置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# 在vim编辑器中, 输入:set nu, 取消:set nonu

# 默认显示
vim ~/.vimrc
===
"显示行号
set nu
"启动时隐去援助提示
set shortmess=atI
"语法高亮
syntax on
"搜索高亮
set hlsearch
"显示匹配
set showmatch
"搜索忽略大小写
set ic
"显示文件名和路径
set laststatus=2
"文件自动检测外部更改
set autoread
"自动对齐
set autoindent
"智能缩进
set smartindent
"浅色显示当前行
autocmd InsertLeave * se nocul
"用浅色高亮当前行
autocmd InsertEnter * se cul
"显示输入的命令
set showcmd
"错误时屏幕不要闪烁
set novisualbell
"显示标尺,就是在右下角显示光标位置
set ruler
"鼠标可用
"set mouse=a
"共享剪切板
set clipboard^=unnamed,unnamedplus
===

和系统剪切板互通

1
2
3
4
vim --version| grep "clipboard"
#  +clipboard,不支持则会是 -clipboard
# 安装gvim
sudo pacman -S gvim

强制保存只读文件

1
:w !sudo tee %

编辑模式下的光标样式

https://vim.fandom.com/wiki/Change_cursor_shape_in_different_modes

xfce4-terminal对应的设置:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
vim ~/.vimrc
####
if has("autocmd")
  au InsertEnter * silent execute "!sed -i.bak -e 's/TERMINAL_CURSOR_SHAPE_BLOCK/TERMINAL_CURSOR_SHAPE_IBEAM/' ~/.config/xfce4/terminal/terminalrc"                                                                                          
  au InsertLeave * silent execute "!sed -i.bak -e 's/TERMINAL_CURSOR_SHAPE_IBEAM/TERMINAL_CURSOR_SHAPE_BLOCK/' ~/.config/xfce4/terminal/terminalrc"                                                                                          
  au VimLeave * silent execute "!sed -i.bak -e 's/TERMINAL_CURSOR_SHAPE_UNDERLINE/TERMINAL_CURSOR_SHAPE_IBEAM/' ~/.config/xfce4/terminal/terminalrc"  
endif
####
# UNDERLINE是下划线
# IBEAM是竖线
# BLOCK是方块

启动vim,不加载.vimrc

vim -u NONE -N

vim自动切换输入法

https://wiki.archlinuxcn.org/wiki/Fcitx5

安装fcitx.vim插件

或者添加以下代码

1
2
3
4
5
6
7
8
vim ~/.vimrc
####
let fcitx5state=system("fcitx5-remote")
" 退出插入模式时禁用输入法,并保存状态
autocmd InsertLeave * :silent let fcitx5state=system("fcitx5-remote")[0] | silent !fcitx5-remote -c
" 2 表示之前状态打开了输入法,则进入插入模式时启动输入法
autocmd InsertEnter * :silent if fcitx5state == 2 | call system("fcitx5-remote -o") | endif
####

另一种只切换rime中英文的方法

1
2
3
4
5
6
if has("autocmd")
  "刚进入vim就切换成英文
  :silent call system("busctl call --user org.fcitx.Fcitx5 /rime org.fcitx.Fcitx.Rime1 SetAsciiMode b true")
  "退出插入模式切换成英文
  au InsertLeave * :silent call system("busctl call --user org.fcitx.Fcitx5 /rime org.fcitx.Fcitx.Rime1 SetAsciiMode b true")
endif

关闭鼠标移动光标模式

1
2
3
4
5
6
7
8
9
# 普通用户
vim ~/.vimrc
set mouse=""
# 管理员
vim
:echo $VIMRUNTIME
# 进入目录
# 修改default文件
# 把set mouse=a用"注释掉

shell

查看系统下的shell

1
2
3
4
cat /etc/shells
echo $SHELL
# 设置默认shell为zsh
chsh -s /bin/zsh

zsh插件

选择更加轻量的prezto框架

1
2
# 安装prezto框架
# 主题推荐: powerlevel10k

su root和su - root

su root 获取root的执行权限,没有改变用户环境

su - root 切换root用户,更改环境变量

pacman

添加软件源(arch系)

包括archlinux和 archlinuxcn源

ps: 2022/9/21 清华源失败, 中科源可用

官方文档

  1. 编辑 /etc/pacman.d/mirrorlist ,在文件的最顶端添加

    1
    
    Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch
    
  2. /etc/pacman.conf 文件末尾添加两行:

    1
    2
    
    [archlinuxcn]
    Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch
    

    然后请安装 archlinuxcn-keyring 包以导入 GPG key。

    1
    
    sudo pacman -S archlinuxcn-keyring
    
  3. `sudo pacman -Sy'

(可选)arhclinuxcn 添加多个源

1
sudo pacman -S archlinuxcn-mirrorlist-git
1
2
3
4
5
sudo vim /etc/pacman.conf
===========
[archlinuxcn]
Include = /etc/pacman.d/archlinuxcn-mirrorlist
===========
1
2
sudo vim /etc/pacman.d/archlinux-mirrorlist
#去掉使用的地址的注释即可

(可选)镜像源排序

先备份 /etc/pacman.d/mirrorlist

1
cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak

下面命令将过滤官方镜像列表中的前 5 个镜像,按速度排列并覆盖 /etc/pacman.d/mirrorlist

1
reflector -l 5 --sort rate --save /etc/pacman.d/mirrorlist

下面这个命令会从官方镜像列表中获取200个最近同步过的源,并对这200个源进行大文件下载来,根据在你电脑里的下载速度进行排序,写入mirrorlist(强烈推荐)

1
reflector --verbose -l 200 -p http --sort rate --save /etc/pacman.d/mirrorlist

换源后要清理缓存

1
2
3
4
# 清理所有缓存文件 
pacman -Scc 
# 强制更新源列表
pacman -Syy

(可选)pacman 包图形管理工具

pacman-manager

pacman 安装提示签名未知

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
vim /etc/pacman.conf

# 原来的配置
[archlinuxcn]
SigLevel = Optional TrustedOnly

# 新的配置
# SigLevel = Optional TrustedOnly
SigLevel = Never
# 害怕安全问题, 可以安装后再改回来

安装中文输入法

1
2
3
sudo pacman -S fcitx5 fcitx5-gtk fcitx5-qt fcitx5-rime  fcitxt5-configtool 
# 安装颜色主题
pacman -S fcitx5-material-color

fitix5 rime 配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# 到小鹤官网下载配置
# 小鹤部署目录
~/.local/share/fcitx5/rime
# 修改主题
vim ~/.config/fcitx5/conf/classicui.conf
####
# 垂直候选列表
Vertical Candidate List=False
# 按每个屏幕 DPI 显示
PerScreenDPI=True
# 使用鼠标滚轮翻页
WheelForPaging=True
# 字体
Font="Sans 14"
# 菜单字体
MenuFont="Sans 14"
# 托盘字体
TrayFont="Sans Bold 14"
# 托盘标签轮廓颜色
TrayOutlineColor=#000000
# 托盘标签文本颜色
TrayTextColor=#ffffff
# 优先使用文字图标
PreferTextIcon=False
# 在图标中显示布局名称
ShowLayoutNameInIcon=True
# 使用输入法的语言来显示文字
UseInputMethodLangaugeToDisplayText=True
# 主题
Theme=Material-Color-Blue
# 固定 Wayland 的字体 DPI
ForceWaylandDPI=0
####

环境变量

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
sudov vim /etc/environment
####
INPUT_METHOD=fcitx5
GTK_IM_MODULE=fcitx5
QT_IM_MODULE=fcitx5
XMODIFIERS=\@im=fcitx5
SDL_IM_MODULE=fcitx5
GLFW_IM_MODULE=ibus
####
# GLFW_IM_MODULE 是为了让 kitty 启用输入法支持。此环境变量的值只能为 ibus。

取消rime F4 快捷键

修改default.custom.yaml

1
2
3
patch:
  switcher/hotkeys:
    - noop

开机启动

1
cp /usr/share/applications/org.fcitx.Fcitx5.desktop ~/.config/autostart/

桌面配置

配置文件: https://github.com/jqtmviyu/dotfiles

bspwm

配置文件参考:

https://github.com/arcolinux/arcolinux-bspwm

https://github.com/EndeavourOS-Community-Editions/bspwm

教程参考:

https://wiki.archlinux.org/title/Bspwm

https://www.bilibili.com/read/cv7417123/

https://github.com/baskerville/bspwm/wiki

https://dev.to/l04db4l4nc3r/bspwm-a-bare-bones-window-manager-44di

bspwm的开机启动项:

/usr/share/xsessions/bspwm.desktop

获取类名

  1. 安装xorg-xprop

  2. xprop | grep WM_CLASS

窗口规则属性:

  • hidden - 隐藏且不占用任何平铺空间。
  • sticky - 停留在其监视器的聚焦桌面上。
  • private - 尝试保持相同的平铺位置/大小。
  • locked - 忽略node –close消息。
  • marked - 已标记(对延迟操作有用)。标记的节点在发送到预选节点后变为未标记。
  • center - 中心窗口 if state=floating。
  • follow - 更改为窗口的监视器/桌面。
  • manage - 窗口被管理。非托管窗口不是树的一部分。
  • focus - 聚焦窗口。
  • border - 窗口边框的可见性。

浮动窗口

移动: 按住super+鼠标左键

调整大小: 按住super+鼠标右键

只有一个窗口时去掉间隙

bspc config single_monocle true

浮动模式的空间

1
2
3
4
5
6
7
8
9
#! /bin/bash

FLOATING_DESKTOP_ID=$(bspc query -D -d '^10')

bspc subscribe node | while read -a msg ; do
    desk_id=${msg[2]}
    wid=${msg[3]}
    [ "$FLOATING_DESKTOP_ID" = "$desk_id" ] && bspc node "$wid" -t floating
done

全部配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
vim ~/.config/bspwm/bspwmrc

====
#! /bin/sh

if pgrep firewall-applet &> /dev/null;then pkill firewall-applet;fi &

pgrep -x sxhkd > /dev/null || sxhkd &

bspc monitor -d I II III IV V VI VII VIII IX X

bspc config border_width         4
bspc config window_gap          12

bspc config split_ratio          0.52
bspc config borderless_monocle   true
bspc config gapless_monocle      true
bspc config pointer_follows_focus true
bspc config focus_follows_pointer true

# bspc rule -a Gimp desktop='^8' state=floating follow=on
bspc rule -a Thunar desktop='^3' follow=on
bspc rule -a mplayer2 state=floating
bspc rule -a Yad state=floating
bspc rule -a Kupfer.py focus=on
# bspc rule -a flameshot manage=off
bspc rule -a flameshot state=floating
bspc rule -a xfce4-power-manager state=floating
bspc rule -a copyq state=floating follow=on

# Border
bspc config focused_border_color        "#6c71c4"
bspc config normal_border_color         "#073642"
bspc config active_border_color         "#073642"

#
# Autostart
#
# Set display from arandr saved script
sh ~/.screenlayout/monitor.sh &
# Bar
flameshot &
# xfce4-power-manager &
~/.config/polybar/launch.sh &
# Notifications
/usr/bin/dunst &
# Polkit
/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 &
# Wallpaper
nitrogen --restore &
# Dex
dex -a -s /etc/xdg/autostart/:~/.config/autostart/ & 
# Picom
picom -b &
# Network Applet
nm-applet --indicator &

# Cursor
xsetroot -cursor_name left_ptr &

# Low battery notifier
~/.config/bspwm/scripts/low_bat_notifier.sh
====

polybar

bspwm启动脚本

1
~/.config/polybar/launch.sh

配置文件

1
~/.config/polybar/config.ini

https://github.com/polybar/polybar/wiki/Configuration

  • font-0 # 配置是索引1对应的字体,后面要用到该字体,直接用=1
  • modules-left modules-center modules-right : 对应三个区域的模块,spa是空隙,具体模块看wiki

修改的地方:

1
2
modules-left = powermenu sps bspwm sps keyhint sps sps title
modules-right =netspeed sps cpu sps memory sps temperature sps filesystem sps backlight sps pulseaudio sps date

bspwm配置查看模块

鼠标左键查看bspwm, 右键查看sxhkd

1
2
3
4
5
6
7
8
[module/keyhint]
type = custom/text
content = ""
click-left = xfce4-terminal -e "vim -R /home/$USER/.config/bspwm/bspwmrc"
click-right = xfce4-terminal -e "vim -R /home/$USER/.config/sxhkd/sxhkdrc"
content-foreground = ${colors.blue-darker}
content-padding = 1
margin-right = 0

网速模块

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
[module/netspeed]
type = internal/network

; Set correct interface name for the module to work
; Try eth0 for ethernet or wlan0 for wireless
;
; You can also run 'ip link' in a terminal
; to know the interace names on your system.
interface = wlan0
interval = 3
label-connected = "%{T1}龍%{T-}%{T2}%downspeed:8%%{T-}"
label-disconnected = "%{T2}⚠ %{T-}"
label-connected-background = ${colors.bg}
label-connected-foreground = ${colors.blue}
label-disconnected-foreground = ${colors.red}

cpu占用模块

1
2
3
4
5
6
7
8
9
[module/cpu]
type = internal/cpu

; Seconds to sleep between updates
; Default: 1
interval = 0.5

label = %{T1}%{T-}%{T2} %percentage:2%%%{T-}
label-foreground = ${colors.blue}

RAM占用模块

1
2
3
4
5
6
7
8
[module/memory]
type = internal/memory

interval = 0.5
format = <label>

label = %{T1}%{T-}%{T2} %percentage_used%%%{T-}
label-foreground = ${colors.blue}

温度模块

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[module/temperature]
type = internal/temperature

; Seconds to sleep between updates
; Default: 1
interval = 1

; Thermal zone to use
; To list all the zone types, run 
; $ for i in /sys/class/thermal/thermal_zone*; do echo "$i: $(<$i/type)"; done
; Default: 0
thermal-zone = 0

; Full path of temperature sysfs path
; Use `sensors` to find preferred temperature source, then run
; $ for i in /sys/class/hwmon/hwmon*/temp*_input; do echo "$(<$(dirname $i)/name): $(cat ${i%_*}_label 2>/dev/null || echo $(basename ${i%_*})) $(readlink -f $i)"; done
; to find path to desired file
; Default reverts to thermal zone setting
hwmon-path = /sys/devices/platform/coretemp.0/hwmon/hwmon3/temp1_input

; Base temperature for where to start the ramp (in degrees celsius)
; Default: 0
base-temperature = 0

; Threshold temperature to display warning label (in degrees celsius)
; Default: 80
warn-temperature = 80
label = %{T1}%{T-}: %{T2}%temperature-c%%{T-}
label-warn = %{T1}%{T-}: %{T2}%temperature-c%%{T-}
label-foreground = ${colors.cyan}
label-warn-foreground = ${colors.red}

存储空间占用模块

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[module/filesystem]
type = internal/fs

; Mountpoints to display
mount-0 = /
; mount-1 = /home
; mount-2 = /var

; Seconds to sleep between updates
; Default: 30
interval = 10

; Display fixed precision values
; Default: false
fixed-values = true

; Spacing (number of spaces, pixels, points) between entries
; Default: 2
spacing = 1

; Default: 90
; New in version 3.6.0
warn-percentage = 75

label-mounted =%{T1}%{T-} %{T2}%percentage_free%%%{T-}
label-mounted-foreground = ${colors.cyan}
label-mounted-foreground = ${colors.cyan}
label-warn-foreground = ${colors.red}

亮度模块

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 启用滚动调节亮度功能
# 该目录下的子文件夹名称对应card名
ls -l /sys/class/backlight/
# 手动调试
cd /sys/class/backlight/intel_backlight
ls -al
# max就是最大亮度
sudo vim brightness
# 添加权限 hxx改成你自己的用户组
sudo vim /etc/udev/rules.d/backlight.rules
====
ACTION=="add", SUBSYSTEM=="backlight", RUN+="/bin/chgrp hxx $sys/class/backlight/intel_backlight/brightness", RUN+="/bin/chmod g+w $sys/class/backlight/intel_backlight/brightness"
====

音量模块

滚轮滑动调节音量,左键静音,右键打开配置面板

sxhkd

~/.config/sxhkd/sxhkdrc

1
2
3
# 自动切换状态, 浮动和窗口模式, 类似的还有有全屏和窗口
super + shift + space
	bspc node -t {tiled,floating}

全部配置

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
#
# wm independent hotkeys
#

# terminal emulator
super + Return
	xfce4-terminal

# program launcher
super + d
	rofi -modi drun -show drun -line-padding 4 \
                -columns 2 -padding 50 -hide-scrollbar -terminal xfce4-terminal \
                -show-icons -drun-icon-theme "Qogir-dark" -font "Droid Sans Regular 14"

# show open window
alt + Tab
	rofi -modi drun -show window -line-padding 4 \
                -columns 2 -padding 50 -hide-scrollbar -terminal xfce4-terminal \
                -show-icons -drun-icon-theme "Qogir-dark" -font "Droid Sans Regular 14"

# show ssh sesssions
super + shift + d
	rofi -modi drun -show ssh -line-padding 4 \
                -columns 2 -padding 50 -hide-scrollbar -terminal xfce4-terminal \
                -show-icons -drun-icon-theme "Qogir-dark" -font "Droid Sans Regular 14"

# power-menu 
super + shift + e
     ~/.config/rofi/powermenu.sh

# make sxhkd reload its configuration files:
super + Escape
	pkill -USR1 -x sxhkd

#
# bspwm hotkeys
#

# quit/restart bspwm
super + alt + {q,r}
	bspc {quit,wm -r}

# close and kill
super + {_,shift + }q
	bspc node -{c,k}


# alternate between the tiled and monocle layout
super + m
	bspc desktop -l next

# send the newest marked node to the newest preselected node
super + y
	bspc node newest.marked.local -n newest.!automatic.local

# swap the current node and the biggest window
super + g
	bspc node -s biggest.window

#
# state/flags
#

# set the window state
super + {t,shift + t}
	bspc node -t {tiled,pseudo_tiled}

super + shift + space
	bspc node -t {floating,tiled}

super + f
        bspc node -t {fullscreen,tiled}


# set the node flags
super + ctrl + {m,x,y,z}
	bspc node -g {marked,locked,sticky,private}


# focus/swap
#

# focus the node in the given direction
super + {_,shift + }{h,j,k,l}
	bspc node -{f,s} {west,south,north,east}

# focus the node for the given path jump
super + {p,b,comma,period}
	bspc node -f @{parent,brother,first,second}

# focus the next/previous window in the current desktop
super + {_,shift + }c
	bspc node -f {next,prev}.local.!hidden.window

# focus the next/previous desktop in the current monitor
super + bracket{left,right}
	bspc desktop -f {prev,next}.local

# focus the last node/desktop
super + {grave,Tab}
	bspc {node,desktop} -f last

# focus the older or newer node in the focus history
super + {o,i}
	bspc wm -h off; \
	bspc node {older,newer} -f; \
	bspc wm -h on

# focus or send to the given desktop
super + {_,shift + }{1-9,0}
	bspc {desktop -f,node -d} '^{1-9,10}'

#
# preselect
#

# preselect the direction
super + ctrl + {h,j,k,l}
	bspc node -p {west,south,north,east}

# preselect the ratio
super + ctrl + {1-9}
	bspc node -o 0.{1-9}

# cancel the preselection for the focused node
super + ctrl + space
	bspc node -p cancel

# cancel the preselection for the focused desktop
super + ctrl + shift + space
	bspc query -N -d | xargs -I id -n 1 bspc node id -p cancel

#
# move/resize
#
# expand a window by moving one of its side outward
super + alt + {h,j,k,l}
	bspc node -z {left -20 0,bottom 0 20,top 0 -20,right 20 0}

# contract a window by moving one of its side inward
super + alt + shift + {h,j,k,l}
	bspc node -z {right -20 0,top 0 20,bottom 0 -20,left 20 0}

# move a floating window
super + {Left,Down,Up,Right}
	bspc node -v {-20 0,0 20,0 -20,20 0}
#
# Special hotkeys
#

# Multimedia keys
XF86AudioRaiseVolume
  amixer -q set Master 5%+ unmute

# Still multimedia
XF86AudioLowerVolume
  amixer -q set Master 5%- unmute

# still
XF86AudioMute
  amixer -D pulse sset Master toggle-mute
  
# amixer -q set Master toggle
# Simple amixer command seems to have problems unmuting device

# Brightness up
XF86MonBrightnessUp
  xbacklight -inc 5

# And brightness down
XF86MonBrightnessDown
  xbacklight -dec 5

# Screenshot
Print
  flameshot gui 

super + Print
  ~/.config/bspwm/scripts/screenshot.sh

# Shortcuts
super + s
  flameshot gui 

# clipbord
super + v
  copyq toggle

super + alt +  F1
  ~/.config/bspwm/scripts/keybindings_rofi.sh

# browser
super + F1
 google-chrome-stable
 
# vscode 
super + F2
 code

# thunar
super + F3
 thunar 

picom 非活动窗口透明度调整

1
2
3
4
5
vim ~/.config/picom.conf
=====
inactive-opacity = 0.95;
active-opacity = 1;
=====

双屏幕显示

Dual monitor setup with BSPWM and Polybar | Protesilaos Stavrou

  1. 用ARandR设置: 外接显示器在左, 自带笔记本屏幕在右

或者用 ranger 命令

1
2
3
4
xrandr -q
# 只显示已连接的
xrandr -q | grep -w connected
# 假设这里获取到的两个屏幕分别是本机eDP1和外接显示器HDMI2
  1. 设置bspwm
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 给外接显示器分配1-9号桌面,给本机分配0号桌面
bspc monitor HDMI2 -d I II III IV V VI VII VIII IX
bspc monitor eDP1 -d eDP1 X
# 按键绑定时, 是从左桌面开始的(也可以是从上到下)
# 假设eDP1在左边, HDMI2在右边, 那么按键1会分配给eDP1
# 所以在设置ARandR时,先把HDMI2移到左边,把eDP1移到右边,那么分配按键时会先从HDMI2开始分配

# 不移动也可以, 那么就得交换(swap)监视
# bspc monitor eDP1 -s HDMI2
# 查看顺序
# bspc query -M
# 如果只有两个,直接交换
# bspc monitor -s last
  1. 设置polybar

Set polybar on multiple screens. · Issue #763 · polybar/polybar · GitHub

1
2
3
4
5
6
# 修改~/.config/polybar/config.ini
# top就是配置名,可以在启动polybar时指定配置,也可以启动多个,但插件似乎只能存在在一个配置
[bar/top]
; monitor = HDMI2
; monitor-fallback = eDP1
monitor = ${env:MONITOR:}
  1. 修改启动脚本
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
vim $HOME/.config/polybar/launch.sh

#!/usr/bin/env bash

# Terminate already running bar instances
killall -q polybar

# Wait until the processes have been shut down
while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done
 
# Launch Polybar
# polybar top -c ~/.config/polybar/config.ini &
for m in $(polybar --list-monitors | cut -d":" -f1); do
    MONITOR=$m polybar --reload top &
done
  1. 重新启动polybar
1
2
# 直接重启bspwm, polybar也会跟着重启
# 如果是插拔显示器,需要重新启动polybar

智能化

根据设备自动切换配置 : autorandr

  1. 先在不插显示器和插显示器的模式下, 分别调整显示器布局和保存配置, 下次热插把显示器, 便能自动应用配置, 还能自动执行脚本
1
2
3
4
5
6
yay -S autorandr
autorandr -h
# 插上显示器并调整布局
autorandr --save hdmi2
# 拔掉显示器并调整布局
autorandr --save laptop
  1. 修改 bspwm 默认启动脚本
1
2
# 默认启动时给笔记本显示器分配1-10
bspc monitor eDP1 -d I II III IV V VI VII VIII IX X
  1. 添加触发 autorandr 时脚本
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
cd ~/.config/autorandr/hdmi2
vim postswitch
===
#! /bin/sh
sleep 8
nitrogen --restore
bspc monitor HDMI2 -d I II III IV V VI VII VIII IX
bspc monitor eDP1 -d X
===
chmod +x postswitch

cd ../laptop
vim postswitch
===
#! /bin/sh
sleep 8
# nitrogen --restore
# bspc monitor eDP1 -d I II III IV V VI VII VIII IX X
# bspc config remove_disabled_monitors false
# bspc config remove_unplugged_monitors true
# bspc config merge_overlapping_monitors false
bspc wm -r
===
chmod +x postswitch

未解决问题点: sh ~/.config/polybar/launch.sh 不能在 autorandr 中添加永久进程, 暂时添加 desktop 用 rofi 启动

自启动管理

  • 自启动文件夹:/etc/xdg/autostart/~/.config/autostart

    修改.desktop文件中的Hidden=true来取消启动

  • 至于bspwm中的, 通过pgrep firewall-applet || firewall-applet避免重复启动

按键映射(cap_lock)

把cap_lock单击映射为esc, 长按+hjkl 映射为方向键

使用xev 获得keycode

1
2
3
4
5
6
7
8
9
yay -S xcape
vim ~/.Xmodmap 
======
keycode 66 = Mode_switch
keysym h = h H Left
keysym l = l L Right
keysym k = k K Up
keysym j = j J Down
======
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
vim ~/.config/autostart/keymap.desktop
========
[Desktop Entry]
Version=1.0
Type=Application
Name=keymap
Encoding=UTF-8
Exec=/bin/bash -c "/usr/bin/xmodmap ~/.Xmodmap; xcape -e 'Mode_switch=Escape'"
Icon=application-default-icon
Hidden=false
X-GNOME-Autostart-enabled=true
======

ctl_L 键和 alt_L 对换

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
vim ~/.Xmodmap 

===
remove mod1 = Alt_L
remove Control = Control_L
keysym Control_L = Alt_L
keysym Alt_L = Control_L
add mod1 = Alt_L
add Control = Control_L
===

查看窗口class

安装 xorg-xprop

1
xprop # 把光标移到窗口上

查看键盘按键对应符号

给sxhkd使用

安装xorg-xev, 终端输入xev启动

i3lock 失败锁定的次数

https://wiki.archlinux.org/title/security#Lock_out_user_after_three_failed_login_attempts

1
2
3
4
/etc/security/faillock.conf. 锁定参数:
unlock_time— 锁定时间(以秒为单位,默认为 10 分钟)。
fail_interval— 登录失败可能导致锁定的时间(以秒为单位,默认为 15 分钟)。
deny— 锁定前登录失败的次数(默认 3)。
1
2
3
vim ~/.bashrc
alias neofetch="neofetch --ascii_distro arch --disable distro"
source ~/.bashrc

wm桌面高分辨率下设置缩放

资料

https://forum.endeavouros.com/t/xresources-and-scaling/21458/3

https://dougie.io/linux/hidpi-retina-i3wm/

https://forum.endeavouros.com/t/ten-tweaks-for-eos-i3-wm-on-lenovo-with-high-dpi/10363

  1. 字体dpi

https://wiki.archlinux.org/title/HiDPI#X_Resources

1
vim ~/.Xresources
1
2
3
4
5
6
7
8
9
Xft.dpi: 144
Urxvt.font:xft:Sarasa Mono SC Nerd:size=16:style=Regular
Xft.autohint: 0
Xft.lcdfilter:  lcddefault
Xft.hintstyle:  hintfull
Xft.hinting: 1
Xft.antialias: 1
Xft.rgba: rgb
Xcursor.size: 40

修改第一行的dpi和第二行的字体

dpi 96的时候是100%, 192是200%

  1. gtk dpi

https://wiki.archlinux.org/title/HiDPI#:~:text=QT_FONT_DPI%3D96%20clementine-,GDK%203%20(GTK%203),-Note%3A%20As

1
vim ~/.profile
1
2
3
4
5
6
7
export GDK_SCALE=1
export GDK_DPI_SCALE=1
export QT_AUTO_SCREEN_SCALE_FACTOR=1
export QT_AUTO_SCREEN_SET_FACTOR=1
export QT_QPA_PLATFORMTHEME=qt5ct
export QT_SCALE_FACTOR=1
export QT_FONT_DPI=100

GDK_SCALE 不支持小数缩放, GDK_DPI_SCALE支持小数

第一个是把界面放大,第二个是把文字缩回去

  1. 生效需要xrdb ~/.Xresources, 并且重启
  2. 上面把界面放大了, 需要 xRandR 缩小
1
2
3
4
5
6
xrandr -q

xrandr --output eDP1 --scale 1.5x1.5

# 如果还有外接显示器
xrandr --output HDMI2 --pos 3840x0 --scale 2x2

rofi字体大小

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
rofi --help
vim ~/.config/rofi/config.rasi

vim ~/.config/rofi/powermenu.rasi

===========
configuration {
    font:                           "Sourcecode Pro Regular 26";
window {
    width:                          260px;
===========

通过sxhkd启动的rofi窗口, 需要改sxhkd文件, 字体可能通过参数传递过去的

rofi透明度改为不透明

1
2
3
4
5
6
vim ~/.config/picom.conf
# 添加规则
opacity-rule = ["100:class_g = 'Rofi'"];
# 修改rofi的皮肤
# endeavouros 带了一个皮肤 arc_dark_transparent_colors.rasi
# 把除了 background-color 的透明度为0, 其他项都改为100%

rofi添加程序

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# 程序 xxx.desktop 默认路径
cd /usr/share/applications
# 程序的默认安装路径
cd /usr/bin
# 程序的默认图标路径
cd /usr/share/icons
# 复制已有的改下
#### 参考
[Desktop Entry]
Name=Imagine
Exec=/home/hxx/下载/AppImages/Imagine.AppImage
Terminal=false
Type=Application
Icon=/home/hxx/下载/AppImages/Imagine.png
StartupWMClass=Imagine
Comment=PNG/JPEG optimization app
####

grub分辨率

1
2
3
4
5
6
sudo vim /etc/default/grub
=============
# 上面两条是自动加载上次内核, 没有安装多个内核的不用管
GRUB_GFXMODE=1360x768x32,auto
=============
grub-mkconfig -o /boot/grub/grub.cfg

grub启动项

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 检查内核
Vuname -r
# 多个内核设置
sudo vim /etc/default/grub
==================
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT="true"
GRUB_TIMEOUT=2   # 倒计时
GRUB_DISABLE_SUBMENU=y
GRUB_TIMEOUT_STYLE='menu' # 如果menu时不出现倒计时, 有可能是插着鼠标, 或者是键盘坏了,在发送按键事件,打断了计时
====================
grub-mkconfig -o /boot/grub/grub.cfg
reboot

grub 主题

tela

清理垃圾

1
2
3
4
sudo journalctl --disk-usage                #查看日志大小
sudo journalctl --vacuum-time=5d                  #超过5天的自动删除
sudo journalctl --vacuum-size=500M                #超过500M的自动删除
sudo rm /var/lib/systemd/coredump/*             #崩溃日志,文件不多,也不大,删不删随你

feh图片查看器

快捷键

上下: 缩放

左右: 上一张下一张

/: 图片适应窗口

d: 显示文件名

m:显示菜单

o: 显示/隐藏鼠标

q: 退出

x: 关闭

默认配置文件

1
2
3
vim ~/.config/feh/themes
feh --scale-down --auto-zom -d --start-at
# feh在窗口管理器中有bug, 第一次缩放不正常,按r刷新后正常

建议用gpicview , 同样很轻量

设置默认浏览器

~/.config/mimeapps.list

1
2
3
4
5
6
[Default Applications]
text/html=google-chrome.desktop
x-scheme-handler/http=google-chrome.desktop
x-scheme-handler/https=google-chrome.desktop
x-scheme-handler/about=google-chrome.desktop
x-scheme-handler/unknown=google-chrome.desktop

蓝牙

1
2
3
4
5
6
# 一般已经安装了
sudo pacman -S bluez bluez-utils
sudo systemctl enable bluetooth.service
sudo systemctl start bluetooth.service
# pulseaudio-bluetooth不用安装,有pipewire-pulse
# pavucontrol 音量图形化管理,一般已经安装了
1
2
3
4
systemctl start bluetooth
systemctl enable bluetooth
systemctl start --user pipewire-pulse
systemctl enable --user pipewire-pulse

命令方式:(建议直接用blueman)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
bluetoothctl            # 进入蓝牙管理工具环境
[bluetooth]# power on                打开蓝牙
[bluetooth]# agent on                开启代理
[bluetooth]# scan on                 扫描蓝牙设备
[bluetooth]# pair xx:xx:xx:...       配对该设备
[bluetooth]# trust xx:xx:xx:...      信任该设备
[bluetooth]# connect xx:xx:...       连接该设备
[bluetooth]# disconnect xx:xx:...    断开蓝牙

[bluetooth]# help                   查看帮助信息
[bluetooth]# show                   查看本机蓝牙信息
[bluetooth]# discoverable yes       设置蓝牙可被发现
[bluetooth]# info xx:xx:xx:...      查看该蓝牙设备的信息
1
2
# 安装图形管理界面
sudo pacman -S blueman

修改gtk主题

下载: https://www.gnome-look.org/browse/

使用LXAppearance进行设置, 主题添加到~/.themes 下, 喜欢macos 可以使用 WhiteSur

笔记本扬声器没有声音

1
2
3
# 取消静音通道
# 默认情况下,ALSA 将所有通道静音,所有这些都需要手动取消静音。这可以使用 amixer 来完成
amixer set Master unmute

亮度

1
2
# 使用light 或者 xbacklight
xbacklight = 80

代理

shell-clash(推荐)

1
2
3
4
5
# 安装,作者推荐用管理员安装,设置切管理员账号
# 查看服务
systemctl status clash
# 安装路径
cd /usr/share/clash

全部超时,但log不报错

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
# 其他设备可以,但就一台电脑全部超时,可能是时间不对

# 查看时间
date

# 查看时区
date +“%Z %z”
# 输出UTC +0800 才是东八区

# 设置时区
# 在 /etc/profile末尾添加
export TZ='Asia/Shanghai'
# 然后执行
source /etc/profile
# 再次查看时区

# 通过ntp同步网络时间
sudo ntpdate cn.pool.ntp.org
# 设置开机同步
sudo systemctl enable ntpd.service

软件推荐

开发类

  • vscode
  • vim
  • obsidian: markdown文本编辑器
  • xfce4 terminal
  • zsh + zprezto+syntax-highlighting+autosuggestions+powerlevel10k

效率类

  • fzf 模糊搜索
  • catfusg 全局文件搜索
  • rofi 启动器
  • flameshot 截图
  • copyq 剪切板管理
  • ranger 终端里的文件管理器
  • tmux 分屏终端
  • meld 文件对比
  • xdm/Motrix 下载器
  • peek录制动态图片
  • stacer 清理软件/服务启动项管理/host编辑
  • peazip 解压软件 banzip
  • wechat-uos
  • ristretto/gpicview 图片查看
  • golddict/biyi 翻译
  • fcitx5+rime 输入法
  • yesplaymusic 网易云第三方
  • go-musicfox 终端网易云音乐
  • wps: 参考wiki, 装国外版, 装中文字体
  • vlc
  • kdenlive/openshot 剪视频
  • kazam 简单录屏
  • htop top的快捷键版
  • xfce4-power-manager 电源管理
  • ARandR 分辨率设置
  • picom 透明度渲染合成
  • nitrogen 壁纸
  • timeshift 系统备份
  • neofetch 显示系统信息
  • balenaEtcher 烧录写盘
  • journalctl 实时查看日志
  • gparted 分区工具
  • stacer 垃圾清理
  • chezmoi 管理dotfiles

ranger设置

  1. 复制默认配置文件

    1
    
    ranger --copy-config=all
    
  2. 设置主题

    1
    2
    3
    4
    5
    
    vim ~/.config/ranger/rc.conf
    ####
    # rc.conf 只需要包含与默认配置文件不同的部分
    set colorscheme jungle
    ####
    
  3. 配置文件

    • rc.conf - 选项设置和快捷键
    • commands.py - 能通过 : 执行的命令
    • rifle.conf - 指定不同类型的文件的默认打开程序。
    • scope.sh - 文件预览相关配置
  4. 快捷键: map

    添加DD快捷键为删除到回收站

    1
    2
    3
    4
    
    vim ~/.config/ranger/rc.cf
    ####
    map DD shell mv %s ~/.Trash
    ####
    
    • q : 退出 ranger

    • R : 重新刷新目录

    • S : 执行 shell 命令

    • : 或者 ; : 控制台

    • W : 显示日志

    • k : 向上

    • j : 向下

    • h : 向左

    • l : 向右

    • g : 到顶部

    • G : 到底部

    • J : 半页向下

    • K : 半页向上

    • gh : 相当于 cd ~

    • ge : 相当于 cd /etc

    • gu : cd /usr

    • dd : 剪切

    • yy : 复制

    • pp : 粘贴

  5. 让shell的目录跟随ranger, 使用 . ranger 代替ranger

  6. 退出时保持目录shfit + s

翻译软件

https://www.cnblogs.com/keatonlao/p/12702571.html

goldendict + translator

1
vim ~/.config/translator/config.ini
1
2
3
4
5
6
#goldendict 添加词典-程序
python3 /home/hxx/文档/脚本/translator/translator.py --engine=baidu "%GDWORD%"

python3 /home/hxx/文档/脚本/translator/translator.py --engine=bing "%GDWORD%"

python3 /home/hxx/文档/脚本/translator/translator.py --engine=google "%GDWORD%"

谷歌浏览器多用户

1
2
3
4
5
6
# 在浏览器中打开 chrome://version/ 查看当前用户配置目录
# 用启动参数启动
google-chrome-stable --profile-directory=Default
google-chrome-stable --profile-directory="Profile 7"
# 设置代理
google-chrom-stable --proxy-server=socks5://127.0.0.1:7890

修改desktop文件

1
2
3
cd /usr/share/applications
ls -al | grep chrome
# 修改Name和Exec参数, %U参数表示可以传递多个url给浏览器,例如在文件管理器中选择多个html用chrome打开
build with Hugo, theme Stack, visits 0