Jxck の個人 dotfiles
- Mac および Ubuntu で共用
- どちらでも動くように分岐
- スクリプトは基本 zsh, ruby, js
- setup/setup.sh を実行
- linux で依存インストール
- 共通で homebrew の導入
- brew bundle
- slink.sh
- linux で chsh
- setup/setup-mac.sh
- macOS の設定を defaults コマンドで適用
- bin/: カスタムスクリプト
- zsh/: zsh のモジュール別設定 (mac.zsh, common.zsh, fzf.zsh 等)
- install/: ビルド・インストールスクリプト
- setup/: OS 別セットアップスクリプト
- conf/: 各種ツールの設定ファイル
- tmux/: OS 別 tmux 設定
- keys/: TLS 証明書・SSH 鍵 (読まない・変更しない)
- .zshrc: シェル設定のエントリポイント
- .gitconfig: git 設定 (delta, GPG 署名, エイリアス)
- .tmux.conf: tmux 設定 (prefix は C-s, vi モード)
- .vimrc: vim 設定
- .mise.toml: ツールバージョン管理 (node, deno, bun, go, rust 等)
- Brewfile: Homebrew パッケージ一覧
まず 1Password で SSH Agent を有効にする。
1password > Settings > Developer > Set Up SSH Agent
ターミナルは cmux (内部で Ghostty を使用)。
brew install --cask cmux- TERM=xterm-ghostty を設定するため、SSH 先に terminfo が必要
- SSH 先への terminfo インストール:
infocmp -x xterm-ghostty | ssh <host> tic -x - - cmux のシェル内で実行すること (cmux が terminfo を持っている)
- .claude
- Claude Code 設定 (CLAUDE.md, settings.json, skills/)
- .codex
- Codex CLI 設定 (AGENTS.md, config.toml, rules/)
- .vscode
- VS Code 用辞書ファイル (cspell.txt)
- bin
- 自作コマンド置き場
- $PATH が通してある
- 基本は ruby か shell で書く
- conf
- apt.conf, prh.yml など
- ghostty
- Ghostty ターミナル設定
- ~/.config/ghostty/config にシンボリックリンク
- cmux が内部で Ghostty を使うため、設定は引き続き有効
- install
- 自前ビルドするスクリプト
install-*で作る
- keys
- https コマンド用のローカル key/cert
- linearmouse
- LinearMouse 設定 (linearmouse.json)
- local
install-*が pkg でビルドしたあと make install する先--prefixなどに指定する先- 個別に PATH を通す
- misc
- 昔作った bookmarklet の残骸
- pkg
install-*がソースをダウンロードする場所- そのままビルドして PATH を通しても良い
- setup
- OS 別セットアップスクリプト (setup.sh, setup-mac.sh, setup-linux.sh)
- skills
- Claude Code スキル定義
- swiftbar
- SwiftBar プラグイン (SSID 表示, 時刻表示)
- tmux
- mac/linux 用 tmux.conf
- zsh
- .zshrc で読み込む個別設定
- alias
- ./zsh/common.zsh
- zsh function
- ./zsh/common.zsh
- shell
- ./bin
#!/usr/bin/env zshで書く-hを作る
- ruby
- ./bin
#!/usr/bin/env rubyで書く-hを作る- ./bin/template を参照
- 基本は homebrew の bundle に追加
- linux / mac で使えるように
- 一時的なものは
brew installして終わったら捨てる
- 自前ビルド
./install/install-xxx.shを作る./pkg/xxxと./local/xxxを削除./pkg/xxxにソースをダウンロード- そこでビルドして終わりなら PATH 追加して終わり
- make install するなら
--prefix=$DOTFILES/local/xxxを指定
今となってはどっちもそこまで変わらなくなってきた。
$ update.sh
$ upgrade.shUbuntu terminal
$ dconf dump /org/gnome/terminal/ > gnome-terminal-profiles.dconf
$ dconf reset -f /org/gnome/terminal/
$ dconf load /org/gnome/terminal/ < gnome-terminal-profiles.dconfステータスコードを打つとステータステキストが出る
$ 203
Non-Authoritative Information [RFC7231]Webrick ベースの簡易 HTTP/HTTPS サーバ。その場を Root に起動する。
$ http
[2019-05-06 15:36:45] INFO WEBrick 1.3.1
[2019-05-06 15:36:45] INFO ruby 2.3.7 (2018-03-28) [universal.x86_64-darwin18]
[2019-05-06 15:36:45] INFO WEBrick::HTTPServer#start: pid=33328 port=3000HTTPS を使う場合は $DOTFILES/keys/privkey.pem と fullchain.pem を使う。
/keys/gen.sh: ローカルで key/cert を作る/keys/remote-copy.sh: サーバで Let's Encrypt で作った証明書をダウンロード/keys/local-copy.sh: ローカルで証明書をコピー/keys/use.sh: メインで使いたい証明書の symlink を作る
Ruby で作った、痒いところを全部カバーした自作 ls
$ ls
# $DOTFILES/bin/l
$ \ls
# /bin/ls[やtestではなく[[を使う- 論理演算は
&&,||を使う
if [[ `uname` == "Darwin" ]]; then
echo "install via brew"
exit 0
fi- 無い場合:
-zで文字列長が 0 かどうかを比較 - 有る場合:
-nで文字列長が 1 以上かどうかを比較
if [[ -f "/opt/homebrew/bin/mise" ]]; then
eval "$(mise activate zsh)"
export MISE_GLOBAL_CONFIG_FILE=$DOTFILES/.mise.toml
fi
if [[ -n $DEV ]]; then
echo "fetch jxck.io"
cd $DEV/jxck.io
git f
fi[[を使う場合、ダブルクオートの有無で完全一致かマッチを使い分けられる。- また
=~でもマッチが使える。 - しかし、それだとややこしいので
==か!=と*"string"*構文を組み合わせる。
## webp
if [[ -d "$DOTFILES/pkg/webp" && $PATH != *"/pkg/webp/bin"* ]]; then
echo "webp"
addToPath $DOTFILES/pkg/webp/bin
fiif [[ -x "$(command -v brew)" ]]; then
echo "brew exists"
fiパスの追加($PATH=/path/to/file:$PATH)をする関数 addToPath があるので使う。
zsh で typeset -U path PATH で重複を省いてある。
## openssl
[[ -d "$DOTFILES/local/openssl/bin" ]] && addToPath $DOTFILES/local/openssl/bin
## webp
if [[ -d "$DOTFILES/pkg/webp" && $PATH != *"/pkg/webp/bin"* ]]; then
echo "webp"
addToPath $DOTFILES/pkg/webp/bin
fi基本はこの書き方
target_files="
a
b
c
"
for target in $target_files
do
echo $target
done