快速参考:
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 $ sudo apt-get install x11-xserver-utils # rhel/centos/fedora $ sudo yum install xorg-x11-server-utils # rhel 7 $ sudo dnf install xorg-x11-server-utils # fedora / rhel 8+ # 验证安装 $ which xset /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: 0 led mask: 00000002
xkb indicators:
00: caps lock: off 01: num lock: on 02: scroll lock: off
auto repeat delay: 500 repeat rate: 33
auto repeating keys: 00ffffffdffffbbf
bell percent: 50 bell pitch: 400 bell duration: 100
pointer control:
acceleration: 2/1 threshold: 4
screen saver:
prefer blanking: yes allow exposures: yes
timeout: 600 cycle: 600
colors:
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: 600 suspend: 900 off: 1200
dpms 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: 0 bell pitch: 400 bell duration: 100 # ========== 设置铃声参数 ========== $ xset b on # 开启铃声 $ xset b 80 800 200 # 音量 80%,音高 800hz,持续 200ms # 测试铃声 $ xset b on && echo -e '\a' # 终端中播放一声 # ========== 调整按键重复速率 ========== # 适合快速滚动/移动光标的场景 $ xset r rate 250 30 # 延迟 250ms,速率 30 字符/秒 $ xset r rate 200 50 # 更快的重复(延迟 200ms,速率 50) # 默认值通常为 rate 500 33 $ xset r rate 500 33 # 恢复默认 # ========== 关闭按键重复(特殊场景)========== $ xset r off # 按住键不自动重复 $ xset r on # 重新开启 # ========== 控制键盘 led ========== $ xset led 3 # 开启 led 3(通常为滚动锁定灯) $ xset -led 3 # 关闭 led 3 # 预期效果: # 铃声关闭后,终端 bell 不再发出声音 # 按键速率调整后立即生效,无需重启 x
示例 3:鼠标加速度调节
# 鼠标加速度是影响操作手感的关键参数 # 语法: xset m [加速度分子/分母] [阈值像素] # ========== 查看当前鼠标设置 ========== $ xset q | grep -a 2 "pointer control" pointer control: acceleration: 2/1 threshold: 4 # ========== 加速模式 ========== # 鼠标移动超过 4 像素后,光标速度翻倍 $ xset m 2 4 # 加速度 2x,阈值 4px # 高灵敏度(适合大屏幕/多显示器) $ xset m 4 2 # 加速度 4x,阈值 2px(几乎立即加速) $ xset m 3 3 # 加速度 3x,阈值 3px # 线性模式(不推荐,指针难以精确定位) $ xset m 1 0 # 无加速,完全线性 # 极度加速(游戏玩家偏好) $ xset m 10 1 # 加速度 10x,阈值 1px # ========== 恢复默认 ========== $ xset m default # ========== 分轴加速(高级)========== # xset m [分子] [分母] [阈值],更大的分母=更平滑 $ xset m 2 1 4 # 加速度 2/1 = 2x,阈值 4px $ xset m 5 2 6 # 加速度 5/2 = 2.5x,阈值 6px # 5/2 比 2/1 更精确,因为中间增量更多 # 预期效果:调整后可感受到鼠标指针速度变化,需尝试找到最适合的值
示例 4:屏幕保护和电源管理
# ========== 屏幕保护控制 ========== # 关闭屏幕保护(演示/播放视频时) $ xset s off # 查询确认 $ xset q | grep "screen saver" # 设置屏幕保护超时 $ xset s 300 # 5 分钟后启动屏保 $ xset s 600 600 # 10 分钟后启动,周期 10 分钟 $ xset s 0 # 禁用屏保超时 # 屏幕保护模式 $ 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 dpms 300 600 900 # 待机5分钟 → 挂起10分钟 → 关闭15分钟 $ xset dpms 600 1200 1800 # 待机10分钟 → 挂起20分钟 → 关闭30分钟 # 立即控制显示器 $ xset dpms force standby # 立即待机 $ xset dpms force suspend # 立即挂起 $ xset dpms force off # ==立即关闭显示器== $ xset dpms force on # 立即打开显示器 # ========== 查询 dpms 状态 ========== $ xset q | grep -a 5 dpms dpms (energy star): standby: 600 suspend: 1200 off: 1800 dpms is enabled monitor is on # ========== 演示/看电影时禁用一切中断 ========== $ xset s off # 关闭屏保 $ xset -dpms # 禁用显示器节能 $ xset s noblank # 屏保不空白 # 恢复电影结束后 $ xset s on # 开启屏保 $ xset +dpms # 开启节能 $ xset dpms 600 900 1200 # 恢复默认时间
示例 5:~/.xinitrc 完整配置示例
#!/bin/sh # ~/.xinitrc - x 会话启动时的自动化配置 # 此文件由 startx 或 xinit 在启动窗口管理器前执行 # ========== x 资源加载 ========== [ -f ~/.xresources ] && xrdb -merge ~/.xresources # ========== 键盘配置 ========== # 关闭系统铃声(打扰他人) xset b off # 设置按键重复:延迟 250ms,速率 40 字符/秒 xset r rate 250 40 # 设置键盘布局(如果不在更早的阶段设置) # setxkbmap us # ========== 鼠标配置 ========== # 鼠标加速度:2x,阈值 4px xset m 2 4 # 如果使用触摸板,可以用 synclient 或 libinput 配置 # synclient tapbutton1=1 tapbutton2=3 2>/dev/null # ========== 屏幕保护配置 ========== # 10 分钟后启动屏保 xset s 600 600 # ========== dpms 显示器节能 ========== # 启用 dpms xset +dpms # 待机 10 分钟 → 挂起 15 分钟 → 关闭 20 分钟 xset dpms 600 900 1200 # ========== 字体路径(如需要自定义字体)========== # 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 面板 # ========== 启动窗口管理器(必须为最后一行)========== exec i3 # 或 exec dwm # 或 exec openbox-session # exec 是关键:替换当前 shell,窗口管理器退出时 x 会话也结束
示例 6:自动控制显示器电源
#!/bin/bash
# 显示器自动电源管理脚本
# 场景:下载大文件/编译代码时关闭显示器节能,完成后恢复
monitor_sleep_disable() {
echo "禁用显示器自动关闭..."
xset s off
xset -dpms
echo "显示器将保持开启直到手动恢复"
}
monitor_sleep_enable() {
echo "恢复显示器自动关闭..."
xset s on
xset +dpms
xset dpms 600 900 1200
echo "显示器将在 20 分钟无操作后关闭"
}
monitor_off_now() {
echo "立即关闭显示器..."
xset dpms force off
echo "显示器已关闭,按任意键或移动鼠标唤醒"
}
# 长时间任务的包装函数
run_with_monitor_on() {
local cmd="$*"
echo "执行任务期间保持显示器开启: $cmd"
monitor_sleep_disable
eval "$cmd"
local exit_code=$?
monitor_sleep_enable
echo "任务完成,退出码: $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 的工作方式有助于排查"显示器不自动关闭"或"鼠标速度异常"等问题。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论