Tag: Cli

日常CLIコンテナでhost UID/GIDに合わせてshellへ入る設計

日常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...

PicoClawのスキル一覧を確認する方法と現状入っているスキル

PicoClawのスキル一覧を確認する方法と現状入っているスキル

PicoClaw のスキルは、特定用途の手順や知識、補助スクリプトをまとめた小さなパッケージとして扱われる。

ここでは次の 2 つをまとめる。

  • スキル一覧を確認する方法
  • 現在 ~/.picoclaw/workspace/skills に入っているスキルの説明

スキル一覧を確認する方法

CLI から確認するなら、まずはこれでよい。

picoclaw skills list

現行実装では skills list は「インストール済みスキル」を列挙するコマンドになっている。

picoclaw 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...

CLIツールのショートカットを統一していきたい

背景

CLI関連のツール、tmux, w3m, weztermのキーバインドを揃えたい。ひとまずリストを出す。 ローカルのマシン(macOSなりLinuxなどのデスクトップ環境)ではWezTermとtmuxを用いている。 (以前はgnome-terminal, mltermを用いていたが、sixel対応と設定がluaで書ける点からWezTermを始めた)

将来的に下記の条件が成立したらgnome-terminal, mltermに戻るかも

  1. tmuxのsixel対応が安定動作する
  2. macOS, Linuxの設定ファイルを共通にしたい(WezTermだとOSによってif文で設定を変えられる)
  • tmuxもif-shellで振る舞いを分岐できるようになった

関連ページ

WezTermtmuxneovimw3m
cheat sheetcheat sheet tmuxcheat sheet vimcheat sheet w3m
私のメモtmuxvimw3m
私の設定リポジトリ

現在のキーバインド

prefix

WezTerm(tmux1)tmux2(ローカルで用いる)tmux3(リモートで用いる)
ctrl + yctrl + tctrl + b

リモートサーバ上でtmuxを用いる場合はtmux3のprefixを使う。

ショートカット

weztermtmuxneovimw3m
新しいウィンドウ(タブ)を作るcctabnewCtrl + T
現在のウィンドウ(タブ)を閉じるCtrl + d でexitCtrl + d でexit:wqCtrl + Q
ウィンドウ(タブ)を右に移動nngt}
ウィンドウ(タブ)を左に移動ppgT{
ウィンドウ(タブ)のリストEsc + t

設定が被らないように既存の設定を確認する

環境表示方法設定ファイル
bashbind -P~/.inputrc
fishbind あるいは fish_key_reader~/.config/fish/functions/fish_user_key_bindings.fish
tmuxprefix -> :list-keys~/.config/tmux/tmux.conf
w3m起動中にHを押す~/.w3m/keymap
wezterm
Read more...