Rofiでクールな軽量ミニマルランチャー

ポップアップウィンドウスイッチャー Rofi

Rofi とは

Ubuntu Unity のランチャーはちょっとかっこいいけど、起動直後はガリガリ鳴って待たされたり、ちょっとモタっとする。マウスを使わずにキーボードだけでいこうとするとイラっとするときがあるので、なにかかわりのものはないかなと探してみたら、 Rofi というポップアップウィンドウスイッチャーをみつけた。

Rofi : A window switcher, run dialog and dmenu replacement

rofi_customized_window.jpg

Rofi は起動中のアプリウィンドウをリストからインクリメンタルに検索して切り替えられるウィンドウスイッチャーというやつだけれど、起動可能なプログラムのリストを検索対象にすることも可能だ。この2つのリストをまぜこぜに組み合わせることもできるから、ちょっと便利なインターフェースになりそう。

ショートカットキーでポップアップさせるようにすればマウスを使わずキーボードだけでいけるので、サクサクと捗るんじゃないだろうかと目論んだ。

試した環境はだいぶ安定してきた Ubuntu 16.04 LTS。

インストール

最新版とはちょっと仕様が違うかもしれないけれど Ubuntu では apt リポジトリからインストールできる。

sudo apt install rofi

ちょっと使ってみる

ターミナルエミュレータ( Ctrl+Alt+t )からRofiを実行してみる。

rofi -show window

rofi_normal_window.jpg

ちょっと地味な感じだが、プロンプトとともに、実行中のウィンドウ一覧が一緒に表示される。 ESC で閉じる。

以下のように実行すると、起動可能なアプリの一覧が表示される。

rofi -show run

rofi_normal_run.jpg

文字を打てばそれに従って検索されるし、カーソル移動もできる。 Shift+→ でモード変更もできる。

Rofi は Emacs ライクなキーバインドとなっており、思考を妨げない。よく使うキーは以下の通り。

操作キー 機能 他のキー
C-n カーソルを下の行へ <down>
C-p カーソルを上の行へ <up>
C-f カーソルを1文字右へ <right>
C-b カーソルを1文字左へ <left>
C-a カーソルを行頭へ  
C-e カーソルを行尻へ  
C-<tab> モードの切り替え S-<right>
C-m 選択・実行 <enter>
<esc> キャンセル  

軽量ランチャーとして使う

Rofi の設定は、 ~/.Xresources (あるいは ~/.Xdefaults)に書いてリソース設定する方法もあるけれど、起動オプションで指定することもできる。それで、起動オプションを簡単なスクリプトファイルにしてみた。

#!/bin/bash

alpha="cc"   # 透明度合 00〜FF

options=(
    -modi            "combi,window,windowcd,run,drun,ssh"
    -combi-modi      "window,run,ssh"
    -show            "combi"
    -font            "Ubuntu 28"
    -width           "100"
    -padding         "80"
    -lines           "8"
    -hide-scrollbar

    ## key bindings
    -kb-cancel       "Escape,Control+g,Control+bracketleft,Control+c"
    -kb-mode-next    "Shift+Right,Control+Tab,Control+i"

    ## color
    -color-enabled   "true"
    -color-window    "argb:${alpha}040404, argb:${alpha}040404, argb:${alpha}458588"
    -color-normal    "argb:00000000, argb:${alpha}458588, argb:00000000, argb:${alpha}076678, argb:${alpha}83a598"
    -color-active    "argb:00000000, argb:${alpha}689d6a, argb:00000000, argb:${alpha}427b58, argb:${alpha}8ec07c"
    -color-urgent    "argb:00000000, argb:${alpha}b16286, argb:00000000, argb:${alpha}8f3f71, argb:${alpha}d3869b"
)

rofi "$@" "${options[@]}"

オプションの概要は以下の通り。

  • -modi : 切り替え可能なモードを指定する。複数指定でき、モード切替キーを押す毎に指定した順で切り替わっていく。モードは以下の通り。
    • window : 全ウィンドウ
    • windowcd : カレントデスクトップのウィンドウ
    • run : 実行可能なアプリ一覧
    • drun : デスクトップエントリをもとにしたアプリ一覧
    • ssh : .ssh/config に記述のあるssh接続先一覧
    • combi : -combi-modi オプションで設定したモード
  • -combi-modi : combiモードで一緒くたに表示させるモードを指定する。ここのスクリプトではウィンドウ一覧( window )とアプリ一覧( run )、ssh接続先一覧( ssh )の3種を一緒に表示するよう指定。
  • -show : 最初に表示するモードを指定する。例えば -show run とすることで最初にアプリ一覧モードを表示する。
  • -font : フォントはとりあえずディストロにあわせて Ubuntu を指定しているのだけれど、色々と試してみるべきかと。細身なプロポーショナル書体を大きめのポイントで指定するとかっこいいだろうし、あえてモノスペース系っていうのもクール(親指)。
  • -width : ウィンドウの幅を指定する。数字が、100以下は左右幅のパーセンテージ、100超はピクセル数、0未満(マイナス)の場合はキャラクター桁数を示す。
  • -padding : ウィンドウ内のマージンピクセル数。
  • -lines : プロンプトをのぞいた表示行数。
  • -kb* : Emacsライクに C-g でもキャンセルできるとありがたいのでキーバインドも設定した。ついでなので Vimライクに C-[C-c にも。またモード切り替えを C-i にもあてた。
  • -color* : カラースキームを設定する。 ここ にいくつかテーマがあるうえ Theme generator というのもあるので参考に。なお、透過率の指定は -opacity オプションがなくなった(?)ようなので、 ARGB値でカラーごと指定する(上記スクリプトでは変数 $alpha の値で透明度合いを調整)。

このスクリプトを ~/bin/rofi_launch.sh に保存して実行属性をつけて実行してみる。

chmod +x ./rofi_launch.sh

rofi_customized_combi.jpg

ウィンドウとアプリの一覧が混在したリストになる。C-i を押せば他のモードに切り替わる。

オプションを優先してとるようにしてあるので、

rofi_launch.sh -show window

とすれば最初にウィンドウ一覧を表示してくれる。

rofi_customized_window.jpg

ショートカットキーを設ける

Ubuntuではシステム設定でキーボード・ショートカットの設定が可能なので、それを利用する。

押しやすいキーに設ければ、素早くポップアップできる。ちょうどあいている C-; でRofiがポップアップするように設定してみる。

右上のまあるいスイッチから [システム設定] – [キーボード] – [ショートカット] とたどって、左の一覧から [独自のショートカット] を選んで [+] で追加。名前: Rofi 、 コマンド: ~/bin/rofi_launch.sh と設定。

rofi_shortcutkeydialog.jpg

表の右列の [無効] をクリックして登録したいショートカットキー、つまり Control+; を押す。

これで、設定したショートカットキーを押すと Rofi のウィンドウがポップアップされる。

終わりに

drun はデスクトップエントリ(/usr/share/applications~/.local/share/applications)からとっているようで、直感的な名前になっているから扱いやすいこともあるが、たまに直感的でないものもあったりして(特に日本語)うまくない。デスクトップエントリのNameとかを書き換えたりするといいのだろうか。

Rofi はウィンドウスイッチャーという位置づけだけれど、上記の通りアプリ一覧やssh接続一覧から接続するといったフィーチャーも備えている。また dmenu の代わりになったりするので、 i3 ウィンドウマネージャを使っているなら Rofi を使うといい。 Script の記述でメニューを生成したりもできる。いろいろできそうなのだけれど、そのお楽しみはまた今度に。

Sources and Revisions

スポンサードリンク

コメント

  1. […] dmenuはi3標準指定のメニューソフト。rofi は便利なウィンドウスイッチャーでdmenuのかわりとしても使える。comptonはウィンドウの透過と影を生成する(タイリングでも透過は必要と思うときに)。lxappearanceは軽量のテーマスイッチャー。 […]