mirror of
https://github.com/js0ny/dotfiles.git
synced 2025-12-21 08:43:00 +00:00
Merge branch 'master' of https://codeberg.org/js0ny/dotfiles
This commit is contained in:
commit
c5292ac9de
16 changed files with 513 additions and 151 deletions
|
|
@ -5,26 +5,13 @@
|
|||
|
||||
### Load Configs ###
|
||||
$DOTFILES = Join-Path $HOME ".dotfiles"
|
||||
Get-ChildItem -Path $(Join-Path $DOTFILES "tools" "powershell") -Filter *.ps1 | ForEach-Object {. $_}
|
||||
Get-ChildItem -Path $(Join-Path $DOTFILES "tools" "powershell") -Filter *.ps1 | ForEach-Object { . $_ }
|
||||
|
||||
### Aliases ###
|
||||
|
||||
|
||||
# Toggle Theme #
|
||||
# TODO: Change to `bat` script implementation
|
||||
# function Set-SystemTheme {
|
||||
# $regPath = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize"
|
||||
# $currentMode = Get-ItemProperty -Path $regPath -Name "AppsUseLightTheme"
|
||||
# if ($currentMode.AppsUseLightTheme -eq 1) {
|
||||
# Set-ItemProperty -Path $regPath -Name "AppsUseLightTheme" -Value 0
|
||||
# Write-Host "已切换到深色模式"
|
||||
# }
|
||||
# else {
|
||||
# Set-ItemProperty -Path $regPath -Name "AppsUseLightTheme" -Value 1
|
||||
# Write-Host "已切换到浅色模式"
|
||||
# }
|
||||
# }
|
||||
# Set-Alias "dark-mode" "Set-SystemTheme" # Consistent with macOS (`dark-mode`)
|
||||
Set-Alias "dark-mode" "$DOTFILES\platforms\win\cmd\dark-mode.bat" # Consistent with macOS (`dark-mode`)
|
||||
|
||||
# Miscs #
|
||||
|
||||
|
|
@ -35,7 +22,7 @@ ${function:qwen} = "ollama run qwen2.5:14b"
|
|||
#region conda initialize
|
||||
# !! Contents within this block are managed by 'conda init' !!
|
||||
If (Test-Path "$HOME\miniconda3\Scripts\conda.exe") {
|
||||
(& "$HOME\miniconda3\Scripts\conda.exe" "shell.powershell" "hook") | Out-String | Where-Object{$_} | Invoke-Expression
|
||||
(& "$HOME\miniconda3\Scripts\conda.exe" "shell.powershell" "hook") | Out-String | Where-Object { $_ } | Invoke-Expression
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
|
@ -67,10 +54,10 @@ $Env:VISUAL = "code --wait"
|
|||
$Env:FILE_MANAGER = "dopus.exe"
|
||||
|
||||
|
||||
${function:wsl2} = {wsl.exe --distribution Ubuntu}
|
||||
${function:wsl2} = { wsl.exe --distribution kali-linux $args }
|
||||
${function:wini} = { winget install $args }
|
||||
${function:winr} = { winget uninstall $args }
|
||||
${function:wins} = { winget search $args }
|
||||
${function:winu} = { winget upgrade $args }
|
||||
|
||||
${function:killp} = {ps | ? ProcessName -like $args | kill -Force}
|
||||
${function:pkill} = { ps *$args* | kill -Force }
|
||||
|
|
|
|||
114
platforms/win/ahk/Caps.ahk
Normal file
114
platforms/win/ahk/Caps.ahk
Normal file
|
|
@ -0,0 +1,114 @@
|
|||
#Requires AutoHotkey v2.0
|
||||
#SingleInstance Force
|
||||
|
||||
; 全局变量声明
|
||||
global g_LastCtrlKeyDownTime := 0
|
||||
global g_AbortSendEsc := false
|
||||
global g_ControlRepeatDetected := false
|
||||
|
||||
*CapsLock:: {
|
||||
global g_ControlRepeatDetected
|
||||
global g_LastCtrlKeyDownTime
|
||||
global g_AbortSendEsc
|
||||
|
||||
if (g_ControlRepeatDetected) {
|
||||
return
|
||||
}
|
||||
|
||||
Send "{Ctrl down}"
|
||||
g_LastCtrlKeyDownTime := A_TickCount
|
||||
g_AbortSendEsc := false
|
||||
g_ControlRepeatDetected := true
|
||||
}
|
||||
|
||||
*CapsLock Up:: {
|
||||
global g_ControlRepeatDetected
|
||||
global g_LastCtrlKeyDownTime
|
||||
global g_AbortSendEsc
|
||||
|
||||
Send "{Ctrl up}"
|
||||
g_ControlRepeatDetected := false
|
||||
if (g_AbortSendEsc) {
|
||||
return
|
||||
}
|
||||
current_time := A_TickCount
|
||||
time_elapsed := current_time - g_LastCtrlKeyDownTime
|
||||
if (time_elapsed <= 250) {
|
||||
SendInput "{Esc}"
|
||||
}
|
||||
}
|
||||
|
||||
; 组合所有 Ctrl 快捷键
|
||||
#HotIf
|
||||
~*^a::
|
||||
~*^b::
|
||||
~*^c::
|
||||
~*^d::
|
||||
~*^e::
|
||||
~*^f::
|
||||
~*^g::
|
||||
~*^h::
|
||||
~*^i::
|
||||
~*^j::
|
||||
~*^k::
|
||||
~*^l::
|
||||
~*^m::
|
||||
~*^n::
|
||||
~*^o::
|
||||
~*^p::
|
||||
~*^q::
|
||||
~*^r::
|
||||
~*^s::
|
||||
~*^t::
|
||||
~*^u::
|
||||
~*^v::
|
||||
~*^w::
|
||||
~*^x::
|
||||
~*^y::
|
||||
~*^z::
|
||||
~*^1::
|
||||
~*^2::
|
||||
~*^3::
|
||||
~*^4::
|
||||
~*^5::
|
||||
~*^6::
|
||||
~*^7::
|
||||
~*^8::
|
||||
~*^9::
|
||||
~*^0::
|
||||
~*^Space::
|
||||
~*^Backspace::
|
||||
~*^Delete::
|
||||
~*^Insert::
|
||||
~*^Home::
|
||||
~*^End::
|
||||
~*^PgUp::
|
||||
~*^PgDn::
|
||||
~*^Tab::
|
||||
~*^Enter::
|
||||
~*^,::
|
||||
~*^.::
|
||||
~*^/::
|
||||
~*^;::
|
||||
~*^'::
|
||||
~*^[::
|
||||
~*^]::
|
||||
~*^\::
|
||||
~*^-::
|
||||
~*^=::
|
||||
~*^`::
|
||||
~*^F1::
|
||||
~*^F2::
|
||||
~*^F3::
|
||||
~*^F4::
|
||||
~*^F5::
|
||||
~*^F6::
|
||||
~*^F7::
|
||||
~*^F8::
|
||||
~*^F9::
|
||||
~*^F10::
|
||||
~*^F11::
|
||||
~*^F12:: {
|
||||
global g_AbortSendEsc
|
||||
g_AbortSendEsc := true
|
||||
}
|
||||
29
platforms/win/ahk/colemak.ahk
Normal file
29
platforms/win/ahk/colemak.ahk
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
#Requires AutoHotkey v2.0
|
||||
|
||||
q::q
|
||||
w::w
|
||||
e::f
|
||||
r::p
|
||||
t::g
|
||||
y::j
|
||||
u::l
|
||||
i::u
|
||||
o::y
|
||||
p::;
|
||||
a::a
|
||||
s::r
|
||||
d::s
|
||||
f::t
|
||||
g::d
|
||||
h::h
|
||||
j::n
|
||||
k::e
|
||||
l::i
|
||||
`;::o
|
||||
z::z
|
||||
x::x
|
||||
c::c
|
||||
v::v
|
||||
b::b
|
||||
n::k
|
||||
m::m
|
||||
|
|
@ -54,7 +54,6 @@
|
|||
"memory",
|
||||
"swap",
|
||||
"disk",
|
||||
"localip",
|
||||
"battery",
|
||||
"poweradapter",
|
||||
"locale"
|
||||
|
|
|
|||
|
|
@ -53,14 +53,14 @@ gaps:
|
|||
scale_with_dpi: true
|
||||
|
||||
# Gap between adjacent windows.
|
||||
inner_gap: "20px"
|
||||
inner_gap: "5px"
|
||||
|
||||
# Gap between windows and the screen edge.
|
||||
outer_gap:
|
||||
top: "60px"
|
||||
right: "20px"
|
||||
bottom: "20px"
|
||||
left: "20px"
|
||||
top: "50px"
|
||||
right: "5px"
|
||||
bottom: "5px"
|
||||
left: "5px"
|
||||
|
||||
window_effects:
|
||||
# Visual effects to apply to the focused window.
|
||||
|
|
@ -69,7 +69,7 @@ window_effects:
|
|||
# ** Exclusive to Windows 11 due to API limitations.
|
||||
border:
|
||||
enabled: true
|
||||
color: "#8dbcff"
|
||||
color: "#f6a7ba"
|
||||
|
||||
# Remove the title bar from the window's frame. Note that this can
|
||||
# cause rendering issues for some applications.
|
||||
|
|
@ -86,10 +86,10 @@ window_effects:
|
|||
# Visual effects to apply to non-focused windows.
|
||||
other_windows:
|
||||
border:
|
||||
enabled: true
|
||||
enabled: false
|
||||
color: "#a1a1a1"
|
||||
hide_title_bar:
|
||||
enabled: false
|
||||
enabled: true
|
||||
corner_style:
|
||||
enabled: false
|
||||
style: "square"
|
||||
|
|
@ -134,6 +134,7 @@ window_rules:
|
|||
match:
|
||||
# Ignores any Zebar windows.
|
||||
- window_process: { equals: "zebar" }
|
||||
- window_process: { equals: "WindowsTerminal" }
|
||||
|
||||
# Ignores picture-in-picture windows for browsers.
|
||||
- window_title: { regex: "[Pp]icture.in.[Pp]icture" }
|
||||
|
|
@ -223,7 +224,9 @@ keybindings:
|
|||
bindings: ["lwin+t"]
|
||||
|
||||
# Change the focused window to be fullscreen.
|
||||
- commands: ["toggle-fullscreen"]
|
||||
# - commands: ["toggle-fullscreen"]
|
||||
# bindings: ["lwin+f"]
|
||||
- commands: ["shell-exec dopus.exe"]
|
||||
bindings: ["lwin+f"]
|
||||
|
||||
# Minimize focused window.
|
||||
|
|
@ -249,7 +252,7 @@ keybindings:
|
|||
# Launch CMD terminal. Alternatively, use `shell-exec wt` or
|
||||
# `shell-exec %ProgramFiles%/Git/git-bash.exe` to start Windows
|
||||
# Terminal and Git Bash respectively.
|
||||
- commands: ["shell-exec wt"]
|
||||
- commands: ["shell-exec wezterm-gui.exe start"]
|
||||
bindings: ["lwin+r"]
|
||||
|
||||
# Focus the next/previous active workspace defined in `workspaces` config.
|
||||
|
|
|
|||
|
|
@ -8,6 +8,20 @@ New-Item -ItemType SymbolicLink -Path $Env:UserProfile\.glzr -Target $DOTFILES\p
|
|||
|
||||
The Zebar config should be downloaded from [this repository](https://github.com/js0ny/neobrutal-zebar) and extracted to the `glzr\zebar` directory.
|
||||
|
||||
```powershell
|
||||
Invoke-WebRequest -Uri "https://github.com/js0ny/neobrutal-zebar/releases/download/2/neobrutal.zip" -OutFile "$Env:UserProfile\.glzr\zebar\neobrutal.zip"
|
||||
Expand-Archive -Path "$Env:UserProfile\.glzr\zebar\neobrutal.zip" -DestinationPath "$Env:UserProfile\.glzr\zebar"
|
||||
Remove-Item -Path "$Env:UserProfile\.glzr\zebar\neobrutal.zip"
|
||||
```
|
||||
|
||||
If `just` and `pwsh` are installed, you can build the config by running `just build-zebar`.
|
||||
|
||||
```powershell
|
||||
git clone https://github.com/js0ny/neobrutal-zebar.git --depth 1
|
||||
just init
|
||||
just build
|
||||
```
|
||||
|
||||
Or use the minimal setup, by changing `glzr\zebar\settings.json`: `startupConfigs.path` to `minimal/bar.zebar.json`.
|
||||
|
||||
```json
|
||||
|
|
@ -21,9 +35,3 @@ Or use the minimal setup, by changing `glzr\zebar\settings.json`: `startupConfig
|
|||
]
|
||||
}
|
||||
```
|
||||
|
||||
```powershell
|
||||
Invoke-WebRequest -Uri "https://github.com/js0ny/neobrutal-zebar/releases/download/2/neobrutal.zip" -OutFile "$Env:UserProfile\.glzr\zebar\neobrutal.zip"
|
||||
Expand-Archive -Path "$Env:UserProfile\.glzr\zebar\neobrutal.zip" -DestinationPath "$Env:UserProfile\.glzr\zebar"
|
||||
Remove-Item -Path "$Env:UserProfile\.glzr\zebar\neobrutal.zip"
|
||||
```
|
||||
|
|
|
|||
|
|
@ -1,50 +1,82 @@
|
|||
# Windows dotfiles
|
||||
|
||||
By following the Windows Directory Standard, assign the following directories corresponding to `$XDG_CONFIG` in Unix:
|
||||

|
||||
|
||||
- `%APPDATA%` - `$XDG_CONFIG_HOME` (default: `%USERPROFILE%\AppData\Roaming`)
|
||||
- Terminal Emulator: [WezTerm](../../tools/wezterm/)
|
||||
- Tiling Window Manager: [GlazeWM](./glzr/glazewm/config.yaml)
|
||||
- Status Bar: [Zebar](./glzr/zebar/settings.json)
|
||||
- Quake Terminal: [Windows Terminal](./WindowsTerminal.json)
|
||||
- Shell: [PowerShell Core](../../tools/powershell/readme.md)
|
||||
- WSL1: [Arch Linux](https://github.com/yuk7/ArchWSL)
|
||||
- WSL2: kali-linux
|
||||
|
||||
By following the Windows Directory Standard, assign the following directories corresponding to `$XDG_CONFIG` in Unix, some of the software(like `wezterm`) will use these directories as the default configuration path:
|
||||
|
||||
| Windows Path | XDG-Equivalent | Default |
|
||||
|------------|----------|----------|
|
||||
| `%APPDATA%` | `$XDG_CONFIG_HOME` | `%USERPROFILE%\AppData\Roaming` |
|
||||
| `%LOCALAPPDATA%` | `$XDG_DATA_HOME` | `%USERPROFILE%\AppData\Local` |
|
||||
| `%LOCALAPPDATA%\Cache` | `$XDG_CACHE_HOME` | `%USERPROFILE%\AppData\Local\Cache` |
|
||||
| `%LOCALAPPDATA%\State` | `$XDG_STATE_HOME` | `%USERPROFILE%\AppData\Local\State` |
|
||||
|
||||
An example bootstrap script is provided in [bootstrap/Windows.ps1](../../bootstrap/Windows.ps1), which will create necessary directories and link the files.
|
||||
|
||||
## PowerShell Profile
|
||||
|
||||
This is the *[PowerShell Core](https://github.com/PowerShell/PowerShell)* profile, not the legacy *Windows PowerShell* profile.
|
||||
This is the *[PowerShell Core](https://github.com/PowerShell/PowerShell)* profile, not the legacy *Windows PowerShell* profile, which is faster(`powershell` vs `pwsh`, `pwsh` types 6 letters less lol), cross-platform and compatible with Unix.
|
||||
|
||||
By default, PowerShell profile is stored in `~\Documents\PowerShell\Microsoft.PowerShell_profile.ps1`.
|
||||
By default, PowerShell profile is stored in `%UserProfile%\Documents\PowerShell\Microsoft.PowerShell_profile.ps1`.
|
||||
|
||||
It is convenient to use `$PROFILE` to locate the profile file.
|
||||
|
||||
```pwsh
|
||||
```powershell
|
||||
Test-Path $PROFILE
|
||||
```
|
||||
|
||||
Just like Unix Shell, there are configs work for different sessions. To locate them, use `select *` followed by `$PROFILE`.
|
||||
|
||||
If you want to change the `AllUsers` scoped profile, do not install `pwsh` via `winget`, use `scoop` instead, since `winget` will install `pwsh` to `%ProgramFiles%\PowerShell\7\pwsh.exe`, which is read-only even with Administrator privileges.
|
||||
|
||||
```powershell
|
||||
PS > $PROFILE | Select *
|
||||
AllUsersAllHosts : C:\Users\jsony\scoop\apps\pwsh\current\profile.ps1
|
||||
AllUsersCurrentHost : C:\Users\jsony\scoop\apps\pwsh\current\Microsoft.PowerShell_profile.ps1
|
||||
CurrentUserAllHosts : C:\Users\jsony\Documents\PowerShell\profile.ps1
|
||||
CurrentUserCurrentHost : C:\Users\jsony\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
|
||||
Length : 68
|
||||
```
|
||||
|
||||
Note that the variable `$PROFILE.*` are constants, the only way to change it is to compile your own `pwsh`
|
||||
|
||||
To link the profile file:
|
||||
|
||||
```pwsh
|
||||
```powershell
|
||||
New-Item -ItemType SymbolicLink -Path $PROFILE -Target "$DOTFILES\win\Microsoft.PowerShell_profile.ps1" -Force
|
||||
```
|
||||
|
||||
I use [starship](https://starship.rs/) to customize the prompt, which is located in [`.dotfiles/.config/starship/starship_pwsh.toml`](../.config/starship/starship_pwsh.toml). This prompt config is cross-platform for powershell core, since I use the promp to identify the shell.
|
||||
I use [starship](https://starship.rs/) to customize the prompt, which is located in [`tools/starship/starship_pwsh.toml`](../../tools/starship/starship_pwsh.toml). This prompt config is cross-platform for powershell core, since I use the prompt to identify the shell.
|
||||
|
||||
## `.wslconfig` - WSL Configuration
|
||||
## `.wslconfig` - WSL2 Configuration
|
||||
|
||||
`.wslconfig` only supports `~/.wslconfig` as the configuration path
|
||||
`.wslconfig` only supports `%UserProfile%\.wslconfig` as the configuration path
|
||||
|
||||
```pwsh
|
||||
New-Item -ItemType SymbolicLink -Path "~\.wslconfig" -Target "$DOTFILES\win\.wslconfig" -Force
|
||||
```powershell
|
||||
New-Item -ItemType SymbolicLink -Path "$Env:UserProfile\.wslconfig" -Target "$DOTFILES\win\.wslconfig" -Force
|
||||
```
|
||||
|
||||
<!--
|
||||
## Windows Terminal
|
||||
|
||||
Use Hard Link to sync Windows Terminal Settings since it doesn't support symlink.
|
||||
|
||||
```pwsh
|
||||
```powershell
|
||||
New-Item -ItemType HardLink -Path "$Env:LocalAppData\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json" -Target "$DOTFILES\win\WindowsTerminal.json" -Force
|
||||
```
|
||||
-->
|
||||
|
||||
## Neovide
|
||||
|
||||
Neovide configuration is (only) stored in `%APPDATA%\neovide\config.toml`
|
||||
|
||||
```pwsh
|
||||
```powershell
|
||||
New-Item -ItemType SymbolicLink -Path "$Env:AppData\neovide\config.toml" -Target "$DOTFILES\win\neovide.toml" -Force
|
||||
```
|
||||
Loading…
Add table
Add a link
Reference in a new issue