установить фоновый цвет терминала gnome / цвет текста из скрипта bash

22

Я хотел бы настроить background ( #002b36) и цвет переднего плана моего терминала gnome в Ubuntu 13, используя скрипт bash.

Я пытался, gconftoolно не смог добиться успеха.

GCONFTOOL-2(1)                  User Commands                                                    GCONFTOOL-2(1)

NAME
       gconftool-2 - GNOME configuration tool

Моя gnome terminalверсия

$ gnome-terminal --version
GNOME Terminal 3.6.1

введите описание изображения здесь

В настоящее время я использую пользовательский интерфейс Ubuntu для настройки терминала.

введите описание изображения здесь

prayagupd
источник

Ответы:

20

Метод № 1 - Использование dconf

Задний план

Вы можете использовать dconfинструмент для достижения этой цели, однако это многошаговый процесс.

DESCRIPTION
       The dconf program can perform various operations on a dconf database, 
       such as reading or writing individual values or entire directories.
       This tool operates directly on the dconf database and does not read 
       gsettings schema information.Therefore, it cannot perform type and 
       consistency checks on values. The gsettings(1) utility is an 
       alternative if such checks are needed.

использование

$ dconf
error: no command specified

Usage:
  dconf COMMAND [ARGS...]

Commands:
  help              Show this information
  read              Read the value of a key
  list              List the contents of a dir
  write             Change the value of a key
  reset             Reset the value of a key or dir
  update            Update the system databases
  watch             Watch a path for changes
  dump              Dump an entire subpath to stdout
  load              Populate a subpath from stdin

Use 'dconf help COMMAND' to get detailed help.

Общий подход

  1. Сначала вам нужно получить список ваших gnome-terminalпрофилей.

    $ dconf list /org/gnome/terminal/legacy/profiles:/
    <profile id>
  2. Используя это, <profile id>вы можете получить список настраиваемых параметров

    $ dconf list /org/gnome/terminal/legacy/profiles:/<profile id>
    background-color
    default-size-columns
    use-theme-colors
    use-custom-default-size
    foreground-color
    use-system-font
    font
  3. Затем вы можете прочитать текущие цвета переднего плана или фона

    передний план

    $ dconf read /org/gnome/terminal/legacy/profiles:/<profile id>/foreground-color
    'rgb(255,255,255)'

    задний план

    $ dconf read /org/gnome/terminal/legacy/profiles:/<profile id>/background-color
    'rgb(0,0,0)'
  4. Вы также можете изменить цвета

    передний план

    $ dconf write /org/gnome/terminal/legacy/profiles:/<profile id>/foreground-color "'rgb(255,255,255)'"

    задний план

    $ dconf write /org/gnome/terminal/legacy/profiles:/<profile id>/background-color "'rgb(0,0,0)'"

пример

  1. Получить идентификатор моего профиля

    $ dconf list /org/gnome/terminal/legacy/profiles:/
    :b1dcc9dd-5262-4d8d-a863-c897e6d979b9/
  2. Используйте идентификатор профиля, чтобы получить список настроек

    $ dconf list /org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/
    background-color
    default-size-columns
    use-theme-colors
    use-custom-default-size
    foreground-color
    use-system-font
    font
  3. Измени свой синий фон

    $ dconf write /org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/background-color "'rgb(0,0,255)'"

              сс # 1

Примечание о цветах

Вы можете использовать либо обозначение rgb(R,G,B)при указании цветов, либо обозначение хеша #RRGGBB. В обоих обозначениях аргументы - красный, зеленый и синий. Значения в первой нотации являются целыми числами в диапазоне от 0 до 255 для R, G или B. Во второй нотации значения указаны в шестнадцатеричной системе в диапазоне от 00 до FF для RR, GG или BB.

При предоставлении любого из них dconfвам нужно правильно обернуть его в двойные кавычки с одинарными кавычками внутри. В противном случае dconfбудет жаловаться.

  • "'rgb(0,0,0)'"
  • "'#FFFFFF'"
  • и т.п.

Способ № 2 - Использование gconftool-2

В моей системе Ubuntu 12.04 я смог изменить цвета с помощью командной строки следующим образом.

ПРИМЕЧАНИЕ. Параметры в конечном итоге сохраняются в этом файле $HOME/.gconf/apps/gnome-terminal/profiles/Default/%gconf.xml.

Общий подход

  1. Сначала вам нужно получить дерево для gnome-terminalпрофиля пользователя.

    $ gconftool-2 --get /apps/gnome-terminal/global/profile_list
    [Default]
  2. Используя полученное дерево, мы можем узнать, какие атрибуты можно настроить.

    $ gconftool-2 -a "/apps/gnome-terminal/profiles/Default" | grep color
     bold_color_same_as_fg = true
     bold_color = #000000000000
     background_color = #FFFFFFFFFFFF
     foreground_color = #000000000000
     use_theme_colors = false
  3. Получить / установить атрибуты background_color&foreground_color

    $ gconftool-2 --get "/apps/gnome-terminal/profiles/Default/foreground_color"
    #000000000000
    
    $ gconftool-2 --set "/apps/gnome-terminal/profiles/Default/background_color" --type string "#000000FFFFFF"    
  4. Подтверждение

    $ gconftool-2 -R /apps/gnome-terminal/profiles/Default | grep color
     bold_color_same_as_fg = true
     bold_color = #000000000000
     background_color = #000000FFFFFF
     foreground_color = #000000000000
     use_theme_colors = true

Ссылки

SLM
источник
3
Огромное спасибо за этот отличный ответ. Но мой терминал не дал профилей наdconf list /org/gnome/terminal/legacy/profiles:/
prayagupd
@PrayagUpd - я смотрю на установку Ubuntu 12.04, и похоже, что gnome-терминал не используется по умолчанию. Эмулятор терминала Debian X - это определение. Вы можете проверить эту команду на вкладке Утилиты exo-preferred-applications. Подробности здесь: askubuntu.com/questions/356842/… . Вы можете это подтвердить? Выше было сделано при установке Fedora 19 GNOME 3.10.
СЛМ
Да, Debian X terminal emulatorбыло по умолчанию 13.04, изменить его на gnome terminalне работает либо.
prayagupd
@PrayagUpd - метод №2 работает для вас?
СЛМ
1
начиная с Ubuntu 18.04, теперь вы должны использовать его sudo dconf whateverпри выдаче команд
Скотт Стенсланд,
0

Я создал несколько функций, основанных на коде Github из других потоков. Вы можете поместить эти функции в свой ~/.bashrcфайл. Как видите, если вы позвоните create_random_profile:

  1. Он проверит и удалит любой предыдущий случайный профиль, который вы создали.
  2. Это создаст случайный профиль имени в терминалах gnome.
  3. Это имя будет установлено в переменной среды, которую вы можете использовать для изменения цвета в предопределенных функциях. Смотрите последнюю функцию setcolord.

Это должно быть полезно, чтобы иметь много терминалов с разными цветами. Кроме того, с помощью предопределенных функций вы можете изменять эти цвета на лету.

function create_random_profile() {
    #delete previous profiles in case there were something
    #delete_one_random_profile
    prof="`mktemp -u HACK_PROFILE_XXXXXXXXXX`"
    gconftool-2 --set "/apps/gnome-terminal/profiles/$prof/use_theme_colors" --type bool false
    gconftool-2 --type list --list-type string --set $prof_list "`gconftool-2 --get $prof_list | sed "s/]/,$prof]/"`"
    file="`mktemp`"
    gconftool-2 --dump "/apps/gnome-terminal/profiles/Default" | sed "s,profiles/$2,profiles/$prof,g" > "$file"
    gconftool-2 --load "$file"
    gconftool-2 --type string --set "/apps/gnome-terminal/profiles/$prof/visible_name" "$prof"
    rm -f -- "$file"
    export __TERM_PROF=$prof
}

function delete_one_random_profile() {
    regular="HACK_PROFILE_"
    prof=$(gconftool-2 --get /apps/gnome-terminal/global/profile_list | sed -n "s/.*\(HACK_PROFILE_..........\).*/\1/p")
    if [ ! -z "$prof"]; then
        echo "size ${#prof}"
        echo "size of regular ${#regular}"
        echo "DO DELETE of $prof"
        #if not empty
        gconftool-2 --type list --list-type string --set $prof_list "`gconftool-2 --get $prof_list | sed "s/$prof//;s/\[,/[/;s/,,/,/;s/,]/]/"`"
        gconftool-2 --unset "/apps/gnome-terminal/profiles/$prof"
    else
        echo "NOTHING TO DELETE"
    fi
}

function setcolord() {
    echo "Dont forget to change to Profile0 in the menu of your terminal->Change Profile->Profile_0"
    gconftool-2 --set "/apps/gnome-terminal/profiles/$__TERM_PROF/background_color" --type string white
    gconftool-2 --set "/apps/gnome-terminal/profiles/$__TERM_PROF/foreground_color" --type string black
}

function setcolor_cyan() {
    echo "Dont forget to change to $__TERM_PROF in the menu of your terminal->Change Profile->Profile_0"
    gconftool-2 --set "/apps/gnome-terminal/profiles/$__TERM_PROF/background_color" --type string "#8DCBCC"
    gconftool-2 --set "/apps/gnome-terminal/profiles/$__TERM_PROF/foreground_color" --type string black
}
joniale
источник