Posted:
| Tags:
cli,
container,
docker,
linux
日常CLIコンテナでhost UID/GIDに合わせてshellへ入る設計
目的
日常的に使う CLI tool をコンテナ image にまとめると、host の環境を壊さずに新しい tool や最新版を試せる。
一方で、作業ディレクトリを bind mount して shell に入る場合、コンテナ内ユーザーの UID/GID が host とずれると、作成ファイルの所有者が壊れる。
Dockerfile に個人の user name、UID、GID を焼かず、起動時に host user に合わせる。
shell wrapperとentrypointを分ける
責務を分ける。
shell wrapper:
- host側で実行する
- container runtimeを選ぶ
- bind mountを組み立てる
- hostのUID/GID/USER/HOMEを環境変数で渡す
- containerは一度rootで起動する
entrypoint:
- container内で実行する
- hostと同じUID/GIDのuser/groupを作る
- 必要な補助groupを設定する
- 作業userへ権限を落としてcommandを実行する
この形にすると、image 自体は汎用のままにできる。
利用者ごとの UID/GID は runtime の入力として扱う。
Read more...Posted:
| Tags:
ai,
cli,
picoclaw,
skills
PicoClawのスキル一覧を確認する方法と現状入っているスキル
PicoClaw のスキルは、特定用途の手順や知識、補助スクリプトをまとめた小さなパッケージとして扱われる。
ここでは次の 2 つをまとめる。
- スキル一覧を確認する方法
- 現在
~/.picoclaw/workspace/skills に入っているスキルの説明
スキル一覧を確認する方法
CLI から確認するなら、まずはこれでよい。
現行実装では skills list は「インストール済みスキル」を列挙するコマンドになっている。
必要なら個別スキルの詳細確認もできる。
picoclaw skills show weather
picoclaw skills show github
コマンド実装はこのあたりにある。
ファイルで直接確認する方法
workspace 側にあるスキルの実体は、次のように確認できる。
find ~/.picoclaw/workspace/skills -maxdepth 3 -type f | sort
基本的には各スキルディレクトリの SKILL.md が中心で、必要に応じて references/ や scripts/ が付く。
典型的な構成はこうなる。
~/.picoclaw/workspace/skills/
weather/
SKILL.md
tmux/
SKILL.md
scripts/
find-sessions.sh
wait-for-text.sh
hardware/
SKILL.md
references/
board-pinout.md
common-devices.md
現在入っているスキル
現在の ~/.picoclaw/workspace/skills には 6 個のスキルが入っている。
Read more...Posted:
| Categories:
cli
| Tags:
cli,
neovim,
tmux,
wezterm
背景
CLI関連のツール、tmux, w3m, weztermのキーバインドを揃えたい。ひとまずリストを出す。 ローカルのマシン(macOSなりLinuxなどのデスクトップ環境)ではWezTermとtmuxを用いている。
(以前はgnome-terminal, mltermを用いていたが、sixel対応と設定がluaで書ける点からWezTermを始めた)
将来的に下記の条件が成立したらgnome-terminal, mltermに戻るかも
- tmuxのsixel対応が安定動作する
- macOS, Linuxの設定ファイルを共通にしたい(WezTermだとOSによってif文で設定を変えられる)
- tmuxもif-shellで振る舞いを分岐できるようになった
関連ページ
現在のキーバインド
prefix
| WezTerm(tmux1) | tmux2(ローカルで用いる) | tmux3(リモートで用いる) |
|---|
| ctrl + y | ctrl + t | ctrl + b |
リモートサーバ上でtmuxを用いる場合はtmux3のprefixを使う。
ショートカット
| wezterm | tmux | neovim | w3m |
|---|
| 新しいウィンドウ(タブ)を作る | c | c | tabnew | Ctrl + T |
| 現在のウィンドウ(タブ)を閉じる | Ctrl + d でexit | Ctrl + d でexit | :wq | Ctrl + Q |
| ウィンドウ(タブ)を右に移動 | n | n | gt | } |
| ウィンドウ(タブ)を左に移動 | p | p | gT | { |
| ウィンドウ(タブ)のリスト | | | | Esc + t |
設定が被らないように既存の設定を確認する
| 環境 | 表示方法 | 設定ファイル |
|---|
| bash | bind -P | ~/.inputrc |
| fish | bind あるいは fish_key_reader | ~/.config/fish/functions/fish_user_key_bindings.fish |
| tmux | prefix -> :list-keys | ~/.config/tmux/tmux.conf |
| w3m | 起動中にHを押す | ~/.w3m/keymap |
| wezterm | | |
Read more...