[科技杂谈]科技心得杂谈
未读
一次“简单”的部署:为 Venera Sub Web UI 踩过的那些坑
作者给漫画阅读器 Venera 写了一个自动监控更新并用邮件提醒的 Web 应用,代码仅用四五小时完成,却在部署时连环踩坑:先用 /tmp 做内存加速被忽视;服务器 Glibc 过老且缺少 GTK3、WebKitGTK,于是改用 Ubuntu 24.04 的 Docker;接着发现 Flutter Linux 可执行即使 headless 也需 X11,被迫引入 Xvfb,镜像膨胀到 1.1 G;最后因 Venera 在 ~/.cache 与 ~/.config 间用 rename 移动配置文件,而 Docker 将两者挂到不同卷导致跨挂载点失败,只能把整 /root 目录挂到同一持久卷才解决。文章强调“写代码简单,部署运维才是隐形主战场”。
[科技杂谈]科技心得杂谈
未读
通过PID锁定PipeWire ID,以解决PipeWire元数据无法很好定位不同软件的问题
文章提出一种在 Linux 下通过“进程 PID→PipeWire sink-input ID→音量或播放控制”的稳定链路,绕开 PipeWire 元数据可能缺失或重复的问题。先用 pgrep 拿到目标应用的 PID,再用 pactl list sink-inputs 搜出含该 PID 的段落,正则提取 Sink Input # 后面的数字即 PipeWire ID。拿到 ID 后,音量调节直接 pactl set-sink-input-volume 完成;播放/暂停、上/下曲等功能则用 D-Bus MPRIS 接口发送 PlayPause、Next 等调用。文中给出完整 Python 例子(含异步封装和日志),可直接用于 yesplaymusic 等支持 MPRIS 与 PipeWire 的播放器。
Wayland下的Sunshine+虚拟屏幕配置
文章是作者使用一加平板+Sunshine做Wayland桌面串流、把平板变为Linux副屏的记录。结构先交代缘起,再聚焦Wayland下虚拟显示器的做法。关键步骤三条:1. 选一条未占用的接口名(如HDMI-A-1),下载合适EDID→保存至/usr/lib/firmware/edid/xxx.bin;2. 在GRUB或systemd-boot启动参数追加drm.edid_firmware=HDMI-A-1:edid/xxx.bin video=HDMI-A-1:e,更新引导后重启即生成“假”显示器;3. 在桌面设置的显示器面板中确认虚拟屏,启动Sunshine填入对应屏幕ID即可串流;额外提示:KDE环境下可随时禁用该虚拟显示器以省资源。
Linux下Steam无法添加外置库(驱动器)
文章指出 Steam 出现“Cannot add library folder because of missing execute permissions”是因为外置分区挂载时用了包含 noexec 的默认参数,导致无法执行脚本。解决方法:编辑 /etc/fstab,在对应挂载行的参数末尾补加 exec,且确保 exec 出现在 user/users 之后;保存生效即可让 Steam 正常创建并运行脚本。
定位Linux下环境变量来自哪个文件
文章介绍了快速定位系统中被遗忘的环境变量来源的方法:先用 printenv 查看变量键值,再用一条统一的 grep 命令搜索所有常见配置文件(/etc/environment、~/.bashrc 等)中的 export 语句或变量值;示例以 fcitx5 相关变量演示,几秒内即可查到 /etc/environment 已集中设置,避免重复配置。
KDE下输入法配置的小细节
文章记录作者在 Arch+KDE Plasma 下以 Fcitx5 为框架配置中文输入的完整踩坑过程:先用 pacman 安装 fcitx5-im、configtool、chinese-addons、可选的 moegirl 词库与 Material 主题;在系统设置里启用 Fcitx5,KDE 自动写入环境变量,如仍被某些应用忽略,可手动在 /etc/environment 补充 GTK_IM_MODULE、QT_IM_MODULE 等六行以保证 GTK/Qt/游戏引擎识别;Wayland 下若 Chromium 类应用不生效,启动时加四个 Ozone/Wayland IME 参数;最后提醒在全局配置里把“开机自动激活”打开,免去手动 Ctrl+Space,同时列出无法切换、候选不显示、输入法图标丢失等常见故障的逐项检查要点。
Wayland下的KDE,软件置顶&OSD功能丢失的解决办法
文章解释了在 Wayland 下“窗口置顶”功能失效的根因:Wayland 协议不允许客户端直接操控窗口管理行为,而相关扩展未统一或尚未普及;GNOME 不支持“always-on-top”,KDE 则部分支持。作者提供的解决方案是借助 KDE 的“窗口规则”:在 KDE Plasma 的“系统设置→窗口管理→窗口规则”里建立一条匹配规则,按标题关键字把特定窗口强制置为“始终置顶”,并分享了可直接导入的 .kwinrule 配置示例;同理,第三方 Bilibili 客户端通过标题添加 “[Wayland置顶]” 标记,再由规则触发,也能实现 Wayland 环境下的置顶。
Linux下无法显示表情文字
文章提供了在 Linux 各发行版安装 Noto Color Emoji 彩色表情字体的命令:Ubuntu/Debian 用 `apt install fonts-noto-color-emoji`;Fedora 用 `dnf install google-noto-emoji-color-fonts`;CentOS/RHEL 先装 EPEL 再 `yum install google-noto-emoji-color-fonts`;Arch/Manjaro 用 `pacman -S noto-fonts-emoji`;openSUSE 用 `zypper install google-noto-emoji-color-fonts`。安装后可通过 `fc-list | grep "Noto Color Emoji"` 验证字体是否已注册。
Linux下中文字体显示异常(日文字形)
文章指出,系统使用 Noto 字体时常把日文字形排在中文之前,导致中文显示异常。解决方法是编辑 /etc/fonts/conf.d/64-language-selector-prefer.conf,将 Noto Sans CJK SC 与 Noto Sans Mono CJK SC 的优先级置于 JP 或 TC 之前,保存后即可恢复正确中文字形。
记录在LXC容器内配置docker和1panel面板
用户为了在家庭NAS上搜索并管理老照片,决定用Immich建一个私图库,并选了“特权LXC + 1Panel + Docker”这套组合。过程中踩了四个坑:最初普通LXC不能挂SMB,重建特权LXC后又连不上终端;配置/etc/fstab后SMB搞定;装1Panel、加第三方应用源后能在商店找到Immich;点安装却遇到Docker容器起不来且日志为空,最后在宿主机上改LXC配置(lxc.cgroup2.devices.allow: a 并把 lxc.cap.drop 置空)重启容器后才一切正常。经验是在特权LXC里跑Docker记得补这两条参数。