Compare commits

..

9 Commits

Author SHA1 Message Date
Anthony Oteri 6ad478aa80 feat: add alias for lazygit to use the correct config file
Signed-off-by: Anthony Oteri <4360016+anthonyoteri@users.noreply.github.com>
2025-11-08 12:13:41 -05:00
Anthony Oteri 067f864373 feat: add lazygit config
Signed-off-by: Anthony Oteri <4360016+anthonyoteri@users.noreply.github.com>
2025-11-08 12:13:14 -05:00
Anthony Oteri 4558617127 docs: update readme 2025-11-08 11:56:50 -05:00
Anthony Oteri a3cf3d1d0c feat: optimize topgrade configuration 2025-11-08 11:56:44 -05:00
Anthony Oteri 53029f1070 feat: update btop configuration 2025-11-08 11:56:37 -05:00
Anthony Oteri a62f1ebd2c feat: improve tmux config 2025-11-08 11:42:51 -05:00
Anthony Oteri af6dc8195f feat: adjust prompt configuration 2025-11-08 11:38:13 -05:00
Anthony Oteri b3eee10269 feat: improve kitty config for efficiency, performance, and readability 2025-11-08 11:33:32 -05:00
Anthony Oteri c2aafeaafe feat: optimize zsh with lazy-loading, and other improvements 2025-11-08 11:27:40 -05:00
8 changed files with 588 additions and 213 deletions
+7 -7
View File
@@ -2,7 +2,7 @@
#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes. #* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes.
#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes" #* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes"
color_theme = "Default" color_theme = "gruvbox"
#* If the theme set background should be shown, set to False if you want terminal background transparency. #* If the theme set background should be shown, set to False if you want terminal background transparency.
theme_background = True theme_background = True
@@ -22,7 +22,7 @@ presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:defaul
#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists. #* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists.
#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift. #* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift.
vim_keys = False vim_keys = True
#* Rounded corners on boxes, is ignored if TTY mode is ON. #* Rounded corners on boxes, is ignored if TTY mode is ON.
rounded_corners = True rounded_corners = True
@@ -32,19 +32,19 @@ rounded_corners = True
#* "block" has half the resolution of braille but uses more common characters. #* "block" has half the resolution of braille but uses more common characters.
#* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY. #* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY.
#* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view. #* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view.
graph_symbol = "braille" graph_symbol = "block"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". # Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_cpu = "default" graph_symbol_cpu = "block"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". # Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_mem = "default" graph_symbol_mem = "block"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". # Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_net = "default" graph_symbol_net = "block"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". # Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_proc = "default" graph_symbol_proc = "block"
#* Manually set which boxes to show. Available values are "cpu mem net proc" and "gpu0" through "gpu5", separate values with whitespace. #* Manually set which boxes to show. Available values are "cpu mem net proc" and "gpu0" through "gpu5", separate values with whitespace.
shown_boxes = "cpu mem net proc" shown_boxes = "cpu mem net proc"
+17 -4
View File
@@ -1,3 +1,5 @@
# Enable GPU rendering for performance
enable_gpu_renderer yes
# vim:fileencoding=utf-8:foldmethod=marker # vim:fileencoding=utf-8:foldmethod=marker
#: Fonts {{{ #: Fonts {{{
@@ -19,8 +21,11 @@
#: fonts manually, read the font specification syntax #: fonts manually, read the font specification syntax
#: <https://sw.kovidgoyal.net/kitty/kittens/choose-fonts/#font-spec- #: <https://sw.kovidgoyal.net/kitty/kittens/choose-fonts/#font-spec-
#: syntax>. #: syntax>.
# font_family Hack # Recommended: FiraCode or JetBrains Mono for ligatures
font_family FiraCode
font_size 15.0 font_size 15.0
# Add padding for readability
window_padding_width 8
# font_size 11.0 # font_size 11.0
#: Font size (in pts). #: Font size (in pts).
@@ -71,7 +76,7 @@ font_size 15.0
#: narrow_symbols codepoints [optionally the number of cells] #: narrow_symbols codepoints [optionally the number of cells]
# disable_ligatures never disable_ligatures never
#: Choose how you want to handle multi-character ligatures. The #: Choose how you want to handle multi-character ligatures. The
#: default is to always render them. You can tell kitty to not render #: default is to always render them. You can tell kitty to not render
@@ -376,6 +381,14 @@ font_size 15.0
#: Scrollback {{{ #: Scrollback {{{
# scrollback_lines 2000 # scrollback_lines 2000
# Fast scrolling and mouse support
scrollback_lines 5000
wheel_scroll_multiplier 5.0
wheel_scroll_min_lines 1
touch_scroll_multiplier 1.0
detect_urls yes
copy_on_select clipboard
mouse_map middle release ungrabbed paste_from_selection
#: Number of lines of history to keep in memory for scrolling back. #: Number of lines of history to keep in memory for scrolling back.
#: Memory is allocated on demand. Negative numbers are (effectively) #: Memory is allocated on demand. Negative numbers are (effectively)
@@ -1232,7 +1245,7 @@ tab_bar_style powerline
#: The maximum number of cells that can be used to render the text in #: The maximum number of cells that can be used to render the text in
#: a tab. A value of zero means that no limit is applied. #: a tab. A value of zero means that no limit is applied.
# tab_title_template "{fmt.fg.red}{bell_symbol}{activity_symbol}{fmt.fg.tab}{tab.last_focused_progress_percent}{title}" tab_title_template "{index}:{title} [{tab.active_wd}]@{hostname}"
#: A template to render the tab title. The default just renders the #: A template to render the tab title. The default just renders the
#: title with optional symbols for bell and activity. If you wish to #: title with optional symbols for bell and activity. If you wish to
@@ -1314,7 +1327,7 @@ tab_bar_style powerline
#: Color scheme {{{ #: Color scheme {{{
# foreground #dddddd # foreground #dddddd
# background #000000 # background #181825
#: The foreground and background colors. #: The foreground and background colors.
+320
View File
@@ -0,0 +1,320 @@
gui:
authorColors: {}
branchColors: {}
branchColorPatterns: {}
customIcons:
filenames: {}
extensions: {}
scrollHeight: 2
scrollPastBottom: true
scrollOffMargin: 2
scrollOffBehavior: margin
tabWidth: 4
mouseEvents: true
skipAmendWarning: false
skipDiscardChangeWarning: false
skipStashWarning: false
skipNoStagedFilesWarning: false
skipRewordInEditorWarning: false
skipSwitchWorktreeOnCheckoutWarning: false
sidePanelWidth: 0.4
expandFocusedSidePanel: true
expandedSidePanelWeight: 3
mainPanelSplitMode: flexible
enlargedSideViewLocation: left
wrapLinesInStagingView: true
useHunkModeInStagingView: true
language: auto
timeFormat: 02 Jan 06
shortTimeFormat: 3:04PM
theme:
activeBorderColor:
- '#b8bb26'
- bold
inactiveBorderColor:
- '#665c54'
searchingActiveBorderColor:
- '#8ec07c'
- bold
optionsTextColor:
- '#fabd2f'
selectedLineBgColor:
- '#3c3836'
inactiveViewSelectedLineBgColor:
- '#7c6f64'
cherryPickedCommitFgColor:
- '#b8bb26'
cherryPickedCommitBgColor:
- '#282828'
markedBaseCommitFgColor:
- '#fabd2f'
markedBaseCommitBgColor:
- '#282828'
unstagedChangesColor:
- '#fb4934'
defaultFgColor:
- '#ebdbb2'
commitLength:
show: true
showListFooter: true
showFileTree: true
showRootItemInFileTree: true
showNumstatInFilesView: false
showRandomTip: true
showCommandLog: true
showBottomLine: true
showPanelJumps: true
showIcons: false
nerdFontsVersion: ""
showFileIcons: true
commitAuthorShortLength: 2
commitAuthorLongLength: 17
commitHashLength: 8
showBranchCommitHash: false
showDivergenceFromBaseBranch: none
commandLogSize: 8
splitDiff: always
screenMode: normal
border: rounded
animateExplosion: true
portraitMode: auto
filterMode: substring
spinner:
frames:
- '|'
- /
- '-'
- \
rate: 50
statusPanelView: dashboard
switchToFilesAfterStashPop: true
switchToFilesAfterStashApply: true
switchTabsWithPanelJumpKeys: false
git:
diffCommand: "delta --dark --syntax-theme=gruvbox --paging=always"
fzfIntegration: true
pagers: []
commit:
signOff: true
gpgSign: true
autoWrapCommitMessage: true
autoWrapWidth: 72
merging:
manualCommit: false
args: ""
squashMergeMessage: Squash merge {{selectedRef}} into {{currentBranch}}
mainBranches:
- master
- main
skipHookPrefix: WIP
autoFetch: true
autoRefresh: true
autoForwardBranches: onlyMainBranches
fetchAll: true
autoStageResolvedConflicts: true
branchLogCmd: git log --graph --color=always --abbrev-commit --decorate --date=relative --pretty=medium {{branchName}} --
allBranchesLogCmds:
- git log --graph --all --color=always --abbrev-commit --decorate --date=relative --pretty=medium
ignoreWhitespaceInDiffView: false
diffContextSize: 3
renameSimilarityThreshold: 50
overrideGpg: false
disableForcePushing: false
commitPrefix: []
commitPrefixes: {}
branchPrefix: ""
parseEmoji: false
log:
order: topo-order
showGraph: always
showWholeGraph: true
localBranchSortOrder: date
remoteBranchSortOrder: date
truncateCopiedCommitHashesTo: 12
update:
method: prompt
days: 14
refresher:
refreshInterval: 10
fetchInterval: 60
confirmOnQuit: false
quitOnTopLevelReturn: false
disableStartupPopups: false
customCommands: []
services: {}
notARepository: prompt
promptToReturnFromSubprocess: true
keybinding:
universal:
quit: q
quit-alt1: <c-c>
suspendApp: <c-z>
return: <esc>
quitWithoutChangingDirectory: Q
togglePanel: <tab>
prevItem: <up>
nextItem: <down>
prevItem-alt: k
nextItem-alt: j
prevPage: ','
nextPage: .
scrollLeft: H
scrollRight: L
gotoTop: <
gotoBottom: '>'
gotoTop-alt: <home>
gotoBottom-alt: <end>
toggleRangeSelect: v
rangeSelectDown: <s-down>
rangeSelectUp: <s-up>
prevBlock: <left>
nextBlock: <right>
prevBlock-alt: h
nextBlock-alt: l
nextBlock-alt2: <tab>
prevBlock-alt2: <backtab>
jumpToBlock:
- "1"
- "2"
- "3"
- "4"
- "5"
focusMainView: "0"
nextMatch: "n"
prevMatch: "N"
startSearch: /
optionMenu: <disabled>
optionMenu-alt1: '?'
select: <space>
goInto: <enter>
confirm: <enter>
confirmMenu: <enter>
confirmSuggestion: <enter>
confirmInEditor: <a-enter>
confirmInEditor-alt: <c-s>
remove: d
new: "n"
edit: e
openFile: o
scrollUpMain: <pgup>
scrollDownMain: <pgdown>
scrollUpMain-alt1: K
scrollDownMain-alt1: J
scrollUpMain-alt2: <c-u>
scrollDownMain-alt2: <c-d>
executeShellCommand: ':'
createRebaseOptionsMenu: m
pushFiles: P
pullFiles: p
refresh: R
createPatchOptionsMenu: <c-p>
nextTab: ']'
prevTab: '['
nextScreenMode: +
prevScreenMode: _
cyclePagers: '|'
undo: z
redo: Z
filteringMenu: <c-s>
diffingMenu: W
diffingMenu-alt: <c-e>
copyToClipboard: <c-o>
openRecentRepos: <c-r>
submitEditorText: <enter>
extrasMenu: '@'
toggleWhitespaceInDiffView: <c-w>
increaseContextInDiffView: '}'
decreaseContextInDiffView: '{'
increaseRenameSimilarityThreshold: )
decreaseRenameSimilarityThreshold: (
openDiffTool: <c-t>
status:
checkForUpdate: u
recentRepos: <enter>
allBranchesLogGraph: a
files:
commitChanges: c
commitChangesWithoutHook: w
amendLastCommit: A
commitChangesWithEditor: C
findBaseCommitForFixup: <c-f>
confirmDiscard: x
ignoreFile: i
refreshFiles: r
stashAllChanges: s
viewStashOptions: S
toggleStagedAll: a
viewResetOptions: D
fetch: f
toggleTreeView: '`'
openMergeOptions: M
openStatusFilter: <c-b>
copyFileInfoToClipboard: "y"
collapseAll: '-'
expandAll: =
branches:
createPullRequest: o
viewPullRequestOptions: O
copyPullRequestURL: <c-y>
checkoutBranchByName: c
forceCheckoutBranch: F
checkoutPreviousBranch: '-'
rebaseBranch: r
renameBranch: R
mergeIntoCurrentBranch: M
moveCommitsToNewBranch: "N"
viewGitFlowOptions: i
fastForward: f
createTag: T
pushTag: P
setUpstream: u
fetchRemote: f
sortOrder: s
worktrees:
viewWorktreeOptions: w
commits:
squashDown: s
renameCommit: r
renameCommitWithEditor: R
viewResetOptions: g
markCommitAsFixup: f
createFixupCommit: F
squashAboveCommits: S
moveDownCommit: <c-j>
moveUpCommit: <c-k>
amendToCommit: A
resetCommitAuthor: a
pickCommit: p
revertCommit: t
cherryPickCopy: C
pasteCommits: V
markCommitAsBaseForRebase: B
tagCommit: T
checkoutCommit: <space>
resetCherryPick: <c-R>
copyCommitAttributeToClipboard: "y"
openLogMenu: <c-l>
openInBrowser: o
viewBisectOptions: b
startInteractiveRebase: i
selectCommitsOfCurrentBranch: '*'
amendAttribute:
resetAuthor: a
setAuthor: A
addCoAuthor: c
stash:
popStash: g
renameStash: r
commitFiles:
checkoutCommitFile: c
main:
toggleSelectHunk: a
pickBothHunks: b
editSelectHunk: E
submodules:
init: i
update: u
bulkMenu: b
commitMessage:
commitMenu: <c-o>
+31 -37
View File
@@ -3,13 +3,13 @@ version = 3
final_space = true final_space = true
[palette] [palette]
black = '#262B44' black = '#282828'
blue = '#4B95E9' blue = '#458588'
green = '#59C9A5' green = '#98971a'
orange = '#F07623' orange = '#d79921'
red = '#D81E5B' red = '#cc241d'
white = '#E0DEF4' white = '#ebdbb2'
yellow = '#F3AE35' yellow = '#fabd2f'
[secondary_prompt] [secondary_prompt]
template = '<p:yellow,transparent></><,p:yellow> > </><p:yellow,transparent></> ' template = '<p:yellow,transparent></><,p:yellow> > </><p:yellow,transparent></> '
@@ -42,10 +42,10 @@ final_space = true
style = 'diamond' style = 'diamond'
[[blocks.segments]] [[blocks.segments]]
template = ' {{ path .Path .Location }} ' template = '  <b>{{ path .Path .Location }}</b> '
foreground = 'p:white' foreground = 'p:orange'
powerline_symbol = '' powerline_symbol = ''
background = 'p:orange' background = 'p:black'
type = 'path' type = 'path'
style = 'powerline' style = 'powerline'
@@ -53,25 +53,25 @@ final_space = true
style = 'folder' style = 'folder'
[[blocks.segments]] [[blocks.segments]]
template = ' {{ if .UpstreamURL }}{{ url .UpstreamIcon .UpstreamURL }} {{ end }}{{ .HEAD }}{{if .BranchStatus }} {{ .BranchStatus }}{{ end }}{{ if .Working.Changed }}  {{ .Working.String }}{{ end }}{{ if .Staging.Changed }}  {{ .Staging.String }}{{ end }} ' template = '  <b>{{ .HEAD }}</b>{{ if .BranchStatus }} {{ .BranchStatus }}{{ end }}{{ if .Working.Changed }}  {{ .Working.String }}{{ end }}{{ if .Staging.Changed }}  {{ .Staging.String }}{{ end }} '
foreground = 'p:black' foreground = 'p:green'
powerline_symbol = '' powerline_symbol = ''
background = 'p:green' background = 'p:black'
type = 'git' type = 'git'
style = 'powerline' style = 'powerline'
foreground_templates = ['{{ if or (.Working.Changed) (.Staging.Changed) }}p:black{{ end }}', '{{ if and (gt .Ahead 0) (gt .Behind 0) }}p:white{{ end }}', '{{ if gt .Ahead 0 }}p:white{{ end }}'] foreground_templates = ['{{ if or (.Working.Changed) (.Staging.Changed) }}p:green{{ end }}', '{{ if eq .Background "p:yellow" }}p:black{{ end }}']
background_templates = ['{{ if or (.Working.Changed) (.Staging.Changed) }}p:yellow{{ end }}', '{{ if and (gt .Ahead 0) (gt .Behind 0) }}p:red{{ end }}', '{{ if gt .Ahead 0 }}#49416D{{ end }}', '{{ if gt .Behind 0 }}#7A306C{{ end }}'] background_templates = ['{{ if or (.Working.Changed) (.Staging.Changed) }}p:yellow{{ end }}']
[blocks.segments.properties] [blocks.segments.properties]
branch_template = '{{ trunc 25 .Branch }}' branch_template = '{{ trunc 25 .Branch }}'
fetch_status = true fetch_status = true
fetch_upstream_icon = true fetch_upstream_icon = false
[[blocks.segments]] [[blocks.segments]]
template = '  ' template = '  '
foreground = 'p:white' foreground = 'p:yellow'
powerline_symbol = '' powerline_symbol = ''
background = 'p:yellow' background = 'p:black'
type = 'root' type = 'root'
style = 'powerline' style = 'powerline'
@@ -79,8 +79,8 @@ final_space = true
leading_diamond = '<transparent,background></>' leading_diamond = '<transparent,background></>'
trailing_diamond = '' trailing_diamond = ''
template = ' {{ if gt .Code 0 }}{{ else }}{{ end }} ' template = ' {{ if gt .Code 0 }}{{ else }}{{ end }} '
foreground = 'p:white' foreground = 'p:blue'
background = 'p:blue' background = 'p:black'
type = 'status' type = 'status'
style = 'diamond' style = 'diamond'
background_templates = ['{{ if gt .Code 0 }}p:red{{ end }}'] background_templates = ['{{ if gt .Code 0 }}p:red{{ end }}']
@@ -92,7 +92,7 @@ final_space = true
type = 'rprompt' type = 'rprompt'
[[blocks.segments]] [[blocks.segments]]
template = ' ' template = ' <b>{{ .Version }}</b>'
foreground = 'p:green' foreground = 'p:green'
background = 'transparent' background = 'transparent'
type = 'node' type = 'node'
@@ -102,19 +102,10 @@ final_space = true
display_mode = 'files' display_mode = 'files'
fetch_package_manager = false fetch_package_manager = false
home_enabled = false home_enabled = false
fetch_version = true
[[blocks.segments]] [[blocks.segments]]
template = '' template = ' <b>{{ .Version }}</b>'
foreground = 'p:blue'
background = 'transparent'
type = 'go'
style = 'plain'
[blocks.segments.properties]
fetch_version = false
[[blocks.segments]]
template = ' '
foreground = 'p:yellow' foreground = 'p:yellow'
background = 'transparent' background = 'transparent'
type = 'python' type = 'python'
@@ -122,16 +113,19 @@ final_space = true
[blocks.segments.properties] [blocks.segments.properties]
display_mode = 'files' display_mode = 'files'
fetch_version = false fetch_version = true
fetch_virtual_env = false fetch_virtual_env = true
[[blocks.segments]] [[blocks.segments]]
template = 'in <p:blue><b>{{ .Name }}</b></> ' template = ' <b>{{ .Version }}</b>'
foreground = 'p:white' foreground = 'p:blue'
background = 'transparent' background = 'transparent'
type = 'shell' type = 'rust'
style = 'plain' style = 'plain'
[blocks.segments.properties]
fetch_version = true
[[blocks.segments]] [[blocks.segments]]
template = 'at <p:blue><b>{{ .CurrentDate | date "15:04:05" }}</b></>' template = 'at <p:blue><b>{{ .CurrentDate | date "15:04:05" }}</b></>'
foreground = 'p:white' foreground = 'p:white'
+77 -14
View File
@@ -1,26 +1,63 @@
# Set up the terminal overrides # =============================================================
# Tmux Configuration - Gruvbox Dark, Vim Navigation, Fast Clipboard, Minimal Plugins
#
# Features:
# - Gruvbox dark theme for status bar and UI
# - Vim-style navigation and pane resizing
# - Mouse support and fast copy-paste
# - Minimal, fast plugin setup
# =============================================================
# Fast pane splitting shortcuts (already present)
# Copy-paste integration (already present with tmux-yank and set-clipboard)
# Plugin setup is minimal and fast with TPM and sensible plugins
# Additional: Make pane resizing easier with vim-style keys
bind -r h resize-pane -L 5
bind -r j resize-pane -D 5
bind -r k resize-pane -U 5
bind -r l resize-pane -R 5
# Gruvbox color palette
set -g @gruvbox_fg '#ebdbb2'
set -g @gruvbox_bg '#282828'
set -g @gruvbox_yellow '#fabd2f'
set -g @gruvbox_blue '#458588'
set -g @gruvbox_red '#cc241d'
set -g @gruvbox_green '#98971a'
set -g @gruvbox_orange '#d79921'
# Status bar customization
set -g status-bg '#282828'
set -g status-fg '#ebdbb2'
set -g status-left-length 40
set -g status-right-length 100
set -g status-interval 2
set -g status-left "#[fg=#fabd2f,bg=#282828,bold] #S #[fg=#282828,bg=#fabd2f,nobold] #[fg=#ebdbb2,bg=#fabd2f] #(whoami)@#H #[fg=#fabd2f,bg=#282828] #[fg=#ebdbb2,bg=#282828] #(basename #{pane_current_path}) "
set -g status-right "#[fg=#fabd2f,bg=#282828]#[fg=#282828,bg=#fabd2f] #(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo '-') #[fg=#fabd2f,bg=#282828]#[fg=#ebdbb2,bg=#282828] %Y-%m-%d %H:%M "
# --- Terminal & Compatibility ---
# Use 256-color mode and ensure compatibility with xterm
set-option -g default-terminal 'screen-256color' set-option -g default-terminal 'screen-256color'
set-option -sa terminal-overrides ",xterm-256color:RGB" set-option -sa terminal-overrides ",xterm-256color:RGB"
# Enable mouse support # --- Mouse & Key Bindings ---
# Enable mouse support for pane/window selection and resizing
set -g mouse on set -g mouse on
# Set prefix to Ctrl+Space # (Optional) Change prefix to Ctrl+Space instead of default Ctrl+B
#unbind C-b
#set -g prefix C-Space
#bind C-Space send-prefix
# Shift Alt vim keys to switch windows # Alt+Shift+H/L to switch windows (vim-style)
bind -n M-H previous-window bind -n M-H previous-window
bind -n M-L next-window bind -n M-L next-window
# Start windows and panes at 1, not 0 # Start windows and panes at 1 for easier navigation
set -g base-index 1 set -g base-index 1
set -g pane-base-index 1 set -g pane-base-index 1
set-window-option -g pane-base-index 1 set-window-option -g pane-base-index 1
set-option -g renumber-windows on set-option -g renumber-windows on
# Miscellaneous settings # --- Miscellaneous ---
# Various usability and performance tweaks
set -g detach-on-destroy off # don't exit from tmux when closing a session set -g detach-on-destroy off # don't exit from tmux when closing a session
set -g escape-time 0 # zero-out escape time delay set -g escape-time 0 # zero-out escape time delay
set -g history-limit 1000000 # increase history size set -g history-limit 1000000 # increase history size
@@ -28,22 +65,36 @@ set -g set-clipboard on # use system clipboard
set -g status-position top # macOS / darwin style set -g status-position top # macOS / darwin style
set -g default-terminal "${TERM}" set -g default-terminal "${TERM}"
# Set vi-mode # --- Copy & Selection ---
# Use vi-style keys in copy mode
set-window-option -g mode-keys vi set-window-option -g mode-keys vi
# Keybindings # Keybindings for copy mode (vim-style selection and yanking)
bind-key -T copy-mode-vi v send-keys -X begin-selection bind-key -T copy-mode-vi v send-keys -X begin-selection
bind-key -T copy-mode-vi C-v send-keys -X rectangle-toggle bind-key -T copy-mode-vi C-v send-keys -X rectangle-toggle
bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel
# Open panes in current directory # Split panes in the current working directory
bind '"' split-window -v -c "#{pane_current_path}" bind '"' split-window -v -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}" bind % split-window -h -c "#{pane_current_path}"
# Pane separators # Use double lines for pane borders
set -g pane-border-lines double set -g pane-border-lines double
# Configure Tmux plugins # --- Plugins ---
# Plugin Manager (TPM) and useful plugins:
# tmux-plugins/tpm - Plugin manager
# tmux-plugins/tmux-sensible - Sensible defaults
# tmux-plugins/tmux-yank - Fast copy to clipboard
# tmux-plugins/tmux-resurrect - Save/restore sessions
# tmux-plugins/tmux-continuum - Auto-save sessions
# fcsonline/tmux-thumbs - Fuzzy select text
# sainnhe/tmux-fzf - Fuzzy find in tmux
# wfxr/tmux-fzf-url - Fuzzy find URLs
# egel/tmux-gruvbox - Gruvbox theme
# christoomey/vim-tmux-navigator - Vim navigation between panes
# omerxx/tmux-sessionx - Session management
# omerxx/tmux-floax - Floating windows
set -g @plugin 'tmux-plugins/tpm' set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible' set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-yank' set -g @plugin 'tmux-plugins/tmux-yank'
@@ -57,11 +108,15 @@ set -g @plugin 'christoomey/vim-tmux-navigator'
set -g @plugin 'omerxx/tmux-sessionx' set -g @plugin 'omerxx/tmux-sessionx'
set -g @plugin 'omerxx/tmux-floax' set -g @plugin 'omerxx/tmux-floax'
# Floax plugin settings (floating windows)
set -g @floax-width '80%' set -g @floax-width '80%'
set -g @floax-height '80%' set -g @floax-height '80%'
set -g @floax-bind 'p' set -g @floax-bind 'p'
set -g @floax-change-path 'true' set -g @floax-change-path 'true'
# Sessionx plugin settings (session management)
set -g @sessionx-x-path '~/dotfiles' set -g @sessionx-x-path '~/dotfiles'
set -g @sessionx-window-height '85%' set -g @sessionx-window-height '85%'
set -g @sessionx-window-width '75%' set -g @sessionx-window-width '75%'
@@ -69,10 +124,18 @@ set -g @sessionx-zoxide-mode 'on'
set -g @sessionx-custom-paths-subdirectories 'false' set -g @sessionx-custom-paths-subdirectories 'false'
set -g @sessionx-filter-current 'false' set -g @sessionx-filter-current 'false'
# Continuum plugin: auto-restore sessions
set -g @continuum-restore 'on' set -g @continuum-restore 'on'
# Resurrect plugin: save/restore nvim sessions
set -g @resurrect-strategy-nvim 'session' set -g @resurrect-strategy-nvim 'session'
# Gruvbox theme plugin: use dark mode
set -g @tmux-gruvbox 'dark' set -g @tmux-gruvbox 'dark'
# Initialize TPM (Tmux Plugin Manager)
run '~/.tmux/plugins/tpm/tpm' run '~/.tmux/plugins/tpm/tpm'
+7 -87
View File
@@ -1,101 +1,21 @@
# Include any additional configuration file(s)
# [include] sections are processed in the order you write them # Topgrade configuration for seamless integration with tmux, kitty, and btop (Gruvbox dark theme)
# Files in $CONFIG_DIR/topgrade.d/ are automatically included before this file
[include] [include]
# paths = ["/etc/topgrade.toml"] # paths = ["/etc/topgrade.toml"]
[misc] [misc]
# Run `sudo -v` to cache credentials at the start of the run
# This avoids a blocking password prompt in the middle of an unattended run
# (default: false)
pre_sudo = true pre_sudo = true
# Sudo command to be used
# sudo_command = "sudo"
# Disable specific steps - same options as the command line flag
# disable = ["system", "emacs"]
# Ignore failures for these steps
# ignore_failures = ["powershell"]
# List of remote machines with Topgrade installed on them
# remote_topgrades = ["toothless", "pi", "parnas"]
# Path to Topgrade executable on remote machines
# remote_topgrade_path = ".cargo/bin/topgrade"
# Arguments to pass to SSH when upgrading remote systems
# ssh_arguments = "-o ConnectTimeout=2"
# Arguments to pass tmux when pulling Repositories
# tmux_arguments = "-S /var/tmux.sock"
# Do not set the terminal title (default: true)
# set_title = true
# Display the time in step titles (default: true)
# display_time = true
# Don't ask for confirmations (no default value)
# assume_yes = true
# Do not ask to retry failed steps (default: false)
no_retry = true no_retry = true
# Run inside tmux (default: false)
# run_in_tmux = true
# Changes the way topgrade interacts with
# the tmux session, creating the session
# and only attaching to it if not inside tmux
# (default: "attach_if_not_in_session", allowed values: "attach_if_not_in_session", "attach_always")
# tmux_session_mode = "attach_if_not_in_session"
# Cleanup temporary or old files (default: false)
cleanup = true cleanup = true
assume_yes = true
# Send a notification for every step (default: false) only = []
# notify_each_step = false display_time = true
notify_each_step = true
# Skip sending a notification at the end of a run (default: false)
# skip_notify = true
# The Bash-it branch to update (default: "stable")
# bashit_branch = "stable"
# Run specific steps - same options as the command line flag
# only = ["system", "emacs"]
# Whether to self update
#
# this will be ignored if the binary is built without self update support
#
# available also via setting the environment variable TOPGRADE_NO_SELF_UPGRADE)
# no_self_update = true
# Extra tracing filter directives
# These are prepended to the `--log-filter` argument
# See: https://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html#directives
# log_filters = ["topgrade::command=debug", "warn"]
# Commands to run before anything
[pre_commands]
# "Emacs Snapshot" = "rm -rf ~/.emacs.d/elpa.bak && cp -rl ~/.emacs.d/elpa ~/.emacs.d/elpa.bak"
# Commands to run after anything
[post_commands]
# "Emacs Snapshot" = "rm -rf ~/.emacs.d/elpa.bak && cp -rl ~/.emacs.d/elpa ~/.emacs.d/elpa.bak"
# Custom commands
[commands]
# "Python Environment" = "~/dev/.env/bin/pip install -i https://pypi.python.org/simple -U --upgrade-strategy eager jupyter"
# "Custom command using interactive shell (unix)" = "-i vim_upgrade"
[python] [python]
# enable_pip_review = true ###disabled by default # enable_pip_review = true ###disabled by default
+70 -47
View File
@@ -1,7 +1,11 @@
############################################################
# Homebrew integration # Homebrew integration
############################################################
eval "$(/opt/homebrew/bin/brew shellenv)" eval "$(/opt/homebrew/bin/brew shellenv)"
# Set the directory we want to store zinit and plugins ############################################################
# Zinit plugin manager setup
############################################################
ZINIT_HOME="${XDG_DATA_HOME:-${HOME}/.local/share}/zinit/zinit.git" ZINIT_HOME="${XDG_DATA_HOME:-${HOME}/.local/share}/zinit/zinit.git"
# Download Zinit, if it's not there yet # Download Zinit, if it's not there yet
@@ -13,93 +17,112 @@ fi
# Source / Load Zinit # Source / Load Zinit
source "${ZINIT_HOME}/zinit.zsh" source "${ZINIT_HOME}/zinit.zsh"
# Configure EZA snippet ############################################################
# EZA configuration
############################################################
zstyle ':omz:plugins:eza' 'dirs-first' yes zstyle ':omz:plugins:eza' 'dirs-first' yes
zstyle ':omz:plugins:eza' 'git-status' yes zstyle ':omz:plugins:eza' 'git-status' yes
zstyle ':omz:plugins:eza' 'icons' yes zstyle ':omz:plugins:eza' 'icons' yes
zstyle ':omz:plugins:eza' 'show-group' yes zstyle ':omz:plugins:eza' 'show-group' yes
# Add in ZSH Plugins ############################################################
# ZSH Plugins (essential and lazy-loaded)
############################################################
zinit light zsh-users/zsh-syntax-highlighting zinit light zsh-users/zsh-syntax-highlighting
zinit light zsh-users/zsh-completions zinit ice wait"1"; zinit light zsh-users/zsh-completions
zinit light zsh-users/zsh-autosuggestions zinit ice wait"1"; zinit light zsh-users/zsh-autosuggestions
zinit light Aloxaf/fzf-tab zinit ice wait"2"; zinit light Aloxaf/fzf-tab
# Add in snippets ############################################################
zinit snippet OMZP::aliases # Oh-My-Zsh Snippets (lazy-loaded)
zinit snippet OMZP::ansible ############################################################
zinit snippet OMZP::aws zinit ice wait"1"; zinit snippet OMZP::aliases
zinit snippet OMZP::brew zinit ice wait"2"; zinit snippet OMZP::ansible
zinit snippet OMZP::command-not-found zinit ice wait"2"; zinit snippet OMZP::aws
zinit snippet OMZP::common-aliases zinit ice wait"1"; zinit snippet OMZP::brew
zinit snippet OMZP::debian zinit ice wait"2"; zinit snippet OMZP::command-not-found
zinit snippet OMZP::docker zinit ice wait"2"; zinit snippet OMZP::common-aliases
zinit snippet OMZP::docker-compose zinit ice wait"2"; zinit snippet OMZP::debian
zinit snippet OMZP::dotenv zinit ice wait"2"; zinit snippet OMZP::docker
zinit snippet OMZP::eza zinit ice wait"2"; zinit snippet OMZP::docker-compose
zinit snippet OMZP::gh zinit ice wait"2"; zinit snippet OMZP::dotenv
zinit snippet OMZP::git zinit ice wait"1"; zinit snippet OMZP::eza
zinit snippet OMZP::github zinit ice wait"2"; zinit snippet OMZP::gh
zinit snippet OMZP::kitty zinit ice wait"1"; zinit snippet OMZP::git
zinit snippet OMZP::kubectl zinit ice wait"2"; zinit snippet OMZP::github
zinit snippet OMZP::kubectx zinit ice wait"2"; zinit snippet OMZP::kitty
zinit snippet OMZP::nmap zinit ice wait"2"; zinit snippet OMZP::kubectl
zinit snippet OMZP::rust zinit ice wait"2"; zinit snippet OMZP::kubectx
zinit snippet OMZP::ssh zinit ice wait"2"; zinit snippet OMZP::nmap
zinit snippet OMZP::ssh-agent zinit ice wait"2"; zinit snippet OMZP::rust
zinit snippet OMZP::sudo zinit ice wait"2"; zinit snippet OMZP::ssh
zinit ice wait"2"; zinit snippet OMZP::ssh-agent
zinit ice wait"2"; zinit snippet OMZP::sudo
# Load completions ############################################################
autoload -U compinit && compinit # Completion system
############################################################
autoload -U compinit && compinit -C
zinit cdreplay -q zinit cdreplay -q
# Add in Oh-My-Posh Prompt ############################################################
# Oh-My-Posh Prompt
############################################################
if [ "$TERM_PROGRAM" != "Apple_Terminal" ]; then if [ "$TERM_PROGRAM" != "Apple_Terminal" ]; then
eval "$(oh-my-posh init zsh --config ${HOME}/.config/ohmyposh/omp.toml)" eval "$(oh-my-posh init zsh --config ${HOME}/.config/ohmyposh/omp.toml)"
fi fi
# History ############################################################
# History configuration
############################################################
HISTSIZE=5000 HISTSIZE=5000
HISTFILE=~/.zsh_history HISTFILE=~/.zsh_history
SAVEHIST=$HISTSIZE SAVEHIST=$HISTSIZE
HISTDUP=erase HISTDUP=erase
setopt appendhistory # History options grouped for clarity
setopt sharehistory setopt appendhistory sharehistory hist_ignore_space hist_ignore_all_dups hist_save_no_dups hist_ignore_dups
setopt hist_ignore_space
setopt hist_ignore_all_dups
setopt hist_save_no_dups
setopt hist_ignore_dups
############################################################
# Completion styling # Completion styling
############################################################
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}' zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}'
zstyle ':completion:*' list-colors "${(s.:.)LS_COLOR}" zstyle ':completion:*' list-colors "${(s.:.)LS_COLOR}"
zstyle ':completion:*' menu no zstyle ':completion:*' menu no
zstyle ':fzf-tab:complete:cd:*' fzf-preview 'ls --color $realpath' zstyle ':fzf-tab:complete:cd:*' fzf-preview 'ls --color $realpath'
zstyle ':fzf-tab:complete:__zoxide_z:*' fzf-preview 'ls --color $realpath' zstyle ':fzf-tab:complete:__zoxide_z:*' fzf-preview 'ls --color $realpath'
############################################################
# Shell integrations # Shell integrations
############################################################
eval "$(fzf --zsh)" eval "$(fzf --zsh)"
eval "$(zoxide init --cmd cd zsh)" eval "$(zoxide init --cmd cd zsh)"
# Export custom environment variables ############################################################
# Custom environment variables
############################################################
export LANG=en_US.UTF-8 export LANG=en_US.UTF-8
export EDITOR='nvim' export EDITOR='nvim'
export ARCHFLAGS='-arch x86_64' export ARCHFLAGS='-arch x86_64'
export BAT_CONFIG_PATH=~/.config/bat/config.conf export BAT_CONFIG_PATH=~/.config/bat/config.conf
export GPG_TTY=$(tty) export GPG_TTY=$(tty)
export PATH=${HOME}/.local/bin:${HOME}/.cargo/bin:${HOME}/go/bin:${PATH} export PATH="$HOME/.local/bin:$HOME/.cargo/bin:$HOME/go/bin:$PATH"
export MONOREPO_ROOT=${HOME}/Projects/monorepo export MONOREPO_ROOT="$HOME/Projects/monorepo"
export DOCKER_BUILDKIT=1 export DOCKER_BUILDKIT=1
# Export SSH_AUTH_SOCK to GPG eo enable using gpgagent as the ssh-agent ############################################################
# SSH/GPG agent integration
############################################################
export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket) export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
gpgconf --launch gpg-agent gpgconf --launch gpg-agent
############################################################
# Custom aliases # Custom aliases
############################################################
alias cat='bat' alias cat='bat'
alias vim=$(which nvim) alias vim='nvim'
alias vimdiff="$(which nvim) -d" alias vimdiff='nvim -d'
alias docker-compose="$(which docker) compose" alias docker-compose='docker compose'
alias neofetch=fastfetch alias neofetch='fastfetch'
alias lazygit='lazygit -ucd $HOME/.config/lazygit'
+58 -16
View File
@@ -1,33 +1,75 @@
# dotfiles # dotfiles
My Dotfiles managed by Gnu Stow
## Usage: Personal dotfiles managed by Gnu Stow for a modular, reproducible, and portable
development environment.
Clone this repository to ~/dotfiles with the following command: ## Usage
Clone this repository to `~/dotfiles`:
```sh ```sh
git clone https://github.com/anthonyoteri/dotfiles ~/dotfiles git clone https://github.com/anthonyoteri/dotfiles ~/dotfiles
``` ```
Change into the `~/dotfiles` directory and create the symlink tree using Change into the `~/dotfiles` directory and create the symlink tree:
```sh ```sh
stow . stow .
``` ```
## Adding a new file. ## Adding a New File
Move the file into the `~/dotfiles` folder under the same directory structure Move the file into the `~/dotfiles` folder under the same directory structure as
as if the root of the repository were the home folder, then run `stow .` to if the root of the repository were the home folder, then run `stow .` to create a
create a symlink. symlink.
## How it works ## How It Works
The original files should live under the `~/dotfiles` directory in the same The original files should live under the `~/dotfiles` directory in the same layout
layout as they would appear in the home directory. Gnu Stow will walk the as they would appear in the home directory. Gnu Stow will walk the directory tree
directory tree, and create symlinks in the parent directory of any files it and create symlinks in the parent directory of any files it finds there. For
finds there. E.g. `~/dotfiles/.foobar` will be mapped as a symlink to example, `~/dotfiles/.foobar` will be mapped as a symlink to `~/.foobar`, and
`~/.foobar`, and `~/dotfiles/some/path/.barfoo` will be mapped as a symlink `~/dotfiles/some/path/.barfoo` will be mapped as a symlink to
to `~/some/path/.barfoo`. `~/some/path/.barfoo`.
---
## Managed Configurations
This repository manages configuration for the following tools:
- **Zsh** (`.zshrc`, `.zprofile`, `.profile`): Shell configuration, plugins,
aliases, and environment variables.
- **Kitty** (`.config/kitty/kitty.conf`): GPU terminal emulator with Gruvbox dark
theme, powerline separators, and font/padding customizations.
- **Tmux** (`.config/tmux/tmux.conf`): Terminal multiplexer with Gruvbox theme,
vim-style navigation, mouse support, and plugin management via TPM.
- **Oh My Posh** (`.config/ohmyposh/omp.toml`): Prompt theme for Zsh, with
multi-line, icons, language versions, and git status.
- **btop** (`.config/btop/btop.conf`): Resource monitor with Gruvbox theme, block
graphs, mouse and vim key support, and matching font/padding.
- **Topgrade** (`.config/topgrade.toml`): Unified system upgrade tool, configured
for notifications, cleanup, and parallel upgrades.
- **Neovim** (`.config/nvim/`): Editor configuration, plugins, and custom Lua
scripts.
- **Zellij** (`.config/zellij/config.kdl`): Terminal workspace manager (if used).
---
## Customization & Extensibility
- All configs are modular and can be extended by adding new files or folders and
running `stow .`.
- Each tools config is documented and tuned for performance, appearance, and
seamless integration.
- Gruvbox dark theme is used for a consistent look across terminal, prompt, and
resource monitor.
---
## License
See [LICENSE](LICENSE) for details.