mirror of
https://github.com/ivuorinen/dotfiles.git
synced 2026-01-29 21:45:54 +00:00
Compare commits
29 Commits
25.10.13
...
feat/chezm
| Author | SHA1 | Date | |
|---|---|---|---|
| 8460c2d408 | |||
| ab67f6be5a | |||
| efadbb4248 | |||
| ded4bf3bb3 | |||
|
|
62eb417935 | ||
| d22f9ece7d | |||
| 79be2d41bc | |||
|
|
743ebb0e9f | ||
|
|
8fcab21a67 | ||
|
|
43a714513f | ||
|
|
044298af74 | ||
|
|
6604f7a2ca | ||
|
|
065eb2f9c0 | ||
|
|
49b7fa43ad | ||
|
|
8f652a2a9b | ||
|
|
b81adc62b1 | ||
|
|
fd044776b9 | ||
| 5472634f08 | |||
| 33db70e725 | |||
| 56b2fdabf1 | |||
| 3f2d1b85ed | |||
|
|
0bd72c6d51 | ||
|
|
69684c23b9 | ||
|
|
28a36b5d6b | ||
|
|
00fd6fc5dc | ||
|
|
abfe7cc011 | ||
|
|
95e21a124b | ||
|
|
5178bec1a0 | ||
|
|
1b94674e6b |
53
.chezmoi.yaml.tmpl
Normal file
53
.chezmoi.yaml.tmpl
Normal file
@@ -0,0 +1,53 @@
|
||||
{{- $hostname := .chezmoi.hostname -}}
|
||||
{{- $username := .chezmoi.username -}}
|
||||
{{- $osid := .chezmoi.os -}}
|
||||
|
||||
sourceDir: {{ .chezmoi.sourceDir | quote }}
|
||||
|
||||
data:
|
||||
hostname: {{ $hostname | quote }}
|
||||
username: {{ $username | quote }}
|
||||
osid: {{ $osid | quote }}
|
||||
|
||||
# Detect if we're on macOS
|
||||
is_macos: {{ eq $osid "darwin" }}
|
||||
|
||||
# Detect if we're on Linux
|
||||
is_linux: {{ eq $osid "linux" }}
|
||||
|
||||
# Host-specific flags
|
||||
is_air: {{ eq $hostname "air" }}
|
||||
is_lakka: {{ eq $hostname "lakka" }}
|
||||
is_tunkki: {{ eq $hostname "tunkki" }}
|
||||
is_s: {{ eq $hostname "s" }}
|
||||
|
||||
# Merge strategy for dealing with conflicts
|
||||
merge:
|
||||
command: "nvim"
|
||||
args:
|
||||
- "-d"
|
||||
- "{{ "{{" }} .Destination {{ "}}" }}"
|
||||
- "{{ "{{" }} .Source {{ "}}" }}"
|
||||
- "{{ "{{" }} .Target {{ "}}" }}"
|
||||
|
||||
# Template options
|
||||
template:
|
||||
options:
|
||||
- "missingkey=error"
|
||||
|
||||
# Diff options
|
||||
diff:
|
||||
exclude:
|
||||
- "scripts"
|
||||
pager: "delta"
|
||||
|
||||
# Git options
|
||||
git:
|
||||
autoCommit: false
|
||||
autoPush: false
|
||||
|
||||
# Hooks
|
||||
hooks:
|
||||
read-source-state:
|
||||
pre:
|
||||
command: ".local/share/chezmoi/.chezmoihooks/pre-read-source-state.sh"
|
||||
13
.chezmoihooks/pre-read-source-state.sh
Executable file
13
.chezmoihooks/pre-read-source-state.sh
Executable file
@@ -0,0 +1,13 @@
|
||||
#!/usr/bin/env bash
|
||||
# Pre-read-source-state hook for chezmoi
|
||||
# This runs before chezmoi reads the source state
|
||||
|
||||
set -e
|
||||
|
||||
DOTFILES="${CHEZMOI_SOURCE_DIR:-$HOME/.local/share/chezmoi}"
|
||||
|
||||
# Update git submodules if they exist
|
||||
if [ -d "$DOTFILES/.git" ]; then
|
||||
cd "$DOTFILES"
|
||||
git submodule update --init --recursive --quiet || true
|
||||
fi
|
||||
90
.chezmoiignore
Normal file
90
.chezmoiignore
Normal file
@@ -0,0 +1,90 @@
|
||||
# Chezmoi ignore file
|
||||
# Files and directories that should not be managed by chezmoi
|
||||
|
||||
# Git and version control
|
||||
.git/
|
||||
.gitignore
|
||||
.gitattributes
|
||||
.gitmodules
|
||||
|
||||
# GitHub
|
||||
.github/
|
||||
|
||||
# Documentation
|
||||
README.md
|
||||
*.md
|
||||
docs/
|
||||
AGENTS.md
|
||||
|
||||
# Development tools
|
||||
.vscode/
|
||||
.serena/
|
||||
.claude/
|
||||
node_modules/
|
||||
|
||||
# Testing
|
||||
tests/
|
||||
test-all.sh
|
||||
|
||||
# Configuration files for the repo itself
|
||||
.editorconfig
|
||||
.editorconfig-checker.json
|
||||
.eslintrc.json
|
||||
.prettierrc.js
|
||||
.prettierignore
|
||||
.markdownlint.json
|
||||
.markdownlintignore
|
||||
.mega-linter.yml
|
||||
.commitlintrc.json
|
||||
.releaserc.json
|
||||
.shellcheckrc
|
||||
.yamlignore
|
||||
.yamllint.yml
|
||||
.browserslistrc
|
||||
.actrc
|
||||
.luarc.json
|
||||
.ignore
|
||||
stylua.toml
|
||||
phpcs.xml
|
||||
|
||||
# Package management
|
||||
package.json
|
||||
yarn.lock
|
||||
|
||||
# Python and Node version files
|
||||
.python-version
|
||||
.nvmrc
|
||||
.go-version
|
||||
|
||||
# Dotbot (old system)
|
||||
install.conf.yaml
|
||||
tools/dotbot/
|
||||
tools/dotbot-*/
|
||||
tools/dotbot-defaults.yaml
|
||||
|
||||
# Installation and build scripts in root
|
||||
install
|
||||
add-submodules.sh
|
||||
|
||||
# Chezmoi-specific directories (not to be managed)
|
||||
.chezmoihooks/
|
||||
|
||||
# Host-specific directories (will be handled via templates)
|
||||
{{- if not .is_air }}
|
||||
hosts/air/
|
||||
{{- end }}
|
||||
{{- if not .is_lakka }}
|
||||
hosts/lakka/
|
||||
{{- end }}
|
||||
{{- if not .is_tunkki }}
|
||||
hosts/tunkki/
|
||||
{{- end }}
|
||||
{{- if not .is_s }}
|
||||
hosts/s/
|
||||
{{- end }}
|
||||
|
||||
# Secrets (should use separate secrets management)
|
||||
secrets/
|
||||
|
||||
# macOS specific files
|
||||
.DS_Store
|
||||
2
.github/workflows/changelog.yml
vendored
2
.github/workflows/changelog.yml
vendored
@@ -13,7 +13,7 @@ permissions: read-all
|
||||
|
||||
jobs:
|
||||
debug-changelog:
|
||||
runs-on: self-hosted
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
permissions: write-all
|
||||
|
||||
|
||||
4
.github/workflows/linters.yml
vendored
4
.github/workflows/linters.yml
vendored
@@ -30,9 +30,9 @@ jobs:
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
|
||||
- name: Yarn Lock Changes
|
||||
uses: Simek/yarn-lock-changes@34017425198654c20162a4dfd4f238fbece9636f # v0.12.1
|
||||
uses: Simek/yarn-lock-changes@61d1a0595070b79c1abdc8e1e5a5f5d98b18918c # v0.12.2
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Run PR Lint
|
||||
uses: ivuorinen/actions/pr-lint@dc895c40ffdce61ab057fb992f4e00f1efdcbcbf # 25.10.7
|
||||
uses: ivuorinen/actions/pr-lint@ff0ca4bc920c518b2ce2dc20c5e5a6e95f76dee0 # v2025.11.02
|
||||
|
||||
4
.github/workflows/new-release.yml
vendored
4
.github/workflows/new-release.yml
vendored
@@ -15,7 +15,7 @@ permissions: read-all
|
||||
|
||||
jobs:
|
||||
new-daily-release:
|
||||
runs-on: self-hosted
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
permissions: write-all
|
||||
|
||||
@@ -40,7 +40,7 @@ jobs:
|
||||
|
||||
- name: Create release
|
||||
if: steps.daily-version.outputs.created
|
||||
uses: softprops/action-gh-release@aec2ec56f94eb8180ceec724245f64ef008b89f5 # v2.4.0
|
||||
uses: softprops/action-gh-release@5be0e66d93ac7ed76da52eca8bb058f665c3a5fe # v2.4.2
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
tag_name: ${{ steps.daily-version.outputs.version }}
|
||||
|
||||
2
.github/workflows/pre-commit-autoupdate.yml
vendored
2
.github/workflows/pre-commit-autoupdate.yml
vendored
@@ -16,7 +16,7 @@ permissions: read-all
|
||||
|
||||
jobs:
|
||||
auto-update:
|
||||
runs-on: self-hosted
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
2
.github/workflows/semantic-pr.yml
vendored
2
.github/workflows/semantic-pr.yml
vendored
@@ -18,7 +18,7 @@ permissions: read-all
|
||||
|
||||
jobs:
|
||||
semantic-pr:
|
||||
runs-on: self-hosted
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: amannn/action-semantic-pull-request@48f256284bd46cdaab1048c3721360e808335d50 # v6.1.1
|
||||
|
||||
4
.github/workflows/sync-labels.yml
vendored
4
.github/workflows/sync-labels.yml
vendored
@@ -23,10 +23,10 @@ permissions: read-all
|
||||
|
||||
jobs:
|
||||
SyncLabels:
|
||||
runs-on: self-hosted
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
permissions:
|
||||
issues: write
|
||||
|
||||
steps:
|
||||
- uses: ivuorinen/actions/sync-labels@dc895c40ffdce61ab057fb992f4e00f1efdcbcbf # 25.10.7
|
||||
- uses: ivuorinen/actions/sync-labels@ff0ca4bc920c518b2ce2dc20c5e5a6e95f76dee0 # v2025.11.02
|
||||
|
||||
2
.github/workflows/update-submodules.yml
vendored
2
.github/workflows/update-submodules.yml
vendored
@@ -16,7 +16,7 @@ permissions: read-all
|
||||
|
||||
jobs:
|
||||
update-submodules:
|
||||
runs-on: self-hosted
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
permissions: write-all
|
||||
|
||||
|
||||
43
.gitignore
vendored
43
.gitignore
vendored
@@ -11,47 +11,48 @@
|
||||
.nfs*
|
||||
.scannerwork
|
||||
.vscode
|
||||
!config/git/local.d/.gitkeep
|
||||
!config/nvim/spell/.gitkeep
|
||||
!config/zed/settings.json
|
||||
!ssh/local.d/.gitkeep
|
||||
**/exports-secret.fish
|
||||
**/exports.secret.fish
|
||||
*.tmp.*
|
||||
Brewfile.lock.json
|
||||
antidote_plugins.zsh
|
||||
config/alacritty/theme-active.toml
|
||||
config/cheat/cheatsheets/pure-bash-bible/*
|
||||
config/cheat/cheatsheets/tldr/*
|
||||
config/fish/completions/asdf.fish
|
||||
config/fish/fish_variables
|
||||
config/fish/fish_variables.*
|
||||
config/gh/hosts.yml
|
||||
config/git/credentials
|
||||
config/git/local.d/*
|
||||
config/gnupg/S.*
|
||||
config/gnupg/private-keys-v1.d
|
||||
config/gnupg/s
|
||||
config/iterm2/AppSupport
|
||||
config/karabiner/automatic_backups
|
||||
config/npm/npmrc
|
||||
config/nvim/lazy-lock.json
|
||||
config/nvim/spell/*
|
||||
!config/nvim/spell/.gitkeep
|
||||
config/git/local.d/*
|
||||
!config/git/local.d/.gitkeep
|
||||
config/op/plugins/gh.json
|
||||
config/op/plugins/used_items/gh.json
|
||||
config/vim/.netrwhist
|
||||
config/vim/extra/*
|
||||
config/vim/fzf
|
||||
config/vim/plugged/*
|
||||
config/zed/*
|
||||
!config/zed/settings.json
|
||||
config/zed/settings.json
|
||||
config/zsh/.zcompdump
|
||||
dependency-check-report.html
|
||||
iTermServer-*
|
||||
lazy-lock.json
|
||||
local/share/fonts/*
|
||||
local/bin/asdf/plugins/*
|
||||
local/bin/yabai
|
||||
local/man/yabai.1
|
||||
local/share/fonts/*
|
||||
lock
|
||||
node_modules
|
||||
ssh/local.d/*
|
||||
!ssh/local.d/.gitkeep
|
||||
config/fish/fish_variables
|
||||
**/exports.secret.fish
|
||||
**/exports-secret.fish
|
||||
config/fish/completions/asdf.fish
|
||||
config/vim/.netrwhist
|
||||
config/vim/extra/*
|
||||
config/gh/hosts.yml
|
||||
dependency-check-report.html
|
||||
local/bin/yabai
|
||||
local/man/yabai.1
|
||||
config/op/plugins/used_items/gh.json
|
||||
config/zed/settings.json
|
||||
*.tmp.*
|
||||
config/op/plugins/gh.json
|
||||
config/fish/fish_variables.*
|
||||
|
||||
3
.gitmodules
vendored
3
.gitmodules
vendored
@@ -83,3 +83,6 @@
|
||||
[submodule "tmux/tmux-resurrect"]
|
||||
path = config/tmux/plugins/tmux-resurrect
|
||||
url = https://github.com/tmux-plugins/tmux-resurrect.git
|
||||
[submodule "tmux/catppuccin"]
|
||||
path = config/tmux/plugins/catppuccin
|
||||
url = https://github.com/catppuccin/tmux.git
|
||||
|
||||
@@ -1 +1 @@
|
||||
1.25.0
|
||||
1.25.3
|
||||
|
||||
@@ -50,12 +50,12 @@ repos:
|
||||
- id: actionlint
|
||||
|
||||
- repo: https://github.com/renovatebot/pre-commit-hooks
|
||||
rev: 41.146.0
|
||||
rev: 42.2.0
|
||||
hooks:
|
||||
- id: renovate-config-validator
|
||||
|
||||
- repo: https://github.com/JohnnyMorganz/StyLua
|
||||
rev: v2.3.0
|
||||
rev: v2.3.1
|
||||
hooks:
|
||||
- id: stylua # or stylua-system / stylua-github
|
||||
|
||||
|
||||
@@ -42,6 +42,8 @@ git submodule add --name tmux/tmux-current-pane-hostname \
|
||||
-f https://github.com/soyuka/tmux-current-pane-hostname.git config/tmux/plugins/tmux-current-pane-hostname
|
||||
git submodule add --name tmux/tmux-dark-notify \
|
||||
-f https://github.com/ivuorinen/tmux-dark-notify.git config/tmux/plugins/tmux-dark-notify
|
||||
git submodule add --name tmux/catppuccin \
|
||||
-f https://github.com/catppuccin/tmux.git config/tmux/plugins/catppuccin
|
||||
|
||||
# Takes submodules and sets them to ignore all changes
|
||||
for MODULE in $(git config --file .gitmodules --get-regexp path | awk '{ print $2 }'); do
|
||||
|
||||
15
base/hammerspoon/.luacheckrc
Normal file
15
base/hammerspoon/.luacheckrc
Normal file
@@ -0,0 +1,15 @@
|
||||
--
|
||||
-- These globals can be set and accessed:
|
||||
--
|
||||
globals = {
|
||||
"rawrequire",
|
||||
}
|
||||
|
||||
--
|
||||
-- These globals can only be accessed:
|
||||
--
|
||||
read_globals = {
|
||||
"hs",
|
||||
"ls",
|
||||
"spoon",
|
||||
}
|
||||
1010
base/hammerspoon/generate-hammerspoon-types.py
Executable file
1010
base/hammerspoon/generate-hammerspoon-types.py
Executable file
File diff suppressed because it is too large
Load Diff
17863
base/hammerspoon/hammerspoon.types.lua
Normal file
17863
base/hammerspoon/hammerspoon.types.lua
Normal file
File diff suppressed because it is too large
Load Diff
204
base/hammerspoon/init.lua
Normal file
204
base/hammerspoon/init.lua
Normal file
@@ -0,0 +1,204 @@
|
||||
-- ╭─────────────────────────────────────────────────────────╮
|
||||
-- │ Hammerspoon config file │
|
||||
-- ╰─────────────────────────────────────────────────────────╯
|
||||
-- init.lua — Pure Hammerspoon window controls
|
||||
-- Converted from skhdrc logic; expanded with per‑display grids,
|
||||
-- app rules with groups, wrap‑around focus, cross‑display moves,
|
||||
-- and overlay/notification toggles.
|
||||
-- Author: Ismo Vuorinen (ivuorinen)
|
||||
|
||||
--------------------------------------------------
|
||||
-- Caps Lock as Meh key (Shift+Control+Alt)
|
||||
--------------------------------------------------
|
||||
-- Prerequisites:
|
||||
-- 1. Go to System Settings → Keyboard → Keyboard Shortcuts → Modifier Keys
|
||||
-- 2. Set Caps Lock to "No Action" (you mentioned you already did this)
|
||||
-- 3. Install Karabiner-Elements: brew install --cask karabiner-elements
|
||||
-- 4. Open Karabiner-Elements, go to "Simple Modifications"
|
||||
-- 5. Add: caps_lock → f18
|
||||
--
|
||||
-- Then you can use F18 as your Meh key in Hammerspoon:
|
||||
local f18 = hs.hotkey.modal.new()
|
||||
|
||||
-- Capture F18 key press/release
|
||||
hs.hotkey.bind({}, 'F18', function()
|
||||
f18:enter()
|
||||
end, function()
|
||||
f18:exit()
|
||||
end)
|
||||
|
||||
-- Meh (F18/Caps Lock) key bindings for window management
|
||||
-- These provide quick access to common window operations
|
||||
|
||||
-- Helper function to get focused window
|
||||
local function W()
|
||||
return hs.window.focusedWindow()
|
||||
end
|
||||
|
||||
-- Window positioning: thirds (U/I/O)
|
||||
f18:bind({}, 'u', function()
|
||||
local w = W()
|
||||
if w then
|
||||
w:moveToUnit({ x = 0, y = 0, w = 1 / 3, h = 1 }, 0)
|
||||
end
|
||||
end)
|
||||
f18:bind({}, 'i', function()
|
||||
local w = W()
|
||||
if w then
|
||||
w:moveToUnit({ x = 1 / 3, y = 0, w = 1 / 3, h = 1 }, 0)
|
||||
end
|
||||
end)
|
||||
f18:bind({}, 'o', function()
|
||||
local w = W()
|
||||
if w then
|
||||
w:moveToUnit({ x = 2 / 3, y = 0, w = 1 / 3, h = 1 }, 0)
|
||||
end
|
||||
end)
|
||||
|
||||
-- Window positioning: half width, full height (Y)
|
||||
f18:bind({}, 'y', function()
|
||||
local w = W()
|
||||
if w then
|
||||
w:moveToUnit({ x = 0, y = 0, w = 0.5, h = 1 }, 0)
|
||||
end
|
||||
end)
|
||||
|
||||
-- Cycle through all windows (H/L)
|
||||
-- We need to maintain state to properly cycle through all windows
|
||||
local windowCycleIndex = 1
|
||||
local windowCycleList = {}
|
||||
local lastCycleTime = 0
|
||||
|
||||
local function getWindowCycleList()
|
||||
local currentTime = hs.timer.secondsSinceEpoch()
|
||||
-- Reset if more than 2 seconds have passed since last cycle
|
||||
if currentTime - lastCycleTime > 2 then
|
||||
windowCycleIndex = 1
|
||||
windowCycleList = hs.window.orderedWindows()
|
||||
end
|
||||
lastCycleTime = currentTime
|
||||
return windowCycleList
|
||||
end
|
||||
|
||||
f18:bind({}, 'h', function()
|
||||
local windows = getWindowCycleList()
|
||||
if #windows <= 1 then
|
||||
return
|
||||
end
|
||||
|
||||
-- Cycle backward
|
||||
windowCycleIndex = windowCycleIndex - 1
|
||||
if windowCycleIndex < 1 then
|
||||
windowCycleIndex = #windows
|
||||
end
|
||||
|
||||
windows[windowCycleIndex]:focus()
|
||||
end)
|
||||
|
||||
f18:bind({}, 'l', function()
|
||||
local windows = getWindowCycleList()
|
||||
if #windows <= 1 then
|
||||
return
|
||||
end
|
||||
|
||||
-- Cycle forward
|
||||
windowCycleIndex = windowCycleIndex + 1
|
||||
if windowCycleIndex > #windows then
|
||||
windowCycleIndex = 1
|
||||
end
|
||||
|
||||
windows[windowCycleIndex]:focus()
|
||||
end)
|
||||
|
||||
-- Window sizing: maximize (Up/J) and center (Down)
|
||||
f18:bind({}, 'up', function()
|
||||
local w = W()
|
||||
if w then
|
||||
w:maximize(0)
|
||||
end
|
||||
end)
|
||||
f18:bind({}, 'j', function()
|
||||
local w = W()
|
||||
if w then
|
||||
w:maximize(0)
|
||||
end
|
||||
end)
|
||||
f18:bind({}, 'down', function()
|
||||
local w = W()
|
||||
if not w then
|
||||
return
|
||||
end
|
||||
local f = w:frame()
|
||||
local sf = w:screen():frame()
|
||||
if f.w < sf.w * 0.95 then
|
||||
w:maximize(0)
|
||||
else
|
||||
local ww, hh = math.floor(sf.w * 0.5), math.floor(sf.h * 0.9)
|
||||
local xx = sf.x + math.floor((sf.w - ww) / 2)
|
||||
local yy = sf.y + math.floor((sf.h - hh) / 2)
|
||||
w:setFrame({ x = xx, y = yy, w = ww, h = hh }, 0)
|
||||
end
|
||||
end)
|
||||
f18:bind({}, 'k', function()
|
||||
local w = W()
|
||||
if w then
|
||||
local sf = w:screen():frame()
|
||||
local ww, hh = math.floor(sf.w * 0.9), math.floor(sf.h * 0.9)
|
||||
local xx = sf.x + math.floor((sf.w - ww) / 2)
|
||||
local yy = sf.y + math.floor((sf.h - hh) / 2)
|
||||
w:setFrame({ x = xx, y = yy, w = ww, h = hh }, 0)
|
||||
end
|
||||
end)
|
||||
|
||||
-- Move to next/previous screen (. and ,)
|
||||
f18:bind({}, '.', function()
|
||||
local w = W()
|
||||
if w then
|
||||
local s = w:screen()
|
||||
local ns = s:toEast() or s:toWest()
|
||||
if ns then
|
||||
w:moveToScreen(ns, true, true, 0)
|
||||
end
|
||||
end
|
||||
end)
|
||||
f18:bind({}, ',', function()
|
||||
local w = W()
|
||||
if w then
|
||||
local s = w:screen()
|
||||
local ps = s:toWest() or s:toEast()
|
||||
if ps then
|
||||
w:moveToScreen(ps, true, true, 0)
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
-- Window positioning: halves (Left/Right arrows)
|
||||
f18:bind({}, 'left', function()
|
||||
local w = W()
|
||||
if w then
|
||||
w:moveToUnit(hs.layout.left50, 0)
|
||||
end
|
||||
end)
|
||||
f18:bind({}, 'right', function()
|
||||
local w = W()
|
||||
if w then
|
||||
w:moveToUnit(hs.layout.right50, 0)
|
||||
end
|
||||
end)
|
||||
|
||||
-- Paste from clipboard with Meh + V
|
||||
f18:bind({}, 'v', function()
|
||||
hs.eventtap.keyStrokes(hs.pasteboard.getContents())
|
||||
end)
|
||||
|
||||
-- Paste 1Password secret with Meh + P
|
||||
f18:bind({}, 'p', function()
|
||||
local output, status = hs.execute('op read "op://Svea/3hzhctmvovbwlgulv7mgy25rf4/login-input"', true)
|
||||
if status then
|
||||
hs.eventtap.keyStrokes(output:gsub('%s+$', '')) -- trim trailing whitespace
|
||||
else
|
||||
hs.alert.show('1Password CLI error')
|
||||
end
|
||||
end)
|
||||
|
||||
-- require 'generate_emmylua'
|
||||
@@ -9,31 +9,31 @@ function __fish_aqua_no_subcommand --description 'Test if there has been any sub
|
||||
return 0
|
||||
end
|
||||
|
||||
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l log-level -r -d 'log level'
|
||||
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l config -s c -r -d 'configuration file path'
|
||||
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l disable-cosign -d 'Disable Cosign verification'
|
||||
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l disable-slsa -d 'Disable SLSA verification'
|
||||
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l disable-github-artifact-attestation -d 'Disable GitHub Artifact Attestations verification'
|
||||
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l trace -r -d 'trace output file path'
|
||||
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l cpu-profile -r -d 'cpu profile output file path'
|
||||
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l help -s h -d 'show help'
|
||||
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l version -s v -d 'print the version'
|
||||
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l help -s h -d 'show help'
|
||||
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l version -s v -d 'print the version'
|
||||
complete -c aqua -n __fish_aqua_no_subcommand -f -l log-level -r -d 'log level'
|
||||
complete -c aqua -n __fish_aqua_no_subcommand -f -l config -s c -r -d 'configuration file path'
|
||||
complete -c aqua -n __fish_aqua_no_subcommand -f -l disable-cosign -d 'Disable Cosign verification'
|
||||
complete -c aqua -n __fish_aqua_no_subcommand -f -l disable-slsa -d 'Disable SLSA verification'
|
||||
complete -c aqua -n __fish_aqua_no_subcommand -f -l disable-github-artifact-attestation -d 'Disable GitHub Artifact Attestations verification'
|
||||
complete -c aqua -n __fish_aqua_no_subcommand -f -l trace -r -d 'trace output file path'
|
||||
complete -c aqua -n __fish_aqua_no_subcommand -f -l cpu-profile -r -d 'cpu profile output file path'
|
||||
complete -c aqua -n __fish_aqua_no_subcommand -f -l help -s h -d 'show help'
|
||||
complete -c aqua -n __fish_aqua_no_subcommand -f -l version -s v -d 'print the version'
|
||||
complete -c aqua -n __fish_aqua_no_subcommand -f -l help -s h -d 'show help'
|
||||
complete -c aqua -n __fish_aqua_no_subcommand -f -l version -s v -d 'print the version'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from init' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'init' -d 'Create a configuration file if it doesn\'t exist'
|
||||
complete -r -c aqua -n __fish_aqua_no_subcommand -a init -d 'Create a configuration file if it doesn\'t exist'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from init' -f -l use-import-dir -s u -d 'Use import_dir'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from init' -f -l import-dir -s i -r -d 'import_dir'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from init' -f -l import-dir -s i -r -d import_dir
|
||||
complete -c aqua -n '__fish_seen_subcommand_from init' -f -l create-dir -s d -d 'Create a directory named aqua and create aqua.yaml in it'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from install i' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'install i' -d 'Install tools'
|
||||
complete -r -c aqua -n __fish_aqua_no_subcommand -a 'install i' -d 'Install tools'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from install i' -f -l only-link -s l -d 'create links but skip downloading packages'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from install i' -f -l test -d 'This flag was deprecated and had no meaning from aqua v2.0.0. This flag will be removed in aqua v3.0.0. https://github.com/aquaproj/aqua/issues/1691'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from install i' -f -l all -s a -d 'install all aqua configuration packages'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from install i' -f -l tags -s t -r -d 'filter installed packages with tags'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from install i' -f -l exclude-tags -r -d 'exclude installed packages with tags'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'generate g' -d 'Search packages in registries and output the configuration interactively'
|
||||
complete -r -c aqua -n __fish_aqua_no_subcommand -a 'generate g' -d 'Search packages in registries and output the configuration interactively'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l f -r -d 'the file path of packages list. When the value is "-", the list is passed from the standard input'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l i -d 'Insert packages to configuration file'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l pin -d 'Pin version'
|
||||
@@ -43,14 +43,14 @@ complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l o -r -d 'inse
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l select-version -s s -d 'Select the installed version interactively. Default to display 30 versions, use --limit/-l to change it.'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l limit -s l -r -d 'The maximum number of versions. Non-positive number refers to no limit.'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update-aqua upa' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'update-aqua upa' -d 'Update aqua'
|
||||
complete -r -c aqua -n __fish_aqua_no_subcommand -a 'update-aqua upa' -d 'Update aqua'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update-checksum upc' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'update-checksum upc' -d 'Create or Update aqua-checksums.json'
|
||||
complete -r -c aqua -n __fish_aqua_no_subcommand -a 'update-checksum upc' -d 'Create or Update aqua-checksums.json'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update-checksum upc' -f -l all -s a -d 'Create or Update all aqua-checksums.json including global configuration'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update-checksum upc' -f -l deep -d 'This flag was deprecated and had no meaning from aqua v2.0.0. This flag will be removed in aqua v3.0.0. https://github.com/aquaproj/aqua/issues/1769'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update-checksum upc' -f -l prune -d 'Remove unused checksums'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update up' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'update up' -d 'Update registries and packages'
|
||||
complete -r -c aqua -n __fish_aqua_no_subcommand -a 'update up' -d 'Update registries and packages'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update up' -f -l i -d 'Select packages with fuzzy finder'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update up' -f -l select-version -s s -d 'Select the version with fuzzy finder. Default to display 30 versions, use --limit/-l to change it.'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update up' -f -l only-registry -s r -d 'Update only registries'
|
||||
@@ -59,57 +59,57 @@ complete -c aqua -n '__fish_seen_subcommand_from update up' -f -l limit -s l -r
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update up' -f -l tags -s t -r -d 'filter installed packages with tags'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update up' -f -l exclude-tags -r -d 'exclude installed packages with tags'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from completion' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'completion' -d 'Output shell completion script for bash, zsh, or fish'
|
||||
complete -r -c aqua -n __fish_aqua_no_subcommand -a completion -d 'Output shell completion script for bash, zsh, or fish'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from completion' -f -l help -s h -d 'show help'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from bash' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_seen_subcommand_from completion' -a 'bash' -d 'Output shell completion script for bash'
|
||||
complete -r -c aqua -n '__fish_seen_subcommand_from completion' -a bash -d 'Output shell completion script for bash'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from zsh' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_seen_subcommand_from completion' -a 'zsh' -d 'Output shell completion script for zsh'
|
||||
complete -r -c aqua -n '__fish_seen_subcommand_from completion' -a zsh -d 'Output shell completion script for zsh'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from fish' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_seen_subcommand_from completion' -a 'fish' -d 'Output shell completion script for fish'
|
||||
complete -r -c aqua -n '__fish_seen_subcommand_from completion' -a fish -d 'Output shell completion script for fish'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from fish' -f -l help -s h -d 'show help'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from help h' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_seen_subcommand_from fish' -a 'help h' -d 'Shows a list of commands or help for one command'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from help h' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_seen_subcommand_from completion' -a 'help h' -d 'Shows a list of commands or help for one command'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from which' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'which' -d 'Output the absolute file path of the given command'
|
||||
complete -r -c aqua -n __fish_aqua_no_subcommand -a which -d 'Output the absolute file path of the given command'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from which' -f -l version -s v -d 'Output the given package version'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from info' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'info' -d 'Show information'
|
||||
complete -r -c aqua -n __fish_aqua_no_subcommand -a info -d 'Show information'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from remove rm' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'remove rm' -d 'Uninstall packages'
|
||||
complete -r -c aqua -n __fish_aqua_no_subcommand -a 'remove rm' -d 'Uninstall packages'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from remove rm' -f -l all -s a -d 'uninstall all packages'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from remove rm' -f -l mode -s m -r -d 'Removed target modes. l: link, p: package'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from remove rm' -f -l i -d 'Select packages with a Fuzzy Finder'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from vacuum' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'vacuum' -d 'Remove unused installed packages'
|
||||
complete -r -c aqua -n __fish_aqua_no_subcommand -a vacuum -d 'Remove unused installed packages'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from vacuum' -f -l init -d 'Create timestamp files.'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from vacuum' -f -l days -s d -r -d 'Expiration days'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from cp' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'cp' -d 'Copy executable files in a directory'
|
||||
complete -r -c aqua -n __fish_aqua_no_subcommand -a cp -d 'Copy executable files in a directory'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from cp' -f -l o -r -d 'destination directory'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from cp' -f -l all -s a -d 'install all aqua configuration packages'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from cp' -f -l tags -s t -r -d 'filter installed packages with tags'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from cp' -f -l exclude-tags -r -d 'exclude installed packages with tags'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from policy' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'policy' -d 'Manage Policy'
|
||||
complete -r -c aqua -n __fish_aqua_no_subcommand -a policy -d 'Manage Policy'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from allow' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_seen_subcommand_from policy' -a 'allow' -d 'Allow a policy file'
|
||||
complete -r -c aqua -n '__fish_seen_subcommand_from policy' -a allow -d 'Allow a policy file'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from deny' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_seen_subcommand_from policy' -a 'deny' -d 'Deny a policy file'
|
||||
complete -r -c aqua -n '__fish_seen_subcommand_from policy' -a deny -d 'Deny a policy file'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from init' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_seen_subcommand_from policy' -a 'init' -d 'Create a policy file if it doesn\'t exist'
|
||||
complete -r -c aqua -n '__fish_seen_subcommand_from policy' -a init -d 'Create a policy file if it doesn\'t exist'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from init-policy' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'init-policy' -d '[Deprecated] Create a policy file if it doesn\'t exist'
|
||||
complete -r -c aqua -n __fish_aqua_no_subcommand -a init-policy -d '[Deprecated] Create a policy file if it doesn\'t exist'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from exec' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'exec' -d 'Execute tool'
|
||||
complete -r -c aqua -n __fish_aqua_no_subcommand -a exec -d 'Execute tool'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from list' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'list' -d 'List packages in Registries'
|
||||
complete -r -c aqua -n __fish_aqua_no_subcommand -a list -d 'List packages in Registries'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from list' -f -l installed -s i -d 'List installed packages'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from list' -f -l all -s a -d 'List global configuration packages too'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate-registry gr' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'generate-registry gr' -d 'Generate a registry\'s package configuration'
|
||||
complete -r -c aqua -n __fish_aqua_no_subcommand -a 'generate-registry gr' -d 'Generate a registry\'s package configuration'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate-registry gr' -f -l out-testdata -r -d 'A file path where the testdata is outputted'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate-registry gr' -f -l cmd -r -d 'A list of commands joined with commas \',\''
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate-registry gr' -f -l generate-config -s c -r -d 'A configuration file path'
|
||||
@@ -117,8 +117,8 @@ complete -c aqua -n '__fish_seen_subcommand_from generate-registry gr' -f -l lim
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate-registry gr' -f -l deep -d 'This flag was deprecated and had no meaning from aqua v2.15.0. This flag will be removed in aqua v3.0.0. https://github.com/aquaproj/aqua/issues/2351'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate-registry gr' -f -l init -d 'Generate a configuration file'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from version' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'version' -d 'Show version'
|
||||
complete -r -c aqua -n __fish_aqua_no_subcommand -a version -d 'Show version'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from root-dir' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'root-dir' -d 'Output the aqua root directory (AQUA_ROOT_DIR)'
|
||||
complete -r -c aqua -n __fish_aqua_no_subcommand -a root-dir -d 'Output the aqua root directory (AQUA_ROOT_DIR)'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from help h' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'help h' -d 'Shows a list of commands or help for one command'
|
||||
complete -r -c aqua -n __fish_aqua_no_subcommand -a 'help h' -d 'Shows a list of commands or help for one command'
|
||||
|
||||
@@ -1,46 +1,46 @@
|
||||
# Print an optspec for argparse to handle cmd's options that are independent of any subcommand.
|
||||
function __fish_bob_global_optspecs
|
||||
string join \n h/help V/version
|
||||
string join \n h/help V/version
|
||||
end
|
||||
|
||||
function __fish_bob_needs_command
|
||||
# Figure out if the current invocation already has a command.
|
||||
set -l cmd (commandline -opc)
|
||||
set -e cmd[1]
|
||||
argparse -s (__fish_bob_global_optspecs) -- $cmd 2>/dev/null
|
||||
or return
|
||||
if set -q argv[1]
|
||||
# Also print the command, so this can be used to figure out what it is.
|
||||
echo $argv[1]
|
||||
return 1
|
||||
end
|
||||
return 0
|
||||
# Figure out if the current invocation already has a command.
|
||||
set -l cmd (commandline -opc)
|
||||
set -e cmd[1]
|
||||
argparse -s (__fish_bob_global_optspecs) -- $cmd 2>/dev/null
|
||||
or return
|
||||
if set -q argv[1]
|
||||
# Also print the command, so this can be used to figure out what it is.
|
||||
echo $argv[1]
|
||||
return 1
|
||||
end
|
||||
return 0
|
||||
end
|
||||
|
||||
function __fish_bob_using_subcommand
|
||||
set -l cmd (__fish_bob_needs_command)
|
||||
test -z "$cmd"
|
||||
and return 1
|
||||
contains -- $cmd[1] $argv
|
||||
set -l cmd (__fish_bob_needs_command)
|
||||
test -z "$cmd"
|
||||
and return 1
|
||||
contains -- $cmd[1] $argv
|
||||
end
|
||||
|
||||
complete -c bob -n "__fish_bob_needs_command" -s h -l help -d 'Print help'
|
||||
complete -c bob -n "__fish_bob_needs_command" -s V -l version -d 'Print version'
|
||||
complete -c bob -n "__fish_bob_needs_command" -f -a "use" -d 'Switch to the specified version, by default will auto-invoke install command if the version is not installed already'
|
||||
complete -c bob -n "__fish_bob_needs_command" -f -a "install" -d 'Install the specified version, can also be used to update out-of-date nightly version'
|
||||
complete -c bob -n "__fish_bob_needs_command" -f -a "sync" -d 'If Config::version_sync_file_location is set, the version in that file will be parsed and installed'
|
||||
complete -c bob -n "__fish_bob_needs_command" -f -a "uninstall" -d 'Uninstall the specified version'
|
||||
complete -c bob -n "__fish_bob_needs_command" -f -a "rm" -d 'Uninstall the specified version'
|
||||
complete -c bob -n "__fish_bob_needs_command" -f -a "rollback" -d 'Rollback to an existing nightly rollback'
|
||||
complete -c bob -n "__fish_bob_needs_command" -f -a "erase" -d 'Erase any change bob ever made, including neovim installation, neovim version downloads and registry changes'
|
||||
complete -c bob -n "__fish_bob_needs_command" -f -a "list" -d 'List all installed and used versions'
|
||||
complete -c bob -n "__fish_bob_needs_command" -f -a "ls" -d 'List all installed and used versions'
|
||||
complete -c bob -n "__fish_bob_needs_command" -f -a "list-remote"
|
||||
complete -c bob -n "__fish_bob_needs_command" -f -a "ls-remote"
|
||||
complete -c bob -n "__fish_bob_needs_command" -f -a "complete" -d 'Generate shell completion'
|
||||
complete -c bob -n "__fish_bob_needs_command" -f -a "update" -d 'Update existing version |nightly|stable|--all|'
|
||||
complete -c bob -n "__fish_bob_needs_command" -f -a "run"
|
||||
complete -c bob -n "__fish_bob_needs_command" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
|
||||
complete -c bob -n __fish_bob_needs_command -s h -l help -d 'Print help'
|
||||
complete -c bob -n __fish_bob_needs_command -s V -l version -d 'Print version'
|
||||
complete -c bob -n __fish_bob_needs_command -f -a use -d 'Switch to the specified version, by default will auto-invoke install command if the version is not installed already'
|
||||
complete -c bob -n __fish_bob_needs_command -f -a install -d 'Install the specified version, can also be used to update out-of-date nightly version'
|
||||
complete -c bob -n __fish_bob_needs_command -f -a sync -d 'If Config::version_sync_file_location is set, the version in that file will be parsed and installed'
|
||||
complete -c bob -n __fish_bob_needs_command -f -a uninstall -d 'Uninstall the specified version'
|
||||
complete -c bob -n __fish_bob_needs_command -f -a rm -d 'Uninstall the specified version'
|
||||
complete -c bob -n __fish_bob_needs_command -f -a rollback -d 'Rollback to an existing nightly rollback'
|
||||
complete -c bob -n __fish_bob_needs_command -f -a erase -d 'Erase any change bob ever made, including neovim installation, neovim version downloads and registry changes'
|
||||
complete -c bob -n __fish_bob_needs_command -f -a list -d 'List all installed and used versions'
|
||||
complete -c bob -n __fish_bob_needs_command -f -a ls -d 'List all installed and used versions'
|
||||
complete -c bob -n __fish_bob_needs_command -f -a list-remote
|
||||
complete -c bob -n __fish_bob_needs_command -f -a ls-remote
|
||||
complete -c bob -n __fish_bob_needs_command -f -a complete -d 'Generate shell completion'
|
||||
complete -c bob -n __fish_bob_needs_command -f -a update -d 'Update existing version |nightly|stable|--all|'
|
||||
complete -c bob -n __fish_bob_needs_command -f -a run
|
||||
complete -c bob -n __fish_bob_needs_command -f -a help -d 'Print this message or the help of the given subcommand(s)'
|
||||
complete -c bob -n "__fish_bob_using_subcommand use" -s n -l no-install -d 'Whether not to auto-invoke install command'
|
||||
complete -c bob -n "__fish_bob_using_subcommand use" -s h -l help -d 'Print help (see more with \'--help\')'
|
||||
complete -c bob -n "__fish_bob_using_subcommand install" -s h -l help -d 'Print help (see more with \'--help\')'
|
||||
@@ -57,15 +57,15 @@ complete -c bob -n "__fish_bob_using_subcommand complete" -s h -l help -d 'Print
|
||||
complete -c bob -n "__fish_bob_using_subcommand update" -s a -l all -d 'Apply the update to all versions'
|
||||
complete -c bob -n "__fish_bob_using_subcommand update" -s h -l help -d 'Print help'
|
||||
complete -c bob -n "__fish_bob_using_subcommand run" -s h -l help -d 'Print help'
|
||||
complete -c bob -n "__fish_bob_using_subcommand help; and not __fish_seen_subcommand_from use install sync uninstall rollback erase list list-remote complete update run help" -f -a "use" -d 'Switch to the specified version, by default will auto-invoke install command if the version is not installed already'
|
||||
complete -c bob -n "__fish_bob_using_subcommand help; and not __fish_seen_subcommand_from use install sync uninstall rollback erase list list-remote complete update run help" -f -a "install" -d 'Install the specified version, can also be used to update out-of-date nightly version'
|
||||
complete -c bob -n "__fish_bob_using_subcommand help; and not __fish_seen_subcommand_from use install sync uninstall rollback erase list list-remote complete update run help" -f -a "sync" -d 'If Config::version_sync_file_location is set, the version in that file will be parsed and installed'
|
||||
complete -c bob -n "__fish_bob_using_subcommand help; and not __fish_seen_subcommand_from use install sync uninstall rollback erase list list-remote complete update run help" -f -a "uninstall" -d 'Uninstall the specified version'
|
||||
complete -c bob -n "__fish_bob_using_subcommand help; and not __fish_seen_subcommand_from use install sync uninstall rollback erase list list-remote complete update run help" -f -a "rollback" -d 'Rollback to an existing nightly rollback'
|
||||
complete -c bob -n "__fish_bob_using_subcommand help; and not __fish_seen_subcommand_from use install sync uninstall rollback erase list list-remote complete update run help" -f -a "erase" -d 'Erase any change bob ever made, including neovim installation, neovim version downloads and registry changes'
|
||||
complete -c bob -n "__fish_bob_using_subcommand help; and not __fish_seen_subcommand_from use install sync uninstall rollback erase list list-remote complete update run help" -f -a "list" -d 'List all installed and used versions'
|
||||
complete -c bob -n "__fish_bob_using_subcommand help; and not __fish_seen_subcommand_from use install sync uninstall rollback erase list list-remote complete update run help" -f -a "list-remote"
|
||||
complete -c bob -n "__fish_bob_using_subcommand help; and not __fish_seen_subcommand_from use install sync uninstall rollback erase list list-remote complete update run help" -f -a "complete" -d 'Generate shell completion'
|
||||
complete -c bob -n "__fish_bob_using_subcommand help; and not __fish_seen_subcommand_from use install sync uninstall rollback erase list list-remote complete update run help" -f -a "update" -d 'Update existing version |nightly|stable|--all|'
|
||||
complete -c bob -n "__fish_bob_using_subcommand help; and not __fish_seen_subcommand_from use install sync uninstall rollback erase list list-remote complete update run help" -f -a "run"
|
||||
complete -c bob -n "__fish_bob_using_subcommand help; and not __fish_seen_subcommand_from use install sync uninstall rollback erase list list-remote complete update run help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
|
||||
complete -c bob -n "__fish_bob_using_subcommand help; and not __fish_seen_subcommand_from use install sync uninstall rollback erase list list-remote complete update run help" -f -a use -d 'Switch to the specified version, by default will auto-invoke install command if the version is not installed already'
|
||||
complete -c bob -n "__fish_bob_using_subcommand help; and not __fish_seen_subcommand_from use install sync uninstall rollback erase list list-remote complete update run help" -f -a install -d 'Install the specified version, can also be used to update out-of-date nightly version'
|
||||
complete -c bob -n "__fish_bob_using_subcommand help; and not __fish_seen_subcommand_from use install sync uninstall rollback erase list list-remote complete update run help" -f -a sync -d 'If Config::version_sync_file_location is set, the version in that file will be parsed and installed'
|
||||
complete -c bob -n "__fish_bob_using_subcommand help; and not __fish_seen_subcommand_from use install sync uninstall rollback erase list list-remote complete update run help" -f -a uninstall -d 'Uninstall the specified version'
|
||||
complete -c bob -n "__fish_bob_using_subcommand help; and not __fish_seen_subcommand_from use install sync uninstall rollback erase list list-remote complete update run help" -f -a rollback -d 'Rollback to an existing nightly rollback'
|
||||
complete -c bob -n "__fish_bob_using_subcommand help; and not __fish_seen_subcommand_from use install sync uninstall rollback erase list list-remote complete update run help" -f -a erase -d 'Erase any change bob ever made, including neovim installation, neovim version downloads and registry changes'
|
||||
complete -c bob -n "__fish_bob_using_subcommand help; and not __fish_seen_subcommand_from use install sync uninstall rollback erase list list-remote complete update run help" -f -a list -d 'List all installed and used versions'
|
||||
complete -c bob -n "__fish_bob_using_subcommand help; and not __fish_seen_subcommand_from use install sync uninstall rollback erase list list-remote complete update run help" -f -a list-remote
|
||||
complete -c bob -n "__fish_bob_using_subcommand help; and not __fish_seen_subcommand_from use install sync uninstall rollback erase list list-remote complete update run help" -f -a complete -d 'Generate shell completion'
|
||||
complete -c bob -n "__fish_bob_using_subcommand help; and not __fish_seen_subcommand_from use install sync uninstall rollback erase list list-remote complete update run help" -f -a update -d 'Update existing version |nightly|stable|--all|'
|
||||
complete -c bob -n "__fish_bob_using_subcommand help; and not __fish_seen_subcommand_from use install sync uninstall rollback erase list list-remote complete update run help" -f -a run
|
||||
complete -c bob -n "__fish_bob_using_subcommand help; and not __fish_seen_subcommand_from use install sync uninstall rollback erase list list-remote complete update run help" -f -a help -d 'Print this message or the help of the given subcommand(s)'
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
function __docker_debug
|
||||
set -l file "$BASH_COMP_DEBUG_FILE"
|
||||
if test -n "$file"
|
||||
echo "$argv" >> $file
|
||||
echo "$argv" >>$file
|
||||
end
|
||||
end
|
||||
|
||||
@@ -108,7 +108,6 @@ function __docker_requires_order_preservation
|
||||
return 1
|
||||
end
|
||||
|
||||
|
||||
# This function does two things:
|
||||
# - Obtain the completions and store them in the global __docker_comp_results
|
||||
# - Return false if file completion should be performed
|
||||
@@ -215,18 +214,18 @@ end
|
||||
# so we can properly delete any completions provided by another script.
|
||||
# Only do this if the program can be found, or else fish may print some errors; besides,
|
||||
# the existing completions will only be loaded if the program can be found.
|
||||
if type -q "docker"
|
||||
if type -q docker
|
||||
# The space after the program name is essential to trigger completion for the program
|
||||
# and not completion of the program name itself.
|
||||
# Also, we use '> /dev/null 2>&1' since '&>' is not supported in older versions of fish.
|
||||
complete --do-complete "docker " > /dev/null 2>&1
|
||||
complete --do-complete "docker " >/dev/null 2>&1
|
||||
end
|
||||
|
||||
# Remove any pre-existing completions for the program since we will be handling all of them.
|
||||
complete -c docker -e
|
||||
|
||||
# this will get called after the two calls below and clear the $__docker_perform_completion_once_result global
|
||||
complete -c docker -n '__docker_clear_perform_completion_once_result'
|
||||
complete -c docker -n __docker_clear_perform_completion_once_result
|
||||
# The call to __docker_prepare_completions will setup __docker_comp_results
|
||||
# which provides the program's completion choices.
|
||||
# If this doesn't require order preservation, we don't use the -k flag
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
function __git_profile_debug
|
||||
set -l file "$BASH_COMP_DEBUG_FILE"
|
||||
if test -n "$file"
|
||||
echo "$argv" >> $file
|
||||
echo "$argv" >>$file
|
||||
end
|
||||
end
|
||||
|
||||
@@ -160,11 +160,11 @@ end
|
||||
# so we can properly delete any completions provided by another script.
|
||||
# Only do this if the program can be found, or else fish may print some errors; besides,
|
||||
# the existing completions will only be loaded if the program can be found.
|
||||
if type -q "git-profile"
|
||||
if type -q git-profile
|
||||
# The space after the program name is essential to trigger completion for the program
|
||||
# and not completion of the program name itself.
|
||||
# Also, we use '> /dev/null 2>&1' since '&>' is not supported in older versions of fish.
|
||||
complete --do-complete "git-profile " > /dev/null 2>&1
|
||||
complete --do-complete "git-profile " >/dev/null 2>&1
|
||||
end
|
||||
|
||||
# Remove any pre-existing completions for the program since we will be handling all of them.
|
||||
@@ -172,4 +172,4 @@ complete -c git-profile -e
|
||||
|
||||
# The call to __git_profile_prepare_completions will setup __git_profile_comp_results
|
||||
# which provides the program's completion choices.
|
||||
complete -c git-profile -n '__git_profile_prepare_completions' -f -a '$__git_profile_comp_results'
|
||||
complete -c git-profile -n __git_profile_prepare_completions -f -a '$__git_profile_comp_results'
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
function __golangci_lint_debug
|
||||
set -l file "$BASH_COMP_DEBUG_FILE"
|
||||
if test -n "$file"
|
||||
echo "$argv" >> $file
|
||||
echo "$argv" >>$file
|
||||
end
|
||||
end
|
||||
|
||||
@@ -108,7 +108,6 @@ function __golangci_lint_requires_order_preservation
|
||||
return 1
|
||||
end
|
||||
|
||||
|
||||
# This function does two things:
|
||||
# - Obtain the completions and store them in the global __golangci_lint_comp_results
|
||||
# - Return false if file completion should be performed
|
||||
@@ -215,18 +214,18 @@ end
|
||||
# so we can properly delete any completions provided by another script.
|
||||
# Only do this if the program can be found, or else fish may print some errors; besides,
|
||||
# the existing completions will only be loaded if the program can be found.
|
||||
if type -q "golangci-lint"
|
||||
if type -q golangci-lint
|
||||
# The space after the program name is essential to trigger completion for the program
|
||||
# and not completion of the program name itself.
|
||||
# Also, we use '> /dev/null 2>&1' since '&>' is not supported in older versions of fish.
|
||||
complete --do-complete "golangci-lint " > /dev/null 2>&1
|
||||
complete --do-complete "golangci-lint " >/dev/null 2>&1
|
||||
end
|
||||
|
||||
# Remove any pre-existing completions for the program since we will be handling all of them.
|
||||
complete -c golangci-lint -e
|
||||
|
||||
# this will get called after the two calls below and clear the $__golangci_lint_perform_completion_once_result global
|
||||
complete -c golangci-lint -n '__golangci_lint_clear_perform_completion_once_result'
|
||||
complete -c golangci-lint -n __golangci_lint_clear_perform_completion_once_result
|
||||
# The call to __golangci_lint_prepare_completions will setup __golangci_lint_comp_results
|
||||
# which provides the program's completion choices.
|
||||
# If this doesn't require order preservation, we don't use the -k flag
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
function __grype_debug
|
||||
set -l file "$BASH_COMP_DEBUG_FILE"
|
||||
if test -n "$file"
|
||||
echo "$argv" >> $file
|
||||
echo "$argv" >>$file
|
||||
end
|
||||
end
|
||||
|
||||
@@ -108,7 +108,6 @@ function __grype_requires_order_preservation
|
||||
return 1
|
||||
end
|
||||
|
||||
|
||||
# This function does two things:
|
||||
# - Obtain the completions and store them in the global __grype_comp_results
|
||||
# - Return false if file completion should be performed
|
||||
@@ -215,18 +214,18 @@ end
|
||||
# so we can properly delete any completions provided by another script.
|
||||
# Only do this if the program can be found, or else fish may print some errors; besides,
|
||||
# the existing completions will only be loaded if the program can be found.
|
||||
if type -q "grype"
|
||||
if type -q grype
|
||||
# The space after the program name is essential to trigger completion for the program
|
||||
# and not completion of the program name itself.
|
||||
# Also, we use '> /dev/null 2>&1' since '&>' is not supported in older versions of fish.
|
||||
complete --do-complete "grype " > /dev/null 2>&1
|
||||
complete --do-complete "grype " >/dev/null 2>&1
|
||||
end
|
||||
|
||||
# Remove any pre-existing completions for the program since we will be handling all of them.
|
||||
complete -c grype -e
|
||||
|
||||
# this will get called after the two calls below and clear the $__grype_perform_completion_once_result global
|
||||
complete -c grype -n '__grype_clear_perform_completion_once_result'
|
||||
complete -c grype -n __grype_clear_perform_completion_once_result
|
||||
# The call to __grype_prepare_completions will setup __grype_comp_results
|
||||
# which provides the program's completion choices.
|
||||
# If this doesn't require order preservation, we don't use the -k flag
|
||||
|
||||
@@ -54,7 +54,6 @@ for subcommand in airdrop proxy-icon transparency
|
||||
--arguments status --description 'Shows the status of '$subcommand
|
||||
end
|
||||
|
||||
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'airport \
|
||||
--arguments scan --description 'Shows available networks'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'airport \
|
||||
@@ -62,7 +61,6 @@ complete --command mac --condition '__fish_seen_subcommand_from 'airport \
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'airport \
|
||||
--arguments password --description 'Gets the current WiFi network password'
|
||||
|
||||
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'font-smoothing \
|
||||
--arguments on --description 'Enables font smoothing; app IDs can be provided to limit control'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'font-smoothing \
|
||||
|
||||
@@ -2,21 +2,21 @@
|
||||
# Place in ~/.config/fish/completions/phpenv.fish
|
||||
|
||||
# Complete main commands
|
||||
complete -c phpenv -f -n "__fish_use_subcommand" -a "install" -d "Install a PHP version"
|
||||
complete -c phpenv -f -n "__fish_use_subcommand" -a "uninstall" -d "Uninstall a PHP version"
|
||||
complete -c phpenv -f -n "__fish_use_subcommand" -a "use" -d "Use PHP version for current shell"
|
||||
complete -c phpenv -f -n "__fish_use_subcommand" -a "local" -d "Set PHP version for current project"
|
||||
complete -c phpenv -f -n "__fish_use_subcommand" -a "global" -d "Set global PHP version"
|
||||
complete -c phpenv -f -n "__fish_use_subcommand" -a "list" -d "List installed PHP versions"
|
||||
complete -c phpenv -f -n "__fish_use_subcommand" -a "ls" -d "List installed PHP versions"
|
||||
complete -c phpenv -f -n "__fish_use_subcommand" -a "current" -d "Show current PHP version"
|
||||
complete -c phpenv -f -n "__fish_use_subcommand" -a "which" -d "Show path to PHP binary"
|
||||
complete -c phpenv -f -n "__fish_use_subcommand" -a "versions" -d "Show all available versions"
|
||||
complete -c phpenv -f -n "__fish_use_subcommand" -a "doctor" -d "Check phpenv installation"
|
||||
complete -c phpenv -f -n "__fish_use_subcommand" -a "config" -d "Manage configuration"
|
||||
complete -c phpenv -f -n "__fish_use_subcommand" -a "extensions" -d "Manage PHP extensions"
|
||||
complete -c phpenv -f -n "__fish_use_subcommand" -a "ext" -d "Manage PHP extensions"
|
||||
complete -c phpenv -f -n "__fish_use_subcommand" -a "help" -d "Show help"
|
||||
complete -c phpenv -f -n __fish_use_subcommand -a install -d "Install a PHP version"
|
||||
complete -c phpenv -f -n __fish_use_subcommand -a uninstall -d "Uninstall a PHP version"
|
||||
complete -c phpenv -f -n __fish_use_subcommand -a use -d "Use PHP version for current shell"
|
||||
complete -c phpenv -f -n __fish_use_subcommand -a local -d "Set PHP version for current project"
|
||||
complete -c phpenv -f -n __fish_use_subcommand -a global -d "Set global PHP version"
|
||||
complete -c phpenv -f -n __fish_use_subcommand -a list -d "List installed PHP versions"
|
||||
complete -c phpenv -f -n __fish_use_subcommand -a ls -d "List installed PHP versions"
|
||||
complete -c phpenv -f -n __fish_use_subcommand -a current -d "Show current PHP version"
|
||||
complete -c phpenv -f -n __fish_use_subcommand -a which -d "Show path to PHP binary"
|
||||
complete -c phpenv -f -n __fish_use_subcommand -a versions -d "Show all available versions"
|
||||
complete -c phpenv -f -n __fish_use_subcommand -a doctor -d "Check phpenv installation"
|
||||
complete -c phpenv -f -n __fish_use_subcommand -a config -d "Manage configuration"
|
||||
complete -c phpenv -f -n __fish_use_subcommand -a extensions -d "Manage PHP extensions"
|
||||
complete -c phpenv -f -n __fish_use_subcommand -a ext -d "Manage PHP extensions"
|
||||
complete -c phpenv -f -n __fish_use_subcommand -a help -d "Show help"
|
||||
|
||||
# Helper functions for completions
|
||||
function __phpenv_complete_installed_versions
|
||||
@@ -26,13 +26,13 @@ end
|
||||
function __phpenv_complete_available_versions
|
||||
# Try to get dynamic versions first
|
||||
if command -q curl -a command -q jq; and functions -q __phpenv_parse_version_field
|
||||
echo "latest"
|
||||
echo "nightly"
|
||||
echo latest
|
||||
echo nightly
|
||||
echo "5.x"
|
||||
echo "7.x"
|
||||
echo "8.x"
|
||||
__phpenv_parse_version_field "latest" "8.4"
|
||||
__phpenv_parse_version_field "nightly" "8.5"
|
||||
__phpenv_parse_version_field latest "8.4"
|
||||
__phpenv_parse_version_field nightly "8.5"
|
||||
__phpenv_parse_version_field "5.x" "5.6"
|
||||
__phpenv_parse_version_field "7.x" "7.4"
|
||||
__phpenv_parse_version_field "8.x" "8.4"
|
||||
@@ -64,18 +64,18 @@ complete -c phpenv -f -n "__fish_seen_subcommand_from uninstall use local global
|
||||
-a "(__phpenv_complete_installed_versions)" -d "Installed PHP version"
|
||||
|
||||
# Add system option for use command
|
||||
complete -c phpenv -f -n "__fish_seen_subcommand_from use" -a "system" -d "Use system PHP"
|
||||
complete -c phpenv -f -n "__fish_seen_subcommand_from use" -a system -d "Use system PHP"
|
||||
|
||||
# Complete binaries for which command
|
||||
complete -c phpenv -f -n "__fish_seen_subcommand_from which" -a "(__phpenv_complete_binaries)" -d "PHP binary"
|
||||
|
||||
# Complete config subcommands
|
||||
complete -c phpenv -f -n "__fish_seen_subcommand_from config; and not __fish_seen_subcommand_from get set list" \
|
||||
-a "get" -d "Get configuration value"
|
||||
-a get -d "Get configuration value"
|
||||
complete -c phpenv -f -n "__fish_seen_subcommand_from config; and not __fish_seen_subcommand_from get set list" \
|
||||
-a "set" -d "Set configuration value"
|
||||
-a set -d "Set configuration value"
|
||||
complete -c phpenv -f -n "__fish_seen_subcommand_from config; and not __fish_seen_subcommand_from get set list" \
|
||||
-a "list" -d "List all configuration"
|
||||
-a list -d "List all configuration"
|
||||
|
||||
# Complete config keys
|
||||
complete -c phpenv -f -n "__fish_seen_subcommand_from config; and __fish_seen_subcommand_from get set" \
|
||||
@@ -91,27 +91,27 @@ complete -c phpenv -f \
|
||||
complete -c phpenv -f \
|
||||
-n "__fish_seen_subcommand_from extensions ext" \
|
||||
-n "not __fish_seen_subcommand_from install uninstall remove list ls available" \
|
||||
-a "install" -d "Install PHP extension"
|
||||
-a install -d "Install PHP extension"
|
||||
complete -c phpenv -f \
|
||||
-n "__fish_seen_subcommand_from extensions ext" \
|
||||
-n "not __fish_seen_subcommand_from install uninstall remove list ls available" \
|
||||
-a "uninstall" -d "Uninstall PHP extension"
|
||||
-a uninstall -d "Uninstall PHP extension"
|
||||
complete -c phpenv -f \
|
||||
-n "__fish_seen_subcommand_from extensions ext" \
|
||||
-n "not __fish_seen_subcommand_from install uninstall remove list ls available" \
|
||||
-a "remove" -d "Remove PHP extension"
|
||||
-a remove -d "Remove PHP extension"
|
||||
complete -c phpenv -f \
|
||||
-n "__fish_seen_subcommand_from extensions ext" \
|
||||
-n "not __fish_seen_subcommand_from install uninstall remove list ls available" \
|
||||
-a "list" -d "List installed extensions"
|
||||
-a list -d "List installed extensions"
|
||||
complete -c phpenv -f \
|
||||
-n "__fish_seen_subcommand_from extensions ext" \
|
||||
-n "not __fish_seen_subcommand_from install uninstall remove list ls available" \
|
||||
-a "ls" -d "List installed extensions"
|
||||
-a ls -d "List installed extensions"
|
||||
complete -c phpenv -f \
|
||||
-n "__fish_seen_subcommand_from extensions ext" \
|
||||
-n "not __fish_seen_subcommand_from install uninstall remove list ls available" \
|
||||
-a "available" -d "Show available extensions"
|
||||
-a available -d "Show available extensions"
|
||||
|
||||
# Complete extension names
|
||||
complete -c phpenv -f \
|
||||
|
||||
@@ -9,14 +9,14 @@ function __fish_pinact_no_subcommand --description 'Test if there has been any s
|
||||
return 0
|
||||
end
|
||||
|
||||
complete -c pinact -n '__fish_pinact_no_subcommand' -f -l log-level -r -d 'log level'
|
||||
complete -c pinact -n '__fish_pinact_no_subcommand' -f -l config -s c -r -d 'configuration file path'
|
||||
complete -c pinact -n '__fish_pinact_no_subcommand' -f -l help -s h -d 'show help'
|
||||
complete -c pinact -n '__fish_pinact_no_subcommand' -f -l version -s v -d 'print the version'
|
||||
complete -x -c pinact -n '__fish_pinact_no_subcommand' -a 'init' -d 'Create .pinact.yaml if it doesn\'t exist'
|
||||
complete -c pinact -n __fish_pinact_no_subcommand -f -l log-level -r -d 'log level'
|
||||
complete -c pinact -n __fish_pinact_no_subcommand -f -l config -s c -r -d 'configuration file path'
|
||||
complete -c pinact -n __fish_pinact_no_subcommand -f -l help -s h -d 'show help'
|
||||
complete -c pinact -n __fish_pinact_no_subcommand -f -l version -s v -d 'print the version'
|
||||
complete -x -c pinact -n __fish_pinact_no_subcommand -a init -d 'Create .pinact.yaml if it doesn\'t exist'
|
||||
complete -c pinact -n '__fish_seen_subcommand_from init' -f -l help -s h -d 'show help'
|
||||
complete -x -c pinact -n '__fish_seen_subcommand_from init; and not __fish_seen_subcommand_from help h' -a 'help' -d 'Shows a list of commands or help for one command'
|
||||
complete -x -c pinact -n '__fish_pinact_no_subcommand' -a 'run' -d 'Pin GitHub Actions versions'
|
||||
complete -x -c pinact -n '__fish_seen_subcommand_from init; and not __fish_seen_subcommand_from help h' -a help -d 'Shows a list of commands or help for one command'
|
||||
complete -x -c pinact -n __fish_pinact_no_subcommand -a run -d 'Pin GitHub Actions versions'
|
||||
complete -c pinact -n '__fish_seen_subcommand_from run' -f -l verify -s v -d 'Verify if pairs of commit SHA and version are correct'
|
||||
complete -c pinact -n '__fish_seen_subcommand_from run' -f -l check -d 'Exit with a non-zero status code if actions are not pinned. If this is true, files aren\'t updated'
|
||||
complete -c pinact -n '__fish_seen_subcommand_from run' -f -l update -s u -d 'Update actions to latest versions'
|
||||
@@ -28,27 +28,27 @@ complete -c pinact -n '__fish_seen_subcommand_from run' -f -l repo-name -r -d 'G
|
||||
complete -c pinact -n '__fish_seen_subcommand_from run' -f -l sha -r -d 'Commit SHA to be reviewed'
|
||||
complete -c pinact -n '__fish_seen_subcommand_from run' -f -l pr -r -d 'GitHub pull request number'
|
||||
complete -c pinact -n '__fish_seen_subcommand_from run' -f -l help -s h -d 'show help'
|
||||
complete -x -c pinact -n '__fish_seen_subcommand_from run; and not __fish_seen_subcommand_from help h' -a 'help' -d 'Shows a list of commands or help for one command'
|
||||
complete -x -c pinact -n '__fish_pinact_no_subcommand' -a 'migrate' -d 'Migrate .pinact.yaml'
|
||||
complete -x -c pinact -n '__fish_seen_subcommand_from run; and not __fish_seen_subcommand_from help h' -a help -d 'Shows a list of commands or help for one command'
|
||||
complete -x -c pinact -n __fish_pinact_no_subcommand -a migrate -d 'Migrate .pinact.yaml'
|
||||
complete -c pinact -n '__fish_seen_subcommand_from migrate' -f -l help -s h -d 'show help'
|
||||
complete -x -c pinact -n '__fish_seen_subcommand_from migrate; and not __fish_seen_subcommand_from help h' -a 'help' -d 'Shows a list of commands or help for one command'
|
||||
complete -x -c pinact -n '__fish_pinact_no_subcommand' -a 'token' -d 'Manage GitHub Access token'
|
||||
complete -x -c pinact -n '__fish_seen_subcommand_from migrate; and not __fish_seen_subcommand_from help h' -a help -d 'Shows a list of commands or help for one command'
|
||||
complete -x -c pinact -n __fish_pinact_no_subcommand -a token -d 'Manage GitHub Access token'
|
||||
complete -c pinact -n '__fish_seen_subcommand_from token' -f -l help -s h -d 'show help'
|
||||
complete -x -c pinact -n '__fish_seen_subcommand_from token; and not __fish_seen_subcommand_from set remove rm help h' -a 'set' -d 'Set GitHub Access token'
|
||||
complete -x -c pinact -n '__fish_seen_subcommand_from token; and not __fish_seen_subcommand_from set remove rm help h' -a set -d 'Set GitHub Access token'
|
||||
complete -c pinact -n '__fish_seen_subcommand_from token; and __fish_seen_subcommand_from set' -f -l stdin -d 'Read GitHub Access token from stdin'
|
||||
complete -c pinact -n '__fish_seen_subcommand_from token; and __fish_seen_subcommand_from set' -f -l help -s h -d 'show help'
|
||||
complete -x -c pinact -n '__fish_seen_subcommand_from token; and __fish_seen_subcommand_from set; and not __fish_seen_subcommand_from help h' -a 'help' -d 'Shows a list of commands or help for one command'
|
||||
complete -x -c pinact -n '__fish_seen_subcommand_from token; and not __fish_seen_subcommand_from set remove rm help h' -a 'remove' -d 'Remove GitHub Access token'
|
||||
complete -x -c pinact -n '__fish_seen_subcommand_from token; and __fish_seen_subcommand_from set; and not __fish_seen_subcommand_from help h' -a help -d 'Shows a list of commands or help for one command'
|
||||
complete -x -c pinact -n '__fish_seen_subcommand_from token; and not __fish_seen_subcommand_from set remove rm help h' -a remove -d 'Remove GitHub Access token'
|
||||
complete -c pinact -n '__fish_seen_subcommand_from token; and __fish_seen_subcommand_from remove rm' -f -l help -s h -d 'show help'
|
||||
complete -x -c pinact -n '__fish_seen_subcommand_from token; and __fish_seen_subcommand_from remove rm; and not __fish_seen_subcommand_from help h' -a 'help' -d 'Shows a list of commands or help for one command'
|
||||
complete -x -c pinact -n '__fish_seen_subcommand_from token; and not __fish_seen_subcommand_from set remove rm help h' -a 'help' -d 'Shows a list of commands or help for one command'
|
||||
complete -x -c pinact -n '__fish_pinact_no_subcommand' -a 'version' -d 'Show version'
|
||||
complete -x -c pinact -n '__fish_seen_subcommand_from token; and __fish_seen_subcommand_from remove rm; and not __fish_seen_subcommand_from help h' -a help -d 'Shows a list of commands or help for one command'
|
||||
complete -x -c pinact -n '__fish_seen_subcommand_from token; and not __fish_seen_subcommand_from set remove rm help h' -a help -d 'Shows a list of commands or help for one command'
|
||||
complete -x -c pinact -n __fish_pinact_no_subcommand -a version -d 'Show version'
|
||||
complete -c pinact -n '__fish_seen_subcommand_from version' -f -l json -s j -d 'Output version in JSON format'
|
||||
complete -c pinact -n '__fish_seen_subcommand_from version' -f -l help -s h -d 'show help'
|
||||
complete -x -c pinact -n '__fish_seen_subcommand_from version; and not __fish_seen_subcommand_from help h' -a 'help' -d 'Shows a list of commands or help for one command'
|
||||
complete -x -c pinact -n '__fish_seen_subcommand_from version; and not __fish_seen_subcommand_from help h' -a help -d 'Shows a list of commands or help for one command'
|
||||
complete -c pinact -n '__fish_seen_subcommand_from help-all' -f -l help -s h -d 'show help'
|
||||
complete -x -c pinact -n '__fish_seen_subcommand_from help-all; and not __fish_seen_subcommand_from help h' -a 'help' -d 'Shows a list of commands or help for one command'
|
||||
complete -x -c pinact -n '__fish_pinact_no_subcommand' -a 'help' -d 'Shows a list of commands or help for one command'
|
||||
complete -x -c pinact -n '__fish_pinact_no_subcommand' -a 'completion' -d 'Output shell completion script for bash, zsh, fish, or Powershell'
|
||||
complete -x -c pinact -n '__fish_seen_subcommand_from help-all; and not __fish_seen_subcommand_from help h' -a help -d 'Shows a list of commands or help for one command'
|
||||
complete -x -c pinact -n __fish_pinact_no_subcommand -a help -d 'Shows a list of commands or help for one command'
|
||||
complete -x -c pinact -n __fish_pinact_no_subcommand -a completion -d 'Output shell completion script for bash, zsh, fish, or Powershell'
|
||||
complete -c pinact -n '__fish_seen_subcommand_from completion' -f -l help -s h -d 'show help'
|
||||
complete -x -c pinact -n '__fish_seen_subcommand_from completion; and not __fish_seen_subcommand_from help h' -a 'help' -d 'Shows a list of commands or help for one command'
|
||||
complete -x -c pinact -n '__fish_seen_subcommand_from completion; and not __fish_seen_subcommand_from help h' -a help -d 'Shows a list of commands or help for one command'
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
function __sesh_debug
|
||||
set -l file "$BASH_COMP_DEBUG_FILE"
|
||||
if test -n "$file"
|
||||
echo "$argv" >> $file
|
||||
echo "$argv" >>$file
|
||||
end
|
||||
end
|
||||
|
||||
@@ -108,7 +108,6 @@ function __sesh_requires_order_preservation
|
||||
return 1
|
||||
end
|
||||
|
||||
|
||||
# This function does two things:
|
||||
# - Obtain the completions and store them in the global __sesh_comp_results
|
||||
# - Return false if file completion should be performed
|
||||
@@ -215,18 +214,18 @@ end
|
||||
# so we can properly delete any completions provided by another script.
|
||||
# Only do this if the program can be found, or else fish may print some errors; besides,
|
||||
# the existing completions will only be loaded if the program can be found.
|
||||
if type -q "sesh"
|
||||
if type -q sesh
|
||||
# The space after the program name is essential to trigger completion for the program
|
||||
# and not completion of the program name itself.
|
||||
# Also, we use '> /dev/null 2>&1' since '&>' is not supported in older versions of fish.
|
||||
complete --do-complete "sesh " > /dev/null 2>&1
|
||||
complete --do-complete "sesh " >/dev/null 2>&1
|
||||
end
|
||||
|
||||
# Remove any pre-existing completions for the program since we will be handling all of them.
|
||||
complete -c sesh -e
|
||||
|
||||
# this will get called after the two calls below and clear the $__sesh_perform_completion_once_result global
|
||||
complete -c sesh -n '__sesh_clear_perform_completion_once_result'
|
||||
complete -c sesh -n __sesh_clear_perform_completion_once_result
|
||||
# The call to __sesh_prepare_completions will setup __sesh_comp_results
|
||||
# which provides the program's completion choices.
|
||||
# If this doesn't require order preservation, we don't use the -k flag
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
complete -c wezterm -n "__fish_use_subcommand" -l config-file -d 'Specify the configuration file to use, overrides the normal configuration file resolution' -r -F
|
||||
complete -c wezterm -n "__fish_use_subcommand" -l config -d 'Override specific configuration values' -r
|
||||
complete -c wezterm -n "__fish_use_subcommand" -s n -l skip-config -d 'Skip loading wezterm.lua'
|
||||
complete -c wezterm -n "__fish_use_subcommand" -s h -l help -d 'Print help'
|
||||
complete -c wezterm -n "__fish_use_subcommand" -s V -l version -d 'Print version'
|
||||
complete -c wezterm -n "__fish_use_subcommand" -f -a "start" -d 'Start the GUI, optionally running an alternative program [aliases: -e]'
|
||||
complete -c wezterm -n "__fish_use_subcommand" -f -a "blocking-start" -d 'Start the GUI in blocking mode. You shouldn\'t see this, but you may see it in shell completions because of this open clap issue: <https://github.com/clap-rs/clap/issues/1335>'
|
||||
complete -c wezterm -n "__fish_use_subcommand" -f -a "ssh" -d 'Establish an ssh session'
|
||||
complete -c wezterm -n "__fish_use_subcommand" -f -a "serial" -d 'Open a serial port'
|
||||
complete -c wezterm -n "__fish_use_subcommand" -f -a "connect" -d 'Connect to wezterm multiplexer'
|
||||
complete -c wezterm -n "__fish_use_subcommand" -f -a "ls-fonts" -d 'Display information about fonts'
|
||||
complete -c wezterm -n "__fish_use_subcommand" -f -a "show-keys" -d 'Show key assignments'
|
||||
complete -c wezterm -n "__fish_use_subcommand" -f -a "cli" -d 'Interact with experimental mux server'
|
||||
complete -c wezterm -n "__fish_use_subcommand" -f -a "imgcat" -d 'Output an image to the terminal'
|
||||
complete -c wezterm -n "__fish_use_subcommand" -f -a "set-working-directory" -d 'Advise the terminal of the current working directory by emitting an OSC 7 escape sequence'
|
||||
complete -c wezterm -n "__fish_use_subcommand" -f -a "record" -d 'Record a terminal session as an asciicast'
|
||||
complete -c wezterm -n "__fish_use_subcommand" -f -a "replay" -d 'Replay an asciicast terminal session'
|
||||
complete -c wezterm -n "__fish_use_subcommand" -f -a "shell-completion" -d 'Generate shell completion information'
|
||||
complete -c wezterm -n "__fish_use_subcommand" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
|
||||
complete -c wezterm -n __fish_use_subcommand -l config-file -d 'Specify the configuration file to use, overrides the normal configuration file resolution' -r -F
|
||||
complete -c wezterm -n __fish_use_subcommand -l config -d 'Override specific configuration values' -r
|
||||
complete -c wezterm -n __fish_use_subcommand -s n -l skip-config -d 'Skip loading wezterm.lua'
|
||||
complete -c wezterm -n __fish_use_subcommand -s h -l help -d 'Print help'
|
||||
complete -c wezterm -n __fish_use_subcommand -s V -l version -d 'Print version'
|
||||
complete -c wezterm -n __fish_use_subcommand -f -a start -d 'Start the GUI, optionally running an alternative program [aliases: -e]'
|
||||
complete -c wezterm -n __fish_use_subcommand -f -a blocking-start -d 'Start the GUI in blocking mode. You shouldn\'t see this, but you may see it in shell completions because of this open clap issue: <https://github.com/clap-rs/clap/issues/1335>'
|
||||
complete -c wezterm -n __fish_use_subcommand -f -a ssh -d 'Establish an ssh session'
|
||||
complete -c wezterm -n __fish_use_subcommand -f -a serial -d 'Open a serial port'
|
||||
complete -c wezterm -n __fish_use_subcommand -f -a connect -d 'Connect to wezterm multiplexer'
|
||||
complete -c wezterm -n __fish_use_subcommand -f -a ls-fonts -d 'Display information about fonts'
|
||||
complete -c wezterm -n __fish_use_subcommand -f -a show-keys -d 'Show key assignments'
|
||||
complete -c wezterm -n __fish_use_subcommand -f -a cli -d 'Interact with experimental mux server'
|
||||
complete -c wezterm -n __fish_use_subcommand -f -a imgcat -d 'Output an image to the terminal'
|
||||
complete -c wezterm -n __fish_use_subcommand -f -a set-working-directory -d 'Advise the terminal of the current working directory by emitting an OSC 7 escape sequence'
|
||||
complete -c wezterm -n __fish_use_subcommand -f -a record -d 'Record a terminal session as an asciicast'
|
||||
complete -c wezterm -n __fish_use_subcommand -f -a replay -d 'Replay an asciicast terminal session'
|
||||
complete -c wezterm -n __fish_use_subcommand -f -a shell-completion -d 'Generate shell completion information'
|
||||
complete -c wezterm -n __fish_use_subcommand -f -a help -d 'Print this message or the help of the given subcommand(s)'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from start" -l cwd -d 'Specify the current working directory for the initially spawned program' -r -f -a "(__fish_complete_directories)"
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from start" -l class -d 'Override the default windowing system class. The default is "org.wezfurlong.wezterm". Under X11 and Windows this changes the window class. Under Wayland this changes the app_id. This changes the class for all windows spawned by this instance of wezterm, including error, update and ssh authentication dialogs' -r
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from start" -l workspace -d 'Override the default workspace with the provided name. The default is "default"' -r
|
||||
@@ -65,28 +65,28 @@ complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_sub
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -l no-auto-start -d 'Don\'t automatically start the server'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -l prefer-mux -d 'Prefer connecting to a background mux server. The default is to prefer connecting to a running wezterm gui instance'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -s h -l help -d 'Print help'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a "list" -d 'list windows, tabs and panes'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a "list-clients" -d 'list clients'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a "proxy" -d 'start rpc proxy pipe'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a "tlscreds" -d 'obtain tls credentials'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a "move-pane-to-new-tab" -d 'Move a pane into a new tab'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a "split-pane" -d 'split the current pane.
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a list -d 'list windows, tabs and panes'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a list-clients -d 'list clients'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a proxy -d 'start rpc proxy pipe'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a tlscreds -d 'obtain tls credentials'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a move-pane-to-new-tab -d 'Move a pane into a new tab'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a split-pane -d 'split the current pane.
|
||||
Outputs the pane-id for the newly created pane on success'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a "spawn" -d 'Spawn a command into a new window or tab
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a spawn -d 'Spawn a command into a new window or tab
|
||||
Outputs the pane-id for the newly created pane on success'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a "send-text" -d 'Send text to a pane as though it were pasted. If bracketed paste mode is enabled in the pane, then the text will be sent as a bracketed paste'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a "get-text" -d 'Retrieves the textual content of a pane and output it to stdout'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a "activate-pane-direction" -d 'Activate an adjacent pane in the specified direction'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a "get-pane-direction" -d 'Determine the adjacent pane in the specified direction'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a "kill-pane" -d 'Kill a pane'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a "activate-pane" -d 'Activate (focus) a pane'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a "adjust-pane-size" -d 'Adjust the size of a pane directionally'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a "activate-tab" -d 'Activate a tab'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a "set-tab-title" -d 'Change the title of a tab'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a "set-window-title" -d 'Change the title of a window'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a "rename-workspace" -d 'Rename a workspace'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a "zoom-pane" -d 'Zoom, unzoom, or toggle zoom state'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a send-text -d 'Send text to a pane as though it were pasted. If bracketed paste mode is enabled in the pane, then the text will be sent as a bracketed paste'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a get-text -d 'Retrieves the textual content of a pane and output it to stdout'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a activate-pane-direction -d 'Activate an adjacent pane in the specified direction'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a get-pane-direction -d 'Determine the adjacent pane in the specified direction'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a kill-pane -d 'Kill a pane'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a activate-pane -d 'Activate (focus) a pane'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a adjust-pane-size -d 'Adjust the size of a pane directionally'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a activate-tab -d 'Activate a tab'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a set-tab-title -d 'Change the title of a tab'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a set-window-title -d 'Change the title of a window'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a rename-workspace -d 'Rename a workspace'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a zoom-pane -d 'Zoom, unzoom, or toggle zoom state'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a help -d 'Print this message or the help of the given subcommand(s)'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from list" -l format -d 'Controls the output format. "table" and "json" are possible formats' -r
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from list" -s h -l help -d 'Print help'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from list-clients" -l format -d 'Controls the output format. "table" and "json" are possible formats' -r
|
||||
@@ -157,28 +157,28 @@ complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcomm
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from zoom-pane" -l unzoom -d 'Unzooms the pane if it was zoomed'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from zoom-pane" -l toggle -d 'Toggles the zoom state of the pane'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from zoom-pane" -s h -l help -d 'Print help'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a "list" -d 'list windows, tabs and panes'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a "list-clients" -d 'list clients'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a "proxy" -d 'start rpc proxy pipe'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a "tlscreds" -d 'obtain tls credentials'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a "move-pane-to-new-tab" -d 'Move a pane into a new tab'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a "split-pane" -d 'split the current pane.
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a list -d 'list windows, tabs and panes'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a list-clients -d 'list clients'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a proxy -d 'start rpc proxy pipe'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a tlscreds -d 'obtain tls credentials'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a move-pane-to-new-tab -d 'Move a pane into a new tab'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a split-pane -d 'split the current pane.
|
||||
Outputs the pane-id for the newly created pane on success'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a "spawn" -d 'Spawn a command into a new window or tab
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a spawn -d 'Spawn a command into a new window or tab
|
||||
Outputs the pane-id for the newly created pane on success'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a "send-text" -d 'Send text to a pane as though it were pasted. If bracketed paste mode is enabled in the pane, then the text will be sent as a bracketed paste'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a "get-text" -d 'Retrieves the textual content of a pane and output it to stdout'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a "activate-pane-direction" -d 'Activate an adjacent pane in the specified direction'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a "get-pane-direction" -d 'Determine the adjacent pane in the specified direction'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a "kill-pane" -d 'Kill a pane'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a "activate-pane" -d 'Activate (focus) a pane'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a "adjust-pane-size" -d 'Adjust the size of a pane directionally'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a "activate-tab" -d 'Activate a tab'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a "set-tab-title" -d 'Change the title of a tab'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a "set-window-title" -d 'Change the title of a window'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a "rename-workspace" -d 'Rename a workspace'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a "zoom-pane" -d 'Zoom, unzoom, or toggle zoom state'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a send-text -d 'Send text to a pane as though it were pasted. If bracketed paste mode is enabled in the pane, then the text will be sent as a bracketed paste'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a get-text -d 'Retrieves the textual content of a pane and output it to stdout'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a activate-pane-direction -d 'Activate an adjacent pane in the specified direction'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a get-pane-direction -d 'Determine the adjacent pane in the specified direction'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a kill-pane -d 'Kill a pane'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a activate-pane -d 'Activate (focus) a pane'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a adjust-pane-size -d 'Adjust the size of a pane directionally'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a activate-tab -d 'Activate a tab'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a set-tab-title -d 'Change the title of a tab'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a set-window-title -d 'Change the title of a window'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a rename-workspace -d 'Rename a workspace'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a zoom-pane -d 'Zoom, unzoom, or toggle zoom state'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from cli; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane; and not __fish_seen_subcommand_from help" -f -a help -d 'Print this message or the help of the given subcommand(s)'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from imgcat" -l width -d 'Specify the display width; defaults to "auto" which automatically selects an appropriate size. You may also use an integer value `N` to specify the number of cells, or `Npx` to specify the number of pixels, or `N%` to size relative to the terminal width' -r
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from imgcat" -l height -d 'Specify the display height; defaults to "auto" which automatically selects an appropriate size. You may also use an integer value `N` to specify the number of cells, or `Npx` to specify the number of pixels, or `N%` to size relative to the terminal height' -r
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from imgcat" -l position -d 'Set the cursor position prior to displaying the image. The default is to use the current cursor position. Coordinates are expressed in cells with 0,0 being the top left cell position' -r
|
||||
@@ -203,38 +203,38 @@ complete -c wezterm -n "__fish_seen_subcommand_from replay" -l cat -d 'Just emit
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from replay" -s h -l help -d 'Print help'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from shell-completion" -l shell -d 'Which shell to generate for' -r -f -a "{bash '',elvish '',fish '',power-shell '',zsh '',fig ''}"
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from shell-completion" -s h -l help -d 'Print help'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from start; and not __fish_seen_subcommand_from blocking-start; and not __fish_seen_subcommand_from ssh; and not __fish_seen_subcommand_from serial; and not __fish_seen_subcommand_from connect; and not __fish_seen_subcommand_from ls-fonts; and not __fish_seen_subcommand_from show-keys; and not __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from imgcat; and not __fish_seen_subcommand_from set-working-directory; and not __fish_seen_subcommand_from record; and not __fish_seen_subcommand_from replay; and not __fish_seen_subcommand_from shell-completion; and not __fish_seen_subcommand_from help" -f -a "start" -d 'Start the GUI, optionally running an alternative program [aliases: -e]'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from start; and not __fish_seen_subcommand_from blocking-start; and not __fish_seen_subcommand_from ssh; and not __fish_seen_subcommand_from serial; and not __fish_seen_subcommand_from connect; and not __fish_seen_subcommand_from ls-fonts; and not __fish_seen_subcommand_from show-keys; and not __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from imgcat; and not __fish_seen_subcommand_from set-working-directory; and not __fish_seen_subcommand_from record; and not __fish_seen_subcommand_from replay; and not __fish_seen_subcommand_from shell-completion; and not __fish_seen_subcommand_from help" -f -a "blocking-start" -d 'Start the GUI in blocking mode. You shouldn\'t see this, but you may see it in shell completions because of this open clap issue: <https://github.com/clap-rs/clap/issues/1335>'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from start; and not __fish_seen_subcommand_from blocking-start; and not __fish_seen_subcommand_from ssh; and not __fish_seen_subcommand_from serial; and not __fish_seen_subcommand_from connect; and not __fish_seen_subcommand_from ls-fonts; and not __fish_seen_subcommand_from show-keys; and not __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from imgcat; and not __fish_seen_subcommand_from set-working-directory; and not __fish_seen_subcommand_from record; and not __fish_seen_subcommand_from replay; and not __fish_seen_subcommand_from shell-completion; and not __fish_seen_subcommand_from help" -f -a "ssh" -d 'Establish an ssh session'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from start; and not __fish_seen_subcommand_from blocking-start; and not __fish_seen_subcommand_from ssh; and not __fish_seen_subcommand_from serial; and not __fish_seen_subcommand_from connect; and not __fish_seen_subcommand_from ls-fonts; and not __fish_seen_subcommand_from show-keys; and not __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from imgcat; and not __fish_seen_subcommand_from set-working-directory; and not __fish_seen_subcommand_from record; and not __fish_seen_subcommand_from replay; and not __fish_seen_subcommand_from shell-completion; and not __fish_seen_subcommand_from help" -f -a "serial" -d 'Open a serial port'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from start; and not __fish_seen_subcommand_from blocking-start; and not __fish_seen_subcommand_from ssh; and not __fish_seen_subcommand_from serial; and not __fish_seen_subcommand_from connect; and not __fish_seen_subcommand_from ls-fonts; and not __fish_seen_subcommand_from show-keys; and not __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from imgcat; and not __fish_seen_subcommand_from set-working-directory; and not __fish_seen_subcommand_from record; and not __fish_seen_subcommand_from replay; and not __fish_seen_subcommand_from shell-completion; and not __fish_seen_subcommand_from help" -f -a "connect" -d 'Connect to wezterm multiplexer'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from start; and not __fish_seen_subcommand_from blocking-start; and not __fish_seen_subcommand_from ssh; and not __fish_seen_subcommand_from serial; and not __fish_seen_subcommand_from connect; and not __fish_seen_subcommand_from ls-fonts; and not __fish_seen_subcommand_from show-keys; and not __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from imgcat; and not __fish_seen_subcommand_from set-working-directory; and not __fish_seen_subcommand_from record; and not __fish_seen_subcommand_from replay; and not __fish_seen_subcommand_from shell-completion; and not __fish_seen_subcommand_from help" -f -a "ls-fonts" -d 'Display information about fonts'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from start; and not __fish_seen_subcommand_from blocking-start; and not __fish_seen_subcommand_from ssh; and not __fish_seen_subcommand_from serial; and not __fish_seen_subcommand_from connect; and not __fish_seen_subcommand_from ls-fonts; and not __fish_seen_subcommand_from show-keys; and not __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from imgcat; and not __fish_seen_subcommand_from set-working-directory; and not __fish_seen_subcommand_from record; and not __fish_seen_subcommand_from replay; and not __fish_seen_subcommand_from shell-completion; and not __fish_seen_subcommand_from help" -f -a "show-keys" -d 'Show key assignments'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from start; and not __fish_seen_subcommand_from blocking-start; and not __fish_seen_subcommand_from ssh; and not __fish_seen_subcommand_from serial; and not __fish_seen_subcommand_from connect; and not __fish_seen_subcommand_from ls-fonts; and not __fish_seen_subcommand_from show-keys; and not __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from imgcat; and not __fish_seen_subcommand_from set-working-directory; and not __fish_seen_subcommand_from record; and not __fish_seen_subcommand_from replay; and not __fish_seen_subcommand_from shell-completion; and not __fish_seen_subcommand_from help" -f -a "cli" -d 'Interact with experimental mux server'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from start; and not __fish_seen_subcommand_from blocking-start; and not __fish_seen_subcommand_from ssh; and not __fish_seen_subcommand_from serial; and not __fish_seen_subcommand_from connect; and not __fish_seen_subcommand_from ls-fonts; and not __fish_seen_subcommand_from show-keys; and not __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from imgcat; and not __fish_seen_subcommand_from set-working-directory; and not __fish_seen_subcommand_from record; and not __fish_seen_subcommand_from replay; and not __fish_seen_subcommand_from shell-completion; and not __fish_seen_subcommand_from help" -f -a "imgcat" -d 'Output an image to the terminal'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from start; and not __fish_seen_subcommand_from blocking-start; and not __fish_seen_subcommand_from ssh; and not __fish_seen_subcommand_from serial; and not __fish_seen_subcommand_from connect; and not __fish_seen_subcommand_from ls-fonts; and not __fish_seen_subcommand_from show-keys; and not __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from imgcat; and not __fish_seen_subcommand_from set-working-directory; and not __fish_seen_subcommand_from record; and not __fish_seen_subcommand_from replay; and not __fish_seen_subcommand_from shell-completion; and not __fish_seen_subcommand_from help" -f -a "set-working-directory" -d 'Advise the terminal of the current working directory by emitting an OSC 7 escape sequence'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from start; and not __fish_seen_subcommand_from blocking-start; and not __fish_seen_subcommand_from ssh; and not __fish_seen_subcommand_from serial; and not __fish_seen_subcommand_from connect; and not __fish_seen_subcommand_from ls-fonts; and not __fish_seen_subcommand_from show-keys; and not __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from imgcat; and not __fish_seen_subcommand_from set-working-directory; and not __fish_seen_subcommand_from record; and not __fish_seen_subcommand_from replay; and not __fish_seen_subcommand_from shell-completion; and not __fish_seen_subcommand_from help" -f -a "record" -d 'Record a terminal session as an asciicast'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from start; and not __fish_seen_subcommand_from blocking-start; and not __fish_seen_subcommand_from ssh; and not __fish_seen_subcommand_from serial; and not __fish_seen_subcommand_from connect; and not __fish_seen_subcommand_from ls-fonts; and not __fish_seen_subcommand_from show-keys; and not __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from imgcat; and not __fish_seen_subcommand_from set-working-directory; and not __fish_seen_subcommand_from record; and not __fish_seen_subcommand_from replay; and not __fish_seen_subcommand_from shell-completion; and not __fish_seen_subcommand_from help" -f -a "replay" -d 'Replay an asciicast terminal session'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from start; and not __fish_seen_subcommand_from blocking-start; and not __fish_seen_subcommand_from ssh; and not __fish_seen_subcommand_from serial; and not __fish_seen_subcommand_from connect; and not __fish_seen_subcommand_from ls-fonts; and not __fish_seen_subcommand_from show-keys; and not __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from imgcat; and not __fish_seen_subcommand_from set-working-directory; and not __fish_seen_subcommand_from record; and not __fish_seen_subcommand_from replay; and not __fish_seen_subcommand_from shell-completion; and not __fish_seen_subcommand_from help" -f -a "shell-completion" -d 'Generate shell completion information'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from start; and not __fish_seen_subcommand_from blocking-start; and not __fish_seen_subcommand_from ssh; and not __fish_seen_subcommand_from serial; and not __fish_seen_subcommand_from connect; and not __fish_seen_subcommand_from ls-fonts; and not __fish_seen_subcommand_from show-keys; and not __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from imgcat; and not __fish_seen_subcommand_from set-working-directory; and not __fish_seen_subcommand_from record; and not __fish_seen_subcommand_from replay; and not __fish_seen_subcommand_from shell-completion; and not __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane" -f -a "list" -d 'list windows, tabs and panes'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane" -f -a "list-clients" -d 'list clients'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane" -f -a "proxy" -d 'start rpc proxy pipe'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane" -f -a "tlscreds" -d 'obtain tls credentials'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane" -f -a "move-pane-to-new-tab" -d 'Move a pane into a new tab'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane" -f -a "split-pane" -d 'split the current pane.
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from start; and not __fish_seen_subcommand_from blocking-start; and not __fish_seen_subcommand_from ssh; and not __fish_seen_subcommand_from serial; and not __fish_seen_subcommand_from connect; and not __fish_seen_subcommand_from ls-fonts; and not __fish_seen_subcommand_from show-keys; and not __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from imgcat; and not __fish_seen_subcommand_from set-working-directory; and not __fish_seen_subcommand_from record; and not __fish_seen_subcommand_from replay; and not __fish_seen_subcommand_from shell-completion; and not __fish_seen_subcommand_from help" -f -a start -d 'Start the GUI, optionally running an alternative program [aliases: -e]'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from start; and not __fish_seen_subcommand_from blocking-start; and not __fish_seen_subcommand_from ssh; and not __fish_seen_subcommand_from serial; and not __fish_seen_subcommand_from connect; and not __fish_seen_subcommand_from ls-fonts; and not __fish_seen_subcommand_from show-keys; and not __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from imgcat; and not __fish_seen_subcommand_from set-working-directory; and not __fish_seen_subcommand_from record; and not __fish_seen_subcommand_from replay; and not __fish_seen_subcommand_from shell-completion; and not __fish_seen_subcommand_from help" -f -a blocking-start -d 'Start the GUI in blocking mode. You shouldn\'t see this, but you may see it in shell completions because of this open clap issue: <https://github.com/clap-rs/clap/issues/1335>'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from start; and not __fish_seen_subcommand_from blocking-start; and not __fish_seen_subcommand_from ssh; and not __fish_seen_subcommand_from serial; and not __fish_seen_subcommand_from connect; and not __fish_seen_subcommand_from ls-fonts; and not __fish_seen_subcommand_from show-keys; and not __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from imgcat; and not __fish_seen_subcommand_from set-working-directory; and not __fish_seen_subcommand_from record; and not __fish_seen_subcommand_from replay; and not __fish_seen_subcommand_from shell-completion; and not __fish_seen_subcommand_from help" -f -a ssh -d 'Establish an ssh session'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from start; and not __fish_seen_subcommand_from blocking-start; and not __fish_seen_subcommand_from ssh; and not __fish_seen_subcommand_from serial; and not __fish_seen_subcommand_from connect; and not __fish_seen_subcommand_from ls-fonts; and not __fish_seen_subcommand_from show-keys; and not __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from imgcat; and not __fish_seen_subcommand_from set-working-directory; and not __fish_seen_subcommand_from record; and not __fish_seen_subcommand_from replay; and not __fish_seen_subcommand_from shell-completion; and not __fish_seen_subcommand_from help" -f -a serial -d 'Open a serial port'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from start; and not __fish_seen_subcommand_from blocking-start; and not __fish_seen_subcommand_from ssh; and not __fish_seen_subcommand_from serial; and not __fish_seen_subcommand_from connect; and not __fish_seen_subcommand_from ls-fonts; and not __fish_seen_subcommand_from show-keys; and not __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from imgcat; and not __fish_seen_subcommand_from set-working-directory; and not __fish_seen_subcommand_from record; and not __fish_seen_subcommand_from replay; and not __fish_seen_subcommand_from shell-completion; and not __fish_seen_subcommand_from help" -f -a connect -d 'Connect to wezterm multiplexer'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from start; and not __fish_seen_subcommand_from blocking-start; and not __fish_seen_subcommand_from ssh; and not __fish_seen_subcommand_from serial; and not __fish_seen_subcommand_from connect; and not __fish_seen_subcommand_from ls-fonts; and not __fish_seen_subcommand_from show-keys; and not __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from imgcat; and not __fish_seen_subcommand_from set-working-directory; and not __fish_seen_subcommand_from record; and not __fish_seen_subcommand_from replay; and not __fish_seen_subcommand_from shell-completion; and not __fish_seen_subcommand_from help" -f -a ls-fonts -d 'Display information about fonts'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from start; and not __fish_seen_subcommand_from blocking-start; and not __fish_seen_subcommand_from ssh; and not __fish_seen_subcommand_from serial; and not __fish_seen_subcommand_from connect; and not __fish_seen_subcommand_from ls-fonts; and not __fish_seen_subcommand_from show-keys; and not __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from imgcat; and not __fish_seen_subcommand_from set-working-directory; and not __fish_seen_subcommand_from record; and not __fish_seen_subcommand_from replay; and not __fish_seen_subcommand_from shell-completion; and not __fish_seen_subcommand_from help" -f -a show-keys -d 'Show key assignments'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from start; and not __fish_seen_subcommand_from blocking-start; and not __fish_seen_subcommand_from ssh; and not __fish_seen_subcommand_from serial; and not __fish_seen_subcommand_from connect; and not __fish_seen_subcommand_from ls-fonts; and not __fish_seen_subcommand_from show-keys; and not __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from imgcat; and not __fish_seen_subcommand_from set-working-directory; and not __fish_seen_subcommand_from record; and not __fish_seen_subcommand_from replay; and not __fish_seen_subcommand_from shell-completion; and not __fish_seen_subcommand_from help" -f -a cli -d 'Interact with experimental mux server'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from start; and not __fish_seen_subcommand_from blocking-start; and not __fish_seen_subcommand_from ssh; and not __fish_seen_subcommand_from serial; and not __fish_seen_subcommand_from connect; and not __fish_seen_subcommand_from ls-fonts; and not __fish_seen_subcommand_from show-keys; and not __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from imgcat; and not __fish_seen_subcommand_from set-working-directory; and not __fish_seen_subcommand_from record; and not __fish_seen_subcommand_from replay; and not __fish_seen_subcommand_from shell-completion; and not __fish_seen_subcommand_from help" -f -a imgcat -d 'Output an image to the terminal'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from start; and not __fish_seen_subcommand_from blocking-start; and not __fish_seen_subcommand_from ssh; and not __fish_seen_subcommand_from serial; and not __fish_seen_subcommand_from connect; and not __fish_seen_subcommand_from ls-fonts; and not __fish_seen_subcommand_from show-keys; and not __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from imgcat; and not __fish_seen_subcommand_from set-working-directory; and not __fish_seen_subcommand_from record; and not __fish_seen_subcommand_from replay; and not __fish_seen_subcommand_from shell-completion; and not __fish_seen_subcommand_from help" -f -a set-working-directory -d 'Advise the terminal of the current working directory by emitting an OSC 7 escape sequence'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from start; and not __fish_seen_subcommand_from blocking-start; and not __fish_seen_subcommand_from ssh; and not __fish_seen_subcommand_from serial; and not __fish_seen_subcommand_from connect; and not __fish_seen_subcommand_from ls-fonts; and not __fish_seen_subcommand_from show-keys; and not __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from imgcat; and not __fish_seen_subcommand_from set-working-directory; and not __fish_seen_subcommand_from record; and not __fish_seen_subcommand_from replay; and not __fish_seen_subcommand_from shell-completion; and not __fish_seen_subcommand_from help" -f -a record -d 'Record a terminal session as an asciicast'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from start; and not __fish_seen_subcommand_from blocking-start; and not __fish_seen_subcommand_from ssh; and not __fish_seen_subcommand_from serial; and not __fish_seen_subcommand_from connect; and not __fish_seen_subcommand_from ls-fonts; and not __fish_seen_subcommand_from show-keys; and not __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from imgcat; and not __fish_seen_subcommand_from set-working-directory; and not __fish_seen_subcommand_from record; and not __fish_seen_subcommand_from replay; and not __fish_seen_subcommand_from shell-completion; and not __fish_seen_subcommand_from help" -f -a replay -d 'Replay an asciicast terminal session'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from start; and not __fish_seen_subcommand_from blocking-start; and not __fish_seen_subcommand_from ssh; and not __fish_seen_subcommand_from serial; and not __fish_seen_subcommand_from connect; and not __fish_seen_subcommand_from ls-fonts; and not __fish_seen_subcommand_from show-keys; and not __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from imgcat; and not __fish_seen_subcommand_from set-working-directory; and not __fish_seen_subcommand_from record; and not __fish_seen_subcommand_from replay; and not __fish_seen_subcommand_from shell-completion; and not __fish_seen_subcommand_from help" -f -a shell-completion -d 'Generate shell completion information'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from start; and not __fish_seen_subcommand_from blocking-start; and not __fish_seen_subcommand_from ssh; and not __fish_seen_subcommand_from serial; and not __fish_seen_subcommand_from connect; and not __fish_seen_subcommand_from ls-fonts; and not __fish_seen_subcommand_from show-keys; and not __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from imgcat; and not __fish_seen_subcommand_from set-working-directory; and not __fish_seen_subcommand_from record; and not __fish_seen_subcommand_from replay; and not __fish_seen_subcommand_from shell-completion; and not __fish_seen_subcommand_from help" -f -a help -d 'Print this message or the help of the given subcommand(s)'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane" -f -a list -d 'list windows, tabs and panes'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane" -f -a list-clients -d 'list clients'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane" -f -a proxy -d 'start rpc proxy pipe'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane" -f -a tlscreds -d 'obtain tls credentials'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane" -f -a move-pane-to-new-tab -d 'Move a pane into a new tab'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane" -f -a split-pane -d 'split the current pane.
|
||||
Outputs the pane-id for the newly created pane on success'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane" -f -a "spawn" -d 'Spawn a command into a new window or tab
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane" -f -a spawn -d 'Spawn a command into a new window or tab
|
||||
Outputs the pane-id for the newly created pane on success'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane" -f -a "send-text" -d 'Send text to a pane as though it were pasted. If bracketed paste mode is enabled in the pane, then the text will be sent as a bracketed paste'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane" -f -a "get-text" -d 'Retrieves the textual content of a pane and output it to stdout'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane" -f -a "activate-pane-direction" -d 'Activate an adjacent pane in the specified direction'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane" -f -a "get-pane-direction" -d 'Determine the adjacent pane in the specified direction'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane" -f -a "kill-pane" -d 'Kill a pane'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane" -f -a "activate-pane" -d 'Activate (focus) a pane'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane" -f -a "adjust-pane-size" -d 'Adjust the size of a pane directionally'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane" -f -a "activate-tab" -d 'Activate a tab'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane" -f -a "set-tab-title" -d 'Change the title of a tab'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane" -f -a "set-window-title" -d 'Change the title of a window'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane" -f -a "rename-workspace" -d 'Rename a workspace'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane" -f -a "zoom-pane" -d 'Zoom, unzoom, or toggle zoom state'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane" -f -a send-text -d 'Send text to a pane as though it were pasted. If bracketed paste mode is enabled in the pane, then the text will be sent as a bracketed paste'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane" -f -a get-text -d 'Retrieves the textual content of a pane and output it to stdout'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane" -f -a activate-pane-direction -d 'Activate an adjacent pane in the specified direction'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane" -f -a get-pane-direction -d 'Determine the adjacent pane in the specified direction'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane" -f -a kill-pane -d 'Kill a pane'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane" -f -a activate-pane -d 'Activate (focus) a pane'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane" -f -a adjust-pane-size -d 'Adjust the size of a pane directionally'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane" -f -a activate-tab -d 'Activate a tab'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane" -f -a set-tab-title -d 'Change the title of a tab'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane" -f -a set-window-title -d 'Change the title of a window'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane" -f -a rename-workspace -d 'Rename a workspace'
|
||||
complete -c wezterm -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from cli; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from list-clients; and not __fish_seen_subcommand_from proxy; and not __fish_seen_subcommand_from tlscreds; and not __fish_seen_subcommand_from move-pane-to-new-tab; and not __fish_seen_subcommand_from split-pane; and not __fish_seen_subcommand_from spawn; and not __fish_seen_subcommand_from send-text; and not __fish_seen_subcommand_from get-text; and not __fish_seen_subcommand_from activate-pane-direction; and not __fish_seen_subcommand_from get-pane-direction; and not __fish_seen_subcommand_from kill-pane; and not __fish_seen_subcommand_from activate-pane; and not __fish_seen_subcommand_from adjust-pane-size; and not __fish_seen_subcommand_from activate-tab; and not __fish_seen_subcommand_from set-tab-title; and not __fish_seen_subcommand_from set-window-title; and not __fish_seen_subcommand_from rename-workspace; and not __fish_seen_subcommand_from zoom-pane" -f -a zoom-pane -d 'Zoom, unzoom, or toggle zoom state'
|
||||
|
||||
@@ -9,7 +9,6 @@ end
|
||||
# This variable is global so that it can be referenced by fzf_configure_bindings and in tests
|
||||
set --global _fzf_search_vars_command '_fzf_search_variables (set --show | psub) (set --names | psub)'
|
||||
|
||||
|
||||
# Install the default bindings, which are mnemonic and minimally conflict with fish's preset bindings
|
||||
fzf_configure_bindings
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ if not set -q PHPENV_AUTO_SWITCH
|
||||
end
|
||||
|
||||
if not set -q PHPENV_DEFAULT_EXTENSIONS
|
||||
set -g PHPENV_DEFAULT_EXTENSIONS "opcache"
|
||||
set -g PHPENV_DEFAULT_EXTENSIONS opcache
|
||||
end
|
||||
|
||||
# Initialize PATH on shell startup if global version is set (less aggressive)
|
||||
|
||||
@@ -3,50 +3,50 @@ set --global sponge_version 1.1.0
|
||||
|
||||
# Allow to repeat previous command by default
|
||||
if not set --query --universal sponge_delay
|
||||
set --universal sponge_delay 2
|
||||
set --universal sponge_delay 2
|
||||
end
|
||||
|
||||
# Purge entries both after `sponge_delay` entries and on exit by default
|
||||
if not set --query --universal sponge_purge_only_on_exit
|
||||
set --universal sponge_purge_only_on_exit false
|
||||
set --universal sponge_purge_only_on_exit false
|
||||
end
|
||||
|
||||
# Add default filters
|
||||
if not set --query --universal sponge_filters
|
||||
set --universal sponge_filters sponge_filter_failed sponge_filter_matched
|
||||
set --universal sponge_filters sponge_filter_failed sponge_filter_matched
|
||||
end
|
||||
|
||||
# Don't filter out commands that already have been in the history by default
|
||||
if not set --query --universal sponge_allow_previously_successful
|
||||
set --universal sponge_allow_previously_successful true
|
||||
set --universal sponge_allow_previously_successful true
|
||||
end
|
||||
|
||||
# Consider `0` the only successful exit code by default
|
||||
if not set --query --universal sponge_successful_exit_codes
|
||||
set --universal sponge_successful_exit_codes 0
|
||||
set --universal sponge_successful_exit_codes 0
|
||||
end
|
||||
|
||||
# No active regex patterns by default
|
||||
if not set --query --universal sponge_regex_patterns
|
||||
set --universal sponge_regex_patterns
|
||||
set --universal sponge_regex_patterns
|
||||
end
|
||||
|
||||
# Attach event handlers
|
||||
functions --query \
|
||||
_sponge_on_prompt \
|
||||
_sponge_on_preexec \
|
||||
_sponge_on_postexec \
|
||||
_sponge_on_exit
|
||||
_sponge_on_prompt \
|
||||
_sponge_on_preexec \
|
||||
_sponge_on_postexec \
|
||||
_sponge_on_exit
|
||||
|
||||
# Initialize empty state for the first run
|
||||
function _sponge_install --on-event sponge_install
|
||||
set --global _sponge_current_command ''
|
||||
set --global _sponge_current_command_exit_code 0
|
||||
set --global _sponge_current_command_previously_in_history false
|
||||
set --global _sponge_current_command ''
|
||||
set --global _sponge_current_command_exit_code 0
|
||||
set --global _sponge_current_command_previously_in_history false
|
||||
end
|
||||
|
||||
# Clean up variables
|
||||
function _sponge_uninstall --on-event sponge_uninstall
|
||||
_sponge_clear_state
|
||||
set --erase sponge_version
|
||||
_sponge_clear_state
|
||||
set --erase sponge_version
|
||||
end
|
||||
|
||||
@@ -24,7 +24,7 @@ if status is-interactive
|
||||
type -q pyenv; and source (pyenv virtualenv-init -|psub)
|
||||
type -q goenv; and source (goenv init -|psub)
|
||||
# type -q fnm; and fnm env --use-on-cd --shell fish | source
|
||||
type -q load_nvm; and load_nvm > /dev/stderr
|
||||
type -q load_nvm; and load_nvm >/dev/stderr
|
||||
|
||||
# Intialize other tools if available
|
||||
type -q zoxide; and zoxide init fish | source
|
||||
|
||||
@@ -48,23 +48,19 @@ test -z "$NVIM_UNDO_PATH" && set -x NVIM_UNDO_PATH "$NVIM_STATE/undo"
|
||||
# Ansible configuration
|
||||
set -q ANSIBLE_HOME; or set -x ANSIBLE_HOME "$XDG_CONFIG_HOME/ansible"
|
||||
set -q ANSIBLE_CONFIG; or set -x ANSIBLE_CONFIG "$ANSIBLE_HOME/ansible.cfg"
|
||||
set -q ANSIBLE_GALAXY_CACHE_DIR; or \
|
||||
set -x ANSIBLE_GALAXY_CACHE_DIR "$XDG_CACHE_HOME/ansible/galaxy_cache"
|
||||
set -q ANSIBLE_GALAXY_CACHE_DIR; or set -x ANSIBLE_GALAXY_CACHE_DIR "$XDG_CACHE_HOME/ansible/galaxy_cache"
|
||||
x-dc "$ANSIBLE_HOME"
|
||||
x-dc "$ANSIBLE_GALAXY_CACHE_DIR"
|
||||
|
||||
# AWS configuration
|
||||
set -q AWS_CONFIG_FILE; or set -x AWS_CONFIG_FILE "$XDG_STATE_HOME/aws/config"
|
||||
set -q AWS_SHARED_CREDENTIALS_FILE; or \
|
||||
set -x AWS_SHARED_CREDENTIALS_FILE "$XDG_STATE_HOME/aws/credentials"
|
||||
set -q AWS_SESSION_TOKEN; or \
|
||||
set -x AWS_SESSION_TOKEN "$XDG_STATE_HOME/aws/session_token"
|
||||
set -q AWS_SHARED_CREDENTIALS_FILE; or set -x AWS_SHARED_CREDENTIALS_FILE "$XDG_STATE_HOME/aws/credentials"
|
||||
set -q AWS_SESSION_TOKEN; or set -x AWS_SESSION_TOKEN "$XDG_STATE_HOME/aws/session_token"
|
||||
set -q AWS_DATA_PATH; or set -x AWS_DATA_PATH "$XDG_DATA_HOME/aws"
|
||||
set -q AWS_DEFAULT_OUTPUT; or set -x AWS_DEFAULT_OUTPUT table
|
||||
set -q AWS_CONFIGURE_KEYS; or set -x AWS_CONFIGURE_KEYS true
|
||||
set -q AWS_CONFIGURE_SESSION; or set -x AWS_CONFIGURE_SESSION true
|
||||
set -q AWS_CONFIGURE_SESSION_DURATION; or \
|
||||
set -x AWS_CONFIGURE_SESSION_DURATION 7200
|
||||
set -q AWS_CONFIGURE_SESSION_DURATION; or set -x AWS_CONFIGURE_SESSION_DURATION 7200
|
||||
set -q AWS_CONFIGURE_SESSION_MFA; or set -x AWS_CONFIGURE_SESSION_MFA true
|
||||
set -q AWS_CONFIGURE_PROFILE; or set -x AWS_CONFIGURE_PROFILE true
|
||||
set -q AWS_CONFIGURE_PROMPT; or set -x AWS_CONFIGURE_PROMPT true
|
||||
@@ -74,8 +70,7 @@ set -q AWS_CONFIGURE_PROMPT_DEFAULT; or set -x AWS_CONFIGURE_PROMPT_DEFAULT true
|
||||
set -q HOMEBREW_NO_ANALYTICS; or set -x HOMEBREW_NO_ANALYTICS true
|
||||
set -q HOMEBREW_NO_ENV_HINTS; or set -x HOMEBREW_NO_ENV_HINTS true
|
||||
set -q HOMEBREW_BUNDLE_MAS_SKIP; or set -x HOMEBREW_BUNDLE_MAS_SKIP true
|
||||
set -q HOMEBREW_BUNDLE_FILE; or \
|
||||
set -x HOMEBREW_BUNDLE_FILE "$XDG_CONFIG_HOME/homebrew/Brewfile"
|
||||
set -q HOMEBREW_BUNDLE_FILE; or set -x HOMEBREW_BUNDLE_FILE "$XDG_CONFIG_HOME/homebrew/Brewfile"
|
||||
|
||||
# Composer configuration
|
||||
set -q COMPOSER_HOME; or set -x COMPOSER_HOME "$XDG_STATE_HOME/composer"
|
||||
@@ -101,8 +96,7 @@ set -q FNM_RESOLVE_ENGINES; or set -x FNM_RESOLVE_ENGINES true
|
||||
|
||||
# fzf configuration
|
||||
set -q FZF_BASE; or set -x FZF_BASE "$XDG_CONFIG_HOME/fzf"
|
||||
set -q FZF_DEFAULT_OPTS; or \
|
||||
set -x FZF_DEFAULT_OPTS \
|
||||
set -q FZF_DEFAULT_OPTS; or set -x FZF_DEFAULT_OPTS \
|
||||
'--height 40% --tmux bottom,40% --layout reverse --border top'
|
||||
|
||||
# GnuPG configuration
|
||||
@@ -113,8 +107,7 @@ set -q GNUPGHOME; or set -x GNUPGHOME "$XDG_DATA_HOME/gnupg"
|
||||
set -q GOBIN; or set -x GOBIN "$XDG_BIN_HOME"
|
||||
|
||||
set -q GOENV_ROOT; or set -x GOENV_ROOT "$XDG_DATA_HOME/goenv"
|
||||
set -q GOENV_RC_FILE; or \
|
||||
set -x GOENV_RC_FILE "$XDG_CONFIG_HOME/goenv/goenvrc.fish"
|
||||
set -q GOENV_RC_FILE; or set -x GOENV_RC_FILE "$XDG_CONFIG_HOME/goenv/goenvrc.fish"
|
||||
|
||||
# 1Password configuration
|
||||
set -q OP_CACHE; or set -x OP_CACHE "$XDG_STATE_HOME/1password"
|
||||
@@ -142,23 +135,19 @@ set -q SCREENRC; or set -x SCREENRC "$XDG_CONFIG_HOME/misc/screenrc"
|
||||
# Sonarlint configuration
|
||||
set -q SONARLINT_HOME; or set -x SONARLINT_HOME "$XDG_DATA_HOME/sonarlint"
|
||||
set -q SONARLINT_BIN; or set -x SONARLINT_BIN "$XDG_BIN_HOME"
|
||||
set -q SONARLINT_USER_HOME; or \
|
||||
set -x SONARLINT_USER_HOME "$XDG_DATA_HOME/sonarlint"
|
||||
set -q SONARLINT_USER_HOME; or set -x SONARLINT_USER_HOME "$XDG_DATA_HOME/sonarlint"
|
||||
|
||||
# Terraform configuration
|
||||
set -q TF_DATA_DIR; or set -x TF_DATA_DIR "$XDG_STATE_HOME/terraform"
|
||||
set -q TF_CLI_CONFIG_FILE; or \
|
||||
set -x TF_CLI_CONFIG_FILE "$XDG_CONFIG_HOME/terraform/terraformrc"
|
||||
set -q TF_PLUGIN_CACHE_DIR; or \
|
||||
set -x TF_PLUGIN_CACHE_DIR "$XDG_CACHE_HOME/terraform/plugin-cache"
|
||||
set -q TF_CLI_CONFIG_FILE; or set -x TF_CLI_CONFIG_FILE "$XDG_CONFIG_HOME/terraform/terraformrc"
|
||||
set -q TF_PLUGIN_CACHE_DIR; or set -x TF_PLUGIN_CACHE_DIR "$XDG_CACHE_HOME/terraform/plugin-cache"
|
||||
|
||||
# tmux configuration
|
||||
set -q TMUX_TMPDIR; or set -x TMUX_TMPDIR "$XDG_STATE_HOME/tmux"
|
||||
set -q TMUX_CONF_DIR; or set -x TMUX_CONF_DIR "$XDG_CONFIG_HOME/tmux"
|
||||
set -q TMUX_PLUGINS; or set -x TMUX_PLUGINS "$TMUX_CONF_DIR/plugins"
|
||||
set -q TMUX_CONF; or set -x TMUX_CONF "$TMUX_CONF_DIR/tmux.conf"
|
||||
set -q TMUX_PLUGIN_MANAGER_PATH; or \
|
||||
set -x TMUX_PLUGIN_MANAGER_PATH "$TMUX_PLUGINS"
|
||||
set -q TMUX_PLUGIN_MANAGER_PATH; or set -x TMUX_PLUGIN_MANAGER_PATH "$TMUX_PLUGINS"
|
||||
|
||||
# Source tmux theme activation script for Fish shell
|
||||
if test -f "$DOTFILES/config/tmux/theme-activate.fish"
|
||||
@@ -166,8 +155,7 @@ if test -f "$DOTFILES/config/tmux/theme-activate.fish"
|
||||
end
|
||||
|
||||
# tms configuration
|
||||
set -q TMS_CONFIG_FILE; or \
|
||||
set -x TMS_CONFIG_FILE "$XDG_CONFIG_HOME/tms/config.toml"
|
||||
set -q TMS_CONFIG_FILE; or set -x TMS_CONFIG_FILE "$XDG_CONFIG_HOME/tms/config.toml"
|
||||
|
||||
# wakatime configuration
|
||||
set -q WAKATIME_HOME; or set -x WAKATIME_HOME "$XDG_STATE_HOME/wakatime"
|
||||
@@ -179,8 +167,7 @@ set -q _ZO_EXCLUDE_DIRS; or set -x _ZO_EXCLUDE_DIRS "$XDG_DATA_HOME"
|
||||
|
||||
# Miscellaneous configuration
|
||||
set -q CHEAT_USE_FZF; or set -x CHEAT_USE_FZF true
|
||||
set -q SQLITE_HISTORY; or \
|
||||
set -x SQLITE_HISTORY "$XDG_CACHE_HOME/sqlite/sqlite_history"
|
||||
set -q SQLITE_HISTORY; or set -x SQLITE_HISTORY "$XDG_CACHE_HOME/sqlite/sqlite_history"
|
||||
|
||||
# Source additional configuration files if they exist
|
||||
if test -f "$DOTFILES/config/fish/exports-secret.fish"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Dependencies: tmux
|
||||
# Usage: open-tmux
|
||||
function open-tmux --wraps='tmux attach-session -t main || tmux new-session -s main' --description 'open tmux session'
|
||||
# Check if not in an SSH session and not already in a tmux session
|
||||
if test -z "$SSH_TTY"; and not set -q TMUX
|
||||
command tmux attach-session -t main || command tmux new-session -s main
|
||||
end
|
||||
# Check if not in an SSH session and not already in a tmux session
|
||||
if test -z "$SSH_TTY"; and not set -q TMUX
|
||||
command tmux attach-session -t main || command tmux new-session -s main
|
||||
end
|
||||
end
|
||||
|
||||
@@ -99,7 +99,7 @@ end
|
||||
|
||||
function __phpenv_find_version_file -a phpenv_filename
|
||||
set -l phpenv_dir (pwd)
|
||||
while test "$phpenv_dir" != "/"
|
||||
while test "$phpenv_dir" != /
|
||||
if test -f "$phpenv_dir/$phpenv_filename"
|
||||
echo "$phpenv_dir/$phpenv_filename"
|
||||
return
|
||||
@@ -126,13 +126,13 @@ function __phpenv_parse_composer_version
|
||||
end
|
||||
|
||||
set -l phpenv_platform_php (jq -r '.config.platform.php // empty' composer.json 2>/dev/null)
|
||||
if test $status -eq 0 -a -n "$phpenv_platform_php" -a "$phpenv_platform_php" != "null"
|
||||
if test $status -eq 0 -a -n "$phpenv_platform_php" -a "$phpenv_platform_php" != null
|
||||
echo $phpenv_platform_php
|
||||
return
|
||||
end
|
||||
|
||||
set -l phpenv_require_php (jq -r '.require.php // empty' composer.json 2>/dev/null)
|
||||
if test $status -eq 0 -a -n "$phpenv_require_php" -a "$phpenv_require_php" != "null"
|
||||
if test $status -eq 0 -a -n "$phpenv_require_php" -a "$phpenv_require_php" != null
|
||||
__phpenv_parse_semver_constraint $phpenv_require_php
|
||||
return
|
||||
end
|
||||
@@ -189,7 +189,7 @@ set -g __phpenv_version_cache_time 0
|
||||
|
||||
function __phpenv_get_version_info
|
||||
set -l current_time (date +%s)
|
||||
set -l cache_duration 300 # 5 minutes
|
||||
set -l cache_duration 300 # 5 minutes
|
||||
|
||||
# Return cached version if still valid
|
||||
if test -n "$__phpenv_version_cache"
|
||||
@@ -267,7 +267,7 @@ function __phpenv_list_installed
|
||||
continue
|
||||
end
|
||||
|
||||
if test "$phpenv_basename" = "php"
|
||||
if test "$phpenv_basename" = php
|
||||
set -l phpenv_latest (__phpenv_parse_version_field "latest" "8.4")
|
||||
set -a phpenv_versions $phpenv_latest
|
||||
else if echo $phpenv_basename | grep -qE '^php@[0-9]+\.[0-9]+$'
|
||||
@@ -284,9 +284,9 @@ end
|
||||
function __phpenv_resolve_version_alias -a phpenv_version
|
||||
switch $phpenv_version
|
||||
case latest
|
||||
__phpenv_parse_version_field "latest" "8.4"
|
||||
__phpenv_parse_version_field latest "8.4"
|
||||
case nightly
|
||||
__phpenv_parse_version_field "nightly" "8.5"
|
||||
__phpenv_parse_version_field nightly "8.5"
|
||||
case '8.x'
|
||||
__phpenv_parse_version_field "8.x" "8.4"
|
||||
case '7.x'
|
||||
@@ -302,7 +302,7 @@ function __phpenv_get_formula_name -a phpenv_version
|
||||
set -l phpenv_latest_version (__phpenv_parse_version_field "latest" "8.4")
|
||||
|
||||
if test "$phpenv_version" = "$phpenv_latest_version"
|
||||
echo "shivammathur/php/php"
|
||||
echo shivammathur/php/php
|
||||
else
|
||||
echo "shivammathur/php/php@$phpenv_version"
|
||||
end
|
||||
@@ -475,7 +475,7 @@ function __phpenv_use
|
||||
set -l phpenv_version $argv[1]
|
||||
|
||||
# Handle special case: restore system PHP
|
||||
if test "$phpenv_version" = "system"
|
||||
if test "$phpenv_version" = system
|
||||
__phpenv_restore_system_path
|
||||
echo "Restored system PHP"
|
||||
return 0
|
||||
@@ -492,7 +492,7 @@ function __phpenv_use
|
||||
end
|
||||
|
||||
if not __phpenv_is_version_installed $phpenv_version
|
||||
if test "$(__phpenv_config_get auto-install)" = "true"
|
||||
if test "$(__phpenv_config_get auto-install)" = true
|
||||
__phpenv_install $phpenv_version
|
||||
else
|
||||
echo "PHP $phpenv_version is not installed. Install with: phpenv install $phpenv_version"
|
||||
@@ -514,7 +514,7 @@ function __phpenv_local -a phpenv_version
|
||||
return 1
|
||||
end
|
||||
|
||||
echo $phpenv_version > .php-version
|
||||
echo $phpenv_version >.php-version
|
||||
echo "Set local PHP version to $phpenv_version"
|
||||
end
|
||||
|
||||
@@ -587,7 +587,7 @@ function __phpenv_get_tap_versions
|
||||
continue
|
||||
end
|
||||
|
||||
if test "$phpenv_clean_name" = "php"
|
||||
if test "$phpenv_clean_name" = php
|
||||
set -a phpenv_versions "$phpenv_latest_version (latest)"
|
||||
else if echo $phpenv_clean_name | grep -qE '^php@[0-9]+\.[0-9]+$'
|
||||
set -l phpenv_version (echo $phpenv_clean_name | sed 's/php@//')
|
||||
@@ -717,7 +717,7 @@ function __phpenv_config_get -a phpenv_key
|
||||
end
|
||||
end
|
||||
|
||||
if test "$argv[2]" = "--verbose"
|
||||
if test "$argv[2]" = --verbose
|
||||
if test -n "$phpenv_value"
|
||||
echo "$phpenv_key = $phpenv_value (from $phpenv_source)"
|
||||
else
|
||||
@@ -872,15 +872,14 @@ function __phpenv_get_available_extensions
|
||||
return 1
|
||||
end
|
||||
|
||||
brew tap-info shivammathur/extensions --json 2>/dev/null | \
|
||||
jq -r '.[]|(.formula_names[]?)' 2>/dev/null
|
||||
brew tap-info shivammathur/extensions --json 2>/dev/null | jq -r '.[]|(.formula_names[]?)' 2>/dev/null
|
||||
end
|
||||
|
||||
function __phpenv_extension_available -a phpenv_extension phpenv_version
|
||||
set -l phpenv_available_extensions (__phpenv_get_available_extensions)
|
||||
|
||||
if test -z "$phpenv_available_extensions"
|
||||
return 0 # Assume available if can't check
|
||||
return 0 # Assume available if can't check
|
||||
end
|
||||
|
||||
for phpenv_ext_formula in $phpenv_available_extensions
|
||||
@@ -936,7 +935,7 @@ function __phpenv_extensions_list
|
||||
for phpenv_ext_dir in $phpenv_cellar_path/*@$phpenv_version
|
||||
if test -d $phpenv_ext_dir
|
||||
set -l phpenv_ext_name (basename $phpenv_ext_dir | sed "s/@$phpenv_version//")
|
||||
if test "$phpenv_ext_name" != "php"
|
||||
if test "$phpenv_ext_name" != php
|
||||
echo " $phpenv_ext_name"
|
||||
end
|
||||
end
|
||||
@@ -983,7 +982,7 @@ function __phpenv_auto_switch --on-variable PWD
|
||||
end
|
||||
|
||||
set -l phpenv_auto_switch (__phpenv_config_get auto-switch)
|
||||
if test "$phpenv_auto_switch" = "false"
|
||||
if test "$phpenv_auto_switch" = false
|
||||
return 0
|
||||
end
|
||||
|
||||
@@ -1006,7 +1005,7 @@ function __phpenv_auto_switch --on-variable PWD
|
||||
set -g PHPENV_LAST_SWITCH_TIME $phpenv_current_time
|
||||
else
|
||||
set -l phpenv_auto_install (__phpenv_config_get auto-install)
|
||||
if test "$phpenv_auto_install" = "true"
|
||||
if test "$phpenv_auto_install" = true
|
||||
echo "Auto-installing PHP $phpenv_new_version..."
|
||||
if phpenv install "$phpenv_new_version"
|
||||
set -g PHPENV_LAST_SWITCH_TIME $phpenv_current_time
|
||||
@@ -1052,7 +1051,7 @@ function __phpenv_help
|
||||
end
|
||||
|
||||
function __phpenv_validate_boolean -a phpenv_value
|
||||
test "$phpenv_value" = "true" -o "$phpenv_value" = "false"
|
||||
test "$phpenv_value" = true -o "$phpenv_value" = false
|
||||
end
|
||||
|
||||
function __phpenv_validate_version -a phpenv_version
|
||||
|
||||
30
config/fish/themes/Catppuccin Latte.theme
Normal file
30
config/fish/themes/Catppuccin Latte.theme
Normal file
@@ -0,0 +1,30 @@
|
||||
# name: 'Catppuccin Latte'
|
||||
# url: 'https://github.com/catppuccin/fish'
|
||||
# preferred_background: eff1f5
|
||||
|
||||
fish_color_normal 4c4f69
|
||||
fish_color_command 1e66f5
|
||||
fish_color_param dd7878
|
||||
fish_color_keyword d20f39
|
||||
fish_color_quote 40a02b
|
||||
fish_color_redirection ea76cb
|
||||
fish_color_end fe640b
|
||||
fish_color_comment 8c8fa1
|
||||
fish_color_error d20f39
|
||||
fish_color_gray 9ca0b0
|
||||
fish_color_selection --background=ccd0da
|
||||
fish_color_search_match --background=ccd0da
|
||||
fish_color_option 40a02b
|
||||
fish_color_operator ea76cb
|
||||
fish_color_escape e64553
|
||||
fish_color_autosuggestion 9ca0b0
|
||||
fish_color_cancel d20f39
|
||||
fish_color_cwd df8e1d
|
||||
fish_color_user 179299
|
||||
fish_color_host 1e66f5
|
||||
fish_color_host_remote 40a02b
|
||||
fish_color_status d20f39
|
||||
fish_pager_color_progress 9ca0b0
|
||||
fish_pager_color_prefix ea76cb
|
||||
fish_pager_color_completion 4c4f69
|
||||
fish_pager_color_description 9ca0b0
|
||||
30
config/fish/themes/Catppuccin Mocha.theme
Normal file
30
config/fish/themes/Catppuccin Mocha.theme
Normal file
@@ -0,0 +1,30 @@
|
||||
# name: 'Catppuccin Mocha'
|
||||
# url: 'https://github.com/catppuccin/fish'
|
||||
# preferred_background: 1e1e2e
|
||||
|
||||
fish_color_normal cdd6f4
|
||||
fish_color_command 89b4fa
|
||||
fish_color_param f2cdcd
|
||||
fish_color_keyword f38ba8
|
||||
fish_color_quote a6e3a1
|
||||
fish_color_redirection f5c2e7
|
||||
fish_color_end fab387
|
||||
fish_color_comment 7f849c
|
||||
fish_color_error f38ba8
|
||||
fish_color_gray 6c7086
|
||||
fish_color_selection --background=313244
|
||||
fish_color_search_match --background=313244
|
||||
fish_color_option a6e3a1
|
||||
fish_color_operator f5c2e7
|
||||
fish_color_escape eba0ac
|
||||
fish_color_autosuggestion 6c7086
|
||||
fish_color_cancel f38ba8
|
||||
fish_color_cwd f9e2af
|
||||
fish_color_user 94e2d5
|
||||
fish_color_host 89b4fa
|
||||
fish_color_host_remote a6e3a1
|
||||
fish_color_status f38ba8
|
||||
fish_pager_color_progress 6c7086
|
||||
fish_pager_color_prefix f5c2e7
|
||||
fish_pager_color_completion cdd6f4
|
||||
fish_pager_color_description 6c7086
|
||||
@@ -38,6 +38,8 @@ brew "openssl@3"
|
||||
brew "cryptography"
|
||||
# YAML Parser
|
||||
brew "libyaml"
|
||||
# Display directories as trees (with optional color/HTML output)
|
||||
brew "tree"
|
||||
# Automate deployment, configuration, and upgrading
|
||||
brew "ansible"
|
||||
# Checks ansible playbooks for practices and behaviour
|
||||
@@ -104,7 +106,7 @@ brew "glib"
|
||||
brew "cargo-binstall"
|
||||
# Multi-platform support library with a focus on asynchronous I/O
|
||||
brew "libuv"
|
||||
# Platform built on V8 to build network applications
|
||||
# Open-source, cross-platform JavaScript runtime environment
|
||||
brew "node", link: false
|
||||
# CLI tool for analyzing Claude Code usage from local JSONL files
|
||||
brew "ccusage"
|
||||
@@ -230,6 +232,8 @@ brew "luarocks"
|
||||
brew "lzip"
|
||||
# Swiss Army Knife for macOS
|
||||
brew "m-cli"
|
||||
# Cross platform, open source .NET development framework
|
||||
brew "mono"
|
||||
# Collection of tools that nobody wrote when UNIX was young
|
||||
brew "moreutils"
|
||||
# NCurses Disk Usage
|
||||
@@ -290,8 +294,8 @@ brew "tflint"
|
||||
brew "tfsec"
|
||||
# Terminal multiplexer
|
||||
brew "tmux"
|
||||
# Display directories as trees (with optional color/HTML output)
|
||||
brew "tree"
|
||||
# Extremely fast Python package installer and resolver, written in Rust
|
||||
brew "uv"
|
||||
# Tool for creating isolated virtual python environments
|
||||
brew "virtualenv"
|
||||
# Command-line interface to the WakaTime api
|
||||
@@ -349,13 +353,18 @@ cask "fantastical"
|
||||
cask "font-jetbrains-mono"
|
||||
cask "font-jetbrains-mono-nerd-font"
|
||||
cask "font-monaspace"
|
||||
cask "font-monaspace-nf"
|
||||
cask "font-open-sans"
|
||||
# GIT client
|
||||
cask "fork"
|
||||
# Desktop automation application
|
||||
cask "hammerspoon"
|
||||
# HTTP and GraphQL Client
|
||||
cask "insomnia"
|
||||
# JetBrains tools manager
|
||||
cask "jetbrains-toolbox"
|
||||
# Keyboard customiser
|
||||
cask "karabiner-elements"
|
||||
# End-to-end encryption software
|
||||
cask "keybase"
|
||||
# Kubernetes IDE
|
||||
|
||||
68
config/karabiner/karabiner.json
Normal file
68
config/karabiner/karabiner.json
Normal file
@@ -0,0 +1,68 @@
|
||||
{
|
||||
"profiles": [
|
||||
{
|
||||
"complex_modifications": {
|
||||
"rules": [
|
||||
{
|
||||
"description": "Change right_command+hjkl to arrow keys",
|
||||
"manipulators": [
|
||||
{
|
||||
"from": {
|
||||
"key_code": "h",
|
||||
"modifiers": {
|
||||
"mandatory": ["right_command"],
|
||||
"optional": ["any"]
|
||||
}
|
||||
},
|
||||
"to": [{ "key_code": "left_arrow" }],
|
||||
"type": "basic"
|
||||
},
|
||||
{
|
||||
"from": {
|
||||
"key_code": "j",
|
||||
"modifiers": {
|
||||
"mandatory": ["right_command"],
|
||||
"optional": ["any"]
|
||||
}
|
||||
},
|
||||
"to": [{ "key_code": "down_arrow" }],
|
||||
"type": "basic"
|
||||
},
|
||||
{
|
||||
"from": {
|
||||
"key_code": "k",
|
||||
"modifiers": {
|
||||
"mandatory": ["right_command"],
|
||||
"optional": ["any"]
|
||||
}
|
||||
},
|
||||
"to": [{ "key_code": "up_arrow" }],
|
||||
"type": "basic"
|
||||
},
|
||||
{
|
||||
"from": {
|
||||
"key_code": "l",
|
||||
"modifiers": {
|
||||
"mandatory": ["right_command"],
|
||||
"optional": ["any"]
|
||||
}
|
||||
},
|
||||
"to": [{ "key_code": "right_arrow" }],
|
||||
"type": "basic"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"name": "Default profile",
|
||||
"selected": true,
|
||||
"simple_modifications": [
|
||||
{
|
||||
"from": { "key_code": "caps_lock" },
|
||||
"to": [{ "key_code": "f18" }]
|
||||
}
|
||||
],
|
||||
"virtual_hid_keyboard": { "keyboard_type_v2": "iso" }
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,31 +1,112 @@
|
||||
return {
|
||||
{
|
||||
'neanias/everforest-nvim',
|
||||
version = false,
|
||||
lazy = false,
|
||||
priority = 1000, -- make sure to load this before all the other start plugins
|
||||
'catppuccin/nvim',
|
||||
name = 'catppuccin',
|
||||
priority = 1000,
|
||||
config = function()
|
||||
require('everforest').setup {
|
||||
background = 'medium', -- hard, medium, soft
|
||||
transparent_background_level = 2, -- 0, 1, 2
|
||||
sign_column_background = 'grey', -- none, grey
|
||||
disable_italic_comments = false,
|
||||
diagnostic_virtual_text = 'coloured', -- coloured, gray, underline, none
|
||||
diagnostic_line_highlight = true,
|
||||
diagnostic_line_highlight_background = 'dimmed', -- dimmed, normal
|
||||
diagnostic_text_highlight = true,
|
||||
ui_contrast = 'low', -- high, low
|
||||
italics = true,
|
||||
spell_foreground = true,
|
||||
show_eob = true,
|
||||
colours_override = function() end,
|
||||
float_style = 'dim',
|
||||
on_highlights = function(_, _) end,
|
||||
dim_inactive_windows = true,
|
||||
inlay_hints_background = 'dimmed',
|
||||
require('catppuccin').setup {
|
||||
flavour = 'auto', -- latte, frappe, macchiato, mocha
|
||||
background = { -- :h background
|
||||
light = 'latte',
|
||||
dark = 'mocha',
|
||||
},
|
||||
transparent_background = false,
|
||||
float = {
|
||||
transparent = true, -- enable transparent floating windows
|
||||
solid = false, -- use solid styling for floating windows, see |winborder|
|
||||
},
|
||||
show_end_of_buffer = false, -- shows the '~' characters after the end of buffers
|
||||
term_colors = false, -- sets terminal colors (e.g. `g:terminal_color_0`)
|
||||
dim_inactive = {
|
||||
enabled = true, -- dims the background color of inactive window
|
||||
shade = 'dark',
|
||||
percentage = 0.15, -- percentage of the shade to apply to the inactive window
|
||||
},
|
||||
no_italic = false, -- Force no italic
|
||||
no_bold = false, -- Force no bold
|
||||
no_underline = false, -- Force no underline
|
||||
styles = { -- Handles the styles of general hi groups (see `:h highlight-args`):
|
||||
comments = { 'italic' }, -- Change the style of comments
|
||||
conditionals = { 'italic' },
|
||||
loops = {},
|
||||
functions = {},
|
||||
keywords = {},
|
||||
strings = {},
|
||||
variables = {},
|
||||
numbers = {},
|
||||
booleans = {},
|
||||
properties = {},
|
||||
types = {},
|
||||
operators = {},
|
||||
-- miscs = {}, -- Uncomment to turn off hard-coded styles
|
||||
},
|
||||
lsp_styles = { -- Handles the style of specific lsp hl groups (see `:h lsp-highlight`).
|
||||
virtual_text = {
|
||||
errors = { 'italic' },
|
||||
hints = { 'italic' },
|
||||
warnings = { 'italic' },
|
||||
information = { 'italic' },
|
||||
ok = { 'italic' },
|
||||
},
|
||||
underlines = {
|
||||
errors = { 'underline' },
|
||||
hints = { 'underline' },
|
||||
warnings = { 'underline' },
|
||||
information = { 'underline' },
|
||||
ok = { 'underline' },
|
||||
},
|
||||
inlay_hints = {
|
||||
background = true,
|
||||
},
|
||||
},
|
||||
color_overrides = {},
|
||||
custom_highlights = {},
|
||||
default_integrations = true,
|
||||
auto_integrations = false,
|
||||
integrations = {
|
||||
cmp = true,
|
||||
gitsigns = true,
|
||||
nvimtree = true,
|
||||
notify = false,
|
||||
mini = {
|
||||
enabled = true,
|
||||
indentscope_color = '',
|
||||
},
|
||||
-- For more plugins integrations please scroll down (https://github.com/catppuccin/nvim#integrations)
|
||||
},
|
||||
}
|
||||
|
||||
-- setup must be called before loading
|
||||
vim.cmd.colorscheme 'catppuccin'
|
||||
end,
|
||||
},
|
||||
-- {
|
||||
-- 'neanias/everforest-nvim',
|
||||
-- version = false,
|
||||
-- lazy = false,
|
||||
-- priority = 1000, -- make sure to load this before all the other start plugins
|
||||
-- config = function()
|
||||
-- require('everforest').setup {
|
||||
-- background = 'medium', -- hard, medium, soft
|
||||
-- transparent_background_level = 2, -- 0, 1, 2
|
||||
-- sign_column_background = 'grey', -- none, grey
|
||||
-- disable_italic_comments = false,
|
||||
-- diagnostic_virtual_text = 'coloured', -- coloured, gray, underline, none
|
||||
-- diagnostic_line_highlight = true,
|
||||
-- diagnostic_line_highlight_background = 'dimmed', -- dimmed, normal
|
||||
-- diagnostic_text_highlight = true,
|
||||
-- ui_contrast = 'low', -- high, low
|
||||
-- italics = true,
|
||||
-- spell_foreground = true,
|
||||
-- show_eob = true,
|
||||
-- colours_override = function() end,
|
||||
-- float_style = 'dim',
|
||||
-- on_highlights = function(_, _) end,
|
||||
-- dim_inactive_windows = true,
|
||||
-- inlay_hints_background = 'dimmed',
|
||||
-- }
|
||||
-- end,
|
||||
-- },
|
||||
|
||||
-- Automatic dark mode
|
||||
-- https://github.com/f-person/auto-dark-mode.nvim
|
||||
@@ -60,37 +141,37 @@ return {
|
||||
|
||||
-- Remove all background colors to make nvim transparent
|
||||
-- https://github.com/xiyaowong/nvim-transparent
|
||||
{
|
||||
'xiyaowong/nvim-transparent',
|
||||
lazy = false,
|
||||
enabled = true,
|
||||
config = function()
|
||||
local t = require 'transparent'
|
||||
t.setup {
|
||||
extra_groups = {
|
||||
'NormalNC',
|
||||
'NormalFloat',
|
||||
'EndOfBuffer',
|
||||
'FloatTitle',
|
||||
'FloatBorder',
|
||||
'NotifyDEBUGBorder',
|
||||
'NotifyERRORBorder',
|
||||
'NotifyINFOBorder',
|
||||
'NotifyINFOBorder73',
|
||||
'NotifyINFOBorder75',
|
||||
'NotifyINFOBorder101',
|
||||
'NotifyTRACEBorder',
|
||||
'NotifyWARNBorder',
|
||||
'NotifyBackground',
|
||||
'TelescopeBorder',
|
||||
'TelescopePromptBorder',
|
||||
'TelescopeResultsBorder',
|
||||
'TelescopePreviewBorder',
|
||||
},
|
||||
}
|
||||
t.clear_prefix 'NeoTree'
|
||||
end,
|
||||
},
|
||||
-- {
|
||||
-- 'xiyaowong/nvim-transparent',
|
||||
-- lazy = false,
|
||||
-- enabled = true,
|
||||
-- config = function()
|
||||
-- local t = require 'transparent'
|
||||
-- t.setup {
|
||||
-- extra_groups = {
|
||||
-- 'NormalNC',
|
||||
-- 'NormalFloat',
|
||||
-- 'EndOfBuffer',
|
||||
-- 'FloatTitle',
|
||||
-- 'FloatBorder',
|
||||
-- 'NotifyDEBUGBorder',
|
||||
-- 'NotifyERRORBorder',
|
||||
-- 'NotifyINFOBorder',
|
||||
-- 'NotifyINFOBorder73',
|
||||
-- 'NotifyINFOBorder75',
|
||||
-- 'NotifyINFOBorder101',
|
||||
-- 'NotifyTRACEBorder',
|
||||
-- 'NotifyWARNBorder',
|
||||
-- 'NotifyBackground',
|
||||
-- 'TelescopeBorder',
|
||||
-- 'TelescopePromptBorder',
|
||||
-- 'TelescopeResultsBorder',
|
||||
-- 'TelescopePreviewBorder',
|
||||
-- },
|
||||
-- }
|
||||
-- t.clear_prefix 'NeoTree'
|
||||
-- end,
|
||||
-- },
|
||||
|
||||
-- Display a character as the colorcolumn
|
||||
-- https://github.com/lukas-reineke/virt-column.nvim
|
||||
|
||||
1
config/tmux/plugins/catppuccin
Submodule
1
config/tmux/plugins/catppuccin
Submodule
Submodule config/tmux/plugins/catppuccin added at 38932bddfc
18
config/tmux/sesh-tmux.fish
Executable file
18
config/tmux/sesh-tmux.fish
Executable file
@@ -0,0 +1,18 @@
|
||||
#!/usr/bin/env fish
|
||||
|
||||
set selection (sesh list --icons | fzf-tmux -p 80%,70% \
|
||||
--no-sort --ansi --border-label ' sesh ' --prompt '⚡ ' \
|
||||
--header ' ^a all ^t tmux ^g configs ^x zoxide ^d tmux kill ^f find' \
|
||||
--bind 'tab:down,btab:up' \
|
||||
--bind 'ctrl-a:change-prompt(⚡ )+reload(sesh list --icons)' \
|
||||
--bind 'ctrl-t:change-prompt(🪟 )+reload(sesh list -t --icons)' \
|
||||
--bind 'ctrl-g:change-prompt(⚙️ )+reload(sesh list -c --icons)' \
|
||||
--bind 'ctrl-x:change-prompt(📁 )+reload(sesh list -z --icons)' \
|
||||
--bind 'ctrl-f:change-prompt(🔎 )+reload(fd -H -d 2 -t d -E .Trash . ~)' \
|
||||
--bind 'ctrl-d:execute(tmux kill-session -t {2..})+change-prompt(⚡ )+reload(sesh list --icons)' \
|
||||
--preview-window 'right:55%' \
|
||||
--preview 'sesh preview {}')
|
||||
|
||||
if test -n "$selection"
|
||||
sesh connect "$selection"
|
||||
end
|
||||
@@ -1,46 +1,3 @@
|
||||
# Everforest dark theme for tmux
|
||||
# Generated from template - do not edit manually
|
||||
set -g @catppuccin_flavor "mocha"
|
||||
set -g @catppuccin_window_status_style "basic"
|
||||
|
||||
# Enable proper color support
|
||||
set -g default-terminal "tmux-256color"
|
||||
set -as terminal-features ",*:RGB"
|
||||
|
||||
set -g pane-border-style "bg=default,fg=#859289"
|
||||
set -g pane-active-border-style "bg=default,fg=#a7c080"
|
||||
|
||||
# Window tabs
|
||||
set -g window-style "bg=default,fg=default,dim"
|
||||
set -g window-status-style "bg=default,fg=default,dim"
|
||||
set -g window-status-current-style "bg=default,fg=#d3c6aa"
|
||||
set -g window-status-activity-style "bg=default,fg=#dbbc7f,nodim"
|
||||
set -g window-status-bell-style "bg=default,fg=yellow,nodim"
|
||||
set -g window-status-last-style "bg=default,fg=#a7c080"
|
||||
set -g window-status-format " #I:#W "
|
||||
|
||||
# Messages
|
||||
set -g message-style "bg=default,fg=#d3c6aa"
|
||||
set -g message-command-style "bg=default,fg=#d3c6aa"
|
||||
|
||||
# Status bar
|
||||
set -g status-style "bg=default,fg=default"
|
||||
set -g status-left " #[default]"
|
||||
set -g status-right " #[fg=#a7c080]#S@#[fg=#859289]#h #[fg=#7fbbb3]%H:%M #[fg=#dbbc7f]%d.%m "
|
||||
set -g status-left-style "bg=default,fg=white"
|
||||
set -g status-right-style "bg=default,fg=white"
|
||||
|
||||
set -g menu-style "bg=default,fg=white"
|
||||
set -g menu-selected-style "bg=default,fg=#a7c080"
|
||||
set -g menu-border-style "fg=#a7c080"
|
||||
set -g menu-border-lines "single"
|
||||
|
||||
set -g popup-style "bg=default,fg=white"
|
||||
set -g popup-border-style "fg=#a7c080"
|
||||
set -g popup-border-lines "single"
|
||||
|
||||
set -g display-panes-colour "blue"
|
||||
set -g display-panes-active-colour "red"
|
||||
set -g display-panes-time 1000 # milliseconds
|
||||
|
||||
set -g pane-border-indicators "arrows"
|
||||
set -g pane-border-lines "single"
|
||||
set -g clock-mode-style "24"
|
||||
|
||||
@@ -1,6 +1,2 @@
|
||||
set-option -g status-style 'fg=#4c4f69,bg=default'
|
||||
set-window-option -g window-status-style 'fg=#4c4f69,bg=default dim'
|
||||
set-window-option -g window-status-current-style 'fg=#8839ef,bg=default'
|
||||
set-window-option -g window-status-activity-style 'fg=#4c4f69,bg=default nodim'
|
||||
set-window-option -g window-status-bell-style 'fg=#4c4f69,bg=default'
|
||||
set -g message-style 'fg=#8839ef bg=#e6e9ef bold' # fg magenta, bg black
|
||||
set -g @catppuccin_flavor "latte"
|
||||
set -g @catppuccin_window_status_style "basic"
|
||||
|
||||
@@ -18,6 +18,9 @@
|
||||
set -ag terminal-overrides ",xterm-256color:RGB"
|
||||
set -ag terminal-features 'xterm-256color:RGB'
|
||||
|
||||
# Enable proper color support
|
||||
set -as terminal-features ",*:RGB"
|
||||
|
||||
set -g default-terminal "tmux-256color" # Set default terminal to 256 colors
|
||||
set -g detach-on-destroy off # don't detach tmux when killing a session
|
||||
set -g display-time 0 # Hide clock
|
||||
@@ -51,17 +54,17 @@ if-shell '[ "$DEBUG" = "1" ]' 'set -g debug-file ~/.cache/tmux-debug.log'
|
||||
# │ Theme │
|
||||
# ╰──────────────────────────────────────────────────────────╯
|
||||
|
||||
set -g pane-active-border-style "bg=default,fg=#7aa2f7"
|
||||
set -g pane-border-style "bg=default,fg=#31748f"
|
||||
set -g status-style "bg=default"
|
||||
set -g status-justify "left"
|
||||
set -g status-left ''
|
||||
set -g status-left-length "0"
|
||||
set -g status-position "bottom"
|
||||
set -g status-right "#S@#h #{tmux_mode_indicator}"
|
||||
set -g status-right-length "30"
|
||||
set -g status-right-length "50"
|
||||
set -g window-status-current-format ' #I:#W#{?window_zoomed_flag, ◈ ,} '
|
||||
set -g window-status-format ' #I:#W '
|
||||
set -g @catppuccin_status_background 'none'
|
||||
set -g @catppuccin_window_flags 'icon'
|
||||
set -g @catppuccin_status_connect_separator 'no'
|
||||
|
||||
# ╭──────────────────────────────────────────────────────────╮
|
||||
# │ Bindings │
|
||||
@@ -101,32 +104,16 @@ unbind p
|
||||
bind p paste-buffer
|
||||
|
||||
# tms bindings
|
||||
bind -N "tms" t display-popup -E "tms"
|
||||
bind -N "tms" T display-popup -E "tms"
|
||||
bind -N "tms windows" C-w display-popup -E "tms windows"
|
||||
bind -N "tms switch" C-s display-popup -E "tms switch"
|
||||
bind -N "tms refresh" C-r display-popup -E "tms refresh"
|
||||
|
||||
# global sessions
|
||||
# bind-key "K" display-popup -h 90% -w 50% -E "sesh ui"
|
||||
bind-key "K" run-shell "sesh connect \"$(
|
||||
sesh list --icons --hide-duplicates | fzf-tmux -p 100%,100% --no-border \
|
||||
--list-border \
|
||||
--no-sort --prompt '⚡ ' \
|
||||
--input-border \
|
||||
--header-border \
|
||||
--bind 'tab:down,btab:up' \
|
||||
--bind 'ctrl-b:abort' \
|
||||
--bind 'ctrl-a:change-prompt(⚡ )+reload(sesh list --icons)' \
|
||||
--bind 'ctrl-t:change-prompt( )+reload(sesh list -t --icons)' \
|
||||
--bind 'ctrl-g:change-prompt(⚙️ )+reload(sesh list -c --icons)' \
|
||||
--bind 'ctrl-x:change-prompt(📁 )+reload(sesh list -z --icons)' \
|
||||
--bind 'ctrl-f:change-prompt(🔎 )+reload(fd -H -d 2 -t d -E .Trash . ~)' \
|
||||
--bind 'ctrl-d:execute(tmux kill-session -t {2..})+change-prompt(⚡ )+reload(sesh list --icons)' \
|
||||
--preview-window 'right:70%' \
|
||||
--preview 'sesh preview {}' \
|
||||
)\""
|
||||
|
||||
bind-key "N" display-popup -E "sesh ui"
|
||||
bind -N "sesh selection" t run-shell "$HOME/.dotfiles/config/tmux/sesh-tmux.fish"
|
||||
bind -N "last-session (via sesh) " L run-shell "sesh last"
|
||||
bind -N "sesh ui" N display-popup -E "sesh ui"
|
||||
|
||||
# ╭──────────────────────────────────────────────────────────╮
|
||||
# │ Plugins │
|
||||
@@ -142,7 +129,7 @@ bind-key "N" display-popup -E "sesh ui"
|
||||
## A plugin to name your tmux windows smartly.
|
||||
## https://github.com/ofirgall/tmux-window-name
|
||||
### Maximum name length of a window
|
||||
set -g @tmux_window_name_max_name_len "20"
|
||||
set -g @tmux_window_name_max_name_len "25"
|
||||
### Replace $HOME with ~ in window names
|
||||
set -g @tmux_window_dir_programs "['nvim', 'vim', 'vi', 'git']"
|
||||
set -g @tmux_window_name_ignored_programs "['sqlite3', 'antidote', 'direnv', 'md5']" # Default is []
|
||||
@@ -189,5 +176,6 @@ run-shell "$HOME/.dotfiles/config/tmux/plugins/tmux-current-pane-hostname/curren
|
||||
run-shell "$HOME/.dotfiles/config/tmux/plugins/tmux-fzf-url/fzf-url.tmux"
|
||||
run-shell "$HOME/.dotfiles/config/tmux/plugins/tmux-resurrect/resurrect.tmux"
|
||||
run-shell "$HOME/.dotfiles/config/tmux/plugins/tmux-continuum/continuum.tmux"
|
||||
run-shell "$HOME/.dotfiles/config/tmux/plugins/catppuccin/catppuccin.tmux"
|
||||
|
||||
run-shell "$HOME/.dotfiles/config/tmux/plugins/tmux-dark-notify/main.tmux"
|
||||
|
||||
@@ -66,9 +66,11 @@ config.scrollback_lines = 3000
|
||||
-- Function to detect the theme based on appearance
|
||||
function Scheme_for_appearance(appearance)
|
||||
if appearance:find 'Dark' then
|
||||
return 'Everforest Dark (Medium)'
|
||||
return 'Catppuccin Mocha'
|
||||
-- return 'Everforest Dark (Medium)'
|
||||
else
|
||||
return 'Everforest Light (Medium)'
|
||||
return 'Catppuccin Latte'
|
||||
-- return 'Everforest Light (Medium)'
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
425
docs/CHEZMOI-MIGRATION-SUMMARY.md
Normal file
425
docs/CHEZMOI-MIGRATION-SUMMARY.md
Normal file
@@ -0,0 +1,425 @@
|
||||
# Chezmoi Migration Summary
|
||||
|
||||
## What Was Done
|
||||
|
||||
Your dotfiles repository has been prepared for migration from dotbot to chezmoi. Here's what was created:
|
||||
|
||||
### 1. Updated Install Script
|
||||
- **File**: `install`
|
||||
- **Change**: Now uses chezmoi's one-line installer
|
||||
- **Command**: `sh -c "$(curl -fsLS get.chezmoi.io/lb)" -- init --apply ivuorinen`
|
||||
|
||||
### 2. Chezmoi Configuration Files
|
||||
|
||||
#### `.chezmoi.yaml.tmpl`
|
||||
Main configuration file that includes:
|
||||
- Source directory configuration
|
||||
- Host detection (air, lakka, tunkki, s)
|
||||
- OS detection (macOS, Linux)
|
||||
- Custom data variables for templates
|
||||
- Merge and diff settings
|
||||
- Git configuration
|
||||
- Pre-read hook for submodule updates
|
||||
|
||||
#### `.chezmoiignore`
|
||||
Specifies what files should NOT be managed by chezmoi:
|
||||
- Git and GitHub files
|
||||
- Documentation (*.md files)
|
||||
- Development tools (.vscode, node_modules, etc.)
|
||||
- Old dotbot configuration
|
||||
- Host-specific files (via templates)
|
||||
- Repository management files
|
||||
|
||||
### 3. Run Scripts (Automated Setup)
|
||||
|
||||
#### `run_once_before_install-prerequisites.sh.tmpl`
|
||||
Runs **once before** applying dotfiles:
|
||||
- Installs Homebrew (macOS)
|
||||
- Installs Xcode CLI tools (macOS)
|
||||
- Updates package manager (Linux)
|
||||
|
||||
#### `run_once_after_install-packages.sh.tmpl`
|
||||
Runs **once after** applying dotfiles:
|
||||
- Installs Homebrew packages (Brewfile)
|
||||
- Sets macOS defaults
|
||||
- Installs apt packages (Linux)
|
||||
- Installs pipx packages
|
||||
|
||||
#### `run_once_after_setup-languages.sh.tmpl`
|
||||
Runs **once after** applying dotfiles:
|
||||
- Installs fonts
|
||||
- Installs Cargo packages (Rust)
|
||||
- Installs Go packages
|
||||
- Installs Composer (PHP)
|
||||
- Installs NVM and latest Node LTS
|
||||
- Installs NPM packages
|
||||
- Installs GitHub CLI extensions
|
||||
- Installs z (directory jumper)
|
||||
- Installs cheat databases
|
||||
|
||||
#### `run_once_after_create-directories.sh.tmpl`
|
||||
Runs **once after** applying dotfiles:
|
||||
- Creates required directories in `$HOME`
|
||||
- Sets proper permissions (e.g., `.ssh` → 0700)
|
||||
|
||||
### 4. Hooks
|
||||
|
||||
#### `.chezmoihooks/pre-read-source-state.sh`
|
||||
Runs before chezmoi reads the source state:
|
||||
- Updates git submodules automatically
|
||||
|
||||
### 5. Documentation
|
||||
|
||||
#### `MIGRATION-DOTBOT-TO-CHEZMOI.md` (66KB)
|
||||
Comprehensive migration guide including:
|
||||
- Why migrate to chezmoi
|
||||
- Key differences between dotbot and chezmoi
|
||||
- Complete dotbot → chezmoi mapping
|
||||
- File structure comparison
|
||||
- Step-by-step migration instructions
|
||||
- Usage guide with examples
|
||||
- Troubleshooting section
|
||||
- Migration checklist
|
||||
|
||||
#### `CHEZMOI-QUICK-REFERENCE.md` (11KB)
|
||||
Quick reference guide for daily use:
|
||||
- Common commands
|
||||
- File naming conventions
|
||||
- Template syntax examples
|
||||
- Host-specific configuration patterns
|
||||
- Troubleshooting tips
|
||||
- Useful aliases
|
||||
|
||||
#### `HOST-SPECIFIC-MIGRATION.md` (9KB)
|
||||
Detailed guide for migrating host-specific configurations:
|
||||
- Three migration approaches explained
|
||||
- Examples from your current hosts
|
||||
- Step-by-step host config migration
|
||||
- Testing strategies
|
||||
- Best practices
|
||||
|
||||
### 6. Migration Helper Script
|
||||
|
||||
#### `migrate-to-chezmoi.sh`
|
||||
Automated script to restructure your files:
|
||||
- Creates backup branch automatically
|
||||
- Creates migration branch
|
||||
- Renames files to chezmoi conventions
|
||||
- `base/*` → `dot_*`
|
||||
- `config/*` → `dot_config/*`
|
||||
- `local/bin/*` → `executable_dot_local/bin/*`
|
||||
- `ssh/*` → `private_dot_ssh/*`
|
||||
- Cleans up empty directories
|
||||
- Generates migration notes
|
||||
|
||||
## What Needs To Be Done
|
||||
|
||||
### Immediate Next Steps
|
||||
|
||||
1. **Review Changes**
|
||||
```bash
|
||||
cd ~/.dotfiles
|
||||
git status
|
||||
git diff
|
||||
```
|
||||
|
||||
2. **Read Documentation**
|
||||
- Start with: `MIGRATION-DOTBOT-TO-CHEZMOI.md`
|
||||
- Quick reference: `CHEZMOI-QUICK-REFERENCE.md`
|
||||
- Host configs: `HOST-SPECIFIC-MIGRATION.md`
|
||||
|
||||
3. **Commit Current State**
|
||||
```bash
|
||||
git add install .chezmoi.yaml.tmpl .chezmoiignore
|
||||
git add run_once_*.sh.tmpl .chezmoihooks/
|
||||
git add migrate-to-chezmoi.sh
|
||||
git add *.md
|
||||
git commit -m "Add chezmoi configuration and migration tools"
|
||||
```
|
||||
|
||||
### File Restructuring
|
||||
|
||||
You have two options:
|
||||
|
||||
#### Option A: Automated (Recommended for First Pass)
|
||||
|
||||
```bash
|
||||
# Run the migration script
|
||||
./migrate-to-chezmoi.sh
|
||||
|
||||
# This will:
|
||||
# - Create backup branch
|
||||
# - Create migration branch
|
||||
# - Rename all files to chezmoi conventions
|
||||
# - Show you what was done
|
||||
```
|
||||
|
||||
#### Option B: Manual (More Control)
|
||||
|
||||
Manually rename files following chezmoi conventions:
|
||||
|
||||
```bash
|
||||
# Base files become dot_ files
|
||||
git mv base/bashrc dot_bashrc
|
||||
git mv base/zshrc dot_zshrc
|
||||
git mv base/tmux.conf dot_tmux.conf
|
||||
|
||||
# Config files
|
||||
mkdir -p dot_config
|
||||
git mv config/fish dot_config/fish
|
||||
git mv config/nvim dot_config/nvim
|
||||
# ... etc
|
||||
|
||||
# Local bin (make executable)
|
||||
mkdir -p executable_dot_local/bin
|
||||
for file in local/bin/*; do
|
||||
git mv "$file" "executable_dot_local/bin/$(basename $file)"
|
||||
done
|
||||
|
||||
# SSH files (private)
|
||||
mkdir -p private_dot_ssh
|
||||
git mv ssh/* private_dot_ssh/
|
||||
|
||||
# See full examples in MIGRATION-DOTBOT-TO-CHEZMOI.md
|
||||
```
|
||||
|
||||
### Host-Specific Configurations
|
||||
|
||||
Your hosts need special attention:
|
||||
|
||||
```bash
|
||||
hosts/
|
||||
├── air/
|
||||
├── lakka/
|
||||
├── tunkki/
|
||||
└── s/
|
||||
```
|
||||
|
||||
**Read**: `HOST-SPECIFIC-MIGRATION.md` for detailed strategies.
|
||||
|
||||
**Quick decision guide**:
|
||||
- **Few differences per file** → Use templates with `{{ if .is_air }}`
|
||||
- **Complete replacement** → Use `filename__hostname` suffix
|
||||
- **Host-specific directories** → Use `.chezmoiignore` with templates
|
||||
|
||||
### Testing Before Commit
|
||||
|
||||
```bash
|
||||
# After restructuring files, test with chezmoi
|
||||
cd ~/.dotfiles
|
||||
|
||||
# Initialize chezmoi with current directory as source
|
||||
chezmoi init --source $(pwd)
|
||||
|
||||
# See what would happen (dry run)
|
||||
chezmoi apply --dry-run --verbose
|
||||
|
||||
# See what a specific file would look like
|
||||
chezmoi cat ~/.bashrc
|
||||
|
||||
# Check for errors
|
||||
chezmoi verify
|
||||
```
|
||||
|
||||
### Final Steps
|
||||
|
||||
1. **Commit Migration**
|
||||
```bash
|
||||
git add -A
|
||||
git commit -m "Migrate from dotbot to chezmoi"
|
||||
git push
|
||||
```
|
||||
|
||||
2. **Test on Current Machine**
|
||||
```bash
|
||||
# Apply dotfiles
|
||||
chezmoi apply -v
|
||||
|
||||
# Verify everything works
|
||||
# Open new terminal
|
||||
# Check configs
|
||||
```
|
||||
|
||||
3. **Test on Another Machine** (if available)
|
||||
```bash
|
||||
# On another machine
|
||||
sh -c "$(curl -fsLS get.chezmoi.io/lb)" -- init --apply ivuorinen
|
||||
|
||||
# Verify host-specific configs applied correctly
|
||||
```
|
||||
|
||||
4. **Clean Up** (after confirming everything works)
|
||||
```bash
|
||||
cd $(chezmoi source-path)
|
||||
|
||||
# Remove old dotbot files
|
||||
rm -rf tools/dotbot tools/dotbot-*
|
||||
rm install.conf.yaml
|
||||
rm tools/dotbot-defaults.yaml
|
||||
|
||||
# Optionally remove hosts/ if fully migrated to templates
|
||||
# rm -rf hosts/
|
||||
|
||||
git add -A
|
||||
git commit -m "Clean up old dotbot files"
|
||||
git push
|
||||
```
|
||||
|
||||
## Key Differences to Remember
|
||||
|
||||
### Installation
|
||||
**Before**: `./install` (ran dotbot)
|
||||
**After**: `sh -c "$(curl -fsLS get.chezmoi.io/lb)" -- init --apply ivuorinen`
|
||||
|
||||
### Making Changes
|
||||
**Before**:
|
||||
```bash
|
||||
cd ~/.dotfiles
|
||||
vim base/bashrc
|
||||
./install # Re-run to create symlinks
|
||||
```
|
||||
|
||||
**After**:
|
||||
```bash
|
||||
chezmoi edit ~/.bashrc
|
||||
# Or: vim ~/.bashrc && chezmoi add ~/.bashrc
|
||||
chezmoi apply
|
||||
```
|
||||
|
||||
### Syncing Across Machines
|
||||
**Before**:
|
||||
```bash
|
||||
cd ~/.dotfiles
|
||||
git pull
|
||||
./install
|
||||
```
|
||||
|
||||
**After**:
|
||||
```bash
|
||||
chezmoi update
|
||||
# Equivalent to: cd $(chezmoi source-path) && git pull && chezmoi apply
|
||||
```
|
||||
|
||||
### Host-Specific Configs
|
||||
**Before**: Separate files in `hosts/hostname/`
|
||||
**After**: Templates with `{{ if eq .chezmoi.hostname "air" }}` or `filename__hostname`
|
||||
|
||||
## File Mapping Reference
|
||||
|
||||
| Old Location | New Location | Notes |
|
||||
|--------------|--------------|-------|
|
||||
| `base/bashrc` | `dot_bashrc` | Becomes `~/.bashrc` |
|
||||
| `config/fish/` | `dot_config/fish/` | Becomes `~/.config/fish/` |
|
||||
| `local/bin/script` | `executable_dot_local/bin/script` | Executable `~/.local/bin/script` |
|
||||
| `ssh/config` | `private_dot_ssh/config` | Private (0600) `~/.ssh/config` |
|
||||
| `install.conf.yaml` | `run_once_*.sh.tmpl` | Setup tasks |
|
||||
| `hosts/air/config/` | `dot_config/*.tmpl` or `*__air` | Host-specific |
|
||||
|
||||
## Troubleshooting Quick Tips
|
||||
|
||||
### "Entry not in source state"
|
||||
```bash
|
||||
# File not added to chezmoi
|
||||
chezmoi add <file>
|
||||
```
|
||||
|
||||
### "File modified since chezmoi last wrote it"
|
||||
```bash
|
||||
# See changes
|
||||
chezmoi diff
|
||||
|
||||
# Re-add
|
||||
chezmoi add <file>
|
||||
```
|
||||
|
||||
### "Template undefined variable"
|
||||
```bash
|
||||
# Check available data
|
||||
chezmoi data
|
||||
|
||||
# Test template
|
||||
chezmoi execute-template "{{ .chezmoi.hostname }}"
|
||||
```
|
||||
|
||||
### Scripts not running
|
||||
```bash
|
||||
# Check permissions
|
||||
chmod +x run_once_*.sh.tmpl
|
||||
|
||||
# Force re-run
|
||||
chezmoi apply --force
|
||||
```
|
||||
|
||||
## Additional Resources
|
||||
|
||||
### Created Documentation
|
||||
- `MIGRATION-DOTBOT-TO-CHEZMOI.md` - Complete migration guide
|
||||
- `CHEZMOI-QUICK-REFERENCE.md` - Daily usage reference
|
||||
- `HOST-SPECIFIC-MIGRATION.md` - Host configuration guide
|
||||
- `MIGRATION-NOTES.md` - Generated after running migration script
|
||||
|
||||
### External Resources
|
||||
- [Chezmoi Official Docs](https://www.chezmoi.io/)
|
||||
- [Chezmoi Quick Start](https://www.chezmoi.io/quick-start/)
|
||||
- [Chezmoi User Guide](https://www.chezmoi.io/user-guide/)
|
||||
- [Chezmoi Templates](https://www.chezmoi.io/reference/templates/)
|
||||
|
||||
## Summary Checklist
|
||||
|
||||
- [x] Install script updated
|
||||
- [x] Chezmoi configuration created (`.chezmoi.yaml.tmpl`)
|
||||
- [x] Ignore file created (`.chezmoiignore`)
|
||||
- [x] Run scripts created (4 scripts)
|
||||
- [x] Hooks created (pre-read-source-state)
|
||||
- [x] Migration script created (`migrate-to-chezmoi.sh`)
|
||||
- [x] Documentation created (3 guides)
|
||||
- [ ] **Review and commit configuration files**
|
||||
- [ ] **Run migration script** or manually restructure
|
||||
- [ ] **Migrate host-specific configs**
|
||||
- [ ] **Test with chezmoi**
|
||||
- [ ] **Commit migration**
|
||||
- [ ] **Test on current machine**
|
||||
- [ ] **Test on other machines**
|
||||
- [ ] **Clean up old dotbot files**
|
||||
- [ ] **Update README.md** (document chezmoi usage)
|
||||
|
||||
## Questions?
|
||||
|
||||
If you have questions during migration:
|
||||
|
||||
1. Check the relevant guide:
|
||||
- General questions → `MIGRATION-DOTBOT-TO-CHEZMOI.md`
|
||||
- Usage questions → `CHEZMOI-QUICK-REFERENCE.md`
|
||||
- Host configs → `HOST-SPECIFIC-MIGRATION.md`
|
||||
|
||||
2. Use chezmoi's help:
|
||||
```bash
|
||||
chezmoi help
|
||||
chezmoi help <command>
|
||||
chezmoi doctor
|
||||
```
|
||||
|
||||
3. Check official docs:
|
||||
- https://www.chezmoi.io/
|
||||
|
||||
## What Makes This Migration Special
|
||||
|
||||
Your dotfiles have:
|
||||
- ✅ Custom `dfm` script → Wrapped in run_once scripts
|
||||
- ✅ Multiple dotbot plugins → Equivalent run_once scripts
|
||||
- ✅ Host-specific configs → Template support added
|
||||
- ✅ Complex installation → Automated in run scripts
|
||||
- ✅ Git submodules → Pre-read hook handles this
|
||||
- ✅ Multiple hosts (air, lakka, tunkki, s) → Detected and flagged
|
||||
|
||||
Everything from your dotbot setup has been accounted for in the chezmoi migration!
|
||||
|
||||
## Final Notes
|
||||
|
||||
- **Take your time**: This is a significant migration
|
||||
- **Test thoroughly**: Use `--dry-run` extensively
|
||||
- **Backup everything**: The migration script creates backups
|
||||
- **Iterate**: You can always refine the migration later
|
||||
- **Have fun**: Chezmoi offers powerful features to explore!
|
||||
|
||||
Good luck with your migration! 🚀
|
||||
432
docs/CHEZMOI-QUICK-REFERENCE.md
Normal file
432
docs/CHEZMOI-QUICK-REFERENCE.md
Normal file
@@ -0,0 +1,432 @@
|
||||
# Chezmoi Quick Reference
|
||||
|
||||
Quick reference guide for common chezmoi operations with your dotfiles.
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
# Fresh install on a new machine
|
||||
sh -c "$(curl -fsLS get.chezmoi.io/lb)" -- init --apply ivuorinen
|
||||
|
||||
# Or if chezmoi is already installed
|
||||
chezmoi init --apply ivuorinen
|
||||
```
|
||||
|
||||
## Daily Workflow
|
||||
|
||||
### Making Changes
|
||||
|
||||
```bash
|
||||
# Edit a dotfile (opens in $EDITOR)
|
||||
chezmoi edit ~/.bashrc
|
||||
|
||||
# Or edit directly and add to chezmoi
|
||||
vim ~/.bashrc
|
||||
chezmoi add ~/.bashrc
|
||||
|
||||
# See what would change
|
||||
chezmoi diff
|
||||
|
||||
# Apply changes
|
||||
chezmoi apply
|
||||
```
|
||||
|
||||
### Syncing Across Machines
|
||||
|
||||
```bash
|
||||
# On machine A: commit and push changes
|
||||
cd $(chezmoi source-path)
|
||||
git add -A
|
||||
git commit -m "Update configuration"
|
||||
git push
|
||||
|
||||
# On machine B: pull and apply changes
|
||||
chezmoi update
|
||||
# This is equivalent to:
|
||||
# cd $(chezmoi source-path) && git pull && chezmoi apply
|
||||
```
|
||||
|
||||
## Common Commands
|
||||
|
||||
### Viewing and Inspecting
|
||||
|
||||
```bash
|
||||
# See what chezmoi would do
|
||||
chezmoi diff
|
||||
|
||||
# List all managed files
|
||||
chezmoi managed
|
||||
|
||||
# List unmanaged files
|
||||
chezmoi unmanaged
|
||||
|
||||
# Show the source path
|
||||
chezmoi source-path
|
||||
|
||||
# Show what a file would look like after templating
|
||||
chezmoi cat ~/.bashrc
|
||||
|
||||
# Show available template data
|
||||
chezmoi data
|
||||
```
|
||||
|
||||
### Adding and Removing Files
|
||||
|
||||
```bash
|
||||
# Add a file
|
||||
chezmoi add ~/.newfile
|
||||
|
||||
# Add a file as a template
|
||||
chezmoi add --template ~/.newfile
|
||||
|
||||
# Add a directory recursively
|
||||
chezmoi add --recursive ~/.config/newapp
|
||||
|
||||
# Add with autodetection (templates, scripts, etc.)
|
||||
chezmoi add --autotemplate ~/.newfile
|
||||
|
||||
# Stop managing a file (removes from chezmoi)
|
||||
chezmoi forget ~/.oldfile
|
||||
|
||||
# Remove a file from both chezmoi and home directory
|
||||
chezmoi remove ~/.oldfile
|
||||
```
|
||||
|
||||
### Working with Templates
|
||||
|
||||
```bash
|
||||
# Execute a template expression
|
||||
chezmoi execute-template "{{ .chezmoi.hostname }}"
|
||||
|
||||
# Edit template data
|
||||
chezmoi edit-config
|
||||
|
||||
# Verify templates
|
||||
chezmoi verify
|
||||
```
|
||||
|
||||
### Applying Changes
|
||||
|
||||
```bash
|
||||
# Apply all changes
|
||||
chezmoi apply
|
||||
|
||||
# Apply with verbose output
|
||||
chezmoi apply -v
|
||||
|
||||
# Dry run (show what would happen)
|
||||
chezmoi apply --dry-run -v
|
||||
|
||||
# Force apply (re-runs scripts)
|
||||
chezmoi apply --force
|
||||
|
||||
# Apply only specific files
|
||||
chezmoi apply ~/.bashrc ~/.zshrc
|
||||
```
|
||||
|
||||
### Updating from Repository
|
||||
|
||||
```bash
|
||||
# Update dotfiles from repository
|
||||
chezmoi update
|
||||
|
||||
# Update but don't apply
|
||||
cd $(chezmoi source-path) && git pull
|
||||
|
||||
# Update with interactive merge
|
||||
chezmoi update --interactive
|
||||
```
|
||||
|
||||
## File Naming Conventions
|
||||
|
||||
### Basic Prefixes
|
||||
|
||||
| Source File | Destination | Description |
|
||||
|------------|-------------|-------------|
|
||||
| `dot_bashrc` | `~/.bashrc` | Dot file |
|
||||
| `dot_config/` | `~/.config/` | Dot directory |
|
||||
| `private_dot_ssh/` | `~/.ssh/` | Private directory (0700) |
|
||||
| `executable_dot_local/bin/script` | `~/.local/bin/script` | Executable |
|
||||
| `symlink_dot_vim` | `~/.vim` | Symlink |
|
||||
| `readonly_dot_file` | `~/.file` | Read-only |
|
||||
|
||||
### Template Files
|
||||
|
||||
| Source File | Description |
|
||||
|------------|-------------|
|
||||
| `dot_bashrc.tmpl` | Template file |
|
||||
| `dot_config/fish/config.fish.tmpl` | Nested template |
|
||||
|
||||
### Scripts
|
||||
|
||||
| Script Name | When It Runs |
|
||||
|------------|--------------|
|
||||
| `run_once_before_*.sh` | Once before applying |
|
||||
| `run_once_after_*.sh` | Once after applying |
|
||||
| `run_before_*.sh` | Every time before applying |
|
||||
| `run_after_*.sh` | Every time after applying |
|
||||
| `run_onchange_*.sh` | When script content changes |
|
||||
|
||||
## Template Syntax
|
||||
|
||||
### Basic Variables
|
||||
|
||||
```go
|
||||
// Hostname
|
||||
{{ .chezmoi.hostname }}
|
||||
|
||||
// Username
|
||||
{{ .chezmoi.username }}
|
||||
|
||||
// Operating system
|
||||
{{ .chezmoi.os }}
|
||||
|
||||
// Home directory
|
||||
{{ .chezmoi.homeDir }}
|
||||
|
||||
// Source directory
|
||||
{{ .chezmoi.sourceDir }}
|
||||
|
||||
// Custom data from .chezmoi.yaml
|
||||
{{ .is_macos }}
|
||||
{{ .is_linux }}
|
||||
```
|
||||
|
||||
### Conditionals
|
||||
|
||||
```go
|
||||
{{ if eq .chezmoi.hostname "air" }}
|
||||
# Configuration for air
|
||||
{{ else if eq .chezmoi.hostname "lakka" }}
|
||||
# Configuration for lakka
|
||||
{{ else }}
|
||||
# Default configuration
|
||||
{{ end }}
|
||||
|
||||
{{ if .is_macos }}
|
||||
# macOS-specific
|
||||
{{ end }}
|
||||
|
||||
{{ if and .is_macos (eq .chezmoi.hostname "air") }}
|
||||
# macOS on air
|
||||
{{ end }}
|
||||
```
|
||||
|
||||
### Loops
|
||||
|
||||
```go
|
||||
{{ range $key, $value := .data }}
|
||||
{{ $key }}: {{ $value }}
|
||||
{{ end }}
|
||||
```
|
||||
|
||||
### Including Files
|
||||
|
||||
```go
|
||||
{{ include "template-file.txt" }}
|
||||
{{ includeTemplate "template-file.tmpl" }}
|
||||
```
|
||||
|
||||
## Host-Specific Configuration
|
||||
|
||||
### Method 1: Template Conditionals
|
||||
|
||||
In `dot_bashrc.tmpl`:
|
||||
```bash
|
||||
# Common configuration
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
|
||||
{{ if eq .chezmoi.hostname "air" }}
|
||||
# air-specific configuration
|
||||
export WORK_DIR="$HOME/Work"
|
||||
{{ end }}
|
||||
|
||||
{{ if eq .chezmoi.hostname "lakka" }}
|
||||
# lakka-specific configuration
|
||||
export WORK_DIR="$HOME/Projects"
|
||||
{{ end }}
|
||||
```
|
||||
|
||||
### Method 2: Separate Files with Symlinks
|
||||
|
||||
Use `.chezmoiignore` to exclude files for specific hosts:
|
||||
|
||||
```
|
||||
{{ if ne .chezmoi.hostname "air" }}
|
||||
dot_config/air-specific-app/
|
||||
{{ end }}
|
||||
|
||||
{{ if ne .chezmoi.hostname "lakka" }}
|
||||
dot_config/lakka-specific-app/
|
||||
{{ end }}
|
||||
```
|
||||
|
||||
## Working with Secrets
|
||||
|
||||
### Environment Variables
|
||||
|
||||
```go
|
||||
{{ .Env.MY_SECRET }}
|
||||
```
|
||||
|
||||
### 1Password
|
||||
|
||||
```go
|
||||
{{ (onepasswordDocument "my-secret").content }}
|
||||
{{ (onepasswordItemFields "my-item").password.value }}
|
||||
```
|
||||
|
||||
### External Commands
|
||||
|
||||
```go
|
||||
{{ output "op" "read" "op://vault/item/field" }}
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Check Configuration
|
||||
|
||||
```bash
|
||||
# Verify chezmoi is working correctly
|
||||
chezmoi doctor
|
||||
|
||||
# Check state
|
||||
chezmoi verify
|
||||
|
||||
# See detailed info
|
||||
chezmoi data
|
||||
```
|
||||
|
||||
### Debug Templates
|
||||
|
||||
```bash
|
||||
# See what a template would produce
|
||||
chezmoi cat ~/.bashrc
|
||||
|
||||
# Execute a template
|
||||
chezmoi execute-template "{{ .chezmoi.hostname }}"
|
||||
|
||||
# Verbose output
|
||||
chezmoi apply -v
|
||||
```
|
||||
|
||||
### Fix Issues
|
||||
|
||||
```bash
|
||||
# Re-apply everything
|
||||
chezmoi apply --force
|
||||
|
||||
# Reset state (dangerous!)
|
||||
chezmoi state reset
|
||||
|
||||
# Clear cache
|
||||
rm -rf $(chezmoi source-path)/.git/chezmoi-*
|
||||
```
|
||||
|
||||
### Common Errors
|
||||
|
||||
**Error: template: ... undefined variable**
|
||||
- Check template syntax
|
||||
- Verify data with `chezmoi data`
|
||||
|
||||
**Error: entry ... is not in source state**
|
||||
- File not added to chezmoi: `chezmoi add <file>`
|
||||
|
||||
**Error: ... has been modified since chezmoi last wrote it**
|
||||
- See changes: `chezmoi diff`
|
||||
- Re-add: `chezmoi add <file>`
|
||||
- Or force apply: `chezmoi apply --force`
|
||||
|
||||
## Useful Aliases
|
||||
|
||||
Add these to your shell configuration:
|
||||
|
||||
```bash
|
||||
# Chezmoi shortcuts
|
||||
alias cm='chezmoi'
|
||||
alias cma='chezmoi apply'
|
||||
alias cmd='chezmoi diff'
|
||||
alias cme='chezmoi edit'
|
||||
alias cmu='chezmoi update'
|
||||
alias cmcd='cd $(chezmoi source-path)'
|
||||
|
||||
# Common workflows
|
||||
alias cmup='chezmoi git pull && chezmoi apply'
|
||||
alias cmpush='cd $(chezmoi source-path) && git add -A && git commit && git push'
|
||||
```
|
||||
|
||||
## Environment Variables
|
||||
|
||||
```bash
|
||||
# Change source directory (default: ~/.local/share/chezmoi)
|
||||
export CHEZMOI_SOURCE_DIR="$HOME/.dotfiles"
|
||||
|
||||
# Change config file location
|
||||
export CHEZMOI_CONFIG_FILE="$HOME/.config/chezmoi/chezmoi.yaml"
|
||||
|
||||
# Use different editor
|
||||
export EDITOR="vim"
|
||||
```
|
||||
|
||||
## Advanced Usage
|
||||
|
||||
### Using chezmoi as a dotfiles manager
|
||||
|
||||
```bash
|
||||
# Initialize with local directory
|
||||
chezmoi init --source ~/.dotfiles
|
||||
|
||||
# Use current directory as source
|
||||
chezmoi init --source $(pwd)
|
||||
```
|
||||
|
||||
### Managing Multiple Machines
|
||||
|
||||
Use data in `.chezmoi.yaml.tmpl`:
|
||||
|
||||
```yaml
|
||||
data:
|
||||
is_work_machine: {{ or (eq .chezmoi.hostname "work-laptop") (eq .chezmoi.hostname "work-desktop") }}
|
||||
is_personal: {{ eq .chezmoi.hostname "personal-laptop" }}
|
||||
```
|
||||
|
||||
Then in templates:
|
||||
|
||||
```go
|
||||
{{ if .is_work_machine }}
|
||||
# Work configuration
|
||||
{{ end }}
|
||||
```
|
||||
|
||||
### External Files
|
||||
|
||||
```yaml
|
||||
# .chezmoiexternal.yaml
|
||||
".config/nvim/lua/plugins":
|
||||
type: "archive"
|
||||
url: "https://github.com/user/nvim-config/archive/main.tar.gz"
|
||||
stripComponents: 1
|
||||
refreshPeriod: "168h"
|
||||
```
|
||||
|
||||
## Resources
|
||||
|
||||
- [Official Documentation](https://www.chezmoi.io/)
|
||||
- [User Guide](https://www.chezmoi.io/user-guide/)
|
||||
- [Template Reference](https://www.chezmoi.io/reference/templates/)
|
||||
- [Command Reference](https://www.chezmoi.io/reference/commands/)
|
||||
- [FAQ](https://www.chezmoi.io/faq/)
|
||||
|
||||
## Help
|
||||
|
||||
```bash
|
||||
# General help
|
||||
chezmoi help
|
||||
|
||||
# Command-specific help
|
||||
chezmoi help apply
|
||||
chezmoi help add
|
||||
|
||||
# Show version
|
||||
chezmoi --version
|
||||
```
|
||||
462
docs/HOST-SPECIFIC-MIGRATION.md
Normal file
462
docs/HOST-SPECIFIC-MIGRATION.md
Normal file
@@ -0,0 +1,462 @@
|
||||
# Host-Specific Configuration Migration
|
||||
|
||||
Guide for migrating host-specific configurations from dotbot to chezmoi.
|
||||
|
||||
## Current Dotbot Structure
|
||||
|
||||
You currently have host-specific configurations in:
|
||||
|
||||
```
|
||||
hosts/
|
||||
├── air/
|
||||
│ ├── base/
|
||||
│ ├── config/
|
||||
│ └── install.conf.yaml
|
||||
├── lakka/
|
||||
│ ├── base/
|
||||
│ ├── config/
|
||||
│ └── install.conf.yaml
|
||||
├── tunkki/
|
||||
│ └── install.conf.yaml
|
||||
└── s/
|
||||
└── install.conf.yaml
|
||||
```
|
||||
|
||||
## Chezmoi Approaches
|
||||
|
||||
There are three main approaches to handle host-specific configurations in chezmoi:
|
||||
|
||||
### 1. Template Conditionals (Recommended)
|
||||
|
||||
Use if/else conditions in template files.
|
||||
|
||||
**Pros:**
|
||||
- Single source file for all hosts
|
||||
- Easy to see all variations
|
||||
- Less file duplication
|
||||
|
||||
**Cons:**
|
||||
- Files can get complex with many hosts
|
||||
- Need `.tmpl` extension
|
||||
|
||||
**Example:**
|
||||
|
||||
Create `dot_bashrc.tmpl`:
|
||||
```bash
|
||||
# Common configuration for all hosts
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
|
||||
{{ if eq .chezmoi.hostname "air" }}
|
||||
# air-specific
|
||||
export WORK_DIR="$HOME/Work"
|
||||
alias air-specific="echo air"
|
||||
{{ end }}
|
||||
|
||||
{{ if eq .chezmoi.hostname "lakka" }}
|
||||
# lakka-specific
|
||||
export WORK_DIR="$HOME/Projects"
|
||||
alias lakka-specific="echo lakka"
|
||||
{{ end }}
|
||||
|
||||
# More common configuration
|
||||
```
|
||||
|
||||
### 2. Separate Files with .chezmoiignore (Simple)
|
||||
|
||||
Keep separate files per host and ignore the ones that don't apply.
|
||||
|
||||
**Pros:**
|
||||
- Clean separation
|
||||
- No template syntax needed
|
||||
- Easy to maintain
|
||||
|
||||
**Cons:**
|
||||
- More files to manage
|
||||
- Some duplication
|
||||
|
||||
**Example:**
|
||||
|
||||
Create multiple version files:
|
||||
```
|
||||
dot_bashrc__air
|
||||
dot_bashrc__lakka
|
||||
dot_bashrc__tunkki
|
||||
```
|
||||
|
||||
These automatically apply based on hostname. No `.chezmoiignore` needed!
|
||||
|
||||
Or use directories:
|
||||
```
|
||||
dot_config/
|
||||
├── app/
|
||||
│ ├── config.yaml__air
|
||||
│ ├── config.yaml__lakka
|
||||
│ └── config.yaml__default
|
||||
```
|
||||
|
||||
### 3. Hybrid Approach (Most Flexible)
|
||||
|
||||
Combine both methods:
|
||||
- Use templates for files with minor differences
|
||||
- Use separate files for completely different configs
|
||||
|
||||
## Migration Steps for Your Hosts
|
||||
|
||||
### Step 1: Analyze Each Host
|
||||
|
||||
Review what's different per host:
|
||||
|
||||
```bash
|
||||
# See what's in each host directory
|
||||
ls -la hosts/air/
|
||||
ls -la hosts/lakka/
|
||||
ls -la hosts/tunkki/
|
||||
ls -la hosts/s/
|
||||
|
||||
# Compare configs
|
||||
diff hosts/air/config/some-app/config hosts/lakka/config/some-app/config
|
||||
```
|
||||
|
||||
### Step 2: Choose Strategy Per File
|
||||
|
||||
For each file that differs:
|
||||
|
||||
**Small differences** (few lines):
|
||||
→ Use templates with conditionals
|
||||
|
||||
**Complete replacement**:
|
||||
→ Use `filename__hostname` suffix
|
||||
|
||||
**Shared base + host additions**:
|
||||
→ Use templates with includes or blocks
|
||||
|
||||
### Step 3: Migrate Host Configurations
|
||||
|
||||
#### Example: Fish Configuration
|
||||
|
||||
Your `hosts/air/config/fish/config.fish` differences:
|
||||
|
||||
**Current dotbot way:**
|
||||
```yaml
|
||||
# hosts/air/install.conf.yaml
|
||||
- link:
|
||||
~/.config/:
|
||||
path: hosts/air/config/**
|
||||
```
|
||||
|
||||
**New chezmoi way - Option A (Templates):**
|
||||
|
||||
Create `dot_config/fish/config.fish.tmpl`:
|
||||
```fish
|
||||
# Common fish configuration
|
||||
set -gx EDITOR nvim
|
||||
|
||||
{{ if eq .chezmoi.hostname "air" }}
|
||||
# air-specific config
|
||||
set -gx WORK_DIR ~/Work
|
||||
{{ else if eq .chezmoi.hostname "lakka" }}
|
||||
# lakka-specific config
|
||||
set -gx WORK_DIR ~/Projects
|
||||
{{ end }}
|
||||
|
||||
# More common configuration
|
||||
```
|
||||
|
||||
**New chezmoi way - Option B (Separate files):**
|
||||
|
||||
Create multiple files:
|
||||
```
|
||||
dot_config/fish/config.fish__air
|
||||
dot_config/fish/config.fish__lakka
|
||||
```
|
||||
|
||||
Chezmoi will automatically use the correct file based on hostname.
|
||||
|
||||
### Step 4: Update .chezmoi.yaml.tmpl
|
||||
|
||||
Add host flags for easier conditionals:
|
||||
|
||||
```yaml
|
||||
{{- $hostname := .chezmoi.hostname -}}
|
||||
|
||||
data:
|
||||
hostname: {{ $hostname | quote }}
|
||||
|
||||
# Host-specific flags
|
||||
is_air: {{ eq $hostname "air" }}
|
||||
is_lakka: {{ eq $hostname "lakka" }}
|
||||
is_tunkki: {{ eq $hostname "tunkki" }}
|
||||
is_s: {{ eq $hostname "s" }}
|
||||
|
||||
# Group flags
|
||||
is_work: {{ or (eq $hostname "air") (eq $hostname "tunkki") }}
|
||||
is_personal: {{ or (eq $hostname "lakka") (eq $hostname "s") }}
|
||||
```
|
||||
|
||||
Then use simpler conditionals:
|
||||
|
||||
```go
|
||||
{{ if .is_air }}
|
||||
# air config
|
||||
{{ end }}
|
||||
|
||||
{{ if .is_work }}
|
||||
# All work machines
|
||||
{{ end }}
|
||||
```
|
||||
|
||||
## Specific Migration Examples
|
||||
|
||||
### Example 1: Simple Host-Specific Line
|
||||
|
||||
**Before (dotbot):**
|
||||
```yaml
|
||||
# hosts/air/config/app/config
|
||||
setting=value_for_air
|
||||
|
||||
# hosts/lakka/config/app/config
|
||||
setting=value_for_lakka
|
||||
```
|
||||
|
||||
**After (chezmoi) - Option A:**
|
||||
```
|
||||
# dot_config/app/config.tmpl
|
||||
{{ if .is_air -}}
|
||||
setting=value_for_air
|
||||
{{- else if .is_lakka -}}
|
||||
setting=value_for_lakka
|
||||
{{- end }}
|
||||
```
|
||||
|
||||
**After (chezmoi) - Option B:**
|
||||
```
|
||||
# dot_config/app/config__air
|
||||
setting=value_for_air
|
||||
|
||||
# dot_config/app/config__lakka
|
||||
setting=value_for_lakka
|
||||
```
|
||||
|
||||
### Example 2: Mostly Shared with Few Differences
|
||||
|
||||
**Before:**
|
||||
100 lines shared, 5 lines different per host
|
||||
|
||||
**After (recommended - templates):**
|
||||
```bash
|
||||
# dot_config/app/config.tmpl
|
||||
# ... 50 lines of shared config ...
|
||||
|
||||
{{ if .is_air }}
|
||||
air_specific_setting=true
|
||||
{{ else if .is_lakka }}
|
||||
lakka_specific_setting=true
|
||||
{{ end }}
|
||||
|
||||
# ... 50 more lines of shared config ...
|
||||
```
|
||||
|
||||
### Example 3: Completely Different Configs
|
||||
|
||||
**Before:**
|
||||
Two totally different config files
|
||||
|
||||
**After (recommended - separate files):**
|
||||
```
|
||||
dot_config/app/config__air
|
||||
dot_config/app/config__lakka
|
||||
```
|
||||
|
||||
### Example 4: Host-Specific Directories
|
||||
|
||||
**Before:**
|
||||
```
|
||||
hosts/air/config/air-only-app/
|
||||
hosts/lakka/config/lakka-only-app/
|
||||
```
|
||||
|
||||
**After - Use .chezmoiignore:**
|
||||
```
|
||||
# .chezmoiignore
|
||||
{{ if ne .chezmoi.hostname "air" }}
|
||||
dot_config/air-only-app/
|
||||
{{ end }}
|
||||
|
||||
{{ if ne .chezmoi.hostname "lakka" }}
|
||||
dot_config/lakka-only-app/
|
||||
{{ end }}
|
||||
```
|
||||
|
||||
Then create:
|
||||
```
|
||||
dot_config/air-only-app/ # Only applied on air
|
||||
dot_config/lakka-only-app/ # Only applied on lakka
|
||||
```
|
||||
|
||||
## Testing Host-Specific Configs
|
||||
|
||||
### Before Applying
|
||||
|
||||
```bash
|
||||
# See what would be applied on this host
|
||||
chezmoi diff
|
||||
|
||||
# See what a specific file would look like
|
||||
chezmoi cat ~/.config/fish/config.fish
|
||||
|
||||
# Check template data
|
||||
chezmoi data | grep hostname
|
||||
```
|
||||
|
||||
### Simulating Other Hosts
|
||||
|
||||
```bash
|
||||
# Test what would be applied on another host
|
||||
chezmoi execute-template --init --promptString hostname=air "{{ .chezmoi.hostname }}"
|
||||
|
||||
# See what a file would look like on another host
|
||||
# (This requires manual variable setting in templates)
|
||||
```
|
||||
|
||||
### On Another Machine
|
||||
|
||||
```bash
|
||||
# Initialize and test without applying
|
||||
chezmoi init --dry-run --verbose ivuorinen
|
||||
|
||||
# Apply with dry-run
|
||||
chezmoi apply --dry-run -v
|
||||
```
|
||||
|
||||
## Migration Script Adjustments
|
||||
|
||||
Add to `migrate-to-chezmoi.sh`:
|
||||
|
||||
```bash
|
||||
# Migrate host-specific configs
|
||||
log_info "Processing host-specific configurations..."
|
||||
|
||||
CURRENT_HOST=$(hostname -s)
|
||||
log_info "Current hostname: $CURRENT_HOST"
|
||||
|
||||
# Prompt for migration strategy
|
||||
echo ""
|
||||
log_warning "How do you want to handle host-specific configs?"
|
||||
echo " 1) Merge into templates (recommended for small differences)"
|
||||
echo " 2) Keep separate files per host (recommended for large differences)"
|
||||
echo " 3) Manual (skip automatic migration)"
|
||||
read -p "Choose (1/2/3): " -r STRATEGY
|
||||
|
||||
if [ "$STRATEGY" = "1" ]; then
|
||||
log_info "Will merge into templates (requires manual editing after)"
|
||||
# Create template files
|
||||
# ... migration logic ...
|
||||
|
||||
elif [ "$STRATEGY" = "2" ]; then
|
||||
log_info "Creating separate host-specific files..."
|
||||
|
||||
for host in air lakka tunkki s; do
|
||||
if [ -d "hosts/$host" ]; then
|
||||
log_info "Processing host: $host"
|
||||
|
||||
# Process host-specific base files
|
||||
if [ -d "hosts/$host/base" ]; then
|
||||
for file in hosts/$host/base/*; do
|
||||
if [ -f "$file" ]; then
|
||||
filename=$(basename "$file")
|
||||
move_dotfiles "$file" "dot_${filename}__${host}" ""
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# Process host-specific config files
|
||||
if [ -d "hosts/$host/config" ]; then
|
||||
for file in hosts/$host/config/*; do
|
||||
if [ -f "$file" ]; then
|
||||
filename=$(basename "$file")
|
||||
dest="dot_config/$(dirname $file)__${host}"
|
||||
move_dotfiles "$file" "$dest/$(basename $file)" ""
|
||||
fi
|
||||
done
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
else
|
||||
log_info "Skipping automatic host-specific migration"
|
||||
log_info "You'll need to manually migrate hosts/ directory"
|
||||
fi
|
||||
```
|
||||
|
||||
## Best Practices
|
||||
|
||||
1. **Start Simple**: Use separate files first, move to templates as you see patterns
|
||||
|
||||
2. **Don't Over-Template**: If a file is completely different per host, use separate files
|
||||
|
||||
3. **Document Hosts**: Add comments in `.chezmoi.yaml.tmpl` explaining each host
|
||||
|
||||
4. **Test Thoroughly**: Test on each host before committing
|
||||
|
||||
5. **Use Host Groups**: Group hosts (work/personal, laptop/desktop) for easier conditionals
|
||||
|
||||
## Checklist
|
||||
|
||||
- [ ] Identify all host-specific files
|
||||
- [ ] Choose strategy per file (templates vs separate)
|
||||
- [ ] Update `.chezmoi.yaml.tmpl` with host flags
|
||||
- [ ] Migrate host-specific base files
|
||||
- [ ] Migrate host-specific config files
|
||||
- [ ] Update `.chezmoiignore` for host-specific directories
|
||||
- [ ] Test on current host
|
||||
- [ ] Test on other hosts
|
||||
- [ ] Document which approach was used where
|
||||
- [ ] Clean up old hosts/ directory
|
||||
|
||||
## Examples from Your Hosts
|
||||
|
||||
Based on your current structure:
|
||||
|
||||
### hosts/air/install.conf.yaml
|
||||
|
||||
```yaml
|
||||
- link:
|
||||
~/.config/:
|
||||
path: hosts/air/config/**
|
||||
```
|
||||
|
||||
**Migration approach:**
|
||||
- Check what's in `hosts/air/config/`
|
||||
- If it's app configs, use separate files: `dot_config/app/config__air`
|
||||
- If it's just a few lines different, merge into templates
|
||||
|
||||
### Common Pattern
|
||||
|
||||
For configurations that need host-specific values but share structure:
|
||||
|
||||
```yaml
|
||||
# dot_config/app/config.tmpl
|
||||
# Common settings
|
||||
port=8080
|
||||
|
||||
# Host-specific
|
||||
{{ if .is_air -}}
|
||||
workspace=/Users/yourname/Work
|
||||
{{- else if .is_lakka -}}
|
||||
workspace=/Users/yourname/Projects
|
||||
{{- end }}
|
||||
|
||||
# More common settings
|
||||
debug=false
|
||||
```
|
||||
|
||||
## Need Help?
|
||||
|
||||
If you're unsure about a specific file:
|
||||
|
||||
1. Check the diff: `diff hosts/air/file hosts/lakka/file`
|
||||
2. Count different lines
|
||||
3. If < 20% different → use templates
|
||||
4. If > 20% different → use separate files
|
||||
|
||||
Remember: You can always refactor later!
|
||||
523
docs/MIGRATION-DOTBOT-TO-CHEZMOI.md
Normal file
523
docs/MIGRATION-DOTBOT-TO-CHEZMOI.md
Normal file
@@ -0,0 +1,523 @@
|
||||
# Migration Guide: Dotbot to Chezmoi
|
||||
|
||||
This guide documents the migration from dotbot to chezmoi for managing dotfiles.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Why Migrate to Chezmoi?](#why-migrate-to-chezmoi)
|
||||
2. [Key Differences](#key-differences)
|
||||
3. [Dotbot to Chezmoi Mapping](#dotbot-to-chezmoi-mapping)
|
||||
4. [New File Structure](#new-file-structure)
|
||||
5. [Migration Steps](#migration-steps)
|
||||
6. [Usage Guide](#usage-guide)
|
||||
7. [Troubleshooting](#troubleshooting)
|
||||
|
||||
## Why Migrate to Chezmoi?
|
||||
|
||||
Chezmoi offers several advantages over dotbot:
|
||||
|
||||
- **Built-in templating**: Use Go templates for dynamic configuration
|
||||
- **Secret management**: Native support for password managers (1Password, LastPass, etc.)
|
||||
- **Cross-platform**: Better support for managing dotfiles across different OS and machines
|
||||
- **State tracking**: Chezmoi tracks what it manages more precisely
|
||||
- **Active development**: Regular updates and large community
|
||||
- **No dependencies**: Single binary, no Python required
|
||||
|
||||
## Key Differences
|
||||
|
||||
### Philosophy
|
||||
|
||||
**Dotbot**:
|
||||
- Configuration-driven (YAML files)
|
||||
- Manages symlinks from a source directory
|
||||
- Plugins extend functionality
|
||||
|
||||
**Chezmoi**:
|
||||
- Source-state driven
|
||||
- Copies files to home directory (can also use symlinks)
|
||||
- Built-in templating for dynamic content
|
||||
- Manages the entire lifecycle of dotfiles
|
||||
|
||||
### Directory Structure
|
||||
|
||||
**Dotbot**:
|
||||
```
|
||||
~/.dotfiles/
|
||||
├── base/ # Files symlinked to ~/.*
|
||||
├── config/ # Files symlinked to ~/.config/
|
||||
├── local/ # Scripts and local files
|
||||
├── install # Installation script
|
||||
└── install.conf.yaml # Configuration
|
||||
```
|
||||
|
||||
**Chezmoi**:
|
||||
```
|
||||
~/.local/share/chezmoi/ # Source directory
|
||||
├── .chezmoi.yaml.tmpl # Configuration template
|
||||
├── .chezmoiignore # Files to ignore
|
||||
├── run_once_*.sh.tmpl # One-time setup scripts
|
||||
├── run_*.sh.tmpl # Scripts that run on every apply
|
||||
├── dot_bashrc # Becomes ~/.bashrc
|
||||
├── dot_config/ # Becomes ~/.config/
|
||||
└── private_dot_ssh/ # Becomes ~/.ssh/ with 0700
|
||||
```
|
||||
|
||||
## Dotbot to Chezmoi Mapping
|
||||
|
||||
### 1. Link Directives
|
||||
|
||||
**Dotbot** (install.conf.yaml):
|
||||
```yaml
|
||||
- link:
|
||||
~/.bashrc: base/bashrc
|
||||
~/.config/fish: config/fish
|
||||
```
|
||||
|
||||
**Chezmoi**:
|
||||
- Files are automatically managed based on their names in the source directory
|
||||
- `dot_bashrc` → `~/.bashrc`
|
||||
- `dot_config/fish/` → `~/.config/fish/`
|
||||
- Use `symlink_` prefix for symlinks: `symlink_dot_vim` → symlinked `~/.vim`
|
||||
|
||||
### 2. Create Directives
|
||||
|
||||
**Dotbot**:
|
||||
```yaml
|
||||
- create:
|
||||
~/.ssh:
|
||||
mode: 0700
|
||||
~/.local/bin:
|
||||
```
|
||||
|
||||
**Chezmoi**:
|
||||
- Create a `run_once_after_create-directories.sh.tmpl` script
|
||||
- Or use `.chezmoitemplates` for reusable directory creation
|
||||
- Chezmoi automatically creates parent directories
|
||||
|
||||
### 3. Shell Commands
|
||||
|
||||
**Dotbot**:
|
||||
```yaml
|
||||
- shell:
|
||||
- git submodule update --init --recursive
|
||||
- bash local/bin/dfm install all
|
||||
```
|
||||
|
||||
**Chezmoi**:
|
||||
- Use `run_once_*.sh.tmpl` for one-time setup scripts
|
||||
- Use `run_*.sh.tmpl` for scripts that run every time
|
||||
- Use `run_before_*.sh` for scripts that run before applying
|
||||
- Use `run_after_*.sh` for scripts that run after applying
|
||||
|
||||
### 4. Clean Directives
|
||||
|
||||
**Dotbot**:
|
||||
```yaml
|
||||
- clean:
|
||||
~/:
|
||||
~/.config:
|
||||
recursive: true
|
||||
```
|
||||
|
||||
**Chezmoi**:
|
||||
- Chezmoi doesn't automatically remove files
|
||||
- Use `chezmoi unmanaged` to see unmanaged files
|
||||
- Manually remove or add to `.chezmoiignore`
|
||||
|
||||
### 5. Host-Specific Configuration
|
||||
|
||||
**Dotbot**:
|
||||
```yaml
|
||||
# hosts/air/install.conf.yaml
|
||||
- link:
|
||||
~/.config/:
|
||||
path: hosts/air/config/**
|
||||
```
|
||||
|
||||
**Chezmoi**:
|
||||
- Use templates with conditionals:
|
||||
```
|
||||
{{ if eq .chezmoi.hostname "air" }}
|
||||
# air-specific content
|
||||
{{ end }}
|
||||
```
|
||||
- Or use separate files: `dot_config/file.tmpl` with hostname checks
|
||||
|
||||
### 6. Dotbot Plugins
|
||||
|
||||
**dotbot-brew**:
|
||||
- Replace with `run_once_after_install-packages.sh.tmpl`
|
||||
- Use `brew bundle install`
|
||||
|
||||
**dotbot-asdf**:
|
||||
- Chezmoi doesn't have built-in asdf support
|
||||
- Use `run_once_after_*.sh` scripts to install asdf plugins
|
||||
|
||||
**dotbot-pip/pipx**:
|
||||
- Use `run_once_after_*.sh` scripts
|
||||
- Or use chezmoi's external management
|
||||
|
||||
## New File Structure
|
||||
|
||||
### Configuration Files
|
||||
|
||||
#### `.chezmoi.yaml.tmpl`
|
||||
Main configuration file with template support. Defines:
|
||||
- Source directory
|
||||
- Data variables (hostname, OS, custom flags)
|
||||
- Merge strategy
|
||||
- Template options
|
||||
- Git options
|
||||
|
||||
#### `.chezmoiignore`
|
||||
Files and patterns to ignore when applying dotfiles. Includes:
|
||||
- Repository management files (.git, .github, etc.)
|
||||
- Documentation
|
||||
- Development tools
|
||||
- Old dotbot configuration
|
||||
|
||||
### Run Scripts
|
||||
|
||||
Scripts follow a naming convention:
|
||||
|
||||
- `run_once_before_*.sh.tmpl`: Runs once before applying (prerequisites)
|
||||
- `run_once_after_*.sh.tmpl`: Runs once after applying (installation)
|
||||
- `run_before_*.sh.tmpl`: Runs every time before applying
|
||||
- `run_after_*.sh.tmpl`: Runs every time after applying
|
||||
- `run_onchange_*.sh.tmpl`: Runs when file content changes
|
||||
|
||||
### File Naming
|
||||
|
||||
Chezmoi uses special prefixes:
|
||||
|
||||
- `dot_`: Becomes a dot file (`.`)
|
||||
- `private_`: Sets permissions to 0600
|
||||
- `executable_`: Makes file executable
|
||||
- `symlink_`: Creates a symlink
|
||||
- `readonly_`: Makes file read-only
|
||||
|
||||
Examples:
|
||||
- `dot_bashrc` → `~/.bashrc`
|
||||
- `private_dot_ssh/` → `~/.ssh/` (mode 0700)
|
||||
- `executable_dot_local/bin/script` → `~/.local/bin/script` (executable)
|
||||
|
||||
## Migration Steps
|
||||
|
||||
### 1. Backup Current Setup
|
||||
|
||||
```bash
|
||||
# Backup your current dotfiles
|
||||
cd ~/.dotfiles
|
||||
git add -A
|
||||
git commit -m "Backup before chezmoi migration"
|
||||
git push
|
||||
```
|
||||
|
||||
### 2. Install Chezmoi
|
||||
|
||||
```bash
|
||||
# The new install script will do this automatically
|
||||
sh -c "$(curl -fsLS get.chezmoi.io/lb)" -- init --apply ivuorinen
|
||||
```
|
||||
|
||||
### 3. Initialize Chezmoi with Existing Dotfiles
|
||||
|
||||
```bash
|
||||
# If you want to test before full migration
|
||||
chezmoi init --apply ivuorinen
|
||||
|
||||
# Or initialize without applying
|
||||
chezmoi init ivuorinen
|
||||
```
|
||||
|
||||
### 4. Restructure Files (Manual Step)
|
||||
|
||||
You'll need to rename files to follow chezmoi conventions:
|
||||
|
||||
```bash
|
||||
cd ~/.local/share/chezmoi
|
||||
|
||||
# Rename base files
|
||||
mv base/bashrc dot_bashrc
|
||||
mv base/zshrc dot_zshrc
|
||||
mv base/tmux.conf dot_tmux.conf
|
||||
|
||||
# Move config files
|
||||
mkdir -p dot_config
|
||||
mv config/* dot_config/
|
||||
|
||||
# Move local/bin files
|
||||
mkdir -p dot_local/bin
|
||||
for file in local/bin/*; do
|
||||
mv "$file" "executable_dot_local/bin/$(basename "$file")"
|
||||
done
|
||||
|
||||
# Move SSH files with proper permissions
|
||||
mkdir -p private_dot_ssh
|
||||
mv ssh/* private_dot_ssh/
|
||||
```
|
||||
|
||||
### 5. Convert Host-Specific Configurations
|
||||
|
||||
For files that differ between hosts, use templates:
|
||||
|
||||
```bash
|
||||
# Instead of hosts/air/config/fish/config.fish
|
||||
# Create: dot_config/fish/config.fish.tmpl
|
||||
|
||||
{{ if eq .chezmoi.hostname "air" }}
|
||||
# air-specific configuration
|
||||
{{ else if eq .chezmoi.hostname "lakka" }}
|
||||
# lakka-specific configuration
|
||||
{{ end }}
|
||||
```
|
||||
|
||||
### 6. Test the Migration
|
||||
|
||||
```bash
|
||||
# See what changes chezmoi would make
|
||||
chezmoi diff
|
||||
|
||||
# Apply changes
|
||||
chezmoi apply
|
||||
|
||||
# Verify everything works
|
||||
chezmoi verify
|
||||
```
|
||||
|
||||
### 7. Clean Up Old Files
|
||||
|
||||
```bash
|
||||
# Remove dotbot directories (after confirming everything works)
|
||||
cd ~/.local/share/chezmoi
|
||||
rm -rf tools/dotbot tools/dotbot-*
|
||||
rm install.conf.yaml
|
||||
rm -rf hosts/ # If fully migrated to templates
|
||||
```
|
||||
|
||||
## Usage Guide
|
||||
|
||||
### Basic Commands
|
||||
|
||||
```bash
|
||||
# Initialize chezmoi with your dotfiles
|
||||
chezmoi init ivuorinen
|
||||
|
||||
# See what changes would be made
|
||||
chezmoi diff
|
||||
|
||||
# Apply dotfiles
|
||||
chezmoi apply
|
||||
|
||||
# Apply with verbose output
|
||||
chezmoi apply -v
|
||||
|
||||
# Edit a file managed by chezmoi
|
||||
chezmoi edit ~/.bashrc
|
||||
|
||||
# Add a new file to chezmoi
|
||||
chezmoi add ~/.newfile
|
||||
|
||||
# Update dotfiles from source
|
||||
chezmoi update
|
||||
|
||||
# See what files are managed
|
||||
chezmoi managed
|
||||
|
||||
# See what files are unmanaged
|
||||
chezmoi unmanaged
|
||||
|
||||
# Re-run scripts
|
||||
chezmoi apply --force
|
||||
|
||||
# Check for issues
|
||||
chezmoi doctor
|
||||
```
|
||||
|
||||
### Working with Templates
|
||||
|
||||
```bash
|
||||
# Execute a template
|
||||
chezmoi execute-template "{{ .chezmoi.hostname }}"
|
||||
|
||||
# See the data available in templates
|
||||
chezmoi data
|
||||
|
||||
# Edit template data
|
||||
chezmoi edit-config
|
||||
```
|
||||
|
||||
### Managing Secrets
|
||||
|
||||
```bash
|
||||
# Use with 1Password
|
||||
chezmoi secret keychain
|
||||
|
||||
# Template with 1Password
|
||||
{{ (index (onepasswordDocument "my-secret") 0).content }}
|
||||
|
||||
# Use with environment variables
|
||||
{{ .Env.MY_SECRET }}
|
||||
```
|
||||
|
||||
### Updating Dotfiles
|
||||
|
||||
```bash
|
||||
# Edit source file
|
||||
chezmoi edit ~/.bashrc
|
||||
|
||||
# Or edit directly and add
|
||||
vi ~/.bashrc
|
||||
chezmoi add ~/.bashrc
|
||||
|
||||
# Commit changes
|
||||
cd $(chezmoi source-path)
|
||||
git add -A
|
||||
git commit -m "Update bashrc"
|
||||
git push
|
||||
|
||||
# On another machine
|
||||
chezmoi update
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Common Issues
|
||||
|
||||
#### 1. File Permissions
|
||||
|
||||
**Problem**: Files have wrong permissions after applying.
|
||||
|
||||
**Solution**: Use prefixes:
|
||||
```bash
|
||||
# For 0600 permissions
|
||||
chezmoi add --template private_dot_ssh/config
|
||||
|
||||
# For 0700 directories
|
||||
mkdir -p private_dot_ssh
|
||||
```
|
||||
|
||||
#### 2. Symlinks Not Working
|
||||
|
||||
**Problem**: Chezmoi copies files instead of symlinking.
|
||||
|
||||
**Solution**: Use `symlink_` prefix:
|
||||
```bash
|
||||
chezmoi add --symlink ~/.vim
|
||||
# This creates symlink_dot_vim in the source directory
|
||||
```
|
||||
|
||||
#### 3. Templates Not Rendering
|
||||
|
||||
**Problem**: Template syntax is showing literally in files.
|
||||
|
||||
**Solution**:
|
||||
- Ensure file has `.tmpl` extension
|
||||
- Check template syntax
|
||||
- Verify data with `chezmoi data`
|
||||
|
||||
#### 4. Scripts Not Running
|
||||
|
||||
**Problem**: `run_once_` scripts not executing.
|
||||
|
||||
**Solution**:
|
||||
- Check script permissions: `chmod +x run_once_*.sh.tmpl`
|
||||
- Run with force: `chezmoi apply --force`
|
||||
- Check script order (before/after)
|
||||
|
||||
#### 5. Host-Specific Files Not Applying
|
||||
|
||||
**Problem**: Wrong host configuration applied.
|
||||
|
||||
**Solution**:
|
||||
- Check hostname: `chezmoi data | grep hostname`
|
||||
- Verify template conditionals
|
||||
- Use `.chezmoiignore` for host-specific exclusions
|
||||
|
||||
### Debugging
|
||||
|
||||
```bash
|
||||
# Verbose output
|
||||
chezmoi apply -v
|
||||
|
||||
# Very verbose output
|
||||
chezmoi apply -vv
|
||||
|
||||
# Dry run to see what would happen
|
||||
chezmoi apply --dry-run -v
|
||||
|
||||
# Check configuration
|
||||
chezmoi doctor
|
||||
|
||||
# Verify state
|
||||
chezmoi verify
|
||||
|
||||
# See source directory
|
||||
chezmoi source-path
|
||||
|
||||
# See what would be applied to a specific file
|
||||
chezmoi cat ~/.bashrc
|
||||
```
|
||||
|
||||
### Migration Checklist
|
||||
|
||||
- [ ] Backup current dotfiles
|
||||
- [ ] Install chezmoi
|
||||
- [ ] Create `.chezmoi.yaml.tmpl`
|
||||
- [ ] Create `.chezmoiignore`
|
||||
- [ ] Rename files with proper prefixes
|
||||
- [ ] Convert host-specific configs to templates
|
||||
- [ ] Create `run_once_before` scripts
|
||||
- [ ] Create `run_once_after` scripts
|
||||
- [ ] Test with `chezmoi diff`
|
||||
- [ ] Apply with `chezmoi apply`
|
||||
- [ ] Verify everything works
|
||||
- [ ] Update documentation
|
||||
- [ ] Clean up old dotbot files
|
||||
- [ ] Update README.md
|
||||
- [ ] Test on another machine
|
||||
|
||||
## Additional Resources
|
||||
|
||||
- [Chezmoi Documentation](https://www.chezmoi.io/)
|
||||
- [Chezmoi Quick Start](https://www.chezmoi.io/quick-start/)
|
||||
- [Chezmoi User Guide](https://www.chezmoi.io/user-guide/)
|
||||
- [Chezmoi Template Reference](https://www.chezmoi.io/reference/templates/)
|
||||
- [Example Dotfiles Using Chezmoi](https://github.com/topics/chezmoi)
|
||||
|
||||
## Notes
|
||||
|
||||
### What Stays the Same
|
||||
|
||||
- Your actual dotfile contents
|
||||
- Directory structure in home directory
|
||||
- Git workflow for managing dotfiles
|
||||
- The `dfm` script functionality (wrapped in run_once scripts)
|
||||
|
||||
### What Changes
|
||||
|
||||
- Installation method (new `install` script)
|
||||
- Source directory location (`~/.local/share/chezmoi` by default)
|
||||
- Configuration method (templates instead of YAML)
|
||||
- File naming (special prefixes)
|
||||
- No more symlinks by default (unless specified)
|
||||
|
||||
### Benefits of Migration
|
||||
|
||||
1. **Simplicity**: Single binary, no dependencies
|
||||
2. **Templating**: Dynamic content based on hostname, OS, etc.
|
||||
3. **Secrets**: Built-in support for password managers
|
||||
4. **State Management**: Better tracking of what's managed
|
||||
5. **Cross-platform**: Excellent support for different OSes
|
||||
6. **Documentation**: Extensive docs and examples
|
||||
7. **Community**: Active development and support
|
||||
|
||||
## Post-Migration
|
||||
|
||||
After successful migration:
|
||||
|
||||
1. Update your README to reflect chezmoi usage
|
||||
2. Archive dotbot configuration for reference
|
||||
3. Document any custom scripts or workflows
|
||||
4. Test on all your machines
|
||||
5. Share your experience!
|
||||
@@ -33,8 +33,10 @@ Leader: `<ctrl><space>`
|
||||
? List key bindings
|
||||
D Choose and detach a client from a list
|
||||
E Spread panes out evenly
|
||||
L Switch to the last client
|
||||
L last-session (via sesh)
|
||||
M Clear the marked pane
|
||||
N sesh ui
|
||||
T tms
|
||||
] Paste the most recent paste buffer
|
||||
c Create a new window
|
||||
d Detach the current client
|
||||
@@ -46,7 +48,7 @@ Leader: `<ctrl><space>`
|
||||
o Select the next pane
|
||||
q Display pane numbers
|
||||
s Choose a session from a list
|
||||
t tms
|
||||
t sesh selection
|
||||
w Choose a window from a list
|
||||
x Kill the active pane
|
||||
z Zoom the active pane
|
||||
@@ -74,8 +76,6 @@ Leader: `<ctrl><space>`
|
||||
M-Left Resize the pane left by 5
|
||||
M-Right Resize the pane right by 5
|
||||
C-o Rotate through the panes
|
||||
C-r tms refresh
|
||||
C-s tms switch
|
||||
C-w tms windows
|
||||
C-z Suspend the current client
|
||||
C-Up Resize the pane up
|
||||
@@ -87,3 +87,4 @@ Leader: `<ctrl><space>`
|
||||
S-Left Move the visible part of the window left
|
||||
S-Right Move the visible part of the window right
|
||||
```
|
||||
|
||||
|
||||
37
install
37
install
@@ -1,38 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
CONFIG="install.conf.yaml"
|
||||
DOTBOT_DIR="tools/dotbot"
|
||||
|
||||
DOTBOT_BIN="bin/dotbot"
|
||||
BASEDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
DOTBOT_BIN_PATH="${BASEDIR}/${DOTBOT_DIR}/${DOTBOT_BIN}"
|
||||
DOTBOT_HOST="$(hostname -s)"
|
||||
|
||||
cd "${BASEDIR}"
|
||||
git -C "${DOTBOT_DIR}" submodule sync --quiet --recursive
|
||||
git submodule update --init --recursive "${DOTBOT_DIR}"
|
||||
|
||||
"${DOTBOT_BIN_PATH}" \
|
||||
-d "${BASEDIR}" \
|
||||
--plugin-dir=tools/dotbot-asdf \
|
||||
--plugin-dir=tools/dotbot-brew \
|
||||
--plugin-dir=tools/dotbot-include \
|
||||
--plugin-dir=tools/dotbot-pip \
|
||||
-c "${CONFIG}" \
|
||||
"${@}"
|
||||
|
||||
if [ "${DOTBOT_HOST}" != "" ]; then
|
||||
DOTBOT_HOST_CONFIG="${BASEDIR}/hosts/${DOTBOT_HOST}/${CONFIG}"
|
||||
echo "-> Trying if host config can be found: ${DOTBOT_HOST_CONFIG}"
|
||||
[ -r "$DOTBOT_HOST_CONFIG" ] && [ -f "$DOTBOT_HOST_CONFIG" ] &&
|
||||
echo "(!) Found $DOTBOT_HOST_CONFIG" &&
|
||||
"$DOTBOT_BIN_PATH" \
|
||||
-d "$BASEDIR" \
|
||||
--plugin-dir=tools/dotbot-asdf \
|
||||
--plugin-dir=tools/dotbot-brew \
|
||||
--plugin-dir=tools/dotbot-include \
|
||||
--plugin-dir=tools/dotbot-pip \
|
||||
-c "$DOTBOT_HOST_CONFIG" \
|
||||
"${@}"
|
||||
fi
|
||||
# Install and apply chezmoi
|
||||
sh -c "$(curl -fsLS get.chezmoi.io/lb)" -- init --apply ivuorinen
|
||||
|
||||
892
local/bin/x-ssh-audit
Normal file
892
local/bin/x-ssh-audit
Normal file
@@ -0,0 +1,892 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# POSIX-Compliant SSH Security Auditing and Management Script
|
||||
# Purpose: Audit and manage SSH security configurations across multiple hosts
|
||||
# Compatible with: sh, dash, bash, ksh, zsh
|
||||
#
|
||||
# Author: Ismo Vuorinen <https://github.com/ivuorinen>
|
||||
# Copyright: MIT
|
||||
# Version: 2.0-POSIX
|
||||
# Date: 2025-10-17
|
||||
|
||||
set -eu
|
||||
|
||||
# ============================================================================
|
||||
# CONFIGURATION
|
||||
# ============================================================================
|
||||
|
||||
SCRIPT_NAME=$(basename "$0")
|
||||
# SCRIPT_DIR=$(dirname "$(readlink -f "$0" 2> /dev/null || pwd)") # Reserved for future use
|
||||
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
|
||||
AUDIT_BASE_DIR="./ssh-audit/${TIMESTAMP}"
|
||||
BACKUP_DIR="${AUDIT_BASE_DIR}/backup"
|
||||
LOG_FILE="${AUDIT_BASE_DIR}/log.log"
|
||||
REPORT_FILE="${AUDIT_BASE_DIR}/report.csv"
|
||||
TEMP_DIR="${AUDIT_BASE_DIR}/tmp"
|
||||
|
||||
# SSH connection parameters
|
||||
SSH_TIMEOUT=10
|
||||
SSH_RETRIES=3
|
||||
|
||||
# Fallback usernames for SSH connections (in order of priority)
|
||||
FALLBACK_USERS="root ubuntu ivuorinen"
|
||||
|
||||
# Common default SSH key locations (checked in order)
|
||||
DEFAULT_SSH_KEYS="
|
||||
~/.ssh/id_ed25519
|
||||
~/.ssh/id_rsa
|
||||
~/.ssh/id_ecdsa
|
||||
~/.ssh/id_dsa
|
||||
"
|
||||
|
||||
# Color codes (using tput for POSIX compliance)
|
||||
if [ -t 1 ]; then
|
||||
RED=$(tput setaf 1 2> /dev/null || echo '')
|
||||
GREEN=$(tput setaf 2 2> /dev/null || echo '')
|
||||
YELLOW=$(tput setaf 3 2> /dev/null || echo '')
|
||||
BLUE=$(tput setaf 4 2> /dev/null || echo '')
|
||||
RESET=$(tput sgr0 2> /dev/null || echo '')
|
||||
BOLD=$(tput bold 2> /dev/null || echo '')
|
||||
else
|
||||
RED='' GREEN='' YELLOW='' BLUE='' RESET='' BOLD=''
|
||||
fi
|
||||
|
||||
# Global state files (replacing bash associative arrays)
|
||||
HOST_STATUS_FILE="${TEMP_DIR}/host-status"
|
||||
HOST_RESULTS_FILE="${TEMP_DIR}/host-results"
|
||||
HOSTS_LIST_FILE="${TEMP_DIR}/hosts-list"
|
||||
FAILED_HOSTS_FILE="${TEMP_DIR}/failed-hosts"
|
||||
|
||||
# ============================================================================
|
||||
# HELPER FUNCTIONS FOR STATE MANAGEMENT
|
||||
# ============================================================================
|
||||
|
||||
# Initialize state files
|
||||
init_state_files()
|
||||
{
|
||||
: > "$HOST_STATUS_FILE"
|
||||
: > "$HOST_RESULTS_FILE"
|
||||
: > "$HOSTS_LIST_FILE"
|
||||
: > "$FAILED_HOSTS_FILE"
|
||||
}
|
||||
|
||||
# Detect available default SSH keys
|
||||
detect_available_ssh_keys()
|
||||
{
|
||||
available_keys=""
|
||||
|
||||
for key in $DEFAULT_SSH_KEYS; do
|
||||
# Expand tilde to home directory
|
||||
expanded_key=$(eval echo "$key")
|
||||
|
||||
if [ -f "$expanded_key" ] && [ -r "$expanded_key" ]; then
|
||||
available_keys="${available_keys}${available_keys:+ }${expanded_key}"
|
||||
fi
|
||||
done
|
||||
|
||||
printf '%s' "$available_keys"
|
||||
}
|
||||
|
||||
# Trim whitespace from string (POSIX compatible)
|
||||
trim_whitespace()
|
||||
{
|
||||
printf '%s' "$1" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//'
|
||||
}
|
||||
|
||||
# Extract SSH config value from sshd -T output
|
||||
get_sshd_value()
|
||||
{
|
||||
config_file="$1"
|
||||
key="$2"
|
||||
grep -i "^${key}" "$config_file" | awk '{print $2}'
|
||||
}
|
||||
|
||||
# Check security setting and log if it matches bad value
|
||||
check_security_issue()
|
||||
{
|
||||
host="$1"
|
||||
# $2 is setting_name (unused but kept for API clarity)
|
||||
actual_value="$3"
|
||||
bad_value="$4"
|
||||
level="${5:-WARNING}"
|
||||
message="$6"
|
||||
|
||||
if [ "$actual_value" = "$bad_value" ]; then
|
||||
log_message "$level" "$host: $message"
|
||||
return 0 # Issue found
|
||||
fi
|
||||
return 1 # No issue
|
||||
}
|
||||
|
||||
# Set a key-value pair in state file
|
||||
set_state()
|
||||
{
|
||||
state_file="$1"
|
||||
key="$2"
|
||||
value="$3"
|
||||
|
||||
# Remove existing entry if present
|
||||
if [ -f "$state_file" ]; then
|
||||
grep -v "^${key}=" "$state_file" > "${state_file}.tmp" 2> /dev/null || true
|
||||
mv "${state_file}.tmp" "$state_file"
|
||||
fi
|
||||
|
||||
# Add new entry
|
||||
printf '%s=%s\n' "$key" "$value" >> "$state_file"
|
||||
}
|
||||
|
||||
# Get a value from state file
|
||||
get_state()
|
||||
{
|
||||
state_file="$1"
|
||||
key="$2"
|
||||
default="${3:-unknown}"
|
||||
|
||||
if [ -f "$state_file" ]; then
|
||||
value=$(grep "^${key}=" "$state_file" 2> /dev/null | cut -d= -f2- | head -n1)
|
||||
printf '%s' "${value:-$default}"
|
||||
else
|
||||
printf '%s' "$default"
|
||||
fi
|
||||
}
|
||||
|
||||
# ============================================================================
|
||||
# ERROR HANDLING AND CLEANUP
|
||||
# ============================================================================
|
||||
|
||||
cleanup()
|
||||
{
|
||||
exit_code=$?
|
||||
printf '\n%sCleaning up...%s\n' "$YELLOW" "$RESET"
|
||||
|
||||
# Clean up temporary directory (keep logs, reports, and backups)
|
||||
if [ -d "$TEMP_DIR" ]; then
|
||||
rm -rf "$TEMP_DIR"
|
||||
fi
|
||||
|
||||
if [ $exit_code -ne 0 ]; then
|
||||
printf '%s[ERROR] Script failed with exit code: %d%s\n' "$RED" "$exit_code" "$RESET" >&2
|
||||
fi
|
||||
|
||||
exit $exit_code
|
||||
}
|
||||
|
||||
trap cleanup EXIT INT TERM
|
||||
|
||||
# ============================================================================
|
||||
# LOGGING FUNCTIONS
|
||||
# ============================================================================
|
||||
|
||||
setup_logging()
|
||||
{
|
||||
# Create all necessary directories
|
||||
mkdir -p "$BACKUP_DIR" "$TEMP_DIR" 2> /dev/null || {
|
||||
printf '%s[ERROR] Failed to create audit directories%s\n' "$RED" "$RESET" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
{
|
||||
echo "=========================================="
|
||||
echo "SSH Security Audit Log"
|
||||
echo "Started: $(date)"
|
||||
echo "Script: $SCRIPT_NAME"
|
||||
echo "User: $(whoami)"
|
||||
echo "Working Directory: $(pwd)"
|
||||
echo "Output Directory: $AUDIT_BASE_DIR"
|
||||
echo "=========================================="
|
||||
} >> "$LOG_FILE"
|
||||
}
|
||||
|
||||
log_message()
|
||||
{
|
||||
level="$1"
|
||||
message="$2"
|
||||
timestamp=$(date '+%Y-%m-%d %H:%M:%S')
|
||||
|
||||
printf '[%s] [%s] %s\n' "$timestamp" "$level" "$message" >> "$LOG_FILE"
|
||||
|
||||
case "$level" in
|
||||
ERROR)
|
||||
printf '%s[ERROR] %s%s\n' "$RED" "$message" "$RESET" >&2
|
||||
;;
|
||||
WARNING)
|
||||
printf '%s[WARNING] %s%s\n' "$YELLOW" "$message" "$RESET" >&2
|
||||
;;
|
||||
INFO)
|
||||
printf '%s[INFO] %s%s\n' "$BLUE" "$message" "$RESET"
|
||||
;;
|
||||
SUCCESS)
|
||||
printf '%s[SUCCESS] %s%s\n' "$GREEN" "$message" "$RESET"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# ============================================================================
|
||||
# INPUT VALIDATION
|
||||
# ============================================================================
|
||||
|
||||
validate_hostname()
|
||||
{
|
||||
hostname="$1"
|
||||
|
||||
# Basic hostname validation
|
||||
case "$hostname" in
|
||||
*[!a-zA-Z0-9.-]*)
|
||||
log_message "ERROR" "Invalid hostname format: $hostname"
|
||||
return 1
|
||||
;;
|
||||
.*)
|
||||
log_message "ERROR" "Invalid hostname format: $hostname"
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
validate_username()
|
||||
{
|
||||
username="$1"
|
||||
|
||||
# Basic username validation
|
||||
case "$username" in
|
||||
*[!a-zA-Z0-9_-]*)
|
||||
log_message "ERROR" "Invalid username format: $username"
|
||||
return 1
|
||||
;;
|
||||
[0-9]*)
|
||||
log_message "ERROR" "Invalid username format: $username"
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
parse_host_list()
|
||||
{
|
||||
input_file="$1"
|
||||
|
||||
if [ ! -f "$input_file" ]; then
|
||||
log_message "ERROR" "Input file not found: $input_file"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
while IFS=':' read -r host username ssh_key; do
|
||||
# Skip empty lines and comments
|
||||
case "$host" in
|
||||
'' | '#'*) continue ;;
|
||||
esac
|
||||
|
||||
# Trim whitespace (POSIX compatible)
|
||||
host=$(trim_whitespace "$host")
|
||||
username=$(trim_whitespace "$username")
|
||||
ssh_key=$(trim_whitespace "$ssh_key")
|
||||
|
||||
if validate_hostname "$host" && validate_username "$username"; then
|
||||
# Store with optional SSH key (empty if not provided)
|
||||
printf '%s:%s:%s\n' "$host" "$username" "$ssh_key" >> "$HOSTS_LIST_FILE"
|
||||
if [ -n "$ssh_key" ]; then
|
||||
log_message "INFO" "Added host: $host with user: $username and SSH key: $ssh_key"
|
||||
else
|
||||
log_message "INFO" "Added host: $host with user: $username"
|
||||
fi
|
||||
else
|
||||
log_message "WARNING" "Skipping invalid entry: ${host}:${username}"
|
||||
fi
|
||||
done < "$input_file"
|
||||
|
||||
if [ ! -s "$HOSTS_LIST_FILE" ]; then
|
||||
log_message "ERROR" "No valid hosts found in input file"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
host_count=$(wc -l < "$HOSTS_LIST_FILE")
|
||||
log_message "INFO" "Loaded $host_count hosts for auditing"
|
||||
}
|
||||
|
||||
# ============================================================================
|
||||
# SSH CONNECTION FUNCTIONS
|
||||
# ============================================================================
|
||||
|
||||
ssh_with_retry()
|
||||
{
|
||||
host="$1"
|
||||
username="$2"
|
||||
command="$3"
|
||||
ssh_key="${4:-}"
|
||||
max_retries="${5:-$SSH_RETRIES}"
|
||||
|
||||
# Build list of keys to try
|
||||
keys_to_try=""
|
||||
|
||||
# Priority 1: Specific key if provided
|
||||
if [ -n "$ssh_key" ] && [ -f "$ssh_key" ]; then
|
||||
keys_to_try="$ssh_key"
|
||||
log_message "INFO" "Will try specific SSH key: $ssh_key"
|
||||
fi
|
||||
|
||||
# Priority 2: Detect and add available default keys
|
||||
available_default_keys=$(detect_available_ssh_keys)
|
||||
if [ -n "$available_default_keys" ]; then
|
||||
keys_to_try="${keys_to_try}${keys_to_try:+ }${available_default_keys}"
|
||||
fi
|
||||
|
||||
# Priority 3: Try without explicit key (agent/default)
|
||||
keys_to_try="${keys_to_try}${keys_to_try:+ }NO_KEY"
|
||||
|
||||
attempt=1
|
||||
while [ "$attempt" -le "$max_retries" ]; do
|
||||
log_message "INFO" "Connecting to $host as $username (attempt $attempt/$max_retries)"
|
||||
|
||||
# Try each key in sequence
|
||||
for try_key in $keys_to_try; do
|
||||
ssh_opts="-o ConnectTimeout=$SSH_TIMEOUT -o BatchMode=yes -o StrictHostKeyChecking=yes"
|
||||
|
||||
if [ "$try_key" != "NO_KEY" ]; then
|
||||
ssh_opts="$ssh_opts -i $try_key"
|
||||
log_message "INFO" "Trying SSH key: $try_key"
|
||||
else
|
||||
log_message "INFO" "Trying SSH agent/default authentication"
|
||||
fi
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
if ssh $ssh_opts "${username}@${host}" "$command" 2> /dev/null; then
|
||||
if [ "$try_key" != "NO_KEY" ]; then
|
||||
log_message "SUCCESS" "Connected using SSH key: $try_key"
|
||||
else
|
||||
log_message "SUCCESS" "Connected using SSH agent/default authentication"
|
||||
fi
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
|
||||
status=$?
|
||||
log_message "WARNING" "SSH connection failed to $host with all authentication methods (status: $status)"
|
||||
|
||||
if [ "$attempt" -lt "$max_retries" ]; then
|
||||
sleep $((attempt * 2))
|
||||
fi
|
||||
attempt=$((attempt + 1))
|
||||
done
|
||||
|
||||
return 1
|
||||
}
|
||||
|
||||
test_ssh_connectivity()
|
||||
{
|
||||
host="$1"
|
||||
username="$2"
|
||||
ssh_key="${3:-}"
|
||||
|
||||
if ssh_with_retry "$host" "$username" "echo 'SSH_OK'" "$ssh_key" | grep -q "SSH_OK"; then
|
||||
log_message "SUCCESS" "SSH connectivity verified for ${username}@${host}"
|
||||
return 0
|
||||
else
|
||||
log_message "ERROR" "Cannot establish SSH connection to ${username}@${host}"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# ============================================================================
|
||||
# SSH SECURITY AUDIT FUNCTIONS
|
||||
# ============================================================================
|
||||
|
||||
check_sshd_config()
|
||||
{
|
||||
host="$1"
|
||||
username="$2"
|
||||
ssh_key="${3:-}"
|
||||
temp_file="${TEMP_DIR}/sshd-config-${host}"
|
||||
|
||||
log_message "INFO" "Checking SSH configuration on $host"
|
||||
|
||||
# Get sshd configuration
|
||||
if ! ssh_with_retry "$host" "$username" "sudo sshd -T 2>/dev/null || sshd -T 2>/dev/null" "$ssh_key" > "$temp_file"; then
|
||||
log_message "ERROR" "Failed to retrieve SSH configuration from $host"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Parse configuration (POSIX compatible)
|
||||
password_auth=$(get_sshd_value "$temp_file" "passwordauthentication")
|
||||
pubkey_auth=$(get_sshd_value "$temp_file" "pubkeyauthentication")
|
||||
permit_root=$(get_sshd_value "$temp_file" "permitrootlogin")
|
||||
protocol=$(get_sshd_value "$temp_file" "protocol")
|
||||
x11_forwarding=$(get_sshd_value "$temp_file" "x11forwarding")
|
||||
permit_empty=$(get_sshd_value "$temp_file" "permitemptypasswords")
|
||||
|
||||
# Store results
|
||||
set_state "$HOST_RESULTS_FILE" "${host}_password_auth" "${password_auth:-unknown}"
|
||||
set_state "$HOST_RESULTS_FILE" "${host}_pubkey_auth" "${pubkey_auth:-unknown}"
|
||||
set_state "$HOST_RESULTS_FILE" "${host}_permit_root" "${permit_root:-unknown}"
|
||||
set_state "$HOST_RESULTS_FILE" "${host}_protocol" "${protocol:-unknown}"
|
||||
set_state "$HOST_RESULTS_FILE" "${host}_x11_forwarding" "${x11_forwarding:-unknown}"
|
||||
set_state "$HOST_RESULTS_FILE" "${host}_permit_empty_passwords" "${permit_empty:-unknown}"
|
||||
|
||||
# Security assessment
|
||||
security_issues=0
|
||||
|
||||
check_security_issue "$host" "password_auth" "$password_auth" "yes" \
|
||||
"WARNING" "Password authentication is enabled" && security_issues=$((security_issues + 1))
|
||||
|
||||
# Special handling for permit_root (check if NOT "no")
|
||||
if [ "$permit_root" != "no" ]; then
|
||||
log_message "WARNING" "$host: Root login is not disabled (current: $permit_root)"
|
||||
security_issues=$((security_issues + 1))
|
||||
fi
|
||||
|
||||
check_security_issue "$host" "permit_empty" "$permit_empty" "yes" \
|
||||
"ERROR" "Empty passwords are permitted!" && security_issues=$((security_issues + 1))
|
||||
|
||||
check_security_issue "$host" "x11_forwarding" "$x11_forwarding" "yes" \
|
||||
"WARNING" "X11 forwarding is enabled" && security_issues=$((security_issues + 1))
|
||||
|
||||
set_state "$HOST_RESULTS_FILE" "${host}_security_issues" "$security_issues"
|
||||
|
||||
rm -f "$temp_file"
|
||||
return 0
|
||||
}
|
||||
|
||||
# ============================================================================
|
||||
# AUTOMATED UPDATES DETECTION
|
||||
# ============================================================================
|
||||
|
||||
check_automated_updates()
|
||||
{
|
||||
host="$1"
|
||||
username="$2"
|
||||
ssh_key="${3:-}"
|
||||
|
||||
log_message "INFO" "Checking automated updates on $host"
|
||||
|
||||
# Detect distribution
|
||||
distro=$(ssh_with_retry "$host" "$username" "
|
||||
if [ -f /etc/os-release ]; then
|
||||
. /etc/os-release
|
||||
printf '%s' \"\$ID\"
|
||||
elif [ -f /etc/debian_version ]; then
|
||||
printf 'debian'
|
||||
elif [ -f /etc/redhat-release ]; then
|
||||
printf 'rhel'
|
||||
else
|
||||
printf 'unknown'
|
||||
fi
|
||||
" "$ssh_key")
|
||||
|
||||
auto_updates="disabled"
|
||||
|
||||
case "$distro" in
|
||||
ubuntu | debian)
|
||||
unattended_status=$(ssh_with_retry "$host" "$username" "
|
||||
if dpkg -l unattended-upgrades >/dev/null 2>&1; then
|
||||
if [ -f /etc/apt/apt.conf.d/20auto-upgrades ]; then
|
||||
if grep '^APT::Periodic::Unattended-Upgrade' /etc/apt/apt.conf.d/20auto-upgrades | grep -q '\"1\"'; then
|
||||
printf 'enabled'
|
||||
else
|
||||
printf 'disabled'
|
||||
fi
|
||||
else
|
||||
printf 'not-configured'
|
||||
fi
|
||||
else
|
||||
printf 'not-installed'
|
||||
fi
|
||||
" "$ssh_key")
|
||||
auto_updates="$unattended_status"
|
||||
;;
|
||||
|
||||
rhel | centos | rocky | almalinux | fedora)
|
||||
dnf_status=$(ssh_with_retry "$host" "$username" "
|
||||
if command -v dnf >/dev/null 2>&1 && rpm -q dnf-automatic >/dev/null 2>&1; then
|
||||
if systemctl is-enabled dnf-automatic.timer >/dev/null 2>&1; then
|
||||
printf 'enabled'
|
||||
else
|
||||
printf 'disabled'
|
||||
fi
|
||||
elif rpm -q yum-cron >/dev/null 2>&1; then
|
||||
if systemctl is-enabled yum-cron >/dev/null 2>&1; then
|
||||
printf 'enabled'
|
||||
else
|
||||
printf 'disabled'
|
||||
fi
|
||||
else
|
||||
printf 'not-installed'
|
||||
fi
|
||||
" "$ssh_key")
|
||||
auto_updates="$dnf_status"
|
||||
;;
|
||||
|
||||
*)
|
||||
auto_updates="unknown"
|
||||
;;
|
||||
esac
|
||||
|
||||
set_state "$HOST_RESULTS_FILE" "${host}_auto_updates" "$auto_updates"
|
||||
set_state "$HOST_RESULTS_FILE" "${host}_distro" "$distro"
|
||||
|
||||
log_message "INFO" "$host: Automated updates status: $auto_updates (distro: $distro)"
|
||||
return 0
|
||||
}
|
||||
|
||||
# ============================================================================
|
||||
# PENDING REBOOT DETECTION
|
||||
# ============================================================================
|
||||
|
||||
check_pending_reboot()
|
||||
{
|
||||
host="$1"
|
||||
username="$2"
|
||||
ssh_key="${3:-}"
|
||||
|
||||
log_message "INFO" "Checking pending reboot status on $host"
|
||||
|
||||
# Multiple detection methods (POSIX compliant)
|
||||
check_result=$(ssh_with_retry "$host" "$username" '
|
||||
REBOOT_NEEDED=0
|
||||
REASONS=""
|
||||
|
||||
# Method 1: Check /var/run/reboot-required
|
||||
if [ -f /var/run/reboot-required ]; then
|
||||
REBOOT_NEEDED=1
|
||||
REASONS="${REASONS:+$REASONS,}reboot-required"
|
||||
fi
|
||||
|
||||
# Method 2: Check kernel version mismatch
|
||||
if command -v rpm >/dev/null 2>&1; then
|
||||
CURRENT_KERNEL=$(uname -r)
|
||||
LATEST_KERNEL=$(rpm -q kernel --last 2>/dev/null | head -1 | sed "s/^kernel-//;s/ .*//")
|
||||
if [ -n "$LATEST_KERNEL" ] && [ "$CURRENT_KERNEL" != "$LATEST_KERNEL" ]; then
|
||||
REBOOT_NEEDED=1
|
||||
REASONS="${REASONS:+$REASONS,}kernel-mismatch"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Method 3: Check needs-restarting
|
||||
if command -v needs-restarting >/dev/null 2>&1; then
|
||||
if ! needs-restarting -r >/dev/null 2>&1; then
|
||||
REBOOT_NEEDED=1
|
||||
REASONS="${REASONS:+$REASONS,}needs-restarting"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Method 4: Check deleted libraries
|
||||
DELETED_LIBS=$(lsof 2>/dev/null | grep -c "DEL.*deleted" || echo 0)
|
||||
if [ "$DELETED_LIBS" -gt 10 ]; then
|
||||
REBOOT_NEEDED=1
|
||||
REASONS="${REASONS:+$REASONS,}deleted-libraries"
|
||||
fi
|
||||
|
||||
if [ $REBOOT_NEEDED -eq 1 ]; then
|
||||
printf "yes|%s" "${REASONS:-unknown}"
|
||||
else
|
||||
printf "no|none"
|
||||
fi
|
||||
' "$ssh_key")
|
||||
|
||||
reboot_required=$(printf '%s' "$check_result" | cut -d'|' -f1)
|
||||
reboot_reason=$(printf '%s' "$check_result" | cut -d'|' -f2)
|
||||
|
||||
set_state "$HOST_RESULTS_FILE" "${host}_reboot_required" "$reboot_required"
|
||||
set_state "$HOST_RESULTS_FILE" "${host}_reboot_reason" "$reboot_reason"
|
||||
|
||||
if [ "$reboot_required" = "yes" ]; then
|
||||
log_message "WARNING" "$host: Reboot required (reason: $reboot_reason)"
|
||||
else
|
||||
log_message "INFO" "$host: No reboot required"
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
# ============================================================================
|
||||
# REMEDIATION FUNCTIONS
|
||||
# ============================================================================
|
||||
|
||||
backup_sshd_config()
|
||||
{
|
||||
host="$1"
|
||||
username="$2"
|
||||
ssh_key="${3:-}"
|
||||
|
||||
log_message "INFO" "Creating backup of sshd_config on $host"
|
||||
|
||||
ssh_with_retry "$host" "$username" "
|
||||
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup.${TIMESTAMP}
|
||||
printf 'Backup created: /etc/ssh/sshd_config.backup.%s\n' '${TIMESTAMP}'
|
||||
" "$ssh_key"
|
||||
}
|
||||
|
||||
disable_password_auth()
|
||||
{
|
||||
host="$1"
|
||||
username="$2"
|
||||
ssh_key="${3:-}"
|
||||
|
||||
log_message "INFO" "Disabling password authentication on $host"
|
||||
|
||||
# Create backup first
|
||||
backup_sshd_config "$host" "$username" "$ssh_key"
|
||||
|
||||
# Create hardening configuration
|
||||
config_content='# SSH Hardening - Automated Security Audit
|
||||
# Generated: '"$(date)"'
|
||||
# Disable password authentication
|
||||
PasswordAuthentication no
|
||||
ChallengeResponseAuthentication no
|
||||
KbdInteractiveAuthentication no
|
||||
UsePAM no
|
||||
|
||||
# Ensure key-based authentication
|
||||
PubkeyAuthentication yes
|
||||
AuthenticationMethods publickey
|
||||
|
||||
# Additional security settings
|
||||
PermitRootLogin no
|
||||
PermitEmptyPasswords no
|
||||
MaxAuthTries 3
|
||||
MaxSessions 2
|
||||
ClientAliveInterval 300
|
||||
ClientAliveCountMax 2
|
||||
'
|
||||
|
||||
# Apply configuration
|
||||
if ssh_with_retry "$host" "$username" "
|
||||
printf '%s\n' '$config_content' | sudo tee /etc/ssh/sshd_config.d/99-hardening.conf >/dev/null
|
||||
sudo sshd -t && sudo systemctl reload sshd
|
||||
" "$ssh_key"; then
|
||||
log_message "SUCCESS" "Password authentication disabled on $host"
|
||||
set_state "$HOST_RESULTS_FILE" "${host}_remediation" "success"
|
||||
return 0
|
||||
else
|
||||
log_message "ERROR" "Failed to disable password authentication on $host"
|
||||
set_state "$HOST_RESULTS_FILE" "${host}_remediation" "failed"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# ============================================================================
|
||||
# REPORTING FUNCTIONS
|
||||
# ============================================================================
|
||||
|
||||
generate_csv_report()
|
||||
{
|
||||
report_file="$1"
|
||||
|
||||
# Header
|
||||
printf 'Timestamp,Hostname,Username,SSH Status,Password Auth,Key Auth,Root Login,Auto Updates,Reboot Required,Security Issues,Remediation\n' > "$report_file"
|
||||
|
||||
# Data rows
|
||||
while IFS=':' read -r host username ssh_key; do
|
||||
{
|
||||
printf '%s,' "$(date '+%Y-%m-%d %H:%M:%S')"
|
||||
printf '%s,' "$host"
|
||||
printf '%s,' "$username"
|
||||
printf '%s,' "$(get_state "$HOST_STATUS_FILE" "$host" "unknown")"
|
||||
printf '%s,' "$(get_state "$HOST_RESULTS_FILE" "${host}_password_auth" "unknown")"
|
||||
printf '%s,' "$(get_state "$HOST_RESULTS_FILE" "${host}_pubkey_auth" "unknown")"
|
||||
printf '%s,' "$(get_state "$HOST_RESULTS_FILE" "${host}_permit_root" "unknown")"
|
||||
printf '%s,' "$(get_state "$HOST_RESULTS_FILE" "${host}_auto_updates" "unknown")"
|
||||
printf '%s,' "$(get_state "$HOST_RESULTS_FILE" "${host}_reboot_required" "unknown")"
|
||||
printf '%s,' "$(get_state "$HOST_RESULTS_FILE" "${host}_security_issues" "0")"
|
||||
printf '%s\n' "$(get_state "$HOST_RESULTS_FILE" "${host}_remediation" "none")"
|
||||
} >> "$report_file"
|
||||
done < "$HOSTS_LIST_FILE"
|
||||
}
|
||||
|
||||
display_summary()
|
||||
{
|
||||
printf '\n'
|
||||
printf '%s==========================================\n' "$BOLD"
|
||||
printf ' SSH Security Audit Summary\n'
|
||||
printf '==========================================%s\n' "$RESET"
|
||||
printf '\n'
|
||||
|
||||
total_hosts=$(wc -l < "$HOSTS_LIST_FILE")
|
||||
successful_audits=0
|
||||
security_issues_found=0
|
||||
reboots_required=0
|
||||
password_auth_enabled=0
|
||||
|
||||
while IFS=':' read -r host username ssh_key; do
|
||||
status=$(get_state "$HOST_STATUS_FILE" "$host" "unknown")
|
||||
[ "$status" = "audited" ] && successful_audits=$((successful_audits + 1))
|
||||
|
||||
password_auth=$(get_state "$HOST_RESULTS_FILE" "${host}_password_auth" "unknown")
|
||||
[ "$password_auth" = "yes" ] && password_auth_enabled=$((password_auth_enabled + 1))
|
||||
|
||||
reboot_req=$(get_state "$HOST_RESULTS_FILE" "${host}_reboot_required" "unknown")
|
||||
[ "$reboot_req" = "yes" ] && reboots_required=$((reboots_required + 1))
|
||||
|
||||
issues=$(get_state "$HOST_RESULTS_FILE" "${host}_security_issues" "0")
|
||||
[ "$issues" -gt 0 ] && security_issues_found=$((security_issues_found + 1))
|
||||
done < "$HOSTS_LIST_FILE"
|
||||
|
||||
printf '%sTotal Hosts:%s %d\n' "$BLUE" "$RESET" "$total_hosts"
|
||||
printf '%sSuccessfully Audited:%s %d\n' "$GREEN" "$RESET" "$successful_audits"
|
||||
printf '%sPassword Auth Enabled:%s %d\n' "$YELLOW" "$RESET" "$password_auth_enabled"
|
||||
printf '%sSecurity Issues Found:%s %d\n' "$YELLOW" "$RESET" "$security_issues_found"
|
||||
printf '%sReboots Required:%s %d\n' "$YELLOW" "$RESET" "$reboots_required"
|
||||
|
||||
if [ -s "$FAILED_HOSTS_FILE" ]; then
|
||||
printf '\n%sFailed Hosts:%s\n' "$RED" "$RESET"
|
||||
while read -r failed; do
|
||||
printf ' - %s\n' "$failed"
|
||||
done < "$FAILED_HOSTS_FILE"
|
||||
fi
|
||||
|
||||
printf '\n'
|
||||
printf '%sReport saved to:%s %s\n' "$BOLD" "$RESET" "$REPORT_FILE"
|
||||
printf '%sLog file:%s %s\n' "$BOLD" "$RESET" "$LOG_FILE"
|
||||
}
|
||||
|
||||
# ============================================================================
|
||||
# MAIN AUDIT FUNCTION
|
||||
# ============================================================================
|
||||
|
||||
audit_host()
|
||||
{
|
||||
host_entry="$1"
|
||||
host=$(printf '%s' "$host_entry" | cut -d':' -f1)
|
||||
primary_user=$(printf '%s' "$host_entry" | cut -d':' -f2)
|
||||
ssh_key=$(printf '%s' "$host_entry" | cut -d':' -f3)
|
||||
|
||||
log_message "INFO" "Starting audit of $host"
|
||||
|
||||
# Try multiple usernames (primary user first, then fallbacks)
|
||||
connected=0
|
||||
connected_user=""
|
||||
|
||||
for username in "$primary_user" $FALLBACK_USERS; do
|
||||
if test_ssh_connectivity "$host" "$username" "$ssh_key"; then
|
||||
connected=1
|
||||
connected_user="$username"
|
||||
log_message "SUCCESS" "Connected to $host as $username"
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [ $connected -eq 0 ]; then
|
||||
log_message "ERROR" "Could not connect to $host with any username"
|
||||
set_state "$HOST_STATUS_FILE" "$host" "connection_failed"
|
||||
printf '%s\n' "$host" >> "$FAILED_HOSTS_FILE"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Perform audit checks
|
||||
check_sshd_config "$host" "$connected_user" "$ssh_key"
|
||||
check_automated_updates "$host" "$connected_user" "$ssh_key"
|
||||
check_pending_reboot "$host" "$connected_user" "$ssh_key"
|
||||
|
||||
set_state "$HOST_STATUS_FILE" "$host" "audited"
|
||||
set_state "$HOST_RESULTS_FILE" "${host}_connected_user" "$connected_user"
|
||||
|
||||
log_message "SUCCESS" "Completed audit of $host"
|
||||
return 0
|
||||
}
|
||||
|
||||
# ============================================================================
|
||||
# MAIN EXECUTION
|
||||
# ============================================================================
|
||||
|
||||
main()
|
||||
{
|
||||
input_file="${1:-}"
|
||||
auto_remediate="${2:-no}"
|
||||
|
||||
# Validate arguments
|
||||
if [ -z "$input_file" ]; then
|
||||
printf 'Usage: %s <host_list_file> [auto-remediate:yes|no]\n' "$SCRIPT_NAME"
|
||||
printf '\n'
|
||||
printf 'Host list file format (one per line):\n'
|
||||
printf ' hostname1:username1\n'
|
||||
printf ' hostname2:username2\n'
|
||||
printf ' hostname3:username3:/path/to/ssh_key # Optional SSH key\n'
|
||||
printf '\n'
|
||||
printf 'Format: hostname:username[:ssh_key]\n'
|
||||
printf ' - hostname: The host to connect to\n'
|
||||
printf ' - username: SSH username\n'
|
||||
printf ' - ssh_key: (Optional) Path to SSH private key file\n'
|
||||
printf '\n'
|
||||
printf 'SSH Key Authentication Priority:\n'
|
||||
printf ' 1. Specific key (if provided in host file)\n'
|
||||
printf ' 2. Auto-detected default keys (~/.ssh/id_ed25519, id_rsa, etc.)\n'
|
||||
printf ' 3. SSH agent or system default authentication\n'
|
||||
printf '\n'
|
||||
printf 'Example:\n'
|
||||
printf ' %s hosts.txt\n' "$SCRIPT_NAME"
|
||||
printf ' %s hosts.txt yes # Auto-remediate security issues\n' "$SCRIPT_NAME"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Setup
|
||||
setup_logging
|
||||
init_state_files
|
||||
|
||||
log_message "INFO" "Starting SSH Security Audit"
|
||||
|
||||
# Detect available SSH keys and log
|
||||
available_keys=$(detect_available_ssh_keys)
|
||||
if [ -n "$available_keys" ]; then
|
||||
key_count=$(printf '%s\n' "$available_keys" | wc -w | tr -d ' ')
|
||||
log_message "INFO" "Detected $key_count default SSH key(s) for authentication"
|
||||
for key in $available_keys; do
|
||||
log_message "INFO" " - $key"
|
||||
done
|
||||
else
|
||||
log_message "INFO" "No default SSH keys detected, will use SSH agent/default authentication"
|
||||
fi
|
||||
|
||||
# Parse input file
|
||||
parse_host_list "$input_file"
|
||||
|
||||
# Audit each host
|
||||
while IFS=':' read -r host username ssh_key; do
|
||||
audit_host "${host}:${username}:${ssh_key}"
|
||||
done < "$HOSTS_LIST_FILE"
|
||||
|
||||
# Generate report
|
||||
generate_csv_report "$REPORT_FILE"
|
||||
|
||||
# Display summary
|
||||
display_summary
|
||||
|
||||
# Offer remediation
|
||||
if [ "$auto_remediate" != "yes" ]; then
|
||||
printf '\n%sWould you like to automatically remediate security issues? (y/N)%s ' "$YELLOW" "$RESET"
|
||||
read -r response
|
||||
|
||||
case "$response" in
|
||||
[Yy]*) auto_remediate="yes" ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
if [ "$auto_remediate" = "yes" ]; then
|
||||
printf '\n%sStarting automatic remediation...%s\n' "$BOLD" "$RESET"
|
||||
|
||||
while IFS=':' read -r host username ssh_key; do
|
||||
password_auth=$(get_state "$HOST_RESULTS_FILE" "${host}_password_auth" "unknown")
|
||||
pubkey_auth=$(get_state "$HOST_RESULTS_FILE" "${host}_pubkey_auth" "unknown")
|
||||
|
||||
if [ "$password_auth" = "yes" ] && [ "$pubkey_auth" = "yes" ]; then
|
||||
printf '\n%sDisabling password authentication on %s...%s\n' "$YELLOW" "$host" "$RESET"
|
||||
|
||||
connected_user=$(get_state "$HOST_RESULTS_FILE" "${host}_connected_user" "root")
|
||||
if disable_password_auth "$host" "$connected_user" "$ssh_key"; then
|
||||
printf '%s✓ Successfully disabled password authentication on %s%s\n' "$GREEN" "$host" "$RESET"
|
||||
else
|
||||
printf '%s✗ Failed to disable password authentication on %s%s\n' "$RED" "$host" "$RESET"
|
||||
fi
|
||||
fi
|
||||
done < "$HOSTS_LIST_FILE"
|
||||
|
||||
# Regenerate report after remediation
|
||||
remediated_report="${REPORT_FILE%.csv}-remediated.csv"
|
||||
generate_csv_report "$remediated_report"
|
||||
printf '\n%sRemediation complete. Updated report: %s%s\n' "$BOLD" "$remediated_report" "$RESET"
|
||||
fi
|
||||
|
||||
log_message "INFO" "SSH Security Audit completed"
|
||||
}
|
||||
|
||||
# Run main function
|
||||
main "$@"
|
||||
190
local/bin/x-ssh-audit.md
Normal file
190
local/bin/x-ssh-audit.md
Normal file
@@ -0,0 +1,190 @@
|
||||
# x-ssh-audit
|
||||
|
||||
POSIX-compliant SSH security auditing and management script for analyzing and
|
||||
hardening SSH configurations across multiple hosts.
|
||||
|
||||
## Features
|
||||
|
||||
- **Security Auditing**: Analyze SSH configurations for security issues
|
||||
- **Multi-Host Support**: Audit multiple servers from a single host list
|
||||
- **Smart Authentication**: Automatic SSH key detection with intelligent fallback
|
||||
- **Comprehensive Checks**: Password auth, root login, key auth, empty passwords,
|
||||
X11 forwarding
|
||||
- **System Analysis**: Automated updates detection, pending reboot status
|
||||
- **Auto-Remediation**: Optional automatic security hardening
|
||||
- **Detailed Reporting**: CSV reports and comprehensive logs
|
||||
- **POSIX Compliant**: Works with sh, dash, bash, ksh, zsh
|
||||
|
||||
## Usage
|
||||
|
||||
```bash
|
||||
x-ssh-audit <host_list_file> [auto-remediate:yes|no]
|
||||
```
|
||||
|
||||
### Host List File Format
|
||||
|
||||
```text
|
||||
hostname:username[:ssh_key]
|
||||
```
|
||||
|
||||
- `hostname` – The host to connect to (FQDN or IP address)
|
||||
- `username` – SSH username for authentication
|
||||
- `ssh_key` – (Optional) Path to SSH private key file
|
||||
|
||||
### SSH Key Authentication Priority
|
||||
|
||||
The script automatically tries authentication methods in this order:
|
||||
|
||||
1. **Specific key** (if provided in host file)
|
||||
2. **Auto-detected default keys** (`~/.ssh/id_ed25519`, `id_rsa`, `id_ecdsa`,
|
||||
`id_dsa`)
|
||||
3. **SSH agent or system default authentication**
|
||||
|
||||
This means you can mix hosts with and without specific keys, and the script will
|
||||
intelligently try all available authentication methods.
|
||||
|
||||
## Host List Examples
|
||||
|
||||
```bash
|
||||
# Simple format without specific SSH keys
|
||||
server1.example.com:admin
|
||||
192.168.1.10:root
|
||||
|
||||
# With specific SSH keys
|
||||
production.example.com:deploy:~/.ssh/production_key
|
||||
staging.example.com:staging-user:~/.ssh/staging_key
|
||||
database.example.com:dbadmin:/home/user/.ssh/db_server_key
|
||||
|
||||
# Cloud instances with specific keys
|
||||
aws-instance.compute.amazonaws.com:ec2-user:~/.ssh/aws-keypair.pem
|
||||
gcp-instance.compute.google.com:ubuntu:~/.ssh/gcp-instance-key
|
||||
|
||||
# Mixed authentication (specific keys + fallback)
|
||||
cluster-node-01.example.com:cluster-admin:~/.ssh/cluster_key
|
||||
cluster-node-02.example.com:cluster-admin
|
||||
cluster-node-03.example.com:cluster-admin
|
||||
```
|
||||
|
||||
## Usage Examples
|
||||
|
||||
```bash
|
||||
# Basic audit
|
||||
x-ssh-audit hosts.txt
|
||||
|
||||
# Audit with automatic remediation
|
||||
x-ssh-audit hosts.txt yes
|
||||
|
||||
# Review results
|
||||
cat ./ssh-audit/20251017_143022/report.csv
|
||||
tail ./ssh-audit/20251017_143022/log.log
|
||||
```
|
||||
|
||||
## Output Structure
|
||||
|
||||
All output is organized in a timestamped directory:
|
||||
|
||||
```text
|
||||
./ssh-audit/
|
||||
└── 20251017_143022/
|
||||
├── backup/ # SSH config backups from remote hosts
|
||||
├── tmp/ # Temporary state files (auto-cleaned)
|
||||
├── log.log # Detailed audit log with timestamps
|
||||
└── report.csv # Summary report with all findings
|
||||
```
|
||||
|
||||
## Security Checks
|
||||
|
||||
- **Password Authentication**: Warns if password auth is enabled
|
||||
- **Root Login**: Warns if root login is not disabled
|
||||
- **Empty Passwords**: Error if empty passwords are permitted
|
||||
- **X11 Forwarding**: Warns if X11 forwarding is enabled
|
||||
- **Public Key Authentication**: Verifies key-based auth is available
|
||||
- **SSH Protocol**: Checks protocol version
|
||||
- **Automated Updates**: Detects if automatic updates are configured
|
||||
- **Pending Reboots**: Checks if system requires reboot
|
||||
|
||||
## Auto-Remediation
|
||||
|
||||
When enabled, the script will:
|
||||
|
||||
1. Create backups of SSH configurations
|
||||
2. Disable password authentication
|
||||
3. Ensure key-based authentication is required
|
||||
4. Disable root login
|
||||
5. Set conservative SSH connection limits
|
||||
6. Reload SSH daemon with new configuration
|
||||
7. Generate updated report with remediation status
|
||||
|
||||
## Configuration
|
||||
|
||||
Fallback usernames (tried if primary user fails):
|
||||
|
||||
```bash
|
||||
FALLBACK_USERS="root ubuntu ivuorinen"
|
||||
```
|
||||
|
||||
Default SSH keys (automatically detected):
|
||||
|
||||
```bash
|
||||
~/.ssh/id_ed25519
|
||||
~/.ssh/id_rsa
|
||||
~/.ssh/id_ecdsa
|
||||
~/.ssh/id_dsa
|
||||
```
|
||||
|
||||
SSH connection parameters:
|
||||
|
||||
```bash
|
||||
SSH_TIMEOUT=10
|
||||
SSH_RETRIES=3
|
||||
```
|
||||
|
||||
## Requirements
|
||||
|
||||
- POSIX-compliant shell (sh, dash, bash, ksh, zsh)
|
||||
- SSH client with key-based authentication
|
||||
- `sudo` access on remote hosts for configuration changes
|
||||
- Standard Unix utilities: `cut`, `grep`, `sed`, `awk`, `wc`
|
||||
|
||||
## Exit Codes
|
||||
|
||||
- `0` – Audit completed successfully
|
||||
- `1` – Error occurred (check log file for details)
|
||||
|
||||
## CSV Report Columns
|
||||
|
||||
- **Timestamp**: When the host was audited
|
||||
- **Hostname**: The target host
|
||||
- **Username**: Connected username
|
||||
- **SSH Status**: Connection status (audited, connection_failed)
|
||||
- **Password Auth**: Password authentication status (yes/no)
|
||||
- **Key Auth**: Public key authentication status (yes/no)
|
||||
- **Root Login**: Root login permission status
|
||||
- **Auto Updates**: Automated updates status
|
||||
- **Reboot Required**: Pending reboot status (yes/no)
|
||||
- **Security Issues**: Number of security issues found
|
||||
- **Remediation**: Remediation status (none, success, failed)
|
||||
|
||||
## Supported Distributions
|
||||
|
||||
- **Debian/Ubuntu**: unattended-upgrades detection
|
||||
- **RHEL/CentOS/Rocky/AlmaLinux/Fedora**: dnf-automatic and yum-cron detection
|
||||
- **Other**: Basic SSH security checks
|
||||
|
||||
## Tips
|
||||
|
||||
1. **Test First**: Run without auto-remediation first to review findings
|
||||
2. **Backup Keys**: Ensure you have backup SSH keys before hardening
|
||||
3. **Staged Rollout**: Test on non-critical hosts first
|
||||
4. **Review Logs**: Check log files for detailed information
|
||||
5. **Preserve Access**: Script ensures key-based auth works before disabling
|
||||
passwords
|
||||
|
||||
## Version
|
||||
|
||||
Version: 2.0-POSIX
|
||||
Date: 2025-10-17
|
||||
License: MIT
|
||||
Author: Ismo Vuorinen <https://github.com/ivuorinen>
|
||||
|
||||
<!-- vim: set ft=markdown spell spelllang=en_us cc=80 : -->
|
||||
260
migrate-to-chezmoi.sh
Executable file
260
migrate-to-chezmoi.sh
Executable file
@@ -0,0 +1,260 @@
|
||||
#!/usr/bin/env bash
|
||||
# Migration helper script: Dotbot to Chezmoi
|
||||
# This script helps restructure files from dotbot format to chezmoi format
|
||||
#
|
||||
# IMPORTANT: Review changes carefully before running!
|
||||
# It's recommended to run this in a new git branch
|
||||
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
cd "$SCRIPT_DIR"
|
||||
|
||||
# Colors for output
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
log_info() {
|
||||
echo -e "${BLUE}→${NC} $1"
|
||||
}
|
||||
|
||||
log_success() {
|
||||
echo -e "${GREEN}✓${NC} $1"
|
||||
}
|
||||
|
||||
log_warning() {
|
||||
echo -e "${YELLOW}⚠${NC} $1"
|
||||
}
|
||||
|
||||
log_error() {
|
||||
echo -e "${RED}✗${NC} $1"
|
||||
}
|
||||
|
||||
# Check if we're in a git repository
|
||||
if [ ! -d .git ]; then
|
||||
log_error "Not a git repository. Please run from your dotfiles directory."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Confirm with user
|
||||
log_warning "This script will restructure your dotfiles for chezmoi."
|
||||
log_warning "It's STRONGLY recommended to:"
|
||||
log_warning " 1. Commit all current changes"
|
||||
log_warning " 2. Create a new branch for migration"
|
||||
log_warning " 3. Review all changes before merging"
|
||||
echo ""
|
||||
read -p "Do you want to continue? (yes/no): " -r
|
||||
echo
|
||||
if [[ ! $REPLY =~ ^[Yy][Ee][Ss]$ ]]; then
|
||||
log_info "Migration cancelled."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Create backup branch
|
||||
log_info "Creating backup branch..."
|
||||
BACKUP_BRANCH="backup-before-chezmoi-$(date +%Y%m%d-%H%M%S)"
|
||||
git branch "$BACKUP_BRANCH"
|
||||
log_success "Created backup branch: $BACKUP_BRANCH"
|
||||
|
||||
# Create migration branch
|
||||
log_info "Creating migration branch..."
|
||||
MIGRATION_BRANCH="migrate-to-chezmoi"
|
||||
git checkout -b "$MIGRATION_BRANCH" 2>/dev/null || git checkout "$MIGRATION_BRANCH"
|
||||
log_success "Switched to migration branch: $MIGRATION_BRANCH"
|
||||
|
||||
# Function to move and rename files
|
||||
move_dotfiles() {
|
||||
local src=$1
|
||||
local dest=$2
|
||||
local prefix=$3
|
||||
|
||||
if [ -f "$src" ]; then
|
||||
mkdir -p "$(dirname "$dest")"
|
||||
log_info "Moving: $src → $dest"
|
||||
git mv "$src" "$dest" 2>/dev/null || mv "$src" "$dest"
|
||||
fi
|
||||
}
|
||||
|
||||
# Migrate base files (these become dot_ files)
|
||||
log_info "Migrating base files..."
|
||||
if [ -d base ]; then
|
||||
for file in base/*; do
|
||||
if [ -f "$file" ]; then
|
||||
filename=$(basename "$file")
|
||||
# Skip certain files
|
||||
if [[ "$filename" =~ \.(md|MD)$ ]]; then
|
||||
continue
|
||||
fi
|
||||
move_dotfiles "$file" "dot_${filename}" ""
|
||||
fi
|
||||
done
|
||||
log_success "Base files migrated"
|
||||
fi
|
||||
|
||||
# Migrate config directory
|
||||
log_info "Migrating config directory..."
|
||||
if [ -d config ]; then
|
||||
# Create dot_config if it doesn't exist
|
||||
mkdir -p dot_config
|
||||
|
||||
for item in config/*; do
|
||||
if [ -e "$item" ]; then
|
||||
basename_item=$(basename "$item")
|
||||
# Skip certain directories
|
||||
if [[ "$basename_item" == "homebrew" ]] || [[ "$basename_item" == "shared.sh" ]]; then
|
||||
log_info "Keeping $item in place (referenced by scripts)"
|
||||
continue
|
||||
fi
|
||||
|
||||
log_info "Moving: $item → dot_config/$basename_item"
|
||||
git mv "$item" "dot_config/$basename_item" 2>/dev/null || mv "$item" "dot_config/$basename_item"
|
||||
fi
|
||||
done
|
||||
log_success "Config files migrated"
|
||||
fi
|
||||
|
||||
# Migrate local/bin with executable prefix
|
||||
log_info "Migrating local/bin scripts..."
|
||||
if [ -d local/bin ]; then
|
||||
mkdir -p executable_dot_local/bin
|
||||
|
||||
for script in local/bin/*; do
|
||||
if [ -f "$script" ]; then
|
||||
basename_script=$(basename "$script")
|
||||
log_info "Moving: $script → executable_dot_local/bin/$basename_script"
|
||||
git mv "$script" "executable_dot_local/bin/$basename_script" 2>/dev/null || \
|
||||
mv "$script" "executable_dot_local/bin/$basename_script"
|
||||
fi
|
||||
done
|
||||
log_success "Local bin scripts migrated"
|
||||
fi
|
||||
|
||||
# Migrate local/share
|
||||
log_info "Migrating local/share..."
|
||||
if [ -d local/share ]; then
|
||||
mkdir -p dot_local/share
|
||||
|
||||
for item in local/share/*; do
|
||||
if [ -e "$item" ]; then
|
||||
basename_item=$(basename "$item")
|
||||
log_info "Moving: $item → dot_local/share/$basename_item"
|
||||
git mv "$item" "dot_local/share/$basename_item" 2>/dev/null || \
|
||||
mv "$item" "dot_local/share/$basename_item"
|
||||
fi
|
||||
done
|
||||
log_success "Local share migrated"
|
||||
fi
|
||||
|
||||
# Migrate local/man
|
||||
log_info "Migrating local/man..."
|
||||
if [ -d local/man ]; then
|
||||
mkdir -p dot_local/man
|
||||
|
||||
for item in local/man/*; do
|
||||
if [ -e "$item" ]; then
|
||||
basename_item=$(basename "$item")
|
||||
log_info "Moving: $item → dot_local/man/$basename_item"
|
||||
git mv "$item" "dot_local/man/$basename_item" 2>/dev/null || \
|
||||
mv "$item" "dot_local/man/$basename_item"
|
||||
fi
|
||||
done
|
||||
log_success "Local man pages migrated"
|
||||
fi
|
||||
|
||||
# Migrate SSH files with private prefix
|
||||
log_info "Migrating SSH files..."
|
||||
if [ -d ssh ]; then
|
||||
mkdir -p private_dot_ssh
|
||||
|
||||
for item in ssh/*; do
|
||||
if [ -f "$item" ]; then
|
||||
basename_item=$(basename "$item")
|
||||
log_info "Moving: $item → private_dot_ssh/$basename_item"
|
||||
git mv "$item" "private_dot_ssh/$basename_item" 2>/dev/null || \
|
||||
mv "$item" "private_dot_ssh/$basename_item"
|
||||
fi
|
||||
done
|
||||
log_success "SSH files migrated"
|
||||
fi
|
||||
|
||||
# Clean up empty directories
|
||||
log_info "Cleaning up empty directories..."
|
||||
find . -type d -empty -delete 2>/dev/null || true
|
||||
log_success "Empty directories removed"
|
||||
|
||||
# Create README for old structure
|
||||
log_info "Creating migration notes..."
|
||||
cat > MIGRATION-NOTES.md << 'EOF'
|
||||
# Migration Notes
|
||||
|
||||
This repository has been migrated from dotbot to chezmoi.
|
||||
|
||||
## Old Structure (Dotbot)
|
||||
```
|
||||
~/.dotfiles/
|
||||
├── base/ # Files symlinked to ~/.*
|
||||
├── config/ # Files symlinked to ~/.config/
|
||||
├── local/ # Scripts and local files
|
||||
├── ssh/ # SSH configuration
|
||||
├── install # Dotbot installation script
|
||||
└── install.conf.yaml # Dotbot configuration
|
||||
```
|
||||
|
||||
## New Structure (Chezmoi)
|
||||
```
|
||||
~/.dotfiles/ (or ~/.local/share/chezmoi)
|
||||
├── dot_* # Files that become ~/.*
|
||||
├── dot_config/ # Files that become ~/.config/
|
||||
├── executable_dot_local/ # Executable scripts
|
||||
├── private_dot_ssh/ # SSH files with 0700 permissions
|
||||
├── run_once_*.sh.tmpl # One-time setup scripts
|
||||
├── .chezmoi.yaml.tmpl # Chezmoi configuration
|
||||
└── .chezmoiignore # Files to ignore
|
||||
```
|
||||
|
||||
## File Naming Conventions
|
||||
|
||||
- `dot_bashrc` → `~/.bashrc`
|
||||
- `dot_config/fish/` → `~/.config/fish/`
|
||||
- `private_dot_ssh/` → `~/.ssh/` (mode 0700)
|
||||
- `executable_dot_local/bin/script` → `~/.local/bin/script` (executable)
|
||||
- `symlink_dot_vim` → `~/.vim` (symlink)
|
||||
|
||||
## Next Steps
|
||||
|
||||
1. Review the migration with: `git diff`
|
||||
2. Test with chezmoi: `chezmoi init --dry-run --verbose $(pwd)`
|
||||
3. Apply if everything looks good: `chezmoi init --apply $(pwd)`
|
||||
4. Read the full migration guide: `MIGRATION-DOTBOT-TO-CHEZMOI.md`
|
||||
|
||||
## Backup
|
||||
|
||||
A backup branch was created: `$BACKUP_BRANCH`
|
||||
|
||||
You can switch back with: `git checkout $BACKUP_BRANCH`
|
||||
EOF
|
||||
|
||||
log_success "Migration notes created: MIGRATION-NOTES.md"
|
||||
|
||||
# Show summary
|
||||
echo ""
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
log_success "Migration complete!"
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
echo ""
|
||||
log_info "Summary:"
|
||||
echo " • Backup branch: $BACKUP_BRANCH"
|
||||
echo " • Migration branch: $MIGRATION_BRANCH"
|
||||
echo ""
|
||||
log_info "Next steps:"
|
||||
echo " 1. Review changes: git status && git diff"
|
||||
echo " 2. Test with chezmoi: chezmoi init --dry-run --verbose \$(pwd)"
|
||||
echo " 3. Read migration guide: cat MIGRATION-DOTBOT-TO-CHEZMOI.md"
|
||||
echo " 4. Commit changes: git add -A && git commit -m 'Migrate to chezmoi'"
|
||||
echo ""
|
||||
log_warning "IMPORTANT: Review all changes before committing!"
|
||||
log_warning "Test thoroughly before applying to your home directory!"
|
||||
echo ""
|
||||
@@ -34,7 +34,7 @@
|
||||
"@types/node": "^24.0.1",
|
||||
"bats": "^1.12.0",
|
||||
"editorconfig-checker": "^6.1.0",
|
||||
"markdownlint": "^0.38",
|
||||
"markdownlint": "^0.39.0",
|
||||
"prettier": "^3.6.2",
|
||||
"typescript": "^5.8.3"
|
||||
},
|
||||
|
||||
32
run_once_after_create-directories.sh.tmpl
Normal file
32
run_once_after_create-directories.sh.tmpl
Normal file
@@ -0,0 +1,32 @@
|
||||
#!/usr/bin/env bash
|
||||
# run_once_after script to create required directories
|
||||
# This runs once after applying dotfiles
|
||||
|
||||
set -e
|
||||
|
||||
echo "→ Creating required directories..."
|
||||
|
||||
# Create directories with proper permissions
|
||||
mkdir -p "$HOME/.cache"
|
||||
mkdir -p "$HOME/.cache/git"
|
||||
mkdir -p "$HOME/.config"
|
||||
mkdir -p "$HOME/.local"
|
||||
mkdir -p "$HOME/.local/bin"
|
||||
mkdir -p "$HOME/.local/run"
|
||||
mkdir -p "$HOME/.local/share"
|
||||
mkdir -p "$HOME/.local/state"
|
||||
mkdir -p "$HOME/.local/state/tmux"
|
||||
mkdir -p "$HOME/.local/state/zsh"
|
||||
mkdir -p "$HOME/Code"
|
||||
|
||||
# Create directories with restricted permissions
|
||||
mkdir -p "$HOME/.local/share/gnupg"
|
||||
chmod 0700 "$HOME/.local/share/gnupg"
|
||||
|
||||
mkdir -p "$HOME/.ssh"
|
||||
chmod 0700 "$HOME/.ssh"
|
||||
|
||||
mkdir -p "$HOME/.ssh/local.d"
|
||||
chmod 0700 "$HOME/.ssh/local.d"
|
||||
|
||||
echo "✓ Directories created!"
|
||||
52
run_once_after_install-packages.sh.tmpl
Normal file
52
run_once_after_install-packages.sh.tmpl
Normal file
@@ -0,0 +1,52 @@
|
||||
#!/usr/bin/env bash
|
||||
# run_once_after script to install packages
|
||||
# This runs once after applying dotfiles
|
||||
|
||||
set -e
|
||||
|
||||
DOTFILES="{{ .chezmoi.sourceDir }}"
|
||||
export DOTFILES
|
||||
|
||||
# Source shared configuration
|
||||
if [ -f "$DOTFILES/config/shared.sh" ]; then
|
||||
source "$DOTFILES/config/shared.sh"
|
||||
fi
|
||||
|
||||
# Source message helper if available
|
||||
if [ -f "$DOTFILES/local/bin/msgr" ]; then
|
||||
source "$DOTFILES/local/bin/msgr"
|
||||
fi
|
||||
|
||||
echo "→ Installing packages..."
|
||||
|
||||
{{- if .is_macos }}
|
||||
# Install Homebrew packages
|
||||
if [ -f "$DOTFILES/config/homebrew/Brewfile" ]; then
|
||||
echo "→ Installing Homebrew packages..."
|
||||
brew bundle install --file="$DOTFILES/config/homebrew/Brewfile" --no-lock || true
|
||||
fi
|
||||
|
||||
# Setup macOS defaults
|
||||
if [ -f "$DOTFILES/scripts/install-macos-defaults.sh" ]; then
|
||||
echo "→ Setting up macOS defaults..."
|
||||
bash "$DOTFILES/scripts/install-macos-defaults.sh" || true
|
||||
fi
|
||||
{{- end }}
|
||||
|
||||
{{- if .is_linux }}
|
||||
# Install apt packages if on Debian/Ubuntu
|
||||
if command -v apt &> /dev/null && [ -f "$DOTFILES/tools/apt.txt" ]; then
|
||||
echo "→ Installing apt packages..."
|
||||
sudo apt install -y $(grep -vE '^\s*#' "$DOTFILES/tools/apt.txt" | sed -e 's/#.*//' | tr '\n' ' ') || true
|
||||
fi
|
||||
{{- end }}
|
||||
|
||||
# Install pipx packages
|
||||
if command -v pipx &> /dev/null && [ -f "$DOTFILES/tools/requirements-pipx.txt" ]; then
|
||||
echo "→ Installing pipx packages..."
|
||||
while IFS= read -r package; do
|
||||
[ -z "$package" ] || pipx install "$package" || true
|
||||
done < "$DOTFILES/tools/requirements-pipx.txt"
|
||||
fi
|
||||
|
||||
echo "✓ Packages installed!"
|
||||
76
run_once_after_setup-languages.sh.tmpl
Normal file
76
run_once_after_setup-languages.sh.tmpl
Normal file
@@ -0,0 +1,76 @@
|
||||
#!/usr/bin/env bash
|
||||
# run_once_after script to setup programming languages and tools
|
||||
# This runs once after applying dotfiles
|
||||
|
||||
set -e
|
||||
|
||||
DOTFILES="{{ .chezmoi.sourceDir }}"
|
||||
export DOTFILES
|
||||
|
||||
echo "→ Setting up programming languages and tools..."
|
||||
|
||||
# Install fonts
|
||||
if [ -f "$DOTFILES/scripts/install-fonts.sh" ]; then
|
||||
echo "→ Installing fonts..."
|
||||
bash "$DOTFILES/scripts/install-fonts.sh" || true
|
||||
fi
|
||||
|
||||
# Install Cargo packages
|
||||
if command -v cargo &> /dev/null && [ -f "$DOTFILES/scripts/install-cargo-packages.sh" ]; then
|
||||
echo "→ Installing Cargo packages..."
|
||||
bash "$DOTFILES/scripts/install-cargo-packages.sh" || true
|
||||
fi
|
||||
|
||||
# Install Go packages
|
||||
if command -v go &> /dev/null && [ -f "$DOTFILES/scripts/install-go-packages.sh" ]; then
|
||||
echo "→ Installing Go packages..."
|
||||
bash "$DOTFILES/scripts/install-go-packages.sh" || true
|
||||
fi
|
||||
|
||||
# Install Composer
|
||||
if [ -f "$DOTFILES/scripts/install-composer.sh" ]; then
|
||||
echo "→ Installing Composer..."
|
||||
bash "$DOTFILES/scripts/install-composer.sh" || true
|
||||
fi
|
||||
|
||||
# Install NVM
|
||||
if [ ! -d "$HOME/.nvm" ] && command -v curl &> /dev/null; then
|
||||
echo "→ Installing NVM..."
|
||||
NVM_VERSION=$(curl -s https://api.github.com/repos/nvm-sh/nvm/releases/latest | grep -o '"tag_name": "[^"]*' | cut -d'"' -f4)
|
||||
PROFILE=/dev/null bash -c "curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/install.sh | bash" || true
|
||||
fi
|
||||
|
||||
# Install latest Node LTS
|
||||
if [ -s "$HOME/.nvm/nvm.sh" ]; then
|
||||
echo "→ Installing latest Node LTS..."
|
||||
source "$HOME/.nvm/nvm.sh"
|
||||
nvm install --lts --latest-npm --default || true
|
||||
fi
|
||||
|
||||
# Install NPM packages
|
||||
if command -v npm &> /dev/null && [ -f "$DOTFILES/scripts/install-npm-packages.sh" ]; then
|
||||
echo "→ Installing NPM packages..."
|
||||
bash "$DOTFILES/scripts/install-npm-packages.sh" || true
|
||||
fi
|
||||
|
||||
# Install GitHub CLI extensions
|
||||
if command -v gh &> /dev/null && [ -f "$DOTFILES/scripts/install-gh-extensions.sh" ]; then
|
||||
echo "→ Installing GitHub CLI extensions..."
|
||||
bash "$DOTFILES/scripts/install-gh-extensions.sh" || true
|
||||
fi
|
||||
|
||||
# Install z
|
||||
if [ -f "$DOTFILES/scripts/install-z.sh" ]; then
|
||||
echo "→ Installing z..."
|
||||
bash "$DOTFILES/scripts/install-z.sh" || true
|
||||
fi
|
||||
|
||||
# Install cheat databases
|
||||
for database in "$DOTFILES"/scripts/install-cheat-*; do
|
||||
if [ -f "$database" ]; then
|
||||
echo "→ Installing $(basename "$database")..."
|
||||
bash "$database" || true
|
||||
fi
|
||||
done
|
||||
|
||||
echo "✓ Programming languages and tools setup complete!"
|
||||
31
run_once_before_install-prerequisites.sh.tmpl
Normal file
31
run_once_before_install-prerequisites.sh.tmpl
Normal file
@@ -0,0 +1,31 @@
|
||||
#!/usr/bin/env bash
|
||||
# run_once_before script to install prerequisites
|
||||
# This runs once before applying dotfiles
|
||||
|
||||
set -e
|
||||
|
||||
echo "→ Installing prerequisites..."
|
||||
|
||||
{{- if .is_macos }}
|
||||
# Install Homebrew if not present
|
||||
if ! command -v brew &> /dev/null; then
|
||||
echo "→ Installing Homebrew..."
|
||||
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||||
fi
|
||||
|
||||
# Install Xcode CLI tools if needed
|
||||
if ! xcode-select -p &> /dev/null; then
|
||||
echo "→ Installing Xcode Command Line Tools..."
|
||||
xcode-select --install || true
|
||||
fi
|
||||
{{- end }}
|
||||
|
||||
{{- if .is_linux }}
|
||||
# Update package manager
|
||||
if command -v apt &> /dev/null; then
|
||||
echo "→ Updating apt..."
|
||||
sudo apt update
|
||||
fi
|
||||
{{- end }}
|
||||
|
||||
echo "✓ Prerequisites installed!"
|
||||
37
yarn.lock
37
yarn.lock
@@ -954,14 +954,7 @@
|
||||
resolved "https://registry.yarnpkg.com/@types/ms/-/ms-2.1.0.tgz#052aa67a48eccc4309d7f0191b7e41434b90bb78"
|
||||
integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==
|
||||
|
||||
"@types/node@*":
|
||||
version "24.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-24.1.0.tgz#0993f7dc31ab5cc402d112315b463e383d68a49c"
|
||||
integrity sha512-ut5FthK5moxFKH2T1CUOC6ctR67rQRvvHdFLCD2Ql6KXmMuCrjsSsRI9UsLCm9M18BMwClv4pn327UvB7eeO1w==
|
||||
dependencies:
|
||||
undici-types "~7.8.0"
|
||||
|
||||
"@types/node@^24.0.1":
|
||||
"@types/node@*", "@types/node@^24.0.1":
|
||||
version "24.2.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-24.2.1.tgz#83e41543f0a518e006594bb394e2cd961de56727"
|
||||
integrity sha512-DRh5K+ka5eJic8CjH7td8QpYEV6Zo10gfRkjHCO3weqZHWDtAaSTFtl4+VMqOJ4N5jcuhZ9/l+yy8rVgw7BQeQ==
|
||||
@@ -3739,7 +3732,21 @@ markdownlint-cli@^0.45.0:
|
||||
run-con "~1.3.2"
|
||||
smol-toml "~1.3.4"
|
||||
|
||||
markdownlint@^0.38, markdownlint@~0.38.0:
|
||||
markdownlint@^0.39.0:
|
||||
version "0.39.0"
|
||||
resolved "https://registry.yarnpkg.com/markdownlint/-/markdownlint-0.39.0.tgz#28b500633121b89cc884998d27d92427ec50fd21"
|
||||
integrity sha512-Xt/oY7bAiHwukL1iru2np5LIkhwD19Y7frlsiDILK62v3jucXCD6JXlZlwMG12HZOR+roHIVuJZrfCkOhp6k3g==
|
||||
dependencies:
|
||||
micromark "4.0.2"
|
||||
micromark-core-commonmark "2.0.3"
|
||||
micromark-extension-directive "4.0.0"
|
||||
micromark-extension-gfm-autolink-literal "2.1.0"
|
||||
micromark-extension-gfm-footnote "2.1.0"
|
||||
micromark-extension-gfm-table "2.1.1"
|
||||
micromark-extension-math "3.1.0"
|
||||
micromark-util-types "2.0.2"
|
||||
|
||||
markdownlint@~0.38.0:
|
||||
version "0.38.0"
|
||||
resolved "https://registry.yarnpkg.com/markdownlint/-/markdownlint-0.38.0.tgz#862ca9d08f3a28f4149bd388ac369bb95865534e"
|
||||
integrity sha512-xaSxkaU7wY/0852zGApM8LdlIfGCW8ETZ0Rr62IQtAnUMlMuifsg09vWJcNYeL4f0anvr8Vo4ZQar8jGpV0btQ==
|
||||
@@ -5918,12 +5925,7 @@ typed-array-length@^1.0.7:
|
||||
possible-typed-array-names "^1.0.0"
|
||||
reflect.getprototypeof "^1.0.6"
|
||||
|
||||
typescript@>=4.2.0:
|
||||
version "5.8.3"
|
||||
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.8.3.tgz#92f8a3e5e3cf497356f4178c34cd65a7f5e8440e"
|
||||
integrity sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==
|
||||
|
||||
typescript@^5.8.3:
|
||||
typescript@>=4.2.0, typescript@^5.8.3:
|
||||
version "5.9.2"
|
||||
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.9.2.tgz#d93450cddec5154a2d5cabe3b8102b83316fb2a6"
|
||||
integrity sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==
|
||||
@@ -5953,11 +5955,6 @@ undici-types@~7.10.0:
|
||||
resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.10.0.tgz#4ac2e058ce56b462b056e629cc6a02393d3ff350"
|
||||
integrity sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==
|
||||
|
||||
undici-types@~7.8.0:
|
||||
version "7.8.0"
|
||||
resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.8.0.tgz#de00b85b710c54122e44fbfd911f8d70174cd294"
|
||||
integrity sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==
|
||||
|
||||
unicode-emoji-modifier-base@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz#dbbd5b54ba30f287e2a8d5a249da6c0cef369459"
|
||||
|
||||
Reference in New Issue
Block a user