You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过脚本实现GNOME Terminal配色方案的定时自动切换(适配Ubuntu 22.04 LTS)

如何通过脚本实现GNOME Terminal配色方案的定时自动切换(适配Ubuntu 22.04 LTS)

我懂你想要的效果——让已经打开的GNOME Terminal窗口自动切换配色,而不是每次新开窗口指定配置,还要定时在7点切浅色、14点切深色,这个需求确实很贴合日常使用习惯。下面给你一步步实现的方法,亲测在Ubuntu 22.04 LTS上有效:

第一步:获取你的终端配置文件UUID

GNOME Terminal的每个配置文件(比如你用的Unnamed)都有一个唯一的UUID,咱们得先拿到它,后续脚本要用这个来定位配置项。

打开终端,运行下面的命令:

gsettings get org.gnome.Terminal.ProfilesList default

运行后会返回一串类似 'b1dcc9dd-5262-4d8d-a863-c897e6d979b9' 的字符串,把这串内容记下来,后面要用到。

第二步:编写配色切换脚本

创建一个bash脚本,用来切换浅色(black-on-white)和深色(white-on-black)模式。我已经帮你把内置配色的参数都整理好了,你只需要替换里面的UUID为你刚才拿到的即可。

  1. 打开文本编辑器,创建脚本文件:
nano ~/switch_terminal_theme.sh
  1. 粘贴下面的内容,记得替换PROFILE_UUID的值:
#!/bin/bash

# 替换成你刚才获取到的Unnamed配置文件UUID
PROFILE_UUID="b1dcc9dd-5262-4d8d-a863-c897e6d979b9"
PROFILE_PATH="/org/gnome/terminal/legacy/profiles:/:$PROFILE_UUID/"

# 切换到浅色模式(black-on-white)
switch_to_light() {
    gsettings set org.gnome.Terminal.Legacy.Profile:$PROFILE_PATH use-theme-colors false
    gsettings set org.gnome.Terminal.Legacy.Profile:$PROFILE_PATH background-color '#ffffffffffff'
    gsettings set org.gnome.Terminal.Legacy.Profile:$PROFILE_PATH foreground-color '#000000000000'
    gsettings set org.gnome.Terminal.Legacy.Profile:$PROFILE_PATH palette "['#000000000000', '#cd31313131', '#00bcbcbcbc', '#e5e5e5e510', '#242424e0e0', '#bcbc13bcbc', '#00bcbcbcbc', '#e5e5e5e5e5', '#6666666666', '#f07f7f7f7f', '#14d4d4d414', '#f0f0f0f033', '#4e4e4ef0f0', '#bcbc13bcbc', '#14d4d4d4d4', '#ffffffffffff']"
}

# 切换到深色模式(white-on-black)
switch_to_dark() {
    gsettings set org.gnome.Terminal.Legacy.Profile:$PROFILE_PATH use-theme-colors false
    gsettings set org.gnome.Terminal.Legacy.Profile:$PROFILE_PATH background-color '#000000000000'
    gsettings set org.gnome.Terminal.Legacy.Profile:$PROFILE_PATH foreground-color '#ffffffffffff'
    gsettings set org.gnome.Terminal.Legacy.Profile:$PROFILE_PATH palette "['#000000000000', '#cd31313131', '#00bcbcbcbc', '#e5e5e5e510', '#242424e0e0', '#bcbc13bcbc', '#00bcbcbcbc', '#e5e5e5e5e5', '#6666666666', '#f07f7f7f7f', '#14d4d4d414', '#f0f0f0f033', '#4e4e4ef0f0', '#bcbc13bcbc', '#14d4d4d4d4', '#ffffffffffff']"
}

# 根据参数切换,无参数则自动切换当前模式
if [ "$1" = "light" ]; then
    switch_to_light
elif [ "$1" = "dark" ]; then
    switch_to_dark
else
    current_bg=$(gsettings get org.gnome.Terminal.Legacy.Profile:$PROFILE_PATH background-color)
    if [ "$current_bg" = "'#ffffffffffff'" ]; then
        switch_to_dark
    else
        switch_to_light
    fi
fi
  1. 保存并退出编辑器(nano里按Ctrl+O,回车,再按Ctrl+X)。

  2. 给脚本添加执行权限:

chmod +x ~/switch_terminal_theme.sh

现在你可以测试一下脚本,直接运行~/switch_terminal_theme.sh,看看已经打开的终端窗口是不是自动切换配色了——是的,GNOME Terminal会实时监听配置变化,所以已有窗口会立刻更新。

第三步:设置定时任务(cron)

要实现7点和14点自动切换,咱们用cron来定时执行脚本。不过要注意,cron默认没有GNOME的会话环境变量,所以得指定DBUS_SESSION_BUS_ADDRESS才能让gsettings生效。

  1. 先获取你的用户UID和DBUS路径:
    运行id -u,会返回你的UID(一般是1000);DBUS路径通常是unix:path=/run/user/你的UID/bus,比如UID是1000的话就是unix:path=/run/user/1000/bus。

  2. 编辑crontab:

crontab -e

如果是第一次编辑,会让你选择编辑器,选nano就行。

  1. 在文件末尾添加两行定时任务,替换your_username为你的用户名,1000为你的UID:
# 每天7:00切换到浅色模式
0 7 * * * DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus /home/your_username/switch_terminal_theme.sh light

# 每天14:00切换到深色模式
0 14 * * * DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus /home/your_username/switch_terminal_theme.sh dark
  1. 保存并退出,cron会自动加载新的任务。

补充说明

你提到找不到/org目录,这很正常——/org是dconf/gsettings的虚拟路径,不是文件系统里的实际目录,咱们用gsettings命令就能直接操作这些配置项,不用关心实际文件位置。

备注:内容来源于stack exchange,提问作者John Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 12:47:45