ustaw kolor tła / tekstu terminala gnome ze skryptu bash

22

Chciałbym ustawić #002b36kolor tła ( ) i pierwszego planu terminala gnome w Ubuntu 13, używając skryptu bash.

Próbowałem, gconftoolale nie udało mi się.

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

NAME
       gconftool-2 - GNOME configuration tool

Moja gnome terminalwersja to

$ gnome-terminal --version
GNOME Terminal 3.6.1

wprowadź opis zdjęcia tutaj

Obecnie używam interfejsu użytkownika preferencji terminala ubuntu, aby to osiągnąć.

wprowadź opis zdjęcia tutaj

prayagupd
źródło

Odpowiedzi:

20

Metoda nr 1 - Korzystanie z dconf

tło

dconfAby to zrobić, możesz użyć tego narzędzia, jednak jest to proces wieloetapowy.

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.

Stosowanie

$ 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.

Ogólne podejście

  1. Najpierw musisz uzyskać listę swoich gnome-terminalprofili.

    $ dconf list /org/gnome/terminal/legacy/profiles:/
    <profile id>
  2. Za pomocą tego <profile id>możesz uzyskać listę konfigurowalnych ustawień

    $ 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. Następnie możesz odczytać bieżące kolory pierwszego planu lub tła

    pierwszoplanowy

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

    tło

    $ dconf read /org/gnome/terminal/legacy/profiles:/<profile id>/background-color
    'rgb(0,0,0)'
  4. Możesz także zmienić kolory

    pierwszoplanowy

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

    tło

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

Przykład

  1. Uzyskaj mój identyfikator profilu

    $ dconf list /org/gnome/terminal/legacy/profiles:/
    :b1dcc9dd-5262-4d8d-a863-c897e6d979b9/
  2. Użyj identyfikatora profilu, aby uzyskać listę ustawień

    $ 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. Zmień swoje niebieskie tło

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

              ss # 1

Uwaga dotycząca kolorów

Możesz użyć notacji rgb(R,G,B)przy określaniu kolorów lub notacji mieszającej #RRGGBB. W obu notacjach argumenty są czerwone, zielone i niebieskie. Wartości w pierwszej notacji są liczbami całkowitymi w zakresie od 0-255 dla R, G lub B. W drugiej notacji wartości są w systemie szesnastkowym w zakresie od 00 do FF dla RR, GG lub BB.

Podając którykolwiek z nich dconf, musisz odpowiednio zawinąć go w podwójne cudzysłowy z zagnieżdżonymi pojedynczymi cudzysłowami. W przeciwnym razie dconfbędzie narzekać.

  • "'rgb(0,0,0)'"
  • "'#FFFFFF'"
  • itp.

Metoda nr 2 - Korzystanie z gconftool-2

W moim systemie Ubuntu 12.04 mogłem zmieniać kolory za pomocą wiersza poleceń w następujący sposób.

UWAGA: Opcje są ostatecznie zapisane w tym pliku $HOME/.gconf/apps/gnome-terminal/profiles/Default/%gconf.xml.

Ogólne podejście

  1. Najpierw musisz zdobyć drzewo dla gnome-terminalprofilu.

    $ gconftool-2 --get /apps/gnome-terminal/global/profile_list
    [Default]
  2. Za pomocą wynikowego drzewa możemy dowiedzieć się, jakie atrybuty można konfigurować.

    $ 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. Pobierz / ustaw background_colori foreground_coloratrybuty

    $ 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. Potwierdzać

    $ 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

Referencje

slm
źródło
3
Ogromne podziękowania za tę świetną odpowiedź. Ale mój terminal nie podał żadnych profilidconf list /org/gnome/terminal/legacy/profiles:/
prayagupd
@PrayagUpd - Patrzę na instalację Ubuntu 12.04 i wygląda na to, że gnome-terminal nie jest domyślny. Emulator terminala Debian X to def. Można sprawdzić w / tego polecenia w zakładce Utilities exo-preferred-applications. Szczegóły są tutaj: askubuntu.com/questions/356842/… . Czy możesz to potwierdzić? Powyższe zostało zrobione przy instalacji Fedory 19 GNOME 3.10.
slm
Tak, Debian X terminal emulatorbył domyślny w 13.04, zmiana go również na gnome terminalnie działała.
prayagupd
@PrayagUpd - czy metoda nr 2 działa dla Ciebie?
slm
1
od wersji Ubuntu 18.04 należy teraz używać sudo dconf whateverpodczas wydawania poleceń
Scott Stensland,
0

Stworzyłem niektóre funkcje oparte na kodzie Github z innych wątków. Możesz umieścić te funkcje w swoim ~/.bashrcpliku. Jak widać, jeśli zadzwonisz create_random_profile:

  1. Spowoduje to sprawdzenie i usunięcie każdego wcześniej utworzonego losowego profilu.
  2. Stworzy losowy profil nazwy w terminalach gnome.
  3. Ustawi tę nazwę w zmiennej środowiskowej, której możesz użyć do zmiany koloru we wstępnie zdefiniowanych funkcjach. Zobacz ostatnią funkcję setcolord.

To powinno być przydatne, aby mieć wiele terminali o różnych kolorach. Poza tym dzięki predefiniowanym funkcjom możesz zmieniać te kolory w locie.

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
źródło