ฉันจะสร้างโปรไฟล์ใหม่สำหรับเทอร์มินัล Gnome ผ่านบรรทัดคำสั่งได้อย่างไร


15

ตามที่ทุกคนรู้ว่าคุณสามารถสร้างโปรไฟล์ใหม่ได้จากเมนูที่คุณถูกถามว่าโปรไฟล์ใดที่มีอยู่ควรเป็นพาเรนต์สำหรับโปรไฟล์ใหม่ของคุณเป็นต้น แต่ฉันจะสร้างโปรไฟล์ใหม่ด้วยบรรทัดคำสั่งได้อย่างไร

ฉันควรอ่านค่าทั้งหมดที่มีอยู่จากโปรไฟล์เริ่มต้นผ่าน gconftool และตั้งค่าอีกครั้งภายใต้ชื่อใหม่หรือมีวิธีแก้ปัญหาที่ดีกว่านี้อีกหรือไม่ หากคำตอบคือใช่: ฉันต้องใส่ใจกับชื่อโปรไฟล์ใหม่หรือไม่ คนใหม่จะเรียกว่าเสมอProfile0, Profile1, Profile2ฯลฯ


คำตอบ:


3
# ค้นหาจำนวน pofiles ที่มี - ที่จุดเริ่มต้นจะมีเพียง 1 - ค่าเริ่มต้น
profiles_list = $ (gconftool-2 - รับ "/ apps / gnome-terminal / global / profile_list" | sed "s | \ [||; s | \] ||;")
echo "1 รายการส่วนกำหนดค่า:" $ {profiles_list}
last_profile = $ (echo "$ {profiles_list}" | sed "s /^.*,//" | sed 's / Profile //')
echo "ชื่อ / หมายเลขโปรไฟล์ล่าสุด:" $ {last_profile}

# ตั้งค่าหมายเลข X "ProfileX" เป็น 0 หากมีค่าเริ่มต้นเฉพาะหรือสิ่งสุดท้ายคือบวก 1
ถ้า [$ {last_profile} == "ค่าเริ่มต้น"]; แล้วก็
    next_profile_number = 0;
echo "1 หมายเลขโปรไฟล์ใหม่:" $ {next_profile_number}
อื่น
    next_profile_number = $ (($ {last_profile} + 1));
echo "2 หมายเลขโปรไฟล์ใหม่:" $ {next_profile_number}
Fi
echo "หมายเลขโปรไฟล์ใหม่:" $ {next_profile_number}

# สร้างรายการโปรไฟล์ที่มีหมายเลข "โปรไฟล์" เพิ่มเติม
profiles_list = $ (echo "[$ {profiles_list}, โปรไฟล์ $ {next_profile_number}]")
echo "1 รายการส่วนกำหนดค่า:" $ {profiles_list}

# รับดัมพ์ของโปรไฟล์เริ่มต้นเปลี่ยนชื่อโกลบอลเป็นชื่อโปรไฟล์ใหม่
ProfileName = MyNewProfile
gconftool -2
sed -i "s | ค่าเริ่มต้น | โปรไฟล์ $ {next_profile_number} | g" /tmp/${USER}_gnome-terminal_profiles_${profileName}.xml

# load โปรไฟล์ใหม่
gconftool-2 - โหลด /tmp/${USER}_gnome-terminal_profiles_${profileName}.xml

# tell gnome-terminal ที่มีโปรไฟล์อื่น
gconftool-2 - ชุด - รายการประเภท - รายการสตริงประเภท "/ apps / gnome-terminal / global / profile_list" "$ {profiles_list}"

คุณสมบัติ # set
gconftool-2 - ชุด - สตริงประเภท / apps / gnome-terminal / โปรไฟล์ / โปรไฟล์ $ {next_profile_number} / visible_name "$ {profileName}"
gconftool-2 - ชุด - สตริงประเภท / apps / gnome-terminal / โปรไฟล์ / โปรไฟล์ $ {next_profile_number} / exit_action "ถือ"
gconftool-2 - ชุด - สตริงประเภท / apps / gnome-terminal / โปรไฟล์ / โปรไฟล์ $ {next_profile_number} / ตัวอักษร "Monospace 14"
gconftool-2 - ชุด - สตริงประเภท / apps / gnome-terminal / โปรไฟล์ / โปรไฟล์ $ {next_profile_number} / background_color "# 000000000000"
gconftool-2 - ชุด - สตริงประเภท / apps / gnome-terminal / โปรไฟล์ / โปรไฟล์ $ {next_profile_number} / foreground_color "# 0000FFFF0000"
gconftool-2 - ชุด - สตริงประเภท / apps / gnome-terminal / โปรไฟล์ / โปรไฟล์ $ {next_profile_number} / scrollbar_position "ซ่อน"
gconftool-2 - ชุด - ประเภทบูลีน / แอพ / gnome-terminal / โปรไฟล์ / โปรไฟล์ $ {next_profile_number} / use_system_font "false"
gconftool-2 - ชุด - ประเภทบูลีน / แอพ / gnome-terminal / โปรไฟล์ / โปรไฟล์ $ {next_profile_number} / use_theme_colors "เท็จ"
gconftool-2 - ชุด - ประเภทบูลีน / แอพ / gnome-terminal / โปรไฟล์ / โปรไฟล์ $ {next_profile_number} / login_shell "true"
gconftool-2 - ชุด - ประเภทบูลีน / แอพ / 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 ทางเลือกของฉันคือgsettingsdconf-cli

ไดเรกทอรี dconf ของ GNOME /org/gnome/terminal/legacy/profiles:เทอร์มิ การดำเนินการทั้งหมดเกิดขึ้นใน dir นี้ ฉันเก็บไว้$dconfdirซึ่งจะแสดงในสคริปต์ด้านล่าง

สร้างโปรไฟล์ใหม่

ขั้นตอนขั้นต่ำคือ

  1. สร้าง UUID สำหรับโปรไฟล์โดยเรียกใช้คำสั่ง uuidgen
  2. ผนวกเข้ากับlist:dconf write "$dconfdir/list" "[..., 'UUID']"
  3. ตั้งค่าvisible-name:dconf write "$dconfdir/:UUID"/visible-name "'NAME'"

หลังจากนั้นแม้ว่าจะไม่ได้ตั้งค่ามากมายโปรไฟล์ใหม่จะปรากฏในการตั้งค่า GUI ของ Terminal เพื่อให้คุณสามารถแก้ไขการตั้งค่าผ่าน 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)

ระมัดระวังเกี่ยวกับเครื่องหมายคำพูดรอบค่าที่คุณเขียน ตามที่กล่าวในคู่มือ ,

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-ขั้วสี-solarized ฉันหาวิธีของฉันโดยการอ่านรหัสจำนวนมากจากที่นี่ มีประโยชน์จริงๆ
  • คู่มืออ้างอิง dconf

เราจะต้องตอบคำถามนี้ให้ถูกต้องเพราะนี่เป็นคำตอบที่ถูกต้องและทันสมัยที่สุด! ฉันกำลังค้นหาตัวเองอยู่พักหนึ่งdconf watch /และในที่สุดก็เกิดสิ่งที่เกิดขึ้นและคำตอบนั้นถูกต้องตามที่ @joegnis เขียน เพียงแค่สร้าง UUID เขียนมันไปยังฐานข้อมูลและการตั้งค่าและvisible-name /list
Kamil

2

ง่าย ใช้:

ไฟล์ -> โปรไฟล์ใหม่บนเทอร์มินัลของคุณ

ดูที่นี่สำหรับรายละเอียดเพิ่มเติม

อ้างอิง:


1
คำถามบอกว่าไม่ได้ใช้เมนู แต่ใช้ command-line แทน
Jonathan Hartley

โอเคเดาว่าไม่ได้ช่วยอะไรมาก
Raynal Gobel

1
มันจะช่วยพวกเราที่เหลือทั้งหมดที่มาที่นี่ผ่านทาง Google - คุณอาจแก้ไขคำตอบเพื่อบอกว่ามันไม่ได้ช่วย OP แต่สามารถช่วยคนอื่น ๆ ... (ช่วยฉันด้วย!)
sage

1
ฉันได้สร้างคำถาม & คำตอบใหม่สำหรับ GUI: ฉันจะสร้างโปรไฟล์ Gnome Terminal ใหม่ได้อย่างไร
wjandrea
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.