Debian with Raspberry Pi Desktop を試してみる

 青い空,白い雲。絶好の Liunx 日和ですね。
 そこで今日は“ Debian with Raspberry Pi Desktop ”(以下 Debian with RPD)を試してみました。

Raspberry Pi Desktop – Raspberry Pi

 Debian with RPD は昨年末に「PIXEL」として公開された Debian GNU/Linux ベースのディストリビューションで,その後「Debian with Raspberry Pi Desktop」という名前に変更されたようです。このディストリビューションはRaspberry Pi の標準 OS である Raspbian 同様 Raspberry Pi Foundation の主導で開発されているものであり,Raspbian に近い見た目とバンドルアプリを備えていることが特徴です。公開時,このブログでも簡単に紹介しました。

Raspberry Pi Foundation,PC 向け GNU/Linux ディストリビューションを公開 – 怠惰の形而上学

 以前紹介した際は Live DVD としてしか利用できませんでしたが,現在では通常のデスクトップディストリビューションとして利用できるようになっています。今のところ RPD は LXDE のテーマに近い状態ですので,機能や安定性は既に実用的な水準に達しています。


 GRUB2 は Debian テーマのままながら,起動時に Raspberry Pi Desktop オリジナルのスプラッシュスクリーンが表示されます。デスクトップが開いてしまえば見た目は完全に Raspbian ですね。なお,標準ではキーボードレイアウト選択以外のローカライズは何もありません。スクリーンショットはローカライズ後のものです(あくまでも Debian なので翻訳も揃っており,簡単にローカライズできます)。


 ソフトウェアも Raspbian と同じものがプリインストールされて,設定も素の Debian ではなく Raspbian と同様になっています。


 この特徴的なアイコン等,テーマとしては「PiX」という名前が付けられているようでした。

 以下,ローカライズ(日本語化等)の方法等について解説します。シェルスクリプトになっており,そのまま実行して動くはずですが,例外処理などはしていないので適宜修正してお使いください。

Raspi.sh(root として実行)

#/bin/sh

apt-get update
apt-get upgrade

# 1. 最低限あったほうがいいパッケージの導入
apt-get install aptitude vim xscreensaver compton tlp tlp-drw
echo @compton >> /etc/xdg/lxsession/LXDE-pi/autostart
# compton はコンパクトなコンポジットマネージャで,グラフィックが極端に古くなければ(GMA 900 とか以降なら),これを起動時に開始することで CPU 負荷を軽減し体感スペックを上げることができます。
# 万が一トラブルが発生した場合は Ctrl+Alt+F1 でシェルからログインして自動起動を削除するか compton をアンインストールしてください。

# 2. IM 導入
# 軽快さ重視なら Anthy がオススメ。
#   apt-get install uim uim-anthy kasumi
apt-get install uim uim-mozc mozc-utils-gui

# 3. ロケール・タイムゾーン変更
# 手動で raspi-config でもできます。というかそっちが正攻法?
sed -i -e 's/# ja_JP.UTF-8 UTF-8/ja_JP.UTF-8 UTF-8/g' /etc/locale.gen
update-locale LANG=ja_JP.UTF-8
locale
timedatectl set-timezone Asia/Tokyo
timedatectl

# あとはユーザに戻って sourcehan-raspi.sh を実行すればローカライズは完成。

# 以下はお好みでどうぞ
# フォント導入
# apt-get install fonts-vlgothic fonts-ipafont-gothic fonts-ipafont-mincho
# 他のディストリビューションに通常標準搭載されている日本語フォントを入れておきたい場合は導入しておきましょう。なお,Droid と Unifont が標準で入っているため,特に入れなくても(表示品質はともかく)日本語表示に問題はありません。

# 標準アプリケーションの削除(Raspberry Pi 関係なく純然たる軽量 OS として利用する場合)
#   apt-get purge bluej geany greenfoot idle idle3 scratch scratch2 sense-emu-tools sonic-pi python3-thonny  claws-mail chromium
#   apt-get autoremove
#   mv /usr/share/raspi-ui-overrides/applications/raspi_resources.desktop /usr/share/raspi-ui-overrides/applications/raspi_resources.desktop.bck
#   mv /usr/share/raspi-ui-overrides/applications/magpi.desktop /usr/share/raspi-ui-overrides/applications/magpi.desktop.bck
#   mv /usr/share/raspi-ui-overrides/applications/python-games.desktop /usr/share/raspi-ui-overrides/applications/python-games.desktop.bck
# "Raspberry Pi Resources" と "The MagPi" はブラウザを起動するショートカット,"Python Games" は ./python_games/launcher.sh を起動するショートカットです。
# geany や chromium は残しておいてもいいかも。Claws Mail は軽量 MUA です。

# 自分がよく使うアプリケーションを入れていく
#   apt-get install firefox-esr firefox-esr-l10n-ja keepassx

# 用途によっていろいろ追加
#   apt-get install thunderbird thunderbird-l10n-ja simple-scan gimp filezilla vlc radiotray brasero easytag gparted ltris freeciv-client-gtk freeciv-server

# ある程度のグラフィック性能(目安:GMA X3100 以降)があるマシンならちょっとした 3D ゲームなんかも
#   apt-get install minetest megaglest extremetuxracer

# あとは普段使っている設定ファイルを ./ にコピーするといい感じに。
# お疲れさまでした。

sourcehan-raspi.sh(一般ユーザとして実行)

#/bin/sh

# Source Han フォントファミリを導入します。
# このスクリプトに実行権限を付与するか,"sh ./sourcehan-raspi.sh" して実行してください。
# フォントはこのスクリプトを実行したユーザのみに導入されます。

cd
mkdir ./.fonts
wget -t 3 -T 60 https://github.com/adobe-fonts/source-han-serif/raw/release/OTF/SourceHanSerifJ_EL-M.zip
unzip ./SourceHanSerifJ_EL-M.zip
mv SourceHanSerifJ_EL-M/SourceHanSerif-*.otf .fonts/
wget -t 3 -T 60 https://github.com/adobe-fonts/source-han-serif/raw/release/OTF/SourceHanSerifJ_SB-H.zip
unzip ./SourceHanSerifJ_SB-H.zip
mv SourceHanSerifJ_SB-H/SourceHanSerif-*.otf .fonts/
wget -t 3 -T 60 https://github.com/adobe-fonts/source-han-sans/raw/release/OTF/SourceHanSansJ.zip
unzip ./SourceHanSansJ.zip
mv SourceHanSansJ/SourceHanSans-*.otf .fonts/
ls ./.fonts
rm -rf SourceHan* __MACOSX

# Debian with RPD 用
sed -i -e 's/Roboto Light/源ノ角ゴシック Light/g' ~/.config/openbox/lxde-pi-rc.xml
sed -i -e 's/Roboto Light 12/源ノ角ゴシック Light 12' ~/.config/lxsession/LXDE-pi/desktop.conf
sed -i -e 's/Roboto Light 12/源ノ角ゴシック Light 12' ~/.config/gtk-3.0/gtk.css

参考:
Linux におけるラップトップマシン向け電力管理スイートの紹介(Pm-utils, Laptop-mode-tools, Powertop, TLP) – 怠惰の形而上学
Debian Jessie + Xfce で UIM ツールバーのアイコンの背景色がおかしいのを直すには – 怠惰の形而上学
Debian 上の GTK デスクトップ(Xfce, Gnome 等)で Qt アプリの外観を統合したい – 怠惰の形而上学

Debian with RPD,とても気に入りました。これからも使っていきたいです。

Debian Jessie + Xfce で UIM ツールバーのアイコンの背景色がおかしいのを直すには

デフォルトでは GTK3 用のツールバーが使用されるため,GTK2 を使っている Xfce パネルと外観が揃わないのが原因。
GTK2 用のツールバーを使用するよう明示的に指定すれば解決する。

$ sudo update-alternatives --config uim-toolbar
alternative uim-toolbar (/usr/bin/uim-toolbar を提供) には 6 個の選択肢があります。

  選択肢    パス                             優先度  状態
------------------------------------------------------------
* 0            /usr/bin/uim-toolbar-gtk3-systray   90        自動モード
  1            /bin/true                          -100       手動モード
  2            /usr/bin/uim-toolbar-gtk            60        手動モード
  3            /usr/bin/uim-toolbar-gtk-systray    70        手動モード
  4            /usr/bin/uim-toolbar-gtk3           80        手動モード
  5            /usr/bin/uim-toolbar-gtk3-systray   90        手動モード
  6            /usr/bin/uim-toolbar-qt4            50        手動モード

現在の選択 [*] を保持するには Enter、さもなければ選択肢の番号のキーを押してください:

以上のような選択肢が提示される。
このうち,/usr/bin/uim-toolbar-gtk-systray の番号(この場合は「3」)を選択し,エンターキーを押す。

忙しい時ほどついどうでもいいことを調べてしまうのはどうしたことか……

Debian 上の GTK デスクトップ(Xfce, Gnome 等)で Qt アプリの外観を統合したい

何度やっても忘れるのでメモ。

1. qtconfig をインストールする。

$ sudo aptitude update && sudo aptitude upgrade
$ sudo aptitude install qt4-qtconfig

他の Qt パッケージにはあまり依存しておらず(自分の環境では libphonon4 が入っただけ)コンパクトに収まる。

2. qtconfig を起動する。

$ qtconfig

qtconfig-qt4 でもよい。インストールパッケージ名とは微妙に違うので注意。

3. 「外観」タブの「GUI スタイル」セクションにある「GUI スタイルの選択(S)」プルダウンメニューを開き,「GTK+」を選択。左上の「ファイル(F)」>「保存(S)」を選択するか,ウィンドウを閉じる際に表示されるダイアログで「はい(Y)」を選択すると設定が保存される。

4. Virtualbox とか Keepassx とかがいい感じになる。やったぜ。

参考:
Qt と GTK アプリケーションの外観の統合 – ArchWiki
arch linux – qtconfig tool for Qt 5? – Unix & Linux Stack Exchange Qt5 には qtconfig がないらしい

Debian 8 jessie + xfce 4 で xscreensaver から light-locker に移行する方法

 前置きを書いてたら長くなったので本題から先に。

 light-locker は lightdm に依存する画面ロックツールで,xscreensaver や gnome-screensaver の代替として利用可能。ただしスクリーンセーバ機能や独自のロック画面は提供せず,ロック画面として lightdm のログイン画面を利用する。Debian の xfce および LXDE の標準のセットアップではディスプレイマネージャとして lightdm を使用しているので,そのまま利用できる。

 レポジトリにあるので,apt でインストールできる。

# aptitude update
# aptitude install light-locker
# aptitude purge xscreensaver xscreensaver-data

 xflock4 は xfce のスクリーンロックを管理するプログラムで,実体は簡単なシェルスクリプト。xscreensaver, light-locker, gnome-screensaver という優先度でデーモンにコマンドを与え,そのうち存在するものが画面をロックするという仕組み。標準で light-locker にも対応した設定になっているので,特に何かする必要はなし。

$ cat /usr/bin/xflock4
...
for lock_cmd in \
    "xscreensaver-command --lock" \
    "light-locker-command --lock" \
    "gnome-screensaver-command --lock"
do
    $lock_cmd >/dev/null 2>&1 && exit
done
...

 xflock4 がそのまま使えるので,画面ロックまでの時間の設定は xfce 電源管理 (xfce4-power-manager) から可能。
 いじょ。

追記:
 Debian 8 における lightdm の初期設定では,ログイン画面にユーザリストが表示されないため,画面ロックを解除するたびにユーザ名も入力せねばならずやや煩雑。ユーザが自分のみであれば,ユーザ名のリストを表示する設定にすることで xscreensaver や gnome-screensaver の画面ロックと同じ手軽さになる。

設定ファイルにある「greeter-hide-users=false」のコメントアウトを外してサービスを再起動する。

# vi /etc/lightdm/lightdm.conf
...
greeter-hide-users=false
...
# service lightdm restart

追記その2:
 lightdm のログイン画面に戻るためか,画面のロック後に時間経過で自動的にサスペンドやシャットダウンをさせる設定(たとえば,20分間無操作で画面ロック,1時間無操作でサスペンドという設定)が,ユーザ権限では機能しない。複数人が同時にログインするマシンでない場合,以下の設定で解決する。

# vi /usr/share/polkit-1/actions/org.freedesktop.login1.policy
        ......
        <action id="org.freedesktop.login1.suspend">
                ......
                <defaults>
                        <allow_any>auth_admin_keep</allow_any>
                        <allow_inactive>auth_admin_keep</allow_inactive>
                        <allow_active>yes</allow_active>
                </defaults>
        </action>
        ......

これを

        ......
        <action id="org.freedesktop.login1.suspend">
                ......
                <defaults>
                        <allow_any>yes</allow_any>
                        <allow_inactive>yes</allow_inactive>
                        <allow_active>yes</allow_active>
                </defaults>
        </action>
        ......

こうする(allow_any と allow_inactive を auth_admin_keep から yes に変更)。

追記その3(17/03/20):
 どうしたわけかいつの間にか(おそらく前回 dist-upgrade してから)また画面ロック後のサスペンドが効かなくなってしまっていました。設定ファイルを見るとデフォルトの状態に上書きされてしまっているようです。普通はこういうことはありませんので,何らかの手違いでしょうか。たしかにまあ,本来は考慮されていない使い方なわけで,セキュリティに深く関わる機能であることを鑑み,念のため Light-locker を使う時は画面ロック時=サスペンド時としたほうがいいのかもしれません。(しかしデスクトップ環境の電源管理ユーティリティとの統合を考えるとこの仕様?は問題があると思います)
 ところで xscreensaver の一件は Debian では xscreensaver から単に警告表示部分を取り除くことで対応する方向性のようですが,個人的には,他の部分――名称と見た目も変更しておいてくれないものかと思います。仮想パッケージとして “xscreensaver” からのエイリアスを残しておけばあえて xscreensaver としての登録にこだわる必要はないと思いますし,なによりあのロゴを見てウイルスかと勘違いされたことがありますので……(笑)

 以下前置きです。

 4月1日から,xscreensaver を使用している Debian jessie システムで,ログイン時に「This version of XScreenSaver is very old! Please upgrade!」(このバージョンの XScreenSaver は非常に古いです! アップデートしてください!)と書かれた仰々しく目立つポップアップウィンドウが出るようになり,物議を醸しています。同じ文面は xscreensaver のロック画面にも現れ,xscreensaver の設定画面には以下のような強い表現さえ使われています。「This version of xscreensaver is VERY OLD! Please upgrade! http://www.jwz.org/xscreensaver/ (If this is the latest version that your distro ships, then your distro is doing you a disservice. Build from source.)」(このバージョンの xscreensaver は非常に古いです! アップデートしてください! http://www.jwz.org/xscreensaver/ (もしこれがお使いのディストロが提供する最新のバージョンである場合,そのディストロはあなたに害を与えています。ソースからビルドしてください。))このメッセージは,作者である Zawinski 氏が書いたもので,そのバージョンのリリースからどれくらい時間が経過したかを見て,単純に12ヶ月を超えると表示される仕組みになっているようです。
 この問題について Debian のバグレポートメーリングリストに投稿した方が現れたのですが,そこへ作者でありこのメッセージを書いた本人である Zawinski 氏が登場して反論し,かなりの荒れ模様となっています。

#819703 – xscreensaver: please disable “This version of XScreenSaver is very old! Please upgrade!” message – Debian Bug report logs

両者の主張の要点は以下の通り。
Zawinski 氏:

  • 古いバージョンの xscreensaver をいつまでも提供し続けるディストロのせいで,既に修正したバグについての修正依頼が何度も舞い込み,大変迷惑している。
  • 私は言う,「あんたの使っているディストロはクソだ」。だけど彼らはいつもこうだ。「でもソースからコンパイルするなんてどうすればいいのかわからないんだけど 1
  • 古いバージョンのソフトウェアを何年も使い続けるなんてどうかしている。最新のバージョンを使うようにすべきである。仮にそれができないなら,私のソフトウェアを Debian から取り除いてくれ。
  • ライセンス上はこの要求を無視する権利もあるが,合法的なことと正しいことは違う。

反対意見:

  • まず,表示される警告メッセージがあまりに無礼かつ攻撃的である。ユーザにとって迷惑であり,社会通念上問題がある。
  • Debian の stable(安定版)リリースでは,バージョンは2年ごとのリリース時点で凍結し,セキュリティホールや重大なバグのみについて最低限の修正を加える仕組みになっている。これによって,修正に伴う新たな問題の発生を極力抑え,システムの安定性を長期的に最大限高く保つことができるようになっている。この仕組みを理解できていないのではないか。
  • 標準的な Debian システムに含まれる千数百のパッケージそれぞれがこのようなことをすれば,システムは不安定になり,ひどいことになる。
  • Debian における xscreensaver のバグは Debian のバグトラッキングシステムで管理されており,理論的には,直接メールなどで Zawinski 氏に報告が行くことはないはずである。仮に来ても,単に無視すれば手間ではないはずだ。
  • バージョンが古いことそれ自体はバグではない。
  • そもそも xscreensaver は自由ソフトウェアライセンスで提供されており,作者がその使われ方についてどうこう言うことはできない。ライセンスに規定されている以上の要求はソフトウェアの自由と相反するものである。

 そんなわけで,現在「レポジトリから xscreensaver を取り除け」(Zawinski 氏)という主張と「アホ言うな」という反応の間で侃々諤々の,というか感情的すぎるきらいのある議論が行われています。
 個人的には,ハードウェアに効果的な省電力機能が搭載され S3 スリープも普及しきった今ではスクリーンセーバの存在意義はかなり限定的であるように思いますし,xscreensaver のルックスはいかにも昔風で今時のデスクトップに合わないと思いますので,これを機にスッパリ xscreensaver を離れてもいいんじゃないかと思いますがね。
 Zawinski 氏が優れたハッカーであり,これまでコミュニティに多大な貢献をなしてきたことは疑う余地がありませんが,氏の理想は古き良き時代のハッカー文化にあり,それは今の世の中と少し乖離しているようです。昔は技術力こそが力であり,コードの書けない,ましてやコンパイルさえできないユーザは,”luser”(user + loser)として蔑まれました。しかし時代は変わりました。今や Linux ディストリビューションはハッカーのみならずコンピュータ科学以外の分野の研究者,医療従事者,ごく普通の事務職員までが日常的に使用するものとなりました。多くのニーズに応えるためにシステムがより大きく複雑になる一方,コミュニティへの貢献の道はあらゆる人へと開かれ,コーディングに限らず,各人のできることでのコミュニティへの貢献が尊重され,かつ必要とされるようになりました。ハッカーならぬ私はこの新しい時代はとても素晴らしいものだと思っていますが,古くからのハッカーにとっては必ずしもそうでもないのかもしれません。
 ともあれ,早期の円満な解決を祈っています。

参照:
#819703 – xscreensaver: please disable “This version of XScreenSaver is very old! Please upgrade!” message – Debian Bug report logs
Bug #1406825 “xscreensaver complains “This version of xscreensav…” : Bugs : xscreensaver package : Ubuntu
light-locker/README at master · the-cavalry/light-locker · GitHub
Set up light-locker with XFCE action buttons. / Newbie Corner / Arch Linux Forums
14.04 – Authentication required before suspend – Ask Ubuntu

Notes:

  1. ソースのコメントでは “herp derp I eat paste” と続く。要するに知識も調べる気もないユーザを揶揄しての囃し文句。