Compare commits

...

13 Commits

Author SHA1 Message Date
Bas Grolleman
ea63981752 Random updates I forgot to commit 2025-11-24 11:50:05 +01:00
Bas Grolleman
9c31c06ba5 Update virtual desktop per screen 2025-11-24 11:48:35 +01:00
Bas Grolleman
18818fad92 Disable tmux, cleanup aerospace 2025-08-05 08:14:06 +02:00
Bas Grolleman
b8284c9c44 Update avante to use gpt-4.1 2025-08-01 11:30:14 +02:00
Bas Grolleman
a2a957c052 Add avante, sops and catppuccin to nvim 2025-07-31 14:27:31 +02:00
Bas Grolleman
2c2399308f Update aerospace 2025-07-31 14:26:48 +02:00
Bas Grolleman
7c62c0f379 Update tmux.conf 2025-07-01 16:45:37 +02:00
Bas Grolleman
38855d6a3b Aerospace update to match i3 2025-07-01 16:45:19 +02:00
Bas Grolleman
f2f7054011 zsh update to add zoxide 2025-07-01 16:44:38 +02:00
Bas Grolleman
db7af6c6f2 Adding tmux zshrc config 2025-06-13 11:18:21 +02:00
Bas Grolleman
13c65548dc Add aerospace 2025-06-10 08:47:43 +02:00
Bas Grolleman
3875cb32c5 Merge changes 2025-06-10 08:45:35 +02:00
Bas Grolleman
6aee231663 Changes on Mac 2025-06-10 08:43:51 +02:00
17 changed files with 497 additions and 38 deletions

View File

@@ -1 +1,2 @@
.DS_Store
lazy-lock.json lazy-lock.json

196
aerospace.toml Normal file
View File

@@ -0,0 +1,196 @@
after-startup-command = ['exec-and-forget sketchybar']
# Notify Sketchybar about workspace change
exec-on-workspace-change = ['/bin/bash', '-c',
'sketchybar --trigger aerospace_workspace_change FOCUSED_WORKSPACE=$AEROSPACE_FOCUSED_WORKSPACE',
# 'exec-and-forget borders active_color=0xffe1e3e4 inactive_color=0xff494d64 width=5.0'
]
# Start AeroSpace at login
start-at-login = true
# Normalizations. See: https://nikitabobko.github.io/AeroSpace/guide#normalization
enable-normalization-flatten-containers = true
enable-normalization-opposite-orientation-for-nested-containers = true
# See: https://nikitabobko.github.io/AeroSpace/guide#layouts
# The 'accordion-padding' specifies the size of accordion padding
# You can set 0 to disable the padding feature
accordion-padding = 40
# Possible values: tiles|accordion
default-root-container-layout = 'tiles'
# Possible values: horizontal|vertical|auto
# 'auto' means: wide monitor (anything wider than high) gets horizontal orientation,
# tall monitor (anything higher than wide) gets vertical orientation
default-root-container-orientation = 'auto'
# Mouse follows focus when focused monitor changes
# Drop it from your config, if you don't like this behavior
# See https://nikitabobko.github.io/AeroSpace/guide#on-focus-changed-callbacks
# See https://nikitabobko.github.io/AeroSpace/commands#move-mouse
# Fallback value (if you omit the key): on-focused-monitor-changed = []
on-focused-monitor-changed = ['move-mouse monitor-lazy-center']
# You can effectively turn off macOS "Hide application" (cmd-h) feature by toggling this flag
# Useful if you don't use this macOS feature, but accidentally hit cmd-h or cmd-alt-h key
# Also see: https://nikitabobko.github.io/AeroSpace/goodness#disable-hide-app
automatically-unhide-macos-hidden-apps = false
# [[on-window-detected]]
# if.app-id = 'com.apple.systempreferences'
# if.app-name-regex-substring = 'settings'
# if.window-title-regex-substring = 'substring'
# if.workspace = 'workspace-name'
# if.during-aerospace-startup = true
# check-further-callbacks = true
# run = ['layout floating', 'move-node-to-workspace S'] # The callback itself
[[on-window-detected]]
if.app-name-regex-substring = 'finder'
run = 'layout floating'
#if.app-name-regex-substring = 'teams'
#run = ['layout floating','move-node-to-workspace 3']
#if.app-name-regex-substring = 'outlook'
#run = ['move-node-to-workspace 4']
# Possible values: (qwerty|dvorak)
# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping
[key-mapping]
preset = 'qwerty'
# Gaps between windows (inner-*) and between monitor edges (outer-*).
# Possible values:
# - Constant: gaps.outer.top = 8
# - Per monitor: gaps.outer.top = [{ monitor.main = 16 }, { monitor."some-pattern" = 32 }, 24]
# In this example, 24 is a default value when there is no match.
# Monitor pattern is the same as for 'workspace-to-monitor-force-assignment'.
# See: https://nikitabobko.github.io/AeroSpace/guide#assign-workspaces-to-monitors
[gaps]
inner.horizontal = 5
inner.vertical = 5
outer.left = 5
outer.bottom = 5
outer.top = 5
outer.right = 5
# 'main' binding mode declaration
# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes
# 'main' binding mode must be always presented
# Fallback value (if you omit the key): mode.main.binding = {}
[mode.main.binding]
# All possible keys:
# - Letters. a, b, c, ..., z
# - Numbers. 0, 1, 2, ..., 9
# - Keypad numbers. keypad0, keypad1, keypad2, ..., keypad9
# - F-keys. f1, f2, ..., f20
# - Special keys. minus, equal, period, comma, slash, backslash, quote, semicolon, backtick,
# leftSquareBracket, rightSquareBracket, space, enter, esc, backspace, tab
# - Keypad special. keypadClear, keypadDecimalMark, keypadDivide, keypadEnter, keypadEqual,
# keypadMinus, keypadMultiply, keypadPlus
# - Arrows. left, down, up, right
# All possible modifiers: cmd, alt, ctrl, shift
# All possible commands: https://nikitabobko.github.io/AeroSpace/commands
# See: https://nikitabobko.github.io/AeroSpace/commands#exec-and-forget
# You can uncomment the following lines to open up terminal with alt + enter shortcut (like in i3)
alt-enter = '''exec-and-forget open -na iTerm'''
alt-space = ['layout floating tiling', 'mode main'] # Toggle between floating and tiling layout
# alt-enter = '''exec-and-forget osascript -e '
# tell application "Terminal"
# do script
# activate
# end tell'
# '''
alt-ctrl-shift-f = 'fullscreen'
alt-ctrl-f = 'layout floating'
#alt-shift-left = 'join-with left'
#alt-shift-down = 'join-with down'
#alt-shift-up = 'join-with up'
#alt-shift-right = 'join-with right'
# See: https://nikitabobko.github.io/AeroSpace/commands#layout
cmd-alt-slash = 'layout tiles horizontal vertical'
cmd-alt-shift-slash = 'layout accordion horizontal vertical'
# See: https://nikitabobko.github.io/AeroSpace/commands#focus
alt-h = 'focus left'
alt-j = 'focus down'
alt-k = 'focus up'
alt-l = 'focus right'
# See: https://nikitabobko.github.io/AeroSpace/commands#move
alt-shift-h = 'move left'
alt-shift-j = 'move down'
alt-shift-k = 'move up'
alt-shift-l = 'move right'
# See: https://nikitabobko.github.io/AeroSpace/commands#resize
cmd-shift-minus = 'resize smart -200'
cmd-shift-equal = 'resize smart +200'
# See: https://nikitabobko.github.io/AeroSpace/commands#workspace
alt-1 = 'workspace 1'
alt-2 = 'workspace 2'
alt-3 = 'workspace 3'
alt-4 = 'workspace 4'
alt-5 = 'workspace 5'
alt-6 = 'workspace 6'
alt-7 = 'workspace 7'
alt-8 = 'workspace 8'
# Allow switching to extra screen
alt-0 = 'workspace 10'
# See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace
# Removing --focus-follows-window
alt-shift-1 = 'move-node-to-workspace 1'
alt-shift-2 = 'move-node-to-workspace 2'
alt-shift-3 = 'move-node-to-workspace 3'
alt-shift-4 = 'move-node-to-workspace 4'
alt-shift-5 = 'move-node-to-workspace 5'
alt-shift-6 = 'move-node-to-workspace 6'
alt-shift-7 = 'move-node-to-workspace 7'
alt-shift-8 = 'move-node-to-workspace 8'
# See: https://nikitabobko.github.io/AeroSpace/commands#mode
alt-shift-semicolon = 'mode service'
alt-r = 'mode resize'
# 'service' binding mode declaration.
# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes
[mode.service.binding]
esc = ['reload-config', 'mode main']
r = ['flatten-workspace-tree', 'mode main'] # reset layout
f = ['layout floating tiling', 'mode main'] # Toggle between floating and tiling layout
m = ['workspace 1','layout accordion horizontal vertical','workspace 2','layout accordion horizontal vertical','workspace 3','layout accordion horizontal vertical','workspace 4','layout accordion horizontal vertical','workspace 5','layout accordion horizontal vertical','workspace 6','layout accordion horizontal vertical']
d = ['workspace 1','layout tiles horizontal vertical','workspace 2','layout tiles horizontal vertical','workspace 3','layout tiles horizontal vertical','workspace 4','layout tiles horizontal vertical','workspace 5','layout tiles horizontal vertical','workspace 6','layout tiles horizontal vertical']
backspace = ['close-all-windows-but-current', 'mode main']
[mode.resize.binding]
1 = ['resize width 250','mode main']
2 = ['resize width 1000','mode main']
3 = ['resize width 2000','mode main']
4 = ['resize width 4000','mode main']
h = 'resize width -100'
j = 'resize height +100'
k = 'resize height -100'
l = 'resize width +100'
enter = 'mode main'
esc = 'mode main'
[workspace-to-monitor-force-assignment]
1 = 'main'
2 = 'main'
3 = 'main'
4 = 'main'
5 = 'main'
6 = 'secondary'

View File

@@ -11,7 +11,6 @@
"lazyvim.plugins.extras.editor.mini-move", "lazyvim.plugins.extras.editor.mini-move",
"lazyvim.plugins.extras.editor.neo-tree", "lazyvim.plugins.extras.editor.neo-tree",
"lazyvim.plugins.extras.editor.outline", "lazyvim.plugins.extras.editor.outline",
"lazyvim.plugins.extras.editor.snacks_explorer",
"lazyvim.plugins.extras.editor.telescope", "lazyvim.plugins.extras.editor.telescope",
"lazyvim.plugins.extras.lang.ansible", "lazyvim.plugins.extras.lang.ansible",
"lazyvim.plugins.extras.lang.clojure", "lazyvim.plugins.extras.lang.clojure",
@@ -31,7 +30,7 @@
], ],
"install_version": 8, "install_version": 8,
"news": { "news": {
"NEWS.md": "10960" "NEWS.md": "11866"
}, },
"version": 8 "version": 8
} }

View File

@@ -9,4 +9,18 @@ local wk = require("which-key")
wk.add({ wk.add({
{ "<leader>N", group = "Notes" }, { "<leader>N", group = "Notes" },
{ "<leader>Nt", ":Journal<CR>", desc = "Today" }, { "<leader>Nt", ":Journal<CR>", desc = "Today" },
{ "<leader>C", group = "ChatGPT" },
{ "<leader>CC", ":ChatGPT<CR>", desc = "ChatGPT" },
{ "<leader>Ce", "<cmd>ChatGPTEditWithInstruction<CR>", desc = "Edit with instruction", mode = { "n", "v" } },
{ "<leader>Cg", "<cmd>ChatGPTRun grammar_correction<CR>", desc = "Grammar Correction", mode = { "n", "v" } },
-- t = { "<cmd>ChatGPTRun translate<CR>", "Translate", mode = { "n", "v" } },
-- k = { "<cmd>ChatGPTRun keywords<CR>", "Keywords", mode = { "n", "v" } },
-- d = { "<cmd>ChatGPTRun docstring<CR>", "Docstring", mode = { "n", "v" } },
-- a = { "<cmd>ChatGPTRun add_tests<CR>", "Add Tests", mode = { "n", "v" } },
{ "<leader>Co", "<cmd>ChatGPTRun optimize_code<CR>", desc = "Optimize Code", mode = { "n", "v" } },
-- s = { "<cmd>ChatGPTRun summarize<CR>", "Summarize", mode = { "n", "v" } },
{ "<leader>Cf", "<cmd>ChatGPTRun fix_bugs<CR>", desc = "Fix Bugs", mode = { "n", "v" } },
-- x = { "<cmd>ChatGPTRun explain_code<CR>", "Explain Code", mode = { "n", "v" } },
-- r = { "<cmd>ChatGPTRun roxygen_edit<CR>", "Roxygen Edit", mode = { "n", "v" } },
-- l = { "<cmd>ChatGPTRun code_readability_analysis<CR>", "Code Readability Analysis", mode = { "n", "v" } },
}) })

View File

@@ -38,7 +38,7 @@ require("lazy").setup({
version = false, -- always use the latest git commit version = false, -- always use the latest git commit
-- version = "*", -- try installing the latest stable version for plugins that support semver -- version = "*", -- try installing the latest stable version for plugins that support semver
}, },
install = { colorscheme = { "tokyonight", "habamax" } }, install = { colorscheme = { "catppuccin" } },
checker = { checker = {
enabled = true, -- check for plugin updates periodically enabled = true, -- check for plugin updates periodically
notify = false, -- notify on update notify = false, -- notify on update

View File

@@ -1,17 +0,0 @@
return {
"jackMort/ChatGPT.nvim",
event = "VeryLazy",
config = function()
require("chatgpt").setup({
openai_params = {
model = "gpt-4.1"
}
})
end,
dependencies = {
"MunifTanjim/nui.nvim",
"nvim-lua/plenary.nvim",
"folke/trouble.nvim", -- optional
"nvim-telescope/telescope.nvim"
}
}

View File

@@ -0,0 +1,58 @@
return {
{
"yetone/avante.nvim",
build = "make",
event = "VeryLazy",
version = false, -- Never set this value to "*"! Never!
---@module 'avante'
---@type avante.Config
opts = {
provider = "gpt-5-codex",
providers = {
["gpt-5-codex"] = {
__inherited_from = "openai",
model = "gpt-5-codex",
temperature = 1,
},
},
},
dependencies = {
"nvim-lua/plenary.nvim",
"MunifTanjim/nui.nvim",
--- The below dependencies are optional,
"nvim-mini/mini.pick", -- for file_selector provider mini.pick
"nvim-telescope/telescope.nvim", -- for file_selector provider telescope
"hrsh7th/nvim-cmp", -- autocompletion for avante commands and mentions
"ibhagwan/fzf-lua", -- for file_selector provider fzf
"stevearc/dressing.nvim", -- for input provider dressing
"folke/snacks.nvim", -- for input provider snacks
"nvim-tree/nvim-web-devicons", -- or echasnovski/mini.icons
"zbirenbaum/copilot.lua", -- for providers='copilot'
{
-- support for image pasting
"HakonHarnes/img-clip.nvim",
event = "VeryLazy",
opts = {
-- recommended settings
default = {
embed_image_as_base64 = false,
prompt_for_file_name = false,
drag_and_drop = {
insert_mode = true,
},
-- required for Windows users
use_absolute_path = true,
},
},
},
{
-- Make sure to set this up properly if you have lazy=true
"MeanderingProgrammer/render-markdown.nvim",
opts = {
file_types = { "markdown", "Avante" },
},
ft = { "markdown", "Avante" },
},
},
},
}

View File

@@ -1,6 +1,9 @@
return { return {
{ {
"saghen/blink.cmp", "saghen/blink.cmp",
dependencies = {
"Kaiser-Yang/blink-cmp-avante",
},
opts = { opts = {
completion = { completion = {
ghost_text = { ghost_text = {
@@ -16,6 +19,20 @@ return {
auto_show = true, auto_show = true,
}, },
}, },
file_selector = {
provider = "telescope",
provider_opts = {},
},
sources = {
default = { "avante", "lsp", "path", "buffer" },
providers = {
avante = {
module = "blink-cmp-avante",
name = "Avante",
opts = {},
},
},
},
}, },
}, },
} }

View File

@@ -0,0 +1,6 @@
return {
{ "catppuccin/nvim" },
{ "LazyVim/LazyVim", opts = {
colorscheme = "catppuccin",
} },
}

View File

@@ -0,0 +1,18 @@
return {
"jackMort/ChatGPT.nvim",
event = "VeryLazy",
config = function()
require("chatgpt").setup({
openai_params = {
model = "gpt-4.1",
max_tokens = 4095,
},
})
end,
dependencies = {
"MunifTanjim/nui.nvim",
"nvim-lua/plenary.nvim",
"folke/trouble.nvim", -- optional
"nvim-telescope/telescope.nvim",
},
}

View File

@@ -1,3 +0,0 @@
return {
"benlubas/neorg-interim-ls",
}

View File

@@ -3,21 +3,21 @@ return {
config = function() config = function()
require("journal").setup({ require("journal").setup({
filetype = "md", -- Filetype to use for new journal entries filetype = "md", -- Filetype to use for new journal entries
root = "~/Notes/Personal/journals", -- Root directory for journal entries root = "~/Notes/Journal", -- Root directory for journal entries
date_format = "%Y-%m-%d", -- Date format for `:Journal <date-modifier>` date_format = "%Y%m%d", -- Date format for `:Journal <date-modifier>`
autocomplete_date_modifier = "end", -- "always"|"never"|"end". Enable date modifier autocompletion autocomplete_date_modifier = "always", -- "always"|"never"|"end". Enable date modifier autocompletion
-- Configuration for journal entries -- Configuration for journal entries
journal = { journal = {
-- Default configuration for `:Journal <date-modifier>` -- Default configuration for `:Journal <date-modifier>`
format = "%Y_%m_%d", format = "%Y%m%d",
template = "# %A %B %d %Y\n", template = "# %A %B %d %Y\n",
frequency = { day = 1 }, frequency = { day = 1 },
-- Nested configurations for `:Journal <type> <type> ... <date-modifier>` -- Nested configurations for `:Journal <type> <type> ... <date-modifier>`
entries = { entries = {
day = { day = {
format = "%Y_%m_%d", -- Format of the journal entry in the filesystem. format = "%Y%m%d", -- Format of the journal entry in the filesystem.
template = "# %A %B %d %Y\n", -- Optional. Template used when creating a new journal entry template = "# %A %B %d %Y\n", -- Optional. Template used when creating a new journal entry
frequency = { day = 1 }, -- Optional. The frequency of the journal entry. Used for `:Journal next`, `:Journal -2` etc frequency = { day = 1 }, -- Optional. The frequency of the journal entry. Used for `:Journal next`, `:Journal -2` etc
}, },

13
nvim/lua/plugins/kiwi.lua Normal file
View File

@@ -0,0 +1,13 @@
return {
"serenevoid/kiwi.nvim",
opts = {
{
name = "notes",
path = "Notes",
},
},
keys = {
{ "T", ':lua require("kiwi").todo.toggle()<cr>', desc = "Toggle Markdown Task" },
},
lazy = true,
}

View File

@@ -1,6 +1,6 @@
return { return {
"MeanderingProgrammer/render-markdown.nvim", "MeanderingProgrammer/render-markdown.nvim",
dependencies = { "nvim-treesitter/nvim-treesitter", "echasnovski/mini.nvim" }, -- if you use the mini.nvim suite dependencies = { "nvim-treesitter/nvim-treesitter", "nvim-mini/mini.nvim" }, -- if you use the mini.nvim suite
---@module 'render-markdown' ---@module 'render-markdown'
---@type render.md.UserConfig ---@type render.md.UserConfig
opts = {}, opts = {},

11
nvim/lua/plugins/sops.lua Normal file
View File

@@ -0,0 +1,11 @@
return {
"lucidph3nx/nvim-sops",
event = { "BufEnter" },
opts = {
debug = true,
defaults = {
-- Faking awsProfile since the variable has spaces
awsProfile = "Fake",
},
},
}

View File

@@ -1,8 +1,8 @@
# Load catppuccin
run ~/.config/tmux/plugins/catppuccin/tmux/catppuccin.tmux run ~/.config/tmux/plugins/catppuccin/tmux/catppuccin.tmux
# Options to make tmux more pleasant # Options to make tmux more pleasant
set -g mouse on #set -g mouse on
set -g default-terminal "tmux-256color" set -g default-terminal "tmux-256color"
set -g base-index 1 set -g base-index 1
set -g renumber-windows on set -g renumber-windows on
@@ -10,9 +10,9 @@ set -g renumber-windows on
# Configure the catppuccin plugin # Configure the catppuccin plugin
set -g @catppuccin_flavor "mocha" set -g @catppuccin_flavor "mocha"
set -g @catppuccin_window_status_style "slanted" set -g @catppuccin_window_status_style "slanted"
set -g @catppuccin_window_current_text " #{window_name} #{b:pane_current_path}"
set -g @catppuccin_window_text " #{window_name} #{b:pane_current_path}"
# Load catppuccin
run ~/.config/tmux/plugins/catppuccin/tmux/catppuccin.tmux
# Make the status line pretty and add some modules # Make the status line pretty and add some modules
set-option -g status-position top set-option -g status-position top
@@ -23,10 +23,8 @@ set -g status-left "#[fg=#{@thm_teal},bg=#{@thm_crust}]#[fg=#{@thm_crust},bg=
#set -g status-left "#[fg=$thm_green,bg=$thm_bg,nobold,nounderscore,noitalics]#[fg=$thm_bg,bg=$thm_green,nobold,nounderscore,noitalics] #[fg=$thm_fg,bg=$thm_bg]#(hostname -s) " #set -g status-left "#[fg=$thm_green,bg=$thm_bg,nobold,nounderscore,noitalics]#[fg=$thm_bg,bg=$thm_green,nobold,nounderscore,noitalics] #[fg=$thm_fg,bg=$thm_bg]#(hostname -s) "
set -g status-right "#{E:@catppuccin_status_application}" set -g status-right "#{E:@catppuccin_status_application}"
#set -agF status-right "#{E:@catppuccin_status_cpu}"
set -ag status-right "#{E:@catppuccin_status_session}" set -ag status-right "#{E:@catppuccin_status_session}"
#set -ag status-right "#{E:@catppuccin_status_uptime}"
#set -agF status-right "#{E:@catppuccin_status_battery}"
#run ~/.config/tmux/plugins/tmux-plugins/tmux-cpu/cpu.tmux #
#run ~/.config/tmux/plugins/tmux-plugins/tmux-battery/battery.tmux #set -g pane-border-status top
#set -g pane-border-format "#{pane_index} #{pane_current_command}"

148
zshrc Normal file
View File

@@ -0,0 +1,148 @@
# ~~~ Minh Config
# Optimized .zshrc for improved startup time
# Enable profiling when needed: zmodload zsh/zprof
# ~~~~~~~~~~~~~~~~~~~~~~ Environment Setup ~~~~~~~~~~~~~~~~~~~~~~
# XDG Base Directory Specification
export XDG_CONFIG_HOME="$HOME/.config"
export XDG_CACHE_HOME="$HOME/.cache"
export XDG_DATA_HOME="$HOME/.local/share"
# Language and compilation
export LANG=en_US.UTF-8
# ~~~~~~~~~~~~~~~~~~~~~~ Homebrew Setup ~~~~~~~~~~~~~~~~~~~~~~
if [[ -f "/opt/homebrew/bin/brew" ]]; then
eval "$(/opt/homebrew/bin/brew shellenv)"
fi
# ~~~~~~~~~~~~~~~~~~~~~~ Core Zsh Configuration ~~~~~~~~~~~~~~~~~~~~~~
# Enable completion system (call compinit only once)
autoload -Uz compinit
# Check if compinit needs to be run (once per day for performance)
for dump in ~/.zcompdump(N.mh+24); do
compinit
break
done
[[ -z "$dump" ]] && compinit -C
# Enhanced completion styling for better UX
zstyle ':completion:*' menu select
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=* l:|=*'
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
zstyle ':completion:*' completer _complete _match _approximate
zstyle ':completion:*:match:*' original only
zstyle ':completion:*:approximate:*' max-errors 1 numeric
zstyle ':completion:*' use-cache on
zstyle ':completion:*' cache-path ~/.zsh/cache
# Ensure cache directory exists
[[ ! -d ~/.zsh/cache ]] && mkdir -p ~/.zsh/cache
# Group completions by category
zstyle ':completion:*' group-name ''
zstyle ':completion:*:descriptions' format '%B%d%b'
zstyle ':completion:*:messages' format '%d'
zstyle ':completion:*:warnings' format 'No matches for: %d'
# Process completion improvements
zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#) ([0-9a-z-]#)*=01;34=0=01'
zstyle ':completion:*:*:*:*:processes' command "ps -u $USER -o pid,user,comm -w -w"
# ~~~~~~~~~~~~~~~~~~~~~~ Plugin Loading (Conditional) ~~~~~~~~~~~~~~~~~~~~~~
# Function to load plugins if they exist
load_plugin() {
[[ -f "$1" ]] && source "$1"
}
# Load zsh plugins
load_plugin "$HOMEBREW_PREFIX/share/zsh-autosuggestions/zsh-autosuggestions.zsh"
load_plugin "$HOMEBREW_PREFIX/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh"
load_plugin "$HOMEBREW_PREFIX/share/zsh-history-substring-search/zsh-history-substring-search.zsh"
load_plugin "$XDG_CONFIG_HOME/zsh-z/zsh-z.plugin.zsh"
# ~~~~~~~~~~~~~~~~~~~~~~ Zsh-Autosuggestions Configuration ~~~~~~~~~~~~~~~~~~~~~~
# Configure autosuggestions for seamless history integration
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=#555555,bold"
ZSH_AUTOSUGGEST_STRATEGY=(history completion)
ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE=20
ZSH_AUTOSUGGEST_USE_ASYNC=true
ZSH_AUTOSUGGEST_MANUAL_REBIND=1
# History-based suggestions prioritization
ZSH_AUTOSUGGEST_HISTORY_IGNORE="(ls|cd|pwd|exit|clear)"
# ~~~~~~~~~~~~~~~~~~~~~~ Completion Setup ~~~~~~~~~~~~~~~~~~~~~~
# Add homebrew completions if available
if command -v brew &>/dev/null; then
fpath+="$HOMEBREW_PREFIX/share/zsh-completions"
fpath+="$HOMEBREW_PREFIX/share/zsh/site-functions"
fi
# ~~~~~~~~~~~~~~~~~~~~~~ Editor & Shell Configuration ~~~~~~~~~~~~~~~~~~~~~~
if [[ -n $SSH_CONNECTION ]]; then
export EDITOR='vim'
else
export EDITOR='nvim'
fi
# ~~~~~~~~~~~~~~~~~~~~~ History Configuration ~~~~~~~~~~~~~~~~~~~~~~
HISTFILE=~/.zsh_history
HISTSIZE=100000
SAVEHIST=100000
# Enhanced history options for better autosuggestions
setopt HIST_IGNORE_SPACE
setopt HIST_IGNORE_DUPS
setopt HIST_IGNORE_ALL_DUPS
setopt HIST_SAVE_NO_DUPS
setopt HIST_REDUCE_BLANKS
setopt HIST_VERIFY
# ~~~ Bas Config
export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
export PATH="${HOME}/Library/Python/3.9/bin:${PATH}"
export PATH="${HOME}/bin:${HOMEBREW_PREFIX}/opt/openssl/bin:$PATH"
eval "$(direnv hook zsh)"
# Disable auto tmux for now, my tiling window manager is enough
#[[ -v PS1 ]] && [[ ! -v TMUX ]] && tmux
# Function to get the current Git branch and remote
git_info() {
local branch
local remote
# Get the current branch
branch=$(git rev-parse --abbrev-ref HEAD 2>/dev/null)
# Get the current remote
remote=$(git config --get remote.origin.url 2>/dev/null)
# Format the output
if [[ -n $branch ]]; then
#echo "[$branch] $(basename "$remote")"
echo "[$branch]"
fi
}
setopt PROMPT_SUBST
PROMPT='%F{green}%n@%m %F{blue}%~ %F{yellow}$(git_info)%f %# '
export OPENAI_API_KEY=$(cat ~/.openai.key)
export KAGI_API_KEY=$(cat ~/.kagi.key)
eval "$(zoxide init zsh)"
alias cd=z
cat <<EOF
Reminders:
Use z
EOF
export SSH_AUTH_SOCK=~/Library/Group\ Containers/2BUA8C4S2C.com.1password/t/agent.sock
source ~/.zsh/zsh-vim-mode/zsh-vim-mode.plugin.zsh
alias k=kubectl