如何通过命令行为Gnome终端创建新的配置文件?
众所周知,您可以通过菜单创建新的配置文件,在该菜单中,您会被问到哪个现有配置文件应该是新配置文件的父配置文件,依此类推。 但是我应该如何通过命令行创建新的配置文件?
我应该通过gconftool从默认配置文件中读取每个现有值,并使用新名称再次设置它们还是有更好的解决方案? 如果答案是肯定的:我是否必须注意新的个人资料名称? 新的一直称为Profile0
, Profile1
, Profile2
等。
#找出有多少个pofiles - 一开始只有1 - 默认 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} #设置“ProfileX”X数字为0,如果只有默认值或者最后一个加1 if [$ {last_profile} ==“Default”]; 然后 next_profile_number = 0; echo“1个新的个人资料编号:”$ {next_profile_number} 其他 next_profile_number = $(($ {last_profile} + 1)); echo“2新的个人资料编号:”$ {next_profile_number} 科幻 echo“新的个人资料编号:”$ {next_profile_number} #construct profile list with extra profile“number” profiles_list = $(echo“[$ {profiles_list},Profile $ {next_profile_number}]”) echo“1个档案列表:”$ {profiles_list} #获取默认配置文件的转储,将全局名称更改为新的配置文件名称 PROFILENAME = MyNewProfile gconftool-2 --dump“/ 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 #load new profile gconftool-2 --load /tmp/${USER}_gnome-terminal_profiles_${profileName}.xml #告诉gnome-terminal这是另一个配置文件 gconftool-2 --set --type list --list-type string“/ apps / gnome-terminal / global / profile_list”“$ {profiles_list}” #set properties gconftool-2 --set --type string / apps / gnome-terminal / profiles / Profile $ {next_profile_number} / visible_name“$ {profileName}” gconftool-2 --set --type string / apps / gnome-terminal / profiles / Profile $ {next_profile_number} / exit_action“hold” gconftool-2 --set --type string / apps / gnome-terminal / profiles / Profile $ {next_profile_number} / font“Monospace 14” gconftool-2 --set --type string / apps / gnome-terminal / profiles / Profile $ {next_profile_number} / background_color“#000000000000” gconftool-2 --set --type string / apps / gnome-terminal / profiles / Profile $ {next_profile_number} / foreground_color“#0000FFFF0000” gconftool-2 --set --type string / apps / gnome-terminal / profiles / Profile $ {next_profile_number} / scrollbar_position“hidden” gconftool-2 --set --type boolean / apps / gnome-terminal / profiles / Profile $ {next_profile_number} / use_system_font“false” gconftool-2 --set --type boolean / apps / gnome-terminal / profiles / Profile $ {next_profile_number} / use_theme_colors“false” gconftool-2 --set --type boolean / apps / gnome-terminal / profiles / Profile $ {next_profile_number} / login_shell“true” gconftool-2 --set --type boolean / apps / gnome-terminal / profiles / Profile $ {next_profile_number} / scrollback_unlimited“true” #创建一个终端 gnome-terminal --geometry = 80x24 + 0 + 0 --profile = $ {profileName} title“$ {profileName}” - zoom 0.8 -e“/ bin / sh”
您无法创建新的配置文件,但可以使用gconftool-2
转储当前配置,修改并加载它。
gconftool-2 --dump '/apps/gnome-terminal' > gnome-terminal-conf.xml ## Modify the file here. gconftool-2 --load gnome-terminal-conf.xml
请记住,它只返回非默认值(或gconf检测为非默认值),因此,生成的文件无法完成。
简单。 使用:
终端上的文件 – >新配置文件 。
有关详细信息,请参见此处
参考文献:
对于GNOME终端> = 3.8 ,要通过cli创建/编辑/读取配置文件,您可以使用dconf-cli
或gsettings
。 我的选择是dconf-cli
。
GNOME终端的dconf目录是
/org/gnome/terminal/legacy/profiles:
. 所有操作都发生在这个目录中。 我将它存储在$dconfdir
,如下面的脚本所示。
创建新的个人资料
最低步数是
- 通过运行命令
uuidgen
为配置文件生成UUID - 将其附加到
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)
注意你写的值周围的引号。 如手册中所述,
设置密钥时,还需要指定
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-terminal-colors-solarized 。 我从这里读了很多代码,弄明白了。 真有帮助。
- dconf参考手册