コグノスケ


link 未来から過去へ表示(*)  link 過去から未来へ表示

link もっと前
2026年10月4日 >>> 2026年9月21日
link もっと後

2026年10月4日

Xfce4の設定をCUIから読み書きする方法

目次: Arduino

もはやArduino全然関係ないですが、Arduinoが相棒のシステム系の話繋がりってことで……。Xfce4の調査をするにあたって設定変更を頻繁にやります、その際にGUIでポチポチやるのがだるい&ROCK 3Cはあまり速いマシンではないので、CUIからXfce4の設定を確認&設定する方法をメモしておきます。

設定のありか

Xfce4の設定ファイルはXMLで.config/xfce4/xfconf/xfce-perchannel-xml/の下にあります。例えばこれから調査しようとしているスクリーンセーバーの設定は.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-screensaver.xmlで私の環境だとこんな感じです。

xfce4-screensaver.xmlの例

<?xml version="1.0" encoding="UTF-8"?>

<channel name="xfce4-screensaver" version="1.0">
  <property name="saver" type="empty">
    <property name="mode" type="int" value="0"/>
    <property name="themes" type="empty">
      <property name="list" type="empty"/>
    </property>
    <property name="enabled" type="bool" value="false"/>
    <property name="idle-activation" type="empty">
      <property name="enabled" type="bool" value="false"/>
      <property name="delay" type="int" value="1"/>
    </property>
    <property name="fullscreen-inhibit" type="bool" value="false"/>
  </property>
  <property name="lock" type="empty">
    <property name="enabled" type="bool" value="false"/>
  </property>
</channel>

設定に間違ったtype, valueを書くと無視されてデフォルト値として受け付けます。Xfce4の親切機能ですがCUIユーザーにとっては罠です。CUIから設定読み書きする場合にtype(特にint/uint)を間違えると、設定が全く反映されていないように見えるため、めっちゃハマります、というかハマりました。ダメな時は無視しないでダメなところを言ってほしい。

設定の読み書き

現在の設定を読むにはxfconf-query -c (チャネル名) -p (プロパティ名)を使います。チャネル、プロパティの一覧は-c (チャネル名) -lで出せるので、組み合わせて全部ダンプするならこんな感じです。

以降の全操作例に共通ですが、デスクトップの設定はログインしたユーザーのD-Busセッションと関連しているので、

  • デスクトップ環境にログインした状態
  • SSHなどから実行する場合は自分のセッションをDBUS_SESSION_BUS_ADDRESSを指定

ログインした画面から操作するか、SSHなら環境変数を指定する必要があります。

チャネル名、プロパティ名一覧
$ export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$(id -u)/bus

$ xfconf-query -l

Channels:
  parole
  xsettings
  thunar-volman
  xfce4-panel
  xfce4-settings-manager
  xfwm4
  xfce4-screensaver
  keyboards
  xfce4-desktop
  xfce4-power-manager
  thunar
  xfce4-notifyd
  xfce4-keyboard-shortcuts
  xfce4-session
  displays


$ xfconf-query -c xfce4-screensaver -l

/lock/enabled
/saver/enabled
/saver/fullscreen-inhibit
/saver/idle-activation/delay
/saver/idle-activation/enabled
/saver/mode
/saver/themes/list
xfce4-screensaverのプロパティダンプ
$ export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$(id -u)/bus

$ for i in `xfconf-query -c xfce4-screensaver -l`;  do echo $i ---; xfconf-query -c xfce4-screensaver -p $i; done

/lock/enabled ---
false
/saver/enabled ---
false
/saver/fullscreen-inhibit ---
false
/saver/idle-activation/delay ---
1
/saver/idle-activation/enabled ---
false
/saver/mode ---
0
/saver/themes/list ---
Value is an array with 1 items:

screensavers-xfce-popsquares

設定するにはxfconf-query -c (チャネル名) -p (プロパティ名) -t (型名) -s (値)を使います。例えばスクリーンセーバーを無効にするには、/saver/enabled, /lock/enabled, /saver/idle-activation/enabled辺りを全部falseにするとよいです。

スクリーンセーバーを起動しないようにする設定例
$ export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$(id -u)/bus

$ xfconf-query -c xfce4-screensaver -p /saver/idle-activation/enabled -n -t bool -s false
$ xfconf-query -c xfce4-screensaver -p /saver/enabled -n -t bool -s false
$ xfconf-query -c xfce4-screensaver -p /lock/enabled  -n -t bool -s false

さっき書いた通り、このtypeがかなり曲者なので調べ方もメモしておきます。

正しい値の調べ方

値のtype, valueの調べ方はGUIで該当する項目を設定してみることです。GUIの設定項目とプロパティ名の対応がわからないときはmonitorモードを使うと便利です。

monitorモードでプロパティの変化を観察
$ export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$(id -u)/bus

$ xfconf-query -c xfce4-screensaver -m

Start monitoring channel "xfce4-screensaver":

#### Enable Screensaverを変えた
set: /saver/enabled
set: /saver/enabled

#### Activate screensaver when computer is idleを変えた
set: /saver/idle-activation/enabled
set: /saver/idle-activation/enabled

#### Regard the computer as idle after:を変えた
set: /saver/idle-activation/delay
set: /saver/idle-activation/delay

GUIから設定を変更して、XMLファイルを開き、書き換わったプロパティ名を頼りに探せば正しいtype, valueがわかるはずです。XMLは更新が遅い?のかすぐ見ると値が古いことがあります。少し経ってから見たほうが良いかもしれません。

もう1つの方法はD-Busで聞く方法です。こちらは即応のようですし、型名も出るので便利です。

D-BusでXfce4の設定を得る
$ export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$(id -u)/bus

$ gdbus call --session --dest org.xfce.Xfconf \
    --object-path /org/xfce/Xfconf \
    --method org.xfce.Xfconf.GetProperty \
    xfce4-screensaver /saver/idle-activation/delay

(<1>,)


#### uintのプロパティだとこんな感じになる

$ gdbus call --session --dest org.xfce.Xfconf \
    --object-path /org/xfce/Xfconf \
    --method org.xfce.Xfconf.GetProperty \
    xfce4-power-manager /xfce4-power-manager/dpms-on-ac-off

(<uint32 0>,)

XMLにせよD-Busにせよ、いずれの場合もGUIで設定を変更した後に見てください。CUIで間違った値を書いた後だと、当然ながら間違った値が読み出されます。

編集者:すずき(2026/10/11 02:50)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2026年10月2日

ROCK 3C + Debian 12 + Xfce4にアップデート

目次: Arduino

以前作ってTarget-1で稼働中の的あてゲーム、Linux側システムにRadxa ROCK 3Cを使っていて、ずっとDebian 11(Bullseye)で稼働しています。お店のシステムはネットワークに繋げていないので、アップデートしていないこと自体は問題ありません。とはいえ故障して新しいボードに置き換えたときに新しいイメージで稼働しないとなると困ります。

実は去年あたりにアップデートしたらどうなるのかちょっと試したら、全然動かなくなってて、直すのも調べるのも面倒で挫折してました。再チャレンジです。

Debian 12へアップグレードしたら動かなくなった

Radxaの公式イメージ配布サイト(Images Download - Radxa Docs)で配布されているROCK 3C向けDebian系イメージは2種類あります。

  • Debian 11(Bullseye)+ Xfce4
  • Debian 12(Bookworm)+ KDE

現在のDebian 11 + Xfce4からDebian 12 + KDEにするには、デスクトップ環境入れ替えなきゃいけなくて面倒なので、とりあえずDebian 11 -> 12アップデート = Debian 12 + Xfce4環境にします。これくらいなら動くでしょ?と思ったら全然動きません。マジかよ、なんでだよ。正確に言うとゲームシステム自体は起動しますが、デスクトップ環境と描画周りがかなり怪しい動きです。目立っておかしいところは下記の3つです。

  • 自動ログインが失敗してログイン画面に戻る
  • デスクトップが暗転して画面が消える
  • ゲームシステムの描画が変な色になる

一番困る奴から見ていこうと思います。

自動ログインの失敗

お店で稼働しているROCK 3Cはキーボード未接続なので、自動ログインに失敗するとめちゃ困ります。しかしなぜこうなるのか全然わかりません。うまくいかないときの/var/log/Xorg.0.log.oldを見ると、

ログイン画面に戻された時のXorg.0.log.old
[ 10380.104] (II) modeset(0): Output HDMI-1 connected
[ 10380.104] (II) modeset(0): Using exact sizes for initial modes
[ 10380.104] (II) modeset(0): Output HDMI-1 using initial mode 1920x1080 +0+0    ★1920x1080で起動した
[ 10380.104] (==) modeset(0): Using gamma correction (1.0, 1.0, 1.0)
[ 10380.104] (==) modeset(0): DPI set to (96, 96)
(...略...)
[ 10387.451] (--) modeset(0): HDMI max TMDS frequency 225000KHz
[ 10387.499] (II) modeset(0): Allocate new frame buffer 1024x768 stride    ★1024x768に切り替えようとして、クラッシュ
[ 10387.527] (EE)
[ 10387.527] (EE) Backtrace:
[ 10387.529] (EE) 0: /usr/lib/xorg/Xorg (OsLookupColor+0x188) [0xaaaab37b08d8]
[ 10387.530] (EE) unw_get_proc_info failed: no unwind info found [-10]
[ 10387.530] (EE)
[ 10387.530] (EE) Segmentation fault at address 0x6af1a5a5ffbea626
[ 10387.530] (EE)
Fatal server error:
[ 10387.530] (EE) Caught signal 11 (Segmentation fault). Server aborting
[ 10387.530] (EE)
[ 10387.530] (EE)
Please consult the The X.Org Foundation support
         at http://wiki.x.org
 for help.
[ 10387.531] (EE) Please also check the log file at "/var/log/Xorg.0.log" for additional information.
[ 10387.531] (EE)
[ 10387.706] (EE) Server terminated with error (1). Closing log file.

ちなみに自動ログイン時にクラッシュ、X.orgが再起動しているため、Xorg.0.logではなくXorg.0.log.oldを見る必要があります。ややこしいな。ログには特に情報がなく、わかるのは解像度を切り替えようとしたときにクラッシュしたことくらいです。X.orgかXfce4かGPUドライバ(GPU HWはMali-G52)ですかね……。

あら?解像度切り替えで死んでしまうなら、解像度を切り替えなければ良いじゃないこと?(by Claude先生)だそうで。暫定対策としてX.orgの設定を変更して、解像度を最初から1024x768にします。ROCK 3Cの環境はちょうど良いことに、/etc/X11/xorg.conf.d/20-modesetting.confが置いてあるので、こいつを書き換えましょう。

X.orgの設定追加で1024x768で起動する
### Valid values for rotation are "normal", "left", "right"
Section "Monitor"
    Identifier  "Default Monitor"
    Option          "Rotate" "normal"
    Option          "PreferredMode" "1024x768"    ★この行を追加する★
EndSection

変更後は解像度変更が発生しなくなり、自動ログインに失敗しなくなりました。とりあえずこれで良いでしょう。

デスクトップが暗転して画面が消える

しばらく放置すると画面が消えるので、運用上かなり困ります。調べてみると画面が消えるわけではなく、スクリーンセーバーを無効にしているのにスクリーンセーバーが1分で起動しているようです。


スクリーンセーバーの設定

設定は上記の画面の通りで、関係する設定項目を書き起こすとこんな感じです。

  • 上: Enable Screensaver = False
  • 下: Activate screensaver when computer idle = True

普通は上位のEnable Screensaver = Falseだから、従属のActivateなんちゃらはTrue/False関係なくスクリーンセーバーが起動しないと思いますよね。普通はそうですが、Xfce4は両方きっちりFalseにしないとスクリーンセーバーが起動します。

Xfce4の謎

挙動が謎すぎてClaude先生にこれバグなの?コード診てくんね?って愚痴ってたら「Xfce4のバグで4.18.3で直ってます、Debian 12は4.16.0なのでバグがまだ直ってないです」とのこと。ええー?こんな超基本的な設定がバグってる……?

興味がわいたので、次回はXfce4を調べてみようかと思います。

編集者:すずき(2026/10/11 01:28)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2026年9月27日

ジャガーさんのエンジンオイル交換2

目次: 車

前回交換からちょうど半年&5000km走行が同時に訪れたのでエンジンオイル交換に行ってきました。走行距離は71,000kmくらい。オイルにこだわりはないので今回もメーカー指定(Castrol EDGE 0W-20)、量も同じ(7L)です。フィルターは前回変えたので今回はオイル交換のみ、お値段は15,000円くらいでした。オートバックスでこの値段だもの、ディーラーはいくらでやってるんだろうなあ。

前回の交換ではメーターのオイルゲージ表示機能が荒ぶって全くオイルレベルが表示されずに困りましたが、寒くなってきたから?か今回はあっさりオイルレベルが表示されました。XEってもしかして日本の暑さに向いていないのかな、エアコンも効かないし……。

オートバックスでオイル交換すると次回交換時期を書いたカードをくれますが、車から降りるときに座席とセンターコンソールの隙間に落として取れなくなりました。ライトで座席とセンターコンソールの隙間を照らしてみたら、

  • 謎テープの破片
  • ペットボトルのキャップ
  • (私が落とした)カード

などが落ちていて取り除きたい気持ちが襲ってきたものの、手が全く入らず取りようがありませんでした。狭すぎる、何だこの隙間は。

編集者:すずき(2026/09/28 23:02)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2026年9月23日

Arduino CLIでM5Stamp C3に書き込む - ROCK 5Bでのコンパイル失敗

目次: Arduino

前回(2026年9月20日の日記参照)Arduino CLIをセットアップしました。今回はROCK 5Bでコンパイルしましたが、タイトルでネタバレしている通りうまくいきませんでした。無念です。

コンパイルのテストのため何もしないスケッチhello.inoを用意します。Arduinoはディレクトリ名と一致するソースコード名が必要で、例えばhelloディレクトリならhello/hello.inoが存在しないとエラーになります。スケッチには最低でもloop()関数とsetup()関数が必要ですから、とりあえず空の関数を書いておきます。

hello/hello.ino

void loop(void) {
}

void setup(void) {
}

Arduino CLIのcompileコマンドはボードのFQBN(Fully Qualified Board Name)を指定する必要があります。board listallで検索すると、M5Stamp C3用のFQBNは"m5stack:esp32:m5stack_stamp_c3"だそうです。

M5Stamp C3用のFQBN

$ ./bin/arduino-cli board listall | grep C3

M5StampC3      m5stack:esp32:m5stack_stamp_c3

これで必要な情報が揃いました。

コンパイル

さっき調べたFQBNとhello.inoを指定してcompileコマンドを実行すると……segmentation faultでクラッシュしました。えー、そんな。

ROCK 5Bでコンパイル、ダメそう
$ ./bin/arduino-cli compile -b m5stack:esp32:m5stack_stamp_c3 hello

Used platform Version Path
m5stack:esp32 3.3.9   /home/katsuhiro/.arduino15/packages/m5stack/hardware/esp32/3.3.9
Error during build: signal: segmentation fault

PCにインストールしたArduino CLIだとコンパイル成功するので、スケッチは無罪です。コンパイラ自体に何か問題が起きていそうです。

PC Linuxでコンパイル
$ ./bin/arduino-cli compile -b m5stack:esp32:m5stack_stamp_c3 hello

最大1310720バイトのフラッシュメモリのうち、スケッチが272094バイト(20%)を使っています。
最大327680バイトのRAMのうち、グローバル変数が13340バイト(4%)を使っていて、ローカル変数で314340バイト使うことができます。

ROCK 5Bはコンパイルが遅いかもなあ?くらいは想定していましたが、まさかコンパイラがクラッシュするとは思いませんでした。どうしようこれ。

編集者:すずき(2026/10/09 03:04)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link もっと前
2026年10月4日 >>> 2026年9月21日
link もっと後

管理用メニュー

link 記事を新規作成

<2026>
<<<10>>>
日月火水木金土
----123
45678910
11121314151617
18192021222324
25262728293031

最近のコメント5件

  • link 26年7月26日
    すずきさん (08/06 12:27)
    「ダイバート便以外もバスなんですよねえ。私...」
  • link 26年7月26日
    hdkさん (08/06 08:41)
    「あの規模の空港だとダイバート便にまでボー...」
  • link 26年7月14日
    すずきさん (07/31 11:48)
    「補充して乗れるのはまあそうなんですけど、...」
  • link 26年7月14日
    hdkさん (07/22 08:37)
    「冷却水漏れなんて、修理するまでは補充して...」
  • link 26年1月23日
    すずきさん (01/29 09:48)
    「おおー、そんな昔からなんですね。歴史感じ...」

最近の記事3件

  • link 23年6月2日
    すずき (10/11 02:50)
    「[Arduino - まとめリンク] 目次: ArduinoM5Stackとesp32とArduinoM5Stamp C3のA...」
  • link 26年10月4日
    すずき (10/11 02:50)
    「[Xfce4の設定をCUIから読み書きする方法] 目次: ArduinoもはやArduino全然関係ないですが、Arduino...」
  • link 26年10月2日
    すずき (10/11 01:28)
    「[ROCK 3C + Debian 12 + Xfce4にアップデート] 目次: Arduino以前作ってTarget-1で稼...」
link もっとみる

こんてんつ

open/close wiki
open/close Linux JM
open/close Java API

過去の日記

open/close 2002年
open/close 2003年
open/close 2004年
open/close 2005年
open/close 2006年
open/close 2007年
open/close 2008年
open/close 2009年
open/close 2010年
open/close 2011年
open/close 2012年
open/close 2013年
open/close 2014年
open/close 2015年
open/close 2016年
open/close 2017年
open/close 2018年
open/close 2019年
open/close 2020年
open/close 2021年
open/close 2022年
open/close 2023年
open/close 2024年
open/close 2025年
open/close 2026年
open/close 過去日記について

その他の情報

open/close アクセス統計
open/close サーバ一覧
open/close サイトの情報

合計:  counter total
本日:  counter today

link About www2.katsuster.net
RDFファイル RSS 1.0

最終更新: 10/11 02:50