M75q-1 tinyを買った

パソコンを買いました。

よく見ると製品名を間違えている

最近巷で噂のコスパが良いPC買った。新しいマシンはThinkpad X260以来だけど、買ってもらったときは学生身分で持ち歩くラップトップを買うだけのお金がなかったので親に買ってもらっていた。自分で購入するのは高校生のときお年玉で自作PCを組んだとき以来なのでだいぶ久しぶりだ。
ポチってから二週間前後で届いたと思う。この状況下でも物流自体にそこまで大きな支障はないんだな、という謎の関心をした。

噂の手順通りメモリと記憶領域+αを最小構成にし、amazonで500GB SSDと16GB*2メモリを買って換装した。2つ合わせても20kちょっとなので合計55k程で収まっている。おかしい。

最小構成のSSDは2.5インチのものではなく、かつ買ったものは2.5インチのものなので入っていたWindowsはとりあえずそのままにした上でUbuntuをインストールした。Archあたりとも迷ったけれど、aptが好きなのでUbuntuにした。バージョンは18.04か20.04で迷ったけれどここは20.04を選択。まだベータなので信用しきれない部分はあるが、今から18.04入れるのもなんかなあと思ったので。

デスクトップはGNOMEをやめi3wmをインストールするようにした。
X260のときは何回かチャレンジしていたが、i3起動時にGNOMEとのキーリングの連携がうまく行ってなかったのかVivaldiの認証情報をすべてふっ飛ぶ上にGNOMEに戻っても吹っ飛んだままという悲しい状況になってしまうので本格運用できずにいた。戻らなければ本格運用できるのでは?と言われればそれはそうなのだけれど、GNOMEのリッチさからいきなりi3wmに行くのはいろいろ厳しさがある。
とかいろいろ事情があって使っていなかったのだけれど、クリーンな環境で認証情報もクソもないし、使いづらかったらX260に戻ればいいでしょという気楽な環境で地道に環境を整備した結果、使えるようになった。認証がおかしい問題もPAMあたりの設定をいじったら治った。

その他環境はステータスバーはconky、ブラウザはVivaldi、エディタはvscode、ターミナルにHyperなど。そのへんに面白みはない。

ところで同じワークスペースをキーボードで選択したときにワークスペース内のウィンドウを循環させたくてシェルスクリプトを書いてみた。

#!/bin/sh

workspace_name=$1
current_workspace_name=$(i3-msg -t get_workspaces | jq -r '.[] | select(.focused == true) | .name')

if [ -z $2 ]; then
	grep_op=A
	fallback_command=head
else
	grep_op=B
	fallback_command=tail
fi

if [ $workspace_name = $current_workspace_name ]; then
	current_window_id=$(xdotool getactivewindow)
	window_ids=$(i3-msg -t get_tree | jq -r "recurse(.nodes[]) | select(.type == \"workspace\" and .name == \"$workspace_name\") | recurse(.nodes[]) | select(.type == \"con\" and .nodes == []) | .window")
	next_window_id=$(echo "$window_ids" | grep -$(echo $grep_op)1 "$current_window_id" | grep -v "$current_window_id")
	if [ -z $next_window_id ]; then
		next_window_id=$(echo "$window_ids" | $fallback_command -n1)
	fi
	i3-msg "[id=$next_window_id] focus"
else
	i3-msg workspace $workspace_name
fi

(最初gist貼ったがうまく表示されないので直接貼り付けた

シェルスクリプト、なんだかんだどこでも使われていて出会う頻度が異様に高い割には真面目に覚えようとした試しがない。文法の癖が強いし記号も多めであまり手に馴染むものではないように思う。が、一つのことを上手くやるという哲学やら思想は結構好きで、パイプでゴリゴリつないで処理をしていくコードは苦戦しながらも書くこと自体は楽しかった。i3wmもデスクトップを操作するためのコマンドはしっかり備えているのでその操作に苦戦することもなく、コマンド一つでデスクトップの様子が変わっていくのは見ていて楽しい。

上記シェルスクリプト、よくある同じアプリケーションのウィンドウはまとめて表示するタイプのUIで選択済みだとウィンドウが切り替わる操作を模して実装した(第二引数をつけると逆周りになる)。i3wmは標準で$mod+カーソルキーで同じようなことはできるが、こちらはワークスペースを横断してしまうので十分差別化はできているだろう。多分。コード見ればわかるけどjqxdotoolに依存している。jq上手く扱うのも苦戦したけどものとしては便利。ちなみに当たり前だがConky上に表示されているワークスペースボタンを連打しても機能しない(そもそも別ファイル設定だとは思うが)。ただでさえ情報が少ないしクリックして使うことは稀なのでスルーした。
シェルスクリプト自体はなぜかvimで記述した上にコマンドラインオプションを動的にするのとかがよくわからなくて$()やらechoとパイプを駆使した稚拙感満載なコードではあるのでよくみちゃだめ🙈。

i3wm、タイル表示が強いと言われいている。操作一つで2分割に勝手に配置を適宜変えてくれるタイル表示はもちろん便利だが、FullHDディスプレイだとせいぜい2分割、3分割が限界でこれ以上の分割はあんまりしようと思わないので機能としては少々持て余している。それよりもワークスペースごとにタブという概念が降臨させていることのほうが個人的には魅力なのでは思っている。他のデスクトップシステムでも恐らく同じシステムは当たり前にあるだろうが、GNOMEのときはそもそもワークスペースを使わずとも上手くウィンドウを切り替えられていた(というよりワークスペースを使うことのほうが煩雑に感じていた)。ので、そもそも他の事情をあまり知らないが、ワークスペース内に異なるアプリケーションをキーボード操作でスムーズに切り替えることができるのは大変便利。
分割はFullHDよりも解像度が大きいWQHDや4Kで活きそうだ。4Kモニターが欲しくなったが最近出費がやばいのでとりあえず今は慎む。

だいぶ話が逸れたがM75q-1 tinyの環境は思った以上に便利になってしまった。この状況下なので仕事は原則リモートだし、一気にX260の出番が減ってしまった。状況が良くなれば出社は積極的にするつもりだし、そのときはX260もまた持ち歩くようになるだろうけれど、この快適な環境からX260に戻れるかは心配だ。今でも十分戦えるスペックではあるけれど、快適さ自体の差はどうしても出てしまうので…。