From 7c55fe9d229f63f3a818b099a51f18e0d79d08f0 Mon Sep 17 00:00:00 2001 From: Kevin Mok Date: Sun, 7 Dec 2025 16:10:00 -0500 Subject: [PATCH] VSCode init --- aliases/key_aliases.tmpl | 2 +- aliases/key_dirs.tmpl | 5 +- dot_Xmodmap | 24 +- dot_config/Code/User/keybindings.json | 39 +++ dot_config/Code/User/settings.json | 243 ++++++++++++++++++ dot_config/fish/config.fish.tmpl | 1 + dot_config/fish/functions/fn-progress.fish | 39 +++ dot_config/fish/functions/test_output.txt | 12 + dot_config/i3/config.tmpl | 10 +- .../i3blocks/i3blocks-secondary.conf.tmpl | 2 +- dot_config/i3blocks/i3blocks.conf.tmpl | 29 +-- dot_config/i3blocks/scripts/executable_time | 19 +- dot_config/kitty/kitty.conf | 9 + 13 files changed, 404 insertions(+), 30 deletions(-) create mode 100644 dot_config/Code/User/keybindings.json create mode 100644 dot_config/Code/User/settings.json create mode 100755 dot_config/fish/functions/fn-progress.fish create mode 100644 dot_config/fish/functions/test_output.txt diff --git a/aliases/key_aliases.tmpl b/aliases/key_aliases.tmpl index ff5c5f5..6962d85 100644 --- a/aliases/key_aliases.tmpl +++ b/aliases/key_aliases.tmpl @@ -1043,7 +1043,7 @@ twf "watch -n300 'twitchy-game Fortnite'" lob "lsd -F --group-dirs first 2020*.mkv" wob "watch -n60 'lsd -lF --group-dirs first --size short 2020*.mkv'" -fnpr "t timeline FNProgress | sed -n '2p'" +#fnpr "t timeline FNProgress | sed -n '2p'" fnu "sxiv ~/Documents/fortnite/pics/maps/upgrade.png &" fnl "python /mnt/linux-files-3/fortnite/show-level.py" diff --git a/aliases/key_dirs.tmpl b/aliases/key_dirs.tmpl index 943334a..49f17bf 100644 --- a/aliases/key_dirs.tmpl +++ b/aliases/key_dirs.tmpl @@ -8,7 +8,7 @@ cfg ~/.config cfgf ~/.config/fish ch ~/Documents/chat dc ~/Documents/chat/discord -da /mnt/ipad/DCIM/105APPLE +da /mnt/ipad/DCIM/106APPLE dl ~/Downloads # dw ~/dwm D ~/Documents @@ -186,6 +186,8 @@ sdvsvg ~/Documents/stardew-valley-sdv-saves/hevintales snp ~/Documents/marvel-snap snpv /mnt/linux-files-2/Videos/ipad/marvel-snap +dal /mnt/linux-files-3/ipad/106APPLE + # ]]] gaming # # pey [[[ # @@ -297,6 +299,7 @@ kb ~/coding/kanban-calendar ac ~/coding/astral-challenge-txt rbc ~/coding/rbc-aml/src +cibc ~/school/job-hunt/interview-questions/cibc # ]]] sch # diff --git a/dot_Xmodmap b/dot_Xmodmap index d7744aa..d62339b 100644 --- a/dot_Xmodmap +++ b/dot_Xmodmap @@ -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 -keycode 9 = Caps_Lock +! Map the physical Caps Lock key (66) to 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 -! side thumb button as middle click -! pointer = 1 10 3 6 7 4 5 2 11 12 8 9 diff --git a/dot_config/Code/User/keybindings.json b/dot_config/Code/User/keybindings.json new file mode 100644 index 0000000..7b81fbb --- /dev/null +++ b/dot_config/Code/User/keybindings.json @@ -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 +] \ No newline at end of file diff --git a/dot_config/Code/User/settings.json b/dot_config/Code/User/settings.json new file mode 100644 index 0000000..638405a --- /dev/null +++ b/dot_config/Code/User/settings.json @@ -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": [ + "" + ], + "after": [ + "" + ], + "commands": [ + "workbench.action.files.save" + ] + } + ], + + // Optional: If you use the non-recursive version (recommended for most simple mappings): + "vim.insertModeKeyBindingsNonRecursive": [ + { + "before": [ + "" + ], + "after": [ + "" + ], + "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": "", // let mapleader="\" + "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": { + "": false, + "": false, + "": 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="\" + "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 d d$ + { + "before": ["", "d"], + "after": ["d", "$"] + }, + // nnoremap dl 0d$ + { + "before": ["", "d", "l"], + "after": ["0", "d", "$"] + }, + // nnoremap k (Jump back) + { + "before": ["", "k"], + "after": [""] + }, + // nnoremap j (Jump forward) + { + "before": ["", "j"], + "after": [""] + }, + // nnoremap sp :sp + { + "before": ["", "s", "p"], + "commands": [":split"] + }, + // nnoremap vs :vs + { + "before": ["", "v", "s"], + "commands": [":vsplit"] + }, + // nnoremap vv :vsp ~/.vimrc (Translated to open settings.json) + { + "before": ["", "v", "v"], + "commands": ["workbench.action.openSettingsJson"] + }, + // nnoremap yo :Goyo (Translated to Zen Mode) + { + "before": ["", "y", "o"], + "commands": ["workbench.action.toggleZenMode"] + } + ] +} \ No newline at end of file diff --git a/dot_config/fish/config.fish.tmpl b/dot_config/fish/config.fish.tmpl index 5591a09..25b374d 100755 --- a/dot_config/fish/config.fish.tmpl +++ b/dot_config/fish/config.fish.tmpl @@ -242,6 +242,7 @@ abbr fd1 "fd --changed-within 1d" abbr ens "enable-site" abbr ev "evince-silent" abbr ff "fzf-cd" +abbr fnpr "fn-progress" # abbr fbg "find-bg" # abbr fr "fzf-ranger" abbr fv "fzf-vim" diff --git a/dot_config/fish/functions/fn-progress.fish b/dot_config/fish/functions/fn-progress.fish new file mode 100755 index 0000000..830b12f --- /dev/null +++ b/dot_config/fish/functions/fn-progress.fish @@ -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 diff --git a/dot_config/fish/functions/test_output.txt b/dot_config/fish/functions/test_output.txt new file mode 100644 index 0000000..8a9de4d --- /dev/null +++ b/dot_config/fish/functions/test_output.txt @@ -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! +--- diff --git a/dot_config/i3/config.tmpl b/dot_config/i3/config.tmpl index aa202af..ce8788e 100755 --- a/dot_config/i3/config.tmpl +++ b/dot_config/i3/config.tmpl @@ -23,6 +23,7 @@ exec wal -i $(/home/kevin/scripts/shuffler "$HOME/Pictures/Backgrounds/dim/editi # exec --no-startup-id i3-msg 'workspace $ws2; exec $term -e fish -c "tmux-attach fortnite"' exec --no-startup-id i3-msg 'workspace $ws3; exec $browser' exec --no-startup-id i3-msg 'workspace $ws6; exec vesktop' +exec --no-startup-id i3-msg 'workspace $ws6; exec signal-desktop' # exec --no-startup-id i3-msg 'workspace $ws5; exec $term -e twitchy' # exec --no-startup-id i3-msg 'workspace $ws5; exec firefox -P nft' #exec --no-startup-id i3-msg workspace $ws6; exec discord @@ -362,8 +363,8 @@ bindsym $mod+Shift+F2 workspace $ws2; exec $term -e mosh kmok@$work_laptop_ip -- # ws3 [[[ # -set $ws3 "3  " -# set $ws3 "3 " +#set $ws3 "3  " + set $ws3 "3 " # workspace $ws3 output $main # bindsym $mod+F3 workspace $ws3; exec $browser # bindsym $mod+F3 exec $browser; move container to workspace $ws3; workspace $ws3 @@ -428,7 +429,7 @@ for_window [class="ada-mario"] move absolute position 640 0 set $ws6 "6  " workspace $ws6 output $secondary assign [class="Slack"] $ws6 -bindsym Mod4+d workspace $ws6; exec discord +bindsym Mod4+d workspace $ws6; exec vesktop bindsym Mod4+$mod+d workspace $ws6; exec element-desktop bindsym Mod4+i workspace $ws6; exec signal-desktop # bindsym Mod4+d workspace $ws6; exec firefox -new-window https://riot.im/app @@ -485,7 +486,7 @@ workspace $ws11 output $secondary bindsym $mod+F11 workspace $ws11; exec $term -e btop # bindsym Mod4+$mod+F11 workspace $ws11; exec $term -e fish -c 'tmux-attach backup' bindsym Control+Shift+F11 workspace $ws11; exec $term -e fish -c 'tmux-attach backup' -bindsym Mod4+t workspace $ws11; exec nordvpn connect && transmission-gtk +#bindsym Mod4+t workspace $ws11; exec nordvpn connect && transmission-gtk # bindsym $mod+F11 workspace $ws11; exec $term -e gotop -m # bindsym Mod4+a workspace $ws11; exec antimicro @@ -592,6 +593,7 @@ bar { font pango:$sb_font 17 {{ else }} # font pango:$sb_font 17 + #font pango:$sb_font 16:pixelsize=5 font pango:$sb_font 16 {{ end }} colors { diff --git a/dot_config/i3blocks/i3blocks-secondary.conf.tmpl b/dot_config/i3blocks/i3blocks-secondary.conf.tmpl index 69ec999..8cce828 100755 --- a/dot_config/i3blocks/i3blocks-secondary.conf.tmpl +++ b/dot_config/i3blocks/i3blocks-secondary.conf.tmpl @@ -65,7 +65,7 @@ interval=60 [calendar] interval=1 -label= +#label= # DATEFMT=+%H:%M.%a-%m-%d # DATEFMT=+%H:%M #DATEFMT=+%H:%M diff --git a/dot_config/i3blocks/i3blocks.conf.tmpl b/dot_config/i3blocks/i3blocks.conf.tmpl index 6b316f2..d15383e 100755 --- a/dot_config/i3blocks/i3blocks.conf.tmpl +++ b/dot_config/i3blocks/i3blocks.conf.tmpl @@ -30,17 +30,12 @@ color=#cbe4ff # TICKER=ARBUSD # interval=30 -# [ticker] -# label=ETH -# TICKER=ETH-USD -# interval=30 - -[dexscreener] -label=HERO -#CHAIN=solana -#PAIR=B4Vwozy1FGtp8SELXSXydWSzavPUGnJ77DURV2k4MhUV -command=/home/kevin/.config/i3blocks/scripts/dexscreener abstract 0x3771b51b5a705338fa19702f249afcaa94b0cd8c -interval=5 +#[dexscreener] +#label=HERO +##CHAIN=solana +##PAIR=B4Vwozy1FGtp8SELXSXydWSzavPUGnJ77DURV2k4MhUV +#command=/home/kevin/.config/i3blocks/scripts/dexscreener abstract 0x3771b51b5a705338fa19702f249afcaa94b0cd8c +#interval=5 #[kraken] #label=BTC @@ -49,11 +44,11 @@ interval=5 #command=/home/kevin/.config/i3blocks/scripts/kraken BTCUSDC #interval=30 -#[kraken] -#label=ETH -##TICKER=ETHUSDC -#command=/home/kevin/.config/i3blocks/scripts/kraken ETHUSDC -#interval=30 +[kraken] +label=ETH +#TICKER=ETHUSDC +command=/home/kevin/.config/i3blocks/scripts/kraken ETHUSDC +interval=30 ## [ticker] ## label=btc  @@ -178,7 +173,7 @@ interval=5 [calendar] interval=1 -label= +#label= # DATEFMT=+%H:%M # DATEFMT=+%H:%M.%a-%m-%d # SHORTFMT=+%H:%M:%S diff --git a/dot_config/i3blocks/scripts/executable_time b/dot_config/i3blocks/scripts/executable_time index bd5b1f9..c3b3fdc 100755 --- a/dot_config/i3blocks/scripts/executable_time +++ b/dot_config/i3blocks/scripts/executable_time @@ -1,6 +1,21 @@ #!/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 "$(date '+%H:%M.%a-%m-%d')%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 " %s\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) diff --git a/dot_config/kitty/kitty.conf b/dot_config/kitty/kitty.conf index 34f2d83..206a1ee 100644 --- a/dot_config/kitty/kitty.conf +++ b/dot_config/kitty/kitty.conf @@ -18,3 +18,12 @@ font_size 12 map ctrl+alt+up change_font_size all +1.0 map ctrl+alt+down change_font_size all -1.0 font_family Hack Nerd Font Mono +bold_font Hack Nerd Font Mono Bold + +# Map PUA ranges to the Symbols Nerd Font (or your main Nerd Font) +# The Firefox icon (U+E2E9) is often in the Pomicons or Devicons range +symbol_map U+E000-U+EFFF Hack Nerd Font Mono +symbol_map U+F000-U+FFFF Hack Nerd Font Mono +symbol_map U+23FB-U+23FE,U+2B58,U+2EFE-U+3000 Hack Nerd Font Mono +# You can also use the symbols-only font if you have it installed: +# symbol_map U+E000-U+F8FF Symbols Nerd Font Mono