Dwm
特点
- 使用纯C语言编写
- 轻量,大概三千行代码
- 易于改源码
安装
记得先安装xorg
git clone https://git.suckless.org/dwm
在dwm的文件夹下使用命令安装
sudo make clean install
注意:记得安装gcc、make,base-devel中有包含
在安装xorg后使用startx
即可进入DWM环境,但是注意进入后没有终端和dmenu
的情况下什么也做不了,可以使用model + shift + q
退出dwm
如果安装了dmenu(pacman -S dmenu)使用model + p
可以搜索应用,如st
如果想在登录后直接进入dwm,可在/etc/profile
末尾加startx;
,在用户下加会在启动终端报错误信息
默认快捷键
退出DWM:mod + shift + q
关闭窗口:mod + shift + c
窗口操作:
打开新终端:Alt + Shift + Enter
关闭一个窗口:Alt + Shift + C
窗口横向排列:Alt + D
窗口竖向排列:Alt + I
窗口位置互换:Alt + Enter
在窗口间切换:Alt + J 或 Alt + K
改变窗口的长度/比例:Alt + H 或 Alt + L
平铺模式:Alt + T
单窗口模式:Alt + M
浮动模式:Alt + F
窗口模式切换:Alt + 空格 或 Alt + Shift + 空格
多屏幕操作:
在主副屏之间移动焦点:使用Mod + < 或 Mod + >(其中Mod可能是另一个修饰键,如Alt或Win)
在主副屏之间移动窗口:使用Mod + Shift + < 或 Mod + Shift + >
自定义快捷键:例如,为截图工具设置快捷键,可以通过编辑配置文件来实现,如将Alt + Ctrl + A绑定到截图命令。
个人更改记录
static const char *tags[] = { "[1]浏览器", "[2]代理", "[3]终端", "[4]工作", "[5]娱乐", "[6]暂定", "[7]暂定", "[8]暂定", "[9]暂定" };
补丁:
dwm-alttab-20220709-d3f93c7.diff 可以让alt+tab只在当前标签下选择,方便了窗口模式
显示电量
在~/.xinitrc
的exec dwm
前加上
while true; do
# do some things
######################################################
#电池
power=$(cat /sys/class/power_supply/BAT0/capacity)%
status=$(cat /sys/class/power_supply/BAT1/status)
if [[ $status == D* ]];then
status='未充电'
else
status='充电中'
fi
xsetroot -name "$(date +"%F %R" ) [$status] $power "
sleep 2s
######################################################
# do some things end
done &
显示亮度、电量、声音、时间
#set statusbar
while true
do
#电量
power=$(cat /sys/class/power_supply/BAT0/capacity)%
status=$(cat /sys/class/power_supply/BAT1/status)
if [[ $status == D* ]];then
status='未充电'
else
status='充电中'
fi
xsetroot -name "亮度 $(cat /sys/class/backlight/nvidia_0/brightness) [$status] $power 音量 $(amixer get Master | tail -1 | awk '{ print $5}' | tr -d '[]') $(date +"%F %R")"
sleep 1s
done &
升级版本
#set statusbar
while true
do
#电量
power=$(cat /sys/class/power_supply/BAT0/capacity)%
light=$(cat /sys/class/backlight/nvidia_0/brightness)
cpu=$(top -bn1 | sed -n '3p' | tr -s '[:space:]' | cut -d' ' -f2)
mem=$(free -m | sed -n '2p' | tr -s '[:space:]' | cut -d' ' -f3)
disk_total=$(df -hl | sed -n '5p' | tr -s '[:space:]' | cut -d' ' -f2)
disk_use=$(df -hl | sed -n '5p' | tr -s '[:space:]' | cut -d' ' -f3)
xsetroot -name "CPU $cpu% Mem "$mem"MB 磁盘 $disk_use/$disk_total 亮度 $light 电量 $power $(date +"%F %R")"
sleep 1s
done &
补丁
将补丁下载到dwm目录下,使用命令
patch < xxxx
- alpha:状态条透明
- awesomebar:状态栏显示打开的所有软件
- fullscreen:全屏
- autostart:自启动脚本,打完后在dwm.c中能指定启动脚本
解决Java程序不正常的问题
sudo pacman -S wmname
在~/.xinitrc中添加
wmname LG3D &
显示比列
创建并编辑vim ~/.Xresources
Xft.dpi: 125
st终端
从官网克隆源码
git clone https://git.suckless.org/st
编辑config.mk
(好像不用编辑都行)
X11INC = /urs/include/X11
X11LIB = /urs/include/X11
粘贴复制
ctrl + shift + c
ctrl + shift + v
补丁(st版本:st-0.9.2(可官网手动下载)):
注意:先删除config.def.h
,然后将补丁文件放置在st目录下,使用patch < xxx
并输入config.h
就能修改源文件打补丁,再重新编译安装sudo make clean install
- scrollback:可滚动
- alpha:透明度(st-alpha-0.8.5.diff)
- anysize:全屏(st-anysize-0.8.4.diff)
- dracula:更改配色
字体修改
记得安装字体
sudo pacman -S adobe-source-code-pro-fonts
系统资源查看
sudo pacman -S htop
htop
安装aur
克隆代码后安装
makepkg -si
ranger
终端下的文件管理器,sudo pacman -S ranger
,直接使用ranger
即可
生成配置文件
ranger --copy-config=all
位于~/.config/ranger/rc.conf
设置显示隐藏文件和图片
set preview_images true
set preview_images_method w3m
图片的显示需要安装w3m
挂载磁盘
如果是NEFS格式的磁盘需要先下载
sudo pacman -S ntfs-3g
然后使用mount /dev/sda1 ~/doc
即可临时挂载,重启后失效
想开机有效需要编辑/etc/fstab
/dev/sda1 /home/fan/doc ntfs-3g users,uid=1000,gid=100,fmask=0113,dmask=0002,locale=zh_CN.utf-8 0 0
然后可以正常挂载和使用
壁纸
使用feh
可以查看图片和设置壁纸
sudo pacman -S feh
feh --bg-scale ~/Downloads/bg.jpg
可以设置在~/.xinitrc
中启动有效
feh --bg-scale ~/Downloads/bg.jpg &
透明化支持
需要安装xcompmgr,然后设置开机自启
编辑~/.xinitrc
加上
xcompmgr &
屏幕亮度调节
# 查看屏幕亮度最大值
cat /sys/class/backlight/xxxxxx/max_brightness
# 当前亮度
cat /sys/class/backlight/nvidia_0/brightness
# 屏幕亮度调到100
echo 100 > /sys/class/backlight/xxxxxx/brightness
cat /sys/class/backlight/nvidia_0/brightness
sudo chmod +777 /sys/class/backlight/nvidia_0/brightness
sudo echo 70 > /sys/class/backlight/nvidia_0/brightness
多屏显示
查看显示器:
# 详细
xrandr -q
# 简单
xrandr -q | grep connected
扩展输出到其他显示器
xrandr --output HDMI-1-1 --auto
关闭和开启某显示器
xrandr --output VGA1 --off
xrandr --output VGA1 --auto
双屏显示
xrandr --output eDP-1 --left-of HDMI-1-1 --auto
xrandr --output eDP-1 --right-of HDMI-1-1 --auto
设置分辨率
xrandr -s 1280x800
解决自己笔记本刷新率造成的撕裂问题
# 查看输出设备
xrandr -q
# 选择输出设备
xrandr --output DP-2 --mode 2560x1600 --rate 165.00
注意:如需开机启动生效,需要配置到.xinitrc
中,最好靠前些
xrandr --output DP-2 --mode 2560x1600 --rate 165.00 &
触摸板配置
VScode以root权限运行
sudo code --user-data-dir="~/.vscode" 70-synaptics.conf // 无效
sudo code --no-sandbox --disable-gpu-sandbox --user-data-dir=/root/.vscode/ .bashrc
JDK
解压JDK压缩包
配置/etc/profile
# JDK
export JAVA_HOME=/home/fan/work/jdk8
export PATH=$PATH:$JAVA_HOME/bin
顺便记录下环境变量的添加方式
#通过修改profile文件:
vim /etc/profile
export PATH=$PATH:/usr/local/bin
#生效方法:source或重启
#有效期限:永久有效
#用户局限:对所有用户
安装windows字体
系统字体目录/usr/share/fonts
在该目录下创建字体文件夹,然后将下载的字体放进去
sudo chmod 644 sim* # 更改字体权限
sudo mkfontscale # 创建字体的fonts.scale文件,用来控制字体旋转缩放
sudo mkfontdir # 创建字体的fonts.dir文件,用来控制字体粗斜体产生
sudo fc-cache # fc-cache扫描字体目录并生成字体信息的缓存,然后应用程序就可以立即使用这些新安装的字体
查询已安装的字体使用fc-list
解决浏览器出现乱码问题
在安装了中文字体后,依然后出现乱码的问题,这是编码问题,而当前的chrome不支持直接修改编码,都是自动识别,但是chrome识别不准,出现乱码,安装插件charset更改编码即可
下载源码解压安装,在chrome插件中导入
安装nvidia驱动
首先确定显卡型号
lspci -k | grep -A 2 -E "(VGA|3D)"
然后安装驱动
sudo pacman -S nvidia
sudo pacman -S nvidia-open
编辑/etc/default/grup
更改内核模式
# 更改此行
GRUB_CMDLINE_LINUX_DEFAULT="quite splash nvidia-drm.modeset=1"
编辑/etc/mkinitcpio.conf
添加模块
# 第一行更改
MODULES=(nvidia nvidia nvidia_modeset nvidia_uvm nvidia_drm)
然后重新生成,构建
sudo mkinitcpio -p linux
然后sudo reboot
重启,然后使用nvidia-smi
查看是否安装成功
注意:测试发现安装sudo pacman -S nvidia-open
不需要配置也可以,比较方便
vim
配置,针对当前用户在~
在配置.vimrc
,全局配置文件在/etc/vim/vimrc
syntax on " 设置语法高亮
set nu " 设置行数显示
set tabstop=2 " 设置tab缩进长度
set autoindent " 设置自动缩进,适用所有类型文件
set cindent " 针对C语言的自动缩进功能,在C语言的编程环境中,比autoindent更加精准
set cursorline " 突出显示当前行
操作方式
普通模式:esc
编辑:i或a
保存退出(普通模式):wq
强制退出(普通模式):q!
复制一行(普通模式):yy
粘贴(普通模式):p
触摸板调整
sudo pacman -S xf86-input-synaptics
编辑sudo vim /usr/share/X11/xorg.conf.d/70-synaptics.conf
文件,直接添加以下代码即可
Section "InputClass"
Identifier "touchpad"
Driver "synaptics"
MatchIsTouchpad "on"
Option "TapButton1" "1"
Option "TapButton2" "3"
Option "TapButton3" "0"
Option "VertEdgeScroll" "on"
Option "VertTwoFingerScroll" "on"
Option "HorizEdgeScroll" "on"
Option "HorizTwoFingerScroll" "on"
Option "VertScrollDelta" "-112"
Option "HorizScrollDelta" "-114"
Option "MaxTapTime" "125"
EndSection
Section "InputClass"
Identifier "touchpad"
Driver "synaptics"
MatchIsTouchpad "on"
Option "TapButton1" "1"
Option "TapButton2" "3"
Option "TapButton3" "2"
Option "VertEdgeScroll" "on"
Option "VertTwoFingerScroll" "on"
Option "HorizEdgeScroll" "on"
Option "HorizTwoFingerScroll" "on"
Option "CircularScrolling" "on"
Option "CircScrollTrigger" "2"
Option "EmulateTwoFingerMinZ" "30"
Option "EmulateTwoFingerMinW" "6"
Option "FingerLow" "30"
Option "FingerHigh" "50"
Option "VertScrollDelta" "-80"
Option "HorizScrollDelta" "-60"
Option "MaxTapTime" "125"
EndSection
安装JetBrains Mono字体
在JetBrains Mono官网下载字体,解压到/home/fan/.local/share/fonts
然后使用fc-cache -fv
安装,可以使用fc-list
查看已经安装的字体
在ST终端中使用需要在config.h
中更改为monospace
并重新编译安装sudo make clean install
声音
/lib/firmware/intel/sof
sudo pacman -S sof-firmware
https://segmentfault.com/a/1190000002918394
https://www.cnblogs.com/exmyth/p/17541159.html
https://wiki.archlinuxcn.org/wiki/ALSA
根据以上的测试,耳机可以,笔记本自带不行
Archlinux连接HDMI分屏后没声音:https://blog.csdn.net/weixin_43802844/article/details/122052678
pacman -S alsa-firmware alsa-tools pulseaudio-alsa
https://blog.51cto.com/u_16236295/10423953
https://worktile.com/kb/ask/433193.html
查看声卡设备:cat /proc/asound/cards
设置声音:amixer set Master 50%
alsamixer
命令来控制音量
查看系统所有信息
sudo pacman -S inxi
inxi -F
https://www.jianshu.com/p/05bf79b1878b
配置代理
根据放心云的Linux教程进行配置,然后就可以使用了,
wget https://github.com/Kuingsmile/clash-core/releases/download/1.18/clash-linux-amd64-v1.18.0.gz
gunzip clash-linux-amd64-v1.18.0.gz
chmod +x clash-linux-amd64-v1.18.0
# 下面行换自己的
curl "https://sub.speed17sub.com/api/v1/client/subscribe?token=xx&flag=clash" > clash.yaml
./clash-linux-amd64-v1.18.0 -f clash.yaml
export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890
curl ipinfo.io # 查看出口IP
但是Chrome浏览器需要手动指定代理才可以
google-chrome-stable --proxy-server="127.0.0.1:7890"