Komut satırı üzerinden Gnome terminali için nasıl yeni profil oluşturabilirim?


15

Herkesin bildiği gibi, hangi profilin yeni profilinizin üst öğesi olması gerektiğini soran menüden yeni bir profil oluşturabilirsiniz. Ancak komut satırından nasıl yeni bir profil oluşturmalıyım?

Varsayılan profilden varolan her değeri gconftool aracılığıyla okumalı ve bunları yeni bir adla yeniden ayarlamam gerekir mi yoksa daha iyi bir çözüm var mı? Cevabınız evet ise: Yeni profil adına dikkat etmem gerekiyor mu? Yeni olanlar her zaman denir Profile0, Profile1, Profile2vb


Yanıtlar:


3
# kaç tane pofile olduğunu öğrenin - başlangıçta sadece 1 olacak - Varsayılan
profiles_list = $ (gconftool-2 --get "/ apps / gnome-terminal / global / profile_list" | sed "s | \ [||; s | \] ||;")
echo "1 Profil Listesi:" $ {profiles_list}
last_profile = $ (echo "$ {profiles_list}" | sed "s /^.*,//" | sed 's / Profil //')
echo "Son Profil Adı / Numarası:" $ {last_profile}

# sadece varsayılan varsa veya sonuncu ne olursa olsun "ProfileX" X numarasını 0 olarak ayarlayın artı 1
eğer [$ {last_profile} == "Varsayılan"]; sonra
    next_profile_number = 0;
echo "1 Yeni Profil Numarası:" $ {next_profile_number}
Başka
    next_profile_number = $ (($ {last_profile} + 1));
echo "2 Yeni Profil Numarası:" $ {next_profile_number}
fi
echo "Yeni Profil Numarası:" $ {next_profile_number}

# construct profil listesi ve ek profil "number"
profiles_list = $ (echo "[$ {profiles_list}, Profil $ {next_profile_number}]")
echo "1 Profil Listesi:" $ {profiles_list}

# varsayılan profilin dökümünü al, genel adı yeni profil adına değiştir
ProfileName = MyNewProfile
gconftool-2 --dump "/ apps / gnome-terminal / profilleri / Varsayılan"> /tmp/${USER {_gnome-terminal_profiles_${profileName }.xml
sed -i "s | Varsayılan | Profil $ {next_profile_number} | g" /tmp/${USER {_gnome-terminal_profiles_${profileName {.xml

# yeni profil yükle
gconftool-2 --load /tmp/${USER {_gnome-terminal_profiles_${profileName {.xml

# başka bir profili olan tell gnome-terminal
gconftool-2 --set --type list --list-type dize "/ apps / gnome-terminal / global / profile_list" "$ {profiles_list}"

# set özellikleri
gconftool-2 --set --type dizesi / apps / gnome-terminal / profiles / Profil $ {next_profile_number} / visible_name "$ {profileName}"
gconftool-2 --set --type dizesi / apps / gnome-terminal / profiles / Profil $ {next_profile_number} / exit_action "hold"
gconftool-2 --set --type dizesi / apps / gnome-terminal / profiles / Profil $ {next_profile_number} / font "Monospace 14"
gconftool-2 --set --type dizesi / apps / gnome-terminal / profiles / Profil $ {next_profile_number} / background_color "# 000000000000"
gconftool-2 --set --type dizesi / apps / gnome-terminal / profile / Profil $ {next_profile_number} / foreground_color "# 0000FFFF0000"
gconftool-2 --set --type dizesi / apps / gnome-terminal / profiles / Profil $ {next_profile_number} / scrollbar_position "gizli"
gconftool-2 --set --tyol boolean / apps / gnome-terminal / profiles / Profil $ {next_profile_number} / use_system_font "false"
gconftool-2 --set --tyol boolean / apps / gnome-terminal / profile / Profil $ {next_profile_number} / use_theme_colors "yanlış"
gconftool-2 --set --tyol boolean / apps / gnome-terminal / profile / Profil $ {next_profile_number} / login_shell "true"
gconftool-2 --set --tyol boolean / apps / gnome-terminal / profile / Profil $ {next_profile_number} / scrollback_unlimited "true"

# terminal oluştur
gnome-terminali - geometri = 80x24 + 0 + 0 --profil = $ {profileName} başlık "$ {profileName}" --zoom 0.8 -e "/ bin / sh"


9

Yeni bir profil oluşturamazsınız, ancak mevcut yapılandırmanızı kullanarak gconftool-2, değiştirebilir, değiştirebilir ve yükleyebilirsiniz.

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

Yalnızca varsayılan olmayan değerleri (veya gconf'un varsayılan olmayan olarak algıladığı) döndürdüğünü unutmayın, bu nedenle sonuç dosyası tamamlanamadı.


5

İçin GNOME Terminal> = 3.8 , oluşturmak / düzenlemek / cli yoluyla profillerini okumak, ya kullanabilirsiniz dconf-cliveya gsettings. Benim seçimim dconf-cli.

GNOME Terminal'in dconf dizini /org/gnome/terminal/legacy/profiles:. Tüm operasyonlar bu dir. Bunun içinde saklamak $dconfdiraşağıda komut gösterilmiştir.

Yeni bir profil oluştur

Minimum adımlar

  1. Komutu çalıştırarak profil için bir UUID oluşturun uuidgen
  2. Şuraya ekleyin list:dconf write "$dconfdir/list" "[..., 'UUID']"
  3. Ayarla visible-name:dconf write "$dconfdir/:UUID"/visible-name "'NAME'"

Bundan sonra, birçok ayar yapılmasa bile, ayarları GUI aracılığıyla düzenleyebilmeniz için Terminal'in GUI ayarlarında yeni bir profil görünecektir.

Çalışan bir senaryo:

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

Yazdığınız değerin etrafındaki alıntılara dikkat edin. Olarak bahsedilen kılavuzu ,

Bir anahtar ayarlarken, ayrıca a belirtmeniz gerekir VALUE. Değerinin biçimi bir tefrika GVariant, örneğin toplam böylece bir dize açık tırnak içerisine gerektiğidir: "'foo'". Bu biçim değerleri yazdırırken de kullanılır.

İsterseniz cli ile profilin daha fazla seçeneğini ayarlayabilirsiniz. Çalıştırmak

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

kurmak. dconf-editorMevcut seçenekleri kontrol etmek için kullanabilirsiniz . Gibi bir yola gidin /org/gnome/terminal/legacy/profiles:/:9ca4ab84-42f2-4acf-8aa9-50e6351b209a/. Birçok seçenek ayarlanmış eski bir profili kontrol etmek daha iyi olur.

Bir profili çoğaltma

dconf dumpEski bir profili ve loadmevcut bir profile ekleyebilirsiniz . Bu nedenle bir profili çoğaltmak için yukarıdaki adımları kullanarak yeni bir profil oluşturmanız ve eski bir profili geçersiz kılmak için kopyalamanız gerekir. Geçersiz kıldıktan sonra yeniden adlandırmayı unutmayın.

Çalışan bir senaryo:

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

Bir profilin UUID'sini adına göre almak için:

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)

Bir profili varsayılan olarak ayarlama

Profilin UUID'sini anahtara yazmanız yeterlidir default:

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

Referans


Bu cevabı kesinlikle en doğru ve en güncel olanı olarak onaylamalıyız! Bir süre kendimi aradım, ayarladım dconf watch /ve sonunda neler olduğunu anladım ve @joegnis'in yazdığı gibi cevap kesin. Sadece, bir UUID oluşturmak veritabanı ve sete yazmak visible-nameve /list.
Kamil

2

Basit. kullanın:

Terminalinizde Dosya-> Yeni Profil .

Daha fazla ayrıntı için buraya bakın.

Referanslar:


1
Soru, menüyü değil, komut satırını kullandığını söylüyor.
Jonathan Hartley

Tamam, sanırım bu pek yardımcı olmadı
Raynal Gobel

1
Buraya Google aracılığıyla gelen herkese yardımcı oluyor
OP'ye

1
GUI için yeni bir Soru-Cevap oluşturdum: Nasıl yeni bir Gnome Terminal profili oluşturabilirim?
wjandrea
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.