diff --git a/Microsoft.PowerShell_profile.ps1 b/Microsoft.PowerShell_profile.ps1 index 938e299..f36732c 100644 --- a/Microsoft.PowerShell_profile.ps1 +++ b/Microsoft.PowerShell_profile.ps1 @@ -6,11 +6,8 @@ Import-Module posh-git $env:POSH_GIT_ENABLED = $true $env:VIRTUAL_ENV_DISABLE_PROMPT = "True" -oh-my-posh init pwsh --config (Join-Path $profile_folder theme.omp.json) | Invoke-Expression -function docker { - wsl -- docker $args -} +oh-my-posh init pwsh --config (Join-Path $profile_folder theme.omp.json) | Invoke-Expression Import-Module posh-ssh Import-Module posh-venv @@ -23,6 +20,18 @@ Set-PSReadLineKeyHandler -Key DownArrow -Function HistorySearchForward Set-PSReadlineKeyHandler -Key Tab -Function MenuComplete Set-PSReadlineOption -BellStyle None +if (Get-Command winget -ErrorAction SilentlyContinue) { + Register-ArgumentCompleter -Native -CommandName winget -ScriptBlock { + param($wordToComplete, $commandAst, $cursorPosition) + [Console]::InputEncoding = [Console]::OutputEncoding = $OutputEncoding = [System.Text.Utf8Encoding]::new() + $Local:word = $wordToComplete.Replace('"', '""') + $Local:ast = $commandAst.ToString().Replace('"', '""') + winget complete --word="$Local:word" --commandline "$Local:ast" --position $cursorPosition | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_) + } + } +} + # kube / helm if (Get-Command kubectl -ErrorAction SilentlyContinue) { kubectl completion powershell | Out-String | Invoke-Expression @@ -31,3 +40,8 @@ if (Get-Command kubectl -ErrorAction SilentlyContinue) { if (Get-Command helm -ErrorAction SilentlyContinue) { helm completion powershell | Out-String | Invoke-Expression } + +# Gitlab CLI +if (Get-Command glab -ErrorAction SilentlyContinue) { + glab completion -s powershell | Out-String | Invoke-Expression +} diff --git a/Modules/posh-venv/posh-venv.psm1 b/Modules/posh-venv/posh-venv.psm1 index d6f7976..059ee93 100644 --- a/Modules/posh-venv/posh-venv.psm1 +++ b/Modules/posh-venv/posh-venv.psm1 @@ -51,6 +51,10 @@ function venv { deactivate } + "list-python" { + py -0 | Select-Object -Skip 1 + } + default { Write-Error "Unknown venv command ${args[0]}." } diff --git a/theme.omp.json b/theme.omp.json index 1cc2a75..e5bb4dd 100644 --- a/theme.omp.json +++ b/theme.omp.json @@ -1,150 +1,165 @@ { "$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json", + "version": 2, + "final_space": true, "blocks": [ { + "type": "prompt", "alignment": "left", "segments": [ { - "foreground": "#ffee58", + "type": "root", "style": "plain", - "template": " \uf0e7 ", - "type": "root" + "foreground": "#ffee58", + "template": " \uf0e7 " }, { + "type": "exit", + "style": "powerline", "foreground": "#06884b", - "foreground_templates": [ - "{{ if gt .Code 0 }}#e61010{{ end }}" - ], + "foreground_templates": ["{{ if gt .Code 0 }}#e61010{{ end }}"], + "template": " {{ if gt .Code 0 }}✗{{ else }}✔{{ end }} ", "properties": { "always_enabled": true - }, - "style": "powerline", - "template": " {{ if gt .Code 0 }}\u2717{{ else }}\u2714{{ end }} ", - "type": "exit" + } }, { + "type": "session", + "style": "plain", "foreground": "#ffffff", + "template": " {{ if .SSHSession }}\udb80\udf18 {{ end }}{{ .UserName }}", "properties": { "display_host": false - }, - "style": "plain", - "template": " {{ if .SSHSession }}\uf817 {{ end }}{{ .UserName }}", - "type": "session" + } } - ], - "type": "prompt" + ] }, { + "type": "prompt", "alignment": "left", "segments": [ { + "type": "envvar", + "style": "powerline", "foreground": "#fff000", "properties": { - "prefix": " \ufcb5 ", + "prefix": " \udb81\udfb7 ", "var_name": "__SHELL_INFORMATION_POSH_258__" - }, - "style": "powerline", - "type": "envvar" + } }, { - "foreground": "#b600ff", + "type": "go", "style": "powerline", - "template": " \ufcd1 {{ if .Error }}{{ .Error }}{{ else }}{{ .Full }}{{ end }} ", - "type": "go" - }, - { - "foreground": "#b600ff", - "style": "powerline", - "template": " \ue718 {{ if .PackageManagerIcon }}{{ .PackageManagerIcon }} {{ end }}{{ .Full }} ", - "type": "node" - }, - { - "background": "#b600ff", "foreground": "#ffffff", + "background": "#983ebb", + "template": " \udb81\udfd3 {{ if .Error }}{{ .Error }}{{ else }}{{ .Full }}{{ end }} " + }, + { + "type": "node", + "style": "powerline", + "foreground": "#ffffff", + "background": "#983ebb", + "template": " \ue718 {{ if .PackageManagerIcon }}{{ .PackageManagerIcon }} {{ end }}{{ .Full }} " + }, + { + "type": "python", + "style": "powerline", "powerline_symbol": "\ue0b0", + "foreground": "#ffffff", + "background": "#983ebb", + "template": " \ue235 {{ if .Error }}{{ .Error }}{{ else }}{{ if .Venv }}{{ .Venv }} {{ end }}{{ .Full }}{{ end }} ", "properties": { "display_mode": "context", "home_enabled": true - }, - "style": "powerline", - "template": " \ue235 {{ if .Error }}{{ .Error }}{{ else }}{{ if .Venv }}{{ .Venv }} {{ end }}{{ .Full }}{{ end }} ", - "type": "python" + } } - ], - "type": "prompt" + ] }, { + "type": "prompt", "alignment": "left", "segments": [ { - "foreground": "#8e24aa", + "type": "os", "style": "plain", - "template": " {{ if .WSL }}WSL at {{ end }}{{.Icon}} ", - "type": "os" + "foreground": "#8e24aa", + "template": " {{ if .WSL }}WSL at {{ end }}{{.Icon}} " }, { - "background": "#0037da", - "foreground": "#ffffff", + "type": "path", + "style": "powerline", "powerline_symbol": "\ue0b0", + "foreground": "#ffffff", + "background": "#3156c4", + "template": " {{ .Path }} ", "properties": { "folder_separator_icon": " \ue0b1 ", - "home_icon": "\uf7db", + "home_icon": "\uf4e2", "style": "letter" - }, - "style": "powerline", - "template": " {{ .Path }} ", - "type": "path" + } }, { - "foreground": "#193549", - "powerline_symbol": "\ue0b0", + "type": "git", "style": "powerline", - "template": " {{ .Status }} ", - "type": "poshgit" + "powerline_symbol": "", + "foreground": "#193549", + "background": "#ffeb3b", + "background_templates": [ + "{{ if or (.Working.Changed) (.Staging.Changed) }}#FFEB3B{{ end }}", + "{{ if and (gt .Ahead 0) (gt .Behind 0) }}#FFCC80{{ end }}", + "{{ if gt .Ahead 0 }}#B388FF{{ end }}", + "{{ if gt .Behind 0 }}#B388FB{{ end }}" + ], + "template": "{{ .UpstreamIcon }}{{ .HEAD }}{{if .BranchStatus }} {{ .BranchStatus }}{{ end }}{{ if .Working.Changed }}  {{ .Working.String }}{{ end }}{{ if and (.Working.Changed) (.Staging.Changed) }} |{{ end }}{{ if .Staging.Changed }}  {{ .Staging.String }}{{ end }}{{ if gt .StashCount 0 }}  {{ .StashCount }}{{ end }}", + "properties": { + "fetch_status": true, + "fetch_stash_count": true, + "fetch_upstream_icon": true, + "untracked_modes": { + "/Users/user/Projects/oh-my-posh/": "no" + } + } } - ], - "type": "prompt" + ] }, { + "type": "rprompt", "alignment": "right", "segments": [ { - "foreground": "#8454bb", + "type": "executiontime", + "style": "plain", "powerline_symbol": "\ue0b0", + "foreground": "#8454bb", + "template": " <#fefefe>\udb81\udead {{ .FormattedMs }} ", "properties": { "style": "austin", "threshold": 500 - }, - "style": "plain", - "template": " <#fefefe>\ufbab {{ .FormattedMs }} ", - "type": "executiontime" + } }, { + "type": "time", + "style": "plain", "foreground": "#007ACC", + "template": " {{ .CurrentDate | date .Format }} ", "properties": { "time_format": "[15:04:05]" - }, - "style": "plain", - "template": " {{ .CurrentDate | date .Format }} ", - "type": "time" + } } - ], - "type": "rprompt" + ] }, { + "type": "prompt", "alignment": "left", - "newline": true, "segments": [ { - "foreground": "#0037da", + "type": "text", "style": "powerline", - "template": " \u276f ", - "type": "text" + "foreground": "#3156c4", + "template": " \u276f " } ], - "type": "prompt" + "newline": true } - ], - "final_space": true, - "version": 2 + ] }