私のLinux環境を晒す(自慢)

hyprlandとかぁ

my desktop

dotfilesはこちら(GitHub)

基本的にパクっていただいて結構ですが、fastfetchなどの設定はMITライセンスのもの(人の)を流用してるのでLICENSEの表記が必要なことがあります。

OS: NixOS

友人やTwitterで強く勧められ使ってみたら案外楽だったので。

基本的に手間をかけたりしたくないのと、自分の記憶と作業の精度を信用してないので再現性のあるシステムは相性がいい。

Archなどのようなハックして云々するよりは、計算機として抽象化されたものを使える感?がいいです。

設定はだいたい以下の構成で、NixOS(+ homemanager), Linux + Standalone nix, or macOS(nix)といった感じ。最近はmacOSのサポートをサボっているので、rebuildに失敗する。

dotfiles
├── flake.lock
├── flake.nix
├── 󱂵 home
   ├── alice.nix # mac向け
   ├── common_user.nix # どっちも
   └── seli.nix  # linux向け
├── hosts
   └── desktop
       ├── configuration.nix
       └── hardware-configuration.nix
└── modules
    ├── common.nix
    ├── desktop.nix
    └── thinkpad.nix

正直nixの記述面でのコストは全てAIで踏み倒したため、私はほぼnixという言語は書けない。

まあ使えてるので良し。

エディタ: Neovim(lazy.nvim)

neovim config

1年弱前くらいから始めた。理由はカッコいいから。普通に慣れれば楽でvimがないエディタが嫌いになるくらいには馴染んだ。ただ惰性で使っているのでマクロとかよくわからないし、未だにpluginを作れる気はしない。

vscode -> nvim -> helix -> nvimといった感じで、一瞬helixを使ってやっぱりvimが欲しくなり戻ってきた。

このhelix -> nvimの過程でいくつかnvimに逆輸入した機能があり、

左がfzfなfile picker, 右がlspの一覧。どちらの似たUIで操作できるのでスイッチコストが低め。lsp経由のcode actionsなども似たUIなので楽。

snacks.nvim file piker on nvim#medium lsp on nvim#medium

Window Manager: Hyprland

hyprland config

みんな大好きなHyprlandです。選定理由としては

くらいです。

個人的に好きなカスタムをいくつか

waybar

ぶっちゃけ書いたのはほぼAIですが、好みに仕上げてます。waybarは文字ベースなのでアイコンはnerd fontsのiconを使ってます。kittyかわいいね。イメージはネオン管。

これはBarで細長くてスクショに入らないので切って並べてますが、上からleft, center(正確には温度計以降がright), rightになってます。特にrightのシステム系はそれぞれhyprlandのfloating windowでkittyを起動して適切なTUIが動くようになってます。4

waybar

キーボードだけのウィンドウ リサイズ

hyprlandにはsub mapというものがあり、特定のモードによってキーバインドを変更出来ます。

そこで私はSUPER + Rでresizeモードに入り、hjklでウィンドウをリサイズできるようにしています。

rofiにいろいろ集約

デスクトップでは様々なものを選択しますが、それぞれが別のUIでは面倒です。そこでrofiのdmenuモードを使って色んなことを同様のUIで操作できるようにしています。

左上からapp launcher, clipboard history, コマンドパレット, 即時lockとかlogoutとか。パレットはキーバインドにするほどじゃないやつとか。

lau#medium lau#medium lau#medium lau#medium

ターミナル: kitty

特別に理由もないですが、nix手入れやすい & linuxで使いやすいを求めると自然にこうなった感じ。tab機能くらいしか使ってない。強いて言うなら独自のプロトコルでエスケープシーケンスで文字サイズを同一バッファー内で変更できるので、presentermなどとの相性が良いというのもある。

Shell: Zsh

bash互換強めでabbrが使えるとなると割と妥協点。対話だけならfishもいいけど、たまに互換性とかで面倒になるので結局zshに。

壁紙制御: awww + wlmstr(自作)

waylandの壁紙を制御するツールは多いですが私はなんとなくでawwwというツールを使っています。

使い方はごくシンプルでawww-daemonを起動した後に、awww img <path/to/img>で壁紙が適用されます。しかしawwwにはディレクトリから写真を選ぶとか、スライドショー的な機能はなく前まではbash scriptでどうにかしていました。

ただスライド用のディレクトリの切り替えなどの機能が欲しくなって来て、bashで書くのが限界になったため、Rustで同様のツールを書き直しました。wlmstr

やってることはごく単純で、現在のフォルダパス、現在の背景画像パスをXDG_DATA_HOME/wlmstr/data.jsonに保持して、適切なawwwを実行するというラッパーです。それをsystemd --userで定期的に実行することで自動スライドショーにしてます。

一応ファイルが動画系ならmpvpaperという動画を背景にするやつで起動します。私は重いのであんまり使いませんが。

ハード: ThinkPad

特にこだわりはない。USレイアウトのラップトップを国内で調達できるのがMacbookかThinkPadか、くらいか感じなので… (DELLもあったかな?) 強いて言うならもっと輝度が高くまででるマシンにすればよかったとは。窓が近いとつらい。300nitsがMAXなので。

編集履歴

Footnotes

  1. Neovim toggle-term内のスペースが重い

  2. 他にもいろんな便利機能(statuscolumn, indent guides, etc…)があって便利。細かいpluginsを吸収してくれる

  3. /foo/index.tsじゃなくて/foo/foo.tsとかにしたくなるっていう。pickerでもディレクトリ命も検索対象だけどファイル名で絞れたほうが楽なので。

  4. 左から温度: btop, 音量: wiremix, BT: bluetui, Net: nmtuiが起動する。