Compare commits

...

8 Commits

Author SHA1 Message Date
57b686cab5 feat: add atuin shell history integration for Fish
Initialize atuin in Fish shell for synced fuzzy history search with CTRL+R.
2025-11-25 15:22:32 -06:00
8f9565d0e0 feat: add Cursor Linux settings and expand Claude Code permissions
- Add comprehensive Cursor settings for Linux platform
- Expand Claude Code allowed bash commands (control flow, tooling)
- Enable KiTTy command finish notification suppression
- Add JVM languages plugin to Claude Code workflows
- Set default model to Sonnet in Claude settings
2025-11-25 15:08:42 -06:00
075810965a feat: add SDKMAN integration and improve mise/tool configuration
- Add SDKMAN initialization to bashrc for Java SDK management
- Create Fish shell wrapper function for SDKMAN commands
- Switch from lazy-loading to automatic mise activation in Fish
- Clean up fish_plugins comments for clarity
- Add pnpm to mise tool-versions
- Enable Shift+Enter in Kitty for Claude Code multi-line prompts
- Make update_pre.ts hook executable
2025-11-24 00:25:02 -06:00
Ryan Walters
262da2f114 fix: use portable file timestamp comparison in fish brew cache check
Replace fish's `-nt` test operator (not available in fish) with explicit stat-based timestamp comparison for cross-shell compatibility.
2025-11-07 11:35:10 -06:00
26f332e1a4 fix: KiTTy not using MesloLGS nerd font 2025-11-07 11:30:15 -06:00
1c87ddfa96 chore: use custom atuin self host, disable enter to accept, disable up arrow keybind in zshrc init 2025-11-07 11:30:06 -06:00
05257607d3 feat: use micro as preferred ssh editor, add Atuin PATH amendment line 2025-11-07 11:29:50 -06:00
8a5c83bdf7 feat: add atuin.sh config 2025-11-07 11:29:41 -06:00
13 changed files with 659 additions and 23 deletions

View File

@@ -46,7 +46,7 @@ if test -f /home/linuxbrew/.linuxbrew/bin/brew
# Regenerate cache if: doesn't exist, >7 days old, or brew binary is newer
if not test -f "$brew_cache"; \
or test (math (date +%s) - (stat -c %Y "$brew_cache" 2>/dev/null || echo 0)) -gt 604800; \
or test "$brew_bin" -nt "$brew_cache"
or test (stat -c %Y "$brew_bin" 2>/dev/null || echo 0) -gt (stat -c %Y "$brew_cache" 2>/dev/null || echo 0)
mkdir -p (dirname "$brew_cache")
$brew_bin shellenv > "$brew_cache" 2>/dev/null
end
@@ -116,3 +116,8 @@ function wt
end
end
{{- end }}
# atuin (magical shell history)
if command -q atuin
atuin init fish | source
end

View File

@@ -95,6 +95,14 @@ fi
. $HOME/.bash_aliases
# disable screen blanking
# source $(brew --prefix)/share/zsh/site-functions/_todoist_peco
# xset s off && xset -dpms
# Always use `micro` as the preferred editor when connected via SSH
if [[ -n $SSH_CONNECTION ]]; then
export EDITOR='micro'
fi
{{- /* WSL-specific settings */ -}}
{{- if .data.wsl }}
@@ -118,10 +126,17 @@ wt() {
wt.exe -w 0 "$@" wsl --cd "$(pwd)"
fi
}
{{- end }}
eval `keychain --quiet --eval --agents ssh ~/.ssh/id_rsa`
{{ end }}
# dotnet
if [ -d "$HOME/.dotnet" ]; then
export DOTNET_ROOT="$HOME/.dotnet"
export PATH="$PATH:$DOTNET_ROOT:$DOTNET_ROOT/tools"
fi
# atuin
if [ -d "$HOME/.atuin" ]; then
. "$HOME/.atuin/bin/env"
fi

View File

@@ -0,0 +1,335 @@
{
// Editor Settings
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true,
"editor.fontFamily": "Iosevka",
"editor.inlineSuggest.enabled": true,
"editor.linkedEditing": true,
"editor.minimap.showSlider": "always",
"diffEditor.renderSideBySide": false,
"cursor.diffs.useCharacterLevelDiffs": true,
// Workbench Settings
"workbench.startupEditor": "none",
"workbench.tree.indent": 24,
"workbench.preferredLightColorTheme": "Cursor Light",
"workbench.iconTheme": "material-icon-theme",
// Window Settings
"window.autoDetectHighContrast": false,
"window.autoDetectColorScheme": true,
// Terminal Settings
"terminal.integrated.commandsToSkipShell": [
"-workbench.action.quickOpenView"
],
"terminal.integrated.fontFamily": "Iosevka Nerd Font Mono",
"terminal.integrated.enablePersistentSessions": false,
"terminal.integrated.defaultProfile.windows": "PowerShell",
"terminal.integrated.defaultProfile.linux": "zsh",
"terminal.external.windowsExec": "C:\\Program Files\\PowerShell\\7\\pwsh.exe",
"terminal.integrated.profiles.linux": {
"bash": {
"path": "bash",
"icon": "terminal-bash"
},
"fish": {
"path": "fish"
},
"tmux": {
"path": "tmux",
"icon": "terminal-tmux"
},
"pwsh": {
"path": "pwsh",
"icon": "terminal-powershell"
}
},
// File Explorer Settings
"explorer.confirmDragAndDrop": false,
"explorer.confirmDelete": false,
"files.associations": {
"*.dialogue": "plaintext"
},
// Git Settings
"git.autofetch": true,
"git.confirmSync": false,
"git.openRepositoryInParentFolders": "always",
// Security Settings
"security.workspace.trust.untrustedFiles": "open",
"security.allowedUNCHosts": ["ROMAN"],
"security.restrictUNCAccess": false,
// Language-specific Formatters
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescriptreact]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[json]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[html]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[python]": {
"editor.formatOnType": true,
"editor.defaultFormatter": "anysphere.cursorpyright"
},
"[go]": {
"editor.defaultFormatter": "golang.go"
},
"[rust]": {
"editor.defaultFormatter": "rust-lang.rust-analyzer"
},
"[astro]": {
"editor.defaultFormatter": "astro-build.astro-vscode"
},
"[caddyfile]": {
"editor.defaultFormatter": "matthewpi.caddyfile-support"
},
"[shellscript]": {
"editor.defaultFormatter": "foxundermoon.shell-format"
},
"[github-actions-workflow]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[ignore]": {
"editor.defaultFormatter": "foxundermoon.shell-format"
},
"[dotenv]": {
"editor.defaultFormatter": "foxundermoon.shell-format"
},
"[xml]": {
"editor.defaultFormatter": "redhat.vscode-xml"
},
"[properties]": {
"editor.defaultFormatter": "foxundermoon.shell-format"
},
"[gdscript]": {
"editor.defaultFormatter": "geequlim.godot-tools"
},
"[powershell]": {
"editor.defaultFormatter": "ms-vscode.powershell"
},
"[lua]": {
"editor.defaultFormatter": "sumneko.lua"
},
"[prisma]": {
"editor.defaultFormatter": "Prisma.prisma"
},
// Language-specific Settings
"typescript.preferences.importModuleSpecifier": "non-relative",
"typescript.updateImportsOnFileMove.enabled": "always",
"typescript.preferGoToSourceDefinition": true,
"javascript.updateImportsOnFileMove.enabled": "never",
"javascript.preferGoToSourceDefinition": true,
"python.analysis.autoImportCompletions": true,
"python.analysis.supportDocstringTemplate": true,
"go.inlayHints.parameterNames": true,
"go.buildTags": "real",
"go.toolsManagement.autoUpdate": true,
"go.lintTool": "revive",
"dotnet.server.useOmnisharp": true,
"dotnet.formatting.organizeImportsOnFormat": true,
// Extension Settings
"markdown-preview-enhanced.previewTheme": "github-light.css",
"colorize.include": [
"**/*.css",
"**/*.tsx",
"**/*.scss",
"**/*.sass",
"**/*.less",
"**/*.styl"
],
"colorize.languages": [
"javascript",
"css",
"sass",
"scss",
"less",
"postcss",
"sss",
"stylus",
"xml",
"svg",
"typescriptreact"
],
"quokka.showStartViewOnFeatureRelease": false,
"prisma.showPrismaDataPlatformNotification": false,
"poshProTools.showUpgradeNotification": false,
"poshProTools.disableNewsNotification": true,
"csharpier.enableDiagnostics": false,
"powershell.promptToUpdatePowerShell": false,
"autoimport.autoComplete": false,
"notebook.output.scrolling": true,
"json.schemaDownload.enable": true,
"evenBetterToml.schema.links": true,
// GitHub Copilot Settings
"github.copilot.enable": {
"*": true,
"plaintext": true,
"markdown": true,
"scminput": false,
"yaml": false
},
"github.copilot.editor.enableAutoCompletions": true,
"github.copilot.nextEditSuggestions.enabled": true,
// GitLens Settings
"gitlens.ai.experimental.model": "vscode",
"gitlens.ai.experimental.vscode.model": "copilot:gpt-4o",
"gitlens.ai.model": "gitkraken",
"gitlens.ai.gitkraken.model": "gemini:gemini-2.0-flash",
// Cursor-specific Settings
"cursor.cpp.disabledLanguages": ["scminput"],
"cursor.composer.usageSummaryDisplay": "always",
// VSCord Settings
"vscord.status.image.small.viewing.key": "https://raw.githubusercontent.com/LeonardSSH/vscord/main/assets/icons/vscode.png",
// Coverage Settings
"coverage-gutters.ignoredPathGlobs": "**/{node_modules,venv,.venv,vendor,target,dist,emsdk}/**",
"coverage-gutters.manualCoverageFilePaths": [
"C:/Users/Xevion/projects/Pac-Man/lcov.info"
],
// Task Settings
"task.allowAutomaticTasks": "on",
// Remote Settings
"remote.SSH.remotePlatform": {
"aws": "linux"
},
// Flutter/Dart Settings
"dart.flutterSdkPath": "C:\\Users\\Xevion\\.flutter\\flutter",
// Harper LS Settings
"harper-ls.diagnosticSeverity": "hint",
// Todo Tree Settings
"todo-tree.highlights.foregroundColourScheme": [],
// Spell Check Settings
"cSpell.ignorePaths": [
"package-lock.json",
"node_modules",
"vscode-extension",
".git/{info,lfs,logs,refs,objects}/**",
".git/{index,*refs,*HEAD}",
".vscode",
".vscode-insiders",
"C:/Users/*/AppData/Roaming/**"
],
"cSpell.userWords": [
"asgi",
"astro",
"automations",
"autoprefixer",
"Behaviour",
"Boids",
"Caddyfile",
"coloors",
"Colour",
"Debugw",
"dotenv",
"Errorw",
"esbuild",
"factorio",
"fastapi",
"gnueabihf",
"groq",
"Hackathon",
"hypercorn",
"imfucked",
"jsdoc",
"jsdom",
"Lerp",
"logfile",
"Mathf",
"microcontroller",
"nodelib",
"openrgb",
"pickone",
"pipx",
"pkgjs",
"plasteel",
"proxying",
"psycopg",
"pydantic",
"pyenv",
"rdap",
"rehype",
"resliced",
"RFID",
"Runnerspace",
"Tauri",
"undelete",
"uvicorn",
"vite",
"vitejs",
"wakatime",
"Xevion"
],
"files.exclude": {
"**/.trunk/*actions/": true,
"**/.trunk/*logs/": true,
"**/.trunk/*notifications/": true,
"**/.trunk/*out/": true,
"**/.trunk/*plugins/": true
},
"files.watcherExclude": {
"**/.trunk/*actions/": true,
"**/.trunk/*logs/": true,
"**/.trunk/*notifications/": true,
"**/.trunk/*out/": true,
"**/.trunk/*plugins/": true
},
"trunk.showPreexistingIssues": true,
"cursor.composer.shouldAllowCustomModes": true,
"[toml]": {
"editor.defaultFormatter": "tamasfe.even-better-toml"
},
"diffEditor.experimental.showMoves": true,
"vscord.status.image.small.editing.key": "https://raw.githubusercontent.com/LeonardSSH/vscord/main/assets/icons/vscode.png",
"vscord.status.image.large.notInFile.key": "https://raw.githubusercontent.com/LeonardSSH/vscord/main/assets/icons/idle-vscode.png",
"vscord.status.image.large.idle.key": "https://raw.githubusercontent.com/LeonardSSH/vscord/main/assets/icons/idle-vscode.png",
"vscord.status.details.text.notInFile": "",
"vscord.ignore.organizations": ["Invidae"],
"git.blame.editorDecoration.enabled": true,
"zig.zls.enabled": "on",
"vscord.ignore.workspaces": [".cursor"],
"markdownlint.lintWorkspaceGlobs": [
"**/*.{md,mkd,mdwn,mdown,markdown,markdn,mdtxt,mdtext,workbook}",
"!**/*.code-search",
"!**/bower_components",
"!**/node_modules",
"!**/.git",
"!**/vendor",
"!**/.cursor/rules"
],
"diffEditor.ignoreTrimWhitespace": true,
"diffEditor.hideUnchangedRegions.enabled": true,
"lldb.suppressUpdateNotifications": true,
"prettier.enableDebugLogs": true,
"scm.diffDecorationsGutterPattern": {
"added": true
},
"claudeCode.selectedModel": "default",
"files.simpleDialog.enable": true,
"cursor.terminal.usePreviewBox": true,
"java.trace.server": "verbose",
"java.server.launchMode": "Standard"
}

View File

@@ -109,7 +109,15 @@
"Bash(Select-String:*)",
"Bash(Select-Object:*)",
"Bash(findstr:*)",
"Bash(dir:*)"
"Bash(dir:*)",
"Bash(do)",
"Bash(then)",
"Bash(echo:*)",
"Bash(else)",
"Bash(fi)",
"Bash(done)",
"Bash(mise exec actionlint:*)",
"mcp__linear-server__create_issue"
],
"deny": [
"Bash(git push --force:*)",
@@ -172,8 +180,10 @@
"Bash(Move-Item:*)",
"Bash(rm:*)",
"Bash(del:*)"
]
],
"defaultMode": "default"
},
"model": "sonnet",
"statusLine": {
"type": "command",
"command": "bunx -y ccstatusline@latest",
@@ -215,7 +225,8 @@
"functional-programming@claude-code-workflows": true,
"shell-scripting@claude-code-workflows": true,
"observability-monitoring@claude-code-workflows": true,
"database-cloud-optimization@claude-code-workflows": true
"database-cloud-optimization@claude-code-workflows": true,
"jvm-languages@claude-code-workflows": true
},
"alwaysThinkingEnabled": true
}

View File

@@ -113,4 +113,8 @@ fi
# If WSL, add SSH key on startup (once per WSL start)
{{- if .wsl }}
eval `keychain --quiet --eval --agents ssh ~/.ssh/id_rsa`
{{ end }}
{{ end }}
# SDKMAN initialization
export SDKMAN_DIR="$HOME/.sdkman"
[[ -s "$HOME/.sdkman/bin/sdkman-init.sh" ]] && source "$HOME/.sdkman/bin/sdkman-init.sh"

View File

@@ -0,0 +1,267 @@
## where to store your database, default is your system data directory
## linux/mac: ~/.local/share/atuin/history.db
## windows: %USERPROFILE%/.local/share/atuin/history.db
# db_path = "~/.history.db"
## where to store your encryption key, default is your system data directory
## linux/mac: ~/.local/share/atuin/key
## windows: %USERPROFILE%/.local/share/atuin/key
# key_path = "~/.key"
## where to store your auth session token, default is your system data directory
## linux/mac: ~/.local/share/atuin/session
## windows: %USERPROFILE%/.local/share/atuin/session
# session_path = "~/.session"
## date format used, either "us" or "uk"
# dialect = "us"
## default timezone to use when displaying time
## either "l", "local" to use the system's current local timezone, or an offset
## from UTC in the format of "<+|->H[H][:M[M][:S[S]]]"
## for example: "+9", "-05", "+03:30", "-01:23:45", etc.
# timezone = "local"
## enable or disable automatic sync
auto_sync = true
## enable or disable automatic update checks
# update_check = true
## address of the sync server
sync_address = "https://atuin.imfucked.lol"
## how often to sync history. note that this is only triggered when a command
## is ran, so sync intervals may well be longer
## set it to 0 to sync after every command
# sync_frequency = "10m"
## which search mode to use
## possible values: prefix, fulltext, fuzzy, skim
# search_mode = "fuzzy"
## which filter mode to use by default
## possible values: "global", "host", "session", "directory", "workspace"
## consider using search.filters to customize the enablement and order of filter modes
# filter_mode = "global"
## With workspace filtering enabled, Atuin will filter for commands executed
## in any directory within a git repository tree (default: false).
##
## To use workspace mode by default when available, set this to true and
## set filter_mode to "workspace" or leave it unspecified and
## set search.filters to include "workspace" before other filter modes.
# workspaces = false
## which filter mode to use when atuin is invoked from a shell up-key binding
## the accepted values are identical to those of "filter_mode"
## leave unspecified to use same mode set in "filter_mode"
# filter_mode_shell_up_key_binding = "global"
## which search mode to use when atuin is invoked from a shell up-key binding
## the accepted values are identical to those of "search_mode"
## leave unspecified to use same mode set in "search_mode"
# search_mode_shell_up_key_binding = "fuzzy"
## which style to use
## possible values: auto, full, compact
# style = "auto"
## the maximum number of lines the interface should take up
## set it to 0 to always go full screen
# inline_height = 0
## Invert the UI - put the search bar at the top , Default to `false`
# invert = false
## enable or disable showing a preview of the selected command
## useful when the command is longer than the terminal width and is cut off
# show_preview = true
## what to do when the escape key is pressed when searching
## possible values: return-original, return-query
# exit_mode = "return-original"
## possible values: emacs, subl
# word_jump_mode = "emacs"
## characters that count as a part of a word
# word_chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
## number of context lines to show when scrolling by pages
# scroll_context_lines = 1
## use ctrl instead of alt as the shortcut modifier key for numerical UI shortcuts
## alt-0 .. alt-9
# ctrl_n_shortcuts = false
## default history list format - can also be specified with the --format arg
# history_format = "{time}\t{command}\t{duration}"
## prevent commands matching any of these regexes from being written to history.
## Note that these regular expressions are unanchored, i.e. if they don't start
## with ^ or end with $, they'll match anywhere in the command.
## For details on the supported regular expression syntax, see
## https://docs.rs/regex/latest/regex/#syntax
# history_filter = [
# "^secret-cmd",
# "^innocuous-cmd .*--secret=.+",
# ]
## prevent commands run with cwd matching any of these regexes from being written
## to history. Note that these regular expressions are unanchored, i.e. if they don't
## start with ^ or end with $, they'll match anywhere in CWD.
## For details on the supported regular expression syntax, see
## https://docs.rs/regex/latest/regex/#syntax
# cwd_filter = [
# "^/very/secret/area",
# ]
## Configure the maximum height of the preview to show.
## Useful when you have long scripts in your history that you want to distinguish
## by more than the first few lines.
# max_preview_height = 4
## Configure whether or not to show the help row, which includes the current Atuin
## version (and whether an update is available), a keymap hint, and the total
## amount of commands in your history.
# show_help = true
## Configure whether or not to show tabs for search and inspect
# show_tabs = true
## Configure whether or not the tabs row may be auto-hidden, which includes the current Atuin
## tab, such as Search or Inspector, and other tabs you may wish to see. This will
## only be hidden if there are fewer than this count of lines available, and does not affect the use
## of keyboard shortcuts to switch tab. 0 to never auto-hide, default is 8 (lines).
## This is ignored except in `compact` mode.
# auto_hide_height = 8
## Defaults to true. This matches history against a set of default regex, and will not save it if we get a match. Defaults include
## 1. AWS key id
## 2. Github pat (old and new)
## 3. Slack oauth tokens (bot, user)
## 4. Slack webhooks
## 5. Stripe live/test keys
# secrets_filter = true
## Defaults to true. If enabled, upon hitting enter Atuin will immediately execute the command. Press tab to return to the shell and edit.
# This applies for new installs. Old installs will keep the old behaviour unless configured otherwise.
enter_accept = false
## Defaults to "emacs". This specifies the keymap on the startup of `atuin
## search`. If this is set to "auto", the startup keymap mode in the Atuin
## search is automatically selected based on the shell's keymap where the
## keybinding is defined. If this is set to "emacs", "vim-insert", or
## "vim-normal", the startup keymap mode in the Atuin search is forced to be
## the specified one.
# keymap_mode = "auto"
## Cursor style in each keymap mode. If specified, the cursor style is changed
## in entering the cursor shape. Available values are "default" and
## "{blink,steady}-{block,underline,bar}".
# keymap_cursor = { emacs = "blink-block", vim_insert = "blink-block", vim_normal = "steady-block" }
# network_connect_timeout = 5
# network_timeout = 5
## Timeout (in seconds) for acquiring a local database connection (sqlite)
# local_timeout = 5
## Set this to true and Atuin will minimize motion in the UI - timers will not update live, etc.
## Alternatively, set env NO_MOTION=true
# prefers_reduced_motion = false
[stats]
## Set commands where we should consider the subcommand for statistics. Eg, kubectl get vs just kubectl
# common_subcommands = [
# "apt",
# "cargo",
# "composer",
# "dnf",
# "docker",
# "git",
# "go",
# "ip",
# "kubectl",
# "nix",
# "nmcli",
# "npm",
# "pecl",
# "pnpm",
# "podman",
# "port",
# "systemctl",
# "tmux",
# "yarn",
# ]
## Set commands that should be totally stripped and ignored from stats
# common_prefix = ["sudo"]
## Set commands that will be completely ignored from stats
# ignored_commands = [
# "cd",
# "ls",
# "vi"
# ]
[keys]
# Defaults to true. If disabled, using the up/down key won't exit the TUI when scrolled past the first/last entry.
# scroll_exits = true
[sync]
# Enable sync v2 by default
# This ensures that sync v2 is enabled for new installs only
# In a later release it will become the default across the board
records = true
[preview]
## which preview strategy to use to calculate the preview height (respects max_preview_height).
## possible values: auto, static
## auto: length of the selected command.
## static: length of the longest command stored in the history.
## fixed: use max_preview_height as fixed height.
# strategy = "auto"
[daemon]
## Enables using the daemon to sync. Requires the daemon to be running in the background. Start it with `atuin daemon`
# enabled = false
## How often the daemon should sync in seconds
# sync_frequency = 300
## The path to the unix socket used by the daemon (on unix systems)
## linux/mac: ~/.local/share/atuin/atuin.sock
## windows: Not Supported
# socket_path = "~/.local/share/atuin/atuin.sock"
## Use systemd socket activation rather than opening the given path (the path must still be correct for the client)
## linux: false
## mac/windows: Not Supported
# systemd_socket = false
## The port that should be used for TCP on non unix systems
# tcp_port = 8889
# [theme]
## Color theme to use for rendering in the terminal.
## There are some built-in themes, including the base theme ("default"),
## "autumn" and "marine". You can add your own themes to the "./themes" subdirectory of your
## Atuin config (or ATUIN_THEME_DIR, if provided) as TOML files whose keys should be one or
## more of AlertInfo, AlertWarn, AlertError, Annotation, Base, Guidance, Important, and
## the string values as lowercase entries from this list:
## https://ogeon.github.io/docs/palette/master/palette/named/index.html
## If you provide a custom theme file, it should be called "NAME.toml" and the theme below
## should be the stem, i.e. `theme = "NAME"` for your chosen NAME.
# name = "autumn"
## Whether the theme manager should output normal or extra information to help fix themes.
## Boolean, true or false. If unset, left up to the theme manager.
# debug = true
[search]
## The list of enabled filter modes, in order of priority.
## The "workspace" mode is skipped when not in a workspace or workspaces = false.
## Default filter mode can be overridden with the filter_mode setting.
# filters = [ "global", "host", "session", "workspace", "directory" ]

View File

@@ -0,0 +1,4 @@
# Activate mise automatically on shell startup
if command -q mise
mise activate fish | source
end

View File

@@ -1,10 +1,4 @@
# Fish shell plugins managed by Fisher
# https://github.com/jorgebucaran/fisher
#
# To install all plugins: fisher update
# To add a plugin: fisher install <plugin>
# To remove a plugin: fisher remove <plugin>
jorgebucaran/fisher
ilancosman/tide@v6
patrickf1/fzf.fish

View File

@@ -1,11 +0,0 @@
# Lazy-load mise on first use
function mise --wraps mise
# Initialize mise only once
if not set -q __mise_initialized
set -g __mise_initialized 1
command mise activate fish | source
end
# Execute the actual mise command
command mise $argv
end

View File

@@ -0,0 +1,4 @@
function sdk --description 'SDKMAN wrapper for Fish shell'
# Run sdk commands in a Bash subshell
bash -c "source '$HOME/.sdkman/bin/sdkman-init.sh' && sdk $argv"
end

View File

@@ -4,3 +4,10 @@ include current-theme.conf
# END_KITTY_THEME
enable_audio_bell no
font_family MesloLGS NF
# Disable command finish notifications (fixes cryptic "4;0;0" notifications)
notify_on_cmd_finish never
# Claude Code: Enable Shift+Enter for multi-line prompts
map shift+enter send_text all \n

0
home/hooks/.update_pre.ts Normal file → Executable file
View File

View File

@@ -1,3 +1,4 @@
nodejs latest
pnpm latest
zoxide 0.9.6
deno 2.2.2