Stellen Sie die Hintergrund- / Textfarbe des Gnome-Terminals im Bash-Skript ein

22

Ich möchte den Hintergrund ( #002b36) und die Vordergrundfarbe meines Gnome-Terminals in Ubuntu 13 mit Bash-Skript einrichten.

Ich habe es versucht gconftool, konnte es aber nicht schaffen.

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

NAME
       gconftool-2 - GNOME configuration tool

Meine gnome terminalVersion ist

$ gnome-terminal --version
GNOME Terminal 3.6.1

Bildbeschreibung hier eingeben

Derzeit verwende ich die Benutzeroberfläche der Ubuntu-Terminaleinstellungen, um dies zu erreichen.

Bildbeschreibung hier eingeben

Gebet
quelle

Antworten:

20

Methode 1 - Mit dconf

Hintergrund

Sie können das dconfTool verwenden, um dies zu erreichen, es ist jedoch ein mehrstufiger Prozess.

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.

Verwendung

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

Allgemeiner Ansatz

  1. Zuerst müssen Sie eine Liste Ihrer gnome-terminalProfile abrufen.

    $ dconf list /org/gnome/terminal/legacy/profiles:/
    <profile id>
  2. Auf diese Weise erhalten <profile id>Sie eine Liste der konfigurierbaren Einstellungen

    $ 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. Sie können dann die aktuellen Farben des Vordergrunds oder des Hintergrunds ablesen

    Vordergrund

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

    Hintergrund

    $ dconf read /org/gnome/terminal/legacy/profiles:/<profile id>/background-color
    'rgb(0,0,0)'
  4. Sie können die Farben auch ändern

    Vordergrund

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

    Hintergrund

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

Beispiel

  1. Holen Sie sich meine Profil-ID

    $ dconf list /org/gnome/terminal/legacy/profiles:/
    :b1dcc9dd-5262-4d8d-a863-c897e6d979b9/
  2. Verwenden Sie die Profil-ID, um eine Liste der Einstellungen abzurufen

    $ 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. Ändere deinen Hintergrund blau

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

              ss # 1

Eine Anmerkung zu den Farben

Sie können entweder die Notation rgb(R,G,B)beim Festlegen Ihrer Farben oder die Hash-Notation verwenden #RRGGBB. In beiden Notationen sind die Argumente rot, grün und blau. Die Werte in der ersten Notation sind ganze Zahlen im Bereich von 0 bis 255 für R, G oder B. In der zweiten Notation sind die Werte hexadezimal im Bereich von 00 bis FF für RR, GG oder BB.

Wenn Sie eine dieser dconfOptionen bereitstellen, müssen Sie sie ordnungsgemäß in doppelte Anführungszeichen und in einfache Anführungszeichen einschließen. Sonst dconfwerde ich mich beschweren.

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

Methode 2 - Verwenden von gconftool-2

Auf meinem Ubuntu 12.04 System konnte ich die Farben wie folgt über die Kommandozeile ändern.

HINWEIS: Die Optionen werden letztendlich in dieser Datei gespeichert $HOME/.gconf/apps/gnome-terminal/profiles/Default/%gconf.xml.

Allgemeiner Ansatz

  1. Zuerst müssen Sie den Baum für gnome-terminaldas Profil von abrufen.

    $ gconftool-2 --get /apps/gnome-terminal/global/profile_list
    [Default]
  2. Anhand des resultierenden Baums können wir herausfinden, welche Attribute konfigurierbar sind.

    $ 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. Hole / Setze die background_color& foreground_colorAttribute

    $ 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. Bestätigen

    $ 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

Verweise

slm
quelle
3
Vielen Dank für diese tolle Antwort. Aber mein Terminal hat amdconf list /org/gnome/terminal/legacy/profiles:/
prayagupd
@ PrayagUpd - Ich schaue auf eine Ubuntu 12.04-Installation und es scheint, als ob gnome-terminal nicht die Standardeinstellung ist. Debian X Terminal Emulator ist der Def. Sie können diesen Befehl auf der Registerkarte Dienstprogramme überprüfen exo-preferred-applications. Details finden Sie hier: askubuntu.com/questions/356842/… . Kannst du das bestätigen? Das obige wurde auf einer Fedora 19 GNOME 3.10-Installation durchgeführt.
SLM
Ja, Debian X terminal emulatorwar die Standardeinstellung in 13.04und hat gnome terminalauch nicht funktioniert.
Prayagupd
@PrayagUpd - Funktioniert Methode 2 für Sie?
slm
1
ab Ubuntu 18.04 müssen Sie jetzt sudo dconf whateverbei der Ausgabe von Befehlen verwenden
Scott Stensland
0

Ich habe einige Funktionen erstellt, die auf Github-Code aus anderen Threads basieren. Sie können diese Funktionen in Ihre ~/.bashrcDatei einfügen. Wie Sie sehen, wenn Sie anrufen create_random_profile:

  1. Es überprüft und löscht alle zuvor erstellten Zufallsprofile.
  2. Es wird ein zufälliges Namensprofil in Gnome-Terminals erstellt.
  3. Dieser Name wird in einer Umgebungsvariablen festgelegt, mit der Sie Ihre Farbe in vordefinierten Funktionen ändern können. Siehe die letzte Funktion setcolord.

Dies sollte nützlich sein, um viele Terminals mit unterschiedlichen Farben zu haben. Außerdem können Sie mit vordefinierten Funktionen diese Farben im laufenden Betrieb ändern.

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
quelle