ほぼ中立ブログ

少しだけ趣味に偏った雑記ブログ

Guakeがexitでフリーズするので解決策と代替アプリを探した件

キーボードからさっと簡単に呼び出せるドロップダウン型のターミナルGuakeを愛用していたのですが、Ubuntu 18.04 LTSにしてから、exitで端末を閉じようとするとフリーズするようになってしまいました。

まぁ、Guakeの特性上基本的に端末は開きっぱなしでOKなので、気をつければよいだけなのですが、つい他のターミナルエミュレータと同じくCtrl+Dで終了しようとしてしまい、フリーズしてストレスを募らせるという精神衛生上良くない状況に陥っていました。

というわけで、Guakeのフリーズを解消する方法を探したのでそのまとめです。あと良い機会なので、ついでにGuakeっぽい使い方ができる他のターミナルエミュレータも調べてみました。

書いておいてなんですが、最新版では既にこのバグは解消されているようで、そのうちリポジトリにもアップデートが来るような気もします。

解決手順

同様のバグ報告が既に上がっており、アッサリ解決法が見つかりました。こちらです。要するに「Githubにコードの修正箇所が載っているからそれと同じようにしたら直ったぜ」とのことです。。私はこの方法で直りましたが、一応システム側のファイルを変更することになるのでバックアップを取るなど自己責任でお願いします。

問題のコードは、/usr/lib/python3/dist-packages/guake/guake_app.pyにあります

        log.debug("Terminal exited: %s", term)
        if libutempter is not None:
            libutempter.utempter_remove_record(term.get_pty())
            self.delete_tab(self.notebook.page_num(widget), kill=False, prompt=False)

となっている箇所の、最終行のインデントに問題があるらしいので、その部分のインデントを一段階下げ

        log.debug("Terminal exited: %s", term)
        if libutempter is not None:
            libutempter.utempter_remove_record(term.get_pty())
        self.delete_tab(self.notebook.page_num(widget), kill=False, prompt=False)

のようにします。Githubでは1435行目となっていましたが、私の環境では該当箇所は1420行目にありました。

変更を保存した後Guakeを再起動させると、exitを打ってもフリーズすることなく画面が閉じるはずです。

代替アプリ

直ったので良いのですが、一行だけの変更で直るバグが結構長い間リポジトリで放置されているのがどことなく不安なので、類似のターミナルエミュレータも探してみました。

色々あったような気もしますが、この記事を書いている現在覚えているのは1つだけです(笑)。

それがtilixです。画面分割等の豊富な機能を揃えており、かつキーボードから簡単に呼び出せるようなので、今後困ったらこれを使おうと思います。

使い方はこちらの方の記事を参考にさせていただきました。

mumeiyamibito.blogspot.com

公式のリポジトリにあるのでUbuntuならインストールはaptで一発です。

sudo apt install tilix

tilixにはQuakeモードというものがあり、こちらのモードではドロップダウン型のターミナルのように使えます。

Quakeモードで起動するコマンドは次のとおりです。

tilix --quake

とはいえ呼び出すたびにこのコマンドを打つ必要があり、このコマンドを打つためのターミナルはどうするんだという鶏卵問題のような事態が発生するので、便利に使うためにはGnomeのキーボードショートカットに上のコマンドを登録するなどの必要があるかと思います。

私はタイル型ウィンドウマネージャのi3を使っていますので、configファイルに次の行を追記してF1でいつでも呼び出せるように設定しました。

bindsym F1 exec --no-startup-id "tilix --quake"

使用感は、Guakeより若干重いかなという程度、画面分割を使いこなせればこちらも重宝しそうです。

最後までお読みいただきありがとうございました。