13 changed files with 404 additions and 30 deletions
-
2aliases/key_aliases.tmpl
-
5aliases/key_dirs.tmpl
-
24dot_Xmodmap
-
39dot_config/Code/User/keybindings.json
-
243dot_config/Code/User/settings.json
-
1dot_config/fish/config.fish.tmpl
-
39dot_config/fish/functions/fn-progress.fish
-
12dot_config/fish/functions/test_output.txt
-
10dot_config/i3/config.tmpl
-
2dot_config/i3blocks/i3blocks-secondary.conf.tmpl
-
29dot_config/i3blocks/i3blocks.conf.tmpl
-
19dot_config/i3blocks/scripts/executable_time
-
9dot_config/kitty/kitty.conf
@ -1,9 +1,25 @@ |
|||||
|
! clear Lock |
||||
|
|
||||
|
! keycode 9 = Caps_Lock |
||||
|
! keycode 66 = Escape |
||||
|
! keycode 22 = BackSpace |
||||
|
|
||||
|
! pointer = 1 2 3 6 7 4 5 10 11 12 8 9 |
||||
|
! side thumb button as middle click |
||||
|
! pointer = 1 10 3 6 7 4 5 2 11 12 8 9 |
||||
|
|
||||
|
! Clear the Caps Lock modifier logic first |
||||
clear Lock |
clear Lock |
||||
|
|
||||
keycode 9 = Caps_Lock |
|
||||
|
! Map the physical Caps Lock key (66) to Escape |
||||
keycode 66 = Escape |
keycode 66 = Escape |
||||
keycode 22 = BackSpace |
|
||||
|
|
||||
|
! Optional: Map physical Escape (9) to Caps Lock if you really want to swap. |
||||
|
! If you comment out the line below, you will have two Escape keys (Safer). |
||||
|
! keycode 9 = Caps_Lock |
||||
|
|
||||
|
! Important: If you did swap (uncommented line above), you must add the Lock modifier back |
||||
|
! add Lock = Caps_Lock |
||||
|
|
||||
|
! Keep your mouse settings |
||||
pointer = 1 2 3 6 7 4 5 10 11 12 8 9 |
pointer = 1 2 3 6 7 4 5 10 11 12 8 9 |
||||
! side thumb button as middle click |
|
||||
! pointer = 1 10 3 6 7 4 5 2 11 12 8 9 |
|
||||
@ -0,0 +1,39 @@ |
|||||
|
[ |
||||
|
// Map the physical 'CapsLock' key to act as the 'Escape' key |
||||
|
{ |
||||
|
"key": "capslock", |
||||
|
"command": "workbench.action.terminal.sendSequence", |
||||
|
"args": { |
||||
|
"text": "\u001b" // ASCII code for Escape |
||||
|
}, |
||||
|
// Optional: you can restrict this to the terminal or use no 'when' condition |
||||
|
// "when": "terminalFocus" |
||||
|
}, |
||||
|
{ |
||||
|
"key": "capslock", |
||||
|
"command": "workbench.action.closeMessages", |
||||
|
"when": "notificationVisible" |
||||
|
}, |
||||
|
{ |
||||
|
"key": "capslock", |
||||
|
"command": "closeCommandCenter", |
||||
|
"when": "commandCenterVisible" |
||||
|
}, |
||||
|
// The most important one: to exit common modes/menus/widgets |
||||
|
{ |
||||
|
"key": "capslock", |
||||
|
"command": "workbench.action.closeAllGroups", |
||||
|
"when": "editorFocus" |
||||
|
}, |
||||
|
{ |
||||
|
"key": "capslock", |
||||
|
"command": "workbench.action.closeActiveEditor", |
||||
|
"when": "editorFocus" |
||||
|
}, |
||||
|
{ |
||||
|
"key": "capslock", |
||||
|
"command": "workbench.action.closePanel", |
||||
|
"when": "panelFocus" |
||||
|
} |
||||
|
// ... you may need to map it to several common "escape" actions |
||||
|
] |
||||
@ -0,0 +1,243 @@ |
|||||
|
{ |
||||
|
"keyboard.dispatch": "keyCode", |
||||
|
// For the code editor |
||||
|
"editor.fontFamily": "'Hack', 'Droid Sans Mono', monospace", |
||||
|
"workbench.colorTheme": "GitHub Dark Default", |
||||
|
|
||||
|
// For the integrated terminal |
||||
|
"terminal.integrated.fontFamily": "'Hack', monospace" |
||||
|
"vim.insertModeKeyBindings": [ |
||||
|
{ |
||||
|
"before": [ |
||||
|
"<Esc>" |
||||
|
], |
||||
|
"after": [ |
||||
|
"<Esc>" |
||||
|
], |
||||
|
"commands": [ |
||||
|
"workbench.action.files.save" |
||||
|
] |
||||
|
} |
||||
|
], |
||||
|
|
||||
|
// Optional: If you use the non-recursive version (recommended for most simple mappings): |
||||
|
"vim.insertModeKeyBindingsNonRecursive": [ |
||||
|
{ |
||||
|
"before": [ |
||||
|
"<Esc>" |
||||
|
], |
||||
|
"after": [ |
||||
|
"<Esc>" |
||||
|
], |
||||
|
"commands": [ |
||||
|
"workbench.action.files.save" |
||||
|
] |
||||
|
} |
||||
|
], |
||||
|
"workbench.colorCustomizations": { |
||||
|
"[GitHub Dark]": { |
||||
|
// Activity Bar (Left side) |
||||
|
"activityBar.background": "#1f2428", // Keep dark to blend |
||||
|
"activityBar.activeBorder": "#f85149", // Bright GitHub Red |
||||
|
"activityBar.foreground": "#f85149", |
||||
|
"activityBar.inactiveForeground": "#6e7681", |
||||
|
|
||||
|
// Status Bar (Bottom) |
||||
|
"statusBar.background": "#da3633", // Deep GitHub Red |
||||
|
"statusBar.foreground": "#ffffff", |
||||
|
|
||||
|
// Title Bar & Tabs |
||||
|
"titleBar.activeBackground": "#1f2428", |
||||
|
"tab.activeBorderTop": "#f85149", |
||||
|
|
||||
|
// Lists & Trees (File explorer highlights) |
||||
|
"list.activeSelectionForeground": "#f85149", |
||||
|
"textLink.foreground": "#f85149", |
||||
|
"progressBar.background": "#f85149" |
||||
|
} |
||||
|
}, |
||||
|
// Vim |
||||
|
{ |
||||
|
// --- General Editor Settings (matching 'set' commands) --- |
||||
|
"editor.lineNumbers": "relative", // set relativenumber |
||||
|
"vim.useSystemClipboard": true, // set clipboard+=unnamedplus |
||||
|
"editor.tabSize": 4, // set tabstop=4 shiftwidth=4 |
||||
|
"editor.insertSpaces": true, // set expandtab |
||||
|
"editor.wordWrap": "wordWrapColumn", // set tw=60 (approximate behavior) |
||||
|
"editor.wordWrapColumn": 60, |
||||
|
"editor.cursorSurroundingLines": 5, // set linespace / scrolloff behavior |
||||
|
"files.autoSave": "afterDelay", // Replaces vim-auto-save plugin |
||||
|
"files.autoSaveDelay": 1000, // set updatetime=1000 |
||||
|
|
||||
|
// --- Vim Extension Configuration --- |
||||
|
"vim.leader": "<space>", // let mapleader="\<Space>" |
||||
|
"vim.hlsearch": true, // set hlsearch |
||||
|
"vim.timeout": 350, // set timeoutlen=350 |
||||
|
|
||||
|
// --- Key Rebinding (Core) --- |
||||
|
// Handle Ctrl key conflicts so Vim handles them, not VS Code |
||||
|
"vim.handleKeys": { |
||||
|
"<C-a>": false, |
||||
|
"<C-f>": false, |
||||
|
"<C-p>": false // Let VS Code handle Quick Open (like fzf) |
||||
|
}, |
||||
|
|
||||
|
// --- Core Editor Settings (from 'set' commands) --- |
||||
|
|
||||
|
// set background=dark |
||||
|
|
||||
|
// set relativenumber |
||||
|
"editor.lineNumbers": "relative", |
||||
|
|
||||
|
// set expandtab |
||||
|
"editor.insertSpaces": true, |
||||
|
|
||||
|
// set tabstop=4, set shiftwidth=4 |
||||
|
"editor.tabSize": 4, |
||||
|
|
||||
|
// set tw=60 |
||||
|
"editor.wordWrap": "wordWrapColumn", |
||||
|
"editor.wordWrapColumn": 60, |
||||
|
|
||||
|
// set nofixendofline (this is the opposite of VS Code's default, so we disable the default) |
||||
|
"files.insertFinalNewline": false, |
||||
|
|
||||
|
// set mouse=a |
||||
|
"editor.mouseWheelZoom": true, // VS Code equivalent for mouse interaction |
||||
|
|
||||
|
// --- Language-Specific Settings (from 'autocmd FileType...') --- |
||||
|
|
||||
|
// autocmd FileType *css,...,typescriptreact,yaml set tabstop=2 shiftwidth=2 |
||||
|
"[css]": { |
||||
|
"editor.tabSize": 2 |
||||
|
}, |
||||
|
"[scss]": { |
||||
|
"editor.tabSize": 2 |
||||
|
}, |
||||
|
"[html]": { |
||||
|
"editor.tabSize": 2 |
||||
|
}, |
||||
|
"[javascript]": { |
||||
|
"editor.tabSize": 2 |
||||
|
}, |
||||
|
"[javascriptreact]": { |
||||
|
"editor.tabSize": 2 |
||||
|
}, |
||||
|
"[json]": { |
||||
|
"editor.tabSize": 2 |
||||
|
}, |
||||
|
"[typescript]": { |
||||
|
"editor.tabSize": 2 |
||||
|
}, |
||||
|
"[typescriptreact]": { |
||||
|
"editor.tabSize": 2 |
||||
|
}, |
||||
|
"[yaml]": { |
||||
|
"editor.tabSize": 2 |
||||
|
}, |
||||
|
|
||||
|
// autocmd FileType go set noexpandtab sw=4 |
||||
|
"[go]": { |
||||
|
"editor.insertSpaces": false, |
||||
|
"editor.tabSize": 4 |
||||
|
}, |
||||
|
|
||||
|
// autocmd Filetype markdown set textwidth=55, formatoptions=... |
||||
|
"[markdown]": { |
||||
|
"editor.wordWrap": "wordWrapColumn", |
||||
|
"editor.wordWrapColumn": 55, |
||||
|
// The rest of 'formatoptions' (like cjMqtvw) is handled by extensions/VSCodeVim |
||||
|
}, |
||||
|
|
||||
|
// autocmd Filetype groovy,Jenkinsfile,taskdata set tw=0 |
||||
|
"[groovy]": { |
||||
|
"editor.wordWrap": "off" |
||||
|
}, |
||||
|
"[jenkinsfile]": { |
||||
|
"editor.wordWrap": "off" |
||||
|
}, |
||||
|
|
||||
|
// --- VSCodeVim Settings (from 'vim.useSystemClipboard', 'let mapleader', 'nnoremap', etc.) --- |
||||
|
|
||||
|
// set clipboard+=unnamedplus |
||||
|
"vim.useSystemClipboard": true, |
||||
|
|
||||
|
// set hlsearch |
||||
|
"vim.hlsearch": true, |
||||
|
|
||||
|
// set smartcase |
||||
|
"vim.smartcase": true, |
||||
|
|
||||
|
// set timeoutlen=350 |
||||
|
"vim.timeout": 350, |
||||
|
|
||||
|
// set undofile |
||||
|
"vim.undofile": true, |
||||
|
|
||||
|
// let mapleader="\<Space>" |
||||
|
"vim.leader": " ", |
||||
|
|
||||
|
// nnoremap Q @@ |
||||
|
"vim.normalModeKeyBindingsNonRecursive": [ |
||||
|
{ |
||||
|
"before": ["Y"], |
||||
|
"after": ["y", "$"], // Changed from 'yy' to 'y$' which is more idiomatic Vim |
||||
|
"silent": true |
||||
|
}, |
||||
|
{ |
||||
|
"before": ["Q"], |
||||
|
"after": ["@", "@"], // Last macro |
||||
|
"silent": true |
||||
|
}, |
||||
|
{ |
||||
|
"before": [","], |
||||
|
"after": ["z", "a"], // Toggle fold |
||||
|
"silent": true |
||||
|
}, |
||||
|
{ |
||||
|
"before": ["'"], |
||||
|
"after": ["`"], // Jump to horizontal position for mark |
||||
|
"silent": true |
||||
|
}, |
||||
|
// nnoremap <leader>d d$ |
||||
|
{ |
||||
|
"before": ["<leader>", "d"], |
||||
|
"after": ["d", "$"] |
||||
|
}, |
||||
|
// nnoremap <leader>dl 0d$ |
||||
|
{ |
||||
|
"before": ["<leader>", "d", "l"], |
||||
|
"after": ["0", "d", "$"] |
||||
|
}, |
||||
|
// nnoremap <leader>k <C-O> (Jump back) |
||||
|
{ |
||||
|
"before": ["<leader>", "k"], |
||||
|
"after": ["<C-o>"] |
||||
|
}, |
||||
|
// nnoremap <leader>j <C-I> (Jump forward) |
||||
|
{ |
||||
|
"before": ["<leader>", "j"], |
||||
|
"after": ["<C-i>"] |
||||
|
}, |
||||
|
// nnoremap <leader>sp :sp |
||||
|
{ |
||||
|
"before": ["<leader>", "s", "p"], |
||||
|
"commands": [":split"] |
||||
|
}, |
||||
|
// nnoremap <leader>vs :vs |
||||
|
{ |
||||
|
"before": ["<leader>", "v", "s"], |
||||
|
"commands": [":vsplit"] |
||||
|
}, |
||||
|
// nnoremap <leader>vv :vsp ~/.vimrc<CR> (Translated to open settings.json) |
||||
|
{ |
||||
|
"before": ["<leader>", "v", "v"], |
||||
|
"commands": ["workbench.action.openSettingsJson"] |
||||
|
}, |
||||
|
// nnoremap <leader>yo :Goyo<CR> (Translated to Zen Mode) |
||||
|
{ |
||||
|
"before": ["<leader>", "y", "o"], |
||||
|
"commands": ["workbench.action.toggleZenMode"] |
||||
|
} |
||||
|
] |
||||
|
} |
||||
@ -0,0 +1,39 @@ |
|||||
|
function fn-progress |
||||
|
# --- Season Dates (Fortnite Chapter 7 Season 1) --- |
||||
|
set SEASON_START "2025-11-29 00:00:00" |
||||
|
set SEASON_END "2026-03-04 00:00:00" |
||||
|
|
||||
|
# --- Calculate Unix Timestamps --- |
||||
|
set START_SECONDS (date -d "$SEASON_START" +%s) |
||||
|
set END_SECONDS (date -d "$SEASON_END" +%s) |
||||
|
set CURRENT_SECONDS (date +%s) |
||||
|
set CURRENT_DATE_TIME (date) |
||||
|
|
||||
|
# --- Check if the season is over or hasn't started --- |
||||
|
if test "$CURRENT_SECONDS" -lt "$START_SECONDS" |
||||
|
echo "🎯 Fortnite C7S1 hasn't started yet! (Starts on $SEASON_START)" |
||||
|
return |
||||
|
end |
||||
|
|
||||
|
if test "$CURRENT_SECONDS" -ge "$END_SECONDS" |
||||
|
echo "🎉 Fortnite C7S1 has ended! (Ended on $SEASON_END)" |
||||
|
return |
||||
|
end |
||||
|
|
||||
|
# --- Calculate Progress --- |
||||
|
set TOTAL_DURATION (math "$END_SECONDS - $START_SECONDS") |
||||
|
set TIME_PASSED (math "$CURRENT_SECONDS - $START_SECONDS") |
||||
|
|
||||
|
# --- Calculate the ceiling percentage (The Critical Change) --- |
||||
|
# Setting scale=0 forces bc to output only the integer part (truncation), |
||||
|
# and adding 0.9999 before truncation implements the ceiling logic. |
||||
|
set PROGRESS_PERCENT (echo "scale=0; (($TIME_PASSED * 100) / $TOTAL_DURATION) + 0.9999" | bc) |
||||
|
|
||||
|
# --- Output Result --- |
||||
|
echo "📅 Current Date/Time: $CURRENT_DATE_TIME" |
||||
|
echo "🚀 Season Start: $SEASON_START" |
||||
|
echo "🛑 Season End: $SEASON_END" |
||||
|
echo "---" |
||||
|
echo "✅ Fortnite C7S1 is **$PROGRESS_PERCENT%** complete!" |
||||
|
echo "---" |
||||
|
end |
||||
@ -0,0 +1,12 @@ |
|||||
|
📅 Current Date/Time: Sat Dec 6 12:55:57 EST 2025 |
||||
|
🚀 Season Start: 2025-11-29 00:00:00 |
||||
|
🛑 Season End: 2026-03-04 00:00:00 |
||||
|
--- |
||||
|
✅ Fortnite C7S1 is **7.93%** complete! |
||||
|
--- |
||||
|
]4;0;#0B0E12\]4;1;#671D22\]4;2;#722327\]4;3;#19453B\]4;4;#1B594F\]4;5;#51554A\]4;6;#99322C\]4;7;#82bcb1\]4;8;#5b837b\]4;9;#671D22\]4;10;#722327\]4;11;#19453B\]4;12;#1B594F\]4;13;#51554A\]4;14;#99322C\]4;15;#82bcb1\]10;#82bcb1\]11;#0B0E12\]12;#82bcb1\]13;#82bcb1\]17;#82bcb1\]19;#0B0E12\]4;232;#0B0E12\]4;256;#82bcb1\]708;#0B0E12\📅 Current Date/Time: Sat Dec 6 12:55:57 EST 2025 |
||||
|
🚀 Season Start: 2025-11-29 00:00:00 |
||||
|
🛑 Season End: 2026-03-04 00:00:00 |
||||
|
--- |
||||
|
✅ Fortnite C7S1 is **7.93%** complete! |
||||
|
--- |
||||
@ -1,6 +1,21 @@ |
|||||
#!/bin/bash |
#!/bin/bash |
||||
|
|
||||
. "/home/kevin/.cache/wal/colors.sh" |
|
||||
printf "$(date '+%H:%M.%a-%m-%d')\n\n%s\n" "$color7" |
|
||||
|
#. "/home/kevin/.cache/wal/colors.sh" |
||||
|
#printf " $(date '+%H:%M.%a-%m-%d')\n\n%s\n" "$color7" |
||||
# echo "<span foreground=\"%s\">$(date '+%H:%M.%a-%m-%d')%s</span>" "$color2" |
# echo "<span foreground=\"%s\">$(date '+%H:%M.%a-%m-%d')%s</span>" "$color2" |
||||
# printf "%s" "$color2" |
# printf "%s" "$color2" |
||||
|
|
||||
|
# Load colors from pywal cache |
||||
|
. "/home/kevin/.cache/wal/colors.sh" |
||||
|
|
||||
|
# Define the date format matching the output in your screenshot (e.g., Sat 12/06 12:46) |
||||
|
DATE_FORMAT='+%a %m/%d %H:%M' |
||||
|
|
||||
|
# Use Pango markup to wrap the entire string, applying the color, |
||||
|
# and explicitly defining the icon () and the date output. |
||||
|
# The icon is U+F017. |
||||
|
printf "<span foreground=\"%s\"> %s</span>\n" "$color7" "$(date "$DATE_FORMAT")" |
||||
|
|
||||
|
# The next two lines are optional for i3blocks but usually required for color output: |
||||
|
printf "\n" # Short text (optional) |
||||
|
printf "%s\n" "$color7" # Color (optional, but good practice) |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue