タオルケット体操

サツバツいんたーねっと

試行錯誤を経てMacからLinuxへの移行が完了した

ここしばらく、Macのいいところが薄れ、初期不良やOSの不安定さなど悪い点が目立つようになっているからなのかなのか、あるいはMacBookのパクリにとどまらないラップトップが増えつつあるからなのか、徐々にMacをやめてLinuxへと移行するプログラマーが出てきたようにおもえる。 僕としてもAppleが見ている方向性などについて色々と考えていたこともあり、ぼちぼちMacの次の選択肢をみつけたほうがいいかなと考えていた。そんな折に会社のマシンを買い換える機会があり、Dockerを使っていることや移行コストに関わる自身の生産性などを考えて(最近クールなWindowsも検討したのだが)Linuxを会社のメイン環境にすることに決めた。

僕がMacで主に使っていたアプリケーション

  • iTerm2

  • Vim(Neovim)

  • GoogleChrome

Macである必要なくね? とよく言われていたが、まぁ概ねその通りで僕が数年前にLinuxからMacへ移行した理由はいちいちOSをインストールしてから環境設定をこまごまやっていくのがめんどくさかったからというのと、フォントがキレイだったからだ。
なので昔の環境に戻るのに大した苦労はないとたかをくくっていた。

LinuxデスクトップはMacOSと比較していいクオリティではない

ツイッターアカウントをフォローしているとわかるかもしれないが、買い替えて移行の僕のLinuxに関するつぶやきはすべてLinuxデスクトップへの愚痴である。
薄々予感してはいたのだが、Linuxデスクトップ全然使いやすいよというのはあからさまな嘘で、かなりの日数を調整に費やすことになってしまった。

自由を信奉するのは素晴らしいことだけども、やはり一貫した思想なしで作られたプラットフォームというのは統一性にかけており、適当にWindowsとMacの操作性をつまみ食いしているようなそのユーザビリティの程度は推して知るべしといったところであった*1。またこれは厳密にはLinuxの問題ではないのだが、やはりハードウェアメーカーとの連携がとれていないというのは痛い。デフォルト状態ではスクロールするたびに酷いティアリングが発生して目を破壊されるところで、それを調整するのにまた時間をとられてしまった。

とはいえ、数日を費やしてなんとかまともと言っていい操作性に調整できたといってよいだろう。そもそもXfceはいまやApplication launcherを備えているというのに、どうしてありとあらゆるキーバインドにアプリケーションのホットキーを登録する必要があるのか。

Linuxデスクトップ移行の最大の関門、キーバインド問題

MacOSX(僕はまだsierraにしていないのでOSXなのである)と比較して、これは完全にLinuxが劣っていると断言していいものが一つだけある。それはキーボードショートカットの設計だ。
MacOSXというと画面の綺麗さがどうとかジョブズの息吹がどうといった話ばっかり出てくるが、⌘キーの導入と、それを最大限にいかしたキーボードショートカット設計によって、マウスを触らなくていいどころか、ほとんどホームポジションから指を移動させることなく日頃の操作を完結させることができる。最初はインストールがめんどくさいという雑な理由でMacを選んでいた僕だが、これに気がついてからは積極的にMacを使うようになった。

それに対してLinuxであるが、僕はUnixの歴史的な事情は詳しくない。だが恐らくCtrl+CというのはCUIでは古くから存在しているキーボードショートカットだろうと推測できる。そしてCtrl+Cは、WindowsのGUI上ではコピーのショートカットでもある。LinuxはこのWindowsの動作をデスクトップで何も考えずにポートしてきてしまった(想像です)。
これによって生じるコンフリクトを避けるために、Linuxの端末はCtrl+Shift+Cがコピーという変則的なキーボードショートカットを採用していることが多い。いくつかの端末はキーコンフィグの変更が可能だが、Xfceにはコピペの設定は存在しない。その他の端末も幾つか試したが、TrueColorの動作が妙だったり、Quakeのようにマルチモニタ環境ではまともに動作させられない癖に強いものばかりでどうしようもない。

コピー・アンド・ペーストという、恐らく現代の子供であれば小学校の授業で一番最初に習っていてもおかしくないキーボードショートカットですらこういう有様なので、ホームポジションから指が外れるたびに苦痛を感じる僕のような人間は、カスタマイズに熱中して仕事が手につかなくなってしまうのだ。

またOSXではCocoaキーバインドといって、Excelなど一部の特殊なソフトをのぞいて全てのアプリケーションでEmacsスタイルのキーバインドを使うことが可能となっている。つまりMacにカーソルキーやDeleteキーは不要なのである。Escapeじゃなくてあいつらを消し去れば良かったのに……
GunomeなどではKeyboardTheme?というような設定があり、そこでEmacsモードというのを設定できるのだが、当然普通のソフトはそんなものを完全に無視してWindows風のキーバインドを採用しているためコンフリクトを起こして死ぬ。例えばChromeの場合、普段はCtrl+wでタブを消すことが可能だが、テキストボックスにフォーカスがあたっているとその動作はとられてしまい、あろうことかマウスでタブを閉じるという原始的行動を強いられることとなる。ありえないほどのカロリーの無駄である。
あるいは、GitHubのようなJavaScriptを採用しているサイトの場合、Ctrl+kやCtrl+bが奪われてしまい、筆者はストレスで死ぬ。Slackも同様だ。JIRAやStackOverflowなどのクソと違い、前者2つはMacで操作している限りはCocoaキーバインドを奪うような真似をしないため、恐らくは非マックユーザーを小馬鹿にしてこういった小細工をしているものと推測できる。後者2つはMacも端末も使ったことがないのだろう。

Macという快適な環境で飼いならされた筆者は、ChromeやFirefoxのキー設定を探したり、心を無にして慣れようと試みたりしたのだが、非効率なものに慣れると最悪死ぬ可能性があるので頑張った。

Xremapという最強のキーリマッパー

MacにはKarabinerというやたら機能豊富な素晴らしい、でもAppleの気まぐれで死んだ最高のツールがあるのだが、それに機能を似せるような思想で作られたのがxremapというか僕が想像していた以上にLinux界隈ってめちゃくちゃなんでも設定させるくせにキーバインドの設定できないことおおすぎねぇ? みんなめっちゃマウス使うのか、逆に誰もLinuxデスクトップなんて使わないかのどっちかなんだろうなとか想像している。

ともかく、xremapというX向けのキーリマッパーは、素晴らしいことにSuperKey(⌘やWinキーのこと)を使ったコンビネーションの設定が可能なので、Emacs風とWindows風のコンフリクトを避けた独自のカスタマイズができるのだ。素晴らしすぎる。

github.com

正直、キーバインド問題がクソすぎてLinuxデスクトップは諦めてMacからSSHでつなぐようにしようにしてLinuxのGUI環境をディスりまくる日記を書こうかと考えていたくらいなので僕のSNSライフをも救ってくれたと言って過言ではないとおもう。

Emacs風のキー操作をしつつ、⌘(あるいはWin)キーという親指に近い特等席にいながらにしてWindowsやLinuxではほとんど活躍の場面がない産廃を再生するリマップを公開したので興味がある人は参考にしてほしい。 dotfiles/.xremap.conf at master · hachibeeDI/dotfiles · GitHub

ちなみにexample以下にsystemdのconfigが入っているので適当に調整して自動で立ち上がるようにすることをおすすめする。

Linuxのいいところ

実際のところ、Linuxデスクトップが久しぶりなだけでLinux自体はSIerをやめて以来ずっと仕事で使っているのですこぶる快適である。
また、Macの場合や十万円ちょいではMBAがせいぜいのところだが、デスクトップマシンであればi7にメモリを沢山積んでSSDモリモリにしてもお釣りがくる(もちろんモニターは別に必要だが)。何も気にせずDockerコンテナやサーバを立てまくってChromeのタブを開きまくっても良いのは素敵だねとおもいました。

正直最初からXも入れずにインストールして、MacはただSSHするマシンとして使っても良かったのではという感はあるが、この感想も一通り試して文句を吐きまくったからこそ出たものだし、こういう慣れない環境で右往左往するのも久しぶりで新鮮だったので良いことにしておこう。

最後に

僕がLinuxデスクトップを試しておきたかったのは、iPadProのCocoaキーバインドサポートが最低限以下のクソだったからで、しかもAppleからはなんとなくiOS推しの気配を感じており、つまるところかのマシンからかのキーボードショートカットが消えてしまう未来を危惧してのものでもありました。Windowsはその歴史的経緯や企業の姿勢から過去の操作性を大きく変える(しかもマニアック)ようなアップデートを入れることはないでしょうし。

僕は特定の環境にこだわって他所を否定せずにいられない人は不器用でアワレと感じるタイプです。このエントリにしても別にMacが最高で完璧だとか言うつもりはありませんのであしからず。
ちなみにこのエントリは自宅のWindowsマシン(Windows環境に慣れるためという名目で購入したゲーミングPC)で執筆されましたが、僕のブログのフォントがマジで汚くてビックリしました。「Windows10はフォントのレンダリング随分キレイになったよ」なんて言ってましたけども完全に勘違いで、4KとかのHiDPI液晶で表示しないと相変わらず酷いですね。ちなみに私の自宅の液晶はWQHDです(ゲーミング特化)。

他にも色々と壊れているので気が向いたらCSS調整します。

*1:とはいえ筆者が触ったことがあるのはGnome系列とUnityくらいだが