Windows セットアップ備忘録
Lenovo IdeaPad Flex 550 を頂いたので Windows 11 環境を整えるためにしたことをまとめる。
デバイス名
Passiflora(トケイソウ、パッションフラワー)にした。デバイス名は植物から取ることにしているので、型番から 550 に関連する植物を調べたら 550 種あるらしいトケイソウがヒットした。時計につけたくなる名前をパソコンにつけるのはどうかと思ったが、他に探すのも大変そうなのでこれを使うことにした。
レジストリー
コンテキストメニュー
Windows 11 ではエクスプローラーのコンテキストメニューが見づらくなっていたので昔と同じものに戻す。Shift + 右クリックでも昔のものを表示できるが、毎回そんな事やっていられないのでレジストリーをいじる。
reg.exe add HKEY_CURRENT_USER\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32 /f /ve
便利ツール
PowerToys
PowerToys Run
Mac の Spotlight と違ってアプリケーションを勝手に探してくれない。スタートメニューにあるものは見てくれるようなので、PowerToys Run から起動したいアプリケーションはショートカットを"C:\ProgramData\Microsoft\Windows\Start Menu\Programs"に作る。
FancyZones
Windows 11 にもともとあるウィンドウのスナップはありえん使いにくいので無効化して、代わりにFancyZonesを使う。FancyZones の設定のWindows スナップのオーバーライドをオンにすると Windows + ↑/↓/←/→ でウィンドウを動かせるようになって快適になる。
Keyboard Manager

VK 244は半角/全角で、このキーを無効化している。IME のオンオフ切り替えはは Google 日本語入力の設定で変換、無変換をIME を有効化、IME の無効化に割り当てている。
¥はキーボード右下のろのキーで、Shift なしでアンダーバーが入力されるように設定している。Mac では Shift なしでアンダーバーを入力できて便利だったため、Windows でも同様の挙動をするようにした。再マップで左 Shiftを使った設定にしていると、左 Shift を押しながらアンダーバーを入力したあと、Shift を押したまま英字を入力すると小文字になってしまう。これを避けるために右 Shiftを使うように設定してある(打ち初めから終わりまで左 Shift を押しながらABC_DEFと入力したとき、ABC_defとなってしまう)。
Greenshot
スクリーンショットに使うアプリケーションはもとから入っている Snipping Tool でも良かったが、選択範囲の撮影とウィンドウの撮影を切り替えるときにマウス操作が必要なのが面倒だった。指定したモードで起動できるならそれぞれショートカットを割り当てようと思ったが、それはできなそうなので別のアプリケーションを使うことにした。
Snipping Tool のクリップボードにコピーしつつファイルにも保存できるのが体験良かったため、同じことができる Greenshot を使う。
選択範囲の撮影とウィンドウの撮影にそれぞれショートカットを割り当てている。デスクトップ全体のスクリーンショットは Windows 本来の Windows + PrtScr で十分なので Greenshot は使わない。

AltSnap
後述の端末のタイトルバーを非表示にしていてウィンドウの移動ができないので、タイトルバー以外でも掴んで移動ができるようになる AltSnap を入れる。
開発環境
基本的には WSL を使い、Windows 環境では開発しない。
環境変数
WSL の中からも使いそうな環境変数をWSLENVに入れて見えるようにしておく。
setx.exe WSLENV APPDATA/up:USERPROFILE/up
WSL
$USERPROFILE/.wslconfigを作成編集する。
[wsl2] memory=4GB swap=8GB [experimental] autoMemoryReclaim=gradual sparseVhd=true%
ディストリビューション
Arch Linux を使う。
systemd
/etc/wsl.confで systemd を有効にする。
[boot] systemd=true
有効にはなるが、サービスの開始にしばらく時間がかかる。acpidとsystemd-networkd-wait-onlineが原因みたいだったので無効化したら正常に動くようになった。
sudo systemctl disable systemd-networkd-wait-online.service
端末
Alacritty を使う。WezTerm とどっちにするか迷ったが、WezTerm は Alacritty に比べてメモリー使用量が多かったのと、アンダーカールが正しく表示されなかったため Alacritty にした。とはいえ、WezTerm が Lua で設定をかけるのは魅力的なので今後の更新次第で乗り換える可能性はある。
設定でタイトルバーを非表示にしてみたが、端末が広く見えて気持ちいいし、スクリーンショットを撮るときも余計な情報が入りこまないのでなかなか良かった。
端末起動時に WSL を起動して tmux にアタッチする。デタッチや終了したときに端末が終了しないように Zsh が起動するようにもしておく。
[shell]
program = 'C:\Windows\system32\wsl.exe'
args = [
'--cd',
'~',
'--distribution',
'arch',
'--exec',
'/bin/zsh',
'-c',
'"tmux new -A && exec zsh -i"',
]
アンダーカール対応
アンダーカール表示のために下記リンクからconpty.dllとOpenConsole.exeをダウンロードし、Alacritty の実行ファイルがある場所に突っ込む。
Windows Terminal を自分でビルドして該当ファイルを持ってきてもいいと思うが、Visual Studio と関連コンポーネントのインストールに時間がかかるし、吐かれたエラーの解決が面倒だったので諦めた。
README に書いてあるとおり、そのうち不要になるかもしれない。
これで tmux の外ではアンダーカールが表示されるようになったが、tmux 上では表示されないため tmux の設定もいじる。
set -g default-terminal 'tmux-256color' set -ga terminal-overrides ",xterm-256color:RGB" set -ga terminal-features ",*:usstyle" # Enables underline color set -ga terminal-overrides ',*:Setulc=\E[58::2::::%p1%{65536}%/%d::%p1%{256}%/%{255}%&%d::%p1%{255}%&%d%;m'
ゲーム
グラブル
SRWare Iron 105 を入れる。
ブラウザーの横幅制限を解除するために、chrome.dllの0138193Cから01381942をBA 40 01 00 00に変える。
グラブル ブラウザ横幅制限解除
— Nocrew (@nocrew_) 2023年12月26日
対象/SRWare Iron ver: 105.0.5350.0
ブラウザ横幅制限で発生する画面右側余白の消去に必要なIron内のchrome.dllバイナリ値変更箇所
01 CD [39 F2 0F 4E D6] 85 ED(初期値500px)
01 CD [BA 40 01 00 00] 85 ED(変更後320px)
01 CD [BA 5E 01 00 00] 85 ED(変更後340px) pic.twitter.com/G5WGwvJF2J
次のフラグを変える
- Enable にする
- chrome://flags/#ignore-gpu-blocklist
- chrome://flags/#overlay-scrollbars
- chrome://flags/#enable-quic
- chrome://flags/#enable-gpu-rasterization
- chrome://flags/#enable-experimental-web-platform-features
- chrome://flags/#enable-zero-copy
- chrome://flags/#enable-parallel-downloading
- Disable にする
- chrome://flags/#tab-groups-save
- chrome://flags/#tab-hover-card-images
- chrome://flags/#calculate-native-win-occlusion
ベアリポジトリーの設定とpushフックでデプロイの備忘録
本題
ベアリポジトリーやgitのフックに関しては別で調べてください。
gitユーザーの作成
server $ sudo useradd -s /usr/bin/git-shell git server $ sudo mkdir /home/git/.ssh server $ sudo chown -R git:git /home/git/.ssh server $ sudo chmod 700 /home/git/.ssh server $ sudo chmod 600 /home/git/.ssh/authorized_keys # 公開鍵を設置
ベアリポジトリーの作成
server $ sudo mkdir /opt/git && cd $_ server $ sudo mkdir project.git && cd $_ server $ sudo git --bare init server $ sudo chown -R git:git /opt/git/project.git
クライアントのリポジトリー
# 新しく作る場合 client $ mkdir myproject && cd $_ client $ git init client $ git remote add origin git@gitserver:/opt/git/project.git # 既存のものを clone する場合 client $ git clone git@gitserver:/opt/git/project.git
post-receiveによるフック
server $ sudo vim /opt/git/project.git/hooks/post-receive server $ sudo chmod +x /opt/git/project.git/hooks/post-receive
hooks/post-receive
#!/bin/sh cd /var/www/project git --git-dir=.git pull
クライアントでpushしたときに自動で公開用ディレクトリーでgit pullしてくれます。
実際には、ブランチ名を見てproductionだった場合だけpullしてセットアップスクリプトを動かしたりするのがいいんでしょう。
post-receiveの出力はクライアント側に出力されるのでエラーが起きてもちゃんと気づくことができて安心。
関係のない話
bare /bɛə(ɹ)/, /bɛː(ɹ)/ (UK)
bare repository でのbareは以下の意味でしょう。
Adjective
1. Minimal; that is or are just sufficient.
bare - Wiktionary
bare は ME: bare, bar 、OE: bær と遡れるように古英語由来の単語です。PG: *bazazですが、Old Frankish、OF: *bar, baraigne, baraing を経由して ME: barain, barein、ModE: barrenと入ってきています。barren は形容詞として「不妊の」、「不毛の」、「植物が実をつけない」、「愚かな」というような意味があるようです。フランス語は💩。
参考
Git - サーバーのセットアップ
bare - Wiktionary
Reconstruction:Proto-Germanic/bazaz - Wiktionary
bréhaigne - Wiktionary
barren - Wiktionary
語源が同じ2つ以上の単語
- Proto-Germanic: *skurtijǭ
ここにいっぱい載ってた https://en.wikipedia.org/wiki/Doublet_(linguistics)#English
Public StreamsによるUser Streamsの代用を考える
背景
先日、User Streams(とSite Streams)の廃止日が公開されました。
今年4月にご紹介したAccount Activity APIやDM関連の機能などアップデートしました。詳細は以下ブログをご覧ください。
— Twitter Dev Japan (@TwitterDevJP) 2017年12月19日
https://t.co/pha807b7es
User Streamsが廃止されると多くのサードパーティ製クライアントで使用されている、自動で流れるTLが使用できなくなります。 新しく実装される、Account Activity API(Beta)ではTLの取得はできないようです(未確認)。
廃止されないPublic StreamsでUser StreamsによるTLの取得の代用ができないか考えてみました。
TLを取得して表示する(PHP)
Twitter APIライブラリには@mpywさんのcowitterを使用させていただきました。
Public Streamsは非鍵アカウントのツイートをすべて垂れ流しにしているものなので$client->streams()の第三引数に自分のフォローしてるアカウントのidを指定してフィルタリングします。
ただし、そのままではフォローしているアカウントに対するフォローしてないアカウントのリプライやRTが表示されてしまうため、コールバック内の!in_array($status->user->id_str, $ids)でフォローしていないアカウントは弾いています。
これでUser Streamsのタイムライン取得とほぼ同等のことが行なえました。 しかし、いくつか問題点があります。
問題点
- 5000アカウントまでしかフィルタリングできない。
- 鍵アカウントのツイートは取得できない。
フォローが5000人未満の場合は1つ目は問題になりません。しかし、鍵アカウントのツイートは取得できないため別の方法を探る必要がありそうです。
湯釜と毛無峠に行ってきた
群馬県の草津白根山にある湯釜と長野県高山村にある毛無峠に行ってきました。

2日ほど前に降雪があったらしく雪が少し残っていました。
西側の遊歩道から展望台へ向かいました。
遊歩道入ってすぐの場所からの弓池。

8合目地点からの眺め。 普段全く運動をしていないのでここまで上がってくるだけで息切れ。
— へきしん (@Hexium310) 2017年11月7日
右奥には北アルプス。
中央から左下に見える建物は万座の温泉街みたい。
万座の温泉街は日本一標高が高い温泉街だそう。
万座は毛無峠に行く途中で通ったけど温泉には行きませんでした。
少しの間景色を見ながら休憩して上の展望台を目指しました。
8合目からはあと100mほど。
湯釜、到着!

湯釜(ゆがま)は、直径約300m、水深約30m、水温約18℃の火口湖である。pHが1.0前後であり、世界でも有数の酸性度が高い湖と言われている。(中略) 湖水は白濁した青緑色をなしており、水に溶け込んでいる鉄イオンや硫黄などの影響で特定の波長の光が吸収されてこのように見えると考えられている。 草津白根山 - Wikipedia
エメラルドグリーンの湖が白い雪や綺麗な青空とあわさってすごく良い!
上から pic.twitter.com/m9NGOhkKRl
— へきしん (@Hexium310) 2017年11月7日
とても綺麗な景色を堪能したあとは毛無峠へ向かいました。

……

万座を越えて毛無峠への交差点を曲がり、長野県高山村の看板が見えてすぐ、道路が雪に覆われていました。 ノーマルタイヤだったので引き返そうかとも思ったけどこの雪で狭い道で方向転換出来る気がしなかったので慎重に進みました。 今まで一番慎重に運転したと思う。
このあと雪が積もってたり積もってなかったりを繰り返しながら暫く進み、毛無峠に到着。

駐車スペースの辺りはだいぶ開けていました。 自分が歩く音と風の音くらいしか聞こえなくてすごく静か。
毛無峠 pic.twitter.com/IBKP1pjHg8
— へきしん (@Hexium310) 2017年11月7日
よくネタにされる画像の奥にも道は続いています。この下には45年ほど前まで硫黄を採掘していた小串鉱山と集落がありました。今回は行かなかったけど駐車スペースには何台か車が止まっていたので向かった人がいるのかもしれない。
地面がぐちょぐちょだったので早々に切り上げ、来た道を戻って、今度は渋峠に向かいました。
道中

国道最高地点からの眺め



8月末に行ったときはガスってて全然景色が見られなかったけど今回は晴れていてよかった。
(8月末)
ガスガス pic.twitter.com/S1vqnAYDXL
— へきしん (@Hexium310) 2017年8月28日
群馬・長野の県境にある渋峠ホテルはがっつり積もってました。
つもってないとこんな感じ
ぐ¦な
— へきしん (@Hexium310) 2017年8月28日
ん¦が
ま¦の pic.twitter.com/EEcRDcD8YE
その後そのまま長野県中野市まで行き軽井沢を通り高崎に帰りました。 中野市から軽井沢が思ってたより距離があってアホなことをした。
今回は快晴でとても気持ちよくて最高でした。

走行距離: 28567 - 28277 = 590km
Twitter 引用ツイート時の通知
結論
引用ツイートをするときにhttps://twitter.com/{screen_name}/status/{id}のscreen_nameをスクリーンネームに使用できない記号を含めると通知が行かない。
詳しく
指定するscreen_nameがツイート主のものでなくとも元のURLにリダイレクトされる。
このとき、スクリーンネームに使用できる[0-9a-zA-Z_]のみの場合URLで使える2083文字に収まれば(おそらく)何文字であっても引用の通知がされる。
使用できない記号が含まれていた場合にはツイートの表示はできるが通知は行かない。
例
通知が行くパターン
- https://twitter.com/Hexium310/status/902071792189095938 (元のURL)
- https://twitter.com/twitter/status/902071792189095938
- https://twitter.com/home/status/902071792189095938
- https://twitter.com/aaaaabbbbbcccccddddd/status/902071792189095938 (本来スクリーンネームには使用できない長さ)
通知が行かないパターン
- https://twitter.com/Hexium310-/status/902071792189095938
- https://twitter.com/-/status/902071792189095938
- https://twitter.com/!/status/902071792189095938
まとめ
鍵垢のツイートを引用したいときにスクリーンネーム変えれば誰だかわからないし記号つければ通知も行かないしよさそう



