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

推荐订阅源

量子位
云风的 BLOG
云风的 BLOG
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
The Hacker News
The Hacker News
Martin Fowler
Martin Fowler
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
U
Unit 42
F
Full Disclosure
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Recorded Future
Recorded Future
Security Archives - TechRepublic
Security Archives - TechRepublic
阮一峰的网络日志
阮一峰的网络日志
T
Threatpost
P
Privacy International News Feed
GbyAI
GbyAI
Stack Overflow Blog
Stack Overflow Blog
MongoDB | Blog
MongoDB | Blog
I
Intezer
Recent Announcements
Recent Announcements
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
P
Privacy & Cybersecurity Law Blog
A
Arctic Wolf
博客园 - 聂微东
博客园 - 叶小钗
Cisco Talos Blog
Cisco Talos Blog
H
Help Net Security
S
Schneier on Security
Y
Y Combinator Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
T
The Exploit Database - CXSecurity.com
T
Tor Project blog
月光博客
月光博客
NISL@THU
NISL@THU
A
About on SuperTechFans
Spread Privacy
Spread Privacy
Blog — PlanetScale
Blog — PlanetScale
D
DataBreaches.Net
雷峰网
雷峰网
C
CXSECURITY Database RSS Feed - CXSecurity.com
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 【当耐特】
G
Google Developers Blog
W
WeLiveSecurity
P
Palo Alto Networks Blog
The Last Watchdog
The Last Watchdog
K
Kaspersky official blog
博客园 - 司徒正美
L
LINUX DO - 热门话题
小众软件
小众软件

陈陈菌博客

如何在 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 打包入门,与需要注意的问题 在 fedora 建立一个 Arch 容器 (bwrap) 在 fedora 上建立一个 debian 容器 (bwrap) 在 Linux 下启用内存压缩技术 zram 搭建一个本地轻量级聊天 Ai 我又又又重新上线了博客 如何通过命令行管理 wine 容器 (包括 proton) Btrfs 文件系统创建 swap 文件的方法 如何创建适用于 Linux 桌面的程序启动文件 在 Linux 控制 intel CPU 调度的方法 Arch Linux 的基本安装
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 屏幕亮度调节器完成。