diff --git a/bootstrap/components/rime.sh b/bootstrap/components/rime.sh index b98bfb3..d847063 100644 --- a/bootstrap/components/rime.sh +++ b/bootstrap/components/rime.sh @@ -1,9 +1,17 @@ echo "[INFO] Installing Rime" -git clone --depth 1 https://github.com/js0ny/rime_wanxiang_pro.git ~/Library/Rime +case "$(uname)" in + Linux) + RIMEDIR="${RIMEDIR:-$HOME/.local/share/fcitx5/rime}" + ;; + Darwin) + RIMEDIR="${RIMEDIR:-$HOME/Library/Rime}" + ;; +esac + +git clone --depth 1 https://github.com/js0ny/rime_wanxiang_pro.git "$RIMEDIR" cd ~/Library/Rime || exit just init # just install_rime -## Rime is installed via Brewfile just clone_plum diff --git a/bootstrap/linux/main.bash b/bootstrap/linux/main.bash index 7ba4699..99f49bd 100644 --- a/bootstrap/linux/main.bash +++ b/bootstrap/linux/main.bash @@ -116,6 +116,8 @@ echo "[INFO] Setting up symbolic links" source "$DOTFILES"/bootstrap/linux/symlinks.bash +set +x + if [ "$WHEEL" -eq 1 ]; then source "$DOTFILES"/tools/bash/xdg-compact.sh source "$DOTFILES"/tools/bash/global.bashrc @@ -124,6 +126,8 @@ source "$DOTFILES"/tools/bash/profile source "$DOTFILES"/tools/bash/bashrc source "$DOTFILES"/tools/bash/bash_aliases +set -x + if command -v zsh >/dev/null 2>&1; then read -p "[ACTION] Do you want to setup zsh? (Y/n) " -r choice diff --git a/bootstrap/Windows.ps1 b/bootstrap/setup.ps1 similarity index 50% rename from bootstrap/Windows.ps1 rename to bootstrap/setup.ps1 index bd18b93..fbbdd94 100644 --- a/bootstrap/Windows.ps1 +++ b/bootstrap/setup.ps1 @@ -1,3 +1,49 @@ +#Requires -RunAsAdministrator +# TODO: This file is under development +exit 1 + +$DOTFILES = if ($Env:DOTFILES) { $Env:DOTFILES } else { Join-Path "$Env:USERPROFILE" "dotfiles" } + + +New-Item -ItemType Directory -Path (Join-Path $Env:UserProfile "Temp") -Force + +winget install -e --id Git.Git + +if (Get-Command git -ErrorAction SilentlyContinue) { + git clone https://github.com/js0ny/dotfiles.git "$DOTFILES" --depth 1 +} +else { + Write-Output "[ERROR] Git is not installed" + exit 1 +} + +# Install scoop +Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser +Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression + +# Inline `sudo` +sudo sudo config --enable normal + +$BOOTSTRAP = Join-Path $DOTFILES "bootstrap" "win" + +. (Join-Path $BOOTSTRAP "Environment.ps1") +. (Join-Path $BOOTSTRAP "Registry.ps1") +. (Join-Path $BOOTSTRAP "Symlinks.ps1") + +scoop import (Join-Path $BOOTSTRAP "Scoopfile.json") + +# Rime + +$RIMEDIR = Join-Path $Env:AppData "Rime" +git clone --depth 1 https://github.com/js0ny/rime_wanxiang_pro.git $RIMEDIR + +Set-Location $RIMEDIR +just init +just clone_plum + +# The section below not done yet +exit 1 + #!C:\Program Files\WindowsApps\Microsoft.PowerShell_7.4.6.0_x64__8wekyb3d8bbwe\pwsh.EXE # Run with PowerShell 7 winget install -e --id Git.Git @@ -13,101 +59,6 @@ Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression # Install Chocolatey # Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1')) -# Set Environment Variables -# Use %PATH_EXT% to prevent PATH from being too long -[System.Environment]::SetEnvironmentVariable("Path_EXT_0", "D:\bin", "User") -[System.Environment]::SetEnvironmentVariable("Path_EXT_0", "C:\Users\jsony\AppData\Local\Cargo\bin", "User") -[System.Environment]::SetEnvironmentVariable("Path_EXT_1", "C:\Users\jsony\AppData\Local\Go\bin", "User") -[System.Environment]::SetEnvironmentVariable("Path_EXT_2", "C:\Users\jsony\AppData\Local\Cargo\bin", "User") -$currentPath = [System.Environment]::GetEnvironmentVariable("Path", "User") -if ($currentPath -notlike "*%PATH_EXT%*") { - $currentPath += ";%PATH_EXT_0%;%PATH_EXT_1%;%PATH_EXT_2%" -} -[System.Environment]::SetEnvironmentVariable("Path", $currentPath, "User") -[System.Environment]::SetEnvironmentVariable("PATH_EXT_0", "", [System.EnvironmentVariableTarget]::Machine) -[System.Environment]::SetEnvironmentVariable("PATH_EXT_1", "", [System.EnvironmentVariableTarget]::Machine) -[System.Environment]::SetEnvironmentVariable("PATH_EXT_2", "", [System.EnvironmentVariableTarget]::Machine) -$currentPath = [System.Environment]::GetEnvironmentVariable("Path", [System.EnvironmentVariableTarget]::Machine) -if ($currentPath -notlike "*%PATH_EXT%*") { - $currentPath += ";%PATH_EXT_0%;%PATH_EXT_1%;%PATH_EXT_2%" -} -[System.Environment]::SetEnvironmentVariable("Path", $currentPath, [System.EnvironmentVariableTarget]::Machine) -# Simulate XDG Base Directory Specification -$Env:XDG_CONFIG_HOME = "$Env:AppData" -$Env:XDG_DATA_HOME = "$Env:LocalAppData" -$Env:XDG_CACHE_HOME = "$Env:LocalAppData\Cache" -$Env:XDG_STATE_HOME = "$Env:LocalAppData\State" -[System.Environment]::SetEnvironmentVariable("XDG_CONFIG_HOME", "$Env:XDG_CONFIG_HOME", "User") -[System.Environment]::SetEnvironmentVariable("XDG_DATA_HOME", "$Env:XDG_DATA_HOME", "User") -New-Item -ItemType Directory -Path "$Env:LocalAppData\cache" -Force -[System.Environment]::SetEnvironmentVariable("XDG_CACHE_HOME", "$Env:XDG_CACHE_HOME", "User") -New-Item -ItemType Directory -Path "$Env:LocalAppData\state" -Force -[System.Environment]::SetEnvironmentVariable("XDG_STATE_HOME", "$Env:XDG_STATE_HOME", "User") -# Add environment variables -[System.Environment]::SetEnvironmentVariable("DOTFILES", "$DOTFILES", "User") -# Set potential environment variables to prevent softwares put their configs in the wrong place -# eg. dotfiles in %UserProfile% -# ~\.aws -> %AppData%\aws :: AWS CLI -New-Item -ItemType Directory -Path "$Env:AppData\aws" -Force -[System.Environment]::SetEnvironmentVariable("AWS_CONFIG_FILE", "$Env:AppData\aws\config", "User") -[System.Environment]::SetEnvironmentVariable("AWS_SHARED_CREDENTIALS_FILE", "$Env:AppData\aws\credentials", "User") -# ~\.azure -> %LocalAppData%\Azure :: Azure CLIcargo install --list -[System.Environment]::SetEnvironmentVariable("AZURE_CONFIG_DIR", "$Env:LocalAppData\Azure", "User") -# ~\.cargo -> %LocalAppData%\Cargo :: Rust https://doc.rust-lang.org/cargo/guide/cargo-home.html -[System.Environment]::SetEnvironmentVariable("CARGO_HOME", "$Env:LocalAppData\Cargo", "User") -# ~\.docker -> %AppData%\dotDocker :: Docker (Docker takes %AppData%\Docker, use dotDocker instead) -[System.Environment]::SetEnvironmentVariable("DOCKER_CONFIG", "$Env:AppData\dotDocker", "User") -# ~\.dotnet -> %LocalAppData%\dotNET :: .NET Core -[System.Environment]::SetEnvironmentVariable("DOTNET_CLI_HOME", "$Env:LocalAppData\dotNET", "User") -# ~\.emacs.d -> %AppData%\.emacs.d :: Emacs (This is default) -# [System.Environment]::SetEnvironmentVariable("EMACS_HOME", "$Env:AppData\emacs.d", "User") -# ~\go -> %LocalAppData%\GO :: golang -[System.Environment]::SetEnvironmentVariable("GOPATH", "$Env:LocalAppData\GO", "User") -# ~\.ipython -> %AppData%\ipython :: IPython -# IPython won't check XDG on Windows https://github.com/ipython/ipython/blob/0615526f80691452f2e282c363bce197c0141561/IPython/utils/path.py#L200 -[System.Environment]::SetEnvironmentVariable("IPYTHONDIR", "$Env:AppData\ipython", "User") -# ~\.julia -> %LocalAppData%\julia :: Julia -[System.Environment]::SetEnvironmentVariable("JULIA_DEPOT_PATH", "$Env:LocalAppData\julia", "User") -# ~\_lesshst -> %LocalAppData%\state\lesshst :: less -[System.Environment]::SetEnvironmentVariable("LESSHISTFILE", "$Env:XDG_STATE_HOME\lesshst", "User") -# %AppData%\less\lesskey :: less -New-Item -ItemType Directory -Path "$Env:AppData\less" -Force -[System.Environment]::SetEnvironmentVariable("LESSKEYIN", "$Env:AppData\less\lesskey", "User") -# ~\.matplotlib -> %LocalAppData%\matplotlib :: Matplotlib -[System.Environment]::SetEnvironmentVariable("MPLCONFIGDIR", "$Env:LocalAppData\matplotlib", "User") -# ~\.npmrc -> %AppData%\npm\npmrc :: npm -[System.Environment]::SetEnvironmentVariable("NPM_CONFIG_USERCONFIG", "$Env:AppData\npm\npmrc", "User") -# ~\.node_repl_history -> %LocalAppData%\state\node\repl_history :: Node.js -New-Item -ItemType Directory -Path "$Env:XDG_STATE_HOME\node" -Force -[System.Environment]::SetEnvironmentVariable("NODE_REPL_HISTORY", "$Env:XDG_STATE_HOME\node\repl_history", "User") -# ~\.ts_node_repl_history -> %LocalAppData%\state\node\ts_node_repl_history :: Node.js -# NOTE: ts-node doesn't support this yet -# [System.Environment]::SetEnvironmentVariable("TS_NODE_REPL_HISTORY", "$Env:XDG_STATE_HOME\node\ts_node_repl_history", "User") -# ~\.nuget\packages -> %LocalAppData%\cache\NuGet\packages :: NuGet -[System.Environment]::SetEnvironmentVariable("NUGET_PACKAGES", "$Env:XDG_CACHE_HOME\NuGet\packages", "User") -# ~\.omnisharp -> %AppData%\OmniSharp :: OmniSharp -[System.Environment]::SetEnvironmentVariable("OMNISHARPHOME", "$Env:AppData\OmniSharp", "User") -# ~\.python_history -> %LocalAppData%\state\python\python_history :: Python -# Only works for Python 3.13+ https://docs.python.org/3.13/using/cmdline.html#envvar-PYTHON_HISTORY -New-Item -ItemType Directory -Path "$Env:XDG_STATE_HOME\python" -Force -[System.Environment]::SetEnvironmentVariable("PYTHON_HISTORY", "$Env:XDG_STATE_HOME\python\python_history", "User") -# ~\.rustup -> %LocalAppData%\Rustup :: Rust -[System.Environment]::SetEnvironmentVariable("RUSTUP_HOME", "$Env:LocalAppData\Rustup", "User") -# ~\.vimrc -> %AppData%\Vim\_vimrc :: Vim -New-Item -ItemType Directory -Path "$Env:AppData\Vim" -Force -[System.Environment]::SetEnvironmentVariable("VIM", "$Env:AppData\Vim", "User") -[System.Environment]::SetEnvironmentVariable("KOMOREBI_CONFIG_HOME", "$Env:AppData\komorebi", "User") -# ~\.vuerc -> %AppData%\vue\.vuerc :: Vue CLI -# Currently, Vue CLI doesn't support file path configuration:https://github.com/vuejs/vue-cli/blob/dev/packages/%40vue/cli/lib/confifile -# [System.Environment]::SetEnvironmentVariable("VUE_CLI_CONFIG_PATH", "$Env:AppData\vue\.vuerc", "User") -# ~\.wget-hsts -> %LocalAppData%\cache\wget-hsts :: wget -# Use Alias, wget host file path is not configurable -# ~\.yarnrc -> %AppData%\yarn\config.yaml :: Yarn v1 -# Use Alias, yarnrc path is not configurable - -# Reload required here to make sure the environment variables are set - - # Set Dotfiles # $DOTFILES\.config $folders = @("conda", "git", "ideavim", "ipython", "markdownlint", "npm", "NuGet", "nvim", "pip", "Vim") diff --git a/bootstrap/win/Defender.ps1 b/bootstrap/win/Defender.ps1 index acea93d..06577de 100644 --- a/bootstrap/win/Defender.ps1 +++ b/bootstrap/win/Defender.ps1 @@ -1,4 +1,4 @@ -# Run as Administrator +#Requires -RunAsAdministrator Set-MpPreference -EnableControlledFolderAccess 1 diff --git a/bootstrap/win/Environments.ps1 b/bootstrap/win/Environments.ps1 new file mode 100644 index 0000000..06feb5f --- /dev/null +++ b/bootstrap/win/Environments.ps1 @@ -0,0 +1,93 @@ +# Set Environment Variables +# Use %PATH_EXT% to prevent PATH from being too long +[System.Environment]::SetEnvironmentVariable("Path_EXT_0", "D:\bin", "User") +[System.Environment]::SetEnvironmentVariable("Path_EXT_0", "C:\Users\jsony\AppData\Local\Cargo\bin", "User") +[System.Environment]::SetEnvironmentVariable("Path_EXT_1", "C:\Users\jsony\AppData\Local\Go\bin", "User") +[System.Environment]::SetEnvironmentVariable("Path_EXT_2", "C:\Users\jsony\AppData\Local\Cargo\bin", "User") +$currentPath = [System.Environment]::GetEnvironmentVariable("Path", "User") +if ($currentPath -notlike "*%PATH_EXT%*") { + $currentPath += ";%PATH_EXT_0%;%PATH_EXT_1%;%PATH_EXT_2%" +} +[System.Environment]::SetEnvironmentVariable("Path", $currentPath, "User") +[System.Environment]::SetEnvironmentVariable("PATH_EXT_0", "", [System.EnvironmentVariableTarget]::Machine) +[System.Environment]::SetEnvironmentVariable("PATH_EXT_1", "", [System.EnvironmentVariableTarget]::Machine) +[System.Environment]::SetEnvironmentVariable("PATH_EXT_2", "", [System.EnvironmentVariableTarget]::Machine) +$currentPath = [System.Environment]::GetEnvironmentVariable("Path", [System.EnvironmentVariableTarget]::Machine) +if ($currentPath -notlike "*%PATH_EXT%*") { + $currentPath += ";%PATH_EXT_0%;%PATH_EXT_1%;%PATH_EXT_2%" +} +[System.Environment]::SetEnvironmentVariable("Path", $currentPath, [System.EnvironmentVariableTarget]::Machine) +# Simulate XDG Base Directory Specification +$Env:XDG_CONFIG_HOME = "$Env:AppData" +$Env:XDG_DATA_HOME = "$Env:LocalAppData" +$Env:XDG_CACHE_HOME = "$Env:LocalAppData\Cache" +$Env:XDG_STATE_HOME = "$Env:LocalAppData\State" +[System.Environment]::SetEnvironmentVariable("XDG_CONFIG_HOME", "$Env:XDG_CONFIG_HOME", "User") +[System.Environment]::SetEnvironmentVariable("XDG_DATA_HOME", "$Env:XDG_DATA_HOME", "User") +New-Item -ItemType Directory -Path "$Env:LocalAppData\cache" -Force +[System.Environment]::SetEnvironmentVariable("XDG_CACHE_HOME", "$Env:XDG_CACHE_HOME", "User") +New-Item -ItemType Directory -Path "$Env:LocalAppData\state" -Force +[System.Environment]::SetEnvironmentVariable("XDG_STATE_HOME", "$Env:XDG_STATE_HOME", "User") +# Add environment variables +[System.Environment]::SetEnvironmentVariable("DOTFILES", "$DOTFILES", "User") +# Set potential environment variables to prevent softwares put their configs in the wrong place +# eg. dotfiles in %UserProfile% +# ~\.aws -> %AppData%\aws :: AWS CLI +New-Item -ItemType Directory -Path "$Env:AppData\aws" -Force +[System.Environment]::SetEnvironmentVariable("AWS_CONFIG_FILE", "$Env:AppData\aws\config", "User") +[System.Environment]::SetEnvironmentVariable("AWS_SHARED_CREDENTIALS_FILE", "$Env:AppData\aws\credentials", "User") +# ~\.azure -> %LocalAppData%\Azure :: Azure CLIcargo install --list +[System.Environment]::SetEnvironmentVariable("AZURE_CONFIG_DIR", "$Env:LocalAppData\Azure", "User") +# ~\.cargo -> %LocalAppData%\Cargo :: Rust https://doc.rust-lang.org/cargo/guide/cargo-home.html +[System.Environment]::SetEnvironmentVariable("CARGO_HOME", "$Env:LocalAppData\Cargo", "User") +# ~\.docker -> %AppData%\dotDocker :: Docker (Docker takes %AppData%\Docker, use dotDocker instead) +[System.Environment]::SetEnvironmentVariable("DOCKER_CONFIG", "$Env:AppData\dotDocker", "User") +# ~\.dotnet -> %LocalAppData%\dotNET :: .NET Core +[System.Environment]::SetEnvironmentVariable("DOTNET_CLI_HOME", "$Env:LocalAppData\dotNET", "User") +# ~\.emacs.d -> %AppData%\.emacs.d :: Emacs (This is default) +# [System.Environment]::SetEnvironmentVariable("EMACS_HOME", "$Env:AppData\emacs.d", "User") +# ~\go -> %LocalAppData%\GO :: golang +[System.Environment]::SetEnvironmentVariable("GOPATH", "$Env:LocalAppData\GO", "User") +# ~\.ipython -> %AppData%\ipython :: IPython +# IPython won't check XDG on Windows https://github.com/ipython/ipython/blob/0615526f80691452f2e282c363bce197c0141561/IPython/utils/path.py#L200 +[System.Environment]::SetEnvironmentVariable("IPYTHONDIR", "$Env:AppData\ipython", "User") +# ~\.julia -> %LocalAppData%\julia :: Julia +[System.Environment]::SetEnvironmentVariable("JULIA_DEPOT_PATH", "$Env:LocalAppData\julia", "User") +# ~\_lesshst -> %LocalAppData%\state\lesshst :: less +[System.Environment]::SetEnvironmentVariable("LESSHISTFILE", "$Env:XDG_STATE_HOME\lesshst", "User") +# %AppData%\less\lesskey :: less +New-Item -ItemType Directory -Path "$Env:AppData\less" -Force +[System.Environment]::SetEnvironmentVariable("LESSKEYIN", "$Env:AppData\less\lesskey", "User") +# ~\.matplotlib -> %LocalAppData%\matplotlib :: Matplotlib +[System.Environment]::SetEnvironmentVariable("MPLCONFIGDIR", "$Env:LocalAppData\matplotlib", "User") +# ~\.npmrc -> %AppData%\npm\npmrc :: npm +[System.Environment]::SetEnvironmentVariable("NPM_CONFIG_USERCONFIG", "$Env:AppData\npm\npmrc", "User") +# ~\.node_repl_history -> %LocalAppData%\state\node\repl_history :: Node.js +New-Item -ItemType Directory -Path "$Env:XDG_STATE_HOME\node" -Force +[System.Environment]::SetEnvironmentVariable("NODE_REPL_HISTORY", "$Env:XDG_STATE_HOME\node\repl_history", "User") +# ~\.ts_node_repl_history -> %LocalAppData%\state\node\ts_node_repl_history :: Node.js +# NOTE: ts-node doesn't support this yet +# [System.Environment]::SetEnvironmentVariable("TS_NODE_REPL_HISTORY", "$Env:XDG_STATE_HOME\node\ts_node_repl_history", "User") +# ~\.nuget\packages -> %LocalAppData%\cache\NuGet\packages :: NuGet +[System.Environment]::SetEnvironmentVariable("NUGET_PACKAGES", "$Env:XDG_CACHE_HOME\NuGet\packages", "User") +# ~\.omnisharp -> %AppData%\OmniSharp :: OmniSharp +[System.Environment]::SetEnvironmentVariable("OMNISHARPHOME", "$Env:AppData\OmniSharp", "User") +# ~\.python_history -> %LocalAppData%\state\python\python_history :: Python +# Only works for Python 3.13+ https://docs.python.org/3.13/using/cmdline.html#envvar-PYTHON_HISTORY +New-Item -ItemType Directory -Path "$Env:XDG_STATE_HOME\python" -Force +[System.Environment]::SetEnvironmentVariable("PYTHON_HISTORY", "$Env:XDG_STATE_HOME\python\python_history", "User") +# ~\.rustup -> %LocalAppData%\Rustup :: Rust +[System.Environment]::SetEnvironmentVariable("RUSTUP_HOME", "$Env:LocalAppData\Rustup", "User") +# ~\.vimrc -> %AppData%\Vim\_vimrc :: Vim +New-Item -ItemType Directory -Path "$Env:AppData\Vim" -Force +[System.Environment]::SetEnvironmentVariable("VIM", "$Env:AppData\Vim", "User") +[System.Environment]::SetEnvironmentVariable("KOMOREBI_CONFIG_HOME", "$Env:AppData\komorebi", "User") +# ~\.vuerc -> %AppData%\vue\.vuerc :: Vue CLI +# Currently, Vue CLI doesn't support file path configuration:https://github.com/vuejs/vue-cli/blob/dev/packages/%40vue/cli/lib/confifile +# [System.Environment]::SetEnvironmentVariable("VUE_CLI_CONFIG_PATH", "$Env:AppData\vue\.vuerc", "User") +# ~\.wget-hsts -> %LocalAppData%\cache\wget-hsts :: wget +# Use Alias, wget host file path is not configurable +# ~\.yarnrc -> %AppData%\yarn\config.yaml :: Yarn v1 +# Use Alias, yarnrc path is not configurable + +# Reload required here to make sure the environment variables are set diff --git a/bootstrap/win/Registry.ps1 b/bootstrap/win/Registry.ps1 new file mode 100644 index 0000000..93f0909 --- /dev/null +++ b/bootstrap/win/Registry.ps1 @@ -0,0 +1,6 @@ + +# Disable StickyKeys +REG ADD "HKEY_CURRENT_USER\Control Panel\Accessibility\StickyKeys" /v "Flags" /t REG_SZ /d "506" /f + +# Disable Hyper+Keys to open Office apps +REG ADD HKCU\Software\Classes\ms-officeapp\Shell\Open\Command /t REG_SZ /d rundll32 diff --git a/bootstrap/win/Tasks.ps1 b/bootstrap/win/Tasks.ps1 new file mode 100644 index 0000000..d12756f --- /dev/null +++ b/bootstrap/win/Tasks.ps1 @@ -0,0 +1,21 @@ +#Requires -RunAsAdministrator + +Write-Output "[INFO] Setting up KMonad Tasks" + +# PowerShell Path, use 7 if available +if (Get-Command "pwsh" -ErrorAction SilentlyContinue) { + $PowerShellPath = (Get-Command "pwsh").Source +} +else { + $PowerShellPath = (Get-Command "powershell").Source +} + +$DotStartUpPath = "$Env:DOTFILES\platforms\win\start" + +$KMonadRunnerPath = Join-Path $DotStartUpPath "KMonad.ps1" +$Action = New-ScheduledTaskAction -Execute $PowerShellPath -Argument "-NoProfile -ExecutionPolicy Bypass -File $KMonadRunnerPath" +$Trigger = New-ScheduledTaskTrigger -AtLogOn +$Principal = New-ScheduledTaskPrincipal -UserId "$env:USERNAME" -LogonType Interactive -RunLevel Highest +$Settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -DontStopOnIdleEnd -Hidden + +Register-ScheduledTask -TaskName "Start Kmonad" -Action $Action -Trigger $Trigger -Principal $Principal -Settings $Settings -TaskPath "\Personal" diff --git a/platforms/win/ahk/spcl.ahk b/platforms/win/ahk/spcl.ahk new file mode 100644 index 0000000..4c041a4 --- /dev/null +++ b/platforms/win/ahk/spcl.ahk @@ -0,0 +1,43 @@ +#Requires AutoHotkey v2.0 +#SingleInstance Force + +Space Up:: Send '{Space ' (A_PriorKey = 'Space' ? 1 : times) '}' +Space:: global times := '' + +#HotIf GetKeyState('Space', 'P') +h::Left +n::Down +e::Up +i::Right +k::Home +o::End +[::PgUp +]::PgDn +1::F1 +2::F2 +3::F3 +4::F4 +5::F5 +6::F6 +7::F7 +8::F8 +9::F9 +0::F10 +-::F11 +=::F12 ++:: global times .= ThisHotkey +#HotIf + +Enter Up:: Send '{Enter ' (A_PriorKey = 'Enter' ? 1 : times) '}' +Enter:: global times := '' + +#HotIf GetKeyState('Enter', 'P') +b:: { + Run("vivaldi.exe") +} +t:: { + Run("wezterm-gui.exe") +} +c:: { + Run("code.exe") +} diff --git a/platforms/win/start/KMonad.ps1 b/platforms/win/start/KMonad.ps1 new file mode 100644 index 0000000..f80158c --- /dev/null +++ b/platforms/win/start/KMonad.ps1 @@ -0,0 +1,10 @@ +if (Get-Command "kmonad" -ErrorAction SilentlyContinue) { + $KMonadPath = (Get-Command "kmonad").Source +} +else { + $KMonadPath = "D:\bin\kmonad.exe" +} + +$KMonadConfig = "$Env:DOTFILES\tools\kmonad\windows.kbd" + +Start-Process -FilePath $KMonadPath -ArgumentList $KMonadConfig -WindowStyle Hidden diff --git a/tools/KMonad/kmonad.kbd b/tools/KMonad/linux.kbd similarity index 100% rename from tools/KMonad/kmonad.kbd rename to tools/KMonad/linux.kbd diff --git a/tools/KMonad/windows.kbd b/tools/KMonad/windows.kbd new file mode 100644 index 0000000..809be5f --- /dev/null +++ b/tools/KMonad/windows.kbd @@ -0,0 +1,77 @@ +;; Windows kmonad.kbd +;; Detailed comments can be found at ./linux.kbd + +(defcfg + input (low-level-hook) + output (send-event-sink) + fallthrough true + allow-cmd true + cmp-seq ralt + cmp-seq-delay 0 + implicit-around around + ) + +;; Razer BlackWidow V3 Mini - 65% ANSI layout +;; (defsrc +;; esc 1 2 3 4 5 6 7 8 9 0 - = bspc del +;; tab q w e r t y u i o p [ ] \ pgup +;; caps a s d f g h j k l ; ' ret pgdn +;; lsft z x c v b n m , . / rsft up ins +;; lctl lmet lalt spc ralt rctl left down right +;; ) + +(defsrc + grv 1 2 3 4 5 6 7 8 9 0 - = \ del + tab q w f p g j l u y ; [ ] bspc pgup + caps a r s t d h n e i o ' ret pgdn + lsft z x c v b k m , . / rsft up ins + lctl lmet lalt spc ralt rctl left down right +) + +;; (deflayer name +;; _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +;; _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +;; _ _ _ _ _ _ _ _ _ _ _ _ _ _ +;; _ _ _ _ _ _ _ _ _ _ _ _ _ _ +;; _ _ _ _ _ _ _ _ _ +;; ) + +;; CapsLock -> Esc when tapped, Ctrl when held +(defalias mo1 (tap-next-release esc lctl)) +(defalias spctl (tap-next-release spc (layer-toggle spcl))) + + +;; Colemak +(deflayer colemak + grv 1 2 3 4 5 6 7 8 9 0 - = \ del + tab q w f p g j l u y ; [ ] bspc pgup + @mo1 a r s t d h n e i o ' ret pgdn + lsft z x c v b k m , . / rsft up ins + lctl lmet lalt @spctl ralt rctl left down right +) + +(deflayer qwerty + esc 1 2 3 4 5 6 7 8 9 0 - = bspc del + tab q w e r t y u i o p [ ] \ pgup + @mo1 a s d f g h j k l ; ' ret pgdn + lsft z x c v b n m , . / rsft up ins + lctl lmet lalt @spctl ralt rctl left down right +) + + +;; SPACE Layer +(deflayer spcl + grv f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 \ del + tab q w f p g j l u y ; pgup pgdn bspc pgup + @mo1 a r s t d left down up right end ' ret pgdn + lsft z x c v b home m , . / rsft up ins + lctl lmet lalt spc ralt rctl left down right +) + +;; (deflayer spcl +;; esc 1 2 3 4 5 6 7 8 9 0 - = bspc del +;; tab q w e r t y u i o p [ ] \ pgup +;; @mo1 a s d f g left down up right ; ' ret pgdn +;; lsft z x c v b n m , . / rsft up ins +;; lctl lmet lalt spc ralt rctl left down right +;; ) diff --git a/tools/browser/surfingkeys.js b/tools/browser/surfingkeys.js index 84d493f..c5042cb 100644 --- a/tools/browser/surfingkeys.js +++ b/tools/browser/surfingkeys.js @@ -297,6 +297,7 @@ const searchAliases = [ ["gh", "GitHub", "https://github.com/search?type=repositories&q="], ["gg", "Google", "https://www.google.com/search?q="], ["mc", "Metacritic", "https://www.metacritic.com/search/"], + ["nx", "NixPackages", "https://search.nixos.org/packages?query="], ["ng", "NuGet", "https://www.nuget.org/packages?q="], ["np", "npm", "https://www.npmjs.com/search?q="], ["pa", "Pacman", "https://archlinux.org/packages/?q="], @@ -324,6 +325,8 @@ const searchAliases = [ ["yt", "YouTube", "https://www.youtube.com/results?search_query="], ]; +api.unmap("on") + // Add all search aliases searchAliases.forEach(([alias, name, url]) => { _addSearchAlias(alias, name, url); @@ -1003,4 +1006,3 @@ addVimMapKey( // #region Hints api.Hints.setCharacters("qwfpgarstdcv"); // Left-hand keys // #endregion -//