Untuk Terminal GNOME> = 3.8 , untuk membuat / mengedit / membaca profil melalui cli, Anda dapat menggunakan salah satu dconf-cli
atau gsettings
. Pilihan saya adalah dconf-cli
.
Direktori dconf Terminal GNOME adalah
/org/gnome/terminal/legacy/profiles:
. Semua operasi terjadi dalam dir ini. Saya menyimpannya di $dconfdir
mana ditunjukkan dalam skrip di bawah ini.
Buat profil baru
Langkah minimum adalah
- Buat UUID untuk profil dengan menjalankan perintah
uuidgen
- Tambahkan ke
list
:dconf write "$dconfdir/list" "[..., 'UUID']"
- Tetapkan
visible-name
:dconf write "$dconfdir/:UUID"/visible-name "'NAME'"
Setelah itu, bahkan jika banyak pengaturan tidak diatur, profil baru akan muncul di pengaturan GUI Terminal sehingga Anda dapat mengedit pengaturan melalui GUI.
Skrip yang berfungsi:
#!/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)
Hati-hati dengan kutipan di sekitar nilai yang Anda tulis. Seperti yang dikatakan dalam manual ,
Saat mengatur kunci, Anda juga perlu menentukan a VALUE
. Format untuk nilai adalah bahwa dari GVariant serial, sehingga misalnya string harus menyertakan tanda kutip eksplisit: "'foo'"
. Format ini juga digunakan saat mencetak nilai.
Anda dapat mengatur lebih banyak opsi profil melalui cli jika Anda mau. Lari
dconf write /org/gnome/terminal/legacy/profiles:/:UUID/KEY "'NAME'"
untuk mengatur. Anda dapat menggunakan dconf-editor
untuk memeriksa opsi yang tersedia. Arahkan ke jalan seperti
/org/gnome/terminal/legacy/profiles:/:9ca4ab84-42f2-4acf-8aa9-50e6351b209a/
. Akan lebih baik untuk memeriksa profil lama yang memiliki banyak opsi yang ditetapkan.
Gandakan profil
Anda dapat dconf dump
profil lama dan load
ke profil yang ada. Jadi untuk menggandakan profil, Anda perlu membuat yang baru menggunakan langkah-langkah di atas, dan menyalin profil yang lama untuk menimpanya. Ingatlah untuk mengganti nama setelah mengganti.
Skrip yang berfungsi:
# ... 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
Untuk mendapatkan UUID profil dengan namanya:
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)
Tetapkan profil sebagai default
Cukup tulis UUID profil ke kunci default
:
dconf write $dconfdir/default "'$UUID'"
Referensi