web-dev-qa-db-fra.com

Comment créer un nouveau profil pour un terminal Gnome via une ligne de commande?

Comme tout le monde le sait, vous pouvez créer un nouveau profil à l'aide du menu qui vous demande quel profil existant doit être le parent de votre nouveau profil, etc. Mais comment dois-je créer un nouveau profil par la ligne de commande?

Devrais-je lire chaque valeur existante du profil par défaut via gconftool et les redéfinir sous un nouveau nom ou existe-t-il une meilleure solution? Si la réponse est oui: Dois-je faire attention au nouveau nom de profil? Les nouveaux sont toujours appelés Profile0, Profile1, Profile2 etc.

14
Wurstsalat
 # savoir combien de pofiles il y a - au début, il y aura juste 1 - Par défaut 
 profiles_list = $ (gconftool-2 --get "/ apps/gnome-terminal/global/profile_list "| sed" s |\[||; s | \] ||; ") 
 echo" 1 Liste des profils: "$ {profiles_list} 
 last_profile = $ (echo" $ {profiles_list } "| sed" s /^.*,// "| sed 's/Profile //')
 echo" Dernier nom/numéro de profil: "$ {last_profile} 
 
 # définit le numéro X "ProfileX" sur 0 si seule la valeur par défaut est présente ou quelle que soit la dernière valeur plus 1 
 if [$ {last_profile} == "Par défaut"]; then 
 next_profile_number = 0; 
 echo "1 Nouveau numéro de profil:" $ {next_profile_number} 
 else 
 next_profile_number = $ (($ {last_profile} + 1) ); 
 echo "2 Nouveau numéro de profil:" $ {next_profile_number} 
 fi 
 echo "Nouveau numéro de profil:" $ {next_profile_number} 
 
 # construit la liste des profils avec le profil supplémentaire "numéro" 
 profiles_list = $ (echo "[$ {profiles_list}, Profile $ {next_profile_number}]") 
 echo "1 Liste des profils:" $ { profiles_list} 
 
 # obtenir un dump du profil par défaut, remplacez le nom global par le nouveau nom de profil 
 profileName = MyNewProfile 
 gconftool-2 --dump "/ apps/gnome-terminal/profiles/Default "> /tmp/${USERBuch_gnome-terminal_profiles_${profileNameName.xml
sed -i" s | Défaut | Profil $ {next_profile_number} | g "/ tmp /${USERBuch_gnome-terminal_profiles_${profileNameName.xml[.____. Printer.f.#.____. Page_# charger un nouveau profil 
 Gconftool-2 --load/tmp/$ {USER} _gnome-terminal_profiles_ $ {profileName} .xml 
 
 # tell g nome-terminal qui a un autre profil 
 gconftool-2 --set --type liste --list-type chaîne "/ apps/gnome-terminal/global/profile_list" "$ {profiles_list}" 
 
 # définir les propriétés 
 gconftool-2 --set --type string/apps/gnome-terminal/profiles/Profile $ {next_profile_number}/nom_visible "$ {profileName}" 
 gconftool-2 --set --type string/apps/gnome-terminal/profiles/Profile $ {next_profile_number}/exit_action "hold" 
 gconftool-2 --set --type string/apps/gnome -terminal/profiles/Profile $ {next_profile_number}/font "Monospace 14" 
 gconftool-2 --set --type string/apps/gnome-terminal/profiles/Profile $ {prochain_fichier_profil}/background_color "# 000000000000 "
 gconftool-2 --set --type chaîne/apps/gnome-terminal/profiles/Profil $ {next_profile_number}/foreground_color" # 0000FFFF0000 "
 gconftool-2 --set --type chaîne/apps/gnome-terminal/profiles/Profile $ {numéro_du_profil_prochaine}/scrollbar_position "hidden" 
 gconftool-2 --set --type boolean/apps/gnome -terminal/profiles/Profile $ {next_profile_number}/use_system_font "false" 
 gconftool-2 --set --type boolean/apps/gnome-terminal/profiles/Profil $ {next_profile_number}/use_theme_colors "false" 
 gconftool-2 --set --type boolean/apps/gnome-terminal/profiles/Profil $ {next_profile_number}/login_Shell "true" 
 gconftool-2 --set --type boolean/gnome-terminal/profiles/Profile $ {next_profile_number}/scrollback_unlimited "true" 
 
 # créer un terminal 
 gnome-terminal --geometry = 80x24 + 0 + 0 - profile = $ {profileName} title "$ {profileName}" --zoom 0.8 -e "/bin/sh"[.____.______
2
Michael Czapski

Vous ne pouvez pas créer de nouveau profil, mais vous pouvez vider votre configuration actuelle à l’aide de gconftool-2, la modifier et la charger.

gconftool-2 --dump '/apps/gnome-terminal' > gnome-terminal-conf.xml
## Modify the file here.
gconftool-2 --load gnome-terminal-conf.xml

N'oubliez pas qu'il ne renvoie que les valeurs non définies par défaut (ou ce que gconf détecte comme non définies par défaut), de sorte que le fichier résultant ne peut pas être complet.

8
Braiam

Pour Terminal GNOME> = 3.8 , pour créer/modifier/lire des profils via cli, vous pouvez utiliser dconf-cli ou gsettingsname__. Mon choix est dconf-cli.

Le répertoire dconf du terminal GNOME est /org/gnome/terminal/legacy/profiles:. Toutes les opérations ont lieu dans ce répertoire. Je le stocke dans $dconfdir qui est indiqué dans les scripts ci-dessous.

Créer un nouveau profil

Les pas minimum sont

  1. Générez un UUID pour le profil en exécutant la commande uuidgenname__
  2. Ajoutez-le à listname__: dconf write "$dconfdir/list" "[..., 'UUID']"
  3. Définissez son visible-name: dconf write "$dconfdir/:UUID"/visible-name "'NAME'"

Après cela, même si de nombreux paramètres ne sont pas définis, un nouveau profil apparaîtra dans les paramètres de l'interface graphique du terminal afin que vous puissiez modifier les paramètres via l'interface graphique.

Un script de travail:

#!/bin/bash
dconfdir=/org/gnome/terminal/legacy/profiles:

create_new_profile() {
    local profile_ids=($(dconf list $dconfdir/ | grep ^: |\
                        sed 's/\///g' | sed 's/://g'))
    local profile_name="$1"
    local profile_ids_old="$(dconf read "$dconfdir"/list | tr -d "]")"
    local profile_id="$(uuidgen)"

    [ -z "$profile_ids_old" ] && local lb="["  # if there's no `list` key
    [ ${#profile_ids[@]} -gt 0 ] && local delimiter=,  # if the list is empty
    dconf write $dconfdir/list \
        "${profile_ids_old}${delimiter} '$profile_id']"
    dconf write "$dconfdir/:$profile_id"/visible-name "'$profile_name'"
    echo $profile_id
}

# Create profile
id=$(create_new_profile TEST)

Faites attention aux guillemets autour de la valeur que vous écrivez. Comme dit dans le manuel ,

Lorsque vous définissez une clé, vous devez également spécifier un VALUEname__. Le format de la valeur est celui d’un GVariant sérialisé. Par exemple, une chaîne doit inclure des guillemets explicites: "'foo'". Ce format est également utilisé lors de l’impression des valeurs.

Vous pouvez définir plus d'options du profil via cli si vous le souhaitez. Courir

dconf write /org/gnome/terminal/legacy/profiles:/:UUID/KEY "'NAME'"

mettre en place. Vous pouvez utiliser dconf-editor pour vérifier les options disponibles. Accédez à un chemin tel que /org/gnome/terminal/legacy/profiles:/:9ca4ab84-42f2-4acf-8aa9-50e6351b209a/. Il serait préférable de vérifier un ancien profil comportant de nombreuses options.

Dupliquer un profil

Vous pouvez dconf dump un ancien profil et loadà un profil existant. Ainsi, pour dupliquer un profil, vous devez en créer un en utilisant les étapes ci-dessus, puis copier un ancien profil pour le remplacer. N'oubliez pas de le renommer après avoir annulé.

Un script de travail:

# ... codes from last script

duplicate_profile() {
    local from_profile_id="$1"; shift
    local to_profile_name="$1"; shift
    local profile_ids=($(dconf list $dconfdir/ | grep ^: |\
                        sed 's/\///g' | sed 's/://g'))

    # If UUID doesn't exist, abort
    in_array "$from_profile_id" "${profile_ids[@]}" || return 1
    # Create a new profile
    local id=$(create_new_profile "$to_profile_name")
    # Copy an old profile and write it to the new
    dconf dump "$dconfdir/:$from_profile_id/" \
        | dconf load "$dconfdir/:$id/"
    # Rename
    dconf write "$dconfdir/:$id"/visible-name "'$to_profile_name'"
}

# Create a profile from an existing one
duplicate_profile $id TEST1

Pour obtenir l'UUID d'un profil par son nom:

get_profile_uuid() {
    # Print the UUID linked to the profile name sent in parameter
    local profile_ids=($(dconf list $dconfdir/ | grep ^: |\
                        sed 's/\///g' | sed 's/://g'))
    local profile_name="$1"
    for i in ${!profile_ids[*]}; do
        if [[ "$(dconf read $dconfdir/:${profile_ids[i]}/visible-name)" == \
            "'$profile_name'" ]]; then
            echo "${profile_ids[i]}"
            return 0
        fi
    done
}

id=$(get_profile_uuid Default)

Définir un profil par défaut

Il suffit d'écrire l'UUID du profil sur la clé defaultname__:

dconf write $dconfdir/default "'$UUID'"

Référence

4
joegnis

Simple. Utilisation:

Fichier-> Nouveau profil sur votre terminal.

Voir ici pour plus de détails.

Références:

2
Raynal Gobel