Small Tricks - Vol-2025.12
hyprland中全屏
可以使用fullscreen命令.
另外发现了hyprland的配置支持SHIFT组合键,丰富了常用按键的功能 .config/hypr/hyprland.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# Win + Shift + K 全屏模式
bind = $mainMod SHIFT, K, fullscreen
# Win + Shift + J 水平/竖直切换
bind = $mainMod SHIFT, J, togglesplit, # dwindle
# Win + h,j,k,l 窗口间移动
bind = $mainMod, H, movefocus, l
bind = $mainMod, L, movefocus, r
bind = $mainMod, K, movefocus, u
bind = $mainMod, J, movefocus, d
# Win + Shift + L : resize模式,通过 h,j,k,l调整大小
# goto resize submap
bind = $mainMod SHIFT, L, submap, resize
submap = resize
# reset
binde = , L, resizeactive, 40 0
binde = , H, resizeactive, -40 0
binde = , K, resizeactive, 0 -40
binde = , J, resizeactive, 0 40
# go back to global submap
bind = , escape, submap, reset
submap = reset
python中使用$HOME路径
1
2
import os
os.path.expanduser('~/.llm_env')
stow管理dotfile
折腾hyprland的时候,有了管理dotfile的想法。显然,最大的问题是:如何将散落在天涯海角的配置文件用一个仓库统一管理?
很容易想到用symbol link解决,但是手动创建比较麻烦。发现一个GNU工具stow可以胜任。
比如要将.config/hypr/hyprland.conf管理,可以:
1
2
3
4
5
cd ~
mkdir dotfiles && cd dotfiles
mkdir hypr
mv ~/.config/hypr/hyprland.conf ./hypr/
stow hypr -t ~/.config/hypr
其中stow会把指定目录下(dotfiles/hypr/*)的一个符号连接创建到到\t指定的目录下,上面的过程会完成”移动 + 创建符号链接”的过程。
Makefile & gcc
$> 代表“第一个依赖”,这里是xxx.s; $@代表目标文件,也就是xxx.elf
1
2
3
4
5
6
7
8
BUILD_DIR = .
ARM_SOURCES = $(wildcard *.s)
TARGETS = $(addprefix $(BUILD_DIR)/,$(notdir $(ARM_SOURCES:.s=.bin)))
all: $(TARGETS)
%.elf: %.s
riscv64-unknown-elf-gcc $< -march=rv32i -mabi=ilp32 -static -fno-pic -fno-builtin -nostdlib -nostdinc -g -o $@ -Wl,-Ttext,0x0
%.bin: %.elf
riscv64-unknown-elf-objcopy -j .text -O binary -S $< $@
gcc一些选项
1
gcc -S a.c -o a.S // 产生汇编 (注意: -s 是stripped, -S是产生汇编!)
.s和.S文件
.s一般是纯汇编文件,而.S通常带预处理器(比如ifdef, include)
vim中的终端“吞快捷键”解决方法
不论是一些nvim插件,还是terminal命令,产生的终端一旦按下i编辑,便会开始“吞掉”Alt-<之类的快捷键。 曾经我遇到这类问题的解决方法简单粗暴:用完终端后C-D将其退出,但这也太麻烦了!今天学到一个小技巧,在终端中,可以按下C-\ C-n退回普通模式,然后就能使用nvim快捷键了。
但是,仍然按下两个组合键…能不能更简洁?
了解到位于这种终端里其实属于t模式,可以增加快捷键映射:
1
vim.keymap.set("t", "<Esc>", [[<C-\><C-n>]], { noremap = true})
”~” != “$HOME”
在添加了新的显示屏后,我制作了kitty的启动脚本,用于在不同的显示屏中显示不同的字体大小,然而无意间发现下面两种写法是不同的:
1
2
(venv14) woc@myarch:~/dotfiles ‹main›$ kitty --config ~/.config/kitty/kitty_base.conf
(venv14) woc@myarch:~/dotfiles ‹main›$ kitty --config "~/.config/kitty/kitty_base.conf"
前者能够成功执行,而后者则无法读取配置文件。原来~在shell中会先展开成绝对路径!但是写成字符串后,就失去了这个功能。
PS: 我原本的配置文件是:
1
2
conf1="~/xxx"
kitty --config $conf1 ......
原因是:bash中的变量本质都是字符串,没有什么“magic”,因此~不会自动展开。只需换成:
1
2
conf1="$HOME/xxx"
kitty --config $conf1 ......
即可.
cargo test
测试的时候,如果想要看到代码中的输出:
1
cargo test xxx -- --show-output
如果想要看到测试代码中的输出:
1
cargo test xxx -- --nocapturef
uv
激活的时候,如果直接运行
1
venv/bin/activate
无法成功。
查看其内容后发现有:
1
2
# This file must be used with "source bin/activate" *from bash*
# You cannot run it directly
使用source venv/bin/activate即可成功激活.
另外,对于uv安装的虚拟环境,安装包的时候需要使用uv pip install xxx而不是直接pip install xxx
haskell的版本
在使用stack打开了一个项目后,发现hls LSP无法正常工作,随后提示找不到对应的版本。
1
2
3
4
(venv14) woc@myarch:haskell/test $ haskell-language-server-wrapper --version
haskell-language-server version: 2.10.0.0 (GHC: 9.10.1) (PATH: /home/woc/.ghcup/hls/2.10.0.0/lib/haskell-language-server-2.10.0.0/bin/haskell-language-server-wrapper)
(venv14) woc@myarch:haskell/test $ stack ghc -- --version
The Glorious Glasgow Haskell Compilation System, version 9.10.3
可以看到目前使用的lsp版本是2.10.0.0,只支持到ghc的9.10.1,所以需要安装对应版本的haskel-language-server
1
2
ghcup --url-source=https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-vanilla-0.0.9.yaml install hls 2.12.0.0
ghcup set hls 2.12.0.0
clangd增加头文件路径识别
在项目根目录下增加.clangd文件:
1
2
3
4
CompileFlags:
Add:
- -I/home/woc/repo/DynTraceEngine/DynamoRIO-Linux-11.3.0-1/include
- -I/home/woc/repo/DynTraceEngine/DynamoRIO-Linux-11.3.0-1/ext/include
然后再用nvim打开就不会提示“xxx.h not found”了