BrainuxとX環境への接続について
Brainuxには、標準でX環境(X11[X window system])が利用できます。
X環境(X11[X Window system])の1つの特徴として、アプリケーションと表示するシステムが独立していて、アプリケーションを動かすサーバと、画面描画するサーバが別でも構わないことです。
X11はクライアント/サーバモデルで提供しているのですが、
あくまで画面描写が主体となっているため、一般的な認識とは逆になります。
・ここでの「クライアント」は、GUIを表示するプログラム(Xアプリケーション)になります。
・ここでの「サーバー」は、クライアント(Xアプリケーション)からの要求を受け付けて、画面に表示する内容を管理するプログラム(X11[X window system])になります。
Brainの画面でX11アプリケーションを利用するには、いくつかのパターンがあります。
- Brainを直接操作して、Brain上でXアプリケーションを起動し、Brainの画面で操作する
- Brainから他PCにsshでログインして、他PC上でXアプリケーションを起動し、Brainの画面で操作する
- 他PCからsshでBrainにログインして、Brain上でXアプリケーションを起動し、Brainの画面で操作する
- 他PCでログインして、他PC上でXアプリケーションを起動し、Brainの画面で操作する
| 1 | 起動操作 | Xアプリケーション実行 | Xアプリ表示(操作) |
| 1.Brainを直接操作して、Brain上でXアプリケーションを起動し、Brainの画面で操作する | Brain | Brain | Brain |
| 2.Brainから他PCにsshでログインして、他PC上でXアプリケーションを起動し、Brainの画面で操作する | Brain->他PC | 他PC | Brain |
| 3.他PCからsshでBrainにログインして、Brain上でXアプリケーションを起動し、Brainの画面で操作する | 他PC->Brain | Brain | Brain |
| 4.他PCでログインして、他PC上でXアプリケーションを起動し、Brainの画面で操作する | 他PC | 他PC | Brain |
ここでは、以下を想定して、それぞれの方法での接続例を紹介します。
brain(IP:192.168.29.11) Brainux環境
他PC(IP:192.168.29.19) X11環境を持ったLinuxを想定
今回の環境的には、USBホストアダプタを使って、USBネットワークアダプタ経由でネットワークに接続しています。
(USBでホストPCを経由してネットワークに接続する(USB Ethernet Gadget)だと、他PCからBrainへの通信について制限が出てくるので、ホストPCがX11導入したLinuxであればいけるかもといったところ)
1.Brainを直接操作して、Brain上でXアプリケーションを起動し、Brainの画面で操作する
| 起動操作 | Xアプリケーション実行 | Xアプリ表示(操作) |
| Brain | Brain | Brain |
これがBrainuxでの一般的な操作になります。
Brain上でBrainuxを起動する際には、「xinitrc」か「jvm」を選択して起動すれば、X環境が立ち上がります。
あとは、terminalを起動し、Xアプリケーションを起動してください。
DISPLAY環境変数にはすでに:0は設定されているので、明示的に設定する必要はありません。(xeyesは、マウスカーソルの方向を向く目玉のアプリケーションです。)
xeyes &
user@brain:~$ printenv DISPLAY
:0
user@brain:~$ xeyes &
[1] 1714

その他デフォルトで、x11-appsというパッケージが導入されているようです。
xeyes(目玉アプリ)以外にも、oclock(アナログ時計),xclock(アナログ時計),calc(電卓)、xedit(エディタ)、xmore(ビューア)あたりは普通に使えると思います。
x11-apps
- ビットマップ画像を操作するツール atobm, bitmap および bmtoa
- 多面体を動画表示するデモプログラム ico
- グラフィカルな時計 oclock および xclock
- render拡張の実装を検査するプログラム rendercheck
- ウィンドウの不透明度属性を設定するツール transset
- 新着メールを通知するツール xbiff
- 関数電卓デスクトップアクセサリ xcalc
- カットアンドペーストしたテキスト選択部分の管理ツール xclipboard
- システムコンソールメッセージを監視する xconsole
- PNG から X のカーソルファイルを作成するツール xcursorgen
- ditroff 出力用ビューア xditview
- X 用のシンプルなテキストエディタ xedit
- 二つの目がポインタを追いかけるデモプログラム xeyes
- グラフィックデモ xgc
- システム平均負荷モニタ xload
- X のロゴを表示するデモプログラム xlogo
- X 画面の一部を拡大する xmag
- マニュアルページブラウザ xman
- テキストページャ xmore
- X セッションのウィンドウダンプ ("スクリーンショット") を取る
ユーティリティ xwd
- xwd によって作成されたウィンドウダンプのビューア xwud
- X Window System 上でのグラフィック性能をベンチマークするツール x11perf
および x11perfcomp (Xmarkは入っていないようです)
2.Brainから他PCにsshでログインして、他PC上でXアプリケーションを起動し、Brainの画面で操作する
| 起動操作 | Xアプリケーション実行 | Xアプリ表示(操作) |
| Brain->他PC | 他PC | Brain |
Brainから、他PCにSSHログインして起動したXアプリケーションを、Brainの画面に出す方法です。
Terminalを立ち上げて、sshでログインする際に、-X オプションを設定することで、アクセス元のX環境に画面表示のリダイレクトをしてくれます。(DISPLAY環境変数は自動設定されます。)
ssh -X user@192.168.29.19
xeyes &
user@brain:~$ ssh -X user@192.168.29.19
user@192.168.29.19's password:
Welcome to Linuxfx 11.2 22.04.6 LTS (GNU/Linux 5.15.0-67-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
* Introducing Expanded Security Maintenance for Applications.
Receive updates to over 25,000 software packages with your
Ubuntu Pro subscription. Free for personal use.
https://ubuntu.com/pro
Last login: Sat Nov 8 17:21:53 2025 from 192.168.29.11
nasubi@nasubi-vmwarevirtualplatform:~$ printenv DISPLAY
localhost:10.0
nasubi@nasubi-vmwarevirtualplatform:~$ xeyes &
[1] 11904
3.PCからsshでBrainにログインして、Brain上でXアプリケーションを起動し、Brainの画面で操作する
| 起動操作 | Xアプリケーション実行 | Xアプリ表示(操作) |
| 他PC->Brain | Brain | Brain |
他PCからsshでBrainにログインして、Brain上でXアプリケーションを起動する方法です。
他PCはWindows上でもputty等でのsshアクセスでもかまいません。問題ありません。
Brainのキーボードで直接入力すると、特殊なキーバインドの違いや反応の悪さなどで、他PCでアプリの起動をする場合等に使用できます(デバック向けかな)。
以下の通り、画面表示先を指定する、DISPLAY環境変数を手動で設定すればOKです。
export DISPLAY=:0
xeyes &
user@pc1:~$ ssh user@192.168.29.11
login as: user
user@192.168.29.11's password:
Linux brain 5.4.149-gaa3edcd5fcbc #2 PREEMPT Mon Dec 23 11:34:55 UTC 2024 armv5tejl
____ _
| _ \ (_)
| |_) |_ __ __ _ _ _ __ _ ___ __
| _ <| '__/ _` | | '_ \| | | \ \/ /
| |_) | | | (_| | | | | | |_| |> <
|____/|_| \__,_|_|_| |_|\__,_/_/\_\
by Brain Hackers
https://github.com/brain-hackers
Last login: Sun Nov 9 15:00:04 2025 from 192.168.29.19
user@brain:~$ printenv DISPLAY
user@brain:~$ export DISPLAY=:0
user@brain:~$ printenv DISPLAY
:0
user@brain:~$ xeyes &
[1] 1770
4.他PCでログインして、他PC上でXアプリケーションを起動し、Brainの画面で操作する
| 起動操作 | Xアプリケーション実行 | Xアプリ表示(操作) |
| 他PC | 他PC | Brain |
これは、Xアプリケーションの実行ウィンドウのみを、Braiに表示させるものです。
ただし、Brain上で、X11側で、Xアプリケーションからの接続を許可させる必要があるため、通常と違う手順が必要です。
接続許可は、xhosts というコマンドを利用します。
ただし、Brainux標準では、xhostは導入されていないようです。
user@brain:~$ xhost
bash: xhost: command not found
まずは、BrainにXアプリケーションからの接続を許可すためのコマンド(xhost)を導入します。
(一度導入すれば、大丈夫です。)
sudo apt update
sudo apt show x11-xserver-utils
user@brain:~$ sudo apt update
Hit:1 http://archive.debian.org/debian bullseye InRelease
Hit:2 https://packagecloud.io/brainhackers/brainux/any any InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
1 package can be upgraded. Run 'apt list --upgradable' to see it.
user@brain:~$ sudo apt show x11-xserver-utils
Package: x11-xserver-utils
Version: 7.7+8
Priority: optional
Section: x11
Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
Installed-Size: 476 kB
Depends: libc6 (>= 2.26), libice6 (>= 1:1.0.0), libx11-6, libxaw7, libxcursor1 (>> 1.1.2), libxext6, libxi6, libxmu6, libxmuu1, libxrandr2 (>= 2:1.5.0), libxrender1, libxt6, libxxf86vm1, cpp
Suggests: nickle, cairo-5c, xorg-docs-core
Conflicts: iceauth, sessreg, xgamma, xhost, xmodmap, xrandr, xrdb, xrefresh, xrgb, xset, xsetmode, xsetpointer, xsetroot, xstdcmap, xvidtune
Breaks: arandr (<< 0.1.9)
Replaces: iceauth, sessreg, xbase-clients (<< 1:7.3), xgamma, xhost, xmodmap, xrandr, xrdb, xrefresh, xrgb, xset, xsetmode, xsetpointer, xsetroot, xstdcmap, xutils (<< 1:7.2), xvidtune
Tag: implemented-in::c, interface::commandline, role::program,
uitoolkit::TODO, x11::xserver
Download-Size: 158 kB
APT-Sources: http://archive.debian.org/debian bullseye/main armel Packages
Description: X server utilities
An X client is a program that interfaces with an X server (almost always via
the X libraries), and thus with some input and output hardware like a
graphics card, monitor, keyboard, and pointing device (such as a mouse).
.
This package provides a miscellaneous assortment of X Server utilities
that ship with the X Window System, including:
- iceauth, a tool for manipulating ICE protocol authorization records;
- rgb;
- sessreg, a simple program for managing utmp/wtmp entries;
- xcmsdb, a device color characteristic utility for the X Color Management
System;
- xgamma, a tool for querying and setting a monitor's gamma correction;
- xhost, a very dangerous program that you should never use;
- xmodmap, a utility for modifying keymaps and pointer button mappings in X;
- xrandr, a command-line interface to the RandR extension;
- xrdb, a tool to manage the X server resource database;
- xrefresh, a tool that forces a redraw of the X screen;
- xset, a tool for setting miscellaneous X server parameters;
- xsetmode and xsetpointer, tools for handling X Input devices;
- xsetroot, a tool for tailoring the appearance of the root window;
- xstdcmap, a utility to selectively define standard colormap properties;
- xvidtune, a tool for customizing X server modelines for your monitor.
user@brain:~$ sudo apt install x11-xserver-utils
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Suggested packages:
nickle cairo-5c xorg-docs-core
The following NEW packages will be installed:
x11-xserver-utils
0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
Need to get 158 kB of archives.
After this operation, 476 kB of additional disk space will be used.
Get:1 http://archive.debian.org/debian bullseye/main armel x11-xserver-utils armel 7.7+8 [158 kB]
Fetched 158 kB in 1s (127 kB/s)
Selecting previously unselected package x11-xserver-utils.
(Reading database ... 44310 files and directories currently installed.)
Preparing to unpack .../x11-xserver-utils_7.7+8_armel.deb ...
Unpacking x11-xserver-utils (7.7+8) ...
Setting up x11-xserver-utils (7.7+8) ...
Processing triggers for man-db (2.9.4-2) ...
user@brain:~$ xhost
access control enabled, only authorizaed clients cat connect
次に、BrainでBrainuxを起動する際に、「shell」で起動してください。
(そのまま「xinitrc」か「jvm」で起動してしまうと、X接続用のポート(:0の場合6000)が閉じているため接続できません。)
shellが起動したら、以下のコマンドでXを起動します。
user@brain:~$ stratx -- -listen tcp
Brain上でXが起動したら、terminalを起動して、アクセス許可を設定します(X起動毎に設定が必要です。)
(今回は、”192.168.29.19″からのアクセスを許可するものとします。)
xhost +192.168.29.19
(なお「xhost +」とすると、すべての接続を許可する設定になってしまいます。セキュリティ的には非推奨になります。)
+はBrainのキーボードでは、「シフト+記号+F」ですが、入力がしずらい場合があります。
user@brain:~$ xhost
access control enabled, only authorizaed clients cat connect
SI:localuser:user
user@brain:~$ xhost +192.168.29.19
192.168.29.19 being added to access contol list
user@brain:~$ xhost
access control enabled, only authorizaed clients cat connect
INET:192.168.29.19
SI:localuser:user
ここまで終われば、他PC(Linux)でTerminalを立ち上げて、
DISPLAY環境変数を上書き設定します。
(BraiのIPは192.168.29.11とした場合)
export DISPLAY=192.168.29.11:0
xeyes &
user@pc1:~$ printenv DISPLAY
:0
user@pc1:~$ export DISPLAY=192.168.29.11:0
user@pc1:~$ printenv DISPLAY
192.168.29.11:0
user@pc1:~$ xeyes &
X環境への接続についての補足
上記の接続の組合せでも、X環境を利用することができます。
例えば、3の後に2をやることで、疑似的に4の接続にすることも可能です。
(4.の特殊なXnの立ち上げや設定が不要)
| 起動操作 | Xアプリケーション実行 | Xアプリ表示(操作) |
| 他PC->Brain->他PC | 他PC | Brain |
2.Brainから他PCにsshでログインして、他PC上でXアプリケーションを起動し、Brainの画面で操作する
4.他PCでログインして、他PC上でXアプリケーションを起動し、Brainの画面で操作する
ssh user@192.168.29.11
export DISPLAY=:0
ssh -X nasubi@192.168.29.19
xeyes &
user@pc1:~$ ssh user@192.168.29.11
user@brain:~$ export DISPLAY=:0
user@brain:~$ ssh -X nasubi@192.168.29.19
user@pc1:~$ xeyes &
実際にやってみると、他PC上でXアプリケーションを起動する以下の方法では、
速度的にも問題なくアプリケーションを利用することができます。
これらは、俗にいう「シンクライアント」運用になります。
別PCに処理をさせて、結果のみBrainに表示させ、
BrainにUSBキーボードとマウスを付ければ、ハンドヘルドPCの出来上がりです。
また、これまでの説明の中のサーバ指定を逆にすれば、別サーバのX画面に、Braiux上で起動したアプリケーションを表示することもできますが、ここでは割愛します。
難点をいれば、現状Sound再生はされないといったところぐらいでしょうか・・・
xterm の設定変更について(Xリソースファイルの管理)
lxterminaiは 40MB程度と結構メモリを消費するので、
メモリ消費量が比較的少ない(8MB)ターミナルとして
xtermも使えるようにしておきます。
ただxtermのデフォルトでは、白地に黒文字で目が痛いので
黒地に白文字に変更するためには、
xtermの設定変更として、Xのリソースファイルに追記します。
Xのリソースファイルは、アプリごとに以下のフォルダにまとめられています。
/etc/X11/app-defaults/
xtermの場合、/etc/X11/app-default/XTerm に追記します。
黒地に白文字に変更するには、ファイルの最後に、以下の行を追加します。
$ sudo vi /etc/X11/app-defaults/XTerm
xterm*reverseVideo:on
なお、ユーザ単位での設定では一般的に
~/.Xresourcesに追加するように書かれている資料もありますが、
Brainuxでは、このファイルを参照する様にはなっていないので、
もしユーザ単位でリソースファイルを切り替えたいのであれば、
~/.xprofileに、以下のような行を追加してみてください。
起動時に、~/.Xresourcesが読み込みされるようになります。
$ vi ~/.Xresources
xtermreverseVideo:on
x-terminal-emulatorreverseVideo:on
$ vi ~/.xprofile
xrdb -merge ~/.Xresources
起動時にフォントのワーニングが出る場合は、フォントをインストールします。
$ sudo apt install xfonts-base xfonts-100dpi xfonts-75dpi
$ sudo apt install x11-xserver-utils
$ xset +fp /usr/share/fonts/X11/misc
$ xset fp rehash
JWMのメニューにアプリケーション(xterm)に追加する
現状JWMのメニューには、Terminal(lxterminal)しかアプリが登録されていないので、
xtermを追加してみます。
調べてみると、JWMのコンフィグは、以下にありました。
/etc/jwm/system.jwmrc
なお、ユーザごとにカスタマイズしたいのであれば、
先ほどのファイルを、~/.jwmrcにコピーすれば、これらの設定が優先的に使われます。
/etc/jwm/system.jwmrcファイルの先頭部分を確認してみると、
以下のようになっていました。
<?xml version=”1.0″?>
<JWM>
<!– The root menu. –>
<RootMenu onroot=”12″> <Include>/etc/jwm/debian-menu</Include>
<Program icon=”terminal.png” label=”Terminal”>lxterminal</Program>
<Separator/>
<Program icon=”lock.png” label=”Lock”> xlock -mode blank </Program>
<Separator/>
<Restart label=”Restart” icon=”restart.png”/>
<Exit label=”Exit” confirm=”true” icon=”quit.png”/>
</RootMenu>
ここで、メニューに、xtermの定義を追加してみます。
ついでに、Includeの行の下に<Separator/>も追加しています。
<Program label=”xterm”>xterm</Program>
$ sudo vi /etc/jwm/system.jwmrc
<Include>/etc/jwm/debian-menu</Include>
<Program icon=”terminal.png” label=”Terminal”>lxterminal</Program>
<Separator/>
↓
<Include>/etc/jwm/debian-menu</Include>
<Separator/>
<Program icon=”terminal.png” label=”Terminal”>lxterminal</Program>
<Program label=”xterm”>xterm</Program>
<Separator/>
設定に間違いがないか、以下のコマンドでチェックします。
$ jwm -p
最初は /etc/jwm/debian-menu ファイルがないため、そこは失敗しますが、
今回はその分はエラーでOKです。それ以外にエラーが出ないことを確認します。
では以下のコマンドで、設定をリロードします。
$ jwm -reload
すると、xtermが追加されました。

xtermをクリックすると、、定義したxtermが起動しました。
OSに登録されたアプリケーションをJWMに表示する
BrainuxはDebian11ベースのOSですので、DebianにAptコマンドでアプリをインストールすると、以下のフォルダにアプリケーション登録ファイル(*.desktop)が登録されています。
/usr/share/applications
この登録ファイルを元に自動でJWMの設定ファイルに変換してくれるツールを導入します
xdgmenumaker
$ cd
$ mkdir xdgmenumaker
$ cd xdgmenumaker
$ git clone https://github.com/gapan/xdgmenumaker.git
$ cd xdgmenumaker/
$ sudo apt install txt2tags
$ make
$ pip install pyxdg
もし、pip install pyxdgがエラーになった場合は、以下に置き換えてください
(Debian 12 以降でpipが禁止されているため)
$ sudo apt install python3-xdg
$ sudo make install
$ sudo touch /etc/jwm/debian-menu
$ sudo chmod 666 /etc/jwm/debian-menu
$ xdgmenumaker -n -i -f jwm > /etc/jwm/debian-menu
もし、xdgmenumaker を実行したときに、”import gi”とエラーになったときは、以下を実行してください。
$ sudo apt install python3-gi python3-gi-cairo gir1.2-gtk-3.0dbind-WARNING **: のワーニングが出た場合は、
無視して大丈夫です(Debian13環境だと出るそうです)。
出さないようにするは、以下のようにファイルの最後に追記してください。
(反映には、再ログインが必要です。)
$ sudo vi /etc/environment
NO_AT_BRIDGE=1
実行に成功したら、以下のコマンドで、設定をリロードします。
$ jwm -reload
すると、apt経由でインストールしたアプリケーションの分のメニューが追加されました。

ただ、この状態だとaptでアプリを追加しても自動でメニューへの反映がされません。
JWM起動時に自動的に反映させてもいいのですが、起動してからJWMが操作できるまでにかなり時間がかかるため、「メニューの反映」をreload menuとして登録して、手動で登録できるようにします(アイコンが不要であれば-iオプションを消すとMenu動作が軽くなります)。
$ sudo vi /etc/jwm/reloadjwmmenu
#!/bin/sh
NO_AT_BRIDGE=1 xdgmenumaker -n -i -f jwm > /etc/jwm/debian-menu
jwm -reload
exit
$ sudo chmod 755 /etc/jwm/reloadjwmmenu
作成したスクリプトをsystem.jwmrcに登録します。
<Program label=”ReloadMenu”>sh /etc/jwm/reloadjwmmenu</Program>
ついでに、VirtualKeybordも追加しておきました。
これで「.profile」で自動起動しなくてもよくなります。
<Program label=”VirtualKeybord”>xvkbd</Program>
$ sudo vi /etc/jwm/system.jwmrc
<!– The root menu. –>
<RootMenu onroot=”12″>
<Include>/etc/jwm/debian-menu</Include>
<Separator/>
<Program icon=”terminal.png” label=”Terminal”>lxterminal</Program>
<Program label=”Xterm”>xterm</Program>
<Program label=”VirtualKeybord”>xvkbd</Program>
<Separator/>
<Program icon=”lock.png” label=”Lock”>
xlock -mode blank
</Program>
<Separator/>
<Program label=”ReloadMenu”>sh /etc/jwm/reloadjwmmenu</Program>
<Restart label=”Restart” icon=”restart.png”/>
<Exit label=”Exit” confirm=”true” icon=”quit.png”/>
</RootMenu>
これで、ReloadMenuをクリックすれば、メニューの反映が行われます。

なお、標準ではxlockが入っていないので、不要であれば、Lockの行は消してください。
多分もっといい方法がありそうだけど、とりあえず動いたということで良しとします。
今は、Lockの行の代わりに、以下のように「OS Reboot」を設定すると、
JWMから再起動できるようにしています。
$ sudo vi /etc/jwm/system.jwmrc
<!– The root menu. –>
<RootMenu onroot=”12″>
<Include>/etc/jwm/debian-menu</Include>
<Separator/>
<Program icon=”terminal.png” label=”Terminal”>lxterminal</Program>
<Program label=”Xterm”>xterm</Program>
<Program label=”VirtualKeybord”>xvkbd</Program>
<Separator/>
<Program label=”OS Reboot”>
/usr/bin/xterm -e sh -c ‘echo run Reboot;sudo reboot’
</Program>
<Separator/>
<Program label=”JWM ReloadMenu”>sh /etc/jwm/reloadjwmmenu</Program>
<Restart label=”JWM Restart” icon=”restart.png”/>
<Exit label=”Exit” confirm=”true” icon=”quit.png”/>
</RootMenu>
X11画面のスクリーンショットを撮る方法
X11画面のスクリーンショットは、「scrot」コマンドで取得できるようです。
scrotは、以下のコマンドでインストールできます。
$ sudo apt install scrot
コマンドオプションでいろいろ取得方法をカスタマイズできるようです。
scrot 画面全体のスクリーンショットを撮ります。
scrot -ub タイトルバー+アクティブウインドウのスクリーンショットを撮ります。
scrot -sb カーソルの形が+に変わるので、
その後ウインドウをクリックすると、タイトルバー+クリックしたウインドウ
のスクリーンショットを撮ります。(ウインドウ範囲外だと全画面)
左クリック長押しで範囲指定すると、その範囲のスクリーンショット
を撮ります。
また、scrot -d 10 のように、-dで秒数を指定すると、10秒後に取得されます。
スクリーンショット取得先は、、
指定がなければ、カレントディレクトリに
「2025-12-18-204617_854x480_scrot.png」といった名前で保存されます。
出力先を指定する場合は、以下のようにしてみてください。
scrot ‘%Y-%m-%d-%H%M%S_$wx$h_scrot.png’ -e ‘mv $f ~/screenshot/’
これで~/screenshot/に「2025-12-18-212923_854x480_scrot.png」のような名前で保存されます。
また、リモートPCからssh -X(Xリダイレクトオプション付)でログインしている場合、
リモート側でscrot コマンドを実行して、遠隔実行することも可能です。
ssh -Xでログインしていない場合は -D :0 のようにBrain側のDiskplay番号を追加でOKです。
これでスクリーンショットが取れるようになりましたが、毎回コマンドを打つのも面倒です。
今回は、JWMのキーバインド設定をして、USBキーボードの”PrtSc(PrintScreen)”キーでスクリーンショットが取得できるように設定してみます。
(参考:JWM設定)(参考:JWMConfig)
sudo vi /etc/jwm/system.jwmrc
ファイルの最後のほうに、キーバインド設定がありますので、ここの最後に追記します
(mask設定は、Shift=”S”,Ctrl=”C”,ALT=”A”が対応します。ただSAとしたときにALTの認識に不具合出る場合もあるそうなのでこの辺は調整が必要かもしれません。)
<Key key=”Print”>exec:scrot ‘%Y-%m-%d-%H%M%S_$wx$h_scrot.png’ -e ‘mv $f ~/screenshot/'</Key>
<Key mask=”A” key=”Print”>exec:scrot -ub ‘%Y-%m-%d-%H%M%S_$wx$h_scrot.png’ -e ‘mv $f ~/screenshot/'</Key>
<Key mask=”CA” key=”Print”>exec:scrot -sb ‘%Y-%m-%d-%H%M%S_$wx$h_scrot.png’ -e ‘mv $f ~/screenshot/'</Key>

これで、以下のようなキーバインドになります。
(ただし、jwmのメニュー表示中は、このキーバインドは聞かないようです。)
・PrintScreen で全画面のスクリーンショット
・ALT+PrintScreen でアクティブウインドウのスクリーンショット
・Ctrl+ALT+PrintScreen でウィンドウ選択 or 範囲指定のスクリーンショット
もし、Brainのキーボードでスクリーンショットを撮りたいのなら、
キー指定を <Key mask=”CA” key=”s”> とかにすればCtrl+ALT+”s”がキーバインドになります。(“exec:xdotool key ctrl+alt+Print”に割当でキー入力のエミュレートでもいけます)[参考]
JWMのコンフィグファイルを変更したら、jwm -pで構成チェックをした後で、
JWMメニューのRestartをクリックするか、jwm -restart コマンドを実行で設定が反映されます。
あと今回気づいたのですが、JWMのキーバインド使えば
タッチパネルでの右クリック対応はxbindkeys使わなくてもいけますね
これで500kbぐらいメモリ消費量を削減できます。
sudo vi /etc/jwm/system.jwmrc 追加&JWMリスタート
<Key mask=”CA” key=”z”>exec:xdotool click 3</Key>
vi ~/.xprofile 一部コメント化
# bash xbind_keys_autostart
/etc/jwm/system.jwmrc 例

BrainuxでのSound再生について
標準の環境では、Brainuxではサウンドデバイスを認識していないため、Sound再生されません。
Brain に内蔵されているスマートアンプには大きく分けて Yamaha 系と Rohm 系があるとのことで、現状Brainux上でのSound再生は、現状解析中で非対応だそうです。
試しにUSBサウンドデバイスを付けてみたところ、OSとしては認識しました。
Bus 001 Device 004: ID 0d8c:000c C-Media Electronics, Inc. Audio Adapter
ターミナル上でのコマンド上では使用できましたが、一部ノイズが乗ります。
user@brain:~$ sudo lsusb
Bus 001 Device 003: ID 0b95:772b ASIX Electronics Corp. AX88772B
Bus 001 Device 004: ID 0d8c:000c C-Media Electronics, Inc. Audio Adapter
Bus 001 Device 002: ID 05e3:0610 Genesys Logic, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
user@brain:~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Set [C-Media USB Headphone Set], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
user@brain:~$ aplay -L
null
Discard all samples (playback) or generate zero samples (capture)
default
Default Audio Device
sysdefault
Default Audio Device
hw:CARD=Set,DEV=0
C-Media USB Headphone Set, USB Audio
Direct hardware device without any conversions
plughw:CARD=Set,DEV=0
C-Media USB Headphone Set, USB Audio
Hardware device with all software conversions
default:CARD=Set
C-Media USB Headphone Set, USB Audio
Default Audio Device
sysdefault:CARD=Set
C-Media USB Headphone Set, USB Audio
Default Audio Device
front:CARD=Set,DEV=0
C-Media USB Headphone Set, USB Audio
Front output / input
surround21:CARD=Set,DEV=0
C-Media USB Headphone Set, USB Audio
2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=Set,DEV=0
C-Media USB Headphone Set, USB Audio
4.0 Surround output to Front and Rear speakers
surround41:CARD=Set,DEV=0
C-Media USB Headphone Set, USB Audio
4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=Set,DEV=0
C-Media USB Headphone Set, USB Audio
5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=Set,DEV=0
C-Media USB Headphone Set, USB Audio
5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=Set,DEV=0
C-Media USB Headphone Set, USB Audio
7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=Set,DEV=0
C-Media USB Headphone Set, USB Audio
IEC958 (S/PDIF) Digital Audio Output
dmix:CARD=Set,DEV=0
C-Media USB Headphone Set, USB Audio
Direct sample mixing device
user@brain:~$ amixer -c0
Simple mixer control 'Headphone',0
Capabilities: pvolume pswitch pswitch-joined
Playback channels: Front Left - Front Right
Limits: Playback 0 - 151
Mono:
Front Left: Playback 44 [29%] [-20.13dB] [on]
Front Right: Playback 44 [29%] [-20.13dB] [on]
Simple mixer control 'Mic',0
Capabilities: pvolume pvolume-joined cvolume cvolume-joined pswitch pswitch-joined cswitch cswitch-joined
Playback channels: Mono
Capture channels: Mono
Limits: Playback 0 - 32 Capture 0 - 16
Mono: Playback 23 [72%] [34.36dB] [off] Capture 0 [0%] [0.00dB] [on]
Simple mixer control 'Auto Gain Control',0
Capabilities: pswitch pswitch-joined
Playback channels: Mono
Mono: Playback [on]
user@brain:~$ speaker-test -t sine -c 2 -f 220
speaker-test 1.2.4
Playback device is default
Stream parameters are 48000Hz, S16_LE, 2 channels
Sine wave rate is 220.0000Hz
Rate set to 48000Hz (requested 48000Hz)
Buffer size range from 2048 to 16384
Period size range from 1024 to 1024
Using max buffer size 16384
Periods = 4
was set period_size = 1024
was set buffer_size = 16384
0 - Front Left
1 - Front Right
^CTime per period = 4.344596
user@brain:~$
user@brain:~$ aplay sample.wav
ALSAを使っているaplayではノイズが出るにせよ音が鳴るし、
amixerや、alsamixerも動いています。
なお、plusaudioは初期未導入っぽいので、この辺が影響してそうです。
この辺もう少しし調べたいのですが、正直勉強不足です。
まあ、USBサウンドデバイスつけないといけないから、おま環ではあります。
この辺が参考になるのだろうか?
Linux の Audio 機能をコマンドラインで設定
X11 Forwarding で音声を再生する
音楽・動画再生は?
音楽・動画再生としては、mplayer や smplayerが apt経由でインストール可能です。
・mplayer コマンドラインの音楽・動画再生プレイヤーです。
・smplayer mplayerのラッパーで、GUI操作インターフェイスを提供します。
sudo apt update
sudo apt install mplayer
sudo apt install smplayer
user@brain:~$ sudo apt show mplayer
[sudo] password for user:
Package: mplayer
Version: 2:1.4+ds1-1+deb11u1
Priority: optional
Section: video
Maintainer: Debian Multimedia Maintainers <debian-multimedia@lists.debian.org>
Installed-Size: 4,301 kB
Depends: liba52-0.7.4 (>= 0.7.4), libaa1 (>= 1.4p5), libasound2 (>= 1.0.16), libass9 (>= 1:0.13.6), libaudio2, libavcodec58 (>= 7:4.2), libavformat58 (>= 7:4.2), libavutil56 (>= 7:4.0), libbluray2 (>= 1:0.2.2), libbs2b0, libc6 (>= 2.29), libcaca0 (>= 0.99.beta17-1), libcdio-cdda2 (>= 10.2+2.0.0), libcdio-paranoia2 (>= 10.2+2.0.0), libcdio19 (>= 2.1.0), libdca0 (>= 0.0.5), libdv4 (>= 1.0.0), libdvdnav4 (>= 4.1.3), libdvdread8 (>= 4.1.3), libegl1, libenca0 (>= 1.9), libfaad2 (>= 2.7), libfontconfig1 (>= 2.12.6), libfreetype6 (>= 2.2.1), libfribidi0 (>= 0.19.2), libgif7 (>= 5.1), libgl1, libjack-jackd2-0 (>= 1.9.10+20150825) | libjack-0.125, libjpeg62-turbo (>= 1.3.1), liblirc-client0, libmad0 (>= 0.15.1b-3), libmng1 (>= 1.0.10), libmpeg2-4 (>= 0.5.1), libmpg123-0 (>= 1.13.7), libogg0 (>= 1.0rc3), libopenal1 (>= 1.14), libpng16-16 (>= 1.6.2-1), libpostproc55 (>= 7:4.0), libpulse0 (>= 0.99.1), libsdl1.2debian (>= 1.2.11), libsmbclient (>= 2:4.0.3+dfsg1), libspeex1 (>= 1.2~beta3-1), libswresample3 (>= 7:4.0), libswscale5 (>= 7:4.0), libtheora0 (>= 1.0), libtinfo6 (>= 6), libvdpau1 (>= 0.2), libvorbisidec1 (>= 1.2.1+git20180316), libx11-6, libxext6, libxinerama1, libxss1, libxv1, libxvidcore4 (>= 1.2.2), libxvmc1 (>= 2:1.0.12), libxxf86dga1, libxxf86vm1, zlib1g (>= 1:1.1.4)
Suggests: bzip2, fontconfig, fonts-freefont-ttf, mplayer-doc, netselect | fping
Homepage: https://www.mplayerhq.hu
Tag: interface::graphical, interface::x11, role::program, uitoolkit::sdl,
x11::application
Download-Size: 2,057 kB
APT-Sources: http://archive.debian.org/debian bullseye/main armel Packages
Description: movie player for Unix-like systems
MPlayer plays most MPEG, VOB, AVI, Ogg/OGM, VIVO,
ASF/WMA/WMV, QT/MOV/MP4, FLI, RM, NuppelVideo, yuv4mpeg, FILM, RoQ, PVA files,
supported by many native, XAnim, RealPlayer, and Win32 DLL codecs. It can
also play VideoCD, SVCD, DVD, 3ivx, RealMedia, and DivX movies.
.
Another big feature of MPlayer is the wide range of supported output
drivers. It works with X11, Xv, DGA, OpenGL, SVGAlib, fbdev,
but also SDL.
.
Not all of the upstream code is distributed in the source tarball.
See the README.Debian and copyright files for details.
user@brain:~$ sudo apt install mplayer
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
liba52-0.7.4 libass9 libaudio2 libavformat58 libbluray2 libbs2b0
libcdio-cdda2 libcdio-paranoia2 libcdio19 libchromaprint1 libdca0 libdvdnav4
libdvdread8 libenca0 libfaad2 libgif7 libgme0 libldb2 liblirc-client0
libmad0 libmng1 libmpeg2-4 libnorm1 libopenmpt0 libpgm-5.3-0 libpostproc55
librabbitmq4 libsmbclient libsrt1.4-gnutls libssh-gcrypt-4 libtalloc2
libtdb1 libtevent0 libudfread0 libvorbisfile3 libvorbisidec1 libwbclient0
libzmq5 python3-ldb python3-talloc samba-libs
Suggested packages:
nas libbluray-bdj libdvdcss2 lirc fonts-freefont-ttf mplayer-doc netselect
| fping
Recommended packages:
libaacs0
The following NEW packages will be installed:
liba52-0.7.4 libass9 libaudio2 libavformat58 libbluray2 libbs2b0
libcdio-cdda2 libcdio-paranoia2 libcdio19 libchromaprint1 libdca0 libdvdnav4
libdvdread8 libenca0 libfaad2 libgif7 libgme0 libldb2 liblirc-client0
libmad0 libmng1 libmpeg2-4 libnorm1 libopenmpt0 libpgm-5.3-0 libpostproc55
librabbitmq4 libsmbclient libsrt1.4-gnutls libssh-gcrypt-4 libtalloc2
libtdb1 libtevent0 libudfread0 libvorbisfile3 libvorbisidec1 libwbclient0
libzmq5 mplayer python3-ldb python3-talloc samba-libs
0 upgraded, 42 newly installed, 0 to remove and 1 not upgraded.
Need to get 12.1 MB of archives.
After this operation, 39.5 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Get:1 http://archive.debian.org/debian bullseye/main armel libtalloc2 armel 2.3.1-2+b1 [26.5 kB]
~
Processing triggers for libc-bin (2.31-13+deb11u11) ...
user@brain:~$ sudo apt show smplayer
Package: smplayer
Version: 20.6.0~ds0-1
Priority: optional
Section: video
Maintainer: Debian Multimedia Maintainers <debian-multimedia@lists.debian.org>
Installed-Size: 4,357 kB
Depends: mpv (>= 0.6.2) | mplayer, libc6 (>= 2.28), libgcc-s1 (>= 3.5), libqt5core5a (>= 5.14.1), libqt5dbus5 (>= 5.14.1), libqt5gui5 (>= 5.14.1) | libqt5gui5-gles (>= 5.14.1), libqt5network5 (>= 5.14.1), libqt5widgets5 (>= 5.14.1), libqt5xml5 (>= 5.1), libstdc++6 (>= 5), libx11-6, zlib1g (>= 1:1.1.4)
Recommends: smplayer-themes, smplayer-l10n
Homepage: http://smplayer.sourceforge.net/
Tag: interface::graphical, interface::x11, role::program, uitoolkit::qt,
use::playing, works-with::audio, works-with::video, x11::application
Download-Size: 1,873 kB
APT-Sources: http://archive.debian.org/debian bullseye/main armel Packages
Description: Complete front-end for MPlayer and mpv
Qt5 front-end for mplayer and forks, with basic features like playing
videos, DVDs, and VCDs to more advanced features like support
for MPlayer filters and more. One of the most interesting features
of SMPlayer: it remembers the settings of all files you play.
So you start to watch a movie but you have to leave... don't
worry, when you open that movie again it will resume at the same
point you left it, and with the same settings: audio track,
subtitles, volume...
user@brain:~$ sudo apt install smplayer
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
libdouble-conversion3 libinput-bin libinput10 libmd4c0 libpcre2-16-0
libqt5core5a libqt5dbus5 libqt5gui5 libqt5network5 libqt5widgets5 libqt5xml5
libwacom-common libwacom2 libxcb-icccm4 libxcb-image0 libxcb-keysyms1
libxcb-randr0 libxcb-render-util0 libxcb-shape0 libxcb-util1
libxcb-xinerama0 libxcb-xinput0 libxkbcommon-x11-0
Suggested packages:
qt5-image-formats-plugins qtwayland5
Recommended packages:
qttranslations5-l10n libqt5svg5 qt5-gtk-platformtheme libwacom-bin
smplayer-themes smplayer-l10n
The following NEW packages will be installed:
libdouble-conversion3 libinput-bin libinput10 libmd4c0 libpcre2-16-0
libqt5core5a libqt5dbus5 libqt5gui5 libqt5network5 libqt5widgets5 libqt5xml5
libwacom-common libwacom2 libxcb-icccm4 libxcb-image0 libxcb-keysyms1
libxcb-randr0 libxcb-render-util0 libxcb-shape0 libxcb-util1
libxcb-xinerama0 libxcb-xinput0 libxkbcommon-x11-0 smplayer
0 upgraded, 24 newly installed, 0 to remove and 1 not upgraded.
Need to get 10.2 MB of archives.
After this operation, 34.0 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Get:1 http://archive.debian.org/debian bullseye/main armel libdouble-conversion3 armel 3.1.5-6.1 [39.6 kB]
~
Processing triggers for hicolor-icon-theme (0.17-2) ...
user@brain:~$
user@brain:~$ mplayer
MPlayer 1.4 (Debian), built with gcc-10 (C) 2000-2019 MPlayer Team
Usage: mplayer [options] [url|path/]filename
Basic options: (complete list in the man page)
-vo <drv> select video output driver ('-vo help' for a list)
-ao <drv> select audio output driver ('-ao help' for a list)
vcd://<trackno> play (S)VCD (Super Video CD) track (raw device, no mount)
dvd://<titleno> play DVD title from device instead of plain file
-alang/-slang select DVD audio/subtitle language (by 2-char country code)
-ss <position> seek to given (seconds or hh:mm:ss) position
-nosound do not play sound
-fs fullscreen playback (or -vm, -zoom, details in the man page)
-x <x> -y <y> set display resolution (for use with -vm or -zoom)
-sub <file> specify subtitle file to use (also see -subfps, -subdelay)
-playlist <file> specify playlist file
-vid x -aid y select video (x) and audio (y) stream to play
-fps x -srate y change video (x fps) and audio (y Hz) rate
-pp <quality> enable postprocessing filter (details in the man page)
-framedrop enable frame dropping (for slow machines)
Basic keys: (complete list in the man page, also check input.conf)
<- or -> seek backward/forward 10 seconds
down or up seek backward/forward 1 minute
pgdown or pgup seek backward/forward 10 minutes
< or > step backward/forward in playlist
p or SPACE pause movie (press any key to continue)
q or ESC stop playing and quit program
+ or - adjust audio delay by +/- 0.1 second
o cycle OSD mode: none / seekbar / seekbar + timer
* or / increase or decrease PCM volume
x or z adjust subtitle delay by +/- 0.1 second
r or t adjust subtitle position up/down, also see -vf expand
* * * SEE THE MAN PAGE FOR DETAILS, FURTHER (ADVANCED) OPTIONS AND KEYS * * *
user@brain:~$
user@brain:~$
mplayerで、再生したファイルを指定すれば、そのままALSAで再生されました。
(USB Audioデバイスを付けている場合)
mplayerでの音声再生では、ほとんどノイズは気になりませんでした。
[CUI,X11環境両方で実行可能]
mplayer pianos-by-jtwayne-7-174717.mp3
user@brain:/boot/sound$ mplayer pianos-by-jtwayne-7-174717.mp3
MPlayer 1.4 (Debian), built with gcc-10 (C) 2000-2019 MPlayer Team
do_connect: could not connect to socket
connect: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.
Playing pianos-by-jtwayne-7-174717.mp3.
libavformat version 58.45.100 (external)
Audio only file format detected.
Load subtitles in ./
==========================================================================
Opening audio decoder: [mpg123] MPEG 1.0/2.0/2.5 layers I, II, III
AUDIO: 44100 Hz, 2 ch, s16le, 256.0 kbit/18.14% (ratio: 32000->176400)
Selected audio codec: [mpg123] afm: mpg123 (MPEG 1.0/2.0/2.5 layers I, II, III)
==========================================================================
AO: [pulse] Init failed: Connection refused
Failed to initialize audio driver 'pulse'
AO: [alsa] 48000Hz 2ch s16le (2 bytes per sample)
Video: no video
Starting playback...
A: 18.5 (18.5) of 18.0 (18.0) 75.0%
Exiting... (End of file)
user@brain:/boot/sound$
smplayerでも音声再生OKです。
smplayer pianos-by-jtwayne-7-174717.mp3
[X11環境時で実行可能]

同様に動画ファイル(mp4ファイル)も試しましたが、
安定して音声・動画再生はされました。
ただ、さすがにマシンパワー不足で、
動画と音声の同期がうまくいっていませんでした。
(音声が先行する)
再生時パラメータや、動画ファイルの作成パラメータの調整が必要かもしれません。
(-autosync 30 -cache 8192 -framedropのオプションを付けてみたけど、やっぱり遅い)
mplayer -vo fbdev2 /dev/fd0 ./file.mp4
[CUI上で実行する場合、-vo fbdev2 /dev/fd0 オプションを付け得れば再生されました。]
mplayer ./file.mp4
[X11環境上で実行可能]

smplayer file.mp4
[X11環境上で実行可能]

PulseAudio導入について
ALSAに引き続き、PulseAudioの導入も検討していますが、
結構重いそうだし、ALSA強制指定で動くものも多いので、いったん保留。
音楽のリダイレクトはあとで試してみたい。
fmsx,openMSX関連で、Brainuxに「pulseaudio」を入れてみました。
インストール: sudo apt install pulseaudio
インストール直後はサービスが起動していないのですが、以下のコマンドで操作できます。
#pulseaudio起動コマンド
pulseaudio --start
#起動状況確認コマンド
pactl info
#pulseaudioの停止コマンド
pulseaudio -k
ただし、標準では自動実行が設定されてしまっているため、再起動しても自動的に起動してしまいます。
pulseaudio 起動設定確認コマンド
$ systemctl --user status pulseaudio.service
● pulseaudio.service - Sound Service
Loaded: loaded (/usr/lib/systemd/user/pulseaudio.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2025-12-20 14:18:53 JST; 30min ago
TriggeredBy: ● pulseaudio.socket
Main PID: 472 (pulseaudio)
CPU: 4.902s
CGroup: /user.slice/user-1000.slice/user@1000.service/app.slice/pulseaudio.service
└─472 /usr/bin/pulseaudio --daemonize=no --log-target=journal
自動機能の無効化は以下です。これで自動起動しなくなります。
pulseaudio 自動起動抑止コマンド
$ systemctl --user mask pulseaudio.service pulseaudio.socket
もし、一時的にpulseaudioを起動したいのであれば、以下のようなコマンドを打てばOKです
#pulseaudio起動コマンド
pulseaudio --start
#pulseaudioの停止コマンド
pulseaudio -k
結果としては,Pulseaudioが無効との時うまく動くアプリと、
逆にPulseaudioが有効の時うまくいくアプリがあるっぽい。
ALSAを直接叩いているようなアプリでは問題なく聞ける音楽でもPulseaudioが有効だと、ぶつ切りでまともに聞けなくなるし、
逆に、Pulseaudio経由で音楽を鳴らしているアプリでは、Pulseaudioが起動していたほうがちゃんとうまくなる気がしてます。
Pulseaudioが起動していると、メモリも10MB以上消費するので、
Brainuxでは通常Pulseaudioを利用しないで、必要なときのみ起動するほうがいいでしょう。
openMSXとかだと、PulseAudioを起動したほうが音がちゃんと出ることもあるので、
いったんは必要に応じて手動起動で運用してみます。
Views: 407














































