Ubuntuは17.10より、デスクトップシェルをUnityからGNOME Shellへと移行しました。その際にUnityのLauncher部分を担ったのが、GNOME Shellの拡張機能のひとつである「Dash to Dock 」です。第538回 に続いて、今回はDash to Dockの見た目をカスタマイズしてみましょう。
前回のおさらい
第538回 に続いて、今回もUbuntu 18.04 LTSのデスクトップインターフェースの一部であるDash to Dock(Ubuntu Dock)のカスタマイズを行います。
Dash to DockはGNOME Shellの拡張機能であり、デスクトップ上でのアプリケーションランチャーやタスク管理を担うソフトウェアです。Ubuntuでは、Dash to DockのUIの一部をカスタマイズした上で、「 Ubuntu Dock 」としてインストールしています。
オリジナルのDash to Dockには詳細な設定インターフェースが存在しますが、Ubuntu Dockには基本的な設定インターフェースしか存在しません。このためUbuntu Dockをより細かくカスタマイズしたい場合は、gsettingsコマンドを用いる必要があります。
パスにあるキーの値を表示する
$ gsettings get パス キー
パスにあるキーの値を変更する
$ gsettings set パス キー 値
パスにあるキーの値を初期値に変更する
$ gsettings reset パス キー
Ubuntu Dockのパスは「org.gnome.shell.extensions.dash-to-dock
」です。
前回はショートカット(ホットキー)機能やDockに表示する項目の調整、自動的に隠す機能の調整機能などを紹介しました。今回はUbuntu Dockそのものの見た目をがらっと変えてしまいましょう。
Dockの形と表示位置を変更する
Ubuntu Dockの場合、Dockは「ディスプレイのサイズいっぱいに表示する」設定になります。これをDash to Dockのようにアイコンのサイズに合わせて調整するには、extend-heightをfalseにします。
$ gsettings set org.gnome.shell.extensions.dash-to-dock extend-height false
図1 extend-heightをfalseにするとアイコンの数にあわせて高さが変わる
extend-heightがfalseの場合、Dockの角は丸くなります。常に角ばっておきたい場合は、force-straight-cornerをtrueに設定してください。
$ gsettings set org.gnome.shell.extensions.dash-to-dock force-straight-corner false
また、extend-heightがfalseのときに有効になる設定としてheight-fractionも存在します。これはディスプレイでDockを表示可能な最大の領域に対する倍率を設定します。初期設定値は0.9なので、ほぼ画面サイズいっぱいまで起動アイコンを並べられます。これをたとえば0.3ぐらいにすると、最大でもディスプレイの3割程度までしかDockは拡張されません。それを超えると、表示できないアイコンは隠れますのでスクロールで表示させる必要があります。
図2 height-fractionを小さくすると入り切らないアイコンは表示されない
extend-heightをfalseにして、icon-size-fixedをfalseにすると、height-fractionで設定した領域内部にすべてアイコンを表示できるようにアイコンのサイズを自動的に小さくします。起動中のアイコンを必ず表示させたい場合に便利でしょう。第538回 で紹介したように、icon-size-fixedをfalseにしないとswitch-workspaceが機能しないのはこれが理由です。
図3 icon-size-fixedをfalseにするとアイコンの大きさが自動的に変わる
システム設定でもDockの表示位置を変更できますが、実はgsettingsからだとディスプレイの「上端」にもDockを配置できます。
$ gsettings set org.gnome.shell.extensions.dash-to-dock dock-position 'TOP'
上端にDockが配置されたとしても、初期設定のままでは単に邪魔な存在です。しかしながら次のように、これまでの設定を駆使すると、それなりに使えるようになります。
Dockの常時表示を無効化
$ gsettings set org.gnome.shell.extensions.dash-to-dock dock-fixed false
Dockをウィンドウの状態に関係なく常に隠す
$ gsettings set org.gnome.shell.extensions.dash-to-dock intellihide false
マウスカーソルを上端にあわせるだけでDokc表示
$ gsettings set org.gnome.shell.extensions.dash-to-dock require-pressure-to-show false
Dockのサイズはアイコン表示に必要な分だけにする
$ gsettings set org.gnome.shell.extensions.dash-to-dock extend-height false
Dockのサイズは最大でも画面サイズの半分
$ gsettings set org.gnome.shell.extensions.dash-to-dock height-fraction 0.5
Dockのサイズを超えるアイコンを表示する際は、アイコンを小さくする
$ gsettings set org.gnome.shell.extensions.dash-to-dock icon-size-fixed false
Dockを画面の上端に表示する
$ gsettings set org.gnome.shell.extensions.dash-to-dock dock-position 'TOP'
図4 必要なときだけ表示されるようになれば上端でもそれなりに使える
マルチモニター・ワークスペースにおけるDockの表示
マルチモニター・マルチワークスペース環境においてUbuntu Dockは次のような挙動になっています。
プライマリーモニターにのみDockを表示する(multi-monitorがfalseで、preferred-monitorが-1)
すべてのモニター・ワークスペースで起動中のアプリをDockに表示する(isolate-monitorsとisolate-workspacesがfalse)
まず最初に、multi-monitorをtrueに変更するとすべてのモニターにDockを表示します。multi-monitorがfalseのままの場合、preferred-monitorに指定した番号のモニターにDockを表示します。モニターと番号の対応表はシステム設定の「デバイス」にある「ディスプレイ」を参照してください。-1はプライマリーモニターになります。
isolate-monitorsをtrueにすると、そのモニターに表示されているウィンドウのみがDockに反映されます。isolate-workspacesをtrueにするとそのワークスペースに表示されているウィンドウのみがDockに反映されます。
背景の変更
第492回 でも紹介したように、GNOME Shellの拡張機能はJavaScriptとCSSで形成されています。よってテーマとしてCSSを書けばDash to Dockの見た目を変更できるのです 。実際、基本的なスタイルは「/usr/share/gnome-shell/extensions/ubuntu-dock@ubuntu.com/stylesheet.css
」に記載されています。ただしCSSによるスタイルとgsettingsによる見た目の変更は排他的です。このためスタイルシート適用のapply-custom-themeはfalseになっています。ここではgsettingsを用いた見た目の変更について説明しましょう。
まずDockの背景色の変更です。背景は基本的にDock近傍のウィンドウの有無あわせて調整される設定になっています。これはtransparency-modeで変更可能です。設定できる値は次のとおりです。
DEFAULT:指定されたテーマによって変わる。
FIXED:ユーザーが設定した色と透明度が反映される。
ADAPTIVE:Dockからウィンドウが離れているときはDockの設定が反映され、近づいているときはウィンドウの色がDockとトップパネルの双方 に反映される。Dockが隠れているときはトップパネルの色は変わらない(Ubuntu Dockの設定) 。
DYNAMIC:Dockからウィンドウが離れているときはDockの設定が反映され、近づいているときはウィンドウの色がDockのみ に反映される。
FIXED時はbackground-opacityの値が設定されます。初期値は0.8で、0にすると完全に透明になります。
図5 Dockの近くにウィンドウがいないと画面左端のDockも画面上端のパネルも半透明で表示
図6 ADAPTIVEの場合、ウィンドウが近づくと「Dockとパネルの双方」がウィンドウの色になる
図7 DYNAMICの場合、ウィンドウが近づくと「Dockのみ」がウィンドウの色になる
Dockの背景に明示的に色味を付けたい場合は、background-colorを設定します。この値はcustom-background-colorをtrueにすることで反映されます。
たとえばDockをオレンジ色の系統にするなら、次のように設定します。
$ gsettings set org.gnome.shell.extensions.dash-to-dock transparency-mode FIXED
$ gsettings set org.gnome.shell.extensions.dash-to-dock custom-background-color true
$ gsettings set org.gnome.shell.extensions.dash-to-dock background-color '#e95420'
図8 オレンジ色のDock
特定の色にしたい場合は、transparency-modeをFIXEDにして透明度も固定的に設定したほうがいいかもしれません。
インジケーターのスタイル
Dockのアイコン左にあるオレンジ色の丸印は「インジケーター」と呼びます。インジケーター起動中のウィンドウの数(最大5つ)だけ表示されます。
Ubuntu Dockではインジケーターは丸印(DOTS)になっていますが、running-indicator-styleで変更可能です。選択肢は次の8つです。
図9 DEFAULT:短い下線
図10 DOTS:丸印
図11 SQUARES:四角
図12 DASHES:縦短線
図13 SEGMENTED:縦長線
図14 SOLID:ウィンドウの数に関係なく線で表示
図15 CILIORA:ウィンドウが増えると少し変わる線1
図16 METRO:ウィンドウが増えると少し変わる線2
インジケーターの色はcustom-theme-customize-running-dotsがtrueなら、次の設定でドットの色や枠を変更可能です。
custom-theme-running-dots-color '#e95420'
インジケーターの色。初期値は「#e95420」である。
custom-theme-running-dots-border-width 0
インジケーターの外枠の幅。初期値は0なので枠は表示されない。
custom-theme-running-dots-border-color
インジケーターの外枠色。初期値は「#e95420」である。
また、少し変わったところだとunity-backlit-itemsをtrueにすると、Unityっぽいアイコンの表示になります。
図17 アイコンの背景に枠が付く
スタイルシートを使ってカスタマイズ
次のようにapply-custom-themeをtrueにすれば、スタイルシートからの設定が反映されます。
$ gsettings set org.gnome.shell.extensions.dash-to-dock apply-custom-theme true
前述のとおり、大元のスタイルシートは「/usr/share/gnome-shell/extensions/ubuntu-dock@ubuntu.com/stylesheet.css
」ですので、このスタイルシートを書き換えてGNOME Shellを再起動すればカスタマイズ可能です[1] 。
[1] X Window System環境であれば、Alt-F2で表示されるダイアログに「r」と入力すればGNOME Shellを再起動できます。Wayland環境なら一度ログアウトして再度ログインする必要があるでしょう。
しなしながらこのファイルはgnome-shell-extension-ubuntu-dockパッケージに属しているので、パッケージがアップグレードされると書き換わってしまいます。もし恒久的にカスタマイズしたい場合は、スタイルシートのみを保持したGNOME Shellの拡張機能を作るのが正しいやり方になります。
拡張機能の作り方と有効化の方法については、第492回 の「GNOME Shellの拡張機能を作ってみよう」を参照してください。ただのスタイルシートならextensions.jsは空のinit()
、enable()
、disable()
関数を用意すれば問題ありません[2] 。あとは作成した拡張機能のstylesheet.cssの内容を書くだけです。