Logo
Overview
Hyprland 折腾记录

Hyprland 折腾记录

kinntaku kinntaku
April 3, 2026
14 min read

软件配置

  • 硬件

    • 电源配置项

      power-profiles-daemon vulkan-icd-loader

    • AMD

      mesa lib32-mesa vulkan-radeon vulkan-mesa-layers

    • NVIDIA

      nvidia-open-dkms lib32-nvidia-utils nvidia-utils nvidia-settings libva-nvidia-driver

    • 硬件加速

      libva libva-utils

    • 网络服务

      bluez networkmanager

    • 音频

      pipewire-pulse sof-firmware alsa-firmware alsa-ucm-conf

    • 华硕驱动

      asusctl rog-control-center

  • Btrfs

    snapper btrfs-assistant

  • 系统相关

    • 系统依赖

      base-devel paru fuse2

    • 系统监控

      htop nvtop wev

    • 系统美化

      fastfetch starship lsd

    • 神秘小软件

      AUR: flclash

    注: fuse2 用于 appimage 运行, wev 用于寻找笔记本上不知道叫什么名字的按键编号

  • 字体

    noto-fonts noto-fonts-cjk noto-fonts-emoji noto-fonts-extra

    ttf-jetbrains-mono ttf-jetbrains-mono-nerd

    wqy-zenhei

  • 登录管理器

    greetd greetd-tuigreet

  • 桌面环境

    hyprland hyprpolkitagent noctalia-shell

    xorg-xwayland xorg-xrdb

    xdg-desktop-portal-gtk xdg-desktop-portal-hyprland

  • 输入法

    fcitx5-im fcitx5-chinese-addons fcitx5-rime

  • 配套软件

    kitty firewalld vlc ffmpeg vlc-plugin-ffmpeg featherpad guvcview qalculate-qt obs-studio chromium

    aur: xnviewmp

    注: 由于加密媒体设定, chromium 有概率无法登录推特, 但多试几天也能登上去, 需稳定登录推特可换用 google-chrome (AUR)

  • 文件相关

    thunar thunar-volman tumbler gvfs-mtp

    aur: peazip-qt-bin

  • 主题美化

    qt6ct qt5ct nwg-look adw-gtk-theme adwaita-qt6

  • 剪贴板

    wl-clipboard wl-clip-persist cliphist

  • 截图

    grim swappy slurp hyprpicker

    注:

    • grim: 截取屏幕

    • swappy: 截图编辑器

    • slurp: 截图区域选择

    • hyprpicker: 实现冻结截图

  • 自用生产力软件

    kdenlive blender krita

    aur: wps-office-cn wps-office-mui-zh-cn visual-studio-code-bin

  • docker

    xorg-xhost lazydocker distrobox nvidia-container-toolkit podman

  • 虚拟机

    virt-manager qemu-full libvirt

  • 开发

    • 嵌入式开发

      picocom cmake arm-none-eabi-gcc arm-none-eabi-newlib openocd

      aur: stm32cubemx lceda-pro jlc-assistant-bin

  • 娱乐

    jdk21-openjdk zerotier-one steam prism-launcher zerotier-one

  • 社交工作软件

    aur: wechat-bin wemeet-bin linuxqq qqmusic-bin

    注: wemeet-bin 的共享屏幕在 hyprland 下仍不可用, kde 下可正常运行, hyprland 下可使用 flatpak 版本, 或者曲线救国使用 obs 虚拟摄像头

  • 一些小工具

    localsend scrcpy

    aur: pureref motrix-bin ventoy-bin

准备工作

账户设置

修改全局文本编辑器

Terminal window
vim ~/.bash_profile

写入

Terminal window
export EDITOR='vim'

添加账户

Terminal window
useradd -m -G wheel-s /bin/zsh kinntaku # 选择你喜欢的用户名
passwd kinntaku

编辑用户权限

Terminal window
EDITOR=vim visudo

取消注释

Terminal window
%wheel ALL=(ALL:ALL) ALL

登录管理器配置

编辑 /etc/greetd/config.toml

修改

Terminal window
command = "tuigreet --asterisks --time -r --cmd start-hyprland"
...
user = "kinntaku"

启用服务

Terminal window
systemctl enable greetd.service

启动必要服务

Terminal window
sudo systemctl enable --now NetworkManager
sudo systemctl enable --now sshd
sudo systemctl enable greetd.service
sudo systemctl enable --now bluetooth
sudo systemctl enable --now power-profiles-daemon.service
systemctl --user enable --now hyprpolkitagent.service
systemctl --user enable --now pipewire pipewire-pulse wireplumber

安装 nvidia-laptop-power-cfg

以下操作不能使用 root 账户进行

Terminal window
git clone https://gitlab.com/asus-linux/nvidia-laptop-power-cfg.git
cd nvidia-laptop-power-cfg
makepkg -sfi
systemctl enable --now nvidia-powerd

Hyprland 配置

设置 XDG

创建 ~/.config/xdg-desktop-portal/hyprland-portals.conf 写入

[preferred]
default=hyprland;gtk
org.freedesktop.impl.portal.FileChooser=gtk

修复 QQ 打开文件被挂起

选择一个位置创建 xdg-open

#!/bin/zsh
#gio open "$@"
/bin/xdg-open "$@" &

执行

Terminal window
sudo install -m 0755 ./xdg-open /usr/local/bin/xdg-open
# 测试是否成功
command -v xdg-open

配置 Kitty

编辑 ~/.config/kitty/kitty.conf 写入

Terminal window
font_family JetBrains Mono
font_size 10.0
bold_font auto
italic_font auto
confirm_os_window_close 0

设置字体

关闭进程结束确认对话框

设置 X11 软件缩放

创建并编辑 ~/.Xresources

Terminal window
Xft.dpi: 144

Hyprland 配置文件

默认配置文件 /usr/share/hypr/hyprland.conf

用户配置文件 ~/.config/hypr/hyprland.conf

注意: 以下配置是对默认配置文件的修改

环境变量

env = LANG,zh_CN.UTF-8
env = QT_QPA_PLATFORMTHEME,qt6ct # 设置 QT 主题

修改显示器缩放

monitor=,preferred,auto,1.60

修改默认应用

$terminal = kitty
$fileManager = thunar

自动启动

exec-once = kitty zsh -c "fastfetch; exec zsh" # 装逼使用
exec-once = qs -c "noctalia-shell"
exec-once = fcitx5
exec-once = flclash
exec-once = rog-control-center
exec-once = wl-paste --watch cliphist store
exec-once = xrdb -merge ~/.Xresources

通用

general{
gaps_in = 1 # 窗口内边距
gaps_out = 1 # 窗口外边距
...
layout = scrolling # 类似 Niri 的滚动布局
}

装饰

decoration {
rounding = 0 # 窗口圆角
inactive_opacity = 0.9 # 非激活窗口透明度
shadow {
enabled = false # 关闭阴影节省性能
}
blur {
enabled = false # 关闭模糊节省性能
}
}

关闭不需要的动画

animations {
enabled = yes
# 贝塞尔曲线定义
bezier = quick, 0.2, 1, 0.2, 1
# 窗口动画
animation = windows, 1, 2.5, quick
# 禁用渐入渐出
animation = fade, 0, 1, default
# 工作区切换, 为了适配 scrolling 布局, 改成了竖直切换
animation = workspaces, 1, 2.0, quick, slidevert
}

滚动布局设置

scrolling {
fullscreen_on_one_column = false # 关闭工作区只有一个窗口时自动占满宽度
column_width=0.55 # 设置默认宽度
explicit_column_widths = 0.55, 1.0 # 设置可以切换的宽度列表
focus_fit_method = 0 # 移动焦点时自动居中窗口而不是到刚好把窗口送进屏幕就停止
}

关闭默认二次元壁纸

misc {
force_default_wallpaper = 0 # Set to 0 or 1 to disable the anime mascot wallpapers
disable_hyprland_logo = true # If true disables the random hyprland logo / anime girl background. :(
}

输入设置

input {
follow_mouse = 2 # 关闭鼠标跟随焦点, 但是允许不对焦时滚动内容
# 添加内容
numlock_by_default = 1 # 开启小键盘锁定
float_switch_override_focus = 0 # 阻止鼠标到浮动窗口时被浮动窗口抢焦点
touchpad {
natural_scroll = true # 开启触摸板的自然滚动
}
}

手势

gesture = 3, vertical, workspace, r
gesture = 3, right, dispatcher, layoutmsg, move -col
gesture = 3, left, dispatcher, layoutmsg, move +col

更符合人类习惯的键位绑定

# Open Software
bind = $mainMod, T, exec, $terminal
bind = $mainMod, E, exec, $fileManager
bind = CONTROL SHIFT, Escape, exec, kitty htop
bind = ALT, SPACE, exec, kitty -e navi --path "$HOME/user_dotfiles/navi"
# Window config
bind = ALT, F4, killactive,
bind = $mainMod, F, togglefloating,
bind = SUPER ALT, F, fullscreen
bind = SUPER SHIFT, F, layoutmsg, colresize +conf
binde = SUPER, G, layoutmsg, colresize -0.1
binde = SUPER, H, layoutmsg, colresize +0.1
# Layout and position
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10
bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4
bind = $mainMod SHIFT, 5, movetoworkspace, 5
bind = $mainMod SHIFT, 6, movetoworkspace, 6
bind = $mainMod SHIFT, 7, movetoworkspace, 7
bind = $mainMod SHIFT, 8, movetoworkspace, 8
bind = $mainMod SHIFT, 9, movetoworkspace, 9
bind = $mainMod SHIFT, 0, movetoworkspace, 10
binde = $mainMod, D, layoutmsg, move +col
binde = $mainMod, A, layoutmsg, move -col
bind = $mainMod SHIFT, mouse_down, layoutmsg, move -col
bind = $mainMod SHIFT, mouse_up, layoutmsg, move +col
binde = $mainMod SHIFT, D, layoutmsg, swapcol r
binde = $mainMod SHIFT, A, layoutmsg, swapcol l
binde = $mainMod, W, workspace, r-1
binde = $mainMod, S, workspace, r+1
bind = $mainMod, mouse_down, workspace, r-1
bind = $mainMod, mouse_up, workspace, r+1
binde = $mainMod SHIFT, W, movetoworkspace, r-1
binde = $mainMod SHIFT, S, movetoworkspace, r+1
bind = $mainMod ALT, W, movefocus, u
bind = $mainMod ALT, S, movefocus, d
bind = $mainMod, Z, movewindow, l
bind = $mainMod SHIFT, Z, layoutmsg, promote
bind = $mainMod, M, togglespecialworkspace, magic
bind = $mainMod SHIFT, M, movetoworkspace, special:magic
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
bind = ALT, TAB, cyclenext
bind = ALT SHIFT, TAB, cyclenext, prev
# Noctalia Shell
$ipc = qs -c noctalia-shell ipc call
# Laptop multimedia keys for volume and LCD brightness
bindel = , XF86AudioRaiseVolume, exec, $ipc volume increase
bindel = , XF86AudioLowerVolume, exec, $ipc volume decrease
bindel = , XF86AudioMute, exec, $ipc volume muteOutput
bindel = ,XF86AudioMicMute, exec, $ipc volume muteInput
bindel = , XF86MonBrightnessUp, exec, $ipc brightness increase
bindel = , XF86MonBrightnessDown, exec, $ipc brightness decrease
bindel = , XF86AudioNext, exec, $ipc media next
bindel = , XF86AudioPrev, exec, $ipc media previous
bindel = , XF86AudioPlay, exec, $ipc media playPause
bind = , XF86Launch3, exec, rog-control-center
bind = , XF86Launch5, exec, $ipc powerProfile cycle
bind = $mainMod, grave, exec, $ipc launcher toggle
bind = $mainMod, V, exec, $ipc launcher clipboard
bind = $mainMod, N, exec, $ipc notifications toggleHistory
bind = $mainMod, L, exec, $ipc lockScreen lock
bind = $mainMod, X, exec, $ipc sessionMenu toggle
bind = $mainMod, I, exec, $ipc controlCenter toggle
bind = $mainMod ALT, E, exec, $ipc launcher emoji
bind = $mainMod ALT, V, exec, $ipc volume togglePanel
# Screenshot
bind = $mainMod, Q, exec, hyprpicker -r -z & sleep 0.2 && grim -g "$(slurp)" - | wl-copy; pkill hyprpicker
bind = $mainMod SHIFT, Q, exec, wl-paste --type image/png | swappy -f -
bind = , Print, exec, grim - | wl-copy

窗口规则

# wps 修复
windowrule = no_anim on, float on, match:title ^wps$
windowrule = no_anim on, float on, match:title ^et$
windowrule = no_anim on, float on, match:title ^wpp$
# 部分软件半透明
windowrule = opacity 0.95 override, match:class ^(code)$
windowrule = opacity 0.9 override, match:class ^(kitty)$
# 关闭 xwayland 缩放防止模糊
xwayland{
force_zero_scaling=true
}

设置 zsh

关闭 zsh 历史记录

编辑 ~/.zshrc 添加

Terminal window
HISTSIZE=1000
SAVEHIST=0
HISTFILESIZE=0

删除配历史记录文件 ~/.histfile

Nvidia GPU

使用独显运行应用

Terminal window
alias prime-run='__NV_PRIME_RENDER_OFFLOAD=1 __VK_LAYER_NV_optimus=NVIDIA_only __GLX_VENDOR_LIBRARY_NAME=nvidia '

配置 thunar

打开 编辑 - 配置自定义动作 - Open Terminal Here

将指令修改为

Terminal window
kitty -e zsh

系统配置

阻止usb外设唤醒电脑

创建系统服务 /etc/systemd/system/disable-xhc-wakeup.service

[Unit]
Description=Disable all XHC wakeup devices
After=multi-user.target
[Service]
Type=oneshot
ExecStart=/bin/bash -c "grep XHC /proc/acpi/wakeup | awk '{print $1}' | while read dev; do echo $dev | tee /proc/acpi/wakeup; done"
RemainAfterExit=true
[Install]
WantedBy=multi-user.target

启用并检查

Terminal window
sudo systemctl enable --now disable-xhc-wakeup.service
cat /proc/acpi/wakeup | grep XHC # 检查外设是否变为disabled

修改关机超时

编辑

Terminal window
sudo vim /etc/systemd/system.conf

取消注释并修改为 10s

Terminal window
DefaultTimeoutStopSec=10s

禁用密码尝试次数耗尽锁定时间

编辑 /etc/security/faillock.conf

修改

Terminal window
deny = 0

针对某些没 NumbLock 指示灯的傻逼键盘永久启用 Numlock

针对图形界面

编辑 /usr/share/X11/xkb/symbols/keypad

替换所有小键盘的功能键

KP_Home -> KP_7

KP_Up -> KP_8

KP_Insert -> KP_0

重启

针对控制台 (tuigreet)

创建 /etc/systemd/system/fix-ttynumpad.service

写入

[Unit]
Description=Force Numeric Keypad to output numbers in TTY
After=local-fs.target
[Service]
Type=oneshot
ExecStart=/bin/sh -c "printf 'keycode 71=seven\nkeycode 72=eight\nkeycode 73=nine\nkeycode 75=four\nkeycode 76=five\nkeycode 77=six\nkeycode 79=one\nkeycode 80=two\nkeycode 81=three\nkeycode 82=zero\nkeycode 83=period\n' | loadkeys"
StandardInput=tty
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target

启用服务

Terminal window
sudo systemctl enable --now fix-ttynumpad.service

字体设置

字体1

包含

字体字体字体字体字体字体
arialcomiczframditmonbaitisegoescbsylfaen
arialbdconsolaGabriolamsgothicsegoeuisymbol
arialbiconsolabgadugimsjhsegoeuibtahoma
arialiconsolaigadugibmsjhbdsegoeuiitahomabd
ariblkconsolazgeorgiamsjhlsegoeuiltaile
bahnschriftconstangeorgiabmsyhsegoeuisltaileb
calibriconstanbgeorgiaimsyhbdsegoeuiztimes
calibribconstanigeorgiazmsyhlseguibltimesbd
calibriiconstanzhimalayamsyiseguiblitimesbi
calibrilcorbelimpactmvboliseguiemjtimesi
calibrilicorbelbInkfreeNirmalaseguihistrebuc
calibrizcorbelijavatextNirmalaBseguilitrebucbd
cambriacorbelll_10646NirmalaSseguisbtrebucbi
cambriabcorbelliLeelaUIbntailuseguisbitrebucit
cambriaicorbelzLeelawUIntailubseguisliverdana
cambriazcourLeelUIslpalaseguisymverdanab
Candaracourbdluconpalabsimfangverdanai
Candarabcourbimalgunpalabisimheiverdanaz
Candaraicourimalgunbdpalaisimkaiwebdings
CandaralDengmalgunslphagspasimsunwingding
CandaraliDengbmarlettphagspabsimsunbYuGothB
CandarazDenglmicrosssegmdl2SitkaYuGothL
comicebrimamingliubsegoeprSitkaBYuGothM
comicbdebrimabdmmrtextsegoeprbSitkaIYuGothR
comiciframdmmrtextbsegoescSitkaZ

准备好一个 Windows 安装镜像

建议通过 ITELL YOU 下载 新站 旧站

Terminal window
# 解压 install.wim
7z e "your windows iso name" sources/install.wim
# 解压出字体文件
7z e install.wim -r 'Windows/Fonts/*.ttf' 'Windows/Fonts/*.ttc' -ofonts/
# 创建字体目录
sudo mkdir -p /usr/share/fonts/Windows
# 复制字体
sudo cp fonts/* /usr/share/fonts/Windows/
# 授予权限
sudo chmod 644 /usr/share/fonts/Windows/*
# 刷新字体缓存
sudo fc-cache -fv

字体2

字体字体字体字体字体字体
华文中宋华文仿宋华文彩云华文新魏华文楷体华文琥珀
华文细黑华文行楷华文隶体微软雅黑微软雅黑粗体
Terminal window
# 复制仓库
git clone https://github.com/chengda/popular-fonts
# 复制字体
sudo cp fonts/* /usr/share/fonts/Windows/
# 授予权限
sudo chmod 644 /usr/share/fonts/Windows/*
# 刷新字体缓存
sudo fc-cache -fv

打开 WPS 查看字体是否安装成功

dotfiles 管理

创建文件夹

创建目录

  • home: ~ 目录下的文件, 如 .zshrc

  • config: ~/.config 目录下按文件夹分类的文件

  • scripts: 存储自定义脚本

  • shotcut_scripts: 存储快捷启动脚本

创建链接脚本

功能列表

  • 将 home 目录下的文件创建符号链接到用户主目录

  • 将 config 目录下的文件夹创建符号链接到 ~/.config 目录

#!/bin/bash
DOTFILES_DIR=$(cd "$(dirname "$0")"; pwd)
echo "--- 开始应用 Dotfiles ---"
cleanup_dead_links() {
local target_dir="$1"
local source_dir="$2"
echo "清理 $target_dir 中的失效链接..."
find "$target_dir" -maxdepth 1 -type l | while read -r link; do
target_path=$(readlink "$link")
if [[ "$target_path" == "$source_dir"* ]] && [ ! -e "$target_path" ]; then
rm "$link"
echo "已删除失效链接: $(basename "$link")"
fi
done
}
# 1. 处理 home 文件夹内容
if [ -d "$DOTFILES_DIR/home" ]; then
for item in "$DOTFILES_DIR/home"/* "$DOTFILES_DIR/home"/.[!.]*; do
[ -e "$item" ] || continue
base_name=$(basename "$item")
target="$HOME/$base_name"
# 核心修改:使用 -snf
# -s: symbolic
# -n: no-dereference (防止在目录内创建嵌套链接)
# -f: force
ln -snf "$item" "$target"
echo "已链接: $base_name -> $target"
done
cleanup_dead_links "$HOME" "$DOTFILES_DIR/home"
fi
# 2. 处理 config 文件夹内容
if [ -d "$DOTFILES_DIR/config" ]; then
mkdir -p "$HOME/.config"
for item in "$DOTFILES_DIR/config"/*; do
[ -e "$item" ] || continue
base_name=$(basename "$item")
target="$HOME/.config/$base_name"
# 同理,使用 -snf
ln -snf "$item" "$target"
echo "已链接: $base_name -> $target"
done
cleanup_dead_links "$HOME/.config" "$DOTFILES_DIR/config"
fi
echo "--- Dotfiles 应用完成 ---"

必要软件设置

starship

编辑 ~/.zshrc 添加

Terminal window
if [[ "$TERM" != "linux" ]]; then # 只在交互式终端下启用
source <(starship init zsh)
fi

可以选择 官网 上的模板

这里以 Tokyo Night Preset 主题演示

创建文件

Terminal window
starship preset tokyo-night -o ~/.config/starship.toml

复制官网的 toml 文件内容, 写入 ~/.config/starship.toml

更改徽标

[ 󰣇 ](bg:#a3aed2 fg:#090c0c)\

添加 conda 环境显示

...
$conda\
...
[conda]
symbol = ""
style = "bg:#212736"
format = '[[ $symbol ($environment) ](fg:#769ff0 bg:#212736)]($style)'

Fcitx5

编辑 /etc/environment

添加

Terminal window
XIM=fcitx5
XIM_PROGRAM=fcitx5
GTK_IM_MODULE=fcitx5
QT_IM_MODULE=fcitx5
XMODIFIERS=@im=fcitx5
SDL_IM_MODULE=fcitx5
GLFW_IM_MODULE=fcitx5

编辑 ~/.config/gtk-3.0/settings.ini

添加

Terminal window
gtk-im-module = fcitx

Fcitx5 配置 - 输入法 - 配置附加组件 - 经典用户界面 - 主题:默认深色,深色主题:默认深色

Fcitx5 配置 - 输入法 - 配置附加组件 - 添加输入法 - 中州韵

Fcitx5 配置 - 输入法 - 配置全局选项 - 切换输入法: Super+空格, 在程序中显示预编辑文本: off

打开 ~/.local/share/fcitx5/rime/

将语法模型 wanxiang-lts-zh-hans.gram 文件放入这个目录。

把之前下载的方案压缩包(.zip)解压, 然后将解压出来的所有文件和文件夹放入这个目录 (注意不包含压缩包根目录, 其中default.yaml是rime配置, weasel.yaml是小狼毫皮肤等配置, 可选择性放入)

如果有更新的词库文件,将里面的内容覆盖放到 dicts 文件夹中

将萌娘词库文件 tone_moe.dict.yaml 放入 dicts 目录下

编辑 wanxiang.dict.yaml

添加新词库

- dicts/tone_moe

修改 default.yaml

# 注释掉快捷键, 防止和 vscode 冲突
# - Control+grave
...
# 注释掉 Shift_R 防止误触切换到英文
# Shift_R: commit_code # commit_code | commit_text | inline_ascii | clear | noop

修改 wanxiang.schema.yaml

调整设置

...
- name: ascii_mode
states: [ 中文 ] # 删掉无用输入状态
...
- name: ascii_punct
states: [ 中标, 英标 ]
reset: 1 # 默认开启英文标点
...
- name: emoji
states: [表情关, 表情开]
reset: 1 # 默认开启表情
...
spelling_hints: 0 # 取消拼音显示
tips_key: "Control+q" # 设置快速输入提示键为 Ctrl + Q

右键任务栏 Fcitx 图标 - 选择中州韵 - 右键地球图标项 - 选择重新部署

开发软件设置

micromamba

Terminal window
"${SHELL}" <(curl -L micro.mamba.pm/install.sh)

编辑 ~/.zshrc 添加

Terminal window
alias conda='micromamba'

如果使用 starship 终端美化, 禁用 micromamba 修改提示符

micromamba config set changeps1 false

podman

编辑 ~/.zshrc 添加

Terminal window
PATH=$PATH:$HOME/.local/podman/bin:$HOME/.local/bin
xhost +si:localuser:$USER
export DOCKER_HOST=unix:///run/user/1000/podman/podman.sock
alias docker='podman'

设置配置

Terminal window
sudo nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yaml
sudo nvidia-ctk runtime config ure --runtime=docker
sudo systemctl restart docker
systemctl --user enable --now podman.socket
  • 创建带cuda的Ubuntu容器

    从 Nvidia 的从库获取容器名称

    Terminal window
    distrobox create --name ubuntu2204 --additional-flags "--device nvidia.com/gpu=all" --image docker.io/nvidia/cuda:12.8.0-cudnn-devel-ubuntu22.04 --home /home/kinntaku/Documents/distrobox/ubuntu2204_home

    容器内如出现无法调用 xserver 可以尝试

    Terminal window
    sudo apt install libqt5gui5 -y

    容器内使用独显运行软

    将宿主机的 ~/.zshrc 中的 prime-run 配置复制到容器内的 ~/.zshrc

    Terminal window
    alias prime-run='__NV_PRIME_RENDER_OFFLOAD=1 __VK_LAYER_NV_optimus=NVIDIA_only __GLX_VENDOR_LIBRARY_NAME=nvidia '

    容器内使用 micromamba

    将宿主机的 ~/.zshrc 中的 micromamba 初始化代码复制到容器内的 ~/.zshrc

    Terminal window
    # >>> mamba initialize >>>
    ...
    # <<< mamba initialize <<<
    alias conda='micromamba'

    安装软件

    Terminal window
    sudo apt install git vim

    容器内调用 vulkan

    安装软件

    Terminal window
    sudo apt install mesa-utils vulkan-tools libglu1-mesa libxt6 libxmu6 libx11-6 libxrender1 libxrandr2 libxi6 libxcursor1 libxinerama1 libxxf86vm1

    测试 vulkan

    Terminal window
    prime-run glxinfo | grep OpenGL

    应该显示包含 Nvidia 的内容

配置 VSCode 进行开发

vscode 安装插件

  • Remote Development

修改 vscode 设置

"dev.containers.dockerPath": "podman",

注意: 每次更新 nvidia 驱动后都需要重新执行以下命令确保容器的动态链接库版本正常

Terminal window
sudo nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yaml

nodejs

添加环境加载

Terminal window
source /usr/share/nvm/init-nvm.sh
Terminal window
# 安装 nodejs
nvm install --lts
# 使用指定版本
nvm use --lts
# 安装依赖
npm install
# 启动项目
npm run dev

Github

Terminal window
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
ssh-keygen -t ed25519 -C "你的邮箱"
cat ~/.ssh/id_ed25519.pub
ssh -T git@github.com

GPG 密钥添加

Terminal window
gpg --import FILE # 导入密钥
gpg --delete-keys NAME # 删除密钥
gpg --delete-secret-keys NAME # 删除私钥
gpg -e -r NAME FILE # 加密文件
gpg -d FILE > FILEO # 解密文件
gpg -k # 列出密钥
gpg -K # 列出私钥

vscode 插件

  • 全局插件

    Remote Development Path Intellisense Edit CSV Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code Panda Theme

  • 博客

    MDX nodejs Astro

  • 嵌入式开发

    C/C++ Extension Pack Cortex-Debug Hex Editor CMake Tools

  • Python 开发

    Micromamba Python Extension Pack

  • Mujoco 开发

    URDF URDF Visualizer

  • 配置文件

    {
    // 显示设置
    "workbench.colorTheme": "Panda Syntax", // 配置主题
    "editor.fontFamily": "'JetBrainsMono Nerd Font', 'JetBrains Mono'", // 自定义字体
    "workbench.activityBar.location": "top", // 顶部活动栏, 节省空间
    "workbench.list.smoothScrolling": true, // 文件树平滑滚动
    "editor.cursorSmoothCaretAnimation": "on", // 光标平滑动画
    "editor.smoothScrolling": true, // 编辑器平滑滚动
    "editor.cursorBlinking": "smooth", // 光标平滑闪烁
    "editor.guides.bracketPairs": true, // 显示括号对引导线
    "debug.showBreakpointsInOverviewRuler": true, // 在编辑器最右侧的垂直滚动条区域显示断点标记
    // 编辑器行为设置
    "editor.acceptSuggestionOnEnter": "off", // 回车不接受建议
    "files.autoSave": "afterDelay", // 自动保存
    "files.autoGuessEncoding": true, // 自动检测文件编码
    "editor.mouseWheelZoom": true, // 鼠标滚轮缩放
    "editor.formatOnPaste": true, // 粘贴时格式化
    "editor.formatOnType": true, // 输入时格式化
    "editor.formatOnSave": true, // 保存时格式化
    "editor.wordWrap": "on", // 自动换行
    "github.copilot.nextEditSuggestions.enabled": true, // 启用 Copilot 下一次编辑建议
    "explorer.confirmPasteNative": false, // 粘贴文件不确认
    // 容器设置后端
    "dev.containers.dockerPath": "podman",
    // git 设置
    "git.enableSmartCommit": true, // 启用智能提交
    "git.confirmSync": false, // 同步时不确认
    // 文件移动设置
    "explorer.confirmDelete": false, // 删除文件时不确认
    "explorer.confirmDragAndDrop": false, // 拖拽文件不确认
    // markdown 设置
    "markdown.copyFiles.destination": {
    "**/*": "${documentBaseName}.assets/${unixTime}-${fileName}"
    }, // markdown 粘贴图片放到 assets 文件夹, 仿照 Typora
    // latex 设置
    // 鼠标悬停,预览公式时,支持 boldsymbol 宏
    "latex-workshop.hover.preview.mathjax.extensions": [
    "boldsymbol"
    ],
    // 是否启用 IntelliSense,自动补全引用的包中的环境和命令
    "latex-workshop.intellisense.package.enabled": true,
    // 编译后的文件输出目录
    "latex-workshop.latex.outDir": "./tmp",
    // 默认编译引擎为上次使用的
    "latex-workshop.latex.recipe.default": "lastUsed",
    // 预览复杂公式,使用时需要通过 command palette (命令面板) 打开
    "latex-workshop.mathpreviewpanel.cursor.enabled": true,
    "latex-workshop.latex.recipes": [
    {
    "name": "XeLaTeX",
    "tools": [
    "xelatexmk"
    ]
    },
    {
    "name": "PdfLaTeX",
    "tools": [
    "pdflatexmk"
    ]
    }
    ],
    "latex-workshop.latex.tools": [
    {
    "name": "xelatexmk",
    "command": "latexmk",
    "args": [
    "-synctex=1",
    "-xelatex",
    "-interaction=nonstopmode",
    "-file-line-error",
    "-outdir=%OUTDIR%",
    "%DOC%"
    ],
    "env": {}
    },
    {
    "args": [
    "-synctex=1",
    "-pdf",
    "-interaction=nonstopmode",
    "-file-line-error",
    "-outdir=%OUTDIR%",
    "%DOC%"
    ],
    "command": "latexmk",
    "env": {},
    "name": "pdflatexmk"
    }
    ],
    }

其他软件配置

配置 Navi

关闭第一级分类 (最左侧的一列)

创建 ~/.config/navi/config.yaml 写入

style:
tag:
width_percentage: 0
min_width: 0

编辑 ~/.zshrc 添加

Terminal window
# navi
# 设置 navi 的命令不自动执行
alias nv='print -z $(navi --print)'
# 你想要的snippet默认存储位置
export NAVI_PATH="$HOME/DOTFILES/navi"

目标文件夹创建 xxx.cheat 文件

其中格式

Terminal window
# refresh zshrc
source ~/.zshrc
# edit zshrc
nano ~./zshrc

Minecraft

prism-laucnehr

添加 java 启动参数

Terminal window
-Dforgewrapper.skipHashCheck=true

勾选 使用系统 openal

勾选 使用独显运行

HMCL

创建 hmcl 的快捷方式

#!/bin/bash
export __NV_PRIME_RENDER_OFFLOAD=1
export __GLX_VENDOR_LIBRARY_NAME=nvidia
java -Dglass.gtk.uiScale=1.5 -jar ~/Applications/Minecraft/HMCL-3.8.0.304.jar

Kirta

Kirta - 笔刷 - 笔刷编辑器 - 大小 - 覆盖旧笔刷 - 保存

Kirta - 设置 - 配置Kirta - 笔刷光标图标 - 箭头 - 笔刷轮廓形状 - 圆形轮廓

QQ 设置

编辑启动项

Terminal window
-enable-features=UseOzonePlatform -ozone-platform=wayland --enable-wayland-ime --wayland-text-input-version=3

XnviewMP

设置 - 标签卡 - 仅打开一个文件时隐藏标签: on; 退出 XnView 时, 关闭最后一个选项卡: on, 查看器标签卡上限: 1

设置 - 鼠标 - 鼠标左键 - 无修饰键: 移动图片

设置 - 鼠标 - 滚轮 - 无修饰键: 向上/向下滚动

设置 - 鼠标 - 鼠标右键 - 无修饰键: 创建选区

wechat

编辑启动项

Terminal window
QT_IM_MODULE=fcitx XMODIFIERS=@im=fcitx GTK_IM_MODULE=fcitx

qq音乐

如果使用 AppImage 版本, 编辑启动项

Terminal window
--no-sandbox

meshlab

修改启动项, 前面添加

Terminal window
QT_QPA_PLATFORM=xcb

chromium 设置

编辑启动项

启用硬件解码: 加入启动参数. 这里核显用来解码, 使用AMD

Terminal window
# Intel
google-chrome --enable-features=AcceleratedVideoDecodeLinuxZeroCopyGL,AcceleratedVideoDecodeLinuxGL,AcceleratedVideoEncoder
# AMD
google-chrome --enable-features=AcceleratedVideoDecodeLinuxZeroCopyGL,AcceleratedVideoDecodeLinuxGL,VaapiIgnoreDriverChecks
# Nvidia
google-chrome --enable-features=AcceleratedVideoDecodeLinuxZeroCopyGL,AcceleratedVideoDecodeLinuxGL,VaapiIgnoreDriverChecks,VaapiOnNvidiaGPUs

扩展插件

谷歌扩展商店

沉浸式翻译 篡改猴 Imagus Reborn Bitwarden 允许复制 + FireShot

GreasyFork

OCS 网课助手 bilibili视频下载 CSDN Focus 夸克网盘直链下载

labelme

Terminal window
conda create -n labelme python=3.13
conda activate labelme
pip install labelme

创建快捷方式

#!/bin/bash
export QT_QPA_PLATFORM=xcb
micromamba run -n labelme labelme &
disown

pdfmathtranslate-next

使用 docker

Terminal window
podman pull docker.io/awwaawwa/pdfmathtranslate-next
podman run --rm -p 7860:7860 docker.io/awwaawwa/pdfmathtranslate-next

访问 http://127.0.0.1:7860

kvm

Terminal window
# 启动网络
sudo virsh net-start default
# 自动启动网络
sudo virsh net-autostart default