Help us understand the problem. What is going on with this article?

ターミナルなどからXfceの設定をする

More than 3 years have passed since last update.

キーボードショートカットや背景といった単純な設定ならアプリケーションメニューでもいけるけど例えば別プログラムから変更を加えたりしたいとか言うときにどうするのっていう話(というよりメモ)。

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="&lt;Alt&gt;F1" type="string" value="xfce4-popup-applicationsmenu"/>
      <property name="&lt;Alt&gt;F2" type="string" value="xfce4-appfinder --collapsed">
        <property name="startup-notify" type="bool" value="true"/>
      </property>
      <property name="&lt;Alt&gt;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の方にアップしました。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away