KDE 下区分多个 Electron 音频流:用 PipeWire 规则修正 Chromium 元数据
本文介绍了在 KDE Plasma 中解决多个 Electron 应用音频流均显示为“Chromium”的问题。核心思路是:KDE 默认优先显示 `application.name`(通常为“Chromium”),而 `application.process.binary` 字段包含了如 `bilibili`、`yesplaymusic` 等具体的程序名,更适合作为区分依据。作者排除了事后修改属性的方案(如 `pactl update-sink-input-proplist`),因为 PipeWire-Pulse 不支持改写已创建的流。
最终方案是利用 PipeWire 的 `pulse.rules`,在流创建阶段匹配 `application.name = "Chromium"` 和 `application.process.binary`,并覆盖 `application.name` 和 `node.name` 为实际程序名。作者还提供了一个用户级 systemd 服务,用于自动监听新出现的 Chromium 音频流并生成相应规则。该服务仅在首次发现新应用时会重启 `pipewire-pulse` 导致音频短暂中断,后续启动不会再受影响。
Arch Linux 配置 Wake-on-LAN:Realtek RTL8125 用 NetworkManager 持久唤醒
### 摘要
本文记录了在 Arch Linux 主机上配置局域网唤醒(WOL)的完整过程,目标是让有线网卡在关机后通过 Magic Packet 唤醒。文章强调配置的关键在于确认负责唤醒的有线网卡(Realtek RTL8125,内核驱动r8169),并通过NetworkManager的`802-3-ethernet.wake-on-lan=magic`参数持久化配置,而非临时修改。作者分别检查了连接配置、PCI设备唤醒开关(`power/wakeup`为enabled)、BIOS/UEFI待机供电等独立环节,最终通过`wakeonlan`工具向广播地址发送Magic Packet验证。文章还总结了常见失败点,如混用无线MAC地址、仅修改临时ethtool状态等,并提供了复盘检查清单,确保各层次配置正确后才能成功唤醒。
从 Windows HID 到 Linux 常驻服务:FK360 EL ARGB 数显驱动复盘
## 摘要
本文介绍了作者为FK360 EL ARGB水冷头在Linux系统上开发的开源驱动项目。该水冷头的数显原本只支持Windows官方软件,作者通过逆向分析,确认了其通过USB HID接口使用固定65字节报告传输监控数据的协议,实现了纯Python标准库的Linux用户态驱动。
文章详细解析了65字节报告的数据结构,包括CPU/GPU温度、占用率、频率、功耗等字段的偏移和编码方式。针对Linux系统,作者解决了多源数据采集问题,包括从hwmon读取温度风扇、从/proc读取CPU占用和内存、从Intel RAPL读取CPU功耗、以及通过nvidia-smi获取GPU数据的技术方案。驱动通过systemd以root常驻运行,并配有udev规则管理设备权限,还提供了TUI配置界面和安装脚本。项目代码已开源在GitHub上。
LXC 容器部署 OpenClaw 指南:硬核破解 Homebrew 的 Root 限制
本文介绍了在LXC容器中以root用户部署OpenClaw时,解决其Skill依赖Homebrew(Linuxbrew)禁止root运行限制的两种方案。方案一遵循官方规范,创建隔离的“linuxbrew”用户并安装,通过环境变量供OpenClaw调用。方案二则通过修改Homebrew源码(brew.sh和api.rb文件),直接绕过root检测和下载拦截,实现root身份下的直装与使用,并配置了必要的Git信任和环境变量。最终,修补后的环境可顺利使用brew为OpenClaw安装Skill所需工具链。
一次 Playwright + Docker 的踩坑记录
本文作者分享了在服务器上部署使用Playwright进行网页截图功能时遇到的三个主要问题及解决方案。首先,由于网络环境差,无法在线下载Chromium浏览器,作者采用离线拷贝浏览器文件并设置环境变量`PLAYWRIGHT_BROWSERS_PATH`指向该目录的方法绕过下载。其次,即使浏览器文件存在,仍因缺少系统动态库而无法启动,需在Docker中安装Chromium的运行时依赖库。最后,为解决中文字体显示为方框或误用日文字形的问题,作者安装了Noto CJK字体并配置字体优先级,确保简体中文优先显示。文末提供了完整的Dockerfile示例,通过离线浏览器、安装依赖和调整字体,最终实现了稳定运行。
KDE 下 WPS 双击文件打不开的问题及解决方案
本文总结了在KDE桌面环境下使用WPS Office时无法通过双击打开文件的问题及其解决方案。问题主要源于WPS新版Linux命令行启动器的bug,以及无法正确处理KIO-FUSE挂载的SMB/NAS路径。作者在社区提供的AUR脚本基础上进行了改进,增强了自动切换工作目录、支持多种路径格式、添加日志记录和多文件兼容功能。通过创建并配置自定义启动脚本,并修改.desktop文件中的启动命令,成功解决了远程文件的打开问题,但本地文件受WPS自身限制可能仍无法打开。改进后的方案提供了更稳定的文件打开体验和调试支持。
[科技杂谈]科技心得杂谈
未读
一次“简单”的部署:为 Venera Sub Web UI 踩过的那些坑
本文作者分享了为漫画阅读器Venera开发订阅管理工具并部署时遇到的系列问题。开发过程顺利,仅用数小时完成核心功能,但部署时接连遭遇依赖冲突:服务器Glibc版本过旧、缺少GUI库文件。改用Docker后,又发现无头应用仍需X11虚拟屏幕(Xvfb),导致镜像臃肿至1.1GB。最终遇到数据持久化问题,因Docker挂载点导致系统rename操作跨文件系统失败,通过统一挂载整个用户目录解决。此次经历凸显了部署运维的复杂性,底层机制与容器化环境可能引发意外挑战,需细致应对。
[科技杂谈]科技心得杂谈
未读
通过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 的播放器。
[科技杂谈]科技心得杂谈
未读
秘制全局脚本解决部分网站锁区问题
文章核心:解决代理工具虽然能连上却仍存在「地区锁」的问题。思路是在 Clash Verge Rev(Linux/Win 均支持)中利用「全局扩展脚本」功能,根据国旗与国家名称关键词自动为特定域名挑选地区节点。脚本已开源在 LuorixDev/ClashVerge_UsefulScript。
关键点:
1) 传统改配置文件脚本一遇更新就失效,节点名称变化又难精准匹配。
2) 新脚本在配置文件加载时运行,通过关键词(🇺🇸/US/America 等)或备用域名先找 proxy-group,再退回到 proxies 列表找节点,把新规则插入规则列表最顶部。
3) 用户只需改 USER_CONFIG 部分:每条规则写清域名、规则类型、关键词、备用域名及是否启用。
4) 全程记录详细日志,开关可控。
Wayland下的Sunshine+虚拟屏幕配置
文章记录作者在买了台一加平板后,想让它充当 Linux 副屏的折腾经过。核心需求是在 Wayland 下生成一块虚拟显示器,以便通过 Sunshine 把桌面串到平板。主流方法在 X11 好办,Wayland 则需绕弯。实现方案:在启动时让内核把指定 GPU 输出口当作不存在的显示器,然后加载预先准备的 EDID(分辨率/帧率可选,不填更简单)——步骤就是准备 EDID 文件→放到 /usr/lib/firmware/edid→把 drm.edid_firmware=HDMI-A-1:edid/myvirt.bin video=HDMI-A-1:e 写进内核启动参数,更新 grub 或 systemd-boot 后重启系统→桌面已出现该虚拟显示器→Sunshine 里填对应显示器 ID 完成串流。用毕可在 KDE 设置里直接关掉虚拟显示器节省资源。