mirror of
https://github.com/js0ny/dotfiles.git
synced 2025-12-21 08:43:00 +00:00
Merge remote-tracking branch 'refs/remotes/origin/master'
This commit is contained in:
commit
4e6519772d
33 changed files with 1050 additions and 808 deletions
BIN
.DS_Store
vendored
BIN
.DS_Store
vendored
Binary file not shown.
5
.gitignore
vendored
5
.gitignore
vendored
|
|
@ -1,3 +1,4 @@
|
||||||
|
*private*
|
||||||
.private.env.*
|
.private.env.*
|
||||||
nvim/tt.*
|
nvim/tt.*
|
||||||
nvim/.tests
|
nvim/.tests
|
||||||
|
|
@ -10,6 +11,10 @@ nvim/data
|
||||||
nvim/lazy-lock.json
|
nvim/lazy-lock.json
|
||||||
nvim/lazyvim.json
|
nvim/lazyvim.json
|
||||||
test/
|
test/
|
||||||
|
test.*
|
||||||
*.gz
|
*.gz
|
||||||
*.tar
|
*.tar
|
||||||
*.zip
|
*.zip
|
||||||
|
*.tgz
|
||||||
|
WindowsTerminal.json
|
||||||
|
PowerToys/
|
||||||
3
.haskline
Normal file
3
.haskline
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
editMode: Vi
|
||||||
|
bind: ctrl-p up
|
||||||
|
bind: ctrl-n down
|
||||||
6
.markdownlint.json
Normal file
6
.markdownlint.json
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"line-length": false,
|
||||||
|
"no-inline-html": false,
|
||||||
|
"no-alt-text": false,
|
||||||
|
"ul-style": { "style": "dash" }
|
||||||
|
}
|
||||||
2
.npmrc
2
.npmrc
|
|
@ -1 +1 @@
|
||||||
registry=https://registry.npmmirror.com
|
# registry=https://registry.npmmirror.com
|
||||||
|
|
|
||||||
59
.obsidian.vimrc
Normal file
59
.obsidian.vimrc
Normal file
|
|
@ -0,0 +1,59 @@
|
||||||
|
" Put this in OBSIDIAN_VAULT/.obsidian.vimrc
|
||||||
|
set clipboard=unnamed " Sync with System Clipboard
|
||||||
|
|
||||||
|
" Word wrap
|
||||||
|
noremap n gj
|
||||||
|
noremap e gk
|
||||||
|
noremap i l
|
||||||
|
|
||||||
|
" Similar position to i
|
||||||
|
noremap l i
|
||||||
|
noremap L I
|
||||||
|
" ne[k]st
|
||||||
|
noremap k n
|
||||||
|
noremap K N
|
||||||
|
" [j]ump
|
||||||
|
noremap j e
|
||||||
|
noremap J E
|
||||||
|
|
||||||
|
" Y to yank to end of line
|
||||||
|
noremap Y y$
|
||||||
|
|
||||||
|
""" Visual mode surrounding
|
||||||
|
exmap addbold obcommand editor:toogle-bold
|
||||||
|
exmap additalic obcommand editor:toogle-italic
|
||||||
|
exmap addhighlight obcommand editor:toogle-highlight
|
||||||
|
exmap addcode obcommand editor:toogle-code
|
||||||
|
exmap adddel obcommand editor:toogle-strikethrough
|
||||||
|
vnoremap ~ :adddel<CR> " Add delete to selection
|
||||||
|
vnoremap ` c`<C-r>"`<Esc> " editor:toogle-code is buggy
|
||||||
|
vnoremap * :addbold<CR> " Add bold to selection
|
||||||
|
vnoremap _ :additalic<CR> " Add italic to selection
|
||||||
|
vnoremap = :addhighlight " Add highlight to selection
|
||||||
|
|
||||||
|
exmap prevtab obcommand workspace:previous-tab
|
||||||
|
exmap nexttab obcommand workspace:next-tab
|
||||||
|
nnoremap H :prevtab<CR>
|
||||||
|
nnoremap I :nexttab<CR>
|
||||||
|
|
||||||
|
exmap reload :source .obsidian.vimrc<CR>
|
||||||
|
|
||||||
|
unmap <Space>
|
||||||
|
exmap vsplit obcommand workspace:split-vertical
|
||||||
|
exmap hsplit obcommand workspace:split-horizontal
|
||||||
|
map <Space>| :vsplit<CR>
|
||||||
|
map <Space>- :hsplit<CR>
|
||||||
|
" map <Space>bd
|
||||||
|
|
||||||
|
exmap chat obcommand obsidian-custom-frames:open-custom-frames-chatgpt
|
||||||
|
map <Space>ai :chat<CR>
|
||||||
|
|
||||||
|
exmap omnisearch obcommand omnisearch:show-modal
|
||||||
|
map <Space><Space> :omnisearch<CR>
|
||||||
|
|
||||||
|
exmap command-palette obcommand command-palette:open
|
||||||
|
map <Space>: :command-palette<CR>
|
||||||
|
|
||||||
|
""" g-commands
|
||||||
|
exmap tsource obcommand editor:toggle-source
|
||||||
|
nnoremap gs :tsource<CR>
|
||||||
34
.tmux.conf
Normal file
34
.tmux.conf
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
# Prefix
|
||||||
|
# -----------------
|
||||||
|
set-option -g prefix C-x
|
||||||
|
unbind C-b
|
||||||
|
bind C-x send-prefix
|
||||||
|
|
||||||
|
# Index
|
||||||
|
# -----------------
|
||||||
|
set -g base-index 1
|
||||||
|
set -g pane-base-index 1
|
||||||
|
|
||||||
|
# History
|
||||||
|
# -----------------
|
||||||
|
set -g history-limit 4096
|
||||||
|
|
||||||
|
# Reload Config
|
||||||
|
# -----------------
|
||||||
|
bind r source-file ~/.tmux.conf \; display "Reloaded Config"
|
||||||
|
|
||||||
|
# Vi Mode
|
||||||
|
# -----------------
|
||||||
|
set -g status-keys vi
|
||||||
|
set-window-option -g mode-keys vi
|
||||||
|
|
||||||
|
# Windows Management
|
||||||
|
# -----------------
|
||||||
|
bind | split-window -h
|
||||||
|
unbind '"'
|
||||||
|
bind - split-window -v
|
||||||
|
unbind %
|
||||||
|
bind h select-pane -L
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -46,6 +46,7 @@ alias docs="cd ~/Documents"
|
||||||
alias dt="cd ~/Desktop"
|
alias dt="cd ~/Desktop"
|
||||||
alias down="cd ~/Downloads"
|
alias down="cd ~/Downloads"
|
||||||
alias one="cd ~/OneDrive"
|
alias one="cd ~/OneDrive"
|
||||||
|
alias gdrive="cd ~/Google\ Drive"
|
||||||
|
|
||||||
### Aliases ###
|
### Aliases ###
|
||||||
|
|
||||||
|
|
@ -92,6 +93,7 @@ alias c=code
|
||||||
# Misc #
|
# Misc #
|
||||||
|
|
||||||
alias cf=cfiles
|
alias cf=cfiles
|
||||||
|
alias gdb=aarch64-elf-gdb
|
||||||
|
|
||||||
### Functions ###
|
### Functions ###
|
||||||
|
|
||||||
|
|
@ -131,7 +133,7 @@ gvi() {
|
||||||
neovide.exe "$target"
|
neovide.exe "$target"
|
||||||
else
|
else
|
||||||
if command -v neovide > /dev/null; then
|
if command -v neovide > /dev/null; then
|
||||||
neovide "$target"
|
neovide "$target" &
|
||||||
else
|
else
|
||||||
echo "neovide is not installed"
|
echo "neovide is not installed"
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
|
|
@ -2,100 +2,21 @@
|
||||||
|
|
||||||
$DOTFILES = "$HOME\.dotfiles"
|
$DOTFILES = "$HOME\.dotfiles"
|
||||||
|
|
||||||
### PSReadLine ###
|
### Load Configs ###
|
||||||
|
|
||||||
Set-PSReadLineOption -EditMode vi # Vi Keybindings
|
Get-ChildItem -Path $DOTFILES\powershell -Filter *.ps1 | ForEach-Object {. $_}
|
||||||
Set-PSReadLineOption -PredictionViewStyle ListView # Prediction View Style
|
Get-ChildItem -Path $DOTFILES\powershell_private -Filter *.ps1 | ForEach-Object {. $_}
|
||||||
Set-PSReadLineOption -PredictionSource HistoryAndPlugin # Prediction Source
|
|
||||||
Set-PSReadLineOption -ContinuationPrompt "`e[36m CR > " # Continuation Prompt
|
|
||||||
|
|
||||||
### Keybindings ###
|
## Aliases ###
|
||||||
|
|
||||||
Set-PSReadLineKeyHandler -Chord "Ctrl+f" -Function ForwardWord
|
|
||||||
|
|
||||||
### Navigator ###
|
|
||||||
|
|
||||||
# Relative navigation #
|
|
||||||
|
|
||||||
# ${function:~} = { Set-Location -Path ~ } cd is better
|
|
||||||
${function:...} = { Set-Location -Path ../.. }
|
|
||||||
${function:....} = { Set-Location -Path ../../.. }
|
|
||||||
${function:.....} = { Set-Location -Path ../../../.. }
|
|
||||||
${function:......} = { Set-Location -Path ../../../../.. }
|
|
||||||
|
|
||||||
# Absolute navigation #
|
|
||||||
|
|
||||||
${function:docs} = { Set-Location -Path ~/Documents }
|
|
||||||
${function:down} = { Set-Location -Path ~/Downloads }
|
|
||||||
${function:dt} = { Set-Location -Path ~/Desktop }
|
|
||||||
${function:mytmp} = { Set-Location -Path ~/Temp }
|
|
||||||
${function:one} = { Set-Location -Path ~/OneDrive }
|
|
||||||
${function:doku} = { Set-Location -Path ~/doku && Get-ChildItem }
|
|
||||||
|
|
||||||
### Aliases ###
|
|
||||||
|
|
||||||
# PowerShell Equivalents #
|
# PowerShell Equivalents #
|
||||||
|
|
||||||
Set-Alias "touch" "New-Item"
|
# Set-Alias "curl" "Invoke-WebRequest"
|
||||||
Set-Alias "ll" "Get-ChildItem"
|
|
||||||
Set-Alias "curl" "Invoke-WebRequest"
|
|
||||||
Set-Alias "man" "Get-Help"
|
Set-Alias "man" "Get-Help"
|
||||||
Set-Alias "kill" "Stop-Process"
|
Set-Alias "kill" "Stop-Process"
|
||||||
|
Set-Alias "open" "Invoke-Item" # Use ii instead of open
|
||||||
|
|
||||||
# Dev #
|
# Dev #
|
||||||
|
|
||||||
${function:shcfg} = { code $PROFILE }
|
|
||||||
${function:zshcfg} = { nvim ~/.zshrc }
|
${function:zshcfg} = { nvim ~/.zshrc }
|
||||||
${function:bashcfg} = { nvim ~/.bashrc }
|
${function:bashcfg} = { nvim ~/.bashrc }
|
||||||
${function:reload} = { Invoke-Expression $PROFILE }
|
|
||||||
${function:csi} = { dotnet script }
|
|
||||||
${function:pulldots} = { Set-Location -Path $DOTFILES && git pull }
|
|
||||||
Set-Alias "pwshcfg" "shcfg"
|
|
||||||
Set-Alias "cl" "clang"
|
|
||||||
Set-Alias "cl++" "clang++"
|
|
||||||
Set-Alias "clang" "clang -std=c99"
|
|
||||||
Set-Alias "clang++" "clang++ -std=c++2b"
|
|
||||||
|
|
||||||
# Python & Conda #
|
|
||||||
|
|
||||||
Set-Alias "python3" "python"
|
|
||||||
Set-Alias "pip3" "pip"
|
|
||||||
Set-Alias "py" "python"
|
|
||||||
Set-Alias "pyact" "conda activate"
|
|
||||||
Set-Alias "pylsenv" "conda env list"
|
|
||||||
Set-Alias "pydeact" "conda deactivate"
|
|
||||||
Set-Alias "pymkenv" "conda create --name"
|
|
||||||
|
|
||||||
# Editors #
|
|
||||||
|
|
||||||
Set-Alias "v" "nvim"
|
|
||||||
Set-Alias "c" "code"
|
|
||||||
Set-Alias "gvi" "neovide"
|
|
||||||
|
|
||||||
# Miscs #
|
|
||||||
|
|
||||||
Set-Alias mcd CreateAndSet-Directory
|
|
||||||
|
|
||||||
### Functions ###
|
|
||||||
|
|
||||||
function tc { param ( [string] $filename)
|
|
||||||
New-Item $filename && code $filename
|
|
||||||
}
|
|
||||||
|
|
||||||
function tv { param ( [string] $filename)
|
|
||||||
New-Item $filename && nvim $filename
|
|
||||||
}
|
|
||||||
|
|
||||||
function cdls { param( [string] $dirname)
|
|
||||||
Set-Location $dirname && Get-ChildItem
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Modules ###
|
|
||||||
|
|
||||||
Import-Module CompletionPredictor
|
|
||||||
# Import-Module syntax-highlighting
|
|
||||||
|
|
||||||
### Misc ###
|
|
||||||
|
|
||||||
|
|
|
||||||
26
mac/karabiner/caps_to_esc_lcmd.json
Normal file
26
mac/karabiner/caps_to_esc_lcmd.json
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
{
|
||||||
|
"description": "CapsLock to ESC (alone) or LCommand (withKeys)",
|
||||||
|
"manipulators": [
|
||||||
|
{
|
||||||
|
"from": {
|
||||||
|
"key_code": "caps_lock",
|
||||||
|
"modifiers": {
|
||||||
|
"optional": [
|
||||||
|
"any"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
{
|
||||||
|
"key_code": "left_command"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"to_if_alone": [
|
||||||
|
{
|
||||||
|
"key_code": "escape"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "basic"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
121
mac/karabiner/emacs_basic.json
Normal file
121
mac/karabiner/emacs_basic.json
Normal file
|
|
@ -0,0 +1,121 @@
|
||||||
|
{
|
||||||
|
"description": "lctrl + p/n/b/f/a/e to up/down/left/right/home/end",
|
||||||
|
"manipulators": [
|
||||||
|
{
|
||||||
|
"from": {
|
||||||
|
"key_code": "p",
|
||||||
|
"modifiers": {
|
||||||
|
"mandatory": [
|
||||||
|
"left_control"
|
||||||
|
],
|
||||||
|
"optional": [
|
||||||
|
"any"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
{
|
||||||
|
"key_code": "up_arrow"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "basic"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": {
|
||||||
|
"key_code": "n",
|
||||||
|
"modifiers": {
|
||||||
|
"mandatory": [
|
||||||
|
"left_control"
|
||||||
|
],
|
||||||
|
"optional": [
|
||||||
|
"any"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
{
|
||||||
|
"key_code": "down_arrow"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "basic"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": {
|
||||||
|
"key_code": "b",
|
||||||
|
"modifiers": {
|
||||||
|
"mandatory": [
|
||||||
|
"left_control"
|
||||||
|
],
|
||||||
|
"optional": [
|
||||||
|
"any"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
{
|
||||||
|
"key_code": "left_arrow"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "basic"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": {
|
||||||
|
"key_code": "f",
|
||||||
|
"modifiers": {
|
||||||
|
"mandatory": [
|
||||||
|
"left_control"
|
||||||
|
],
|
||||||
|
"optional": [
|
||||||
|
"any"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
{
|
||||||
|
"key_code": "right_arrow"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "basic"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": {
|
||||||
|
"key_code": "a",
|
||||||
|
"modifiers": {
|
||||||
|
"mandatory": [
|
||||||
|
"left_control"
|
||||||
|
],
|
||||||
|
"optional": [
|
||||||
|
"any"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
{
|
||||||
|
"key_code": "left_arrow",
|
||||||
|
"modifiers": "command"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "basic"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": {
|
||||||
|
"key_code": "e",
|
||||||
|
"modifiers": {
|
||||||
|
"mandatory": [
|
||||||
|
"left_control"
|
||||||
|
],
|
||||||
|
"optional": [
|
||||||
|
"any"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
{
|
||||||
|
"key_code": "right_arrow",
|
||||||
|
"modifiers": "command"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "basic"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
24
mac/karabiner/fn-tab_to_cmd-tab.json
Normal file
24
mac/karabiner/fn-tab_to_cmd-tab.json
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
{
|
||||||
|
"description": "Map fn+tab to cmd+tab",
|
||||||
|
"manipulators": [
|
||||||
|
{
|
||||||
|
"from": {
|
||||||
|
"key_code": "tab",
|
||||||
|
"modifiers": {
|
||||||
|
"mandatory": [
|
||||||
|
"fn"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
{
|
||||||
|
"key_code": "tab",
|
||||||
|
"modifiers": [
|
||||||
|
"left_command"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "basic"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
0
mac/readme.md
Normal file
0
mac/readme.md
Normal file
4
mac/shortcuts/finder_open.applescript
Normal file
4
mac/shortcuts/finder_open.applescript
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
tell application "Finder"
|
||||||
|
activate
|
||||||
|
make new Finder window
|
||||||
|
end tell
|
||||||
19
pathlib.json
19
pathlib.json
|
|
@ -1,19 +0,0 @@
|
||||||
{
|
|
||||||
".bashrc": "~/.bashrc",
|
|
||||||
".zshrc": "~/.zshrc",
|
|
||||||
"nvim/": "~/.config/nvim/",
|
|
||||||
".condarc": "~/.condarc",
|
|
||||||
".gitconfig": "~/.gitconfig",
|
|
||||||
".ideavimrc": "~/.ideavimrc",
|
|
||||||
"pip.conf": "~/.config/pip/pip.conf",
|
|
||||||
".npmrc": "~/.npmrc",
|
|
||||||
"Microsoft.PowerShell_profile.ps1": {
|
|
||||||
"Mac": "~/.config/powershell/Microsoft.PowerShell_profile.ps1",
|
|
||||||
"Windows": "~/Documents/PowerShell/Microsoft.PowerShell_profile.ps1"
|
|
||||||
},
|
|
||||||
".wslconfig": "~/.wslconfig",
|
|
||||||
"neovide.toml": {
|
|
||||||
"Mac": "~/.config/neovide/neovide.toml",
|
|
||||||
"Windows": "~/AppData/Local/neovide/neovide.toml"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
2
pip.conf
2
pip.conf
|
|
@ -1,2 +1,2 @@
|
||||||
[global]
|
[global]
|
||||||
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
|
# index-url = https://pypi.tuna.tsinghua.edu.cn/simple
|
||||||
|
|
@ -1,33 +0,0 @@
|
||||||
function Get-Password {
|
|
||||||
param (
|
|
||||||
[Parameter(Mandatory = $true)]
|
|
||||||
[string]$Name,
|
|
||||||
[Boolean]$Hidden = $true
|
|
||||||
)
|
|
||||||
$result = (bw list items --search $Name | ConvertFrom-Json).login | Select-Object -Property username, password
|
|
||||||
if ($result.Length -eq 0) {
|
|
||||||
Write-Host -ForegroundColor Red "No password found"
|
|
||||||
return
|
|
||||||
}
|
|
||||||
elseif ($result.Length -gt 1) {
|
|
||||||
Write-Host -ForegroundColor Red "More than one password found, please specify"
|
|
||||||
$counter = 0
|
|
||||||
foreach ($username in $result.username) {
|
|
||||||
Write-Host "["$counter "]" $username
|
|
||||||
$counter++
|
|
||||||
}
|
|
||||||
$selector = Read-Host -MaskInput "Select the username"
|
|
||||||
if ($result[$selector] -eq "") {
|
|
||||||
Write-Host -ForegroundColor Red "Invalid selection"
|
|
||||||
return
|
|
||||||
}
|
|
||||||
$result = $result[$selector]
|
|
||||||
}
|
|
||||||
if ($Hidden) {
|
|
||||||
Write-Host -ForegroundColor Green "Password copied to clipboard"
|
|
||||||
Set-Clipboard -Value $result.password
|
|
||||||
} else {
|
|
||||||
Write-Host $result
|
|
||||||
}
|
|
||||||
return $result
|
|
||||||
}
|
|
||||||
|
|
@ -1,28 +0,0 @@
|
||||||
$_userForexToday = (Get-Content ~/.forex | ConvertFrom-Json).conversion_rates
|
|
||||||
|
|
||||||
function Update-ForexData {
|
|
||||||
((Invoke-WebRequest "$_userForexUrl").Content | ConvertFrom-Json).conversion_rates > ~/.forex
|
|
||||||
}
|
|
||||||
function Get-ExchangeRate {
|
|
||||||
param (
|
|
||||||
[string] $From,
|
|
||||||
[string] $To = "CNY",
|
|
||||||
[double] $Value = 1
|
|
||||||
)
|
|
||||||
if (-not $from) {
|
|
||||||
Get-ForexOverview
|
|
||||||
return
|
|
||||||
}
|
|
||||||
Write-Host $From : $To " " -NoNewline -ForegroundColor DarkGreen
|
|
||||||
($Value * ($_userForexToday.$To / $_userForexToday.$From)) | Write-Host -ForegroundColor DarkBlue
|
|
||||||
}
|
|
||||||
|
|
||||||
function Get-ForexOverview {
|
|
||||||
Get-ExchangeRate -From GBP -To CNY -Value 1
|
|
||||||
Get-ExchangeRate -From USD -To CNY -Value 1
|
|
||||||
Get-ExchangeRate -From HKD -To CNY -Value 1
|
|
||||||
Get-ExchangeRate -From EUR -To CNY -Value 1
|
|
||||||
Get-ExchangeRate -From CNY -To JPY -Value 1
|
|
||||||
}
|
|
||||||
|
|
||||||
Set-Alias "forex" "Get-ExchangeRate"
|
|
||||||
25
powershell/keymap.ps1
Normal file
25
powershell/keymap.ps1
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
# aka PSReadLine
|
||||||
|
# PSReadLineOptions
|
||||||
|
Set-PSReadLineOption -EditMode vi # Vi Keybindings
|
||||||
|
Set-PSReadLineOption -PredictionViewStyle ListView
|
||||||
|
Set-PSReadLineOption -PredictionSource HistoryAndPlugin
|
||||||
|
Set-PSReadLineOption -ContinuationPrompt "`e[36m CR > "
|
||||||
|
# PSReadLineKeyHandlers
|
||||||
|
## Colemak hnei
|
||||||
|
Set-PSReadLineKeyHandler -Chord "n" -Function NextHistory -ViMode Command
|
||||||
|
Set-PSReadLineKeyHandler -Chord "e" -Function PreviousHistory -ViMode Command
|
||||||
|
Set-PSReadLineKeyHandler -Chord "i" -Function ViForwardChar -ViMode Command
|
||||||
|
## Similar position to [i] in QWERTY
|
||||||
|
Set-PSReadLineKeyHandler -Chord "l" -Function ViInsertMode -ViMode Command
|
||||||
|
Set-PSReadlineKeyHandler -Chord "L" -Function ViInsertAtBegining -ViMode Command
|
||||||
|
## Ne{[k]s}t
|
||||||
|
Set-PSReadLineKeyHandler -Chord "k" -Function RepeatSearch -ViMode Command
|
||||||
|
Set-PSReadLineKeyHandler -Chord "K" -Function RepeatSearchBackward -ViMode Command
|
||||||
|
## [j]ump
|
||||||
|
Set-PSReadLineKeyHandler -Chord "j" -Function NextWordEnd -ViMode Command
|
||||||
|
Set-PSReadLineKeyHandler -Chord "J" -Function ViEndOfGlob -ViMode Command
|
||||||
|
## Use N to Join
|
||||||
|
Set-PSReadLineKeyHandler -Chord "N" -Function ViJoinLines -ViMode Command
|
||||||
|
Set-PSReadLineKeyHandler -Chord "Control+Oem4" -Function ViCommandMode -ViMode Insert # ^[ to Escape
|
||||||
|
Set-PSReadLineKeyHandler -Chord "Ctrl+a" -Function BeginningOfLine
|
||||||
|
Set-PSReadLineKeyHandler -Chord "Ctrl+e" -Function EndOfLine
|
||||||
9
powershell/modules.ps1
Normal file
9
powershell/modules.ps1
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
Import-Module -Name Terminal-Icons
|
||||||
|
Import-Module -Name CompletionPredictor
|
||||||
|
if ($IsWindows) {
|
||||||
|
# Chocolatey
|
||||||
|
$ChocolateyProfile = "$env:ChocolateyInstall\helpers\chocolateyProfile.psm1"
|
||||||
|
if (Test-Path($ChocolateyProfile)) { Import-Module "$ChocolateyProfile" }
|
||||||
|
# WinGet
|
||||||
|
Import-Module -Name Microsoft.WinGet.CommandNotFound #f45873b3-b655-43a6-b217-97c00aa0db58
|
||||||
|
}
|
||||||
86
powershell/prompt.ps1
Normal file
86
powershell/prompt.ps1
Normal file
|
|
@ -0,0 +1,86 @@
|
||||||
|
$promptTime = $true
|
||||||
|
# $promptWeather = $false
|
||||||
|
|
||||||
|
function prompt {
|
||||||
|
$prompt = "`e[35m"
|
||||||
|
# Time
|
||||||
|
if ($promptTime) {
|
||||||
|
$promptTime = Get-Date -Format HH:mm
|
||||||
|
$prompt += "`[$promptTime]"
|
||||||
|
}
|
||||||
|
# UserInfo
|
||||||
|
$prompt += " $Env:Username @ $Env:Userdomain"
|
||||||
|
# Directory
|
||||||
|
$promptCurrentDirectory = $(PWD).Path
|
||||||
|
$promptCurrentDirectory = $promptCurrentDirectory.Replace("$HOME", "~")
|
||||||
|
$prompt += "`e[0m in `e[33m$promptCurrentDirectory "
|
||||||
|
# Git
|
||||||
|
if ($(git rev-parse --is-inside-work-tree 2> $null) -eq "true") {
|
||||||
|
$prompt += "`e[32m`u{e702} $(git branch --show-current)"
|
||||||
|
}
|
||||||
|
# Conda
|
||||||
|
if ( $Env:CONDA_PROMPT_MODIFIER ) {
|
||||||
|
$promptConda = $Env:CONDA_PROMPT_MODIFIER.Replace("`(","").Replace(")","")
|
||||||
|
$pythonVersion = $(python --version).Split(" ")[1]
|
||||||
|
$prompt += " `e[33m`u{e73c} $promptConda $pythonVersion"
|
||||||
|
}
|
||||||
|
# Programming Language (by Get-ChildItem)
|
||||||
|
## Python
|
||||||
|
if (Test-Path -Path "$PWD\pyproject.toml") {
|
||||||
|
$pythonVersion = $(python --version).Split(" ")[1]
|
||||||
|
$prompt += " `e[33m`u{e73c} $pythonVersion"
|
||||||
|
}
|
||||||
|
## Node.js
|
||||||
|
if (Test-Path -Path "$PWD\package.json") {
|
||||||
|
$nodeVersion = $(node --version)
|
||||||
|
$prompt += " `e[32m`u{e3a0} $nodeVersion"
|
||||||
|
# Locked
|
||||||
|
if (Test-Path -Path "$PWD\yarn.lock" || Test-Path -Path "$PWD\package-lock.json") {
|
||||||
|
$prompt += "`u{f023}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
## .NET
|
||||||
|
### C Sharp
|
||||||
|
if (Test-Path -Path "$PWD\*.csproj") {
|
||||||
|
$dotnetVersion = $(dotnet --version)
|
||||||
|
$prompt += " `e[34m`u{e648} $dotnetVersion"
|
||||||
|
}
|
||||||
|
### F Sharp
|
||||||
|
if (Test-Path -Path "$PWD\*.fsproj") {
|
||||||
|
$dotnetVersion = $(dotnet --version)
|
||||||
|
$prompt += " `e[35m`u{e65a} $dotnetVersion"
|
||||||
|
}
|
||||||
|
## Rust
|
||||||
|
if (Test-Path -Path "$PWD\Cargo.toml") {
|
||||||
|
$rustVersion = $(cargo --version).Split(" ")[1]
|
||||||
|
$prompt += " `e[31m`u{e7a8} $rustVersion"
|
||||||
|
}
|
||||||
|
## Java
|
||||||
|
if (Test-Path -Path "$PWD\pom.xml" || Test-Path -Path "$PWD\build.gradle") {
|
||||||
|
$javaVersion = $(java --version).Split(" ")[1]
|
||||||
|
$prompt += " `e[31m`u{e738} $javaVersion"
|
||||||
|
}
|
||||||
|
## Makefile
|
||||||
|
if (Test-Path -Path "$PWD\Makefile") {
|
||||||
|
$prompt += " `e[32m`u{e673}"
|
||||||
|
}
|
||||||
|
if (Test-Path -Path "$PWD\CMakeLists.txt") {
|
||||||
|
$prompt += " `e[32m `u{e61d}"
|
||||||
|
}
|
||||||
|
# Docker
|
||||||
|
if (Test-Path -Path "$PWD\Dockerfile" || Test-Path -Path "$PWD\docker-compose.yml") {
|
||||||
|
$prompt += " `e[33m`u{f21f}"
|
||||||
|
}
|
||||||
|
# Weather
|
||||||
|
# if ( $global:promptWeather ) {
|
||||||
|
# $prompt += $(Write-WeatherCurrent -City "Edinburgh" -Country "UK" -Unit "metric" -Inline -Apikey $Env:WEATHER_API_KEY)
|
||||||
|
# }
|
||||||
|
# Error on last command
|
||||||
|
## TODO: Seems does not work
|
||||||
|
if ($?) {
|
||||||
|
$prompt += "`n`e[32m PS > `e[0m"
|
||||||
|
} else {
|
||||||
|
$prompt += "`n`e[31m PS > `e[0m"
|
||||||
|
}
|
||||||
|
return $prompt
|
||||||
|
}
|
||||||
17
powershell/scripts.ps1
Normal file
17
powershell/scripts.ps1
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
function CsvToMarkdown {
|
||||||
|
param( [string]$csv)
|
||||||
|
$counter = 0
|
||||||
|
$column = $csv.Split("`n")[0].Split(",").Length
|
||||||
|
$aHeader = " --- |"
|
||||||
|
$header = "|" + $aHeader * $column
|
||||||
|
$csv.replace(",", " | ").Split("`n") | ForEach-Object {
|
||||||
|
if ($counter -eq 0) {
|
||||||
|
Write-Output "| $_ |"
|
||||||
|
$counter++
|
||||||
|
Write-Output $header
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Output "| $_ |"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
60
powershell/shared.ps1
Normal file
60
powershell/shared.ps1
Normal file
|
|
@ -0,0 +1,60 @@
|
||||||
|
### VARIABLES ###
|
||||||
|
$EDITOR = "code"
|
||||||
|
|
||||||
|
### Navigator ###
|
||||||
|
|
||||||
|
# Relative navigation #
|
||||||
|
# ${function:~} = { Set-Location -Path ~ } cd is better
|
||||||
|
${function:...} = { Set-Location -Path ..\.. }
|
||||||
|
${function:....} = { Set-Location -Path ..\..\.. }
|
||||||
|
${function:.....} = { Set-Location -Path ..\..\..\.. }
|
||||||
|
${function:......} = { Set-Location -Path ..\..\..\..\.. }
|
||||||
|
|
||||||
|
# Absolute navigation
|
||||||
|
${function:docs} = { Set-Location -Path ~/Documents }
|
||||||
|
${function:down} = { Set-Location -Path ~/Downloads }
|
||||||
|
${function:dt} = { Set-Location -Path ~/Desktop }
|
||||||
|
${function:mytmp} = { Set-Location -Path ~/Temp }
|
||||||
|
${function:one} = { Set-Location -Path ~/OneDrive }
|
||||||
|
${function:doku} = { Set-Location -Path ~/doku && Get-ChildItem }
|
||||||
|
|
||||||
|
### Alias ###
|
||||||
|
|
||||||
|
# Shell Equivalents #
|
||||||
|
Set-Alias "touch" "New-Item"
|
||||||
|
${function:ll} = { Get-ChildItem -Force }
|
||||||
|
|
||||||
|
# Shell Configurations #
|
||||||
|
${function:shcfg} = { code $PROFILE }
|
||||||
|
Set-Alias "pwshcfg" "shcfg"
|
||||||
|
${function:reload} = { . $PROFILE }
|
||||||
|
${function:pulldots} = { Set-Location -Path $DOTFILES && git pull }
|
||||||
|
|
||||||
|
# Editors #
|
||||||
|
Set-Alias "v" "nvim"
|
||||||
|
Set-Alias "c" "code"
|
||||||
|
Set-Alias "gvi" "neovide"
|
||||||
|
|
||||||
|
# File Creation #
|
||||||
|
function mkcd { param ( [string] $dirname) mkdir $dirname && Set-Location $dirname }
|
||||||
|
function tc { param ( [string] $filename) New-Item $filename && code $filename }
|
||||||
|
function tv { param ( [string] $filename) New-Item $filename && nvim $filename }
|
||||||
|
function cdls { param( [string] $dirname) Set-Location $dirname && Get-ChildItem }
|
||||||
|
|
||||||
|
### Dev ###
|
||||||
|
|
||||||
|
# .NET #
|
||||||
|
${function:csi} = { dotnet repl --default-kernel csharp}
|
||||||
|
${function:fsi} = { dotnet repl --default-kernel fsharp}
|
||||||
|
|
||||||
|
# Python & Conda #
|
||||||
|
Set-Alias "py" "python"
|
||||||
|
Set-Alias "ipy" "ipython"
|
||||||
|
${function:pyact} = { conda activate $args[0] }
|
||||||
|
${function:pydact} = { conda deactivate }
|
||||||
|
${function:pylsenvs} = { conda env list }
|
||||||
|
${function:pymkenv} = { conda create --name $args[0] }
|
||||||
|
${function:pyrmenv} = { conda remove --name $args[0] --all }
|
||||||
|
|
||||||
|
|
||||||
|
# C & C++ #
|
||||||
23
readme.md
23
readme.md
|
|
@ -1,23 +1,4 @@
|
||||||
# .DOTFILES js0ny
|
# .dotfiles
|
||||||
|
|
||||||
## Navigator
|
Moving to *Colemak*
|
||||||
|
|
||||||
- [Windows](./win/readme.md)
|
|
||||||
- [Linux](./linux/readme.md)
|
|
||||||
|
|
||||||
- [Neovim](./nvim/readme.md)
|
|
||||||
- [VSCode](./vscode/readme.md)
|
|
||||||
|
|
||||||
- [IdeaVim](./.ideavimrc)
|
|
||||||
|
|
||||||
- [Git](./.gitconfig)
|
|
||||||
|
|
||||||
- [pip](./pip.conf)
|
|
||||||
- [npm](./.npmrc)
|
|
||||||
|
|
||||||
|
|
||||||
### Scripts
|
|
||||||
|
|
||||||
- [Install Neovim *nix](./install_nvim.sh)
|
|
||||||
- [Set Mirror *nix](./set_mirror.sh)
|
|
||||||
- [Set Mirror PowerShell](./set_mirror.ps1)
|
|
||||||
360
surfingkeys.js
Normal file
360
surfingkeys.js
Normal file
|
|
@ -0,0 +1,360 @@
|
||||||
|
// Paste this into surfingkeys advanced settings
|
||||||
|
// or use:
|
||||||
|
// Load settings from: https://raw.githubusercontent.com/js0ny/dotfiles/refs/heads/master/surfingkeys.js
|
||||||
|
|
||||||
|
/** Examples
|
||||||
|
|
||||||
|
// an example to create a new mapping `ctrl-y`
|
||||||
|
api.mapkey('<ctrl-y>', 'Show me the money', function() {
|
||||||
|
Front.showPopup('a well-known phrase uttered by characters in the 1996 film Jerry Maguire (Escape to close).');
|
||||||
|
});
|
||||||
|
|
||||||
|
// an example to replace `T` with `gt`, click `Default mappings` to see how `T` works.
|
||||||
|
api.map('gt', 'T');
|
||||||
|
|
||||||
|
|
||||||
|
// an example to remove mapkey `Ctrl-i`
|
||||||
|
api.unmap('<ctrl-i>');
|
||||||
|
|
||||||
|
*/
|
||||||
|
// Settings
|
||||||
|
settings.language = "zh-CN" ;
|
||||||
|
settings.showModeStatus = false;
|
||||||
|
// Keymap, reference https://github.com/texiwustion/colemak_config_for_surfingkeys/tree/main
|
||||||
|
const forward = {
|
||||||
|
add: function (key) { // 转发即将被 unmap 的键
|
||||||
|
return api.map(`for${key}`, key)
|
||||||
|
},
|
||||||
|
cancel: function (key) { // 删除转发生成的键
|
||||||
|
api.unmap(`for${key}`)
|
||||||
|
api.unmap(key)
|
||||||
|
},
|
||||||
|
use: function (key) {
|
||||||
|
return `for${key}`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const colemak = {
|
||||||
|
forward: function (key) { // 转发即将被 unmap 的键
|
||||||
|
api.map(key, `col${key}`)
|
||||||
|
api.unmap(`col${key}`)
|
||||||
|
|
||||||
|
},
|
||||||
|
use: function (key) {
|
||||||
|
return `col${key}`
|
||||||
|
},
|
||||||
|
map: function (a, b) {
|
||||||
|
api.map(colemak.use(a), forward.use(b))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const forwardFactory = {
|
||||||
|
push: function (mapLists) { // forward original keys
|
||||||
|
for (let key in mapLists) {
|
||||||
|
forward.add(mapLists[key])
|
||||||
|
}
|
||||||
|
},
|
||||||
|
map: function (mapLists) {
|
||||||
|
for (let key in mapLists) {
|
||||||
|
colemak.map(key, mapLists[key])
|
||||||
|
}
|
||||||
|
},
|
||||||
|
pull: function (mapLists) {
|
||||||
|
for (let key in mapLists) {
|
||||||
|
forward.cancel(mapLists[key])
|
||||||
|
}
|
||||||
|
for (let key in mapLists) {
|
||||||
|
colemak.forward(key)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const mapLists = {
|
||||||
|
/// scroll page
|
||||||
|
// Arrow
|
||||||
|
'n': 'j',
|
||||||
|
'e': 'k',
|
||||||
|
'i': 'l',
|
||||||
|
// l <-> i
|
||||||
|
'l': 'i',
|
||||||
|
'L': 'I',
|
||||||
|
// k <-> n
|
||||||
|
'k': 'n',
|
||||||
|
'K': 'N',
|
||||||
|
// j <-> e
|
||||||
|
'j': 'e',
|
||||||
|
'J': 'E',
|
||||||
|
// 缩放
|
||||||
|
'zu': 'zi',
|
||||||
|
'zo': 'ze',
|
||||||
|
'zz': 'zr',
|
||||||
|
}
|
||||||
|
|
||||||
|
forwardFactory.push(mapLists)
|
||||||
|
api.unmap('t')
|
||||||
|
forwardFactory.map(mapLists)
|
||||||
|
// 鼠标点击
|
||||||
|
api.unmap('gi')
|
||||||
|
api.unmap('[[')
|
||||||
|
api.unmap(']]')
|
||||||
|
api.unmap(';m')
|
||||||
|
api.unmap(';fs')
|
||||||
|
api.unmap('O')
|
||||||
|
api.unmap('C')
|
||||||
|
forwardFactory.pull(mapLists)
|
||||||
|
|
||||||
|
|
||||||
|
// Search Alias
|
||||||
|
api.addSearchAlias('f', 'Felo', 'https://felo.ai/search?q=', 's', 'https://duckduckgo.com/ac/?q=', function(response) {
|
||||||
|
var res = JSON.parse(response.text);
|
||||||
|
return res.map(function(r){
|
||||||
|
return r.phrase;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
api.addSearchAlias('p', 'Perplexity', 'https://www.perplexity.ai/?q=', 's', 'https://duckduckgo.com/ac/?q=', function(response) {
|
||||||
|
var res = JSON.parse(response.text);
|
||||||
|
return res.map(function(r){
|
||||||
|
return r.phrase;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
api.addSearchAlias('r', 'Raindrop', 'https://app.raindrop.io/my/0/', 's', 'https://duckduckgo.com/ac/?q=', function(response) {
|
||||||
|
var res = JSON.parse(response.text);
|
||||||
|
return res.map(function(r){
|
||||||
|
return r.phrase;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
// Theme, reference to https://github.com/Foldex/surfingkeys-config
|
||||||
|
api.Hints.style('border: solid 2px #4C566A; color:#A3BE8C; background: initial; background-color: #3B4252;');
|
||||||
|
api.Hints.style("border: solid 2px #4C566A !important; padding: 1px !important; color: #E5E9F0 !important; background: #3B4252 !important;", "text");
|
||||||
|
api.Visual.style('marks', 'background-color: #A3BE8C99;');
|
||||||
|
api.Visual.style('cursor', 'background-color: #88C0D0;');
|
||||||
|
settings.theme = `
|
||||||
|
fg: #E5E9F0;
|
||||||
|
bg: #3B4252;
|
||||||
|
bg-dark: #2E3440;
|
||||||
|
border: #4C566A;
|
||||||
|
main-fg: #88C0D0;
|
||||||
|
accent-fg: #A3BE8C;
|
||||||
|
info-fg: #5E81AC;
|
||||||
|
select: #4C566A;
|
||||||
|
/* ---------- Generic ---------- */
|
||||||
|
.sk_theme {
|
||||||
|
background: var(--bg);
|
||||||
|
color: var(--fg);
|
||||||
|
background-color: var(--bg);
|
||||||
|
border-color: var(--border);
|
||||||
|
font-family: var(--font);
|
||||||
|
font-size: var(--font-size);
|
||||||
|
font-weight: var(--font-weight);
|
||||||
|
}
|
||||||
|
|
||||||
|
input {
|
||||||
|
font-family: var(--font);
|
||||||
|
font-weight: var(--font-weight);
|
||||||
|
}
|
||||||
|
|
||||||
|
.sk_theme tbody {
|
||||||
|
color: var(--fg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.sk_theme input {
|
||||||
|
color: var(--fg);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hints */
|
||||||
|
#sk_hints .begin {
|
||||||
|
color: var(--accent-fg) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#sk_tabs .sk_tab {
|
||||||
|
background: var(--bg-dark);
|
||||||
|
border: 1px solid var(--border);
|
||||||
|
}
|
||||||
|
|
||||||
|
#sk_tabs .sk_tab_title {
|
||||||
|
color: var(--fg);
|
||||||
|
}
|
||||||
|
|
||||||
|
#sk_tabs .sk_tab_url {
|
||||||
|
color: var(--main-fg);
|
||||||
|
}
|
||||||
|
|
||||||
|
#sk_tabs .sk_tab_hint {
|
||||||
|
background: var(--bg);
|
||||||
|
border: 1px solid var(--border);
|
||||||
|
color: var(--accent-fg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.sk_theme #sk_frame {
|
||||||
|
background: var(--bg);
|
||||||
|
opacity: 0.2;
|
||||||
|
color: var(--accent-fg);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---------- Omnibar ---------- */
|
||||||
|
/* Uncomment this and use settings.omnibarPosition = 'bottom' for Pentadactyl/Tridactyl style bottom bar */
|
||||||
|
/* .sk_theme#sk_omnibar {
|
||||||
|
width: 100%;
|
||||||
|
left: 0;
|
||||||
|
} */
|
||||||
|
|
||||||
|
.sk_theme .title {
|
||||||
|
color: var(--accent-fg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.sk_theme .url {
|
||||||
|
color: var(--main-fg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.sk_theme .annotation {
|
||||||
|
color: var(--accent-fg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.sk_theme .omnibar_highlight {
|
||||||
|
color: var(--accent-fg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.sk_theme .omnibar_timestamp {
|
||||||
|
color: var(--info-fg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.sk_theme .omnibar_visitcount {
|
||||||
|
color: var(--accent-fg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.sk_theme #sk_omnibarSearchResult ul li:nth-child(odd) {
|
||||||
|
background: var(--bg-dark);
|
||||||
|
}
|
||||||
|
|
||||||
|
.sk_theme #sk_omnibarSearchResult ul li.focused {
|
||||||
|
background: var(--border);
|
||||||
|
}
|
||||||
|
|
||||||
|
.sk_theme #sk_omnibarSearchArea {
|
||||||
|
border-top-color: var(--border);
|
||||||
|
border-bottom-color: var(--border);
|
||||||
|
}
|
||||||
|
|
||||||
|
.sk_theme #sk_omnibarSearchArea input,
|
||||||
|
.sk_theme #sk_omnibarSearchArea span {
|
||||||
|
font-size: var(--font-size);
|
||||||
|
}
|
||||||
|
|
||||||
|
.sk_theme .separator {
|
||||||
|
color: var(--accent-fg);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---------- Popup Notification Banner ---------- */
|
||||||
|
#sk_banner {
|
||||||
|
font-family: var(--font);
|
||||||
|
font-size: var(--font-size);
|
||||||
|
font-weight: var(--font-weight);
|
||||||
|
background: var(--bg);
|
||||||
|
border-color: var(--border);
|
||||||
|
color: var(--fg);
|
||||||
|
opacity: 0.9;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---------- Popup Keys ---------- */
|
||||||
|
#sk_keystroke {
|
||||||
|
background-color: var(--bg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.sk_theme kbd .candidates {
|
||||||
|
color: var(--info-fg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.sk_theme span.annotation {
|
||||||
|
color: var(--accent-fg);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---------- Popup Translation Bubble ---------- */
|
||||||
|
#sk_bubble {
|
||||||
|
background-color: var(--bg) !important;
|
||||||
|
color: var(--fg) !important;
|
||||||
|
border-color: var(--border) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#sk_bubble * {
|
||||||
|
color: var(--fg) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#sk_bubble div.sk_arrow div:nth-of-type(1) {
|
||||||
|
border-top-color: var(--border) !important;
|
||||||
|
border-bottom-color: var(--border) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#sk_bubble div.sk_arrow div:nth-of-type(2) {
|
||||||
|
border-top-color: var(--bg) !important;
|
||||||
|
border-bottom-color: var(--bg) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---------- Search ---------- */
|
||||||
|
#sk_status,
|
||||||
|
#sk_find {
|
||||||
|
font-size: var(--font-size);
|
||||||
|
border-color: var(--border);
|
||||||
|
}
|
||||||
|
|
||||||
|
.sk_theme kbd {
|
||||||
|
background: var(--bg-dark);
|
||||||
|
border-color: var(--border);
|
||||||
|
box-shadow: none;
|
||||||
|
color: var(--fg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.sk_theme .feature_name span {
|
||||||
|
color: var(--main-fg);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---------- ACE Editor ---------- */
|
||||||
|
#sk_editor {
|
||||||
|
background: var(--bg-dark) !important;
|
||||||
|
height: 50% !important;
|
||||||
|
/* Remove this to restore the default editor size */
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace_dialog-bottom {
|
||||||
|
border-top: 1px solid var(--bg) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-chrome .ace_print-margin,
|
||||||
|
.ace_gutter,
|
||||||
|
.ace_gutter-cell,
|
||||||
|
.ace_dialog {
|
||||||
|
background: var(--bg) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-chrome {
|
||||||
|
color: var(--fg) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace_gutter,
|
||||||
|
.ace_dialog {
|
||||||
|
color: var(--fg) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace_cursor {
|
||||||
|
color: var(--fg) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.normal-mode .ace_cursor {
|
||||||
|
background-color: var(--fg) !important;
|
||||||
|
border: var(--fg) !important;
|
||||||
|
opacity: 0.7 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace_marker-layer .ace_selection {
|
||||||
|
background: var(--select) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace_editor,
|
||||||
|
.ace_dialog span,
|
||||||
|
.ace_dialog input {
|
||||||
|
font-family: var(--font);
|
||||||
|
font-size: var(--font-size);
|
||||||
|
font-weight: var(--font-weight);
|
||||||
|
}`;
|
||||||
|
// click `Save` button to make above settings to take effect.</ctrl-i></ctrl-y>
|
||||||
21
vscode/vscode.vimrc
Normal file
21
vscode/vscode.vimrc
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
" Put this in ~/.vscode.vimrc
|
||||||
|
" And go to vscode vim setting:
|
||||||
|
"vim.vimrc.path": "$HOME/.vscode.vimrc",
|
||||||
|
|
||||||
|
" Word wrap
|
||||||
|
noremap n gj
|
||||||
|
noremap e gk
|
||||||
|
noremap i l
|
||||||
|
|
||||||
|
" Similar position to i
|
||||||
|
noremap l i
|
||||||
|
noremap L I
|
||||||
|
" ne[k]st
|
||||||
|
noremap k n
|
||||||
|
noremap K N
|
||||||
|
" [j]ump
|
||||||
|
noremap j e
|
||||||
|
noremap J E
|
||||||
|
|
||||||
|
" Y to yank to end of line
|
||||||
|
noremap Y y$
|
||||||
|
|
@ -7,5 +7,4 @@ autoProxy=true
|
||||||
[experimental]
|
[experimental]
|
||||||
# requires dnsTunneling but are also OPTIONAL
|
# requires dnsTunneling but are also OPTIONAL
|
||||||
bestEffortDnsParsing=true
|
bestEffortDnsParsing=true
|
||||||
useWindowsDnsCache=true
|
|
||||||
hostAddressLoopback=true
|
hostAddressLoopback=true
|
||||||
|
|
@ -1,134 +1,74 @@
|
||||||
### Variables ###
|
|
||||||
|
|
||||||
$DOTFILES = "$HOME\Documents\.dotfiles"
|
|
||||||
|
|
||||||
### Load Configs ###
|
### Load Configs ###
|
||||||
|
$DOTFILES = "$HOME\.dotfiles"
|
||||||
Get-ChildItem -Path $DOTFILES\powershell -Filter *.ps1 | ForEach-Object {. $_}
|
Get-ChildItem -Path $DOTFILES\powershell -Filter *.ps1 | ForEach-Object {. $_}
|
||||||
|
Get-ChildItem -Path $DOTFILES\powershell_private -Filter *.ps1 | ForEach-Object {. $_}
|
||||||
### PSReadLine ###
|
|
||||||
|
|
||||||
Set-PSReadLineOption -EditMode vi # Vi Keybindings
|
|
||||||
Set-PSReadLineOption -PredictionViewStyle ListView # Prediction View Style
|
|
||||||
Set-PSReadLineOption -PredictionSource HistoryAndPlugin # Prediction Source
|
|
||||||
Set-PSReadLineOption -ContinuationPrompt "`e[36m CR > " # Continuation Prompt
|
|
||||||
|
|
||||||
### Keybindings ###
|
|
||||||
|
|
||||||
Set-PSReadLineKeyHandler -Chord "Ctrl+Shift+f" -Function ForwardWord
|
|
||||||
Set-PSReadLineKeyHandler -Chord "Ctrl+Shift+b" -Function BackwardWord
|
|
||||||
Set-PSReadLineKeyHandler -Chord "Alt+f" -Function ForwardChar
|
|
||||||
Set-PSReadLineKeyHandler -Chord "Ctrl+b" -Function BackwardChar
|
|
||||||
Set-PSReadLineKeyHandler -Chord "Ctrl+p" -Function HistorySearchBackward
|
|
||||||
Set-PSReadLineKeyHandler -Chord "Ctrl+n" -Function HistorySearchForward
|
|
||||||
Set-PSReadLineKeyHandler -Chord "Ctrl+a" -Function BeginningOfLine
|
|
||||||
Set-PSReadLineKeyHandler -Chord "Ctrl+e" -Function EndOfLine
|
|
||||||
|
|
||||||
### Navigator ###
|
|
||||||
|
|
||||||
# Relative navigation #
|
|
||||||
|
|
||||||
# ${function:~} = { Set-Location -Path ~ } cd is better
|
|
||||||
${function:...} = { Set-Location -Path ..\.. }
|
|
||||||
${function:....} = { Set-Location -Path ..\..\.. }
|
|
||||||
${function:.....} = { Set-Location -Path ..\..\..\.. }
|
|
||||||
${function:......} = { Set-Location -Path ..\..\..\..\.. }
|
|
||||||
|
|
||||||
# Absolute navigation #
|
|
||||||
|
|
||||||
${function:docs} = { Set-Location -Path ~\Documents }
|
|
||||||
${function:down} = { Set-Location -Path ~\Downloads }
|
|
||||||
${function:dt} = { Set-Location -Path ~\Desktop }
|
|
||||||
${function:mytmp} = { Set-Location -Path ~\Temporary }
|
|
||||||
${function:one} = { Set-Location -Path ~\OneDrive }
|
|
||||||
${function:doku} = { Set-Location -Path ~\MyDocuments && Get-ChildItem }
|
|
||||||
|
|
||||||
### Aliases ###
|
### Aliases ###
|
||||||
|
|
||||||
# Shell Equivalents #
|
# Shell Equivalents #
|
||||||
|
Set-Alias "grep" "Select-String"
|
||||||
Set-Alias "touch" "New-Item"
|
${function:which} = { (Get-Command $args[0]).Path }
|
||||||
function open {
|
|
||||||
if ($args.Count -eq 0) {
|
|
||||||
explorer.exe .
|
|
||||||
} else {
|
|
||||||
explorer.exe $args[0]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Shell Configurations #
|
# Shell Configurations #
|
||||||
|
|
||||||
${function:shcfg} = { code $PROFILE }
|
${function:shcfg} = { code $PROFILE }
|
||||||
${function:reload} = { . $PROFILE }
|
${function:reload} = { & $PROFILE }
|
||||||
${function:pulldots} = { Set-Location -Path $DOTFILES && git pull }
|
${function:pulldots} = { Set-Location -Path $DOTFILES && git pull }
|
||||||
Set-Alias "pwshcfg" "shcfg"
|
Set-Alias "pwshcfg" "shcfg"
|
||||||
|
|
||||||
# Dotnet #
|
|
||||||
|
|
||||||
${function:csi} = { dotnet script }
|
|
||||||
|
|
||||||
# C & C++ #
|
# C & C++ #
|
||||||
|
|
||||||
# Set-Alias "cl" "clang"
|
# Set-Alias "cl" "clang"
|
||||||
# Set-Alias "clpp" "clang++"
|
# Set-Alias "clpp" "clang++"
|
||||||
# ${function:clang} = { clang -std=c99 $args[0] }
|
# ${function:clang} = { clang -std=c99 $args[0] }
|
||||||
# ${function:clang++} = { clang -std=c++2b $args[0] }
|
# ${function:clang++} = { clang -std=c++2b $args[0] }
|
||||||
|
|
||||||
# Python & Conda #
|
|
||||||
|
|
||||||
Set-Alias "python3" "python"
|
|
||||||
Set-Alias "pip3" "pip"
|
|
||||||
Set-Alias "py" "python"
|
|
||||||
${function:pyact} = { conda activate $args[0] }
|
|
||||||
${function:pylsenvs} = { conda env list }
|
|
||||||
${function:pydact} = { conda deactivate }
|
|
||||||
${function:pymkenv} = { conda create --name $args[0] }
|
|
||||||
|
|
||||||
# # Git #
|
|
||||||
|
|
||||||
# Set-Alias "g" "git"
|
|
||||||
# Set-Alias "ginit" "git init"
|
|
||||||
# Set-Alias "ga" "git add"
|
|
||||||
# Set-Alias "gaa" "git add --all"
|
|
||||||
# Set-Alias "gc" "git commit --message"
|
|
||||||
# Set-Alias "gca" "git commit --all --message"
|
|
||||||
# Set-Alias "gcl" "git clone"
|
|
||||||
# Set-Alias "gclnh" "git clone --depth 1"
|
|
||||||
# Set-Alias "gs" "git status"
|
|
||||||
# Set-Alias "gpl" "git pull"
|
|
||||||
# Set-Alias "gps" "git push"
|
|
||||||
|
|
||||||
|
|
||||||
# WSL #
|
# WSL #
|
||||||
|
|
||||||
${function:wsl1} = {wsl.exe --distribution Debian}
|
${function:wsl1} = {wsl.exe --distribution Debian}
|
||||||
${function:wsl2} = {wsl.exe --distribution Ubuntu-22.04}
|
${function:wsl2} = {wsl.exe --distribution Ubuntu-22.04}
|
||||||
|
New-PSDrive -Name WSL -PSProvider FileSystem -Root \\wsl.localhost\Ubuntu-22.04
|
||||||
|
|
||||||
# Editors #
|
# Search Software #
|
||||||
|
function Find-AppPackageListRemote {
|
||||||
|
param(
|
||||||
|
[string]$Name
|
||||||
|
)
|
||||||
|
if (-not $Name) {
|
||||||
|
Write-Host "Please provide a package name."
|
||||||
|
return
|
||||||
|
}
|
||||||
|
Write-Host "Searching for $Name..."
|
||||||
|
Write-Host "=== winget ==="
|
||||||
|
winget search $Name
|
||||||
|
Write-Host "=== choco ==="
|
||||||
|
choco search $Name
|
||||||
|
}
|
||||||
|
Set-Alias "pkgsearch" "Get-AppPackageListRemote"
|
||||||
|
function Get-AppPackageListLocal {
|
||||||
|
winget list
|
||||||
|
choco list
|
||||||
|
scoop list
|
||||||
|
}
|
||||||
|
|
||||||
Set-Alias "v" "nvim"
|
# Toggle Theme #
|
||||||
Set-Alias "c" "code"
|
function Set-SystemTheme {
|
||||||
Set-Alias "gvi" "neovide"
|
$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 "theme" "Set-SystemTheme"
|
||||||
|
|
||||||
# Miscs #
|
# Miscs #
|
||||||
|
|
||||||
|
|
||||||
### Functions ###
|
|
||||||
|
|
||||||
function mkcd { param ( [string] $dirname) mkdir $dirname && Set-Location $dirname}
|
|
||||||
function tc { param ( [string] $filename) New-Item $filename && code $filename }
|
|
||||||
function tv { param ( [string] $filename) New-Item $filename && nvim $filename }
|
|
||||||
function cdls { param( [string] $dirname) Set-Location $dirname && Get-ChildItem }
|
|
||||||
|
|
||||||
### Modules ###
|
|
||||||
|
|
||||||
Import-Module -Name Microsoft.WinGet.CommandNotFound #f45873b3-b655-43a6-b217-97c00aa0db58
|
|
||||||
Import-Module CompletionPredictor
|
|
||||||
|
|
||||||
### Misc ###
|
### Misc ###
|
||||||
|
${function:qwen} = "ollama run qwen2.5:14b"
|
||||||
|
|
||||||
## Conda ##
|
## Conda ##
|
||||||
|
|
||||||
#region conda initialize
|
#region conda initialize
|
||||||
# !! Contents within this block are managed by 'conda init' !!
|
# !! Contents within this block are managed by 'conda init' !!
|
||||||
If (Test-Path "$HOME\miniconda3\Scripts\conda.exe") {
|
If (Test-Path "$HOME\miniconda3\Scripts\conda.exe") {
|
||||||
|
|
@ -152,8 +92,6 @@ if (-not ($__lastStartup -eq $_currentDate)) {
|
||||||
# 记录当前日期到日志文件
|
# 记录当前日期到日志文件
|
||||||
$_currentDate | Out-File -FilePath $SystemlogFilePath -Append
|
$_currentDate | Out-File -FilePath $SystemlogFilePath -Append
|
||||||
}
|
}
|
||||||
|
Remove-Variable SystemlogFilePath
|
||||||
## Chocolatey ##
|
Remove-Variable __lastStartup
|
||||||
|
Remove-Variable _currentDate
|
||||||
$ChocolateyProfile = "$env:ChocolateyInstall\helpers\chocolateyProfile.psm1"
|
|
||||||
if (Test-Path($ChocolateyProfile)) { Import-Module "$ChocolateyProfile" }
|
|
||||||
|
|
@ -1,499 +0,0 @@
|
||||||
{
|
|
||||||
"$help": "https://aka.ms/terminal-documentation",
|
|
||||||
"$schema": "https://aka.ms/terminal-profiles-schema",
|
|
||||||
"actions":
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"command": "unbound",
|
|
||||||
"keys": "alt+shift+plus"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"command": "unbound",
|
|
||||||
"keys": "alt+up"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"command": "unbound",
|
|
||||||
"keys": "alt+down"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"command": "unbound",
|
|
||||||
"keys": "alt+right"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"command": "unbound",
|
|
||||||
"keys": "alt+left"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"command": "unbound",
|
|
||||||
"keys": "alt+shift+up"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"command": "unbound",
|
|
||||||
"keys": "alt+shift+down"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"command": "unbound",
|
|
||||||
"keys": "alt+shift+right"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"command": "unbound",
|
|
||||||
"keys": "alt+shift+left"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"command":
|
|
||||||
{
|
|
||||||
"action": "copy",
|
|
||||||
"singleLine": false
|
|
||||||
},
|
|
||||||
"keys": "ctrl+c"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"command":
|
|
||||||
{
|
|
||||||
"action": "moveFocus",
|
|
||||||
"direction": "up"
|
|
||||||
},
|
|
||||||
"keys": "ctrl+k"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"command": "paste",
|
|
||||||
"keys": "ctrl+v"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"command":
|
|
||||||
{
|
|
||||||
"action": "resizePane",
|
|
||||||
"direction": "up"
|
|
||||||
},
|
|
||||||
"keys": "ctrl+shift+k"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"command": "find",
|
|
||||||
"keys": "ctrl+shift+f"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"command":
|
|
||||||
{
|
|
||||||
"action": "resizePane",
|
|
||||||
"direction": "left"
|
|
||||||
},
|
|
||||||
"keys": "ctrl+shift+h"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"command":
|
|
||||||
{
|
|
||||||
"action": "splitPane",
|
|
||||||
"split": "auto",
|
|
||||||
"splitMode": "duplicate"
|
|
||||||
},
|
|
||||||
"keys": "alt+shift+d"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"command":
|
|
||||||
{
|
|
||||||
"action": "splitPane",
|
|
||||||
"split": "right"
|
|
||||||
},
|
|
||||||
"keys": "alt+shift+/"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"command":
|
|
||||||
{
|
|
||||||
"action": "moveFocus",
|
|
||||||
"direction": "down"
|
|
||||||
},
|
|
||||||
"keys": "ctrl+j"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"command":
|
|
||||||
{
|
|
||||||
"action": "moveFocus",
|
|
||||||
"direction": "right"
|
|
||||||
},
|
|
||||||
"keys": "ctrl+l"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"command":
|
|
||||||
{
|
|
||||||
"action": "moveFocus",
|
|
||||||
"direction": "left"
|
|
||||||
},
|
|
||||||
"keys": "ctrl+h"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"command":
|
|
||||||
{
|
|
||||||
"action": "resizePane",
|
|
||||||
"direction": "down"
|
|
||||||
},
|
|
||||||
"keys": "ctrl+shift+j"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"command":
|
|
||||||
{
|
|
||||||
"action": "resizePane",
|
|
||||||
"direction": "right"
|
|
||||||
},
|
|
||||||
"keys": "ctrl+shift+l"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"autoHideWindow": false,
|
|
||||||
"centerOnLaunch": false,
|
|
||||||
"copyFormatting": "none",
|
|
||||||
"copyOnSelect": false,
|
|
||||||
"defaultProfile": "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
|
|
||||||
"language": "zh-Hans",
|
|
||||||
"minimizeToNotificationArea": false,
|
|
||||||
"newTabMenu":
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"type": "remainingProfiles"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"profiles":
|
|
||||||
{
|
|
||||||
"defaults":
|
|
||||||
{
|
|
||||||
"colorScheme": "One Half Dark",
|
|
||||||
"font":
|
|
||||||
{
|
|
||||||
"face": "CaskaydiaCove Nerd Font"
|
|
||||||
},
|
|
||||||
"opacity": 100,
|
|
||||||
"useAcrylic": false
|
|
||||||
},
|
|
||||||
"list":
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"backgroundImage": null,
|
|
||||||
"colorScheme": "One Half Dark",
|
|
||||||
"experimental.retroTerminalEffect": false,
|
|
||||||
"guid": "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
|
|
||||||
"hidden": false,
|
|
||||||
"name": "PowerShell",
|
|
||||||
"opacity": 100,
|
|
||||||
"scrollbarState": "hidden",
|
|
||||||
"source": "Windows.Terminal.PowershellCore",
|
|
||||||
"useAcrylic": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"guid": "{3c5d580b-1c52-55ce-89c9-57119457e5a7}",
|
|
||||||
"hidden": false,
|
|
||||||
"name": "CMD VS 2022",
|
|
||||||
"source": "Windows.Terminal.VisualStudio"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"guid": "{bc7a2d0e-eee9-5401-ae36-b35fa60deb22}",
|
|
||||||
"hidden": false,
|
|
||||||
"name": "PowerShell VS2022",
|
|
||||||
"source": "Windows.Terminal.VisualStudio"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"colorScheme": "Campbell",
|
|
||||||
"commandline": "\"C:\\Users\\citoy\\AppData\\Local\\Microsoft\\WindowsApps\\Microsoft.PowerShell_8wekyb3d8bbwe\\pwsh.exe\"",
|
|
||||||
"elevate": true,
|
|
||||||
"guid": "{6693d425-c727-46ba-8739-542bcf18769b}",
|
|
||||||
"hidden": false,
|
|
||||||
"icon": "ms-appx:///ProfileIcons/pwsh.png",
|
|
||||||
"name": "PowerShell Administrator",
|
|
||||||
"startingDirectory": "%USERPROFILE%"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"commandline": "%SystemRoot%\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
|
|
||||||
"guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
|
|
||||||
"hidden": false,
|
|
||||||
"name": "Windows PowerShell"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"commandline": "%SystemRoot%\\System32\\cmd.exe",
|
|
||||||
"guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
|
|
||||||
"hidden": false,
|
|
||||||
"name": "\u547d\u4ee4\u63d0\u793a\u7b26"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}",
|
|
||||||
"hidden": false,
|
|
||||||
"name": "Azure Cloud Shell",
|
|
||||||
"source": "Windows.Terminal.Azure"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"guid": "{58ad8b0c-3ef8-5f4d-bc6f-13e4c00f2530}",
|
|
||||||
"hidden": false,
|
|
||||||
"name": "Debian",
|
|
||||||
"source": "Windows.Terminal.Wsl"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"guid": "{17bf3de4-5353-5709-bcf9-835bd952a95e}",
|
|
||||||
"hidden": true,
|
|
||||||
"name": "Ubuntu-22.04",
|
|
||||||
"source": "Windows.Terminal.Wsl"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"guid": "{e5a83caa-4c73-52b3-ae6b-bc438d721ef9}",
|
|
||||||
"hidden": false,
|
|
||||||
"name": "Ubuntu 22.04.3 LTS",
|
|
||||||
"source": "CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"schemes":
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"background": "#0C0C0C",
|
|
||||||
"black": "#0C0C0C",
|
|
||||||
"blue": "#0037DA",
|
|
||||||
"brightBlack": "#767676",
|
|
||||||
"brightBlue": "#3B78FF",
|
|
||||||
"brightCyan": "#61D6D6",
|
|
||||||
"brightGreen": "#16C60C",
|
|
||||||
"brightPurple": "#B4009E",
|
|
||||||
"brightRed": "#E74856",
|
|
||||||
"brightWhite": "#F2F2F2",
|
|
||||||
"brightYellow": "#F9F1A5",
|
|
||||||
"cursorColor": "#FFFFFF",
|
|
||||||
"cyan": "#3A96DD",
|
|
||||||
"foreground": "#CCCCCC",
|
|
||||||
"green": "#13A10E",
|
|
||||||
"name": "Campbell",
|
|
||||||
"purple": "#881798",
|
|
||||||
"red": "#C50F1F",
|
|
||||||
"selectionBackground": "#FFFFFF",
|
|
||||||
"white": "#CCCCCC",
|
|
||||||
"yellow": "#C19C00"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"background": "#012456",
|
|
||||||
"black": "#0C0C0C",
|
|
||||||
"blue": "#0037DA",
|
|
||||||
"brightBlack": "#767676",
|
|
||||||
"brightBlue": "#3B78FF",
|
|
||||||
"brightCyan": "#61D6D6",
|
|
||||||
"brightGreen": "#16C60C",
|
|
||||||
"brightPurple": "#B4009E",
|
|
||||||
"brightRed": "#E74856",
|
|
||||||
"brightWhite": "#F2F2F2",
|
|
||||||
"brightYellow": "#F9F1A5",
|
|
||||||
"cursorColor": "#FFFFFF",
|
|
||||||
"cyan": "#3A96DD",
|
|
||||||
"foreground": "#CCCCCC",
|
|
||||||
"green": "#13A10E",
|
|
||||||
"name": "Campbell Powershell",
|
|
||||||
"purple": "#881798",
|
|
||||||
"red": "#C50F1F",
|
|
||||||
"selectionBackground": "#FFFFFF",
|
|
||||||
"white": "#CCCCCC",
|
|
||||||
"yellow": "#C19C00"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"background": "#282C34",
|
|
||||||
"black": "#282C34",
|
|
||||||
"blue": "#61AFEF",
|
|
||||||
"brightBlack": "#5A6374",
|
|
||||||
"brightBlue": "#61AFEF",
|
|
||||||
"brightCyan": "#56B6C2",
|
|
||||||
"brightGreen": "#98C379",
|
|
||||||
"brightPurple": "#C678DD",
|
|
||||||
"brightRed": "#E06C75",
|
|
||||||
"brightWhite": "#DCDFE4",
|
|
||||||
"brightYellow": "#E5C07B",
|
|
||||||
"cursorColor": "#FFFFFF",
|
|
||||||
"cyan": "#56B6C2",
|
|
||||||
"foreground": "#DCDFE4",
|
|
||||||
"green": "#98C379",
|
|
||||||
"name": "One Half Dark",
|
|
||||||
"purple": "#C678DD",
|
|
||||||
"red": "#E06C75",
|
|
||||||
"selectionBackground": "#FFFFFF",
|
|
||||||
"white": "#DCDFE4",
|
|
||||||
"yellow": "#E5C07B"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"background": "#FAFAFA",
|
|
||||||
"black": "#383A42",
|
|
||||||
"blue": "#0184BC",
|
|
||||||
"brightBlack": "#4F525D",
|
|
||||||
"brightBlue": "#61AFEF",
|
|
||||||
"brightCyan": "#56B5C1",
|
|
||||||
"brightGreen": "#98C379",
|
|
||||||
"brightPurple": "#C577DD",
|
|
||||||
"brightRed": "#DF6C75",
|
|
||||||
"brightWhite": "#FFFFFF",
|
|
||||||
"brightYellow": "#E4C07A",
|
|
||||||
"cursorColor": "#4F525D",
|
|
||||||
"cyan": "#0997B3",
|
|
||||||
"foreground": "#383A42",
|
|
||||||
"green": "#50A14F",
|
|
||||||
"name": "One Half Light",
|
|
||||||
"purple": "#A626A4",
|
|
||||||
"red": "#E45649",
|
|
||||||
"selectionBackground": "#FFFFFF",
|
|
||||||
"white": "#FAFAFA",
|
|
||||||
"yellow": "#C18301"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"background": "#002B36",
|
|
||||||
"black": "#002B36",
|
|
||||||
"blue": "#268BD2",
|
|
||||||
"brightBlack": "#073642",
|
|
||||||
"brightBlue": "#839496",
|
|
||||||
"brightCyan": "#93A1A1",
|
|
||||||
"brightGreen": "#586E75",
|
|
||||||
"brightPurple": "#6C71C4",
|
|
||||||
"brightRed": "#CB4B16",
|
|
||||||
"brightWhite": "#FDF6E3",
|
|
||||||
"brightYellow": "#657B83",
|
|
||||||
"cursorColor": "#FFFFFF",
|
|
||||||
"cyan": "#2AA198",
|
|
||||||
"foreground": "#839496",
|
|
||||||
"green": "#859900",
|
|
||||||
"name": "Solarized Dark",
|
|
||||||
"purple": "#D33682",
|
|
||||||
"red": "#DC322F",
|
|
||||||
"selectionBackground": "#FFFFFF",
|
|
||||||
"white": "#EEE8D5",
|
|
||||||
"yellow": "#B58900"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"background": "#FDF6E3",
|
|
||||||
"black": "#002B36",
|
|
||||||
"blue": "#268BD2",
|
|
||||||
"brightBlack": "#073642",
|
|
||||||
"brightBlue": "#839496",
|
|
||||||
"brightCyan": "#93A1A1",
|
|
||||||
"brightGreen": "#586E75",
|
|
||||||
"brightPurple": "#6C71C4",
|
|
||||||
"brightRed": "#CB4B16",
|
|
||||||
"brightWhite": "#FDF6E3",
|
|
||||||
"brightYellow": "#657B83",
|
|
||||||
"cursorColor": "#002B36",
|
|
||||||
"cyan": "#2AA198",
|
|
||||||
"foreground": "#657B83",
|
|
||||||
"green": "#859900",
|
|
||||||
"name": "Solarized Light",
|
|
||||||
"purple": "#D33682",
|
|
||||||
"red": "#DC322F",
|
|
||||||
"selectionBackground": "#FFFFFF",
|
|
||||||
"white": "#EEE8D5",
|
|
||||||
"yellow": "#B58900"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"background": "#000000",
|
|
||||||
"black": "#000000",
|
|
||||||
"blue": "#3465A4",
|
|
||||||
"brightBlack": "#555753",
|
|
||||||
"brightBlue": "#729FCF",
|
|
||||||
"brightCyan": "#34E2E2",
|
|
||||||
"brightGreen": "#8AE234",
|
|
||||||
"brightPurple": "#AD7FA8",
|
|
||||||
"brightRed": "#EF2929",
|
|
||||||
"brightWhite": "#EEEEEC",
|
|
||||||
"brightYellow": "#FCE94F",
|
|
||||||
"cursorColor": "#FFFFFF",
|
|
||||||
"cyan": "#06989A",
|
|
||||||
"foreground": "#D3D7CF",
|
|
||||||
"green": "#4E9A06",
|
|
||||||
"name": "Tango Dark",
|
|
||||||
"purple": "#75507B",
|
|
||||||
"red": "#CC0000",
|
|
||||||
"selectionBackground": "#FFFFFF",
|
|
||||||
"white": "#D3D7CF",
|
|
||||||
"yellow": "#C4A000"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"background": "#FFFFFF",
|
|
||||||
"black": "#000000",
|
|
||||||
"blue": "#3465A4",
|
|
||||||
"brightBlack": "#555753",
|
|
||||||
"brightBlue": "#729FCF",
|
|
||||||
"brightCyan": "#34E2E2",
|
|
||||||
"brightGreen": "#8AE234",
|
|
||||||
"brightPurple": "#AD7FA8",
|
|
||||||
"brightRed": "#EF2929",
|
|
||||||
"brightWhite": "#EEEEEC",
|
|
||||||
"brightYellow": "#FCE94F",
|
|
||||||
"cursorColor": "#000000",
|
|
||||||
"cyan": "#06989A",
|
|
||||||
"foreground": "#555753",
|
|
||||||
"green": "#4E9A06",
|
|
||||||
"name": "Tango Light",
|
|
||||||
"purple": "#75507B",
|
|
||||||
"red": "#CC0000",
|
|
||||||
"selectionBackground": "#FFFFFF",
|
|
||||||
"white": "#D3D7CF",
|
|
||||||
"yellow": "#C4A000"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"background": "#300A24",
|
|
||||||
"black": "#171421",
|
|
||||||
"blue": "#0037DA",
|
|
||||||
"brightBlack": "#767676",
|
|
||||||
"brightBlue": "#08458F",
|
|
||||||
"brightCyan": "#2C9FB3",
|
|
||||||
"brightGreen": "#26A269",
|
|
||||||
"brightPurple": "#A347BA",
|
|
||||||
"brightRed": "#C01C28",
|
|
||||||
"brightWhite": "#F2F2F2",
|
|
||||||
"brightYellow": "#A2734C",
|
|
||||||
"cursorColor": "#FFFFFF",
|
|
||||||
"cyan": "#3A96DD",
|
|
||||||
"foreground": "#FFFFFF",
|
|
||||||
"green": "#26A269",
|
|
||||||
"name": "Ubuntu-22.04-ColorScheme",
|
|
||||||
"purple": "#881798",
|
|
||||||
"red": "#C21A23",
|
|
||||||
"selectionBackground": "#FFFFFF",
|
|
||||||
"white": "#CCCCCC",
|
|
||||||
"yellow": "#A2734C"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"background": "#300A24",
|
|
||||||
"black": "#171421",
|
|
||||||
"blue": "#0037DA",
|
|
||||||
"brightBlack": "#767676",
|
|
||||||
"brightBlue": "#08458F",
|
|
||||||
"brightCyan": "#2C9FB3",
|
|
||||||
"brightGreen": "#26A269",
|
|
||||||
"brightPurple": "#A347BA",
|
|
||||||
"brightRed": "#C01C28",
|
|
||||||
"brightWhite": "#F2F2F2",
|
|
||||||
"brightYellow": "#A2734C",
|
|
||||||
"cursorColor": "#FFFFFF",
|
|
||||||
"cyan": "#3A96DD",
|
|
||||||
"foreground": "#FFFFFF",
|
|
||||||
"green": "#26A269",
|
|
||||||
"name": "Ubuntu-ColorScheme",
|
|
||||||
"purple": "#881798",
|
|
||||||
"red": "#C21A23",
|
|
||||||
"selectionBackground": "#FFFFFF",
|
|
||||||
"white": "#CCCCCC",
|
|
||||||
"yellow": "#A2734C"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"background": "#000000",
|
|
||||||
"black": "#000000",
|
|
||||||
"blue": "#000080",
|
|
||||||
"brightBlack": "#808080",
|
|
||||||
"brightBlue": "#0000FF",
|
|
||||||
"brightCyan": "#00FFFF",
|
|
||||||
"brightGreen": "#00FF00",
|
|
||||||
"brightPurple": "#FF00FF",
|
|
||||||
"brightRed": "#FF0000",
|
|
||||||
"brightWhite": "#FFFFFF",
|
|
||||||
"brightYellow": "#FFFF00",
|
|
||||||
"cursorColor": "#FFFFFF",
|
|
||||||
"cyan": "#008080",
|
|
||||||
"foreground": "#C0C0C0",
|
|
||||||
"green": "#008000",
|
|
||||||
"name": "Vintage",
|
|
||||||
"purple": "#800080",
|
|
||||||
"red": "#800000",
|
|
||||||
"selectionBackground": "#FFFFFF",
|
|
||||||
"white": "#C0C0C0",
|
|
||||||
"yellow": "#808000"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"tabWidthMode": "compact",
|
|
||||||
"themes": [],
|
|
||||||
"useAcrylicInTabRow": true,
|
|
||||||
"windowingBehavior": "useNew"
|
|
||||||
}
|
|
||||||
|
|
@ -8,8 +8,7 @@ tabs = true
|
||||||
theme = "auto"
|
theme = "auto"
|
||||||
title-hidden = true
|
title-hidden = true
|
||||||
vsync = false
|
vsync = false
|
||||||
wsl = true
|
wsl = false
|
||||||
neovim-bin = "/opt/nvim-linux64/bin/nvim"
|
|
||||||
|
|
||||||
[font]
|
[font]
|
||||||
normal = ["CaskaydiaCove Nerd Font"] # Will use the bundled Fira Code Nerd Font by default
|
normal = ["CaskaydiaCove Nerd Font"] # Will use the bundled Fira Code Nerd Font by default
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1 @@
|
||||||
# Configs for Windows
|
# Windows dotfiles
|
||||||
|
|
||||||
## Navigator
|
|
||||||
|
|
||||||
- [WSL Config](./.wslconfig)
|
|
||||||
- [Windows Terminal Config](./WindowsTerminal.json)
|
|
||||||
- [PowerShell Config](./Microsoft.PowerShell_profile.ps1)
|
|
||||||
- [Neovide](./neovide.toml)
|
|
||||||
128
win/setup_win.ps1
Normal file
128
win/setup_win.ps1
Normal file
|
|
@ -0,0 +1,128 @@
|
||||||
|
#!C:\Program Files\WindowsApps\Microsoft.PowerShell_7.4.6.0_x64__8wekyb3d8bbwe\pwsh.EXE
|
||||||
|
# Run with PowerShell 7
|
||||||
|
# Use PowerShell as Administrator
|
||||||
|
winget install -e --id Git.Git
|
||||||
|
git clone https://github.com/js0ny/dotfiles.git ~\.dotfiles
|
||||||
|
Set-Location -Path ~\.dotfiles
|
||||||
|
Remove-Item -Force $PROFILE
|
||||||
|
$DOTFILES = "$HOME\.dotfiles"
|
||||||
|
New-Item -ItemType SymbolicLink -Path $PROFILE -Target "$DOTFILES\win\Microsoft.PowerShell_profile.ps1"
|
||||||
|
. $PROFILE
|
||||||
|
# Install Scoop
|
||||||
|
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
|
||||||
|
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 Dotfiles
|
||||||
|
New-Item -ItemType SymbolicLink -Path "~\.condarc" -Target "$DOTFILES\.condarc"
|
||||||
|
New-Item -ItemType SymbolicLink -Path "~\.gitconfig" -Target "$DOTFILES\.gitconfig"
|
||||||
|
New-Item -ItemType SymbolicLink -Path "~\.haskline" -Target "$DOTFILES\.haskline"
|
||||||
|
New-Item -ItemType SymbolicLink -Path "~\.ideavimrc" -Target "$DOTFILES\.ideavimrc"
|
||||||
|
New-Item -ItemType SymbolicLink -Path "~\.markdownlint.json" -Target "$DOTFILES\.markdownlint.json"
|
||||||
|
New-Item -ItemType SymbolicLink -Path "~\.npmrc" -Target "$DOTFILES\.npmrc"
|
||||||
|
New-Item -ItemType SymbolicLink -Path "~\.pip.conf" -Target "$DOTFILES\.pip.conf"
|
||||||
|
New-Item -ItemType SymbolicLink -Path "~\.wslconfig" -Target "$DOTFILES\win\.wslconfig"
|
||||||
|
New-Item -ItemType SymbolicLink -Path "~\.vscode.vimrc" -Target "$DOTFILES\vscode\vscode.vimrc"
|
||||||
|
Get-ChildItem -Force -Filter .* | ForEach-Object { $_.Attributes += "Hidden" } # Hide dotfiles
|
||||||
|
|
||||||
|
# Windows Terminal
|
||||||
|
if (Get-Command wt -ErrorAction SilentlyContinue) {
|
||||||
|
Write-Output "Windows Terminal (wt) installed"
|
||||||
|
} else {
|
||||||
|
winget install -e --id Microsoft.WindowsTerminal
|
||||||
|
}
|
||||||
|
|
||||||
|
# Uninstall Windows Apps
|
||||||
|
Get-AppxPackage *solit* | Remove-AppxPackage # 纸牌
|
||||||
|
Get-AppxPackage *sound* | Remove-AppxPackage # 錄音機
|
||||||
|
Get-AppxPackage *camera* | Remove-AppxPackage # 相機
|
||||||
|
Get-AppxPackage *weather* | Remove-AppxPackage # 天氣
|
||||||
|
Get-AppxPackage *Map* | Remove-AppxPackage # 地圖
|
||||||
|
# Get-AppxPackage *clipchamp* | Remove-AppxPackage # 其實這個還行
|
||||||
|
|
||||||
|
# Added Packages
|
||||||
|
scoop add bucket nerd-fonts
|
||||||
|
scoop add bucket extras
|
||||||
|
|
||||||
|
# CLI Tools
|
||||||
|
winget install -e --id GnuWin32.Grep
|
||||||
|
winget install -e --id GnuWin32.Make
|
||||||
|
winget install -e --id GnuWin32.Which
|
||||||
|
winget install -e --id junegunn.fzf
|
||||||
|
winget install -e --id BurntSushi.ripgrep.MSVC
|
||||||
|
winget install -e --id JernejSimoncic.Wget
|
||||||
|
winget install -e --id GNU.Wget2
|
||||||
|
|
||||||
|
# File Management
|
||||||
|
winget install -e --id voidtools.Everything
|
||||||
|
winget install -e --id 7zip.7zip
|
||||||
|
winget install -e --id Bandisoft.Bandizip
|
||||||
|
winget install -e --id JohnMacFarlane.Pandoc
|
||||||
|
winget install -e --id SumatraPDF.SumatraPDF
|
||||||
|
winget install -e --id Google.GoogleDrive
|
||||||
|
|
||||||
|
# System Enhancements
|
||||||
|
winget install -e --id Rem0o.FanControl
|
||||||
|
winget install -e --id Microsoft.PowerToys
|
||||||
|
winget install -e --id Guru3D.Afterburner
|
||||||
|
winget install -e --id Yuanli.uTools
|
||||||
|
winget install -e --id GeekUninstaller.GeekUninstaller
|
||||||
|
# winget install -e --id Flow-Launcher.Flow-Launcher
|
||||||
|
winget install -e --id AutoHotkey.AutoHotkey
|
||||||
|
winget install -e --id Mactype.Mactype
|
||||||
|
# winget install -e --id Nilesoft.Shell
|
||||||
|
# scoop install umi-ocr-paddle
|
||||||
|
|
||||||
|
# Editor
|
||||||
|
winget install -e --id vim.vim
|
||||||
|
winget install -e --id Neovim.Neovim
|
||||||
|
winget install -e --id VSCodium.VSCodium
|
||||||
|
winget install -e --id Microsoft.VisualStudioCode
|
||||||
|
winget install -e --id Neovide.Neovide
|
||||||
|
|
||||||
|
# Security
|
||||||
|
winget install -e --id Bitwarden.Bitwarden
|
||||||
|
|
||||||
|
# PKM
|
||||||
|
winget install -e --id Obsidian.Obsidian
|
||||||
|
winget install -e --id B3log.SiYuan
|
||||||
|
winget install -e --id appmakes.Typora
|
||||||
|
winget install -e --id DigitalScholar.Zotero
|
||||||
|
winget install -e --id Anki.Anki
|
||||||
|
winget install -e --id Notion.Notion
|
||||||
|
|
||||||
|
# Browser
|
||||||
|
winget install -e --id TheBrowserCompany.Arc
|
||||||
|
winget install -e --id Mozilla.Firefox.Nightly
|
||||||
|
|
||||||
|
# Programming Languages
|
||||||
|
winget install -e --id Python.Python.3.12
|
||||||
|
winget install -e --id Anaconda.Miniconda3
|
||||||
|
winget install -e --id OpenJS.NodeJS
|
||||||
|
winget install -e --id Rustlang.Rustup
|
||||||
|
winget install -e --id Microsoft.DotNet.SDK.8
|
||||||
|
|
||||||
|
# Dev/IDE
|
||||||
|
winget install -e --id Docker.DockerDesktop
|
||||||
|
winget install -e --id JesseDuffield.lazygit
|
||||||
|
|
||||||
|
# Gaming
|
||||||
|
winget install -e --id Valve.Steam
|
||||||
|
|
||||||
|
# IME
|
||||||
|
winget install -e --id Rime.Weasel
|
||||||
|
|
||||||
|
# Social
|
||||||
|
winget install -e --id 9N97ZCKPD60Q --source msstore # Unigram (Telegram client)
|
||||||
|
winget install -e --id Tencent.QQ.NT
|
||||||
|
winget install -e --id Tencent.WeChat
|
||||||
|
|
||||||
|
# Others
|
||||||
|
winget install -e --id Appest.TickTick
|
||||||
|
|
||||||
|
# Fonts
|
||||||
|
scoop install FiraCode-NF
|
||||||
|
scoop install CascadiaCode-NF
|
||||||
|
scoop install LXGWWenKai # 霞鹜文楷
|
||||||
|
scoop install LXGWWenKaiMono # 霞鹜文楷Mono
|
||||||
0
win/setup_win_full.ps1
Normal file
0
win/setup_win_full.ps1
Normal file
Loading…
Add table
Add a link
Reference in a new issue