मैं कमांड लाइन के माध्यम से गनोम टर्मिनल के लिए एक नया प्रोफ़ाइल कैसे बना सकता हूं?


15

जैसा कि हर कोई जानता है कि आप मेनू द्वारा एक नई प्रोफ़ाइल बना सकते हैं, जहां आपको पूछा जाता है कि आपके मौजूदा प्रोफ़ाइल में कौन सी प्रोफ़ाइल होनी चाहिए और इसी तरह की अन्य प्रोफ़ाइल। लेकिन मुझे कमांड लाइन द्वारा एक नया प्रोफ़ाइल कैसे बनाना चाहिए?

क्या मुझे गॉकेटफूल के माध्यम से डिफ़ॉल्ट प्रोफ़ाइल से हर मौजूदा मूल्य को पढ़ना चाहिए और उन्हें एक नए नाम के तहत फिर से सेट करना चाहिए या कोई बेहतर उपाय है? यदि उत्तर हाँ है: क्या मुझे नए प्रोफ़ाइल नाम पर ध्यान देना है? नए लोगों को हमेशा कहा जाता है Profile0, Profile1, Profile2आदि


जवाबों:


3
# पता करें कि वहाँ कितने पोफिले हैं - शुरुआत में सिर्फ 1 - डिफ़ॉल्ट होगा
प्रोफाइल_लिस्ट = $ (gconftool-2 --get "/ apps / gnome-terminal / global / profile_list" | sed "s। \ [||? s | \] ||"? "
इको "1 प्रोफाइल सूची:" $ {प्रोफाइल_लिस्ट}
last_profile = $ (गूंज "$ {प्रोफाइल_लिस्ट}" | sed "s /^.*,//" | sed 's / प्रोफाइल //')
गूंज "अंतिम प्रोफ़ाइल नाम / संख्या:" $ {last_profile}

# "प्रोफाइलएक्स" एक्स नंबर को 0 पर सेट करें यदि केवल डिफ़ॉल्ट है या जो कुछ भी अंतिम है प्लस 1
अगर [$ {last_profile} == "डिफ़ॉल्ट"]; फिर
    next_profile_number = 0;
इको "1 न्यू प्रोफाइल नंबर:" $ {next_profile_number}
अन्य
    next_profile_number = $ (($ {last_profile} + 1));
प्रतिध्वनि "2 नई प्रोफ़ाइल संख्या:" $ {next_profile_number}
फाई
इको "न्यू प्रोफाइल नंबर:" $ {next_profile_number}

अतिरिक्त प्रोफ़ाइल "संख्या" के साथ # निर्माण प्रोफाइल सूची
प्रोफाइल_लिस्ट = $ (गूंज "[$ {प्रोफाइल_लिस्ट}, प्रोफ़ाइल $ {next_profile_number}]")
इको "1 प्रोफाइल सूची:" $ {प्रोफाइल_लिस्ट}

# डिफ़ॉल्ट प्रोफ़ाइल का एक डंप प्राप्त करें, वैश्विक नाम को नए प्रोफ़ाइल नाम में बदलें
प्रोफ़ाइल = MyNewProfile
gconftool-2 - dump "/ apps / gnome-टर्मिनल / प्रोफाइल / डिफ़ॉल्ट"> /tmp/$endersUSER Ideal_gnome-terminal_profiles_$endersprofileName Ideal.xml
sed -i "s। डिफ़ॉल्ट | प्रोफ़ाइल $ {next_profile_number} | g" /tmp/$azingUSER Ideal_gnome-terminal_profiles_$endersprofileNamearios.xml

# नई प्रोफ़ाइल लोड करें
gconftool-2 --load /tmp/$azingUSER Ideal_gnome-terminal_profiles_$endersprofileNamearios.xml

# सूक्ति-टर्मिनल बताएं जिसमें एक और प्रोफ़ाइल है
gconftool-2 --set --type सूची --सूची-प्रकार स्ट्रिंग "/ ऐप्स / सूक्ति-टर्मिनल / वैश्विक / प्रोफ़ाइल_सूची" "$ {प्रोफाइल_सूची}"

# सेट गुण
gconftool-2 --set --type string / apps / gnome-terminal / प्रोफाइल / प्रोफाइल $ {next_profile_number} / दृश्य_नाम "$ {profileName}"
gconftool-2 --set --type string / apps / gnome-terminal / प्रोफाइल / प्रोफाइल $ {next_profile_number} / exit_action "होल्ड"
gconftool-2 --set --type string / apps / gnome-terminal / प्रोफाइल / प्रोफाइल $ {next_profile_number} / font "Monospace 14"
gconftool-2 --set --type string / apps / gnome-terminal / प्रोफाइल / प्रोफाइल $ {next_profile_number} / background_color "# 000000000000"
gconftool-2 --set --type string / apps / gnome-terminal / प्रोफाइल / प्रोफाइल $ {next_profile_number} / frontground_color "# 0000FFFF0000"
gconftool-2 --set --type string / apps / gnome-terminal / प्रोफाइल / प्रोफाइल $ {next_profile_number} / scrollbar_position "छिपा हुआ"
gconftool-2 --set --type बूलियन / ऐप्स / सूक्ति-टर्मिनल / प्रोफाइल / प्रोफ़ाइल $ {next_profile_number} / use_system_font "false"
gconftool-2 --set --type बूलियन / ऐप्स / सूक्ति-टर्मिनल / प्रोफ़ाइल / प्रोफ़ाइल $ {next_profile_number} / use_theme_colors "झूठी"
gconftool-2 --set --type बूलियन / ऐप्स / सूक्ति-टर्मिनल / प्रोफ़ाइल / प्रोफ़ाइल $ {next_profile_number} / login_shell "true"
gconftool-2 --set --type बूलियन / ऐप्स / सूक्ति-टर्मिनल / प्रोफ़ाइल / प्रोफ़ाइल $ {next_profile_number} / स्क्रॉलबैक_unlimited "सही"

# एक टर्मिनल बनाएं
सूक्ति-टर्मिनल - बीजगणित = 24०x२४ + ० + ० - लाभकारी = $ {प्रोफ़ाइलनाम} शीर्षक "$ {प्रोफ़ाइलनाम}" -ज़ूम ०. --ई "/ बिन / श"


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

के लिए सूक्ति टर्मिनल> = 3.8 , बनाने के लिए / संपादन / CLI के माध्यम से प्रोफाइल को पढ़ने, तो आप उपयोग कर सकते हैं dconf-cliया gsettings। मेरे विकल्प है dconf-cli

GNOME टर्मिनल की dconf निर्देशिका है /org/gnome/terminal/legacy/profiles:। सभी ऑपरेशन इस dir में होते हैं। मैं इसे संग्रहीत करता हूं $dconfdirजिसमें नीचे स्क्रिप्ट में दिखाया गया है।

एक नया प्रोफ़ाइल बनाएं

न्यूनतम कदम हैं

  1. कमांड चलाकर प्रोफ़ाइल के लिए एक यूयूआईडी बनाएं uuidgen
  2. इसे इसमें संलग्न करें list:dconf write "$dconfdir/list" "[..., 'UUID']"
  3. इसका सेट करें visible-name:dconf write "$dconfdir/:UUID"/visible-name "'NAME'"

उसके बाद, भले ही कई सेटिंग्स सेट न हों, टर्मिनल की GUI सेटिंग्स में एक नया प्रोफ़ाइल दिखाई देगा ताकि आप 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 के माध्यम से प्रोफ़ाइल के अधिक विकल्प सेट कर सकते हैं। Daud

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 ने लिखा है। बस एक यूयूआईडी बनाएं, इसे डेटाबेस में लिखें और सेट करें visible-nameऔर /list
कामिल

2

सरल। उपयोग:

फ़ाइल-> अपने टर्मिनल पर नई प्रोफ़ाइल

अधिक जानकारी के लिए यहां देखें ।

संदर्भ:


1
सवाल मेनू का उपयोग नहीं करता है, बल्कि इसके बजाय कमांड-लाइन का उपयोग करता है।
जोनाथन हार्टले

ठीक है, अनुमान है कि ज्यादा मदद नहीं की है
रायल गोबल ३16

1
यह हममें से बाकी सभी लोगों की मदद करता है जो Google के माध्यम से यहां आते हैं - आप यह कहने के लिए उत्तर को संपादित कर सकते हैं कि यह ओपी की मदद नहीं करता है, लेकिन दूसरों की मदद कर सकता है ... (मेरी मदद की!)
ऋषि

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.