Làm cách nào tôi có thể tạo hồ sơ mới cho thiết bị đầu cuối Gnome thông qua dòng lệnh?


15

Như mọi người đều biết bạn có thể tạo một hồ sơ mới bằng menu nơi bạn được hỏi hồ sơ hiện có nên là cha mẹ cho hồ sơ mới của bạn, v.v. Nhưng làm thế nào tôi nên tạo một hồ sơ mới bằng dòng lệnh?

Tôi có nên đọc mọi giá trị hiện có từ hồ sơ mặc định qua gconftool và đặt lại chúng dưới một tên mới hay có giải pháp nào tốt hơn không? Nếu câu trả lời là có: Tôi có phải chú ý đến tên hồ sơ mới không? Những cái mới luôn luôn được gọi Profile0, Profile1, Profile2, vv


Câu trả lời:


3
# tìm hiểu có bao nhiêu pofiles - lúc đầu sẽ chỉ có 1 - Mặc định
profile_list = $ (gconftool-2 --get "/ apps / gnome-terminal / global / profile_list" | sed "s | \ [||; s | \] ||;")
echo "Danh sách hồ sơ 1:" $ {profile_list}
last_profile = $ (echo "$ {profile_list}" | sed "s / hồi.*,//" | sed 's / Profile //')
echo "Tên / số hồ sơ cuối cùng:" $ {last_profile}

# đặt số X "ProfileX" thành 0 nếu chỉ có mặc định ở đó hoặc bất cứ thứ gì cuối cùng là 1
if [$ {last_profile} == "Mặc định"]; sau đó
    next_profile_number = 0;
echo "1 Số hồ sơ mới:" $ {next_profile_number}
khác
    next_profile_number = $ (($ {last_profile} + 1));
echo "2 Số hồ sơ mới:" $ {next_profile_number}
fi
echo "Số hồ sơ mới:" $ {next_profile_number}

# xây dựng danh sách hồ sơ với "số" hồ sơ bổ sung
profile_list = $ (echo "[$ {profile_list}, Hồ sơ $ {next_profile_number}]")
echo "Danh sách hồ sơ 1:" $ {profile_list}

# nhận một kết xuất của hồ sơ mặc định, thay đổi tên toàn cầu thành tên hồ sơ mới
profileName = MyNewProfile
gconftool-2 --dump "/ apps / gnome-terminal / profile / Mặc định"> /tmp/$ nbUSER Bolog_gnome-termminal_profiles_$ nbprofileName Bolog.xml
sed -i "s | Mặc định | Hồ sơ $ {next_profile_number} | g" /tmp/$ nbUSER Bolog_gnome-termminal_profiles_$ nbprofileName Bolog.xml

# tải hồ sơ mới
gconftool-2 --load /tmp/$ nbUSER Bolog_gnome-terminal_profiles_$ nbprofileName Bolog.xml

# nói với gnome-terminal có hồ sơ khác
gconftool-2 --set --type list - chuỗi kiểu danh sách "/ apps / gnome-terminal / global / profile_list" "$ {profile_list}"

# đặt thuộc tính
gconftool-2 --set --type chuỗi / apps / gnome-terminal / profile / Profile $ {next_profile_number} / viewer_name "$ {profileName}"
gconftool-2 --set - chuỗi ký tự / apps / gnome-terminal / profile / Profile $ {next_profile_number} / exit_action "giữ"
gconftool-2 --set - chuỗi ký tự / ứng dụng / gnome-terminal / profile / Profile $ {next_profile_number} / font "Monospace 14"
gconftool-2 --set - chuỗi ký tự / ứng dụng / gnome-terminal / profile / Profile $ {next_profile_number} / background_color "# 000000000000"
gconftool-2 --set - chuỗi ký tự / ứng dụng / gnome-terminal / profile / Profile $ {next_profile_number} / foreground_color "# 0000FFFF0000"
gconftool-2 --set --type chuỗi / apps / gnome-terminal / profile / Profile $ {next_profile_number} / scrollbar_poseition "hidden"
gconftool-2 --set --type boolean / apps / gnome-terminal / profile / Profile $ {next_profile_number} / use_system_font "false"
gconftool-2 --set --type boolean / apps / gnome-terminal / profile / Profile $ {next_profile_number} / use_theme_colors "false"
gconftool-2 --set --type boolean / apps / gnome-terminal / profile / Profile $ {next_profile_number} / login_shell "true"
gconftool-2 --set --type boolean / apps / gnome-terminal / profile / Profile $ {next_profile_number} / scrollback_unliated "true"

# tạo một thiết bị đầu cuối
gnome-terminal --geometry = 80x24 + 0 + 0 --profile = $ {profileName} title "$ {profileName}" --zoom 0.8 -e "/ bin / sh"


9

Bạn không thể tạo một hồ sơ mới, nhưng bạn có thể kết xuất cấu hình hiện tại của mình, sử dụng gconftool-2, sửa đổi nó và tải nó.

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

Hãy nhớ rằng nó chỉ trả về các giá trị không mặc định (hoặc những gì gconf phát hiện là không mặc định), do đó, tệp kết quả không thể hoàn thành.


5

Đối với Thiết bị đầu cuối Gnome> = 3,8 , để tạo / chỉnh sửa / đọc hồ sơ thông qua cli, bạn có thể sử dụng dconf-clihoặc gsettings. Sự lựa chọn của tôi là dconf-cli.

Thư mục dconf của Gnome Terminal là /org/gnome/terminal/legacy/profiles:. Tất cả các hoạt động xảy ra trong thư mục này. Tôi lưu trữ nó trong $dconfdirđó được hiển thị trong các kịch bản dưới đây.

Tạo một hồ sơ mới

Các bước tối thiểu là

  1. Tạo UUID cho hồ sơ bằng cách chạy lệnh uuidgen
  2. Nối nó vào list:dconf write "$dconfdir/list" "[..., 'UUID']"
  3. Đặt nó visible-name:dconf write "$dconfdir/:UUID"/visible-name "'NAME'"

Sau đó, ngay cả khi nhiều cài đặt không được đặt, một cấu hình mới sẽ hiển thị trong cài đặt GUI của Terminal để bạn có thể chỉnh sửa cài đặt qua GUI.

Một kịch bản làm việc:

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

Hãy cẩn thận về các trích dẫn xung quanh giá trị bạn viết. Như đã nói trong hướng dẫn ,

Khi đặt khóa, bạn cũng cần chỉ định a VALUE. Định dạng cho giá trị là của GVariant được tuần tự hóa, do đó, một chuỗi phải bao gồm các trích dẫn rõ ràng : "'foo'". Định dạng này cũng được sử dụng khi in ra các giá trị.

Bạn có thể đặt thêm tùy chọn của hồ sơ thông qua cli nếu bạn muốn. Chạy

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

để thiết lập. Bạn có thể sử dụng dconf-editorđể kiểm tra các tùy chọn có sẵn. Điều hướng đến một con đường như thế nào /org/gnome/terminal/legacy/profiles:/:9ca4ab84-42f2-4acf-8aa9-50e6351b209a/. Sẽ tốt hơn nếu kiểm tra một hồ sơ cũ có nhiều tùy chọn được đặt.

Sao chép một hồ sơ

Bạn có thể dconf dumpmột hồ sơ cũ và loadnó đến một hồ sơ hiện có. Vì vậy, để sao chép một hồ sơ, bạn cần tạo một hồ sơ mới bằng các bước ở trên và sao chép hồ sơ của một người cũ để ghi đè lên hồ sơ đó. Hãy nhớ đổi tên nó sau khi ghi đè.

Một kịch bản làm việc:

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

Để lấy UUID của hồ sơ theo tên của nó:

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)

Đặt cấu hình làm mặc định

Chỉ cần viết UUID của hồ sơ vào khóa default:

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

Tài liệu tham khảo


Chúng tôi chắc chắn phải nâng cao câu trả lời này vì đây là câu trả lời đúng và cập nhật nhất! Tôi đã tự mình tìm kiếm điều này một thời gian, thiết lập dconf watch /và cuối cùng đã có những gì đang diễn ra và câu trả lời chính xác như @joegnis đã viết. Chỉ cần tạo một UUID, ghi nó vào cơ sở dữ liệu và thiết lập visible-name/list.
Kamil

2

Đơn giản. Sử dụng:

Tệp-> Hồ sơ mới trên thiết bị đầu cuối của bạn.

Xem ở đây để biết thêm chi tiết.

Người giới thiệu:


1
Câu hỏi nói không sử dụng menu, nhưng sử dụng dòng lệnh thay thế.
Jonathan Hartley

được rồi, đoán xem điều đó không giúp được gì nhiều
Raynal Gobel

1
Nó giúp tất cả những người còn lại đến đây thông qua Google - bạn có thể chỉnh sửa câu trả lời để nói rằng nó không giúp ích gì cho OP, nhưng có thể giúp đỡ những người khác ... (đã giúp tôi!)
hiền nhân

1
Tôi đã tạo một Hỏi & Đáp mới cho GUI: Làm cách nào tôi có thể tạo hồ sơ Gnome Terminal mới?
wjandrea
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.