KDEのKonsoleでカラースキーマをコマンドラインから変更する

Tags : Linux   KDE   KATE  

Linuxのウィンドウシステムはユーザーが選べます。私は色々使いましたが、今はKDEに落ち着いています。

KDEの標準端末シミュレーターはKonsoleです。KDEでは他のソフトウェアをコンポーネントとして利用でき、例えばファイラーのDolphinやエディターのKateでは、Konsoleコンポーネントを取り込み、わざわざソフトを切り替えなくても、端末が操作できます。

もちろん組み込まれていることにより、それ以上の利便性が生まれます。Dolphinではフォルダーへ移動すれば、それに追従して作業ディレクトリーが切り替えられます。Konsoleではプロジェクトのルート専用に開いいていたり、作業しているファイルの存在するディレクトリーに切り替わったりします。

これは便利なのですが、カラースキーマを変更したい場合、これら全部を一度に変更できません。Konsole本体でプロファイルのカラースキーマを切り替えれば、全部のタブが同じプロファイルを使用している限り、いっぺんに切り替わりますが、DolphinやKate内部のKonsoleコンポーネントまでは変更されません。

私は外部からの光で部屋が明るい場合と、外部高の影響がない暗い場合で、頻繁に切り替えています。そのたびに、全部を設定するのは面倒ですので、コマンドを使用して変更するシェルを作成しました。

仕組み

組み込まれているものを含め、それぞれのウィンドウは、Konsoleからセッションとして管理されています。例えばKonsole本体でタブを開けば、それは新しいセッションとなります。

セッションは開かれる時に、Konsole本体で設定されたデフォルトのプロファイルの情報に基づき、様々な設定を行います。一度セッションが開くと、プロファイルの情報は内部に取り込まれるらしく、外部から設定ファイルの値を変更しても、反映されません。(もちろん、KonsoleのGUIで切り替えた場合は、直ぐに反映されます。)

Linuxではアプリケーション間の通信にDBusを利用しており、これを使用し、各アプリケーションが保持しているKonsoleのセッションをチェックして、全部に対し変更コマンドを実行することで、カラースキーマを変更します。

シェル

詳しい説明はしません。各コマンドについては検索して調べてください。行うことはBashシェルにまとめました。

#!/bin/bash

# 全起動中のKonsoleセッションに対し、プロファイル変更コマンドを実行
# 複数ウィンドウで起動していても、インターフェイスは一つだけ登録

konsole=`qdbus | grep konsole`
sessions=`qdbus $konsole | grep '/Sessions/'`
for session in $sessions
do
  qdbus org.kde.konsole $session org.kde.konsole.Session.runCommand "konsoleprofile ColorScheme='Solarized Light'"
done


# Dolphin上のKonsoleコンポーネントのプロファイル変更
# 起動ウインドウ毎にDBusのインターフェイスが登録される

dolphins=`qdbus | grep dolphin`
for dolphin in $dolphins
do
  sessions=`qdbus $dolphin | grep '/Sessions/'`
  for session in $sessions
  do
    qdbus $dolphin $session org.kde.konsole.Session.runCommand "konsoleprofile ColorScheme='Solarized Light'"
  done
done


# Kate上のKonsoleコンポーネントのプロファイル変更
# 起動ウインドウ毎にDBusのインターフェイスが登録される

kates=`qdbus | grep kate`
for kate in $kates
do
  sessions=`qdbus $kate | grep '/Sessions/'`
  for session in $sessions
  do
    qdbus $kate $session org.kde.konsole.Session.runCommand "konsoleprofile ColorScheme='Solarized Light'"
  done
done

今回の例では、カラースキーマに'Solazied Light'を指定しています。これは、デフォルトでは存在していないスキーマです。GitHubで見つけたので、インストールしたものです。これをお好きなスキーマ名に変更してください。

もし、DolphinかKate以外にKonsoleコンポーネントを使用しているソフトウェアを使用しているのでしたら、多分同様の方法で変更できるでしょう。

今のところ、プロファイルのカラースキーマの変更を行なっていませんので、新しくタブなどを開くと、プロファイルに指定したスキーマの色で表示されます。見つかったら、後で追加しておきます。(プロファイルのカラースキーマーはkwriteconfigで更新ファイル名を指定することで変更できるのですが、Konsoleが保持しているプロファイルの内容を変更する方法が分かっていません。)