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

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

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

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

そこで Rofi というポップアップウィンドウスイッチャーをみつけた。

Rofi : A window switcher, run dialog and dmenu replacement

rofi_customized.jpg

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

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

インストール環境はだいぶ安定してきた Ubuntu 16.04 LTS。

インストール

最新版とはちょっと仕様が違うかもしれないけれど 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

options=(
    # mode
    -modi              'combi,calc:qalc -t,window,windowcd,run,drun,ssh'
    -show              'combi'

    # combi
    -combi-modi        'window,run,ssh'

    # Font
    -font              'Ubuntu 24'

    # Window
    -width             '100'
    -padding           '80'
    -lines             '8'
    -color-enabled     'true'
    -color-window      '#111111,#111111,#268bd2'
    -color-normal      '#111111,#ffffff,#111111,#268bd2,#ffffff'
    -color-active      '#111111,#268bd2,#111111,#268bd2,#000022'
    -color-urgent      '#111111,#f3843d,#111111,#268bd2,#ffc39c'

    -separator-style   'none'
    -opacity           '80'
    -hide-scrollbar

    # Keybindings
    -kb-cancel         'Escape,Control+g,Control+bracketleft,Control+c'
    -kb-mode-next      'Shift+Right,Control+Tab,Control+i'
)

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

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

-modi : 切り替え可能なモードを設定する(表参照)。モード切替キーを押す毎に、指定した順で切り替わっていく。 -show run とすることで最初にアプリ一覧を表示する。

モード リストの内容
window 全ウィンドウ
windowcd カレントデスクトップのウィンドウ
run 実行可能なアプリ一覧
drun デスクトップエントリをもとにしたアプリ一覧
ssh .ssh/config に記述のあるssh接続先一覧
combi -combi-modi オプションで設定したモード

-combi-modi : combiモードで一緒くたに表示させるモードを指定する。この場合はウィンドウ一覧(window)とアプリ一覧(run)を一緒に表示する。

-font : フォントはとりあえずディストロにあわせて Ubuntu を指定しているのだけれどなんでもいい。細身でプロポーショナルな書体を大きめのポイントで指定するとかっこいいだろうし、あえてモノスペース系を指定するのもいいかもしれないし。

-width : ウィンドウの幅を指定する。数字が100以下の場合は左右幅のパーセンテージを、100を超えるとピクセル数を、0未満(マイナス)の場合はキャラクター桁数を示す。

-padding : ウィンドウ内のマージンピクセル数。

-lines : プロンプトをのぞいた表示行数。

-opacity : 透過率を指定、100で無透過となる。

-color* : カラースキームは ここ にいくつかあるのでそれを参考にした。

-kb* : Emacsライクに C-g でもキャンセルできるとありがたいのでキーバインドも設定した。ついでなので Vimライクに C-[C-c にも。また、 C-i にはモードの切り替えをあててある。

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

rofi_customized_combi.jpg

ウィンドウとアプリの一覧が混在したリストになる。

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

rofi_launch.sh -show window

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

rofi_customized_window.jpg

ポップアップを C-; にあてる

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

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

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

rofi_shortcutkeydialog.jpg

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

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

補足

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

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

改訂

[2016-07-20 Wed] スクリプトファイル名に拡張子つけた

スポンサードリンク

コメント

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