惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

大猫的无限游戏
大猫的无限游戏
J
Java Code Geeks
小众软件
小众软件
D
Docker
腾讯CDC
H
Hackread – Cybersecurity News, Data Breaches, AI and More
V
V2EX
博客园 - 叶小钗
GbyAI
GbyAI
Microsoft Azure Blog
Microsoft Azure Blog
Stack Overflow Blog
Stack Overflow Blog
B
Blog RSS Feed
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 【当耐特】
IT之家
IT之家
博客园 - 司徒正美
M
MIT News - Artificial intelligence
T
The Blog of Author Tim Ferriss
The GitHub Blog
The GitHub Blog
罗磊的独立博客
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
L
LangChain Blog
阮一峰的网络日志
阮一峰的网络日志
C
Check Point Blog

陈陈菌博客

如何在 podman 容器内使用 systemd 在 podman 运行 GUI 应用的经验总结 管理 podman 容器与镜像的导入或导出 用 xdg-dbus-proxy 解决容器的文件选择器的问题 解决 VSCodium 或 Code-Server 无法安装 GitHub Copilot 问题 不可变发行版 Fedora Silverblue 的体验记录 解决 apt 或 dnf 无法 tab 补全的问题 对 (MPA) 多页面切换实现丝滑动画的探索 让服务在非 Root 权限下使用 80 或 443 端口 AppImage 应用打包快速上手 Flatpak 使用和应用打包快速上手 如何用 webSocket 实现一个实时聊天应用 Linux 内核编译 | 快速上手 | deb 使用 debootstrap 构建 Debian 系根文件系统 高度可定制的 KDE 窗口装饰器 klassy 有关 docker、podman、nspawn、bwrap 的 Linux 容器图形性能测试 创建任意 Linux 容器并支持 GUI 程序 (Docker) 创建任意 Linux 容器并支持 GUI 程序 (nspawn) 文件同步工具 rsync 的使用 玲珑 (Linyaps) 应用打包 RPM 打包指南 | 精简版 PBR 材质的各种贴图类型入门 APU | Stable-Diffusion 使用记录 如何在 Electron 上启用 WebGPU Grub 主题安装与配置 Fcitx5 主题安装与自定义 不使用 Nginx 的网站开发指南 如何自制一个简易的资源监控程序 SQL 常用 CRUD 语法记录 Debian 打包入门,与需要注意的问题
i3wm | 自制一个极简的屏幕亮度调节器
GlumiStudio@ · 2024-03-01 · via 陈陈菌博客

在不需要额外软件包的情况下

2024-03-01 17:20:43

分类: Linux 标签: node.js,桌面美化


i3wm 是一个轻量级的平铺窗口管理器,它比 gnome 和 kde 这些桌面环境功能要单一,只显示 x 窗口程序,然后搭配快捷键去 打开/关闭/切换窗口。默认情况下不支持屏幕亮度调节。这需要安装额外的软件去支持,不过我们也可以去自制一个简单的。

在 ~/.config/i3/config 文件可以配置 i3wm 以及快捷键功能,

i3 给我们提供了两个叫 XF86MonBrightnessUp 以及 XF86MonBrightnessDown 的变量,分别对应的是笔记本电脑 亮度调节的"递增"和"减少"键

在其文件中编辑

bindsym XF86MonBrightnessUp exec "这里执行亮度递增的程序路径"
bindsym XF86MonBrightnessDown exec "这里执行亮度减少的程序路径"

我使用的是 amd 的笔记本电脑,在驱动完善的情况下,/sys/class/backlight/amdgpu_bl1/brightness 是有关亮度阈值的一个接口文件,只需要编辑它的数字大小即可(0-255)。

此时目标很明确了,我们只需要写两个脚本分别对应那两个快捷键来增加和减少阈值即可。 这里我使用的是 node.js 为案例 (当然也可以使用 python 或 shell)

add.js

#!/usr/bin/env node
const fs = require('fs')
const filePath = '/sys/class/backlight/amdgpu_bl1/brightness'
let number = Number(fs.readFileSync(filePath,'utf-8'))
number += 5
fs.writeFileSync(filePath,`${number}`,'utf-8')

sub.js

#!/usr/bin/env node
const fs = require('fs')
const filePath = '/sys/class/backlight/amdgpu_bl1/brightness'
let number = Number(fs.readFileSync(filePath,'utf-8'))
number -= 5
fs.writeFileSync(filePath,`${number}`,'utf-8')

给这两个脚本一定的可执行权限 chmod +x add.js路径 && chmod +x sub.js路径

最后我们需要将 /sys/class/backlight/amdgpu_bl1/brightness 这个文件给以一定的权限,一个开始我尝试了 chmod 的方式去给以。但发现这个接口文件会随着机器重启而重新挂载因此丢失权限设置。

我想到了一种通过 udev 规则的方式去持久化它,让其重新开机后权限设置依然生效。

编辑该文件并写入以下内容

sudo vim /etc/udev/rules.d/99-amdgpu.rules
KERNEL=="amdgpu_bl1", SUBSYSTEM=="backlight", RUN+="/bin/chmod 777 /sys/class/backlight/%k/brightness"

这条规则将会在amdgpu_bl1设备初始化时设置 brightness 文件的权限为可读写

重新加载一下 udev 规则

sudo udevadm control --reload-rules

然后就可以通过快捷键去调节亮度大小了,即使重启电脑也依然OK。一个极简的 i3wm 屏幕亮度调节器完成。