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」)を選択し,エンターキーを押す。

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

ThinkPad T61 に Debian 8 + xfce をインストールしたメモ

 ジャンクの ThinkPad T61 を買ったので Debian 8 + xfce セットアップのメモ。

1, まず普通にインストール

2, sources.list 編集

# nano /etc/apt/sources.list

cdrom: 行をコメントアウト。
contib/non-free が必要な場合、ついでに追加。

3, 最低限使うソフトをインストール

# aptitude update
# aptitude install sudo vim keepassx arandr xfce4-whiskermenu-plugin icedove icedove-l10n-ja zotero-standalone xul-ext-zotero

4, 自分をグループ sudo に入れる

# gpasswd -a hoge sudo

一度ログアウトするまで反映されない。

5, ユーザに戻って ~/ をデフォルト(英語)に

$ LANG=C xdg-user-dirs-update --force

6, トラックポイントでのスクロールを有効化

$ sudo vi /usr/share/X11/xorg.conf.d/20-thinkpad.conf

以下をコピペ。

 Section "InputClass"
     Identifier "Trackpoint Wheel Emulation"
     MatchProduct       "TPPS/2 IBM TrackPoint|DualPoint Stick|Synaptics Inc. Composite TouchPad / TrackPoint|ThinkPad USB Keyboard with TrackPoint|ThinkPad Compact USB Keyboard with TrackPoint|USB Trackpoint pointing device"
     MatchDevicePath    "/dev/input/event*"
     Option             "EmulateWheel"          "true"
     Option             "EmulateWheelButton"    "2"
     Option             "Emulate3Buttons"       "false"
     Option             "XAxisMapping"          "6 7"
     Option             "YAxisMapping"          "4 5"
 EndSection

もうちょっと詳しい話は Debian 公式 Wiki の当該項目を参照のこと

7, xfce の設定
– 標準からパネル1削除、パネル2を画面下端へ。
– ワークスペースを1つに。
– 標準メニューボタン、ワークスペーススイッチャー、アクションボタンを削除。
– Whisker Menu とシステム負荷モニターを追加。
– 合成処理有効化ほか、環境や気分に合わせ設定。
– 初回ログアウト時には確認画面の「次回ログインのためセッションを保存する」のチェックを外す。

8, Mozc の設定
 なにやら難しくてよくわからない理由により標準では一部の設定項目が変更できません。仕様の違いが原因のため、バグとしては扱われていません。なので何年も前からこの状態ですし、修正する予定もないようです。ワークアラウンドとしては、いったん uim-mozc を削除したうえで mozc-utils-gui を起動し設定を行えば問題なし。

$ sudo aptitude remove uim-mozc

句読点変更、サジェスト自動表示・リアルタイム変換を無効化したうえで

$ sudo aptitude install uim-mozc

9, CapsLock を Ctrl に
「設定>セッションと起動>自動開始アプリケーション」から「setxkbmap -option “ctrl:nocaps”」を追加。
液晶が見にくく感じる場合は、このとき「xgamma -gamma X.X」も追加してガンマ値を下げるなどしておくと良いかもしれません。バックライトが黄ばんでいる古いマシンでは -bgamma を上げるのもおすすめ。

10, 画面ロックを xscreensaver から light-locker に変更
先日の記事参照のこと。

11, 完了
やったぜ。

 この機種 T61 についてですが,1960年代にソビエト連邦が開発した第2世代主力戦車で……じゃなかった,2007年発売の14.1型ラップトップです。数字が同じ X61 と同世代のようです。
 T シリーズは初めてなのですが,なかなかいいですねコレ。X をそのまま引き伸ばした感じで,X 独特の“秘密基地感”のようなもの(伝われ)が出ています。その一方で画面が物理的に広々として見やすく,キーボードも無理がありません。スピーカもステレオで,ついつい用もなく音楽をかけてしまいます。それでいて「小脇に抱える」ことができる程度のフットプリント・軽さ・薄さを保っており,モバイルマシンならではのわくわく感(伝われ)が損なわれていません。Core2 Duo T7100 1.8GHz + GM965 Express のモデルなので性能は大したこと無いはずなのですが,インタフェースにゆとりがあるためか,体感としてはなかなか快適です。リース落ちが一気に出たようでかなり安かった(PC-NET で3千円)ので,買った翌週にも秋葉原に寄って実家用にもう一台確保してしまいました。
 
参照:
製品の概要 – ThinkPad T61, T61p – Lenovo Support (JP)
Hothotレビュー レノボ「ThinkPad T61」レビュー ~Santa Rosaとワイド液晶で強化

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” と続く。要するに知識も調べる気もないユーザを揶揄しての囃し文句。

xfce でセッションを保存させないには

最近の xfce にはログアウト時にセッション内容(起動しているアプリケーションとその状態)を保存して次回ログイン時に復元してくれる機能が付いているみたいです。流行ではありますが自分にとっては要らんおせっかい。設定項目にこの機能を無効化するものがなかったので弱っていましたが,なんのことはない,ログアウト時の選択画面で「次回ログインのセッションを保存する」のチェックを外せばいいだけでした。一度チェックを外せば次回以降も記憶していてくれます。