如何通过命令行为Gnome终端创建新的配置文件?

众所周知,您可以通过菜单创建新的配置文件,在该菜单中,您会被问到哪个现有配置文件应该是新配置文件的父配置文件,依此类推。 但是我应该如何通过命令行创建新的配置文件?

我应该通过gconftool从默认配置文件中读取每个现有值,并使用新名称再次设置它们还是有更好的解决方案? 如果答案是肯定的:我是否必须注意新的个人资料名称? 新的一直称为Profile0Profile1Profile2等。

 #找出有多少个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-cligsettings 。 我的选择是dconf-cli

GNOME终端的dconf目录是/org/gnome/terminal/legacy/profiles: . 所有操作都发生在这个目录中。 我将它存储在$dconfdir ,如下面的脚本所示。

创建新的个人资料

最低步数是

  1. 通过运行命令uuidgen为配置文件生成UUID
  2. 将其附加到listdconf write "$dconfdir/list" "[..., 'UUID']"
  3. 设置其visible-namedconf 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参考手册