コマンドラインでXfceワークスペースの名前を変更するには?

コマンドラインでXfceワークスペースの名前を変更するには?

リモートコンピュータのワークスペース名を変更する必要があります。 xfconf-queryの文書を表示し、次のようにワークスペース名を正常にリストしました。

xfconf-query -c xfwm4 -p /general/workspace_names

結果は次から始まります。

Value is an array with 13 items:

また、私のワークスペース名の1つを含むファイルを見つけて~/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xmlを見つけましたが、ファイルを編集してワークスペース名の1つを変更してからワークスペースGUIを開くと、まだ同じ古い値があります。ただし、GUIでワークスペース名を変更してから~/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xmlを開くと、ワークスペースが新しいワークスペース名で更新されます。

これについてたくさん検索しましたが、配列内で変更したい項目と変更したい項目を指定する方法を示す項目が見つかりませんでした。これを行う方法を知っている人がいる場合は、例を投稿できますか?

xfconf-query -c xfwm4 -p /general/workspace_names -o(ld) old_name -n(ew) new_name

答え1

これを具体的に実行するコマンドラインユーティリティが見つかりません。すべてのワークスペースで使用される名前は出力に表示される配列なので、xfconf-query指定する必要があります。/general/workspace_namesBashスクリプトが役に立ちます。

$ cat xfwm4-set-workspace-name
#!/bin/bash

# usage: xfwm4-set-workspace-name [number name]...

_OLD_IFS=$IFS IFS=$'\n'
ws_count=$(xfconf-query -c xfwm4 -p /general/workspace_count)
ws_names=($(xfconf-query -c xfwm4 -p /general/workspace_names | tail -n+3))
IFS=$_OLD_IFS

declare -i ws_number

while [ $# -gt 0 ]; do
    ws_number=$1
    shift

    if [ $ws_number -lt 1 -o $ws_number -gt $ws_count ]; then
        echo warning: invalid workspace number 2>/dev/null
        shift
        continue
    fi

    if [ $# -eq 0 ]; then
        echo warning: no workspace name specified 2>/dev/null
        break
    fi

    ws_name=$1
    shift
    ws_names[$((ws_number - 1))]=$ws_name
done

declare -a xfconf_sets

for i in ${!ws_names[@]}; do
    xfconf_sets+=(-s "${ws_names[$i]}")
done

xfconf-query -c xfwm4 -p /general/workspace_names "${xfconf_sets[@]}"
$ ./xfwm4-set-workspace-name 2 'ws two' 3 'workspace three'

関連情報