大学生、Windowsにおける快適な操作環境を思案
読者対象
- Windowsにおける環境構築のアイデアを得たい人
サブタイトルの順番は簡単に導入できる並びにしています。
導入
ノートパソコンが爆音ノイズ上げてフリーズしました。
容量512GBあって40GBってなんなん?そんなにもRustのcargoは重いのか?それとも『ブラックジャックによろしく』のPDFを入れたせいなのか?
・・・いえ、一か月以上も再起動しない私が悪いですね。再起動したら10GB以上も空いたんですから。
しかし、16GBのパソコンです。Visual Studio Codeを二つ起動、Vivaldiを二つ起動うち一つは動画を垂れ流し、Braveを起動、Minecraftを起動、そしてHuionと繋いでニ画面している。重くならない理由がありません。
なので、基本はターミナル操作にしたらいいのではと、いかにもアホンダラが考えそうな発想を思いつきました。
ええ、このGUI戦争時代の真っ只中に数十年前から存在する枯れた技術のCUI操作に戻ろうというのです。
要求事項
上から最優先事項です。
- SSDに環境を構築
- 軽量な動作
- 基本はキーボード操作、マウスのほうが早いときはGUI操作
- 高い互換性
- IME対応
- 快適な操作
特にSSDに環境を構築というのは、大学三年の後半から四年の前期でパソコンが壊れるという逸話[1]があるので、パソコンが壊れてもすぐに別の環境で使えるようにするためです。
ようはdotfileを作成するということです。
また、OS移植時の互換性を求めるためにソフトを厳選します。最近はWindows専用やMac専用という垣根を超えてマルチプラットフォームに対応したソフトが増えましたので。
操作感をなるべく変えないように互換性のあるソフトがいいです。
存在しなければソフトウェア自体作ってもいいですが・・・面倒くさいですね。Githubなどの普及で要求に答えられるソフトを見つけるのは簡単になりましたし。
さぁ、ここからが地獄の始まりだ!
現実の環境
この記事を拝見し、確かに現実問題もあるなと思いこの章を追加しました。いい機会ですので、現実の環境を快適にする方法を考えてみましょう。
ぬいぐるみを部屋に置く
記事の内容を読んでこれを思い出しました。たまにやっています。
喋る環境がないならこちらでもいいのかな。BGMをかける
とのことなのでいつも聴いているおすすめな曲の一部を載せます。歌詞入りのはここには載せていません。
こちらは特におすすめしたいアーティストです。
いい椅子といい机を使う
体格に合わない椅子を長時間使用していると、もちろんのこと健康被害をもたらすだけでなく、それ以上に身体が疲れる問題が発生します。
予算があるならいい椅子といい机を買いましょう。
モニターを増やす
モニターを増やすのが決定的に見やすくなります。
スマホに専用のアプリを入れたり専用の接続端子を繋いだりして外部モニター化するものいいでしょう。
デスクライトを使う
こんなフレーズを聞いたことはありませんか?「明るいところでテレビを見ましょう」。
暗い環境で明るいものを見続けていると目が疲れます。疲れを軽減するためにデスクライトで明るくしましょう。
お菓子を食べる
疲れた時に甘いものを食べたくなりますか?糖分補給をしましょう。
興味本位で買いましたが美味いです。(買ったのはグレープフルーツ味じゃなくてピーチ味ですが)動く
ずっと座るよりかは立つほうがいいです。
昇降デスクを使ったりするのもいいでしょうか。
また、ペットボトルを近くに置くのではなく、常に冷蔵庫に入れて飲みたくなったら冷蔵庫まで歩くといった具合です。また、シャワーを浴びて気分を変える人もいるようなのでいろいろ試してみたほうがいいですね。
日常的に使えるフリーソフト
日常的に使える便利なフリーソフトを挙げていきます。専門的なものは入っていません。
PowerToys
私がよく使っている機能を二つ紹介しましょう。
PowerToys Run
ランチャーソフトです。ソフトの起動はほとんどこれになりました。
簡単な計算やウィンドウ切り替えなどにも使えます。
こちらもおすすめですね。
Advanced Paste
プレーンテキストやマークダウンとして貼り付けるのに使っています。
2023年3月からOfficeでは「ctrl + shift + v」でプレーンテキストとして貼り付けられるようになったそうですが、それ以前のOfficeではできなかったので導入していました。そもそもできるようになっていたのか・・・。
QuickLook
MacOSの機能をWindowsで使えるようにしたソフト。PowerToysのプレビューが少し重いと感じるならこちらをおすすめする。 こんな方法もあるようで。
DevToys
開発者向けに作られたフリーソフトです。
詳細はこの記事を読んでください。私はこちらの記事を読んで導入を決定しました。
SumatraPDF
PDFを開くだけならこっちのほうが軽いです。
Upload Remote
Windows、Mac、iOS、Android間でファイルを転送できるソフトです。
Magpie
低解像度のウィンドウなソフトをアップスケールできるソフト。拡大などができない昔のソフトをよく使う人にはおすすめです。
Mp3tag
また、古いCDからメディアファイルを読み取ったときにアルバム情報がないときがあるので、アルバムの画像をスキャナーで読み取ったりネットから拾ったりして付けたりしています。
Rexifer
Exif情報を使用した名前の一括リネームができるソフトです。写真の整理を正規化しつつ簡単に済ませたいときに使えます。
速連くん
連打が面倒くさいときに使えるソフトです。
WizTree
ファイルのディスク占有率を確認できるソフトです。ファイルを整理したいときに使えます。
Everything
ファイルを高速に検索できるソフトです。
Windowsの見た目
ソフトの設定を行う前にWindows本体の設定を見ていきましょう。
ダークモード
Windowsと言えば白色基調のウィンドウですが、ダークモードに変更することで目の負荷を軽減できます。
設定を開いて「個人用設定→色→モードを選ぶ」からダークに変更します。
これで誰もが憧れる黒色基調のOSの完成です!
フォント
Windows標準のメイリオなどを使ってもいいですが、せっかくなのでフォントを変更しましょう。
おすすめはユニバーサルデザイン系のフォントです。読みやすいフォントは目の疲れも軽減させます。
私が使っているのはUDEV Gothic JPDOCです。
パフォーマンスオプションの視覚効果
パフォーマンスオプションの視覚効果を変更してWindowsの動きを簡略化するのもいいですね。
設定次第では動作の重さも軽減されます。
私はウィンドウ関連の動きを抑える設定で使っています。
ファイルの構造
ここに書いたら長くなったのでファイルの管理方法を考えるに書いています。
結論を書いちゃうと、保存するファイルやフォルダの命名規則は決めておこうという内容です。最初から最後までその説明が書かれた文章です。
ショートカットキー
ショートカットキーが分からない人はショートカットキーを覚えましょう。
Windowsに限らずMacやLinuxに移行したときにも使えてかつソフトウェアに依存しないショートカットですので、Ctrlのショートカットキーは覚えて損がありません。
WindowsでもMacでも言えることですが、WindowsキーやMacキーを使うショートカットも便利なものが多いです。
キー配列の変更
ショートカットの話をする前に、君は「caps lock」を存じているか─────。
古代から伝わるワープロにて小文字大文字の切り替えを担当していたキー。しかし、今やBASICを扱う人間もおらず[2]、九割方すべて大文字で英語文章を打ち込む者はいないだろう。
Googleの検索サジェストには「Cpaslock 不要」とのように表示され、現在ではお邪魔虫のような扱いを受けています。また、ゲーマーの間では「caps lock」を「左ctrl」にしちゃおうというのが現代のトレンドになっているようです。私の場合、ctrlキーが摩耗して外れましたが。
「caps lock」を「ctrl」と入れ替えてしまいましょう。
私はChgKey15を使って「caps lock」と「ctrl」を入れ替えました。また、AutoHotkeyは「caps lock」を修飾キーとして使えないので「F24」へ変更しています。
PowerToysがあるならKeyboard Managerを使って変更することもできます。
使いたい方を使いましょう。
また、キーボードの配列を思い切り変更するのも手です。
そもそもの話、広く普及しているQWERTY配列ですが、日本語を打つのも英語を打つのも非効率な配列です。
キーボード配列の考察記事があるので、興味があったら読むのもいいですね。
ショートカットキーの割り当て
さて、みなさん。さきほどのショートカット一覧をご覧になりましたか?
各OSに搭載されている極めて標準的なショートカット。しかしながら、この世にはショートカットを自作する変人もいるのですよ。
ということでショートカットを用意しましょう。AutoHotkeyを使ってショートカットを作成します。
F24 & l::Send, {Blind}{right}
F24 & h::Send, {Blind}{left}
F24 & k::Send, {Blind}{up}
F24 & j::Send, {Blind}{down}
F24 & Tab::Send, {Blind}{vkF0sc03A}
F24 & LShift::Send, {Blind}{CapsLock}
F24 & F19::Send, {Blind}{PgUp}
F24 & F20::Send, {Blind}{PgDn}
・・・誤爆防止のコードですね。今使っているパソコンには矢印キーの近くに「pgup
」と「pgdn
」がありますゆえ。
コマンド
標準コマンド
Windowsを使っている前提でPowershell 7を挙げますが、Move-Item
やSet-Location
などを覚えておくと便利です。
また、Linuxなどを使っている人向けのエイリアスがあり、mv
やcd
などが(そのままではありませんが)使えます。
例えばですが、Powershellから特定のソフトを開くにはInvoke-Item
を使います。デフォルトでii
でも実行可能です。ii .
と打つことでカレントディレクトリをファイラーで開けます。
こういったように標準で搭載されているコマンドも活用していきましょう。
こちらはGUI操作ですが、こういうのも活用していきましょう。
拡張コマンド
ターミナルを操作する上で必要な機能。それはコマンド!
ということでまずは便利なコマンドをインストールします。PowershellのMicrosoft.PowerShell_profile.ps1のSet-Aliasに設定するものがあるのでこっちからやります。
下のサイトなどを参考にして使える機能を入れていきましょう。
おすすめなのはbat
、micro
、zoxide
、yazi
、broot
、btm
、genact
です。
ここら辺はcargo install
でダウンロードできます。リリースされているバイナリを直接ダウンロードするcargo-binstall
を使うといいでしょう。
micro
はcargo install --locked
ではなく実行ファイル形式でのダウンロードなのでそこだけ注意。
足りなければ作ってもいいですね。
こちら、start-sd
やstart-tg
でStable DiffusionやText Generationをお手軽に起動できるbatファイルです。滅多に使わないけど。
@echo off
echo Start Stable Diffusion
cd C:\Users\%username%\Documents\Stable_Diffusion\stable-diffusion-webui
./webui-user.bat
@echo off
echo Start Text Generation
cd C:\Users\%username%\Documents\Text-Generation-webui\text-generation-webui-main
call C:\Users\%username%\Documents\.venv\ai_venv\Scripts\Activate.bat
python server.py
それよりかはよく使うものを考えます。
下の記事はgenv.ps1
というPowershellのファイルです。グローバルにvenvを使いたくて作成しました。
基本的なプログラミング言語であればCLIを作成する機能はあるので、言語を学びながら作るのもいいでしょう。
このように足りなければ作ればいいのです。Rustには開発しやすいツールもありますしね。各ソフトの設定
ここからは各ソフトのコンフィグを見直していきます。
Powershell 7
.msi
なので開いたら自動で設定してくれます。
ここでやるのはMicrosoft.PowerShell_profile.ps1
の設定です。
@("Terminal-Icons","PSFzf") | ForEach-Object -Process {
Import-Module $_ -NoClobber
}
Enable-PsFzfAliases
$WarningPreference = "SilentlyContinue" # Warningの非表示
Set-PSReadLineOption -PredictionViewStyle ListView
Set-PSReadLineOption -PredictionSource HistoryAndPlugin
Set-PSReadlineOption -HistoryNoDuplicates
Set-PSReadlineOption -BellStyle None
Set-PSReadLineOption -WordDelimiters ";:,.[]{}()/\|^&*-=+'<>「」()『』『』[]、,。"
function y {
$tmp = [System.IO.Path]::GetTempFileName()
yazi $args --cwd-file="$tmp"
$cwd = Get-Content -Path $tmp -Encoding UTF8
if (-not [String]::IsNullOrEmpty($cwd) -and $cwd -ne $PWD.Path) {
Set-Location -LiteralPath ([System.IO.Path]::GetFullPath($cwd))
}
Remove-Item -Path $tmp
}
function cl {& cl.exe /source-charset:utf-8 @args}
Invoke-Expression (& { (zoxide init powershell | Out-String) })
Set-Alias v nvim
Set-Alias br broot
Set-Alias m micro
Set-Alias open Invoke-Item
Set-Alias touch New-Item
function prompt {
$currentDir = (Get-Location).Path `
-replace [regex]::Escape($HOME), "~" `
-replace ".*Learn_University", "🏫"
$(if (Test-Path variable:/PSDebugContext) { '[DBG]: ' }
else { }) + $currentDir +
$(if ($NestedPromptLevel -ge 1) { '>>' }) + '> '
}
これでこんな感じになります。
参考になった記事はこちらです。なかなかおもしろい設定をしています。
本当はOh My Posh使いたかったんですがね。この環境だとなぜかエラーを吐きやがる。
Wezterm
ターミナルエミュレーターを選びます。Winodws TerminalやWarpなどが選択に入りますが、今回はWeztermを採用しました。
ここに書くには長すぎるので、設定方法は大学生、WindowsでWezterm(Nightly)の設定を構築する備忘録を読んでください。
micro
.bin
のところに直接っぶち込んでいます。
このままだと少し使いずらいのでコンフィグをいじりましょう。
場所はユーザ名\.config\micro
のsetting.json
です。こちらのファイルは保存時に自働でアルファベット順に並び替えられる点に注意。
{
"colorscheme": "monokai",
"eofnewline": false,
"ft:c": {
"tabstospaces": false
},
"ft:lua": {
"tabsize": 2
},
"hlsearch": true,
"scrollbar": true,
"scrollbarchar": " ",
"scrollmargin": 1,
"tabstospaces": true,
"tabsize": 4,
}
"eofnewline": false,
で最後の行に改行を加えないようにします。
"hlsearch": true,
は検索時のハイライトがすべて表示されるようになります。
"scrollbar": true,
でスクロールバーを表示します。もし棒線が表示されるのが好みでないなら、"scrollbarchar": " ",
で完全に色だけになります。
タブかスペースかを決めたいなら"tabstospaces"
で変えられます。"ft:言語"
で特定の言語に対応させることができます。
また、キーコンフィグはbindings.json
で変更できます。こちらはいろいろ調べている途中です。
{
"Alt-/": "lua:comment.comment",
"CtrlUnderscore": "lua:comment.comment",
"Ctrl-Backspace": "DeleteWordLeft",
"Ctrl-Delete": "DeleteWordRight",
}
ただ、惜しいところははIMEが対応していないことですね。
Neovim
VimではなくVisual Studio Codeを使う場合はここを読み飛ばしても構いません。
私は軽量化のためにNeovimを使います。ええ、Visual Studio Codeが重いのでNeovimに移るだけです。Godotを使う時と―――気分でVisual Studio Codeに戻ります。
なお、私はVim小学生レベルです。検索をしたり置換したりする程度の技術です。
現状は小さい開発にしか使っていませんが、Vim盆栽と言われるように肥料を選び剪定し最後に憤りながらデリートる・・・え、最後のはなにか違う?
まぁ苦渋に満ちた詳細な設定記事は『大学生、NeovimにおけるLazyvimの環境を構築した』を読んでください。lazyvimに飽きたらNvChadでも使ってみます。
yazi
使いやすいCLIのファイラーです。
詳細な情報はこちらが役に立ちます。
Powershell 7のMicrosoft.PowerShell_profile.ps1
にこのような設定を入れると、yaziを終了したときのディレクトリに移動してくれます。
function y {
$tmp = [System.IO.Path]::GetTempFileName()
yazi $args --cwd-file="$tmp"
$cwd = Get-Content -Path $tmp -Encoding UTF8
if (-not [String]::IsNullOrEmpty($cwd) -and $cwd -ne $PWD.Path) {
Set-Location -LiteralPath ([System.IO.Path]::GetFullPath($cwd))
}
Remove-Item -Path $tmp
}
Windowsではユーザ名\AppData\Roaming\yazi
にあるconfig
を変えるようです。
まずはカラースキームでも変えてみましょう。
[flavor]
use = "nightfly"
これでnightlyの設定になりました。他にも変えられそうですが変えていません。
開く設定も変えてみましょう。
[manager]
show_hidden = true
[opener]
edit = [
{ run = '${EDITOR:-vi} "$@"', desc = "$EDITOR", block = true, for = "unix" },
{ run = 'nvim %*', block = true, desc = "nvim", for = "windows" },
{ run = 'nvim -w %*', block = true, desc = "nvim (block)", for = "windows" },
{ run = 'code %*', orphan = true, desc = "code", for = "windows" },
{ run = 'code -w %*', block = true, desc = "code (block)", for = "windows" },
]
show_hidden = true
で隠しファイルを最初から表示できるように。そしてnvim
でneovimの起動ができるように。
キーバインドの設定はそこまで変えていません。
プラグインを導入してそれを起動するようにしている感じです。
[manager]
prepend_keymap = [
{ on = "<Esc>", run = "close", desc = "Close the current tab, or quit if it's last" },
# default Plugin
{ on = "z", run = "plugin zoxide", desc = "Jump to a directory via zoxide" },
{ on = "Z", run = "plugin fzf", desc = "Jump to a file/directory via fzf" },
# in Plugin
{ on = "<Enter>", run = "plugin smart-enter", desc = "Enter the child directory, or open the file" },
{ on = "F", run = "plugin smart-filter", desc = "Smart Filter" },
{ on = "T", run = "plugin toggle-pane min-preview", desc = "Show or hide the preview pane" },
{ on = "T", run = "plugin toggle-pane max-preview", desc = "Maximize or restore the preview pane" },
]
require("full-border"):setup()
こちらのプラグインを起動するだけです。
broot
yaziのファイル表示が機能せずファイルを開こうとしても機能しないので、brootを使うことにしました。ディレクトリ間を移動しないならこっちのほうが使いやすい気がする。
不便を感じていないので設定はいじっていません。
lazygit
Visual Studio CodeのGitではなく、ターミナル上で動作できるGitを使えるようにしたいのでこちらを採用しました。Neovimのlazyvimを入れるときに同時に入れています。
lazygitのコンフィグフィアルはユーザ名\AppData\Local\lazygit
のconfig.yml
です。コンフィグはこちらを参考にしながら作成しました。
gui:
nerdFontsVersion: "3"
git:
paging:
colorArg: always
pager: delta --dark --paging=never
allBranchesLogCmd: git log --graph --color=always --date=format:'%Y-%m-%d %H:%M' --pretty=format:'%C(#a0a0a0 reverse)%h%Creset %C(cyan)%ad%Creset %C(#dd4814)%ae%Creset %C(yellow reverse)%d%Creset %n%C(white bold)%s%Creset%n' --
branchLogCmd: git log --graph --color=always --date=format:'%Y-%m-%d %H:%M' --pretty=format:'%C(#a0a0a0 reverse)%h%Creset %C(cyan)%ad%Creset %C(#dd4814)%ae%Creset %C(yellow reverse)%d%Creset %n%C(white bold)%s%Creset%n' {{branchName}} --
Visual Studio Code
Visual Studio Codeのsetting.jsonをきれいに整えました。
この記事に書いたらやたら長くなったので別記事の『大学生、Visual Studio Codeのsettings.jsonを整える』に移しました。
Brave
Chromeと同じ操作感にしています。つまりブラウザとしては変えていません。
ただ、Vimiumを入れてキーボードの操作を加えています。
# Custom key mappingsの入力タブ
# Insert your preferred key mappings here.
"unmapAll
map ? showHelp
#モード
map a enterNormalMode
# ページスクロール
map k scrollUp
map l scrollPageUp
map j scrollDown
map h scrollPageDown
map J scrollLeft
map K scrollRight
map gg scrollToTop
map GG scrollToBottom
map p openCopiedUrlInCurrentTab
map P openCopiedUrlInNewTab
map m Marks.activateCreateMode
map M Marks.activateGotoMode
unmap <c-e>
unmap <c-y>
unmap d
unmap u
unmap G
#タブ
map t
map > moveTabRight
map < moveTabLeft
map yT duplicateTab
map gT goToRoot
unmap gt
unmap gT
unmap g0
unmap g$
unmap >>
unmap <<
unmap x
unmap X
#便利
"2つ目の入力ボックスにフォーカスしたい時は「2I」と入力する
map e focusInput
unmap r
unmap gi
Vivaldi
数あるブラウザの中で設定項目が非常に多いソフトです。
標準の設定からまぁまぁ変わっている状態です。設定を載せようと思いましたが、画像の貼り付けになるのでこの記事では取り扱いません。
忘れていなければ別記事で設定を載せます。
最終的な見た目はこのようになっています。
Vivaldi自体キーボードに割り当てられるコンフィグが多いのですが、それでも足りない機能はVivaldi用に設定したVimiumを使っています。
# ABCDEFGHILNOQRSUVWXYZabcdegmnoqrsuvwxz1234567890+*-/=:;^~\|@`[{]},./\_!"#$%&'()
# Custom key mappingsの入力タブ
# Insert your preferred key mappings here.
unmapAll
map ? showHelp
#モード
map i enterInsertMode
# ページスクロール
map k scrollUp
map l scrollPageUp
map j scrollDown
map h scrollPageDown
map J scrollLeft
map K scrollRight
# map gg scrollToTop
# map GG scrollToBottom
map f LinkHints.activateMode
map F LinkHints.activateModeToOpenInNewTab
# map p openCopiedUrlInCurrentTab
# map P openCopiedUrlInNewTab
#タブ
map t createTab
map yt duplicateTab
# map gt goToRoot
#便利
map yy copyCurrentUrl
map yf LinkHints.activateModeToCopyLinkUrl
まとめ
根本的にパソコンを買い替えてスペックを上げる方針を取ればいいでしょうがね。このままだと購入から3年半で壊れる未来ですよ。大学三年生の後期で壊れますよ。
持ち運ぶと電源が落ちる、Fnキー+F4でタッチパッドのオンオフのはずがWindowsキー、モニターがキーボードにこすれて跡が付きまくり、ctrlキーが使いすぎで外れる、キーボードにスマホを落としてへこませる。すでにオンボロです。
他にはBrowshのようなターミナルで使えるブラウザを導入しようと思いましたが、WindowsもといWSLでもうまくいかず。Pythonもpyenv+enveではなくuvにしようと思いましたが、パソコンを買い替えてからでもよさそう。
それはともかく、dotfileという形で設定ファイルをまとめることができました。
これでパソコンを急に移行することになっても問題ないですね。Zorin OSとかに興味があるので、買い換えたら検討してみましょうか。
Discussion