Для терміналу GNOME> = 3.8 , щоб створити / редагувати / читати профілі через cli, ви можете використовувати або dconf-cli
або gsettings
. Мій вибір такий dconf-cli
.
Каталог dconf терміналу GNOME є
/org/gnome/terminal/legacy/profiles:
. Усі операції відбуваються в цьому режимі. Я зберігаю його в тому, $dconfdir
що показано в сценаріях нижче.
Створіть новий профіль
Мінімальні кроки
- Створіть UUID для профілю, запустивши команду
uuidgen
- Додайте його до
list
:dconf write "$dconfdir/list" "[..., 'UUID']"
- Встановіть його
visible-name
:dconf write "$dconfdir/:UUID"/visible-name "'NAME'"
Після цього, навіть якщо багато параметрів не встановлено, у налаштуваннях графічного інтерфейсу термінала з’явиться новий профіль, щоб ви могли редагувати налаштування через GUI.
Робочий сценарій:
#!/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)
Будьте уважні до цитат навколо значення, яке ви пишете. Як сказано в посібнику ,
Встановлюючи ключ, вам також потрібно вказати a VALUE
. Формат значення є те , що серіалізовані GVariant, так , наприклад , рядок повинен містити явні лапки: "'foo'"
. Цей формат також використовується при друкуванні значень.
Якщо ви хочете, ви можете встановити додаткові параметри профілю через cli. Біжи
dconf write /org/gnome/terminal/legacy/profiles:/:UUID/KEY "'NAME'"
встановлювати. Ви можете використовувати dconf-editor
для перевірки доступних варіантів. Перейдіть до такого шляху
/org/gnome/terminal/legacy/profiles:/:9ca4ab84-42f2-4acf-8aa9-50e6351b209a/
. Було б краще перевірити старий профіль, у якому встановлено багато варіантів.
Скопіювати профіль
Ви можете dconf dump
перетворити старий профіль load
на існуючий. Тому для дублювання профілю потрібно створити новий, скориставшись описаними вище кроками, і скопіювати старий профіль, щоб замінити його. Не забудьте перейменувати його після зміни.
Робочий сценарій:
# ... 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
Щоб отримати UUID профілю за його назвою:
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)
Встановіть профіль за замовчуванням
Просто запишіть UUID профілю на ключ default
:
dconf write $dconfdir/default "'$UUID'"
Довідково