it-swarm-es.com

¿Cómo puedo crear un nuevo perfil para el terminal Gnome a través de la línea de comando?

Como todos saben, puede crear un nuevo perfil mediante el menú donde se le pregunta qué perfil existente debería ser el padre de su nuevo perfil, etc. Pero, ¿cómo debo crear un nuevo perfil mediante la línea de comando?

¿Debo leer todos los valores existentes del perfil predeterminado a través de gconftool y configurarlos nuevamente con un nuevo nombre o hay alguna solución mejor? Si la respuesta es sí: ¿Tengo que prestar atención al nuevo nombre de perfil? Los nuevos siempre se llaman Profile0, Profile1, Profile2 etc.

14
Wurstsalat
 # averigüe cuántos archivos hay - al principio solo habrá 1 - Predeterminado 
 profiles_list = $ (gconftool-2 --get "/ apps/gnome-terminal/global/profile_list "| sed" s |\[||; s | \] ||; ") 
 echo" 1 Lista de perfiles: "$ {profiles_list} 
 last_profile = $ (echo" $ {profiles_list } "| sed" s /^.*,// "| sed 's/Profile //')
 echo" Apellido/Número de perfil: "$ {last_profile} 
 
 # establezca el número "ProfileX" X en 0 si solo existe el valor predeterminado o lo que sea el último más 1 
 si [$ {last_profile} == "Valor predeterminado"]; luego 
 next_profile_number = 0; 
 echo "1 Nuevo número de perfil:" $ {next_profile_number} 
 else 
 next_profile_number = $ (($ {last_profile} + 1) ); 
 echo "2 Nuevo número de perfil:" $ {next_profile_number} 
 fi 
 echo "New Profile Number:" $ {next_profile_number} 
 
 # lista de perfiles de construcción con perfil adicional "número" 
 profiles_list = $ (echo "[$ {profiles_list}, Perfil $ {next_profile_number}]") 
 echo "1 Lista de perfiles:" $ { profiles_list} 
 
 # obtener un volcado del perfil predeterminado, cambiar el nombre global al nuevo nombre de perfil 
 profileName = MyNewProfile 
 gconftool-2 --dump "/ apps/gnome-terminal/profiles/Default "> /tmp/${USER}_gnome-terminal_profiles_${profileName}.xml[.____.font>sed -i" s | Default | Perfil $ {next_profile_number} | g "/ tmp /${USER}_gnome-terminal_profiles_${profileName}.xml[.____.font>[.____.font># load new profile 
 Gconftool-2 --load/tmp/$ {USER} _gnome-terminal_profiles_ $ {profileName} .xml 
 
 # tell g nome-terminal que tiene otro perfil 
 gconftool-2 --set --type list --list-type string "/ apps/gnome-terminal/global/profile_list" "$ {profiles_list}" 
 
 # set propiedades 
 gconftool-2 --set --type string/apps/gnome-terminal/profiles/Profile $ {next_profile_number}/visible_name "$ {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 $ {next_profile_number}/background_color "# 000000000000 "
 gconftool-2 --set --type string/apps/gnome-terminal/profiles/Profile $ {next_profile_number}/foreground_color" # 0000FFFF0000 "
 gconftool-2 --set --type string/apps/gnome-terminal/profiles/Profile $ {next_profile_number}/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/Profile $ {next_profile_number}/use_theme_colors "false" 
 gconftool-2 --set --type boolean/apps/gnome-terminal/profiles/Profile $ {next_profile_number}/login_Shell "true" 
 gconftool-2 --set --type boolean/apps/gnome-terminal/profiles/Profile $ {next_profile_number}/scrollback_unlimited "true" 
 
 # crea un terminal 
 gnome-terminal --geometry = 80x24 + 0 + 0 - profile = $ {profileName} title "$ {profileName}" --zoom 0.8 -e "/bin/sh"[.____.font>
2
Michael Czapski

No puede crear un nuevo perfil, pero puede volcar su configuración actual, usando gconftool-2, modificarlo y cargarlo.

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

Recuerde que solo devuelve los valores no predeterminados (o lo que gconf detecta como no predeterminado), por lo que el archivo resultante no se pudo completar.

8
Braiam

Para Terminal GNOME> = 3.8 , para crear/editar/leer perfiles a través de cli, puede usar dconf-cli o gsettings . Mi elección es dconf-cli.

El directorio dconf de GNOME Terminal es /org/gnome/terminal/legacy/profiles:. Todas las operaciones suceden en este directorio. Lo guardo en $dconfdir que se muestra en los scripts a continuación.

Crea un nuevo perfil

Los pasos mínimos son

  1. Genere un UUID para el perfil ejecutando el comando uuidgen
  2. Añádelo a list: dconf write "$dconfdir/list" "[..., 'UUID']"
  3. Establezca su visible-name: dconf write "$dconfdir/:UUID"/visible-name "'NAME'"

Después de eso, incluso si no se configuran muchas configuraciones, aparecerá un nuevo perfil en la configuración de la GUI de la Terminal para que pueda editar la configuración a través de la GUI.

Un guión de trabajo:

#!/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)

Tenga cuidado con las citas alrededor del valor que escribe. Como se dijo en manual ,

Al configurar una clave, también necesita especificar un VALUE. El formato para el valor es el de un GVariant serializado, por ejemplo, una cadena debe incluir comillas explícitas: "'foo'". Este formato también se utiliza al imprimir valores.

Puede configurar más opciones del perfil a través de cli si lo desea. correr

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

para establecer Puede usar dconf-editor para verificar las opciones disponibles. Navegue a una ruta como /org/gnome/terminal/legacy/profiles:/:9ca4ab84-42f2-4acf-8aa9-50e6351b209a/. Sería mejor verificar un perfil antiguo que tiene muchas opciones establecidas.

Duplicar un perfil

Puede dconf dump un perfil antiguo y load a uno existente. Por lo tanto, para duplicar un perfil, debe crear uno nuevo siguiendo los pasos anteriores y copiar un perfil antiguo para anularlo. Recuerde cambiarle el nombre después de anularlo.

Un guión de trabajo:

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

Para obtener el UUID de un perfil por su nombre:

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)

Establecer un perfil como predeterminado

Simplemente escriba el UUID del perfil en la clave default:

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

Referencia

4
joegnis

Sencillo. Utilizar:

Archivo-> Nuevo perfil en su terminal.

Ver aquí para más detalles.

Referencias

2
Raynal Gobel