キーボードショートカットや背景といった単純な設定ならアプリケーションメニューでもいけるけど例えば別プログラムから変更を加えたりしたいとか言うときにどうするのっていう話(というよりメモ)。
2015/6/11:Xfceのバージョンアップによりプロパティ名が一部変わったっぽいのでそれに合わせて修正。記事を修正した段階でのバージョンは4.12。
Xfconf
参考
Xfceの設定項目は階層的な構造になっていて、まずチャンネルと呼ばれている大雑把なカテゴリ(画面やキーボードの設定など)に分かれており、その中の各プロパティに値が指定されている。プロパティの下にプロパティが存在するということもある。
設定ファイルはXML形式で書かれている。キーボードショートカットの設定なら以下の通り。
<?xml version="1.0" encoding="UTF-8"?>
<channel name="xfce4-keyboard-shortcuts" version="1.0">
<property name="commands" type="empty">
<property name="default" type="empty">
<property name="<Alt>F1" type="string" value="xfce4-popup-applicationsmenu"/>
<property name="<Alt>F2" type="string" value="xfce4-appfinder --collapsed">
<property name="startup-notify" type="bool" value="true"/>
</property>
<property name="<Alt>F3" type="string" value="xfce4-appfinder">
<property name="startup-notify" type="bool" value="true"/>
</property>
...
</property>
<property name="xfwm4" type="empty">
...
</property>
</channel>
これを直接弄ることで設定を変更することも出来るが、設定ファイルを探さなければいけないしちょっとした文法ミス等でXfceが正常に動かなくなる可能性もあるのであまりよろしくない。(公式でもこれは最後の手段だみたいなことを言ってる)
[アプリケーションメニュー]>[設定]でメニューを開くのが一番簡単な方法だが、設定の変更をコマンドライン上で行うことも出来る。
xfconf-query
参考その1,参考その2
xfconf-query
コマンドを用いる。詳しいことは多分ここで書くよりヘルプに任せた方が良さそう。
以下、使用例。
とりあえずチャンネルの一覧が見たいとする。この場合コマンドは以下の様になる。-l
で一覧を表示可能。
# xfconf-query -l
するとチャンネルの一覧が出てくる。以下は筆者の環境で実行したときの例。
チャンネル:
xfce4-session
xsettings
keyboard-layout
thunar
xfwm4
xfce4-settings-editor
ristretto
xfce4-desktop
xfce4-keyboard-shortcuts
displays
xfce4-panel
keyboard-shortcutsとかが分かりやすそうなのでとりあえずそこをいじる事にしてみる。どんなプロパティがあるか見てみたい場合は以下の様に叩いてみる。-c
でチャンネルを指定し、-l
で同様に一覧表示すれば良い。-v
も指定すれば値が分かる。
# xfconf-query -c xfce4-keyboard-shortcuts -lv
結果は以下の様になる。長かったので途中の部分だけ。
...
/xfwm4/custom/<Alt>F10 maximize_window_key
/xfwm4/custom/<Alt>F11 fullscreen_key
/xfwm4/custom/<Alt>F12 above_key
/xfwm4/custom/<Alt>F4 close_window_key
/xfwm4/custom/<Alt>F6 stick_window_key
...
とりあえず<Alt> + F4
でウィンドウを閉じる,<Alt> + F11
でフルスクリーンになるということが分かった。
(そんな事はあまり無いだろうけど)仮に<Alt> + F4
と<Alt> + F11
の役割を入れ替えたくなったとしたら以下の様に打つ。-p
,-s
でそれぞれプロパティ,値を指定する。
# xfconf-query -c xfce4-keyboard-shortcuts -p "/xfwm4/custom/<Alt>F4" -s fullscreen_key
# xfconf-query -c xfce4-keyboard-shortcuts -p "/xfwm4/custom/<Alt>F10" -s close_window_key
新しくプロパティを追加することも可能だが、その場合はプロパティの後に-n
を追加し、値の他に-t
で値の型(int
とかstring
とか)を指定する必要がある。以下の例では<Alt> + F5
で横方向に最大化する様に設定する。
# xfconf-query -c xfce4-keyboard-shortcuts -p "/xfwm4/custom/<Alt>F5" -n -t string -s maximize_horiz_key
プロパティを消す場合は-r
を指定する。
# xfconf-query -c xfce4-keyboard-shortcuts -p "/xfwm4/custom/<Alt>F5" -r
他にも色々オプションとかあったりするけれども、とりあえずこの辺りさえ分かっておけば十分っぽい?
後書き
元々は「背後からの襲撃に備えてコマンド一発で背景画像を変えたいなー」とか「背景画像を数分おきにランダムに変えられないかなー」という不純な動機がありました。
背景画像の変更自体は以下の様に叩けば可能です(例はワークスペース1の場合,もしかしたら環境によってプロパティが違ったりするかも)。あとは他のプログラムから呼び出すなりcronと併用するなりご自由に。
# xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitorVGA-0/workspace0/last-image -s "ファイル名"
こんな感じで満足のいく結果となった訳ですが、実際のところこれ以外の応用方法が思いつかないのが現状です。圧倒的Xfce力の低さ。
追記(2015/6/11)
ランダム背景
ランダム背景自体はデフォルトで可能な模様。アプリケーションメニューから[設定 > デスクトップ]で設定できる。xfconf-queryなら(自分の環境では)次の通り。プロパティlast-imageで指定されたファイルと同じディレクトリにある画像ファイルから選ばれる模様。
# xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitorVGA-0/workspace0/backdrop-cycle-random-order -s true
応用例(背景を自動的に変えるスクリプト)
背景を自動的に変えるスクリプト(Python)をGitHubの方にアップしました。