Merge pull request #7 from qwjyh/windows

Merge Windows dotfiles into main
This commit is contained in:
qwjyh 2022-10-06 23:39:10 +09:00 committed by GitHub
commit be24b118da
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 422 additions and 22 deletions

View file

@ -1,23 +1,15 @@
#!/usr/bin/pwsh #!/usr/bin/pwsh
# dotfiles install script for Windows # dotfiles install script for Windows
# Execute
# Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
# first to run pwsh scripts
# check administration role # check administration role
$currentPrincipal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent()) #Requires -RunAsAdministrator
$bool_admin = $currentPrincipal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
if (!$bool_admin) {
Write-Warning -Message "require Admin privilage
please run as Administrator"
exit 1
}
# check pwsh version # check pwsh version
# ≧ 7 # ≧ 7
if ($PSVersionTable.PSVersion.Major -lt 7) { #Requires -Version 7
Write-Warning -Message "pwsh version must be greater than 7
please install powershell 7 (Core)
you can install via winget"
exit 1
}
# check working directory # check working directory
if (!( if (!(
@ -35,6 +27,17 @@ Write-Output "Pscx"
Install-Module -Name Pscx -AllowPrerelease Install-Module -Name Pscx -AllowPrerelease
Write-Output "z" Write-Output "z"
Install-Module -Name z Install-Module -Name z
Install-Module -Name PSFzf -RequiredVersion 2.5.10
# install scoop
if(!(Get-Command scoop -ErrorAction SilentlyContinue)) {
Write-Output "Installing scoop..."
irm get.scoop.sh | iex
}
# install basic scoop apps
# import from exported json file
# to update the json file, execute ./bin/scoop_apps/update_scoop_list.ps1
scoop import .\bin\scoop_apps\scoop_minimal_apps.json
# make symbolic links # make symbolic links

View file

@ -0,0 +1,144 @@
{
"apps": [
{
"Updated": "2022-09-24T06:50:10.362148+09:00",
"Info": "",
"Source": "main",
"Name": "7zip",
"Version": "22.01"
},
{
"Updated": "2022-09-24T06:45:30.615827+09:00",
"Info": "",
"Source": "main",
"Name": "bat",
"Version": "0.22.1"
},
{
"Updated": "2022-09-26T04:52:36.3416759+09:00",
"Info": "",
"Source": "main",
"Name": "ffmpeg",
"Version": "5.1.1"
},
{
"Updated": "2022-09-23T17:54:45.7302151+09:00",
"Info": "",
"Source": "main",
"Name": "fzf",
"Version": "0.33.0"
},
{
"Updated": "2022-09-25T00:18:14.5435972+09:00",
"Info": "",
"Source": "main",
"Name": "gcc",
"Version": "11.2.0"
},
{
"Updated": "2022-09-24T06:50:11.9515886+09:00",
"Info": "",
"Source": "main",
"Name": "grep",
"Version": "3.7"
},
{
"Updated": "2022-09-24T06:43:31.7789266+09:00",
"Info": "",
"Source": "main",
"Name": "hexyl",
"Version": "0.10.0"
},
{
"Updated": "2022-09-27T19:03:11.6544132+09:00",
"Info": "",
"Source": "main",
"Name": "innounp",
"Version": "0.50"
},
{
"Updated": "2022-09-27T07:30:16.5298145+09:00",
"Info": "",
"Source": "main",
"Name": "jid",
"Version": "0.7.6"
},
{
"Updated": "2022-09-27T07:29:37.5227478+09:00",
"Info": "",
"Source": "main",
"Name": "jq",
"Version": "1.6"
},
{
"Updated": "2022-09-23T17:59:11.0595712+09:00",
"Info": "",
"Source": "main",
"Name": "less",
"Version": "608"
},
{
"Updated": "2022-09-27T08:37:26.471311+09:00",
"Info": "",
"Source": "main",
"Name": "lua",
"Version": "5.4.2"
},
{
"Updated": "2022-09-25T00:17:18.2293504+09:00",
"Info": "",
"Source": "main",
"Name": "make",
"Version": "4.3"
},
{
"Updated": "2022-09-27T19:03:31.678283+09:00",
"Info": "",
"Source": "main",
"Name": "r",
"Version": "4.2.1"
},
{
"Updated": "2022-09-28T23:47:33.9083455+09:00",
"Info": "",
"Source": "extras",
"Name": "scoop-completion",
"Version": "0.2.3"
},
{
"Updated": "2022-09-27T07:27:52.6696127+09:00",
"Info": "",
"Source": "extras",
"Name": "spacesniffer",
"Version": "1.3.0.2"
},
{
"Updated": "2022-09-22T23:40:06.1651065+09:00",
"Info": "",
"Source": "main",
"Name": "sudo",
"Version": "0.2020.01.26"
},
{
"Updated": "2022-09-24T06:53:20.806641+09:00",
"Info": "",
"Source": "main",
"Name": "ugrep",
"Version": "3.9.2"
}
],
"buckets": [
{
"Name": "extras",
"Source": "https://github.com/ScoopInstaller/Extras",
"Updated": "2022-09-28T21:31:14+09:00",
"Manifests": 1691
},
{
"Name": "main",
"Source": "https://github.com/ScoopInstaller/Main",
"Updated": "2022-09-28T21:32:26+09:00",
"Manifests": 1091
}
]
}

View file

@ -0,0 +1,74 @@
{
"apps": [
{
"Updated": "2022-09-24T06:50:10.362148+09:00",
"Info": "",
"Source": "main",
"Name": "7zip",
"Version": "22.01"
},
{
"Updated": "2022-09-24T06:45:30.615827+09:00",
"Info": "",
"Source": "main",
"Name": "bat",
"Version": "0.22.1"
},
{
"Updated": "2022-09-23T17:54:45.7302151+09:00",
"Info": "",
"Source": "main",
"Name": "fzf",
"Version": "0.33.0"
},
{
"Updated": "2022-09-24T06:50:11.9515886+09:00",
"Info": "",
"Source": "main",
"Name": "grep",
"Version": "3.7"
},
{
"Updated": "2022-09-24T06:43:31.7789266+09:00",
"Info": "",
"Source": "main",
"Name": "hexyl",
"Version": "0.10.0"
},
{
"Updated": "2022-09-23T17:59:11.0595712+09:00",
"Info": "",
"Source": "main",
"Name": "less",
"Version": "608"
},
{
"Updated": "2022-09-22T23:40:06.1651065+09:00",
"Info": "",
"Source": "main",
"Name": "sudo",
"Version": "0.2020.01.26"
},
{
"Updated": "2022-09-24T06:53:20.806641+09:00",
"Info": "",
"Source": "main",
"Name": "ugrep",
"Version": "3.9.2"
}
],
"buckets": [
{
"Name": "extras",
"Source": "https://github.com/ScoopInstaller/Extras",
"Updated": "2022-09-28T21:31:14+09:00",
"Manifests": 1691
},
{
"Name": "main",
"Source": "https://github.com/ScoopInstaller/Main",
"Updated": "2022-09-28T21:32:26+09:00",
"Manifests": 1091
}
]
}

View file

@ -0,0 +1,29 @@
# update scoop list
# scoop need to be installed
if(!(Get-Command scoop -ErrorAction SilentlyContinue)) {
Write-Output "scoop does not exists!"
exit 1
}
# execution location
if(!((Test-Path bin) -and (Test-Path dotfiles))) {
Write-Warning "This script need to be executed in dotfiles root"
exit 2
}
# export to JSON
scoop export | Out-File .\bin\scoop_apps\scoop_apps.json -Encoding utf8
# create minimal JSON
$minimal_list = @("7zip", "bat", "fzf", "grep", "hexyl", "less", "sudo", "ugrep")
$parsed_json = Get-Content -Path .\bin\scoop_apps\scoop_apps.json | ConvertFrom-Json
$buckets = ($parsed_json | Select-Object buckets).buckets
$apps = ($parsed_json | Select-Object apps).apps
$selected_apps = $apps | Where-Object Name -In $minimal_list
$new_json = [PSCustomObject]@{
"apps" = $selected_apps
"buckets" = $buckets
}
ConvertTo-Json -InputObject $new_json | Out-File .\bin\scoop_apps\scoop_minimal_apps.json -Encoding utf8

View file

@ -0,0 +1,31 @@
# Install script for AHK key remapping
# Be sure to install AutoHotKey first
# check working directory
if (!(
(Test-Path bin) -and (Test-Path dotfiles)
)) {
Write-Warning -Message "wrong current path
please execute at repo root"
exit 1
}
# set Ahk2Exe.exe path
# example "C:\Program Files\AutoHotKey\Compiler\Ahk2Exe.exe"
$ahk2exe_path = "C:\Program Files\AutoHotKey\Compiler\Ahk2Exe.exe"
## end config
if ($null -eq $ahk2exe_path) {
exit
}
# compile
& $ahk2exe_path /in .\dotfiles\ahk\key_remaps.ahk /out dotfiles\ahk\key_remaps.exe
# add to startup folder
$startup = "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Startup\"
Copy-Item .\dotfiles\ahk\key_remaps.exe $startup
Write-Output "Finished!"

View file

@ -0,0 +1,22 @@
# installing luajit under %localappdata%\Programs
# download and build
git clone https://luajit.org/git/luajit.git
cd luajit
make
# installing
$luajit_location = Join-Path $env:LOCALAPPDATA "Programs\luajit"
mkdir $luajit_location
cp .\src\luajit.exe, .\src\lua51.dll $luajit_location
mkdir $luajit_location\lua
mkdir $luajit_location\lua\jit
cp .\src\jit\* $luajit_location\lua\jit
# add to path
while($true) {
$input = Read-Host "add $env:LOCALAPPDATA\Programs\luajit to `$PATH. (Y)"
if ($input = 'Y') {
break
}
}

1
dotfiles/ahk/.gitignore vendored Normal file
View file

@ -0,0 +1 @@
*.exe

View file

@ -0,0 +1,64 @@
; basic key remapping for windows(JIS keyboard)
; using AutoHotKey
#SingleInstance, Force
SendMode Input
SetWorkingDir, %A_ScriptDir%1
; KeyHistory
#UseHook
; ==========================================
; 変換/無変換 + ASDF/HJKLのショートカット
vk1D::
Send, {vk1D}
Return
vk1C::
Send, {vk1C}
Return
; 十字キーの設定
; hjkl like vim
vk1D & h::
vk1C & h::
Send,{Blind}{Left}
return
vk1D & j::
vk1C & j::
Send,{Blind}{Down}
return
vk1D & k::
vk1C & k::
Send,{Blind}{Up}
return
vk1D & l::
vk1C & l::
Send,{Blind}{Right}
return
; Home,End,PgUp,PgDnの設定
; a s d f
; Home PgUp PgDn End
vk1D & a::
vk1C & a::
Send,{Blind}{Home}
return
vk1D & f::
vk1C & f::
Send,{Blind}{End}
return
vk1D & s::
vk1C & s::
Send,{Blind}{PgUp}
return
vk1D & d::
vk1C & d::
Send,{Blind}{PgDn}
return
; ==========================================
; HankakuZenkaku to esc
sc029::
Send, {Escape}

View file

@ -1,16 +1,28 @@
# auto completion # ==============================================================
# PSReadLine Settings
# ==============================================================
Import-Module PSReadLine Import-Module PSReadLine
Set-PSReadLineOption -PredictionSource History Set-PSReadLineOption -PredictionSource History
Set-PSReadlineOption -HistoryNoDuplicates Set-PSReadlineOption -HistoryNoDuplicates
Set-PSReadLineOption -DingTone 880 # beep frequency
Set-PSReadLineKeyHandler -Chord "Ctrl+f" -Function ForwardWord # like fish Set-PSReadLineKeyHandler -Chord "Ctrl+f" -Function ForwardWord # like fish
Set-PSReadLineKeyHandler -Chord "Tab" MenuComplete Set-PSReadLineKeyHandler -Chord "Tab" MenuComplete
Set-PSReadLineKeyHandler -Chord "Ctrl+d" DeleteCharOrExit Set-PSReadLineKeyHandler -Chord "Ctrl+d" DeleteCharOrExit
Set-PSReadLineKeyHandler -Chord "Ctrl+g" -ScriptBlock { Invoke-FzfTabCompletion }
# PsFzf Options
# 'Ctrl+t' for provider path, 'Ctrl+r' for reverse history
Set-PsFzfOption -PSReadlineChordProvider 'Ctrl+t' -PSReadlineChordReverseHistory 'Ctrl+r'
# ==============================================================
# alias and functions
# ==============================================================
function ~ { cd ~ } function ~ { cd ~ }
function .. { cd .. } function .. { cd .. }
function epl {explorer.exe .} function epl {explorer.exe .}
Set-Alias touch New-Item Set-Alias touch New-Item
Set-Alias whereis where.exe
# starship # starship
# change window name # change window name
@ -21,13 +33,11 @@ function Invoke-Starship-PreCommand {
Invoke-Expression (&starship init powershell) Invoke-Expression (&starship init powershell)
$ENV:STARSHIP_CONFIG = "$HOME\.config\starship.toml" $ENV:STARSHIP_CONFIG = "$HOME\.config\starship.toml"
# home_util shortcut
$home_util_path = "~\Documents\macro\ahk"
function home_util {
& (Join-Path -Path $home_util_path -ChildPath "home_util.exe")
}
# --------------------------------------------------------------
# change encoding # change encoding
# --------------------------------------------------------------
# ref: https://qiita.com/e4rfx/items/3772ecb58b6918ed5348 # ref: https://qiita.com/e4rfx/items/3772ecb58b6918ed5348
# 文字エンコードをUTF8に設定する # 文字エンコードをUTF8に設定する
function Set-UTF8 { function Set-UTF8 {
@ -111,14 +121,36 @@ function Enable-SshAgent {
#> #>
sudo Set-Service -Name ssh-agent -StartupType Manual && Start-Service ssh-agent sudo Set-Service -Name ssh-agent -StartupType Manual && Start-Service ssh-agent
} }
# auto start ssh-agent and do ssh-add
function Invoke-SshAdd {
<#
.SYNOPSIS
Starts ssh-agent and do ssh-add
.DESCRIPTION
Starts ssh-agent as admin and do ssh-add, to add sshkeys to ssh-agent.
#>
Enable-SshAgent
ssh-add
}
# execute "ssh-add" to add keys # execute "ssh-add" to add keys
# less options # less options
$env:LESS = "-M -R -S -W -z-4 -x4" $env:LESS = "-i -M -R -S -W -z-4 -x4"
# ==============================================================
# auto completions for modules
# ==============================================================
# scoop
# enable completion in current shell, use absolute path because PowerShell Core not respect $env:PSModulePath
Import-Module scoop-completion
#Import-Module "$($(Get-Item $(Get-Command scoop.ps1).Path).Directory.Parent.FullName)\modules\scoop-completion"
# chezmoi completion # chezmoi completion
$script = "$HOME\.config\powershell\chezmoi_completion.ps1" $script = "$HOME\.config\powershell\chezmoi_completion.ps1"
if (Test-Path $script) { if (Test-Path $script) {