모든 사람이 알듯이 메뉴를 통해 새 프로필의 부모가 될 기존 프로필을 묻는 새 프로필을 만들 수 있습니다. 그러나 명령 행으로 어떻게 새 프로파일을 작성해야합니까?
gconftool을 통해 기본 프로필에서 모든 기존 값을 읽고 새 이름으로 다시 설정해야합니까 아니면 더 나은 해결책이 있습니까? 대답이 예인 경우 : 새 프로파일 이름에주의해야합니까? 새로운 사람들이 항상라고 Profile0
, Profile1
, Profile2
등
모든 사람이 알듯이 메뉴를 통해 새 프로필의 부모가 될 기존 프로필을 묻는 새 프로필을 만들 수 있습니다. 그러나 명령 행으로 어떻게 새 프로파일을 작성해야합니까?
gconftool을 통해 기본 프로필에서 모든 기존 값을 읽고 새 이름으로 다시 설정해야합니까 아니면 더 나은 해결책이 있습니까? 대답이 예인 경우 : 새 프로파일 이름에주의해야합니까? 새로운 사람들이 항상라고 Profile0
, Profile1
, Profile2
등
답변:
# 몇 개의 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"
들어 그놈 터미널> = 3.8 , 만들 / 편집 / CLI를 통해 프로파일을 읽고, 당신도 사용할 수 있습니다 dconf-cli
또는 gsettings
. 내 선택은 dconf-cli
입니다.
그놈 터미널의 dconf 디렉토리는
/org/gnome/terminal/legacy/profiles:
입니다. 모든 작업은이 디렉토리에서 이루어집니다.$dconfdir
아래 스크립트에 표시된 파일을 저장합니다 .
최소 단계는
uuidgen
list
.dconf write "$dconfdir/list" "[..., 'UUID']"
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
.
단순한. 사용하다:
터미널의 파일-> 새 프로필 .
참고 문헌 :