【Xubuntu】起動時にxsetコマンドが反映されない?sleep遅延で自動実行を成功させる手順
特定のハードウェア構成では、Xubuntuの起動時に毎回特別なコマンドを実行する必要がありますが、こうした処理は簡単に自動化できます。通常、コマンドは実行方法を問わず正しく動作するはずですが、ターミナルで個別に実行すれば問題ないのに、自動実行ではうまくいかないケースもあります。この現象は、XubuntuがX11グラフィカルインターフェースとやり取りする仕組みに起因するもので、意外と簡単に解決できることが多いのです。
たとえば、Xubuntuの起動ごとにマウスを設定するための2つのコマンドを実行しているとします。これらのコマンドは、ターミナルで直接実行しても、Superキー(Windowsキー)+Rで開けるXfce4アプリケーションファインダーから実行しても、どちらでも正常に機能します。ところが「セッションと起動」アプリでスタートアップ登録すると、2つのうち片方しか実際に反映されないことがあります。そんなときは、xsetを再設定し、チェックボックスを調整するだけで解決するかもしれません。
起動時にxset・xinputコマンドを自動実行する手順
1. コマンドが正しく動作することを確認する
作業を始める前に、使用するハードウェア設定コマンドがターミナル上で問題なく動くことを必ず確認してください。Xubuntuの不具合だと思っていた原因が、単純な入力ミスだったということも少なくありません。すべて正しく設定されていると確信できたら、「セッションと起動」プログラムを開き、「自動開始アプリケーション(Application Autostart)」タブへ移動します。そこで「追加」を押すか、既存エントリをダブルクリックして編集します。
2. sleepによる遅延を追加する
xset m 2 16 のようなマウス設定コマンドを登録する場合は、数秒間の遅延を挟んでみてください。bashスクリプトに慣れている方はすでにお分かりでしょうが、コマンドの実行を遅らせれば、XubuntuがXfce4の各種デフォルト値を読み込んだ後で初めてコマンドが走ります。具体的には、次のように記述します。
bash -c 'sleep 10 && xset m 2 16'
なぜ遅延が必要なのか
Xubuntuを起動すると、デスクトップ環境は妥当と判断した多数のデフォルト設定を読み込みます。多くのハードウェアにとってこれらは適切な値ですが、それより先に実行されたカスタム設定を上書きしてしまうことがあり、これが設定どうしが競合する原因です。実行を遅延させれば、Xubuntuの初期化完了後に目的のコマンドだけが確実に実行されます。
遅延時間の調整と起動パフォーマンスの改善
環境によっては、「10」をより長い秒数に変更する必要があるかもしれません。適切な遅延はXubuntuの起動時間次第なので、多少の試行錯誤が必要になるでしょう。ただし、20秒以上のsleepを設定すべきではありません。20秒以上かかるようなら、何らかの原因でXubuntuの起動が極端に遅くなっている可能性が高く、起動時に立ち上がるプロセスが多すぎることが疑われます。
使わなくなったパッケージが大量にインストールされているのかもしれません。皮肉なことに、この問題を手っ取り早く解決するには、まずSynapticパッケージマネージャーのインストールが有効です。sudo apt-get install synaptic を実行し、インストール後に起動すれば、もう使っていないプログラムを見つけて削除できます。これは起動パフォーマンスの向上につながります。その他のチューニングも、xsetコマンドに必要な遅延時間の短縮に役立ちます。なお、本記事のスクリーンショットではxfce-lookのカスタムテーマを適用したXubuntuを使用していますが、同様のテーマをお使いなら、その負荷の大きさを一度確認してみてください。一部のカスタムテーマは読み込みに時間がかかり、長期的にはシステム全体のパフォーマンスを下げる要因にもなります。
再起動時の注意点と応用テクニック
マシンの電源を切るときには「セッションを保存(Save Session)」チェックボックスがオンになっているか確認しましょう。設定が保存されることで、この問題が緩和される場合があります。xsetコマンドが確実に反映されるようになったら再起動して、すべてが正しく起動するか確認してください。問題なく動作すれば、以降は同様のトラブルは発生しないはずです。
この手法は、&&とシングルクォートの間に置くコマンドを差し替えるだけで、マウスやキーボードの設定に使うxinputコマンドが上書きされてしまう場合にも応用できます。技術的には、起動時に実行したい任意のコードをここに指定できますが、Xubuntuのデフォルト設定がほかの種類のコマンドを置き換えることはまれです。デフォルトは基本的な入力デバイスのみを対象としており、仮想コンソールを切り替えた際には適用されません。
「遅延コードは実行可能なシェルスクリプトにまとめるべき」と主張するユーザーもいますが、通常はその必要はありません。「セッションと起動」はどんなコマンドでも実行できます。また、Xubuntu付属のXfce4キーボードショートカットツールでショートカットキーに割り当てるべきという意見もありますが、これも技術的には必須ではありません。適切なbash遅延を伴う「セッションと起動」への登録だけで、圧倒的大多数の状況で十分に機能します。
最後に、xsetコマンドにサーバー向けの-bc互換オプション設定が含まれていないか確認してください。Xubuntuは常にこの設定を上書きします。-bcオプションが想定するレガシーハードウェアは、Xubuntuが採用するXfceデスクトップ環境との相性が良くないためです。
著者について

Kevin Arrows(ケビン・アローズ)
Kevin Arrowsは、10年以上の業界経験を積んだ知識豊富なテクノロジースペシャリストです。Microsoft認定テクノロジースペシャリスト(MCTS)の資格を保有し、最新の技術トレンドを追い続けることに強い情熱を持っています。ソフトウェア開発、サイバーセキュリティ、クラウドコンピューティングなど、幅広い技術トピックについて数多くの記事を執筆しており、その専門性と知識は同業者から広く認められています。複雑な技術概念を明快かつ簡潔に説明する力にも定評があります。
-
Ubuntuのソフトウェアアップデーターエラーを解決する方法:初心者向けステップバイステップガイド
Ubuntuマシンでソフトウェアアップデーターを実行しようとした際、「リポジトリ情報のダウンロードに失敗しました(Failed to download repository information)」というメッセージが表示され、インターネット接続の確認を促されることがあります。ターミナルからapt-getコマンドでUbuntuを更新しようとした場合も、パッケージ管理ユーティリティから別の種類のアップデーターエラーが表示されることがあります。この問題は、Lubuntu、Xubuntu、Kubuntu、Ubuntu MATEなど、すべてのUbuntu派生ディストリビューションでも発生します。また、
-
【解決】「ロックファイル/var/lib/dpkg/lockを開けませんでした」エラーの対処法
「ロックファイル/var/lib/dpkg/lockを開けませんでした」エラーとは apt-getコマンドを実行した際に「could not open lock file /var/lib/dpkg/lock(ロックファイル/var/lib/dpkg/lockを開けませんでした)」というエラーメッセージが表示されると、戸惑う方も多いのではないでしょうか。特に混乱しやすいのは、sudoを付けて更新コマンドを実行したにもかかわらず、直後に「rootで実行していますか?」と問われるケースです。 このエラーは、apt-getパッケージマネージャーを使用するほぼすべての場面で発生する可能性があります。U