Linux命令-xset(X11 用户偏好设置)
- 🔰 简介
- 📖 语法
- ⚙️ 选项分类
- 键盘(Keyboard/Bell)参数
- 鼠标(Mouse)参数
- 屏幕保护(Screen Saver)参数
- DPMS(Display Power Management Signaling)
- 显示(Display)参数
- 💡 示例
- 示例 1:查询当前状态
- 示例 2:键盘和铃声设置
- 示例 3:鼠标加速度调节
- 示例 4:屏幕保护和电源管理
- 示例 5:~/.xinitrc 完整配置示例
- 示例 6:自动控制显示器电源
- ⚠️ 注意
- 📚 相关命令
- 📝 总结
快速参考:xset是X Window 系统的用户偏好设置工具,用于控制键盘铃声、鼠标加速度、屏幕保护、显示器电源管理(DPMS)、字体路径等 X 服务器参数。它通常在~/.xinitrc或~/.xprofile中配置,是传统 X11 桌面环境定制的核心命令。
现代桌面环境(GNOME/KDE)通过各自的设置面板管理这些选项,但
xset在轻量级窗口管理器(i3、dwm、openbox)和自动化脚本中仍然不可或缺。
🔰 简介
X 服务器维护一系列运行时参数,影响用户与图形界面交互的体验。xset是修改这些参数的命令行工具,覆盖四个主要领域:
- 键盘(Keyboard):按键音量、按键重复速率、铃声设置
- 鼠标(Mouse):加速度阈值、加速度值
- 屏幕(Screen):屏幕保护(Screen Saver)、DPMS 电源管理
- 显示(Display):字体路径、像素颜色图
安装方式:
# Debian/Ubuntu$sudoapt-getinstallx11-xserver-utils# RHEL/CentOS/Fedora$sudoyuminstallxorg-x11-server-utils# RHEL 7$sudodnfinstallxorg-x11-server-utils# Fedora / RHEL 8+# 验证安装$whichxset /usr/bin/xset📖 语法
xset[选项][参数...]⚙️ 选项分类
键盘(Keyboard/Bell)参数
| 参数 | 说明 |
|---|---|
b [on/off] | 控制铃声总开关 |
b [音量] [音高] [持续时间] | 设置铃声参数:音量(0-100)、音高(Hz)、持续时间(ms) |
c [on/off] | 控制按键点击音量开关 |
c [音量] | 设置按键点击音量(0-100) |
r [on/off] | 控制按键自动重复 |
r [速率] [延迟] | 设置自动重复:速率(字符/秒)、延迟(ms) |
鼠标(Mouse)参数
| 参数 | 说明 |
|---|---|
m [阈值] [加速度] | 设置鼠标加速度:阈值(像素)、加速度(倍率) |
m [阈值] [加速度] [阈值] | 设置独立 X/Y 轴加速度 |
m default | 恢复鼠标默认设置 |
屏幕保护(Screen Saver)参数
| 参数 | 说明 |
|---|---|
s [on/off] | 控制屏幕保护开关 |
s [超时] [周期] | 设置屏保:超时(秒)、周期(秒) |
s default | 恢复屏保默认设置 |
s blank | 屏保模式:空白屏幕 |
s noblank | 屏保模式:不空白(仅节能) |
s expose | 屏保模式:允许曝光事件 |
s noexpose | 屏保模式:禁止曝光事件 |
s activate | 立即激活屏幕保护 |
s reset | 重置屏幕保护计时器 |
DPMS(Display Power Management Signaling)
| 参数 | 说明 |
|---|---|
dpms 选项 | 控制能源之星电源管理 |
+dpms | 启用 DPMS |
-dpms | 禁用 DPMS |
dpms [待机] [挂起] [关闭] | 设置三个阶段的超时时间(秒) |
dpms standy | 立即进入待机模式 |
dpms suspend | 立即进入挂起模式 |
dpms off | 立即关闭显示器 |
dpms force off | 强制立即关闭显示器 |
显示(Display)参数
| 参数 | 说明 |
|---|---|
q | 查询状态(最常用):显示所有当前设置 |
fp [路径列表] | 设置字体路径 |
+fp 路径 | 添加字体路径 |
-fp 路径 | 删除字体路径 |
fp default | 恢复默认字体路径 |
fp rehash | 重新扫描字体路径 |
led [1-32] [on/off] | 控制键盘 LED 灯 |
p [值] [颜色值] | 设置像素颜色图 |
-display 显示器 | 指定 X 显示器 |
💡 示例
示例 1:查询当前状态
# xset q 是使用最频繁的命令——查看所有当前设置$ xset q Keyboard Control: auto repeat: on key click percent:0LED mask: 00000002 XKB indicators: 00: Caps Lock: off 01: Num Lock: on 02: Scroll Lock: off auto repeat delay:500repeat rate:33auto repeating keys: 00ffffffdffffbbf bell percent:50bell pitch:400bell duration:100Pointer Control: acceleration:2/1 threshold:4Screen Saver: prefer blanking:yesallow exposures:yestimeout:600cycle:600Colors: default colormap: 0x20 BlackPixel: 0x0 WhitePixel: 0xffffff Font Path: /usr/share/fonts/X11/misc/,/usr/share/fonts/X11/Type1/, /usr/share/fonts/X11/75dpi/,/usr/share/fonts/X11/100dpi/,built-ins DPMS(Energy Star): Standby:600Suspend:900Off:1200DPMS is Enabled Monitor is On# 逐项解读:# Keyboard: 按键重复开启,重复延迟 500ms,速率 33 字符/秒# Pointer: 鼠标加速度 2/1(2倍),阈值 4 像素# Screen Saver: 600 秒(10分钟)后启动屏保# DPMS: 待机 10 分钟 → 挂起 15 分钟 → 关闭 20 分钟示例 2:键盘和铃声设置
# ========== 关闭系统铃声(服务器环境必备!)==========$ xset b off# 验证$ xset q|grep"bell percent"bell percent:0bell pitch:400bell duration:100# ========== 设置铃声参数 ==========$ xset b on# 开启铃声$ xset b80800200# 音量 80%,音高 800Hz,持续 200ms# 测试铃声$ xset b on&&echo-e'\a'# 终端中播放一声# ========== 调整按键重复速率 ==========# 适合快速滚动/移动光标的场景$ xset r rate25030# 延迟 250ms,速率 30 字符/秒$ xset r rate20050# 更快的重复(延迟 200ms,速率 50)# 默认值通常为 rate 500 33$ xset r rate50033# 恢复默认# ========== 关闭按键重复(特殊场景)==========$ xset r off# 按住键不自动重复$ xset r on# 重新开启# ========== 控制键盘 LED ==========$ xset led3# 开启 LED 3(通常为滚动锁定灯)$ xset-led3# 关闭 LED 3# 预期效果:# 铃声关闭后,终端 Bell 不再发出声音# 按键速率调整后立即生效,无需重启 X示例 3:鼠标加速度调节
# 鼠标加速度是影响操作手感的关键参数# 语法: xset m [加速度分子/分母] [阈值像素]# ========== 查看当前鼠标设置 ==========$ xset q|grep-A2"Pointer Control"Pointer Control: acceleration:2/1 threshold:4# ========== 加速模式 ==========# 鼠标移动超过 4 像素后,光标速度翻倍$ xset m24# 加速度 2x,阈值 4px# 高灵敏度(适合大屏幕/多显示器)$ xset m42# 加速度 4x,阈值 2px(几乎立即加速)$ xset m33# 加速度 3x,阈值 3px# 线性模式(不推荐,指针难以精确定位)$ xset m10# 无加速,完全线性# 极度加速(游戏玩家偏好)$ xset m101# 加速度 10x,阈值 1px# ========== 恢复默认 ==========$ xset m default# ========== 分轴加速(高级)==========# xset m [分子] [分母] [阈值],更大的分母=更平滑$ xset m214# 加速度 2/1 = 2x,阈值 4px$ xset m526# 加速度 5/2 = 2.5x,阈值 6px# 5/2 比 2/1 更精确,因为中间增量更多# 预期效果:调整后可感受到鼠标指针速度变化,需尝试找到最适合的值示例 4:屏幕保护和电源管理
# ========== 屏幕保护控制 ==========# 关闭屏幕保护(演示/播放视频时)$ xset s off# 查询确认$ xset q|grep"Screen Saver"# 设置屏幕保护超时$ xset s300# 5 分钟后启动屏保$ xset s600600# 10 分钟后启动,周期 10 分钟$ xset s0# 禁用屏保超时# 屏幕保护模式$ xset s blank# 屏保:空白屏幕$ xset s noblank# 屏保:不空白(仅节能信号)$ xset s expose# 允许屏保触发曝光事件$ xset s noexpose# 禁止曝光事件# 立即激活屏保(测试屏保效果)$ xset s activate $ xset s reset# 重置屏保计时器(从零开始)# ========== DPMS 显示器电源管理 ==========# 启用/禁用 DPMS$ xset +dpms# 启用节能$ xset-dpms# 禁用节能# 设置三个阶段的时间(秒)$ xset dpms300600900# 待机5分钟 → 挂起10分钟 → 关闭15分钟$ xset dpms60012001800# 待机10分钟 → 挂起20分钟 → 关闭30分钟# 立即控制显示器$ xset dpms force standby# 立即待机$ xset dpms forcesuspend# 立即挂起$ xset dpms force off# ==立即关闭显示器==$ xset dpms force on# 立即打开显示器# ========== 查询 DPMS 状态 ==========$ xset q|grep-A5DPMS DPMS(Energy Star): Standby:600Suspend:1200Off:1800DPMS is Enabled Monitor is On# ========== 演示/看电影时禁用一切中断 ==========$ xset s off# 关闭屏保$ xset-dpms# 禁用显示器节能$ xset s noblank# 屏保不空白# 恢复电影结束后$ xset s on# 开启屏保$ xset +dpms# 开启节能$ xset dpms6009001200# 恢复默认时间示例 5:~/.xinitrc 完整配置示例
#!/bin/sh# ~/.xinitrc - X 会话启动时的自动化配置# 此文件由 startx 或 xinit 在启动窗口管理器前执行# ========== X 资源加载 ==========[-f~/.Xresources]&&xrdb-merge~/.Xresources# ========== 键盘配置 ==========# 关闭系统铃声(打扰他人)xset b off# 设置按键重复:延迟 250ms,速率 40 字符/秒xset r rate25040# 设置键盘布局(如果不在更早的阶段设置)# setxkbmap us# ========== 鼠标配置 ==========# 鼠标加速度:2x,阈值 4pxxset m24# 如果使用触摸板,可以用 synclient 或 libinput 配置# synclient TapButton1=1 TapButton2=3 2>/dev/null# ========== 屏幕保护配置 ==========# 10 分钟后启动屏保xset s600600# ========== DPMS 显示器节能 ==========# 启用 DPMSxset +dpms# 待机 10 分钟 → 挂起 15 分钟 → 关闭 20 分钟xset dpms6009001200# ========== 字体路径(如需要自定义字体)==========# xset +fp /usr/local/share/fonts/custom# xset fp rehash# ========== 设置壁纸(根据窗口管理器选择工具)==========# feh --bg-scale ~/Pictures/wallpaper.jpg # 使用 feh# nitrogen --restore # 使用 nitrogen# ========== 启动合成器(compositor,可选)==========# picom -b & # picom 合成器# ========== 启动面板/系统托盘(可选)==========# tint2 & # tint2 面板# ========== 启动窗口管理器(必须为最后一行)==========execi3# 或 exec dwm# 或 exec openbox-session# exec 是关键:替换当前 Shell,窗口管理器退出时 X 会话也结束示例 6:自动控制显示器电源
#!/bin/bash# 显示器自动电源管理脚本# 场景:下载大文件/编译代码时关闭显示器节能,完成后恢复monitor_sleep_disable(){echo"禁用显示器自动关闭..."xset s off xset-dpmsecho"显示器将保持开启直到手动恢复"}monitor_sleep_enable(){echo"恢复显示器自动关闭..."xset s on xset +dpms xset dpms6009001200echo"显示器将在 20 分钟无操作后关闭"}monitor_off_now(){echo"立即关闭显示器..."xset dpms force offecho"显示器已关闭,按任意键或移动鼠标唤醒"}# 长时间任务的包装函数run_with_monitor_on(){localCMD="$*"echo"执行任务期间保持显示器开启:$CMD"monitor_sleep_disableeval"$CMD"localEXIT_CODE=$?monitor_sleep_enableecho"任务完成,退出码:$EXIT_CODE"return$EXIT_CODE}# 使用示例:# run_with_monitor_on "wget https://example.com/large_file.iso"# run_with_monitor_on "make -j$(nproc)"# monitor_off_now # 立即关闭显示器离开座位# 快捷键绑定示例(在 i3 配置中):# bindsym $mod+Shift+d exec monitor_sleep_disable # 禁用休眠# bindsym $mod+Shift+e exec monitor_sleep_enable # 启用休眠# bindsym $mod+Shift+o exec monitor_off_now # 立即关屏⚠️ 注意
xset 与现代桌面环境的冲突:
| 设置项 | xset 控制 | GNOME 接管 | KDE 接管 |
|---|---|---|---|
| 鼠标加速度 | ✅xset m | GNOME Settings | KDE System Settings |
| 屏幕保护 | xset s | GNOME Power | KDE Power Management |
| DPMS | xset dpms | GNOME Power | KDE Power Management |
| 按键重复 | xset r | GNOME Accessibility | KDE Keyboard |
| 铃声 | xset b | 已默认关闭 | 已默认关闭 |
关键提示:
- 在 GNOME/KDE 中使用 xset 可能被覆盖:桌面环境的设置守护进程会定期重新应用其自己的配置,xset 的设置可能是暂时的。
xset设置不会跨会话持久化:重启 X 后所有设置恢复默认。持久化配置需写入~/.xinitrc、~/.xprofile或桌面环境的自启动脚本。- Wayland 不支持 xset:Wayland 合成器有自己的配置工具。使用
gsettings(GNOME Wayland)或合成器配置文件。 xset dpms force off是"软关闭":显示器进入节能模式(LED 指示灯闪烁或变橙),移动鼠标或按键盘会立即唤醒,不同于物理电源关闭。xset m的阈值单位是像素:阈值越小,加速越早介入。设为 0 意味着始终加速(线性速度模式下指针移动非常快)。
📚 相关命令
| 命令 | 说明 |
|---|---|
xrandr | 屏幕分辨率、刷新率、多显示器管理 |
setxkbmap | 键盘布局设置 |
xmodmap | 键盘映射修改 |
xinput | 输入设备列表和属性管理 |
xrdb | X 资源数据库管理 |
xdotool | X 自动化(模拟键盘/鼠标事件) |
xsetroot | 设置根窗口属性(背景色、光标) |
xhost | X 访问控制 |
xauth | X 认证管理 |
📝 总结
xset是 X11 用户偏好的统一配置入口,它将散落在 X 服务器各处的参数收拢到一个命令中:
- 键盘:铃声开关(
b on/off)、按键重复速率(r rate)——服务器和共享空间必备 - 鼠标:加速度调优(
m)——影响操作手感的隐形参数 - 屏幕保护:超时和模式控制(
s)——演示、观看视频时的关键设置 - DPMS:显示器节能(
dpms)——省电和延长显示器寿命的有效手段
在轻量级窗口管理器(i3/dwm/openbox)中,xset和~/.xinitrc是定制桌面环境的核心组合。现代桌面用户虽然不直接使用它,但理解xset的工作方式有助于排查"显示器不自动关闭"或"鼠标速度异常"等问题。