Ubuntu Weekly Recipe

第509回壁紙にあわせてターミナルとデスクトップの色をカスタマイズする方法

デスクトップ環境のカスタマイズは色々ありますが、中でもお手軽に自分好みの色を出せるのが壁紙の変更です。新しい環境を導入した時や気分を変えたい時に、あるいは定期的にランダムで壁紙を変更する方も多いのではないでしょうか。

しかし壁紙の変更に対し、カラーテーマを独自に設定している方はほとんどいないのではないでしょうか。それもそのはず、カラーテーマは設定する項目が多く、単純にカスタマイズが面倒くさいのです。とはいえカラーテーマを変更するとデスクトップの雰囲気ががらっと変化するので、できることなら壁紙の雰囲気にあわせて変更したいですよね(ということにしておいてください⁠⁠。

そこで今回は、壁紙の色にあわせてデスクトップの色を自動的に変更する方法を紹介します。

ターミナルの色を変更する

walというアプリケーションがあります。これは画像をもとにカラースキームを生成し、現在開いているターミナルに反映するアプリケーションです。このwalをPython3で書き換えたものが、今回紹介するpywalです。

現時点でUbuntuにはパッケージが存在しないため、pipを使ってインストールします。またカラースキームの生成にImageMagickを利用しているため、あわせてインストールしておきます。

pipとpywalのインストール
$ sudo apt install python3-pip imagemagick
$ sudo pip3 install pywal

パッケージ名は「pywal」ですが、コマンド名は「wal」なことに気をつけてください。⁠wal -h」でヘルプが表示されますので、一度見ておくとよいでしょう。

ヘルプを表示する
$ wal -h
usage: wal [-h] [-a "alpha"] [-b background] [-c] [-i "/path/to/img.jpg"]
           [-f "/path/to/colorscheme/file"] [-g] [-l] [-n] [-o "script_name"]
           [-q] [-r] [-R] [-s] [-t] [-v] [-e]

wal - Generate colorschemes on the fly

optional arguments:
  -h, --help            show this help message and exit
  -a "alpha"            Set terminal background transparency. *Only works in
                        URxvt*
  -b background         Custom background color to use.
  -c                    Delete all cached colorschemes.
  -i "/path/to/img.jpg"
                        Which image or directory to use.
  -f "/path/to/colorscheme/file"
                        Which colorscheme file to use.
  -g                    Generate an oomox theme.
  -l                    Generate a light colorscheme.
  -n                    Skip setting the wallpaper.
  -o "script_name"      External script to run after "wal".
  -q                    Quiet mode, don't print anything.
  -r                    'wal -r' is deprecated: Use (cat
                        ~/.cache/wal/sequences &) instead.
  -R                    Restore previous colorscheme.
  -s                    Skip changing colors in terminals.
  -t                    Deprecated: Does nothing and is no longer needed.
  -v                    Print "wal" version.
  -e                    Skip reloading gtk/xrdb/i3/sway/polybar

単純な使い方は、⁠-i」オプションの引数に壁紙に指定したいファイルを指定するだけです。

壁紙の設定と同時にターミナルの色を変更する
$ wal -i (壁紙にしたいファイル)
図1 Ubuntu 17.10のデフォルトのデスクトップ
画像
図2 やや明るめの壁紙を設定したところ。ターミナルの背景と文字色も壁紙と似た雰囲気の色になる
画像
図3 暗めの壁紙を設定したところ。同様にターミナルも暗めの配色となる
画像

pywalはターミナルの色を変更しますが、これはターミナルの設定を書き換えているわけではなく、エスケープシーケンスで実現しています。そのためターミナルを再起動すると、wal実行前の状態に戻ってしまいます。

図4 walを実行してターミナルの色を変更しても、ターミナルのプロファイル自体に変化はない。そのため再起動でターミナル自身の設定色に戻ってしまう
画像

walは最後に生成したカラースキームを「/.cache/wal/sequences」以下に保存しています。このファイルをcatで表示するだけで、保存されているカラースキームを再適用できます。⁠/.bashrc」等、シェルの設定ファイルの最後に以下の一文を追記しておくとよいでしょう。

保存されたカラースキームを読み出す
cat ~/.cache/wal/sequences

また「wal -R」を実行すると、最後に設定した壁紙とカラースキームを復元できます。

最後に設定した壁紙とカラースキームを復元する
$ wal -R

ちなみに最後に設定した壁紙は「.cache/wal/wal」に保存されています[1]⁠。独自の壁紙セッター(nitrogenやfehなど)を使いたい場合は、このファイルの内容を読んで、各プログラムへ渡すようにするとよいでしょう。

デスクトップのカラーテーマも変更する

デスクトップ全体のカラーテーマもあわせて生成できます。ただしこれはpywal単体ではできないため、oomoxというツールをインストールします。リポジトリにパッケージが存在しないため、GitHubのReleasesページからDebパッケージをダウンロードしてaptでインストールしてください[2]⁠。また生成されたテーマを変更するため、gnome-tweak-toolsもインストールしておきます。

oomoxとgnome-tweak-toolのインストール
$ wget https://github.com/actionless/oomox/releases/download/1.5.0/oomox_1.5.0.deb
$ sudo apt install ./oomox_1.5.0.deb
$ sudo apt install gnome-tweak-tool

walに「-g」オプションをつけて実行すると、oomoxテーマを生成します。

ターミナルのカラースキームと同時に、oomoxテーマを生成する
$ wal -g -i (壁紙にしたいファイル)

「~/.theme/wal」というディレクトリ以下にテーマが生成されています。gnome-tweak-toolsを起動し、⁠Appearance⁠⁠→⁠Themes」「Wal」を設定してください。作成されたテーマが反映されます。

図5 Ubuntuデフォルトのテーマ「Ambiance」が設定されている状態
画像
図6 生成されたWalテーマを設定した状態
画像

「wal -g」を実行する度に、walテーマの中身は上書きされていきます。本来であれば自動でデスクトップテーマがリロードされ即座に反映されるのですが、現在のGNOME環境では自動リロードがうまく動作しません[3]⁠。そのためテーマを更新した場合は、一度別のテーマに変更した上で、Walテーマを再度設定し直してください。

カラーテーマは単に色をあてはめればいいわけではなく、適切な場所に適切な色を割り当てないと、非常に使いにくいものができあがってしまいます。そのため自動生成のテーマではなかなか実用とまではいかないでしょう。しかし色々な壁紙を試すうちに、使いやすいテーマが偶然生まれるかもしれません。あるいは生成されたテーマに自分で手を入れて調整してもよいでしょう。

壁紙を頻繁に変更されるのであれば、少ない手間でデスクトップ全体の雰囲気をあわせることができるpywalを試してみてはいかがでしょうか。

おすすめ記事

記事・ニュース一覧