Как все знают, вы можете создать новый профиль в меню, где вас спросят, какой из существующих профилей должен быть родительским для вашего нового профиля, и так далее. Но как мне создать новый профиль с помощью командной строки?
Должен ли я прочитать каждое существующее значение из профиля по умолчанию через gconftool и установить его снова под новым именем, или есть какое-то лучшее решение? Если ответ «да»: нужно ли обращать внимание на новое имя профиля? Новые всегда называются Profile0
, Profile1
, Profile2
и т. Д.
# find out how many pofiles there are - at the beginning there will be just 1 - Default profiles_list=$(gconftool-2 --get "/apps/gnome-terminal/global/profile_list" | sed "s|\[||;s|\]||;") echo "1 Profiles List: " ${profiles_list} last_profile=$(echo "${profiles_list}" | sed "s/^.*,//" | sed 's/Profile//') echo "Last Profile Name/Number: " ${last_profile} # set the "ProfileX" X number to 0 if only default is there or whatever the last is plus 1 if [ ${last_profile} == "Default" ]; then next_profile_number=0; echo "1 New Profile Number: " ${next_profile_number} else next_profile_number=$(( ${last_profile} + 1 )); echo "2 New Profile Number: " ${next_profile_number} fi echo "New Profile Number: " ${next_profile_number} # construct profiles list with extra profile "number" profiles_list=$(echo "[${profiles_list},Profile${next_profile_number}]") echo "1 Profiles List: " ${profiles_list} # get a dump of the default profile, change global name to the new profile name profileName=MyNewProfile gconftool-2 --dump "/apps/gnome-terminal/profiles/Default" > /tmp/${USER}_gnome-terminal_profiles_${profileName}.xml sed -i "s|Default|Profile${next_profile_number}|g" /tmp/${USER}_gnome-terminal_profiles_${profileName}.xml # load new profile gconftool-2 --load /tmp/${USER}_gnome-terminal_profiles_${profileName}.xml # tell gnome-terminal that is has another profile gconftool-2 --set --type list --list-type string "/apps/gnome-terminal/global/profile_list" "${profiles_list}" # set properties 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" # create a terminal gnome-terminal --geometry=80x24+0+0 --profile=${profileName} title "${profileName}" --zoom 0.8 -e "/bin/sh"
Вы не можете создать новый профиль, но можете сбросить текущую конфигурацию, используя gconftool-2
, изменить ее и загрузить.
gconftool-2 --dump '/apps/gnome-terminal' > gnome-terminal-conf.xml
## Modify the file here.
gconftool-2 --load gnome-terminal-conf.xml
Помните, что он возвращает только не нестандартные значения (или то, что gconf обнаруживает как нестандартное), поэтому результирующий файл не может быть завершен.
Простой. Использование:
Файл-> Новый Профиль на Вашем терминале.
Посмотрите здесь для получения дальнейшей информации.
Ссылки:
Для GNOME Terminal> = 3.8 , для создания / редактирования / чтения профилей через cli, вы можете использовать dconf-cli
или gsettings
. Мой выбор - dconf-cli
.
Каталог dconf терминала GNOME -
blockquote>/org/gnome/terminal/legacy/profiles:
. Все операции происходят в этом реж. Я храню его в$dconfdir
, который показан в сценариях ниже.Создать новый профиль
Минимальные шаги:
- Сгенерировать UUID для профиля с помощью команды
uuidgen
- Добавить его в
list
:dconf write "$dconfdir/list" "[..., 'UUID']"
- Установите его
visible-name
:dconf write "$dconfdir/:UUID"/visible-name "'NAME'"
После этого, даже если многие настройки не установлены, новый профиль будет отображаться в терминале. Настройки графического интерфейса, так что вы можете редактировать настройки через графический интерфейс.
Рабочий скрипт:
#!/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)
Будьте осторожны с кавычками вокруг значения, которое вы пишете. Как сказано в руководстве ,
При установке ключа вам также необходимо указать
blockquote>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'"
Ссылка
- Anthony25 / gnome-terminal-colors-solarized . Я выяснил свой путь, прочитав много кодов отсюда. Действительно полезно.
- Справочное руководство по dconf