如何在系统范围内应用终端颜色? (使用 /etc/profile.d 或类似的)

如何在系统范围内应用终端颜色? (使用 /etc/profile.d 或类似的)

我用用于 Shell 的 Base16脚本来更改 shell 的默认 ANSI 颜色。例如:

$ wget https://github.com/chriskempson/base16-shell/raw/master/scripts/base16-nord.sh
$ sh base16-nord.sh

该脚本从此更改终端颜色(我使用 openSUSE Leap 15.1 和 GNOME 3.26.2):

在此输入图像描述

对此:

在此输入图像描述

它不仅适用于 GNOME 终端,还适用于任何虚拟控制台(例如tty1)。

但我每次启动新的终端窗口/会话时都需要调用它,或者在~/.bashrc.

问题是:如何广泛应用该颜色主题系统? (以便所有用户应用相同的颜色主题)

大多数页面都解释了如何自定义PS1LS_COLORS,这些不是我想要的。这就是为什么我开始一个新问题。

答案1

我找到了一种在系统范围内(对所有用户)应用相同的 Base16 Shell 主题的方法。但我确实相信有更好的方法可以做到这一点。如有建议,我们将不胜感激。

  1. 将 Base16 Shell 下载到所有用户均可访问的文件夹(例如/usr/share/base16-shell/
$ sudo git clone https://github.com/chriskempson/base16-shell.git /usr/share/base16-shell/
  1. 系统范围~/.bashrc相当于/etc/bash.bashrc.local

/etc/bash.bashrc.local如有必要,创建该文件。

将以下内容附加到其中:

# Base16 Shell
BASE16_SHELL="/usr/share/base16-shell/"
[ -n "$PS1" ] && \
    [ -s "$BASE16_SHELL/profile_helper.sh" ] && \
        eval "$("$BASE16_SHELL/profile_helper.sh")"
  1. /etc/skel(新用户主页的框架)中,创建一个指向默认应用的主题的符号链接:
$ sudo ln -s /usr/share/base16-shell/scripts/base16-material-darker.sh /etc/skel/.base16_theme
  1. 创建一个新用户(在 openSUSE 上,您可以使用YaST 控制中心

  2. 登录新用户并打开 GNOME 终端。您应该看到该主题已应用:

在此输入图像描述

测试使用openSUSE Leap 15.2 Beta GNOME 实时镜像

笔记:

  1. 由于我们在 中工作/etc/skel,该主题将仅应用于新用户(在该过程之后创建的用户)。现有用户需要调用 Base16 Shell(仅一次)来应用主题。但是,正如我所说,我相信有更好的方法......
  2. AFAIK/etc/bash.bashrc.local适用于所有用户(包括现有用户和新用户),因此 Base16 Shell 实际上会为所有用户进行设置。如果愿意,每个人都可以调用 Base16 Shell 脚本来更改他们的主题。例如:
$ base16_material-lighter
  1. 我使用 GNOME 终端作为示例,但它也适用于虚拟控制台(例如tty1- Ctrl + Alt + F1)。但在虚拟控制台上我观察到一个奇怪的行为:

在此输入图像描述

颜色仅在登录后应用,并且不会全屏应用。

然后我运行:

$ clear

一切看起来都很好:

在此输入图像描述

(对于这个截图,clear命令没有出现,我ll又跑了一次)

使用另一个主题使问题更加明显:

在此输入图像描述

然后clear,然后ll又:

在此输入图像描述

相关内容