Як я можу створити новий профіль для терміналу Gnome за допомогою командного рядка?


15

Як усі знають, ви можете створити новий профіль за допомогою меню, де вам запитають, який існуючий профіль повинен бути батьківським для вашого нового профілю тощо. Але як мені створити новий профіль за допомогою командного рядка?

Чи слід читати все існуюче значення з профілю за замовчуванням через gconftool і встановлювати їх знову під новим іменем чи є краще рішення? Якщо відповідь "так": чи потрібно звертати увагу на нове ім'я профілю? Ці нові завжди називають Profile0, Profile1, і Profile2т.д.


Про використання графічного інтерфейсу див. Як я можу створити новий профіль терміналу Gnome?
wjandrea

Відповіді:


3
# дізнайся, скільки там є пофілів - на початку буде лише 1 - за замовчуванням
profile_list = $ (gconftool-2 --get "/ apps / gnome-terminal / global / profile_list" | sed "s | \ [||; s | \] ||;")
echo "1 Список профілів:" $ {profile_list}
last_profile = $ (відлуння "$ {profile_list}" | sed "s /^.*,//" | sed 's / Profile //')
echo "Прізвище ім'я / номер профілю:" $ {last_profile}

# встановіть число X "ProfileX" на 0, якщо є лише за замовчуванням або будь-який останній плюс 1
if [$ {last_profile} == "За замовчуванням"]; потім
    next_profile_number = 0;
echo "1 Новий номер профілю:" $ {next_profile_number}
ще
    next_profile_number = $ (($ {last_profile} + 1));
echo "2 Новий номер профілю:" $ {next_profile_number}
фі
echo "Новий номер профілю:" $ {next_profile_number}

# побудувати список профілів із додатковим профілем "номер"
profile_list = $ (відлуння "[$ {profile_list}, профіль $ {next_profile_number}]")
echo "1 Список профілів:" $ {profile_list}

# отримати дамп профілю за замовчуванням, змінити глобальне ім'я на нове ім'я профілю
profileName = MyNewProfile
gconftool-2 --dump "/ apps / gnome-terminal / профілі / за замовчуванням"> /tmp/${USER}_gnome-terminal_profiles_${profileName}.xml
sed -i "s | За замовчуванням | Профіль $ {next_profile_number} | g" /tmp/${USER}_gnome-terminal_profiles_${profileName}.xml

# завантажити новий профіль
gconftool-2 - завантажити /tmp/${USER}_gnome-terminal_profiles_${profileName}.xml

# скажіть gnome-terminal, що має інший профіль
gconftool-2 --set - type list - рядок типу "list" / apps / gnome-terminal / global / profile_list "" $ {profile_list} "

# встановити властивості
gconftool-2 --set - type string / apps / gnome-terminal / profile / Профіль $ {next_profile_number} / visible_name "$ {profileName}"
gconftool-2 --set - тип рядка / програми / gnome-terminal / профілі / профіль $ {next_profile_number} / запуск виходу "утримувати"
gconftool-2 --set - type string / apps / gnome-terminal / profile / Профіль $ {next_profile_number} / шрифт "Monospace 14"
gconftool-2 --set - type string / apps / gnome-terminal / profile / Профіль $ {next_profile_number} / background_color "# 000000000000"
gconftool-2 --set - type string / apps / gnome-terminal / profile / Профіль $ {next_profile_number} / foreground_color "# 0000FFFF0000"
gconftool-2 --set - type string / apps / gnome-terminal / profile / Профіль $ {next_profile_number} / scrollbar_position "приховано"
gconftool-2 --set - тип булева / програми / gnome-terminal / профілі / профіль $ {next_profile_number} / use_system_font "false"
gconftool-2 --set - тип булева / програми / gnome-terminal / профілі / профіль $ {next_profile_number} / use_theme_colors "false"
gconftool-2 --set - тип булева / програми / gnome-terminal / профілі / профіль $ {next_profile_number} / login_shell "true"
gconftool-2 --set - тип булева / програми / gnome-terminal / профілі / профіль $ {next_profile_number} / scrollback_unlimited "true"

# створити термінал
gnome-terminal --geometry = 80x24 + 0 + 0 --profile = $ {profileName} назва "$ {profileName}" --zoom 0.8 -e "/ bin / sh"


9

Ви не можете створити новий профіль, але ви можете скинути поточну конфігурацію, використовуючи gconftool-2, змінити її та завантажити.

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

Пам’ятайте, що він повертає лише значення, що не знаходяться за замовчуванням (або те, що gconf визначає як не за замовчуванням), тож результат файл не міг бути повним.


5

Для терміналу GNOME> = 3.8 , щоб створити / редагувати / читати профілі через cli, ви можете використовувати або dconf-cliабо gsettings. Мій вибір такий dconf-cli.

Каталог dconf терміналу GNOME є /org/gnome/terminal/legacy/profiles:. Усі операції відбуваються в цьому режимі. Я зберігаю його в тому, $dconfdirщо показано в сценаріях нижче.

Створіть новий профіль

Мінімальні кроки

  1. Створіть UUID для профілю, запустивши команду uuidgen
  2. Додайте його до list:dconf write "$dconfdir/list" "[..., 'UUID']"
  3. Встановіть його 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'"

Довідково


Ми, безумовно, повинні підтвердити цю відповідь, оскільки це найправильніша та найсучасніша! Я деякий час шукав це, встановив dconf watch /і, нарешті, отримав те, що відбувається, і відповідь точна, як написав @joegnis. Просто створіть UUID, запишіть його в базу даних і встановіть visible-nameі /list.
Каміль

2

Простий. Використання:

Файл-> Новий профіль на своєму терміналі.

Дивіться тут для отримання додаткової інформації.

Список літератури:


1
Питання говорить не про використання меню, а за допомогою командного рядка.
Джонатан Хартлі

гаразд, здогадайтесь, що це мало допомогло
Рейнал Гобель

1
Це допомагає всім нам, хто приїжджає сюди через Google - ви можете відредагувати відповідь, сказавши, що це не допомагає ОП, але може допомогти іншим ... (допомогло мені!)
мудрець

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.