커맨드 라인을 통해 Gnome 터미널에 대한 새로운 프로파일을 어떻게 만들 수 있습니까?


15

모든 사람이 알듯이 메뉴를 통해 새 프로필의 부모가 될 기존 프로필을 묻는 새 프로필을 만들 수 있습니다. 그러나 명령 행으로 어떻게 새 프로파일을 작성해야합니까?

gconftool을 통해 기본 프로필에서 모든 기존 값을 읽고 새 이름으로 다시 설정해야합니까 아니면 더 나은 해결책이 있습니까? 대답이 예인 경우 : 새 프로파일 이름에주의해야합니까? 새로운 사람들이 항상라고 Profile0, Profile1, Profile2


답변:


3
# 몇 개의 pofile이 있는지 확인하십시오-처음에는 1이 있습니다-Default
profiles_list = $ (gconftool-2 --get "/ 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}

# 기본값 만 있거나 마지막 값에 1을 더한 경우 "ProfileX"X 번호를 0으로 설정하십시오.
만약 [$ {last_profile} == "Default"]; 그때
    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}, Profile $ {next_profile_number}]")
echo "1 프로필 목록 :"$ {profiles_list}

# 기본 프로필의 덤프를 받고 전역 이름을 새 프로필 이름으로 변경하십시오.
profileName = MyNew 프로필
gconftool-2-덤프 "/ apps / gnome-terminal / profiles / Default"> /tmp/${USER}_gnome-terminal_profiles_${profileName}.xml
sed -i "s | 기본 | 프로필 $ {next_profile_number} | g"/tmp/${USER}_gnome-terminal_profiles_${profileName}.xml

# 새 프로필로드
gconftool-2 --load /tmp/${USER}_gnome-terminal_profiles_${profileName}.xml

# 그놈 터미널에 다른 프로파일이 있다고 말하십시오.
gconftool-2 --set --type list --list-type 문자열 "/ apps / gnome-terminal / global / profile_list" "$ {profiles_list}"

# 세트 속성
gconftool-2 --set --type 문자열 / apps / gnome-terminal / profiles / Profile $ {next_profile_number} / visible_name "$ {profileName}"
gconftool-2 --set --type 문자열 / apps / gnome-terminal / profiles / Profile $ {next_profile_number} / exit_action "보류"
gconftool-2 --set --type 문자열 / apps / gnome-terminal / profiles / Profile $ {next_profile_number} / font "Monospace 14"
gconftool-2 --set --type 문자열 / apps / gnome-terminal / profiles / Profile $ {next_profile_number} / background_color "# 000000000000"
gconftool-2 --set --type 문자열 / apps / gnome-terminal / profiles / Profile $ {next_profile_number} / foreground_color "# 0000FFFF0000"
gconftool-2 --set --type 문자열 / apps / gnome-terminal / profiles / Profile $ {next_profile_number} / scrollbar_position "숨겨 짐"
gconftool-2 --set --type 부울 / apps / gnome-terminal / profiles / Profile $ {next_profile_number} / use_system_font "false"
gconftool-2 --set --type 부울 / apps / gnome-terminal / profiles / Profile $ {next_profile_number} / use_theme_colors "false"
gconftool-2 --set --type 부울 / apps / gnome-terminal / profiles / Profile $ {next_profile_number} / login_shell "true"
gconftool-2 --set --type 부울 / apps / gnome-terminal / profiles / Profile $ {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

들어 그놈 터미널> = 3.8 , 만들 / 편집 / CLI를 통해 프로파일을 읽고, 당신도 사용할 수 있습니다 dconf-cli또는 gsettings. 내 선택은 dconf-cli입니다.

그놈 터미널의 dconf 디렉토리는 /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를 통해 설정을 편집 할 수 있도록 새 프로파일이 터미널의 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)

쓴 값 주위의 따옴표에주의하십시오. AS는 말했다 매뉴얼 ,

키를 설정할 때을 지정해야합니다 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.
Kamil

2

단순한. 사용하다:

터미널의 파일-> 새 프로필 .

자세한 내용은 여기 를 참조 하십시오 .

참고 문헌 :


1
질문은 메뉴를 사용하지 않고 대신 명령 줄을 사용한다고 말합니다.
Jonathan Hartley

좋습니다, 그게 그다지 도움이되지 않았을 것입니다
Raynal Gobel

1
그것은 구글을 ​​통해 여기에 온 우리 모두를 돕습니다-당신은 OP를 돕지는 않지만 다른 사람들을 도울 수 있다고 대답을 편집 할 수 있습니다 ... (도움이되었습니다!)
sage

1
GUI에 대한 새로운 Q & A를 만들었습니다. 새로운 Gnome Terminal 프로파일을 어떻게 만들 수 있습니까?
wjandrea
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.