Compare commits

...

178 Commits

Author SHA1 Message Date
3d9e0477b0 feat(bin): git-attributes rewrite 2025-04-22 10:11:32 +03:00
cfab48eee0 chore(config): zed config mode change 2025-04-22 10:08:12 +03:00
624920b2ab chore(config): nvim, tmux and wezterm tweaks 2025-04-22 10:07:34 +03:00
github-actions[bot]
fd82f1e36c chore: update pre-commit hooks (#101) 2025-04-21 14:23:31 +03:00
dependabot[bot]
48ec8cd7a7 chore(deps): bump http-proxy-middleware (#100) 2025-04-19 13:10:01 +03:00
renovate[bot]
3a61bd2b72 fix(github-action): update softprops/action-gh-release (v2.2.1 → v2.2.2)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-19 04:34:26 +00:00
895b0ad353 chore(config): aqua: remove extra tools
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-04-19 04:12:58 +03:00
3c733ec7eb chore(config): tmux: tweak theme
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-04-19 04:12:36 +03:00
5321ad7bd7 feat(config): fish formatting, secrets, op
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-04-19 04:11:14 +03:00
196077bea9 feat(nvim): reworked lsp, theme, cleanup
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-04-19 04:04:26 +03:00
github-actions[bot]
75147c7dd6 chore: update pre-commit hooks (#99) 2025-04-17 07:30:06 +03:00
f28ad41f67 chore(bin): remove zalgo-text.swift 2025-04-15 21:05:14 +03:00
61b66d3114 chore: removed yabai bin from repository 2025-04-15 21:00:40 +03:00
282f760a4f chore(lint): shfmt 2025-04-15 21:00:19 +03:00
4a9c9b4cb9 feat(bin): rewrote git-update-dirs 2025-04-15 20:59:50 +03:00
16311ee5b4 feat(bin): rewrote git-fsck-dirs 2025-04-15 15:39:01 +03:00
2fddfa82c0 feat(bin): rewrote git-dirty with additional feats 2025-04-15 14:02:44 +03:00
8f5f44db2d feat(bin): x-gh-get-latest-version improvements 2025-04-14 14:45:20 +03:00
8ad1f5c4d0 chore(docs): bin/README.md tweaks
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-04-14 10:25:43 +03:00
ac0aa1fbc0 feat(bin): php-switcher for Brew based version changes
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-04-14 10:25:18 +03:00
e8c6794ff6 chore(repo): ignore yabai from repo
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-04-14 10:24:20 +03:00
4de9a649f0 chore(config): update zed config
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-04-14 10:23:50 +03:00
github-actions[bot]
e7f115680e chore: update pre-commit hooks (#98)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2025-04-14 09:06:55 +03:00
f3b4551d0c chore(config): ideavim config 2025-04-11 16:31:59 +03:00
64725c57dc chore(config): fish config tweaks 2025-04-11 16:31:58 +03:00
b32ee414e3 chore(config): tweak yabai config 2025-04-11 16:31:58 +03:00
renovate[bot]
6ea7807718 fix(container): update image python (3.13.2 → 3.13.3) (#97) 2025-04-10 22:14:50 +03:00
6a776bd3dd chore(config): nvim: cleanup and fixes
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-04-04 16:34:08 +03:00
6ffe581326 feat(config): use nvm with bass, simplify setup
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-04-04 16:33:32 +03:00
5d476e8eed chore(config): add tmux-resurrect back
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-04-03 09:39:15 +03:00
github-actions[bot]
bf84c67f08 chore: update pre-commit hooks (#96)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2025-04-03 07:54:08 +03:00
9cb400dd3f chore(config): docker completions for fish 2025-04-02 18:23:14 +03:00
fce649619a chore(config): remove double init for pyenv 2025-04-02 18:22:59 +03:00
8b0148e468 chore: fish: migrate back to nvm 2025-04-02 18:22:38 +03:00
9cb27eb9dc chore(deps): yarn package update
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-31 21:06:27 +03:00
f1ed88a98e chore(config): vim plug update
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-31 21:05:57 +03:00
ec35f1cb1e chore(config): wezterm font and config tweaks
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-31 21:05:44 +03:00
dab8504cfd chore(deps): Brewfile update
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-31 21:05:09 +03:00
0f9a76e36f chore(config): nvim config tweaks
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-31 21:04:50 +03:00
github-actions[bot]
97244d5287 chore: update pre-commit hooks (#95)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2025-03-31 09:09:46 +03:00
50ea9bea89 fix(config): nvim theme tweaks
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-28 09:47:53 +02:00
688469ad8b chore(config): wezterm font is now Operator Mono
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-28 09:47:21 +02:00
github-actions[bot]
af32914d71 chore: update pre-commit hooks (#94) 2025-03-27 06:44:56 +02:00
renovate[bot]
840bd85232 feat(github-action): update actions/setup-python (v5.4.0 → v5.5.0)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-25 20:42:22 +00:00
c81ee240bf chore: tweaks to node version, fnm init
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-25 15:27:33 +02:00
e215fe0a2f feat(config): switch (n)vim colorscheme to pencil
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-25 15:27:07 +02:00
38e340ac8d chore(fix): goenvrc, fish alternative 2025-03-25 00:32:00 +02:00
c9383f955c chore(nvim): tweak nvm-default
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-24 16:04:28 +02:00
8eeaea802a chore(config): better git configs
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-24 15:50:22 +02:00
d626731736 chore(config): fish and goenv configs
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-24 15:49:23 +02:00
e459cd99e7 chore(deps): update brew bundle
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-24 15:49:00 +02:00
3e4391adda chore(config): vim: split config, tweaks
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-24 15:47:32 +02:00
a6400943d2 chore(lint): fish_indent
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-24 10:53:48 +02:00
5ec8e89641 chore(config): fish: remove jorgebucaran/nvm.fish
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-24 10:48:42 +02:00
github-actions[bot]
115dac4fb4 chore: update pre-commit hooks (#93) 2025-03-24 06:41:13 +02:00
github-actions[bot]
405e2d5c77 chore: update pre-commit hooks (#92) 2025-03-20 19:08:58 +02:00
535925aeaf feat: aqua package manager
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-20 16:03:09 +02:00
renovate[bot]
7fa29ae3d6 fix(github-action): update reviewdog/action-shfmt (v1.0.2 → v1.0.4)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-20 04:06:58 +00:00
renovate[bot]
b1a01b6717 fix(github-action): update reviewdog/action-markdownlint (v0.26.0 → v0.26.2)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-20 00:45:57 +00:00
renovate[bot]
b9d2ee01ed fix(github-action): update reviewdog/action-actionlint (v1.65.0 → v1.65.2)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-19 20:55:09 +00:00
e81938a04d chore(ci): pinact run 2025-03-19 17:12:43 +02:00
3bbcb248ba chore: tweaks to gitignore and fonts installation 2025-03-18 00:15:07 +02:00
17194755e6 chore(config): add "commit" to fish functions 2025-03-18 00:14:33 +02:00
45f95422ef fix(scripts): macos defaults now supports Terminal 2025-03-18 00:14:13 +02:00
b8f0bb570e fix(bin): dfm install all 2025-03-18 00:13:34 +02:00
a0d8069455 fix(ci): update-submodules: permissons are sorted host level
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-17 11:53:22 +02:00
github-actions[bot]
8b1eb0a582 chore: update pre-commit hooks (#91)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2025-03-17 11:44:20 +02:00
github-actions[bot]
9cb10250c5 chore: update pre-commit hooks (#90)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2025-03-13 21:42:36 +02:00
2836ed19cf chore(config): tweak yabai config, add apps
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-12 14:56:22 +02:00
21eb5086a9 chore(config): vim and ideavim tweaks
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-12 14:30:39 +02:00
56f49ab314 fix(config): vim darkmode check typo
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-12 14:29:01 +02:00
5e1a2d0dd0 chore(config): add vim/autoload/plug.vim back 2025-03-11 16:00:57 +02:00
5fdd26bf80 chore(ci): remove cleanup step from linters.yml
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-11 15:34:13 +02:00
0c93dd9ad8 fix(ci): linters.yml add cleanup step
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-11 14:55:30 +02:00
9deb613b5b fix(ci): update-submodules.yml now does cleanup
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-11 14:04:27 +02:00
renovate[bot]
bf4031c238 chore(deps): pin dependencies (#88)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-10 11:50:28 +02:00
087b33cc97 fix(ci): add concurrency to workflows 2025-03-10 11:47:22 +02:00
github-actions[bot]
361657cdec chore: update pre-commit hooks (#89)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2025-03-10 11:42:15 +02:00
4855e56f3c chore(ci): update workflows 2025-03-08 02:27:49 +02:00
c119d4c20b chore(ci): update workflows 2025-03-08 02:19:18 +02:00
4815e8678b chore(config): change zed theme 2025-03-08 02:12:40 +02:00
31a45fed19 chore(config): more vim config 2025-03-08 02:12:25 +02:00
5aae400c92 chore(ci): update workflows 2025-03-08 02:07:35 +02:00
26e11047ce chore(config): tweak tmux config & theme activator 2025-03-07 21:09:22 +02:00
1f0826c7e7 feat: added yabai and configs for skhd & yabai
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-07 13:00:25 +02:00
9f71f3c8aa chore(config): simplify fish open-tmux function
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-06 15:42:34 +02:00
5d929c6466 chore(config): move alias functions to alias.fish
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-06 15:42:34 +02:00
afc04db93a chore(config): simplify eza aliases
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-06 15:42:30 +02:00
github-actions[bot]
eca0321e21 chore: update pre-commit hooks (#87)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2025-03-06 14:10:33 +02:00
def3372b9a chore(ssh): drop vine and paimon from config
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-05 14:45:19 +02:00
github-actions[bot]
5aaa177756 chore: update pre-commit hooks (#86)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2025-03-03 08:32:57 +02:00
31a6ea351d Update linters.yml 2025-03-02 12:41:30 +02:00
333995c7f4 fix(config): vim config
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-02-28 17:08:06 +02:00
d6b24c27a1 chore(config): add LM Studio to path
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-02-27 16:20:16 +02:00
89ae4003f9 chore(config): ignore config/git/local.d/*
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-02-27 15:39:19 +02:00
7a008c3ae8 chore(config): update brewfile
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-02-27 15:34:36 +02:00
a6f89e80bd chore(config): tmux: tms keybindings, update docs
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-02-27 15:34:11 +02:00
3d987e491e chore(config): fish: add cargo bin, pyenv init
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-02-27 15:33:24 +02:00
e1729fd925 chore(config): aerospace, add Microsoft RDC
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-02-27 15:32:32 +02:00
4e5dae4161 fix(ci): update-submodules fetch-depth to 2 2025-02-27 14:58:22 +02:00
6b30ebfddb fix(config): vim plugged config 2025-02-27 14:58:03 +02:00
github-actions[bot]
0aafae5d97 chore: update pre-commit hooks (#85)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2025-02-27 07:37:20 +02:00
32cc561d20 chore(ci): update-submodules fetch depth to 1 2025-02-26 18:00:55 +02:00
784fddea64 fix(repo): remove tools/dotbot-asdf submodule 2025-02-26 00:41:03 +02:00
0a058aaf22 chore(config): fish_add_path "$CARGO_HOME/bin" 2025-02-25 23:39:46 +02:00
ff6876a56d chore(bin): remove markdown-to-telegram.py 2025-02-25 20:32:29 +02:00
ccbd29fc40 chore(dotbot): remove dotbot-asdf 2025-02-25 20:31:57 +02:00
9251225d3e chore(bin): update x-env-list with skipping 2025-02-25 20:26:32 +02:00
241eed66f5 chore(config): update zed config 2025-02-25 20:25:24 +02:00
6de8e92968 chore(scripts): update install-cargo-packages.sh 2025-02-25 20:25:01 +02:00
2cdda605ef chore(config): tweak tmux.conf 2025-02-25 20:23:41 +02:00
87a4ec8ecf chore(config): clean up fish/exports.fish 2025-02-25 20:23:06 +02:00
87613d10ec chore(config): remove ehfive/fish-bash2env 2025-02-25 20:22:36 +02:00
f6dc193f6a feat(config): add vim config (#61)
* feat: vim config
* fix: nvim was getting vimrc config
* chore: cleanup, cr fix
* feat(config): add config/fish/alias.fish
2025-02-25 20:20:31 +02:00
4adbbdb47a chore(config): tmux tweaks 2025-02-25 10:46:01 +02:00
bdbe10f612 chore(config): aerospace sessions app
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-02-25 10:41:54 +02:00
531488001f chore(config): shared.sh tweak
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-02-25 10:41:39 +02:00
4f2b47d5c3 feat(asdf): removal of asdf
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-02-25 10:41:20 +02:00
github-actions[bot]
dfbdb89aca chore: update pre-commit hooks (#83) 2025-02-24 08:30:19 +02:00
ivuorinen
c9489ae50f chore(git): Update submodules (automated) 2025-02-24 05:03:01 +01:00
9fdb4cdfb0 chore(scripts): use msgr instead of msg_* funcs 2025-02-23 17:23:54 +02:00
f4da515120 chore(scripts): refactor cargo and go pkg install 2025-02-23 17:23:54 +02:00
fae9665671 feat(config): fish - add edc/bass for bash 2025-02-23 17:23:54 +02:00
d5e34d168b feat(config): fish configs and tmux auto-open 2025-02-23 17:23:54 +02:00
e8b43d76dc chore: .ignore additions 2025-02-23 17:23:54 +02:00
4f9757ad2b feat(config): switch from fish-exa to fish-eza 2025-02-23 17:23:54 +02:00
611a3bfa72 feat: move asdf from local/bin to local 2025-02-23 17:23:54 +02:00
10da4ea372 Update .gitmodules, relocate asdf 2025-02-21 16:30:30 +02:00
68525d5ae4 Update update-submodules.yml 2025-02-21 16:25:27 +02:00
github-actions[bot]
7311f2576e chore: update pre-commit hooks (#82)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2025-02-20 09:19:54 +02:00
721d3c0d15 chore(tmux): tweak plugin order and paths
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-02-19 10:18:06 +02:00
c82e183ff9 chore(config): ideavim config update
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-02-19 10:17:36 +02:00
1b6a93650b chore(config): fish config tweaks and function fix
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-02-19 10:15:01 +02:00
aa85bb0c72 feat(bin): raycast helpers
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-02-19 10:13:52 +02:00
ceb452aa68 chore(config): ignore fish_variables
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-02-17 12:21:43 +02:00
467a1c2ff9 chore(config): remove pip config
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-02-17 12:20:28 +02:00
f73cd32309 chore(deps): update brew bundle
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-02-17 12:20:08 +02:00
0be2a5b879 chore(config): tmux fixes, added tms binds
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-02-17 12:19:46 +02:00
8c015ac251 feat(shell): gazorby/fish-exa
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-02-17 12:19:13 +02:00
894ec12fd8 chore: move asdf to ./local, update configs
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-02-17 12:17:45 +02:00
8cf3602de1 chore(config): pip config 2025-02-17 10:53:57 +02:00
57c4f0438e chore: work computer setup, gitprofile update 2025-02-17 10:53:57 +02:00
github-actions[bot]
02907d6a6b chore: update pre-commit hooks (#81)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2025-02-17 09:56:55 +02:00
dependabot[bot]
127edd1b2c chore(deps): bump the npm_and_yarn group with 3 updates (#80) 2025-02-15 14:49:30 +02:00
dependabot[bot]
76dc53b50a chore(deps): bump @octokit/endpoint in the npm_and_yarn group (#79)
Bumps the npm_and_yarn group with 1 update: [@octokit/endpoint](https://github.com/octokit/endpoint.js).


Updates `@octokit/endpoint` from 10.1.1 to 10.1.3
- [Release notes](https://github.com/octokit/endpoint.js/releases)
- [Commits](https://github.com/octokit/endpoint.js/compare/v10.1.1...v10.1.3)

---
updated-dependencies:
- dependency-name: "@octokit/endpoint"
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-15 13:30:33 +02:00
f88a5298b2 chore(deps): update brewfile 2025-02-14 00:08:50 +02:00
b436472bbb feat(config): fish configs 2025-02-14 00:08:50 +02:00
4e4a2eaab1 chore(config): tmux: combine configs, fix paths 2025-02-14 00:08:50 +02:00
d59204f25f chore(lint): formatting 2025-02-14 00:08:50 +02:00
b299e3df1e chore(shell): exports cleanup 2025-02-14 00:08:50 +02:00
5bcc06d53b chore(shell): move zsh stuff from exports to zshrc 2025-02-14 00:08:50 +02:00
github-actions[bot]
7c09a7ff74 chore: update pre-commit hooks (#78)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2025-02-13 14:28:54 +02:00
88efedf26b feat: updates, docs, license fixes, new helpers 2025-02-12 01:05:37 +02:00
renovate[bot]
cdd68748e0 chore(deps): update node.js to v22.14.0 (#77)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-12 00:35:00 +02:00
github-actions[bot]
f8ff2699e6 chore: update pre-commit hooks (#76) 2025-02-10 14:19:32 +02:00
c5e06888b8 chore(config): update Brewfile, zed settings 2025-02-07 12:41:55 +02:00
renovate[bot]
4f138eee73 fix(container): update image python (3.13.1 → 3.13.2) (#75)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-07 10:02:48 +02:00
github-actions[bot]
90258e5105 chore: update pre-commit hooks (#74) 2025-02-06 13:44:34 +02:00
efc53fc9bf feat(ci): sync-labels from ivuorinen/actions 2025-02-05 09:09:31 +02:00
github-actions[bot]
f62c17d940 chore: update pre-commit hooks (#73)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2025-02-03 14:36:14 +02:00
github-actions[bot]
fb15b93887 chore: update pre-commit hooks (#72)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2025-01-30 09:44:16 +02:00
renovate[bot]
222276486a feat(github-action): update actions/setup-python (v5.3.0 → v5.4.0)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-28 22:37:48 +00:00
github-actions[bot]
4446d59e73 chore: update pre-commit hooks (#71) 2025-01-28 17:08:31 +02:00
a22709a0f0 chore(repo): add-submodules submodule ignore dirty 2025-01-28 14:54:58 +02:00
76598ad33b chore(config): tmux config tweaks, .ignore 2025-01-28 14:51:38 +02:00
56ccb7c136 chore(nvim): plugin tweaks, config tweaks 2025-01-24 01:33:58 +02:00
github-actions[bot]
b6d933d018 chore: update pre-commit hooks (#70) 2025-01-23 08:20:21 +02:00
f9856a27b9 chore(nvim): drop mini.jump, mini.move, update docs 2025-01-22 16:26:45 +02:00
b36b52ad57 chore(config): brew bundle update 2025-01-22 15:13:47 +02:00
1e60ccf49b chore(ssh): ignore submodule changes, tweak config 2025-01-22 15:12:59 +02:00
renovate[bot]
9ca9439b9a chore(deps): update node.js to v22.13.1 (#69)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-22 09:34:00 +02:00
6d30ae7e84 chore(config): aerospace - add phpstorm 2025-01-21 14:08:06 +02:00
031e124663 chore(ssh): ft=sshconfig to turingpi config 2025-01-20 14:51:37 +02:00
bb50c9fe18 chore(scripts): macos default tweaks 2025-01-20 14:50:05 +02:00
8e608de501 chore(config): aerospace tweaks 2025-01-20 14:47:22 +02:00
github-actions[bot]
8917b7736b chore: update pre-commit hooks (#68)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2025-01-20 11:49:36 +02:00
18ff879f1d chore(config): tms colors, depth from 10 to 3 2025-01-17 13:25:32 +02:00
c5a258d7be feat(docs): alias docs and update script 2025-01-17 13:07:15 +02:00
311 changed files with 27635 additions and 2993 deletions

View File

@@ -8,13 +8,16 @@ indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true
[*.fish]
max_line_length = 80
[*.md]
max_line_length = 100
[*.lua]
max_line_length = 120
max_line_length = 90
[*.php]
[*.{php,fish}]
indent_size = 4
[.git{ignore,modules}]

45
.gitattributes vendored
View File

@@ -1,4 +1,4 @@
## GITATTRIBUTES FOR WEB PROJECTS
## GITATTRIBUTES
#
# These settings are for any web project.
#
@@ -20,20 +20,23 @@
*.bat text eol=crlf
*.cmd text eol=crlf
*.coffee text
*.css text diff=css
*.htm text diff=html
*.html text diff=html
*.css text diff=css eol=lf
*.fish text diff=shell eol=lf
*.htm text diff=html eol=lf
*.html text diff=html eol=lf
*.inc text
*.ini text
*.js text
*.json text
*.jsx text
*.less text
*.lua text diff=lua eol=lf
*.ls text
*.map text -diff
*.od text
*.onlydata text
*.php text diff=php
*.plist text eol=lf
*.pl text
*.ps1 text eol=crlf
*.py text diff=python
@@ -41,15 +44,18 @@
*.sass text
*.scm text
*.scss text diff=css
*.sh text eol=lf
*.sh text eol=lf diff=shell
.husky/* text eol=lf
*.sql text
*.styl text
*.tag text
*.tmux text eol=lf diff=tmux
*.ts text
*.tsx text
*.vim text eol=lf
*.xml text
*.xhtml text diff=html
*.zsh text diff=zsh eol=lf
# Docker
Dockerfile text
@@ -68,6 +74,7 @@ Dockerfile text
AUTHORS text
CHANGELOG text
CHANGES text
CODEOWNERS text
CONTRIBUTING text
COPYING text
copyright text
@@ -105,6 +112,8 @@ TODO text
*.config text
.editorconfig text
.env text
*.env text
*.env.* text
.gitattributes text
.gitconfig text
.htaccess text
@@ -208,15 +217,37 @@ Procfile text
*.gitignore text
*.gitkeep text
.gitattributes export-ignore
.gitattributes text export-ignore
*.gitattributes text export-ignore
.gitmodules text export-ignore
*.gitmodules text export-ignore
**/.gitignore export-ignore
**/.gitkeep export-ignore
# Repo specials
local/bin/* text eol=lf
local/bin/* text eol=lf diff=shell
local/bin/*.md text eol=lf diff=markdown
config/antigen.zsh text
git/* text
**/git/* text
**/alias text
ssh/* text
ssh/shared.d/* text
ssh/local.d/* text
# Auto-generated rules - 2025-04-16 10:28:04
# Shell scripts detected by content
install text eol=lf diff=shell
# File extension-based rules
*.1 text eol=lf
*.applescript text eol=lf
*.d/work-git text eol=lf
*.dirs text eol=lf
*.example text eol=lf
*.itermcolors text eol=lf
*.locale text eol=lf
*.python-version text eol=lf
*.snippets text eol=lf
*.theme text eol=lf
*.yamlfmt text eol=lf

View File

@@ -1,18 +1,32 @@
---
# yaml-language-server: https://json.schemastore.org/github-workflow.json
name: Debug Changelog # Workflow name displayed on GitHub
on:
workflow_dispatch: # Trigger manually
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions: read-all
jobs:
debug-changelog:
runs-on: self-hosted
permissions: write-all
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Create changelog text
id: changelog
uses: loopwerk/tag-changelog@v1
uses: loopwerk/tag-changelog@941366edb8920e2071eae0449031830984b9f26e # v1.3.0
with:
token: ${{ secrets.GITHUB_TOKEN }}
config_file: .github/tag-changelog-config.js
- name: 'Echo results'
id: output-changelog
run: |

View File

@@ -1,29 +1,47 @@
---
name: reviewdog
# yaml-language-server: https://json.schemastore.org/github-workflow.json
name: Reviewdog
on: [push]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions: read-all
jobs:
linters:
name: Linters
runs-on: self-hosted
permissions: write-all
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: GitHub Actions
uses: reviewdog/action-actionlint@v1
uses: reviewdog/action-actionlint@a5524e1c19e62881d79c1f1b9b6f09f16356e281 # v1.65.2
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
reporter: github-pr-review
- name: detect-secrets
uses: reviewdog/action-detect-secrets@master
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
reporter: github-pr-review
- name: markdownlint
uses: reviewdog/action-markdownlint@v0
uses: reviewdog/action-markdownlint@3667398db9118d7e78f7a63d10e26ce454ba5f58 # v0.26.2
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
reporter: github-pr-review
- name: shfmt
uses: reviewdog/action-shfmt@v1
uses: reviewdog/action-shfmt@d8f080930b9be5847b4f97e9f4122b81a82aaeac # v1.0.4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
shfmt_flags: |

View File

@@ -1,38 +1,48 @@
---
# yaml-language-server: https://json.schemastore.org/github-workflow.json
name: Release Daily State
on:
workflow_dispatch:
schedule:
- cron: '0 21 * * *' # 00:00 at Europe/Helsinki
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions: read-all
jobs:
new-daily-release:
runs-on: self-hosted
permissions:
contents: write
permissions: write-all
outputs:
created: ${{ steps.daily-version.outputs.created }}
version: ${{ steps.daily-version.outputs.version }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Create tag if necessary
uses: fregante/daily-version-action@v2
uses: fregante/daily-version-action@fb1a60b7c4daf1410cd755e360ebec3901e58588 # v2.1.3
id: daily-version
- name: Create changelog text
if: steps.daily-version.outputs.created
id: changelog
uses: loopwerk/tag-changelog@v1
uses: loopwerk/tag-changelog@941366edb8920e2071eae0449031830984b9f26e # v1.3.0
with:
token: ${{ secrets.GITHUB_TOKEN }}
config_file: .github/tag-changelog-config.js
- name: Create release
if: steps.daily-version.outputs.created
uses: actions/create-release@latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
uses: softprops/action-gh-release@da05d552573ad5aba039eaac05058a918a7bf631 # v2.2.2
with:
token: ${{ secrets.GITHUB_TOKEN }}
tag_name: ${{ steps.daily-version.outputs.version }}
release_name: Release ${{ steps.daily-version.outputs.version }}
name: Release ${{ steps.daily-version.outputs.version }}
body: ${{ steps.changelog.outputs.changes }}

View File

@@ -1,21 +1,35 @@
---
# yaml-language-server: https://json.schemastore.org/github-workflow.json
name: Pre-commit autoupdate
on:
schedule:
# At 04:00 on Monday and Thursday.
- cron: "0 4 * * 1,4"
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions: read-all
jobs:
auto-update:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5.3.0
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # v5.5.0
- run: pip install pre-commit && pre-commit autoupdate
- uses: peter-evans/create-pull-request@v7
- uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
with:
token: ${{ secrets.GITHUB_TOKEN }}
branch: update/pre-commit-hooks

View File

@@ -1,4 +1,5 @@
---
# yaml-language-server: https://json.schemastore.org/github-workflow.json
name: Semantic PR
on:
@@ -8,11 +9,18 @@ on:
- edited
- synchronize
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions: read-all
jobs:
semantic-pr:
runs-on: self-hosted
steps:
- uses: amannn/action-semantic-pull-request@v5.5.3
- uses: amannn/action-semantic-pull-request@0723387faaf9b38adef4775cd42cfd5155ed6017 # v5.5.3
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:

32
.github/workflows/sync-labels.yml vendored Normal file
View File

@@ -0,0 +1,32 @@
---
# yaml-language-server: https://json.schemastore.org/github-workflow.json
name: Sync labels
# yamllint disable-line rule:truthy
on:
push:
branches:
- main
paths:
- .github/workflows/sync-labels.yml
- .github/labels.yml
schedule:
- cron: "34 5 * * *"
workflow_call:
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions: read-all
jobs:
SyncLabels:
runs-on: ubuntu-latest
permissions:
issues: write
steps:
- uses: ivuorinen/actions/sync-labels@main

View File

@@ -1,39 +1,55 @@
---
# yaml-language-server: https://json.schemastore.org/github-workflow.json
name: Update submodules
on:
schedule:
# At 04:00 on Monday and Thursday.
- cron: "0 4 * * 1,4"
- cron: "0 4 * * 1"
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions: read-all
jobs:
update-submodules:
permissions:
contents: write
issues: write
pull-requests: write
runs-on: self-hosted
permissions: write-all
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
submodules: true
fetch-depth: 0
fetch-depth: 2
token: ${{secrets.GITHUB_TOKEN}}
- name: Config Git User
run: |
git config --global user.name "${{ github.actor }}"
git config --global user.email "${{ github.actor }}@users.noreply.github.com"
- name: Update submodules
run: |
if git commit -am"chore(git): Update submodules (automated)
$(git submodule --quiet foreach \
'tag="$(git describe --tags --abbrev=0 origin/HEAD)"
git submodule sync
git submodule foreach --quiet '
tag="$(git describe --tags --abbrev=0 origin/HEAD)"
if [ "$(git describe --tags)" != "$tag" ]; then
git checkout --quiet "$tag"
echo "$name" "$tag"
fi')"
then
echo "$name updated to $tag"
fi
'
if git diff --quiet; then
echo "No updates for submodules."
else
git add .
git commit -m "chore(git): Update submodules (automated)"
git show --raw
git push
fi

16
.gitignore vendored
View File

@@ -3,6 +3,8 @@
*.bak
*.log
*.socket
*.swp
*.old
*cache
.env
.idea
@@ -22,6 +24,10 @@ 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/vim/fzf
config/vim/plugged/*
config/zed/*
!config/zed/settings.json
config/zsh/.zcompdump
@@ -33,3 +39,13 @@ 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

30
.gitmodules vendored
View File

@@ -1,4 +1,4 @@
# vim: set expandtab:
# vim: noexpandtab filetype=gitconfig
[submodule "dotbot"]
path = tools/dotbot
url = https://github.com/anishathalye/dotbot.git
@@ -23,47 +23,63 @@
path = config/tmux/plugins/tmux-continuum
url = https://github.com/tmux-plugins/tmux-continuum
ignore = dirty
[submodule "tmux/tmux-sensible"]
path = config/tmux/plugins/tmux-sensible
url = https://github.com/tmux-plugins/tmux-sensible.git
ignore = dirty
[submodule "tmux/tmux-sessionist"]
path = config/tmux/plugins/tmux-sessionist
url = https://github.com/tmux-plugins/tmux-sessionist.git
ignore = dirty
[submodule "tmux/tmux-yank"]
path = config/tmux/plugins/tmux-yank
url = https://github.com/tmux-plugins/tmux-yank.git
ignore = dirty
[submodule "tmux/tmux-window-name"]
path = config/tmux/plugins/tmux-window-name
url = https://github.com/ivuorinen/tmux-window-name.git
ignore = dirty
[submodule "dotbot-pip"]
path = tools/dotbot-pip
url = https://github.com/sobolevn/dotbot-pip.git
ignore = dirty
[submodule "tmux/tmux-suspend"]
path = config/tmux/plugins/tmux-suspend
url = https://github.com/MunifTanjim/tmux-suspend.git
ignore = dirty
[submodule "tmux/tmux-mode-indicator"]
path = config/tmux/plugins/tmux-mode-indicator
url = https://github.com/MunifTanjim/tmux-mode-indicator.git
ignore = dirty
[submodule "tmux/tmux-current-pane-hostname"]
path = config/tmux/plugins/tmux-current-pane-hostname
url = https://github.com/soyuka/tmux-current-pane-hostname.git
ignore = dirty
[submodule "cheat-tldr"]
path = config/cheat/cheatsheets/tldr
url = https://github.com/ivuorinen/cheatsheet-tldr.git
ignore = dirty
[submodule "tmux/tmux-dark-notify"]
path = config/tmux/plugins/tmux-dark-notify
url = https://github.com/erikw/tmux-dark-notify.git
[submodule "asdf"]
path = local/bin/asdf
url = https://github.com/asdf-vm/asdf.git
ignore = dirty
[submodule "antidote"]
path = tools/antidote
url = https://github.com/mattmc3/antidote.git
shallow = true
[submodule "dotbot-asdf"]
path = tools/dotbot-asdf
url = https://github.com/sobolevn/dotbot-asdf
ignore = dirty
[submodule "tmux/tmux-resurrect"]
path = config/tmux/plugins/tmux-resurrect
url = https://github.com/tmux-plugins/tmux-resurrect.git

View File

@@ -1,7 +1,10 @@
**/__pycache__/**
.git/**
config/cheat/cheatsheets/community/**
config/tmux/plugins/**
node_modules
tools/antidote/**
tools/dotbot-brew/**
tools/dotbot-include/**
tools/dotbot/**
*.pyc

2
.nvmrc
View File

@@ -1 +1 @@
22.13.0
22.14.0

View File

@@ -23,13 +23,13 @@ repos:
args: [--autofix, --no-sort-keys]
- repo: https://github.com/igorshubovych/markdownlint-cli
rev: v0.43.0
rev: v0.44.0
hooks:
- id: markdownlint
args: [-c, .markdownlint.json, --fix]
- repo: https://github.com/adrienverge/yamllint
rev: v1.35.1
rev: v1.37.0
hooks:
- id: yamllint
@@ -39,17 +39,17 @@ repos:
- id: shellcheck
- repo: https://github.com/scop/pre-commit-shfmt
rev: v3.10.0-2
rev: v3.11.0-1
hooks:
- id: shfmt
- repo: https://github.com/rhysd/actionlint
rev: v1.7.6
rev: v1.7.7
hooks:
- id: actionlint
- repo: https://github.com/renovatebot/pre-commit-hooks
rev: 39.107.2
rev: 39.252.0
hooks:
- id: renovate-config-validator
@@ -57,3 +57,9 @@ repos:
rev: v2.0.2
hooks:
- id: stylua # or stylua-system / stylua-github
- repo: https://github.com/hugoh/pre-commit-fish.git
rev: v1.2
hooks:
- id: fish_syntax
- id: fish_indent

View File

@@ -1 +1 @@
3.13.1
3.13.3

View File

@@ -1,5 +1,7 @@
#!/usr/bin/env bash
git submodule sync --recursive
# dotbot and plugins
git submodule add --name dotbot \
-f https://github.com/anishathalye/dotbot.git tools/dotbot
@@ -9,16 +11,12 @@ git submodule add --name dotbot-include \
-f https://gitlab.com/gnfzdz/dotbot-include.git tools/dotbot-include
git submodule add --name dotbot-pip \
-f https://github.com/sobolevn/dotbot-pip.git tools/dotbot-pip
git submodule add --name dotbot-asdf \
-f https://github.com/sobolevn/dotbot-asdf tools/dotbot-asdf
# other repos
git submodule add --name cheat-community \
-f https://github.com/cheat/cheatsheets.git config/cheat/cheatsheets/community
git submodule add --name cheat-tldr \
-f https://github.com/ivuorinen/cheatsheet-tldr.git config/cheat/cheatsheets/tldr
git submodule add --name asdf \
-f https://github.com/asdf-vm/asdf.git local/bin/asdf
git submodule add --name antidote \
--depth 1 \
-f https://github.com/mattmc3/antidote.git tools/antidote
@@ -28,6 +26,8 @@ git submodule add --name tmux/tmux-continuum \
-f https://github.com/tmux-plugins/tmux-continuum config/tmux/plugins/tmux-continuum
git submodule add --name tmux/tmux-mode-indicator \
-f https://github.com/MunifTanjim/tmux-mode-indicator.git config/tmux/plugins/tmux-mode-indicator
git submodule add --name tmux/tmux-resurrect \
-f https://github.com/tmux-plugins/tmux-resurrect.git config/tmux/plugins/tmux-resurrect
git submodule add --name tmux/tmux-sensible \
-f https://github.com/tmux-plugins/tmux-sensible.git config/tmux/plugins/tmux-sensible
git submodule add --name tmux/tmux-sessionist \
@@ -46,17 +46,27 @@ git submodule add --name tmux/tmux-dark-notify \
# Takes submodules and sets them to ignore all changes
for MODULE in $(git config --file .gitmodules --get-regexp path | awk '{ print $2 }'); do
echo "Ignoring submodule changes for submodule.${MODULE}..."
git config "submodule.${MODULE}.ignore" all
git config "submodule.${MODULE}.ignore" "dirty"
done
# Mark certain repositories shallow
git config -f .gitmodules submodule.antidote.shallow true
# remove old submodules
[ -d "config/tmux/plugins/tpm" ] && rm -rf config/tmux/plugins/tpm
[ -d "config/tmux/plugins/tmux" ] && rm -rf config/tmux/plugins/tmux
[ -d "config/tmux/plugins/tmux-menus" ] && rm -rf config/tmux/plugins/tmux-menus
[ -d "config/tmux/plugins/tmux-resurrect" ] && rm -rf config/tmux/plugins/tmux-resurrect
[ -d "tools/dotbot-crontab" ] && rm -rf tools/dotbot-crontab
[ -d "tools/dotbot-snap" ] && rm -rf tools/dotbot-snap
[ -d "config/nvim-kickstart" ] && rm -rf config/nvim-kickstart
folders=(
"config/tmux/plugins/tpm"
"config/tmux/plugins/tmux"
"config/tmux/plugins/tmux-menus"
"tools/dotbot-crontab"
"tools/dotbot-snap"
"config/nvim-kickstart"
"local/bin/asdf"
"local/asdf"
"tools/dotbot-asdf"
)
for folder in "${folders[@]}"; do
[ -d "$folder" ] \
&& rm -rf "$folder" \
&& msgr run_done "Removed old submodule $folder"
done

View File

@@ -25,3 +25,6 @@ x-have antidot && {
PROMPT_DIRTRIM=3
PROMPT_COMMAND='PS1_CMD1=$(git branch --show-current 2>/dev/null)'
PS1='\[\e[95m\]\u\[\e[0m\]@\[\e[38;5;22;2m\]\h\[\e[0m\] \[\e[38;5;33m\]\w\[\e[0m\] \[\e[92;2m\]${PS1_CMD1}\n\[\e[39m\]➜\[\e[0m\] '
# Added by LM Studio CLI (lms)
export PATH="$PATH:$HOME/.lmstudio/bin"

View File

@@ -1,2 +1 @@
use node
use asdf

View File

@@ -23,7 +23,7 @@
"work": [
{
"key": "user.email",
"value": "ismo.vuorinen@vincit.fi"
"value": "ismo.vuorinen@svea.com"
},
{
"key": "user.name",
@@ -31,4 +31,4 @@
}
]
}
}
}

View File

@@ -1 +1 @@
lts/*
v22.14.0

View File

@@ -1,19 +0,0 @@
golang 1.23.4
rust 1.83.0
direnv 2.35.0
fd 10.2.0
1password-cli 2.30.3
age 1.2.1
dotenv-linter 3.3.0
editorconfig-checker 2.8.0
github-cli 2.64.0
hadolint 2.12.0
kubectl 1.32.0
pre-commit 4.0.1
ripgrep 14.1.1
shellcheck 0.10.0
shfmt 3.10.0
terragrunt 0.71.1
tf-summarize 0.3.14
yamllint 1.35.1
yq 4.44.6

View File

@@ -12,12 +12,16 @@ export PATH="$HOME/.local/bin:$DOTFILES/local/bin:$LOCAL_SHARE/nvim/mason/bin:$L
export SHARED_SCRIPTS_SOURCED=0
source "$DOTFILES/config/shared.sh"
source "${XDG_CONFIG_HOME:-$HOME/.config}/asdf-direnv/zshrc"
# zsh completions directory
[ -z "$ZSH_COMPLETIONS" ] && export ZSH_COMPLETIONS="$XDG_CONFIG_HOME/zsh/completion"
# Add zsh completions to FPATH, compinit will be called later
FPATH="$ZSH_COMPLETIONS:$FPATH"
ZSH_COMPDUMP="$XDG_CACHE_HOME/zsh/zcompdump-${SHORT_HOST}-${ZSH_VERSION}"
source "$DOTFILES/config/zsh/antidote.zsh"
# source "$DOTFILES/config/zsh/prompt.zsh"
# Function to source FZF configuration
source_fzf_config()
@@ -45,10 +49,6 @@ setup_tmux_window_name_plugin()
fi
}
if [[ -n $GHOSTTY_RESOURCES_DIR ]]; then
source "$GHOSTTY_RESOURCES_DIR"/shell-integration/zsh/ghostty-integration
fi
source_fzf_config
setup_tmux_window_name_plugin
x-have antidot && eval "$(antidot init)"
@@ -60,3 +60,6 @@ bashcompinit
# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
export P10K_CONFIG="$DOTFILES/config/zsh/p10k.zsh"
[[ ! -f "$P10K_CONFIG" ]] || source "$P10K_CONFIG"
# Added by LM Studio CLI (lms)
export PATH="$PATH:$HOME/.lmstudio/bin"

View File

@@ -43,16 +43,28 @@ automatically-unhide-macos-hidden-apps = true
if.app-name-regex-substring = 'settings' # All settings
run = ['layout floating']
[[on-window-detected]]
if.app-id = 'com.apple.systempreferences' # macOS System Preferences
run = ['layout floating']
[[on-window-detected]]
if.app-id = 'com.1password.1password' # 1Password
run = ['layout floating']
[[on-window-detected]]
if.app-id = 'org.ferdium.ferdium-app' # Ferdium, has WhatsApp etc.
run = ['layout floating']
[[on-window-detected]]
if.app-id = 'com.jetbrains.PhpStorm' # PhpStorm
run = ['layout floating']
[[on-window-detected]]
if.app-id = 'com.apple.finder' # Finder
run = ['layout floating']
[[on-window-detected]]
if.app-id = 'com.apple.Preview'
if.app-id = 'com.apple.Preview' # Preview
run = ['layout floating']
[[on-window-detected]]
@@ -91,6 +103,26 @@ run = ['layout floating']
if.app-id = 'com.tinyspeck.slackmacgap' # Slack
run = ['layout floating']
[[on-window-detected]]
if.app-id = 'md.obsidia' # Obsidian
run = ['layout floating']
[[on-window-detected]]
if.app-id = 'com.todoist.mac.Todoist' # Todoist
run = ['layout floating']
[[on-window-detected]]
if.app-id = 'com.apple.backup.launcher' # TimeMachine
run = ['layout floating']
[[on-window-detected]]
if.app-id = 'com.philipyoungg.session-setapp' # Session app (Setapp)
run = ['layout floating']
[[on-window-detected]]
if.app-id = 'com.microsoft.rdc.macos' # Remote Desktop
run = ['layout floating']
# Possible values: (qwerty|dvorak)
# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping
[key-mapping]
@@ -117,6 +149,9 @@ outer.left = 0
# Fallback value (if you omit the key): mode.main.binding = {}
[mode.main.binding]
cmd-h = [] # Disable "hide application"
cmd-alt-h = [] # Disable "hide others"
# All possible keys:
# - Letters. a, b, c, ..., z
# - Numbers. 0, 1, 2, ..., 9
@@ -154,10 +189,10 @@ alt-l = 'focus right'
# See: https://nikitabobko.github.io/AeroSpace/commands#workspace
alt-shift-1 = 'workspace 1' # Main
alt-shift-2 = 'workspace 2' # Media
ctrl-shift-1 = 'move-node-to-workspace 1'
ctrl-shift-2 = 'move-node-to-workspace 2'
ctrl-shift-1 = 'move-node-to-workspace 1' # Move node to Main
ctrl-shift-2 = 'move-node-to-workspace 2' # Move node to Media
alt-shift-tab = 'workspace-back-and-forth'
alt-shift-tab = 'workspace-back-and-forth' # Switch between workspaces
ctrl-shift-tab = 'move-workspace-to-monitor --wrap-around prev'
# See: https://nikitabobko.github.io/AeroSpace/commands#mode

View File

@@ -7,6 +7,8 @@ x-have eza && {
alias ls="eza -h -s=type --git --icons --group-directories-first"
}
alias vim='vim -u "$XDG_CONFIG_HOME/vim/vimrc"'
# Easier navigation: .., ..., ....
alias ..="cd .."
alias ...="cd ../.."

15
config/aqua/aqua.yaml Normal file
View File

@@ -0,0 +1,15 @@
---
# yaml-language-server: $schema=https://raw.githubusercontent.com/aquaproj/aqua/main/json-schema/aqua-yaml.json
# aqua - Declarative CLI Version Manager
# https://aquaproj.github.io/
# checksum:
# enabled: true
# require_checksum: true
# supported_envs:
# - all
registries:
- type: standard
ref: v4.346.0 # renovate: depName=aquaproj/aqua-registry
packages:
- name: cli/cli
version: 'v2.69.0'

View File

@@ -1,3 +0,0 @@
### Do not edit. This was autogenerated by 'asdf direnv setup' ###
export ASDF_DIRENV_BIN="$(asdf where direnv)/bin/direnv"
eval "$($ASDF_DIRENV_BIN hook zsh)"

View File

@@ -1,6 +1,8 @@
// These are golang packages I use,
// so they should be available with all versions
// Aqua is a package manager like asdf, or Brew
github.com/aquaproj/aqua/v2/cmd/aqua@latest
// Git Profile allows you to switch between user profiles in git repos
github.com/dotzero/git-profile@v1.4.0
// An extensible command line tool or library to format yaml files.

View File

@@ -14,14 +14,8 @@
# if DOTFILES is not set, set it to the default location
[ -z "$DOTFILES" ] && export DOTFILES="$HOME/.dotfiles"
# zsh completions directory
[ -z "$ZSH_COMPLETIONS" ] && export ZSH_COMPLETIONS="$XDG_CONFIG_HOME/zsh/completion"
export PATH="$XDG_BIN_HOME:$DOTFILES/local/bin:$XDG_DATA_HOME/bob/nvim-bin:$XDG_DATA_HOME/cargo/bin:/opt/homebrew/bin:/usr/local/bin:$PATH"
# Add zsh completions to FPATH, compinit will be called later
FPATH="$ZSH_COMPLETIONS:$FPATH"
if ! command -v msg &> /dev/null; then
# Function to print messages if VERBOSE is enabled
# $1 - message (string)
@@ -297,35 +291,6 @@ hash shopt 2> /dev/null && shopt -s checkwinsize
# shellcheck disable=SC2155
export SHORT_HOST=$(hostname -s)
# asdf
# https://github.com/asdf-vm/asdf
msg "Setting up asdf configuration"
export ASDF_DIR="${XDG_BIN_HOME}/asdf"
if [[ -d $ASDF_DIR ]]; then
[[ -d $ASDF_DIR/completions ]] && FPATH="$ASDF_DIR/completions:$FPATH"
[[ -d $ASDF_DIR/plugins ]] && FPATH="$ASDF_DIR/plugins:$FPATH"
export ASDF_CONFIG_FILE="${XDG_CONFIG_HOME}/asdf/asdfrc"
export ASDF_DATA_DIR="${ASDF_DIR}"
export ASDF_PLUGIN_MANAGER_PLUGIN_VERSIONS_FILENAME="${XDG_CONFIG_HOME}/asdf/plugin-versions"
export ASDF_LOG_FILE="${XDG_CACHE_HOME}/asdf/asdf.log"
export ASDF_FORCE_PREPEND=yes
## Default package files
export ASDF_CRATE_DEFAULT_PACKAGES_FILE="${XDG_CONFIG_HOME}/asdf/cargo-packages"
export ASDF_GEM_DEFAULT_PACKAGES_FILE="${XDG_CONFIG_HOME}/asdf/gem-packages"
export ASDF_GOLANG_DEFAULT_PACKAGES_FILE="${XDG_CONFIG_HOME}/asdf/golang-packages"
export ASDF_NPM_DEFAULT_PACKAGES_FILE="${XDG_CONFIG_HOME}/asdf/npm-packages"
export ASDF_PYTHON_DEFAULT_PACKAGES_FILE="${XDG_CONFIG_HOME}/asdf/python-packages"
## Plugin configuration
export ASDF_DIRENV_IGNORE_MISSING_PLUGINS=1
export ASDF_GOLANG_MOD_VERSION_ENABLED=true
export ASDF_NODEJS_LEGACY_FILE_DYNAMIC_STRATEGY="latest_available"
## Add asdf to path
export PATH="${ASDF_DIR}/bin:${PATH}"
source "$ASDF_DIR/asdf.sh"
fi
# Antidote configuration
# https://getantidote.github.io/
msg "Setting up Antidote configuration"
@@ -374,8 +339,6 @@ export HOMEBREW_NO_ENV_HINTS=true
export HOMEBREW_BUNDLE_MAS_SKIP=true
export HOMEBREW_BUNDLE_FILE="$XDG_CONFIG_HOME/homebrew/Brewfile"
x-have brew && {
# Add brew autocompletion to fpath
FPATH="$(brew --prefix)/share/zsh/site-functions:${FPATH}"
eval "$(brew shellenv)"
}
@@ -473,7 +436,7 @@ export TMUX_CONF_DIR="$XDG_CONFIG_HOME/tmux"
export TMUX_PLUGINS="$TMUX_CONF_DIR/plugins"
export TMUX_CONF="$TMUX_CONF_DIR/tmux.conf"
## These settings are for zsh-tmux
export ZSH_TMUX_AUTOSTART=false
export ZSH_TMUX_AUTOSTART=true
export ZSH_TMUX_CONFIG="$TMUX_CONF"
export ZSH_TMUX_UNICODE=true
export ZSH_TMUX_AUTOQUIT=false
@@ -493,13 +456,7 @@ export ZSHZ_DATA="$XDG_STATE_HOME/z"
export CHEAT_USE_FZF=true
export SQLITE_HISTORY="${XDG_CACHE_HOME}/sqlite_history"
X_EXPORTS_FILES=(
"$HOME/.config/exports-secret"
"$HOME/.config/exports-$(hostname)"
"$HOME/.config/exports-$(hostname)-secret"
)
for exportFile in "${X_EXPORTS_FILES[@]}"; do
# shellcheck source=$HOME/.config/exports-secret
[ -f "$exportFile" ] && source "$exportFile" && msg "Sourced $exportFile"
done
unset X_EXPORTS_FILES
[ -f "$XDG_CONFIG_HOME/exports-secret" ] && source "$XDG_CONFIG_HOME/exports-secret"
[ -f "$XDG_CONFIG_HOME/exports-local" ] && source "$XDG_CONFIG_HOME/exports-local"
[ -f "$XDG_CONFIG_HOME/exports-$(hostname)" ] && source "$XDG_CONFIG_HOME/exports-$(hostname)"
[ -f "$XDG_CONFIG_HOME/exports-$(hostname)-secret" ] && source "$XDG_CONFIG_HOME/exports-$(hostname)-secret"

108
config/fish/alias.fish Normal file
View File

@@ -0,0 +1,108 @@
# Set aliases for fish shell
alias vim='vim -u "$XDG_CONFIG_HOME/vim/vimrc"'
# eza aliases if eza is installed
if type -q eza >/dev/null
function eza_git -d "Use eza and its git options if in a git repo"
if git rev-parse --is-inside-work-tree &>/dev/null
eza --group-directories-first --icons=always --smart-group --git $argv
else
eza --group-directories-first --icons=always --smart-group $argv
end
end
function lsa --wraps='eza_git -al' --description 'eza -al'
eza_git -al $argv
end
function ls --wraps='eza_git' --description eza
eza_git $argv
end
function ll --wraps='eza_git -l' --description 'eza -l'
eza_git -l $argv
end
function l --wraps='eza_git' --description eza
eza_git $argv
end
end
# Edit fish alias file
function .a --wraps='nvim ~/.dotfiles/config/fish/alias.fish' --description 'edit alias.fish'
nvim ~/.dotfiles/config/fish/alias.fish $argv
end
# Go to the directory where my projects are stored
function .c --wraps='cd ~/Code' --description 'cd ~/Code'
cd ~/Code $argv
end
# Go to the directory where the dotfiles are stored
function .d --wraps='cd ~/.dotfiles' --description 'cd ~/.dotfiles'
cd ~/.dotfiles $argv
end
# Go to the directory where my work codes are stored
function .s --wraps='cd ~/Code/s' --description 'cd ~/Code/s'
cd ~/Code/s $argv
end
# Go to the directory where my personal codes are stored
function .p --wraps='cd ~/Code/ivuorinen' --description 'cd ~/Code/ivuorinen'
cd ~/Code/ivuorinen $argv
end
# shortcut to commit with a message
function commit --wraps='git commit -a -m "chore: automated commit"' --description 'commit shortcut'
set -l commitMessage $argv
git add .
if test -z "$commitMessage"
if type -q aicommits
aicommits --type conventional
else
git commit -a -m "chore: automated commit"
end
return
end
git commit -a -m "$commitMessage"
end
function configure_tide --description 'Configure tide with the lean style and my preferences'
tide configure \
--auto \
--style=Lean \
--prompt_colors='True color' \
--show_time=No \
--lean_prompt_height='Two lines' \
--prompt_connection=Disconnected \
--prompt_spacing=Sparse \
--icons='Many icons' \
--transient=Yes
end
# Abbreviations for git
abbr --add gau git add -u
abbr --add gaa git add -A
abbr --add gcv git commit -v
# Abbreviations for composer
abbr --add c composer
abbr --add cu composer update
abbr --add ci composer install
# Abbreviations for php artisan
abbr --add .pa php artisan
abbr --add .paf php artisan fresh
abbr --add .pam php artisan migrate
abbr --add .pams php artisan migrate --seed
abbr --add .pat php artisan test
# Abbreviations for npm
abbr --add .n npm
abbr --add .nt npm test --if-present
abbr --add .nb npm run build --if-present
abbr --add .ns npm run start --if-present

View File

@@ -0,0 +1,71 @@
# @halostatue/fish-macos/completions/app.fish:v7.0.0
complete --command app --erase
complete --command app --arguments bundleid \
--exclusive --condition __fish_use_subcommand \
--description 'Show bundle IDs for macOS apps'
complete --command app --arguments find \
--exclusive --condition __fish_use_subcommand \
--description 'Find macOS apps by pattern'
complete --command app --arguments frontmost \
--exclusive --condition __fish_use_subcommand \
--description 'Shows the front-most application'
complete --command app --arguments icon \
--exclusive --condition __fish_use_subcommand \
--description 'Extracts a MacOS app icon as a png file'
complete --command app --arguments quit \
--exclusive --condition __fish_use_subcommand \
--description 'Quit macOS apps by pattern'
for subcommand in bundleid find
complete --command app --condition '__fish_seen_subcommand_from '$subcommand \
--short-option x --long-option exact --description 'Exact matches only'
complete --command app --condition '__fish_seen_subcommand_from '$subcommand \
--short-option a --long-option all --description 'Show all matches'
complete --command app --condition '__fish_seen_subcommand_from '$subcommand \
--short-option q --long-option quiet --description 'Quiet (show no output)'
complete --command app --condition '__fish_seen_subcommand_from '$subcommand \
--short-option h --long-option help --description 'Help for app '$subcommand
end
complete --command app --condition '__fish_seen_subcommand_from 'bundleid \
--short-option s --long-option short --description 'Show only the bundle ID'
complete --command app --condition '__fish_seen_subcommand_from 'frontmost \
--short-option b --long-option bundle-id --description 'Shows the app bundle ID'
complete --command app --condition '__fish_seen_subcommand_from 'frontmost \
--short-option p --long-option path --description 'Shows the app path'
complete --command app --condition '__fish_seen_subcommand_from 'frontmost \
--short-option n --long-option name --description 'Shows the app name'
complete --command app --condition '__fish_seen_subcommand_from 'frontmost \
--short-option P --long-option pid --description 'Shows the PID of the app'
complete --command app --condition '__fish_seen_subcommand_from 'frontmost \
--short-option a --long-option all --description 'Shows all details'
complete --command app --condition '__fish_seen_subcommand_from 'frontmost \
--short-option h --long-option help --description 'Help for app 'frontmost
complete --command app --condition '__fish_seen_subcommand_from 'icon \
--short-option x --long-option exact --description 'Exact matches only'
complete --command app --condition '__fish_seen_subcommand_from 'icon \
--short-option o --long-option output --description 'Extracts to this file or directory' \
--force-files
complete --command app --condition '__fish_seen_subcommand_from 'icon \
--short-option w --long-option width --description 'Uses this pixel width' \
--no-files
complete --command app --condition '__fish_seen_subcommand_from 'icon \
--short-option h --long-option help --description 'Help for app 'icon
complete --command app --condition '__fish_seen_subcommand_from 'quit \
--short-option x --long-option exact --description 'Exact matches only'
complete --command app --condition '__fish_seen_subcommand_from 'quit \
--short-option r --long-option restart --description 'Restart after quit'
complete --command app --condition '__fish_seen_subcommand_from 'quit \
--short-option h --long-option help --description 'Help for app 'quit

View File

@@ -0,0 +1,125 @@
# aqua fish shell completion
function __fish_aqua_no_subcommand --description 'Test if there has been any subcommand yet'
for i in (commandline -opc)
if contains -- $i init install i generate g update-aqua upa update-checksum upc update up completion bash zsh fish help h help h which info remove rm vacuum cp policy allow deny init init-policy exec list generate-registry gr version root-dir help h
return 1
end
end
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_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 -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 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 -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 -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'
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l g -d 'Insert packages in a global configuration file'
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l detail -s d -d 'Output additional fields such as description and link'
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l o -r -d 'inserted file'
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 -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 -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 -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'
complete -c aqua -n '__fish_seen_subcommand_from update up' -f -l only-package -s p -d 'Update only packages'
complete -c aqua -n '__fish_seen_subcommand_from update up' -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 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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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'
complete -c aqua -n '__fish_seen_subcommand_from generate-registry gr' -f -l limit -s l -r -d 'the maximum number of versions'
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 -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 -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'

View File

@@ -0,0 +1,235 @@
# fish completion for docker -*- shell-script -*-
function __docker_debug
set -l file "$BASH_COMP_DEBUG_FILE"
if test -n "$file"
echo "$argv" >> $file
end
end
function __docker_perform_completion
__docker_debug "Starting __docker_perform_completion"
# Extract all args except the last one
set -l args (commandline -opc)
# Extract the last arg and escape it in case it is a space
set -l lastArg (string escape -- (commandline -ct))
__docker_debug "args: $args"
__docker_debug "last arg: $lastArg"
# Disable ActiveHelp which is not supported for fish shell
set -l requestComp "DOCKER_ACTIVE_HELP=0 $args[1] __complete $args[2..-1] $lastArg"
__docker_debug "Calling $requestComp"
set -l results (eval $requestComp 2> /dev/null)
# Some programs may output extra empty lines after the directive.
# Let's ignore them or else it will break completion.
# Ref: https://github.com/spf13/cobra/issues/1279
for line in $results[-1..1]
if test (string trim -- $line) = ""
# Found an empty line, remove it
set results $results[1..-2]
else
# Found non-empty line, we have our proper output
break
end
end
set -l comps $results[1..-2]
set -l directiveLine $results[-1]
# For Fish, when completing a flag with an = (e.g., <program> -n=<TAB>)
# completions must be prefixed with the flag
set -l flagPrefix (string match -r -- '-.*=' "$lastArg")
__docker_debug "Comps: $comps"
__docker_debug "DirectiveLine: $directiveLine"
__docker_debug "flagPrefix: $flagPrefix"
for comp in $comps
printf "%s%s\n" "$flagPrefix" "$comp"
end
printf "%s\n" "$directiveLine"
end
# this function limits calls to __docker_perform_completion, by caching the result behind $__docker_perform_completion_once_result
function __docker_perform_completion_once
__docker_debug "Starting __docker_perform_completion_once"
if test -n "$__docker_perform_completion_once_result"
__docker_debug "Seems like a valid result already exists, skipping __docker_perform_completion"
return 0
end
set --global __docker_perform_completion_once_result (__docker_perform_completion)
if test -z "$__docker_perform_completion_once_result"
__docker_debug "No completions, probably due to a failure"
return 1
end
__docker_debug "Performed completions and set __docker_perform_completion_once_result"
return 0
end
# this function is used to clear the $__docker_perform_completion_once_result variable after completions are run
function __docker_clear_perform_completion_once_result
__docker_debug ""
__docker_debug "========= clearing previously set __docker_perform_completion_once_result variable =========="
set --erase __docker_perform_completion_once_result
__docker_debug "Successfully erased the variable __docker_perform_completion_once_result"
end
function __docker_requires_order_preservation
__docker_debug ""
__docker_debug "========= checking if order preservation is required =========="
__docker_perform_completion_once
if test -z "$__docker_perform_completion_once_result"
__docker_debug "Error determining if order preservation is required"
return 1
end
set -l directive (string sub --start 2 $__docker_perform_completion_once_result[-1])
__docker_debug "Directive is: $directive"
set -l shellCompDirectiveKeepOrder 32
set -l keeporder (math (math --scale 0 $directive / $shellCompDirectiveKeepOrder) % 2)
__docker_debug "Keeporder is: $keeporder"
if test $keeporder -ne 0
__docker_debug "This does require order preservation"
return 0
end
__docker_debug "This doesn't require 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
function __docker_prepare_completions
__docker_debug ""
__docker_debug "========= starting completion logic =========="
# Start fresh
set --erase __docker_comp_results
__docker_perform_completion_once
__docker_debug "Completion results: $__docker_perform_completion_once_result"
if test -z "$__docker_perform_completion_once_result"
__docker_debug "No completion, probably due to a failure"
# Might as well do file completion, in case it helps
return 1
end
set -l directive (string sub --start 2 $__docker_perform_completion_once_result[-1])
set --global __docker_comp_results $__docker_perform_completion_once_result[1..-2]
__docker_debug "Completions are: $__docker_comp_results"
__docker_debug "Directive is: $directive"
set -l shellCompDirectiveError 1
set -l shellCompDirectiveNoSpace 2
set -l shellCompDirectiveNoFileComp 4
set -l shellCompDirectiveFilterFileExt 8
set -l shellCompDirectiveFilterDirs 16
if test -z "$directive"
set directive 0
end
set -l compErr (math (math --scale 0 $directive / $shellCompDirectiveError) % 2)
if test $compErr -eq 1
__docker_debug "Received error directive: aborting."
# Might as well do file completion, in case it helps
return 1
end
set -l filefilter (math (math --scale 0 $directive / $shellCompDirectiveFilterFileExt) % 2)
set -l dirfilter (math (math --scale 0 $directive / $shellCompDirectiveFilterDirs) % 2)
if test $filefilter -eq 1; or test $dirfilter -eq 1
__docker_debug "File extension filtering or directory filtering not supported"
# Do full file completion instead
return 1
end
set -l nospace (math (math --scale 0 $directive / $shellCompDirectiveNoSpace) % 2)
set -l nofiles (math (math --scale 0 $directive / $shellCompDirectiveNoFileComp) % 2)
__docker_debug "nospace: $nospace, nofiles: $nofiles"
# If we want to prevent a space, or if file completion is NOT disabled,
# we need to count the number of valid completions.
# To do so, we will filter on prefix as the completions we have received
# may not already be filtered so as to allow fish to match on different
# criteria than the prefix.
if test $nospace -ne 0; or test $nofiles -eq 0
set -l prefix (commandline -t | string escape --style=regex)
__docker_debug "prefix: $prefix"
set -l completions (string match -r -- "^$prefix.*" $__docker_comp_results)
set --global __docker_comp_results $completions
__docker_debug "Filtered completions are: $__docker_comp_results"
# Important not to quote the variable for count to work
set -l numComps (count $__docker_comp_results)
__docker_debug "numComps: $numComps"
if test $numComps -eq 1; and test $nospace -ne 0
# We must first split on \t to get rid of the descriptions to be
# able to check what the actual completion will be.
# We don't need descriptions anyway since there is only a single
# real completion which the shell will expand immediately.
set -l split (string split --max 1 \t $__docker_comp_results[1])
# Fish won't add a space if the completion ends with any
# of the following characters: @=/:.,
set -l lastChar (string sub -s -1 -- $split)
if not string match -r -q "[@=/:.,]" -- "$lastChar"
# In other cases, to support the "nospace" directive we trick the shell
# by outputting an extra, longer completion.
__docker_debug "Adding second completion to perform nospace directive"
set --global __docker_comp_results $split[1] $split[1].
__docker_debug "Completions are now: $__docker_comp_results"
end
end
if test $numComps -eq 0; and test $nofiles -eq 0
# To be consistent with bash and zsh, we only trigger file
# completion when there are no other completions
__docker_debug "Requesting file completion"
return 1
end
end
return 0
end
# Since Fish completions are only loaded once the user triggers them, we trigger them ourselves
# 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"
# 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
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'
# 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
complete -c docker -n 'not __docker_requires_order_preservation && __docker_prepare_completions' -f -a '$__docker_comp_results'
# otherwise we use the -k flag
complete -k -c docker -n '__docker_requires_order_preservation && __docker_prepare_completions' -f -a '$__docker_comp_results'

View File

@@ -0,0 +1,70 @@
# @halostatue/fish-macos/completions/finder.fish:v7.0.0
complete --command finder --erase
complete --command finder --arguments track \
--exclusive --condition __fish_use_subcommand \
--description 'Enables Finder PWD tracking'
complete --command finder --arguments untrack \
--exclusive --condition __fish_use_subcommand \
--description 'Disables Finder PWD tracking'
complete --command finder --arguments pwd \
--exclusive --condition __fish_use_subcommand \
--description 'Prints the path of the Finder window'
complete --command finder --arguments cd \
--exclusive --condition __fish_use_subcommand \
--description 'Changes to the path of the Finder window'
complete --command finder --arguments pushd \
--exclusive --condition __fish_use_subcommand \
--description 'Pushes to the path of the Finder window'
complete --command finder --arguments update \
--exclusive --condition __fish_use_subcommand \
--description 'Updates the Finder to PWD'
complete --command finder --arguments list \
--exclusive --condition __fish_use_subcommand \
--description 'Sets Finder to list view with PWD'
complete --command finder --arguments icon \
--exclusive --condition __fish_use_subcommand \
--description 'Sets Finder to icon view with PWD'
complete --command finder --arguments column \
--exclusive --condition __fish_use_subcommand \
--description 'Sets Finder to column view with PWD'
complete --command finder --arguments hidden \
--exclusive --condition __fish_use_subcommand \
--description 'Shows or hides `hidden` files'
complete --command finder --arguments desktop-icons \
--exclusive --condition __fish_use_subcommand \
--description 'Shows or hides desktop icons'
complete --command finder --arguments clean \
--exclusive --condition __fish_use_subcommand \
--description 'Cleans .DS_Store files'
complete --command finder --arguments quarantine \
--exclusive --condition __fish_use_subcommand \
--description 'Works with file quarantine data'
complete --command finder --arguments selected \
--exclusive --condition __fish_use_subcommand \
--description 'Print Finder selected files'
for subcommand in cd clean column desktop-icons hidden icon list pushd pwd quarantine selected track untrack update
complete --command finder --condition '__fish_seen_subcommand_from '$subcommand \
--short-option h --long-option help --description 'Help for finder '$subcommand
end
for subcommand in hidden desktop-icons
complete --command finder --condition '__fish_seen_subcommand_from '$subcommand \
--arguments off --description 'Turns '$subcommand' off'
complete --command finder --condition '__fish_seen_subcommand_from '$subcommand \
--arguments on --description 'Turns '$subcommand' on'
complete --command finder --condition '__fish_seen_subcommand_from '$subcommand \
--arguments toggle --description 'Toggles '$subcommand
complete --command finder --condition '__fish_seen_subcommand_from '$subcommand \
--arguments status --description 'Shows the status of '$subcommand
end
complete --command finder --condition '__fish_seen_subcommand_from 'quarantine \
--arguments show --description 'Shows quarantine events'
complete --command finder --condition '__fish_seen_subcommand_from 'quarantine \
--arguments clear --description 'Clears all quarantine events'
complete --command finder --condition '__fish_seen_subcommand_from 'quarantine \
--arguments clean --description 'Removes 'quarantine' attributes from files' \
--require-parameter --force-files

View File

@@ -0,0 +1,7 @@
complete --command fisher --exclusive --long help --description "Print help"
complete --command fisher --exclusive --long version --description "Print version"
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments install --description "Install plugins"
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments update --description "Update installed plugins"
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments remove --description "Remove installed plugins"
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments list --description "List installed plugins matching regex"
complete --command fisher --exclusive --condition "__fish_seen_subcommand_from update remove" --arguments "(fisher list)"

View File

@@ -0,0 +1,119 @@
# @halostatue/fish-macos/completions/mac.fish:v7.0.0
complete --command mac --erase
complete --command mac --arguments airdrop \
--exclusive --condition __fish_use_subcommand \
--description 'Changes AirDrop settings'
complete --command mac --arguments airport \
--exclusive --condition __fish_use_subcommand \
--description 'Work with AirPort (WiFi) settings'
complete --command mac --arguments brightness \
--exclusive --condition __fish_use_subcommand \
--description 'Adjust the screen brightness level'
complete --command mac --arguments flushdns \
--exclusive --condition __fish_use_subcommand \
--description 'Flushes DNS'
complete --command mac --arguments font-smoothing \
--exclusive --condition __fish_use_subcommand \
--description 'Manages font smoothing settings'
complete --command mac --arguments lsclean \
--exclusive --condition __fish_use_subcommand \
--description 'Cleans LaunchServices to remove duplicate Open with... entries'
complete --command mac --arguments mail \
--exclusive --condition __fish_use_subcommand \
--description 'Manage various operations of Mail.app'
complete --command mac --arguments proxy-icon \
--exclusive --condition __fish_use_subcommand \
--description 'Manage proxy icon appearance delay'
complete --command mac --arguments transparency \
--exclusive --condition __fish_use_subcommand \
--description 'Manage UI transparency'
complete --command mac --arguments vol \
--exclusive --condition __fish_use_subcommand \
--description 'Changes Mac volume; accepts 0100 volume percentage'
for subcommand in airdrop airport brightness flushdns font-smoothing lsclean mail proxy-icon transparency version vol
complete --command mac --condition '__fish_seen_subcommand_from '$subcommand \
--short-option h --long-option help --description 'Help for mac '$subcommand
end
complete --command mac --condition '__fish_seen_subcommand_from brightness' \
--arguments up --description 'Increases screen brightness'
complete --command mac --condition '__fish_seen_subcommand_from brightness' \
--arguments down --description 'Decreases screen brightness'
for subcommand in airdrop proxy-icon transparency
complete --command mac --condition '__fish_seen_subcommand_from '$subcommand \
--arguments on --description 'Enables '$subcommand
complete --command mac --condition '__fish_seen_subcommand_from '$subcommand \
--arguments off --description 'Disables '$subcommand
complete --command mac --condition '__fish_seen_subcommand_from '$subcommand \
--arguments toggle --description 'Toggles '$subcommand
complete --command mac --condition '__fish_seen_subcommand_from '$subcommand \
--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 \
--arguments ssid --description 'Shows the SSID'
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 \
--arguments off --description 'Disables font smoothing; app IDs can be provided to limit control'
complete --command mac --condition '__fish_seen_subcommand_from 'mail \
--arguments vacuum --description 'Vacuums the Mail.app envelope index'
complete --command mac --condition '__fish_seen_subcommand_from 'mail \
--arguments attachments --description 'Sets Mail.app attachment handling' \
--require-parameter --no-files
complete --command mac --condition '__fish_seen_subcommand_from 'attachments \
--arguments inline \
--description 'Sets Mail.app attachment handling so that they are inline to the message'
complete --command mac --condition '__fish_seen_subcommand_from 'attachments \
--arguments icon \
--description 'Sets Mail.app attachment handling so that they are icons on the message'
complete --command mac --condition '__fish_seen_subcommand_from 'version \
--short-option s --long-option simple --description 'Simple mac version name'
complete --command mac --condition '__fish_seen_subcommand_from 'version \
--short-option l --long-option lowercase --description 'Lowercase mac version name'
complete --command mac --condition '__fish_seen_subcommand_from 'version \
--short-option f --long-option version --description 'Full version number'
complete --command mac --condition '__fish_seen_subcommand_from 'version \
--short-option c --long-option comparable --description 'Simplified comparable version value'
complete --command mac --condition '__fish_seen_subcommand_from 'version \
--short-option h --long-option help --description 'Help for mac 'version
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
--arguments mute --description 'Mutes volume'
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
--arguments unmute --description 'Unmutes volume'
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
--arguments show --description 'Shows the current volume'
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
--arguments 10 --description 'Sets the volume to 10%'
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
--arguments 20 --description 'Sets the volume to 20%'
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
--arguments 30 --description 'Sets the volume to 30%'
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
--arguments 40 --description 'Sets the volume to 40%'
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
--arguments 50 --description 'Sets the volume to 50%'
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
--arguments 60 --description 'Sets the volume to 60%'
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
--arguments 70 --description 'Sets the volume to 70%'
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
--arguments 80 --description 'Sets the volume to 80%'
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
--arguments 90 --description 'Sets the volume to 90%'
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
--arguments 100 --description 'Sets the volume to 100%'

View File

@@ -0,0 +1,8 @@
# @halostatue/fish-macos/completions/manp.fish:v7.0.0
complete --command manp --erase
complete --command manp --wraps man
complete --command manp --exclusive --condition __fish_no_arguments \
--short-option h --long-option help --description 'Show help for manp'
complete --command manp --exclusive --condition __fish_no_arguments \
--long-option clear-cache --description 'Clear the man page PDF cache'

View File

@@ -0,0 +1,4 @@
# @halostatue/fish-macos/completions/ql.fish:v7.0.0
complete --erase --command ql
complete --command ql --wraps qlmanage

View File

@@ -0,0 +1,13 @@
complete tide --no-files
set -l subcommands bug-report configure reload
complete tide -x -n __fish_use_subcommand -a bug-report -d "Print info for use in bug reports"
complete tide -x -n __fish_use_subcommand -a configure -d "Run the configuration wizard"
complete tide -x -n __fish_use_subcommand -a reload -d "Reload tide configuration"
complete tide -x -n "not __fish_seen_subcommand_from $subcommands" -s h -l help -d "Print help message"
complete tide -x -n "not __fish_seen_subcommand_from $subcommands" -s v -l version -d "Print tide version"
complete tide -x -n '__fish_seen_subcommand_from bug-report' -l clean -d "Run clean Fish instance and install Tide"
complete tide -x -n '__fish_seen_subcommand_from bug-report' -l verbose -d "Print full Tide configuration"

View File

@@ -0,0 +1,44 @@
function _tide_init_install --on-event _tide_init_install
set -U VIRTUAL_ENV_DISABLE_PROMPT true
source (functions --details _tide_sub_configure)
_load_config lean
_tide_finish
if status is-interactive
tide bug-report --check || sleep 4
if contains ilancosman/tide (string lower $_fisher_plugins)
set_color bryellow
echo "ilancosman/tide is a development branch. Please install from a release tag:"
_tide_fish_colorize "fisher install ilancosman/tide@v6"
sleep 3
end
switch (read --prompt-str="Configure tide prompt? [Y/n] " | string lower)
case y ye yes ''
tide configure
case '*'
echo -s \n 'Run ' (_tide_fish_colorize "tide configure") ' to customize your prompt.'
end
end
end
function _tide_init_update --on-event _tide_init_update
# Warn users who install from main branch
if contains ilancosman/tide (string lower $_fisher_plugins)
set_color bryellow
echo "ilancosman/tide is a development branch. Please install from a release tag:"
_tide_fish_colorize "fisher install ilancosman/tide@v6"
sleep 3
end
# Set (disable) the new jobs variable
set -q tide_jobs_number_threshold || set -U tide_jobs_number_threshold 1000
end
function _tide_init_uninstall --on-event _tide_init_uninstall
set -e VIRTUAL_ENV_DISABLE_PROMPT
set -e (set -U --names | string match --entire -r '^_?tide')
functions --erase (functions --all | string match --entire -r '^_?tide')
end

View File

@@ -0,0 +1,7 @@
if test -z "$SSH_ENV"
set -xg SSH_ENV $HOME/.ssh/environment
end
if not __ssh_agent_is_started
__ssh_agent_start
end

View File

@@ -0,0 +1,62 @@
# @halostatue/fish-brew/conf.d/halostatue_fish_brew.fish:v3.2.1
# Find Homebrew via a known prefix. If the `__homebrew_prefix` universal
# variable is set, that will be set as the first test prefix.
if not command --query brew
set --local prefixes $HOME/.brew $HOME/.linuxbrew /opt/homebrew /usr/local
set --query --universal __homebrew_prefix
and set --prepend prefixes $__homebrew_prefix
for prefix in $prefixes
test -x $prefix/bin/brew
or continue
set --prepend PATH $prefix/bin
break
end
end
if command --query brew
set --query --universal __brew_prefix
and set --erase --universal __brew_prefix
set --local __brew_prefix (brew --prefix)
if ! contains -- {$__brew_prefix}/bin $fish_user_paths
fish_add_path --append --move --path \
{$__brew_prefix}/bin \
/usr/local/bin \
/usr/bin \
/bin \
{$__brew_prefix}/sbin \
/usr/local/sbin \
/usr/sbin \
/sbin
end
if test -s $HOME/.config/brew/config.fish
if status is-interactive
set --local deprecated 0
if set --query $__halostatue_fish_brew_config_deprecated
set deprecated $__halostatue_fish_brew_config_deprecated
end
if test $deprecated -le 0
echo >&2 "Sourcing ~/.config/brew/config.fish is deprecated."
echo >&2 "See https://docs.brew.sh/Manpage#environment for a better alternative."
set --universal $__halostatue_fish_brew_config_deprecated 10
else
set --universal $__halostatue_fish_brew_config_deprecated (math $deprecated - 1)
end
end
source $HOME/.config/brew/config.fish
end
end
function _halostatue_fish_brew_uninstall -e halostatue_fish_brew_uninstall
set --universal --erase __brew_prefix __halostatue_fish_brew_config_deprecated
functions --erase has_cask has_keg (status function)
end

View File

@@ -0,0 +1,14 @@
# @halostatue/fish-macos/conf.d/halostatue_fish_macos.fish:v7.0.0
function _halostatue_fish_macos_uninstall -e halostatue_fish_macos_uninstall
set --function functions app finder has_app mac manp note ql remind
for cmd in $functions
complete --erase --command $cmd
end
set --append functions (status function) \
(functions --all | string match --entire --regex '^__macos_app_|^__macos_finder_|^__macos_mac_')
functions --erase $functions
end

View File

@@ -0,0 +1,22 @@
function ___paths_plugin_set_colors
if not set -q ___paths_plugin_colors
set -Ux ___paths_plugin_colors 27e6ff 29e0ff 5cd8ff 77d0ff 8ac8ff 9cbfff afb5ff c5a7ff d99bfe ea8feb f684d5 fe7abd ff73a3 ff708a fa7070 ff708a ff73a3 fe7abd f684d5 ea8feb d99bfe c5a7ff afb5ff 9cbfff 8ac8ff 77d0ff 5cd8ff 29e0ff
end
return 0
end
function _paths_uninstall --on-event paths_uninstall
for i in ___paths_plugin_wrap_color ___paths_plugin_output ___paths_plugin_handle_found_item ___paths_plugin_handle_source ___paths_plugin_cycle_color
functions -e $i
end
set -e ___paths_plugin_colors
set -e ___paths_plugin_current_color
end
function _paths_install --on-event _paths_install
___paths_plugin_set_colors
end
function _paths_update --on-event paths_update
___paths_plugin_set_colors
end

63
config/fish/conf.d/z.fish Normal file
View File

@@ -0,0 +1,63 @@
if test -z "$Z_DATA"
if test -z "$XDG_DATA_HOME"
set -U Z_DATA_DIR "$HOME/.local/share/z"
else
set -U Z_DATA_DIR "$XDG_DATA_HOME/z"
end
set -U Z_DATA "$Z_DATA_DIR/data"
end
if test ! -e "$Z_DATA"
if test ! -e "$Z_DATA_DIR"
mkdir -p -m 700 "$Z_DATA_DIR"
end
touch "$Z_DATA"
end
if test -z "$Z_CMD"
set -U Z_CMD z
end
set -U ZO_CMD "$Z_CMD"o
if test ! -z $Z_CMD
function $Z_CMD -d "jump around"
__z $argv
end
end
if test ! -z $ZO_CMD
function $ZO_CMD -d "open target dir"
__z -d $argv
end
end
if not set -q Z_EXCLUDE
set -U Z_EXCLUDE "^$HOME\$"
else if contains $HOME $Z_EXCLUDE
# Workaround: migrate old default values to a regex (see #90).
set Z_EXCLUDE (string replace -r -- "^$HOME\$" '^'$HOME'$$' $Z_EXCLUDE)
end
# Setup completions once first
__z_complete
function __z_on_variable_pwd --on-variable PWD
__z_add
end
function __z_uninstall --on-event z_uninstall
functions -e __z_on_variable_pwd
functions -e $Z_CMD
functions -e $ZO_CMD
if test ! -z "$Z_DATA"
printf "To completely erase z's data, remove:\n" >/dev/stderr
printf "%s\n" "$Z_DATA" >/dev/stderr
end
set -e Z_CMD
set -e ZO_CMD
set -e Z_DATA
set -e Z_EXCLUDE
end

39
config/fish/config.fish Normal file
View File

@@ -0,0 +1,39 @@
# ╭──────────────────────────────────────────────────────────╮
# │ fish/config.fish
# ╰──────────────────────────────────────────────────────────╯
test -e "$HOME/.config/fish/alias.fish" &&
source "$HOME/.config/fish/alias.fish"
test -e "$HOME/.config/fish/exports.fish" &&
source "$HOME/.config/fish/exports.fish"
test -e "$HOME/.config/fish/exports.secret.fish" &&
source "$HOME/.config/fish/exports.secret.fish"
test -e "$HOME/.dotfiles/config/fzf/key-bindings.fish" &&
source "$HOME/.dotfiles/config/fzf/key-bindings.fish"
if status is-interactive
# Commands to run in interactive shell
# 1Password plugins if op command is available
type -q op; and test -e "$HOME/.config/op/plugins.sh" &&
source "$HOME/.config/op/plugins.sh"
# version manager initializers
type -q rbenv; and source (rbenv init -|psub)
type -q pyenv; and source (pyenv init -|psub)
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
# Start tmux if not already running and not in SSH
open-tmux # defined in functions/open-tmux.fish
end
# Added by LM Studio CLI (lms)
set -gx PATH $PATH $HOME/.lmstudio/bin
# vim: ft=fish ts=4 sw=4 et:

194
config/fish/exports.fish Normal file
View File

@@ -0,0 +1,194 @@
#!/usr/bin/env fish
# XDG Base Directory Specification
set -q XDG_CONFIG_HOME; or set -x XDG_CONFIG_HOME "$HOME/.config"
set -q XDG_DATA_HOME; or set -x XDG_DATA_HOME "$HOME/.local/share"
set -q XDG_CACHE_HOME; or set -x XDG_CACHE_HOME "$HOME/.cache"
set -q XDG_STATE_HOME; or set -x XDG_STATE_HOME "$HOME/.local/state"
set -q XDG_BIN_HOME; or set -x XDG_BIN_HOME "$HOME/.local/bin"
set -q XDG_RUNTIME_DIR; or set -x XDG_RUNTIME_DIR "$HOME/.local/run"
# Dotfiles directory
set -q DOTFILES; or set -x DOTFILES "$HOME/.dotfiles"
# Editor settings
set -q EDITOR; or set -x EDITOR nvim
set -q VISUAL; or set -x VISUAL code
set -q HOSTNAME; or set -x HOSTNAME (hostname -s)
# Add local bin to path
fish_add_path "$XDG_BIN_HOME"
# Add cargo bin to path
fish_add_path "$XDG_SHARE_HOME/cargo/bin"
# Set Aqua configuration
set -q AQUA_BIN; or set -gx AQUA_BIN "$XDG_DATA_HOME/aquaproj-aqua/bin"
set -q AQUA_CONFIG; or set -gx AQUA_CONFIG "$XDG_CONFIG_HOME/aqua/aqua.yaml"
set -gx PATH $AQUA_BIN $PATH
# NPM/NVM configuration
set -q NVM_DIR; or set -x NVM_DIR "$XDG_DATA_HOME/nvm"
fish_add_path "$NVM_DIR/bin"
fish_add_path "$XDG_CONFIG_HOME/nvm"
# Yarn configuration
set -q YARN_GLOBAL_FOLDER; or set -x YARN_GLOBAL_FOLDER "$XDG_DATA_HOME/yarn"
fish_add_path "$YARN_GLOBAL_FOLDER/bin"
# Mason configuration
set -q MASON_HOME; or set -x MASON_HOME "$XDG_DATA_HOME/nvim/mason"
fish_add_path "$MASON_HOME/bin"
# Set Neovim environment variables
test -z "$NVIM_STATE" && set -x NVIM_STATE "$XDG_STATE_HOME/nvim"
test -z "$NVIM_CONFIG_HOME" && set -x NVIM_CONFIG_HOME "$XDG_CONFIG_HOME/nvim"
test -z "$NVIM_DATA_HOME" && set -x NVIM_DATA_HOME "$XDG_DATA_HOME/nvim"
test -z "$NVIM_CACHE_HOME" && set -x NVIM_CACHE_HOME "$XDG_CACHE_HOME/nvim"
test -z "$NVIM_LOG_PATH" && set -x NVIM_LOG_PATH "$NVIM_STATE/log"
test -z "$NVIM_SESSION_PATH" && set -x NVIM_SESSION_PATH "$NVIM_STATE/session"
test -z "$NVIM_SHADA_PATH" && set -x NVIM_SHADA_PATH "$NVIM_STATE/shada"
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"
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_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_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
set -q AWS_CONFIGURE_PROMPT_DEFAULT; or set -x AWS_CONFIGURE_PROMPT_DEFAULT true
# Brew configuration
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"
# Composer configuration
set -q COMPOSER_HOME; or set -x COMPOSER_HOME "$XDG_STATE_HOME/composer"
set -q COMPOSER_BIN; or set -x COMPOSER_BIN "$COMPOSER_HOME/vendor/bin"
fish_add_path "$COMPOSER_BIN"
# direnv configuration
set -q DIRENV_LOG_FORMAT; or set -x DIRENV_LOG_FORMAT ''
# Docker configuration
set -q DOCKER_CONFIG; or set -x DOCKER_CONFIG "$XDG_CONFIG_HOME/docker"
x-dc "$DOCKER_CONFIG"
set -q DOCKER_HIDE_LEGACY_COMMANDS; or set -x DOCKER_HIDE_LEGACY_COMMANDS true
set -q DOCKER_SCAN_SUGGEST; or set -x DOCKER_SCAN_SUGGEST false
# FNM / Node.js configuration
set -q FNM_DIR; or set -x FNM_DIR "$XDG_DATA_HOME/fnm"
fish_add_path "$FNM_DIR"
set -q FNM_VERSION_FILE_STRATEGY; or set -x FNM_VERSION_FILE_STRATEGY recursive
set -q FNM_USE_ON_CD; or set -x FNM_USE_ON_CD true
set -q FNM_COREPACK_ENABLED; or set -x FNM_COREPACK_ENABLED true
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 '--height 40% --tmux bottom,40% --layout reverse --border top'
# GnuPG configuration
set -q GNUPGHOME; or set -x GNUPGHOME "$XDG_DATA_HOME/gnupg"
# Go configuration
# set -q GOPATH; or set -x GOPATH "$XDG_DATA_HOME/go"
set -q GOBIN; or set -x GOBIN "$XDG_BIN_HOME"
fish_add_path "$GOBIN"
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"
# 1Password configuration
set -q OP_CACHE; or set -x OP_CACHE "$XDG_STATE_HOME/1password"
# Python configuration
set -q WORKON_HOME; or set -x WORKON_HOME "$XDG_DATA_HOME/virtualenvs"
set -q PYENV_ROOT; or set -x PYENV_ROOT "$XDG_DATA_HOME/pyenv"
fish_add_path "$PYENV_ROOT/bin"
# Poetry configuration
set -q POETRY_HOME; or set -x POETRY_HOME "$XDG_DATA_HOME/poetry"
fish_add_path "$POETRY_HOME/bin"
# Rust / cargo configuration
set -q CARGO_HOME; or set -x CARGO_HOME "$XDG_DATA_HOME/cargo"
set -q CARGO_BIN_HOME; or set -x CARGO_BIN_HOME "$XDG_BIN_HOME"
set -q RUSTUP_HOME; or set -x RUSTUP_HOME "$XDG_DATA_HOME/rustup"
set -x RUST_WITHOUT "clippy,docs,rls"
fish_add_path "$CARGO_BIN_HOME"
fish_add_path "$CARGO_HOME/bin"
fish_add_path "$XDG_SHARE_HOME/bob/nvim-bin"
# screen configuration
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"
# 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"
# 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"
# Source tmux theme activation script for Fish shell
if test -f "$DOTFILES/config/tmux/theme-activate.fish"
source "$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"
# wakatime configuration
set -q WAKATIME_HOME; or set -x WAKATIME_HOME "$XDG_STATE_HOME/wakatime"
x-dc "$WAKATIME_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"
# Source additional configuration files if they exist
if test -f "$DOTFILES/config/fish/exports-secret.fish"
source "$DOTFILES/config/fish/exports-secret.fish"
end
if test -f "$DOTFILES/hosts/$HOSTNAME/config/fish/exports.fish"
source "$DOTFILES/hosts/$HOSTNAME/config/fish/exports.fish"
end
if test -f "$DOTFILES/hosts/$HOSTNAME/config/fish/exports-secret.fish"
source "$DOTFILES/hosts/$HOSTNAME/config/fish/exports-secret.fish"
end
# Configure tide prompt
set -gx tide_prompt_transient_enabled true
set -gx tide_prompt_add_newline_before true
set -gx tide_prompt_min_cols 34
set -gx tide_prompt_pad_items false
set -gx tide_left_prompt_items context pwd git node python rustc java php pulumi ruby go gcloud kubectl distrobox toolbox terraform aws nix_shell crystal elixir zig newline character
set -gx tide_right_prompt_items status jobs direnv
set -gx tide_context_hostname_parts 1

8
config/fish/fish_plugins Normal file
View File

@@ -0,0 +1,8 @@
jorgebucaran/fisher
ilancosman/tide@v6
jethrokuan/z
halostatue/fish-macos@v7
jgusta/paths
danhper/fish-ssh-agent
halostatue/fish-brew@v3
edc/bass

View File

@@ -0,0 +1,140 @@
"""
To be used with a companion fish function like this:
function refish
set -l _x (python /tmp/bass.py source ~/.nvm/nvim.sh ';' nvm use iojs); source $_x; and rm -f $_x
end
"""
from __future__ import print_function
import json
import os
import signal
import subprocess
import sys
import traceback
BASH = 'bash'
FISH_READONLY = [
'PWD', 'SHLVL', 'history', 'pipestatus', 'status', 'version',
'FISH_VERSION', 'fish_pid', 'hostname', '_', 'fish_private_mode'
]
IGNORED = [
'PS1', 'XPC_SERVICE_NAME'
]
def ignored(name):
if name == 'PWD': # this is read only, but has special handling
return False
# ignore other read only variables
if name in FISH_READONLY:
return True
if name in IGNORED or name.startswith("BASH_FUNC"):
return True
if name.startswith('%'):
return True
return False
def escape(string):
# use json.dumps to reliably escape quotes and backslashes
return json.dumps(string).replace(r'$', r'\$')
def escape_identifier(word):
return escape(word.replace('?', '\\?'))
def comment(string):
return '\n'.join(['# ' + line for line in string.split('\n')])
def gen_script():
# Use the following instead of /usr/bin/env to read environment so we can
# deal with multi-line environment variables (and other odd cases).
env_reader = "%s -c 'import os,json; print(json.dumps({k:v for k,v in os.environ.items()}))'" % (sys.executable)
args = [BASH, '-c', env_reader]
output = subprocess.check_output(args, universal_newlines=True)
old_env = output.strip()
pipe_r, pipe_w = os.pipe()
if sys.version_info >= (3, 4):
os.set_inheritable(pipe_w, True)
command = 'eval $1 && ({}; alias) >&{}'.format(
env_reader,
pipe_w
)
args = [BASH, '-c', command, 'bass', ' '.join(sys.argv[1:])]
p = subprocess.Popen(args, universal_newlines=True, close_fds=False)
os.close(pipe_w)
with os.fdopen(pipe_r) as f:
new_env = f.readline()
alias_str = f.read()
if p.wait() != 0:
raise subprocess.CalledProcessError(
returncode=p.returncode,
cmd=' '.join(sys.argv[1:]),
output=new_env + alias_str
)
new_env = new_env.strip()
old_env = json.loads(old_env)
new_env = json.loads(new_env)
script_lines = []
for k, v in new_env.items():
if ignored(k):
continue
v1 = old_env.get(k)
if not v1:
script_lines.append(comment('adding %s=%s' % (k, v)))
elif v1 != v:
script_lines.append(comment('updating %s=%s -> %s' % (k, v1, v)))
# process special variables
if k == 'PWD':
script_lines.append('cd %s' % escape(v))
continue
else:
continue
if k == 'PATH':
value = ' '.join([escape(directory)
for directory in v.split(':')])
else:
value = escape(v)
script_lines.append('set -g -x %s %s' % (k, value))
for var in set(old_env.keys()) - set(new_env.keys()):
script_lines.append(comment('removing %s' % var))
script_lines.append('set -e %s' % var)
script = '\n'.join(script_lines)
alias_lines = []
for line in alias_str.splitlines():
_, rest = line.split(None, 1)
k, v = rest.split("=", 1)
alias_lines.append("alias " + escape_identifier(k) + "=" + v)
alias = '\n'.join(alias_lines)
return script + '\n' + alias
script_file = os.fdopen(3, 'w')
if not sys.argv[1:]:
print('__bass_usage', file=script_file, end='')
sys.exit(0)
try:
script = gen_script()
except subprocess.CalledProcessError as e:
sys.exit(e.returncode)
except Exception:
print('Bass internal error!', file=sys.stderr)
raise # traceback will output to stderr
except KeyboardInterrupt:
signal.signal(signal.SIGINT, signal.SIG_DFL)
os.kill(os.getpid(), signal.SIGINT)
else:
script_file.write(script)

View File

@@ -0,0 +1,53 @@
# @halostatue/fish-macos/functions/__macos_app_bundleid.fish:v7.0.0
function __macos_app_bundleid
argparse --name 'app bundleid' x/exact a/all h/help q/quiet s/short -- $argv
or return 1
if set --query _flag_help
echo 'Usage: app bundleid [options] pattern...
Shows the bundle identifier for each of the applications found for the
pattern (see `app find` for how applications are found).
Options:
-x, --exact Perform exact matches only
-a, --all Show all matches
-q, --quiet Suppress error output
-s, --short Prints out the bundle IDs only
-h, --help Show this help
Examples:
> app bundleid 1password
/Applications/1Password for Safari.app: com.1password.safari
/Applications/1Password.app: com.1password.1password
> app bundleid -x 1password
/Applications/1Password.app: com.1password.1password'
return 0
end
if test (count $argv) -eq 0
echo >&2 'app bundleid: Not enough arguments.'
__macos_app_bundleid --help >&2
return 1
end
set --function apps (__macos_app_find $_flag_exact $_flag_all $argv)
or return 1
for app in $apps
set --local bundle_id (mdls -name kMDItemCFBundleIdentifier -r $app)
if test -z $bundle_id
set --query _flag_quiet
or echo >&2 'Error getting bundle ID for "'$app'"'
else
if set --query _flag_short
echo $bundle_id
else
echo $app: $bundle_id
end
end
end
end

View File

@@ -0,0 +1,85 @@
# @halostatue/fish-macos/functions/__macos_app_find.fish:v7.0.0
function __macos_app_find
argparse --name 'app find' x/exact a/all q/quiet h/help -- $argv
or return 1
if set --query _flag_help
echo 'Usage: app find [options] pattern...
Shows installed apps by the provided pattern or patterns. Searches for
apps in /Applications, /Applications/Setapp, /Applications/Utilities,
~/Applications, /Appliciations/Xcode.app/Contents/Applications,
/Developer/Applications, and /System/Applications.
Options:
-x, --exact Perform exact matches only
-a, --all Show all matches
-q, --quiet Do not print matches
-h, --help Show this help
Examples:
> app find --all 1password
/Applications/1Password for Safari.app
/Applications/1Password.app
> app find --exact 1password
/Applications/1Password.app'
return 0
end
if test (count $argv) -eq 0
echo >&2 'app find: Not enough arguments.'
__macos_app_find --help >&2
return 1
end
set --function a Applications
set --function paths \
/$a \
~/$a \
/$a/Setapp \
/$a/Utilities \
/$a/Xcode.app/Contents/$a \
/Developer/Applications \
/System/Applications
set --function found 0
for pattern in $argv
set pattern (string replace '\.app/?$' '' $pattern)
set --local apps {$paths}/*.app {$paths}/*.localized/*.app
for candidate in $apps
set --local found_item 0
if set --query _flag_exact
if string match --ignore-case --entire --quiet /$pattern.app $candidate
set found_item 1
end
else if string match --ignore-case --entire --quiet $pattern $candidate
set found_item 1
end
if test $found_item -eq 1
set --query _flag_quiet
or echo $candidate
set found (math $found + $found_item)
set --query _flag_quiet
and return 0
set --query _flag_all
or return 0
end
end
end
test $found -gt 0
and return 0
set --query _flag_quiet
or echo >&2 'No applications found.'
return 1
end

View File

@@ -0,0 +1,110 @@
# @halostatue/fish-macos/functions/__macos_app_frontmost.fish:v7.0.0
function __macos_app_frontmost::info
set --function value (lsappinfo info -only $argv[2] $argv[1] | string split =)[2]
or return 1
string replace --all '"' '' $value
return 0
end
function __macos_app_frontmost
argparse --name 'app frontmost' \
h/help b/bundle-id p/path n/name P/pid a/all \
-- $argv
or return 1
if set --query _flag_help
echo 'Usage: app frontmost [options]
Retrieves details about the front-most application.
Options:
-b, --bundle-id Shows the app bundle ID
-p, --path Shows the app path
-n, --name Shows the app name
-P, --pid Shows the PID of the app
-a, --all Shows all details
-h, --help Show this help
Example:
> app frontmost
iTerm2'
return 0
end
set --function front (lsappinfo front)
or return 1
set --function items 0
if set --query _flag_all
set items 4
else
set --query _flag_bundle_id _flag_path _flag_name _flag_pid
set --local missing $status
switch $missing
case 0
set _flag_all 1
set items 4
case 4
set _flag_name 1
set items 1
case '*'
set items (math 4 - $missing)
end
end
if set --query _flag_name || set --query _flag_all
set --function name (__macos_app_frontmost::info $front name)
or return 1
end
if set --query _flag_bundle_id || set --query _flag_all
set --function bundle_id (__macos_app_frontmost::info $front bundleID)
or return 1
end
if set --query _flag_path || set --query _flag_all
set --function bundle_path (__macos_app_frontmost::info $front bundlepath)
or return 1
end
if set --query _flag_pid || set --query _flag_all
set --function pid (__macos_app_frontmost::info $front pid)
or return 1
end
if set --query _flag_all
printf "%s: %s %s (%s)\n" $name $bundle_id $bundle_path $pid
else
if set --query _flag_name
printf "%s" $name
test $items -gt 1 && printf ": "
set items (math $items - 1)
end
if set --query _flag_bundle_id
printf "%s" $bundle_id
test $items -gt 1 && printf " "
set items (math $items - 1)
end
if set --query _flag_path
printf "%s" $bundle_path
test $items -gt 1 && printf " "
set items (math $items - 1)
end
if set --query _flag_pid
if test $items -gt 1
printf "(%s)" $pid
else
printf "%s" $pid
end
end
printf "\n"
end
end

View File

@@ -0,0 +1,94 @@
# @halostatue/fish-macos/functions/__macos_app_icon.fish:v7.0.0
function __macos_app_icon
argparse --name 'app quit' x/exact h/help 'o/output=' 'w/width=' -- $argv
or return 1
if set --query _flag_help
echo 'Usage: app icon [options] pattern...
Extracts macOS app icons as PNG (see `app find` for how applications
are found).
Options:
-x, --exact Perform exact matches only
-oOUTPUT Output to the file or directory specified
--output OUTPUT Output to the file or directory specified
-wWIDTH Outputs to a maximum of WIDTH pixels
--width WIDTH Outputs to a maximum of WIDTH pixels
-h, --help Show this help'
return 0
end
if test (count $argv) -eq 0
echo >&2 'app icon: Not enough arguments.'
__macos_app_icon --help >&2
return 1
end
if set --query _flag_exact
set --function apps (__macos_app_find --exact $argv)
or return 1
else
set --function apps (__macos_app_find --all $argv)
or return 1
end
set --function app_count (count $apps)
set --function output_path $PWD
if not test -z $_flag_output
if test -e $_flag_output
if test -f $_flag_output
if test $app_count -gt 1
echo >&2 'app icon: More than one application found, but only one output file specified.'
return 1
end
set output_path (dirname $_flag_output)
set output_file (basename $_flag_output)
else if test -d $_flag_output
set output_path $_flag_output
else
echo >&2 'app icon: Output to a non-file or directory specified.'
return 1
end
else
set output_path $_flag_output
mkdir -p $output_path
end
end
for app in $apps
set --local icon $app/Contents/Resources/(
defaults read $app/Contents/Info CFBundleIconFile |
string replace --regex '\.icns$' ''
).icns
set --local name (basename $app .app)_icon.png
set --local tmp $TMPDIR/$name
set --local max_width (sips -g pixelWidth $icon | tail -1 | awk '{ print $2; }')
set --local outfile
set --local width
if test -z $output_file
set outfile $output_path/$name
else
set outfile $output_path/$output_file
end
if test -z $_flag_width
set width $max_width
else if test $_flag_width -gt $max_width
set width $max_width
else
set width $_flag_width
end
sips -s format png --resampleHeightWidthMax $width $icon --out $outfile >/dev/null 2>&1
echo Wrote $app icon to $outfile.
end
end

View File

@@ -0,0 +1,42 @@
# @halostatue/fish-macos/functions/__macos_app_quit.fish:v7.0.0
function __macos_app_quit
argparse --name 'app quit' x/exact r/restart h/help -- $argv
or return 1
if set --query _flag_help
echo 'Usage: app quit [options] pattern...
Quits apps identified by the provided pattern or patterns (see
`app find` for how applications are found).
Options:
-x, --exact Quits only applications with exact matches
-r, --restart Restarts the application that was quit
-h, --help Show this help'
return 0
end
if test (count $argv) -eq 0
echo >&2 'app bundleid: Not enough arguments.'
__macos_app_quit --help >&2
return 1
end
if set --query _flag_exact
set --function apps (__macos_app_find --exact $argv)
or return 1
else
set --function apps (__macos_app_find --all $argv)
or return 1
end
for app in $apps
printf 'quit app "%s"' $app | osascript >/dev/null
if set --query _flag_restart
sleep 2
open -a $app
end
end
end

View File

@@ -0,0 +1,18 @@
# @halostatue/fish-macos/functions/__macos_finder_cd.fish:v7.0.0
function __macos_finder_cd
argparse --name 'finder cd' h/help -- $argv
or return 1
if set --query _flag_help
echo 'Usage: finder cd [options] [window#]
Changes the current path to the path of the Finder window.
Options:
-h, --help Show this help'
return 0
end
cd (__macos_finder_pwd::get $argv[1])
end

View File

@@ -0,0 +1,30 @@
# @halostatue/fish-macos/functions/__macos_finder_clean.fish:v7.0.0
function __macos_finder_clean
argparse --name 'finder clean' h/help -- $argv
or return 1
if set --query _flag_help
echo 'Usage: finder clean [options] [path...]
Removes .DS_Store files from the paths provided, or the current path if
one is not provided.
Options:
-h, --help Show this help'
return 0
end
if set --query argv[1]
set --function paths $argv
else
set --function paths .
end
for path in $paths
test -d $path
or continue
find $path -type f -name '*.DS_Store' -ls -delete
end
end

View File

@@ -0,0 +1,18 @@
# @halostatue/fish-macos/functions/__macos_finder_column.fish:v7.0.0
function __macos_finder_column
argparse --name 'finder column' h/help -- $argv
or return 1
if set --query _flag_help
echo 'Usage: finder column [options] [window#]
Updates the Finder window to PWD using column view.
Options:
-h, --help Show this help'
return 0
end
__macos_finder_pwd::update --column $argv
end

View File

@@ -0,0 +1,44 @@
# @halostatue/fish-macos/functions/__macos_finder_desktop_icons.fish:v7.0.0
function __macos_finder_desktop_icons
argparse --name 'finder desktop-icons' h/help -- $argv
or return 1
if set --query _flag_help
echo 'Usage: finder desktop-icons [options] STATE
Shows or hides the desktop icons. If not specified, shows the current state.
States:
off Hides the desktop icons
on Shows the desktop icons
[status] Shows desktop icon visibility
toggle Toggles desktop icon visibility
Options:
-h, --help Show this help'
return 0
end
set --function action (string lower -- $argv[1])
set --function key CreateDesktop
switch $action
case off
__macos_finder_defaults::set $key false
case on
__macos_finder_defaults::set $key true
case toggle
if test (__macos_mac_defaults_query com.apple.Finder $key 1) -eq 1
__macos_finder_defaults::set $key false
else
__macos_finder_defaults::set $key true
end
case status ''
if test (__macos_mac_defaults_query com.apple.Finder $key 1) -eq 1
echo 'Desktop icons are hidden.'
else
echo 'Desktop icons are visible.'
end
end
end

View File

@@ -0,0 +1,45 @@
# @halostatue/fish-macos/functions/__macos_finder_hidden.fish:v7.0.0
function __macos_finder_hidden
argparse --name 'finder hidden' h/help -- $argv
or return 1
if set --query _flag_help
echo 'Usage: finder hidden [options] STATE
Shows or hides files that are normally hidden from the Finder. If not
specified, shows the current state.
States:
off Hides files that are normally hidden from the Finder
on Shows files that are normally hidden from the Finder
[status] Shows the status of the hidden files setting
toggle Toggles the hidden files setting
Options:
-h, --help Show this help'
return 0
end
set --function action (string lower -- $argv[1])
set --function key AppleShowAllFiles
switch $action
case off
__macos_finder_defaults::set $key false
case on
__macos_finder_defaults::set $key true
case toggle
if test (__macos_mac_defaults_query com.apple.Finder $key 0) -eq 1
__macos_finder_defaults::set $key false
else
__macos_finder_defaults::set $key true
end
case status ''
if test (__macos_mac_defaults_query com.apple.Finder $key 0) -eq 1
echo 'Hidden files are visible in finder.'
else
echo 'Hidden files are hidden in finder.'
end
end
end

View File

@@ -0,0 +1,18 @@
# @halostatue/fish-macos/functions/__macos_finder_icon.fish:v7.0.0
function __macos_finder_icon
argparse --name 'finder icon' h/help -- $argv
or return 1
if set --query _flag_help
echo 'Usage: finder icon [options] [window#]
Updates the Finder window to PWD using icon view.
Options:
-h, --help Show this help'
return 0
end
__macos_finder_pwd::update --icon $argv
end

View File

@@ -0,0 +1,18 @@
# @halostatue/fish-macos/functions/__macos_finder_list.fish:v7.0.0
function __macos_finder_list
argparse --name 'finder list' h/help -- $argv
or return 1
if set --query _flag_help
echo 'Usage: finder list [options] [window#]
Updates the Finder window to PWD using list view.
Options:
-h, --help Show this help'
return 0
end
__macos_finder_pwd::update --list $argv
end

View File

@@ -0,0 +1,18 @@
# @halostatue/fish-macos/functions/__macos_finder_pushd.fish:v7.0.0
function __macos_finder_pushd
argparse --name 'finder pushd' h/help -- $argv
or return 1
if set --query _flag_help
echo 'Usage: finder pushd [options] [window#]
Changes the current path to the path of the Finder window with pushd.
Options:
-h, --help Show this help'
return 0
end
pushd (__macos_finder_pwd::get $argv[1])
end

View File

@@ -0,0 +1,18 @@
# @halostatue/fish-macos/functions/__macos_finder_pwd.fish:v7.0.0
function __macos_finder_pwd
argparse --name 'finder pwd' h/help -- $argv
or return 1
if set --query _flag_help
echo 'Usage: finder pwd [options] [window#]
Prints the path of the Finder window.
Options:
-h, --help Show this help'
return 0
end
__macos_finder_pwd::get $argv[1]
end

View File

@@ -0,0 +1,60 @@
# @halostatue/fish-macos/functions/__macos_finder_quarantine.fish:v7.0.0
function __macos_finder_quarantine::run
set --query argv[1]
or return 1
set --function databases ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV*
set --function cmd sqlite3 -separator ' | '
for db in $databases
$cmd $db $argv
end
end
function __macos_finder_quarantine
argparse --name 'finder quarantine' h/help -- $argv
or return 1
if set --query _flag_help
echo 'Usage: finder [options] [SUBCOMMAND] [FILE...]
Manage quarantine events.
Subcommands:
[show] Shows quarantine events by agent and URL.
clean FILE... Removes quarantine attributes from the specified file(s).
At least one file is required.
clear Clears all quarantine events.
Options:
-h, --help Show this help'
return 0
end
set --function verb (string lower -- $argv[1])
set --erase argv[1]
switch $verb
case show ''
__macos_finder_quarantine::run "
SELECT LSQuarantineAgentName, LSQuarantineDataURLString
FROM LSQuarantineEvent
WHERE LSQuarantineDataURLString != ''
ORDER BY LSQuarantineAgentName, LSQuarantineDataURLString;"
case clear
__macos_finder_quarantine::run 'DELETE FROM LSQuarantineEvent;'
case clean
if not set --query argv[1]
echo >&2 'finder quarantine clean requires at least one file parameter'
return 1
end
for attr in com.apple.{metadata:{kMDItemDownloadedDate,kMDItemWhereFroms},quarantine}
xattr -r -d $attr $argv
end
case '*'
echo >&2 "finder quarantine: unknown command '"$verb"'. Use 'show', 'clear', or 'clean'."
return 1
end
end

View File

@@ -0,0 +1,28 @@
# @halostatue/fish-macos/functions/__macos_finder_selected.fish:v7.0.0
function __macos_finder_selected
argparse --name 'finder selected' h/help -- $argv
or return 1
if set --query _flag_help
echo 'Usage: finder selected [options] [window#]
Print the selected files on the command-line.
Options:
-h, --help Show this help'
return 0
end
echo '
tell application "Finder" to set theSelection to selection
set output to ""
set itemCount to count theSelection
repeat with itemIndex from 1 to itemCount
if itemIndex is less than itemCount then set theDelimiter to "\n"
if itemIndex is itemCount then set theDelimiter to ""
set currentItem to (item itemIndex of theSelection as alias)
set currentItem to POSIX path of currentItem
set output to output & currentItem & theDelimiter
end repeat' | osascript
end

View File

@@ -0,0 +1,26 @@
# @halostatue/fish-macos/functions/__macos_finder_track.fish:v7.0.0
function __macos_finder_track
argparse --name 'finder track' h/help -- $argv
or return 1
if set --query _flag_help
echo 'Usage: finder track [options]
Makes the first Finder window track with the shell PWD. This should be used
in a single shell instance only, and updates only when the PWD value is
updated.
Options:
-h, --help Show this help'
return 0
end
if not functions --query __macos_finder_tracking
function __macos_finder_tracking --on-variable PWD
__macos_finder_pwd::update
end
end
__macos_finder_pwd::update
end

View File

@@ -0,0 +1,18 @@
# @halostatue/fish-macos/functions/__macos_finder_untrack.fish:v7.0.0
function __macos_finder_untrack
argparse --name 'finder untrack' h/help -- $argv
or return 1
if set --query _flag_help
echo 'Usage: finder untrack [options]
Unlinks the shell PWD from the first Finder window.
Options:
-h, --help Show this help'
return 0
end
functions --erase __macos_finder_tracking
end

View File

@@ -0,0 +1,18 @@
# @halostatue/fish-macos/functions/__macos_finder_update.fish:v7.0.0
function __macos_finder_update
argparse --name 'finder update' h/help -- $argv
or return 1
if set --query _flag_help
echo 'Usage: finder update [options] [window#]
Updates the Finder window to PWD.
Options:
-h, --help Show this help'
return 0
end
__macos_finder_pwd::update $argv
end

View File

@@ -0,0 +1,45 @@
# @halostatue/fish-macos/functions/__macos_mac_airdrop.fish:v7.0.0
function __macos_mac_airdrop
argparse --name 'mac airdrop' h/help -- $argv
or return 1
if set --query _flag_help
echo 'Usage: mac airdrop STATE
Turns AirDrop on or off. Requires administrative permissions and
executes with sudo.
States:
off Disables AirDrop.
on Enables AirDrop.
[status] Shows the status of AirDrop.
toggle Toggles the status of AirDrop.
Options:
-h, --help Show this help'
return 0
end
set --function subcommand (string lower -- $argv[1])
set --erase argv[1]
switch $subcommand
case on
sudo ifconfig awdl0 up
case off
sudo ifconfig awdl0 down
case status ''
ifconfig awdl0 | awk '/status:/ { print $2; }'
case toggle
if test (__macos_mac_airdrop status) == active
__macos_mac_airdrop off
else
__macos_mac_airdrop on
end
case '*'
echo >&2 'mac airdrop: unknown state.'
__macos_mac_airdrop --help >&2
return 1
end
end

View File

@@ -0,0 +1,75 @@
# @halostatue/fish-macos/functions/__macos_mac_airport.fish:v7.0.0
function __macos_mac_airport::ssid
__macos_mac_airport::run -I | string replace --filter --regex '\s+SSID: (\S+)' '$1'
end
function __macos_mac_airport::run
/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport \
$argv
end
function __macos_mac_airport
argparse --name 'mac airport' h/help -- $argv
or return 1
if set --query _flag_help
echo 'Usage: mac airport STATE
mac airport SUBCOMMAND [SSID]
Performs various WiFi (AirPort) operations. If no state or subcommand is
provided, the scan subcommand will be run by default. Otherwise a state (off,
on, toggle) or a subcommand must be provided.
States:
off Disables the WiFi adapter.
on Enables the WiFi adapter.
toggle Toggles the status of the WiFi adapter.
Subcommands:
password [SSID] Shows the password of the current or specified SSID.
scan Scans for WiFi networks..
ssid Shows the current WiFi network SSID.
status Shows the status of the WiFi adapter.
Options:
-h, --help Show this help'
return 0
end
set --function cmd (string lower -- $argv[1])
set --erase argv[1]
switch $cmd
case scan ''
printf "Scanning...\r"
__macos_mac_airport::run -s
case network ssid
__macos_mac_airport::ssid
case off
networksetup -setairportpower en0 off
case on
networksetup -setairportpower en0 on
case status
networksetup -getairportpower en0 | string replace --regex '^[^:]+: ' '' | string lower
case toggle
if test (__macos_mac_airport status) == on
__macos_mac_airport off
else
__macos_mac_airport on
end
case password
set --local ssid
if set --query argv[1]
set ssid $argv[1]
else
set ssid (__macos_mac_airport::ssid)
end
security find-generic-password -D "AirPort network password" -l $ssid -gw
case '*'
echo >&2 'mac airport: Unknown command.'
__macos_mac_airport --help >&2
return 1
end
end

View File

@@ -0,0 +1,38 @@
# @halostatue/fish-macos/functions/__macos_mac_brightness.fish:v7.0.0
function __macos_mac_brightness
argparse --name 'mac brightness' h/help -- $argv
or return 1
if set --query _flag_help
echo 'Usage: mac brightness [options] DIRECTION
Adjust the screen brightness level.
Direction:
up Increases the screen brightness level.
down Decreases the screen brightness level.
Options:
-h, --help Show this help'
return 0
end
set --function direction (string lower -- $argv[1])
set --erase argv[1]
switch $direction
case down
echo 'tell application "System Events"
key code 145
end tell' | osascript >/dev/null
case up ''
echo 'tell application "System Events"
key code 144
end tell' | osascript >/dev/null
case '*'
echo >&2 'mac brightness: Unknown direction'
__macos_mac_brightness --help >&2
return 1
end
end

View File

@@ -0,0 +1,9 @@
# @halostatue/fish-macos/functions/__macos_mac_defaults_query.fish:v7.0.0
function __macos_mac_defaults_query
if set --function value (defaults read $argv[1] $argv[2] 2>/dev/null)
echo $value
else
echo $argv[3]
end
end

View File

@@ -0,0 +1,19 @@
# @halostatue/fish-macos/functions/__macos_mac_flushdns.fish:v7.0.0
function __macos_mac_flushdns
argparse --name 'mac flushdns' h/help -- $argv
or return 1
if set --query _flag_help
echo 'Usage: mac flushdns [options]
Flushes the DNS cache. Requires sudo.
Options:
-h, --help Show this help'
return 0
end
sudo dscacheutil -flushcache
and sudo killall -HUP mDNSResponder
end

View File

@@ -0,0 +1,62 @@
# @halostatue/fish-macos/functions/__macos_mac_font_smoothing.fish:v7.0.0
function __macos_mac_font_smoothing
argparse --name 'mac font-smoothing' h/help -- $argv
or return 1
if set --query _flag_help
echo 'Usage: mac font-smoothing [options] off|on [APP...]
Enables or disables font smoothing. If no apps are provided, sets the
global font smoothing preference. If apps are provided, font smoothing
will be set for each app. See `app bundleid` for how apps are resolved.
States:
off Turns off font smoothing
on Turns on font smoothing
Options:
-h, --help Show this help'
return 0
end
set --function state (string lower -- $argv[1])
set --erase argv[1]
switch $state
case on
if test (count $argv) -eq 0
defaults delete -g CGFontRenderingFontSmoothingDisabled
else
for app in (__macos_app_bundleid --exact --short --all $argv)
defaults delete $app CGFontRenderingFontSmoothingDisabled
if test $app = com.microsoft.VSCode
defaults delete $app.helper CGFontRenderingFontSmoothingDisabled
defaults delete $app.helper.EH CGFontRenderingFontSmoothingDisabled
defaults delete $app.helper.NP CGFontRenderingFontSmoothingDisabled
end
end
end
case off
if test (count $argv) -eq 0
defaults write -g CGFontRenderingFontSmoothingDisabled -bool false
else
for app in (__macos_app_bundleid --exact --short --all $argv)
defaults write $app CGFontRenderingFontSmoothingDisabled -bool false
if test $app = com.microsoft.VSCode
defaults write $app.helper CGFontRenderingFontSmoothingDisabled -bool false
defaults write $app.helper.EH CGFontRenderingFontSmoothingDisabled -bool false
defaults write $app.helper.NP CGFontRenderingFontSmoothingDisabled -bool false
end
end
end
case '*'
echo >&2 'mac font-smoothing: Unknown state.'
__macos_mac_font_smoothing --help >&2
return 1
end
end

View File

@@ -0,0 +1,20 @@
# @halostatue/fish-macos/functions/__macos_mac_lsclean.fish:v7.0.0
function __macos_mac_lsclean
argparse --name 'mac lsclean' h/help -- $argv
or return 1
if set --query _flag_help
echo 'Usage: mac lsclean [options]
Cleans the LaunchServices registration list.
Options:
-h, --help Show this help'
return 0
end
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister \
-kill -r -domain local -domain system -domain user
and killall Finder
end

View File

@@ -0,0 +1,68 @@
# @halostatue/fish-macos/functions/__macos_mac_mail.fish:v7.0.0
# Speed up Mail.app by vacuuming the Envelope Index
# - Code from: http://web.archive.org/web/20071008123746/http://www.hawkwings.net/2007/03/03/scripts-to-automate-the-mailapp-envelope-speed-trick/
# - Originally by "pmbuko" with modifications by Romulo
# - Updated by Brett Terpstra 2012
# - Updated by Mathias Törnblom 2015 to support V3 in El Capitan and still keep backwards compatibility
# - Updated by Andrei Miclaus 2017 to support V4 in Sierra
# - Updated by Austin Ziegler 2022 to not actually care what the OS version is (and translated to fish). The only
# restriction is that you must have opened Mail.app at least once on any OS upgrade so that if any version changes
# have happened, Mail.app has taken care of that for you.
function __macos_mac_mail
argparse --name 'mac mail' h/help -- $argv
or return 1
if set --query _flag_help
echo 'Usage: mac mail [options] SUBCOMMAND [arg]
Performs operations on Mail.app configuration and database.
Before running vacuum after any OS upgrade, Mail.app must have been opened
at least once so that the database and index formats have been updated.
Subcommands:
vacuum Vacuums the envelope index to improve performance.
attachments inline Sets Mail.app attachment handling to inline.
attachments icon Sets Mail.app attachment handling to icon.
Options:
-h, --help Show this help'
return 0
end
set --function subcommand (string lower -- $argv[1])
set --erase argv[1]
switch $subcommand
case vacuum
set --function mail_version (
path filter --type dir ~/Library/Mail/* |
path basename |
string match --all --entire --regex V\\d
)
set --function mail_path ~/Library/Mail/$mail_version/MailData/Envelope\ Index
osascript -e 'tell application "Mail" to quit'
set --function before (ls -lnah $mail_path | awk '{ print $5; }')
/usr/bin/sqlite3 $mail_path vacuum
set --function after (ls -lnah $mail_path | awk '{ print $5; }')
printf "Mail index before: %s\nMail index after: %s\n" $before $after
osascript -e 'tell application "Mail" to activate'
case attachments
switch (string lower -- $argv[1])
case inline
defaults delete com.apple.mail DisableInlineAttachmentViewing
case icon
defaults write com.apple.mail DisableInlineAttachmentViewing -bool true
end
case '*'
echo >&2 'mac mail: Unknown command.'
__macos_mac_mail --help >&2
return 1
end
end

View File

@@ -0,0 +1,66 @@
# @halostatue/fish-macos/functions/__macos_mac_proxy_icon.fish:v7.0.0
function __macos_mac_proxy_icon
argparse --name 'mac proxy-icon' h/help q/query -- $argv
or return 1
if set --query _flag_help
echo 'Usage: mac proxy-icon [options] STATE
Enables or disables the visibility of the proxy icon without delay. macOS
versions older than Monterey always show the proxy icon.
States:
FLOAT Sets the display of the proxy icon to FLOAT fractional seconds.
off Sets the display of the proxy icon to default.
on Sets the display of the proxy icon to 0 seconds.
[status] Shows the duration of the proxy icon display.
toggle Toggles the display of the proxy icon.
Options:
-q, --query When getting status, suppresses output.
-h, --help Show this help'
return 0
end
set --function state (string lower -- $argv[1])
set --erase argv[1]
switch $state
case status ''
set --function value (__macos_mac_defaults_query -g NSToolbarTitleViewRolloverDelay 0.5)
if set --query _flag_query
test $value -eq 0
else if test $value -eq 0
printf "immediate (0 seconds)\n"
else
printf "%0.2f seconds\n" $value
end
case toggle
if __macos_mac_proxy_icon --query status
__macos_mac_proxy_icon off
else
__macos_mac_proxy_icon on
end
case on
defaults write -g NSToolbarTitleViewRolloverDelay -float 0
and killall Finder
case off
defaults delete -g NSToolbarTitleViewRolloverDelay
and killall Finder
case '*'
if string match --regex '^\\d+$|^\\d*\.\\d+$' $state
defaults write -g NSToolbarTitleViewRolloverDelay -float $state
and killall Finder
else
echo >&2 'mac proxy-icon: Unknown state.'
__macos_mac_proxy_icon --help >&2
return 1
end
end
end

View File

@@ -0,0 +1,22 @@
# @halostatue/fish-macos/functions/__macos_mac_serialnumber.fish:v7.0.0
function __macos_mac_serialnumber
argparse --name 'mac serialnumber' h/help c/copy -- $argv
or return 1
if set --query _flag_help
echo 'Usage: mac serialnumber [options]
Gets the serial number for the current macOS device.
Options:
-c, --copy Copy to the clipboard
-h, --help Show this help'
return 0
end
set --function serial (ioreg -l | string replace --filter --regex --all '^.*"IOPlatformSerialNumber"\s+=\s+"([^"]+)"' '$1')
set --query _flag_copy && echo $serial | pbcopy
echo $serial
end

View File

@@ -0,0 +1,42 @@
# @halostatue/fish-macos/functions/__macos_mac_touchid.fish:v7.0.0
function __macos_mac_touchid
argparse --name 'mac touchid' h/help q/quiet -- $argv
or return 1
if set --query _flag_help
echo 'Usage: mac touchid SUBSYSTEM [STATE]
Enables or disables Touch ID support. Requires administrative permissions
and executes with sudo.
Subsystems:
sudo Manages Touch ID support for sudo
States:
off Disables Touch ID.
on Enables Touch ID.
[status] Shows the status of Touch ID.
toggle Toggles the status of Touch ID.
Options:
-h, --help Show this help'
return 0
end
set --function subsystem (string lower -- $argv[1])
set --erase argv[1]
if set --query _flag_quiet
set --append argv --quiet
end
switch $subsystem
case sudo
__macos_mac_touchid_sudo $argv
case '*'
echo >&2 'mac touchid: unknown subsystem.'
__macos_mac_touchid --help >&2
return 1
end
end

View File

@@ -0,0 +1,195 @@
# @halostatue/fish-macos/functions/__macos_mac_touchid_sudo.fish:v7.0.0
# Massively simplified. This version _only_ works if /etc/pam.d/sudo includes `auth
# include sudo_local` and requires manual removal of `pam_reattach` and `pam_tid` from
# `/etc/pam.d/sudo` _manually_ if present.
function __macos_mac_touchid_sudo::check_supported
if string match -rq '^\s*auth\s+include\s+sudo_local$' </etc/pam.d/sudo
return 0
end
echo "Unsupported sudo configuration, cannot find 'auth include sudo_local'. \
If your macOS installation supports 'include', add this at the top:" |
fmt -s >&2
printf >&2 "\n auth include sudo_local\n\n"
printf >&2 "Once this has been added, try again.\n"
return 1
end
function __macos_mac_touchid_sudo::check_old_install
set --function found
string match -rq '^\s*auth\s+sufficient\s+pam_tid\.so' </etc/pam.d/sudo
and set --append found pam_tid
string match -rq '^\s*auth\s+optional\s+.+pam_reattach\.so' </etc/pam.d/sudo
and set --append found pam_reattach
if set --query found[1]
set found (string join ' and ' $found)
printf >&2 "Sudo support for "$found" present in /etc/pam.d/sudo.\n\n"
echo "This is unsupported by 'mac touchid sudo' and must be manually \
removed before continuing." | fmt -s >&2
return 0
end
return 1
end
function __macos_mac_touchid_sudo::print_status
set --query _flag_quiet
or printf "%-15s: %s\n" $argv
end
function __macos_mac_touchid_sudo::remove_one
path is --type file --perm read /etc/pam.d/sudo_local
and grep -q $argv[1] /etc/pam.d/sudo_local
and sudo sed -i '' -e "/$argv[1]/d" /etc/pam.d/sudo_local
end
function __macos_mac_touchid_sudo::remove
osascript -e 'tell application "System Preferences" to quit'
for ext in pam_tid pam_reattach
__macos_mac_touchid_sudo::remove_one {$ext} /etc/pam.d/sudo_local
and __macos_mac_touchid_sudo::print_status $ext disabled
end
if ! test -s /etc/pam.d/sudo_local
# If /etc/pam.d/sudo_local is empty, remove it.
sudo rm -f /etc/pam.d/sudo_local
end
end
function __macos_mac_touchid_sudo::add
set --function targets
test -f /etc/pam.d/sudo_local
or sudo touch /etc/pam.d/sudo_local
if set --query argv[1]
set --function reattach $argv[1]
if string match -rq '^\s*auth\s+optional\s+'$argv[1] </etc/pam.d/sudo_local
if string match -rq '^\s*auth\s+sufficient\s+pam_tid\.so' </etc/pam.d/sudo_local
__macos_mac_touchid_sudo::print_status pam_reattach enabled
__macos_mac_touchid_sudo::print_status pam_tid enabled
return 0
end
end
set --append targets pam_reattach pam_tid
else if string match -rq '^\s*auth\s+sufficient\s+pam_tid\.so' </etc/pam.d/sudo_local
__macos_mac_touchid_sudo::print_status pam_tid enabled
else
set --append targets pam_tid
end
osascript -e 'tell application "System Preferences" to quit'
for target in $targets
if grep -q $target /etc/pam.d/sudo_local
__macos_mac_touchid_sudo::remove_one $target /etc/pam.d/sudo_local
end
end
if set --query reattach
printf "%-10s %-14s %s\n" \
auth optional $reattach \
auth sufficient pam_tid.so |
sudo tee -a /etc/pam.d/sudo_local >/dev/null
and begin
__macos_mac_touchid_sudo::print_status pam_reattach enabled
__macos_mac_touchid_sudo::print_status pam_tid enabled
end
else
printf "%-10s %-14s %s\n" auth sufficient pam_tid.so |
sudo tee -a /etc/pam.d/sudo_local >/dev/null
and __macos_mac_touchid_sudo::print_status pam_tid enabled
end
end
function __macos_mac_touchid_sudo
argparse --name 'mac touchid sudo' h/help q/quiet -- $argv
or return 1
if set --query _flag_help
echo 'Usage: mac touchid sudo [STATE]
Enables or disables Touch ID support for sudo. Requires administrative
permissions to edit /etc/pam.d/sudo_local and executes with sudo.
If pam_reattach is installed, this will be managed as well. Note that if
pam_reattach is installed using sudo, it is imperative that Touch ID
support be disabled first or you may be in a situation where you cannot
use sudo. Note that MacPorts-installed pam_reattach will never be used.
States:
off Disables Touch ID.
on Enables Touch ID.
[status] Shows the status of Touch ID.
toggle Toggles the status of Touch ID.
Options:
-h, --help Show this help'
return 0
end
__macos_mac_touchid_sudo::check_supported
or return
__macos_mac_touchid_sudo::check_old_install
and return
set --function subcommand (string lower -- $argv[1])
set --erase argv[1]
switch $subcommand
case on
set --local reattach /opt/local /opt/homebrew /usr/local /usr
set reattach (path filter --type file $reattach/lib/pam/pam_reattach.so)
if set --query reattach[1]
set reattach (string replace --all --regex / \\/ $reattach[1])
end
__macos_mac_touchid_sudo::add $reattach
case off
__macos_mac_touchid_sudo::remove
case status ''
set --local pam_tid disabled
set --local pam_reattach disabled
grep -q pam_tid.so /etc/pam.d/sudo_local
and set pam_tid enabled
grep -q pam_reattach.so /etc/pam.d/sudo_local
and set pam_reattach enabled
if set --query _flag_quiet
test $pam_tid = enabled
else
__macos_mac_touchid_sudo::print_status pam_tid $pam_tid
__macos_mac_touchid_sudo::print_status pam_reattach $pam_reattach
end
case toggle
if __macos_mac_touchid_sudo status --quiet
__macos_mac_touchid_sudo off
else
__macos_mac_touchid_sudo on
end
case '*'
echo >&2 'mac touchid: unknown state.'
__macos_mac_touchid_sudo --help >&2
return 1
end
end

View File

@@ -0,0 +1,60 @@
# @halostatue/fish-macos/functions/__macos_mac_transparency.fish:v7.0.0
function __macos_mac_transparency
argparse --name 'mac transparency' h/help q/query -- $argv
or return 1
if set --query _flag_help
echo 'Usage: mac transparency [options] STATE
Enables or disables interface transparency by setting the universal
access "reduce transparency" setting.
States:
off Disables interface transparency
on Enables interface transparency
[status] Shows the status of interface transparency
toggle Toggles interface transparency
Options:
-q, --query When getting status, suppresses output.
-h, --help Show this help'
return 0
end
set function state (string lower -- $argv[1])
set --erase argv[1]
switch $state
case status ''
set function value (__macos_mac_defaults_query com.apple.universalaccess reduceTransparency 0)
if set --query _flag_query
test $value -eq 0
else
if test $value -eq 0
echo on
else
echo off
end
end
case on
defaults delete com.apple.universalaccess reduceTransparency
case off
defaults write com.apple.universalaccess reduceTransparency -bool true
case toggle
if __macos_mac_transparency status --query
__macos_mac_transparency off
else
__macos_mac_transparency on
end
case '*'
echo >&2 'mac transparency: unknown state'
__macos_mac_transparency --help >&2
return 1
end
end

View File

@@ -0,0 +1,86 @@
# @halostatue/fish-macos/functions/__macos_mac_version.fish:v7.0.0
function __macos_mac_version
argparse \
--exclusive s,v \
--exclusive l,v \
--exclusive s,c \
--exclusive l,c \
--exclusive v,c \
h/help s/simple l/lowercase v/version c/comparable -- $argv
if set --query _flag_help
echo 'Usage: mac version [options]
Shows the current mac version.
Options:
-s, --simple Removes spaces from the version displayed
-l, --lowercase Converts the version to all lowercase
-c, --comparable Outputs the comparable version value
-v, --version Outputs the macOS version (same as sw_vers -productVersion)'
return 0
end
set --function os_version (sw_vers -productVersion)
if set --query _flag_version
echo $os_version
return $status
end
set os_version (__macos_version_to_comparable $os_version)
or return 1
if set --query _flag_comparable
echo $os_version
return 0
end
switch $os_version
case 1005000
set os_version Leopard
case 1006000
set os_version Snow Leopard
case 1007000
set os_version Lion
case 1008000
set os_version Mountain Lion
case 1009000
set os_version Mavericks
case 1010000
set os_version Yosemite
case 1011000
set os_version El Capitan
case 1012000
set os_version Sierra
case 1013000
set os_version High Sierra
case 1014000
set os_version Mojave
case 1015000
set os_version Catalina
case 1100000
set os_version Big Sur
case 1200000
set os_version Monterey
case 1300000
set os_version Ventura
case 1400000
set os_version Sonoma
case 1500000
set os_version Sequoia
case '*'
return 1
end
if set --query _flag_simple
set os_version (string replace --all ' ' '' "$os_version")
end
if set --query _flag_lowercase
set os_version (string lower -- "$os_version")
end
echo $os_version
end

View File

@@ -0,0 +1,45 @@
# @halostatue/fish-macos/functions/__macos_mac_vol.fish:v7.0.0
function __macos_mac_vol
argparse --name 'mac vol' h/help -- $argv
or return 1
if set --query _flag_help
echo 'Usage: mac vol [options] LEVEL
Control the volume level.
Levels:
mute Mutes the volume level.
unmute Unmutes the volume level.
0 .. 100 Sets the volume level at LEVEL %.
[show] Shows the current volume level.
Options:
-h, --help Show this help'
return 0
end
set --function action (string lower -- $argv[1])
set --erase argv[1]
switch $action
case mute
osascript -e 'set volume output muted true'
case unmute
osascript -e 'set volume output muted false'
case (seq 0 100)
osascript -e "set volume output volume "$action
case show ''
if test (osascript -e 'output muted of (get volume settings)') = true
echo muted
else
osascript -e "output volume of (get volume settings)"
end
case '*'
echo >&2 'mac vol: Unknown level'
__macos_mac_vol --help >&2
return 1
end
end

View File

@@ -0,0 +1,23 @@
function __ssh_agent_is_started -d "check if ssh agent is already started"
if test -n "$SSH_CONNECTION"
# This is an SSH session
ssh-add -l > /dev/null 2>&1
if test $status -eq 0 -o $status -eq 1
# An SSH agent was forwarded
return 0
end
end
if begin; test -f "$SSH_ENV"; and test -z "$SSH_AGENT_PID"; end
source $SSH_ENV > /dev/null
end
if test -z "$SSH_AGENT_PID"
return 1
end
ssh-add -l > /dev/null 2>&1
if test $status -eq 2
return 1
end
end

View File

@@ -0,0 +1,5 @@
function __ssh_agent_start -d "start a new ssh agent"
ssh-agent -c | sed 's/^echo/#echo/' > $SSH_ENV
chmod 600 $SSH_ENV
source $SSH_ENV > /dev/null
end

View File

@@ -0,0 +1,174 @@
function __z -d "Jump to a recent directory."
function __print_help -d "Print z help."
printf "Usage: $Z_CMD [-celrth] string1 string2...\n\n"
printf " -c --clean Removes directories that no longer exist from $Z_DATA\n"
printf " -d --dir Opens matching directory using system file manager.\n"
printf " -e --echo Prints best match, no cd\n"
printf " -l --list List matches and scores, no cd\n"
printf " -p --purge Delete all entries from $Z_DATA\n"
printf " -r --rank Search by rank\n"
printf " -t --recent Search by recency\n"
printf " -x --delete Removes the current directory from $Z_DATA\n"
printf " -h --help Print this help\n\n"
end
function __z_legacy_escape_regex
# taken from escape_string_pcre2 in fish
# used to provide compatibility with fish 2
for c in (string split -- '' $argv)
if contains $c (string split '' '.^$*+()?[{}\\|-]')
printf \\
end
printf '%s' $c
end
end
set -l options h/help c/clean e/echo l/list p/purge r/rank t/recent d/directory x/delete
argparse $options -- $argv
if set -q _flag_help
__print_help
return 0
else if set -q _flag_clean
__z_clean
printf "%s cleaned!\n" $Z_DATA
return 0
else if set -q _flag_purge
echo >$Z_DATA
printf "%s purged!\n" $Z_DATA
return 0
else if set -q _flag_delete
sed -i -e "\:^$PWD|.*:d" $Z_DATA
return 0
end
set -l typ
if set -q _flag_rank
set typ rank
else if set -q _flag_recent
set typ recent
end
set -l z_script '
function frecent(rank, time) {
dx = t-time
if( dx < 3600 ) return rank*4
if( dx < 86400 ) return rank*2
if( dx < 604800 ) return rank/2
return rank/4
}
function output(matches, best_match, common) {
# list or return the desired directory
if( list ) {
cmd = "sort -nr"
for( x in matches ) {
if( matches[x] ) {
printf "%-10s %s\n", matches[x], x | cmd
}
}
} else {
if( common ) best_match = common
print best_match
}
}
function common(matches) {
# find the common root of a list of matches, if it exists
for( x in matches ) {
if( matches[x] && (!short || length(x) < length(short)) ) {
short = x
}
}
if( short == "/" ) return
for( x in matches ) if( matches[x] && index(x, short) != 1 ) {
return
}
return short
}
BEGIN {
hi_rank = ihi_rank = -9999999999
}
{
if( typ == "rank" ) {
rank = $2
} else if( typ == "recent" ) {
rank = $3 - t
} else rank = frecent($2, $3)
if( $1 ~ q ) {
matches[$1] = rank
} else if( tolower($1) ~ tolower(q) ) imatches[$1] = rank
if( matches[$1] && matches[$1] > hi_rank ) {
best_match = $1
hi_rank = matches[$1]
} else if( imatches[$1] && imatches[$1] > ihi_rank ) {
ibest_match = $1
ihi_rank = imatches[$1]
}
}
END {
# prefer case sensitive
if( best_match ) {
output(matches, best_match, common(matches))
} else if( ibest_match ) {
output(imatches, ibest_match, common(imatches))
}
}
'
set -l qs
for arg in $argv
set -l escaped $arg
if string escape --style=regex '' >/dev/null 2>&1 # use builtin escape if available
set escaped (string escape --style=regex -- $escaped)
else
set escaped (__z_legacy_escape_regex $escaped)
end
# Need to escape twice, see https://www.math.utah.edu/docs/info/gawk_5.html#SEC32
set escaped (string replace --all -- \\ \\\\ $escaped)
set qs $qs $escaped
end
set -l q (string join -- '.*' $qs)
if set -q _flag_list
# Handle list separately as it can print common path information to stderr
# which cannot be captured from a subcommand.
command awk -v t=(date +%s) -v list="list" -v typ="$typ" -v q="$q" -F "|" $z_script "$Z_DATA"
return
end
set target (command awk -v t=(date +%s) -v typ="$typ" -v q="$q" -F "|" $z_script "$Z_DATA")
if test "$status" -gt 0
return
end
if test -z "$target"
printf "'%s' did not match any results\n" "$argv"
return 1
end
if set -q _flag_echo
printf "%s\n" "$target"
else if set -q _flag_directory
if test -n "$ZO_METHOD"
type -q "$ZO_METHOD"; and "$ZO_METHOD" "$target"; and return $status
echo "Cannot open with ZO_METHOD set to $ZO_METHOD"; and return 1
else if test "$OS" = Windows_NT
# Be careful, in msys2, explorer always return 1
type -q explorer; and explorer "$target"
return 0
echo "Cannot open file explorer"
return 1
else
type -q xdg-open; and xdg-open "$target"; and return $status
type -q open; and open "$target"; and return $status
echo "Not sure how to open file manager"; and return 1
end
else
pushd "$target"
end
end

View File

@@ -0,0 +1,49 @@
function __z_add -d "Add PATH to .z file"
test -n "$fish_private_mode"; and return 0
for i in $Z_EXCLUDE
if string match -r $i $PWD >/dev/null
return 0 #Path excluded
end
end
set -l tmpfile (mktemp $Z_DATA.XXXXXX)
if test -f $tmpfile
set -l path (string replace --all \\ \\\\ $PWD)
command awk -v path=$path -v now=(date +%s) -F "|" '
BEGIN {
rank[path] = 1
time[path] = now
}
$2 >= 1 {
if( $1 == path ) {
rank[$1] = $2 + 1
time[$1] = now
}
else {
rank[$1] = $2
time[$1] = $3
}
count += $2
}
END {
if( count > 1000 ) {
for( i in rank ) print i "|" 0.9*rank[i] "|" time[i] # aging
}
else for( i in rank ) print i "|" rank[i] "|" time[i]
}
' $Z_DATA 2>/dev/null >$tmpfile
if test ! -z "$Z_OWNER"
chown $Z_OWNER:(id -ng $Z_OWNER) $tmpfile
end
#
# Don't use redirection here as it can lead to a race condition where $Z_DATA is clobbered.
# Note: There is a still a possible race condition where an old version of $Z_DATA is
# read by one instance of Fish before another instance of Fish writes its copy.
#
command mv $tmpfile $Z_DATA
or command rm $tmpfile
end
end

View File

@@ -0,0 +1,11 @@
function __z_clean -d "Clean up .z file to remove paths no longer valid"
set -l tmpfile (mktemp $Z_DATA.XXXXXX)
if test -f $tmpfile
while read line
set -l path (string split '|' $line)[1]
test -d $path; and echo $line
end <$Z_DATA >$tmpfile
command mv -f $tmpfile $Z_DATA
end
end

View File

@@ -0,0 +1,13 @@
function __z_complete -d "add completions"
complete -c $Z_CMD -a "(__z -l | string replace -r '^\\S*\\s*' '')" -f -k
complete -c $ZO_CMD -a "(__z -l | string replace -r '^\\S*\\s*' '')" -f -k
complete -c $Z_CMD -s c -l clean -d "Cleans out $Z_DATA"
complete -c $Z_CMD -s e -l echo -d "Prints best match, no cd"
complete -c $Z_CMD -s l -l list -d "List matches, no cd"
complete -c $Z_CMD -s p -l purge -d "Purges $Z_DATA"
complete -c $Z_CMD -s r -l rank -d "Searches by rank, cd"
complete -c $Z_CMD -s t -l recent -d "Searches by recency, cd"
complete -c $Z_CMD -s h -l help -d "Print help"
complete -c $Z_CMD -s x -l delete -d "Removes the current directory from $Z_DATA"
end

View File

@@ -0,0 +1,19 @@
function _tide_1_line_prompt
set -g add_prefix
_tide_side=left for item in $_tide_left_items
_tide_item_$item
end
set_color $prev_bg_color -b normal
echo $tide_left_prompt_suffix
set -g add_prefix
_tide_side=right for item in $_tide_right_items
_tide_item_$item
end
set_color $prev_bg_color -b normal
echo $tide_right_prompt_suffix
end
function _tide_item_pwd
_tide_print_item pwd @PWD@
end

View File

@@ -0,0 +1,31 @@
function _tide_2_line_prompt
set -g add_prefix
_tide_side=left for item in $_tide_left_items
_tide_item_$item
end
if not set -e add_prefix
set_color $prev_bg_color -b normal
echo $tide_left_prompt_suffix
end
echo
set -g add_prefix
_tide_side=right for item in $_tide_right_items
_tide_item_$item
end
if not set -e add_prefix
set_color $prev_bg_color -b normal
echo $tide_right_prompt_suffix
end
end
function _tide_item_pwd
_tide_print_item pwd @PWD@
end
function _tide_item_newline
set_color $prev_bg_color -b normal
v=tide_"$_tide_side"_prompt_suffix echo $$v
set -g add_prefix
end

View File

@@ -0,0 +1,17 @@
function _tide_cache_variables
# Same-color-separator color
set_color $tide_prompt_color_separator_same_color | read -gx _tide_color_separator_same_color
# git
contains git $_tide_left_items $_tide_right_items && set_color $tide_git_color_branch | read -gx _tide_location_color
# private_mode
if contains private_mode $_tide_left_items $_tide_right_items && test -n "$fish_private_mode"
set -gx _tide_private_mode
else
set -e _tide_private_mode
end
# item padding
test "$tide_prompt_pad_items" = true && set -gx _tide_pad ' ' || set -e _tide_pad
end

View File

@@ -0,0 +1,77 @@
# Outputs icon, color, bg_color
function _tide_detect_os
set -lx defaultColor 080808 CED7CF
switch (uname | string lower)
case darwin
printf %s\n  D6D6D6 333333 # from apple.com header
case freebsd openbsd dragonfly
printf %s\n  FFFFFF AB2B28 # https://freebsdfoundation.org/about-us/about-the-foundation/project/
case 'cygwin*' 'mingw*_nt*' 'msys_nt*'
printf %s\n  FFFFFF 00CCFF # https://answers.microsoft.com/en-us/windows/forum/all/what-is-the-official-windows-8-blue-rgb-or-hex/fd57144b-f69b-42d8-8c21-6ca911646e44
case linux
if test (uname -o) = Android
echo ﲎ # This character is evil and messes up code display, so it's put on its own line
# https://developer.android.com/distribute/marketing-tools/brand-guidelines
printf %s\n 3DDC84 3C3F41 # fg is from above link, bg is from Android Studio default dark theme
else
_tide_detect_os_linux_cases /etc/os-release ID ||
_tide_detect_os_linux_cases /etc/os-release ID_LIKE ||
_tide_detect_os_linux_cases /etc/lsb-release DISTRIB_ID ||
printf %s\n$defaultColor
end
case '*'
echo -ns '?'
end
end
function _tide_detect_os_linux_cases -a file key
test -e $file || return
set -l split_file (string split '=' <$file)
set -l key_index (contains --index $key $split_file) || return
set -l value (string trim --chars='"' $split_file[(math $key_index + 1)])
# Anything which would have pure white background has been changed to D4D4D4
# It was just too bright otherwise
switch (string lower $value)
case alpine
printf %s\n  FFFFFF 0D597F # from alpine logo
case arch
printf %s\n  1793D1 4D4D4D # from arch wiki header
case centos
printf %s\n000000 D4D4D4 # https://wiki.centos.org/ArtWork/Brand/Logo, monochromatic
case debian
printf %s\n  C70036 D4D4D4 # from debian logo https://www.debian.org/logos/openlogo-nd-100.png
case devuan
printf %s\n$defaultColor # logo is monochromatic
case elementary
printf %s\n000000 D4D4D4 # https://elementary.io/brand, encouraged to be monochromatic
case fedora
printf %s\n  FFFFFF 294172 # from logo https://fedoraproject.org/w/uploads/2/2d/Logo_fedoralogo.png
case gentoo
printf %s\n  FFFFFF 54487A # https://wiki.gentoo.org/wiki/Project:Artwork/Colors
case mageia
printf %s\n  FFFFFF 262F45 # https://wiki.mageia.org/en/Artwork_guidelines
case manjaro
printf %s\n  FFFFFF 35BF5C # from https://gitlab.manjaro.org/artwork/branding/logo/-/blob/master/logo.svg
case mint linuxmint
printf %s\n  FFFFFF 69B53F # extracted from https://linuxmint.com/web/img/favicon.ico
case nixos
printf %s\n  FFFFFF 5277C3 # https://github.com/NixOS/nixos-artwork/tree/master/logo
case opensuse-leap opensuse-tumbleweed opensuse-microos
printf %s\n  73BA25 173f4f # https://en.opensuse.org/openSUSE:Artwork_brand
case raspbian
printf %s\n  FFFFFF A22846 # https://static.raspberrypi.org/files/Raspberry_Pi_Visual_Guidelines_2020.pdf
case rhel
printf %s\n  EE0000 000000 # https://www.redhat.com/en/about/brand/standards/color
case sabayon
printf %s\n$defaultColor # Can't find colors, and they are rebranding anyway
case slackware
printf %s\n$defaultColor # Doesn't really have a logo, and the colors are too close to PWD blue anyway
case ubuntu
printf %s\n  E95420 D4D4D4 # https://design.ubuntu.com/brand/
case void
printf %s\n  FFFFFF 478061 # from https://alpha.de.repo.voidlinux.org/logos/void.svg
case '*'
return 1
end
end

View File

@@ -0,0 +1,3 @@
function _tide_find_and_remove -a name list --no-scope-shadowing
contains --index $name $$list | read -l index && set -e "$list"[$index]
end

View File

@@ -0,0 +1,7 @@
function _tide_fish_colorize
if command -q fish_indent
echo -ns "$argv" | fish_indent --ansi
else
echo -ns "$argv"
end
end

View File

@@ -0,0 +1,11 @@
function _tide_item_aws
# AWS_PROFILE overrides AWS_DEFAULT_PROFILE, AWS_REGION overrides AWS_DEFAULT_REGION
set -q AWS_PROFILE && set -l AWS_DEFAULT_PROFILE $AWS_PROFILE
set -q AWS_REGION && set -l AWS_DEFAULT_REGION $AWS_REGION
if test -n "$AWS_DEFAULT_PROFILE" && test -n "$AWS_DEFAULT_REGION"
_tide_print_item aws $tide_aws_icon' ' "$AWS_DEFAULT_PROFILE/$AWS_DEFAULT_REGION"
else if test -n "$AWS_DEFAULT_PROFILE$AWS_DEFAULT_REGION"
_tide_print_item aws $tide_aws_icon' ' "$AWS_DEFAULT_PROFILE$AWS_DEFAULT_REGION"
end
end

View File

@@ -0,0 +1,17 @@
function _tide_item_character
test $_tide_status = 0 && set_color $tide_character_color || set_color $tide_character_color_failure
set -q add_prefix || echo -ns ' '
test "$fish_key_bindings" = fish_default_key_bindings && echo -ns $tide_character_icon ||
switch $fish_bind_mode
case insert
echo -ns $tide_character_icon
case default
echo -ns $tide_character_vi_icon_default
case replace replace_one
echo -ns $tide_character_vi_icon_replace
case visual
echo -ns $tide_character_vi_icon_visual
end
end

View File

@@ -0,0 +1,12 @@
function _tide_item_cmd_duration
test $CMD_DURATION -gt $tide_cmd_duration_threshold && t=(
math -s0 "$CMD_DURATION/3600000" # Hours
math -s0 "$CMD_DURATION/60000"%60 # Minutes
math -s$tide_cmd_duration_decimals "$CMD_DURATION/1000"%60) if test $t[1] != 0
_tide_print_item cmd_duration $tide_cmd_duration_icon' ' "$t[1]h $t[2]m $t[3]s"
else if test $t[2] != 0
_tide_print_item cmd_duration $tide_cmd_duration_icon' ' "$t[2]m $t[3]s"
else
_tide_print_item cmd_duration $tide_cmd_duration_icon' ' "$t[3]s"
end
end

View File

@@ -0,0 +1,14 @@
function _tide_item_context
if set -q SSH_TTY
set -fx tide_context_color $tide_context_color_ssh
else if test "$EUID" = 0
set -fx tide_context_color $tide_context_color_root
else if test "$tide_context_always_display" = true
set -fx tide_context_color $tide_context_color_default
else
return
end
string match -qr "^(?<h>(\.?[^\.]*){0,$tide_context_hostname_parts})" @$hostname
_tide_print_item context $USER$h
end

View File

@@ -0,0 +1,6 @@
function _tide_item_crystal
if path is $_tide_parent_dirs/shard.yml
crystal --version | string match -qr "(?<v>[\d.]+)"
_tide_print_item crystal $tide_crystal_icon' ' $v
end
end

View File

@@ -0,0 +1,7 @@
function _tide_item_direnv
set -q DIRENV_DIR || return
direnv status | string match -q 'Found RC allowed false' &&
set -lx tide_direnv_color $tide_direnv_color_denied &&
set -lx tide_direnv_bg_color $tide_direnv_bg_color_denied
_tide_print_item direnv $tide_direnv_icon
end

Some files were not shown because too many files have changed in this diff Show More