diff --git a/.chezmoi.toml.tmpl b/.chezmoi.toml.tmpl new file mode 100644 index 0000000..c5d0bb9 --- /dev/null +++ b/.chezmoi.toml.tmpl @@ -0,0 +1,2 @@ +[diff] +reverse = true diff --git a/.chezmoiexternal.toml b/.chezmoiexternal.toml new file mode 100644 index 0000000..6df5d05 --- /dev/null +++ b/.chezmoiexternal.toml @@ -0,0 +1,4 @@ +[".tmux/plugins/tpm"] + type = "git-repo" + url = "https://github.com/tmux-plugins/tpm" + refreshPeriod = "168h" diff --git a/.config/fish/config.fish b/.config/fish/config.fish deleted file mode 100644 index b07e1e8..0000000 --- a/.config/fish/config.fish +++ /dev/null @@ -1,5 +0,0 @@ -set PATH ~/bin /bin /sbin /usr/local/bin /usr/local/sbin /usr/bin /usr/sbin ~/.cabal/bin /usr/lib/go/bin ~/.gem/ruby/1.9.1/bin $PATH - -set fish_greeting "" - -. ~/.bash_aliases diff --git a/.config/nvim b/.config/nvim deleted file mode 120000 index bb038bd..0000000 --- a/.config/nvim +++ /dev/null @@ -1 +0,0 @@ -/home/barak/.vim \ No newline at end of file diff --git a/.config/systemd/user/default.target.wants/ssh-agent.service b/.config/systemd/user/default.target.wants/ssh-agent.service deleted file mode 120000 index 8c9a931..0000000 --- a/.config/systemd/user/default.target.wants/ssh-agent.service +++ /dev/null @@ -1 +0,0 @@ -/home/barak/.config/systemd/user/ssh-agent.service \ No newline at end of file diff --git a/.config/xfce4/desktop/icons.screen0-1904x1033.rc b/.config/xfce4/desktop/icons.screen0-1904x1033.rc deleted file mode 100644 index 901fb0b..0000000 --- a/.config/xfce4/desktop/icons.screen0-1904x1033.rc +++ /dev/null @@ -1,15 +0,0 @@ -[xfdesktop-version-4.10.3+-rcfile_format] -4.10.3+=true - -[/home/barak/Desktop/steam.desktop] -row=5 -col=0 - -[/] -row=0 -col=0 - -[/home/barak] -row=1 -col=0 - diff --git a/.config/xfce4/desktop/icons.screen0-2544x1344.rc b/.config/xfce4/desktop/icons.screen0-2544x1344.rc deleted file mode 100644 index 901fb0b..0000000 --- a/.config/xfce4/desktop/icons.screen0-2544x1344.rc +++ /dev/null @@ -1,15 +0,0 @@ -[xfdesktop-version-4.10.3+-rcfile_format] -4.10.3+=true - -[/home/barak/Desktop/steam.desktop] -row=5 -col=0 - -[/] -row=0 -col=0 - -[/home/barak] -row=1 -col=0 - diff --git a/.config/xfce4/desktop/icons.screen0-2544x1424.rc b/.config/xfce4/desktop/icons.screen0-2544x1424.rc deleted file mode 100644 index 44bc09c..0000000 --- a/.config/xfce4/desktop/icons.screen0-2544x1424.rc +++ /dev/null @@ -1,27 +0,0 @@ -[xfdesktop-version-4.10.3+-rcfile_format] -4.10.3+=true - -[/home/barak/Desktop/steam.desktop] -row=5 -col=0 - -[/home/barak/Desktop/Hearthstone.desktop] -row=3 -col=0 - -[/home/barak/Desktop/Heroes of the Storm.desktop] -row=2 -col=0 - -[/home/barak/Desktop/Battle.net.desktop] -row=4 -col=0 - -[/] -row=0 -col=0 - -[/home/barak] -row=1 -col=0 - diff --git a/.config/xfce4/helpers.rc b/.config/xfce4/helpers.rc deleted file mode 100644 index ba9ad62..0000000 --- a/.config/xfce4/helpers.rc +++ /dev/null @@ -1 +0,0 @@ -WebBrowser=google-chrome-beta diff --git a/.config/xfce4/panel/cpugraph-9.rc b/.config/xfce4/panel/cpugraph-9.rc deleted file mode 100644 index acfb22c..0000000 --- a/.config/xfce4/panel/cpugraph-9.rc +++ /dev/null @@ -1,17 +0,0 @@ -UpdateInterval=1 -TimeScale=0 -Size=56 -Mode=0 -Frame=1 -Border=0 -Bars=0 -TrackedCore=0 -Command=xfce4-taskmanager -InTerminal=0 -StartupNotification=1 -ColorMode=1 -Foreground1=#0000ffff0000 -Foreground2=#ffff00000000 -Foreground3=#00000000ffff -Background=#000000000000 - diff --git a/.config/xfce4/panel/netload-10.rc b/.config/xfce4/panel/netload-10.rc deleted file mode 100644 index 0836938..0000000 --- a/.config/xfce4/panel/netload-10.rc +++ /dev/null @@ -1,14 +0,0 @@ -Use_Label=true -Show_Values=false -Show_Bars=true -Colorize_Values=true -Color_In=rgb(255,79,0) -Color_Out=rgb(255,229,0) -Text=wlp4s0 -Network_Device=wlp4s0 -Max_In=4096 -Max_Out=4096 -Auto_Max=true -Update_Interval=500 -Values_As_Bits=true - diff --git a/.config/xfce4/xfce4-screenshooter b/.config/xfce4/xfce4-screenshooter deleted file mode 100644 index 4326fc5..0000000 --- a/.config/xfce4/xfce4-screenshooter +++ /dev/null @@ -1,8 +0,0 @@ -delay=1 -region=3 -action=1 -show_mouse=1 -screenshot_dir=file:/home/barak/Pictures -app=env -last_user= - diff --git a/.config/xfce4/xfce4-taskmanager.rc b/.config/xfce4/xfce4-taskmanager.rc deleted file mode 100644 index fe08189..0000000 --- a/.config/xfce4/xfce4-taskmanager.rc +++ /dev/null @@ -1,25 +0,0 @@ -[Settings] -ShowAllProcesses=FALSE -MorePrecision=FALSE -FullCommandLine=FALSE -ShowStatusIcon=FALSE -ShowMemoryInXBytes=FALSE -MonitorPaintBox=TRUE -ShowApplicationIcons=TRUE -ToolbarStyle=DEFAULT -PromptTerminateTask=TRUE -RefreshRate=750 -ColumnUID=FALSE -ColumnPID=TRUE -ColumnPPID=FALSE -ColumnState=FALSE -ColumnVSZ=TRUE -ColumnRSS=TRUE -ColumnCPU=TRUE -ColumnPriority=FALSE -SortColumn=7 -SortType=1 -WindowWidth=2556 -WindowHeight=1411 -HandlePosition=100 -ProcessTreeView=FALSE diff --git a/.config/xfce4/xfconf/xfce-perchannel-xml/displays.xml b/.config/xfce4/xfconf/xfce-perchannel-xml/displays.xml deleted file mode 100644 index 5d97713..0000000 --- a/.config/xfce4/xfconf/xfce-perchannel-xml/displays.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.config/xfce4/xfconf/xfce-perchannel-xml/keyboard-layout.xml b/.config/xfce4/xfconf/xfce-perchannel-xml/keyboard-layout.xml deleted file mode 100644 index fac136c..0000000 --- a/.config/xfce4/xfconf/xfce-perchannel-xml/keyboard-layout.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/.config/xfce4/xfconf/xfce-perchannel-xml/pointers.xml b/.config/xfce4/xfconf/xfce-perchannel-xml/pointers.xml deleted file mode 100644 index 3f991b4..0000000 --- a/.config/xfce4/xfconf/xfce-perchannel-xml/pointers.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/.config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml b/.config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml deleted file mode 100644 index 550d2b0..0000000 --- a/.config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-appfinder.xml b/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-appfinder.xml deleted file mode 100644 index 7b82ee2..0000000 --- a/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-appfinder.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml b/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml deleted file mode 100644 index 8dd67fe..0000000 --- a/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-notifyd.xml b/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-notifyd.xml deleted file mode 100644 index 6bef1da..0000000 --- a/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-notifyd.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml b/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml deleted file mode 100644 index 4f25354..0000000 --- a/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-power-manager.xml b/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-power-manager.xml deleted file mode 100644 index 7fc07f0..0000000 --- a/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-power-manager.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-settings-editor.xml b/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-settings-editor.xml deleted file mode 100644 index 236eff9..0000000 --- a/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-settings-editor.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/.emacs.d/init.el b/.emacs.d/init.el deleted file mode 100644 index 289257d..0000000 --- a/.emacs.d/init.el +++ /dev/null @@ -1,35 +0,0 @@ -;;; init.el --- Spacemacs Initialization File -;; -;; Copyright (c) 2012-2016 Sylvain Benner & Contributors -;; -;; Author: Sylvain Benner -;; URL: https://github.com/syl20bnr/spacemacs -;; -;; This file is not part of GNU Emacs. -;; -;;; License: GPLv3 - -;; Without this comment emacs25 adds (package-initialize) here -;; (package-initialize) - -;; Increase gc-cons-threshold, depending on your system you may set it back to a -;; lower value in your dotfile (function `dotspacemacs/user-config') -(setq gc-cons-threshold 100000000) - -(defconst spacemacs-version "0.200.3" "Spacemacs version.") -(defconst spacemacs-emacs-min-version "24.4" "Minimal version of Emacs.") - -(if (not (version<= spacemacs-emacs-min-version emacs-version)) - (message (concat "Your version of Emacs (%s) is too old. " - "Spacemacs requires Emacs version %s or above.") - emacs-version spacemacs-emacs-min-version) - (load-file (concat (file-name-directory load-file-name) - "core/core-load-paths.el")) - (require 'core-spacemacs) - (spacemacs/init) - (spacemacs/maybe-install-dotfile) - (configuration-layer/sync) - (spacemacs-buffer/display-info-box) - (spacemacs/setup-startup-hook) - (require 'server) - (unless (server-running-p) (server-start))) diff --git a/.fonts.conf b/.fonts.conf deleted file mode 120000 index 20d11f6..0000000 --- a/.fonts.conf +++ /dev/null @@ -1 +0,0 @@ -/home/barak/.config/fontconfig/fonts.conf \ No newline at end of file diff --git a/.gitignore b/.gitignore deleted file mode 100644 index b25c15b..0000000 --- a/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*~ diff --git a/.local/share/fonts b/.local/share/fonts deleted file mode 120000 index fe8ce3a..0000000 --- a/.local/share/fonts +++ /dev/null @@ -1 +0,0 @@ -/home/barak/.fonts \ No newline at end of file diff --git a/.nvim b/.nvim deleted file mode 120000 index 8355b52..0000000 --- a/.nvim +++ /dev/null @@ -1 +0,0 @@ -.vim \ No newline at end of file diff --git a/.nvimrc b/.nvimrc deleted file mode 120000 index 1490f7a..0000000 --- a/.nvimrc +++ /dev/null @@ -1 +0,0 @@ -.vimrc \ No newline at end of file diff --git a/.tmux.conf b/.tmux.conf deleted file mode 100644 index 28d15df..0000000 --- a/.tmux.conf +++ /dev/null @@ -1,41 +0,0 @@ -set -g prefix C-a -unbind C-b -bind-key C-o last-window -bind-key C-a select-pane -t :.+ -bind-key a send-prefix -bind-key j select-pane -D -bind-key k select-pane -U -bind-key h select-pane -L -bind-key l select-pane -R -bind-key C-n next-window -bind-key C-p previous-window -set -g set-titles off -set -g default-terminal xterm-256color -setw -g mode-keys vi -new -d - - -# shift-movement keys will resize panes -bind -r H resize-pane -L 5 -bind -r J resize-pane -D 5 -bind -r K resize-pane -U 5 -bind -r L resize-pane -R 5 - -# better mnemonics for splitting panes! -bind | split-window -h -bind - split-window -v - -# Status Bar -set -g status-bg black -set -g status-fg white -set -g status-interval 1 -set -g status-left '#[fg=green]#H#[default]' -set -g status-left-length 20 -set -g status-right '#[fg=green]#(~/src/tpom/tpom) #[fg=cyan,bold]%Y-%m-%d %H:%M:%S#[default]' - -# Notifying if other windows has activities -setw -g monitor-activity on -set -g visual-activity on - -# Highlighting the active window in status bar -setw -g window-status-current-bg red diff --git a/.vim/init.vim b/.vim/init.vim deleted file mode 120000 index 4d1e87b..0000000 --- a/.vim/init.vim +++ /dev/null @@ -1 +0,0 @@ -/home/barak/.vimrc \ No newline at end of file diff --git a/.vim/plugin/slime.vim b/.vim/plugin/slime.vim deleted file mode 100644 index 940c349..0000000 --- a/.vim/plugin/slime.vim +++ /dev/null @@ -1,32 +0,0 @@ - -"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" - -function Send_to_Screen(text) - if !exists("g:screen_sessionname") || !exists("g:screen_windowname") - call Screen_Vars() - end - - echo system("screen -S " . g:screen_sessionname . " -p " . g:screen_windowname . " -X stuff '" . substitute(a:text, "'", "'\\\\''", 'g') . "'") -endfunction - -function Screen_Session_Names(A,L,P) - return system("screen -ls | awk '/Attached/ {print $1}'") -endfunction - -function Screen_Vars() - if !exists("g:screen_sessionname") || !exists("g:screen_windowname") - let g:screen_sessionname = "" - let g:screen_windowname = "0" - end - - let g:screen_sessionname = input("session name: ", "", "custom,Screen_Session_Names") - let g:screen_windowname = input("window name: ", g:screen_windowname) -endfunction - -"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" - -vmap "ry :call Send_to_Screen(@r) -nmap vip - -nmap v :call Screen_Vars() - diff --git a/.vim/plugin/supertab.vim b/.vim/plugin/supertab.vim deleted file mode 100644 index cda61bd..0000000 --- a/.vim/plugin/supertab.vim +++ /dev/null @@ -1,501 +0,0 @@ -" Author: -" Original: Gergely Kontra -" Current: Eric Van Dewoestine (as of version 0.4) -" Please direct all correspondence to Eric. -" Version: 0.51 -" -" Description: {{{ -" Use your tab key to do all your completion in insert mode! -" You can cycle forward and backward with the and keys -" Note: you must press once to be able to cycle back -" -" http://www.vim.org/scripts/script.php?script_id=1643 -" }}} -" -" License: {{{ -" Software License Agreement (BSD License) -" -" Copyright (c) 2002 - 2009 -" All rights reserved. -" -" Redistribution and use of this software in source and binary forms, with -" or without modification, are permitted provided that the following -" conditions are met: -" -" * Redistributions of source code must retain the above -" copyright notice, this list of conditions and the -" following disclaimer. -" -" * Redistributions in binary form must reproduce the above -" copyright notice, this list of conditions and the -" following disclaimer in the documentation and/or other -" materials provided with the distribution. -" -" * Neither the name of Gergely Kontra or Eric Van Dewoestine nor the names -" of its contributors may be used to endorse or promote products derived -" from this software without specific prior written permission of Gergely -" Kontra or Eric Van Dewoestine. -" -" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -" IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -" THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -" CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -" EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -" PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -" PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -" LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -" NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -" SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -" }}} -" -" Testing Info: {{{ -" Running vim + supertab with the absolute bar minimum settings: -" $ vim -u NONE -U NONE -c "set nocp | runtime plugin/supertab.vim" -" }}} - -if v:version < 700 - finish -endif - -if exists('complType') " Integration with other completion functions. - finish -endif - -" Global Variables {{{ - - " Used to set the default completion type. - " There is no need to escape this value as that will be done for you when - " the type is set. - " Ex. let g:SuperTabDefaultCompletionType = "" - " - " Note that a special value of 'context' is supported which will result in - " super tab attempting to use the text preceding the cursor to decide which - " type of completion to attempt. Currently super tab can recognize method - " calls or attribute references via '.', '::' or '->', and file path - " references containing '/'. - " Ex. let g:SuperTabDefaultCompletionType = 'context' - " /usr/l # will use filename completion - " myvar.t # will use user completion if completefunc set, or omni - " # completion if omnifunc set. - " myvar-> # same as above - " - " When using context completion, super tab will fall back to a secondary - " default completion type set by g:SuperTabContextDefaultCompletionType. - if !exists("g:SuperTabDefaultCompletionType") - let g:SuperTabDefaultCompletionType = "" - endif - - " Sets the default completion type used when g:SuperTabDefaultCompletionType - " is set to 'context' and the text preceding the cursor does not match any - " patterns mapped to other specific completion types. - if !exists("g:SuperTabContextDefaultCompletionType") - let g:SuperTabContextDefaultCompletionType = "" - endif - - " When 'context' completion is enabled, this setting can be used to fallback - " to g:SuperTabContextDefaultCompletionType as the default for files whose - " file type occurs in this configured list. This allows you to provide an - " exclusion for which 'context' completion is not activated. - if !exists("g:SuperTabContextFileTypeExclusions") - let g:SuperTabContextFileTypeExclusions = [] - endif - - " Used to set a list of variable, completion type pairs used to determine - " the default completion type to use for the current buffer. If the - " variable is non-zero and non-empty then the associated completion type - " will be used. - " Ex. To use omni or user completion when available, but fall back to the - " global default otherwise: - " let g:SuperTabDefaultCompletionTypeDiscovery = [ - " \ "&completefunc:", - " \ "&omnifunc:", - " \ ] - if !exists("g:SuperTabDefaultCompletionTypeDiscovery") - let g:SuperTabDefaultCompletionTypeDiscovery = [] - endif - - " Determines if, and for how long, the current completion type is retained. - " The possible values include: - " 0 - The current completion type is only retained for the current completion. - " Once you have chosen a completion result or exited the completion - " mode, the default completion type is restored. - " 1 - The current completion type is saved for the duration of your vim - " session or until you enter a different completion mode. - " (SuperTab default). - " 2 - The current completion type is saved until you exit insert mode (via - " ESC). Once you exit insert mode the default completion type is - " restored. - if !exists("g:SuperTabRetainCompletionType") - let g:SuperTabRetainCompletionType = 1 - endif - - " Sets whether or not mid word completion is enabled. - " When enabled, will kick off completion when ever a word character is - " to the left of the cursor. When disabled, completion will only occur if - " the char to the left is a word char and the char to the right is not (you - " are at the end of the word). - if !exists("g:SuperTabMidWordCompletion") - let g:SuperTabMidWordCompletion = 1 - endif - - " The following two variables allow you to set the key mapping used to kick - " off the current completion. By default this is and . To - " change to something like and , you can add the - " following to your vimrc. - " - " let g:SuperTabMappingForward = '' - " let g:SuperTabMappingBackward = '' - " - " Note: if the above does not have the desired effect (which may happen in - " console version of vim), you can try the following mappings. Although the - " backwards mapping still doesn't seem to work in the console for me, your - " milage may vary. - " - " let g:SuperTabMappingForward = '' - " let g:SuperTabMappingBackward = '' - " - if !exists("g:SuperTabMappingForward") - let g:SuperTabMappingForward = '' - endif - if !exists("g:SuperTabMappingBackward") - let g:SuperTabMappingBackward = '' - endif - - " Sets the key mapping used to insert a literal tab where supertab would - " otherwise attempt to kick off insert completion. - " The default is '' (ctrl-tab) which unfortunately might not work at - " the console. So if you are using a console vim and want this - " functionality, you'll have to change it to something that is supported. - if !exists("g:SuperTabMappingTabLiteral") - let g:SuperTabMappingTabLiteral = '' - endif - - " Sets whether or not to pre-highlight first match when completeopt has - " the popup menu enabled and the 'longest' option as well. - " When enabled, will kick off completion and pre-select the first - " entry in the popup menu, allowing you to simply hit to use it. - if !exists("g:SuperTabLongestHighlight") - let g:SuperTabLongestHighlight = 0 - endif - -" }}} - -" Script Variables {{{ - - " construct the help text. - let s:tabHelp = - \ "Hit or CTRL-] on the completion type you wish to switch to.\n" . - \ "Use :help ins-completion for more information.\n" . - \ "\n" . - \ "|| - Keywords in 'complete' searching down.\n" . - \ "|| - Keywords in 'complete' searching up (SuperTab default).\n" . - \ "|| - Whole lines.\n" . - \ "|| - Keywords in current file.\n" . - \ "|| - Keywords in 'dictionary'.\n" . - \ "|| - Keywords in 'thesaurus', thesaurus-style.\n" . - \ "|| - Keywords in the current and included files.\n" . - \ "|| - Tags.\n" . - \ "|| - File names.\n" . - \ "|| - Definitions or macros.\n" . - \ "|| - Vim command-line.\n" . - \ "|| - User defined completion.\n" . - \ "|| - Omni completion.\n" . - \ "|s| - Spelling suggestions." - - " set the available completion types and modes. - let s:types = - \ "\\\\\\\\" . - \ "\\\\\\\\\s" - let s:modes = '/^E/^Y/^L/^N/^K/^T/^I/^]/^F/^D/^V/^P/^U/^O/s' - let s:types = s:types . "np" - let s:modes = s:modes . '/n/p' - -" }}} - -" CtrlXPP() {{{ -" Handles entrance into completion mode. -function! CtrlXPP() - if &smd - echo '' | echo '-- ^X++ mode (' . s:modes . ')' - endif - let complType = nr2char(getchar()) - if stridx(s:types, complType) != -1 - if stridx("\\", complType) != -1 " no memory, just scroll... - return "\" . complType - elseif stridx('np', complType) != -1 - let complType = nr2char(char2nr(complType) - 96) - else - let complType = "\" . complType - endif - - if g:SuperTabRetainCompletionType - let b:complType = complType - endif - - " Hack to workaround appent bug when invoking command line completion via - " = - if complType == "\\" - return s:CommandLineCompletion() - endif - - return complType - endif - - echohl "Unknown mode" - return complType -endfunction " }}} - -" SuperTabSetCompletionType(type) {{{ -" Globally available function that user's can use to create mappings to -" quickly switch completion modes. Useful when a user wants to restore the -" default or switch to another mode without having to kick off a completion -" of that type or use SuperTabHelp. -" Example mapping to restore SuperTab default: -" nmap :call SetSuperTabCompletionType("") -function! SuperTabSetCompletionType(type) - exec "let b:complType = \"" . escape(a:type, '<') . "\"" -endfunction " }}} - -" s:Init {{{ -" Global initilization when supertab is loaded. -function! s:Init() - augroup supertab_init - autocmd! - autocmd BufEnter * call InitBuffer() - augroup END - - " ensure InitBuffer gets called for the first buffer, after the ftplugins - " have been called. - augroup supertab_init_first - autocmd! - autocmd FileType call InitBuffer() - augroup END - - " Setup mechanism to restore orignial completion type upon leaving insert - " mode if g:SuperTabRetainCompletionType == 2 - if g:SuperTabRetainCompletionType == 2 - augroup supertab_retain - autocmd! - autocmd InsertLeave * call s:SetDefaultCompletionType() - augroup END - endif -endfunction " }}} - -" s:InitBuffer {{{ -" Per buffer initilization. -function! s:InitBuffer() - if exists("b:complType") - return - endif - - " init hack for workaround. - let b:complCommandLine = 0 - - if !exists("b:SuperTabDefaultCompletionType") - " loop through discovery list to find the default - if !empty(g:SuperTabDefaultCompletionTypeDiscovery) - " backward compatiability with old string value. - if type(g:SuperTabDefaultCompletionTypeDiscovery) == 1 - let dlist = split(g:SuperTabDefaultCompletionTypeDiscovery, ',') - else - let dlist = g:SuperTabDefaultCompletionTypeDiscovery - endif - for pair in dlist - let var = substitute(pair, '\(.*\):.*', '\1', '') - let type = substitute(pair, '.*:\(.*\)', '\1', '') - exec 'let value = ' . var - if value !~ '^\s*$' && value != '0' - let b:SuperTabDefaultCompletionType = type - break - endif - endfor - endif - - " fallback to configured default. - if !exists("b:SuperTabDefaultCompletionType") - let b:SuperTabDefaultCompletionType = g:SuperTabDefaultCompletionType - endif - endif - - " set the default completion type. - call SuperTabSetCompletionType(b:SuperTabDefaultCompletionType) -endfunction " }}} - -" s:SetCompletionType() {{{ -" Sets the completion type based on what the user has chosen from the help -" buffer. -function! s:SetCompletionType() - let chosen = substitute(getline('.'), '.*|\(.*\)|.*', '\1', '') - if chosen != getline('.') - let winnr = b:winnr - close - exec winnr . 'winc w' - call SuperTabSetCompletionType(chosen) - endif -endfunction " }}} - -" s:SetDefaultCompletionType() {{{ -function! s:SetDefaultCompletionType() - if exists('b:SuperTabDefaultCompletionType') && !b:complCommandLine - call SuperTabSetCompletionType(b:SuperTabDefaultCompletionType) - endif -endfunction " }}} - -" s:SuperTab(command) {{{ -" Used to perform proper cycle navigation as the user requests the next or -" previous entry in a completion list, and determines whether or not to simply -" retain the normal usage of based on the cursor position. -function! s:SuperTab(command) - if s:WillComplete() - " rare case where no autocmds have fired for this buffer to initialize the - " supertab vars. - call s:InitBuffer() - - let key = '' - " highlight first result if longest enabled - if g:SuperTabLongestHighlight && !pumvisible() && &completeopt =~ 'longest' - let key = (b:complType == "\") ? "\" : "\" - endif - - " exception: if in mode, then should move up the list, and - " down the list. - if a:command == 'p' && - \ (b:complType == "\" || - \ (b:complType == 'context' && - \ tolower(g:SuperTabContextDefaultCompletionType) == '')) - return "\" - endif - - if b:complType == 'context' - if index(g:SuperTabContextFileTypeExclusions, &ft) == -1 - let curline = getline('.') - let cnum = col('.') - let synname = synIDattr(synID(line('.'), cnum - 1, 1), 'name') - if curline =~ '.*/\w*\%' . cnum . 'c' || - \ ((has('win32') || has('win64')) && curline =~ '.*\\\w*\%' . cnum . 'c') - return "\\" . key - elseif curline =~ '.*\(\w\|[\])]\)\(\.\|::\|->\)\w*\%' . cnum . 'c' && - \ synname !~ '\(String\|Comment\)' - if &completefunc != '' - return "\\" . key - elseif &omnifunc != '' - return "\\" . key - endif - endif - endif - exec "let complType = \"" . escape(g:SuperTabContextDefaultCompletionType, '<') . "\"" - return complType . key - endif - - " Hack to workaround appent bug when invoking command line completion via - " = - if b:complType == "\\" - return s:CommandLineCompletion() - endif - return b:complType . key - endif - - return "\" -endfunction " }}} - -" s:SuperTabHelp() {{{ -" Opens a help window where the user can choose a completion type to enter. -function! s:SuperTabHelp() - let winnr = winnr() - if bufwinnr("SuperTabHelp") == -1 - botright split SuperTabHelp - - setlocal noswapfile - setlocal buftype=nowrite - setlocal bufhidden=delete - - let saved = @" - let @" = s:tabHelp - silent put - call cursor(1, 1) - silent 1,delete - call cursor(4, 1) - let @" = saved - exec "resize " . line('$') - - syntax match Special "|.\{-}|" - - setlocal readonly - setlocal nomodifiable - - nmap :call SetCompletionType() - nmap :call SetCompletionType() - else - exec bufwinnr("SuperTabHelp") . "winc w" - endif - let b:winnr = winnr -endfunction " }}} - -" s:WillComplete() {{{ -" Determines if completion should be kicked off at the current location. -function! s:WillComplete() - let line = getline('.') - let cnum = col('.') - - " Start of line. - let prev_char = strpart(line, cnum - 2, 1) - if prev_char =~ '^\s*$' - return 0 - endif - - " Within a word, but user does not have mid word completion enabled. - let next_char = strpart(line, cnum - 1, 1) - if !g:SuperTabMidWordCompletion && next_char =~ '\k' - return 0 - endif - - " In keyword completion mode and no preceding word characters. - "if (b:complType == "\" || b:complType == "\") && prev_char !~ '\k' - " return 0 - "endif - - return 1 -endfunction " }}} - -" s:CommandLineCompletion() {{{ -" Hack needed to account for apparent bug in vim command line mode completion -" when invoked via = -function! s:CommandLineCompletion() - " This hack will trigger InsertLeave which will then invoke - " s:SetDefaultCompletionType. To prevent default completion from being - " restored prematurely, set an internal flag for s:SetDefaultCompletionType - " to check for. - let b:complCommandLine = 1 - return "\\:call feedkeys('\\\', 'n') | " . - \ "let b:complCommandLine = 0\" -endfunction " }}} - -" Key Mappings {{{ - " map a regular tab to ctrl-tab (note: doesn't work in console vim) - exec 'inoremap ' . g:SuperTabMappingTabLiteral . ' ' - - imap =CtrlXPP() - - " From the doc |insert.txt| improved - exec 'imap ' . g:SuperTabMappingForward . ' ' - exec 'imap ' . g:SuperTabMappingBackward . ' ' - - " After hitting , hitting it once more will go to next match - " (because in XIM mode and mappings are ignored) - " and wont start a brand new completion - " The side effect, that in the beginning of line and inserts a - " , but I hope it may not be a problem... - inoremap =SuperTab('n') - inoremap =SuperTab('p') -" }}} - -" Command Mappings {{{ - if !exists(":SuperTabHelp") - command SuperTabHelp :call SuperTabHelp() - endif -" }}} - -call s:Init() - -" vim:ft=vim:fdm=marker diff --git a/.vimrc b/.vimrc deleted file mode 100644 index e829aa8..0000000 --- a/.vimrc +++ /dev/null @@ -1,651 +0,0 @@ - " ___ _ _ _ -" | _ ) __ _ _ _ __ _| |_( )___ __ _(_)_ __ _ _ __ -" | _ \/ _` | '_/ _` | / //(_-< \ V / | ' \| '_/ _| -" |___/\__,_|_| \__,_|_\_\ /__/ (_)_/|_|_|_|_|_| \__| -" -" -" ** BASIC EDITOR SETTINGS ** -" -" First, we are vim, not vi, so start as many others do with -set nocompatible - -" Allow background buffers. Super important for various tab modes. -set hidden - -" Set default spacing. -" Hard tabs should show as 8. -set ts=8 -" Soft tabs should be 2 wide, and we should use spaces. -" (This is the Googler in me. I've converted to spaces over -" the years because it really is more consistent.) -set softtabstop=2 -set shiftwidth=2 -set expandtab -" I like comma instead of slash, but that probably comes from playing -" Nethack and Angband -let mapleader = "," -let maplocalleader = "\\" - -" Set 'smart' things in Vim -" Search case insensitive, unless it contains Uppercase letters -set smartcase -" Use all the indent features -set autoindent -set smartindent -set cindent -" Make backspace remove indents and line breaks, like a normal editor -set backspace=indent,eol,start - -" Keep a bigger history -set history=1000 -" Allow tab completion for files in command mode. -set wildmenu -set wildmode=list:longest -" Show where you are in the file in the statusbar. -set ruler - -" I hate split above, so make it split below. Likewise, to the right. -set splitbelow -" For autocomplete, show a menu, show it when there's only one option, -" and only complete the longest common bit instead of the whole thing (like -" bash). -set completeopt=menu,menuone,longest - -" Some stuff for 256-Color consoles that I've forgotten. -set t_Co=256 -set t_Sf=ESC[3%dm -set t_Sb=ESC[4%dm -"set t_kb= - -" This is like HiglightTooLongLines below, but for modern vim. The problem is -" that it highlights the column, even if your short. Good for measuring, bad for -" my eyes. -"if v:version >= 703 - "set relativenumber - "set colorcolumn=81 -"endif -" ** PATH SETTINGS ** - -let $RUST_SRC_PATH="/usr/src/rust/src/" - -"let g:ft_ignore_pat = '.org' - -" Required: -set runtimepath+=/home/barak/.vim/bundle/repos/github.com/Shougo/dein.vim - -" Required: -call plug#begin('/home/barak/.vim/bundle') - -Plug '/home/barak/.vim/bundle/repos/github.com/Shougo/dein.vim' -Plug 'vim-scripts/DrawIt' -Plug 'tpope/vim-speeddating' -Plug 'vim-scripts/EasyGrep' -Plug 'chrisbra/NrrwRgn' -Plug 'hsitz/VimOrganizer' -Plug 'mattn/calendar-vim' -Plug 'sjbach/lusty' -Plug 'scrooloose/nerdcommenter' -Plug 'scrooloose/nerdtree' -Plug 'rstacruz/sparkup' -Plug 'scrooloose/syntastic' -Plug 'tpope/vim-fugitive' -Plug 'airblade/vim-gitgutter' -Plug 'lunaru/vim-less' -"Plug 'terryma/vim-multiple-cursors' -Plug 'tpope/vim-unimpaired' -"Plug 'Valloric/YouCompleteMe' -Plug 'Shougo/deoplete.nvim' -Plug 'zchee/deoplete-go', {'build': {'unix': 'make'}} -Plug 'zchee/deoplete-jedi' -Plug 'b4winckler/vim-angry' -Plug 'tristen/vim-sparkup' -Plug 'vim-airline/vim-airline' -Plug 'vim-airline/vim-airline-themes' -Plug 'kien/ctrlp.vim' -Plug 'bling/vim-bufferline' -Plug 'majutsushi/tagbar' -Plug 'eagletmt/neco-ghc', {'for': 'haskell'} -Plug 'eagletmt/ghcmod-vim', {'for': 'haskell'} -Plug 'Shougo/vimproc.vim' -Plug 'Shougo/vimfiler.vim' -Plug 'Shougo/unite.vim' -Plug 'SirVer/ultisnips' -Plug 'honza/vim-snippets' -Plug 'tpope/vim-surround' -"Plug 'farseer90718/vim-taskwarrior' -Plug 'fatih/vim-go' -"Plug 't-yuki/vim-go-coverlay' -Plug 'tpope/vim-abolish' -Plug 'hylang/vim-hy' -Plug 'jiangmiao/auto-pairs' -Plug 'racer-rust/vim-racer', {'for': 'rust'} -Plug 'let-def/vimbufsync' -"Plug 'lucas8/coquille', {'branch': 'error_on_coq_error', 'for': 'coq'} -Plug 'whonore/coquille', {'branch': 'pathogen-bundle', 'for': 'coq'} - -Plug 'mhartington/nvim-typescript' - -Plug 'sheerun/vim-polyglot' -Plug 'Shougo/denite.nvim' -"Plug 'vim-scripts/fish-syntax' -"Plug 'kchmck/vim-coffee-script' -"Plug 'rodjek/vim-puppet' -"Plug 'JuliaLang/julia-vim' -"Plug 'rust-lang/rust.vim' -"Plug 'hashivim/vim-terraform' -"Plug 'HerringtonDarkholme/yats.vim' -Plug 'tpope/vim-fireplace' -Plug 'junegunn/vim-easy-align' - -call plug#end() - - -"NeoBundle 'eclim' -"https://git.wincent.com/command-t.git -filetype plugin indent on " required -syntax enable - -"filetype plugin indent on -" If you prefer the Omni-Completion tip window to close when a selection is -" made, these lines close it on movement in insert mode or when leaving -" insert mode -autocmd CursorMovedI * if pumvisible() == 0|pclose|endif -autocmd InsertLeave * if pumvisible() == 0|pclose|endif - -" Sources -"source ~/.vim/supertab.vim -"source ~/.vim/charm.vim -"source ~/.vim/plugin/AppleT.vim -runtime macros/matchit.vim - -" Completion features (TODO: Add to filetype.vim) -autocmd FileType ruby,eruby set omnifunc=rubycomplete#Complete -autocmd FileType python set tags+=$HOME/.vim/tags/python.ctags -"autocmd FileType python set omnifunc=pythoncomplete#Complete -"autocmd FileType python call SuperTabSetCompletionType("") - -" Set filetype for VimOrganizer -au! BufRead,BufWrite,BufWritePost,BufNewFile *.org -au BufEnter *.org call org#SetOrgFileType() - -"au! BufRead,BufWrite,BufWritePost,BufNewFile *.org -"au BufEnter *.org call org#SetOrgFileType() -command! OrgCapture :call org#CaptureBuffer() -command! OrgCaptureFile :call org#OpenCaptureFile() - -" Cull trailing whitespace for all files. -autocmd BufWritePre * :call AutoTrimWhitespace() - -" Set syntax and highlighting -syntax on -" baraknew is my own colorscheme. I used to use slate or dante. -colorscheme baraknew -"colorscheme slate -"colorscheme dante - -" Turn on the cursorline (highlight on line under cursor) but only for the -" window and buffer you're currently in. A handy trick, I'm trying out as of -" 2013-04-12 but the jury is still out. -autocmd BufEnter * setlocal cursorline -autocmd WinEnter * setlocal cursorline -autocmd WinLeave * setlocal nocursorline -setlocal cursorline - - -" ** PLUGIN CONFIGURATION ** -" -let g:deoplete#enable_at_startup = 1 -" * Vim general/Unknown -let python_highlight_all = 1 -let g:Tb_MaxSize=0 -let g:Tb_MapCTabSwitchBufs = 1 -let g:UseGooglePythonSettings = 0 - -" * Eclim -let g:EclimCompletionMethod = 'omnifunc' - -" * Syntastic -let g:syntastic_python_checkers = ['python', 'pylint'] -let g:syntastic_go_checkers=['go', 'govet', 'govetshadow', 'golintc'] -let g:syntastic_always_populate_loc_list = 1 -let g:syntastic_auto_loc_list = 2 -let g:syntastic_loc_list_height = 10 -" E111 = Spaces should be multiples of 4. I use 2. - -" * Configure browser for haskell_doc.vim -let g:haddock_browser = "open" -let g:haddock_browser_callformat = "%s %s" - -" * Lusty plugins -let g:LustyExplorerSuppressRubyWarning = 1 -let g:LustyJugglerSuppressRubyWarning = 1 -let g:LustyJugglerShowKeys = 'a' - -" * Buftabs -let g:buftabs_only_basename = 1 -"let g:buftabs_in_statusline=1 - -" Bufferline -let g:bufferline_echo = 0 -let g:bufferline_modified = '+' -let g:bufferline_show_bufnr = 1 -let g:bufferline_rotate = 1 - -" * NERDTree -"let g:NERDChristmasTree = 1 -"let g:NERDChristmasTree = 1 -let g:NERDTreeQuitOnOpen = 1 -let g:NERDTreeWinPos = "right" -let g:NERDTreeWinSize = 40 -let g:NERDTreeDirArrows=0 - -let g:NERDTreeMarkBookmarks = 0 -let g:NERDTreeMinimalUI = 1 - -" * VimFiler -let g:vimfiler_tree_indentation = 2 - -" * Tagbar plugin settings -let g:tagbar_width = 40 -let g:tagbar_autofocus = 1 -let g:tagbar_autoclose = 1 -let g:tagbar_compact = 1 - -" * Taglist plugin settings (deprecated) -let Tlist_GainFocus_On_ToggleOpen = 1 -let Tlist_Use_Right_Window = 1 -let Tlist_Inc_Winwidth = 0 -let Tlist_File_Fold_Auto_Close = 1 -let Tlist_WinWidth = 40 -let Tlist_Show_One_File = 0 - -" * ConqueTerm -let g:ConqueTerm_CWInsert = 1 -let g:ConqueTerm_InsertOnEnter = 0 -let g:ConqueTerm_SendVisKey = 'ss' - -" * YouCompleteMe -let g:ycm_global_ycm_extra_conf = '~/.ycm_extra_conf.py' -let g:ycm_confirm_extra_conf = 0 -let g:ycm_key_invoke_completion = "" -let g:ycm_use_ultisnips_completer = 1 -"let g:ycm_add_preview_to_completeopt = 1 -"let g:ycm_autoclose_preview_window_after_completion = 1 - -" * UltiSnips -let g:UltiSnipsSnippetDirectories=["UltiSnips", "usnips"] -let g:UltiSnipsExpandTrigger="," -let g:UltiSnipsJumpForwardTrigger="," -let g:UltiSnipsJumpBackwardTrigger="" - -" * MinBufExplorer -"let g:miniBufExplMapWindowNavVim = 1 -"let g:miniBufExplMapWindowNavArrows = 1 -"let g:miniBufExplMapCTabSwitchBufs = 1 -"let g:miniBufExplModSelTarget = 1 -"let g:miniBufExplForceSyntaxEnable = 1 - -" * CommandT -let g:CommandTMaxFiles = 1000 -let g:CommandTMaxDepth = 7 - -" * VimOrganizer -" default Tag list. Will be changed in near future so -" that these are defined by config lines in each .org -" file itself, but now these are where you can change things: -" let g:org_todo_setup='TODO | DONE' -" while g:org_tag_setup is itself a string -"let g:org_tag_setup='{@home(h) @work(w) @tennisclub(t)} \n {easy(e) hard(d)} \n {computer(c) phone(p)}' -"au! BufRead,BufWrite,BufWritePost,BufNewFile *.org -"au BufEnter *.org call org#SetOrgFileType() - -" * Airline -set noshowmode -let g:airline#extensions#branch#enabled = 1 -let g:airline#extensions#syntastic#enabled = 1 -let g:airline#extensions#tagbar#enabled = 1 -let g:airline_theme="murmur" -let g:airline_left_sep = '' -let g:airline_right_sep = '' -let g:airline#extensions#syntastic#enabled = 1 -let g:airline#extensions#hunks#non_zero_only = 1 -let g:airline#extensions#whitespace#enabled = 0 -let g:airline_mode_map = { - \ '__' : '-', - \ 'n' : 'N', - \ 'i' : 'I', - \ 'R' : 'R', - \ 'c' : 'C', - \ 'v' : 'V', - \ 'V' : 'V', - \ '' : 'V', - \ 's' : 'S', - \ 'S' : 'S', - \ '' : 'S', - \ } - - -" * CtrlP -let g:ctrlp_map = ',t' -let g:ctrlp_cmd = 'CtrlP' -let g:ctrlp_working_path_mode = 'ra' -let g:ctrlp_match_window = 'bottom,order:ttb,min:1,max:15' - -" * Vim-Go -let g:go_fmt_command = "goimports" -let g:go_auto_type_info = 1 -let g:go_updatetime = 300 -"let g:go_bin_path = "$HOME/.go/bin" - - -" ** STATUSLINE ** -" -set laststatus=2 -set statusline=%t "tail of the filename -"set statusline+=[%{&ff}] "file format -"set statusline+=%h "help file flag -set statusline+=\ %w "help file flag -set statusline+=%r "read only flag -set statusline+=%y "filetype -set statusline+=\ %m "modified flag -set statusline+=%= "left/right separator -set statusline+=%{fugitive#statusline()}\ \ -set statusline+=%c, "cursor column -set statusline+=%l/%L "cursor line/total lines -set statusline+=\ %P "percent through file - -" ** SMALL FUNCTIONS THAT DON'T FIT AS PLUGINS *** - -" Add capital W so I can be lazy about my shift key -if !exists(":W") - command W :w -endif - -" CD to the path of the file I'm editing. -command Cdf :cd %:p:h - -" Save a vim session! Useful if you want to save buffer states and so on -command SaveSession :mksession! ~/.vim_last_session -command LoadSession :source ~/.vim_last_session - -" This is a quick way to edit a persistent scratch buffer for me... -command ScratchOpen :e scp://barak@barakmich.com//home/barak/notes/scratch - -" Sudo-make-me-a-sandwich write. For when I forget to be root. -command Wdammit :w !sudo tee > /dev/null % - -" I can never remember markdown fully. Open me a cheatsheet -command MarkdownCheatsheet :rightb vsplit ~/.vim/markdown_cheatsheet.md - - -" Doesn't quite work right but can be a real savior if needed. -" Oh-shit-what-was-this-like-before-I-changed-it? -function! s:DiffWithSaved() - let filetype=&ft - diffthis - vnew | r # | normal! 1Gdd - diffthis - exe "setlocal bt=nofile bh=wipe nobl noswf ro ft=" . filetype -endfunction -com! DiffSaved call s:DiffWithSaved() - -" Highlight lines that are longer than textwidth for the filetype, commonly 80 -" characters. -function! HighlightTooLongLines() - highlight def link RightMargin Error - if &textwidth != 0 - exec 'match RightMargin /\%<' . (&textwidth + 3) . 'v.\%>' . (&textwidth + 1) . 'v/' - endif -endfunction - -" Toggles the quickfix window split. -command -bang -nargs=? QFix call QFixToggle(0) -function! QFixToggle(forced) - if exists("g:qfix_win") && a:forced == 0 - cclose - else - execute "copen " . 15 - endif -endfunction - -" Toggle LocationList -command -bang -nargs=? LFix call LFixToggle(0) -function! LFixToggle(forced) - if exists("g:lfix_win") && a:forced == 0 - unlet! g:lfix_win - lclose - else - execute "lopen " . 10 - let g:lfix_win = "t" - endif -endfunction - -"au FileType go nmap C (go-clearlay) -"clear overlay -command -bang -nargs=? GoCoverlayT call GoCoverlayToggle(0) -function! GoCoverlayToggle(forced) - if exists("g:go_coverlay_t") && a:forced == 0 - unlet! g:go_coverlay_t - GoClearlay - "call (go-clearlay) - else - "call (go-coverlay) - GoCoverlay - let g:go_coverlay_t = "t" - endif -endfunction - - -" Toggle GoCoverlay -au FileType go nmap c :GoCoverlayT - -" Coquille -au FileType coq nmap a :CoqToCursor -au FileType coq imap a :CoqToCursor - -" Make the Quickfix window respond well to commands (for instance, q to close, -" Enter to select, etc). In tandem with the above. -augroup QFixToggle - autocmd! - autocmd BufWinEnter quickfix let g:qfix_win = bufnr("$") - autocmd BufWinEnter quickfix exec "nnoremap q :QFix" - autocmd BufWinLeave * if exists("g:qfix_win") && expand("") == g:qfix_win | unlet! g:qfix_win | endif -augroup END - - -" Execute a command that pipes output to window. Captures output into a new, -" appropriately titled, buffer. -function! s:ExecuteInShellOutput(command) - let command = join(map(split(a:command), 'expand(v:val)')) - let winnr = bufwinnr('^' . command . '$') - silent! execute winnr < 0 ? 'botright new ' . fnameescape(command) : winnr . 'wincmd w' - setlocal buftype=nowrite bufhidden=wipe nobuflisted noswapfile wrap number - echo 'Executing ' . command . '...' - silent! execute 'silent %!'. command -" uncomment this if you want the new buffer to try to grow to accommodate the output - "silent! execute 'resize ' . line('$') - silent! redraw - silent! execute 'au BufUnload execute bufwinnr(' . bufnr('#') . ') . ''wincmd w''' - silent! execute 'nnoremap r :call ExecuteInShell(''' . command . ''')' - echo 'Execution of ' . command . ' complete.' -endfunction - -" Same as above, doesn't capture output -function! s:ExecuteInShell(command) - let command = join(map(split(a:command), 'expand(v:val)')) - silent! execute 'silent !'. command - redraw! - echo 'Execution of ' . command . ' complete.' -endfunction - -command! -complete=shellcmd -nargs=+ Shell call s:ExecuteInShellOutput() -command! -complete=shellcmd -nargs=+ Exec call s:ExecuteInShell() -command! -nargs=* Make call s:ExecuteInShellOutput('make '.) -command! -nargs=* PTW call s:ExecuteInShell('ptw post --client=vim "'..'"') - -" Highlight all instances of word under cursor, when idle. -" Useful when studying strange source code. -" Type z/ to toggle highlighting on/off. -nnoremap z/ :if AutoHighlightToggle()set hlselseset nohlsendif -function! AutoHighlightToggle() - let @/ = '' - if exists('#auto_highlight') - au! auto_highlight - augroup! auto_highlight - setl updatetime=4000 - echo 'Highlight current word: off' - return 0 - else - augroup auto_highlight - au! - au CursorHold * let @/ = '\V\<'.escape(expand(''), '\').'\>' - augroup end - setl updatetime=500 - echo 'Highlight current word: ON' - return 1 - endif -endfunction - -" Removes trailing spaces -function AutoTrimWhitespace() - if exists("b:auto_trim_whitespace") - if b:auto_trim_whitespace == 1 - let l:winview = winsaveview() - silent! %s/\s\+$// - call winrestview(l:winview) - endif - endif -endfunction - -" ** KEY REMAPPINGS ** -" -" I used to use tabs, but then I took an arrow to the knee. -" Tabs in vim suck because they aren't what you want. Use tabbar. -"nnoremap gc :tabnew -"nnoremap gK :tabclose -"nnoremap gn gt -"nnoremap gp gT - -" I don't know how I came up with gt for opening the tree, but it stuck. -"nmap gt :NERDTreeToggle -nmap gt :VimFilerExplorer -winwidth=40 -toggle -direction=rightbelow -parent -status -force-hide -" The same for the TagList, useful for large C files. -"nmap gb :TlistToggle -nmap gb :TagbarToggle -"nnoremap gx :Kwbd -" :Kwbd (defined below) really kills a buffer dead, and closes the window. -" gK is similar. -nnoremap gc :Kwbd -"nnoremap gc :bdelete -nnoremap gK :bdelete! - -" I use gn/gp to cycle through open tabs/buffers -nnoremap gn :bn -nnoremap gp :bp -nnoremap gz :pclose -" The single most handy way to get around a file. Cursor over a word, and then -" type g* -- you'll go to the next instance of that word in the file. Make it -" easier to reach by calling it gw (go-word) instead of hidden away. -nnoremap gw g* -" Make shift-p like p except, put the line above instead of below. -nmap P op -" Line-based movement is cute, but it's tricky for files with lines that wrap. -" Attune more to what you see on the screen instead of where the lines actually -" are. -nnoremap j gj -nnoremap k gk -xnoremap j gj -xnoremap k gk -nnoremap gj -nnoremap gk -xnoremap gj -xnoremap gk -inoremap gj -inoremap gk -nnoremap -" Years of using bash and zsh have caused my fingers to expect these Emacs-like -" mappings to exist. Make them exist in vim as well. But eye them with -" suspicion, as they come from Emacs. -nnoremap ^ -nnoremap $ -xnoremap ^ -xnoremap $ -inoremap ^ -inoremap $ - -" Dealing with split windows is a pain. Make it less of a pain, by making -" Ctrl-direction appropriate. -nnoremap j -nnoremap k -nnoremap l -nnoremap h -"nnoremap w -"nnoremap W -inoremap j -inoremap k -inoremap l -inoremap h - -if has('nvim') - tnoremap - tnoremap j - tnoremap k - tnoremap l - tnoremap h -endif - -" Better fold mappings -nnoremap @=(foldlevel('.')?'za':'l') -vnoremap zf -" Just to be handy, Ctrl-C acts like escape. So does jj, which never really -" comes up in practice. If you really need to type jj do so slowly. -imap -inoremap jj - -" Leader key functions -" See quickfix. -nnoremap ff :LFix -" See quickfix. -nnoremap ss :SyntasticSetLoclist -" Next quickfix. -nnoremap fn :lnext -" Prev quickfix. -nnoremap fp :lprev -nnoremap aw :DeniteCursorWord -mode=normal -buffer-name=search-buffer grep -call denite#custom#map('insert', '', '') -call denite#custom#var('grep', 'command', ['pt']) -call denite#custom#var('grep', 'default_opts', - \ ['--nogroup', '--nocolor', '--smart-case']) -call denite#custom#var('grep', 'recursive_opts', []) -call denite#custom#var('grep', 'pattern_opt', []) -call denite#custom#var('grep', 'separator', ['--']) -call denite#custom#var('grep', 'final_opts', []) -call denite#custom#option('search-buffer', 'highlight_matched_char', 'deniteMatchedChar') -nnoremap g :Denite -buffer-name=search-buffer grep -" For C++ -- A is a great plugin which allows you to jump from the c file to the -" header and vice-versa. Mneumonic here is headerheader. -nnoremap hh :A -" CommandT is useful, but if I'm juggling lots of buffers, limit it to another -" one I have open (instead of standard t). -nnoremap o :CtrlPBuffer -"nnoremap j -"nnoremap p :PTW -nnoremap p :LustyJugglePrevious -nnoremap jd :YcmCompleter GoToDefinitionElseDeclaration - -" ** EXTRA INCLUDES ** -" -let s:extrarc = expand($HOME . '/.vimrc_google') -if filereadable(s:extrarc) - exec ':so ' . s:extrarc -endif - -" ** SEE ALSO ** -" filetype.vim - -command Comments lexpr system('/home/barak/src/gogh/src/github.com/barakmich/gogh/gogh') - - -"call remote#host#RegisterPlugin('python3', '/home/barak/.vim/bundle/deoplete.nvim/rplugin/python3/deoplete', [ - "\ {'sync': v:true, 'name': '_deoplete', 'type': 'function', 'opts': {}}, - "\ ]) diff --git a/.xsession b/.xsession deleted file mode 120000 index 03280df..0000000 --- a/.xsession +++ /dev/null @@ -1 +0,0 @@ -.xinitrc \ No newline at end of file diff --git a/.zsh_profile b/.zsh_profile deleted file mode 120000 index 12f501c..0000000 --- a/.zsh_profile +++ /dev/null @@ -1 +0,0 @@ -./.zprofile \ No newline at end of file diff --git a/bin/appimage/.gitignore b/bin/appimage/.gitignore new file mode 100644 index 0000000..e005b29 --- /dev/null +++ b/bin/appimage/.gitignore @@ -0,0 +1,2 @@ +*.appimage +rust-analyzer-linux diff --git a/bin/appimage/nvim.sh b/bin/appimage/nvim.sh new file mode 100755 index 0000000..1cddbde --- /dev/null +++ b/bin/appimage/nvim.sh @@ -0,0 +1,3 @@ +#!/bin/sh +curl -LO https://github.com/neovim/neovim/releases/download/nightly/nvim.appimage +chmod +x nvim.appimage diff --git a/bin/appimage/obsidian.sh b/bin/appimage/obsidian.sh new file mode 100755 index 0000000..53e75ca --- /dev/null +++ b/bin/appimage/obsidian.sh @@ -0,0 +1,6 @@ +wget -q -O - https://api.github.com/repos/obsidianmd/obsidian-releases/releases/latest \ +| grep -i "browser_download_url.*appimage" \ +| cut -d '"' -f 4 \ +| wget -O obsidian.appimage -i - + +chmod +x obsidian.appimage diff --git a/bin/appimage/rust-analyzer.sh b/bin/appimage/rust-analyzer.sh new file mode 100755 index 0000000..1ecc0e9 --- /dev/null +++ b/bin/appimage/rust-analyzer.sh @@ -0,0 +1,3 @@ +#!/bin/sh +curl -LO https://github.com/rust-analyzer/rust-analyzer/releases/download/nightly/rust-analyzer-linux +chmod +x rust-analyzer-linux diff --git a/bin/appimage/update_all.sh b/bin/appimage/update_all.sh new file mode 100755 index 0000000..43d00d0 --- /dev/null +++ b/bin/appimage/update_all.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +./rust-analyzer.sh +./nvim.sh +./obsidian.sh diff --git a/bin/bazel-in-bear b/bin/bazel-in-bear new file mode 100755 index 0000000..1fd0873 --- /dev/null +++ b/bin/bazel-in-bear @@ -0,0 +1,4 @@ +#!/bin/sh +LIB=lib/x86_64-linux-gnu +export LD_PRELOAD=$(eval "echo ${LD_PRELOAD}") +bazel --batch "$@" --action_env=LD_PRELOAD=${LD_PRELOAD} --action_env=BEAR_OUTPUT=${BEAR_OUTPUT} --spawn_strategy=local diff --git a/bin/capture b/bin/capture new file mode 100755 index 0000000..0f28e2c --- /dev/null +++ b/bin/capture @@ -0,0 +1,48 @@ +#!/bin/bash +set -euo pipefail + +VAULT_FILE="capture.md" +VAULT_PATH="$HOME/notebook" +FILE_IN_VIEW="" +POSITIONAL=() +while [[ $# -gt 0 ]] +do +key="$1" + +case $key in + -f|--file) + VAULT_FILE="$2" + shift # past argument + shift # past value + ;; + --viewing) + FILE_IN_VIEW="$2" + shift + shift + ;; + *) # unknown option + POSITIONAL+=("$1") # save it in an array for later + shift # past argument + ;; +esac +done + +TO_PATH="${VAULT_PATH}/${VAULT_FILE}" + +cd ${VAULT_PATH} +git pull -q + +echo "" >> ${TO_PATH} +echo "##### `date`" >> ${TO_PATH} +if [ -n "${FILE_IN_VIEW}" ]; then + echo "In file _${FILE_IN_VIEW}_" >> ${TO_PATH} +fi +for s in "${POSITIONAL[@]}" # restore positional parameters +do + echo -n "${s} " >> ${TO_PATH} +done +echo "" >> TO_PATH + +git add ${TO_PATH} +git commit -q -m "capture `date +%FT%T`" +git push -q 2>&1 > /dev/null diff --git a/bin/ack b/bin/executable_ack old mode 100755 new mode 100644 similarity index 100% rename from bin/ack rename to bin/executable_ack diff --git a/bin/average b/bin/executable_average old mode 100755 new mode 100644 similarity index 100% rename from bin/average rename to bin/executable_average diff --git a/bin/executable_battery b/bin/executable_battery new file mode 100644 index 0000000..03ce28b --- /dev/null +++ b/bin/executable_battery @@ -0,0 +1,132 @@ +#!/bin/sh + +HEART_FULL=♥ +HEART_EMPTY=♡ +[ -z "$NUM_HEARTS" ] && + NUM_HEARTS=5 + +cutinate() +{ + perc=$1 + inc=$(( 100 / $NUM_HEARTS)) + + + for i in `seq $NUM_HEARTS`; do + if [ $perc -lt 100 ]; then + echo $HEART_EMPTY + else + echo $HEART_FULL + fi + perc=$(( $perc + $inc )) + done +} + +linux_get_bat () +{ + echo $(( $BAT_TOTAL / $BAT_COUNT )) +} + + +openbsd_get_bat () +{ + bf=$(sysctl -n hw.sensors.acpibat0.amphour0 | cut -d ' ' -f 1) + bn=$(sysctl -n hw.sensors.acpibat0.amphour3 | cut -d ' ' -f 1) + echo "(($bn * 100) / $bf)" | bc -l | awk -F '.' '{ print $1 }'; +} + +freebsd_get_bat () +{ + sysctl -n hw.acpi.battery.life +} + +battery_status() +{ +case $(uname -s) in + "Linux") + BATTERIES=$(ls /sys/class/power_supply | grep BAT) + BAT_COUNT=$(ls /sys/class/power_supply | grep BAT | wc -l) + [ $BAT_COUNT -eq 0 ] && return + for BATTERY in $BATTERIES; do + BAT_PATH=/sys/class/power_supply/$BATTERY + STATUS=$BAT_PATH/status + [ "$1" = `cat $STATUS` ] || [ "$1" = "" ] || return 0 + if [ -f "$BAT_PATH/energy_full" ]; then + naming="energy" + elif [ -f "$BAT_PATH/charge_full" ]; then + naming="charge" + elif [ -f "$BAT_PATH/capacity" ]; then + cat "$BAT_PATH/capacity" + return 0 + fi + BAT_PERCENT=$(( 100 * $(cat $BAT_PATH/${naming}_now) / $(cat $BAT_PATH/${naming}_full) )) + BAT_TOTAL=$(( ${BAT_TOTAL-0} + $BAT_PERCENT )) + done + linux_get_bat + ;; + "FreeBSD") + STATUS=`sysctl -n hw.acpi.battery.state` + case $1 in + "Discharging") + if [ $STATUS -eq 1 ]; then + freebsd_get_bat + fi + ;; + "Charging") + if [ $STATUS -eq 2 ]; then + freebsd_get_bat + fi + ;; + "") + freebsd_get_bat + ;; + esac + ;; + "OpenBSD") + openbsd_get_bat + ;; + "Darwin") + case $1 in + "Discharging") + ext="No";; + "Charging") + ext="Yes";; + esac + + ioreg -c AppleSmartBattery -w0 | \ + grep -o '"[^"]*" = [^ ]*' | \ + sed -e 's/= //g' -e 's/"//g' | \ + sort | \ + while read key value; do + case $key in + "MaxCapacity") + export maxcap=$value;; + "CurrentCapacity") + export curcap=$value;; + "ExternalConnected") + if [ -n "$ext" ] && [ "$ext" != "$value" ]; then + exit + fi + ;; + "FullyCharged") + if [ "$value" = "Yes" ]; then + exit + fi + ;; + esac + if [[ -n "$maxcap" && -n $curcap ]]; then + echo $(( 100 * $curcap / $maxcap )) + break + fi + done +esac +} + +BATTERY_STATUS=`battery_status $1` +[ -z "$BATTERY_STATUS" ] && exit + +if [ -n "$CUTE_BATTERY_INDICATOR" ]; then + cutinate $BATTERY_STATUS +else + echo ${BATTERY_STATUS}% +fi + diff --git a/bin/callout b/bin/executable_callout old mode 100755 new mode 100644 similarity index 100% rename from bin/callout rename to bin/executable_callout diff --git a/bin/contract b/bin/executable_contract old mode 100755 new mode 100644 similarity index 82% rename from bin/contract rename to bin/executable_contract index 4c1f2d4..f7bbeeb --- a/bin/contract +++ b/bin/executable_contract @@ -1,11 +1,11 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 import sys loadfile = sys.stdin if len(sys.argv) == 1: - print "No command to run" + print("No command to run") sys.exit(1) if len(sys.argv) == 3: @@ -26,7 +26,7 @@ def div(x,y): lis = [] for line in loadfile: - if line.strip() <> "": + if line.strip() is not "": x = float(line) lis.append(x) diff --git a/bin/cronic b/bin/executable_cronic old mode 100755 new mode 100644 similarity index 100% rename from bin/cronic rename to bin/executable_cronic diff --git a/bin/executable_gblame b/bin/executable_gblame new file mode 100644 index 0000000..be49356 --- /dev/null +++ b/bin/executable_gblame @@ -0,0 +1,63 @@ +#!/usr/bin/env python3 + +import subprocess +import sys +import os + +from typing import List, Dict, Any + +DataLine = Dict[Any, Any] + + +def grab_blame_data() -> List[DataLine]: + p = subprocess.check_output( + ["git", "blame", "--line-porcelain"] + sys.argv[1:], + encoding='utf-8', + ) + data = [] + cur = {} + p = str(p) + in_segment = False + for line in p.splitlines(): + l = line.rstrip() + if len(l) == 0: + continue + if l[0] == '\t': + cur["data"] = l[1:] + data.append(cur) + cur = {} + in_segment = False + continue + d = l.split() + if not in_segment: + cur["sha"] = d[0] + cur["sha8"] = d[0][:8] + in_segment = True + else: + cur[d[0]] = " ".join(d[1:]) + + assert in_segment is False + return data + + +FIELDS = ["sha8", "author", "summary", "data"] + + +def main() -> None: + d = grab_blame_data() + lens = {} + for f in FIELDS: + maxn = 0 + for x in d: + if len(x[f]) > maxn: + maxn = len(x[f]) + lens[f] = maxn + for x in d: + s = "" + for f in FIELDS: + s = s + x[f].ljust(lens[f]) + ' ' + print(s) + + +if __name__ == "__main__": + main() diff --git a/bin/executable_gocov.sh b/bin/executable_gocov.sh new file mode 100644 index 0000000..53c3cef --- /dev/null +++ b/bin/executable_gocov.sh @@ -0,0 +1,22 @@ +#!/bin/bash +set -euo pipefail + +POSITIONAL=() +while [[ $# -gt 0 ]] +do +key="$1" + +case $key in + *) # unknown option + POSITIONAL+=("$1") # save it in an array for later + shift # past argument + ;; +esac +done +set -- "${POSITIONAL[@]}" # restore positional parameters + +FILENAME="${POSITIONAL[0]}" + +go tool cover -html="$FILENAME" -o "$FILENAME.html" +elinks "$FILENAME.html" +rm "$FILENAME.html" diff --git a/bin/golintc b/bin/executable_golintc old mode 100755 new mode 100644 similarity index 100% rename from bin/golintc rename to bin/executable_golintc diff --git a/bin/orly b/bin/executable_orly old mode 100755 new mode 100644 similarity index 100% rename from bin/orly rename to bin/executable_orly diff --git a/bin/executable_pk b/bin/executable_pk new file mode 100644 index 0000000..a7edbdf --- /dev/null +++ b/bin/executable_pk @@ -0,0 +1,61 @@ +#!/bin/sh +search () { + shift + if command -v pacman &> /dev/null; then + pacman -Ss $1 || yay -Ss $1 + elif command -v dnf &> /dev/null; then + dnf search $1 + elif command -v port &> /dev/null; then + port search $1 + elif command -v portmaster &> /dev/null; then + cd /usr/ports + make search name=$1 | grep "^\(Port\|Path\|Info\|Moved\|$\)" + elif command -v aptitude &> /dev/null; then + aptitude search $1 + elif command -v apt-cache &> /dev/null; then + apt-cache search $1 + fi +} + +update () { + shift + if command -v pacman &> /dev/null; then + sudo pacman -Sy + elif command -v dnf &> /dev/null; then + sudo dnf update + elif command -v port &> /dev/null; then + sudo port selfupdate + elif command -v portsnap &> /dev/null; then + sudo portsnap fetch && sudo portsnap upgrade + elif command -v apt-get &> /dev/null; then + sudo apt-get update + fi +} + +install () { + shift + if command -v pacman &> /dev/null; then + sudo pacman -S $* || yay -S $* + elif command -v dnf &> /dev/null; then + sudo dnf install $* + elif command -v port &> /dev/null; then + sudo port install $* + elif command -v portmaster &> /dev/null; then + sudo portmaster $* + elif command -v apt-get &> /dev/null; then + sudo apt-get install $* + fi +} + +case $1 +in + "i" | "install") + install $*;; + + "s" | "search") + search $*;; + + "u" | "update") + update $*;; +esac + diff --git a/bin/theyfightcrime b/bin/executable_theyfightcrime old mode 100755 new mode 100644 similarity index 100% rename from bin/theyfightcrime rename to bin/executable_theyfightcrime diff --git a/bin/vi b/bin/executable_vi old mode 100755 new mode 100644 similarity index 61% rename from bin/vi rename to bin/executable_vi index faeface..fe58154 --- a/bin/vi +++ b/bin/executable_vi @@ -2,7 +2,7 @@ export TERM=xterm-256color if [ -n "`which nvim`" ]; then - nvim "$@" + exec -a nvim nvim "$@" else - vim "$@" + exec -a vim vim "$@" fi diff --git a/bin/xinput-toggle b/bin/executable_xinput-toggle old mode 100755 new mode 100644 similarity index 100% rename from bin/xinput-toggle rename to bin/executable_xinput-toggle diff --git a/bin/gettermsize b/bin/gettermsize deleted file mode 100755 index fdd6482..0000000 Binary files a/bin/gettermsize and /dev/null differ diff --git a/bin/move_bazel_rule.sh b/bin/move_bazel_rule.sh new file mode 100755 index 0000000..f852922 --- /dev/null +++ b/bin/move_bazel_rule.sh @@ -0,0 +1,32 @@ +#!/bin/bash +set -e +if [ -z "$1" ]; then + cat << EOF +Usages: + $0 NEW_BAZEL_FILE + Search for BUILD targets with these names in the git repo + $0 NEW_BAZEL_FILE FIXUP_BAZEL_FILE + Find instances of the BUILD targets in the to-be-fixed-file + $0 NEW_BAZEL_FILE FIXUP_BAZEL_FILE PREFIX + Find instances of that BUILD target with an old prefix (eg: '//:') + $0 NEW_BAZEL_FILE FIXUP_BAZEL_FILE PREFIX NEW_PREFIX + Apply the NEW_PREFIX (eg, a package move) in place of the PREFIX in the FIXUP file. +EOF + exit +fi +INCOMING_SET=$(grep "name" $1 | cut -d '"' -f 2) +TO_CHANGE=$2 +PREVIOUS_PATH=$3 +NEW_PATH=$4 + +for TARGET in $INCOMING_SET; do + if [ -n "$TO_CHANGE" ]; then + grep ${PREVIOUS_PATH}${TARGET} $TO_CHANGE + if [ -n "$NEW_PATH" ]; then + sed -i "s^${PREVIOUS_PATH}${TARGET}^${NEW_PATH}${TARGET}^g" $TO_CHANGE + fi + else + git grep ${TARGET} + fi + +done diff --git a/bin/pk b/bin/pk deleted file mode 100755 index 32320d4..0000000 --- a/bin/pk +++ /dev/null @@ -1,55 +0,0 @@ -#!/bin/sh -search () { - shift - if which pacman >/dev/null; then - pacman -Ss $1 || yay -Ss $1 - elif which port >/dev/null; then - port search $1 - elif which portmaster >/dev/null; then - cd /usr/ports - make search name=$1 | grep "^\(Port\|Path\|Info\|Moved\|$\)" - elif which aptitude >/dev/null; then - aptitude search $1 - elif which apt-cache >/dev/null; then - apt-cache search $1 - fi -} - -update () { - shift - if which pacman >/dev/null; then - sudo pacman -Sy - elif which port >/dev/null; then - sudo port selfupdate - elif which portmaster >/dev/null; then - sudo portsnap fetch && sudo portsnap upgrade - elif which apt-get >/dev/null; then - sudo apt-get update - fi -} - -install () { - shift - if which pacman >/dev/null; then - sudo pacman -S $* || yay -S $* - elif which port >/dev/null; then - sudo port install $* - elif which portmaster >/dev/null; then - sudo portmaster $* - elif which apt-get >/dev/null; then - sudo apt-get install $* - fi -} - -case $1 -in - "i" | "install") - install $*;; - - "s" | "search") - search $*;; - - "u" | "update") - update $*;; -esac - diff --git a/bin/rename_git_branch.sh b/bin/rename_git_branch.sh new file mode 100644 index 0000000..9eec62f --- /dev/null +++ b/bin/rename_git_branch.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +git checkout $1 +git branch -m $1 $2 +git fetch +git branch --unset-upstream +git branch -u origin/$2 diff --git a/bin/run_browser b/bin/run_browser deleted file mode 100755 index 15440ea..0000000 --- a/bin/run_browser +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash - -if [ -n "`which firefox`" ]; then - firefox -elif [ -n "`which iceweasel`" ]; then - iceweasel -elif [ -n "`which google-chrome`" ]; then - google-chrome -else - exit 1 -fi diff --git a/bin/run_terminal b/bin/run_terminal deleted file mode 100755 index 3a5df40..0000000 --- a/bin/run_terminal +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env bash - -if [ -n "`which terminator`" ]; then - terminator -elif [ -n "`which gnome-terminal`" ]; then - gnome-terminal -elif [ -n "`which urxvt`" ]; then - urxvt -else - xterm -fi diff --git a/bin/tunnelwrap b/bin/tunnelwrap new file mode 100755 index 0000000..c2b2238 --- /dev/null +++ b/bin/tunnelwrap @@ -0,0 +1,50 @@ +#!/bin/bash +set -e + +USAGE="Usage: $0 [-p port] " + +if [ $# -lt 2 ]; then + echo "$USAGE" + exit 1 +fi + +OPTIND=1 +PORT="" +KEYFILE="" + +while getopts "h?p:i:" opt; do + case "$opt" in + h|\?) + echo "$USAGE" + exit 1 + ;; + p) PORT=$OPTARG + ;; + i) KEYFILE=$OPTARG + ;; + esac +done + +shift $((OPTIND-1)) + +[ "${1:-}" = "--" ] && shift + +SSH_OPTS="" + +if [ -n "$PORT" ]; then + SSH_OPTS="${SSH_OPTS} -p ${PORT}" +fi + +if [ -n "$KEYFILE" ]; then + SSH_OPTS="${SSH_OPTS} -i ${KEYFILE}" +fi + +CONTROLFILE="/tmp/tunnelwrap.$RANDOM" +PORTFORWARD="$1" +shift +HOSTCONNECTION="$1" +shift + +ssh -M -S $CONTROLFILE -fnNT -L $PORTFORWARD $SSH_OPTS $HOSTCONNECTION +"$@" +ssh -S $CONTROLFILE -O exit $HOSTCONNECTION diff --git a/bin/unborkify b/bin/unborkify index 120f56d..111940a 100755 --- a/bin/unborkify +++ b/bin/unborkify @@ -1,4 +1,4 @@ -#!/usr/local/bin/perl +#!/usr/bin/perl use Getopt::Std; getopts('u'); diff --git a/.Xmodmap b/dot_Xmodmap similarity index 100% rename from .Xmodmap rename to dot_Xmodmap diff --git a/.barak-theme.el b/dot_barak-theme.el similarity index 100% rename from .barak-theme.el rename to dot_barak-theme.el diff --git a/.bash_aliases b/dot_bash_aliases similarity index 88% rename from .bash_aliases rename to dot_bash_aliases index 7b7b7ca..045adcf 100644 --- a/.bash_aliases +++ b/dot_bash_aliases @@ -59,8 +59,9 @@ alias setclip='xclip -selection c' alias getclip='xclip -selection clipboard -o' #machines -alias lear="ssh -D 7777 -Y barak@lear.barakmich.com" +alias puck="ssh -D 7777 -Y barak@puck.barakmich.com" alias hero="ssh -D 7777 -Y barak@hero.barakmich.com" +alias hermia="ssh -Y barak@hermia.home.0b100.net" #Cosmetic/useful #alias naim="naim --noscreen" @@ -79,6 +80,9 @@ alias saupdate="sa-learn --mbox --spam ~/mail/spam" alias pshosers="ps axeo pcpu,pid,user,command | sort -k 1 -r | head -11 " alias memhosers="ps axeo size,pcpu,pid,user,command | sort -n -r | head -11 " alias psx="ps auxwww | grep $1" +alias blaze="bazel" +alias pb='curl -F c=@- https://busb.us/' +alias pburl='curl -F c=@- https://busb.us/u' #work alias totemp="cd `pwd | sed 's/controllers/templates/'`" @@ -100,6 +104,10 @@ dobenchx() { } alias benchx=dobenchx +do_killgrep() { + ps auxwww | grep $1 | awk '{print $2}' | xargs kill +} +alias killgrep=do_killgrep #function gvim () { #`which gvim` $* &> /dev/null #} diff --git a/dot_bash_k8s_aliases b/dot_bash_k8s_aliases new file mode 100644 index 0000000..fd669eb --- /dev/null +++ b/dot_bash_k8s_aliases @@ -0,0 +1,10 @@ +#!/bin/bash + +k8s-configmap-from-dir () { + local name=$1 + shift + local dir=$1 + shift + if + kubectl create configmap "$1" --from-file="$2" -o yaml --dry-run "$@" +} diff --git a/.bash_logout b/dot_bash_logout similarity index 100% rename from .bash_logout rename to dot_bash_logout diff --git a/.bash_profile b/dot_bash_profile similarity index 96% rename from .bash_profile rename to dot_bash_profile index 9aee501..6df125f 100644 --- a/.bash_profile +++ b/dot_bash_profile @@ -20,3 +20,4 @@ fi # Added by ~/.emacs.d/install.sh export PATH=$HOME/.cask/bin:$PATH +. "$HOME/.cargo/env" diff --git a/.bashrc b/dot_bashrc similarity index 99% rename from .bashrc rename to dot_bashrc index f714772..57a4468 100644 --- a/.bashrc +++ b/dot_bashrc @@ -161,3 +161,4 @@ fi if [ -f ~/local/google-cloud-sdk/completion.bash.inc ]; then . ~/local/google-cloud-sdk/completion.bash.inc fi +. "$HOME/.cargo/env" diff --git a/dot_cargo/config.toml b/dot_cargo/config.toml new file mode 100644 index 0000000..c91c3f3 --- /dev/null +++ b/dot_cargo/config.toml @@ -0,0 +1,2 @@ +[net] +git-fetch-with-cli = true diff --git a/.compton.conf b/dot_compton.conf similarity index 86% rename from .compton.conf rename to dot_compton.conf index d96022a..e46d1aa 100644 --- a/.compton.conf +++ b/dot_compton.conf @@ -1,8 +1,8 @@ # Shadow shadow = true; -no-dnd-shadow = true; -no-dock-shadow = true; -clear-shadow = true; +#no-dnd-shadow = true; +#no-dock-shadow = true; +#clear-shadow = true; shadow-radius = 7; shadow-offset-x = -7; shadow-offset-y = -7; @@ -23,12 +23,11 @@ shadow-exclude = [ # xinerama-shadow-crop = true; # Opacity -menu-opacity = 0.9; #inactive-opacity = 0.9; # active-opacity = 0.8; frame-opacity = 0.7; #inactive-opacity-override = false; -alpha-step = 0.06; +#alpha-step = 0.06; inactive-dim = 0.12; # inactive-dim-fixed = true; # blur-background = true; @@ -60,9 +59,9 @@ mark-ovredir-focused = true; detect-rounded-corners = true; detect-client-opacity = true; refresh-rate = 0; -vsync = "none"; +vsync = false; dbe = false; -paint-on-overlay = true; +#paint-on-overlay = true; # unredir-if-possible-delay = 5000; # unredir-if-possible-exclude = [ ]; focus-exclude = [ "class_g = 'Cairo-clock'" ]; @@ -76,7 +75,8 @@ invert-color-include = [ ]; glx-copy-from-front = false; # glx-use-copysubbuffermesa = true; # glx-no-rebind-pixmap = true; -glx-swap-method = "undefined"; +#glx-swap-method = "undefined"; +use-damage = true; # glx-use-gpushader4 = true; # xrender-sync = true; # xrender-sync-fence = true; @@ -85,4 +85,8 @@ glx-swap-method = "undefined"; wintypes: { tooltip = { fade = true; shadow = true; opacity = 0.75; focus = true; }; + dock = { shadow = false; } + dnd = { shadow = false; } + popup_menu = { opacity = 0.9; } + dropdown_menu = { opacity = 0.9; } }; diff --git a/dot_config/alacritty/alacritty.toml.tmpl b/dot_config/alacritty/alacritty.toml.tmpl new file mode 100644 index 0000000..2d92f29 --- /dev/null +++ b/dot_config/alacritty/alacritty.toml.tmpl @@ -0,0 +1,148 @@ +[bell] +color = "#ffffff" +duration = 200 + +[colors] +draw_bold_text_with_bright_colors = false + +[colors.bright] +black = "#565656" +blue = "#49a4f8" +cyan = "#99faf2" +green = "#c0e17d" +magenta = "#a47de9" +red = "#ec5357" +white = "#ffffff" +yellow = "#f9da6a" + +[colors.normal] +black = "#2e2e2e" +blue = "#47a0f3" +cyan = "#64dbed" +green = "#abe047" +magenta = "#7b5cb0" +red = "#eb4129" +white = "#e5e9f0" +yellow = "#f6c744" + +[colors.primary] +background = "#000000" +foreground = "#fffbf6" + +[env] +TERM = "xterm-256color" + +[font] +{{if eq .chezmoi.hostname "lysander" -}} +size = 15.5 +{{ else if eq .chezmoi.hostname "mercutio" -}} +size = 19.0 +{{ else if eq .chezmoi.hostname "rosencrantz" -}} +size = 15.0 +{{ else if eq .chezmoi.hostname "altair" -}} +size = 22 +{{ else if eq .chezmoi.hostname "hermia" -}} +size = 20.5 +{{ else -}} +size = 19.0 +{{ end }} + +[font.bold] +style = "Semi-Condensed" +#style = "Regular" + +[font.bold_italic] +style = "Semi-Condensed Oblique" +#style = "Italic" + +[font.italic] +style = "Light Semi-Condensed Oblique" +#style = "Light Italic" + +[font.normal] +family = "Iosevka Berkeley" +style = "Light Semi-Condensed" +#style = "Light" + +[hints] +alphabet = "jfkdls;ahgurieowpq" + +[[hints.enabled]] +action = "Copy" +regex = "[a-f0-9]{7,}" + +[hints.enabled.binding] +key = "H" +mods = "Control|Shift" + +[[hints.enabled]] +action = "Copy" +regex = "(magnet:|mailto:|https:|http:|news:|file:|git:|ssh:|ftp:)[^\u0000-\u001F\u007F-Ÿ<>\"\\s{-}\\^⟨⟩`]+" + +[hints.enabled.binding] +key = "U" +mods = "Control|Shift" + +[[hints.enabled]] +post_processing = true +regex = "(magnet:|mailto:|https:|http:|news:|file:|git:|ssh:|ftp:)[^\u0000-\u001F\u007F-Ÿ<>\"\\s{-}\\^⟨⟩`]+" +{{if eq .chezmoi.os "darwin" -}} +command = "open" +{{ else -}} +command = "xdg-open" +{{ end }} + +[hints.enabled.binding] +key = "L" +mods = "Control|Shift" + +[hints.enabled.mouse] +enabled = true +mods = "None" + +[[keyboard.bindings]] +action = "ToggleViMode" +key = "Q" +mode = "Vi|~Search" + +[[keyboard.bindings]] +action = "Paste" +key = "P" +mode = "Vi|~Search" + +[[keyboard.bindings]] +{{if eq .chezmoi.hostname "rosencrantz" -}} +action = "ToggleFullscreen" +{{ else -}} +action = "ToggleMaximized" +{{ end }} +key = "Return" +mods = "Alt" + +[[keyboard.bindings]] +action = "ToggleSimpleFullscreen" +key = "Return" +mods = "Command" + +[[keyboard.bindings]] +chars = "\u001B." +key = "Period" +mods = "Command" + +[scrolling] +history = 10000 +multiplier = 3 + +[window] +opacity = 0.88 +startup_mode = "Windowed" +option_as_alt = "Both" +#decorations = "None" + +[window.dimensions] +columns = 106 +lines = 24 + +[window.padding] +x = 3 +y = 3 diff --git a/.config/awesome/btheme/README b/dot_config/awesome/btheme/README similarity index 100% rename from .config/awesome/btheme/README rename to dot_config/awesome/btheme/README diff --git a/.config/awesome/btheme/background.png b/dot_config/awesome/btheme/background.png similarity index 100% rename from .config/awesome/btheme/background.png rename to dot_config/awesome/btheme/background.png diff --git a/.config/awesome/btheme/background_white.png b/dot_config/awesome/btheme/background_white.png similarity index 100% rename from .config/awesome/btheme/background_white.png rename to dot_config/awesome/btheme/background_white.png diff --git a/.config/awesome/btheme/layouts/dwindle.png b/dot_config/awesome/btheme/layouts/dwindle.png similarity index 100% rename from .config/awesome/btheme/layouts/dwindle.png rename to dot_config/awesome/btheme/layouts/dwindle.png diff --git a/.config/awesome/btheme/layouts/dwindlew.png b/dot_config/awesome/btheme/layouts/dwindlew.png similarity index 100% rename from .config/awesome/btheme/layouts/dwindlew.png rename to dot_config/awesome/btheme/layouts/dwindlew.png diff --git a/.config/awesome/btheme/layouts/fairh.png b/dot_config/awesome/btheme/layouts/fairh.png similarity index 100% rename from .config/awesome/btheme/layouts/fairh.png rename to dot_config/awesome/btheme/layouts/fairh.png diff --git a/.config/awesome/btheme/layouts/fairhw.png b/dot_config/awesome/btheme/layouts/fairhw.png similarity index 100% rename from .config/awesome/btheme/layouts/fairhw.png rename to dot_config/awesome/btheme/layouts/fairhw.png diff --git a/.config/awesome/btheme/layouts/fairv.png b/dot_config/awesome/btheme/layouts/fairv.png similarity index 100% rename from .config/awesome/btheme/layouts/fairv.png rename to dot_config/awesome/btheme/layouts/fairv.png diff --git a/.config/awesome/btheme/layouts/fairvw.png b/dot_config/awesome/btheme/layouts/fairvw.png similarity index 100% rename from .config/awesome/btheme/layouts/fairvw.png rename to dot_config/awesome/btheme/layouts/fairvw.png diff --git a/.config/awesome/btheme/layouts/floating.png b/dot_config/awesome/btheme/layouts/floating.png similarity index 100% rename from .config/awesome/btheme/layouts/floating.png rename to dot_config/awesome/btheme/layouts/floating.png diff --git a/.config/awesome/btheme/layouts/floatingw.png b/dot_config/awesome/btheme/layouts/floatingw.png similarity index 100% rename from .config/awesome/btheme/layouts/floatingw.png rename to dot_config/awesome/btheme/layouts/floatingw.png diff --git a/.config/awesome/btheme/layouts/fullscreen.png b/dot_config/awesome/btheme/layouts/fullscreen.png similarity index 100% rename from .config/awesome/btheme/layouts/fullscreen.png rename to dot_config/awesome/btheme/layouts/fullscreen.png diff --git a/.config/awesome/btheme/layouts/fullscreenw.png b/dot_config/awesome/btheme/layouts/fullscreenw.png similarity index 100% rename from .config/awesome/btheme/layouts/fullscreenw.png rename to dot_config/awesome/btheme/layouts/fullscreenw.png diff --git a/.config/awesome/btheme/layouts/magnifier.png b/dot_config/awesome/btheme/layouts/magnifier.png similarity index 100% rename from .config/awesome/btheme/layouts/magnifier.png rename to dot_config/awesome/btheme/layouts/magnifier.png diff --git a/.config/awesome/btheme/layouts/magnifierw.png b/dot_config/awesome/btheme/layouts/magnifierw.png similarity index 100% rename from .config/awesome/btheme/layouts/magnifierw.png rename to dot_config/awesome/btheme/layouts/magnifierw.png diff --git a/.config/awesome/btheme/layouts/max.png b/dot_config/awesome/btheme/layouts/max.png similarity index 100% rename from .config/awesome/btheme/layouts/max.png rename to dot_config/awesome/btheme/layouts/max.png diff --git a/.config/awesome/btheme/layouts/maxw.png b/dot_config/awesome/btheme/layouts/maxw.png similarity index 100% rename from .config/awesome/btheme/layouts/maxw.png rename to dot_config/awesome/btheme/layouts/maxw.png diff --git a/.config/awesome/btheme/layouts/spiral.png b/dot_config/awesome/btheme/layouts/spiral.png similarity index 100% rename from .config/awesome/btheme/layouts/spiral.png rename to dot_config/awesome/btheme/layouts/spiral.png diff --git a/.config/awesome/btheme/layouts/spiralw.png b/dot_config/awesome/btheme/layouts/spiralw.png similarity index 100% rename from .config/awesome/btheme/layouts/spiralw.png rename to dot_config/awesome/btheme/layouts/spiralw.png diff --git a/.config/awesome/btheme/layouts/tile.png b/dot_config/awesome/btheme/layouts/tile.png similarity index 100% rename from .config/awesome/btheme/layouts/tile.png rename to dot_config/awesome/btheme/layouts/tile.png diff --git a/.config/awesome/btheme/layouts/tilebottom.png b/dot_config/awesome/btheme/layouts/tilebottom.png similarity index 100% rename from .config/awesome/btheme/layouts/tilebottom.png rename to dot_config/awesome/btheme/layouts/tilebottom.png diff --git a/.config/awesome/btheme/layouts/tilebottomw.png b/dot_config/awesome/btheme/layouts/tilebottomw.png similarity index 100% rename from .config/awesome/btheme/layouts/tilebottomw.png rename to dot_config/awesome/btheme/layouts/tilebottomw.png diff --git a/.config/awesome/btheme/layouts/tileleft.png b/dot_config/awesome/btheme/layouts/tileleft.png similarity index 100% rename from .config/awesome/btheme/layouts/tileleft.png rename to dot_config/awesome/btheme/layouts/tileleft.png diff --git a/.config/awesome/btheme/layouts/tileleftw.png b/dot_config/awesome/btheme/layouts/tileleftw.png similarity index 100% rename from .config/awesome/btheme/layouts/tileleftw.png rename to dot_config/awesome/btheme/layouts/tileleftw.png diff --git a/.config/awesome/btheme/layouts/tiletop.png b/dot_config/awesome/btheme/layouts/tiletop.png similarity index 100% rename from .config/awesome/btheme/layouts/tiletop.png rename to dot_config/awesome/btheme/layouts/tiletop.png diff --git a/.config/awesome/btheme/layouts/tiletopw.png b/dot_config/awesome/btheme/layouts/tiletopw.png similarity index 100% rename from .config/awesome/btheme/layouts/tiletopw.png rename to dot_config/awesome/btheme/layouts/tiletopw.png diff --git a/.config/awesome/btheme/layouts/tilew.png b/dot_config/awesome/btheme/layouts/tilew.png similarity index 100% rename from .config/awesome/btheme/layouts/tilew.png rename to dot_config/awesome/btheme/layouts/tilew.png diff --git a/.config/awesome/btheme/submenu.png b/dot_config/awesome/btheme/submenu.png similarity index 100% rename from .config/awesome/btheme/submenu.png rename to dot_config/awesome/btheme/submenu.png diff --git a/.config/awesome/btheme/taglist/squarefw.png b/dot_config/awesome/btheme/taglist/squarefw.png similarity index 100% rename from .config/awesome/btheme/taglist/squarefw.png rename to dot_config/awesome/btheme/taglist/squarefw.png diff --git a/.config/awesome/btheme/taglist/squarew.png b/dot_config/awesome/btheme/taglist/squarew.png similarity index 100% rename from .config/awesome/btheme/taglist/squarew.png rename to dot_config/awesome/btheme/taglist/squarew.png diff --git a/.config/awesome/btheme/tasklist/floating.png b/dot_config/awesome/btheme/tasklist/floating.png similarity index 100% rename from .config/awesome/btheme/tasklist/floating.png rename to dot_config/awesome/btheme/tasklist/floating.png diff --git a/.config/awesome/btheme/tasklist/floatingw.png b/dot_config/awesome/btheme/tasklist/floatingw.png similarity index 100% rename from .config/awesome/btheme/tasklist/floatingw.png rename to dot_config/awesome/btheme/tasklist/floatingw.png diff --git a/.config/awesome/btheme/theme.lua b/dot_config/awesome/btheme/theme.lua similarity index 100% rename from .config/awesome/btheme/theme.lua rename to dot_config/awesome/btheme/theme.lua diff --git a/.config/awesome/btheme/titlebar/close_focus.png b/dot_config/awesome/btheme/titlebar/close_focus.png similarity index 100% rename from .config/awesome/btheme/titlebar/close_focus.png rename to dot_config/awesome/btheme/titlebar/close_focus.png diff --git a/.config/awesome/btheme/titlebar/close_normal.png b/dot_config/awesome/btheme/titlebar/close_normal.png similarity index 100% rename from .config/awesome/btheme/titlebar/close_normal.png rename to dot_config/awesome/btheme/titlebar/close_normal.png diff --git a/.config/awesome/btheme/titlebar/floating_focus_active.png b/dot_config/awesome/btheme/titlebar/floating_focus_active.png similarity index 100% rename from .config/awesome/btheme/titlebar/floating_focus_active.png rename to dot_config/awesome/btheme/titlebar/floating_focus_active.png diff --git a/.config/awesome/btheme/titlebar/floating_focus_inactive.png b/dot_config/awesome/btheme/titlebar/floating_focus_inactive.png similarity index 100% rename from .config/awesome/btheme/titlebar/floating_focus_inactive.png rename to dot_config/awesome/btheme/titlebar/floating_focus_inactive.png diff --git a/.config/awesome/btheme/titlebar/floating_normal_active.png b/dot_config/awesome/btheme/titlebar/floating_normal_active.png similarity index 100% rename from .config/awesome/btheme/titlebar/floating_normal_active.png rename to dot_config/awesome/btheme/titlebar/floating_normal_active.png diff --git a/.config/awesome/btheme/titlebar/floating_normal_inactive.png b/dot_config/awesome/btheme/titlebar/floating_normal_inactive.png similarity index 100% rename from .config/awesome/btheme/titlebar/floating_normal_inactive.png rename to dot_config/awesome/btheme/titlebar/floating_normal_inactive.png diff --git a/.config/awesome/btheme/titlebar/maximized_focus_active.png b/dot_config/awesome/btheme/titlebar/maximized_focus_active.png similarity index 100% rename from .config/awesome/btheme/titlebar/maximized_focus_active.png rename to dot_config/awesome/btheme/titlebar/maximized_focus_active.png diff --git a/.config/awesome/btheme/titlebar/maximized_focus_inactive.png b/dot_config/awesome/btheme/titlebar/maximized_focus_inactive.png similarity index 100% rename from .config/awesome/btheme/titlebar/maximized_focus_inactive.png rename to dot_config/awesome/btheme/titlebar/maximized_focus_inactive.png diff --git a/.config/awesome/btheme/titlebar/maximized_normal_active.png b/dot_config/awesome/btheme/titlebar/maximized_normal_active.png similarity index 100% rename from .config/awesome/btheme/titlebar/maximized_normal_active.png rename to dot_config/awesome/btheme/titlebar/maximized_normal_active.png diff --git a/.config/awesome/btheme/titlebar/maximized_normal_inactive.png b/dot_config/awesome/btheme/titlebar/maximized_normal_inactive.png similarity index 100% rename from .config/awesome/btheme/titlebar/maximized_normal_inactive.png rename to dot_config/awesome/btheme/titlebar/maximized_normal_inactive.png diff --git a/.config/awesome/btheme/titlebar/ontop_focus_active.png b/dot_config/awesome/btheme/titlebar/ontop_focus_active.png similarity index 100% rename from .config/awesome/btheme/titlebar/ontop_focus_active.png rename to dot_config/awesome/btheme/titlebar/ontop_focus_active.png diff --git a/.config/awesome/btheme/titlebar/ontop_focus_inactive.png b/dot_config/awesome/btheme/titlebar/ontop_focus_inactive.png similarity index 100% rename from .config/awesome/btheme/titlebar/ontop_focus_inactive.png rename to dot_config/awesome/btheme/titlebar/ontop_focus_inactive.png diff --git a/.config/awesome/btheme/titlebar/ontop_normal_active.png b/dot_config/awesome/btheme/titlebar/ontop_normal_active.png similarity index 100% rename from .config/awesome/btheme/titlebar/ontop_normal_active.png rename to dot_config/awesome/btheme/titlebar/ontop_normal_active.png diff --git a/.config/awesome/btheme/titlebar/ontop_normal_inactive.png b/dot_config/awesome/btheme/titlebar/ontop_normal_inactive.png similarity index 100% rename from .config/awesome/btheme/titlebar/ontop_normal_inactive.png rename to dot_config/awesome/btheme/titlebar/ontop_normal_inactive.png diff --git a/.config/awesome/btheme/titlebar/sticky_focus_active.png b/dot_config/awesome/btheme/titlebar/sticky_focus_active.png similarity index 100% rename from .config/awesome/btheme/titlebar/sticky_focus_active.png rename to dot_config/awesome/btheme/titlebar/sticky_focus_active.png diff --git a/.config/awesome/btheme/titlebar/sticky_focus_inactive.png b/dot_config/awesome/btheme/titlebar/sticky_focus_inactive.png similarity index 100% rename from .config/awesome/btheme/titlebar/sticky_focus_inactive.png rename to dot_config/awesome/btheme/titlebar/sticky_focus_inactive.png diff --git a/.config/awesome/btheme/titlebar/sticky_normal_active.png b/dot_config/awesome/btheme/titlebar/sticky_normal_active.png similarity index 100% rename from .config/awesome/btheme/titlebar/sticky_normal_active.png rename to dot_config/awesome/btheme/titlebar/sticky_normal_active.png diff --git a/.config/awesome/btheme/titlebar/sticky_normal_inactive.png b/dot_config/awesome/btheme/titlebar/sticky_normal_inactive.png similarity index 100% rename from .config/awesome/btheme/titlebar/sticky_normal_inactive.png rename to dot_config/awesome/btheme/titlebar/sticky_normal_inactive.png diff --git a/.config/awesome/rc.lua b/dot_config/awesome/rc.lua similarity index 100% rename from .config/awesome/rc.lua rename to dot_config/awesome/rc.lua diff --git a/dot_config/coc/extensions/package.json b/dot_config/coc/extensions/package.json new file mode 100644 index 0000000..007e69a --- /dev/null +++ b/dot_config/coc/extensions/package.json @@ -0,0 +1,11 @@ +{ + "dependencies": { + "coc-json": ">=1.3.4", + "coc-pyright": ">=1.1.129", + "coc-rust-analyzer": ">=0.32.0", + "coc-snippets": ">=2.4.1", + "coc-svelte": ">=0.2.2", + "coc-tsserver": ">=1.7.0", + "coc-ultisnips": ">=1.2.3" + } +} \ No newline at end of file diff --git a/dot_config/elinks/elinks.conf b/dot_config/elinks/elinks.conf new file mode 100644 index 0000000..eb38a51 --- /dev/null +++ b/dot_config/elinks/elinks.conf @@ -0,0 +1,50 @@ +## ELinks 0.17.0 configuration file + +## This is ELinks configuration file. You can edit it manually, +## if you wish so; this file is edited by ELinks when you save +## options through UI, however only option values will be altered +## and missing options will be added at the end of file; if option +## is not written in this file, but in some file included from it, +## it is NOT counted as missing. Note that all your formatting, +## own comments and so on will be kept as-is. +## +## Obviously, if you don't like what ELinks is going to do with +## this file, you can change it by altering the config.saving_style +## option. Come on, aren't we friendly guys after all? + + + +############################## +# Automatically saved options +# + +## config +# Configuration handling options. + + ## config.saving_style_w [0|1] + # This is internal option used when displaying a warning about obsolete + # config.saving_style. You shouldn't touch it. + set config.saving_style_w = 1 + + +## terminal +# Terminal options. + + ## terminal.tmux-256color + # Options specific to this terminal type (according to $TERM value). + + ## terminal.tmux-256color.colors + set terminal.tmux-256color.colors = 3 + ## terminal.tmux-256color.type + set terminal.tmux-256color.type = 0 + + +## ui +# User interface options. + + ## ui.language + # Language of user interface. 'System' means that the language will be + # extracted from the environment dynamically. + set ui.language = "System" + + diff --git a/dot_config/fish/.gitignore b/dot_config/fish/.gitignore new file mode 100644 index 0000000..44e4e55 --- /dev/null +++ b/dot_config/fish/.gitignore @@ -0,0 +1 @@ +work.fish diff --git a/dot_config/fish/completions/cargo.fish b/dot_config/fish/completions/cargo.fish new file mode 100644 index 0000000..3c1f8c5 --- /dev/null +++ b/dot_config/fish/completions/cargo.fish @@ -0,0 +1,802 @@ +# Tab completion for cargo (https://github.com/rust-lang/cargo). + +## --- WRITTEN MANUALLY --- +set -l __fish_cargo_subcommands (cargo --list 2>&1 | string replace -rf '^\s+([^\s]+)\s*(.*)' '$1\t$2' | string escape) + +complete -c cargo -f -c cargo -n __fish_use_subcommand -a "$__fish_cargo_subcommands" +complete -c cargo -x -c cargo -n '__fish_seen_subcommand_from help' -a "$__fish_cargo_subcommands" + +for x in bench b build rustc t test + complete -c cargo -x -n "__fish_seen_subcommand_from $x" -l bench -a "(cargo bench --bench 2>&1 | string replace -rf '^\s+' '')" + complete -c cargo -n "__fish_seen_subcommand_from $x" -l lib -d 'Only this package\'s library' + complete -c cargo -x -n "__fish_seen_subcommand_from $x" -l test -a "(cargo test --test 2>&1 | string replace -rf '^\s+' '')" +end + +for x in bench b build r run rustc t test + complete -c cargo -x -n "__fish_seen_subcommand_from $x" -l bin -a "(cargo run --bin 2>&1 | string replace -rf '^\s+' '')" + complete -c cargo -x -n "__fish_seen_subcommand_from $x" -l example -a "(cargo run --example 2>&1 | string replace -rf '^\s+' '')" +end + +function __fish_cargo_packages + find . -name Cargo.toml | string replace -rf '.*/([^/]+)/?Cargo.toml' '$1' +end +complete -c cargo -n '__fish_seen_subcommand_from run test build debug check' -l package \ + -xa "(__fish_cargo_packages)" + +## --- AUTO-GENERATED WITH `cargo complete fish` --- +complete -c cargo -n __fish_use_subcommand -l explain -d 'Run `rustc --explain CODE`' +complete -c cargo -n __fish_use_subcommand -l color -d 'Coloring: auto, always, never' +complete -c cargo -n __fish_use_subcommand -l config -d 'Override a configuration value (unstable)' +complete -c cargo -n __fish_use_subcommand -s Z -d 'Unstable (nightly-only) flags to Cargo, see \'cargo -Z help\' for details' +complete -c cargo -n __fish_use_subcommand -s V -l version -d 'Print version info and exit' +complete -c cargo -n __fish_use_subcommand -l list -d 'List installed commands' +complete -c cargo -n __fish_use_subcommand -s v -l verbose -d 'Use verbose output (-vv very verbose/build.rs output)' +complete -c cargo -n __fish_use_subcommand -s q -l quiet -d 'No output printed to stdout' +complete -c cargo -n __fish_use_subcommand -l frozen -d 'Require Cargo.lock and cache are up to date' +complete -c cargo -n __fish_use_subcommand -l locked -d 'Require Cargo.lock is up to date' +complete -c cargo -n __fish_use_subcommand -l offline -d 'Run without accessing the network' +complete -c cargo -n __fish_use_subcommand -s h -l help -d 'Prints help information' +complete -c cargo -n __fish_use_subcommand -f -a bench -d 'Execute all benchmarks of a local package' +complete -c cargo -n __fish_use_subcommand -f -a build -d 'Compile a local package and all of its dependencies' +complete -c cargo -n __fish_use_subcommand -f -a check -d 'Check a local package and all of its dependencies for errors' +complete -c cargo -n __fish_use_subcommand -f -a clean -d 'Remove artifacts that cargo has generated in the past' +complete -c cargo -n __fish_use_subcommand -f -a complete -d 'Generate completion file for a shell' +complete -c cargo -n __fish_use_subcommand -f -a describe-future-incompatibilities -d 'Reports any crates which will eventually stop compiling' +complete -c cargo -n __fish_use_subcommand -f -a doc -d 'Build a package\'s documentation' +complete -c cargo -n __fish_use_subcommand -f -a fetch -d 'Fetch dependencies of a package from the network' +complete -c cargo -n __fish_use_subcommand -f -a fix -d 'Automatically fix lint warnings reported by rustc' +complete -c cargo -n __fish_use_subcommand -f -a generate-lockfile -d 'Generate the lockfile for a package' +complete -c cargo -n __fish_use_subcommand -f -a git-checkout -d 'This subcommand has been removed' +complete -c cargo -n __fish_use_subcommand -f -a init -d 'Create a new cargo package in an existing directory' +complete -c cargo -n __fish_use_subcommand -f -a install -d 'Install a Rust binary. Default location is $HOME/.cargo/bin' +complete -c cargo -n __fish_use_subcommand -f -a locate-project -d 'Print a JSON representation of a Cargo.toml file\'s location' +complete -c cargo -n __fish_use_subcommand -f -a login -d 'Save an api token from the registry locally. If token is not specified, it will be read from stdin.' +complete -c cargo -n __fish_use_subcommand -f -a logout -d 'Remove an API token from the registry locally' +complete -c cargo -n __fish_use_subcommand -f -a metadata -d 'Output the resolved dependencies of a package, the concrete used versions including overrides, in machine-readable format' +complete -c cargo -n __fish_use_subcommand -f -a new -d 'Create a new cargo package at ' +complete -c cargo -n __fish_use_subcommand -f -a owner -d 'Manage the owners of a crate on the registry' +complete -c cargo -n __fish_use_subcommand -f -a package -d 'Assemble the local package into a distributable tarball' +complete -c cargo -n __fish_use_subcommand -f -a pkgid -d 'Print a fully qualified package specification' +complete -c cargo -n __fish_use_subcommand -f -a publish -d 'Upload a package to the registry' +complete -c cargo -n __fish_use_subcommand -f -a read-manifest -d 'Print a JSON representation of a Cargo.toml manifest. + +Deprecated, use `cargo metadata --no-deps` instead.' +complete -c cargo -n __fish_use_subcommand -f -a run -d 'Run a binary or example of the local package' +complete -c cargo -n __fish_use_subcommand -f -a rustc -d 'Compile a package, and pass extra options to the compiler' +complete -c cargo -n __fish_use_subcommand -f -a rustdoc -d 'Build a package\'s documentation, using specified custom flags.' +complete -c cargo -n __fish_use_subcommand -f -a search -d 'Search packages in crates.io' +complete -c cargo -n __fish_use_subcommand -f -a test -d 'Execute all unit and integration tests and build examples of a local package' +complete -c cargo -n __fish_use_subcommand -f -a tree -d 'Display a tree visualization of a dependency graph' +complete -c cargo -n __fish_use_subcommand -f -a uninstall -d 'Remove a Rust binary' +complete -c cargo -n __fish_use_subcommand -f -a update -d 'Update dependencies as recorded in the local lock file' +complete -c cargo -n __fish_use_subcommand -f -a vendor -d 'Vendor all dependencies for a project locally' +complete -c cargo -n __fish_use_subcommand -f -a verify-project -d 'Check correctness of crate manifest' +complete -c cargo -n __fish_use_subcommand -f -a version -d 'Show version information' +complete -c cargo -n __fish_use_subcommand -f -a yank -d 'Remove a pushed crate from the index' +complete -c cargo -n __fish_use_subcommand -f -a help -d 'Prints this message or the help of the given subcommand(s)' +complete -c cargo -n "__fish_seen_subcommand_from bench" -l bin -d 'Benchmark only the specified binary' +complete -c cargo -n "__fish_seen_subcommand_from bench" -l example -d 'Benchmark only the specified example' +complete -c cargo -n "__fish_seen_subcommand_from bench" -l test -d 'Benchmark only the specified test target' +complete -c cargo -n "__fish_seen_subcommand_from bench" -l bench -d 'Benchmark only the specified bench target' +complete -c cargo -n "__fish_seen_subcommand_from bench" -s p -l package -d 'Package to run benchmarks for' +complete -c cargo -n "__fish_seen_subcommand_from bench" -l exclude -d 'Exclude packages from the benchmark' +complete -c cargo -n "__fish_seen_subcommand_from bench" -s j -l jobs -d 'Number of parallel jobs, defaults to # of CPUs' +complete -c cargo -n "__fish_seen_subcommand_from bench" -l features -d 'Space or comma separated list of features to activate' +complete -c cargo -n "__fish_seen_subcommand_from bench" -l target -d 'Build for the target triple' +complete -c cargo -n "__fish_seen_subcommand_from bench" -l target-dir -d 'Directory for all generated artifacts' +complete -c cargo -n "__fish_seen_subcommand_from bench" -l manifest-path -d 'Path to Cargo.toml' +complete -c cargo -n "__fish_seen_subcommand_from bench" -l message-format -d 'Error format' +complete -c cargo -n "__fish_seen_subcommand_from bench" -l color -d 'Coloring: auto, always, never' +complete -c cargo -n "__fish_seen_subcommand_from bench" -l config -d 'Override a configuration value (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from bench" -s Z -d 'Unstable (nightly-only) flags to Cargo, see \'cargo -Z help\' for details' +complete -c cargo -n "__fish_seen_subcommand_from bench" -s q -l quiet -d 'No output printed to stdout' +complete -c cargo -n "__fish_seen_subcommand_from bench" -l lib -d 'Benchmark only this package\'s library' +complete -c cargo -n "__fish_seen_subcommand_from bench" -l bins -d 'Benchmark all binaries' +complete -c cargo -n "__fish_seen_subcommand_from bench" -l examples -d 'Benchmark all examples' +complete -c cargo -n "__fish_seen_subcommand_from bench" -l tests -d 'Benchmark all tests' +complete -c cargo -n "__fish_seen_subcommand_from bench" -l benches -d 'Benchmark all benches' +complete -c cargo -n "__fish_seen_subcommand_from bench" -l all-targets -d 'Benchmark all targets' +complete -c cargo -n "__fish_seen_subcommand_from bench" -l no-run -d 'Compile, but don\'t run benchmarks' +complete -c cargo -n "__fish_seen_subcommand_from bench" -l all -d 'Alias for --workspace (deprecated)' +complete -c cargo -n "__fish_seen_subcommand_from bench" -l workspace -d 'Benchmark all packages in the workspace' +complete -c cargo -n "__fish_seen_subcommand_from bench" -l all-features -d 'Activate all available features' +complete -c cargo -n "__fish_seen_subcommand_from bench" -l no-default-features -d 'Do not activate the `default` feature' +complete -c cargo -n "__fish_seen_subcommand_from bench" -l ignore-rust-version -d 'Ignore `rust-version` specification in packages (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from bench" -l no-fail-fast -d 'Run all benchmarks regardless of failure' +complete -c cargo -n "__fish_seen_subcommand_from bench" -l unit-graph -d 'Output build graph in JSON (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from bench" -s h -l help -d 'Prints help information' +complete -c cargo -n "__fish_seen_subcommand_from bench" -s V -l version -d 'Prints version information' +complete -c cargo -n "__fish_seen_subcommand_from bench" -s v -l verbose -d 'Use verbose output (-vv very verbose/build.rs output)' +complete -c cargo -n "__fish_seen_subcommand_from bench" -l frozen -d 'Require Cargo.lock and cache are up to date' +complete -c cargo -n "__fish_seen_subcommand_from bench" -l locked -d 'Require Cargo.lock is up to date' +complete -c cargo -n "__fish_seen_subcommand_from bench" -l offline -d 'Run without accessing the network' +complete -c cargo -n "__fish_seen_subcommand_from build" -s p -l package -d 'Package to build (see `cargo help pkgid`)' +complete -c cargo -n "__fish_seen_subcommand_from build" -l exclude -d 'Exclude packages from the build' +complete -c cargo -n "__fish_seen_subcommand_from build" -s j -l jobs -d 'Number of parallel jobs, defaults to # of CPUs' +complete -c cargo -n "__fish_seen_subcommand_from build" -l bin -d 'Build only the specified binary' +complete -c cargo -n "__fish_seen_subcommand_from build" -l example -d 'Build only the specified example' +complete -c cargo -n "__fish_seen_subcommand_from build" -l test -d 'Build only the specified test target' +complete -c cargo -n "__fish_seen_subcommand_from build" -l bench -d 'Build only the specified bench target' +complete -c cargo -n "__fish_seen_subcommand_from build" -l profile -d 'Build artifacts with the specified profile' +complete -c cargo -n "__fish_seen_subcommand_from build" -l features -d 'Space or comma separated list of features to activate' +complete -c cargo -n "__fish_seen_subcommand_from build" -l target -d 'Build for the target triple' +complete -c cargo -n "__fish_seen_subcommand_from build" -l target-dir -d 'Directory for all generated artifacts' +complete -c cargo -n "__fish_seen_subcommand_from build" -l out-dir -d 'Copy final artifacts to this directory (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from build" -l manifest-path -d 'Path to Cargo.toml' +complete -c cargo -n "__fish_seen_subcommand_from build" -l message-format -d 'Error format' +complete -c cargo -n "__fish_seen_subcommand_from build" -l color -d 'Coloring: auto, always, never' +complete -c cargo -n "__fish_seen_subcommand_from build" -l config -d 'Override a configuration value (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from build" -s Z -d 'Unstable (nightly-only) flags to Cargo, see \'cargo -Z help\' for details' +complete -c cargo -n "__fish_seen_subcommand_from build" -s q -l quiet -d 'No output printed to stdout' +complete -c cargo -n "__fish_seen_subcommand_from build" -l all -d 'Alias for --workspace (deprecated)' +complete -c cargo -n "__fish_seen_subcommand_from build" -l workspace -d 'Build all packages in the workspace' +complete -c cargo -n "__fish_seen_subcommand_from build" -l lib -d 'Build only this package\'s library' +complete -c cargo -n "__fish_seen_subcommand_from build" -l bins -d 'Build all binaries' +complete -c cargo -n "__fish_seen_subcommand_from build" -l examples -d 'Build all examples' +complete -c cargo -n "__fish_seen_subcommand_from build" -l tests -d 'Build all tests' +complete -c cargo -n "__fish_seen_subcommand_from build" -l benches -d 'Build all benches' +complete -c cargo -n "__fish_seen_subcommand_from build" -l all-targets -d 'Build all targets' +complete -c cargo -n "__fish_seen_subcommand_from build" -l release -d 'Build artifacts in release mode, with optimizations' +complete -c cargo -n "__fish_seen_subcommand_from build" -l all-features -d 'Activate all available features' +complete -c cargo -n "__fish_seen_subcommand_from build" -l no-default-features -d 'Do not activate the `default` feature' +complete -c cargo -n "__fish_seen_subcommand_from build" -l ignore-rust-version -d 'Ignore `rust-version` specification in packages (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from build" -l build-plan -d 'Output the build plan in JSON (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from build" -l unit-graph -d 'Output build graph in JSON (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from build" -l future-incompat-report -d 'Ouputs a future incompatibility report at the end of the build (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from build" -s h -l help -d 'Prints help information' +complete -c cargo -n "__fish_seen_subcommand_from build" -s V -l version -d 'Prints version information' +complete -c cargo -n "__fish_seen_subcommand_from build" -s v -l verbose -d 'Use verbose output (-vv very verbose/build.rs output)' +complete -c cargo -n "__fish_seen_subcommand_from build" -l frozen -d 'Require Cargo.lock and cache are up to date' +complete -c cargo -n "__fish_seen_subcommand_from build" -l locked -d 'Require Cargo.lock is up to date' +complete -c cargo -n "__fish_seen_subcommand_from build" -l offline -d 'Run without accessing the network' +complete -c cargo -n "__fish_seen_subcommand_from check" -s p -l package -d 'Package(s) to check' +complete -c cargo -n "__fish_seen_subcommand_from check" -l exclude -d 'Exclude packages from the check' +complete -c cargo -n "__fish_seen_subcommand_from check" -s j -l jobs -d 'Number of parallel jobs, defaults to # of CPUs' +complete -c cargo -n "__fish_seen_subcommand_from check" -l bin -d 'Check only the specified binary' +complete -c cargo -n "__fish_seen_subcommand_from check" -l example -d 'Check only the specified example' +complete -c cargo -n "__fish_seen_subcommand_from check" -l test -d 'Check only the specified test target' +complete -c cargo -n "__fish_seen_subcommand_from check" -l bench -d 'Check only the specified bench target' +complete -c cargo -n "__fish_seen_subcommand_from check" -l profile -d 'Check artifacts with the specified profile' +complete -c cargo -n "__fish_seen_subcommand_from check" -l features -d 'Space or comma separated list of features to activate' +complete -c cargo -n "__fish_seen_subcommand_from check" -l target -d 'Check for the target triple' +complete -c cargo -n "__fish_seen_subcommand_from check" -l target-dir -d 'Directory for all generated artifacts' +complete -c cargo -n "__fish_seen_subcommand_from check" -l manifest-path -d 'Path to Cargo.toml' +complete -c cargo -n "__fish_seen_subcommand_from check" -l message-format -d 'Error format' +complete -c cargo -n "__fish_seen_subcommand_from check" -l color -d 'Coloring: auto, always, never' +complete -c cargo -n "__fish_seen_subcommand_from check" -l config -d 'Override a configuration value (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from check" -s Z -d 'Unstable (nightly-only) flags to Cargo, see \'cargo -Z help\' for details' +complete -c cargo -n "__fish_seen_subcommand_from check" -s q -l quiet -d 'No output printed to stdout' +complete -c cargo -n "__fish_seen_subcommand_from check" -l all -d 'Alias for --workspace (deprecated)' +complete -c cargo -n "__fish_seen_subcommand_from check" -l workspace -d 'Check all packages in the workspace' +complete -c cargo -n "__fish_seen_subcommand_from check" -l lib -d 'Check only this package\'s library' +complete -c cargo -n "__fish_seen_subcommand_from check" -l bins -d 'Check all binaries' +complete -c cargo -n "__fish_seen_subcommand_from check" -l examples -d 'Check all examples' +complete -c cargo -n "__fish_seen_subcommand_from check" -l tests -d 'Check all tests' +complete -c cargo -n "__fish_seen_subcommand_from check" -l benches -d 'Check all benches' +complete -c cargo -n "__fish_seen_subcommand_from check" -l all-targets -d 'Check all targets' +complete -c cargo -n "__fish_seen_subcommand_from check" -l release -d 'Check artifacts in release mode, with optimizations' +complete -c cargo -n "__fish_seen_subcommand_from check" -l all-features -d 'Activate all available features' +complete -c cargo -n "__fish_seen_subcommand_from check" -l no-default-features -d 'Do not activate the `default` feature' +complete -c cargo -n "__fish_seen_subcommand_from check" -l ignore-rust-version -d 'Ignore `rust-version` specification in packages (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from check" -l unit-graph -d 'Output build graph in JSON (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from check" -l future-incompat-report -d 'Ouputs a future incompatibility report at the end of the build (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from check" -s h -l help -d 'Prints help information' +complete -c cargo -n "__fish_seen_subcommand_from check" -s V -l version -d 'Prints version information' +complete -c cargo -n "__fish_seen_subcommand_from check" -s v -l verbose -d 'Use verbose output (-vv very verbose/build.rs output)' +complete -c cargo -n "__fish_seen_subcommand_from check" -l frozen -d 'Require Cargo.lock and cache are up to date' +complete -c cargo -n "__fish_seen_subcommand_from check" -l locked -d 'Require Cargo.lock is up to date' +complete -c cargo -n "__fish_seen_subcommand_from check" -l offline -d 'Run without accessing the network' +complete -c cargo -n "__fish_seen_subcommand_from clean" -s p -l package -d 'Package to clean artifacts for' +complete -c cargo -n "__fish_seen_subcommand_from clean" -l manifest-path -d 'Path to Cargo.toml' +complete -c cargo -n "__fish_seen_subcommand_from clean" -l target -d 'Target triple to clean output for' +complete -c cargo -n "__fish_seen_subcommand_from clean" -l target-dir -d 'Directory for all generated artifacts' +complete -c cargo -n "__fish_seen_subcommand_from clean" -l profile -d 'Clean artifacts of the specified profile' +complete -c cargo -n "__fish_seen_subcommand_from clean" -l color -d 'Coloring: auto, always, never' +complete -c cargo -n "__fish_seen_subcommand_from clean" -l config -d 'Override a configuration value (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from clean" -s Z -d 'Unstable (nightly-only) flags to Cargo, see \'cargo -Z help\' for details' +complete -c cargo -n "__fish_seen_subcommand_from clean" -s q -l quiet -d 'No output printed to stdout' +complete -c cargo -n "__fish_seen_subcommand_from clean" -l release -d 'Whether or not to clean release artifacts' +complete -c cargo -n "__fish_seen_subcommand_from clean" -l doc -d 'Whether or not to clean just the documentation directory' +complete -c cargo -n "__fish_seen_subcommand_from clean" -s h -l help -d 'Prints help information' +complete -c cargo -n "__fish_seen_subcommand_from clean" -s V -l version -d 'Prints version information' +complete -c cargo -n "__fish_seen_subcommand_from clean" -s v -l verbose -d 'Use verbose output (-vv very verbose/build.rs output)' +complete -c cargo -n "__fish_seen_subcommand_from clean" -l frozen -d 'Require Cargo.lock and cache are up to date' +complete -c cargo -n "__fish_seen_subcommand_from clean" -l locked -d 'Require Cargo.lock is up to date' +complete -c cargo -n "__fish_seen_subcommand_from clean" -l offline -d 'Run without accessing the network' +complete -c cargo -n "__fish_seen_subcommand_from complete" -l color -d 'Coloring: auto, always, never' +complete -c cargo -n "__fish_seen_subcommand_from complete" -l config -d 'Override a configuration value (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from complete" -s Z -d 'Unstable (nightly-only) flags to Cargo, see \'cargo -Z help\' for details' +complete -c cargo -n "__fish_seen_subcommand_from complete" -s h -l help -d 'Prints help information' +complete -c cargo -n "__fish_seen_subcommand_from complete" -s V -l version -d 'Prints version information' +complete -c cargo -n "__fish_seen_subcommand_from complete" -s v -l verbose -d 'Use verbose output (-vv very verbose/build.rs output)' +complete -c cargo -n "__fish_seen_subcommand_from complete" -l frozen -d 'Require Cargo.lock and cache are up to date' +complete -c cargo -n "__fish_seen_subcommand_from complete" -l locked -d 'Require Cargo.lock is up to date' +complete -c cargo -n "__fish_seen_subcommand_from complete" -l offline -d 'Run without accessing the network' +complete -c cargo -n "__fish_seen_subcommand_from describe-future-incompatibilities" -l id -d 'identifier of the report [generated by a Cargo command invocation' +complete -c cargo -n "__fish_seen_subcommand_from describe-future-incompatibilities" -l color -d 'Coloring: auto, always, never' +complete -c cargo -n "__fish_seen_subcommand_from describe-future-incompatibilities" -l config -d 'Override a configuration value (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from describe-future-incompatibilities" -s Z -d 'Unstable (nightly-only) flags to Cargo, see \'cargo -Z help\' for details' +complete -c cargo -n "__fish_seen_subcommand_from describe-future-incompatibilities" -s h -l help -d 'Prints help information' +complete -c cargo -n "__fish_seen_subcommand_from describe-future-incompatibilities" -s V -l version -d 'Prints version information' +complete -c cargo -n "__fish_seen_subcommand_from describe-future-incompatibilities" -s v -l verbose -d 'Use verbose output (-vv very verbose/build.rs output)' +complete -c cargo -n "__fish_seen_subcommand_from describe-future-incompatibilities" -l frozen -d 'Require Cargo.lock and cache are up to date' +complete -c cargo -n "__fish_seen_subcommand_from describe-future-incompatibilities" -l locked -d 'Require Cargo.lock is up to date' +complete -c cargo -n "__fish_seen_subcommand_from describe-future-incompatibilities" -l offline -d 'Run without accessing the network' +complete -c cargo -n "__fish_seen_subcommand_from doc" -s p -l package -d 'Package to document' +complete -c cargo -n "__fish_seen_subcommand_from doc" -l exclude -d 'Exclude packages from the build' +complete -c cargo -n "__fish_seen_subcommand_from doc" -s j -l jobs -d 'Number of parallel jobs, defaults to # of CPUs' +complete -c cargo -n "__fish_seen_subcommand_from doc" -l bin -d 'Document only the specified binary' +complete -c cargo -n "__fish_seen_subcommand_from doc" -l profile -d 'Build artifacts with the specified profile' +complete -c cargo -n "__fish_seen_subcommand_from doc" -l features -d 'Space or comma separated list of features to activate' +complete -c cargo -n "__fish_seen_subcommand_from doc" -l target -d 'Build for the target triple' +complete -c cargo -n "__fish_seen_subcommand_from doc" -l target-dir -d 'Directory for all generated artifacts' +complete -c cargo -n "__fish_seen_subcommand_from doc" -l manifest-path -d 'Path to Cargo.toml' +complete -c cargo -n "__fish_seen_subcommand_from doc" -l message-format -d 'Error format' +complete -c cargo -n "__fish_seen_subcommand_from doc" -l color -d 'Coloring: auto, always, never' +complete -c cargo -n "__fish_seen_subcommand_from doc" -l config -d 'Override a configuration value (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from doc" -s Z -d 'Unstable (nightly-only) flags to Cargo, see \'cargo -Z help\' for details' +complete -c cargo -n "__fish_seen_subcommand_from doc" -s q -l quiet -d 'No output printed to stdout' +complete -c cargo -n "__fish_seen_subcommand_from doc" -l open -d 'Opens the docs in a browser after the operation' +complete -c cargo -n "__fish_seen_subcommand_from doc" -l all -d 'Alias for --workspace (deprecated)' +complete -c cargo -n "__fish_seen_subcommand_from doc" -l workspace -d 'Document all packages in the workspace' +complete -c cargo -n "__fish_seen_subcommand_from doc" -l no-deps -d 'Don\'t build documentation for dependencies' +complete -c cargo -n "__fish_seen_subcommand_from doc" -l document-private-items -d 'Document private items' +complete -c cargo -n "__fish_seen_subcommand_from doc" -l lib -d 'Document only this package\'s library' +complete -c cargo -n "__fish_seen_subcommand_from doc" -l bins -d 'Document all binaries' +complete -c cargo -n "__fish_seen_subcommand_from doc" -l release -d 'Build artifacts in release mode, with optimizations' +complete -c cargo -n "__fish_seen_subcommand_from doc" -l all-features -d 'Activate all available features' +complete -c cargo -n "__fish_seen_subcommand_from doc" -l no-default-features -d 'Do not activate the `default` feature' +complete -c cargo -n "__fish_seen_subcommand_from doc" -l ignore-rust-version -d 'Ignore `rust-version` specification in packages (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from doc" -l unit-graph -d 'Output build graph in JSON (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from doc" -s h -l help -d 'Prints help information' +complete -c cargo -n "__fish_seen_subcommand_from doc" -s V -l version -d 'Prints version information' +complete -c cargo -n "__fish_seen_subcommand_from doc" -s v -l verbose -d 'Use verbose output (-vv very verbose/build.rs output)' +complete -c cargo -n "__fish_seen_subcommand_from doc" -l frozen -d 'Require Cargo.lock and cache are up to date' +complete -c cargo -n "__fish_seen_subcommand_from doc" -l locked -d 'Require Cargo.lock is up to date' +complete -c cargo -n "__fish_seen_subcommand_from doc" -l offline -d 'Run without accessing the network' +complete -c cargo -n "__fish_seen_subcommand_from fetch" -l manifest-path -d 'Path to Cargo.toml' +complete -c cargo -n "__fish_seen_subcommand_from fetch" -l target -d 'Fetch dependencies for the target triple' +complete -c cargo -n "__fish_seen_subcommand_from fetch" -l color -d 'Coloring: auto, always, never' +complete -c cargo -n "__fish_seen_subcommand_from fetch" -l config -d 'Override a configuration value (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from fetch" -s Z -d 'Unstable (nightly-only) flags to Cargo, see \'cargo -Z help\' for details' +complete -c cargo -n "__fish_seen_subcommand_from fetch" -s q -l quiet -d 'No output printed to stdout' +complete -c cargo -n "__fish_seen_subcommand_from fetch" -s h -l help -d 'Prints help information' +complete -c cargo -n "__fish_seen_subcommand_from fetch" -s V -l version -d 'Prints version information' +complete -c cargo -n "__fish_seen_subcommand_from fetch" -s v -l verbose -d 'Use verbose output (-vv very verbose/build.rs output)' +complete -c cargo -n "__fish_seen_subcommand_from fetch" -l frozen -d 'Require Cargo.lock and cache are up to date' +complete -c cargo -n "__fish_seen_subcommand_from fetch" -l locked -d 'Require Cargo.lock is up to date' +complete -c cargo -n "__fish_seen_subcommand_from fetch" -l offline -d 'Run without accessing the network' +complete -c cargo -n "__fish_seen_subcommand_from fix" -s p -l package -d 'Package(s) to fix' +complete -c cargo -n "__fish_seen_subcommand_from fix" -l exclude -d 'Exclude packages from the fixes' +complete -c cargo -n "__fish_seen_subcommand_from fix" -s j -l jobs -d 'Number of parallel jobs, defaults to # of CPUs' +complete -c cargo -n "__fish_seen_subcommand_from fix" -l bin -d 'Fix only the specified binary' +complete -c cargo -n "__fish_seen_subcommand_from fix" -l example -d 'Fix only the specified example' +complete -c cargo -n "__fish_seen_subcommand_from fix" -l test -d 'Fix only the specified test target' +complete -c cargo -n "__fish_seen_subcommand_from fix" -l bench -d 'Fix only the specified bench target' +complete -c cargo -n "__fish_seen_subcommand_from fix" -l profile -d 'Build artifacts with the specified profile' +complete -c cargo -n "__fish_seen_subcommand_from fix" -l features -d 'Space or comma separated list of features to activate' +complete -c cargo -n "__fish_seen_subcommand_from fix" -l target -d 'Fix for the target triple' +complete -c cargo -n "__fish_seen_subcommand_from fix" -l target-dir -d 'Directory for all generated artifacts' +complete -c cargo -n "__fish_seen_subcommand_from fix" -l manifest-path -d 'Path to Cargo.toml' +complete -c cargo -n "__fish_seen_subcommand_from fix" -l message-format -d 'Error format' +complete -c cargo -n "__fish_seen_subcommand_from fix" -l color -d 'Coloring: auto, always, never' +complete -c cargo -n "__fish_seen_subcommand_from fix" -l config -d 'Override a configuration value (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from fix" -s Z -d 'Unstable (nightly-only) flags to Cargo, see \'cargo -Z help\' for details' +complete -c cargo -n "__fish_seen_subcommand_from fix" -s q -l quiet -d 'No output printed to stdout' +complete -c cargo -n "__fish_seen_subcommand_from fix" -l all -d 'Alias for --workspace (deprecated)' +complete -c cargo -n "__fish_seen_subcommand_from fix" -l workspace -d 'Fix all packages in the workspace' +complete -c cargo -n "__fish_seen_subcommand_from fix" -l lib -d 'Fix only this package\'s library' +complete -c cargo -n "__fish_seen_subcommand_from fix" -l bins -d 'Fix all binaries' +complete -c cargo -n "__fish_seen_subcommand_from fix" -l examples -d 'Fix all examples' +complete -c cargo -n "__fish_seen_subcommand_from fix" -l tests -d 'Fix all tests' +complete -c cargo -n "__fish_seen_subcommand_from fix" -l benches -d 'Fix all benches' +complete -c cargo -n "__fish_seen_subcommand_from fix" -l all-targets -d 'Fix all targets (default)' +complete -c cargo -n "__fish_seen_subcommand_from fix" -l release -d 'Fix artifacts in release mode, with optimizations' +complete -c cargo -n "__fish_seen_subcommand_from fix" -l all-features -d 'Activate all available features' +complete -c cargo -n "__fish_seen_subcommand_from fix" -l no-default-features -d 'Do not activate the `default` feature' +complete -c cargo -n "__fish_seen_subcommand_from fix" -l broken-code -d 'Fix code even if it already has compiler errors' +complete -c cargo -n "__fish_seen_subcommand_from fix" -l edition -d 'Fix in preparation for the next edition' +complete -c cargo -n "__fish_seen_subcommand_from fix" -l edition-idioms -d 'Fix warnings to migrate to the idioms of an edition' +complete -c cargo -n "__fish_seen_subcommand_from fix" -l allow-no-vcs -d 'Fix code even if a VCS was not detected' +complete -c cargo -n "__fish_seen_subcommand_from fix" -l allow-dirty -d 'Fix code even if the working directory is dirty' +complete -c cargo -n "__fish_seen_subcommand_from fix" -l allow-staged -d 'Fix code even if the working directory has staged changes' +complete -c cargo -n "__fish_seen_subcommand_from fix" -l ignore-rust-version -d 'Ignore `rust-version` specification in packages (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from fix" -s h -l help -d 'Prints help information' +complete -c cargo -n "__fish_seen_subcommand_from fix" -s V -l version -d 'Prints version information' +complete -c cargo -n "__fish_seen_subcommand_from fix" -s v -l verbose -d 'Use verbose output (-vv very verbose/build.rs output)' +complete -c cargo -n "__fish_seen_subcommand_from fix" -l frozen -d 'Require Cargo.lock and cache are up to date' +complete -c cargo -n "__fish_seen_subcommand_from fix" -l locked -d 'Require Cargo.lock is up to date' +complete -c cargo -n "__fish_seen_subcommand_from fix" -l offline -d 'Run without accessing the network' +complete -c cargo -n "__fish_seen_subcommand_from generate-lockfile" -l manifest-path -d 'Path to Cargo.toml' +complete -c cargo -n "__fish_seen_subcommand_from generate-lockfile" -l color -d 'Coloring: auto, always, never' +complete -c cargo -n "__fish_seen_subcommand_from generate-lockfile" -l config -d 'Override a configuration value (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from generate-lockfile" -s Z -d 'Unstable (nightly-only) flags to Cargo, see \'cargo -Z help\' for details' +complete -c cargo -n "__fish_seen_subcommand_from generate-lockfile" -s q -l quiet -d 'No output printed to stdout' +complete -c cargo -n "__fish_seen_subcommand_from generate-lockfile" -s h -l help -d 'Prints help information' +complete -c cargo -n "__fish_seen_subcommand_from generate-lockfile" -s V -l version -d 'Prints version information' +complete -c cargo -n "__fish_seen_subcommand_from generate-lockfile" -s v -l verbose -d 'Use verbose output (-vv very verbose/build.rs output)' +complete -c cargo -n "__fish_seen_subcommand_from generate-lockfile" -l frozen -d 'Require Cargo.lock and cache are up to date' +complete -c cargo -n "__fish_seen_subcommand_from generate-lockfile" -l locked -d 'Require Cargo.lock is up to date' +complete -c cargo -n "__fish_seen_subcommand_from generate-lockfile" -l offline -d 'Run without accessing the network' +complete -c cargo -n "__fish_seen_subcommand_from git-checkout" -l color -d 'Coloring: auto, always, never' +complete -c cargo -n "__fish_seen_subcommand_from git-checkout" -l config -d 'Override a configuration value (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from git-checkout" -s Z -d 'Unstable (nightly-only) flags to Cargo, see \'cargo -Z help\' for details' +complete -c cargo -n "__fish_seen_subcommand_from git-checkout" -s h -l help -d 'Prints help information' +complete -c cargo -n "__fish_seen_subcommand_from git-checkout" -s V -l version -d 'Prints version information' +complete -c cargo -n "__fish_seen_subcommand_from git-checkout" -s v -l verbose -d 'Use verbose output (-vv very verbose/build.rs output)' +complete -c cargo -n "__fish_seen_subcommand_from git-checkout" -l frozen -d 'Require Cargo.lock and cache are up to date' +complete -c cargo -n "__fish_seen_subcommand_from git-checkout" -l locked -d 'Require Cargo.lock is up to date' +complete -c cargo -n "__fish_seen_subcommand_from git-checkout" -l offline -d 'Run without accessing the network' +complete -c cargo -n "__fish_seen_subcommand_from init" -l registry -d 'Registry to use' +complete -c cargo -n "__fish_seen_subcommand_from init" -l vcs -d 'Initialize a new repository for the given version control system (git, hg, pijul, or fossil) or do not initialize any version control at all (none), overriding a global configuration.' -r -f -a "git hg pijul fossil none" +complete -c cargo -n "__fish_seen_subcommand_from init" -l edition -d 'Edition to set for the crate generated' -r -f -a "2015 2018 2021" +complete -c cargo -n "__fish_seen_subcommand_from init" -l name -d 'Set the resulting package name, defaults to the directory name' +complete -c cargo -n "__fish_seen_subcommand_from init" -l color -d 'Coloring: auto, always, never' +complete -c cargo -n "__fish_seen_subcommand_from init" -l config -d 'Override a configuration value (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from init" -s Z -d 'Unstable (nightly-only) flags to Cargo, see \'cargo -Z help\' for details' +complete -c cargo -n "__fish_seen_subcommand_from init" -s q -l quiet -d 'No output printed to stdout' +complete -c cargo -n "__fish_seen_subcommand_from init" -l bin -d 'Use a binary (application) template [default]' +complete -c cargo -n "__fish_seen_subcommand_from init" -l lib -d 'Use a library template' +complete -c cargo -n "__fish_seen_subcommand_from init" -s h -l help -d 'Prints help information' +complete -c cargo -n "__fish_seen_subcommand_from init" -s V -l version -d 'Prints version information' +complete -c cargo -n "__fish_seen_subcommand_from init" -s v -l verbose -d 'Use verbose output (-vv very verbose/build.rs output)' +complete -c cargo -n "__fish_seen_subcommand_from init" -l frozen -d 'Require Cargo.lock and cache are up to date' +complete -c cargo -n "__fish_seen_subcommand_from init" -l locked -d 'Require Cargo.lock is up to date' +complete -c cargo -n "__fish_seen_subcommand_from init" -l offline -d 'Run without accessing the network' +complete -c cargo -n "__fish_seen_subcommand_from install" -l version -d 'Specify a version to install' +complete -c cargo -n "__fish_seen_subcommand_from install" -l git -d 'Git URL to install the specified crate from' +complete -c cargo -n "__fish_seen_subcommand_from install" -l branch -d 'Branch to use when installing from git' +complete -c cargo -n "__fish_seen_subcommand_from install" -l tag -d 'Tag to use when installing from git' +complete -c cargo -n "__fish_seen_subcommand_from install" -l rev -d 'Specific commit to use when installing from git' +complete -c cargo -n "__fish_seen_subcommand_from install" -l path -d 'Filesystem path to local crate to install' +complete -c cargo -n "__fish_seen_subcommand_from install" -s j -l jobs -d 'Number of parallel jobs, defaults to # of CPUs' +complete -c cargo -n "__fish_seen_subcommand_from install" -l features -d 'Space or comma separated list of features to activate' +complete -c cargo -n "__fish_seen_subcommand_from install" -l profile -d 'Install artifacts with the specified profile' +complete -c cargo -n "__fish_seen_subcommand_from install" -l bin -d 'Install only the specified binary' +complete -c cargo -n "__fish_seen_subcommand_from install" -l example -d 'Install only the specified example' +complete -c cargo -n "__fish_seen_subcommand_from install" -l target -d 'Build for the target triple' +complete -c cargo -n "__fish_seen_subcommand_from install" -l target-dir -d 'Directory for all generated artifacts' +complete -c cargo -n "__fish_seen_subcommand_from install" -l root -d 'Directory to install packages into' +complete -c cargo -n "__fish_seen_subcommand_from install" -l index -d 'Registry index to install from' +complete -c cargo -n "__fish_seen_subcommand_from install" -l registry -d 'Registry to use' +complete -c cargo -n "__fish_seen_subcommand_from install" -l color -d 'Coloring: auto, always, never' +complete -c cargo -n "__fish_seen_subcommand_from install" -l config -d 'Override a configuration value (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from install" -s Z -d 'Unstable (nightly-only) flags to Cargo, see \'cargo -Z help\' for details' +complete -c cargo -n "__fish_seen_subcommand_from install" -s q -l quiet -d 'No output printed to stdout' +complete -c cargo -n "__fish_seen_subcommand_from install" -l list -d 'list all installed packages and their versions' +complete -c cargo -n "__fish_seen_subcommand_from install" -s f -l force -d 'Force overwriting existing crates or binaries' +complete -c cargo -n "__fish_seen_subcommand_from install" -l no-track -d 'Do not save tracking information' +complete -c cargo -n "__fish_seen_subcommand_from install" -l all-features -d 'Activate all available features' +complete -c cargo -n "__fish_seen_subcommand_from install" -l no-default-features -d 'Do not activate the `default` feature' +complete -c cargo -n "__fish_seen_subcommand_from install" -l debug -d 'Build in debug mode instead of release mode' +complete -c cargo -n "__fish_seen_subcommand_from install" -l bins -d 'Install all binaries' +complete -c cargo -n "__fish_seen_subcommand_from install" -l examples -d 'Install all examples' +complete -c cargo -n "__fish_seen_subcommand_from install" -s h -l help -d 'Prints help information' +complete -c cargo -n "__fish_seen_subcommand_from install" -s v -l verbose -d 'Use verbose output (-vv very verbose/build.rs output)' +complete -c cargo -n "__fish_seen_subcommand_from install" -l frozen -d 'Require Cargo.lock and cache are up to date' +complete -c cargo -n "__fish_seen_subcommand_from install" -l locked -d 'Require Cargo.lock is up to date' +complete -c cargo -n "__fish_seen_subcommand_from install" -l offline -d 'Run without accessing the network' +complete -c cargo -n "__fish_seen_subcommand_from locate-project" -l manifest-path -d 'Path to Cargo.toml' +complete -c cargo -n "__fish_seen_subcommand_from locate-project" -l message-format -d 'Output representation [possible values: json, plain]' +complete -c cargo -n "__fish_seen_subcommand_from locate-project" -l color -d 'Coloring: auto, always, never' +complete -c cargo -n "__fish_seen_subcommand_from locate-project" -l config -d 'Override a configuration value (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from locate-project" -s Z -d 'Unstable (nightly-only) flags to Cargo, see \'cargo -Z help\' for details' +complete -c cargo -n "__fish_seen_subcommand_from locate-project" -s q -l quiet -d 'No output printed to stdout' +complete -c cargo -n "__fish_seen_subcommand_from locate-project" -l workspace -d 'Locate Cargo.toml of the workspace root' +complete -c cargo -n "__fish_seen_subcommand_from locate-project" -s h -l help -d 'Prints help information' +complete -c cargo -n "__fish_seen_subcommand_from locate-project" -s V -l version -d 'Prints version information' +complete -c cargo -n "__fish_seen_subcommand_from locate-project" -s v -l verbose -d 'Use verbose output (-vv very verbose/build.rs output)' +complete -c cargo -n "__fish_seen_subcommand_from locate-project" -l frozen -d 'Require Cargo.lock and cache are up to date' +complete -c cargo -n "__fish_seen_subcommand_from locate-project" -l locked -d 'Require Cargo.lock is up to date' +complete -c cargo -n "__fish_seen_subcommand_from locate-project" -l offline -d 'Run without accessing the network' +complete -c cargo -n "__fish_seen_subcommand_from login" -l host -d 'Host to set the token for' +complete -c cargo -n "__fish_seen_subcommand_from login" -l registry -d 'Registry to use' +complete -c cargo -n "__fish_seen_subcommand_from login" -l color -d 'Coloring: auto, always, never' +complete -c cargo -n "__fish_seen_subcommand_from login" -l config -d 'Override a configuration value (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from login" -s Z -d 'Unstable (nightly-only) flags to Cargo, see \'cargo -Z help\' for details' +complete -c cargo -n "__fish_seen_subcommand_from login" -s q -l quiet -d 'No output printed to stdout' +complete -c cargo -n "__fish_seen_subcommand_from login" -s h -l help -d 'Prints help information' +complete -c cargo -n "__fish_seen_subcommand_from login" -s V -l version -d 'Prints version information' +complete -c cargo -n "__fish_seen_subcommand_from login" -s v -l verbose -d 'Use verbose output (-vv very verbose/build.rs output)' +complete -c cargo -n "__fish_seen_subcommand_from login" -l frozen -d 'Require Cargo.lock and cache are up to date' +complete -c cargo -n "__fish_seen_subcommand_from login" -l locked -d 'Require Cargo.lock is up to date' +complete -c cargo -n "__fish_seen_subcommand_from login" -l offline -d 'Run without accessing the network' +complete -c cargo -n "__fish_seen_subcommand_from logout" -l registry -d 'Registry to use' +complete -c cargo -n "__fish_seen_subcommand_from logout" -l color -d 'Coloring: auto, always, never' +complete -c cargo -n "__fish_seen_subcommand_from logout" -l config -d 'Override a configuration value (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from logout" -s Z -d 'Unstable (nightly-only) flags to Cargo, see \'cargo -Z help\' for details' +complete -c cargo -n "__fish_seen_subcommand_from logout" -s q -l quiet -d 'No output printed to stdout' +complete -c cargo -n "__fish_seen_subcommand_from logout" -s h -l help -d 'Prints help information' +complete -c cargo -n "__fish_seen_subcommand_from logout" -s V -l version -d 'Prints version information' +complete -c cargo -n "__fish_seen_subcommand_from logout" -s v -l verbose -d 'Use verbose output (-vv very verbose/build.rs output)' +complete -c cargo -n "__fish_seen_subcommand_from logout" -l frozen -d 'Require Cargo.lock and cache are up to date' +complete -c cargo -n "__fish_seen_subcommand_from logout" -l locked -d 'Require Cargo.lock is up to date' +complete -c cargo -n "__fish_seen_subcommand_from logout" -l offline -d 'Run without accessing the network' +complete -c cargo -n "__fish_seen_subcommand_from metadata" -l features -d 'Space or comma separated list of features to activate' +complete -c cargo -n "__fish_seen_subcommand_from metadata" -l filter-platform -d 'Only include resolve dependencies matching the given target-triple' +complete -c cargo -n "__fish_seen_subcommand_from metadata" -l manifest-path -d 'Path to Cargo.toml' +complete -c cargo -n "__fish_seen_subcommand_from metadata" -l format-version -d 'Format version' -r -f -a 1 +complete -c cargo -n "__fish_seen_subcommand_from metadata" -l color -d 'Coloring: auto, always, never' +complete -c cargo -n "__fish_seen_subcommand_from metadata" -l config -d 'Override a configuration value (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from metadata" -s Z -d 'Unstable (nightly-only) flags to Cargo, see \'cargo -Z help\' for details' +complete -c cargo -n "__fish_seen_subcommand_from metadata" -s q -l quiet -d 'Do not print cargo log messages' +complete -c cargo -n "__fish_seen_subcommand_from metadata" -l all-features -d 'Activate all available features' +complete -c cargo -n "__fish_seen_subcommand_from metadata" -l no-default-features -d 'Do not activate the `default` feature' +complete -c cargo -n "__fish_seen_subcommand_from metadata" -l no-deps -d 'Output information only about the workspace members and don\'t fetch dependencies' +complete -c cargo -n "__fish_seen_subcommand_from metadata" -s h -l help -d 'Prints help information' +complete -c cargo -n "__fish_seen_subcommand_from metadata" -s V -l version -d 'Prints version information' +complete -c cargo -n "__fish_seen_subcommand_from metadata" -s v -l verbose -d 'Use verbose output (-vv very verbose/build.rs output)' +complete -c cargo -n "__fish_seen_subcommand_from metadata" -l frozen -d 'Require Cargo.lock and cache are up to date' +complete -c cargo -n "__fish_seen_subcommand_from metadata" -l locked -d 'Require Cargo.lock is up to date' +complete -c cargo -n "__fish_seen_subcommand_from metadata" -l offline -d 'Run without accessing the network' +complete -c cargo -n "__fish_seen_subcommand_from new" -l registry -d 'Registry to use' +complete -c cargo -n "__fish_seen_subcommand_from new" -l vcs -d 'Initialize a new repository for the given version control system (git, hg, pijul, or fossil) or do not initialize any version control at all (none), overriding a global configuration.' -r -f -a "git hg pijul fossil none" +complete -c cargo -n "__fish_seen_subcommand_from new" -l edition -d 'Edition to set for the crate generated' -r -f -a "2015 2018 2021" +complete -c cargo -n "__fish_seen_subcommand_from new" -l name -d 'Set the resulting package name, defaults to the directory name' +complete -c cargo -n "__fish_seen_subcommand_from new" -l color -d 'Coloring: auto, always, never' +complete -c cargo -n "__fish_seen_subcommand_from new" -l config -d 'Override a configuration value (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from new" -s Z -d 'Unstable (nightly-only) flags to Cargo, see \'cargo -Z help\' for details' +complete -c cargo -n "__fish_seen_subcommand_from new" -s q -l quiet -d 'No output printed to stdout' +complete -c cargo -n "__fish_seen_subcommand_from new" -l bin -d 'Use a binary (application) template [default]' +complete -c cargo -n "__fish_seen_subcommand_from new" -l lib -d 'Use a library template' +complete -c cargo -n "__fish_seen_subcommand_from new" -s h -l help -d 'Prints help information' +complete -c cargo -n "__fish_seen_subcommand_from new" -s V -l version -d 'Prints version information' +complete -c cargo -n "__fish_seen_subcommand_from new" -s v -l verbose -d 'Use verbose output (-vv very verbose/build.rs output)' +complete -c cargo -n "__fish_seen_subcommand_from new" -l frozen -d 'Require Cargo.lock and cache are up to date' +complete -c cargo -n "__fish_seen_subcommand_from new" -l locked -d 'Require Cargo.lock is up to date' +complete -c cargo -n "__fish_seen_subcommand_from new" -l offline -d 'Run without accessing the network' +complete -c cargo -n "__fish_seen_subcommand_from owner" -s a -l add -d 'Name of a user or team to invite as an owner' +complete -c cargo -n "__fish_seen_subcommand_from owner" -s r -l remove -d 'Name of a user or team to remove as an owner' +complete -c cargo -n "__fish_seen_subcommand_from owner" -l index -d 'Registry index to modify owners for' +complete -c cargo -n "__fish_seen_subcommand_from owner" -l token -d 'API token to use when authenticating' +complete -c cargo -n "__fish_seen_subcommand_from owner" -l registry -d 'Registry to use' +complete -c cargo -n "__fish_seen_subcommand_from owner" -l color -d 'Coloring: auto, always, never' +complete -c cargo -n "__fish_seen_subcommand_from owner" -l config -d 'Override a configuration value (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from owner" -s Z -d 'Unstable (nightly-only) flags to Cargo, see \'cargo -Z help\' for details' +complete -c cargo -n "__fish_seen_subcommand_from owner" -s q -l quiet -d 'No output printed to stdout' +complete -c cargo -n "__fish_seen_subcommand_from owner" -s l -l list -d 'List owners of a crate' +complete -c cargo -n "__fish_seen_subcommand_from owner" -s h -l help -d 'Prints help information' +complete -c cargo -n "__fish_seen_subcommand_from owner" -s V -l version -d 'Prints version information' +complete -c cargo -n "__fish_seen_subcommand_from owner" -s v -l verbose -d 'Use verbose output (-vv very verbose/build.rs output)' +complete -c cargo -n "__fish_seen_subcommand_from owner" -l frozen -d 'Require Cargo.lock and cache are up to date' +complete -c cargo -n "__fish_seen_subcommand_from owner" -l locked -d 'Require Cargo.lock is up to date' +complete -c cargo -n "__fish_seen_subcommand_from owner" -l offline -d 'Run without accessing the network' +complete -c cargo -n "__fish_seen_subcommand_from package" -l target -d 'Build for the target triple' +complete -c cargo -n "__fish_seen_subcommand_from package" -l target-dir -d 'Directory for all generated artifacts' +complete -c cargo -n "__fish_seen_subcommand_from package" -l features -d 'Space or comma separated list of features to activate' +complete -c cargo -n "__fish_seen_subcommand_from package" -l manifest-path -d 'Path to Cargo.toml' +complete -c cargo -n "__fish_seen_subcommand_from package" -s j -l jobs -d 'Number of parallel jobs, defaults to # of CPUs' +complete -c cargo -n "__fish_seen_subcommand_from package" -l color -d 'Coloring: auto, always, never' +complete -c cargo -n "__fish_seen_subcommand_from package" -l config -d 'Override a configuration value (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from package" -s Z -d 'Unstable (nightly-only) flags to Cargo, see \'cargo -Z help\' for details' +complete -c cargo -n "__fish_seen_subcommand_from package" -s q -l quiet -d 'No output printed to stdout' +complete -c cargo -n "__fish_seen_subcommand_from package" -s l -l list -d 'Print files included in a package without making one' +complete -c cargo -n "__fish_seen_subcommand_from package" -l no-verify -d 'Don\'t verify the contents by building them' +complete -c cargo -n "__fish_seen_subcommand_from package" -l no-metadata -d 'Ignore warnings about a lack of human-usable metadata' +complete -c cargo -n "__fish_seen_subcommand_from package" -l allow-dirty -d 'Allow dirty working directories to be packaged' +complete -c cargo -n "__fish_seen_subcommand_from package" -l all-features -d 'Activate all available features' +complete -c cargo -n "__fish_seen_subcommand_from package" -l no-default-features -d 'Do not activate the `default` feature' +complete -c cargo -n "__fish_seen_subcommand_from package" -s h -l help -d 'Prints help information' +complete -c cargo -n "__fish_seen_subcommand_from package" -s V -l version -d 'Prints version information' +complete -c cargo -n "__fish_seen_subcommand_from package" -s v -l verbose -d 'Use verbose output (-vv very verbose/build.rs output)' +complete -c cargo -n "__fish_seen_subcommand_from package" -l frozen -d 'Require Cargo.lock and cache are up to date' +complete -c cargo -n "__fish_seen_subcommand_from package" -l locked -d 'Require Cargo.lock is up to date' +complete -c cargo -n "__fish_seen_subcommand_from package" -l offline -d 'Run without accessing the network' +complete -c cargo -n "__fish_seen_subcommand_from pkgid" -s p -l package -d 'Argument to get the package ID specifier for' +complete -c cargo -n "__fish_seen_subcommand_from pkgid" -l manifest-path -d 'Path to Cargo.toml' +complete -c cargo -n "__fish_seen_subcommand_from pkgid" -l color -d 'Coloring: auto, always, never' +complete -c cargo -n "__fish_seen_subcommand_from pkgid" -l config -d 'Override a configuration value (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from pkgid" -s Z -d 'Unstable (nightly-only) flags to Cargo, see \'cargo -Z help\' for details' +complete -c cargo -n "__fish_seen_subcommand_from pkgid" -s q -l quiet -d 'No output printed to stdout' +complete -c cargo -n "__fish_seen_subcommand_from pkgid" -s h -l help -d 'Prints help information' +complete -c cargo -n "__fish_seen_subcommand_from pkgid" -s V -l version -d 'Prints version information' +complete -c cargo -n "__fish_seen_subcommand_from pkgid" -s v -l verbose -d 'Use verbose output (-vv very verbose/build.rs output)' +complete -c cargo -n "__fish_seen_subcommand_from pkgid" -l frozen -d 'Require Cargo.lock and cache are up to date' +complete -c cargo -n "__fish_seen_subcommand_from pkgid" -l locked -d 'Require Cargo.lock is up to date' +complete -c cargo -n "__fish_seen_subcommand_from pkgid" -l offline -d 'Run without accessing the network' +complete -c cargo -n "__fish_seen_subcommand_from publish" -l index -d 'Registry index URL to upload the package to' +complete -c cargo -n "__fish_seen_subcommand_from publish" -l host -d 'DEPRECATED, renamed to \'--index\'' +complete -c cargo -n "__fish_seen_subcommand_from publish" -l token -d 'Token to use when uploading' +complete -c cargo -n "__fish_seen_subcommand_from publish" -l target -d 'Build for the target triple' +complete -c cargo -n "__fish_seen_subcommand_from publish" -l target-dir -d 'Directory for all generated artifacts' +complete -c cargo -n "__fish_seen_subcommand_from publish" -l manifest-path -d 'Path to Cargo.toml' +complete -c cargo -n "__fish_seen_subcommand_from publish" -l features -d 'Space or comma separated list of features to activate' +complete -c cargo -n "__fish_seen_subcommand_from publish" -s j -l jobs -d 'Number of parallel jobs, defaults to # of CPUs' +complete -c cargo -n "__fish_seen_subcommand_from publish" -l registry -d 'Registry to publish to' +complete -c cargo -n "__fish_seen_subcommand_from publish" -l color -d 'Coloring: auto, always, never' +complete -c cargo -n "__fish_seen_subcommand_from publish" -l config -d 'Override a configuration value (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from publish" -s Z -d 'Unstable (nightly-only) flags to Cargo, see \'cargo -Z help\' for details' +complete -c cargo -n "__fish_seen_subcommand_from publish" -s q -l quiet -d 'No output printed to stdout' +complete -c cargo -n "__fish_seen_subcommand_from publish" -l no-verify -d 'Don\'t verify the contents by building them' +complete -c cargo -n "__fish_seen_subcommand_from publish" -l allow-dirty -d 'Allow dirty working directories to be packaged' +complete -c cargo -n "__fish_seen_subcommand_from publish" -l all-features -d 'Activate all available features' +complete -c cargo -n "__fish_seen_subcommand_from publish" -l no-default-features -d 'Do not activate the `default` feature' +complete -c cargo -n "__fish_seen_subcommand_from publish" -l dry-run -d 'Perform all checks without uploading' +complete -c cargo -n "__fish_seen_subcommand_from publish" -s h -l help -d 'Prints help information' +complete -c cargo -n "__fish_seen_subcommand_from publish" -s V -l version -d 'Prints version information' +complete -c cargo -n "__fish_seen_subcommand_from publish" -s v -l verbose -d 'Use verbose output (-vv very verbose/build.rs output)' +complete -c cargo -n "__fish_seen_subcommand_from publish" -l frozen -d 'Require Cargo.lock and cache are up to date' +complete -c cargo -n "__fish_seen_subcommand_from publish" -l locked -d 'Require Cargo.lock is up to date' +complete -c cargo -n "__fish_seen_subcommand_from publish" -l offline -d 'Run without accessing the network' +complete -c cargo -n "__fish_seen_subcommand_from read-manifest" -l manifest-path -d 'Path to Cargo.toml' +complete -c cargo -n "__fish_seen_subcommand_from read-manifest" -l color -d 'Coloring: auto, always, never' +complete -c cargo -n "__fish_seen_subcommand_from read-manifest" -l config -d 'Override a configuration value (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from read-manifest" -s Z -d 'Unstable (nightly-only) flags to Cargo, see \'cargo -Z help\' for details' +complete -c cargo -n "__fish_seen_subcommand_from read-manifest" -s q -l quiet -d 'No output printed to stdout' +complete -c cargo -n "__fish_seen_subcommand_from read-manifest" -s h -l help -d 'Prints help information' +complete -c cargo -n "__fish_seen_subcommand_from read-manifest" -s V -l version -d 'Prints version information' +complete -c cargo -n "__fish_seen_subcommand_from read-manifest" -s v -l verbose -d 'Use verbose output (-vv very verbose/build.rs output)' +complete -c cargo -n "__fish_seen_subcommand_from read-manifest" -l frozen -d 'Require Cargo.lock and cache are up to date' +complete -c cargo -n "__fish_seen_subcommand_from read-manifest" -l locked -d 'Require Cargo.lock is up to date' +complete -c cargo -n "__fish_seen_subcommand_from read-manifest" -l offline -d 'Run without accessing the network' +complete -c cargo -n "__fish_seen_subcommand_from run" -l bin -d 'Name of the bin target to run' +complete -c cargo -n "__fish_seen_subcommand_from run" -l example -d 'Name of the example target to run' +complete -c cargo -n "__fish_seen_subcommand_from run" -s p -l package -d 'Package with the target to run' +complete -c cargo -n "__fish_seen_subcommand_from run" -s j -l jobs -d 'Number of parallel jobs, defaults to # of CPUs' +complete -c cargo -n "__fish_seen_subcommand_from run" -l profile -d 'Build artifacts with the specified profile' +complete -c cargo -n "__fish_seen_subcommand_from run" -l features -d 'Space or comma separated list of features to activate' +complete -c cargo -n "__fish_seen_subcommand_from run" -l target -d 'Build for the target triple' +complete -c cargo -n "__fish_seen_subcommand_from run" -l target-dir -d 'Directory for all generated artifacts' +complete -c cargo -n "__fish_seen_subcommand_from run" -l manifest-path -d 'Path to Cargo.toml' +complete -c cargo -n "__fish_seen_subcommand_from run" -l message-format -d 'Error format' +complete -c cargo -n "__fish_seen_subcommand_from run" -l color -d 'Coloring: auto, always, never' +complete -c cargo -n "__fish_seen_subcommand_from run" -l config -d 'Override a configuration value (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from run" -s Z -d 'Unstable (nightly-only) flags to Cargo, see \'cargo -Z help\' for details' +complete -c cargo -n "__fish_seen_subcommand_from run" -s q -l quiet -d 'No output printed to stdout' +complete -c cargo -n "__fish_seen_subcommand_from run" -l release -d 'Build artifacts in release mode, with optimizations' +complete -c cargo -n "__fish_seen_subcommand_from run" -l all-features -d 'Activate all available features' +complete -c cargo -n "__fish_seen_subcommand_from run" -l no-default-features -d 'Do not activate the `default` feature' +complete -c cargo -n "__fish_seen_subcommand_from run" -l unit-graph -d 'Output build graph in JSON (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from run" -l ignore-rust-version -d 'Ignore `rust-version` specification in packages (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from run" -s h -l help -d 'Prints help information' +complete -c cargo -n "__fish_seen_subcommand_from run" -s V -l version -d 'Prints version information' +complete -c cargo -n "__fish_seen_subcommand_from run" -s v -l verbose -d 'Use verbose output (-vv very verbose/build.rs output)' +complete -c cargo -n "__fish_seen_subcommand_from run" -l frozen -d 'Require Cargo.lock and cache are up to date' +complete -c cargo -n "__fish_seen_subcommand_from run" -l locked -d 'Require Cargo.lock is up to date' +complete -c cargo -n "__fish_seen_subcommand_from run" -l offline -d 'Run without accessing the network' +complete -c cargo -n "__fish_seen_subcommand_from rustc" -s p -l package -d 'Package to build' +complete -c cargo -n "__fish_seen_subcommand_from rustc" -s j -l jobs -d 'Number of parallel jobs, defaults to # of CPUs' +complete -c cargo -n "__fish_seen_subcommand_from rustc" -l bin -d 'Build only the specified binary' +complete -c cargo -n "__fish_seen_subcommand_from rustc" -l example -d 'Build only the specified example' +complete -c cargo -n "__fish_seen_subcommand_from rustc" -l test -d 'Build only the specified test target' +complete -c cargo -n "__fish_seen_subcommand_from rustc" -l bench -d 'Build only the specified bench target' +complete -c cargo -n "__fish_seen_subcommand_from rustc" -l profile -d 'Build artifacts with the specified profile' +complete -c cargo -n "__fish_seen_subcommand_from rustc" -l features -d 'Space or comma separated list of features to activate' +complete -c cargo -n "__fish_seen_subcommand_from rustc" -l target -d 'Target triple which compiles will be for' +complete -c cargo -n "__fish_seen_subcommand_from rustc" -l print -d 'Output compiler information without compiling' +complete -c cargo -n "__fish_seen_subcommand_from rustc" -l target-dir -d 'Directory for all generated artifacts' +complete -c cargo -n "__fish_seen_subcommand_from rustc" -l manifest-path -d 'Path to Cargo.toml' +complete -c cargo -n "__fish_seen_subcommand_from rustc" -l message-format -d 'Error format' +complete -c cargo -n "__fish_seen_subcommand_from rustc" -l color -d 'Coloring: auto, always, never' +complete -c cargo -n "__fish_seen_subcommand_from rustc" -l config -d 'Override a configuration value (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from rustc" -s Z -d 'Unstable (nightly-only) flags to Cargo, see \'cargo -Z help\' for details' +complete -c cargo -n "__fish_seen_subcommand_from rustc" -s q -l quiet -d 'No output printed to stdout' +complete -c cargo -n "__fish_seen_subcommand_from rustc" -l lib -d 'Build only this package\'s library' +complete -c cargo -n "__fish_seen_subcommand_from rustc" -l bins -d 'Build all binaries' +complete -c cargo -n "__fish_seen_subcommand_from rustc" -l examples -d 'Build all examples' +complete -c cargo -n "__fish_seen_subcommand_from rustc" -l tests -d 'Build all tests' +complete -c cargo -n "__fish_seen_subcommand_from rustc" -l benches -d 'Build all benches' +complete -c cargo -n "__fish_seen_subcommand_from rustc" -l all-targets -d 'Build all targets' +complete -c cargo -n "__fish_seen_subcommand_from rustc" -l release -d 'Build artifacts in release mode, with optimizations' +complete -c cargo -n "__fish_seen_subcommand_from rustc" -l all-features -d 'Activate all available features' +complete -c cargo -n "__fish_seen_subcommand_from rustc" -l no-default-features -d 'Do not activate the `default` feature' +complete -c cargo -n "__fish_seen_subcommand_from rustc" -l unit-graph -d 'Output build graph in JSON (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from rustc" -l ignore-rust-version -d 'Ignore `rust-version` specification in packages (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from rustc" -l future-incompat-report -d 'Ouputs a future incompatibility report at the end of the build (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from rustc" -s h -l help -d 'Prints help information' +complete -c cargo -n "__fish_seen_subcommand_from rustc" -s V -l version -d 'Prints version information' +complete -c cargo -n "__fish_seen_subcommand_from rustc" -s v -l verbose -d 'Use verbose output (-vv very verbose/build.rs output)' +complete -c cargo -n "__fish_seen_subcommand_from rustc" -l frozen -d 'Require Cargo.lock and cache are up to date' +complete -c cargo -n "__fish_seen_subcommand_from rustc" -l locked -d 'Require Cargo.lock is up to date' +complete -c cargo -n "__fish_seen_subcommand_from rustc" -l offline -d 'Run without accessing the network' +complete -c cargo -n "__fish_seen_subcommand_from rustdoc" -s p -l package -d 'Package to document' +complete -c cargo -n "__fish_seen_subcommand_from rustdoc" -s j -l jobs -d 'Number of parallel jobs, defaults to # of CPUs' +complete -c cargo -n "__fish_seen_subcommand_from rustdoc" -l bin -d 'Build only the specified binary' +complete -c cargo -n "__fish_seen_subcommand_from rustdoc" -l example -d 'Build only the specified example' +complete -c cargo -n "__fish_seen_subcommand_from rustdoc" -l test -d 'Build only the specified test target' +complete -c cargo -n "__fish_seen_subcommand_from rustdoc" -l bench -d 'Build only the specified bench target' +complete -c cargo -n "__fish_seen_subcommand_from rustdoc" -l profile -d 'Build artifacts with the specified profile' +complete -c cargo -n "__fish_seen_subcommand_from rustdoc" -l features -d 'Space or comma separated list of features to activate' +complete -c cargo -n "__fish_seen_subcommand_from rustdoc" -l target -d 'Build for the target triple' +complete -c cargo -n "__fish_seen_subcommand_from rustdoc" -l target-dir -d 'Directory for all generated artifacts' +complete -c cargo -n "__fish_seen_subcommand_from rustdoc" -l manifest-path -d 'Path to Cargo.toml' +complete -c cargo -n "__fish_seen_subcommand_from rustdoc" -l message-format -d 'Error format' +complete -c cargo -n "__fish_seen_subcommand_from rustdoc" -l color -d 'Coloring: auto, always, never' +complete -c cargo -n "__fish_seen_subcommand_from rustdoc" -l config -d 'Override a configuration value (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from rustdoc" -s Z -d 'Unstable (nightly-only) flags to Cargo, see \'cargo -Z help\' for details' +complete -c cargo -n "__fish_seen_subcommand_from rustdoc" -s q -l quiet -d 'No output printed to stdout' +complete -c cargo -n "__fish_seen_subcommand_from rustdoc" -l open -d 'Opens the docs in a browser after the operation' +complete -c cargo -n "__fish_seen_subcommand_from rustdoc" -l lib -d 'Build only this package\'s library' +complete -c cargo -n "__fish_seen_subcommand_from rustdoc" -l bins -d 'Build all binaries' +complete -c cargo -n "__fish_seen_subcommand_from rustdoc" -l examples -d 'Build all examples' +complete -c cargo -n "__fish_seen_subcommand_from rustdoc" -l tests -d 'Build all tests' +complete -c cargo -n "__fish_seen_subcommand_from rustdoc" -l benches -d 'Build all benches' +complete -c cargo -n "__fish_seen_subcommand_from rustdoc" -l all-targets -d 'Build all targets' +complete -c cargo -n "__fish_seen_subcommand_from rustdoc" -l release -d 'Build artifacts in release mode, with optimizations' +complete -c cargo -n "__fish_seen_subcommand_from rustdoc" -l all-features -d 'Activate all available features' +complete -c cargo -n "__fish_seen_subcommand_from rustdoc" -l no-default-features -d 'Do not activate the `default` feature' +complete -c cargo -n "__fish_seen_subcommand_from rustdoc" -l unit-graph -d 'Output build graph in JSON (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from rustdoc" -l ignore-rust-version -d 'Ignore `rust-version` specification in packages (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from rustdoc" -s h -l help -d 'Prints help information' +complete -c cargo -n "__fish_seen_subcommand_from rustdoc" -s V -l version -d 'Prints version information' +complete -c cargo -n "__fish_seen_subcommand_from rustdoc" -s v -l verbose -d 'Use verbose output (-vv very verbose/build.rs output)' +complete -c cargo -n "__fish_seen_subcommand_from rustdoc" -l frozen -d 'Require Cargo.lock and cache are up to date' +complete -c cargo -n "__fish_seen_subcommand_from rustdoc" -l locked -d 'Require Cargo.lock is up to date' +complete -c cargo -n "__fish_seen_subcommand_from rustdoc" -l offline -d 'Run without accessing the network' +complete -c cargo -n "__fish_seen_subcommand_from search" -l index -d 'Registry index URL to upload the package to' +complete -c cargo -n "__fish_seen_subcommand_from search" -l host -d 'DEPRECATED, renamed to \'--index\'' +complete -c cargo -n "__fish_seen_subcommand_from search" -l limit -d 'Limit the number of results (default: 10, max: 100)' +complete -c cargo -n "__fish_seen_subcommand_from search" -l registry -d 'Registry to use' +complete -c cargo -n "__fish_seen_subcommand_from search" -l color -d 'Coloring: auto, always, never' +complete -c cargo -n "__fish_seen_subcommand_from search" -l config -d 'Override a configuration value (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from search" -s Z -d 'Unstable (nightly-only) flags to Cargo, see \'cargo -Z help\' for details' +complete -c cargo -n "__fish_seen_subcommand_from search" -s q -l quiet -d 'No output printed to stdout' +complete -c cargo -n "__fish_seen_subcommand_from search" -s h -l help -d 'Prints help information' +complete -c cargo -n "__fish_seen_subcommand_from search" -s V -l version -d 'Prints version information' +complete -c cargo -n "__fish_seen_subcommand_from search" -s v -l verbose -d 'Use verbose output (-vv very verbose/build.rs output)' +complete -c cargo -n "__fish_seen_subcommand_from search" -l frozen -d 'Require Cargo.lock and cache are up to date' +complete -c cargo -n "__fish_seen_subcommand_from search" -l locked -d 'Require Cargo.lock is up to date' +complete -c cargo -n "__fish_seen_subcommand_from search" -l offline -d 'Run without accessing the network' +complete -c cargo -n "__fish_seen_subcommand_from test" -l bin -d 'Test only the specified binary' +complete -c cargo -n "__fish_seen_subcommand_from test" -l example -d 'Test only the specified example' +complete -c cargo -n "__fish_seen_subcommand_from test" -l test -d 'Test only the specified test target' +complete -c cargo -n "__fish_seen_subcommand_from test" -l bench -d 'Test only the specified bench target' +complete -c cargo -n "__fish_seen_subcommand_from test" -s p -l package -d 'Package to run tests for' +complete -c cargo -n "__fish_seen_subcommand_from test" -l exclude -d 'Exclude packages from the test' +complete -c cargo -n "__fish_seen_subcommand_from test" -s j -l jobs -d 'Number of parallel jobs, defaults to # of CPUs' +complete -c cargo -n "__fish_seen_subcommand_from test" -l profile -d 'Build artifacts with the specified profile' +complete -c cargo -n "__fish_seen_subcommand_from test" -l features -d 'Space or comma separated list of features to activate' +complete -c cargo -n "__fish_seen_subcommand_from test" -l target -d 'Build for the target triple' +complete -c cargo -n "__fish_seen_subcommand_from test" -l target-dir -d 'Directory for all generated artifacts' +complete -c cargo -n "__fish_seen_subcommand_from test" -l manifest-path -d 'Path to Cargo.toml' +complete -c cargo -n "__fish_seen_subcommand_from test" -l message-format -d 'Error format' +complete -c cargo -n "__fish_seen_subcommand_from test" -l color -d 'Coloring: auto, always, never' +complete -c cargo -n "__fish_seen_subcommand_from test" -l config -d 'Override a configuration value (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from test" -s Z -d 'Unstable (nightly-only) flags to Cargo, see \'cargo -Z help\' for details' +complete -c cargo -n "__fish_seen_subcommand_from test" -s q -l quiet -d 'Display one character per test instead of one line' +complete -c cargo -n "__fish_seen_subcommand_from test" -l lib -d 'Test only this package\'s library unit tests' +complete -c cargo -n "__fish_seen_subcommand_from test" -l bins -d 'Test all binaries' +complete -c cargo -n "__fish_seen_subcommand_from test" -l examples -d 'Test all examples' +complete -c cargo -n "__fish_seen_subcommand_from test" -l tests -d 'Test all tests' +complete -c cargo -n "__fish_seen_subcommand_from test" -l benches -d 'Test all benches' +complete -c cargo -n "__fish_seen_subcommand_from test" -l all-targets -d 'Test all targets' +complete -c cargo -n "__fish_seen_subcommand_from test" -l doc -d 'Test only this library\'s documentation' +complete -c cargo -n "__fish_seen_subcommand_from test" -l no-run -d 'Compile, but don\'t run tests' +complete -c cargo -n "__fish_seen_subcommand_from test" -l no-fail-fast -d 'Run all tests regardless of failure' +complete -c cargo -n "__fish_seen_subcommand_from test" -l all -d 'Alias for --workspace (deprecated)' +complete -c cargo -n "__fish_seen_subcommand_from test" -l workspace -d 'Test all packages in the workspace' +complete -c cargo -n "__fish_seen_subcommand_from test" -l release -d 'Build artifacts in release mode, with optimizations' +complete -c cargo -n "__fish_seen_subcommand_from test" -l all-features -d 'Activate all available features' +complete -c cargo -n "__fish_seen_subcommand_from test" -l no-default-features -d 'Do not activate the `default` feature' +complete -c cargo -n "__fish_seen_subcommand_from test" -l ignore-rust-version -d 'Ignore `rust-version` specification in packages (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from test" -l unit-graph -d 'Output build graph in JSON (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from test" -l future-incompat-report -d 'Ouputs a future incompatibility report at the end of the build (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from test" -s h -l help -d 'Prints help information' +complete -c cargo -n "__fish_seen_subcommand_from test" -s V -l version -d 'Prints version information' +complete -c cargo -n "__fish_seen_subcommand_from test" -s v -l verbose -d 'Use verbose output (-vv very verbose/build.rs output)' +complete -c cargo -n "__fish_seen_subcommand_from test" -l frozen -d 'Require Cargo.lock and cache are up to date' +complete -c cargo -n "__fish_seen_subcommand_from test" -l locked -d 'Require Cargo.lock is up to date' +complete -c cargo -n "__fish_seen_subcommand_from test" -l offline -d 'Run without accessing the network' +complete -c cargo -n "__fish_seen_subcommand_from tree" -l manifest-path -d 'Path to Cargo.toml' +complete -c cargo -n "__fish_seen_subcommand_from tree" -s p -l package -d 'Package to be used as the root of the tree' +complete -c cargo -n "__fish_seen_subcommand_from tree" -l exclude -d 'Exclude specific workspace members' +complete -c cargo -n "__fish_seen_subcommand_from tree" -l features -d 'Space or comma separated list of features to activate' +complete -c cargo -n "__fish_seen_subcommand_from tree" -l target -d 'Filter dependencies matching the given target-triple (default host platform). Pass `all` to include all targets.' +complete -c cargo -n "__fish_seen_subcommand_from tree" -s e -l edges -d 'The kinds of dependencies to display (features, normal, build, dev, all, no-dev, no-build, no-normal)' +complete -c cargo -n "__fish_seen_subcommand_from tree" -s i -l invert -d 'Invert the tree direction and focus on the given package' +complete -c cargo -n "__fish_seen_subcommand_from tree" -l prefix -d 'Change the prefix (indentation) of how each entry is displayed' -r -f -a "depth indent none" +complete -c cargo -n "__fish_seen_subcommand_from tree" -l charset -d 'Character set to use in output: utf8, ascii' -r -f -a "utf8 ascii" +complete -c cargo -n "__fish_seen_subcommand_from tree" -s f -l format -d 'Format string used for printing dependencies' +complete -c cargo -n "__fish_seen_subcommand_from tree" -l color -d 'Coloring: auto, always, never' +complete -c cargo -n "__fish_seen_subcommand_from tree" -l config -d 'Override a configuration value (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from tree" -s Z -d 'Unstable (nightly-only) flags to Cargo, see \'cargo -Z help\' for details' +complete -c cargo -n "__fish_seen_subcommand_from tree" -s q -l quiet -d 'Suppress status messages' +complete -c cargo -n "__fish_seen_subcommand_from tree" -l workspace -d 'Display the tree for all packages in the workspace' +complete -c cargo -n "__fish_seen_subcommand_from tree" -s a -l all +complete -c cargo -n "__fish_seen_subcommand_from tree" -l all-targets +complete -c cargo -n "__fish_seen_subcommand_from tree" -l all-features -d 'Activate all available features' +complete -c cargo -n "__fish_seen_subcommand_from tree" -l no-default-features -d 'Do not activate the `default` feature' +complete -c cargo -n "__fish_seen_subcommand_from tree" -l no-dev-dependencies +complete -c cargo -n "__fish_seen_subcommand_from tree" -l no-indent +complete -c cargo -n "__fish_seen_subcommand_from tree" -l prefix-depth +complete -c cargo -n "__fish_seen_subcommand_from tree" -l no-dedupe -d 'Do not de-duplicate (repeats all shared dependencies)' +complete -c cargo -n "__fish_seen_subcommand_from tree" -s d -l duplicates -d 'Show only dependencies which come in multiple versions (implies -i)' +complete -c cargo -n "__fish_seen_subcommand_from tree" -s V -l version +complete -c cargo -n "__fish_seen_subcommand_from tree" -s h -l help -d 'Prints help information' +complete -c cargo -n "__fish_seen_subcommand_from tree" -s v -l verbose -d 'Use verbose output (-vv very verbose/build.rs output)' +complete -c cargo -n "__fish_seen_subcommand_from tree" -l frozen -d 'Require Cargo.lock and cache are up to date' +complete -c cargo -n "__fish_seen_subcommand_from tree" -l locked -d 'Require Cargo.lock is up to date' +complete -c cargo -n "__fish_seen_subcommand_from tree" -l offline -d 'Run without accessing the network' +complete -c cargo -n "__fish_seen_subcommand_from uninstall" -s p -l package -d 'Package to uninstall' +complete -c cargo -n "__fish_seen_subcommand_from uninstall" -l bin -d 'Only uninstall the binary NAME' +complete -c cargo -n "__fish_seen_subcommand_from uninstall" -l root -d 'Directory to uninstall packages from' +complete -c cargo -n "__fish_seen_subcommand_from uninstall" -l color -d 'Coloring: auto, always, never' +complete -c cargo -n "__fish_seen_subcommand_from uninstall" -l config -d 'Override a configuration value (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from uninstall" -s Z -d 'Unstable (nightly-only) flags to Cargo, see \'cargo -Z help\' for details' +complete -c cargo -n "__fish_seen_subcommand_from uninstall" -s q -l quiet -d 'No output printed to stdout' +complete -c cargo -n "__fish_seen_subcommand_from uninstall" -s h -l help -d 'Prints help information' +complete -c cargo -n "__fish_seen_subcommand_from uninstall" -s V -l version -d 'Prints version information' +complete -c cargo -n "__fish_seen_subcommand_from uninstall" -s v -l verbose -d 'Use verbose output (-vv very verbose/build.rs output)' +complete -c cargo -n "__fish_seen_subcommand_from uninstall" -l frozen -d 'Require Cargo.lock and cache are up to date' +complete -c cargo -n "__fish_seen_subcommand_from uninstall" -l locked -d 'Require Cargo.lock is up to date' +complete -c cargo -n "__fish_seen_subcommand_from uninstall" -l offline -d 'Run without accessing the network' +complete -c cargo -n "__fish_seen_subcommand_from update" -s p -l package -d 'Package to update' +complete -c cargo -n "__fish_seen_subcommand_from update" -l precise -d 'Update a single dependency to exactly PRECISE when used with -p' +complete -c cargo -n "__fish_seen_subcommand_from update" -l manifest-path -d 'Path to Cargo.toml' +complete -c cargo -n "__fish_seen_subcommand_from update" -l color -d 'Coloring: auto, always, never' +complete -c cargo -n "__fish_seen_subcommand_from update" -l config -d 'Override a configuration value (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from update" -s Z -d 'Unstable (nightly-only) flags to Cargo, see \'cargo -Z help\' for details' +complete -c cargo -n "__fish_seen_subcommand_from update" -s q -l quiet -d 'No output printed to stdout' +complete -c cargo -n "__fish_seen_subcommand_from update" -s w -l workspace -d 'Only update the workspace packages' +complete -c cargo -n "__fish_seen_subcommand_from update" -l aggressive -d 'Force updating all dependencies of SPEC as well when used with -p' +complete -c cargo -n "__fish_seen_subcommand_from update" -l dry-run -d 'Don\'t actually write the lockfile' +complete -c cargo -n "__fish_seen_subcommand_from update" -s h -l help -d 'Prints help information' +complete -c cargo -n "__fish_seen_subcommand_from update" -s V -l version -d 'Prints version information' +complete -c cargo -n "__fish_seen_subcommand_from update" -s v -l verbose -d 'Use verbose output (-vv very verbose/build.rs output)' +complete -c cargo -n "__fish_seen_subcommand_from update" -l frozen -d 'Require Cargo.lock and cache are up to date' +complete -c cargo -n "__fish_seen_subcommand_from update" -l locked -d 'Require Cargo.lock is up to date' +complete -c cargo -n "__fish_seen_subcommand_from update" -l offline -d 'Run without accessing the network' +complete -c cargo -n "__fish_seen_subcommand_from vendor" -l manifest-path -d 'Path to Cargo.toml' +complete -c cargo -n "__fish_seen_subcommand_from vendor" -s s -l sync -d 'Additional `Cargo.toml` to sync and vendor' +complete -c cargo -n "__fish_seen_subcommand_from vendor" -l color -d 'Coloring: auto, always, never' +complete -c cargo -n "__fish_seen_subcommand_from vendor" -l config -d 'Override a configuration value (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from vendor" -s Z -d 'Unstable (nightly-only) flags to Cargo, see \'cargo -Z help\' for details' +complete -c cargo -n "__fish_seen_subcommand_from vendor" -s q -l quiet -d 'No output printed to stdout' +complete -c cargo -n "__fish_seen_subcommand_from vendor" -l no-delete -d 'Don\'t delete older crates in the vendor directory' +complete -c cargo -n "__fish_seen_subcommand_from vendor" -l respect-source-config -d 'Respect `[source]` config in `.cargo/config`' +complete -c cargo -n "__fish_seen_subcommand_from vendor" -l versioned-dirs -d 'Always include version in subdir name' +complete -c cargo -n "__fish_seen_subcommand_from vendor" -l no-merge-sources +complete -c cargo -n "__fish_seen_subcommand_from vendor" -l relative-path +complete -c cargo -n "__fish_seen_subcommand_from vendor" -l only-git-deps +complete -c cargo -n "__fish_seen_subcommand_from vendor" -l disallow-duplicates +complete -c cargo -n "__fish_seen_subcommand_from vendor" -s h -l help -d 'Prints help information' +complete -c cargo -n "__fish_seen_subcommand_from vendor" -s V -l version -d 'Prints version information' +complete -c cargo -n "__fish_seen_subcommand_from vendor" -s v -l verbose -d 'Use verbose output (-vv very verbose/build.rs output)' +complete -c cargo -n "__fish_seen_subcommand_from vendor" -l frozen -d 'Require Cargo.lock and cache are up to date' +complete -c cargo -n "__fish_seen_subcommand_from vendor" -l locked -d 'Require Cargo.lock is up to date' +complete -c cargo -n "__fish_seen_subcommand_from vendor" -l offline -d 'Run without accessing the network' +complete -c cargo -n "__fish_seen_subcommand_from verify-project" -l manifest-path -d 'Path to Cargo.toml' +complete -c cargo -n "__fish_seen_subcommand_from verify-project" -l color -d 'Coloring: auto, always, never' +complete -c cargo -n "__fish_seen_subcommand_from verify-project" -l config -d 'Override a configuration value (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from verify-project" -s Z -d 'Unstable (nightly-only) flags to Cargo, see \'cargo -Z help\' for details' +complete -c cargo -n "__fish_seen_subcommand_from verify-project" -s q -l quiet -d 'No output printed to stdout' +complete -c cargo -n "__fish_seen_subcommand_from verify-project" -s h -l help -d 'Prints help information' +complete -c cargo -n "__fish_seen_subcommand_from verify-project" -s V -l version -d 'Prints version information' +complete -c cargo -n "__fish_seen_subcommand_from verify-project" -s v -l verbose -d 'Use verbose output (-vv very verbose/build.rs output)' +complete -c cargo -n "__fish_seen_subcommand_from verify-project" -l frozen -d 'Require Cargo.lock and cache are up to date' +complete -c cargo -n "__fish_seen_subcommand_from verify-project" -l locked -d 'Require Cargo.lock is up to date' +complete -c cargo -n "__fish_seen_subcommand_from verify-project" -l offline -d 'Run without accessing the network' +complete -c cargo -n "__fish_seen_subcommand_from version" -l color -d 'Coloring: auto, always, never' +complete -c cargo -n "__fish_seen_subcommand_from version" -l config -d 'Override a configuration value (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from version" -s Z -d 'Unstable (nightly-only) flags to Cargo, see \'cargo -Z help\' for details' +complete -c cargo -n "__fish_seen_subcommand_from version" -s q -l quiet -d 'No output printed to stdout' +complete -c cargo -n "__fish_seen_subcommand_from version" -s h -l help -d 'Prints help information' +complete -c cargo -n "__fish_seen_subcommand_from version" -s V -l version -d 'Prints version information' +complete -c cargo -n "__fish_seen_subcommand_from version" -s v -l verbose -d 'Use verbose output (-vv very verbose/build.rs output)' +complete -c cargo -n "__fish_seen_subcommand_from version" -l frozen -d 'Require Cargo.lock and cache are up to date' +complete -c cargo -n "__fish_seen_subcommand_from version" -l locked -d 'Require Cargo.lock is up to date' +complete -c cargo -n "__fish_seen_subcommand_from version" -l offline -d 'Run without accessing the network' +complete -c cargo -n "__fish_seen_subcommand_from yank" -l vers -d 'The version to yank or un-yank' +complete -c cargo -n "__fish_seen_subcommand_from yank" -l index -d 'Registry index to yank from' +complete -c cargo -n "__fish_seen_subcommand_from yank" -l token -d 'API token to use when authenticating' +complete -c cargo -n "__fish_seen_subcommand_from yank" -l registry -d 'Registry to use' +complete -c cargo -n "__fish_seen_subcommand_from yank" -l color -d 'Coloring: auto, always, never' +complete -c cargo -n "__fish_seen_subcommand_from yank" -l config -d 'Override a configuration value (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from yank" -s Z -d 'Unstable (nightly-only) flags to Cargo, see \'cargo -Z help\' for details' +complete -c cargo -n "__fish_seen_subcommand_from yank" -s q -l quiet -d 'No output printed to stdout' +complete -c cargo -n "__fish_seen_subcommand_from yank" -l undo -d 'Undo a yank, putting a version back into the index' +complete -c cargo -n "__fish_seen_subcommand_from yank" -s h -l help -d 'Prints help information' +complete -c cargo -n "__fish_seen_subcommand_from yank" -s V -l version -d 'Prints version information' +complete -c cargo -n "__fish_seen_subcommand_from yank" -s v -l verbose -d 'Use verbose output (-vv very verbose/build.rs output)' +complete -c cargo -n "__fish_seen_subcommand_from yank" -l frozen -d 'Require Cargo.lock and cache are up to date' +complete -c cargo -n "__fish_seen_subcommand_from yank" -l locked -d 'Require Cargo.lock is up to date' +complete -c cargo -n "__fish_seen_subcommand_from yank" -l offline -d 'Run without accessing the network' +complete -c cargo -n "__fish_seen_subcommand_from help" -l color -d 'Coloring: auto, always, never' +complete -c cargo -n "__fish_seen_subcommand_from help" -l config -d 'Override a configuration value (unstable)' +complete -c cargo -n "__fish_seen_subcommand_from help" -s Z -d 'Unstable (nightly-only) flags to Cargo, see \'cargo -Z help\' for details' +complete -c cargo -n "__fish_seen_subcommand_from help" -s h -l help -d 'Prints help information' +complete -c cargo -n "__fish_seen_subcommand_from help" -s V -l version -d 'Prints version information' +complete -c cargo -n "__fish_seen_subcommand_from help" -s v -l verbose -d 'Use verbose output (-vv very verbose/build.rs output)' +complete -c cargo -n "__fish_seen_subcommand_from help" -l frozen -d 'Require Cargo.lock and cache are up to date' +complete -c cargo -n "__fish_seen_subcommand_from help" -l locked -d 'Require Cargo.lock is up to date' +complete -c cargo -n "__fish_seen_subcommand_from help" -l offline -d 'Run without accessing the network' diff --git a/dot_config/fish/completions/git.fish b/dot_config/fish/completions/git.fish new file mode 100644 index 0000000..0fa768d --- /dev/null +++ b/dot_config/fish/completions/git.fish @@ -0,0 +1,2162 @@ +# fish completion for git + +# Use this instead of calling git directly; it passes the commands that are +# already present on the commandline to git. This is relevant for --work-tree etc, see issue #6219. +function __fish_git + set -l saved_args $argv + set -l global_args + set -l cmd (commandline -opc) + # We assume that git is the first command until we have a better awareness of subcommands, see #2705. + set -e cmd[1] + if argparse -s (__fish_git_global_optspecs) -- $cmd 2>/dev/null + # All arguments that were parsed by argparse are global git options. + set -l num_global_args (math (count $cmd) - (count $argv)) + if test $num_global_args -ne 0 + set global_args $cmd[1..$num_global_args] + end + end + # Using 'command git' to avoid interactions for aliases from git to (e.g.) hub + # Using eval to expand ~ and variables specified on the commandline. + eval command git $global_args \$saved_args 2>/dev/null +end + +# Print an optspec for argparse to handle git's options that are independent of any subcommand. +function __fish_git_global_optspecs + string join \n v-version h/help C= c=+ 'e-exec-path=?' H-html-path M-man-path I-info-path p/paginate \ + P/no-pager o-no-replace-objects b-bare G-git-dir= W-work-tree= N-namespace= S-super-prefix= \ + l-literal-pathspecs g-glob-pathspecs O-noglob-pathspecs i-icase-pathspecs +end + +function __fish_git_commits + # Complete commits with their subject line as the description + # This allows filtering by subject with the new pager! + # Because even subject lines can be quite long, + # trim them (abbrev'd hash+tab+subject) to 73 characters + # + # Hashes we just truncate ourselves to 10 characters, without disambiguating. + # That technically means that sometimes we don't give usable SHAs, + # but according to https://stackoverflow.com/a/37403152/3150338, + # that happens for 3 commits out of 600k. + # For fish, at the time of writing, out of 12200 commits, 7 commits need 8 characters. + # And since this takes about 1/3rd of the time that disambiguating takes... + __fish_git log --pretty=tformat:"%H"\t"%<(64,trunc)%s" --all --max-count=1000 2>/dev/null \ + | string replace -r '^([0-9a-f]{10})[0-9a-f]*\t(.*)' '$1\t$2' +end + +function __fish_git_recent_commits + # Like __fish_git_commits, but not on all branches and limited to + # the last 50 commits. Used for fixup, where only the current branch + # and the latest commits make sense. + __fish_git log --pretty=tformat:"%h"\t"%<(64,trunc)%s" --max-count=50 $argv 2>/dev/null +end + +function __fish_git_branches + # This is much faster than using `git branch`, + # and avoids having to deal with localized "detached HEAD" messages. + __fish_git for-each-ref --format='%(refname)' refs/heads/ refs/remotes/ 2>/dev/null \ + | string replace -r '^refs/heads/(.*)$' '$1\tLocal Branch' \ + | string replace -r '^refs/remotes/(.*)$' '$1\tRemote Branch' +end + +function __fish_git_submodules + __fish_git submodule 2>/dev/null \ + | string replace -r '^.[^ ]+ ([^ ]+).*$' '$1' +end + +function __fish_git_local_branches + __fish_git for-each-ref --format='%(refname:strip=2)' refs/heads/ 2>/dev/null \ + | string replace -rf '.*' '$0\tLocal Branch' +end + +function __fish_git_unique_remote_branches + # `git checkout` accepts remote branches without the remote part + # if they are unambiguous. + # E.g. if only alice has a "frobulate" branch + # `git checkout frobulate` is equivalent to `git checkout -b frobulate --track alice/frobulate`. + __fish_git for-each-ref --format="%(refname:strip=3)" \ + --sort="refname:strip=3" \ + "refs/remotes/*/$match*" "refs/remotes/*/*/**" 2>/dev/null | uniq -u +end + +function __fish_git_tags + __fish_git tag --sort=-creatordate 2>/dev/null +end + +function __fish_git_heads + set -l gitdir (__fish_git rev-parse --git-dir 2>/dev/null) + or return # No git dir, no need to even test. + for head in HEAD FETCH_HEAD ORIG_HEAD MERGE_HEAD + if test -f $gitdir/$head + echo $head + end + end +end + +function __fish_git_refs + __fish_git_branches + __fish_git_tags + __fish_git_heads +end + +function __fish_git_remotes + __fish_git remote 2>/dev/null +end + +function __fish_git_files + # A function to show various kinds of files git knows about, + # by parsing `git status --porcelain`. + # + # This accepts arguments to denote the kind of files: + # - added: Staged added files (unstaged adds are untracked) + # - copied + # - deleted + # - deleted-staged + # - ignored + # - modified: Files that have been modified (but aren't staged) + # - modified-staged: Staged modified files + # - renamed + # - untracked + # and as a convenience "all-staged" + # to get _all_ kinds of staged files. + + # Save the repo root to remove it from the path later. + set -l root (__fish_git rev-parse --show-toplevel --is-bare-repository 2>/dev/null) + or return + + # Skip bare repositories. + test "$root[2]" = true + and return + or set -e root[2] + + # Cache the translated descriptions so we don't have to get it + # once per file. + contains -- all-staged $argv; and set -l all_staged + contains -- unmerged $argv; and set -l unmerged + and set -l unmerged_desc "Unmerged File" + contains -- added $argv; or set -ql all_staged; and set -l added + and set -l added_desc "Added file" + contains -- modified $argv; and set -l modified + and set -l modified_desc "Modified file" + contains -- untracked $argv; and set -l untracked + and set -l untracked_desc "Untracked file" + contains -- modified-staged $argv; or set -ql all_staged; and set -l modified_staged + and set -l staged_modified_desc "Staged modified file" + contains -- modified-staged-deleted $argv; or set -ql modified_staged; and set -l modified_staged_deleted + and set -l modified_staged_deleted_desc "Staged modified and deleted file" + contains -- deleted $argv; and set -l deleted + and set -l deleted_desc "Deleted file" + contains -- deleted-staged $argv; or set -ql all_staged; and set -l deleted_staged + and set -l staged_deleted_desc "Staged deleted file" + contains -- ignored $argv; and set -l ignored + and set -l ignored_desc "Ignored file" + contains -- renamed $argv; and set -l renamed + and set -l renamed_desc "Renamed file" + contains -- copied $argv; and set -l copied + and set -l copied_desc "Copied file" + + # A literal "?" for use in `case`. + set -l q '\\?' + if status test-feature qmark-noglob + set q '?' + end + set -l use_next + # git status --porcelain gives us all the info we need, in a format we don't. + # The v2 format has better documentation and doesn't use " " to denote anything, + # but it's only been added in git 2.11.0, which was released November 2016. + + # Also, we ignore submodules because they aren't useful as arguments (generally), + # and they slow things down quite significantly. + # E.g. `git reset $submodule` won't do anything (not even print an error). + # --ignore-submodules=all was added in git 1.7.2, released July 2010. + # + set -l status_opt --ignore-submodules=all + + # If we aren't looking for ignored files, let git status skip them. + # (don't use --ignored=no because that was only added in git 2.16, from Jan 2018. + set -q ignored; and set -a status_opt --ignored + + # If we're looking for untracked files, we give untracked files even inside untracked directories. + # This makes it nicer if e.g. you're in an untracked directory and want to just add one file. + set -q untracked; and set -a status_opt -uall + or set -a status_opt -uno + + # We need to set status.relativePaths to true because the porcelain v2 format still honors that, + # and core.quotePath to false so characters > 0x80 (i.e. non-ASCII) aren't considered special. + # We explicitly enable globs so we can use that to match the current token. + set -l git_opt -c status.relativePaths -c core.quotePath= + + # We pick the v2 format if we can, because it shows relative filenames (if used without "-z"). + # We fall back on the v1 format by reading git's _version_, because trying v2 first is too slow. + set -l ver (__fish_git --version | string replace -rf 'git version (\d+)\.(\d+)\.?.*' '$1\n$2') + # Version >= 2.11.* has the v2 format. + if test "$ver[1]" -gt 2 2>/dev/null; or test "$ver[1]" -eq 2 -a "$ver[2]" -ge 11 2>/dev/null + __fish_git $git_opt status --porcelain=2 $status_opt \ + | while read -la -d ' ' line + set -l file + set -l desc + # The basic status format is "XY", where X is "our" state (meaning the staging area), + # and "Y" is "their" state. + # A "." means it's unmodified. + switch "$line[1..2]" + case 'u *' + # Unmerged + # "Unmerged entries have the following format; the first character is a "u" to distinguish from ordinary changed entries." + # "u

" + # This is first to distinguish it from normal modifications et al. + set -ql unmerged + and set file "$line[11..-1]" + and set desc $unmerged_desc + case '2 .R*' '2 R.*' + # Renamed/Copied + # From the docs: "Renamed or copied entries have the following format:" + # "2 " + # Since is \t, we can't really parse it unambiguously. + # The "-z" format would be great here! + set -ql renamed + and set file (string replace -r '\t[^\t]*' '' -- "$line[10..-1]") + and set desc $renamed_desc + case '2 RM*' '2 RT*' + # Staged as renamed, with unstaged modifications (issue #6031) + set -ql renamed + or set -ql modified + and set file (string replace -r '\t[^\t]*' '' -- "$line[10..-1]") + set -ql renamed + and set desc $renamed_desc + set -ql modified + and set --append desc $modified_desc + case '2 RD*' + # Staged as renamed, but deleted in the worktree + set -ql renamed + or set -ql deleted + and set file (string replace -r '\t[^\t]*' '' -- "$line[10..-1]") + set -ql renamed + and set desc $renamed_desc + set -ql deleted + and set --append desc $deleted_desc + case '2 .C*' '2 C.*' + set -ql copied + and set file (string replace -r '\t[^\t].*' '' -- "$line[10..-1]") + and set desc $copied_desc + case '1 A.*' + # Additions are only shown here if they are staged. + # Otherwise it's an untracked file. + set -ql added + and set file "$line[9..-1]" + and set desc $added_desc + case '1 AD*' + # Added files that were since deleted + if set -ql added + set file "$line[9..-1]" + set desc $added_desc + else if set -ql deleted + set file "$line[9..-1]" + set desc $deleted_desc + end + case "1 AM*" "1 AT*" + # Added files with additional modifications + # ("T" is type-changed. As of git 2.33 this appears to be undocumented. + # it happens when e.g. a file is replaced with a symlink. + # For our purposes it's the same as modified) + if set -ql added + set file "$line[9..-1]" + set desc $added_desc + else if set -ql modified + set file "$line[9..-1]" + set desc $modified_desc + end + case '1 .A*' + # Files added with git add --intent-to-add. + set -ql untracked + and set file "$line[9..-1]" + and set desc $untracked_desc + case '1 .M*' '1 .T*' + # Modified + # From the docs: "Ordinary changed entries have the following format:" + # "1 " + # Since can contain spaces, print from element 9 onwards + set -ql modified + and set file "$line[9..-1]" + and set desc $modified_desc + case '1 MD*' '1 TD*' + set -ql modified_staged_deleted + and set file "$line[9..-1]" + and set desc $modified_staged_deleted_desc + case '1 M.*' '1 T.*' + # If the character is first ("M."), then that means it's "our" change, + # which means it is staged. + # This is useless for many commands - e.g. `checkout` won't do anything with this. + # So it needs to be requested explicitly. + set -ql modified_staged + and set file "$line[9..-1]" + and set desc $staged_modified_desc + case '1 MM*' '1 MT*' '1 TM*' '1 TT*' + # Staged-modified with unstaged modifications + # These need to be offered for both kinds of modified. + if set -ql modified + set file "$line[9..-1]" + set desc $modified_desc + else if set -ql modified_staged + set file "$line[9..-1]" + set desc $staged_modified_desc + end + case '1 .D*' + set -ql deleted + and set file "$line[9..-1]" + and set desc $deleted_desc + case '1 D.*' + # TODO: The docs are unclear on this. + # There is both X unmodified and Y either M or D ("not updated") + # and Y is D and X is unmodified or [MARC] ("deleted in work tree"). + # For our purposes, we assume this is a staged deletion. + set -ql deleted_staged + and set file "$line[9..-1]" + and set desc $staged_deleted_desc + case "$q"' *' + # Untracked + # "? " - print from element 2 on. + set -ql untracked + and set file "$line[2..-1]" + and set desc $untracked_desc + case '! *' + # Ignored + # "! " - print from element 2 on. + set -ql ignored + and set file "$line[2..-1]" + and set desc $ignored_desc + end + # Only try printing if the file was selected. + if set -q file[1] + for d in $desc + # Without "-z", git sometimes _quotes_ filenames. + # It adds quotes around it _and_ escapes the character. + # e.g. `"a\\b"`. + # We just remove the quotes and hope it works out. + # If this contains newlines or tabs, + # there is nothing we can do, but that's a general issue with scripted completions. + set file (string trim -c \" -- $file) + # First the relative filename. + printf '%s\t%s\n' "$file" $d + # Now from repo root. + # Only do this if the filename isn't a simple child, + # or the current token starts with ":" + if string match -q '../*' -- $file + or string match -q ':*' -- (commandline -ct) + set -l fromroot (builtin realpath -- $file 2>/dev/null) + and set fromroot (string replace -- "$root/" ":/" "$fromroot") + and printf '%s\t%s\n' "$fromroot" $d + end + end + end + end + else + # v1 format logic + # We need to compute relative paths on our own, which is slow. + # Pre-remove the root at least, so we have fewer components to deal with. + set -l _pwd_list (string replace "$root/" "" -- $PWD/ | string split /) + test -z "$_pwd_list[-1]"; and set -e _pwd_list[-1] + # Cache the previous relative path because these are sorted, so we can reuse it + # often for files in the same directory. + set -l previous + # Note that we can't use space as a delimiter between status and filename, because + # the status can contain spaces - " M" is different from "M ". + __fish_git $git_opt status --porcelain -z $status_opt \ + | while read -lz -d' ' line + set -l desc + # The entire line is the "from" from a rename. + if set -q use_next[1] + if contains -- $use_next $argv + set -l var "$use_next"_desc + set desc $$var + set -e use_next[1] + else + set -e use_next[1] + continue + end + end + + # The format is two characters for status, then a space and then + # up to a NUL for the filename. + # + set -l stat (string sub -l 2 -- $line) + # The basic status format is "XY", where X is "our" state (meaning the staging area), + # and "Y" is "their" state (meaning the work tree). + # A " " means it's unmodified. + # + # Be careful about the ordering here! + switch "$stat" + case DD AU UD UA DU AA UU + # Unmerged + set -ql unmerged + and set desc $unmerged_desc + case 'R ' RM RD + # Renamed/Copied + # These have the "from" name as the next batch. + # TODO: Do we care about the new name? + set use_next renamed + continue + case 'C ' CM CD + set use_next copied + continue + case AM + if set -ql added + set file "$line[9..-1]" + set desc $added_desc + else if set -ql modified + set file "$line[9..-1]" + set desc $modified_desc + end + case AD + if set -ql added + set file "$line[9..-1]" + set desc $added_desc + else if set -ql deleted + set file "$line[9..-1]" + set desc $deleted_desc + end + case 'A ' + # Additions are only shown here if they are staged. + # Otherwise it's an untracked file. + set -ql added + and set desc $added_desc + case '*M' + # Modified + set -ql modified + and set desc $modified_desc + case 'M*' + # If the character is first ("M "), then that means it's "our" change, + # which means it is staged. + # This is useless for many commands - e.g. `checkout` won't do anything with this. + # So it needs to be requested explicitly. + set -ql modified_staged + and set desc $staged_modified_desc + case '*D' + set -ql deleted + and set desc $deleted_desc + case 'D*' + # TODO: The docs are unclear on this. + # There is both X unmodified and Y either M or D ("not updated") + # and Y is D and X is unmodified or [MARC] ("deleted in work tree"). + # For our purposes, we assume this is a staged deletion. + set -ql deleted_staged + and set desc $staged_deleted_desc + case "$q$q" + # Untracked + set -ql untracked + and set desc $untracked_desc + case '!!' + # Ignored + set -ql ignored + and set desc $ignored_desc + end + if set -q desc[1] + # Again: "XY filename", so the filename starts on character 4. + set -l relfile (string sub -s 4 -- $line) + + set -l file + # Computing relative path by hand. + set -l abs (string split / -- $relfile) + # If it's in the same directory, we just need to change the filename. + if test "$abs[1..-2]" = "$previous[1..-2]" + # If we didn't have a previous file, and the current file is in the current directory, + # this would error out. + # + # See #5728. + set -q previous[1] + and set previous[-1] $abs[-1] + or set previous $abs + else + set -l pwd_list $_pwd_list + # Remove common prefix + while test "$pwd_list[1]" = "$abs[1]" + set -e pwd_list[1] + set -e abs[1] + end + # Go a dir up for every entry left in pwd_list, then into $abs + set previous (string replace -r '.*' '..' -- $pwd_list) $abs + end + set -a file (string join / -- $previous) + + # The filename with ":/" prepended. + if string match -q '../*' -- $file + or string match -q ':*' -- (commandline -ct) + set file (string replace -- "$root/" ":/" "$root/$relfile") + end + + if test "$root/$relfile" = (pwd -P)/$relfile + set file $relfile + end + + printf '%s\n' $file\t$desc + end + end + end +end + +# Lists files included in the index of a commit, branch, or tag (not necessarily HEAD) +function __fish_git_rev_files + set -l rev $argv[1] + set -l path $argv[2] + + # Strip any partial files from the path before handing it to `git show` + set -l path (string replace -r -- '(.*/|).*' '$1' $path) + + # List files in $rev's index, skipping the "tree ..." header, but appending + # the parent path, which git does not include in the output (and fish requires) + printf "$path%s\n" (git show $rev:$path | sed '1,2d') +end + +# Provides __fish_git_rev_files completions for the current token +function __fish_git_complete_rev_files + set -l split (string split -m 1 ":" (commandline -ot)) + set -l rev $split[1] + set -l path $split[2] + + printf "$rev:%s\n" (__fish_git_rev_files $rev $path) +end + +# Determines whether we can/should complete with __fish_git_rev_files +function __fish_git_needs_rev_files + # git (as of 2.20) accepts the rev:path syntax for a number of subcommands, + # but then doesn't emit the expected (or any?) output, e.g. `git log master:foo` + # + # This definitely works with `git show` to retrieve a copy of a file as it exists + # in the index of revision $rev, it should be updated to include others as they + # are identified. + __fish_git_using_command show; and string match -r "^[^-].*:" -- (commandline -ot) +end + +function __fish_git_ranges + set -l both (commandline -ot | string replace -r '\.{2,3}' \n\$0\n) + set -l from $both[1] + set -l dots $both[2] + # If we didn't need to split (or there's nothing _to_ split), complete only the first part + # Note that status here is from `string replace` because `set` doesn't alter it + if test -z "$from" -o $status -gt 0 + if commandline -ct | string match -q '*..*' + # The cursor is right of a .. range operator, make sure to include them first. + __fish_git_refs | string replace -r '' "$dots" + else + __fish_git_refs | string replace \t "$dots"\t + end + return 0 + end + + set -l from_refs + if commandline -ct | string match -q '*..*' + # If the cursor is right of a .. range operator, only complete the right part. + set from_refs $from + else + set from_refs (__fish_git_refs | string match -e "$from" | string replace -r \t'.*$' '') + end + + set -l to $both[3] + # Remove description from the from-ref, not the to-ref. + for from_ref in $from_refs + for to_ref in (__fish_git_refs | string match "*$to*") # if $to is empty, this correctly matches everything + printf "%s%s%s\n" $from_ref $dots $to_ref + end + end +end + +function __fish_git_needs_command + # Figure out if the current invocation already has a command. + set -l cmd (commandline -opc) + set -e cmd[1] + argparse -s (__fish_git_global_optspecs) -- $cmd 2>/dev/null + or return 0 + # These flags function as commands, effectively. + set -q _flag_version; and return 1 + set -q _flag_html_path; and return 1 + set -q _flag_man_path; and return 1 + set -q _flag_info_path; and return 1 + if set -q argv[1] + # Also print the command, so this can be used to figure out what it is. + echo $argv[1] + return 1 + end + return 0 +end + +function __fish_git_config_keys + # Print already defined config values first + # Config keys may span multiple lines, so parse using null char + # With -z, key and value are separated by space, not "=" + __fish_git config -lz | while read -lz key value + # Print only first line of value(with an ellipsis) if multiline + printf '%s\t%s\n' $key (string replace \n …\n -- $value)[1] + end + # Print all recognized config keys; duplicates are not shown twice by fish + printf '%s\n' (__fish_git help --config)[1..-2] # Last line is a footer; ignore it +end + +# HACK: Aliases +# Git allows aliases, so we need to see what command the current command-token corresponds to +# (so we can complete e.g. `lg` like `log`). +# Checking `git config` for a lot of aliases can be quite slow if it is called +# for every possible command. +# Ideally, we'd `complete --wraps` this, but that is not currently possible, as is +# using `complete -C` like +# complete -c git -n '__fish_git_using_command lg' -a '(complete -C"git log ")' +# +# So instead, we store the aliases in global variables, named after the alias, containing the command. +# This is because alias:command is an n:1 mapping (an alias can only have one corresponding command, +# but a command can be aliased multiple times) + +# Approximately duplicates the logic from https://github.com/git/git/blob/d486ca60a51c9cb1fe068803c3f540724e95e83a/contrib/completion/git-completion.bash#L1130 +# The Git script also finds aliases that reference other aliases via a loop but this is fine for a PoC +function __fish_git_aliased_command + for word in (string split ' ' -- $argv) + switch $word + case !gitk gitk + echo gitk + return + # Adding " to the list + case '!*' '-*' '*=*' git '()' '{' : '\'*' '"*' + continue + case '*' + echo $word + return + end + end +end + +git config -z --get-regexp 'alias\..*' | while read -lz alias cmdline + set -l command (__fish_git_aliased_command $cmdline) + string match -q --regex '\w+' -- $command; or continue + # Git aliases can contain chars that variable names can't - escape them. + set -l alias (string replace 'alias.' '' -- $alias | string escape --style=var) + set -g __fish_git_alias_$alias $command +end + +function __fish_git_using_command + set -l cmd (__fish_git_needs_command) + test -z "$cmd" + and return 1 + contains -- $cmd $argv + and return 0 + + # Check aliases. + set -l varname __fish_git_alias_(string escape --style=var -- $cmd) + set -q $varname + and contains -- $$varname $argv + and return 0 + return 1 +end + +function __fish_git_stash_using_command + set -l cmd (commandline -opc) + __fish_git_using_command stash + or return 2 + # The word after the stash command _must_ be the subcommand + set cmd $cmd[(contains -i -- "stash" $cmd)..-1] + set -e cmd[1] + set -q cmd[1] + or return 1 + contains -- $cmd[1] $argv + and return 0 + return 1 +end + +function __fish_git_stash_not_using_subcommand + set -l cmd (commandline -opc) + __fish_git_using_command stash + or return 2 + set cmd $cmd[(contains -i -- "stash" $cmd)..-1] + set -q cmd[2] + and return 1 + return 0 +end + +function __fish_git_complete_worktrees + __fish_git worktree list --porcelain | string replace --regex --filter '^worktree\s*' '' +end + +function __fish_git_complete_stashes + __fish_git stash list --format=%gd:%gs 2>/dev/null | string replace ":" \t +end + +function __fish_git_aliases + __fish_git config -z --get-regexp '^alias\.' 2>/dev/null | while read -lz key value + begin + set -l name (string replace -r '^.*\.' '' -- $key) + # Only use the first line of the value as the description. + set -l val (printf '%s\n' $value)[1] + printf "%s\t%s\n" $name "Alias for $val" + end + end +end + +function __fish_git_custom_commands + # complete all commands starting with git- + # however, a few builtin commands are placed into $PATH by git because + # they're used by the ssh transport. We could filter them out by checking + # if any of these completion results match the name of the builtin git commands, + # but it's simpler just to blacklist these names. They're unlikely to change, + # and the failure mode is we accidentally complete a plumbing command. + for name in (string replace -r "^.*/git-([^/]*)" '$1' $PATH/git-*) + switch $name + case cvsserver receive-pack shell upload-archive upload-pack + # skip these + case \* + echo $name + end + end +end + +# Suggest branches for the specified remote - returns 1 if no known remote is specified +function __fish_git_branch_for_remote + set -l remotes (__fish_git_remotes) + set -l remote + set -l cmd (commandline -opc) + for r in $remotes + if contains -- $r $cmd + set remote $r + break + end + end + set -q remote[1] + or return 1 + __fish_git_branches | string replace -f -- "$remote/" '' +end + +# Return 0 if the current token is a possible commit-hash with at least 3 characters +function __fish_git_possible_commithash + set -q argv[1] + and set -l token $argv[1] + or set -l token (commandline -ct) + if string match -qr '^[0-9a-fA-F]{3,}$' -- $token + return 0 + end + return 1 +end + +function __fish_git_reflog + __fish_git reflog --no-decorate 2>/dev/null | string replace -r '[0-9a-f]* (.+@\{[0-9]+\}): (.*)$' '$1\t$2' +end + +function __fish_git_help_all_concepts + git help -g | string match -e -r '^ \w+' | while read -l concept desc + printf "%s\tConcept: %s\n" $concept (string trim $desc) + end +end + +function __fish_git_diff_opt -a option + switch $option + case diff-algorithm + printf "%b" " +default\tBasic greedy diff algorithm +myers\tBasic greedy diff algorithm +minimal\tMake smallest diff possible +patience\tPatience diff algorithm +histogram\tPatience algorithm with low-occurrence common elements" + case diff-filter + printf "%b" " +A\tAdded files +C\tCopied files +D\tDeleted files +M\tModified files +R\tRenamed files +T\tType changed files +U\tUnmerged files +X\tUnknown files +B\tBroken pairing files" + case dirstat + printf "%b" " +changes\tCount lines that have been removed from the source / added to the destination +lines\tRegular line-based diff analysis +files\tCount the number of files changed +cumulative\tCount changes in a child directory for the parent directory as well" + case ignore-submodules + printf "%b" " +none\tUntracked/modified files +untracked\tNot considered dirty when they only contain untracked content +dirty\tIgnore all changes to the work tree of submodules +all\tHide all changes to submodules (default)" + case submodule + printf "%b" " +short\tShow the name of the commits at the beginning and end of the range +log\tList the commits in the range +diff\tShow an inline diff of the changes" + case ws-error-highlight + printf "%b" " +context\tcontext lines of the diff +old\told lines of the diff +new\tnew lines of the diff +none\treset previous values +default\treset the list to 'new' +all\tShorthand for 'old,new,context'" + end +end + +function __fish_git_show_opt -a option + switch $option + case format pretty + printf "%b" " +oneline\t +short\t<sha1> / <author> / <title line> +medium\t<sha1> / <author> / <author date> / <title> / <commit msg> +full\t<sha1> / <author> / <committer> / <title> / <commit msg> +fuller\t<sha1> / <author> / <author date> / <committer> / <committer date> / <title> / <commit msg> +email\t<sha1> <date> / <author> / <author date> / <title> / <commit msg> +raw\tShow the entire commit exactly as stored in the commit object +format:\tSpecify which information to show" + end +end + +function __fish_git_is_rebasing + test -e (__fish_git rev-parse --absolute-git-dir)/rebase-merge +end + +# general options +complete -f -c git -l help -d 'Display the manual of a git command' +complete -f -c git -n __fish_git_needs_command -l version -d 'Display version' +complete -x -c git -n __fish_git_needs_command -s C -a '(__fish_complete_directories)' -d 'Run as if git was started in this directory' +complete -x -c git -n __fish_git_needs_command -s c -a '(__fish_git config -l 2>/dev/null | string replace = \t)' -d 'Set a configuration option' +complete -x -c git -n __fish_git_needs_command -l exec-path -a '(__fish_complete_directories)' -d 'Get or set the path to the git programs' +complete -f -c git -n __fish_git_needs_command -l html-path -d 'Print the path to the html documentation' +complete -f -c git -n __fish_git_needs_command -l man-path -d 'Print the path to the man documentation' +complete -f -c git -n __fish_git_needs_command -l info-path -d 'Print the path to the info documentation' +complete -f -c git -n __fish_git_needs_command -s p -l paginate -d 'Pipe output into a pager' +complete -f -c git -n __fish_git_needs_command -l no-pager -d 'Do not pipe output into a pager' +complete -r -c git -n __fish_git_needs_command -l git-dir -d 'Set the path to the repository' +complete -r -c git -n __fish_git_needs_command -l work-tree -d 'Set the path to the working tree' +complete -f -c git -n __fish_git_needs_command -l namespace -d 'Set the namespace' +complete -f -c git -n __fish_git_needs_command -l bare -d 'Treat the repository as bare' +complete -f -c git -n __fish_git_needs_command -l no-replace-objects -d 'Do not use replacement refs to replace git objects' +complete -f -c git -n __fish_git_needs_command -l literal-pathspecs -d 'Treat pathspecs literally' +complete -f -c git -n __fish_git_needs_command -l glob-pathspecs -d 'Treat pathspecs as globs' +complete -f -c git -n __fish_git_needs_command -l noglob-pathspecs -d "Don't treat pathspecs as globs" +complete -f -c git -n __fish_git_needs_command -l icase-pathspecs -d 'Match pathspecs case-insensitively' + +# Options shared between multiple commands +complete -f -c git -n '__fish_git_using_command log show diff-tree rev-list' -l pretty -a '(__fish_git_show_opt pretty)' + +complete -c git -n '__fish_git_using_command diff show range-diff' -l abbrev -d 'Show only a partial prefix instead of the full 40-byte hexadecimal object name' +complete -c git -n '__fish_git_using_command diff show range-diff' -l binary -d 'Output a binary diff that can be applied with "git-apply"' +complete -c git -n '__fish_git_using_command diff show range-diff' -l check -d 'Warn if changes introduce conflict markers or whitespace errors' +complete -c git -n '__fish_git_using_command diff show range-diff' -l color -d 'Show colored diff' +complete -c git -n '__fish_git_using_command diff show range-diff' -l color-moved -d 'Moved lines of code are colored differently' +complete -c git -n '__fish_git_using_command diff show range-diff' -l color-words -d 'Equivalent to --word-diff=color plus --word-diff-regex=<regex>' +complete -c git -n '__fish_git_using_command diff show range-diff' -l compact-summary -d 'Output a condensed summary of extended header information' +complete -c git -n '__fish_git_using_command diff show range-diff log' -l dst-prefix -d 'Show the given destination prefix instead of "b/"' +complete -c git -n '__fish_git_using_command diff show range-diff' -l ext-diff -d 'Allow an external diff helper to be executed' +complete -c git -n '__fish_git_using_command diff show range-diff' -l find-copies-harder -d 'Inspect unmodified files as candidates for the source of copy' +complete -c git -n '__fish_git_using_command diff show range-diff' -l find-object -d 'Look for differences that change the number of occurrences of the object' +complete -c git -n '__fish_git_using_command diff show range-diff' -l full-index -d 'Show the full pre- and post-image blob object names on the "index" line' +complete -c git -n '__fish_git_using_command diff show range-diff' -l histogram -d 'Generate a diff using the "histogram diff" algorithm' +complete -c git -n '__fish_git_using_command diff show range-diff' -l ignore-blank-lines -d 'Ignore changes whose lines are all blank' +complete -c git -n '__fish_git_using_command diff show range-diff' -l ignore-cr-at-eol -d 'Ignore carrige-return at the end of line when doing a comparison' +complete -c git -n '__fish_git_using_command diff show range-diff' -l ignore-space-at-eol -d 'Ignore changes in whitespace at EOL' +complete -c git -n '__fish_git_using_command diff show range-diff' -l indent-heuristic -d 'Enable the heuristic that shift diff hunk boundaries' +complete -c git -n '__fish_git_using_command diff show range-diff log' -l inter-hunk-context -d 'Show the context between diff hunks, up to the specified number of lines' +complete -c git -n '__fish_git_using_command diff show range-diff log' -l ita-invisible-in-index -d 'Make the entry appear as a new file in "git diff" and non-existent in "git diff -l cached"' +complete -c git -n '__fish_git_using_command diff show range-diff log' -l line-prefix -d 'Prepend an additional prefix to every line of output' +complete -c git -n '__fish_git_using_command diff show range-diff' -l minimal -d 'Spend extra time to make sure the smallest possible diff is produced' +complete -c git -n '__fish_git_using_command diff show range-diff' -l name-only -d 'Show only names of changed files' +complete -c git -n '__fish_git_using_command diff show range-diff' -l name-status -d 'Show only names and status of changed files' +complete -c git -n '__fish_git_using_command diff show range-diff' -l no-color -d 'Turn off colored diff' +complete -c git -n '__fish_git_using_command diff show range-diff' -l no-ext-diff -d 'Disallow external diff drivers' +complete -c git -n '__fish_git_using_command diff show range-diff' -l no-indent-heuristic -d 'Disable the indent heuristic' +complete -c git -n '__fish_git_using_command diff show range-diff log' -l no-prefix -d 'Do not show any source or destination prefix' +complete -c git -n '__fish_git_using_command diff show range-diff' -l no-renames -d 'Turn off rename detection' +complete -c git -n '__fish_git_using_command diff show range-diff' -l no-textconv -d 'Disallow external text conversion filters to be run when comparing binary files' +complete -c git -n '__fish_git_using_command diff show range-diff' -l numstat -d 'Shows number of added/deleted lines in decimal notation' +complete -c git -n '__fish_git_using_command diff show range-diff' -l patch-with-raw -d 'Synonym for -p --raw' +complete -c git -n '__fish_git_using_command diff show range-diff' -l patch-with-stat -d 'Synonym for -p --stat' +complete -c git -n '__fish_git_using_command diff show range-diff' -l patience -d 'Generate a diff using the "patience diff" algorithm' +complete -c git -n '__fish_git_using_command diff show range-diff log' -l pickaxe-all -d 'When -S or -G finds a change, show all the changes in that changeset' +complete -c git -n '__fish_git_using_command diff show range-diff log' -l pickaxe-regex -d 'Treat the <string> given to -S as an extended POSIX regular expression to match' +complete -c git -n '__fish_git_using_command diff show range-diff log' -l relative -d 'Exclude changes outside the directory and show relative pathnames' +complete -c git -n '__fish_git_using_command diff show range-diff' -l shortstat -d 'Output only the last line of the --stat format containing total number of modified files' +complete -c git -n '__fish_git_using_command diff show range-diff log' -l src-prefix -d 'Show the given source prefix instead of "a/"' +complete -c git -n '__fish_git_using_command diff show range-diff' -l stat -d 'Generate a diffstat' +complete -c git -n '__fish_git_using_command diff show range-diff apply' -l stat -d 'Generate a diffstat' +complete -c git -n '__fish_git_using_command diff show range-diff' -l summary -d 'Output a condensed summary of extended header information' +complete -c git -n '__fish_git_using_command diff show range-diff' -l textconv -d 'Allow external text conversion filters to be run when comparing binary files' +complete -c git -n '__fish_git_using_command diff show range-diff' -l word-diff -d 'Show a word diff' +complete -c git -n '__fish_git_using_command diff show range-diff' -l word-diff-regex -d 'Use <regex> to decide what a word is' +complete -c git -n '__fish_git_using_command diff show range-diff log' -s a -l text -d 'Treat all files as text' +complete -c git -n '__fish_git_using_command diff show range-diff log' -s B -l break-rewrites -d 'Break complete rewrite changes into pairs of delete and create' +complete -c git -n '__fish_git_using_command diff show range-diff' -s b -l ignore-space-change -d 'Ignore changes in amount of whitespace' +complete -c git -n '__fish_git_using_command diff show range-diff log' -s C -l find-copies -d 'Detect copies as well as renames' +complete -c git -n '__fish_git_using_command diff show range-diff log' -s D -l irreversible-delete -d 'Omit the preimage for deletes' +complete -c git -n '__fish_git_using_command diff show range-diff log' -s G -d "Look for differences where <regex> matches the patch's added/removed lines" +complete -c git -n '__fish_git_using_command diff show range-diff log' -s M -l find-renames -d 'Detect and report renames' +complete -c git -n '__fish_git_using_command diff show range-diff log' -s R -d 'Swap inputs to create a reverse diff' +complete -c git -n '__fish_git_using_command diff show range-diff log' -s S -d 'Look for differences that change the number of occurrences of the string' +complete -c git -n '__fish_git_using_command diff show range-diff' -s W -l function-context -d 'Show whole surrounding functions of changes' +complete -c git -n '__fish_git_using_command diff show range-diff' -s w -l ignore-all-space -d 'Ignore whitespace when comparing lines' +complete -c git -n '__fish_git_using_command diff show range-diff' -s z -d 'Use NULs as output field/commit terminators' +complete -r -c git -n '__fish_git_using_command diff show range-diff log' -s O -d 'Control the order in which files appear in the output' +complete -f -c git -n '__fish_git_using_command diff show range-diff' -l anchored -d 'Generate a diff using the "anchored diff" algorithm' +complete -x -c git -n '__fish_git_using_command diff show range-diff log' -s l -d 'Prevents rename/copy detection when rename/copy targets exceed the given number' +complete -x -c git -n '__fish_git_using_command diff show range-diff' -l diff-filter -a '(__fish_git_diff_opt diff-filter)' -d 'Choose diff filters' +complete -x -c git -n '__fish_git_using_command diff log show range-diff' -l diff-algorithm -a '(__fish_git_diff_opt diff-algorithm)' -d 'Choose a diff algorithm' +complete -x -c git -n '__fish_git_using_command diff log show range-diff' -l dirstat -a '(__fish_git_diff_opt dirstat)' -d 'Output the distribution of relative amount of changes for each sub-directory' +complete -x -c git -n '__fish_git_using_command diff log show range-diff' -l ignore-submodules -a '(__fish_git_diff_opt ignore-submodules)' -d 'Ignore changes to submodules in the diff generation' +complete -x -c git -n '__fish_git_using_command diff log show range-diff' -l submodule -a '(__fish_git_diff_opt submodule)' -d 'Specify how differences in submodules are shown' +complete -x -c git -n '__fish_git_using_command diff log show range-diff' -l ws-error-highlight -a '(__fish_git_diff_opt ws-error-highlight)' -d 'Highlight whitespace errors in lines of the diff' + +#### fetch +complete -f -c git -n __fish_git_needs_command -a fetch -d 'Download objects and refs from another repository' +# Suggest "repository", then "refspec" - this also applies to e.g. push/pull +complete -f -c git -n '__fish_git_using_command fetch; and not __fish_git_branch_for_remote' -a '(__fish_git_remotes)' -d Remote +complete -f -c git -n '__fish_git_using_command fetch; and __fish_git_branch_for_remote' -a '(__fish_git_branch_for_remote)' +complete -f -c git -n '__fish_git_using_command fetch' -s q -l quiet -d 'Be quiet' +complete -f -c git -n '__fish_git_using_command fetch' -s v -l verbose -d 'Be verbose' +complete -f -c git -n '__fish_git_using_command fetch' -s a -l append -d 'Append ref names and object names' +# TODO --upload-pack +complete -f -c git -n '__fish_git_using_command fetch' -s f -l force -d 'Force update of local branches' +complete -f -c git -n '__fish_git_using_command fetch' -s p -l prune -d 'Remove remote-tracking references that no longer exist on the remote' +# TODO other options + +#### filter-branch +complete -f -c git -n __fish_git_needs_command -a filter-branch -d 'Rewrite branches' +complete -f -c git -n '__fish_git_using_command filter-branch' -l env-filter -d 'This filter may be used if you only need to modify the environment' +complete -f -c git -n '__fish_git_using_command filter-branch' -l tree-filter -d 'This is the filter for rewriting the tree and its contents' +complete -f -c git -n '__fish_git_using_command filter-branch' -l index-filter -d 'This is the filter for rewriting the index' +complete -f -c git -n '__fish_git_using_command filter-branch' -l parent-filter -d 'This is the filter for rewriting the commit' +complete -f -c git -n '__fish_git_using_command filter-branch' -l msg-filter -d 'This is the filter for rewriting the commit messages' +complete -f -c git -n '__fish_git_using_command filter-branch' -l commit-filter -d 'This is the filter for performing the commit' +complete -f -c git -n '__fish_git_using_command filter-branch' -l tag-name-filter -d 'This is the filter for rewriting tag names' +complete -f -c git -n '__fish_git_using_command filter-branch' -l subdirectory-filter -d 'Only look at the history which touches the given subdirectory' +complete -f -c git -n '__fish_git_using_command filter-branch' -l prune-empty -d 'Ignore empty commits generated by filters' +complete -f -c git -n '__fish_git_using_command filter-branch' -l original -d 'Use this option to set the namespace where the original commits will be stored' +complete -r -c git -n '__fish_git_using_command filter-branch' -s d -d 'Use this option to set the path to the temporary directory used for rewriting' +complete -c git -n '__fish_git_using_command filter-branch' -s f -l force -d 'Filter even with refs in refs/original or existing temp directory' + +### remote +set -l remotecommands add rm remove show prune update rename set-head set-url set-branches get-url +complete -f -c git -n __fish_git_needs_command -a remote -d 'Manage set of tracked repositories' +complete -f -c git -n '__fish_git_using_command remote' -a '(__fish_git_remotes)' +complete -f -c git -n "__fish_git_using_command remote; and not __fish_seen_subcommand_from $remotecommands" -s v -l verbose -d 'Be verbose' +complete -f -c git -n "__fish_git_using_command remote; and not __fish_seen_subcommand_from $remotecommands" -a add -d 'Adds a new remote' +complete -f -c git -n "__fish_git_using_command remote; and not __fish_seen_subcommand_from $remotecommands" -a rm -d 'Removes a remote' +complete -f -c git -n "__fish_git_using_command remote; and not __fish_seen_subcommand_from $remotecommands" -a remove -d 'Removes a remote' +complete -f -c git -n "__fish_git_using_command remote; and not __fish_seen_subcommand_from $remotecommands" -a show -d 'Shows a remote' +complete -f -c git -n "__fish_git_using_command remote; and not __fish_seen_subcommand_from $remotecommands" -a prune -d 'Deletes all stale tracking branches' +complete -f -c git -n "__fish_git_using_command remote; and not __fish_seen_subcommand_from $remotecommands" -a update -d 'Fetches updates' +complete -f -c git -n "__fish_git_using_command remote; and not __fish_seen_subcommand_from $remotecommands" -a rename -d 'Renames a remote' +complete -f -c git -n "__fish_git_using_command remote; and not __fish_seen_subcommand_from $remotecommands" -a set-head -d 'Sets the default branch for a remote' +complete -f -c git -n "__fish_git_using_command remote; and not __fish_seen_subcommand_from $remotecommands" -a set-url -d 'Changes URLs for a remote' +complete -f -c git -n "__fish_git_using_command remote; and not __fish_seen_subcommand_from $remotecommands" -a get-url -d 'Retrieves URLs for a remote' +complete -f -c git -n "__fish_git_using_command remote; and not __fish_seen_subcommand_from $remotecommands" -a set-branches -d 'Changes the list of branches tracked by a remote' +complete -f -c git -n "__fish_git_using_command remote; and __fish_seen_subcommand_from add " -s f -d 'Once the remote information is set up git fetch <name> is run' +complete -f -c git -n "__fish_git_using_command remote; and __fish_seen_subcommand_from add " -l tags -d 'Import every tag from a remote with git fetch <name>' +complete -f -c git -n "__fish_git_using_command remote; and __fish_seen_subcommand_from add " -l no-tags -d "Don't import tags from a remote with git fetch <name>" +complete -f -c git -n '__fish_git_using_command remote; and __fish_seen_subcommand_from remove' -xa '(__fish_git_remotes)' +complete -f -c git -n "__fish_git_using_command remote; and __fish_seen_subcommand_from set-branches" -l add -d 'Add to the list of currently tracked branches instead of replacing it' +complete -f -c git -n "__fish_git_using_command remote; and __fish_seen_subcommand_from set-url" -l push -d 'Manipulate push URLs instead of fetch URLs' +complete -f -c git -n "__fish_git_using_command remote; and __fish_seen_subcommand_from set-url" -l add -d 'Add new URL instead of changing the existing URLs' +complete -f -c git -n "__fish_git_using_command remote; and __fish_seen_subcommand_from set-url" -l delete -d 'Remove URLs that match specified URL' +complete -f -c git -n "__fish_git_using_command remote; and __fish_seen_subcommand_from get-url" -l push -d 'Query push URLs rather than fetch URLs' +complete -f -c git -n "__fish_git_using_command remote; and __fish_seen_subcommand_from get-url" -l all -d 'All URLs for the remote will be listed' +complete -f -c git -n "__fish_git_using_command remote; and __fish_seen_subcommand_from show" -s n -d 'Remote heads are not queried, cached information is used instead' +complete -f -c git -n "__fish_git_using_command remote; and __fish_seen_subcommand_from prune" -l dry-run -d 'Report what will be pruned but do not actually prune it' +complete -f -c git -n "__fish_git_using_command remote; and __fish_seen_subcommand_from update" -l prune -d 'Prune all remotes that are updated' + +### show +complete -f -c git -n __fish_git_needs_command -a show -d 'Shows the last commit of a branch' +complete -f -c git -n '__fish_git_using_command show; and not contains -- -- (commandline -opc)' -a '(__fish_git_branches)' +complete -f -c git -n '__fish_git_using_command show; and not contains -- -- (commandline -opc)' -ka '(__fish_git_tags)' -d Tag +complete -f -c git -n '__fish_git_using_command show; and not contains -- -- (commandline -opc)' -ka '(__fish_git_commits)' +complete -f -c git -n '__fish_git_needs_rev_files; and not contains -- -- (commandline -opc)' -xa '(__fish_git_complete_rev_files)' +complete -F -c git -n '__fish_git_using_command show; and contains -- -- (commandline -opc)' +complete -f -c git -n '__fish_git_using_command show' -l format -d 'Pretty-print the contents of the commit logs in a given format' -a '(__fish_git_show_opt format)' +complete -f -c git -n '__fish_git_using_command show' -l abbrev-commit -d 'Show only a partial hexadecimal commit object name' +complete -f -c git -n '__fish_git_using_command show' -l no-abbrev-commit -d 'Show the full 40-byte hexadecimal commit object name' +complete -f -c git -n '__fish_git_using_command show' -l oneline -d 'Shorthand for "--pretty=oneline --abbrev-commit"' +complete -f -c git -n '__fish_git_using_command show' -l encoding -d 'Re-code the commit log message in the encoding' +complete -f -c git -n '__fish_git_using_command show' -l expand-tabs -d 'Perform a tab expansion in the log message' +complete -f -c git -n '__fish_git_using_command show' -l no-expand-tabs -d 'Do not perform a tab expansion in the log message' +complete -f -c git -n '__fish_git_using_command show' -l notes -k -a '(__fish_git_refs)' -d 'Show the notes that annotate the commit' +complete -f -c git -n '__fish_git_using_command show' -l no-notes -d 'Do not show notes' +complete -f -c git -n '__fish_git_using_command show' -l show-signature -d 'Check the validity of a signed commit object' + + +### show-branch +complete -f -c git -n __fish_git_needs_command -a show-branch -d 'Shows the commits on branches' +complete -f -c git -n '__fish_git_using_command show-branch' -k -a '(__fish_git_refs)' -d Rev +# TODO options + +### add +complete -c git -n __fish_git_needs_command -a add -d 'Add file contents to the index' +complete -c git -n '__fish_git_using_command add' -s n -l dry-run -d "Don't actually add the file(s)" +complete -c git -n '__fish_git_using_command add' -s v -l verbose -d 'Be verbose' +complete -c git -n '__fish_git_using_command add' -s f -l force -d 'Allow adding otherwise ignored files' +complete -c git -n '__fish_git_using_command add' -s i -l interactive -d 'Interactive mode' +complete -c git -n '__fish_git_using_command add' -s p -l patch -d 'Interactively choose hunks to stage' +complete -c git -n '__fish_git_using_command add' -s e -l edit -d 'Manually create a patch' +complete -c git -n '__fish_git_using_command add' -s u -l update -d 'Only match tracked files' +complete -c git -n '__fish_git_using_command add' -s A -l all -d 'Match files both in working tree and index' +complete -c git -n '__fish_git_using_command add' -s N -l intent-to-add -d 'Record only the fact that the path will be added later' +complete -c git -n '__fish_git_using_command add' -l refresh -d "Don't add the file(s), but only refresh their stat" +complete -c git -n '__fish_git_using_command add' -l chmod -xa "-x\t'Track file as non-executable' +x\t'Track file as executable'" +complete -c git -n '__fish_git_using_command add' -l ignore-errors -d 'Ignore errors' +complete -c git -n '__fish_git_using_command add' -l ignore-missing -d 'Check if any of the given files would be ignored' +# Renames also show up as untracked + deleted, and to get git to show it as a rename _both_ need to be added. +# However, we can't do that as it is two tokens, so we don't need renamed here. +complete -f -c git -n '__fish_git_using_command add' -a '(__fish_git_files modified untracked deleted unmerged modified-staged-deleted)' +# TODO options + +### am +complete -c git -n __fish_git_needs_command -a am -d 'Apply a series of patches from a mailbox' +complete -f -c git -n '__fish_git_using_command am' -s s -l signoff -d 'Add a Signed-off-By trailer to commit message' +complete -f -c git -n '__fish_git_using_command am' -l keep-non-patch -d 'Only strip bracket pairs containing \'PATCH\'' +complete -f -c git -n '__fish_git_using_command am' -l no-keep-cr -d 'Override am.keepcr to false' +complete -f -c git -n '__fish_git_using_command am' -s c -l scissors -d 'Remove everything in body before scissors' +complete -f -c git -n '__fish_git_using_command am' -l no-scissors -d 'Ignore scissor lines' +complete -x -c git -n '__fish_git_using_command am' -l quoted-cr -a 'nowarn warn strip' -d 'What to do when an email ends with CRLF' +complete -f -c git -n '__fish_git_using_command am' -l no-messageid -d 'Do not add message id to commit message' +complete -f -c git -n '__fish_git_using_command am' -s q -l quiet -d 'Supress logs' +complete -f -c git -n '__fish_git_using_command am' -l no-utf8 -d 'Disable all charset re-encoding of metadata' +complete -f -c git -n '__fish_git_using_command am' -s 3 -l 3way -d 'Fall back to three way merge on patch failure' +complete -f -c git -n '__fish_git_using_command am' -l no-3way -d 'Do not fall back to three way merge on patch failure' +complete -f -c git -n '__fish_git_using_command am' -l rerere-autoupdate -d 'Allow rerere to update index if possible' +complete -f -c git -n '__fish_git_using_command am' -l ignore-space-change -d 'Pass --ignore-space-change to git apply' +complete -F -c git -n '__fish_git_using_command am' -l directory -d 'Pass --directory to git apply' +complete -F -c git -n '__fish_git_using_command am' -l exclude -d 'Pass --exclude to git apply' +complete -F -c git -n '__fish_git_using_command am' -l include -d 'Pass --include to git apply' +complete -f -c git -n '__fish_git_using_command am' -l reject -d 'Pass --reject to git apply' +complete -x -f git -n '__fish_git_using_command am' -l patch-format -a 'mbox mboxrd stgit stgit-series hg' -d 'Specify the patch format' +complete -f -c git -n '__fish_git_using_command am' -s i -l interactive -d 'Run interactively' +complete -f -c git -n '__fish_git_using_command am' -l commiter-date-is-author-date -d 'Treat commiter date as author date' +complete -f -c git -n '__fish_git_using_command am' -l ignore-date -d 'Treat author date as commiter date' +complete -f -c git -n '__fish_git_using_command am' -l skip -d 'Skip current patch' +complete -x -c git -n '__fish_git_using_command am' -s S -l gpg-sign -a '(type -q gpg && __fish_complete_gpg_key_id gpg)' -d 'Sign commits with gpg' +complete -f -c git -n '__fish_git_using_command am' -l no-gpg-sign -d 'Do not sign commits' +complete -f -c git -n '__fish_git_using_command am' -s r -l resolved -l continue -d 'Mark patch failures as resolved' +complete -x -c git -n '__fish_git_using_command am' -l resolvemsg -d 'Message to print after patch failure' +complete -f -c git -n '__fish_git_using_command am' -l abort -d 'Abort patch operation and restore branch' +complete -f -c git -n '__fish_git_using_command am' -l quit -d 'Abort without restoring branch' +complete -c git -n '__fish_git_using_command am' -l show-current-patch -a 'diff raw' -d 'Show message at which patch failures occured' + +### checkout +complete -F -c git -n '__fish_git_using_command checkout; and contains -- -- (commandline -opc)' +complete -f -c git -n __fish_git_needs_command -a checkout -d 'Checkout and switch to a branch' +complete -k -f -c git -n '__fish_git_using_command checkout; and not contains -- -- (commandline -opc)' -a '(__fish_git_tags)' -d Tag +complete -k -f -c git -n '__fish_git_using_command checkout; and not contains -- -- (commandline -opc)' -a '(__fish_git_heads)' -d Head +complete -k -f -c git -n '__fish_git_using_command checkout; and not contains -- -- (commandline -opc)' -a '(__fish_git_branches)' +complete -k -f -c git -n '__fish_git_using_command checkout; and not contains -- -- (commandline -opc)' -a '(__fish_git_unique_remote_branches)' -d 'Unique Remote Branch' +complete -k -f -c git -n '__fish_git_using_command checkout; and not contains -- -- (commandline -opc)' -a '(__fish_git_local_branches)' +complete -k -f -c git -n '__fish_git_using_command checkout; and not contains -- -- (commandline -opc)' -a '(__fish_git_recent_commits --all)' +complete -k -f -c git -n '__fish_git_using_command checkout' -a '(__fish_git_files modified deleted modified-staged-deleted)' +complete -f -c git -n '__fish_git_using_command checkout' -s b -d 'Create a new branch' +complete -f -c git -n '__fish_git_using_command checkout' -s t -l track -d 'Track a new branch' +complete -f -c git -n '__fish_git_using_command checkout' -l theirs -d 'Keep staged changes' +complete -f -c git -n '__fish_git_using_command checkout' -l ours -d 'Keep unmerged changes' +complete -f -c git -n '__fish_git_using_command checkout' -l recurse-submodules -d 'Update the work trees of submodules' +complete -f -c git -n '__fish_git_using_command checkout' -l no-recurse-submodules -d 'Do not update the work trees of submodules' +# TODO options + +### apply +complete -c git -n __fish_git_needs_command -a apply -d 'Apply a patch on a git index file and a working tree' +complete -f -c git -n '__fish_git_using_command apply' -l numstat -d 'Show number of additions and deletions' +complete -f -c git -n '__fish_git_using_command apply' -l summary -d 'Output a condensed summary' +complete -f -c git -n '__fish_git_using_command apply' -l check -d 'Just check if the patches can be applied' +complete -f -c git -n '__fish_git_using_command apply' -l index -d 'Apply patch to index and working tree' +complete -f -c git -n '__fish_git_using_command apply' -l cached -d 'Apply patch to index' +complete -f -c git -n '__fish_git_using_command apply' -l intent-to-add -d 'Add entry for file in index with no content' +complete -f -c git -n '__fish_git_using_command apply' -s 3 -l 3way -d 'Attempt a 3 way merge on conflicts' +complete -F -c git -n '__fish_git_using_command apply' -l build-fake-ancestor -d 'Build a temporary index containing these blobs' +complete -f -c git -n '__fish_git_using_command apply' -s R -l reverse -d 'Apply the patch in reverse' +complete -f -c git -n '__fish_git_using_command apply' -l reject -d 'Leave rejected hunks in *.rej files' +complete -f -c git -n '__fish_git_using_command apply; and __fish_contains_opt numstat' -s z -d 'Do not munge pathnames' +complete -x -c git -n '__fish_git_using_command apply am' -s p -d 'Remove n leading path components' +complete -x -c git -n '__fish_git_using_command apply am' -s C -d 'Ensure n that lines of surrounding context match' +complete -f -c git -n '__fish_git_using_command apply' -l unidiff-zero -d 'Do not break on diffs generated using --unified=0' +complete -f -c git -n '__fish_git_needs_command apply' -l apply -d 'Always apply patches' +complete -f -c git -n '__fish_git_using_command apply' -l no-add -d 'Ignore additions made by patches' +complete -f -c git -n '__fish_git_using_command apply' -l allow-binary-replacement -l binary -d 'Also patch binaries' +complete -F -c git -n '__fish_git_using_command apply' -l exclude -d 'Dont apply changes to files matching given pattern' +complete -F -c git -n '__fish_git_using_command apply' -l include -d 'Apply changes to files matching given pattern' +complete -f -c git -n '__fish_git_using_command apply am' -l ignore-space-change -l ignore-whitespace -d 'Ignore whitespace change in context lines' +complete -x -c git -n '__fish_git_using_command apply am' -l whitespace -a 'nowarn warn fix error error-all' -d 'Action to take when there are whitespace errors' +complete -f -c git -n '__fish_git_using_command apply' -l inaccurate-eof -d 'Work around some diff versions not detecting newlines at end of file' +complete -f -c git -n '__fish_git_using_command apply' -s v -l verbose -d 'Report progress to stderr' +complete -f -c git -n '__fish_git_using_command apply' -l recount -d 'Do not trust the line counts in the hunk headers' +complete -F -c git -n '__fish_git_using_command apply' -l directory -d 'Prepend given path to all filenames' +complete -f -c git -n '__fish_git_using_command apply' -l unsafe-paths -d 'Allow patches that work outside working area' + + +### archive +complete -f -c git -n __fish_git_needs_command -a archive -d 'Create an archive of files from a named tree' +# TODO options + +### bisect +complete -f -c git -n __fish_git_needs_command -a bisect -d 'Find the change that introduced a bug by binary search' +complete -f -c git -n '__fish_git_using_command bisect; and __fish_prev_arg_in bisect' -xa " +start\t'Start a new bisect session' +bad\t'Mark a commit as bad' +new\t'Mark a commit as new' +good\t'Mark a commit as good' +old\t'Mark a commit as old' +terms\t'Show terms used for new/old states' +skip\t'Skip some commits' +reset\t'Exit a bisect session and reset HEAD' +visualize\t'See remaining commits in gitk' +replay\t'Replay a bisect log file' +log\t'Record a bisect log file' +run\t'Bisect automaically with the given command as discriminator' +help\t'Print a synopsis of all commands' +" +complete -c git -n '__fish_git_using_command bisect; and __fish_seen_argument --' -F +complete -f -c git -n '__fish_git_using_command bisect; and __fish_seen_subcommand_from start' -l term-new -l term-bad -x -d 'Use another term instead of new/bad' +complete -f -c git -n '__fish_git_using_command bisect; and __fish_seen_subcommand_from start' -l term-old -l term-good -x -d 'Use another term instead of old/good' +complete -f -c git -n '__fish_git_using_command bisect; and __fish_seen_subcommand_from start' -l no-checkout -d 'Do not checkout tree, only update BISECT_HEAD' +complete -f -c git -n '__fish_git_using_command bisect; and __fish_seen_subcommand_from start' -l first-parent -d 'On merge commits, follow only the first parent commit' +complete -f -c git -n '__fish_git_using_command bisect; and __fish_seen_subcommand_from start; and not contains -- -- (commandline -opc)' -a '(__fish_git_refs)' +complete -f -c git -n '__fish_git_using_command bisect; and __fish_seen_subcommand_from bad new good old' -a '(__fish_git_refs)' +complete -f -c git -n '__fish_git_using_command bisect; and __fish_seen_subcommand_from terms' -l --term-good -d 'Print the term for the old state' +complete -f -c git -n '__fish_git_using_command bisect; and __fish_seen_subcommand_from terms' -l --term-bad -d 'Print the term for the new state' +complete -f -c git -n '__fish_git_using_command bisect; and __fish_seen_subcommand_from skip' -a '(__fish_git_ranges)' +complete -f -c git -n '__fish_git_using_command bisect; and __fish_seen_subcommand_from reset' -a '(__fish_git_refs)' +complete -c git -n '__fish_git_using_command bisect; and __fish_seen_subcommand_from replay' -F +complete -f -c git -n '__fish_git_using_command bisect; and __fish_seen_subcommand_from run' -xa '(__fish_complete_subcommand --fcs-skip=3)' + +### branch +complete -f -c git -n __fish_git_needs_command -a branch -d 'List, create, or delete branches' +complete -f -c git -n '__fish_git_using_command branch' -a '(__fish_git_branches)' +complete -f -c git -n '__fish_git_using_command branch' -s d -l delete -d 'Delete branch' -xa '(__fish_git_local_branches)' +complete -f -c git -n '__fish_git_using_command branch' -s D -d 'Force deletion of branch' -xa '(__fish_git_local_branches)' +complete -f -c git -n '__fish_git_using_command branch' -s f -l force -d 'Reset branch even if it already exists' +complete -f -c git -n '__fish_git_using_command branch' -s m -l move -d 'Rename branch' +complete -f -c git -n '__fish_git_using_command branch' -s M -d 'Force rename branch' +complete -f -c git -n '__fish_git_using_command branch' -s c -l copy -d 'Copy branch' +complete -f -c git -n '__fish_git_using_command branch' -s C -d 'Force copy branch' +complete -f -c git -n '__fish_git_using_command branch' -s a -l all -d 'Lists both local and remote branches' +complete -f -c git -n '__fish_git_using_command branch' -s t -l track -l track -d 'Track remote branch' +complete -f -c git -n '__fish_git_using_command branch' -l no-track -d 'Do not track remote branch' +complete -f -c git -n '__fish_git_using_command branch' -l set-upstream-to -d 'Set remote branch to track' +complete -f -c git -n '__fish_git_using_command branch' -l merged -d 'List branches that have been merged' +complete -f -c git -n '__fish_git_using_command branch' -l no-merged -d 'List branches that have not been merged' + +### cherry +complete -f -c git -n __fish_git_needs_command -a cherry -d 'Find commits yet to be applied to upstream [upstream [head]]' +complete -f -c git -n '__fish_git_using_command cherry' -s v -d 'Show the commit subjects next to the SHA1s' +complete -f -c git -n '__fish_git_using_command cherry' -k -a '(__fish_git_refs)' -d Upstream + +### cherry-pick +complete -f -c git -n __fish_git_needs_command -a cherry-pick -d 'Apply the change introduced by an existing commit' +complete -f -c git -n '__fish_git_using_command cherry-pick' -k -a '(__fish_git_ranges)' +# TODO: Filter further +complete -f -c git -n '__fish_git_using_command cherry-pick; and __fish_git_possible_commithash' -ka '(__fish_git_commits)' +complete -f -c git -n '__fish_git_using_command cherry-pick' -s e -l edit -d 'Edit the commit message prior to committing' +complete -f -c git -n '__fish_git_using_command cherry-pick' -s x -d 'Append info in generated commit on the origin of the cherry-picked change' +complete -f -c git -n '__fish_git_using_command cherry-pick' -s n -l no-commit -d 'Apply changes without making any commit' +complete -f -c git -n '__fish_git_using_command cherry-pick' -s s -l signoff -d 'Add Signed-off-by line to the commit message' +complete -f -c git -n '__fish_git_using_command cherry-pick' -l ff -d 'Fast-forward if possible' +complete -f -c git -n '__fish_git_using_command cherry-pick' -l continue -d 'Continue the operation in progress' +complete -f -c git -n '__fish_git_using_command cherry-pick' -l abort -d 'Cancel the operation' +complete -f -c git -n '__fish_git_using_command cherry-pick' -l skip -d 'Skip the current commit and continue with the rest of the sequence' + +### clone +complete -f -c git -n __fish_git_needs_command -a clone -d 'Clone a repository into a new directory' +complete -f -c git -n '__fish_git_using_command clone' -l no-hardlinks -d 'Copy files instead of using hardlinks' +complete -f -c git -n '__fish_git_using_command clone' -s q -l quiet -d 'Operate quietly and do not report progress' +complete -f -c git -n '__fish_git_using_command clone' -s v -l verbose -d 'Provide more information on what is going on' +complete -f -c git -n '__fish_git_using_command clone' -s n -l no-checkout -d 'No checkout of HEAD is performed after the clone is complete' +complete -f -c git -n '__fish_git_using_command clone' -l bare -d 'Make a bare Git repository' +complete -f -c git -n '__fish_git_using_command clone' -l mirror -d 'Set up a mirror of the source repository' +complete -f -c git -n '__fish_git_using_command clone' -s o -l origin -d 'Use a specific name of the remote instead of the default' +complete -f -c git -n '__fish_git_using_command clone' -s b -l branch -d 'Use a specific branch instead of the one used by the cloned repository' +complete -f -c git -n '__fish_git_using_command clone' -l depth -d 'Truncate the history to a specified number of revisions' +complete -f -c git -n '__fish_git_using_command clone' -l recursive -d 'Initialize all submodules within the cloned repository' + +### commit +complete -c git -n __fish_git_needs_command -a commit -d 'Record changes to the repository' +complete -c git -n '__fish_git_using_command commit' -l amend -d 'Amend the log message of the last commit' +complete -f -c git -n '__fish_git_using_command commit' -a '(__fish_git_files modified deleted modified-staged-deleted untracked)' +complete -c git -n '__fish_git_using_command commit' -s a -l all -d 'Automatically stage modified and deleted files' +complete -c git -n '__fish_git_using_command commit' -s p -l patch -d 'Use interactive patch selection interface' +complete -f -c git -n '__fish_git_using_command commit' -l fixup -d 'Fixup commit to be used with rebase --autosquash' +complete -f -c git -n '__fish_git_using_command commit' -l squash -d 'Squash commit to be used with rebase --autosquash' +complete -c git -n '__fish_git_using_command commit' -l reset-author -d 'When amending, reset author of commit to the committer' +complete -x -c git -n '__fish_git_using_command commit' -l author -d 'Override the commit author' +complete -x -c git -n '__fish_git_using_command commit' -l cleanup -a "strip\t'Leading/trailing whitespace/empty lines, #commentary' + whitespace\t'Like strip but keep #commentary' + verbatim\t'Do not change the message' + scissors\t'Like whitespace but also remove after scissor lines' + default\t'Like strip if the message is to be edited, whitespace otherwise'" -d 'How to clean up the commit message' +complete -x -c git -n '__fish_git_using_command commit' -l date -d 'Override the author date' +complete -x -c git -n '__fish_git_using_command commit' -s m -l message -d 'Use the given message as the commit message' +complete -f -c git -n '__fish_git_using_command commit' -l no-edit -d 'Use the selected commit message without launching an editor' +complete -f -c git -n '__fish_git_using_command commit' -l no-gpg-sign -d 'Do not sign commit' +complete -f -c git -n '__fish_git_using_command commit' -s n -l no-verify -d 'Do not run pre-commit and commit-msg hooks' +complete -f -c git -n '__fish_git_using_command commit; and __fish_contains_opt fixup squash' -k -a '(__fish_git_recent_commits)' +complete -f -c git -n '__fish_git_using_command commit' -l allow-empty -d 'Create a commit with no changes' +complete -f -c git -n '__fish_git_using_command commit' -l allow-empty-message -d 'Create a commit with no commit message' +# TODO options + +### count-objects +complete -f -c git -n __fish_git_needs_command -a count-objects -d 'Count unpacked number of objects and their disk consumption' +complete -f -c git -n '__fish_git_using_command count-objects' -s v -l verbose -d 'Be verbose' +complete -f -c git -n '__fish_git_using_command count-objects' -s H -l human-readable -d 'Print in human readable format' + +### daemon +complete -c git -n __fish_git_needs_command -a daemon -d 'A really simple server for git repositories' +complete -f -c git -n '__fish_git_using_command daemon' -l strict-paths -d 'Match paths exactly' +complete -F -c git -n '__fish_git_using_command daemon' -l base-path -d 'Git Root' +complete -f -c git -n '__fish_git_using_command daemon' -l base-path-relaxed -d 'When looking up with base path fails, try without it' +complete -F -c git -n '__fish_git_using_command daemon' -l interpolated-path -d 'Construct a path from the given template' +complete -f -c git -n '__fish_git_using_command daemon' -l export-all -d 'Allow pulling from all directories' +complete -f -c git -n '__fish_git_using_command daemon' -l inetd -d 'Run as inetd service' +complete -x -c git -n '__fish_git_using_command daemon' -l listen -d 'Listen on this IP' +complete -x -c git -n '__fish_git_using_command daemon' -l port -d 'Listen on this port' +complete -x -c git -n '__fish_git_using_command daemon' -l init-timeout -d 'Connection timeout' +complete -x -c git -n '__fish_git_using_command daemon' -l timeout -d 'Timeout for each request' +complete -x -c git -n '__fish_git_using_command daemon' -l max-connections -d 'Maximum parallel clients' +complete -f -c git -n '__fish_git_using_command daemon' -l syslog -d '--log-destination=syslog' +complete -x -c git -n '__fish_git_using_command daemon' -l log-destination -a 'stderr syslog none' -d 'Log destination' +complete -x -c git -n '__fish_git_using_command daemon' -l user-path -d 'Allow ~user notation to be used' +complete -f -c git -n '__fish_git_using_command daemon' -l verbose -d 'Log all details' +complete -f -c git -n '__fish_git_using_command daemon' -l reuseaddr -d 'Reuse address when binding to listening server' +complete -f -c git -n '__fish_git_using_command daemon' -l detach -d 'Detach from shell' +complete -x -c git -n '__fish_git_using_command daemon' -l reuseaddr -d 'Save the process id in file' +complete -x -c git -n '__fish_git_using_command daemon' -l user -d 'Change daemon\'s uid' +complete -x -c git -n '__fish_git_using_command daemon' -l group -d 'Change daemon\'s gid' +complete -x -c git -n '__fish_git_using_command daemon' -l enable -a 'upload-pack upload-archive receive-pack' -d 'Enable service' +complete -x -c git -n '__fish_git_using_command daemon' -l disable -a 'upload-pack upload-archive receive-pack' -d 'Disable service' +complete -x -c git -n '__fish_git_using_command daemon' -l allow-override -a 'upload-pack upload-archive receive-pack' -d 'Allow overriding site-wide default per repository configuration' +complete -x -c git -n '__fish_git_using_command daemon' -l forbid-override -a 'upload-pack upload-archive receive-pack' -d 'Forbid overriding site-wide default per repository configuration' +complete -f -c git -n '__fish_git_using_command daemon' -l informative-errors -d 'Report more verbose errors to clients' +complete -f -c git -n '__fish_git_using_command daemon' -l no-informative-errors -d 'Report less verbose errors to clients' +complete -x -c git -n '__fish_git_using_command daemon' -l access-hook -d 'Hook to run whenever a client connects' + +### describe +complete -c git -n __fish_git_needs_command -a describe -d 'Give an object a human readable name based on an available ref' +complete -k -f -c git -n '__fish_git_using_command describe' -a '(__fish_git_tags)' -d Tag +complete -k -f -c git -n '__fish_git_using_command describe' -a '(__fish_git_branches)' +complete -k -f -c git -n '__fish_git_using_command describe' -a '(__fish_git_heads)' -d Head +complete -f -c git -n '__fish_git_using_command describe' -l dirty -d 'Describe the state of the working tree, append dirty if there are local changes' +complete -f -c git -n '__fish_git_using_command describe' -l broken -d 'Describe the state of the working tree, append -broken instead of erroring' +complete -f -c git -n '__fish_git_using_command describe' -l all -d 'Use all tags, not just annotated' +complete -f -c git -n '__fish_git_using_command describe' -l tags -d 'Use all commits/tags, not just annotated tags' +complete -f -c git -n '__fish_git_using_command describe' -l contains -d 'Find the tag that comes after the commit' +complete -f -c git -n '__fish_git_using_command describe' -l abbrev -d 'Use <n> digits, or as many digits as needed to form a unique object name' +complete -f -c git -n '__fish_git_using_command describe' -l candidates -d 'Consider up to <n> candidates' +complete -f -c git -n '__fish_git_using_command describe' -l exact-match -d 'Only output exact matches' +complete -f -c git -n '__fish_git_using_command describe' -l debug -d 'Display debug info' +complete -f -c git -n '__fish_git_using_command describe' -l long -d 'Always output the long format' +complete -f -c git -n '__fish_git_using_command describe' -l match -d 'Only consider tags matching the given glob pattern' +complete -f -c git -n '__fish_git_using_command describe' -l exclude -d 'Do not consider tags matching the given glob pattern' +complete -f -c git -n '__fish_git_using_command describe' -l always -d 'Show uniquely abbreviated commit object as fallback' +complete -f -c git -n '__fish_git_using_command describe' -l first-parent -d 'Follow only the first parent of a merge commit' + +### diff +complete -c git -n __fish_git_needs_command -a diff -d 'Show changes between commits, commit and working tree, etc' +complete -c git -n '__fish_git_using_command diff; and not contains -- -- (commandline -opc)' -k -a '(__fish_git_ranges)' +complete -c git -n '__fish_git_using_command diff' -l cached -d 'Show diff of changes in the index' +complete -c git -n '__fish_git_using_command diff' -l staged -d 'Show diff of changes in the index' +complete -c git -n '__fish_git_using_command diff' -l no-index -d 'Compare two paths on the filesystem' +complete -c git -n '__fish_git_using_command diff' -l exit-code -d 'Exit with 1 if there were differences or 0 if no differences' +complete -c git -n '__fish_git_using_command diff' -l quiet -d 'Disable all output of the program, implies --exit-code' +complete -c git -n '__fish_git_using_command diff' -s 1 -l base -d 'Compare the working tree with the "base" version' +complete -c git -n '__fish_git_using_command diff' -s 2 -l ours -d 'Compare the working tree with the "our branch"' +complete -c git -n '__fish_git_using_command diff' -s 3 -l theirs -d 'Compare the working tree with the "their branch"' +complete -c git -n '__fish_git_using_command diff' -s 0 -d 'Omit diff output for unmerged entries and just show "Unmerged"' +complete -c git -n '__fish_git_using_command diff; and not __fish_contains_opt cached staged' -a '( + set -l kinds modified + contains -- -- (commandline -opc) && set -a kinds deleted modified-staged-deleted + __fish_git_files $kinds +)' +complete -c git -n '__fish_git_using_command diff; and __fish_contains_opt cached staged' -fa '(__fish_git_files all-staged)' + +### Function to list available tools for git difftool and mergetool + +function __fish_git_diffmerge_tools -a cmd + git $cmd --tool-help | while read -l line + string match -q 'The following tools are valid, but not currently available:' -- $line + and break + string replace -f -r '^\t\t(\w+).*$' '$1' -- $line + end +end + +### difftool +complete -c git -n __fish_git_needs_command -a difftool -d 'Open diffs in a visual tool' +complete -c git -n '__fish_git_using_command difftool; and not contains -- -- (commandline -opc)' -k -a '(__fish_git_ranges)' +complete -c git -n '__fish_git_using_command difftool' -l cached -d 'Visually show diff of changes in the index' +complete -f -c git -n '__fish_git_using_command difftool' -a '( + set -l kinds modified + contains -- -- (commandline -opc) && set -a kinds deleted modified-staged-deleted + __fish_git_files $kinds +)' +complete -f -c git -n '__fish_git_using_command difftool' -s g -l gui -d 'Use `diff.guitool` instead of `diff.tool`' +complete -f -c git -n '__fish_git_using_command difftool' -s d -l dir-diff -d 'Perform a full-directory diff' +complete -c git -n '__fish_git_using_command difftool' -l prompt -d 'Prompt before each invocation of the diff tool' +complete -f -c git -n '__fish_git_using_command difftool' -s y -l no-prompt -d 'Do not prompt before launching a diff tool' +complete -f -c git -n '__fish_git_using_command difftool' -l symlinks -d 'Use symlinks in dir-diff mode' +complete -f -c git -n '__fish_git_using_command difftool' -s t -l tool -d 'Use the specified diff tool' -a "(__fish_git_diffmerge_tools difftool)" +complete -f -c git -n '__fish_git_using_command difftool' -l tool-help -d 'Print a list of diff tools that may be used with `--tool`' +complete -f -c git -n '__fish_git_using_command difftool' -l trust-exit-code -d 'Exit when an invoked diff tool returns a non-zero exit code' +complete -f -c git -n '__fish_git_using_command difftool' -s x -l extcmd -d 'Specify a custom command for viewing diffs' +# TODO options + +### gc +complete -f -c git -n __fish_git_needs_command -a gc -d 'Cleanup unnecessary files and optimize the local repository' +complete -f -c git -n '__fish_git_using_command gc' -l aggressive -d 'Aggressively optimize the repository' +complete -f -c git -n '__fish_git_using_command gc' -l auto -d 'Checks any housekeeping is required and then run' +complete -f -c git -n '__fish_git_using_command gc' -l prune -d 'Prune loose objects older than date' +complete -f -c git -n '__fish_git_using_command gc' -l no-prune -d 'Do not prune any loose objects' +complete -f -c git -n '__fish_git_using_command gc' -l quiet -d 'Be quiet' +complete -f -c git -n '__fish_git_using_command gc' -l force -d 'Force `git gc` to run' +complete -f -c git -n '__fish_git_using_command gc' -l keep-largest-pack -d 'Ignore `gc.bigPackThreshold`' + +### grep +complete -c git -n __fish_git_needs_command -a grep -d 'Print lines matching a pattern' +# TODO options + +### init +complete -f -c git -n __fish_git_needs_command -a init -d 'Create an empty git repository or reinitialize an existing one' +# TODO options + +### log +complete -c git -n __fish_git_needs_command -a shortlog -d 'Show commit shortlog' +complete -c git -n __fish_git_needs_command -a log -d 'Show commit logs' +complete -c git -n '__fish_git_using_command log; and not contains -- -- (commandline -opc)' -k -a '(__fish_git_ranges)' + +complete -c git -n '__fish_git_using_command log' -l follow -d 'Continue listing file history beyond renames' +complete -c git -n '__fish_git_using_command log' -l no-decorate -d 'Don\'t print ref names' +complete -f -c git -n '__fish_git_using_command log' -l decorate -a 'short\tHide\ prefixes full\tShow\ full\ ref\ names auto\tHide\ prefixes\ if\ printed\ to\ terminal no\tDon\\\'t\ display\ ref' -d 'Print out ref names' +complete -c git -n '__fish_git_using_command log' -l source -d 'Print ref name by which each commit was reached' +complete -c git -n '__fish_git_using_command log' -l use-mailmap +complete -c git -n '__fish_git_using_command log' -l full-diff +complete -c git -n '__fish_git_using_command log' -l log-size +complete -x -c git -n '__fish_git_using_command log' -s L +complete -x -c git -n '__fish_git_using_command log' -s n -l max-count -d 'Limit the number of commits before starting to show the commit output' +complete -x -c git -n '__fish_git_using_command log' -l skip -d 'Skip given number of commits' +complete -x -c git -n '__fish_git_using_command log' -l since -d 'Show commits more recent than specified date' +complete -x -c git -n '__fish_git_using_command log' -l after -d 'Show commits more recent than specified date' +complete -x -c git -n '__fish_git_using_command log' -l until -d 'Show commits older than specified date' +complete -x -c git -n '__fish_git_using_command log' -l before -d 'Show commits older than specified date' +complete -x -c git -n '__fish_git_using_command log' -l author -d 'Limit commits from given author' +complete -x -c git -n '__fish_git_using_command log' -l committer -d 'Limit commits from given committer' +complete -x -c git -n '__fish_git_using_command log' -l grep-reflog -d 'Limit commits to ones with reflog entries matching given pattern' +complete -x -c git -n '__fish_git_using_command log' -l grep -d 'Limit commits with message that match given pattern' +complete -c git -n '__fish_git_using_command log' -l all-match -d 'Limit commits to ones that match all given --grep' +complete -c git -n '__fish_git_using_command log' -l invert-grep -d 'Limit commits to ones with message that don\'t match --grep' +complete -c git -n '__fish_git_using_command log' -l regexp-ignore-case -s i -d 'Case insensitive match' +complete -c git -n '__fish_git_using_command log' -l basic-regexp -d 'Patterns are basic regular expressions (default)' +complete -c git -n '__fish_git_using_command log' -l extended-regexp -s E -d 'Patterns are extended regular expressions' +complete -c git -n '__fish_git_using_command log' -l fixed-strings -s F -d 'Patterns are fixed strings' +complete -c git -n '__fish_git_using_command log' -l perl-regexp -d 'Patterns are Perl-compatible regular expressions' +complete -c git -n '__fish_git_using_command log' -l remove-empty -d 'Stop when given path disappears from tree' +complete -c git -n '__fish_git_using_command log' -l merges -d 'Print only merge commits' +complete -c git -n '__fish_git_using_command log' -l no-merges -d 'Don\'t print commits with more than one parent' +complete -x -c git -n '__fish_git_using_command log' -l min-parents -d 'Show only commit with at least the given number of parents' +complete -x -c git -n '__fish_git_using_command log' -l max-parents -d 'Show only commit with at most the given number of parents' +complete -c git -n '__fish_git_using_command log' -l no-min-parents -d 'Show only commit without a minimum number of parents' +complete -c git -n '__fish_git_using_command log' -l no-max-parents -d 'Show only commit without a maximum number of parents' +complete -c git -n '__fish_git_using_command log' -l first-parent -d 'Follow only the first parent commit upon seeing a merge commit' +complete -c git -n '__fish_git_using_command log' -l not -d 'Reverse meaning of ^ prefix' +complete -c git -n '__fish_git_using_command log' -l all -d 'Show log for all branches, tags, and remotes' +complete -f -c git -n '__fish_git_using_command log' -l branches -d 'Show log for all matching branches' +complete -f -c git -n '__fish_git_using_command log' -l tags -d 'Show log for all matching tags' +complete -f -c git -n '__fish_git_using_command log' -l remotes -d 'Show log for all matching remotes' +complete -x -c git -n '__fish_git_using_command log' -l glob -d 'Show log for all matching branches, tags, and remotes' +complete -x -c git -n '__fish_git_using_command log' -l exclude -d 'Do not include refs matching given glob pattern' +complete -c git -n '__fish_git_using_command log' -l reflog -d 'Show log for all reflogs entries' +complete -c git -n '__fish_git_using_command log' -l ingnore-missing -d 'Ignore invalid object names' +complete -c git -n '__fish_git_using_command log' -l bisect +complete -c git -n '__fish_git_using_command log' -l stdin -d 'Read commits from stdin' +complete -c git -n '__fish_git_using_command log' -l cherry-mark -d 'Mark equivalent commits with = and inequivalent with +' +complete -c git -n '__fish_git_using_command log' -l cherry-pick -d 'Omit equivalent commits' +complete -c git -n '__fish_git_using_command log' -l left-only +complete -c git -n '__fish_git_using_command log' -l rigth-only +complete -c git -n '__fish_git_using_command log' -l cherry +complete -c git -n '__fish_git_using_command log' -l walk-reflogs -s g +complete -c git -n '__fish_git_using_command log' -l merge +complete -c git -n '__fish_git_using_command log' -l boundary +complete -c git -n '__fish_git_using_command log' -l simplify-by-decoration +complete -c git -n '__fish_git_using_command log' -l full-history +complete -c git -n '__fish_git_using_command log' -l dense +complete -c git -n '__fish_git_using_command log' -l sparse +complete -c git -n '__fish_git_using_command log' -l simplify-merges +complete -c git -n '__fish_git_using_command log' -l ancestry-path +complete -c git -n '__fish_git_using_command log' -l date-order +complete -c git -n '__fish_git_using_command log' -l author-date-order +complete -c git -n '__fish_git_using_command log' -l topo-order +complete -c git -n '__fish_git_using_command log' -l reverse +complete -f -c git -n '__fish_git_using_command log' -l no-walk -a "sorted unsorted" +complete -c git -n '__fish_git_using_command log' -l do-walk +complete -c git -n '__fish_git_using_command log' -l format +complete -c git -n '__fish_git_using_command log' -l abbrev-commit +complete -c git -n '__fish_git_using_command log' -l no-abbrev-commit +complete -c git -n '__fish_git_using_command log' -l oneline +complete -x -c git -n '__fish_git_using_command log' -l encoding -a '(__fish_print_encodings)' +complete -f -c git -n '__fish_git_using_command log' -l expand-tabs +complete -c git -n '__fish_git_using_command log' -l no-expand-tabs +complete -f -c git -n '__fish_git_using_command log' -l notes +complete -c git -n '__fish_git_using_command log' -l no-notes +complete -f -c git -n '__fish_git_using_command log' -l show-notes +complete -c git -n '__fish_git_using_command log' -l standard-notes +complete -c git -n '__fish_git_using_command log' -l no-standard-notes +complete -c git -n '__fish_git_using_command log' -l show-signature +complete -c git -n '__fish_git_using_command log' -l relative-date +complete -x -c git -n '__fish_git_using_command log' -l date -a ' + relative + local + iso + iso-local + iso8601 + iso8601-local + iso-strict + iso-strict-local + iso8601-strict + iso8601-strict-local + rfc-local + rfc2822-local + short + short-local + raw + human + unix + format: + default + default-local +' +complete -c git -n '__fish_git_using_command log' -l parents +complete -c git -n '__fish_git_using_command log' -l children +complete -c git -n '__fish_git_using_command log' -l left-right +complete -c git -n '__fish_git_using_command log' -l graph +complete -f -c git -n '__fish_git_using_command log' -l show-linear-break +complete -c git -n '__fish_git_using_command log' -s c +complete -c git -n '__fish_git_using_command log' -l cc +complete -c git -n '__fish_git_using_command log' -s m +complete -c git -n '__fish_git_using_command log' -s r +complete -c git -n '__fish_git_using_command log' -s t +complete -c git -n '__fish_git_using_command log' -l patch -s p +complete -c git -n '__fish_git_using_command log' -s u +complete -c git -n '__fish_git_using_command log' -l no-patch -s s +complete -x -c git -n '__fish_git_using_command log' -l unified -s U +complete -c git -n '__fish_git_using_command log' -l raw +complete -c git -n '__fish_git_using_command log' -l patch-with-raw +complete -c git -n '__fish_git_using_command log' -l indent-heuristic +complete -c git -n '__fish_git_using_command log' -l no-indent-heuristic +complete -c git -n '__fish_git_using_command log' -l compaction-heuristic +complete -c git -n '__fish_git_using_command log' -l no-compaction-heuristic +complete -c git -n '__fish_git_using_command log' -l minimal +complete -c git -n '__fish_git_using_command log' -l patience +complete -c git -n '__fish_git_using_command log' -l histogram +complete -f -x -c git -n '__fish_git_using_command log' -l stat +complete -c git -n '__fish_git_using_command log' -l numstat +complete -c git -n '__fish_git_using_command log' -l shortstat +complete -c git -n '__fish_git_using_command log' -l summary +complete -c git -n '__fish_git_using_command log' -l patch-with-stat +complete -c git -n '__fish_git_using_command log' -s z +complete -c git -n '__fish_git_using_command log' -l name-only +complete -c git -n '__fish_git_using_command log' -l name-status +complete -f -c git -n '__fish_git_using_command log' -l color -a 'always never auto' +complete -c git -n '__fish_git_using_command log' -l no-color +complete -f -c git -n '__fish_git_using_command log' -l word-diff -a ' + color + plain + porcelain + none +' +complete -f -c git -n '__fish_git_using_command log' -l color-words +complete -c git -n '__fish_git_using_command log' -l no-renames +complete -c git -n '__fish_git_using_command log' -l check +complete -c git -n '__fish_git_using_command log' -l full-index +complete -c git -n '__fish_git_using_command log' -l binary +complete -f -c git -n '__fish_git_using_command log' -l abbrev +complete -f -c git -n '__fish_git_using_command log' -s l + +function __fish__git_append_letters_nosep + set -l token (commandline -tc) + printf "%s\n" $token$argv +end + +complete -x -c git -n '__fish_git_using_command log' -l diff-filter -a '(__fish__git_append_letters_nosep a\tExclude\ added c\tExclude\ copied d\tExclude\ deleted m\tExclude\ modified r\tExclude\ renamed t\tExclude\ type\ changed u\tExclude\ unmerged x\tExclude\ unknown b\tExclude\ broken A\tAdded C\tCopied D\tDeleted M\tModified R\tRenamed T\tType\ Changed U\tUnmerged X\tUnknown B\tBroken)' + +### ls-files +complete -c git -n __fish_git_needs_command -a ls-files -d 'Show information about files in the index and the working tree' +complete -c git -n '__fish_git_using_command ls-files' +complete -c git -n '__fish_git_using_command ls-files' -s c -l cached -d 'Show cached files in the output' +complete -c git -n '__fish_git_using_command ls-files' -s d -l deleted -d 'Show deleted files in the output' +complete -c git -n '__fish_git_using_command ls-files' -s m -l modified -d 'Show modified files in the output' +complete -c git -n '__fish_git_using_command ls-files' -s o -l others -d 'Show other (i.e. untracked) files in the output' +complete -c git -n '__fish_git_using_command ls-files' -s i -l ignored -d 'Show only ignored files in the output' +complete -c git -n '__fish_git_using_command ls-files' -s s -l staged -d "Show staged contents' mode bits, object name and stage number in the output" +complete -c git -n '__fish_git_using_command ls-files' -l directory -d 'If a whole directory is classified as "other", show just its name' +complete -c git -n '__fish_git_using_command ls-files' -l no-empty-directory -d 'Do not list empty directories' +complete -c git -n '__fish_git_using_command ls-files' -s u -l unmerged -d 'Show unmerged files in the output' +complete -c git -n '__fish_git_using_command ls-files' -s k -l killed -d 'Show files on the filesystem that need to be removed for checkout-index to succeed' +complete -c git -n '__fish_git_using_command ls-files' -s z -d 'Use \0 delimiter' +complete -c git -n '__fish_git_using_command ls-files' -s x -l exclude -d 'Skip untracked files matching pattern' +complete -c git -n '__fish_git_using_command ls-files' -s X -l exclude-from -d 'Read exclude patterns from <file>; 1 per line' +complete -c git -n '__fish_git_using_command ls-files' -l exclude-per-directory -d 'Read extra exclude patterns that apply only to the dir and its subdirs in <file>' +complete -c git -n '__fish_git_using_command ls-files' -l exclude-standard -d 'Add the standard Git exclusions' +complete -c git -n '__fish_git_using_command ls-files' -l error-unmatch -d 'If any <file> does not appear in the index, treat this as an error' +complete -c git -n '__fish_git_using_command ls-files' -l with-tree +complete -c git -n '__fish_git_using_command ls-files' -s t -d 'Identifies the file status' +complete -c git -n '__fish_git_using_command ls-files' -s v -d 'Show file status, use lowercase letters for files assumed unchanged' +complete -c git -n '__fish_git_using_command ls-files' -s f -d 'Show file status, use lowercase letters for files marked as fsmonitor valid' +complete -c git -n '__fish_git_using_command ls-files' -l full-name -d 'Force paths to be output relative to the project top directory' +complete -c git -n '__fish_git_using_command ls-files' -l recurse-submodules -d 'Recursively calls ls-files on each submodule in the repository' +complete -c git -n '__fish_git_using_command ls-files' -l abbrev -d 'Show only a partial prefix' +complete -c git -n '__fish_git_using_command ls-files' -l debug -d 'After each line that describes a file, add more data about its cache entry' +complete -c git -n '__fish_git_using_command ls-files' -l eol -d 'Show <eolinfo> and <eolattr> of files' + +### mailinfo +complete -f -c git -n __fish_git_needs_command -a mailinfo -d 'Extracts patch and authorship from a single e-mail message' +complete -f -c git -n '__fish_git_using_command mailinfo am' -s k -d 'Do not remove email cruft from subject' +complete -f -c git -n '__fish_git_using_command mailinfo' -s b -d 'Only strip bracket pairs containing \'PATCH\'' +complete -f -c git -n '__fish_git_using_command mailinfo am' -s u -d 'Do not reencode author name and email' +complete -x -c git -n '__fish_git_using_command mailinfo' -l encoding -d 'Re-encode to given charset' +complete -f -c git -n '__fish_git_using_command mailinfo' -s n -d 'Disable all charset re-encoding of metadata' +complete -f -c git -n '__fish_git_using_command mailinfo am' -s m -l message-id -d 'Copy message id to the end of commit message' +complete -f -c git -n '__fish_git_using_command mailinfo' -l scissors -d 'Remove everything above scissor line' +complete -f -c git -n '__fish_git_using_command mailinfo' -l no-scissors -d 'Ignore scissor lines' +complete -x -c git -n '__fish_git_using_command mailinfo' -l quoted-cr -a 'nowarn warn strip' -d 'Action when processed email message end with CRLF instead of LF' + +### mailsplit +complete -c git -n __fish_git_needs_command -a mailsplit -d 'Simple UNIX mbox splitter program' +complete -F -c git -n '__fish_git_using_command mailsplit' -s o -d 'Directory to place individual messages' +complete -f -c git -n '__fish_git_using_command mailsplit' -s b -d 'Treat files not starting with From line as single mail message' +complete -x -c git -n '__fish_git_using_command mailsplit' -s d -d 'File name prefix digit precision' +complete -x -c git -n '__fish_git_using_command mailsplit' -s f -d 'Skip first n numbers' +complete -f -c git -n '__fish_git_using_command mailsplit am' -l keep-cr -d 'Do not remove \\r from lines starting with \\n\\r' +complete -f -c git -n '__fish_git_using_command mailsplit' -l mboxrd -d 'Input is of mboxrd form' + +### maintenance +complete -f -c git -n __fish_git_needs_command -a maintenance -d 'Run tasks to optimize Git repository data' +complete -f -c git -n '__fish_git_using_command maintenance' -a register -d 'Initialize Git config vars for maintenance' +complete -f -c git -n '__fish_git_using_command maintenance' -a run -d 'Run one or more maintenance tasks' +complete -f -c git -n '__fish_git_using_command maintenance' -a start -d 'Start maintenance' +complete -f -c git -n '__fish_git_using_command maintenance' -a stop -d 'Halt background maintenance' +complete -f -c git -n '__fish_git_using_command maintenance' -a unregister -d 'Remove repository from background maintenance' +complete -f -c git -n '__fish_git_using_command maintenance' -l quiet -d 'Supress logs' +complete -x -c git -n '__fish_git_using_command maintenance' -l task -a 'commit-graph prefetch gc loose-objects incremental-repack pack-refs' -d 'Tasks to run' +complete -f -c git -n '__fish_git_using_command maintenance' -l auto -d 'Run maintenance only when necessary' +complete -f -c git -n '__fish_git_using_command maintenance' -l schedule -d 'Run maintenance on certain intervals' + +### merge +complete -f -c git -n __fish_git_needs_command -a merge -d 'Join two or more development histories together' +complete -f -c git -n '__fish_git_using_command merge' -a '(__fish_git_branches)' +complete -f -c git -n '__fish_git_using_command merge' -l commit -d "Autocommit the merge" +complete -f -c git -n '__fish_git_using_command merge' -l no-commit -d "Don't autocommit the merge" +complete -f -c git -n '__fish_git_using_command merge' -s e -l edit -d 'Edit auto-generated merge message' +complete -f -c git -n '__fish_git_using_command merge' -l no-edit -d "Don't edit auto-generated merge message" +complete -f -c git -n '__fish_git_using_command merge' -l ff -d "Don't generate a merge commit if merge is fast-forward" +complete -f -c git -n '__fish_git_using_command merge' -l no-ff -d "Generate a merge commit even if merge is fast-forward" +complete -f -c git -n '__fish_git_using_command merge' -l ff-only -d 'Refuse to merge unless fast-forward possible' +complete -f -c git -n '__fish_git_using_command merge' -s S -l gpg-sign -d 'GPG-sign the merge commit' +complete -f -c git -n '__fish_git_using_command merge' -l log -d 'Populate the log message with one-line descriptions' +complete -f -c git -n '__fish_git_using_command merge' -l no-log -d "Don't populate the log message with one-line descriptions" +complete -f -c git -n '__fish_git_using_command merge' -l signoff -d 'Add Signed-off-by line at the end of the merge commit message' +complete -f -c git -n '__fish_git_using_command merge' -l no-signoff -d 'Do not add a Signed-off-by line at the end of the merge commit message' +complete -f -c git -n '__fish_git_using_command merge' -l stat -d "Show diffstat of the merge" +complete -f -c git -n '__fish_git_using_command merge' -s n -l no-stat -d "Don't show diffstat of the merge" +complete -f -c git -n '__fish_git_using_command merge' -l squash -d "Squash changes from other branch as a single commit" +complete -f -c git -n '__fish_git_using_command merge' -l no-squash -d "Don't squash changes" +complete -x -c git -n '__fish_git_using_command merge' -s s -l strategy -d 'Use the given merge strategy' +complete -r -c git -n '__fish_git_using_command merge' -s X -l strategy-option -d 'Pass given option to the merge strategy' +complete -f -c git -n '__fish_git_using_command merge' -l verify-signatures -d 'Abort merge if other branch tip commit is not signed with a valid key' +complete -f -c git -n '__fish_git_using_command merge' -l no-verify-signatures -d 'Do not abort merge if other branch tip commit is not signed with a valid key' +complete -f -c git -n '__fish_git_using_command merge' -s q -l quiet -d 'Be quiet' +complete -f -c git -n '__fish_git_using_command merge' -s v -l verbose -d 'Be verbose' +complete -f -c git -n '__fish_git_using_command merge' -l progress -d 'Force progress status' +complete -f -c git -n '__fish_git_using_command merge' -l no-progress -d 'Force no progress status' +complete -f -c git -n '__fish_git_using_command merge' -l allow-unrelated-histories -d 'Allow merging even when branches do not share a common history' +complete -x -c git -n '__fish_git_using_command merge' -s m -d 'Set the commit message' +complete -f -c git -n '__fish_git_using_command merge' -s rerere-autoupdate -d 'If possible, use previous conflict resolutions' +complete -f -c git -n '__fish_git_using_command merge' -s no-rerere-autoupdate -d 'Do not use previous conflict resolutions' +complete -f -c git -n '__fish_git_using_command merge' -l abort -d 'Abort the current conflict resolution process' +complete -f -c git -n '__fish_git_using_command merge' -l continue -d 'Conclude current conflict resolution process' + +### merge-base +complete -f -c git -n __fish_git_needs_command -a merge-base -d 'Find as good common ancestors as possible for a merge' +complete -f -c git -n '__fish_git_using_command merge-base' -a '(__fish_git_branches)' +complete -f -c git -n '__fish_git_using_command merge-base' -s a -l all -d 'Output all merge bases for the commits, instead of just one' +complete -f -c git -n '__fish_git_using_command merge-base' -l octopus -d 'Compute the best common ancestors of all supplied commits' +complete -f -c git -n '__fish_git_using_command merge-base' -l independent -d 'Print a minimal subset of the supplied commits with the same ancestors.' +complete -f -c git -n '__fish_git_using_command merge-base' -l is-ancestor -d 'Check if the first commit is an ancestor of the second commit' +complete -f -c git -n '__fish_git_using_command merge-base' -l fork-point -d 'Find the point at which a branch forked from another branch ref' + +### mergetool + +complete -f -c git -n __fish_git_needs_command -a mergetool -d 'Run merge conflict resolution tools to resolve merge conflicts' +complete -f -c git -n '__fish_git_using_command mergetool' -s t -l tool -d "Use specific merge resolution program" -a "(__fish_git_diffmerge_tools mergetool)" +complete -f -c git -n '__fish_git_using_command mergetool' -l tool-help -d 'Print a list of merge tools that may be used with `--tool`' +complete -f -c git -n '__fish_git_using_command mergetool' -a "(__fish_git_files unmerged)" +complete -f -c git -n '__fish_git_using_command mergetool' -s y -l no-prompt -d 'Do not prompt before launching a diff tool' +complete -f -c git -n '__fish_git_using_command mergetool' -l prompt -d 'Prompt before each invocation of the merge resolution program' +complete -c git -n '__fish_git_using_command mergetool' -s O -d 'Process files in the order specified in the file passed as argument' + +### mv +complete -c git -n __fish_git_needs_command -a mv -d 'Move or rename a file, a directory, or a symlink' +complete -f -c git -n '__fish_git_using_command mv' -s f -l force -d 'Force rename/moving even if target exists' +complete -f -c git -n '__fish_git_using_command mv' -s k -d 'Skip rename/move which can lead to error' +complete -f -c git -n '__fish_git_using_command mv' -s n -l dry-run -d 'Only show what would happen' +complete -f -c git -n '__fish_git_using_command mv' -s v -l verbose -d 'Report names of files as they are changed' + +### notes +set -l notescommands add copy append edit show merge remove # list prune get-ref +complete -c git -n __fish_git_needs_command -a notes -d 'Add or inspect object notes' +complete -f -c git -n "__fish_git_using_command notes; and not __fish_seen_subcommand_from $notescommands" -a list -d 'List notes for given object' +complete -f -c git -n "__fish_git_using_command notes; and not __fish_seen_subcommand_from $notescommands" -a add -d 'Add notes for a given object' +complete -f -c git -n "__fish_git_using_command notes; and not __fish_seen_subcommand_from $notescommands" -a copy -d 'Copy notes from object1 to object2' +complete -f -c git -n "__fish_git_using_command notes; and not __fish_seen_subcommand_from $notescommands" -a append -d 'Append to the notes of existing object' +complete -f -c git -n "__fish_git_using_command notes; and not __fish_seen_subcommand_from $notescommands" -a edit -d 'Edit notes for a given object' +complete -f -c git -n "__fish_git_using_command notes; and not __fish_seen_subcommand_from $notescommands" -a show -d 'Show notes for given object' +complete -f -c git -n "__fish_git_using_command notes; and not __fish_seen_subcommand_from $notescommands" -a merge -d 'Merge the given notes ref to current notes ref' +complete -f -c git -n "__fish_git_using_command notes; and not __fish_seen_subcommand_from $notescommands" -a remove -d 'Remove notes for given object' +complete -f -c git -n "__fish_git_using_command notes; and not __fish_seen_subcommand_from $notescommands" -a prune -d 'Remove notes for non-existing/unreachable objects' +complete -f -c git -n "__fish_git_using_command notes; and not __fish_seen_subcommand_from $notescommands" -a get-ref -d 'Print current notes ref' +complete -f -c git -n "__fish_git_using_command notes; and __fish_seen_subcommand_from $notescommands" -ka '(__fish_git_commits)' +complete -f -c git -n "__fish_git_using_command notes; and __fish_seen_subcommand_from add copy" -s f -l force -d 'Overwrite existing notes' +complete -f -c git -n "__fish_git_using_command notes; and __fish_seen_subcommand_from add append edit" -l allow-empty -d 'Allow empty note' +complete -r -c git -n "__fish_git_using_command notes; and __fish_seen_subcommand_from add append" -s F -l file -d 'Read note message from file' +complete -x -c git -n "__fish_git_using_command notes; and __fish_seen_subcommand_from add append" -s m -l message -d 'Use this note message' +complete -f -c git -n "__fish_git_using_command notes; and __fish_seen_subcommand_from add append" -s C -l reuse-message -a '(__fish_git_commits)' -d 'Copy note from object' +complete -f -c git -n "__fish_git_using_command notes; and __fish_seen_subcommand_from add append" -s c -l reedit-message -a '(__fish_git_commits)' -d 'Copy and edit note from object' +complete -f -c git -n "__fish_git_using_command notes; and __fish_seen_subcommand_from copy remove" -l stdin -d 'Read object names from stdin' +complete -f -c git -n "__fish_git_using_command notes; and __fish_seen_subcommand_from merge remove prune" -s v -l verbose -d 'Be more verbose' +complete -f -c git -n "__fish_git_using_command notes; and __fish_seen_subcommand_from merge remove prune" -s q -l quiet -d 'Operate quietly' +complete -x -c git -n "__fish_git_using_command notes; and __fish_seen_subcommand_from merge" -s s -l strategy -d 'Merge strategy to use to resolve conflicts' -a " + manual\t'Instruct the user to resolve merge conflicts' + ours\t'Resolve conflicts in favour of local version' + theirs\t'Resolve conflicts in favour of remote version' + union\t'Resolve conflicts by concatenating local and remote versions' + cat_sort_uniq\t'Concatenate, sort and remove duplicate lines' + " +complete -f -c git -n "__fish_git_using_command notes; and __fish_seen_subcommand_from merge" -l commit -d 'Finalize git notes merge' +complete -f -c git -n "__fish_git_using_command notes; and __fish_seen_subcommand_from merge" -l abort -d 'Abort git notes merge' +complete -f -c git -n "__fish_git_using_command notes; and __fish_seen_subcommand_from remove" -l ignore-missing -d 'Do not throw error on deleting non-existing object note' + +### prune +complete -f -c git -n __fish_git_needs_command -a prune -d 'Prune all unreachable objects from the object database' +# TODO options + +### pull +complete -f -c git -n __fish_git_needs_command -a pull -d 'Fetch from and merge with another repository or a local branch' +complete -f -c git -n '__fish_git_using_command pull' -s q -l quiet -d 'Be quiet' +complete -f -c git -n '__fish_git_using_command pull' -s v -l verbose -d 'Be verbose' +# Options related to fetching +complete -f -c git -n '__fish_git_using_command pull' -l all -d 'Fetch all remotes' +complete -f -c git -n '__fish_git_using_command pull' -s a -l append -d 'Append ref names and object names' +complete -f -c git -n '__fish_git_using_command pull' -s f -l force -d 'Force update of local branches' +complete -f -c git -n '__fish_git_using_command pull' -s k -l keep -d 'Keep downloaded pack' +complete -f -c git -n '__fish_git_using_command pull' -l no-tags -d 'Disable automatic tag following' +complete -f -c git -n '__fish_git_using_command pull' -s p -l prune -d 'Remove remote-tracking references that no longer exist on the remote' +# TODO --upload-pack +complete -f -c git -n '__fish_git_using_command pull' -l progress -d 'Force progress status' +complete -f -c git -n '__fish_git_using_command pull; and not __fish_git_branch_for_remote' -a '(__fish_git_remotes)' -d 'Remote alias' +complete -f -c git -n '__fish_git_using_command pull; and __fish_git_branch_for_remote' -a '(__fish_git_branch_for_remote)' +# Options related to merging +complete -f -c git -n '__fish_git_using_command pull' -l commit -d "Autocommit the merge" +complete -f -c git -n '__fish_git_using_command pull' -l no-commit -d "Don't autocommit the merge" +complete -f -c git -n '__fish_git_using_command pull' -s e -l edit -d 'Edit auto-generated merge message' +complete -f -c git -n '__fish_git_using_command pull' -l no-edit -d "Don't edit auto-generated merge message" +complete -f -c git -n '__fish_git_using_command pull' -l ff -d "Don't generate a merge commit if merge is fast-forward" +complete -f -c git -n '__fish_git_using_command pull' -l no-ff -d "Generate a merge commit even if merge is fast-forward" +complete -f -c git -n '__fish_git_using_command pull' -l ff-only -d 'Refuse to merge unless fast-forward possible' +complete -f -c git -n '__fish_git_using_command pull' -s S -l gpg-sign -d 'GPG-sign the merge commit' +complete -f -c git -n '__fish_git_using_command pull' -l log -d 'Populate the log message with one-line descriptions' +complete -f -c git -n '__fish_git_using_command pull' -l no-log -d "Don't populate the log message with one-line descriptions" +complete -f -c git -n '__fish_git_using_command pull' -l signoff -d 'Add Signed-off-by line at the end of the merge commit message' +complete -f -c git -n '__fish_git_using_command pull' -l no-signoff -d 'Do not add a Signed-off-by line at the end of the merge commit message' +complete -f -c git -n '__fish_git_using_command pull' -l stat -d "Show diffstat of the merge" +complete -f -c git -n '__fish_git_using_command pull' -s n -l no-stat -d "Don't show diffstat of the merge" +complete -f -c git -n '__fish_git_using_command pull' -l squash -d "Squash changes from upstream branch as a single commit" +complete -f -c git -n '__fish_git_using_command pull' -l no-squash -d "Don't squash changes" +complete -x -c git -n '__fish_git_using_command pull' -s s -l strategy -d 'Use the given merge strategy' +complete -r -c git -n '__fish_git_using_command pull' -s X -l strategy-option -d 'Pass given option to the merge strategy' +complete -f -c git -n '__fish_git_using_command pull' -l verify-signatures -d 'Abort merge if upstream branch tip commit is not signed with a valid key' +complete -f -c git -n '__fish_git_using_command pull' -l no-verify-signatures -d 'Do not abort merge if upstream branch tip commit is not signed with a valid key' +complete -f -c git -n '__fish_git_using_command pull' -l allow-unrelated-histories -d 'Allow merging even when branches do not share a common history' +complete -f -c git -n '__fish_git_using_command pull' -s r -l rebase -d 'Rebase the current branch on top of the upstream branch' +complete -f -c git -n '__fish_git_using_command pull' -l no-rebase -d 'Do not rebase the current branch on top of the upstream branch' +complete -f -c git -n '__fish_git_using_command pull' -l autostash -d 'Before starting rebase, stash local changes, and apply stash when done' +complete -f -c git -n '__fish_git_using_command pull' -l no-autostash -d 'Do not stash local changes before starting rebase' +# TODO other options + +### range-diff +complete -f -c git -n __fish_git_needs_command -a range-diff -d 'Compare two commit ranges (e.g. two versions of a branch)' +complete -f -c git -n '__fish_git_using_command range-diff' -ka '(__fish_git_ranges)' +complete -f -c git -n '__fish_git_using_command range-diff' -l creation-factor -d 'Percentage by which creation is weighted' +complete -f -c git -n '__fish_git_using_command range-diff' -l no-dual-color -d 'Use simple diff colors' + + +### push +complete -f -c git -n __fish_git_needs_command -a push -d 'Update remote refs along with associated objects' +complete -f -c git -n '__fish_git_using_command push; and not __fish_git_branch_for_remote' -a '(__fish_git_remotes)' -d 'Remote alias' +complete -f -c git -n '__fish_git_using_command push; and __fish_git_branch_for_remote' -ka '(__fish_git_tags)' -d Tag +complete -f -c git -n '__fish_git_using_command push; and __fish_git_branch_for_remote' -ka '(__fish_git_branches)' +complete -f -c git -n '__fish_git_using_command push; and __fish_git_branch_for_remote' -ka '(__fish_git_heads)' +# The "refspec" here is an optional "+" to signify a force-push +complete -f -c git -n '__fish_git_using_command push; and __fish_git_branch_for_remote; and string match -q "+*" -- (commandline -ct)' -a '+(__fish_git_branches | string replace -r \t".*" "")' -d 'Force-push branch' +# git push REMOTE :BRANCH deletes BRANCH on remote REMOTE +complete -f -c git -n '__fish_git_using_command push; and __fish_git_branch_for_remote; and string match -q ":*" -- (commandline -ct)' -a ':(__fish_git_branch_for_remote | string replace -r \t".*" "")' -d 'Delete remote branch' +# then src:dest (where both src and dest are git objects, so we want to complete branches) +complete -f -c git -n '__fish_git_using_command push; and __fish_git_branch_for_remote; and string match -q "+*:*" -- (commandline -ct)' -a '(commandline -ct | string replace -r ":.*" ""):(__fish_git_branch_for_remote | string replace -r \t".*" "")' -d 'Force-push local branch to remote branch' +complete -f -c git -n '__fish_git_using_command push; and __fish_git_branch_for_remote; and string match -q "*:*" -- (commandline -ct)' -a '(commandline -ct | string replace -r ":.*" ""):(__fish_git_branch_for_remote | string replace -r \t".*" "")' -d 'Push local branch to remote branch' +complete -f -c git -n '__fish_git_using_command push' -l all -d 'Push all refs under refs/heads/' +complete -f -c git -n '__fish_git_using_command push' -l prune -d "Remove remote branches that don't have a local counterpart" +complete -f -c git -n '__fish_git_using_command push' -l mirror -d 'Push all refs under refs/' +complete -f -c git -n '__fish_git_using_command push' -l delete -d 'Delete all listed refs from the remote repository' +complete -f -c git -n '__fish_git_using_command push' -l tags -d 'Push all refs under refs/tags' +complete -f -c git -n '__fish_git_using_command push' -l follow-tags -d 'Push all usual refs plus the ones under refs/tags' +complete -f -c git -n '__fish_git_using_command push' -s n -l dry-run -d 'Do everything except actually send the updates' +complete -f -c git -n '__fish_git_using_command push' -l porcelain -d 'Produce machine-readable output' +complete -f -c git -n '__fish_git_using_command push' -s f -l force -d 'Force update of remote refs' +complete -f -c git -n '__fish_git_using_command push' -s f -l force-with-lease -d 'Force update of remote refs, stopping if other\'s changes would be overwritten' +complete -f -c git -n '__fish_git_using_command push' -s u -l set-upstream -d 'Add upstream (tracking) reference' +complete -f -c git -n '__fish_git_using_command push' -s q -l quiet -d 'Be quiet' +complete -f -c git -n '__fish_git_using_command push' -s v -l verbose -d 'Be verbose' +complete -f -c git -n '__fish_git_using_command push' -l progress -d 'Force progress status' +# TODO --recurse-submodules=check|on-demand + +### rebase +complete -f -c git -n __fish_git_needs_command -a rebase -d 'Forward-port local commits to the updated upstream head' +complete -f -c git -n '__fish_git_using_command rebase' -a '(__fish_git_remotes)' -d 'Remote alias' +complete -f -c git -n '__fish_git_using_command rebase' -a '(__fish_git_branches)' +complete -f -c git -n '__fish_git_using_command rebase' -a '(__fish_git_heads)' -d Head +complete -f -c git -n '__fish_git_using_command rebase' -a '(__fish_git_recent_commits)' +complete -f -c git -n '__fish_git_using_command rebase' -a '(__fish_git_tags)' -d Tag +complete -f -c git -n '__fish_git_using_command rebase; and __fish_git_is_rebasing' -l continue -d 'Restart the rebasing process' +complete -f -c git -n '__fish_git_using_command rebase; and __fish_git_is_rebasing' -l abort -d 'Abort the rebase operation' +complete -f -c git -n '__fish_git_using_command rebase; and __fish_git_is_rebasing' -l edit-todo -d 'Edit the todo list' +complete -f -c git -n '__fish_git_using_command rebase' -l keep-empty -d "Keep the commits that don't change anything" +complete -f -c git -n '__fish_git_using_command rebase; and __fish_git_is_rebasing' -l skip -d 'Restart the rebasing process by skipping the current patch' +complete -f -c git -n '__fish_git_using_command rebase' -s m -l merge -d 'Use merging strategies to rebase' +complete -f -c git -n '__fish_git_using_command rebase' -s q -l quiet -d 'Be quiet' +complete -f -c git -n '__fish_git_using_command rebase' -s v -l verbose -d 'Be verbose' +complete -f -c git -n '__fish_git_using_command rebase' -l stat -d "Show diffstat of the rebase" +complete -f -c git -n '__fish_git_using_command rebase' -s n -l no-stat -d "Don't show diffstat of the rebase" +complete -f -c git -n '__fish_git_using_command rebase' -l verify -d "Allow the pre-rebase hook to run" +complete -f -c git -n '__fish_git_using_command rebase' -l no-verify -d "Don't allow the pre-rebase hook to run" +complete -f -c git -n '__fish_git_using_command rebase' -s f -l force-rebase -d 'Force the rebase' +complete -f -c git -n '__fish_git_using_command rebase' -l committer-date-is-author-date -d "Use the author date as the committer date" +complete -f -c git -n '__fish_git_using_command rebase' -l ignore-date -d "Use the committer date as the author date" +complete -f -c git -n '__fish_git_using_command rebase' -s i -l interactive -d 'Interactive mode' +complete -f -c git -n '__fish_git_using_command rebase' -s p -l preserve-merges -d 'Try to recreate merges' +complete -f -c git -n '__fish_git_using_command rebase' -s r -l rebase-merges -a 'rebase-cousins no-rebase-cousins' -d 'Preserve branch structure' +complete -f -c git -n '__fish_git_using_command rebase' -l root -d 'Rebase all reachable commits' +complete -f -c git -n '__fish_git_using_command rebase' -l autosquash -d 'Automatic squashing' +complete -f -c git -n '__fish_git_using_command rebase' -l no-autosquash -d 'No automatic squashing' +complete -f -c git -n '__fish_git_using_command rebase' -l autostash -d 'Before starting rebase, stash local changes, and apply stash when done' +complete -f -c git -n '__fish_git_using_command rebase' -l no-autostash -d 'Do not stash local changes before starting rebase' +complete -f -c git -n '__fish_git_using_command rebase' -l no-ff -d 'No fast-forward' +# This actually takes script for $SHELL, but completing that is... complicated. +complete -r -c git -n '__fish_git_using_command rebase' -l exec -d 'Execute shellscript' + +### reflog +set -l reflogcommands show expire delete exists +complete -f -c git -n __fish_git_needs_command -a reflog -d 'Manage reflog information' +complete -f -c git -n '__fish_git_using_command reflog' -a '(__fish_git_branches)' +complete -f -c git -n '__fish_git_using_command reflog' -a '(__fish_git_heads)' -d Head + +complete -f -c git -n "__fish_git_using_command reflog; and not __fish_seen_subcommand_from $reflogcommands" -a "$reflogcommands" + +### reset +complete -c git -n __fish_git_needs_command -a reset -d 'Reset current HEAD to the specified state' +complete -f -c git -n '__fish_git_using_command reset' -l hard -d 'Reset the index and the working tree' +complete -f -c git -n '__fish_git_using_command reset' -l soft -d 'Reset head without touching the index or the working tree' +complete -f -c git -n '__fish_git_using_command reset' -l mixed -d 'The default: reset the index but not the working tree' +complete -c git -n '__fish_git_using_command reset; and not contains -- -- (commandline -opc)' -a '(__fish_git_branches)' +# reset can either undo changes to versioned modified files, +# or remove files from the staging area. +# Deleted files seem to need a "--" separator. +complete -f -c git -n '__fish_git_using_command reset; and not contains -- -- (commandline -opc)' -a '(__fish_git_files all-staged modified)' +complete -f -c git -n '__fish_git_using_command reset; and contains -- -- (commandline -opc)' -a '(__fish_git_files all-staged deleted modified)' +complete -f -c git -n '__fish_git_using_command reset; and not contains -- -- (commandline -opc)' -a '(__fish_git_reflog)' -d Reflog +# TODO options + +### restore and switch +# restore options +complete -f -c git -n __fish_git_needs_command -a restore -d 'Restore working tree files' +complete -f -c git -n '__fish_git_using_command restore' -r -s s -l source -d 'Specify the source tree used to restore the working tree' -k -a '(__fish_git_refs)' +complete -f -c git -n '__fish_git_using_command restore' -s p -l patch -d 'Interactive mode' +complete -f -c git -n '__fish_git_using_command restore' -s W -l worktree -d 'Restore working tree (default)' +complete -f -c git -n '__fish_git_using_command restore' -s S -l staged -d 'Restore the index' +complete -f -c git -n '__fish_git_using_command restore' -l ours -d 'When restoring files, use stage #2 (ours)' +complete -f -c git -n '__fish_git_using_command restore' -l theirs -d 'When restoring files, use stage #3 (theirs)' +complete -f -c git -n '__fish_git_using_command restore' -s m -l merge -d 'Recreate the conflicted merge in the unmerged paths when restoring files' +complete -f -c git -n '__fish_git_using_command restore' -l ignore-unmerged -d 'When restoring files, do not abort the operation if there are unmerged entries' +complete -f -c git -n '__fish_git_using_command restore' -l ignore-skip-worktree-bits -d 'Ignore the sparse-checkout file and unconditionally restore any files in <pathspec>' +complete -f -c git -n '__fish_git_using_command restore' -l overlay -d 'Never remove files when restoring' +complete -f -c git -n '__fish_git_using_command restore' -l no-overlay -d 'Remove files when restoring (default)' +complete -f -c git -n '__fish_git_using_command restore; and not contains -- --staged (commandline -opc)' -a '(__fish_git_files modified deleted modified-staged-deleted unmerged)' +complete -f -c git -n '__fish_git_using_command restore; and contains -- --staged (commandline -opc)' -a '(__fish_git_files added modified-staged deleted-staged renamed copied)' +complete -F -c git -n '__fish_git_using_command restore; and __fish_contains_opt -s s source' +# switch options +complete -f -c git -n __fish_git_needs_command -a switch -d 'Switch to a branch' +complete -k -f -c git -n '__fish_git_using_command switch' -a '(__fish_git_unique_remote_branches)' -d 'Unique Remote Branch' +complete -k -f -c git -n '__fish_git_using_command switch' -a '(__fish_git_local_branches)' +complete -f -c git -n '__fish_git_using_command switch' -r -s c -l create -d 'Create a new branch' +complete -f -c git -n '__fish_git_using_command switch' -r -s C -l force-create -d 'Force create a new branch' +complete -f -c git -n '__fish_git_using_command switch' -s d -l detach -d 'Switch to a commit for inspection and discardable experiment' -k -ra '(__fish_git_refs)' +complete -f -c git -n '__fish_git_using_command switch' -l guess -d 'Guess branch name from remote branch (default)' +complete -f -c git -n '__fish_git_using_command switch' -l no-guess -d 'Do not guess branch name from remote branch' +complete -f -c git -n '__fish_git_using_command switch' -s f -l force -l discard-changes -d 'Proceed even if the index or the working tree differs from HEAD' +complete -f -c git -n '__fish_git_using_command switch' -s m -l merge -d 'Merge the current branch and contents of the working tree into a new branch' +complete -f -c git -n '__fish_git_using_command switch' -s t -l track -d 'Track remote branch when creating a new branch' +complete -f -c git -n '__fish_git_using_command switch' -l no-track -d 'Do not track remote branch when creating a new branch' +complete -f -c git -n '__fish_git_using_command switch' -r -l orphan -d 'Create a new orphan branch' +complete -f -c git -n '__fish_git_using_command switch' -l ignore-other-worktrees -d 'Force check out of the reference' +complete -f -c git -n '__fish_git_using_command switch' -l recurse-submodules -d 'Update the work trees of submodules' +complete -f -c git -n '__fish_git_using_command switch' -l no-recurse-submodules -d 'Do not update the work trees of submodules' +# common options +complete -f -c git -n '__fish_git_using_command restore switch' -s q -l quiet -d 'Suppress messages' +complete -f -c git -n '__fish_git_using_command restore switch' -l progress -d 'Report progress status to stderr (default)' +complete -f -c git -n '__fish_git_using_command restore switch' -l no-progress -d 'Do not report progress status to stderr' +complete -f -c git -n '__fish_git_using_command restore switch' -l 'conflict=merge' -d 'Same as --merge, but specify \'merge\' as the conflicting hunk style (default)' +complete -f -c git -n '__fish_git_using_command restore switch' -l 'conflict=diff3' -d 'Same as --merge, but specify \'diff3\' as the conflicting hunk style' + +### rev-parse +complete -f -c git -n __fish_git_needs_command -a rev-parse -d 'Pick out and massage parameters' +complete -f -c git -n '__fish_git_using_command rev-parse' -a '(__fish_git_branches)' +complete -f -c git -n '__fish_git_using_command rev-parse' -a '(__fish_git_heads)' -d Head +complete -k -c git -n '__fish_git_using_command rev-parse' -a '(__fish_git_tags)' -d Tag +complete -c git -n '__fish_git_using_command rev-parse' -l abbrev-ref -d 'Output non-ambiguous short object names' + +### revert +complete -f -c git -n __fish_git_needs_command -a revert -d 'Revert an existing commit' +complete -f -c git -n '__fish_git_using_command revert' -ka '(__fish_git_commits)' +complete -f -c git -n '__fish_git_using_command revert' -l continue -d 'Continue the operation in progress' +complete -f -c git -n '__fish_git_using_command revert' -l abort -d 'Cancel the operation' +complete -f -c git -n '__fish_git_using_command revert' -l skip -d 'Skip the current commit and continue with the rest of the sequence' +# TODO options + +### rm +complete -c git -n __fish_git_needs_command -a rm -d 'Remove files from the working tree and the index' +complete -c git -n '__fish_git_using_command rm' -l cached -d 'Unstage files from the index' +complete -c git -n '__fish_git_using_command rm; and __fish_contains_opt cached' -f -a '(__fish_git_files all-staged)' +complete -c git -n '__fish_git_using_command rm' -l ignore-unmatch -d 'Exit with a zero status even if no files matched' +complete -c git -n '__fish_git_using_command rm' -s r -d 'Allow recursive removal' +complete -c git -n '__fish_git_using_command rm' -s q -l quiet -d 'Be quiet' +complete -c git -n '__fish_git_using_command rm' -s f -l force -d 'Override the up-to-date check' +complete -c git -n '__fish_git_using_command rm' -s n -l dry-run -d 'Dry run' +# TODO options + +### status +complete -f -c git -n __fish_git_needs_command -a status -d 'Show the working tree status' +complete -f -c git -n '__fish_git_using_command status' -s s -l short -d 'Give the output in the short-format' +complete -f -c git -n '__fish_git_using_command status' -s b -l branch -d 'Show the branch and tracking info even in short-format' +complete -f -c git -n '__fish_git_using_command status' -l porcelain -d 'Give the output in a stable, easy-to-parse format' +complete -f -c git -n '__fish_git_using_command status' -s z -d 'Terminate entries with null character' +complete -f -c git -n '__fish_git_using_command status' -s u -l untracked-files -x -a 'no normal all' -d 'The untracked files handling mode' +complete -f -c git -n '__fish_git_using_command status' -l ignore-submodules -x -a 'none untracked dirty all' -d 'Ignore changes to submodules' +# TODO options + +### stripspace +complete -f -c git -n __fish_git_needs_command -a stripspace -d 'Remove unnecessary whitespace' +complete -f -c git -n '__fish_git_using_command stripspace' -s s -l strip-comments -d 'Strip all lines starting with comment character' +complete -f -c git -n '__fish_git_using_command stripspace' -s c -l comment-lines -d 'Prepend comment character to each line' + +### tag +complete -f -c git -n __fish_git_needs_command -a tag -d 'Create, list, delete or verify a tag object signed with GPG' +complete -f -c git -n '__fish_git_using_command tag; and __fish_not_contain_opt -s d; and __fish_not_contain_opt -s v; and test (count (commandline -opc | string match -r -v \'^-\')) -eq 3' -a '(__fish_git_branches)' +complete -f -c git -n '__fish_git_using_command tag' -s a -l annotate -d 'Make an unsigned, annotated tag object' +complete -f -c git -n '__fish_git_using_command tag' -s s -l sign -d 'Make a GPG-signed tag' +complete -f -c git -n '__fish_git_using_command tag' -s d -l delete -d 'Remove a tag' +complete -f -c git -n '__fish_git_using_command tag' -s v -l verify -d 'Verify signature of a tag' +complete -f -c git -n '__fish_git_using_command tag' -s f -l force -d 'Force overwriting existing tag' +complete -f -c git -n '__fish_git_using_command tag' -s l -l list -d 'List tags' +complete -f -c git -n '__fish_git_using_command tag' -l contains -xka '(__fish_git_commits)' -d 'List tags that contain a commit' +complete -f -c git -n '__fish_git_using_command tag; and __fish_contains_opt -s d delete -s v verify' -a '(__fish_git_tags)' -d Tag +# TODO options + +### worktree +set -l git_worktree_commands add list lock move prune remove unlock +complete -c git -n __fish_git_needs_command -a worktree -d 'Manage multiple working trees' +complete -f -c git -n "__fish_git_using_command worktree; and not __fish_seen_subcommand_from $git_worktree_commands" -a add -d 'Create a working tree' +complete -f -c git -n "__fish_git_using_command worktree; and not __fish_seen_subcommand_from $git_worktree_commands" -a list -d 'List details of each worktree' +complete -f -c git -n "__fish_git_using_command worktree; and not __fish_seen_subcommand_from $git_worktree_commands" -a lock -d 'Lock a working tree' +complete -f -c git -n "__fish_git_using_command worktree; and not __fish_seen_subcommand_from $git_worktree_commands" -a move -d 'Move a working tree to a new location' +complete -f -c git -n "__fish_git_using_command worktree; and not __fish_seen_subcommand_from $git_worktree_commands" -a prune -d 'Prune working tree information in $GIT_DIR/worktrees' +complete -f -c git -n "__fish_git_using_command worktree; and not __fish_seen_subcommand_from $git_worktree_commands" -a remove -d 'Remove a working tree' +complete -f -c git -n "__fish_git_using_command worktree; and not __fish_seen_subcommand_from $git_worktree_commands" -a unlock -d 'Unlock a working tree' + +complete -f -c git -n '__fish_git_using_command worktree; and __fish_seen_subcommand_from add move remove' -s f -l force -d 'Override safeguards' + +complete -c git -n '__fish_git_using_command worktree; and __fish_seen_subcommand_from add' +complete -k -c git -n '__fish_git_using_command worktree; and __fish_seen_subcommand_from add' -a '(__fish_git_branches)' +complete -k -c git -n '__fish_git_using_command worktree; and __fish_seen_subcommand_from add' -a '(__fish_git_heads)' -d Head +complete -k -c git -n '__fish_git_using_command worktree; and __fish_seen_subcommand_from add' -a '(__fish_git_tags)' -d Tag +complete -k -c git -n '__fish_git_using_command worktree; and __fish_seen_subcommand_from add' -a '(__fish_git_unique_remote_branches)' -d 'Unique Remote Branch' +complete -k -c git -n '__fish_git_using_command worktree; and __fish_seen_subcommand_from add' -a '(__fish_git_local_branches)' +complete -x -c git -n '__fish_git_using_command worktree; and __fish_seen_subcommand_from add' -s b -d 'Create a new branch' +complete -x -c git -n '__fish_git_using_command worktree; and __fish_seen_subcommand_from add' -s B -d 'Create a new branch even if it already exists' +complete -f -c git -n '__fish_git_using_command worktree; and __fish_seen_subcommand_from add' -l detach -d 'Detach HEAD in the new working tree' +complete -f -c git -n '__fish_git_using_command worktree; and __fish_seen_subcommand_from add' -l checkout -d 'Checkout <commit-ish> after creating working tree' +complete -f -c git -n '__fish_git_using_command worktree; and __fish_seen_subcommand_from add' -l no-checkout -d 'Suppress checkout' +complete -f -c git -n '__fish_git_using_command worktree; and __fish_seen_subcommand_from add' -l guess-remote +complete -f -c git -n '__fish_git_using_command worktree; and __fish_seen_subcommand_from add' -l no-guess-remote +complete -f -c git -n '__fish_git_using_command worktree; and __fish_seen_subcommand_from add' -l track -d 'Mark <commit-ish> as "upstream" from the new branch' +complete -f -c git -n '__fish_git_using_command worktree; and __fish_seen_subcommand_from add' -l no-track -d 'Don\'t mark <commit-ish> as "upstream" from the new branch' +complete -f -c git -n '__fish_git_using_command worktree; and __fish_seen_subcommand_from add' -l lock -d 'Lock working tree after creation' +complete -f -c git -n '__fish_git_using_command worktree; and __fish_seen_subcommand_from add' -s q -l quiet -d 'Suppress feedback messages' +complete -f -c git -n '__fish_git_using_command worktree; and __fish_seen_subcommand_from list' -l porcelain -d 'Output in an easy-to-parse format for scripts' +complete -f -c git -n '__fish_git_using_command worktree; and __fish_seen_subcommand_from lock' -a '(__fish_git_complete_worktrees)' -d Worktree +complete -x -c git -n '__fish_git_using_command worktree; and __fish_seen_subcommand_from lock' -l reason -d 'An explanation why the working tree is locked' +complete -x -c git -n '__fish_git_using_command worktree; and __fish_seen_subcommand_from move; and not __fish_any_arg_in (__fish_git_complete_worktrees)' -a '(__fish_git_complete_worktrees)' -d Worktree +complete -x -c git -n '__fish_git_using_command worktree; and __fish_seen_subcommand_from move; and __fish_any_arg_in (__fish_git_complete_worktrees)' -a '(__fish_complete_directories)' +complete -f -c git -n '__fish_git_using_command worktree; and __fish_seen_subcommand_from prune' -s n -l dry-run -d 'Do not remove anything' +complete -f -c git -n '__fish_git_using_command worktree; and __fish_seen_subcommand_from prune' -s v -l verbose -d 'Report all removals' +complete -x -c git -n '__fish_git_using_command worktree; and __fish_seen_subcommand_from prune' -l expire -d 'Only expire unused working trees older than <time>' +complete -f -c git -n '__fish_git_using_command worktree; and __fish_seen_subcommand_from remove' -a '(__fish_git_complete_worktrees)' -d Worktree +complete -f -c git -n '__fish_git_using_command worktree; and __fish_seen_subcommand_from unlock' -a '(__fish_git_complete_worktrees)' -d Worktree + +### stash +complete -c git -n __fish_git_needs_command -a stash -d 'Stash away changes' +complete -f -c git -n '__fish_git_using_command stash; and __fish_git_stash_not_using_subcommand' -a list -d 'List stashes' +complete -f -c git -n '__fish_git_using_command stash; and __fish_git_stash_not_using_subcommand' -a show -d 'Show the changes recorded in the stash' +complete -f -c git -n '__fish_git_using_command stash; and __fish_git_stash_not_using_subcommand' -a pop -d 'Apply and remove a single stashed state' +complete -f -c git -n '__fish_git_using_command stash; and __fish_git_stash_not_using_subcommand' -a apply -d 'Apply a single stashed state' +complete -f -c git -n '__fish_git_using_command stash; and __fish_git_stash_not_using_subcommand' -a clear -d 'Remove all stashed states' +complete -f -c git -n '__fish_git_using_command stash; and __fish_git_stash_not_using_subcommand' -a drop -d 'Remove a single stashed state from the stash list' +complete -f -c git -n '__fish_git_using_command stash; and __fish_git_stash_not_using_subcommand' -a create -d 'Create a stash' +complete -f -c git -n '__fish_git_using_command stash; and __fish_git_stash_not_using_subcommand' -a save -d 'Save a new stash' +complete -f -c git -n '__fish_git_using_command stash; and __fish_git_stash_not_using_subcommand' -a branch -d 'Create a new branch from a stash' +complete -f -c git -n '__fish_git_using_command stash; and __fish_git_stash_not_using_subcommand' -a push -d 'Create a new stash with given files' + +complete -f -c git -n '__fish_git_stash_using_command apply' -a '(__fish_git_complete_stashes)' +complete -f -c git -n '__fish_git_stash_using_command branch' -a '(__fish_git_complete_stashes)' +complete -f -c git -n '__fish_git_stash_using_command drop' -a '(__fish_git_complete_stashes)' +complete -f -c git -n '__fish_git_stash_using_command pop' -a '(__fish_git_complete_stashes)' +complete -f -c git -n '__fish_git_stash_using_command show' -a '(__fish_git_complete_stashes)' + +complete -f -c git -n '__fish_git_stash_using_command push' -a '(__fish_git_files modified deleted modified-staged-deleted)' +complete -f -c git -n '__fish_git_stash_using_command push' -s p -l patch -d 'Interactively select hunks' +complete -f -c git -n '__fish_git_stash_using_command push' -s m -l message -d 'Add a description' + +### config +complete -f -c git -n __fish_git_needs_command -a config -d 'Set and read git configuration variables' +# TODO options + +### format-patch +complete -f -c git -n __fish_git_needs_command -a format-patch -d 'Generate patch series to send upstream' +complete -f -c git -n '__fish_git_using_command format-patch' -a '(__fish_git_branches)' +complete -c git -n '__fish_git_using_command format-patch' -s o -l output-directory -xa '(__fish_complete_directories)' +complete -f -c git -n '__fish_git_using_command format-patch' -s p -l no-stat -d "Generate plain patches without diffstat" +complete -f -c git -n '__fish_git_using_command format-patch' -s s -l no-patch -d "Suppress diff output" +complete -f -c git -n '__fish_git_using_command format-patch' -l minimal -d "Spend more time to create smaller diffs" +complete -f -c git -n '__fish_git_using_command format-patch' -l patience -d "Generate diff with the 'patience' algorithm" +complete -f -c git -n '__fish_git_using_command format-patch' -l histogram -d "Generate diff with the 'histogram' algorithm" +complete -f -c git -n '__fish_git_using_command format-patch' -l stdout -d "Print all commits to stdout in mbox format" +complete -f -c git -n '__fish_git_using_command format-patch' -l numstat -d "Show number of added/deleted lines in decimal notation" +complete -f -c git -n '__fish_git_using_command format-patch' -l shortstat -d "Output only last line of the stat" +complete -f -c git -n '__fish_git_using_command format-patch' -l summary -d "Output a condensed summary of extended header information" +complete -f -c git -n '__fish_git_using_command format-patch' -l no-renames -d "Disable rename detection" +complete -f -c git -n '__fish_git_using_command format-patch' -l full-index -d "Show full blob object names" +complete -f -c git -n '__fish_git_using_command format-patch' -l binary -d "Output a binary diff for use with git apply" +complete -f -c git -n '__fish_git_using_command format-patch log' -l find-copies-harder -d "Also inspect unmodified files as source for a copy" +complete -f -c git -n '__fish_git_using_command format-patch' -l text -s a -d "Treat all files as text" +complete -f -c git -n '__fish_git_using_command format-patch log' -l ignore-space-at-eol -d "Ignore changes in whitespace at EOL" +complete -f -c git -n '__fish_git_using_command format-patch log' -l ignore-space-change -s b -d "Ignore changes in amount of whitespace" +complete -f -c git -n '__fish_git_using_command format-patch log' -l ignore-all-space -s w -d "Ignore whitespace when comparing lines" +complete -f -c git -n '__fish_git_using_command format-patch log' -l ignore-blank-lines -d "Ignore changes whose lines are all blank" +complete -f -c git -n '__fish_git_using_command format-patch log' -l function-context -s W -d "Show whole surrounding functions of changes" +complete -f -c git -n '__fish_git_using_command format-patch log' -l ext-diff -d "Allow an external diff helper to be executed" +complete -f -c git -n '__fish_git_using_command format-patch log' -l no-ext-diff -d "Disallow external diff helpers" +complete -f -c git -n '__fish_git_using_command format-patch log' -l no-textconv -d "Disallow external text conversion filters for binary files (Default)" +complete -f -c git -n '__fish_git_using_command format-patch log' -l textconv -d "Allow external filters for binary files (Resulting diff is unappliable)" +complete -f -c git -n '__fish_git_using_command format-patch log' -l no-prefix -d "Do not show source or destination prefix" +complete -f -c git -n '__fish_git_using_command format-patch' -l numbered -s n -d "Name output in [Patch n/m] format, even with a single patch" +complete -f -c git -n '__fish_git_using_command format-patch' -l no-numbered -s N -d "Name output in [Patch] format, even with multiple patches" + + +## git submodule +set -l submodulecommands add status init deinit update set-branch set-url summary foreach sync absorbgitdirs +complete -f -c git -n __fish_git_needs_command -a submodule -d 'Initialize, update or inspect submodules' +complete -f -c git -n "__fish_git_using_command submodule; and not __fish_seen_subcommand_from $submodulecommands" -a add -d 'Add a submodule' +complete -f -c git -n "__fish_git_using_command submodule; and not __fish_seen_subcommand_from $submodulecommands" -a status -d 'Show submodule status' +complete -f -c git -n "__fish_git_using_command submodule; and not __fish_seen_subcommand_from $submodulecommands" -a init -d 'Initialize all submodules' +complete -f -c git -n "__fish_git_using_command submodule; and not __fish_seen_subcommand_from $submodulecommands" -a deinit -d 'Unregister the given submodules' +complete -f -c git -n "__fish_git_using_command submodule; and not __fish_seen_subcommand_from $submodulecommands" -a update -d 'Update all submodules' +complete -x -c git -n "__fish_git_using_command submodule; and not __fish_seen_subcommand_from $submodulecommands" -a set-branch -d 'Sets the default remote tracking branch for the submodule' +complete -f -c git -n "__fish_git_using_command submodule; and not __fish_seen_subcommand_from $submodulecommands" -a set-url -d 'Sets the URL of the specified submodule' +complete -f -c git -n "__fish_git_using_command submodule; and not __fish_seen_subcommand_from $submodulecommands" -a summary -d 'Show commit summary' +complete -f -c git -n "__fish_git_using_command submodule; and not __fish_seen_subcommand_from $submodulecommands" -a foreach -d 'Run command on each submodule' +complete -f -c git -n "__fish_git_using_command submodule; and not __fish_seen_subcommand_from $submodulecommands" -a sync -d 'Sync submodules\' URL with .gitmodules' +complete -f -c git -n "__fish_git_using_command submodule; and not __fish_seen_subcommand_from $submodulecommands" -a absorbgitdirs -d 'Move submodule\'s git directory to current .git/module directory' +complete -f -c git -n "__fish_git_using_command submodule; and not __fish_seen_subcommand_from $submodulecommands" -s q -l quiet -d "Only print error messages" +complete -f -c git -n '__fish_git_using_command submodule; and __fish_seen_subcommand_from update' -l init -d "Initialize all submodules" +complete -f -c git -n '__fish_git_using_command submodule; and __fish_seen_subcommand_from update' -l checkout -d "Checkout the superproject's commit on a detached HEAD in the submodule" +complete -f -c git -n '__fish_git_using_command submodule; and __fish_seen_subcommand_from update' -l merge -d "Merge the superproject's commit into the current branch of the submodule" +complete -f -c git -n '__fish_git_using_command submodule; and __fish_seen_subcommand_from update' -l rebase -d "Rebase current branch onto the superproject's commit" +complete -f -c git -n '__fish_git_using_command submodule; and __fish_seen_subcommand_from update' -s N -l no-fetch -d "Don't fetch new objects from the remote" +complete -f -c git -n '__fish_git_using_command submodule; and __fish_seen_subcommand_from update' -l remote -d "Instead of using superproject's SHA-1, use the state of the submodule's remote-tracking branch" +complete -f -c git -n '__fish_git_using_command submodule; and __fish_seen_subcommand_from update' -l force -d "Discard local changes when switching to a different commit & always run checkout" +complete -f -c git -n '__fish_git_using_command submodule; and __fish_seen_subcommand_from add' -l force -d "Also add ignored submodule path" +complete -f -c git -n '__fish_git_using_command submodule; and __fish_seen_subcommand_from deinit' -l force -d "Remove even with local changes" +complete -f -c git -n '__fish_git_using_command submodule; and __fish_seen_subcommand_from deinit' -l all -d "Remove all submodules" +complete -f -c git -n '__fish_git_using_command submodule; and __fish_seen_subcommand_from deinit; and not contains -- -- (commandline -opc)' -a '(__fish_git_submodules)' -d Submodule +complete -f -c git -n '__fish_git_using_command submodule; and __fish_seen_subcommand_from set-branch' -s b -l branch -d "Specify the branch to use" +complete -f -c git -n '__fish_git_using_command submodule; and __fish_seen_subcommand_from set-branch' -s d -l default -d "Use default branch of the submodule" +complete -f -c git -n '__fish_git_using_command submodule; and __fish_seen_subcommand_from status summary' -l cached -d "Use the commit stored in the index" +complete -f -c git -n '__fish_git_using_command submodule; and __fish_seen_subcommand_from status; and not contains -- -- (commandline -opc)' -a '(__fish_git_submodules)' -d Submodule +complete -f -c git -n '__fish_git_using_command submodule; and __fish_seen_subcommand_from summary' -l files -d "Compare the commit in the index with submodule HEAD" +complete -f -c git -n '__fish_git_using_command submodule; and __fish_seen_subcommand_from foreach update status' -l recursive -d "Traverse submodules recursively" +complete -f -c git -n '__fish_git_using_command submodule; and __fish_seen_subcommand_from foreach' -a "(__fish_complete_subcommand --fcs-skip=3)" + +## git whatchanged +complete -f -c git -n __fish_git_needs_command -a whatchanged -d 'Show logs with difference each commit introduces' + +## Aliases (custom user-defined commands) +complete -c git -n __fish_git_needs_command -a '(__fish_git_aliases)' + +### git clean +complete -f -c git -n __fish_git_needs_command -a clean -d 'Remove untracked files from the working tree' +complete -f -c git -n '__fish_git_using_command clean' -s f -l force -d 'Force run' +complete -f -c git -n '__fish_git_using_command clean' -s i -l interactive -d 'Show what would be done and clean files interactively' +complete -f -c git -n '__fish_git_using_command clean' -s n -l dry-run -d 'Don\'t actually remove anything, just show what would be done' +complete -f -c git -n '__fish_git_using_command clean' -s q -l quiet -d 'Be quiet, only report errors' +complete -f -c git -n '__fish_git_using_command clean' -s d -d 'Remove untracked directories in addition to untracked files' +complete -f -c git -n '__fish_git_using_command clean' -s x -d 'Remove ignored files, as well' +complete -f -c git -n '__fish_git_using_command clean' -s X -d 'Remove only ignored files' +# TODO -e option + +### git blame +complete -f -c git -n __fish_git_needs_command -a blame -d 'Show what revision and author last modified each line of a file' +complete -f -c git -n '__fish_git_using_command blame' -s b -d 'Show blank SHA-1 for boundary commits' +complete -f -c git -n '__fish_git_using_command blame' -l root -d 'Do not treat root commits as boundaries' +complete -f -c git -n '__fish_git_using_command blame' -l show-stats -d 'Include additional statistics' +complete -f -c git -n '__fish_git_using_command blame' -s L -d 'Annotate only the given line range' +complete -f -c git -n '__fish_git_using_command blame' -s l -d 'Show long rev' +complete -f -c git -n '__fish_git_using_command blame' -s t -d 'Show raw timestamp' +complete -r -c git -n '__fish_git_using_command blame' -s S -d 'Use revisions from named file instead of calling rev-list' +complete -f -c git -n '__fish_git_using_command blame' -l reverse -d 'Walk history forward instead of backward' +complete -f -c git -n '__fish_git_using_command blame' -s p -l porcelain -d 'Show in a format designed for machine consumption' +complete -f -c git -n '__fish_git_using_command blame' -l line-porcelain -d 'Show the porcelain format' +complete -f -c git -n '__fish_git_using_command blame' -l incremental -d 'Show the result incrementally' +complete -r -c git -n '__fish_git_using_command blame' -l contents -d 'Instead of working tree, use the contents of the named file' +complete -x -c git -n '__fish_git_using_command blame' -l date -d 'Specifies the format used to output dates' +complete -f -c git -n '__fish_git_using_command blame' -s M -d 'Detect moved or copied lines within a file' +complete -f -c git -n '__fish_git_using_command blame' -s C -d 'Detect lines moved or copied from other files modified in the same commit' +complete -f -c git -n '__fish_git_using_command blame' -s h -d 'Show help message' +complete -f -c git -n '__fish_git_using_command blame' -s c -d 'Use the same output mode as git-annotate' +complete -f -c git -n '__fish_git_using_command blame' -s f -l show-name -d 'Show the filename in the original commit' +complete -f -c git -n '__fish_git_using_command blame' -s n -l show-number -d 'Show the line number in the original commit' +complete -f -c git -n '__fish_git_using_command blame' -s s -d 'Suppress the author name and timestamp from the output' +complete -f -c git -n '__fish_git_using_command blame' -s e -l show-email -d 'Show the author email instead of author name' +complete -f -c git -n '__fish_git_using_command blame' -s w -d 'Ignore whitespace changes' + +### help +complete -f -c git -n __fish_git_needs_command -a help -d 'Display help information about Git' +complete -f -c git -n '__fish_git_using_command help' -a '(__fish_git_help_all_concepts)' +complete -f -c git -n '__fish_git_using_command help' -a add -d 'Add file contents to the index' +complete -f -c git -n '__fish_git_using_command help' -a am -d 'Apply a series of patches from a mailbox' +complete -f -c git -n '__fish_git_using_command help' -a apply -d 'Apply a patch on a git index file and a working tree' +complete -f -c git -n '__fish_git_using_command help' -a archive -d 'Create an archive of files from a named tree' +complete -f -c git -n '__fish_git_using_command help' -a bisect -d 'Find the change that introduced a bug by binary search' +complete -f -c git -n '__fish_git_using_command help' -a blame -d 'Show what revision and author last modified each line of a file' +complete -f -c git -n '__fish_git_using_command help' -a branch -d 'List, create, or delete branches' +complete -f -c git -n '__fish_git_using_command help' -a checkout -d 'Checkout and switch to a branch' +complete -f -c git -n '__fish_git_using_command help' -a cherry-pick -d 'Apply the change introduced by an existing commit' +complete -f -c git -n '__fish_git_using_command help' -a clean -d 'Remove untracked files from the working tree' +complete -f -c git -n '__fish_git_using_command help' -a clone -d 'Clone a repository into a new directory' +complete -f -c git -n '__fish_git_using_command help' -a commit -d 'Record changes to the repository' +complete -f -c git -n '__fish_git_using_command help' -a config -d 'Set and read git configuration variables' +complete -f -c git -n '__fish_git_using_command help' -a count-objects -d 'Count unpacked number of objects and their disk consumption' +complete -f -c git -n '__fish_git_using_command help' -a describe -d 'Give an object a human-readable name' +complete -f -c git -n '__fish_git_using_command help' -a diff -d 'Show changes between commits, commit and working tree, etc' +complete -f -c git -n '__fish_git_using_command help' -a daemon -d 'A really simple server for Git repositories' +complete -f -c git -n '__fish_git_using_command help' -a difftool -d 'Open diffs in a visual tool' +complete -f -c git -n '__fish_git_using_command help' -a fetch -d 'Download objects and refs from another repository' +complete -f -c git -n '__fish_git_using_command help' -a filter-branch -d 'Rewrite branches' +complete -f -c git -n '__fish_git_using_command help' -a format-patch -d 'Generate patch series to send upstream' +complete -f -c git -n '__fish_git_using_command help' -a gc -d 'Cleanup unnecessary files and optimize the local repository' +complete -f -c git -n '__fish_git_using_command help' -a grep -d 'Print lines matching a pattern' +complete -f -c git -n '__fish_git_using_command help' -a init -d 'Create an empty git repository or reinitialize an existing one' +complete -f -c git -n '__fish_git_using_command help' -a log -d 'Show commit logs' +complete -f -c git -n '__fish_git_using_command help' -a ls-files -d 'Show information about files in the index and the working tree' +complete -f -c git -n '__fish_git_using_command help' -a mailinfo -d 'Extracts patch and authorship from a single e-mail message' +complete -f -c git -n '__fish_git_using_command help' -a mailsplit -d 'Simple UNIX mbox splitter program' +complete -f -c git -n '__fish_git_using_command help' -a maintenance -d 'Run tasks to optimize Git repository data' +complete -f -c git -n '__fish_git_using_command help' -a merge -d 'Join two or more development histories together' +complete -f -c git -n '__fish_git_using_command help' -a merge-base -d 'Find as good common ancestors as possible for a merge' +complete -f -c git -n '__fish_git_using_command help' -a mergetool -d 'Run merge conflict resolution tools to resolve merge conflicts' +complete -f -c git -n '__fish_git_using_command help' -a mv -d 'Move or rename a file, a directory, or a symlink' +complete -f -c git -n '__fish_git_using_command help' -a notes -d 'Add or inspect object notes' +complete -f -c git -n '__fish_git_using_command help' -a prune -d 'Prune all unreachable objects from the object database' +complete -f -c git -n '__fish_git_using_command help' -a pull -d 'Fetch from and merge with another repository or a local branch' +complete -f -c git -n '__fish_git_using_command help' -a push -d 'Update remote refs along with associated objects' +complete -f -c git -n '__fish_git_using_command help' -a range-diff -d 'Compare two commit ranges (e.g. two versions of a branch)' +complete -f -c git -n '__fish_git_using_command help' -a rebase -d 'Forward-port local commits to the updated upstream head' +complete -f -c git -n '__fish_git_using_command help' -a reflog -d 'Manage reflog information' +complete -f -c git -n '__fish_git_using_command help' -a remote -d 'Manage set of tracked repositories' +complete -f -c git -n '__fish_git_using_command help' -a reset -d 'Reset current HEAD to the specified state' +complete -f -c git -n '__fish_git_using_command help' -a restore -d 'Restore working tree files' +complete -f -c git -n '__fish_git_using_command help' -a revert -d 'Revert an existing commit' +complete -f -c git -n '__fish_git_using_command help' -a rev-parse -d 'Pick out and massage parameters' +complete -f -c git -n '__fish_git_using_command help' -a rm -d 'Remove files from the working tree and from the index' +complete -f -c git -n '__fish_git_using_command help' -a show -d 'Shows the last commit of a branch' +complete -f -c git -n '__fish_git_using_command help' -a show-branch -d 'Shows the commits on branches' +complete -f -c git -n '__fish_git_using_command help' -a stash -d 'Stash away changes' +complete -f -c git -n '__fish_git_using_command help' -a status -d 'Show the working tree status' +complete -f -c git -n '__fish_git_using_command help' -a submodule -d 'Initialize, update or inspect submodules' +complete -f -c git -n '__fish_git_using_command help' -a stripspace -d 'Remove unnecessary whitespace' +complete -f -c git -n '__fish_git_using_command help' -a switch -d 'Switch to a branch' +complete -f -c git -n '__fish_git_using_command help' -a tag -d 'Create, list, delete or verify a tag object signed with GPG' +complete -f -c git -n '__fish_git_using_command help' -a whatchanged -d 'Show logs with difference each commit introduces' +complete -f -c git -n '__fish_git_using_command help' -a worktree -d 'Manage multiple working trees' + +# Complete both options and possible parameters to `git config` +complete -f -c git -n '__fish_git_using_command config' -l global -d 'Get/set global configuration' +complete -f -c git -n '__fish_git_using_command config' -l system -d 'Get/set system configuration' +complete -f -c git -n '__fish_git_using_command config' -l local -d 'Get/set local repo configuration' +complete -F -c git -n '__fish_git_using_command config' -s f -l file -d 'Read config from file' -r +complete -F -c git -n '__fish_git_using_command config' -l blob -d 'Read config from blob' -r + +# If no argument is specified, it's as if --get was used +# Use -k with `__fish_git_config_keys` so that user defined values are shown first +complete -c git -n '__fish_git_using_command config; and __fish_is_nth_token 2' -kfa '(__fish_git_config_keys)' +complete -f -c git -n '__fish_git_using_command config' -l get -d 'Get config with name' -kra '(__fish_git_config_keys)' +complete -f -c git -n '__fish_git_using_command config' -l get-all -d 'Get all values matching key' -ka '(__fish_git_config_keys)' +complete -f -c git -n '__fish_git_using_command config' -l get-urlmatch -d 'Get value specific for the section url' -r +complete -f -c git -n '__fish_git_using_command config' -l replace-all -d 'Replace all matching variables' -kra '(__fish_git_config_keys)' +complete -f -c git -n '__fish_git_using_command config' -l add -d 'Add a new variable' -r +complete -f -c git -n '__fish_git_using_command config' -l unset -d 'Remove a variable' -ka '(__fish_git_config_keys)' +complete -f -c git -n '__fish_git_using_command config' -l unset-all -d 'Remove matching variables' -ka '(__fish_git_config_keys)' +complete -f -c git -n '__fish_git_using_command config' -l rename-section -d 'Rename section' -r +complete -f -c git -n '__fish_git_using_command config' -s l -l list -d 'List all variables' +complete -f -c git -n '__fish_git_using_command config' -s e -l edit -d 'Open configuration in an editor' + +complete -f -c git -n '__fish_git_using_command config' -s t -l type -d 'Value is of given type' +complete -f -c git -n '__fish_git_using_command config' -l bool -d 'Value is \'true\' or \'false\'' +complete -f -c git -n '__fish_git_using_command config' -l int -d 'Value is a decimal number' +complete -f -c git -n '__fish_git_using_command config' -l bool-or-int -d 'Value is --bool or --int' +complete -f -c git -n '__fish_git_using_command config' -l path -d 'Value is a path' +complete -f -c git -n '__fish_git_using_command config' -l expiry-date -d 'Value is an expiry date' + +complete -f -c git -n '__fish_git_using_command config' -s z -l null -d 'Terminate values with NUL byte' +complete -f -c git -n '__fish_git_using_command config' -l name-only -d 'Show variable names only' +complete -f -c git -n '__fish_git_using_command config' -l includes -d 'Respect include directives' +complete -f -c git -n '__fish_git_using_command config' -l show-origin -d 'Show origin of configuration' +complete -f -c git -n '__fish_git_using_command config; and __fish_seen_argument get' -l default -d 'Use default value when missing entry' + +## Custom commands (git-* commands installed in the PATH) +complete -c git -n __fish_git_needs_command -a '(__fish_git_custom_commands)' -d 'Custom command' + +function __fish_git_complete_custom_command -a subcommand + set -l cmd (commandline -opc) + set -e cmd[1] # Drop "git". + set -l subcommand_args + if argparse -s (__fish_git_global_optspecs) -- $cmd + set subcommand_args $argv[2..] # Drop the subcommand. + end + complete -C "git-$subcommand $subcommand_args "(commandline -ct) +end + +# source git-* commands' autocompletion file if exists +set -l __fish_git_custom_commands_completion +for file in $PATH/git-* + not command -q $file + and continue + + set -l subcommand (string replace -r -- '.*/git-([^/]*)$' '$1' $file) + + # Already seen this command earlier in $PATH. + contains -- $subcommand $__fish_git_custom_commands_completion + and continue + + complete -C "git-$subcommand " >/dev/null + if test (complete -c git-$subcommand | count) -gt 0 + complete -c git -f -n "__fish_git_using_command $subcommand" -a "(__fish_git_complete_custom_command $subcommand)" + end + set -a __fish_git_custom_commands_completion $subcommand +end diff --git a/dot_config/fish/completions/go.fish b/dot_config/fish/completions/go.fish new file mode 100644 index 0000000..d79f8b7 --- /dev/null +++ b/dot_config/fish/completions/go.fish @@ -0,0 +1,174 @@ +# go is a tool for managing Go source code. +# See: https://golang.org + +# Completions for go build commands +set -l __go_cmds_w_buildflags build get install run test generate +complete -c go -n "__fish_seen_subcommand_from $__go_cmds_w_buildflags" -s a -d 'force rebuild' +complete -c go -n "__fish_seen_subcommand_from $__go_cmds_w_buildflags" -s n -d 'print the commands but do not run them' +complete -c go -n "__fish_seen_subcommand_from $__go_cmds_w_buildflags" -s p -r -d 'number parallel builds (default=#cpus)' +complete -c go -n "__fish_seen_subcommand_from $__go_cmds_w_buildflags" -o race -d 'enable data race detection' +complete -c go -n "__fish_seen_subcommand_from $__go_cmds_w_buildflags" -o msan -d 'enable interoperation with memory sanitizer' +complete -c go -n "__fish_seen_subcommand_from $__go_cmds_w_buildflags" -s v -d 'print packages being built' +complete -c go -n "__fish_seen_subcommand_from $__go_cmds_w_buildflags" -o work -d 'print and preserve work directory' +complete -c go -n "__fish_seen_subcommand_from $__go_cmds_w_buildflags" -s x -d 'print the commands' +complete -c go -n "__fish_seen_subcommand_from $__go_cmds_w_buildflags" -o asmflags -d 'arguments to pass on each go tool asm invocation' +complete -c go -n "__fish_seen_subcommand_from $__go_cmds_w_buildflags" -o buildmode -x -d 'build mode to use' -a 'archive c-archive c-shared default shared exe pie plugin' +complete -c go -n "__fish_seen_subcommand_from $__go_cmds_w_buildflags" -o compiler -x -d 'name of compiler to use, as in runtime' -a 'gccgo gc' +complete -c go -n "__fish_seen_subcommand_from $__go_cmds_w_buildflags" -o gccgoflags -r -d 'gccgo compiler/linker flags' +complete -c go -n "__fish_seen_subcommand_from $__go_cmds_w_buildflags" -o gcflags -r -d 'go compiler flags' +complete -c go -n "__fish_seen_subcommand_from $__go_cmds_w_buildflags" -o installsuffix -r -d 'suffix for installation directory' +complete -c go -n "__fish_seen_subcommand_from $__go_cmds_w_buildflags" -o ldflags -r -d 'linker flags' +complete -c go -n "__fish_seen_subcommand_from $__go_cmds_w_buildflags" -o linkshared -r -d 'link against shared libraries previously created with -buildmode=shared' +complete -c go -n "__fish_seen_subcommand_from $__go_cmds_w_buildflags" -o mod -x -d 'module download mode to use' -a 'readonly vendor mod' +complete -c go -n "__fish_seen_subcommand_from $__go_cmds_w_buildflags" -o modcacherw -d 'leave newly-created directories in the module cache writable' +complete -c go -n "__fish_seen_subcommand_from $__go_cmds_w_buildflags" -o modfile -r -d 'read (and possibly write) an alternate go.mod' +complete -c go -n "__fish_seen_subcommand_from $__go_cmds_w_buildflags" -o pkgdir -r -d 'install and load all packages from dir instead of the usual locations' +complete -c go -n "__fish_seen_subcommand_from $__go_cmds_w_buildflags" -o tags -r -d 'build tags' +complete -c go -n "__fish_seen_subcommand_from $__go_cmds_w_buildflags" -o trimpath -d 'remove all file system paths from the resulting executable' +complete -c go -n "__fish_seen_subcommand_from $__go_cmds_w_buildflags" -o toolexec -r -d 'a program to use to invoke toolchain programs' +complete -c go -n "__fish_seen_subcommand_from $__go_cmds_w_buildflags" -o mod -x -d 'module download mode to use' -a 'readonly vendor' + + +# Completions for go cmds that takes file arguments +complete -c go -n "__fish_seen_subcommand_from build compile fix fmt install test vet" -k -x -a "( + __fish_complete_suffix .go + )" --description File + +# Completions for go cmds that takes pkg arguments +complete -c go -n "__fish_seen_subcommand_from build doc fix fmt install test vet" -x -a "( + go list -e -f '{{.ImportPath}} {{or .Doc \"Go package\"}}' (commandline -ct)... 2>/dev/null + )" --description Package + + +# build +complete -c go -n __fish_use_subcommand -a build -d 'compile packages and dependencies' + +# clean +complete -c go -n __fish_use_subcommand -a clean -d 'remove object files' +complete -c go -n '__fish_seen_subcommand_from clean' -s i -d "remove the corresponding installed archive or binary" +complete -c go -n '__fish_seen_subcommand_from clean' -s n -d "print the command that would be executed without running" +complete -c go -n '__fish_seen_subcommand_from clean' -s r -d "recursively clean all the dependencies of package named by the import paths" +complete -c go -n '__fish_seen_subcommand_from clean' -s x -d "clean to print remove commands as it executes them" +complete -c go -n '__fish_seen_subcommand_from clean' -o cache -d 'remove the entire go build cache' +complete -c go -n '__fish_seen_subcommand_from clean' -o testcache -d 'expire all test results in the go build cache' +complete -c go -n '__fish_seen_subcommand_from clean' -o modcache -d 'remove the entire module download cache' + +# doc +complete -c go -n __fish_use_subcommand -a doc -d 'run godoc on package sources' +complete -c go -n '__fish_seen_subcommand_from doc' -o all -d "show all the documentation for the package" +complete -c go -n '__fish_seen_subcommand_from doc' -s c -d 'respect case when matching symbols' +complete -c go -n '__fish_seen_subcommand_from doc' -o cmd -d 'treat a command (package main) like a regular package' +complete -c go -n '__fish_seen_subcommand_from doc' -o short -d 'one-line representation for each symbol' +complete -c go -n '__fish_seen_subcommand_from doc' -o src -d 'show the full source code for the symbol' +complete -c go -n '__fish_seen_subcommand_from doc' -s u -d 'show documentation for unexported as well as exported symbols' + +# env +complete -c go -n __fish_use_subcommand -a env -d 'print Go environment information' +complete -c go -n '__fish_seen_subcommand_from env' -o json -d 'print the environment in JSON format' +complete -c go -n '__fish_seen_subcommand_from env' -s u -r -d 'set NAME to default values' +complete -c go -n '__fish_seen_subcommand_from env' -s w -r -d 'set default values for config variables' + +# fix +complete -c go -n __fish_use_subcommand -a fix -d 'run go tool fix on packages' + +# fmt +complete -c go -n __fish_use_subcommand -a fmt -d 'run gofmt on package sources' +complete -c go -n '__fish_seen_subcommand_from fmt' -s n -d "prints commands that would be executed" +complete -c go -n '__fish_seen_subcommand_from fmt' -s x -d "prints commands as they are executed" + +# get +complete -c go -n __fish_use_subcommand -a get -d 'download and install packages and dependencies' +complete -c go -n '__fish_seen_subcommand_from get' -s d -d "stop after downloading the packages; don't install" +complete -c go -n '__fish_seen_subcommand_from get' -o fix -d "run fix tool on packages before resolving dependencies or building" +complete -c go -n '__fish_seen_subcommand_from get' -s u -d "update remote packages" +complete -c go -n '__fish_seen_subcommand_from get' -s v -d "verbose progress and debug output" +complete -c go -n '__fish_seen_subcommand_from get' -s t -d "also download the packages required to build the tests" +complete -c go -n '__fish_seen_subcommand_from get' -o insecure -d "flag permits fetching & resolving domains using insecure schemes" + +# generate +complete -c go -n __fish_use_subcommand -a generate -d 'Generate runs commands described by directives within existing files.' +complete -c go -n '__fish_seen_subcommand_from get' -s n -d "prints commands that would be executed" +complete -c go -n '__fish_seen_subcommand_from get' -s x -d "prints commands as they are executed" +complete -c go -n '__fish_seen_subcommand_from get' -s v -d "prints the names of packages and files as they are processed" +complete -c go -n '__fish_seen_subcommand_from get' -o run -d "prints the names of packages and files as they are processed" + +# help +complete -c go -n __fish_use_subcommand -a help -d 'get help on topic' +complete -c go -n '__fish_seen_subcommand_from help' -xa bug -d "start a bug report" +complete -c go -n '__fish_seen_subcommand_from help' -xa build -d "compile packages and dependencies" +complete -c go -n '__fish_seen_subcommand_from help' -xa clean -d "remove object files and cached files" +complete -c go -n '__fish_seen_subcommand_from help' -xa doc -d "show documentation for package or symbol" +complete -c go -n '__fish_seen_subcommand_from help' -xa env -d "print Go environment information" +complete -c go -n '__fish_seen_subcommand_from help' -xa fix -d "update packages to use new APIs" +complete -c go -n '__fish_seen_subcommand_from help' -xa fmt -d "gofmt (reformat) package sources" +complete -c go -n '__fish_seen_subcommand_from help' -xa generate -d "generate Go files by processing source" +complete -c go -n '__fish_seen_subcommand_from help' -xa get -d "download and install packages and dependencies" +complete -c go -n '__fish_seen_subcommand_from help' -xa install -d "compile and install packages and dependencies" +complete -c go -n '__fish_seen_subcommand_from help' -xa list -d "list packages or modules" +complete -c go -n '__fish_seen_subcommand_from help' -xa mod -d "module maintenance" +complete -c go -n '__fish_seen_subcommand_from help' -xa run -d "compile and run Go program" +complete -c go -n '__fish_seen_subcommand_from help' -xa test -d "test packages" +complete -c go -n '__fish_seen_subcommand_from help' -xa tool -d "run specified go tool" +complete -c go -n '__fish_seen_subcommand_from help' -xa version -d "print Go version" +complete -c go -n '__fish_seen_subcommand_from help' -xa vet -d "report likely mistakes in packages" +complete -c go -n '__fish_seen_subcommand_from help' -xa buildmode -d "build modes" +complete -c go -n '__fish_seen_subcommand_from help' -xa c -d "calling between Go and C" +complete -c go -n '__fish_seen_subcommand_from help' -xa cache -d "build and test caching" +complete -c go -n '__fish_seen_subcommand_from help' -xa environment -d "environment variables" +complete -c go -n '__fish_seen_subcommand_from help' -xa filetype -d "file types" +complete -c go -n '__fish_seen_subcommand_from help' -xa go.mod -d "the go.mod file" +complete -c go -n '__fish_seen_subcommand_from help' -xa gopath -d "GOPATH environment variable" +complete -c go -n '__fish_seen_subcommand_from help' -xa gopath-get -d "legacy GOPATH go get" +complete -c go -n '__fish_seen_subcommand_from help' -xa goproxy -d "module proxy protocol" +complete -c go -n '__fish_seen_subcommand_from help' -xa importpath -d "import path syntax" +complete -c go -n '__fish_seen_subcommand_from help' -xa modules -d "modules, module versions, and more" +complete -c go -n '__fish_seen_subcommand_from help' -xa module-get -d "module-aware go get" +complete -c go -n '__fish_seen_subcommand_from help' -xa module-auth -d "module authentication using go.sum" +complete -c go -n '__fish_seen_subcommand_from help' -xa module-private -d "module configuration for non-public modules" +complete -c go -n '__fish_seen_subcommand_from help' -xa packages -d "package lists and patterns" +complete -c go -n '__fish_seen_subcommand_from help' -xa testflag -d "testing flags" +complete -c go -n '__fish_seen_subcommand_from help' -xa testfunc -d "testing functions" + +# install +complete -c go -n __fish_use_subcommand -a install -d 'compile and install packages and dependencies' + +# list +complete -c go -n __fish_use_subcommand -a list -d 'list packages' +complete -c go -n '__fish_seen_subcommand_from list' -s e -d "tolerate erroneous packages" +complete -c go -n '__fish_seen_subcommand_from list' -s f -r -d "pass in template for formatting" +complete -c go -n '__fish_seen_subcommand_from list' -o json -d "print in JSON format" +complete -c go -n '__fish_seen_subcommand_from list' -o tags -r -d 'list of build tags' +complete -c go -n '__fish_seen_subcommand_from list' -s m -d 'list modules instead of packages' + +# run +complete -c go -n __fish_use_subcommand -a run -d 'compile and run Go program' + +# test +complete -c go -n __fish_use_subcommand -a test -d 'test packages' +complete -c go -n '__fish_seen_subcommand_from test' -s c -r -d "compile the test binary to pkg.test but do not run it" +complete -c go -n '__fish_seen_subcommand_from test' -s i -d "install dependent packages, but don't run tests" + +# tool +complete -c go -n __fish_use_subcommand -a tool -d 'run specified go tool' +complete -c go -n '__fish_seen_subcommand_from tool' -a 'addr2line api asm cgo compile dist fix link nm objdump pack pprof prof vet yacc' -d "target tool" +complete -c go -n '__fish_seen_subcommand_from tool' -s n -d "print the command that would be executed but not execute it" + +# version +complete -c go -f -n __fish_use_subcommand -a version -d 'print Go version' +complete -c go -f -n '__fish_seen_subcommand_from version' + +# vet +complete -c go -n __fish_use_subcommand -a vet -d 'vet packages' +complete -c go -n '__fish_seen_subcommand_from vet' -s n -d "print the command that would be executed" +complete -c go -n '__fish_seen_subcommand_from vet' -s x -d "prints commands as they are executed" + +# mod +complete -c go -n __fish_use_subcommand -a mod -d 'module maintenance' +complete -c go -f -n '__fish_seen_subcommand_from mod' -a download -d "download modules to local cache" +complete -c go -f -n '__fish_seen_subcommand_from mod' -a edit -d "edit go.mod from tools or scripts" +complete -c go -f -n '__fish_seen_subcommand_from mod' -a graph -d "print module requirement graph" +complete -c go -f -n '__fish_seen_subcommand_from mod' -a init -d "initialize new module in current directory" +complete -c go -f -n '__fish_seen_subcommand_from mod' -a tidy -d "add missing and remove unused modules" +complete -c go -f -n '__fish_seen_subcommand_from mod' -a vendor -d "make vendored copy of dependencies" +complete -c go -f -n '__fish_seen_subcommand_from mod' -a verify -d "verify dependencies have expected content" +complete -c go -f -n '__fish_seen_subcommand_from mod' -a why -d "explain why packages or modules are needed" diff --git a/dot_config/fish/completions/kubectl.fish b/dot_config/fish/completions/kubectl.fish new file mode 100644 index 0000000..6b719d5 --- /dev/null +++ b/dot_config/fish/completions/kubectl.fish @@ -0,0 +1,1762 @@ +# +set -q FISH_KUBECTL_COMPLETION_TIMEOUT; or set FISH_KUBECTL_COMPLETION_TIMEOUT 5s +set -q FISH_KUBECTL_COMPLETION_COMPLETE_CRDS; or set FISH_KUBECTL_COMPLETION_COMPLETE_CRDS 1 +set __fish_kubectl_timeout "--request-timeout=$FISH_KUBECTL_COMPLETION_TIMEOUT" +set __fish_kubectl_all_namespaces_flags "--all-namespaces" "--all-namespaces=true" +set __fish_kubectl_subresource_commands get describe delete edit label explain +set __fish_kubectl_commands alpha \ + annotate \ + api-resources \ + api-versions \ + apply \ + attach \ + auth \ + autoscale \ + certificate \ + cluster-info \ + completion \ + config \ + cordon \ + cp \ + create \ + debug \ + delete \ + describe \ + diff \ + drain \ + edit \ + exec \ + explain \ + expose \ + get \ + kustomize \ + label \ + logs \ + options \ + patch \ + plugin \ + port-forward \ + proxy \ + replace \ + rollout \ + run \ + scale \ + set \ + taint \ + top \ + uncordon \ + version \ + wait + +function __fish_kubectl + set -l context_args + + if set -l context_flags (__fish_kubectl_get_context_flags | string split " ") + for c in $context_flags + set context_args $context_args $c + end + end + + set -l kubeconfig_args + + if set -l kubeconfig_args (__fish_kubectl_get_kubeconfig_flags | string split " ") + for c in $kubeconfig_args + set kubeconfig_args $kubeconfig_args $c + end + end + + command kubectl $__fish_kubectl_timeout $context_args $kubeconfig_args $argv +end + +function __fish_kubectl_get_commands + echo alpha\t'Commands for features in alpha' + echo annotate\t'Update the annotations on a resource' + echo api-resources\t'Print the supported API resources on the server' + echo api-versions\t'Print the supported API versions on the server, in the form of "group/version"' + echo apply\t'Apply a configuration to a resource by filename or stdin' + echo attach\t'Attach to a running container' + echo auth\t'Inspect authorization' + echo autoscale\t'Auto-scale a Deployment, ReplicaSet, or ReplicationController' + echo certificate\t'Modify certificate resources.' + echo cluster-info\t'Display cluster info' + echo completion\t'Output shell completion code for the specified shell (bash or zsh)' + echo config\t'Modify kubeconfig files' + echo cordon\t'Mark node as unschedulable' + echo cp\t'Copy files and directories to and from containers.' + echo create\t'Create a resource from a file or from stdin.' + echo debug\t'Create debugging sessions for troubleshooting workloads and nodes' + echo delete\t'Delete resources by filenames, stdin, resources and names, or by resources and label selector' + echo describe\t'Show details of a specific resource or group of resources' + echo diff\t'Diff live version against would-be applied version' + echo drain\t'Drain node in preparation for maintenance' + echo edit\t'Edit a resource on the server' + echo exec\t'Execute a command in a container' + echo explain\t'Documentation of resources' + echo expose\t'Take a replication controller, service, deployment or pod and expose it as a new Kubernetes Service' + echo get\t'Display one or many resources' + echo kustomize\t'Build a kustomization target from a directory or a remote url.' + echo label\t'Update the labels on a resource' + echo logs\t'Print the logs for a container in a pod' + echo options\t'Print the list of flags inherited by all commands' + echo patch\t'Update field(s) of a resource' + echo plugin\t'Provides utilities for interacting with plugins.' + echo port-forward\t'Forward one or more local ports to a pod' + echo proxy\t'Run a proxy to the Kubernetes API server' + echo replace\t'Replace a resource by filename or stdin' + echo rollout\t'Manage the rollout of a resource' + echo run\t'Run a particular image on the cluster' + echo scale\t'Set a new size for a Deployment, ReplicaSet or Replication Controller' + echo set\t'Set specific features on objects' + echo taint\t'Update the taints on one or more nodes' + echo top\t'Display Resource (CPU/Memory/Storage) usage.' + echo uncordon\t'Mark node as schedulable' + echo version\t'Print the client and server version information' + echo wait\t'Experimental: Wait for a specific condition on one or many resources.' +end + +set __fish_kubectl_resources \ + all \ + certificatesigningrequests csr \ + clusterrolebindings \ + clusterroles \ + clusters \ + componentstatuses cs \ + configmaps configmap cm \ + controllerrevisions \ + cronjobs cj \ + customresourcedefinition crd crds \ + daemonsets ds \ + deployments deployment deploy \ + endpoints ep \ + events ev \ + horizontalpodautoscalers hpa \ + ingresses ingress ing \ + jobs job \ + limitranges limits \ + namespaces namespace ns \ + networkpolicies netpol \ + nodes node no \ + persistentvolumeclaims pvc \ + persistentvolumes pv \ + poddisruptionbudgets pdb \ + podpreset \ + pods pod po \ + podsecuritypolicies psp \ + podtemplates \ + replicasets rs \ + replicationcontrollers rc \ + resourcequotas quota \ + rolebindings \ + roles \ + secrets secret \ + serviceaccounts sa \ + services service svc \ + statefulsets sts \ + storageclass storageclasses sc + +set __fish_kubectl_cached_crds "" +set __fish_kubectl_last_crd_fetch "" + +function __fish_kubectl_actually_get_crds + set __fish_kubectl_cached_crds (__fish_kubectl get crd -o jsonpath='{range .items[*]}{.spec.names.plural}{"\n"}{.spec.names.singular}{"\n"}{range .spec.names.shortNames[]}{@}{"\n"}{end}{end}' 2>/dev/null) + set __fish_kubectl_last_crd_fetch (__fish_kubectl_get_current_time) + for i in $__fish_kubectl_cached_crds + echo $i + end +end + +function __fish_kubectl_get_current_time + date +'%s' +end + +function __fish_kubectl_get_crds + if test -z "$__fish_kubectl_last_crd_fetch"; or test -z "$__fish_kubectl_cached_crds" + __fish_kubectl_actually_get_crds + return 0 + end + + set -l ct (__fish_kubectl_get_current_time) + set -l duration (math $ct-$__fish_kubectl_last_crd_fetch) + # Only fetch crds if we have not fetched them within the past 30 seconds. + if test "$duration" -gt 30 + __fish_kubectl_actually_get_crds + return 0 + end + + for i in $__fish_kubectl_cached_crds + echo $i + end +end + +function __fish_kubectl_seen_subcommand_from_regex + set -l cmd (commandline -poc) + set -e cmd[1] + for i in $cmd + for r in $argv + if string match -r -- $r $i + return 0 + end + end + end + return 1 +end + +function __fish_kubectl_needs_command -d 'Test if kubectl has yet to be given the subcommand' + for i in (commandline -opc) + if contains -- $i $__fish_kubectl_commands + echo "$i" + return 1 + end + end + return 0 +end + +function __fish_kubectl_needs_resource -d 'Test if kubectl has yet to be given the subcommand resource' + set -l resources (__fish_kubectl_print_resource_types) + for i in (commandline -opc) + if contains -- $i $resources + return 1 + end + end + return 0 +end + +function __fish_kubectl_using_command + set -l cmd (__fish_kubectl_needs_command) + test -z "$cmd" + and return 1 + + contains -- $cmd $argv + and echo "$cmd" + and return 0 + + return 1 +end + +function __fish_kubectl_using_resource + set -l cmd (__fish_kubectl_needs_resource) + test -z "$cmd" + and return 1 + + contains -- $cmd $argv + and echo "$cmd" + and return 0 + + return 1 +end + +function __fish_kubectl_has_partial_resource_match + set -l last (commandline -opt) + if not set -l matches (string match -- "(.*)/" $last) + return + end + + if string match -q -- "(.*)/" $last + return 0 + end + + return 1 +end + +function __fish_kubectl_print_matching_resources + set -l last (commandline -opt) + if not set -l matches (string match -r -- "(.*)/" $last) + return + end + set -l prefix $matches[2] + set -l resources (__fish_kubectl_print_resource "$prefix") + for i in $resources + echo "$prefix/$i" + end +end + +function __fish_kubectl_get_context_flags + set -l cmd (commandline -opc) + if [ (count $cmd) -eq 0 ] + return 1 + end + + set -l foundContext 0 + + for c in $cmd + test $foundContext -eq 1 + set -l out "--context" "$c" + and echo $out + and return 0 + + if string match -q -r -- "--context=" "$c" + set -l out (string split -- "=" "$c" | string join " ") + and echo $out + and return 0 + else if contains -- "$c" "--context" + set foundContext 1 + end + end + + return 1 +end + +function __fish_kubectl_get_kubeconfig_flags + set -l cmd (commandline -opc) + if [ (count $cmd) -eq 0 ] + return 1 + end + + set -l foundKubeconfig 0 + + for c in $cmd + test $foundKubeconfig -eq 1 + set -l out "--kubeconfig" "$c" + and echo $out + and return 0 + + if string match -q -r -- "--kubeconfig=" "$c" + set -l out (string split -- "=" "$c" | string join " ") + and echo $out + and return 0 + else if contains -- "$c" "--kubeconfig" + set foundKubeconfig 1 + end + end + + return 1 +end + +function __fish_kubectl_get_ns_flags + set -l cmd (commandline -opc) + if [ (count $cmd) -eq 0 ] + return 1 + end + + set -l foundNamespace 0 + + for c in $cmd + test $foundNamespace -eq 1 + set -l out "--namespace" "$c" + and echo $out + and return 0 + + if contains -- $c $__kubectl_all_namespaces_flags + echo "--all-namespaces" + return 0 + end + + if contains -- $c "--namespace" "-n" + set foundNamespace 1 + end + end + + return 1 +end + +function __fish_kubectl_print_resource_types + for r in $__fish_kubectl_resources + echo $r + end + + if test $FISH_KUBECTL_COMPLETION_COMPLETE_CRDS -eq 1 + set -l crds (__fish_kubectl_get_crds) + + for r in $crds + echo $r + end + end +end + +function __fish_kubectl_print_current_resources -d 'Prints current resources' + set -l found 0 + # There is probably a better way to do this... + # found === 1 means that we have not yet found the crd type + # found === 2 means that we have not yet found the crd name, but have found the type + set -l current_resource + set -l crd_types (__fish_kubectl_get_crds) + for i in (commandline -opc) + if test $found -eq 0 + if contains -- $i $__fish_kubectl_subresource_commands + set found 1 + end + end + + if test $found -eq 1 + if contains -- $i $crd_types + set -l out (__fish_kubectl_print_resource $i) + for item in $out + echo "$item" + end + return 0 + end + end + end +end + +function __fish_kubectl_print_resource -d 'Print a list of resources' -a resource + set -l args + if set -l ns_flags (__fish_kubectl_get_ns_flags | string split " ") + for ns in $ns_flags + set args $args $ns + end + end + + set args $args get "$resource" + __fish_kubectl $args --no-headers 2>/dev/null | awk '{print $1}' | string replace -r '(.*)/' '' +end + +function __fish_kubectl_get_config -a type + set -l template "{{ range .$type }}"'{{ .name }}{{"\n"}}{{ end }}' + __fish_kubectl config view -o template --template="$template" +end + +function __fish_kubectl_get_rollout_resources + set -l args + if set -l ns_flags (__fish_kubectl_get_ns_flags | string split " ") + for ns in $ns_flags + set args $args $ns + end + end + + set -l template '{range .items[*]}{.metadata.name}{"\n"}{end}' + + set -l deploys (__fish_kubectl $args get deploy -o jsonpath="$template" 2>/dev/null) + set -l daemonsets (__fish_kubectl $args get ds -o jsonpath="$template" 2>/dev/null) + set -l sts (__fish_kubectl $args get sts -o jsonpath="$template" 2>/dev/null) + + for i in $deploys + echo "deploy/$i" + echo "deployment/$i" + echo "deployments/$i" + end + + for i in $daemonsets + echo "daemonset/$i" + echo "daemonsets/$i" + echo "ds/$i" + end + + for i in $sts + echo "statefulset/$i" + echo "statefulsets/$i" + echo "sts/$i" + end +end + +complete -c kubectl -f -n '__fish_kubectl_needs_command' -a '(__fish_kubectl_get_commands)' + +for subcmd in $__fish_kubectl_subresource_commands + complete -c kubectl -f -n "__fish_kubectl_using_command $subcmd; and not __fish_seen_subcommand_from (__fish_kubectl_print_resource_types)" -a '(__fish_kubectl_print_resource_types)' -d 'Resource' + complete -c kubectl -f -n "__fish_kubectl_using_command $subcmd; and __fish_kubectl_has_partial_resource_match" -a '(__fish_kubectl_print_matching_resources)' -d 'Resource' + for resource in $__fish_kubectl_resources + complete -c kubectl -f -n "__fish_kubectl_using_command $subcmd; and __fish_seen_subcommand_from $resource" -a "(__fish_kubectl_print_resource $resource)" -d "$resource" + end + + if test $FISH_KUBECTL_COMPLETION_COMPLETE_CRDS -eq 1 + complete -c kubectl -f -n "__fish_kubectl_using_command $subcmd; and __fish_seen_subcommand_from (__fish_kubectl_get_crds)" -a '(__fish_kubectl_print_current_resources)' -d 'CRD' + end +end + +complete -c kubectl -f -n "__fish_seen_subcommand_from log logs exec port-forward" -a '(__fish_kubectl_print_resource pods)' -d 'Pod' +complete -c kubectl -f -n "__fish_seen_subcommand_from top; and __fish_seen_subcommand_from po pod pods" -a '(__fish_kubectl_print_resource pods)' -d 'Pod' +complete -c kubectl -f -n "__fish_seen_subcommand_from top; and __fish_seen_subcommand_from no node nodes" -a '(__fish_kubectl_print_resource nodes)' -d 'Node' + +for subcmd in cordon uncordon drain taint + complete -c kubectl -f -n "__fish_seen_subcommand_from $subcmd" -a '(__fish_kubectl_print_resource nodes)' -d 'Node' +end + +set -l __fish_kubectl_config_complete_contexts \ + delete-context \ + get-contexts \ + rename-contexts \ + set-context \ + use-context + +set -l __fish_kubectl_config_complete_clusters \ + delete-cluster \ + get-clusters \ + set-cluster + +complete -c kubectl -f -n "__fish_seen_subcommand_from config; and __fish_seen_subcommand_from $__fish_kubectl_config_complete_contexts" -a '(__fish_kubectl_get_config contexts)' -d 'Context' +complete -c kubectl -f -n "__fish_seen_subcommand_from config; and __fish_seen_subcommand_from $__fish_kubectl_config_complete_clusters" -a '(__fish_kubectl_get_config clusters)' -d 'Cluster' +complete -c kubectl -f -n "__fish_seen_subcommand_from rollout; and __fish_seen_subcommand_from (__fish_kubectl_get_rollout_commands_without_descriptions)" -a '(__fish_kubectl_get_rollout_resources)' +complete -c kubectl -f -r -l as -d 'Username to impersonate for the operation' +complete -c kubectl -f -r -l as-group -d 'Group to impersonate for the operation, this flag can be repeated to specify multiple groups.' +complete -c kubectl -r -l cache-dir -d 'Default cache directory' +complete -c kubectl -r -l certificate-authority -d 'Path to a cert file for the certificate authority' +complete -c kubectl -r -l client-certificate -d 'Path to a client certificate file for TLS' +complete -c kubectl -r -l client-key -d 'Path to a client key file for TLS' +complete -c kubectl -f -r -l cluster -d 'The name of the kubeconfig cluster to use' -a '(__fish_kubectl_get_config clusters)' +complete -c kubectl -f -r -l context -d 'The name of the kubeconfig context to use' -a '(__fish_kubectl_get_config contexts)' +complete -c kubectl -f -l insecure-skip-tls-verify -d 'If true, the server\'s certificate will not be checked for validity. This will make your HTTPS connections insecure' +complete -c kubectl -r -l kubeconfig -d 'Path to the kubeconfig file to use for CLI requests.' +complete -c kubectl -f -l match-server-version -d 'Require server version to match client version' +complete -c kubectl -f -r -s n -l namespace -d 'If present, the namespace scope for this CLI request' -a '(__fish_kubectl_print_resource namespace)' +complete -c kubectl -f -r -l password -d 'Password for basic authentication to the API server' +complete -c kubectl -f -r -l profile -d 'Name of profile to capture. One of (none|cpu|heap|goroutine|threadcreate|block|mutex)' +complete -c kubectl -f -r -l profile-output -d 'Name of the file to write the profile to' +complete -c kubectl -f -r -l request-timeout -d 'The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don\'t timeout requests.' +complete -c kubectl -f -r -s s -l server -d 'The address and port of the Kubernetes API server' +complete -c kubectl -f -r -l tls-server-name -d 'Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used' +complete -c kubectl -f -r -l token -d 'Bearer token for authentication to the API server' +complete -c kubectl -f -r -l user -d 'The name of the kubeconfig user to use' -a '(__fish_kubectl_get_config users)' +complete -c kubectl -f -r -l username -d 'Username for basic authentication to the API server' +complete -c kubectl -f -l warnings-as-errors -d 'Treat warnings received from the server as errors and exit with a non-zero exit code' + +# Completions for the "kubectl alpha" command +function __fish_kubectl_get_alpha_commands + echo debug\t'Create debugging sessions for troubleshooting workloads and nodes' +end + +function __fish_kubectl_get_alpha_commands_without_descriptions + __fish_kubectl_get_alpha_commands | string replace -r '\t.*$' '' +end + +complete -c kubectl -f -n "__fish_kubectl_using_command alpha; and not __fish_seen_subcommand_from (__fish_kubectl_get_alpha_commands_without_descriptions)" -a '(__fish_kubectl_get_alpha_commands)' + +# Completions for the "kubectl alpha debug" command +complete -c kubectl -f -n '__fish_seen_subcommand_from alpha debug' -l arguments-only -d 'If specified, everything after -- will be passed to the new container as Args instead of Command.' +complete -c kubectl -f -n '__fish_seen_subcommand_from alpha debug' -l attach -d 'If true, wait for the container to start running, and then attach as if \'kubectl attach ...\' were called. Default false, unless \'-i/--stdin\' is set, in which case the default is true.' +complete -c kubectl -f -n '__fish_seen_subcommand_from alpha debug' -r -s c -l container -d 'Container name to use for debug container.' +complete -c kubectl -f -n '__fish_seen_subcommand_from alpha debug' -r -l copy-to -d 'Create a copy of the target Pod with this name.' +complete -c kubectl -f -n '__fish_seen_subcommand_from alpha debug' -r -l env -d 'Environment variables to set in the container.' +complete -c kubectl -f -n '__fish_seen_subcommand_from alpha debug' -r -l image -d 'Container image to use for debug container.' +complete -c kubectl -f -n '__fish_seen_subcommand_from alpha debug' -r -l image-pull-policy -d 'The image pull policy for the container. If left empty, this value will not be specified by the client and defaulted by the server.' +complete -c kubectl -f -n '__fish_seen_subcommand_from alpha debug' -l quiet -d 'If true, suppress informational messages.' +complete -c kubectl -f -n '__fish_seen_subcommand_from alpha debug' -l replace -d 'When used with \'--copy-to\', delete the original Pod.' +complete -c kubectl -f -n '__fish_seen_subcommand_from alpha debug' -l same-node -d 'When used with \'--copy-to\', schedule the copy of target Pod on the same node.' +complete -c kubectl -f -n '__fish_seen_subcommand_from alpha debug' -r -l set-image -d 'When used with \'--copy-to\', a list of name=image pairs for changing container images, similar to how \'kubectl set image\' works.' +complete -c kubectl -f -n '__fish_seen_subcommand_from alpha debug' -l share-processes -d 'When used with \'--copy-to\', enable process namespace sharing in the copy.' +complete -c kubectl -f -n '__fish_seen_subcommand_from alpha debug' -s i -l stdin -d 'Keep stdin open on the container(s) in the pod, even if nothing is attached.' +complete -c kubectl -f -n '__fish_seen_subcommand_from alpha debug' -r -l target -d 'When using an ephemeral container, target processes in this container name.' +complete -c kubectl -f -n '__fish_seen_subcommand_from alpha debug' -s t -l tty -d 'Allocate a TTY for the debugging container.' + +# Completions for the "kubectl annotate" command +complete -c kubectl -f -n '__fish_seen_subcommand_from annotate' -l all -d 'Select all resources, including uninitialized ones, in the namespace of the specified resource types.' +complete -c kubectl -f -n '__fish_seen_subcommand_from annotate' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from annotate' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from annotate' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -f -n '__fish_seen_subcommand_from annotate' -r -l field-selector -d 'Selector (field query) to filter on, supports \'=\', \'==\', and \'!=\'.(e.g. --field-selector key1=value1,key2=value2). The server only supports a limited number of field queries per type.' +complete -c kubectl -n '__fish_seen_subcommand_from annotate' -r -s f -l filename -d 'Filename, directory, or URL to files identifying the resource to update the annotation' +complete -c kubectl -f -n '__fish_seen_subcommand_from annotate' -r -s k -l kustomize -d 'Process the kustomization directory. This flag can\'t be used together with -f or -R.' +complete -c kubectl -f -n '__fish_seen_subcommand_from annotate' -l list -d 'If true, display the annotations for a given resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from annotate' -l local -d 'If true, annotation will NOT contact api-server but run locally.' +complete -c kubectl -f -n '__fish_seen_subcommand_from annotate' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from annotate' -l overwrite -d 'If true, allow annotations to be overwritten, otherwise reject annotation updates that overwrite existing annotations.' +complete -c kubectl -f -n '__fish_seen_subcommand_from annotate' -l record -d 'Record current kubectl command in the resource annotation. If set to false, do not record the command. If set to true, record the command. If not set, default to updating the existing annotation value only if one already exists.' +complete -c kubectl -f -n '__fish_seen_subcommand_from annotate' -s R -l recursive -d 'Process the directory used in -f, --filename recursively. Useful when you want to manage related manifests organized within the same directory.' +complete -c kubectl -f -n '__fish_seen_subcommand_from annotate' -r -l resource-version -d 'If non-empty, the annotation update will only succeed if this is the current resource-version for the object. Only valid when specifying a single resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from annotate' -r -s l -l selector -d 'Selector (label query) to filter on, not including uninitialized ones, supports \'=\', \'==\', and \'!=\'.(e.g. -l key1=value1,key2=value2).' +complete -c kubectl -n '__fish_seen_subcommand_from annotate' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' + +# Completions for the "kubectl api-resources" command +complete -c kubectl -f -n '__fish_seen_subcommand_from api-resources' -r -l api-group -d 'Limit to resources in the specified API group.' +complete -c kubectl -f -n '__fish_seen_subcommand_from api-resources' -l cached -d 'Use the cached list of resources if available.' +complete -c kubectl -f -n '__fish_seen_subcommand_from api-resources' -l namespaced -d 'If false, non-namespaced resources will be returned, otherwise returning namespaced resources by default.' +complete -c kubectl -f -n '__fish_seen_subcommand_from api-resources' -l no-headers -d 'When using the default or custom-column output format, don\'t print headers (default print headers).' +complete -c kubectl -f -n '__fish_seen_subcommand_from api-resources' -r -s o -l output -d 'Output format. One of: wide|name.' +complete -c kubectl -f -n '__fish_seen_subcommand_from api-resources' -r -l sort-by -d 'If non-empty, sort list of resources using specified field. The field can be either \'name\' or \'kind\'.' +complete -c kubectl -f -n '__fish_seen_subcommand_from api-resources' -r -l verbs -d 'Limit to resources that support the specified verbs.' + +# Completions for the "kubectl apply" command +complete -c kubectl -f -n '__fish_seen_subcommand_from apply' -l all -d 'Select all resources in the namespace of the specified resource types.' +complete -c kubectl -f -n '__fish_seen_subcommand_from apply' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from apply' -r -l cascade -d 'Must be "background", "orphan", or "foreground". Selects the deletion cascading strategy for the dependents (e.g. Pods created by a ReplicationController). Defaults to background.' +complete -c kubectl -f -n '__fish_seen_subcommand_from apply' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from apply' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -n '__fish_seen_subcommand_from apply' -r -s f -l filename -d 'that contains the configuration to apply' +complete -c kubectl -f -n '__fish_seen_subcommand_from apply' -l force -d 'If true, immediately remove resources from API and bypass graceful deletion. Note that immediate deletion of some resources may result in inconsistency or data loss and requires confirmation.' +complete -c kubectl -f -n '__fish_seen_subcommand_from apply' -l force-conflicts -d 'If true, server-side apply will force the changes against conflicts.' +complete -c kubectl -f -n '__fish_seen_subcommand_from apply' -r -l grace-period -d 'Period of time in seconds given to the resource to terminate gracefully. Ignored if negative. Set to 1 for immediate shutdown. Can only be set to 0 when --force is true (force deletion).' +complete -c kubectl -f -n '__fish_seen_subcommand_from apply' -r -s k -l kustomize -d 'Process a kustomization directory. This flag can\'t be used together with -f or -R.' +complete -c kubectl -f -n '__fish_seen_subcommand_from apply' -l openapi-patch -d 'If true, use openapi to calculate diff when the openapi presents and the resource can be found in the openapi spec. Otherwise, fall back to use baked-in types.' +complete -c kubectl -f -n '__fish_seen_subcommand_from apply' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from apply' -l overwrite -d 'Automatically resolve conflicts between the modified and live configuration by using values from the modified configuration' +complete -c kubectl -f -n '__fish_seen_subcommand_from apply' -l prune -d 'Automatically delete resource objects, including the uninitialized ones, that do not appear in the configs and are created by either apply or create --save-config. Should be used with either -l or --all.' +complete -c kubectl -f -n '__fish_seen_subcommand_from apply' -r -l prune-whitelist -d 'Overwrite the default whitelist with <group/version/kind> for --prune' +complete -c kubectl -f -n '__fish_seen_subcommand_from apply' -l record -d 'Record current kubectl command in the resource annotation. If set to false, do not record the command. If set to true, record the command. If not set, default to updating the existing annotation value only if one already exists.' +complete -c kubectl -f -n '__fish_seen_subcommand_from apply' -s R -l recursive -d 'Process the directory used in -f, --filename recursively. Useful when you want to manage related manifests organized within the same directory.' +complete -c kubectl -f -n '__fish_seen_subcommand_from apply' -r -s l -l selector -d 'Selector (label query) to filter on, supports \'=\', \'==\', and \'!=\'.(e.g. -l key1=value1,key2=value2)' +complete -c kubectl -f -n '__fish_seen_subcommand_from apply' -l server-side -d 'If true, apply runs in the server instead of the client.' +complete -c kubectl -n '__fish_seen_subcommand_from apply' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -f -n '__fish_seen_subcommand_from apply' -r -l timeout -d 'The length of time to wait before giving up on a delete, zero means determine a timeout from the size of the object' +complete -c kubectl -f -n '__fish_seen_subcommand_from apply' -l validate -d 'If true, use a schema to validate the input before sending it' +complete -c kubectl -f -n '__fish_seen_subcommand_from apply' -l wait -d 'If true, wait for resources to be gone before returning. This waits for finalizers.' +function __fish_kubectl_get_apply_commands + echo edit-last-applied\t'Edit latest last-applied-configuration annotations of a resource/object' + echo set-last-applied\t'Set the last-applied-configuration annotation on a live object to match the contents of a file.' + echo view-last-applied\t'View latest last-applied-configuration annotations of a resource/object' +end + +function __fish_kubectl_get_apply_commands_without_descriptions + __fish_kubectl_get_apply_commands | string replace -r '\t.*$' '' +end + +complete -c kubectl -f -n "__fish_kubectl_using_command apply; and not __fish_seen_subcommand_from (__fish_kubectl_get_apply_commands_without_descriptions)" -a '(__fish_kubectl_get_apply_commands)' + +# Completions for the "kubectl apply edit-last-applied" command +complete -c kubectl -f -n '__fish_seen_subcommand_from apply edit-last-applied' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from apply edit-last-applied' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -n '__fish_seen_subcommand_from apply edit-last-applied' -r -s f -l filename -d 'Filename, directory, or URL to files to use to edit the resource' +complete -c kubectl -f -n '__fish_seen_subcommand_from apply edit-last-applied' -r -s k -l kustomize -d 'Process the kustomization directory. This flag can\'t be used together with -f or -R.' +complete -c kubectl -f -n '__fish_seen_subcommand_from apply edit-last-applied' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from apply edit-last-applied' -l record -d 'Record current kubectl command in the resource annotation. If set to false, do not record the command. If set to true, record the command. If not set, default to updating the existing annotation value only if one already exists.' +complete -c kubectl -f -n '__fish_seen_subcommand_from apply edit-last-applied' -s R -l recursive -d 'Process the directory used in -f, --filename recursively. Useful when you want to manage related manifests organized within the same directory.' +complete -c kubectl -n '__fish_seen_subcommand_from apply edit-last-applied' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -f -n '__fish_seen_subcommand_from apply edit-last-applied' -l windows-line-endings -d 'Defaults to the line ending native to your platform.' + +# Completions for the "kubectl apply set-last-applied" command +complete -c kubectl -f -n '__fish_seen_subcommand_from apply set-last-applied' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from apply set-last-applied' -l create-annotation -d 'Will create \'last-applied-configuration\' annotations if current objects doesn\'t have one' +complete -c kubectl -f -n '__fish_seen_subcommand_from apply set-last-applied' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -n '__fish_seen_subcommand_from apply set-last-applied' -r -s f -l filename -d 'Filename, directory, or URL to files that contains the last-applied-configuration annotations' +complete -c kubectl -f -n '__fish_seen_subcommand_from apply set-last-applied' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -n '__fish_seen_subcommand_from apply set-last-applied' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' + +# Completions for the "kubectl apply view-last-applied" command +complete -c kubectl -f -n '__fish_seen_subcommand_from apply view-last-applied' -l all -d 'Select all resources in the namespace of the specified resource types' +complete -c kubectl -n '__fish_seen_subcommand_from apply view-last-applied' -r -s f -l filename -d 'Filename, directory, or URL to files that contains the last-applied-configuration annotations' +complete -c kubectl -f -n '__fish_seen_subcommand_from apply view-last-applied' -r -s k -l kustomize -d 'Process the kustomization directory. This flag can\'t be used together with -f or -R.' +complete -c kubectl -f -n '__fish_seen_subcommand_from apply view-last-applied' -r -s o -l output -d 'Output format. Must be one of yaml|json' +complete -c kubectl -f -n '__fish_seen_subcommand_from apply view-last-applied' -s R -l recursive -d 'Process the directory used in -f, --filename recursively. Useful when you want to manage related manifests organized within the same directory.' +complete -c kubectl -f -n '__fish_seen_subcommand_from apply view-last-applied' -r -s l -l selector -d 'Selector (label query) to filter on, supports \'=\', \'==\', and \'!=\'.(e.g. -l key1=value1,key2=value2)' + +# Completions for the "kubectl attach" command +complete -c kubectl -f -n '__fish_seen_subcommand_from attach' -r -s c -l container -d 'Container name. If omitted, the first container in the pod will be chosen' +complete -c kubectl -f -n '__fish_seen_subcommand_from attach' -r -l pod-running-timeout -d 'The length of time (like 5s, 2m, or 3h, higher than zero) to wait until at least one pod is running' +complete -c kubectl -f -n '__fish_seen_subcommand_from attach' -s i -l stdin -d 'Pass stdin to the container' +complete -c kubectl -f -n '__fish_seen_subcommand_from attach' -s t -l tty -d 'Stdin is a TTY' + +# Completions for the "kubectl auth" command +function __fish_kubectl_get_auth_commands + echo can-i\t'Check whether an action is allowed' + echo reconcile\t'Reconciles rules for RBAC Role, RoleBinding, ClusterRole, and ClusterRole binding objects' +end + +function __fish_kubectl_get_auth_commands_without_descriptions + __fish_kubectl_get_auth_commands | string replace -r '\t.*$' '' +end + +complete -c kubectl -f -n "__fish_kubectl_using_command auth; and not __fish_seen_subcommand_from (__fish_kubectl_get_auth_commands_without_descriptions)" -a '(__fish_kubectl_get_auth_commands)' + +# Completions for the "kubectl auth can-i" command +complete -c kubectl -f -n '__fish_seen_subcommand_from auth can-i' -s A -l all-namespaces -d 'If true, check the specified action in all namespaces.' +complete -c kubectl -f -n '__fish_seen_subcommand_from auth can-i' -l list -d 'If true, prints all allowed actions.' +complete -c kubectl -f -n '__fish_seen_subcommand_from auth can-i' -l no-headers -d 'If true, prints allowed actions without headers' +complete -c kubectl -f -n '__fish_seen_subcommand_from auth can-i' -s q -l quiet -d 'If true, suppress output and just return the exit code.' +complete -c kubectl -f -n '__fish_seen_subcommand_from auth can-i' -r -l subresource -d 'SubResource such as pod/log or deployment/scale' + +# Completions for the "kubectl auth reconcile" command +complete -c kubectl -f -n '__fish_seen_subcommand_from auth reconcile' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from auth reconcile' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -n '__fish_seen_subcommand_from auth reconcile' -r -s f -l filename -d 'Filename, directory, or URL to files identifying the resource to reconcile.' +complete -c kubectl -f -n '__fish_seen_subcommand_from auth reconcile' -r -s k -l kustomize -d 'Process the kustomization directory. This flag can\'t be used together with -f or -R.' +complete -c kubectl -f -n '__fish_seen_subcommand_from auth reconcile' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from auth reconcile' -s R -l recursive -d 'Process the directory used in -f, --filename recursively. Useful when you want to manage related manifests organized within the same directory.' +complete -c kubectl -f -n '__fish_seen_subcommand_from auth reconcile' -l remove-extra-permissions -d 'If true, removes extra permissions added to roles' +complete -c kubectl -f -n '__fish_seen_subcommand_from auth reconcile' -l remove-extra-subjects -d 'If true, removes extra subjects added to rolebindings' +complete -c kubectl -n '__fish_seen_subcommand_from auth reconcile' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' + +# Completions for the "kubectl autoscale" command +complete -c kubectl -f -n '__fish_seen_subcommand_from autoscale' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from autoscale' -r -l cpu-percent -d 'The target average CPU utilization (represented as a percent of requested CPU) over all the pods. If it\'s not specified or negative, a default autoscaling policy will be used.' +complete -c kubectl -f -n '__fish_seen_subcommand_from autoscale' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from autoscale' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -n '__fish_seen_subcommand_from autoscale' -r -s f -l filename -d 'Filename, directory, or URL to files identifying the resource to autoscale.' +complete -c kubectl -f -n '__fish_seen_subcommand_from autoscale' -r -s k -l kustomize -d 'Process the kustomization directory. This flag can\'t be used together with -f or -R.' +complete -c kubectl -f -n '__fish_seen_subcommand_from autoscale' -r -l max -d 'The upper limit for the number of pods that can be set by the autoscaler. Required.' +complete -c kubectl -f -n '__fish_seen_subcommand_from autoscale' -r -l min -d 'The lower limit for the number of pods that can be set by the autoscaler. If it\'s not specified or negative, the server will apply a default value.' +complete -c kubectl -f -n '__fish_seen_subcommand_from autoscale' -r -l name -d 'The name for the newly created object. If not specified, the name of the input resource will be used.' +complete -c kubectl -f -n '__fish_seen_subcommand_from autoscale' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from autoscale' -l record -d 'Record current kubectl command in the resource annotation. If set to false, do not record the command. If set to true, record the command. If not set, default to updating the existing annotation value only if one already exists.' +complete -c kubectl -f -n '__fish_seen_subcommand_from autoscale' -s R -l recursive -d 'Process the directory used in -f, --filename recursively. Useful when you want to manage related manifests organized within the same directory.' +complete -c kubectl -f -n '__fish_seen_subcommand_from autoscale' -l save-config -d 'If true, the configuration of current object will be saved in its annotation. Otherwise, the annotation will be unchanged. This flag is useful when you want to perform kubectl apply on this object in the future.' +complete -c kubectl -n '__fish_seen_subcommand_from autoscale' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' + +# Completions for the "kubectl certificate" command +function __fish_kubectl_get_certificate_commands + echo approve\t'Approve a certificate signing request' + echo deny\t'Deny a certificate signing request' +end + +function __fish_kubectl_get_certificate_commands_without_descriptions + __fish_kubectl_get_certificate_commands | string replace -r '\t.*$' '' +end + +complete -c kubectl -f -n "__fish_kubectl_using_command certificate; and not __fish_seen_subcommand_from (__fish_kubectl_get_certificate_commands_without_descriptions)" -a '(__fish_kubectl_get_certificate_commands)' + +# Completions for the "kubectl certificate approve" command +complete -c kubectl -f -n '__fish_seen_subcommand_from certificate approve' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -n '__fish_seen_subcommand_from certificate approve' -r -s f -l filename -d 'Filename, directory, or URL to files identifying the resource to update' +complete -c kubectl -f -n '__fish_seen_subcommand_from certificate approve' -l force -d 'Update the CSR even if it is already approved.' +complete -c kubectl -f -n '__fish_seen_subcommand_from certificate approve' -r -s k -l kustomize -d 'Process the kustomization directory. This flag can\'t be used together with -f or -R.' +complete -c kubectl -f -n '__fish_seen_subcommand_from certificate approve' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from certificate approve' -s R -l recursive -d 'Process the directory used in -f, --filename recursively. Useful when you want to manage related manifests organized within the same directory.' +complete -c kubectl -n '__fish_seen_subcommand_from certificate approve' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' + +# Completions for the "kubectl certificate deny" command +complete -c kubectl -f -n '__fish_seen_subcommand_from certificate deny' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -n '__fish_seen_subcommand_from certificate deny' -r -s f -l filename -d 'Filename, directory, or URL to files identifying the resource to update' +complete -c kubectl -f -n '__fish_seen_subcommand_from certificate deny' -l force -d 'Update the CSR even if it is already denied.' +complete -c kubectl -f -n '__fish_seen_subcommand_from certificate deny' -r -s k -l kustomize -d 'Process the kustomization directory. This flag can\'t be used together with -f or -R.' +complete -c kubectl -f -n '__fish_seen_subcommand_from certificate deny' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from certificate deny' -s R -l recursive -d 'Process the directory used in -f, --filename recursively. Useful when you want to manage related manifests organized within the same directory.' +complete -c kubectl -n '__fish_seen_subcommand_from certificate deny' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' + +# Completions for the "kubectl cluster-info" command +function __fish_kubectl_get_cluster_info_commands + echo dump\t'Dump lots of relevant info for debugging and diagnosis' +end + +function __fish_kubectl_get_cluster_info_commands_without_descriptions + __fish_kubectl_get_cluster_info_commands | string replace -r '\t.*$' '' +end + +complete -c kubectl -f -n "__fish_kubectl_using_command cluster-info; and not __fish_seen_subcommand_from (__fish_kubectl_get_cluster_info_commands_without_descriptions)" -a '(__fish_kubectl_get_cluster_info_commands)' + +# Completions for the "kubectl cluster-info dump" command +complete -c kubectl -f -n '__fish_seen_subcommand_from cluster-info dump' -s A -l all-namespaces -d 'If true, dump all namespaces. If true, --namespaces is ignored.' +complete -c kubectl -f -n '__fish_seen_subcommand_from cluster-info dump' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from cluster-info dump' -r -l namespaces -d 'A comma separated list of namespaces to dump.' +complete -c kubectl -f -n '__fish_seen_subcommand_from cluster-info dump' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from cluster-info dump' -r -l output-directory -d 'Where to output the files. If empty or \'-\' uses stdout, otherwise creates a directory hierarchy in that directory' +complete -c kubectl -f -n '__fish_seen_subcommand_from cluster-info dump' -r -l pod-running-timeout -d 'The length of time (like 5s, 2m, or 3h, higher than zero) to wait until at least one pod is running' +complete -c kubectl -n '__fish_seen_subcommand_from cluster-info dump' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' + +# Completions for the "kubectl config" command +function __fish_kubectl_get_config_commands + echo current-context\t'Displays the current-context' + echo delete-cluster\t'Delete the specified cluster from the kubeconfig' + echo delete-context\t'Delete the specified context from the kubeconfig' + echo delete-user\t'Delete the specified user from the kubeconfig' + echo get-clusters\t'Display clusters defined in the kubeconfig' + echo get-contexts\t'Describe one or many contexts' + echo get-users\t'Display users defined in the kubeconfig' + echo rename-context\t'Renames a context from the kubeconfig file.' + echo set\t'Sets an individual value in a kubeconfig file' + echo set-cluster\t'Sets a cluster entry in kubeconfig' + echo set-context\t'Sets a context entry in kubeconfig' + echo set-credentials\t'Sets a user entry in kubeconfig' + echo unset\t'Unsets an individual value in a kubeconfig file' + echo use-context\t'Sets the current-context in a kubeconfig file' + echo use\t'Sets the current-context in a kubeconfig file' + echo view\t'Display merged kubeconfig settings or a specified kubeconfig file' +end + +function __fish_kubectl_get_config_commands_without_descriptions + __fish_kubectl_get_config_commands | string replace -r '\t.*$' '' +end + +complete -c kubectl -f -n "__fish_kubectl_using_command config; and not __fish_seen_subcommand_from (__fish_kubectl_get_config_commands_without_descriptions)" -a '(__fish_kubectl_get_config_commands)' + +# Completions for the "kubectl config get-contexts" command +complete -c kubectl -f -n '__fish_seen_subcommand_from config get-contexts' -l no-headers -d 'When using the default or custom-column output format, don\'t print headers (default print headers).' +complete -c kubectl -f -n '__fish_seen_subcommand_from config get-contexts' -r -s o -l output -d 'Output format. One of: name' + +# Completions for the "kubectl config set" command +complete -c kubectl -f -n '__fish_seen_subcommand_from config set' -r -l set-raw-bytes -d 'When writing a []byte PROPERTY_VALUE, write the given string directly without base64 decoding.' + +# Completions for the "kubectl config set-cluster" command +complete -c kubectl -f -n '__fish_seen_subcommand_from config set-cluster' -r -l embed-certs -d 'embed-certs for the cluster entry in kubeconfig' + +# Completions for the "kubectl config set-context" command +complete -c kubectl -f -n '__fish_seen_subcommand_from config set-context' -l current -d 'Modify the current context' + +# Completions for the "kubectl config set-credentials" command +complete -c kubectl -f -n '__fish_seen_subcommand_from config set-credentials' -r -l auth-provider -d 'Auth provider for the user entry in kubeconfig' +complete -c kubectl -f -n '__fish_seen_subcommand_from config set-credentials' -r -l auth-provider-arg -d '\'key=value\' arguments for the auth provider' +complete -c kubectl -f -n '__fish_seen_subcommand_from config set-credentials' -r -l embed-certs -d 'Embed client cert/key for the user entry in kubeconfig' +complete -c kubectl -f -n '__fish_seen_subcommand_from config set-credentials' -r -l exec-api-version -d 'API version of the exec credential plugin for the user entry in kubeconfig' +complete -c kubectl -f -n '__fish_seen_subcommand_from config set-credentials' -r -l exec-arg -d 'New arguments for the exec credential plugin command for the user entry in kubeconfig' +complete -c kubectl -f -n '__fish_seen_subcommand_from config set-credentials' -r -l exec-command -d 'Command for the exec credential plugin for the user entry in kubeconfig' +complete -c kubectl -f -n '__fish_seen_subcommand_from config set-credentials' -r -l exec-env -d '\'key=value\' environment values for the exec credential plugin' + +# Completions for the "kubectl config view" command +complete -c kubectl -f -n '__fish_seen_subcommand_from config view' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from config view' -l flatten -d 'Flatten the resulting kubeconfig file into self-contained output (useful for creating portable kubeconfig files)' +complete -c kubectl -f -n '__fish_seen_subcommand_from config view' -r -l merge -d 'Merge the full hierarchy of kubeconfig files' +complete -c kubectl -f -n '__fish_seen_subcommand_from config view' -l minify -d 'Remove all information not used by current-context from the output' +complete -c kubectl -f -n '__fish_seen_subcommand_from config view' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from config view' -l raw -d 'Display raw byte data' +complete -c kubectl -n '__fish_seen_subcommand_from config view' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' + +# Completions for the "kubectl cordon" command +complete -c kubectl -f -n '__fish_seen_subcommand_from cordon' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from cordon' -r -s l -l selector -d 'Selector (label query) to filter on' + +# Completions for the "kubectl cp" command +complete -c kubectl -f -n '__fish_seen_subcommand_from cp' -r -s c -l container -d 'Container name. If omitted, the first container in the pod will be chosen' +complete -c kubectl -f -n '__fish_seen_subcommand_from cp' -l no-preserve -d 'The copied file/directory\'s ownership and permissions will not be preserved in the container' + +# Completions for the "kubectl create" command +complete -c kubectl -f -n '__fish_seen_subcommand_from create' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create' -l edit -d 'Edit the API resource before creating' +complete -c kubectl -f -n '__fish_seen_subcommand_from create' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -n '__fish_seen_subcommand_from create' -r -s f -l filename -d 'Filename, directory, or URL to files to use to create the resource' +complete -c kubectl -f -n '__fish_seen_subcommand_from create' -r -s k -l kustomize -d 'Process the kustomization directory. This flag can\'t be used together with -f or -R.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create' -r -l raw -d 'Raw URI to POST to the server. Uses the transport specified by the kubeconfig file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create' -l record -d 'Record current kubectl command in the resource annotation. If set to false, do not record the command. If set to true, record the command. If not set, default to updating the existing annotation value only if one already exists.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create' -s R -l recursive -d 'Process the directory used in -f, --filename recursively. Useful when you want to manage related manifests organized within the same directory.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create' -l save-config -d 'If true, the configuration of current object will be saved in its annotation. Otherwise, the annotation will be unchanged. This flag is useful when you want to perform kubectl apply on this object in the future.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create' -r -s l -l selector -d 'Selector (label query) to filter on, supports \'=\', \'==\', and \'!=\'.(e.g. -l key1=value1,key2=value2)' +complete -c kubectl -n '__fish_seen_subcommand_from create' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -f -n '__fish_seen_subcommand_from create' -l validate -d 'If true, use a schema to validate the input before sending it' +complete -c kubectl -f -n '__fish_seen_subcommand_from create' -l windows-line-endings -d 'Only relevant if --edit=true. Defaults to the line ending native to your platform.' +function __fish_kubectl_get_create_commands + echo clusterrole\t'Create a ClusterRole.' + echo clusterrolebinding\t'Create a ClusterRoleBinding for a particular ClusterRole' + echo configmap\t'Create a configmap from a local file, directory or literal value' + echo cm\t'Create a configmap from a local file, directory or literal value' + echo cronjob\t'Create a cronjob with the specified name.' + echo cj\t'Create a cronjob with the specified name.' + echo deployment\t'Create a deployment with the specified name.' + echo deploy\t'Create a deployment with the specified name.' + echo ingress\t'Create an ingress with the specified name.' + echo ing\t'Create an ingress with the specified name.' + echo job\t'Create a job with the specified name.' + echo namespace\t'Create a namespace with the specified name' + echo ns\t'Create a namespace with the specified name' + echo poddisruptionbudget\t'Create a pod disruption budget with the specified name.' + echo pdb\t'Create a pod disruption budget with the specified name.' + echo priorityclass\t'Create a priorityclass with the specified name.' + echo pc\t'Create a priorityclass with the specified name.' + echo quota\t'Create a quota with the specified name.' + echo resourcequota\t'Create a quota with the specified name.' + echo role\t'Create a role with single rule.' + echo rolebinding\t'Create a RoleBinding for a particular Role or ClusterRole' + echo secret\t'Create a secret using specified subcommand' + echo service\t'Create a service using specified subcommand.' + echo svc\t'Create a service using specified subcommand.' + echo serviceaccount\t'Create a service account with the specified name' + echo sa\t'Create a service account with the specified name' +end + +function __fish_kubectl_get_create_commands_without_descriptions + __fish_kubectl_get_create_commands | string replace -r '\t.*$' '' +end + +complete -c kubectl -f -n "__fish_kubectl_using_command create; and not __fish_seen_subcommand_from (__fish_kubectl_get_create_commands_without_descriptions)" -a '(__fish_kubectl_get_create_commands)' + +# Completions for the "kubectl create clusterrole" command +complete -c kubectl -f -n '__fish_seen_subcommand_from create clusterrole' -r -l aggregation-rule -d 'An aggregation label selector for combining ClusterRoles.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create clusterrole' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create clusterrole' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create clusterrole' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create clusterrole' -r -l non-resource-url -d 'A partial url that user should have access to.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create clusterrole' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create clusterrole' -r -l resource -d 'Resource that the rule applies to' +complete -c kubectl -f -n '__fish_seen_subcommand_from create clusterrole' -r -l resource-name -d 'Resource in the white list that the rule applies to, repeat this flag for multiple items' +complete -c kubectl -f -n '__fish_seen_subcommand_from create clusterrole' -l save-config -d 'If true, the configuration of current object will be saved in its annotation. Otherwise, the annotation will be unchanged. This flag is useful when you want to perform kubectl apply on this object in the future.' +complete -c kubectl -n '__fish_seen_subcommand_from create clusterrole' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -f -n '__fish_seen_subcommand_from create clusterrole' -l validate -d 'If true, use a schema to validate the input before sending it' +complete -c kubectl -f -n '__fish_seen_subcommand_from create clusterrole' -r -l verb -d 'Verb that applies to the resources contained in the rule' + +# Completions for the "kubectl create clusterrolebinding" command +complete -c kubectl -f -n '__fish_seen_subcommand_from create clusterrolebinding' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create clusterrolebinding' -r -l clusterrole -d 'ClusterRole this ClusterRoleBinding should reference' +complete -c kubectl -f -n '__fish_seen_subcommand_from create clusterrolebinding' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create clusterrolebinding' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create clusterrolebinding' -r -l group -d 'Groups to bind to the clusterrole' +complete -c kubectl -f -n '__fish_seen_subcommand_from create clusterrolebinding' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create clusterrolebinding' -l save-config -d 'If true, the configuration of current object will be saved in its annotation. Otherwise, the annotation will be unchanged. This flag is useful when you want to perform kubectl apply on this object in the future.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create clusterrolebinding' -r -l serviceaccount -d 'Service accounts to bind to the clusterrole, in the format <namespace>:<name>' +complete -c kubectl -n '__fish_seen_subcommand_from create clusterrolebinding' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -f -n '__fish_seen_subcommand_from create clusterrolebinding' -l validate -d 'If true, use a schema to validate the input before sending it' + +# Completions for the "kubectl create configmap" command +complete -c kubectl -f -n '__fish_seen_subcommand_from create configmap' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create cm' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create configmap' -l append-hash -d 'Append a hash of the configmap to its name.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create cm' -l append-hash -d 'Append a hash of the configmap to its name.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create configmap' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create cm' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create configmap' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create cm' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create configmap' -r -l from-env-file -d 'Specify the path to a file to read lines of key=val pairs to create a configmap (i.e. a Docker .env file).' +complete -c kubectl -f -n '__fish_seen_subcommand_from create cm' -r -l from-env-file -d 'Specify the path to a file to read lines of key=val pairs to create a configmap (i.e. a Docker .env file).' +complete -c kubectl -f -n '__fish_seen_subcommand_from create configmap' -r -l from-file -d 'Key file can be specified using its file path, in which case file basename will be used as configmap key, or optionally with a key and file path, in which case the given key will be used. Specifying a directory will iterate each named file in the directory whose basename is a valid configmap key.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create cm' -r -l from-file -d 'Key file can be specified using its file path, in which case file basename will be used as configmap key, or optionally with a key and file path, in which case the given key will be used. Specifying a directory will iterate each named file in the directory whose basename is a valid configmap key.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create configmap' -r -l from-literal -d 'Specify a key and literal value to insert in configmap (i.e. mykey=somevalue)' +complete -c kubectl -f -n '__fish_seen_subcommand_from create cm' -r -l from-literal -d 'Specify a key and literal value to insert in configmap (i.e. mykey=somevalue)' +complete -c kubectl -f -n '__fish_seen_subcommand_from create configmap' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create cm' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create configmap' -l save-config -d 'If true, the configuration of current object will be saved in its annotation. Otherwise, the annotation will be unchanged. This flag is useful when you want to perform kubectl apply on this object in the future.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create cm' -l save-config -d 'If true, the configuration of current object will be saved in its annotation. Otherwise, the annotation will be unchanged. This flag is useful when you want to perform kubectl apply on this object in the future.' +complete -c kubectl -n '__fish_seen_subcommand_from create configmap' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -n '__fish_seen_subcommand_from create cm' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -f -n '__fish_seen_subcommand_from create configmap' -l validate -d 'If true, use a schema to validate the input before sending it' +complete -c kubectl -f -n '__fish_seen_subcommand_from create cm' -l validate -d 'If true, use a schema to validate the input before sending it' + +# Completions for the "kubectl create cronjob" command +complete -c kubectl -f -n '__fish_seen_subcommand_from create cronjob' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create cj' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create cronjob' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create cj' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create cronjob' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create cj' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create cronjob' -r -l image -d 'Image name to run.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create cj' -r -l image -d 'Image name to run.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create cronjob' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create cj' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create cronjob' -r -l restart -d 'job\'s restart policy. supported values: OnFailure, Never' +complete -c kubectl -f -n '__fish_seen_subcommand_from create cj' -r -l restart -d 'job\'s restart policy. supported values: OnFailure, Never' +complete -c kubectl -f -n '__fish_seen_subcommand_from create cronjob' -l save-config -d 'If true, the configuration of current object will be saved in its annotation. Otherwise, the annotation will be unchanged. This flag is useful when you want to perform kubectl apply on this object in the future.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create cj' -l save-config -d 'If true, the configuration of current object will be saved in its annotation. Otherwise, the annotation will be unchanged. This flag is useful when you want to perform kubectl apply on this object in the future.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create cronjob' -r -l schedule -d 'A schedule in the Cron format the job should be run with.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create cj' -r -l schedule -d 'A schedule in the Cron format the job should be run with.' +complete -c kubectl -n '__fish_seen_subcommand_from create cronjob' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -n '__fish_seen_subcommand_from create cj' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -f -n '__fish_seen_subcommand_from create cronjob' -l validate -d 'If true, use a schema to validate the input before sending it' +complete -c kubectl -f -n '__fish_seen_subcommand_from create cj' -l validate -d 'If true, use a schema to validate the input before sending it' + +# Completions for the "kubectl create deployment" command +complete -c kubectl -f -n '__fish_seen_subcommand_from create deployment' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create deploy' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create deployment' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create deploy' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create deployment' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create deploy' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create deployment' -r -l image -d 'Image names to run.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create deploy' -r -l image -d 'Image names to run.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create deployment' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create deploy' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create deployment' -r -l port -d 'The port that this container exposes.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create deploy' -r -l port -d 'The port that this container exposes.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create deployment' -r -s r -l replicas -d 'Number of replicas to create. Default is 1.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create deploy' -r -s r -l replicas -d 'Number of replicas to create. Default is 1.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create deployment' -l save-config -d 'If true, the configuration of current object will be saved in its annotation. Otherwise, the annotation will be unchanged. This flag is useful when you want to perform kubectl apply on this object in the future.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create deploy' -l save-config -d 'If true, the configuration of current object will be saved in its annotation. Otherwise, the annotation will be unchanged. This flag is useful when you want to perform kubectl apply on this object in the future.' +complete -c kubectl -n '__fish_seen_subcommand_from create deployment' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -n '__fish_seen_subcommand_from create deploy' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -f -n '__fish_seen_subcommand_from create deployment' -l validate -d 'If true, use a schema to validate the input before sending it' +complete -c kubectl -f -n '__fish_seen_subcommand_from create deploy' -l validate -d 'If true, use a schema to validate the input before sending it' + +# Completions for the "kubectl create ingress" command +complete -c kubectl -f -n '__fish_seen_subcommand_from create ingress' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create ing' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create ingress' -r -l annotation -d 'Annotation to insert in the ingress object, in the format annotation=value' +complete -c kubectl -f -n '__fish_seen_subcommand_from create ing' -r -l annotation -d 'Annotation to insert in the ingress object, in the format annotation=value' +complete -c kubectl -f -n '__fish_seen_subcommand_from create ingress' -r -l class -d 'Ingress Class to be used' +complete -c kubectl -f -n '__fish_seen_subcommand_from create ing' -r -l class -d 'Ingress Class to be used' +complete -c kubectl -f -n '__fish_seen_subcommand_from create ingress' -r -l default-backend -d 'Default service for backend, in format of svcname:port' +complete -c kubectl -f -n '__fish_seen_subcommand_from create ing' -r -l default-backend -d 'Default service for backend, in format of svcname:port' +complete -c kubectl -f -n '__fish_seen_subcommand_from create ingress' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create ing' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create ingress' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create ing' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create ingress' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create ing' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create ingress' -r -l rule -d 'Rule in format host/path=service:port[,tls=secretname]. Paths containing the leading character \'*\' are considered pathType=Prefix. tls argument is optional.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create ing' -r -l rule -d 'Rule in format host/path=service:port[,tls=secretname]. Paths containing the leading character \'*\' are considered pathType=Prefix. tls argument is optional.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create ingress' -l save-config -d 'If true, the configuration of current object will be saved in its annotation. Otherwise, the annotation will be unchanged. This flag is useful when you want to perform kubectl apply on this object in the future.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create ing' -l save-config -d 'If true, the configuration of current object will be saved in its annotation. Otherwise, the annotation will be unchanged. This flag is useful when you want to perform kubectl apply on this object in the future.' +complete -c kubectl -n '__fish_seen_subcommand_from create ingress' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -n '__fish_seen_subcommand_from create ing' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -f -n '__fish_seen_subcommand_from create ingress' -l validate -d 'If true, use a schema to validate the input before sending it' +complete -c kubectl -f -n '__fish_seen_subcommand_from create ing' -l validate -d 'If true, use a schema to validate the input before sending it' + +# Completions for the "kubectl create job" command +complete -c kubectl -f -n '__fish_seen_subcommand_from create job' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create job' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create job' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create job' -r -l from -d 'The name of the resource to create a Job from (only cronjob is supported).' +complete -c kubectl -f -n '__fish_seen_subcommand_from create job' -r -l image -d 'Image name to run.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create job' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create job' -l save-config -d 'If true, the configuration of current object will be saved in its annotation. Otherwise, the annotation will be unchanged. This flag is useful when you want to perform kubectl apply on this object in the future.' +complete -c kubectl -n '__fish_seen_subcommand_from create job' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -f -n '__fish_seen_subcommand_from create job' -l validate -d 'If true, use a schema to validate the input before sending it' + +# Completions for the "kubectl create namespace" command +complete -c kubectl -f -n '__fish_seen_subcommand_from create namespace' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create ns' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create namespace' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create ns' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create namespace' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create ns' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create namespace' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create ns' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create namespace' -l save-config -d 'If true, the configuration of current object will be saved in its annotation. Otherwise, the annotation will be unchanged. This flag is useful when you want to perform kubectl apply on this object in the future.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create ns' -l save-config -d 'If true, the configuration of current object will be saved in its annotation. Otherwise, the annotation will be unchanged. This flag is useful when you want to perform kubectl apply on this object in the future.' +complete -c kubectl -n '__fish_seen_subcommand_from create namespace' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -n '__fish_seen_subcommand_from create ns' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -f -n '__fish_seen_subcommand_from create namespace' -l validate -d 'If true, use a schema to validate the input before sending it' +complete -c kubectl -f -n '__fish_seen_subcommand_from create ns' -l validate -d 'If true, use a schema to validate the input before sending it' + +# Completions for the "kubectl create poddisruptionbudget" command +complete -c kubectl -f -n '__fish_seen_subcommand_from create poddisruptionbudget' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create pdb' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create poddisruptionbudget' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create pdb' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create poddisruptionbudget' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create pdb' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create poddisruptionbudget' -r -l max-unavailable -d 'The maximum number or percentage of unavailable pods this budget requires.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create pdb' -r -l max-unavailable -d 'The maximum number or percentage of unavailable pods this budget requires.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create poddisruptionbudget' -r -l min-available -d 'The minimum number or percentage of available pods this budget requires.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create pdb' -r -l min-available -d 'The minimum number or percentage of available pods this budget requires.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create poddisruptionbudget' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create pdb' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create poddisruptionbudget' -l save-config -d 'If true, the configuration of current object will be saved in its annotation. Otherwise, the annotation will be unchanged. This flag is useful when you want to perform kubectl apply on this object in the future.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create pdb' -l save-config -d 'If true, the configuration of current object will be saved in its annotation. Otherwise, the annotation will be unchanged. This flag is useful when you want to perform kubectl apply on this object in the future.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create poddisruptionbudget' -r -l selector -d 'A label selector to use for this budget. Only equality-based selector requirements are supported.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create pdb' -r -l selector -d 'A label selector to use for this budget. Only equality-based selector requirements are supported.' +complete -c kubectl -n '__fish_seen_subcommand_from create poddisruptionbudget' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -n '__fish_seen_subcommand_from create pdb' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -f -n '__fish_seen_subcommand_from create poddisruptionbudget' -l validate -d 'If true, use a schema to validate the input before sending it' +complete -c kubectl -f -n '__fish_seen_subcommand_from create pdb' -l validate -d 'If true, use a schema to validate the input before sending it' + +# Completions for the "kubectl create priorityclass" command +complete -c kubectl -f -n '__fish_seen_subcommand_from create priorityclass' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create pc' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create priorityclass' -r -l description -d 'description is an arbitrary string that usually provides guidelines on when this priority class should be used.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create pc' -r -l description -d 'description is an arbitrary string that usually provides guidelines on when this priority class should be used.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create priorityclass' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create pc' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create priorityclass' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create pc' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create priorityclass' -l global-default -d 'global-default specifies whether this PriorityClass should be considered as the default priority.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create pc' -l global-default -d 'global-default specifies whether this PriorityClass should be considered as the default priority.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create priorityclass' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create pc' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create priorityclass' -r -l preemption-policy -d 'preemption-policy is the policy for preempting pods with lower priority.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create pc' -r -l preemption-policy -d 'preemption-policy is the policy for preempting pods with lower priority.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create priorityclass' -l save-config -d 'If true, the configuration of current object will be saved in its annotation. Otherwise, the annotation will be unchanged. This flag is useful when you want to perform kubectl apply on this object in the future.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create pc' -l save-config -d 'If true, the configuration of current object will be saved in its annotation. Otherwise, the annotation will be unchanged. This flag is useful when you want to perform kubectl apply on this object in the future.' +complete -c kubectl -n '__fish_seen_subcommand_from create priorityclass' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -n '__fish_seen_subcommand_from create pc' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -f -n '__fish_seen_subcommand_from create priorityclass' -l validate -d 'If true, use a schema to validate the input before sending it' +complete -c kubectl -f -n '__fish_seen_subcommand_from create pc' -l validate -d 'If true, use a schema to validate the input before sending it' +complete -c kubectl -f -n '__fish_seen_subcommand_from create priorityclass' -r -l value -d 'the value of this priority class.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create pc' -r -l value -d 'the value of this priority class.' + +# Completions for the "kubectl create quota" command +complete -c kubectl -f -n '__fish_seen_subcommand_from create quota' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create resourcequota' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create quota' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create resourcequota' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create quota' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create resourcequota' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create quota' -r -l hard -d 'A comma-delimited set of resource=quantity pairs that define a hard limit.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create resourcequota' -r -l hard -d 'A comma-delimited set of resource=quantity pairs that define a hard limit.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create quota' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create resourcequota' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create quota' -l save-config -d 'If true, the configuration of current object will be saved in its annotation. Otherwise, the annotation will be unchanged. This flag is useful when you want to perform kubectl apply on this object in the future.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create resourcequota' -l save-config -d 'If true, the configuration of current object will be saved in its annotation. Otherwise, the annotation will be unchanged. This flag is useful when you want to perform kubectl apply on this object in the future.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create quota' -r -l scopes -d 'A comma-delimited set of quota scopes that must all match each object tracked by the quota.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create resourcequota' -r -l scopes -d 'A comma-delimited set of quota scopes that must all match each object tracked by the quota.' +complete -c kubectl -n '__fish_seen_subcommand_from create quota' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -n '__fish_seen_subcommand_from create resourcequota' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -f -n '__fish_seen_subcommand_from create quota' -l validate -d 'If true, use a schema to validate the input before sending it' +complete -c kubectl -f -n '__fish_seen_subcommand_from create resourcequota' -l validate -d 'If true, use a schema to validate the input before sending it' + +# Completions for the "kubectl create role" command +complete -c kubectl -f -n '__fish_seen_subcommand_from create role' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create role' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create role' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create role' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create role' -r -l resource -d 'Resource that the rule applies to' +complete -c kubectl -f -n '__fish_seen_subcommand_from create role' -r -l resource-name -d 'Resource in the white list that the rule applies to, repeat this flag for multiple items' +complete -c kubectl -f -n '__fish_seen_subcommand_from create role' -l save-config -d 'If true, the configuration of current object will be saved in its annotation. Otherwise, the annotation will be unchanged. This flag is useful when you want to perform kubectl apply on this object in the future.' +complete -c kubectl -n '__fish_seen_subcommand_from create role' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -f -n '__fish_seen_subcommand_from create role' -l validate -d 'If true, use a schema to validate the input before sending it' +complete -c kubectl -f -n '__fish_seen_subcommand_from create role' -r -l verb -d 'Verb that applies to the resources contained in the rule' + +# Completions for the "kubectl create rolebinding" command +complete -c kubectl -f -n '__fish_seen_subcommand_from create rolebinding' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create rolebinding' -r -l clusterrole -d 'ClusterRole this RoleBinding should reference' +complete -c kubectl -f -n '__fish_seen_subcommand_from create rolebinding' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create rolebinding' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create rolebinding' -r -l group -d 'Groups to bind to the role' +complete -c kubectl -f -n '__fish_seen_subcommand_from create rolebinding' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create rolebinding' -r -l role -d 'Role this RoleBinding should reference' +complete -c kubectl -f -n '__fish_seen_subcommand_from create rolebinding' -l save-config -d 'If true, the configuration of current object will be saved in its annotation. Otherwise, the annotation will be unchanged. This flag is useful when you want to perform kubectl apply on this object in the future.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create rolebinding' -r -l serviceaccount -d 'Service accounts to bind to the role, in the format <namespace>:<name>' +complete -c kubectl -n '__fish_seen_subcommand_from create rolebinding' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -f -n '__fish_seen_subcommand_from create rolebinding' -l validate -d 'If true, use a schema to validate the input before sending it' + +# Completions for the "kubectl create secret" command +function __fish_kubectl_get_create_secret_commands + echo docker-registry\t'Create a secret for use with a Docker registry' + echo generic\t'Create a secret from a local file, directory or literal value' + echo tls\t'Create a TLS secret' +end + +function __fish_kubectl_get_create_secret_commands_without_descriptions + __fish_kubectl_get_create_secret_commands | string replace -r '\t.*$' '' +end + +complete -c kubectl -f -n "__fish_kubectl_using_command secret; and not __fish_seen_subcommand_from (__fish_kubectl_get_create_secret_commands_without_descriptions)" -a '(__fish_kubectl_get_create_secret_commands)' + +# Completions for the "kubectl create secret docker-registry" command +complete -c kubectl -f -n '__fish_seen_subcommand_from create secret docker-registry' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create secret docker-registry' -l append-hash -d 'Append a hash of the secret to its name.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create secret docker-registry' -r -l docker-email -d 'Email for Docker registry' +complete -c kubectl -f -n '__fish_seen_subcommand_from create secret docker-registry' -r -l docker-password -d 'Password for Docker registry authentication' +complete -c kubectl -f -n '__fish_seen_subcommand_from create secret docker-registry' -r -l docker-server -d 'Server location for Docker registry' +complete -c kubectl -f -n '__fish_seen_subcommand_from create secret docker-registry' -r -l docker-username -d 'Username for Docker registry authentication' +complete -c kubectl -f -n '__fish_seen_subcommand_from create secret docker-registry' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create secret docker-registry' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create secret docker-registry' -r -l from-file -d 'Key files can be specified using their file path, in which case a default name will be given to them, or optionally with a name and file path, in which case the given name will be used. Specifying a directory will iterate each named file in the directory that is a valid secret key.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create secret docker-registry' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create secret docker-registry' -l save-config -d 'If true, the configuration of current object will be saved in its annotation. Otherwise, the annotation will be unchanged. This flag is useful when you want to perform kubectl apply on this object in the future.' +complete -c kubectl -n '__fish_seen_subcommand_from create secret docker-registry' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -f -n '__fish_seen_subcommand_from create secret docker-registry' -l validate -d 'If true, use a schema to validate the input before sending it' + +# Completions for the "kubectl create secret generic" command +complete -c kubectl -f -n '__fish_seen_subcommand_from create secret generic' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create secret generic' -l append-hash -d 'Append a hash of the secret to its name.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create secret generic' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create secret generic' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create secret generic' -r -l from-env-file -d 'Specify the path to a file to read lines of key=val pairs to create a secret (i.e. a Docker .env file).' +complete -c kubectl -f -n '__fish_seen_subcommand_from create secret generic' -r -l from-file -d 'Key files can be specified using their file path, in which case a default name will be given to them, or optionally with a name and file path, in which case the given name will be used. Specifying a directory will iterate each named file in the directory that is a valid secret key.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create secret generic' -r -l from-literal -d 'Specify a key and literal value to insert in secret (i.e. mykey=somevalue)' +complete -c kubectl -f -n '__fish_seen_subcommand_from create secret generic' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create secret generic' -l save-config -d 'If true, the configuration of current object will be saved in its annotation. Otherwise, the annotation will be unchanged. This flag is useful when you want to perform kubectl apply on this object in the future.' +complete -c kubectl -n '__fish_seen_subcommand_from create secret generic' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -f -n '__fish_seen_subcommand_from create secret generic' -r -l type -d 'The type of secret to create' +complete -c kubectl -f -n '__fish_seen_subcommand_from create secret generic' -l validate -d 'If true, use a schema to validate the input before sending it' + +# Completions for the "kubectl create secret tls" command +complete -c kubectl -f -n '__fish_seen_subcommand_from create secret tls' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create secret tls' -l append-hash -d 'Append a hash of the secret to its name.' +complete -c kubectl -n '__fish_seen_subcommand_from create secret tls' -r -l cert -d 'Path to PEM encoded public key certificate.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create secret tls' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create secret tls' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -n '__fish_seen_subcommand_from create secret tls' -r -l key -d 'Path to private key associated with given certificate.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create secret tls' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create secret tls' -l save-config -d 'If true, the configuration of current object will be saved in its annotation. Otherwise, the annotation will be unchanged. This flag is useful when you want to perform kubectl apply on this object in the future.' +complete -c kubectl -n '__fish_seen_subcommand_from create secret tls' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -f -n '__fish_seen_subcommand_from create secret tls' -l validate -d 'If true, use a schema to validate the input before sending it' + +# Completions for the "kubectl create service" command +function __fish_kubectl_get_create_service_commands + echo clusterip\t'Create a ClusterIP service.' + echo externalname\t'Create an ExternalName service.' + echo loadbalancer\t'Create a LoadBalancer service.' + echo nodeport\t'Create a NodePort service.' +end + +function __fish_kubectl_get_create_service_commands_without_descriptions + __fish_kubectl_get_create_service_commands | string replace -r '\t.*$' '' +end + +complete -c kubectl -f -n "__fish_kubectl_using_command service; and not __fish_seen_subcommand_from (__fish_kubectl_get_create_service_commands_without_descriptions)" -a '(__fish_kubectl_get_create_service_commands)' +complete -c kubectl -f -n "__fish_kubectl_using_command svc; and not __fish_seen_subcommand_from (__fish_kubectl_get_create_service_commands_without_descriptions)" -a '(__fish_kubectl_get_create_service_commands)' + +# Completions for the "kubectl create service clusterip" command +complete -c kubectl -f -n '__fish_seen_subcommand_from create service clusterip' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create service clusterip' -r -l clusterip -d 'Assign your own ClusterIP or set to \'None\' for a \'headless\' service (no loadbalancing).' +complete -c kubectl -f -n '__fish_seen_subcommand_from create service clusterip' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create service clusterip' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create service clusterip' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create service clusterip' -l save-config -d 'If true, the configuration of current object will be saved in its annotation. Otherwise, the annotation will be unchanged. This flag is useful when you want to perform kubectl apply on this object in the future.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create service clusterip' -r -l tcp -d 'Port pairs can be specified as \'<port>:<targetPort>\'.' +complete -c kubectl -n '__fish_seen_subcommand_from create service clusterip' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -f -n '__fish_seen_subcommand_from create service clusterip' -l validate -d 'If true, use a schema to validate the input before sending it' + +# Completions for the "kubectl create service externalname" command +complete -c kubectl -f -n '__fish_seen_subcommand_from create service externalname' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create service externalname' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create service externalname' -r -l external-name -d 'External name of service' +complete -c kubectl -f -n '__fish_seen_subcommand_from create service externalname' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create service externalname' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create service externalname' -l save-config -d 'If true, the configuration of current object will be saved in its annotation. Otherwise, the annotation will be unchanged. This flag is useful when you want to perform kubectl apply on this object in the future.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create service externalname' -r -l tcp -d 'Port pairs can be specified as \'<port>:<targetPort>\'.' +complete -c kubectl -n '__fish_seen_subcommand_from create service externalname' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -f -n '__fish_seen_subcommand_from create service externalname' -l validate -d 'If true, use a schema to validate the input before sending it' + +# Completions for the "kubectl create service loadbalancer" command +complete -c kubectl -f -n '__fish_seen_subcommand_from create service loadbalancer' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create service loadbalancer' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create service loadbalancer' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create service loadbalancer' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create service loadbalancer' -l save-config -d 'If true, the configuration of current object will be saved in its annotation. Otherwise, the annotation will be unchanged. This flag is useful when you want to perform kubectl apply on this object in the future.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create service loadbalancer' -r -l tcp -d 'Port pairs can be specified as \'<port>:<targetPort>\'.' +complete -c kubectl -n '__fish_seen_subcommand_from create service loadbalancer' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -f -n '__fish_seen_subcommand_from create service loadbalancer' -l validate -d 'If true, use a schema to validate the input before sending it' + +# Completions for the "kubectl create service nodeport" command +complete -c kubectl -f -n '__fish_seen_subcommand_from create service nodeport' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create service nodeport' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create service nodeport' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create service nodeport' -r -l node-port -d 'Port used to expose the service on each node in a cluster.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create service nodeport' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create service nodeport' -l save-config -d 'If true, the configuration of current object will be saved in its annotation. Otherwise, the annotation will be unchanged. This flag is useful when you want to perform kubectl apply on this object in the future.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create service nodeport' -r -l tcp -d 'Port pairs can be specified as \'<port>:<targetPort>\'.' +complete -c kubectl -n '__fish_seen_subcommand_from create service nodeport' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -f -n '__fish_seen_subcommand_from create service nodeport' -l validate -d 'If true, use a schema to validate the input before sending it' + +# Completions for the "kubectl create serviceaccount" command +complete -c kubectl -f -n '__fish_seen_subcommand_from create serviceaccount' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create sa' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create serviceaccount' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create sa' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create serviceaccount' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create sa' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create serviceaccount' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create sa' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create serviceaccount' -l save-config -d 'If true, the configuration of current object will be saved in its annotation. Otherwise, the annotation will be unchanged. This flag is useful when you want to perform kubectl apply on this object in the future.' +complete -c kubectl -f -n '__fish_seen_subcommand_from create sa' -l save-config -d 'If true, the configuration of current object will be saved in its annotation. Otherwise, the annotation will be unchanged. This flag is useful when you want to perform kubectl apply on this object in the future.' +complete -c kubectl -n '__fish_seen_subcommand_from create serviceaccount' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -n '__fish_seen_subcommand_from create sa' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -f -n '__fish_seen_subcommand_from create serviceaccount' -l validate -d 'If true, use a schema to validate the input before sending it' +complete -c kubectl -f -n '__fish_seen_subcommand_from create sa' -l validate -d 'If true, use a schema to validate the input before sending it' + +# Completions for the "kubectl debug" command +complete -c kubectl -f -n '__fish_seen_subcommand_from debug' -l arguments-only -d 'If specified, everything after -- will be passed to the new container as Args instead of Command.' +complete -c kubectl -f -n '__fish_seen_subcommand_from debug' -l attach -d 'If true, wait for the container to start running, and then attach as if \'kubectl attach ...\' were called. Default false, unless \'-i/--stdin\' is set, in which case the default is true.' +complete -c kubectl -f -n '__fish_seen_subcommand_from debug' -r -s c -l container -d 'Container name to use for debug container.' +complete -c kubectl -f -n '__fish_seen_subcommand_from debug' -r -l copy-to -d 'Create a copy of the target Pod with this name.' +complete -c kubectl -f -n '__fish_seen_subcommand_from debug' -r -l env -d 'Environment variables to set in the container.' +complete -c kubectl -f -n '__fish_seen_subcommand_from debug' -r -l image -d 'Container image to use for debug container.' +complete -c kubectl -f -n '__fish_seen_subcommand_from debug' -r -l image-pull-policy -d 'The image pull policy for the container. If left empty, this value will not be specified by the client and defaulted by the server.' +complete -c kubectl -f -n '__fish_seen_subcommand_from debug' -l quiet -d 'If true, suppress informational messages.' +complete -c kubectl -f -n '__fish_seen_subcommand_from debug' -l replace -d 'When used with \'--copy-to\', delete the original Pod.' +complete -c kubectl -f -n '__fish_seen_subcommand_from debug' -l same-node -d 'When used with \'--copy-to\', schedule the copy of target Pod on the same node.' +complete -c kubectl -f -n '__fish_seen_subcommand_from debug' -r -l set-image -d 'When used with \'--copy-to\', a list of name=image pairs for changing container images, similar to how \'kubectl set image\' works.' +complete -c kubectl -f -n '__fish_seen_subcommand_from debug' -l share-processes -d 'When used with \'--copy-to\', enable process namespace sharing in the copy.' +complete -c kubectl -f -n '__fish_seen_subcommand_from debug' -s i -l stdin -d 'Keep stdin open on the container(s) in the pod, even if nothing is attached.' +complete -c kubectl -f -n '__fish_seen_subcommand_from debug' -r -l target -d 'When using an ephemeral container, target processes in this container name.' +complete -c kubectl -f -n '__fish_seen_subcommand_from debug' -s t -l tty -d 'Allocate a TTY for the debugging container.' + +# Completions for the "kubectl delete" command +complete -c kubectl -f -n '__fish_seen_subcommand_from delete' -l all -d 'Delete all resources, including uninitialized ones, in the namespace of the specified resource types.' +complete -c kubectl -f -n '__fish_seen_subcommand_from delete' -s A -l all-namespaces -d 'If present, list the requested object(s) across all namespaces. Namespace in current context is ignored even if specified with --namespace.' +complete -c kubectl -f -n '__fish_seen_subcommand_from delete' -r -l cascade -d 'Must be "background", "orphan", or "foreground". Selects the deletion cascading strategy for the dependents (e.g. Pods created by a ReplicationController). Defaults to background.' +complete -c kubectl -f -n '__fish_seen_subcommand_from delete' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from delete' -r -l field-selector -d 'Selector (field query) to filter on, supports \'=\', \'==\', and \'!=\'.(e.g. --field-selector key1=value1,key2=value2). The server only supports a limited number of field queries per type.' +complete -c kubectl -n '__fish_seen_subcommand_from delete' -r -s f -l filename -d 'containing the resource to delete.' +complete -c kubectl -f -n '__fish_seen_subcommand_from delete' -l force -d 'If true, immediately remove resources from API and bypass graceful deletion. Note that immediate deletion of some resources may result in inconsistency or data loss and requires confirmation.' +complete -c kubectl -f -n '__fish_seen_subcommand_from delete' -r -l grace-period -d 'Period of time in seconds given to the resource to terminate gracefully. Ignored if negative. Set to 1 for immediate shutdown. Can only be set to 0 when --force is true (force deletion).' +complete -c kubectl -f -n '__fish_seen_subcommand_from delete' -l ignore-not-found -d 'Treat "resource not found" as a successful delete. Defaults to "true" when --all is specified.' +complete -c kubectl -f -n '__fish_seen_subcommand_from delete' -r -s k -l kustomize -d 'Process a kustomization directory. This flag can\'t be used together with -f or -R.' +complete -c kubectl -f -n '__fish_seen_subcommand_from delete' -l now -d 'If true, resources are signaled for immediate shutdown (same as --grace-period=1).' +complete -c kubectl -f -n '__fish_seen_subcommand_from delete' -r -s o -l output -d 'Output mode. Use "-o name" for shorter output (resource/name).' +complete -c kubectl -f -n '__fish_seen_subcommand_from delete' -r -l raw -d 'Raw URI to DELETE to the server. Uses the transport specified by the kubeconfig file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from delete' -s R -l recursive -d 'Process the directory used in -f, --filename recursively. Useful when you want to manage related manifests organized within the same directory.' +complete -c kubectl -f -n '__fish_seen_subcommand_from delete' -r -s l -l selector -d 'Selector (label query) to filter on, not including uninitialized ones.' +complete -c kubectl -f -n '__fish_seen_subcommand_from delete' -r -l timeout -d 'The length of time to wait before giving up on a delete, zero means determine a timeout from the size of the object' +complete -c kubectl -f -n '__fish_seen_subcommand_from delete' -l wait -d 'If true, wait for resources to be gone before returning. This waits for finalizers.' + +# Completions for the "kubectl describe" command +complete -c kubectl -f -n '__fish_seen_subcommand_from describe' -s A -l all-namespaces -d 'If present, list the requested object(s) across all namespaces. Namespace in current context is ignored even if specified with --namespace.' +complete -c kubectl -n '__fish_seen_subcommand_from describe' -r -s f -l filename -d 'Filename, directory, or URL to files containing the resource to describe' +complete -c kubectl -f -n '__fish_seen_subcommand_from describe' -r -s k -l kustomize -d 'Process the kustomization directory. This flag can\'t be used together with -f or -R.' +complete -c kubectl -f -n '__fish_seen_subcommand_from describe' -s R -l recursive -d 'Process the directory used in -f, --filename recursively. Useful when you want to manage related manifests organized within the same directory.' +complete -c kubectl -f -n '__fish_seen_subcommand_from describe' -r -s l -l selector -d 'Selector (label query) to filter on, supports \'=\', \'==\', and \'!=\'.(e.g. -l key1=value1,key2=value2)' +complete -c kubectl -f -n '__fish_seen_subcommand_from describe' -l show-events -d 'If true, display events related to the described object.' + +# Completions for the "kubectl diff" command +complete -c kubectl -f -n '__fish_seen_subcommand_from diff' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -n '__fish_seen_subcommand_from diff' -r -s f -l filename -d 'Filename, directory, or URL to files contains the configuration to diff' +complete -c kubectl -f -n '__fish_seen_subcommand_from diff' -l force-conflicts -d 'If true, server-side apply will force the changes against conflicts.' +complete -c kubectl -f -n '__fish_seen_subcommand_from diff' -r -s k -l kustomize -d 'Process the kustomization directory. This flag can\'t be used together with -f or -R.' +complete -c kubectl -f -n '__fish_seen_subcommand_from diff' -s R -l recursive -d 'Process the directory used in -f, --filename recursively. Useful when you want to manage related manifests organized within the same directory.' +complete -c kubectl -f -n '__fish_seen_subcommand_from diff' -r -s l -l selector -d 'Selector (label query) to filter on, supports \'=\', \'==\', and \'!=\'.(e.g. -l key1=value1,key2=value2)' +complete -c kubectl -f -n '__fish_seen_subcommand_from diff' -l server-side -d 'If true, apply runs in the server instead of the client.' + +# Completions for the "kubectl drain" command +complete -c kubectl -f -n '__fish_seen_subcommand_from drain' -l delete-emptydir-data -d 'Continue even if there are pods using emptyDir (local data that will be deleted when the node is drained).' +complete -c kubectl -f -n '__fish_seen_subcommand_from drain' -l disable-eviction -d 'Force drain to use delete, even if eviction is supported. This will bypass checking PodDisruptionBudgets, use with caution.' +complete -c kubectl -f -n '__fish_seen_subcommand_from drain' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from drain' -l force -d 'Continue even if there are pods not managed by a ReplicationController, ReplicaSet, Job, DaemonSet or StatefulSet.' +complete -c kubectl -f -n '__fish_seen_subcommand_from drain' -r -l grace-period -d 'Period of time in seconds given to each pod to terminate gracefully. If negative, the default value specified in the pod will be used.' +complete -c kubectl -f -n '__fish_seen_subcommand_from drain' -l ignore-daemonsets -d 'Ignore DaemonSet-managed pods.' +complete -c kubectl -f -n '__fish_seen_subcommand_from drain' -r -l pod-selector -d 'Label selector to filter pods on the node' +complete -c kubectl -f -n '__fish_seen_subcommand_from drain' -r -s l -l selector -d 'Selector (label query) to filter on' +complete -c kubectl -f -n '__fish_seen_subcommand_from drain' -r -l skip-wait-for-delete-timeout -d 'If pod DeletionTimestamp older than N seconds, skip waiting for the pod. Seconds must be greater than 0 to skip.' +complete -c kubectl -f -n '__fish_seen_subcommand_from drain' -r -l timeout -d 'The length of time to wait before giving up, zero means infinite' + +# Completions for the "kubectl edit" command +complete -c kubectl -f -n '__fish_seen_subcommand_from edit' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from edit' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -n '__fish_seen_subcommand_from edit' -r -s f -l filename -d 'Filename, directory, or URL to files to use to edit the resource' +complete -c kubectl -f -n '__fish_seen_subcommand_from edit' -r -s k -l kustomize -d 'Process the kustomization directory. This flag can\'t be used together with -f or -R.' +complete -c kubectl -f -n '__fish_seen_subcommand_from edit' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from edit' -l output-patch -d 'Output the patch if the resource is edited.' +complete -c kubectl -f -n '__fish_seen_subcommand_from edit' -l record -d 'Record current kubectl command in the resource annotation. If set to false, do not record the command. If set to true, record the command. If not set, default to updating the existing annotation value only if one already exists.' +complete -c kubectl -f -n '__fish_seen_subcommand_from edit' -s R -l recursive -d 'Process the directory used in -f, --filename recursively. Useful when you want to manage related manifests organized within the same directory.' +complete -c kubectl -f -n '__fish_seen_subcommand_from edit' -l save-config -d 'If true, the configuration of current object will be saved in its annotation. Otherwise, the annotation will be unchanged. This flag is useful when you want to perform kubectl apply on this object in the future.' +complete -c kubectl -n '__fish_seen_subcommand_from edit' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -f -n '__fish_seen_subcommand_from edit' -l validate -d 'If true, use a schema to validate the input before sending it' +complete -c kubectl -f -n '__fish_seen_subcommand_from edit' -l windows-line-endings -d 'Defaults to the line ending native to your platform.' + +# Completions for the "kubectl exec" command +complete -c kubectl -f -n '__fish_seen_subcommand_from exec' -r -s c -l container -d 'Container name. If omitted, the first container in the pod will be chosen' +complete -c kubectl -n '__fish_seen_subcommand_from exec' -r -s f -l filename -d 'to use to exec into the resource' +complete -c kubectl -f -n '__fish_seen_subcommand_from exec' -r -l pod-running-timeout -d 'The length of time (like 5s, 2m, or 3h, higher than zero) to wait until at least one pod is running' +complete -c kubectl -f -n '__fish_seen_subcommand_from exec' -s i -l stdin -d 'Pass stdin to the container' +complete -c kubectl -f -n '__fish_seen_subcommand_from exec' -s t -l tty -d 'Stdin is a TTY' + +# Completions for the "kubectl explain" command +complete -c kubectl -f -n '__fish_seen_subcommand_from explain' -r -l api-version -d 'Get different explanations for particular API version (API group/version)' +complete -c kubectl -f -n '__fish_seen_subcommand_from explain' -l recursive -d 'Print the fields of fields (Currently only 1 level deep)' + +# Completions for the "kubectl expose" command +complete -c kubectl -f -n '__fish_seen_subcommand_from expose' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from expose' -r -l cluster-ip -d 'ClusterIP to be assigned to the service. Leave empty to auto-allocate, or set to \'None\' to create a headless service.' +complete -c kubectl -f -n '__fish_seen_subcommand_from expose' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from expose' -r -l external-ip -d 'Additional external IP address (not managed by Kubernetes) to accept for the service. If this IP is routed to a node, the service can be accessed by this IP in addition to its generated service IP.' +complete -c kubectl -f -n '__fish_seen_subcommand_from expose' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -n '__fish_seen_subcommand_from expose' -r -s f -l filename -d 'Filename, directory, or URL to files identifying the resource to expose a service' +complete -c kubectl -f -n '__fish_seen_subcommand_from expose' -r -l generator -d 'The name of the API generator to use. There are 2 generators: \'service/v1\' and \'service/v2\'. The only difference between them is that service port in v1 is named \'default\', while it is left unnamed in v2. Default is \'service/v2\'.' +complete -c kubectl -f -n '__fish_seen_subcommand_from expose' -r -s k -l kustomize -d 'Process the kustomization directory. This flag can\'t be used together with -f or -R.' +complete -c kubectl -f -n '__fish_seen_subcommand_from expose' -r -s l -l labels -d 'Labels to apply to the service created by this call.' +complete -c kubectl -f -n '__fish_seen_subcommand_from expose' -r -l load-balancer-ip -d 'IP to assign to the LoadBalancer. If empty, an ephemeral IP will be created and used (cloud-provider specific).' +complete -c kubectl -f -n '__fish_seen_subcommand_from expose' -r -l name -d 'The name for the newly created object.' +complete -c kubectl -f -n '__fish_seen_subcommand_from expose' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from expose' -r -l overrides -d 'An inline JSON override for the generated object. If this is non-empty, it is used to override the generated object. Requires that the object supply a valid apiVersion field.' +complete -c kubectl -f -n '__fish_seen_subcommand_from expose' -r -l port -d 'The port that the service should serve on. Copied from the resource being exposed, if unspecified' +complete -c kubectl -f -n '__fish_seen_subcommand_from expose' -r -l protocol -d 'The network protocol for the service to be created. Default is \'TCP\'.' +complete -c kubectl -f -n '__fish_seen_subcommand_from expose' -l record -d 'Record current kubectl command in the resource annotation. If set to false, do not record the command. If set to true, record the command. If not set, default to updating the existing annotation value only if one already exists.' +complete -c kubectl -f -n '__fish_seen_subcommand_from expose' -s R -l recursive -d 'Process the directory used in -f, --filename recursively. Useful when you want to manage related manifests organized within the same directory.' +complete -c kubectl -f -n '__fish_seen_subcommand_from expose' -l save-config -d 'If true, the configuration of current object will be saved in its annotation. Otherwise, the annotation will be unchanged. This flag is useful when you want to perform kubectl apply on this object in the future.' +complete -c kubectl -f -n '__fish_seen_subcommand_from expose' -r -l selector -d 'A label selector to use for this service. Only equality-based selector requirements are supported. If empty (the default) infer the selector from the replication controller or replica set.)' +complete -c kubectl -f -n '__fish_seen_subcommand_from expose' -r -l session-affinity -d 'If non-empty, set the session affinity for the service to this; legal values: \'None\', \'ClientIP\'' +complete -c kubectl -f -n '__fish_seen_subcommand_from expose' -r -l target-port -d 'Name or number for the port on the container that the service should direct traffic to. Optional.' +complete -c kubectl -n '__fish_seen_subcommand_from expose' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -f -n '__fish_seen_subcommand_from expose' -r -l type -d 'Type for this service: ClusterIP, NodePort, LoadBalancer, or ExternalName. Default is \'ClusterIP\'.' + +# Completions for the "kubectl get" command +complete -c kubectl -f -n '__fish_seen_subcommand_from get' -s A -l all-namespaces -d 'If present, list the requested object(s) across all namespaces. Namespace in current context is ignored even if specified with --namespace.' +complete -c kubectl -f -n '__fish_seen_subcommand_from get' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from get' -r -l chunk-size -d 'Return large lists in chunks rather than all at once. Pass 0 to disable. This flag is beta and may change in the future.' +complete -c kubectl -f -n '__fish_seen_subcommand_from get' -r -l field-selector -d 'Selector (field query) to filter on, supports \'=\', \'==\', and \'!=\'.(e.g. --field-selector key1=value1,key2=value2). The server only supports a limited number of field queries per type.' +complete -c kubectl -n '__fish_seen_subcommand_from get' -r -s f -l filename -d 'Filename, directory, or URL to files identifying the resource to get from a server.' +complete -c kubectl -f -n '__fish_seen_subcommand_from get' -l ignore-not-found -d 'If the requested object does not exist the command will return exit code 0.' +complete -c kubectl -f -n '__fish_seen_subcommand_from get' -r -s k -l kustomize -d 'Process the kustomization directory. This flag can\'t be used together with -f or -R.' +complete -c kubectl -f -n '__fish_seen_subcommand_from get' -r -s L -l label-columns -d 'Accepts a comma separated list of labels that are going to be presented as columns. Names are case-sensitive. You can also use multiple flag options like -L label1 -L label2...' +complete -c kubectl -f -n '__fish_seen_subcommand_from get' -l no-headers -d 'When using the default or custom-column output format, don\'t print headers (default print headers).' +complete -c kubectl -f -n '__fish_seen_subcommand_from get' -r -s o -l output -d 'Output format. One of: json|yaml|wide|name|custom-columns=...|custom-columns-file=...|go-template=...|go-template-file=...|jsonpath=...|jsonpath-file=... See custom columns [http://kubernetes.io/docs/user-guide/kubectl-overview/#custom-columns], golang template [http://golang.org/pkg/text/template/#pkg-overview] and jsonpath template [http://kubernetes.io/docs/user-guide/jsonpath].' +complete -c kubectl -f -n '__fish_seen_subcommand_from get' -l output-watch-events -d 'Output watch event objects when --watch or --watch-only is used. Existing objects are output as initial ADDED events.' +complete -c kubectl -f -n '__fish_seen_subcommand_from get' -r -l raw -d 'Raw URI to request from the server. Uses the transport specified by the kubeconfig file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from get' -s R -l recursive -d 'Process the directory used in -f, --filename recursively. Useful when you want to manage related manifests organized within the same directory.' +complete -c kubectl -f -n '__fish_seen_subcommand_from get' -r -s l -l selector -d 'Selector (label query) to filter on, supports \'=\', \'==\', and \'!=\'.(e.g. -l key1=value1,key2=value2)' +complete -c kubectl -f -n '__fish_seen_subcommand_from get' -l server-print -d 'If true, have the server return the appropriate table output. Supports extension APIs and CRDs.' +complete -c kubectl -f -n '__fish_seen_subcommand_from get' -l show-kind -d 'If present, list the resource type for the requested object(s).' +complete -c kubectl -f -n '__fish_seen_subcommand_from get' -l show-labels -d 'When printing, show all labels as the last column (default hide labels column)' +complete -c kubectl -f -n '__fish_seen_subcommand_from get' -r -l sort-by -d 'If non-empty, sort list types using this field specification. The field specification is expressed as a JSONPath expression (e.g. \'{.metadata.name}\'). The field in the API resource specified by this JSONPath expression must be an integer or a string.' +complete -c kubectl -n '__fish_seen_subcommand_from get' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -f -n '__fish_seen_subcommand_from get' -s w -l watch -d 'After listing/getting the requested object, watch for changes. Uninitialized objects are excluded if no object name is provided.' +complete -c kubectl -f -n '__fish_seen_subcommand_from get' -l watch-only -d 'Watch for changes to the requested object(s), without listing/getting first.' + +# Completions for the "kubectl label" command +complete -c kubectl -f -n '__fish_seen_subcommand_from label' -l all -d 'Select all resources, including uninitialized ones, in the namespace of the specified resource types' +complete -c kubectl -f -n '__fish_seen_subcommand_from label' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from label' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from label' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -f -n '__fish_seen_subcommand_from label' -r -l field-selector -d 'Selector (field query) to filter on, supports \'=\', \'==\', and \'!=\'.(e.g. --field-selector key1=value1,key2=value2). The server only supports a limited number of field queries per type.' +complete -c kubectl -n '__fish_seen_subcommand_from label' -r -s f -l filename -d 'Filename, directory, or URL to files identifying the resource to update the labels' +complete -c kubectl -f -n '__fish_seen_subcommand_from label' -r -s k -l kustomize -d 'Process the kustomization directory. This flag can\'t be used together with -f or -R.' +complete -c kubectl -f -n '__fish_seen_subcommand_from label' -l list -d 'If true, display the labels for a given resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from label' -l local -d 'If true, label will NOT contact api-server but run locally.' +complete -c kubectl -f -n '__fish_seen_subcommand_from label' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from label' -l overwrite -d 'If true, allow labels to be overwritten, otherwise reject label updates that overwrite existing labels.' +complete -c kubectl -f -n '__fish_seen_subcommand_from label' -l record -d 'Record current kubectl command in the resource annotation. If set to false, do not record the command. If set to true, record the command. If not set, default to updating the existing annotation value only if one already exists.' +complete -c kubectl -f -n '__fish_seen_subcommand_from label' -s R -l recursive -d 'Process the directory used in -f, --filename recursively. Useful when you want to manage related manifests organized within the same directory.' +complete -c kubectl -f -n '__fish_seen_subcommand_from label' -r -l resource-version -d 'If non-empty, the labels update will only succeed if this is the current resource-version for the object. Only valid when specifying a single resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from label' -r -s l -l selector -d 'Selector (label query) to filter on, not including uninitialized ones, supports \'=\', \'==\', and \'!=\'.(e.g. -l key1=value1,key2=value2).' +complete -c kubectl -n '__fish_seen_subcommand_from label' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' + +# Completions for the "kubectl logs" command +complete -c kubectl -f -n '__fish_seen_subcommand_from logs' -l all-containers -d 'Get all containers\' logs in the pod(s).' +complete -c kubectl -f -n '__fish_seen_subcommand_from logs' -r -s c -l container -d 'Print the logs of this container' +complete -c kubectl -f -n '__fish_seen_subcommand_from logs' -s f -l follow -d 'Specify if the logs should be streamed.' +complete -c kubectl -f -n '__fish_seen_subcommand_from logs' -l ignore-errors -d 'If watching / following pod logs, allow for any errors that occur to be non-fatal' +complete -c kubectl -f -n '__fish_seen_subcommand_from logs' -l insecure-skip-tls-verify-backend -d 'Skip verifying the identity of the kubelet that logs are requested from. In theory, an attacker could provide invalid log content back. You might want to use this if your kubelet serving certificates have expired.' +complete -c kubectl -f -n '__fish_seen_subcommand_from logs' -r -l limit-bytes -d 'Maximum bytes of logs to return. Defaults to no limit.' +complete -c kubectl -f -n '__fish_seen_subcommand_from logs' -r -l max-log-requests -d 'Specify maximum number of concurrent logs to follow when using by a selector. Defaults to 5.' +complete -c kubectl -f -n '__fish_seen_subcommand_from logs' -r -l pod-running-timeout -d 'The length of time (like 5s, 2m, or 3h, higher than zero) to wait until at least one pod is running' +complete -c kubectl -f -n '__fish_seen_subcommand_from logs' -l prefix -d 'Prefix each log line with the log source (pod name and container name)' +complete -c kubectl -f -n '__fish_seen_subcommand_from logs' -s p -l previous -d 'If true, print the logs for the previous instance of the container in a pod if it exists.' +complete -c kubectl -f -n '__fish_seen_subcommand_from logs' -r -s l -l selector -d 'Selector (label query) to filter on.' +complete -c kubectl -f -n '__fish_seen_subcommand_from logs' -r -l since -d 'Only return logs newer than a relative duration like 5s, 2m, or 3h. Defaults to all logs. Only one of since-time / since may be used.' +complete -c kubectl -f -n '__fish_seen_subcommand_from logs' -r -l since-time -d 'Only return logs after a specific date (RFC3339). Defaults to all logs. Only one of since-time / since may be used.' +complete -c kubectl -f -n '__fish_seen_subcommand_from logs' -r -l tail -d 'Lines of recent log file to display. Defaults to -1 with no selector, showing all log lines otherwise 10, if a selector is provided.' +complete -c kubectl -f -n '__fish_seen_subcommand_from logs' -l timestamps -d 'Include timestamps on each line in the log output' + +# Completions for the "kubectl patch" command +complete -c kubectl -f -n '__fish_seen_subcommand_from patch' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from patch' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from patch' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -n '__fish_seen_subcommand_from patch' -r -s f -l filename -d 'Filename, directory, or URL to files identifying the resource to update' +complete -c kubectl -f -n '__fish_seen_subcommand_from patch' -r -s k -l kustomize -d 'Process the kustomization directory. This flag can\'t be used together with -f or -R.' +complete -c kubectl -f -n '__fish_seen_subcommand_from patch' -l local -d 'If true, patch will operate on the content of the file, not the server-side resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from patch' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from patch' -r -s p -l patch -d 'The patch to be applied to the resource JSON file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from patch' -r -l patch-file -d 'A file containing a patch to be applied to the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from patch' -l record -d 'Record current kubectl command in the resource annotation. If set to false, do not record the command. If set to true, record the command. If not set, default to updating the existing annotation value only if one already exists.' +complete -c kubectl -f -n '__fish_seen_subcommand_from patch' -s R -l recursive -d 'Process the directory used in -f, --filename recursively. Useful when you want to manage related manifests organized within the same directory.' +complete -c kubectl -n '__fish_seen_subcommand_from patch' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -f -n '__fish_seen_subcommand_from patch' -r -l type -d 'The type of patch being provided; one of [json merge strategic]' + +# Completions for the "kubectl plugin" command +function __fish_kubectl_get_plugin_commands + echo list\t'list all visible plugin executables on a user\'s PATH' +end + +function __fish_kubectl_get_plugin_commands_without_descriptions + __fish_kubectl_get_plugin_commands | string replace -r '\t.*$' '' +end + +complete -c kubectl -f -n "__fish_kubectl_using_command plugin; and not __fish_seen_subcommand_from (__fish_kubectl_get_plugin_commands_without_descriptions)" -a '(__fish_kubectl_get_plugin_commands)' + +# Completions for the "kubectl plugin list" command +complete -c kubectl -f -n '__fish_seen_subcommand_from plugin list' -l name-only -d 'If true, display only the binary name of each plugin, rather than its full path' + +# Completions for the "kubectl port-forward" command +complete -c kubectl -f -n '__fish_seen_subcommand_from port-forward' -r -l address -d 'Addresses to listen on (comma separated). Only accepts IP addresses or localhost as a value. When localhost is supplied, kubectl will try to bind on both 127.0.0.1 and ::1 and will fail if neither of these addresses are available to bind.' +complete -c kubectl -f -n '__fish_seen_subcommand_from port-forward' -r -l pod-running-timeout -d 'The length of time (like 5s, 2m, or 3h, higher than zero) to wait until at least one pod is running' + +# Completions for the "kubectl proxy" command +complete -c kubectl -f -n '__fish_seen_subcommand_from proxy' -r -l accept-hosts -d 'Regular expression for hosts that the proxy should accept.' +complete -c kubectl -f -n '__fish_seen_subcommand_from proxy' -r -l accept-paths -d 'Regular expression for paths that the proxy should accept.' +complete -c kubectl -f -n '__fish_seen_subcommand_from proxy' -r -l address -d 'The IP address on which to serve on.' +complete -c kubectl -f -n '__fish_seen_subcommand_from proxy' -r -l api-prefix -d 'Prefix to serve the proxied API under.' +complete -c kubectl -f -n '__fish_seen_subcommand_from proxy' -l disable-filter -d 'If true, disable request filtering in the proxy. This is dangerous, and can leave you vulnerable to XSRF attacks, when used with an accessible port.' +complete -c kubectl -f -n '__fish_seen_subcommand_from proxy' -r -l keepalive -d 'keepalive specifies the keep-alive period for an active network connection. Set to 0 to disable keepalive.' +complete -c kubectl -f -n '__fish_seen_subcommand_from proxy' -r -s p -l port -d 'The port on which to run the proxy. Set to 0 to pick a random port.' +complete -c kubectl -f -n '__fish_seen_subcommand_from proxy' -r -l reject-methods -d 'Regular expression for HTTP methods that the proxy should reject (example --reject-methods=\'POST,PUT,PATCH\'). ' +complete -c kubectl -f -n '__fish_seen_subcommand_from proxy' -r -l reject-paths -d 'Regular expression for paths that the proxy should reject. Paths specified here will be rejected even accepted by --accept-paths.' +complete -c kubectl -f -n '__fish_seen_subcommand_from proxy' -r -s u -l unix-socket -d 'Unix socket on which to run the proxy.' +complete -c kubectl -f -n '__fish_seen_subcommand_from proxy' -r -s w -l www -d 'Also serve static files from the given directory under the specified prefix.' +complete -c kubectl -f -n '__fish_seen_subcommand_from proxy' -r -s P -l www-prefix -d 'Prefix to serve static files under, if static file directory is specified.' + +# Completions for the "kubectl replace" command +complete -c kubectl -f -n '__fish_seen_subcommand_from replace' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from replace' -r -l cascade -d 'Must be "background", "orphan", or "foreground". Selects the deletion cascading strategy for the dependents (e.g. Pods created by a ReplicationController). Defaults to background.' +complete -c kubectl -f -n '__fish_seen_subcommand_from replace' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from replace' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -n '__fish_seen_subcommand_from replace' -r -s f -l filename -d 'to use to replace the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from replace' -l force -d 'If true, immediately remove resources from API and bypass graceful deletion. Note that immediate deletion of some resources may result in inconsistency or data loss and requires confirmation.' +complete -c kubectl -f -n '__fish_seen_subcommand_from replace' -r -l grace-period -d 'Period of time in seconds given to the resource to terminate gracefully. Ignored if negative. Set to 1 for immediate shutdown. Can only be set to 0 when --force is true (force deletion).' +complete -c kubectl -f -n '__fish_seen_subcommand_from replace' -r -s k -l kustomize -d 'Process a kustomization directory. This flag can\'t be used together with -f or -R.' +complete -c kubectl -f -n '__fish_seen_subcommand_from replace' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from replace' -r -l raw -d 'Raw URI to PUT to the server. Uses the transport specified by the kubeconfig file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from replace' -s R -l recursive -d 'Process the directory used in -f, --filename recursively. Useful when you want to manage related manifests organized within the same directory.' +complete -c kubectl -f -n '__fish_seen_subcommand_from replace' -l save-config -d 'If true, the configuration of current object will be saved in its annotation. Otherwise, the annotation will be unchanged. This flag is useful when you want to perform kubectl apply on this object in the future.' +complete -c kubectl -n '__fish_seen_subcommand_from replace' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -f -n '__fish_seen_subcommand_from replace' -r -l timeout -d 'The length of time to wait before giving up on a delete, zero means determine a timeout from the size of the object' +complete -c kubectl -f -n '__fish_seen_subcommand_from replace' -l validate -d 'If true, use a schema to validate the input before sending it' +complete -c kubectl -f -n '__fish_seen_subcommand_from replace' -l wait -d 'If true, wait for resources to be gone before returning. This waits for finalizers.' + +# Completions for the "kubectl rollout" command +function __fish_kubectl_get_rollout_commands + echo history\t'View rollout history' + echo pause\t'Mark the provided resource as paused' + echo restart\t'Restart a resource' + echo resume\t'Resume a paused resource' + echo status\t'Show the status of the rollout' + echo undo\t'Undo a previous rollout' +end + +function __fish_kubectl_get_rollout_commands_without_descriptions + __fish_kubectl_get_rollout_commands | string replace -r '\t.*$' '' +end + +complete -c kubectl -f -n "__fish_kubectl_using_command rollout; and not __fish_seen_subcommand_from (__fish_kubectl_get_rollout_commands_without_descriptions)" -a '(__fish_kubectl_get_rollout_commands)' + +# Completions for the "kubectl rollout history" command +complete -c kubectl -f -n '__fish_seen_subcommand_from rollout history' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -n '__fish_seen_subcommand_from rollout history' -r -s f -l filename -d 'Filename, directory, or URL to files identifying the resource to get from a server.' +complete -c kubectl -f -n '__fish_seen_subcommand_from rollout history' -r -s k -l kustomize -d 'Process the kustomization directory. This flag can\'t be used together with -f or -R.' +complete -c kubectl -f -n '__fish_seen_subcommand_from rollout history' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from rollout history' -s R -l recursive -d 'Process the directory used in -f, --filename recursively. Useful when you want to manage related manifests organized within the same directory.' +complete -c kubectl -f -n '__fish_seen_subcommand_from rollout history' -r -l revision -d 'See the details, including podTemplate of the revision specified' +complete -c kubectl -n '__fish_seen_subcommand_from rollout history' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' + +# Completions for the "kubectl rollout pause" command +complete -c kubectl -f -n '__fish_seen_subcommand_from rollout pause' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from rollout pause' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -n '__fish_seen_subcommand_from rollout pause' -r -s f -l filename -d 'Filename, directory, or URL to files identifying the resource to get from a server.' +complete -c kubectl -f -n '__fish_seen_subcommand_from rollout pause' -r -s k -l kustomize -d 'Process the kustomization directory. This flag can\'t be used together with -f or -R.' +complete -c kubectl -f -n '__fish_seen_subcommand_from rollout pause' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from rollout pause' -s R -l recursive -d 'Process the directory used in -f, --filename recursively. Useful when you want to manage related manifests organized within the same directory.' +complete -c kubectl -n '__fish_seen_subcommand_from rollout pause' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' + +# Completions for the "kubectl rollout restart" command +complete -c kubectl -f -n '__fish_seen_subcommand_from rollout restart' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from rollout restart' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -n '__fish_seen_subcommand_from rollout restart' -r -s f -l filename -d 'Filename, directory, or URL to files identifying the resource to get from a server.' +complete -c kubectl -f -n '__fish_seen_subcommand_from rollout restart' -r -s k -l kustomize -d 'Process the kustomization directory. This flag can\'t be used together with -f or -R.' +complete -c kubectl -f -n '__fish_seen_subcommand_from rollout restart' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from rollout restart' -s R -l recursive -d 'Process the directory used in -f, --filename recursively. Useful when you want to manage related manifests organized within the same directory.' +complete -c kubectl -n '__fish_seen_subcommand_from rollout restart' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' + +# Completions for the "kubectl rollout resume" command +complete -c kubectl -f -n '__fish_seen_subcommand_from rollout resume' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from rollout resume' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -n '__fish_seen_subcommand_from rollout resume' -r -s f -l filename -d 'Filename, directory, or URL to files identifying the resource to get from a server.' +complete -c kubectl -f -n '__fish_seen_subcommand_from rollout resume' -r -s k -l kustomize -d 'Process the kustomization directory. This flag can\'t be used together with -f or -R.' +complete -c kubectl -f -n '__fish_seen_subcommand_from rollout resume' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from rollout resume' -s R -l recursive -d 'Process the directory used in -f, --filename recursively. Useful when you want to manage related manifests organized within the same directory.' +complete -c kubectl -n '__fish_seen_subcommand_from rollout resume' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' + +# Completions for the "kubectl rollout status" command +complete -c kubectl -n '__fish_seen_subcommand_from rollout status' -r -s f -l filename -d 'Filename, directory, or URL to files identifying the resource to get from a server.' +complete -c kubectl -f -n '__fish_seen_subcommand_from rollout status' -r -s k -l kustomize -d 'Process the kustomization directory. This flag can\'t be used together with -f or -R.' +complete -c kubectl -f -n '__fish_seen_subcommand_from rollout status' -s R -l recursive -d 'Process the directory used in -f, --filename recursively. Useful when you want to manage related manifests organized within the same directory.' +complete -c kubectl -f -n '__fish_seen_subcommand_from rollout status' -r -l revision -d 'Pin to a specific revision for showing its status. Defaults to 0 (last revision).' +complete -c kubectl -f -n '__fish_seen_subcommand_from rollout status' -r -l timeout -d 'The length of time to wait before ending watch, zero means never. Any other values should contain a corresponding time unit (e.g. 1s, 2m, 3h).' +complete -c kubectl -f -n '__fish_seen_subcommand_from rollout status' -s w -l watch -d 'Watch the status of the rollout until it\'s done.' + +# Completions for the "kubectl rollout undo" command +complete -c kubectl -f -n '__fish_seen_subcommand_from rollout undo' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from rollout undo' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -n '__fish_seen_subcommand_from rollout undo' -r -s f -l filename -d 'Filename, directory, or URL to files identifying the resource to get from a server.' +complete -c kubectl -f -n '__fish_seen_subcommand_from rollout undo' -r -s k -l kustomize -d 'Process the kustomization directory. This flag can\'t be used together with -f or -R.' +complete -c kubectl -f -n '__fish_seen_subcommand_from rollout undo' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from rollout undo' -s R -l recursive -d 'Process the directory used in -f, --filename recursively. Useful when you want to manage related manifests organized within the same directory.' +complete -c kubectl -n '__fish_seen_subcommand_from rollout undo' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -f -n '__fish_seen_subcommand_from rollout undo' -r -l to-revision -d 'The revision to rollback to. Default to 0 (last revision).' + +# Completions for the "kubectl run" command +complete -c kubectl -f -n '__fish_seen_subcommand_from run' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from run' -r -l annotations -d 'Annotations to apply to the pod.' +complete -c kubectl -f -n '__fish_seen_subcommand_from run' -l attach -d 'If true, wait for the Pod to start running, and then attach to the Pod as if \'kubectl attach ...\' were called. Default false, unless \'-i/--stdin\' is set, in which case the default is true. With \'--restart=Never\' the exit code of the container process is returned.' +complete -c kubectl -f -n '__fish_seen_subcommand_from run' -r -l cascade -d 'Must be "background", "orphan", or "foreground". Selects the deletion cascading strategy for the dependents (e.g. Pods created by a ReplicationController). Defaults to background.' +complete -c kubectl -f -n '__fish_seen_subcommand_from run' -l command -d 'If true and extra arguments are present, use them as the \'command\' field in the container, rather than the \'args\' field which is the default.' +complete -c kubectl -f -n '__fish_seen_subcommand_from run' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from run' -r -l env -d 'Environment variables to set in the container.' +complete -c kubectl -f -n '__fish_seen_subcommand_from run' -l expose -d 'If true, service is created for the container(s) which are run' +complete -c kubectl -f -n '__fish_seen_subcommand_from run' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -n '__fish_seen_subcommand_from run' -r -s f -l filename -d 'to use to replace the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from run' -l force -d 'If true, immediately remove resources from API and bypass graceful deletion. Note that immediate deletion of some resources may result in inconsistency or data loss and requires confirmation.' +complete -c kubectl -f -n '__fish_seen_subcommand_from run' -r -l grace-period -d 'Period of time in seconds given to the resource to terminate gracefully. Ignored if negative. Set to 1 for immediate shutdown. Can only be set to 0 when --force is true (force deletion).' +complete -c kubectl -f -n '__fish_seen_subcommand_from run' -r -l hostport -d 'The host port mapping for the container port. To demonstrate a single-machine container.' +complete -c kubectl -f -n '__fish_seen_subcommand_from run' -r -l image -d 'The image for the container to run.' +complete -c kubectl -f -n '__fish_seen_subcommand_from run' -r -l image-pull-policy -d 'The image pull policy for the container. If left empty, this value will not be specified by the client and defaulted by the server' +complete -c kubectl -f -n '__fish_seen_subcommand_from run' -r -s k -l kustomize -d 'Process a kustomization directory. This flag can\'t be used together with -f or -R.' +complete -c kubectl -f -n '__fish_seen_subcommand_from run' -r -s l -l labels -d 'Comma separated labels to apply to the pod(s). Will override previous values.' +complete -c kubectl -f -n '__fish_seen_subcommand_from run' -l leave-stdin-open -d 'If the pod is started in interactive mode or with stdin, leave stdin open after the first attach completes. By default, stdin will be closed after the first attach completes.' +complete -c kubectl -f -n '__fish_seen_subcommand_from run' -r -l limits -d 'The resource requirement limits for this container. For example, \'cpu=200m,memory=512Mi\'. Note that server side components may assign limits depending on the server configuration, such as limit ranges.' +complete -c kubectl -f -n '__fish_seen_subcommand_from run' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from run' -r -l overrides -d 'An inline JSON override for the generated object. If this is non-empty, it is used to override the generated object. Requires that the object supply a valid apiVersion field.' +complete -c kubectl -f -n '__fish_seen_subcommand_from run' -r -l pod-running-timeout -d 'The length of time (like 5s, 2m, or 3h, higher than zero) to wait until at least one pod is running' +complete -c kubectl -f -n '__fish_seen_subcommand_from run' -r -l port -d 'The port that this container exposes.' +complete -c kubectl -f -n '__fish_seen_subcommand_from run' -l privileged -d 'If true, run the container in privileged mode.' +complete -c kubectl -f -n '__fish_seen_subcommand_from run' -l quiet -d 'If true, suppress prompt messages.' +complete -c kubectl -f -n '__fish_seen_subcommand_from run' -l record -d 'Record current kubectl command in the resource annotation. If set to false, do not record the command. If set to true, record the command. If not set, default to updating the existing annotation value only if one already exists.' +complete -c kubectl -f -n '__fish_seen_subcommand_from run' -s R -l recursive -d 'Process the directory used in -f, --filename recursively. Useful when you want to manage related manifests organized within the same directory.' +complete -c kubectl -f -n '__fish_seen_subcommand_from run' -r -l requests -d 'The resource requirement requests for this container. For example, \'cpu=100m,memory=256Mi\'. Note that server side components may assign requests depending on the server configuration, such as limit ranges.' +complete -c kubectl -f -n '__fish_seen_subcommand_from run' -r -l restart -d 'The restart policy for this Pod. Legal values [Always, OnFailure, Never].' +complete -c kubectl -f -n '__fish_seen_subcommand_from run' -l rm -d 'If true, delete resources created in this command for attached containers.' +complete -c kubectl -f -n '__fish_seen_subcommand_from run' -l save-config -d 'If true, the configuration of current object will be saved in its annotation. Otherwise, the annotation will be unchanged. This flag is useful when you want to perform kubectl apply on this object in the future.' +complete -c kubectl -f -n '__fish_seen_subcommand_from run' -r -l serviceaccount -d 'Service account to set in the pod spec.' +complete -c kubectl -f -n '__fish_seen_subcommand_from run' -s i -l stdin -d 'Keep stdin open on the container(s) in the pod, even if nothing is attached.' +complete -c kubectl -n '__fish_seen_subcommand_from run' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -f -n '__fish_seen_subcommand_from run' -r -l timeout -d 'The length of time to wait before giving up on a delete, zero means determine a timeout from the size of the object' +complete -c kubectl -f -n '__fish_seen_subcommand_from run' -s t -l tty -d 'Allocated a TTY for each container in the pod.' +complete -c kubectl -f -n '__fish_seen_subcommand_from run' -l wait -d 'If true, wait for resources to be gone before returning. This waits for finalizers.' + +# Completions for the "kubectl scale" command +complete -c kubectl -f -n '__fish_seen_subcommand_from scale' -l all -d 'Select all resources in the namespace of the specified resource types' +complete -c kubectl -f -n '__fish_seen_subcommand_from scale' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from scale' -r -l current-replicas -d 'Precondition for current size. Requires that the current size of the resource match this value in order to scale.' +complete -c kubectl -f -n '__fish_seen_subcommand_from scale' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -n '__fish_seen_subcommand_from scale' -r -s f -l filename -d 'Filename, directory, or URL to files identifying the resource to set a new size' +complete -c kubectl -f -n '__fish_seen_subcommand_from scale' -r -s k -l kustomize -d 'Process the kustomization directory. This flag can\'t be used together with -f or -R.' +complete -c kubectl -f -n '__fish_seen_subcommand_from scale' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from scale' -l record -d 'Record current kubectl command in the resource annotation. If set to false, do not record the command. If set to true, record the command. If not set, default to updating the existing annotation value only if one already exists.' +complete -c kubectl -f -n '__fish_seen_subcommand_from scale' -s R -l recursive -d 'Process the directory used in -f, --filename recursively. Useful when you want to manage related manifests organized within the same directory.' +complete -c kubectl -f -n '__fish_seen_subcommand_from scale' -r -l replicas -d 'The new desired number of replicas. Required.' +complete -c kubectl -f -n '__fish_seen_subcommand_from scale' -r -l resource-version -d 'Precondition for resource version. Requires that the current resource version match this value in order to scale.' +complete -c kubectl -f -n '__fish_seen_subcommand_from scale' -r -s l -l selector -d 'Selector (label query) to filter on, supports \'=\', \'==\', and \'!=\'.(e.g. -l key1=value1,key2=value2)' +complete -c kubectl -n '__fish_seen_subcommand_from scale' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -f -n '__fish_seen_subcommand_from scale' -r -l timeout -d 'The length of time to wait before giving up on a scale operation, zero means don\'t wait. Any other values should contain a corresponding time unit (e.g. 1s, 2m, 3h).' + +# Completions for the "kubectl set" command +function __fish_kubectl_get_set_commands + echo env\t'Update environment variables on a pod template' + echo image\t'Update image of a pod template' + echo resources\t'Update resource requests/limits on objects with pod templates' + echo selector\t'Set the selector on a resource' + echo serviceaccount\t'Update ServiceAccount of a resource' + echo sa\t'Update ServiceAccount of a resource' + echo subject\t'Update User, Group or ServiceAccount in a RoleBinding/ClusterRoleBinding' +end + +function __fish_kubectl_get_set_commands_without_descriptions + __fish_kubectl_get_set_commands | string replace -r '\t.*$' '' +end + +complete -c kubectl -f -n "__fish_kubectl_using_command set; and not __fish_seen_subcommand_from (__fish_kubectl_get_set_commands_without_descriptions)" -a '(__fish_kubectl_get_set_commands)' + +# Completions for the "kubectl set env" command +complete -c kubectl -f -n '__fish_seen_subcommand_from set env' -l all -d 'If true, select all resources in the namespace of the specified resource types' +complete -c kubectl -f -n '__fish_seen_subcommand_from set env' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set env' -r -s c -l containers -d 'The names of containers in the selected pod templates to change - may use wildcards' +complete -c kubectl -f -n '__fish_seen_subcommand_from set env' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set env' -r -s e -l env -d 'Specify a key-value pair for an environment variable to set into each container.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set env' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -n '__fish_seen_subcommand_from set env' -r -s f -l filename -d 'Filename, directory, or URL to files the resource to update the env' +complete -c kubectl -f -n '__fish_seen_subcommand_from set env' -r -l from -d 'The name of a resource from which to inject environment variables' +complete -c kubectl -f -n '__fish_seen_subcommand_from set env' -r -l keys -d 'Comma-separated list of keys to import from specified resource' +complete -c kubectl -f -n '__fish_seen_subcommand_from set env' -r -s k -l kustomize -d 'Process the kustomization directory. This flag can\'t be used together with -f or -R.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set env' -l list -d 'If true, display the environment and any changes in the standard format. this flag will removed when we have kubectl view env.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set env' -l local -d 'If true, set env will NOT contact api-server but run locally.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set env' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set env' -l overwrite -d 'If true, allow environment to be overwritten, otherwise reject updates that overwrite existing environment.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set env' -r -l prefix -d 'Prefix to append to variable names' +complete -c kubectl -f -n '__fish_seen_subcommand_from set env' -s R -l recursive -d 'Process the directory used in -f, --filename recursively. Useful when you want to manage related manifests organized within the same directory.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set env' -l resolve -d 'If true, show secret or configmap references when listing variables' +complete -c kubectl -f -n '__fish_seen_subcommand_from set env' -r -s l -l selector -d 'Selector (label query) to filter on' +complete -c kubectl -n '__fish_seen_subcommand_from set env' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' + +# Completions for the "kubectl set image" command +complete -c kubectl -f -n '__fish_seen_subcommand_from set image' -l all -d 'Select all resources, including uninitialized ones, in the namespace of the specified resource types' +complete -c kubectl -f -n '__fish_seen_subcommand_from set image' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set image' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set image' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -n '__fish_seen_subcommand_from set image' -r -s f -l filename -d 'Filename, directory, or URL to files identifying the resource to get from a server.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set image' -r -s k -l kustomize -d 'Process the kustomization directory. This flag can\'t be used together with -f or -R.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set image' -l local -d 'If true, set image will NOT contact api-server but run locally.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set image' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set image' -l record -d 'Record current kubectl command in the resource annotation. If set to false, do not record the command. If set to true, record the command. If not set, default to updating the existing annotation value only if one already exists.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set image' -s R -l recursive -d 'Process the directory used in -f, --filename recursively. Useful when you want to manage related manifests organized within the same directory.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set image' -r -s l -l selector -d 'Selector (label query) to filter on, not including uninitialized ones, supports \'=\', \'==\', and \'!=\'.(e.g. -l key1=value1,key2=value2)' +complete -c kubectl -n '__fish_seen_subcommand_from set image' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' + +# Completions for the "kubectl set resources" command +complete -c kubectl -f -n '__fish_seen_subcommand_from set resources' -l all -d 'Select all resources, including uninitialized ones, in the namespace of the specified resource types' +complete -c kubectl -f -n '__fish_seen_subcommand_from set resources' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set resources' -r -s c -l containers -d 'The names of containers in the selected pod templates to change, all containers are selected by default - may use wildcards' +complete -c kubectl -f -n '__fish_seen_subcommand_from set resources' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set resources' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -n '__fish_seen_subcommand_from set resources' -r -s f -l filename -d 'Filename, directory, or URL to files identifying the resource to get from a server.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set resources' -r -s k -l kustomize -d 'Process the kustomization directory. This flag can\'t be used together with -f or -R.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set resources' -r -l limits -d 'The resource requirement requests for this container. For example, \'cpu=100m,memory=256Mi\'. Note that server side components may assign requests depending on the server configuration, such as limit ranges.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set resources' -l local -d 'If true, set resources will NOT contact api-server but run locally.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set resources' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set resources' -l record -d 'Record current kubectl command in the resource annotation. If set to false, do not record the command. If set to true, record the command. If not set, default to updating the existing annotation value only if one already exists.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set resources' -s R -l recursive -d 'Process the directory used in -f, --filename recursively. Useful when you want to manage related manifests organized within the same directory.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set resources' -r -l requests -d 'The resource requirement requests for this container. For example, \'cpu=100m,memory=256Mi\'. Note that server side components may assign requests depending on the server configuration, such as limit ranges.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set resources' -r -s l -l selector -d 'Selector (label query) to filter on, not including uninitialized ones,supports \'=\', \'==\', and \'!=\'.(e.g. -l key1=value1,key2=value2)' +complete -c kubectl -n '__fish_seen_subcommand_from set resources' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' + +# Completions for the "kubectl set selector" command +complete -c kubectl -f -n '__fish_seen_subcommand_from set selector' -l all -d 'Select all resources in the namespace of the specified resource types' +complete -c kubectl -f -n '__fish_seen_subcommand_from set selector' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set selector' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set selector' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -n '__fish_seen_subcommand_from set selector' -r -s f -l filename -d 'identifying the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set selector' -l local -d 'If true, annotation will NOT contact api-server but run locally.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set selector' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set selector' -l record -d 'Record current kubectl command in the resource annotation. If set to false, do not record the command. If set to true, record the command. If not set, default to updating the existing annotation value only if one already exists.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set selector' -s R -l recursive -d 'Process the directory used in -f, --filename recursively. Useful when you want to manage related manifests organized within the same directory.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set selector' -r -l resource-version -d 'If non-empty, the selectors update will only succeed if this is the current resource-version for the object. Only valid when specifying a single resource.' +complete -c kubectl -n '__fish_seen_subcommand_from set selector' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' + +# Completions for the "kubectl set serviceaccount" command +complete -c kubectl -f -n '__fish_seen_subcommand_from set serviceaccount' -l all -d 'Select all resources, including uninitialized ones, in the namespace of the specified resource types' +complete -c kubectl -f -n '__fish_seen_subcommand_from set sa' -l all -d 'Select all resources, including uninitialized ones, in the namespace of the specified resource types' +complete -c kubectl -f -n '__fish_seen_subcommand_from set serviceaccount' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set sa' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set serviceaccount' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set sa' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set serviceaccount' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set sa' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -n '__fish_seen_subcommand_from set serviceaccount' -r -s f -l filename -d 'Filename, directory, or URL to files identifying the resource to get from a server.' +complete -c kubectl -n '__fish_seen_subcommand_from set sa' -r -s f -l filename -d 'Filename, directory, or URL to files identifying the resource to get from a server.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set serviceaccount' -r -s k -l kustomize -d 'Process the kustomization directory. This flag can\'t be used together with -f or -R.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set sa' -r -s k -l kustomize -d 'Process the kustomization directory. This flag can\'t be used together with -f or -R.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set serviceaccount' -l local -d 'If true, set serviceaccount will NOT contact api-server but run locally.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set sa' -l local -d 'If true, set serviceaccount will NOT contact api-server but run locally.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set serviceaccount' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set sa' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set serviceaccount' -l record -d 'Record current kubectl command in the resource annotation. If set to false, do not record the command. If set to true, record the command. If not set, default to updating the existing annotation value only if one already exists.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set sa' -l record -d 'Record current kubectl command in the resource annotation. If set to false, do not record the command. If set to true, record the command. If not set, default to updating the existing annotation value only if one already exists.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set serviceaccount' -s R -l recursive -d 'Process the directory used in -f, --filename recursively. Useful when you want to manage related manifests organized within the same directory.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set sa' -s R -l recursive -d 'Process the directory used in -f, --filename recursively. Useful when you want to manage related manifests organized within the same directory.' +complete -c kubectl -n '__fish_seen_subcommand_from set serviceaccount' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -n '__fish_seen_subcommand_from set sa' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' + +# Completions for the "kubectl set subject" command +complete -c kubectl -f -n '__fish_seen_subcommand_from set subject' -l all -d 'Select all resources, including uninitialized ones, in the namespace of the specified resource types' +complete -c kubectl -f -n '__fish_seen_subcommand_from set subject' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set subject' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set subject' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -n '__fish_seen_subcommand_from set subject' -r -s f -l filename -d 'Filename, directory, or URL to files the resource to update the subjects' +complete -c kubectl -f -n '__fish_seen_subcommand_from set subject' -r -l group -d 'Groups to bind to the role' +complete -c kubectl -f -n '__fish_seen_subcommand_from set subject' -r -s k -l kustomize -d 'Process the kustomization directory. This flag can\'t be used together with -f or -R.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set subject' -l local -d 'If true, set subject will NOT contact api-server but run locally.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set subject' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set subject' -s R -l recursive -d 'Process the directory used in -f, --filename recursively. Useful when you want to manage related manifests organized within the same directory.' +complete -c kubectl -f -n '__fish_seen_subcommand_from set subject' -r -s l -l selector -d 'Selector (label query) to filter on, not including uninitialized ones, supports \'=\', \'==\', and \'!=\'.(e.g. -l key1=value1,key2=value2)' +complete -c kubectl -f -n '__fish_seen_subcommand_from set subject' -r -l serviceaccount -d 'Service accounts to bind to the role' +complete -c kubectl -n '__fish_seen_subcommand_from set subject' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' + +# Completions for the "kubectl taint" command +complete -c kubectl -f -n '__fish_seen_subcommand_from taint' -l all -d 'Select all nodes in the cluster' +complete -c kubectl -f -n '__fish_seen_subcommand_from taint' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from taint' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from taint' -r -l field-manager -d 'Name of the manager used to track field ownership.' +complete -c kubectl -f -n '__fish_seen_subcommand_from taint' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from taint' -l overwrite -d 'If true, allow taints to be overwritten, otherwise reject taint updates that overwrite existing taints.' +complete -c kubectl -f -n '__fish_seen_subcommand_from taint' -r -s l -l selector -d 'Selector (label query) to filter on, supports \'=\', \'==\', and \'!=\'.(e.g. -l key1=value1,key2=value2)' +complete -c kubectl -n '__fish_seen_subcommand_from taint' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -f -n '__fish_seen_subcommand_from taint' -l validate -d 'If true, use a schema to validate the input before sending it' + +# Completions for the "kubectl top" command +function __fish_kubectl_get_top_commands + echo node\t'Display Resource (CPU/Memory/Storage) usage of nodes' + echo nodes\t'Display Resource (CPU/Memory/Storage) usage of nodes' + echo no\t'Display Resource (CPU/Memory/Storage) usage of nodes' + echo pod\t'Display Resource (CPU/Memory/Storage) usage of pods' + echo pods\t'Display Resource (CPU/Memory/Storage) usage of pods' + echo po\t'Display Resource (CPU/Memory/Storage) usage of pods' +end + +function __fish_kubectl_get_top_commands_without_descriptions + __fish_kubectl_get_top_commands | string replace -r '\t.*$' '' +end + +complete -c kubectl -f -n "__fish_kubectl_using_command top; and not __fish_seen_subcommand_from (__fish_kubectl_get_top_commands_without_descriptions)" -a '(__fish_kubectl_get_top_commands)' + +# Completions for the "kubectl top node" command +complete -c kubectl -f -n '__fish_seen_subcommand_from top node' -l no-headers -d 'If present, print output without headers' +complete -c kubectl -f -n '__fish_seen_subcommand_from top nodes' -l no-headers -d 'If present, print output without headers' +complete -c kubectl -f -n '__fish_seen_subcommand_from top no' -l no-headers -d 'If present, print output without headers' +complete -c kubectl -f -n '__fish_seen_subcommand_from top node' -r -s l -l selector -d 'Selector (label query) to filter on, supports \'=\', \'==\', and \'!=\'.(e.g. -l key1=value1,key2=value2)' +complete -c kubectl -f -n '__fish_seen_subcommand_from top nodes' -r -s l -l selector -d 'Selector (label query) to filter on, supports \'=\', \'==\', and \'!=\'.(e.g. -l key1=value1,key2=value2)' +complete -c kubectl -f -n '__fish_seen_subcommand_from top no' -r -s l -l selector -d 'Selector (label query) to filter on, supports \'=\', \'==\', and \'!=\'.(e.g. -l key1=value1,key2=value2)' +complete -c kubectl -f -n '__fish_seen_subcommand_from top node' -r -l sort-by -d 'If non-empty, sort nodes list using specified field. The field can be either \'cpu\' or \'memory\'.' +complete -c kubectl -f -n '__fish_seen_subcommand_from top nodes' -r -l sort-by -d 'If non-empty, sort nodes list using specified field. The field can be either \'cpu\' or \'memory\'.' +complete -c kubectl -f -n '__fish_seen_subcommand_from top no' -r -l sort-by -d 'If non-empty, sort nodes list using specified field. The field can be either \'cpu\' or \'memory\'.' + +# Completions for the "kubectl top pod" command +complete -c kubectl -f -n '__fish_seen_subcommand_from top pod' -s A -l all-namespaces -d 'If present, list the requested object(s) across all namespaces. Namespace in current context is ignored even if specified with --namespace.' +complete -c kubectl -f -n '__fish_seen_subcommand_from top pods' -s A -l all-namespaces -d 'If present, list the requested object(s) across all namespaces. Namespace in current context is ignored even if specified with --namespace.' +complete -c kubectl -f -n '__fish_seen_subcommand_from top po' -s A -l all-namespaces -d 'If present, list the requested object(s) across all namespaces. Namespace in current context is ignored even if specified with --namespace.' +complete -c kubectl -f -n '__fish_seen_subcommand_from top pod' -l containers -d 'If present, print usage of containers within a pod.' +complete -c kubectl -f -n '__fish_seen_subcommand_from top pods' -l containers -d 'If present, print usage of containers within a pod.' +complete -c kubectl -f -n '__fish_seen_subcommand_from top po' -l containers -d 'If present, print usage of containers within a pod.' +complete -c kubectl -f -n '__fish_seen_subcommand_from top pod' -l no-headers -d 'If present, print output without headers.' +complete -c kubectl -f -n '__fish_seen_subcommand_from top pods' -l no-headers -d 'If present, print output without headers.' +complete -c kubectl -f -n '__fish_seen_subcommand_from top po' -l no-headers -d 'If present, print output without headers.' +complete -c kubectl -f -n '__fish_seen_subcommand_from top pod' -r -s l -l selector -d 'Selector (label query) to filter on, supports \'=\', \'==\', and \'!=\'.(e.g. -l key1=value1,key2=value2)' +complete -c kubectl -f -n '__fish_seen_subcommand_from top pods' -r -s l -l selector -d 'Selector (label query) to filter on, supports \'=\', \'==\', and \'!=\'.(e.g. -l key1=value1,key2=value2)' +complete -c kubectl -f -n '__fish_seen_subcommand_from top po' -r -s l -l selector -d 'Selector (label query) to filter on, supports \'=\', \'==\', and \'!=\'.(e.g. -l key1=value1,key2=value2)' +complete -c kubectl -f -n '__fish_seen_subcommand_from top pod' -r -l sort-by -d 'If non-empty, sort pods list using specified field. The field can be either \'cpu\' or \'memory\'.' +complete -c kubectl -f -n '__fish_seen_subcommand_from top pods' -r -l sort-by -d 'If non-empty, sort pods list using specified field. The field can be either \'cpu\' or \'memory\'.' +complete -c kubectl -f -n '__fish_seen_subcommand_from top po' -r -l sort-by -d 'If non-empty, sort pods list using specified field. The field can be either \'cpu\' or \'memory\'.' + +# Completions for the "kubectl uncordon" command +complete -c kubectl -f -n '__fish_seen_subcommand_from uncordon' -r -l dry-run -d 'Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from uncordon' -r -s l -l selector -d 'Selector (label query) to filter on' + +# Completions for the "kubectl version" command +complete -c kubectl -f -n '__fish_seen_subcommand_from version' -l client -d 'If true, shows client version only (no server required).' +complete -c kubectl -f -n '__fish_seen_subcommand_from version' -r -s o -l output -d 'One of \'yaml\' or \'json\'.' +complete -c kubectl -f -n '__fish_seen_subcommand_from version' -l short -d 'If true, print just the version number.' + +# Completions for the "kubectl wait" command +complete -c kubectl -f -n '__fish_seen_subcommand_from wait' -l all -d 'Select all resources in the namespace of the specified resource types' +complete -c kubectl -f -n '__fish_seen_subcommand_from wait' -s A -l all-namespaces -d 'If present, list the requested object(s) across all namespaces. Namespace in current context is ignored even if specified with --namespace.' +complete -c kubectl -f -n '__fish_seen_subcommand_from wait' -l allow-missing-template-keys -d 'If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.' +complete -c kubectl -f -n '__fish_seen_subcommand_from wait' -r -l field-selector -d 'Selector (field query) to filter on, supports \'=\', \'==\', and \'!=\'.(e.g. --field-selector key1=value1,key2=value2). The server only supports a limited number of field queries per type.' +complete -c kubectl -n '__fish_seen_subcommand_from wait' -r -s f -l filename -d 'identifying the resource.' +complete -c kubectl -f -n '__fish_seen_subcommand_from wait' -r -l for -d 'The condition to wait on: [delete|condition=condition-name].' +complete -c kubectl -f -n '__fish_seen_subcommand_from wait' -l local -d 'If true, annotation will NOT contact api-server but run locally.' +complete -c kubectl -f -n '__fish_seen_subcommand_from wait' -r -s o -l output -d 'Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.' +complete -c kubectl -f -n '__fish_seen_subcommand_from wait' -s R -l recursive -d 'Process the directory used in -f, --filename recursively. Useful when you want to manage related manifests organized within the same directory.' +complete -c kubectl -f -n '__fish_seen_subcommand_from wait' -r -s l -l selector -d 'Selector (label query) to filter on, supports \'=\', \'==\', and \'!=\'.(e.g. -l key1=value1,key2=value2)' +complete -c kubectl -n '__fish_seen_subcommand_from wait' -r -l template -d 'Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].' +complete -c kubectl -f -n '__fish_seen_subcommand_from wait' -r -l timeout -d 'The length of time to wait before giving up. Zero means check once and don\'t wait, negative means wait for a week.' diff --git a/dot_config/fish/completions/nc.fish b/dot_config/fish/completions/nc.fish new file mode 100644 index 0000000..4dc5f18 --- /dev/null +++ b/dot_config/fish/completions/nc.fish @@ -0,0 +1,12 @@ +# There a several different implementations of netcat. +# Try to figure out which is the current used one +# and load the right set of completions. + +set -l flavor +if string match -rq -- '^OpenBSD netcat' (nc -h 2>&1)[1] + set flavor nc.openbsd +else + set flavor (basename (realpath (command -v nc))) +end + +__fish_complete_netcat nc $flavor diff --git a/dot_config/fish/completions/nc.openbsd.fish b/dot_config/fish/completions/nc.openbsd.fish new file mode 100644 index 0000000..f93163c --- /dev/null +++ b/dot_config/fish/completions/nc.openbsd.fish @@ -0,0 +1 @@ +__fish_complete_netcat nc.openbsd diff --git a/dot_config/fish/completions/nc.traditional.fish b/dot_config/fish/completions/nc.traditional.fish new file mode 100644 index 0000000..8d0c10f --- /dev/null +++ b/dot_config/fish/completions/nc.traditional.fish @@ -0,0 +1 @@ +__fish_complete_netcat nc.traditional diff --git a/dot_config/fish/completions/ncat.fish b/dot_config/fish/completions/ncat.fish new file mode 100644 index 0000000..186b6bf --- /dev/null +++ b/dot_config/fish/completions/ncat.fish @@ -0,0 +1,74 @@ +# Completions for ncat (https://www.nmap.org) + +complete -c ncat -f -a "(__fish_print_hostnames)" + +# PROTOCOL OPTIONS +complete -c ncat -s 4 -d "IPv4 only" +complete -c ncat -s 6 -d "IPv6 only" +complete -c ncat -s U -l unixsock -d "Use Unix domain sockets" +complete -c ncat -s u -l udp -d "Use UDP" +complete -c ncat -l sctp -d "Use SCTP" + +# CONNECT MODE OPTIONS +complete -c ncat -s g -x -d "Loose source routing" +complete -c ncat -s G -x -d "Set source routing pointer" +complete -c ncat -s p -l source-port -x -d "Specify source port" +complete -c ncat -s s -l source -x -d "Specify source address" + +# LISTEN MODE OPTIONS +complete -c ncat -s l -l listen -d "Listen for connections" +complete -c ncat -s m -l max-conns -x -d "Specify maximum number of connections" +complete -c ncat -s k -l keep-open -d "Accept multiple connections" +complete -c ncat -l broker -d "Connection brokering" +complete -c ncat -l chat -d "Ad-hoc \"chat server\"" + +# SSL OPTIONS +complete -c ncat -l ssl -d "Use SSL" +complete -c ncat -l ssl-verify -d "Verify server certificates" +complete -c ncat -l ssl-cert -r -d "Specify SSL certificate" +complete -c ncat -l ssl-key -r -d "Specify SSL private key" +complete -c ncat -l ssl-trustfile -r -d "List trusted certificates" +function __fish_complete_openssl_ciphers + openssl ciphers -s -stdname | string replace -r '^([^ ]*) - ([^ ]*).*$' '$2\t$1' + for cs in COMPLEMENTOFDEFAULT ALL COMPLEMENTOFALL HIGH MEDIUM LOW eNULL NULL aNULL kRSA aRSA RSA kDHr kDHd kDH kDHE kEDH DH DHE EDH ADH kEECDH kECDHE ECDH ECDHE EECDH AECDH aDSS DSS aDH aECDSA ECDSA TLSv1.2 TLSv1.0 SSLv3 AES128 AES256 AES AESGCM AESCCM AESCCM8 ARIA128 ARIA256 ARIA CAMELLIA128 CAMELLIA256 CAMELLIA CHACHA20 3DES DES RC4 RC2 IDEA SEED MD5 SHA1 SHA SHA256 SHA384 aGOST aGOST01 kGOST GOST94 GOST89MAC PSK kPSK kECDHEPSK kDHEPSK kRSAPSK aPSK SUITEB128 SUITEB128ONLY SUITEB192 + printf "%s\tCipher String\n" $cs + end +end +complete -c ncat -l ssl-ciphers -x -a "(__fish_complete_list : __fish_complete_openssl_ciphers)" -d "Specify SSL ciphersuites" +complete -c ncat -l ssl-alpn -x -d "Specify ALPN protocol list" + +# PROXY OPTIONS +complete -c ncat -l proxy -x -d "Specify proxy address" +complete -c ncat -l proxy-type -x -d "Specify proxy protocol" +complete -c ncat -l proxy-auth -x -d "Specify proxy credentials" + +# COMMAND EXECUTION OPTIONS +complete -c ncat -s e -l exec -r -d "Execute command" +complete -c ncat -s c -l sh-exec -r -d "Execute command via sh" +complete -c ncat -l lua-exec -r -d "Execute a .lua script" + +# ACCESS CONTROL OPTIONS +complete -c ncat -l allow -x -a "(__fish_print_hostnames)" -d "Allow connections" +complete -c ncat -l allowfile -r -d "Allow connections from file" +complete -c ncat -l deny -x -a "(__fish_print_hostnames)" -d "Deny connections" +complete -c ncat -l denyfile -r -d "Deny connections from file" + +# TIMING OPTIONS +complete -c ncat -s d -l delay -x -d "Specify line delay" +complete -c ncat -s i -l idle-timeout -x -d "Specify idle timeout" +complete -c ncat -s w -l wait -x -d "Specify connect timeout" + +# OUTPUT OPTIONS +complete -c ncat -s o -l output -r -d "Save session data" +complete -c ncat -s x -l hex-dump -r -d "Save session data in hex" +complete -c ncat -l append-output -d "Append output" +complete -c ncat -s v -l verbose -d "Be verbose" + +# MISC OPTIONS +complete -c ncat -s C -l crlf -d "Use CRLF as EOL" +complete -c ncat -s h -l help -d "Help screen" +complete -c ncat -l -recv-only -d "Only receive data" +complete -c ncat -l send-only -d "Only send data" +complete -c ncat -l no-shutdown -d "Do not shutdown into half-duplex mode" +complete -c ncat -s t -l telnet -d "Answer Telnet negotiations" +complete -c ncat -l version -d "Display version" diff --git a/dot_config/fish/completions/netcat.fish b/dot_config/fish/completions/netcat.fish new file mode 100644 index 0000000..a33e8e2 --- /dev/null +++ b/dot_config/fish/completions/netcat.fish @@ -0,0 +1,12 @@ +# There a several different implementations of netcat. +# Try to figure out which is the current used one +# and load the right set of completions. + +set -l flavor +if string match -rq -- '^OpenBSD netcat' (netcat -h 2>&1)[1] + set flavor nc.openbsd +else + set flavor (basename (realpath (command -v netcat))) +end + +__fish_complete_netcat netcat $flavor diff --git a/dot_config/fish/conf.d/key-bindings.fish b/dot_config/fish/conf.d/key-bindings.fish new file mode 100644 index 0000000..36b3aa3 --- /dev/null +++ b/dot_config/fish/conf.d/key-bindings.fish @@ -0,0 +1,172 @@ +# ____ ____ +# / __/___ / __/ +# / /_/_ / / /_ +# / __/ / /_/ __/ +# /_/ /___/_/ key-bindings.fish +# +# - $FZF_TMUX_OPTS +# - $FZF_CTRL_T_COMMAND +# - $FZF_CTRL_T_OPTS +# - $FZF_CTRL_R_OPTS +# - $FZF_ALT_C_COMMAND +# - $FZF_ALT_C_OPTS + +# Key bindings +# ------------ +function fzf_key_bindings + + # Store current token in $dir as root for the 'find' command + function fzf-file-widget -d "List files and folders" + set -l commandline (__fzf_parse_commandline) + set -l dir $commandline[1] + set -l fzf_query $commandline[2] + set -l prefix $commandline[3] + + # "-path \$dir'*/\\.*'" matches hidden files/folders inside $dir but not + # $dir itself, even if hidden. + test -n "$FZF_CTRL_T_COMMAND"; or set -l FZF_CTRL_T_COMMAND " + command find -L \$dir -mindepth 1 \\( -path \$dir'*/\\.*' -o -fstype 'sysfs' -o -fstype 'devfs' -o -fstype 'devtmpfs' \\) -prune \ + -o -type f -print \ + -o -type d -print \ + -o -type l -print 2> /dev/null | sed 's@^\./@@'" + + test -n "$FZF_TMUX_HEIGHT"; or set FZF_TMUX_HEIGHT 40% + begin + set -lx FZF_DEFAULT_OPTS "--height $FZF_TMUX_HEIGHT --reverse --bind=ctrl-z:ignore $FZF_DEFAULT_OPTS $FZF_CTRL_T_OPTS" + eval "$FZF_CTRL_T_COMMAND | "(__fzfcmd)' -m --query "'$fzf_query'"' | while read -l r; set result $result $r; end + end + if [ -z "$result" ] + commandline -f repaint + return + else + # Remove last token from commandline. + commandline -t "" + end + for i in $result + commandline -it -- $prefix + commandline -it -- (string escape $i) + commandline -it -- ' ' + end + commandline -f repaint + end + + function fzf-history-widget -d "Show command history" + test -n "$FZF_TMUX_HEIGHT"; or set FZF_TMUX_HEIGHT 40% + begin + set -lx FZF_DEFAULT_OPTS "--height $FZF_TMUX_HEIGHT $FZF_DEFAULT_OPTS --tiebreak=index --bind=ctrl-r:toggle-sort,ctrl-z:ignore $FZF_CTRL_R_OPTS +m" + + set -l FISH_MAJOR (echo $version | cut -f1 -d.) + set -l FISH_MINOR (echo $version | cut -f2 -d.) + + # history's -z flag is needed for multi-line support. + # history's -z flag was added in fish 2.4.0, so don't use it for versions + # before 2.4.0. + if [ "$FISH_MAJOR" -gt 2 -o \( "$FISH_MAJOR" -eq 2 -a "$FISH_MINOR" -ge 4 \) ]; + history -z | eval (__fzfcmd) --read0 --print0 -q '(commandline)' | read -lz result + and commandline -- $result + else + history | eval (__fzfcmd) -q '(commandline)' | read -l result + and commandline -- $result + end + end + commandline -f repaint + end + + function fzf-cd-widget -d "Change directory" + set -l commandline (__fzf_parse_commandline) + set -l dir $commandline[1] + set -l fzf_query $commandline[2] + set -l prefix $commandline[3] + + test -n "$FZF_ALT_C_COMMAND"; or set -l FZF_ALT_C_COMMAND " + command find -L \$dir -mindepth 1 \\( -path \$dir'*/\\.*' -o -fstype 'sysfs' -o -fstype 'devfs' -o -fstype 'devtmpfs' \\) -prune \ + -o -type d -print 2> /dev/null | sed 's@^\./@@'" + test -n "$FZF_TMUX_HEIGHT"; or set FZF_TMUX_HEIGHT 40% + begin + set -lx FZF_DEFAULT_OPTS "--height $FZF_TMUX_HEIGHT --reverse --bind=ctrl-z:ignore $FZF_DEFAULT_OPTS $FZF_ALT_C_OPTS" + eval "$FZF_ALT_C_COMMAND | "(__fzfcmd)' +m --query "'$fzf_query'"' | read -l result + + if [ -n "$result" ] + builtin cd -- $result + + # Remove last token from commandline. + commandline -t "" + commandline -it -- $prefix + end + end + + commandline -f repaint + end + + function __fzfcmd + test -n "$FZF_TMUX"; or set FZF_TMUX 0 + test -n "$FZF_TMUX_HEIGHT"; or set FZF_TMUX_HEIGHT 40% + if [ -n "$FZF_TMUX_OPTS" ] + echo "fzf-tmux $FZF_TMUX_OPTS -- " + else if [ $FZF_TMUX -eq 1 ] + echo "fzf-tmux -d$FZF_TMUX_HEIGHT -- " + else + echo "fzf" + end + end + + bind \ct fzf-file-widget + bind \cr fzf-history-widget + bind \ec fzf-cd-widget + + if bind -M insert > /dev/null 2>&1 + bind -M insert \ct fzf-file-widget + bind -M insert \cr fzf-history-widget + bind -M insert \ec fzf-cd-widget + end + + function __fzf_parse_commandline -d 'Parse the current command line token and return split of existing filepath, fzf query, and optional -option= prefix' + set -l commandline (commandline -t) + + # strip -option= from token if present + set -l prefix (string match -r -- '^-[^\s=]+=' $commandline) + set commandline (string replace -- "$prefix" '' $commandline) + + # eval is used to do shell expansion on paths + eval set commandline $commandline + + if [ -z $commandline ] + # Default to current directory with no --query + set dir '.' + set fzf_query '' + else + set dir (__fzf_get_dir $commandline) + + if [ "$dir" = "." -a (string sub -l 1 -- $commandline) != '.' ] + # if $dir is "." but commandline is not a relative path, this means no file path found + set fzf_query $commandline + else + # Also remove trailing slash after dir, to "split" input properly + set fzf_query (string replace -r "^$dir/?" -- '' "$commandline") + end + end + + echo $dir + echo $fzf_query + echo $prefix + end + + function __fzf_get_dir -d 'Find the longest existing filepath from input string' + set dir $argv + + # Strip all trailing slashes. Ignore if $dir is root dir (/) + if [ (string length -- $dir) -gt 1 ] + set dir (string replace -r '/*$' -- '' $dir) + end + + # Iteratively check if dir exists and strip tail end of path + while [ ! -d "$dir" ] + # If path is absolute, this can keep going until ends up at / + # If path is relative, this can keep going until entire input is consumed, dirname returns "." + set dir (dirname -- "$dir") + end + + echo $dir + end + +end diff --git a/dot_config/fish/config.fish b/dot_config/fish/config.fish new file mode 100644 index 0000000..ef88a2f --- /dev/null +++ b/dot_config/fish/config.fish @@ -0,0 +1,29 @@ +set PATH ~/bin ~/.local/bin ~/.go/bin ~/.cargo/bin /opt/homebrew/bin /bin /sbin /usr/local/bin /usr/local/sbin /usr/bin /usr/sbin ~/.cabal/bin ~/.ghcup/bin /usr/lib/go/bin ~/.gem/ruby/1.9.1/bin ~/.rye/shims ~/.local/share/uv/tools $PATH + +if command -vq flatpak + set -ga fish_user_paths ~/.local/share/flatpak/exports/bin /var/lib/flatpak/exports/bin + set -gx --path XDG_DATA_DIRS /usr/local/share/ /usr/share/ ~/.local/share/flatpak/exports/share + for install_dir in (flatpak --installations) + set -gxa XDG_DATA_DIRS $install_dir/exports/share + end +end + +set fish_greeting "" +set EDITOR vi +set -x GOPATH ~/.go +set -x BROWSER xdg-open +set -gx LANG en_US.UTF-8 + +if test -e $HOME/.asdf/asdf.fish + . ~/.asdf/asdf.fish +end + +if test -e $HOME/.config/fish/work.fish + . ~/.config/fish/work.fish +end + +. ~/.config/fish/fish_aliases.fish + +# The next line updates PATH for the Google Cloud SDK. +if [ -f '/home/barak/local/google-cloud-sdk/path.fish.inc' ]; . '/home/barak/local/google-cloud-sdk/path.fish.inc'; end + diff --git a/dot_config/fish/fish_aliases.fish b/dot_config/fish/fish_aliases.fish new file mode 100644 index 0000000..1004a49 --- /dev/null +++ b/dot_config/fish/fish_aliases.fish @@ -0,0 +1,55 @@ +alias :e='vi' +alias t='task' +alias em='emacs' +alias grep="grep --color=auto" +#alias screen="screen -R" +alias dvtm="dvtm -m \"^w\"" +alias tm="tmux -2 attach" +alias ppjson="python -mjson.tool" +#alias tmux-pwn='tmux list-clients | sed "s|^\(/dev/ttys[0-9]\+\).*\[\([0-9]\+x[0-9]\+\).*$|\2 \1|" | sort -r -n | tail -n +2 | cut -d " " -f 2 | xargs -n 1 tmux detach-client -t' + +# I can never remember the xclip options, so: +alias setclip='xclip -selection c' +alias getclip='xclip -selection clipboard -o' + +#machines +alias puck="ssh -D 7777 -Y barak@puck.barakmich.com" +alias hero="ssh -D 7777 -Y barak@hero.barakmich.com" +alias hermia="ssh -Y barak@hermia.home.0b100.net" + +#Cosmetic/useful +#alias naim="naim --noscreen" +alias wallall="wallall -p" +#alias cal="cal -3" +#alias google='surfraw google' +alias hd='od -Ax -tx1z -v' +alias gcal='gcalcli' + +#Sysdadmin +alias aptsearch="aptitude search" +alias pki="pk i" +alias pks="pk s" +alias openports="lsof -i 4 -n" +alias saupdate="sa-learn --mbox --spam ~/mail/spam" +alias pshosers="ps axeo pcpu,pid,user,command | sort -k 1 -r | head -11 " +alias memhosers="ps axeo size,pcpu,pid,user,command | sort -n -r | head -11 " +alias psx="ps auxwww | grep $1" +alias blaze="bazel" +alias pb='curl -F c=@- https://busb.us/' +alias pburl='curl -F c=@- https://busb.us/u' + +#work +alias totemp="cd `pwd | sed 's/controllers/templates/'`" +alias tocont="cd `pwd | sed 's/templates/controllers/'`" + +alias kubecat="awk 'FNR==1 && NR!=1 {print \"---\"}{print}'" + +#Some orly aliases +alias yarly="orly -y" +alias nowai="orly -n" +alias srsly="orly -s" + +#Funnies +alias whothefuckis='finger' +alias whoami="echo 24601" +alias yeet="rm -rf" diff --git a/dot_config/fish/fish_variables b/dot_config/fish/fish_variables new file mode 100644 index 0000000..f1b6a56 --- /dev/null +++ b/dot_config/fish/fish_variables @@ -0,0 +1,31 @@ +# This file contains fish universal variable definitions. +# VERSION: 3.0 +SETUVAR __fish_initialized:3400 +SETUVAR fish_color_autosuggestion:555\x1ebrblack +SETUVAR fish_color_cancel:\x2dr +SETUVAR fish_color_command:005fd7 +SETUVAR fish_color_comment:990000 +SETUVAR fish_color_cwd:green +SETUVAR fish_color_cwd_root:red +SETUVAR fish_color_end:009900 +SETUVAR fish_color_error:ff0000 +SETUVAR fish_color_escape:00a6b2 +SETUVAR fish_color_history_current:\x2d\x2dbold +SETUVAR fish_color_host:normal +SETUVAR fish_color_host_remote:yellow +SETUVAR fish_color_normal:normal +SETUVAR fish_color_operator:00a6b2 +SETUVAR fish_color_param:00afff +SETUVAR fish_color_quote:999900 +SETUVAR fish_color_redirection:00afff +SETUVAR fish_color_search_match:bryellow\x1e\x2d\x2dbackground\x3dbrblack +SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack +SETUVAR fish_color_status:red +SETUVAR fish_color_user:brgreen +SETUVAR fish_color_valid_path:\x2d\x2dunderline +SETUVAR fish_key_bindings:fish_default_key_bindings +SETUVAR fish_pager_color_completion:\x1d +SETUVAR fish_pager_color_description:B3A06D\x1eyellow +SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline +SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan +SETUVAR fish_pager_color_selected_background:\x2dr diff --git a/.config/fish/functions/fish_prompt.fish b/dot_config/fish/functions/fish_prompt.fish similarity index 70% rename from .config/fish/functions/fish_prompt.fish rename to dot_config/fish/functions/fish_prompt.fish index 75a7662..f84cebf 100644 --- a/.config/fish/functions/fish_prompt.fish +++ b/dot_config/fish/functions/fish_prompt.fish @@ -31,9 +31,14 @@ function fish_prompt --description 'Write out the prompt' set -g __fish_prompt_cwd (set_color $fish_color_cwd) end - echo -n -s (set_color green) "$USER" (set_color normal) @ (set_color green) "$__fish_prompt_hostname" (set_color normal) ':[' "$__fish_prompt_cwd" (prompt_pwd) "$__fish_prompt_normal" ']' + + if set -q VIRTUAL_ENV + echo -n -s (set_color -b blue white) "(" (basename "$VIRTUAL_ENV") ")" (set_color normal) " " + end + + echo -n -s (set_color blue) "(" (set_color yellow) (date "+%H:%M") (set_color blue) ")[" (set_color green) "$USER@$__fish_prompt_hostname " (set_color cyan) "$__fish_prompt_cwd" (prompt_pwd) "$__fish_prompt_normal" (set_color blue) ']' echo - echo -n '> ' + echo -n '$ ' end end diff --git a/dot_config/fish/functions/fish_right_prompt.fish b/dot_config/fish/functions/fish_right_prompt.fish new file mode 100644 index 0000000..25b3eab --- /dev/null +++ b/dot_config/fish/functions/fish_right_prompt.fish @@ -0,0 +1 @@ +function fish_right_prompt; end diff --git a/dot_config/fish/functions/fish_user_key_bindings.fish b/dot_config/fish/functions/fish_user_key_bindings.fish new file mode 100644 index 0000000..cb9f03e --- /dev/null +++ b/dot_config/fish/functions/fish_user_key_bindings.fish @@ -0,0 +1,7 @@ +function fish_user_key_bindings + fzf_key_bindings +end + +function fsize + sed -i "s/size:.*/size: $argv/" $HOME/.config/alacritty/alacritty.yml +end diff --git a/dot_config/fuzzel/fuzzel.ini b/dot_config/fuzzel/fuzzel.ini new file mode 100644 index 0000000..3848b0b --- /dev/null +++ b/dot_config/fuzzel/fuzzel.ini @@ -0,0 +1,14 @@ +[main] +font=Iosevka Berkeley:size=20 +icon-theme="Mint-Y-Teal" +terminal=run_terminal +lines=20 +width=50 +layer=overlay + +[colors] +background="242424e6" +text="dededeff" +selection="0860f2e6" +selection-text="ffffffff" +selection-match="cb6b36ff" diff --git a/.config/hexchat/addons/mymsg.py b/dot_config/hexchat/addons/mymsg.py similarity index 100% rename from .config/hexchat/addons/mymsg.py rename to dot_config/hexchat/addons/mymsg.py diff --git a/.config/hexchat/addons/notify.py b/dot_config/hexchat/addons/notify.py similarity index 100% rename from .config/hexchat/addons/notify.py rename to dot_config/hexchat/addons/notify.py diff --git a/dot_config/iosevka-build/.gitignore b/dot_config/iosevka-build/.gitignore new file mode 100644 index 0000000..849ddff --- /dev/null +++ b/dot_config/iosevka-build/.gitignore @@ -0,0 +1 @@ +dist/ diff --git a/dot_config/iosevka-build/private-build-plans.toml b/dot_config/iosevka-build/private-build-plans.toml new file mode 100644 index 0000000..e65fe70 --- /dev/null +++ b/dot_config/iosevka-build/private-build-plans.toml @@ -0,0 +1,121 @@ +[buildPlans.IosevkaBerkeley] +family = "Iosevka Berkeley" +spacing = "fixed" +serifs = "sans" +noCvSs = true +exportGlyphNames = false + +[buildPlans.IosevkaBerkeley.variants.design] +capital-g = "toothless-rounded-serifless-hooked" +g = "double-storey" +t = "flat-hook" +y = "straight-turn-serifless" +eszet = "sulzbacher-descending-serifless" +capital-lambda = "curly-top-serifed" +lower-lambda = "tailed-turn" +lower-chi = "semi-chancery-straight" +zero = "dotted" +one = "no-base" +four = "closed-serifless" +six = "open-contour" +eight = "two-circles" +asterisk = "hex-high" +paren = "large-contour" +brace = "straight" +at = "fourfold" +percent = "rings-continuous-slash" +bar = "force-upright" +question = "corner" + +[buildPlans.IosevkaBerkeley.variants.italic] +capital-a = "curly-serifless" +capital-b = "standard-unilateral-serifed" +capital-d = "standard-unilateral-serifed" +capital-f = "top-left-serifed" +capital-g = "toothed-serifless-hooked" +capital-i = "short-serifed" +capital-j = "serifed-both-sides" +capital-m = "flat-bottom-serifless" +capital-p = "closed-motion-serifed" +capital-q = "crossing-curly-tailed" +capital-r = "curly-serifless" +capital-u = "tailed-motion-serifed" +capital-v = "curly-serifless" +capital-w = "curly-serifless" +capital-x = "curly-serifless" +capital-y = "curly-serifless" +capital-z = "curly-serifless-with-horizontal-crossbar" +a = "double-storey-tailed" +d = "toothed-serifed" +f = "flat-hook-serifless" +g = "single-storey-serifed" +h = "straight-top-left-serifed" +k = "curly-serifless" +m = "top-left-serifed" +n = "straight-top-left-serifed" +p = "eared-serifless" +q = "straight-serifless" +u = "tailed-motion-serifed" +v = "curly-serifless" +w = "curly-serifless" +x = "curly-serifless" +y = "cursive-serifless" +z = "curly-serifless-with-horizontal-crossbar" +one = "no-base-long-top-serif" +two = "straight-neck-serifless" +seven = "straight-serifless-crossbar" +nine = "open-contour" +paren = "normal" + +[buildPlans.IosevkaBerkeley.variants.oblique] +paren = "normal" + +[buildPlans.IosevkaBerkeley.weights.ExtraLight] +shape = 200 +menu = 200 +css = 200 + +[buildPlans.IosevkaBerkeley.weights.Light] +shape = 300 +menu = 300 +css = 300 + +[buildPlans.IosevkaBerkeley.weights.Regular] +shape = 400 +menu = 400 +css = 400 + +[buildPlans.IosevkaBerkeley.weights.Medium] +shape = 500 +menu = 500 +css = 500 + +[buildPlans.IosevkaBerkeley.weights.SemiBold] +shape = 600 +menu = 600 +css = 600 + +[buildPlans.IosevkaBerkeley.weights.Bold] +shape = 700 +menu = 700 +css = 700 + +[buildPlans.IosevkaBerkeley.widths.Normal] +shape = 500 +menu = 5 +css = "normal" + +[buildPlans.IosevkaBerkeley.widths.Extended] +shape = 600 +menu = 7 +css = "expanded" + +[buildPlans.IosevkaBerkeley.widths.Condensed] +shape = 416 +menu = 3 +css = "condensed" + +[buildPlans.IosevkaBerkeley.widths.SemiCondensed] +shape = 456 +menu = 4 +css = "semi-condensed" diff --git a/dot_config/jj/config.toml b/dot_config/jj/config.toml new file mode 100644 index 0000000..11fecbb --- /dev/null +++ b/dot_config/jj/config.toml @@ -0,0 +1,41 @@ +[user] +name = "Barak Michener" +email = "me@barakmich.com" + +[ui] +editor = "nvim" +#default-command = ["log", "--reversed"] +default-command = ["util", "exec", "--", "bash", "-c", "jj log --reversed --no-pager && jj diff -s"] +diff-formatter = ["difft", "--display=inline", "--color=always", "$left", "$right"] +#diff-formatter = ":git" + +[revset-aliases] +'nearby(x)' = 'descendants(ancestors(@, x))::' +'closest_bookmark(to)' = "heads(::to & bookmarks())" + +[revsets] +log = "nearby(8) | @..main@origin | main@origin::@ | @:: | (visible_heads() & mine())" + + +[colors] +"diff token" = { underline = false } + +[templates] +git_push_bookmark = '"barakmich/" ++ change_id.short()' + +[git] +push-new-bookmarks = true +# Prevent pushing work in progress or anything explicitly labeled "private" +private-commits = "description(glob:'wip:*') | description(glob:'private:*') | description(glob:'XXX*')" + +[aliases] +bm = ["bookmark", "move", "--to"] +"bm." = ["bookmark", "move", "--to", "@"] +tug = ["bookmark", "move", "--from", "closest_bookmark(@-)", "--to", "@-"] +"tug." = ["bookmark", "move", "--from", "closest_bookmark(@-)", "--to", "@"] +pull = ["git", "fetch"] +fetch = ["git", "fetch"] +push = ["git", "push"] +p = ["git", "push", "-r", "closest_bookmark(@-)"] +d = ["describe", "-m"] +drop = ["abandon"] diff --git a/dot_config/k9s/config.yml b/dot_config/k9s/config.yml new file mode 100644 index 0000000..9bf600b --- /dev/null +++ b/dot_config/k9s/config.yml @@ -0,0 +1,51 @@ +k9s: + refreshRate: 2 + maxConnRetry: 5 + enableMouse: true + headless: false + logoless: true + crumbsless: false + readOnly: false + noExitOnCtrlC: false + noIcons: true + skipLatestRevCheck: false + logger: + tail: 100 + buffer: 5000 + sinceSeconds: 300 + fullScreenLogs: false + textWrap: false + showTime: false + currentContext: gke_memvp-25499_us-central1-c_ke-cluster-1 + currentCluster: gke_memvp-25499_us-central1-c_ke-cluster-1 + clusters: + gke_memvp-25499_us-central1-c_ke-cluster-1: + namespace: + active: all + lockFavorites: false + favorites: + - backfill + - all + - default + view: + active: job + featureGates: + nodeShell: false + shellPod: + image: busybox:1.35.0 + command: [] + args: [] + namespace: default + limits: + cpu: 100m + memory: 100Mi + labels: {} + portForwardAddress: localhost + thresholds: + cpu: + critical: 90 + warn: 70 + memory: + critical: 90 + warn: 70 + screenDumpDir: /tmp/k9s-screens-barak diff --git a/dot_config/k9s/dot_k9s/config.yml b/dot_config/k9s/dot_k9s/config.yml new file mode 100644 index 0000000..714b868 --- /dev/null +++ b/dot_config/k9s/dot_k9s/config.yml @@ -0,0 +1,46 @@ +k9s: + refreshRate: 2 + maxConnRetry: 5 + enableMouse: true + headless: true + logoless: true + crumbsless: false + readOnly: false + noIcons: true + logger: + tail: 100 + buffer: 5000 + sinceSeconds: 300 + fullScreenLogs: false + textWrap: false + showTime: false + currentContext: kubernetes-admin@kubernetes + currentCluster: kubernetes + clusters: + kubernetes: + namespace: + active: "" + favorites: + - sccache + - all + - default + view: + active: pod + featureGates: + nodeShell: false + shellPod: + image: busybox:1.31 + command: [] + args: [] + namespace: default + limits: + cpu: 100m + memory: 100Mi + portForwardAddress: localhost + thresholds: + cpu: + critical: 90 + warn: 70 + memory: + critical: 90 + warn: 70 diff --git a/dot_config/k9s/hotkey.yml b/dot_config/k9s/hotkey.yml new file mode 100644 index 0000000..2d2d486 --- /dev/null +++ b/dot_config/k9s/hotkey.yml @@ -0,0 +1,13 @@ +hotKey: + shift-1: + shortCut: Shift-1 + description: pods + command: pods + shift-2: + shortCut: Shift-2 + description: deps + command: dp + shift-3: + shortCut: Shift-3 + description: nodes + command: nodes diff --git a/dot_config/ncspot/config.toml b/dot_config/ncspot/config.toml new file mode 100644 index 0000000..9fee54c --- /dev/null +++ b/dot_config/ncspot/config.toml @@ -0,0 +1,16 @@ +[keybindings] +"Esc" = "back" +"Q" = "quit" +"q" = "back" +"1" = "focus queue" +"2" = "focus search" +"3" = "focus library" +"i" = "insert" +"b" = "goto album" +"a" = "goto artist" +"Space" = "playpause" +"Enter" = "play" +"p" = "play" +"o" = "open selected" +"Ctrl+f" = "seek +10000" +"Ctrl+b" = "seek -10000" diff --git a/dot_config/opencode/opencode.jsonc b/dot_config/opencode/opencode.jsonc new file mode 100644 index 0000000..e0c6066 --- /dev/null +++ b/dot_config/opencode/opencode.jsonc @@ -0,0 +1,56 @@ +{ + "$schema": "https://opencode.ai/config.json", + // Theme configuration + "theme": "opencode", + "model": "daystrom/gpt-oss:120b-64k", + "autoupdate": true, + "share": "disabled", + "agent": { + "explorer": { + "mode": "primary", + "description": "Explores a codebase", + "prompt": "You are a senior engineer tasked with analyzing the codebase at hand and answering difficult questions about it in succinct, friendly, and accurate terms. You may search the web for more information. Don't blindly guess; list the files in the codebase. Find the key files and read them to make sure that you understand the implementation as well, like a good engineer.", + "tools": { + "write": false, + "read": true, + "grep": true, + "glob": true, + "list": true, + "todowrite": true, + "todoread": true, + "edit": false, + "bash": true, + "webfetch": true, + }, + }, + }, + "provider": { + "daystrom": { + "npm": "@ai-sdk/openai-compatible", + "name": "Ollama (daystrom)", + "options": { + "baseURL": "http://daystrom:11434/v1" + }, + "models": { + "gpt-oss:120b-64k": { + "name": "GPT-OSS 120b" + }, + "qwen3-coder:30b-a3b-q8_0-256k": { + "name": "Qwen3-Coder" + } + } + }, + "ollama": { + "npm": "@ai-sdk/openai-compatible", + "name": "Ollama (local)", + "options": { + "baseURL": "http://localhost:11434/v1" + }, + "models": { + "gpt-oss:20b-128k": { + "name": "GPT-OSS 20b" + } + } + } + } +} diff --git a/dot_config/private_karabiner/assets/private_complex_modifications/1701202333.json b/dot_config/private_karabiner/assets/private_complex_modifications/1701202333.json new file mode 100644 index 0000000..93ebab3 --- /dev/null +++ b/dot_config/private_karabiner/assets/private_complex_modifications/1701202333.json @@ -0,0 +1,2853 @@ +{ + "rules": [ + { + "description": "Insert (Ctrl) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Insert (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Insert (Shift) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": [ + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Insert (Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": [ + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "up_arrow", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home (Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { + "mandatory": [ + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": [ + "command", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "up_arrow", + "modifiers": [ + "command", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "down_arrow", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End (Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { + "mandatory": [ + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": [ + "command", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "down_arrow", + "modifiers": [ + "command", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Left Arrow (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "left_arrow", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": [ + "option" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Left Arrow (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "left_arrow", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": [ + "option", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Right Arrow (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "right_arrow", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": [ + "option" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Right Arrow (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "right_arrow", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": [ + "option", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Backspace (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "delete_or_backspace", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "delete_or_backspace", + "modifiers": [ + "option" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Delete (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "delete_forward", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "delete_forward", + "modifiers": [ + "option" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Enter (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "return_or_enter", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "return_or_enter", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Enter (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "return_or_enter", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "return_or_enter", + "modifiers": [ + "command", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Win [Open Spotlight]", + "manipulators": [ + { + "from": { + "key_code": "left_command" + }, + "to": [ + { + "key_code": "left_command" + } + ], + "to_if_alone": [ + { + "apple_vendor_keyboard_key_code": "spotlight" + } + ], + "type": "basic" + } + ] + }, + { + "description": "A (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "a", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "a", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "B (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "b", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "b", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "C (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "c", + "modifiers": { + "mandatory": [ + "left_control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "C (Ctrl+Shift) [Only Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "c", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "f", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "f", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "I (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "i", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "i", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "L (Win) [Login Window]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "/System/Library/CoreServices/Menu\\ Extras/User.menu/Contents/Resources/CGSession -suspend" + } + ], + "type": "basic" + } + ] + }, + { + "description": "L (Win) [Lock Screen]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "power", + "modifiers": [ + "control", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "L (Alt+Ctrl) [Login Window]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "control", + "option" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "/System/Library/CoreServices/Menu\\ Extras/User.menu/Contents/Resources/CGSession -suspend" + } + ], + "type": "basic" + } + ] + }, + { + "description": "L (Alt+Ctrl) [Lock Screen]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "control", + "option" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "power", + "modifiers": [ + "control", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "N (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "n", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "n", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "O (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "o", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "o", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "P (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "p", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "p", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "R (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "r", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "r", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "S (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "s", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "s", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "T (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "t", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "t", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "U (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "u", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "u", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "V (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "v", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "V (Ctrl+Shift) [Only Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "v", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "W (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "w", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "w", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "X (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "x", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "x", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Y (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "y", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "y", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Z (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "z", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "z", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "1 (Cmd) [Open Finder]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "1", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b com.apple.finder" + } + ], + "type": "basic" + } + ] + }, + { + "description": "2 (Cmd) [Open first pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "2", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:0:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "3 (Cmd) [Open second pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "3", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:1:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "4 (Cmd) [Open third pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "4", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:2:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "5 (Cmd) [Open fourth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "5", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:3:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "6 (Cmd) [Open fifth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "6", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:4:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "7 (Cmd) [Open sixth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "7", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:5:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "8 (Cmd) [Open eighth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "8", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:6:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "9 (Cmd) [Open ninth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "9", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:7:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "/ (Ctrl) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "slash", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "slash", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Space (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "spacebar", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "spacebar", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F1", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "f1", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "slash", + "modifiers": [ + "command", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F3", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "f3", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "g", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F4 (Alt) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "f4", + "modifiers": { + "mandatory": [ + "option" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "q", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F4 (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "f4", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "w", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + } + ], + "title": "Windows Shortcuts" +} diff --git a/dot_config/private_karabiner/private_automatic_backups/karabiner_20231128.json b/dot_config/private_karabiner/private_automatic_backups/karabiner_20231128.json new file mode 100644 index 0000000..2ebc0af --- /dev/null +++ b/dot_config/private_karabiner/private_automatic_backups/karabiner_20231128.json @@ -0,0 +1,3006 @@ +{ + "global": { + "ask_for_confirmation_before_quitting": true, + "check_for_updates_on_startup": true, + "show_in_menu_bar": true, + "show_profile_name_in_menu_bar": false, + "unsafe_ui": false + }, + "profiles": [ + { + "complex_modifications": { + "parameters": { + "basic.simultaneous_threshold_milliseconds": 50, + "basic.to_delayed_action_delay_milliseconds": 500, + "basic.to_if_alone_timeout_milliseconds": 1000, + "basic.to_if_held_down_threshold_milliseconds": 500, + "mouse_motion_to_scroll.speed": 100 + }, + "rules": [ + { + "description": "Insert (Ctrl) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Insert (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Insert (Shift) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": [ + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Insert (Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": [ + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "up_arrow", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home (Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { + "mandatory": [ + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": [ + "command", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "up_arrow", + "modifiers": [ + "command", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "down_arrow", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End (Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { + "mandatory": [ + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": [ + "command", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "down_arrow", + "modifiers": [ + "command", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Left Arrow (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "left_arrow", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": [ + "option" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Left Arrow (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "left_arrow", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": [ + "option", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Right Arrow (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "right_arrow", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": [ + "option" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Right Arrow (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "right_arrow", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": [ + "option", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Backspace (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "delete_or_backspace", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "delete_or_backspace", + "modifiers": [ + "option" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Delete (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "delete_forward", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "delete_forward", + "modifiers": [ + "option" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Enter (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "return_or_enter", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "return_or_enter", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Enter (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "return_or_enter", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "return_or_enter", + "modifiers": [ + "command", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Win [Open Spotlight]", + "manipulators": [ + { + "from": { + "key_code": "left_command" + }, + "to": [ + { + "key_code": "left_command" + } + ], + "to_if_alone": [ + { + "apple_vendor_keyboard_key_code": "spotlight" + } + ], + "type": "basic" + } + ] + }, + { + "description": "A (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "a", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "a", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "B (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "b", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "b", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "C (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "c", + "modifiers": { + "mandatory": [ + "left_control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "C (Ctrl+Shift) [Only Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "c", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "f", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "f", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "I (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "i", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "i", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "L (Win) [Login Window]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "/System/Library/CoreServices/Menu\\ Extras/User.menu/Contents/Resources/CGSession -suspend" + } + ], + "type": "basic" + } + ] + }, + { + "description": "L (Win) [Lock Screen]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "power", + "modifiers": [ + "control", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "L (Alt+Ctrl) [Login Window]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "control", + "option" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "/System/Library/CoreServices/Menu\\ Extras/User.menu/Contents/Resources/CGSession -suspend" + } + ], + "type": "basic" + } + ] + }, + { + "description": "L (Alt+Ctrl) [Lock Screen]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "control", + "option" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "power", + "modifiers": [ + "control", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "N (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "n", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "n", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "O (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "o", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "o", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "P (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "p", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "p", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "R (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "r", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "r", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "S (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "s", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "s", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "T (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "t", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "t", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "U (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "u", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "u", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "V (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "v", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "V (Ctrl+Shift) [Only Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "v", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "W (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "w", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "w", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "X (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "x", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "x", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Y (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "y", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "y", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Z (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "z", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "z", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "1 (Cmd) [Open Finder]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "1", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b com.apple.finder" + } + ], + "type": "basic" + } + ] + }, + { + "description": "2 (Cmd) [Open first pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "2", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:0:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "3 (Cmd) [Open second pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "3", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:1:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "4 (Cmd) [Open third pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "4", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:2:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "5 (Cmd) [Open fourth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "5", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:3:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "6 (Cmd) [Open fifth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "6", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:4:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "7 (Cmd) [Open sixth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "7", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:5:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "8 (Cmd) [Open eighth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "8", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:6:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "9 (Cmd) [Open ninth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "9", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:7:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "/ (Ctrl) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "slash", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "slash", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Space (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "spacebar", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "spacebar", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F1", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "f1", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "slash", + "modifiers": [ + "command", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F3", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^io\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "f3", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "g", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F4 (Alt) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "f4", + "modifiers": { + "mandatory": [ + "option" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "q", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F4 (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "f4", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "w", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + } + ] + }, + "devices": [], + "fn_function_keys": [ + { + "from": { + "key_code": "f1" + }, + "to": [ + { + "consumer_key_code": "display_brightness_decrement" + } + ] + }, + { + "from": { + "key_code": "f2" + }, + "to": [ + { + "consumer_key_code": "display_brightness_increment" + } + ] + }, + { + "from": { + "key_code": "f3" + }, + "to": [ + { + "apple_vendor_keyboard_key_code": "mission_control" + } + ] + }, + { + "from": { + "key_code": "f4" + }, + "to": [ + { + "apple_vendor_keyboard_key_code": "spotlight" + } + ] + }, + { + "from": { + "key_code": "f5" + }, + "to": [ + { + "consumer_key_code": "dictation" + } + ] + }, + { + "from": { + "key_code": "f6" + }, + "to": [ + { + "key_code": "f6" + } + ] + }, + { + "from": { + "key_code": "f7" + }, + "to": [ + { + "consumer_key_code": "rewind" + } + ] + }, + { + "from": { + "key_code": "f8" + }, + "to": [ + { + "consumer_key_code": "play_or_pause" + } + ] + }, + { + "from": { + "key_code": "f9" + }, + "to": [ + { + "consumer_key_code": "fast_forward" + } + ] + }, + { + "from": { + "key_code": "f10" + }, + "to": [ + { + "consumer_key_code": "mute" + } + ] + }, + { + "from": { + "key_code": "f11" + }, + "to": [ + { + "consumer_key_code": "volume_decrement" + } + ] + }, + { + "from": { + "key_code": "f12" + }, + "to": [ + { + "consumer_key_code": "volume_increment" + } + ] + } + ], + "name": "Default profile", + "parameters": { + "delay_milliseconds_before_open_device": 1000 + }, + "selected": true, + "simple_modifications": [], + "virtual_hid_keyboard": { + "country_code": 0, + "indicate_sticky_modifier_keys_state": true, + "mouse_key_xy_scale": 100 + } + } + ] +} \ No newline at end of file diff --git a/dot_config/private_karabiner/private_automatic_backups/karabiner_20231129.json b/dot_config/private_karabiner/private_automatic_backups/karabiner_20231129.json new file mode 100644 index 0000000..aafebe6 --- /dev/null +++ b/dot_config/private_karabiner/private_automatic_backups/karabiner_20231129.json @@ -0,0 +1,3126 @@ +{ + "global": { + "ask_for_confirmation_before_quitting": true, + "check_for_updates_on_startup": true, + "show_in_menu_bar": true, + "show_profile_name_in_menu_bar": false, + "unsafe_ui": false + }, + "profiles": [ + { + "complex_modifications": { + "parameters": { + "basic.simultaneous_threshold_milliseconds": 50, + "basic.to_delayed_action_delay_milliseconds": 500, + "basic.to_if_alone_timeout_milliseconds": 1000, + "basic.to_if_held_down_threshold_milliseconds": 500, + "mouse_motion_to_scroll.speed": 100 + }, + "rules": [ + { + "description": "Insert (Ctrl) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Insert (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Insert (Shift) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": [ + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Insert (Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": [ + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "up_arrow", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home (Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { + "mandatory": [ + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": [ + "command", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "up_arrow", + "modifiers": [ + "command", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "down_arrow", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End (Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { + "mandatory": [ + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": [ + "command", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "down_arrow", + "modifiers": [ + "command", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Left Arrow (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "left_arrow", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": [ + "option" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Left Arrow (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "left_arrow", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": [ + "option", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Right Arrow (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "right_arrow", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": [ + "option" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Right Arrow (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "right_arrow", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": [ + "option", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Backspace (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "delete_or_backspace", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "delete_or_backspace", + "modifiers": [ + "option" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Delete (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "delete_forward", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "delete_forward", + "modifiers": [ + "option" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Enter (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "return_or_enter", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "return_or_enter", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Enter (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "return_or_enter", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "return_or_enter", + "modifiers": [ + "command", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "A (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "a", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "a", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "B (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "b", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "b", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "C (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "c", + "modifiers": { + "mandatory": [ + "left_control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "C (Ctrl+Shift) [Only Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "c", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Switch Channels [Slack]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^com\\.tinyspeck\\.slackmacgap$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "k", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "k", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Spotlight [Only Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "spacebar", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "spacebar", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "I (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "i", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "i", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "L (Win) [Login Window]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "/System/Library/CoreServices/Menu\\ Extras/User.menu/Contents/Resources/CGSession -suspend" + } + ], + "type": "basic" + } + ] + }, + { + "description": "L (Win) [Lock Screen]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "power", + "modifiers": [ + "control", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "L (Alt+Ctrl) [Login Window]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "control", + "option" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "/System/Library/CoreServices/Menu\\ Extras/User.menu/Contents/Resources/CGSession -suspend" + } + ], + "type": "basic" + } + ] + }, + { + "description": "L (Alt+Ctrl) [Lock Screen]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "control", + "option" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "power", + "modifiers": [ + "control", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "N (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "n", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "n", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "O (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "o", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "o", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "P (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "p", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "p", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "R (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "r", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "r", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "S (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "s", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "s", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "T (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "t", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "t", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "U (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "u", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "u", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "V (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "v", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "V (Ctrl+Shift) [Only Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "v", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "W (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "w", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "w", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "X (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "x", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "x", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Y (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "y", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "y", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Z (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "z", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "z", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "1 (Cmd) [Open Finder]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "1", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b com.apple.finder" + } + ], + "type": "basic" + } + ] + }, + { + "description": "2 (Cmd) [Open first pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "2", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:0:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "3 (Cmd) [Open second pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "3", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:1:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "4 (Cmd) [Open third pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "4", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:2:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "5 (Cmd) [Open fourth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "5", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:3:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "6 (Cmd) [Open fifth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "6", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:4:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "7 (Cmd) [Open sixth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "7", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:5:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "8 (Cmd) [Open eighth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "8", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:6:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "9 (Cmd) [Open ninth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "9", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:7:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "/ (Ctrl) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "slash", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "slash", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Space (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "spacebar", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "spacebar", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F1", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "f1", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "slash", + "modifiers": [ + "command", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F3", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "f3", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "g", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F4 (Alt) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "f4", + "modifiers": { + "mandatory": [ + "option" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "q", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F4 (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "f4", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "w", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + } + ] + }, + "devices": [ + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 0, + "vendor_id": 0 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": false, + "is_pointing_device": true, + "product_id": 0, + "vendor_id": 0 + }, + "ignore": true, + "manipulate_caps_lock_led": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 50475, + "vendor_id": 1133 + }, + "ignore": true, + "manipulate_caps_lock_led": true, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": false, + "is_pointing_device": true, + "product_id": 50475, + "vendor_id": 1133 + }, + "ignore": true, + "manipulate_caps_lock_led": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": true, + "is_pointing_device": true, + "product_id": 32774, + "vendor_id": 3141 + }, + "ignore": true, + "manipulate_caps_lock_led": true, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 32774, + "vendor_id": 3141 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "simple_modifications": [ + { + "from": { + "key_code": "left_command" + }, + "to": [ + { + "key_code": "left_option" + } + ] + }, + { + "from": { + "key_code": "left_option" + }, + "to": [ + { + "key_code": "left_command" + } + ] + } + ], + "treat_as_built_in_keyboard": false + } + ], + "fn_function_keys": [ + { + "from": { + "key_code": "f1" + }, + "to": [ + { + "consumer_key_code": "display_brightness_decrement" + } + ] + }, + { + "from": { + "key_code": "f2" + }, + "to": [ + { + "consumer_key_code": "display_brightness_increment" + } + ] + }, + { + "from": { + "key_code": "f3" + }, + "to": [ + { + "apple_vendor_keyboard_key_code": "mission_control" + } + ] + }, + { + "from": { + "key_code": "f4" + }, + "to": [ + { + "apple_vendor_keyboard_key_code": "spotlight" + } + ] + }, + { + "from": { + "key_code": "f5" + }, + "to": [ + { + "consumer_key_code": "dictation" + } + ] + }, + { + "from": { + "key_code": "f6" + }, + "to": [ + { + "key_code": "f6" + } + ] + }, + { + "from": { + "key_code": "f7" + }, + "to": [ + { + "consumer_key_code": "rewind" + } + ] + }, + { + "from": { + "key_code": "f8" + }, + "to": [ + { + "consumer_key_code": "play_or_pause" + } + ] + }, + { + "from": { + "key_code": "f9" + }, + "to": [ + { + "consumer_key_code": "fast_forward" + } + ] + }, + { + "from": { + "key_code": "f10" + }, + "to": [ + { + "consumer_key_code": "mute" + } + ] + }, + { + "from": { + "key_code": "f11" + }, + "to": [ + { + "consumer_key_code": "volume_decrement" + } + ] + }, + { + "from": { + "key_code": "f12" + }, + "to": [ + { + "consumer_key_code": "volume_increment" + } + ] + } + ], + "name": "Default profile", + "parameters": { + "delay_milliseconds_before_open_device": 1000 + }, + "selected": true, + "simple_modifications": [ + { + "from": { + "key_code": "caps_lock" + }, + "to": [ + { + "key_code": "left_control" + } + ] + } + ], + "virtual_hid_keyboard": { + "country_code": 0, + "indicate_sticky_modifier_keys_state": true, + "mouse_key_xy_scale": 100 + } + } + ] +} diff --git a/dot_config/private_karabiner/private_automatic_backups/karabiner_20231130.json b/dot_config/private_karabiner/private_automatic_backups/karabiner_20231130.json new file mode 100644 index 0000000..5e2c3d8 --- /dev/null +++ b/dot_config/private_karabiner/private_automatic_backups/karabiner_20231130.json @@ -0,0 +1,3126 @@ +{ + "global": { + "ask_for_confirmation_before_quitting": true, + "check_for_updates_on_startup": true, + "show_in_menu_bar": true, + "show_profile_name_in_menu_bar": false, + "unsafe_ui": false + }, + "profiles": [ + { + "complex_modifications": { + "parameters": { + "basic.simultaneous_threshold_milliseconds": 50, + "basic.to_delayed_action_delay_milliseconds": 500, + "basic.to_if_alone_timeout_milliseconds": 1000, + "basic.to_if_held_down_threshold_milliseconds": 500, + "mouse_motion_to_scroll.speed": 100 + }, + "rules": [ + { + "description": "Insert (Ctrl) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Insert (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Insert (Shift) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": [ + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Insert (Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": [ + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "up_arrow", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home (Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { + "mandatory": [ + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": [ + "command", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "up_arrow", + "modifiers": [ + "command", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "down_arrow", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End (Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { + "mandatory": [ + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": [ + "command", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "down_arrow", + "modifiers": [ + "command", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Left Arrow (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "left_arrow", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": [ + "option" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Left Arrow (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "left_arrow", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": [ + "option", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Right Arrow (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "right_arrow", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": [ + "option" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Right Arrow (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "right_arrow", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": [ + "option", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Backspace (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "delete_or_backspace", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "delete_or_backspace", + "modifiers": [ + "option" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Delete (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "delete_forward", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "delete_forward", + "modifiers": [ + "option" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Enter (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "return_or_enter", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "return_or_enter", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Enter (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "return_or_enter", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "return_or_enter", + "modifiers": [ + "command", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "A (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "a", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "a", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "B (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "b", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "b", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "C (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "c", + "modifiers": { + "mandatory": [ + "left_control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "C (Ctrl+Shift) [Only Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "c", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Switch Channels [Slack]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^com\\.tinyspeck\\.slackmacgap$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "k", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "k", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Spotlight [Only Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "spacebar", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "spacebar", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "I (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "i", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "i", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "L (Win) [Login Window]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "/System/Library/CoreServices/Menu\\ Extras/User.menu/Contents/Resources/CGSession -suspend" + } + ], + "type": "basic" + } + ] + }, + { + "description": "L (Win) [Lock Screen]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "power", + "modifiers": [ + "control", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "L (Alt+Ctrl) [Login Window]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "control", + "option" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "/System/Library/CoreServices/Menu\\ Extras/User.menu/Contents/Resources/CGSession -suspend" + } + ], + "type": "basic" + } + ] + }, + { + "description": "L (Alt+Ctrl) [Lock Screen]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "control", + "option" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "power", + "modifiers": [ + "control", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "N (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "n", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "n", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "O (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "o", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "o", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "P (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "p", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "p", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "R (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "r", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "r", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "S (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "s", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "s", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "T (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "t", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "t", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "U (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "u", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "u", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "V (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "v", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "V (Ctrl+Shift) [Only Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "v", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "W (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "w", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "w", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "X (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "x", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "x", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Y (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "y", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "y", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Z (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "z", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "z", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "1 (Cmd) [Open Finder]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "1", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b com.apple.finder" + } + ], + "type": "basic" + } + ] + }, + { + "description": "2 (Cmd) [Open first pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "2", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:0:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "3 (Cmd) [Open second pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "3", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:1:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "4 (Cmd) [Open third pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "4", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:2:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "5 (Cmd) [Open fourth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "5", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:3:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "6 (Cmd) [Open fifth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "6", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:4:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "7 (Cmd) [Open sixth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "7", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:5:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "8 (Cmd) [Open eighth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "8", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:6:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "9 (Cmd) [Open ninth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "9", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:7:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "/ (Ctrl) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "slash", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "slash", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Space (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "spacebar", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "spacebar", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F1", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "f1", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "slash", + "modifiers": [ + "command", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F3", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "f3", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "g", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F4 (Alt) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "f4", + "modifiers": { + "mandatory": [ + "option" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "q", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F4 (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "f4", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "w", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + } + ] + }, + "devices": [ + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 0, + "vendor_id": 0 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": false, + "is_pointing_device": true, + "product_id": 0, + "vendor_id": 0 + }, + "ignore": true, + "manipulate_caps_lock_led": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 50475, + "vendor_id": 1133 + }, + "ignore": true, + "manipulate_caps_lock_led": true, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": false, + "is_pointing_device": true, + "product_id": 50475, + "vendor_id": 1133 + }, + "ignore": true, + "manipulate_caps_lock_led": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": true, + "is_pointing_device": true, + "product_id": 32774, + "vendor_id": 3141 + }, + "ignore": true, + "manipulate_caps_lock_led": true, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 32774, + "vendor_id": 3141 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "simple_modifications": [ + { + "from": { + "key_code": "left_command" + }, + "to": [ + { + "key_code": "left_option" + } + ] + }, + { + "from": { + "key_code": "left_option" + }, + "to": [ + { + "key_code": "left_command" + } + ] + } + ], + "treat_as_built_in_keyboard": false + } + ], + "fn_function_keys": [ + { + "from": { + "key_code": "f1" + }, + "to": [ + { + "consumer_key_code": "display_brightness_decrement" + } + ] + }, + { + "from": { + "key_code": "f2" + }, + "to": [ + { + "consumer_key_code": "display_brightness_increment" + } + ] + }, + { + "from": { + "key_code": "f3" + }, + "to": [ + { + "apple_vendor_keyboard_key_code": "mission_control" + } + ] + }, + { + "from": { + "key_code": "f4" + }, + "to": [ + { + "apple_vendor_keyboard_key_code": "spotlight" + } + ] + }, + { + "from": { + "key_code": "f5" + }, + "to": [ + { + "consumer_key_code": "dictation" + } + ] + }, + { + "from": { + "key_code": "f6" + }, + "to": [ + { + "key_code": "f6" + } + ] + }, + { + "from": { + "key_code": "f7" + }, + "to": [ + { + "consumer_key_code": "rewind" + } + ] + }, + { + "from": { + "key_code": "f8" + }, + "to": [ + { + "consumer_key_code": "play_or_pause" + } + ] + }, + { + "from": { + "key_code": "f9" + }, + "to": [ + { + "consumer_key_code": "fast_forward" + } + ] + }, + { + "from": { + "key_code": "f10" + }, + "to": [ + { + "consumer_key_code": "mute" + } + ] + }, + { + "from": { + "key_code": "f11" + }, + "to": [ + { + "consumer_key_code": "volume_decrement" + } + ] + }, + { + "from": { + "key_code": "f12" + }, + "to": [ + { + "consumer_key_code": "volume_increment" + } + ] + } + ], + "name": "Default profile", + "parameters": { + "delay_milliseconds_before_open_device": 1000 + }, + "selected": true, + "simple_modifications": [ + { + "from": { + "key_code": "caps_lock" + }, + "to": [ + { + "key_code": "left_control" + } + ] + } + ], + "virtual_hid_keyboard": { + "country_code": 0, + "indicate_sticky_modifier_keys_state": true, + "mouse_key_xy_scale": 100 + } + } + ] +} \ No newline at end of file diff --git a/dot_config/private_karabiner/private_automatic_backups/karabiner_20240108.json b/dot_config/private_karabiner/private_automatic_backups/karabiner_20240108.json new file mode 100644 index 0000000..b1eb810 --- /dev/null +++ b/dot_config/private_karabiner/private_automatic_backups/karabiner_20240108.json @@ -0,0 +1,3214 @@ +{ + "global": { + "ask_for_confirmation_before_quitting": true, + "check_for_updates_on_startup": true, + "show_in_menu_bar": true, + "show_profile_name_in_menu_bar": false, + "unsafe_ui": false + }, + "profiles": [ + { + "complex_modifications": { + "parameters": { + "basic.simultaneous_threshold_milliseconds": 50, + "basic.to_delayed_action_delay_milliseconds": 500, + "basic.to_if_alone_timeout_milliseconds": 1000, + "basic.to_if_held_down_threshold_milliseconds": 500, + "mouse_motion_to_scroll.speed": 100 + }, + "rules": [ + { + "description": "Insert (Ctrl) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Insert (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Insert (Shift) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": [ + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Insert (Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": [ + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "up_arrow", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home (Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { + "mandatory": [ + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": [ + "command", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "up_arrow", + "modifiers": [ + "command", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "down_arrow", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End (Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { + "mandatory": [ + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": [ + "command", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "down_arrow", + "modifiers": [ + "command", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Left Arrow (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "left_arrow", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": [ + "option" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Left Arrow (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "left_arrow", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": [ + "option", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Right Arrow (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "right_arrow", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": [ + "option" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Right Arrow (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "right_arrow", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": [ + "option", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Backspace (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "delete_or_backspace", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "delete_or_backspace", + "modifiers": [ + "option" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Delete (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "delete_forward", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "delete_forward", + "modifiers": [ + "option" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Enter (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "return_or_enter", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "return_or_enter", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Enter (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "return_or_enter", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "return_or_enter", + "modifiers": [ + "command", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "A (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "a", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "a", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "B (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "b", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "b", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "C (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "c", + "modifiers": { + "mandatory": [ + "left_control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "C (Ctrl+Shift) [Only Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "c", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Switch Channels [Slack]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^com\\.tinyspeck\\.slackmacgap$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "k", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "k", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Spotlight [Only Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "spacebar", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "spacebar", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "I (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "i", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "i", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "L (Win) [Login Window]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "/System/Library/CoreServices/Menu\\ Extras/User.menu/Contents/Resources/CGSession -suspend" + } + ], + "type": "basic" + } + ] + }, + { + "description": "L (Win) [Lock Screen]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "power", + "modifiers": [ + "control", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "L (Alt+Ctrl) [Login Window]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "control", + "option" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "/System/Library/CoreServices/Menu\\ Extras/User.menu/Contents/Resources/CGSession -suspend" + } + ], + "type": "basic" + } + ] + }, + { + "description": "L (Alt+Ctrl) [Lock Screen]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "control", + "option" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "power", + "modifiers": [ + "control", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "N (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "n", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "n", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "O (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "o", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "o", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "P (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "p", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "p", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "R (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "r", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "r", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "S (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "s", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "s", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "T (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "t", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "t", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "U (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "u", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "u", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "V (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "v", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "V (Ctrl+Shift) [Only Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "v", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "W (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "w", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "w", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "X (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "x", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "x", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Y (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "y", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "y", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Z (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "z", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "z", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "1 (Cmd) [Open Finder]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "1", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b com.apple.finder" + } + ], + "type": "basic" + } + ] + }, + { + "description": "2 (Cmd) [Open first pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "2", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:0:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "3 (Cmd) [Open second pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "3", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:1:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "4 (Cmd) [Open third pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "4", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:2:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "5 (Cmd) [Open fourth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "5", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:3:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "6 (Cmd) [Open fifth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "6", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:4:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "7 (Cmd) [Open sixth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "7", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:5:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "8 (Cmd) [Open eighth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "8", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:6:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "9 (Cmd) [Open ninth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "9", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:7:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "/ (Ctrl) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "slash", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "slash", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Space (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "spacebar", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "spacebar", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F1", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "f1", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "slash", + "modifiers": [ + "command", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F3", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "f3", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "g", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F4 (Alt) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "f4", + "modifiers": { + "mandatory": [ + "option" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "q", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F4 (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "f4", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "w", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + } + ] + }, + "devices": [ + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 0, + "vendor_id": 0 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": false, + "is_pointing_device": true, + "product_id": 0, + "vendor_id": 0 + }, + "ignore": true, + "manipulate_caps_lock_led": false, + "simple_modifications": [ + { + "from": { + "key_code": "caps_lock" + }, + "to": [ + { + "key_code": "left_command" + } + ] + } + ], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 50475, + "vendor_id": 1133 + }, + "ignore": true, + "manipulate_caps_lock_led": true, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": false, + "is_pointing_device": true, + "product_id": 50475, + "vendor_id": 1133 + }, + "ignore": true, + "manipulate_caps_lock_led": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": true, + "is_pointing_device": true, + "product_id": 32774, + "vendor_id": 3141 + }, + "ignore": true, + "manipulate_caps_lock_led": true, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 32774, + "vendor_id": 3141 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "simple_modifications": [ + { + "from": { + "key_code": "left_command" + }, + "to": [ + { + "key_code": "left_option" + } + ] + }, + { + "from": { + "key_code": "left_option" + }, + "to": [ + { + "key_code": "left_command" + } + ] + } + ], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 29699, + "vendor_id": 3141 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "simple_modifications": [ + { + "from": { + "key_code": "left_option" + }, + "to": [ + { + "key_code": "left_command" + } + ] + }, + { + "from": { + "key_code": "left_command" + }, + "to": [ + { + "key_code": "left_option" + } + ] + } + ], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": false, + "is_pointing_device": true, + "product_id": 29699, + "vendor_id": 3141 + }, + "ignore": true, + "manipulate_caps_lock_led": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 50504, + "vendor_id": 1133 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": false, + "is_pointing_device": true, + "product_id": 50504, + "vendor_id": 1133 + }, + "ignore": true, + "manipulate_caps_lock_led": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + } + ], + "fn_function_keys": [ + { + "from": { + "key_code": "f1" + }, + "to": [ + { + "consumer_key_code": "display_brightness_decrement" + } + ] + }, + { + "from": { + "key_code": "f2" + }, + "to": [ + { + "consumer_key_code": "display_brightness_increment" + } + ] + }, + { + "from": { + "key_code": "f3" + }, + "to": [ + { + "apple_vendor_keyboard_key_code": "mission_control" + } + ] + }, + { + "from": { + "key_code": "f4" + }, + "to": [ + { + "apple_vendor_keyboard_key_code": "spotlight" + } + ] + }, + { + "from": { + "key_code": "f5" + }, + "to": [ + { + "consumer_key_code": "dictation" + } + ] + }, + { + "from": { + "key_code": "f6" + }, + "to": [ + { + "key_code": "f6" + } + ] + }, + { + "from": { + "key_code": "f7" + }, + "to": [ + { + "consumer_key_code": "rewind" + } + ] + }, + { + "from": { + "key_code": "f8" + }, + "to": [ + { + "consumer_key_code": "play_or_pause" + } + ] + }, + { + "from": { + "key_code": "f9" + }, + "to": [ + { + "consumer_key_code": "fast_forward" + } + ] + }, + { + "from": { + "key_code": "f10" + }, + "to": [ + { + "consumer_key_code": "mute" + } + ] + }, + { + "from": { + "key_code": "f11" + }, + "to": [ + { + "consumer_key_code": "volume_decrement" + } + ] + }, + { + "from": { + "key_code": "f12" + }, + "to": [ + { + "consumer_key_code": "volume_increment" + } + ] + } + ], + "name": "Default profile", + "parameters": { + "delay_milliseconds_before_open_device": 1000 + }, + "selected": true, + "simple_modifications": [ + { + "from": { + "key_code": "caps_lock" + }, + "to": [ + { + "key_code": "left_control" + } + ] + } + ], + "virtual_hid_keyboard": { + "country_code": 0, + "indicate_sticky_modifier_keys_state": true, + "mouse_key_xy_scale": 100 + } + } + ] +} \ No newline at end of file diff --git a/dot_config/private_karabiner/private_automatic_backups/karabiner_20240109.json b/dot_config/private_karabiner/private_automatic_backups/karabiner_20240109.json new file mode 100644 index 0000000..abace6a --- /dev/null +++ b/dot_config/private_karabiner/private_automatic_backups/karabiner_20240109.json @@ -0,0 +1,3461 @@ +{ + "global": { + "ask_for_confirmation_before_quitting": true, + "check_for_updates_on_startup": true, + "show_in_menu_bar": true, + "show_profile_name_in_menu_bar": false, + "unsafe_ui": false + }, + "profiles": [ + { + "complex_modifications": { + "parameters": { + "basic.simultaneous_threshold_milliseconds": 50, + "basic.to_delayed_action_delay_milliseconds": 500, + "basic.to_if_alone_timeout_milliseconds": 1000, + "basic.to_if_held_down_threshold_milliseconds": 500, + "mouse_motion_to_scroll.speed": 100 + }, + "rules": [ + { + "description": "G (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.mozilla\\.firefox$", + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "g", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "g", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.mozilla\\.firefox$", + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "f", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "f", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "4 (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.mozilla\\.firefox$", + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "4", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "4", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "3 (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.mozilla\\.firefox$", + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "3", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "3", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "2 (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.mozilla\\.firefox$", + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "2", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "2", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "1 (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.mozilla\\.firefox$", + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "1", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "1", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Insert (Ctrl) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Insert (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Insert (Shift) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": [ + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Insert (Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": [ + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "up_arrow", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home (Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { + "mandatory": [ + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": [ + "command", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "up_arrow", + "modifiers": [ + "command", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "down_arrow", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End (Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { + "mandatory": [ + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": [ + "command", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "down_arrow", + "modifiers": [ + "command", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Left Arrow (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "left_arrow", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": [ + "option" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Left Arrow (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "left_arrow", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": [ + "option", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Right Arrow (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "right_arrow", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": [ + "option" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Right Arrow (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "right_arrow", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": [ + "option", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Backspace (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "delete_or_backspace", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "delete_or_backspace", + "modifiers": [ + "option" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Delete (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "delete_forward", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "delete_forward", + "modifiers": [ + "option" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Enter (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "return_or_enter", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "return_or_enter", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Enter (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "return_or_enter", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "return_or_enter", + "modifiers": [ + "command", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "A (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "a", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "a", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "B (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "b", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "b", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "C (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "c", + "modifiers": { + "mandatory": [ + "left_control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "C (Ctrl+Shift) [Only Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "c", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Switch Channels [Slack]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^com\\.tinyspeck\\.slackmacgap$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "k", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "k", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Spotlight [Only Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "spacebar", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "spacebar", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "I (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "i", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "i", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "L (Win) [Login Window]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "/System/Library/CoreServices/Menu\\ Extras/User.menu/Contents/Resources/CGSession -suspend" + } + ], + "type": "basic" + } + ] + }, + { + "description": "L (Win) [Lock Screen]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "power", + "modifiers": [ + "control", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "L (Alt+Ctrl) [Login Window]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "control", + "option" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "/System/Library/CoreServices/Menu\\ Extras/User.menu/Contents/Resources/CGSession -suspend" + } + ], + "type": "basic" + } + ] + }, + { + "description": "L (Alt+Ctrl) [Lock Screen]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "control", + "option" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "power", + "modifiers": [ + "control", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "N (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "n", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "n", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "O (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "o", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "o", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "P (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "p", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "p", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "R (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "r", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "r", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "S (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "s", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "s", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "T (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "t", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "t", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "U (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "u", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "u", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "V (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "v", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "V (Ctrl+Shift) [Only Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "v", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "W (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "w", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "w", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "X (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "x", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "x", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Y (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "y", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "y", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Z (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "z", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "z", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "1 (Cmd) [Open Finder]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "1", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b com.apple.finder" + } + ], + "type": "basic" + } + ] + }, + { + "description": "3 (Cmd) [Open second pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "3", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:1:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "4 (Cmd) [Open third pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "4", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:2:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "5 (Cmd) [Open fourth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "5", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:3:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "6 (Cmd) [Open fifth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "6", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:4:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "7 (Cmd) [Open sixth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "7", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:5:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "8 (Cmd) [Open eighth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "8", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:6:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "9 (Cmd) [Open ninth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "9", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:7:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "/ (Ctrl) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "slash", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "slash", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Space (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "spacebar", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "spacebar", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F1", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "f1", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "slash", + "modifiers": [ + "command", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F3", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "f3", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "g", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F4 (Alt) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "f4", + "modifiers": { + "mandatory": [ + "option" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "q", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F4 (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "f4", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "w", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + } + ] + }, + "devices": [ + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 0, + "vendor_id": 0 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": false, + "is_pointing_device": true, + "product_id": 0, + "vendor_id": 0 + }, + "ignore": true, + "manipulate_caps_lock_led": false, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [ + { + "from": { + "key_code": "caps_lock" + }, + "to": [ + { + "key_code": "left_command" + } + ] + } + ], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 50475, + "vendor_id": 1133 + }, + "ignore": true, + "manipulate_caps_lock_led": true, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": false, + "is_pointing_device": true, + "product_id": 50475, + "vendor_id": 1133 + }, + "ignore": true, + "manipulate_caps_lock_led": false, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": true, + "is_pointing_device": true, + "product_id": 32774, + "vendor_id": 3141 + }, + "ignore": true, + "manipulate_caps_lock_led": true, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 32774, + "vendor_id": 3141 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [ + { + "from": { + "key_code": "left_command" + }, + "to": [ + { + "key_code": "left_option" + } + ] + }, + { + "from": { + "key_code": "left_option" + }, + "to": [ + { + "key_code": "left_command" + } + ] + } + ], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 29699, + "vendor_id": 3141 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [ + { + "from": { + "key_code": "left_command" + }, + "to": [ + { + "key_code": "left_option" + } + ] + }, + { + "from": { + "key_code": "left_option" + }, + "to": [ + { + "key_code": "left_command" + } + ] + } + ], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": false, + "is_pointing_device": true, + "product_id": 29699, + "vendor_id": 3141 + }, + "ignore": true, + "manipulate_caps_lock_led": false, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 50504, + "vendor_id": 1133 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": false, + "is_pointing_device": true, + "product_id": 50504, + "vendor_id": 1133 + }, + "ignore": true, + "manipulate_caps_lock_led": false, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + } + ], + "fn_function_keys": [ + { + "from": { + "key_code": "f1" + }, + "to": [ + { + "consumer_key_code": "display_brightness_decrement" + } + ] + }, + { + "from": { + "key_code": "f2" + }, + "to": [ + { + "consumer_key_code": "display_brightness_increment" + } + ] + }, + { + "from": { + "key_code": "f3" + }, + "to": [ + { + "apple_vendor_keyboard_key_code": "mission_control" + } + ] + }, + { + "from": { + "key_code": "f4" + }, + "to": [ + { + "apple_vendor_keyboard_key_code": "spotlight" + } + ] + }, + { + "from": { + "key_code": "f5" + }, + "to": [ + { + "consumer_key_code": "dictation" + } + ] + }, + { + "from": { + "key_code": "f6" + }, + "to": [ + { + "key_code": "f6" + } + ] + }, + { + "from": { + "key_code": "f7" + }, + "to": [ + { + "consumer_key_code": "rewind" + } + ] + }, + { + "from": { + "key_code": "f8" + }, + "to": [ + { + "consumer_key_code": "play_or_pause" + } + ] + }, + { + "from": { + "key_code": "f9" + }, + "to": [ + { + "consumer_key_code": "fast_forward" + } + ] + }, + { + "from": { + "key_code": "f10" + }, + "to": [ + { + "consumer_key_code": "mute" + } + ] + }, + { + "from": { + "key_code": "f11" + }, + "to": [ + { + "consumer_key_code": "volume_decrement" + } + ] + }, + { + "from": { + "key_code": "f12" + }, + "to": [ + { + "consumer_key_code": "volume_increment" + } + ] + } + ], + "name": "Default profile", + "parameters": { + "delay_milliseconds_before_open_device": 1000 + }, + "selected": true, + "simple_modifications": [ + { + "from": { + "key_code": "caps_lock" + }, + "to": [ + { + "key_code": "left_control" + } + ] + } + ], + "virtual_hid_keyboard": { + "country_code": 0, + "indicate_sticky_modifier_keys_state": true, + "mouse_key_xy_scale": 100 + } + } + ] +} \ No newline at end of file diff --git a/dot_config/private_karabiner/private_automatic_backups/karabiner_20250127.json b/dot_config/private_karabiner/private_automatic_backups/karabiner_20250127.json new file mode 100644 index 0000000..8b34fbb --- /dev/null +++ b/dot_config/private_karabiner/private_automatic_backups/karabiner_20250127.json @@ -0,0 +1,3557 @@ +{ + "global": { + "ask_for_confirmation_before_quitting": true, + "check_for_updates_on_startup": true, + "show_in_menu_bar": true, + "show_profile_name_in_menu_bar": false, + "unsafe_ui": false + }, + "profiles": [ + { + "complex_modifications": { + "parameters": { + "basic.simultaneous_threshold_milliseconds": 50, + "basic.to_delayed_action_delay_milliseconds": 500, + "basic.to_if_alone_timeout_milliseconds": 1000, + "basic.to_if_held_down_threshold_milliseconds": 500, + "mouse_motion_to_scroll.speed": 100 + }, + "rules": [ + { + "description": "L (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "l", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "New Alacritty", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "return_or_enter", + "modifiers": { + "mandatory": [ + "shift", + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -n /Applications/Alacritty.app" + } + ], + "type": "basic" + } + ] + }, + { + "description": "G (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.mozilla\\.firefox$", + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "g", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "g", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.mozilla\\.firefox$", + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "f", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "f", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "4 (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.mozilla\\.firefox$", + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "4", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "4", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "3 (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.mozilla\\.firefox$", + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "3", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "3", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "2 (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.mozilla\\.firefox$", + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "2", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "2", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "1 (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.mozilla\\.firefox$", + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "1", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "1", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Insert (Ctrl) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Insert (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Insert (Shift) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": [ + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Insert (Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": [ + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "up_arrow", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home (Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { + "mandatory": [ + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": [ + "command", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "up_arrow", + "modifiers": [ + "command", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "down_arrow", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End (Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { + "mandatory": [ + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": [ + "command", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "down_arrow", + "modifiers": [ + "command", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Left Arrow (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "left_arrow", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": [ + "option" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Left Arrow (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "left_arrow", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": [ + "option", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Right Arrow (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "right_arrow", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": [ + "option" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Right Arrow (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "right_arrow", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": [ + "option", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Backspace (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "delete_or_backspace", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "delete_or_backspace", + "modifiers": [ + "option" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Delete (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "delete_forward", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "delete_forward", + "modifiers": [ + "option" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Enter (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "return_or_enter", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "return_or_enter", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Enter (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "return_or_enter", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "return_or_enter", + "modifiers": [ + "command", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "A (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "a", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "a", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "B (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "b", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "b", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "C (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "c", + "modifiers": { + "mandatory": [ + "left_control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "C (Ctrl+Shift) [Only Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "c", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Switch Channels [Slack]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^com\\.tinyspeck\\.slackmacgap$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "k", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "k", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Spotlight [Only Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "spacebar", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "spacebar", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "I (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "i", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "i", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "L (Win) [Login Window]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "/System/Library/CoreServices/Menu\\ Extras/User.menu/Contents/Resources/CGSession -suspend" + } + ], + "type": "basic" + } + ] + }, + { + "description": "L (Win) [Lock Screen]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "power", + "modifiers": [ + "control", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "L (Alt+Ctrl) [Login Window]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "control", + "option" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "/System/Library/CoreServices/Menu\\ Extras/User.menu/Contents/Resources/CGSession -suspend" + } + ], + "type": "basic" + } + ] + }, + { + "description": "L (Alt+Ctrl) [Lock Screen]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "control", + "option" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "power", + "modifiers": [ + "control", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "N (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "n", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "n", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "O (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "o", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "o", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "P (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "p", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "p", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "R (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "r", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "r", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "S (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "s", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "s", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "T (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "t", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "t", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "U (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "u", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "u", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "V (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "v", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "V (Ctrl+Shift) [Only Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "v", + "modifiers": { + "mandatory": [ + "control", + "shift" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "W (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "w", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "w", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "X (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "x", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "x", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Y (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "y", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "y", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Z (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "z", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "z", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "1 (Cmd) [Open Finder]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "1", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b com.apple.finder" + } + ], + "type": "basic" + } + ] + }, + { + "description": "3 (Cmd) [Open second pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "3", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:1:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "4 (Cmd) [Open third pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "4", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:2:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "5 (Cmd) [Open fourth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "5", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:3:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "6 (Cmd) [Open fifth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "6", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:4:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "7 (Cmd) [Open sixth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "7", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:5:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "8 (Cmd) [Open eighth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "8", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:6:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "9 (Cmd) [Open ninth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "9", + "modifiers": { + "mandatory": [ + "command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:7:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" + } + ], + "type": "basic" + } + ] + }, + { + "description": "/ (Ctrl) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "slash", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "slash", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Space (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "spacebar", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "spacebar", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F1", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "f1", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "slash", + "modifiers": [ + "command", + "shift" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F3", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "f3", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "g", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F4 (Alt) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$" + ], + "file_paths": [ + "Chrome Remote Desktop\\.app" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "f4", + "modifiers": { + "mandatory": [ + "option" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "q", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F4 (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "f4", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "w", + "modifiers": [ + "command" + ] + } + ], + "type": "basic" + } + ] + } + ] + }, + "devices": [ + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 0, + "vendor_id": 0 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": false, + "is_pointing_device": true, + "product_id": 0, + "vendor_id": 0 + }, + "ignore": true, + "manipulate_caps_lock_led": false, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [ + { + "from": { + "key_code": "caps_lock" + }, + "to": [ + { + "key_code": "left_command" + } + ] + } + ], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 50475, + "vendor_id": 1133 + }, + "ignore": true, + "manipulate_caps_lock_led": true, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": false, + "is_pointing_device": true, + "product_id": 50475, + "vendor_id": 1133 + }, + "ignore": true, + "manipulate_caps_lock_led": false, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": true, + "is_pointing_device": true, + "product_id": 32774, + "vendor_id": 3141 + }, + "ignore": true, + "manipulate_caps_lock_led": true, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 32774, + "vendor_id": 3141 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [ + { + "from": { + "key_code": "left_command" + }, + "to": [ + { + "key_code": "left_option" + } + ] + }, + { + "from": { + "key_code": "left_option" + }, + "to": [ + { + "key_code": "left_command" + } + ] + } + ], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 29699, + "vendor_id": 3141 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [ + { + "from": { + "key_code": "left_command" + }, + "to": [ + { + "key_code": "left_option" + } + ] + }, + { + "from": { + "key_code": "left_option" + }, + "to": [ + { + "key_code": "left_command" + } + ] + } + ], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": false, + "is_pointing_device": true, + "product_id": 29699, + "vendor_id": 3141 + }, + "ignore": true, + "manipulate_caps_lock_led": false, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 50504, + "vendor_id": 1133 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": false, + "is_pointing_device": true, + "product_id": 50504, + "vendor_id": 1133 + }, + "ignore": true, + "manipulate_caps_lock_led": false, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + } + ], + "fn_function_keys": [ + { + "from": { + "key_code": "f1" + }, + "to": [ + { + "consumer_key_code": "display_brightness_decrement" + } + ] + }, + { + "from": { + "key_code": "f2" + }, + "to": [ + { + "consumer_key_code": "display_brightness_increment" + } + ] + }, + { + "from": { + "key_code": "f3" + }, + "to": [ + { + "apple_vendor_keyboard_key_code": "mission_control" + } + ] + }, + { + "from": { + "key_code": "f4" + }, + "to": [ + { + "apple_vendor_keyboard_key_code": "spotlight" + } + ] + }, + { + "from": { + "key_code": "f5" + }, + "to": [ + { + "consumer_key_code": "dictation" + } + ] + }, + { + "from": { + "key_code": "f6" + }, + "to": [ + { + "key_code": "f6" + } + ] + }, + { + "from": { + "key_code": "f7" + }, + "to": [ + { + "consumer_key_code": "rewind" + } + ] + }, + { + "from": { + "key_code": "f8" + }, + "to": [ + { + "consumer_key_code": "play_or_pause" + } + ] + }, + { + "from": { + "key_code": "f9" + }, + "to": [ + { + "consumer_key_code": "fast_forward" + } + ] + }, + { + "from": { + "key_code": "f10" + }, + "to": [ + { + "consumer_key_code": "mute" + } + ] + }, + { + "from": { + "key_code": "f11" + }, + "to": [ + { + "consumer_key_code": "volume_decrement" + } + ] + }, + { + "from": { + "key_code": "f12" + }, + "to": [ + { + "consumer_key_code": "volume_increment" + } + ] + } + ], + "name": "Default profile", + "parameters": { + "delay_milliseconds_before_open_device": 1000 + }, + "selected": true, + "simple_modifications": [ + { + "from": { + "key_code": "caps_lock" + }, + "to": [ + { + "key_code": "left_control" + } + ] + } + ], + "virtual_hid_keyboard": { + "country_code": 0, + "indicate_sticky_modifier_keys_state": true, + "mouse_key_xy_scale": 100 + } + } + ] +} \ No newline at end of file diff --git a/dot_config/private_karabiner/private_automatic_backups/karabiner_20250428.json b/dot_config/private_karabiner/private_automatic_backups/karabiner_20250428.json new file mode 100644 index 0000000..468f05b --- /dev/null +++ b/dot_config/private_karabiner/private_automatic_backups/karabiner_20250428.json @@ -0,0 +1,2649 @@ +{ + "profiles": [ + { + "complex_modifications": { + "rules": [ + { + "description": "L (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "l", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "l", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "New Alacritty", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "return_or_enter", + "modifiers": { + "mandatory": ["shift", "command"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -n /Applications/Alacritty.app" }], + "type": "basic" + } + ] + }, + { + "description": "G (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.mozilla\\.firefox$", + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "g", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "g", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.mozilla\\.firefox$", + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "f", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "f", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "4 (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.mozilla\\.firefox$", + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "4", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "4", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "3 (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.mozilla\\.firefox$", + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "3", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "3", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "2 (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.mozilla\\.firefox$", + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "2", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "2", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "1 (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.mozilla\\.firefox$", + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "1", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "1", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Insert (Ctrl) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Insert (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Insert (Shift) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": ["shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Insert (Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": ["shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { "optional": ["any"] } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "up_arrow", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home (Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { + "mandatory": ["shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": ["command", "shift"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { + "mandatory": ["control", "shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "up_arrow", + "modifiers": ["command", "shift"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { "optional": ["any"] } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "down_arrow", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End (Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { + "mandatory": ["shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": ["command", "shift"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { + "mandatory": ["control", "shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "down_arrow", + "modifiers": ["command", "shift"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Left Arrow (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "left_arrow", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": ["option"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Left Arrow (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "left_arrow", + "modifiers": { + "mandatory": ["control", "shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": ["option", "shift"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Right Arrow (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "right_arrow", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": ["option"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Right Arrow (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "right_arrow", + "modifiers": { + "mandatory": ["control", "shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": ["option", "shift"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Backspace (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "delete_or_backspace", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "delete_or_backspace", + "modifiers": ["option"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Delete (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "delete_forward", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "delete_forward", + "modifiers": ["option"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Enter (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "return_or_enter", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "return_or_enter", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Enter (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "return_or_enter", + "modifiers": { + "mandatory": ["control", "shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "return_or_enter", + "modifiers": ["command", "shift"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "A (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "a", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "a", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "B (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "b", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "b", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "C (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "c", + "modifiers": { + "mandatory": ["left_control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "C (Ctrl+Shift) [Only Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "c", + "modifiers": { + "mandatory": ["control", "shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Switch Channels [Slack]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^com\\.tinyspeck\\.slackmacgap$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "k", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "k", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Spotlight [Only Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "spacebar", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "spacebar", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "I (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "i", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "i", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "L (Win) [Login Window]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "/System/Library/CoreServices/Menu\\ Extras/User.menu/Contents/Resources/CGSession -suspend" }], + "type": "basic" + } + ] + }, + { + "description": "L (Win) [Lock Screen]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "power", + "modifiers": ["control", "shift"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "L (Alt+Ctrl) [Login Window]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": ["control", "option"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "/System/Library/CoreServices/Menu\\ Extras/User.menu/Contents/Resources/CGSession -suspend" }], + "type": "basic" + } + ] + }, + { + "description": "L (Alt+Ctrl) [Lock Screen]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": ["control", "option"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "power", + "modifiers": ["control", "shift"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "N (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "n", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "n", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "O (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "o", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "o", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "P (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "p", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "p", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "R (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "r", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "r", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "S (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "s", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "s", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "T (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "t", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "t", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "U (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "u", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "u", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "V (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "v", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "V (Ctrl+Shift) [Only Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "v", + "modifiers": { + "mandatory": ["control", "shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "W (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "w", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "w", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "X (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "x", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "x", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Y (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "y", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "y", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Z (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "z", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "z", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "1 (Cmd) [Open Finder]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "1", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -b com.apple.finder" }], + "type": "basic" + } + ] + }, + { + "description": "3 (Cmd) [Open second pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "3", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:1:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" }], + "type": "basic" + } + ] + }, + { + "description": "4 (Cmd) [Open third pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "4", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:2:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" }], + "type": "basic" + } + ] + }, + { + "description": "5 (Cmd) [Open fourth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "5", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:3:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" }], + "type": "basic" + } + ] + }, + { + "description": "6 (Cmd) [Open fifth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "6", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:4:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" }], + "type": "basic" + } + ] + }, + { + "description": "7 (Cmd) [Open sixth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "7", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:5:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" }], + "type": "basic" + } + ] + }, + { + "description": "8 (Cmd) [Open eighth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "8", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:6:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" }], + "type": "basic" + } + ] + }, + { + "description": "9 (Cmd) [Open ninth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "9", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:7:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" }], + "type": "basic" + } + ] + }, + { + "description": "/ (Ctrl) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "slash", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "slash", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Space (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "spacebar", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "spacebar", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F1", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "f1", + "modifiers": { "optional": ["any"] } + }, + "to": [ + { + "key_code": "slash", + "modifiers": ["command", "shift"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F3", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "f3", + "modifiers": { "optional": ["any"] } + }, + "to": [ + { + "key_code": "g", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F4 (Alt) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "f4", + "modifiers": { + "mandatory": ["option"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "q", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F4 (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "f4", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "w", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + } + ] + }, + "devices": [ + { + "identifiers": { "is_pointing_device": true }, + "simple_modifications": [ + { + "from": { "key_code": "caps_lock" }, + "to": [{ "key_code": "left_command" }] + } + ] + }, + { + "identifiers": { + "is_keyboard": true, + "product_id": 50475, + "vendor_id": 1133 + }, + "ignore": true + }, + { + "identifiers": { + "is_keyboard": true, + "product_id": 32774, + "vendor_id": 3141 + }, + "simple_modifications": [ + { + "from": { "key_code": "left_command" }, + "to": [{ "key_code": "left_option" }] + }, + { + "from": { "key_code": "left_option" }, + "to": [{ "key_code": "left_command" }] + } + ] + }, + { + "identifiers": { + "is_keyboard": true, + "product_id": 29699, + "vendor_id": 3141 + }, + "simple_modifications": [ + { + "from": { "key_code": "left_command" }, + "to": [{ "key_code": "left_option" }] + }, + { + "from": { "key_code": "left_option" }, + "to": [{ "key_code": "left_command" }] + } + ] + } + ], + "name": "Default profile", + "selected": true, + "simple_modifications": [ + { + "from": { "key_code": "caps_lock" }, + "to": [{ "key_code": "left_control" }] + } + ], + "virtual_hid_keyboard": { + "country_code": 0, + "keyboard_type_v2": "ansi" + } + } + ] +} \ No newline at end of file diff --git a/dot_config/private_karabiner/private_automatic_backups/karabiner_20250715.json b/dot_config/private_karabiner/private_automatic_backups/karabiner_20250715.json new file mode 100644 index 0000000..468f05b --- /dev/null +++ b/dot_config/private_karabiner/private_automatic_backups/karabiner_20250715.json @@ -0,0 +1,2649 @@ +{ + "profiles": [ + { + "complex_modifications": { + "rules": [ + { + "description": "L (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "l", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "l", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "New Alacritty", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "return_or_enter", + "modifiers": { + "mandatory": ["shift", "command"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -n /Applications/Alacritty.app" }], + "type": "basic" + } + ] + }, + { + "description": "G (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.mozilla\\.firefox$", + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "g", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "g", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.mozilla\\.firefox$", + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "f", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "f", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "4 (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.mozilla\\.firefox$", + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "4", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "4", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "3 (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.mozilla\\.firefox$", + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "3", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "3", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "2 (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.mozilla\\.firefox$", + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "2", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "2", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "1 (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.mozilla\\.firefox$", + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "1", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "1", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Insert (Ctrl) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Insert (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Insert (Shift) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": ["shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Insert (Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": ["shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { "optional": ["any"] } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "up_arrow", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home (Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { + "mandatory": ["shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": ["command", "shift"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { + "mandatory": ["control", "shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "up_arrow", + "modifiers": ["command", "shift"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { "optional": ["any"] } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "down_arrow", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End (Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { + "mandatory": ["shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": ["command", "shift"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { + "mandatory": ["control", "shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "down_arrow", + "modifiers": ["command", "shift"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Left Arrow (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "left_arrow", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": ["option"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Left Arrow (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "left_arrow", + "modifiers": { + "mandatory": ["control", "shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": ["option", "shift"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Right Arrow (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "right_arrow", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": ["option"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Right Arrow (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "right_arrow", + "modifiers": { + "mandatory": ["control", "shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": ["option", "shift"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Backspace (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "delete_or_backspace", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "delete_or_backspace", + "modifiers": ["option"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Delete (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "delete_forward", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "delete_forward", + "modifiers": ["option"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Enter (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "return_or_enter", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "return_or_enter", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Enter (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "return_or_enter", + "modifiers": { + "mandatory": ["control", "shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "return_or_enter", + "modifiers": ["command", "shift"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "A (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "a", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "a", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "B (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "b", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "b", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "C (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "c", + "modifiers": { + "mandatory": ["left_control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "C (Ctrl+Shift) [Only Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "c", + "modifiers": { + "mandatory": ["control", "shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Switch Channels [Slack]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^com\\.tinyspeck\\.slackmacgap$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "k", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "k", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Spotlight [Only Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "spacebar", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "spacebar", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "I (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "i", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "i", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "L (Win) [Login Window]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "/System/Library/CoreServices/Menu\\ Extras/User.menu/Contents/Resources/CGSession -suspend" }], + "type": "basic" + } + ] + }, + { + "description": "L (Win) [Lock Screen]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "power", + "modifiers": ["control", "shift"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "L (Alt+Ctrl) [Login Window]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": ["control", "option"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "/System/Library/CoreServices/Menu\\ Extras/User.menu/Contents/Resources/CGSession -suspend" }], + "type": "basic" + } + ] + }, + { + "description": "L (Alt+Ctrl) [Lock Screen]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": ["control", "option"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "power", + "modifiers": ["control", "shift"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "N (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "n", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "n", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "O (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "o", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "o", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "P (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "p", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "p", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "R (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "r", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "r", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "S (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "s", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "s", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "T (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "t", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "t", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "U (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "u", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "u", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "V (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "v", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "V (Ctrl+Shift) [Only Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "v", + "modifiers": { + "mandatory": ["control", "shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "W (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "w", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "w", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "X (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "x", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "x", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Y (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "y", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "y", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Z (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "z", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "z", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "1 (Cmd) [Open Finder]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "1", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -b com.apple.finder" }], + "type": "basic" + } + ] + }, + { + "description": "3 (Cmd) [Open second pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "3", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:1:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" }], + "type": "basic" + } + ] + }, + { + "description": "4 (Cmd) [Open third pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "4", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:2:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" }], + "type": "basic" + } + ] + }, + { + "description": "5 (Cmd) [Open fourth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "5", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:3:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" }], + "type": "basic" + } + ] + }, + { + "description": "6 (Cmd) [Open fifth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "6", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:4:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" }], + "type": "basic" + } + ] + }, + { + "description": "7 (Cmd) [Open sixth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "7", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:5:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" }], + "type": "basic" + } + ] + }, + { + "description": "8 (Cmd) [Open eighth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "8", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:6:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" }], + "type": "basic" + } + ] + }, + { + "description": "9 (Cmd) [Open ninth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "9", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:7:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" }], + "type": "basic" + } + ] + }, + { + "description": "/ (Ctrl) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "slash", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "slash", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Space (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "spacebar", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "spacebar", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F1", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "f1", + "modifiers": { "optional": ["any"] } + }, + "to": [ + { + "key_code": "slash", + "modifiers": ["command", "shift"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F3", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "f3", + "modifiers": { "optional": ["any"] } + }, + "to": [ + { + "key_code": "g", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F4 (Alt) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "f4", + "modifiers": { + "mandatory": ["option"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "q", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F4 (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "f4", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "w", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + } + ] + }, + "devices": [ + { + "identifiers": { "is_pointing_device": true }, + "simple_modifications": [ + { + "from": { "key_code": "caps_lock" }, + "to": [{ "key_code": "left_command" }] + } + ] + }, + { + "identifiers": { + "is_keyboard": true, + "product_id": 50475, + "vendor_id": 1133 + }, + "ignore": true + }, + { + "identifiers": { + "is_keyboard": true, + "product_id": 32774, + "vendor_id": 3141 + }, + "simple_modifications": [ + { + "from": { "key_code": "left_command" }, + "to": [{ "key_code": "left_option" }] + }, + { + "from": { "key_code": "left_option" }, + "to": [{ "key_code": "left_command" }] + } + ] + }, + { + "identifiers": { + "is_keyboard": true, + "product_id": 29699, + "vendor_id": 3141 + }, + "simple_modifications": [ + { + "from": { "key_code": "left_command" }, + "to": [{ "key_code": "left_option" }] + }, + { + "from": { "key_code": "left_option" }, + "to": [{ "key_code": "left_command" }] + } + ] + } + ], + "name": "Default profile", + "selected": true, + "simple_modifications": [ + { + "from": { "key_code": "caps_lock" }, + "to": [{ "key_code": "left_control" }] + } + ], + "virtual_hid_keyboard": { + "country_code": 0, + "keyboard_type_v2": "ansi" + } + } + ] +} \ No newline at end of file diff --git a/dot_config/private_karabiner/private_automatic_backups/karabiner_20250903.json b/dot_config/private_karabiner/private_automatic_backups/karabiner_20250903.json new file mode 100644 index 0000000..7b4ce17 --- /dev/null +++ b/dot_config/private_karabiner/private_automatic_backups/karabiner_20250903.json @@ -0,0 +1,2650 @@ +{ + "global": { "show_in_menu_bar": false }, + "profiles": [ + { + "complex_modifications": { + "rules": [ + { + "description": "L (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "l", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "l", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "New Alacritty", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "return_or_enter", + "modifiers": { + "mandatory": ["shift", "command"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -n /Applications/Alacritty.app" }], + "type": "basic" + } + ] + }, + { + "description": "G (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.mozilla\\.firefox$", + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "g", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "g", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.mozilla\\.firefox$", + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "f", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "f", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "4 (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.mozilla\\.firefox$", + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "4", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "4", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "3 (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.mozilla\\.firefox$", + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "3", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "3", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "2 (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.mozilla\\.firefox$", + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "2", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "2", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "1 (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.mozilla\\.firefox$", + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "1", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "1", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Insert (Ctrl) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Insert (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Insert (Shift) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": ["shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Insert (Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": ["shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { "optional": ["any"] } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "up_arrow", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home (Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { + "mandatory": ["shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": ["command", "shift"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { + "mandatory": ["control", "shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "up_arrow", + "modifiers": ["command", "shift"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { "optional": ["any"] } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "down_arrow", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End (Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { + "mandatory": ["shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": ["command", "shift"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { + "mandatory": ["control", "shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "down_arrow", + "modifiers": ["command", "shift"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Left Arrow (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "left_arrow", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": ["option"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Left Arrow (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "left_arrow", + "modifiers": { + "mandatory": ["control", "shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": ["option", "shift"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Right Arrow (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "right_arrow", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": ["option"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Right Arrow (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "right_arrow", + "modifiers": { + "mandatory": ["control", "shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": ["option", "shift"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Backspace (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "delete_or_backspace", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "delete_or_backspace", + "modifiers": ["option"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Delete (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "delete_forward", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "delete_forward", + "modifiers": ["option"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Enter (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "return_or_enter", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "return_or_enter", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Enter (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "return_or_enter", + "modifiers": { + "mandatory": ["control", "shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "return_or_enter", + "modifiers": ["command", "shift"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "A (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "a", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "a", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "B (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "b", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "b", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "C (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "c", + "modifiers": { + "mandatory": ["left_control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "C (Ctrl+Shift) [Only Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "c", + "modifiers": { + "mandatory": ["control", "shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Switch Channels [Slack]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^com\\.tinyspeck\\.slackmacgap$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "k", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "k", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Spotlight [Only Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "spacebar", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "spacebar", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "I (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "i", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "i", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "L (Win) [Login Window]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "/System/Library/CoreServices/Menu\\ Extras/User.menu/Contents/Resources/CGSession -suspend" }], + "type": "basic" + } + ] + }, + { + "description": "L (Win) [Lock Screen]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "power", + "modifiers": ["control", "shift"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "L (Alt+Ctrl) [Login Window]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": ["control", "option"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "/System/Library/CoreServices/Menu\\ Extras/User.menu/Contents/Resources/CGSession -suspend" }], + "type": "basic" + } + ] + }, + { + "description": "L (Alt+Ctrl) [Lock Screen]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": ["control", "option"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "power", + "modifiers": ["control", "shift"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "N (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "n", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "n", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "O (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "o", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "o", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "P (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "p", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "p", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "R (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "r", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "r", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "S (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "s", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "s", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "T (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "t", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "t", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "U (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "u", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "u", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "V (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "v", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "V (Ctrl+Shift) [Only Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "v", + "modifiers": { + "mandatory": ["control", "shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "W (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "w", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "w", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "X (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "x", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "x", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Y (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "y", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "y", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Z (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "z", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "z", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "1 (Cmd) [Open Finder]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "1", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -b com.apple.finder" }], + "type": "basic" + } + ] + }, + { + "description": "3 (Cmd) [Open second pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "3", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:1:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" }], + "type": "basic" + } + ] + }, + { + "description": "4 (Cmd) [Open third pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "4", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:2:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" }], + "type": "basic" + } + ] + }, + { + "description": "5 (Cmd) [Open fourth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "5", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:3:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" }], + "type": "basic" + } + ] + }, + { + "description": "6 (Cmd) [Open fifth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "6", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:4:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" }], + "type": "basic" + } + ] + }, + { + "description": "7 (Cmd) [Open sixth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "7", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:5:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" }], + "type": "basic" + } + ] + }, + { + "description": "8 (Cmd) [Open eighth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "8", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:6:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" }], + "type": "basic" + } + ] + }, + { + "description": "9 (Cmd) [Open ninth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "9", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:7:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" }], + "type": "basic" + } + ] + }, + { + "description": "/ (Ctrl) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "slash", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "slash", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Space (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "spacebar", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "spacebar", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F1", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "f1", + "modifiers": { "optional": ["any"] } + }, + "to": [ + { + "key_code": "slash", + "modifiers": ["command", "shift"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F3", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "f3", + "modifiers": { "optional": ["any"] } + }, + "to": [ + { + "key_code": "g", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F4 (Alt) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "f4", + "modifiers": { + "mandatory": ["option"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "q", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F4 (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "f4", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "w", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + } + ] + }, + "devices": [ + { + "identifiers": { "is_pointing_device": true }, + "simple_modifications": [ + { + "from": { "key_code": "caps_lock" }, + "to": [{ "key_code": "left_command" }] + } + ] + }, + { + "identifiers": { + "is_keyboard": true, + "product_id": 50475, + "vendor_id": 1133 + }, + "ignore": true + }, + { + "identifiers": { + "is_keyboard": true, + "product_id": 32774, + "vendor_id": 3141 + }, + "simple_modifications": [ + { + "from": { "key_code": "left_command" }, + "to": [{ "key_code": "left_option" }] + }, + { + "from": { "key_code": "left_option" }, + "to": [{ "key_code": "left_command" }] + } + ] + }, + { + "identifiers": { + "is_keyboard": true, + "product_id": 29699, + "vendor_id": 3141 + }, + "simple_modifications": [ + { + "from": { "key_code": "left_command" }, + "to": [{ "key_code": "left_option" }] + }, + { + "from": { "key_code": "left_option" }, + "to": [{ "key_code": "left_command" }] + } + ] + } + ], + "name": "Default profile", + "selected": true, + "simple_modifications": [ + { + "from": { "key_code": "caps_lock" }, + "to": [{ "key_code": "left_control" }] + } + ], + "virtual_hid_keyboard": { + "country_code": 0, + "keyboard_type_v2": "ansi" + } + } + ] +} \ No newline at end of file diff --git a/dot_config/private_karabiner/private_karabiner.json b/dot_config/private_karabiner/private_karabiner.json new file mode 100644 index 0000000..88189fd --- /dev/null +++ b/dot_config/private_karabiner/private_karabiner.json @@ -0,0 +1,2782 @@ +{ + "global": { "show_in_menu_bar": false }, + "profiles": [ + { + "complex_modifications": { + "rules": [ + { + "description": "K Command as K Option [Terminal]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "k", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "k", + "modifiers": ["option"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "J Command as J Option [Terminal]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "j", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "j", + "modifiers": ["option"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "L Command as L Option [Terminal]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "l", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "l", + "modifiers": ["option"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "H Command as H Option [Terminal]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "h", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "h", + "modifiers": ["option"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "L (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "l", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "l", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "New Alacritty", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "return_or_enter", + "modifiers": { + "mandatory": ["shift", "command"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -n /Applications/Alacritty.app" }], + "type": "basic" + } + ] + }, + { + "description": "G (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.mozilla\\.firefox$", + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "g", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "g", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.mozilla\\.firefox$", + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "f", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "f", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "4 (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.mozilla\\.firefox$", + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "4", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "4", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "3 (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.mozilla\\.firefox$", + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "3", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "3", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "2 (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.mozilla\\.firefox$", + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "2", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "2", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "1 (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.mozilla\\.firefox$", + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "1", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "1", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Insert (Ctrl) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Insert (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Insert (Shift) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": ["shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Insert (Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "insert", + "modifiers": { + "mandatory": ["shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { "optional": ["any"] } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "up_arrow", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home (Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { + "mandatory": ["shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": ["command", "shift"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Home (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "home", + "modifiers": { + "mandatory": ["control", "shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "up_arrow", + "modifiers": ["command", "shift"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { "optional": ["any"] } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "down_arrow", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End (Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { + "mandatory": ["shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": ["command", "shift"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "End (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "end", + "modifiers": { + "mandatory": ["control", "shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "down_arrow", + "modifiers": ["command", "shift"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Left Arrow (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "left_arrow", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": ["option"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Left Arrow (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "left_arrow", + "modifiers": { + "mandatory": ["control", "shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": ["option", "shift"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Right Arrow (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "right_arrow", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": ["option"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Right Arrow (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "right_arrow", + "modifiers": { + "mandatory": ["control", "shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": ["option", "shift"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Backspace (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "delete_or_backspace", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "delete_or_backspace", + "modifiers": ["option"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Delete (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "delete_forward", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "delete_forward", + "modifiers": ["option"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Enter (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "return_or_enter", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "return_or_enter", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Enter (Ctrl+Shift)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "return_or_enter", + "modifiers": { + "mandatory": ["control", "shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "return_or_enter", + "modifiers": ["command", "shift"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "A (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "a", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "a", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "B (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "b", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "b", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "C (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "c", + "modifiers": { + "mandatory": ["left_control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "C (Ctrl+Shift) [Only Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "c", + "modifiers": { + "mandatory": ["control", "shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Switch Channels [Slack]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^com\\.tinyspeck\\.slackmacgap$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "k", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "k", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Spotlight [Only Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "spacebar", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "spacebar", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "I (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "i", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "i", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "L (Win) [Login Window]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "/System/Library/CoreServices/Menu\\ Extras/User.menu/Contents/Resources/CGSession -suspend" }], + "type": "basic" + } + ] + }, + { + "description": "L (Win) [Lock Screen]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "power", + "modifiers": ["control", "shift"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "L (Alt+Ctrl) [Login Window]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": ["control", "option"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "/System/Library/CoreServices/Menu\\ Extras/User.menu/Contents/Resources/CGSession -suspend" }], + "type": "basic" + } + ] + }, + { + "description": "L (Alt+Ctrl) [Lock Screen]", + "manipulators": [ + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": ["control", "option"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "power", + "modifiers": ["control", "shift"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "N (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "n", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "n", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "O (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "o", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "o", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "P (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "p", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "p", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "R (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "r", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "r", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "S (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "s", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "s", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "T (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "t", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "t", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "U (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "u", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "u", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "V (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "v", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "V (Ctrl+Shift) [Only Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "v", + "modifiers": { + "mandatory": ["control", "shift"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "W (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "w", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "w", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "X (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "x", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "x", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Y (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "y", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "y", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Z (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "z", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "z", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "1 (Cmd) [Open Finder]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "1", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -b com.apple.finder" }], + "type": "basic" + } + ] + }, + { + "description": "3 (Cmd) [Open second pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "3", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:1:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" }], + "type": "basic" + } + ] + }, + { + "description": "4 (Cmd) [Open third pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "4", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:2:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" }], + "type": "basic" + } + ] + }, + { + "description": "5 (Cmd) [Open fourth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "5", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:3:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" }], + "type": "basic" + } + ] + }, + { + "description": "6 (Cmd) [Open fifth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "6", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:4:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" }], + "type": "basic" + } + ] + }, + { + "description": "7 (Cmd) [Open sixth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "7", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:5:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" }], + "type": "basic" + } + ] + }, + { + "description": "8 (Cmd) [Open eighth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "8", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:6:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" }], + "type": "basic" + } + ] + }, + { + "description": "9 (Cmd) [Open ninth pinned Dock app]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "9", + "modifiers": { + "mandatory": ["command"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -b $(/usr/libexec/PlistBuddy -c 'print :persistent-apps:7:tile-data:bundle-identifier' ~/Library/Preferences/com.apple.dock.plist)" }], + "type": "basic" + } + ] + }, + { + "description": "/ (Ctrl) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "slash", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "slash", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Space (Ctrl)", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "spacebar", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "spacebar", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F1", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "f1", + "modifiers": { "optional": ["any"] } + }, + "to": [ + { + "key_code": "slash", + "modifiers": ["command", "shift"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F3", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$", + "^org\\.alacritty$", + "^co\\.zeit\\.hyper$", + "^com\\.googlecode\\.iterm2$", + "^com\\.apple\\.Terminal$", + "^com\\.github\\.wez\\.wezterm$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "f3", + "modifiers": { "optional": ["any"] } + }, + "to": [ + { + "key_code": "g", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F4 (Alt) [+Terminal Emulators]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.vmware\\.fusion$", + "^org\\.gnu\\.emacs$", + "^com\\.jetbrains", + "^com\\.microsoft\\.VSCode$", + "^com\\.sublimetext\\.3$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.microsoft\\.rdc\\.macos$" + ], + "file_paths": ["Chrome Remote Desktop\\.app"], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "f4", + "modifiers": { + "mandatory": ["option"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "q", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "F4 (Ctrl) [Only Chrome]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^com\\.google\\.Chrome$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "f4", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "w", + "modifiers": ["command"] + } + ], + "type": "basic" + } + ] + } + ] + }, + "devices": [ + { + "identifiers": { "is_pointing_device": true }, + "simple_modifications": [ + { + "from": { "key_code": "caps_lock" }, + "to": [{ "key_code": "left_command" }] + } + ] + }, + { + "identifiers": { + "is_keyboard": true, + "product_id": 50475, + "vendor_id": 1133 + }, + "ignore": true + }, + { + "identifiers": { + "is_keyboard": true, + "product_id": 32774, + "vendor_id": 3141 + }, + "simple_modifications": [ + { + "from": { "key_code": "left_command" }, + "to": [{ "key_code": "left_option" }] + }, + { + "from": { "key_code": "left_option" }, + "to": [{ "key_code": "left_command" }] + } + ] + }, + { + "identifiers": { + "is_keyboard": true, + "product_id": 29699, + "vendor_id": 3141 + }, + "simple_modifications": [ + { + "from": { "key_code": "left_command" }, + "to": [{ "key_code": "left_option" }] + }, + { + "from": { "key_code": "left_option" }, + "to": [{ "key_code": "left_command" }] + } + ] + } + ], + "name": "Default profile", + "selected": true, + "simple_modifications": [ + { + "from": { "key_code": "caps_lock" }, + "to": [{ "key_code": "left_control" }] + } + ], + "virtual_hid_keyboard": { + "country_code": 0, + "keyboard_type_v2": "ansi" + } + } + ] +} \ No newline at end of file diff --git a/dot_config/rofi/config.rasi b/dot_config/rofi/config.rasi new file mode 100644 index 0000000..523ae81 --- /dev/null +++ b/dot_config/rofi/config.rasi @@ -0,0 +1,3 @@ +//@theme "/home/barak/.local/share/rofi/themes/spotlight-dark.rasi" +//@theme "/home/barak/.local/share/rofi/themes/rounded-blue-dark.rasi" +@theme "/home/barak/.local/share/rofi/themes/spotlight-dark.rasi" diff --git a/dot_config/symlink_nvim b/dot_config/symlink_nvim new file mode 100644 index 0000000..b68ce03 --- /dev/null +++ b/dot_config/symlink_nvim @@ -0,0 +1 @@ +../.vim diff --git a/dot_config/systemd/user/default.target.wants/symlink_ssh-agent.service.tmpl b/dot_config/systemd/user/default.target.wants/symlink_ssh-agent.service.tmpl new file mode 100644 index 0000000..50da24d --- /dev/null +++ b/dot_config/systemd/user/default.target.wants/symlink_ssh-agent.service.tmpl @@ -0,0 +1 @@ +{{- .chezmoi.homeDir}}/.config/systemd/user/ssh-agent.service diff --git a/.config/systemd/user/ssh-agent.service b/dot_config/systemd/user/ssh-agent.service similarity index 100% rename from .config/systemd/user/ssh-agent.service rename to dot_config/systemd/user/ssh-agent.service diff --git a/.config/terminator/config b/dot_config/terminator/config similarity index 91% rename from .config/terminator/config rename to dot_config/terminator/config index d921085..7303597 100644 --- a/.config/terminator/config +++ b/dot_config/terminator/config @@ -1,16 +1,57 @@ [global_config] - enabled_plugins = LaunchpadCodeURLHandler, APTURLHandler, LaunchpadBugURLHandler focus = mouse tab_position = bottom - title_inactive_bg_color = "#222222" - title_inactive_fg_color = "#b8b8b8" title_transmit_bg_color = "#535d6c" + title_inactive_fg_color = "#b8b8b8" + title_inactive_bg_color = "#222222" + enabled_plugins = LaunchpadCodeURLHandler, APTURLHandler, LaunchpadBugURLHandler [keybindings] - close_term = <Primary><Shift>w cycle_next = <Primary>j cycle_prev = <Primary>k - paste = <Shift>Insert - split_vert = <Primary><Shift>v + split_vert = "" + close_term = <Primary><Shift>w + paste = <Primary><Shift>v + help = "" +[profiles] + [[default]] + allow_bold = False + background_darkness = 0.8 + background_type = transparent + cursor_color = "#ffffff" + font = Iosevka Berkeley Light 18 + foreground_color = "#ffffff" + show_titlebar = False + scrollbar_position = hidden + scrollback_infinite = True + use_system_font = False + bold_is_bright = True + [[4k]] + background_darkness = 0.8 + background_type = transparent + font = Inconsolata Medium 18 + foreground_color = "#ffffff" + show_titlebar = False + scrollbar_position = hidden + scrollback_infinite = True + use_system_font = False + [[Large]] + background_darkness = 0.8 + background_type = transparent + font = Inconsolata Medium 32 + foreground_color = "#ffffff" + show_titlebar = False + scrollbar_position = hidden + scrollback_infinite = True + use_system_font = False + [[Medium]] + background_darkness = 0.8 + background_type = transparent + font = Droid Sans Mono Dotted 14 + foreground_color = "#ffffff" + show_titlebar = False + scrollbar_position = hidden + scrollback_infinite = True + use_system_font = False [layouts] [[default]] [[[child1]]] @@ -21,41 +62,3 @@ parent = "" type = Window [plugins] -[profiles] - [[default]] - background_darkness = 0.8 - background_type = transparent - cursor_color = "#ffffff" - font = Droid Sans Mono Dotted for Powerline 15 - foreground_color = "#ffffff" - scrollback_infinite = True - scrollbar_position = hidden - show_titlebar = False - use_system_font = False - [[4k]] - background_darkness = 0.8 - background_type = transparent - font = Inconsolata Medium 18 - foreground_color = "#ffffff" - scrollback_infinite = True - scrollbar_position = hidden - show_titlebar = False - use_system_font = False - [[Large]] - background_darkness = 0.8 - background_type = transparent - font = Inconsolata Medium 32 - foreground_color = "#ffffff" - scrollback_infinite = True - scrollbar_position = hidden - show_titlebar = False - use_system_font = False - [[Medium]] - background_darkness = 0.8 - background_type = transparent - font = Droid Sans Mono Dotted 14 - foreground_color = "#ffffff" - scrollback_infinite = True - scrollbar_position = hidden - show_titlebar = False - use_system_font = False diff --git a/dot_config/tig/config b/dot_config/tig/config new file mode 100644 index 0000000..f9a345a --- /dev/null +++ b/dot_config/tig/config @@ -0,0 +1,76 @@ +# Vim-style keybindings for Tig +# +# To use these keybindings copy the file to your HOME directory and include +# it from your ~/.tigrc file: +# +# $ cp contrib/vim.tigrc ~/.tigrc.vim +# $ echo "source ~/.tigrc.vim" >> ~/.tigrc + +bind generic h scroll-left +bind generic j move-down +bind generic k move-up +bind generic l scroll-right + +bind generic g none +bind generic gg move-first-line +bind generic gj next +bind generic gk previous +bind generic gp parent +bind generic gP back +bind generic gn view-next + +bind main G move-last-line +bind generic G move-last-line + +bind generic <C-f> move-page-down +bind generic <C-b> move-page-up + +bind generic v none +bind generic vm view-main +bind generic vd view-diff +bind generic vl view-log +bind generic vt view-tree +bind generic vb view-blob +bind generic vx view-blame +bind generic vr view-refs +bind generic vs view-status +bind generic vu view-stage +bind generic vy view-stash +bind generic vg view-grep +bind generic vp view-pager +bind generic vh view-help + +bind generic o none +bind generic oo :toggle sort-order +bind generic os :toggle sort-field +bind generic on :toggle line-number +bind generic od :toggle date +bind generic oa :toggle author +bind generic og :toggle line-graphics +bind generic of :toggle file-name +bind generic op :toggle ignore-space +bind generic oi :toggle id +bind generic ot :toggle commit-title-overflow +bind generic oF :toggle file-filter +bind generic or :toggle commit-title-refs + +bind generic @ none +bind generic @j :/^@@ +bind generic @k :?^@@ +bind generic @- :toggle diff-context -1 +bind generic @+ :toggle diff-context +1 + +bind status u none +bind stage u none +bind generic uu status-update +bind generic ur status-revert +bind generic um status-merge +bind generic ul stage-update-line +bind generic us stage-split-chunk + +bind generic c none +bind generic cc !git commit +bind generic ca !?@git commit --amend --no-edit + +bind generic K view-help +bind generic <C-w><C-w> view-next diff --git a/.config/xfce4/desktop/icons.screen0-2544x1393.rc b/dot_config/xfce4/desktop/icons.screen0-2544x1399.rc similarity index 71% rename from .config/xfce4/desktop/icons.screen0-2544x1393.rc rename to dot_config/xfce4/desktop/icons.screen0-2544x1399.rc index 901fb0b..f8c5c47 100644 --- a/.config/xfce4/desktop/icons.screen0-2544x1393.rc +++ b/dot_config/xfce4/desktop/icons.screen0-2544x1399.rc @@ -1,15 +1,15 @@ [xfdesktop-version-4.10.3+-rcfile_format] 4.10.3+=true -[/home/barak/Desktop/steam.desktop] -row=5 -col=0 - -[/] +[Trash] row=0 col=0 -[/home/barak] +[/] row=1 col=0 +[/home/barak] +row=2 +col=0 + diff --git a/.config/xfce4/panel/genmon-7.rc b/dot_config/xfce4/panel/genmon-13.rc similarity index 54% rename from .config/xfce4/panel/genmon-7.rc rename to dot_config/xfce4/panel/genmon-13.rc index 7d8cf4f..bd3cdb9 100644 --- a/.config/xfce4/panel/genmon-7.rc +++ b/dot_config/xfce4/panel/genmon-13.rc @@ -1,6 +1,6 @@ Command=hostname -s UseLabel=0 -Text=Host +Text=hostname UpdatePeriod=60000 -Font=Bitstream Vera Sans Bold 16 +Font=Sans Bold 16 diff --git a/.config/xfce4/panel/whiskermenu-11.rc b/dot_config/xfce4/panel/whiskermenu-1.rc similarity index 59% rename from .config/xfce4/panel/whiskermenu-11.rc rename to dot_config/xfce4/panel/whiskermenu-1.rc index 4ad8491..13975de 100644 --- a/.config/xfce4/panel/whiskermenu-11.rc +++ b/dot_config/xfce4/panel/whiskermenu-1.rc @@ -1,40 +1,40 @@ -favorites=exo-terminal-emulator.desktop,exo-file-manager.desktop,exo-mail-reader.desktop,exo-web-browser.desktop -recent=google-chrome-beta.desktop,wine-Programs-Heroes of the Storm-Heroes of the Storm.desktop,wine-Programs-Battle.net-Battle.net.desktop,cool-retro-term.desktop,chrome-pnpnebpkafjbaejjhkkaiandjbnbbbak-Default.desktop,blueman-manager.desktop,blueberry.desktop,nm-connection-editor.desktop,xfce-settings-manager.desktop,xfce-ui-settings.desktop -button-title=Applications +favorites=exo-web-browser.desktop,exo-mail-reader.desktop,exo-file-manager.desktop,pidgin.desktop,exo-terminal-emulator.desktop +recent=xfce-mouse-settings.desktop,xfce-ui-settings.desktop,firefox.desktop,exo-terminal-emulator.desktop +button-title=Applications Menu button-icon=xfce4-whiskermenu button-single-row=false show-button-title=false show-button-icon=true launcher-show-name=true -launcher-show-description=true +launcher-show-description=false launcher-show-tooltip=true -item-icon-size=2 +item-icon-size=1 hover-switch-category=false category-show-name=true -category-icon-size=1 -load-hierarchy=false +category-icon-size=0 +load-hierarchy=true recent-items-max=10 favorites-in-recent=true display-recent-default=false -position-search-alternate=false +position-search-alternate=true position-commands-alternate=false position-categories-alternate=false -menu-width=545 -menu-height=585 +menu-width=400 +menu-height=500 menu-opacity=100 command-settings=xfce4-settings-manager show-command-settings=true command-lockscreen=xflock4 show-command-lockscreen=true -command-switchuser=gdmflexiserver -show-command-switchuser=true +command-switchuser=dm-tool switch-to-greeter +show-command-switchuser=false command-logout=xfce4-session-logout show-command-logout=true command-menueditor=menulibre show-command-menueditor=true command-profile=mugshot show-command-profile=true -search-actions=4 +search-actions=5 [action0] name=Man Pages @@ -43,18 +43,24 @@ command=exo-open --launch TerminalEmulator man %s regex=false [action1] +name=Web Search +pattern=? +command=exo-open --launch WebBrowser https://duckduckgo.com/?q=%u +regex=false + +[action2] name=Wikipedia pattern=!w command=exo-open --launch WebBrowser https://en.wikipedia.org/wiki/%u regex=false -[action2] +[action3] name=Run in Terminal pattern=! command=exo-open --launch TerminalEmulator %s regex=false -[action3] +[action4] name=Open URI pattern=^(file|http|https):\\/\\/(.*)$ command=exo-open \\0 diff --git a/dot_config/xfce4/terminal/accels.scm b/dot_config/xfce4/terminal/accels.scm new file mode 100644 index 0000000..a7682f3 --- /dev/null +++ b/dot_config/xfce4/terminal/accels.scm @@ -0,0 +1,58 @@ +; xfce4-terminal GtkAccelMap rc-file -*- scheme -*- +; this file is an automated accelerator map dump +; +(gtk_accel_path "<Actions>/terminal-window/goto-tab-2" "<Alt>2") +(gtk_accel_path "<Actions>/terminal-window/goto-tab-6" "<Alt>6") +; (gtk_accel_path "<Actions>/terminal-window/copy-input" "") +; (gtk_accel_path "<Actions>/terminal-window/close-other-tabs" "") +; (gtk_accel_path "<Actions>/terminal-window/move-tab-right" "<Primary><Shift>Page_Down") +(gtk_accel_path "<Actions>/terminal-window/goto-tab-7" "<Alt>7") +; (gtk_accel_path "<Actions>/terminal-window/set-title-color" "") +; (gtk_accel_path "<Actions>/terminal-window/edit-menu" "") +; (gtk_accel_path "<Actions>/terminal-window/zoom-menu" "") +(gtk_accel_path "<Actions>/terminal-window/goto-tab-1" "<Alt>1") +; (gtk_accel_path "<Actions>/terminal-window/fullscreen" "F11") +; (gtk_accel_path "<Actions>/terminal-window/read-only" "") +; (gtk_accel_path "<Actions>/terminal-window/preferences" "") +; (gtk_accel_path "<Actions>/terminal-window/reset-and-clear" "") +; (gtk_accel_path "<Actions>/terminal-window/about" "") +(gtk_accel_path "<Actions>/terminal-window/goto-tab-5" "<Alt>5") +; (gtk_accel_path "<Actions>/terminal-window/close-window" "<Primary><Shift>q") +; (gtk_accel_path "<Actions>/terminal-window/reset" "") +; (gtk_accel_path "<Actions>/terminal-window/save-contents" "") +(gtk_accel_path "<Actions>/terminal-window/toggle-menubar" "F10") +; (gtk_accel_path "<Actions>/terminal-window/copy" "<Primary><Shift>c") +; (gtk_accel_path "<Actions>/terminal-window/copy-html" "") +; (gtk_accel_path "<Actions>/terminal-window/last-active-tab" "") +; (gtk_accel_path "<Actions>/terminal-window/show-borders" "") +; (gtk_accel_path "<Actions>/terminal-window/view-menu" "") +; (gtk_accel_path "<Actions>/terminal-window/detach-tab" "<Primary><Shift>d") +; (gtk_accel_path "<Actions>/terminal-window/scroll-on-output" "") +; (gtk_accel_path "<Actions>/terminal-window/show-toolbar" "") +; (gtk_accel_path "<Actions>/terminal-window/next-tab" "<Primary>Page_Down") +; (gtk_accel_path "<Actions>/terminal-window/tabs-menu" "") +; (gtk_accel_path "<Actions>/terminal-window/search-next" "") +; (gtk_accel_path "<Actions>/terminal-window/search-prev" "") +; (gtk_accel_path "<Actions>/terminal-window/undo-close-tab" "") +; (gtk_accel_path "<Actions>/terminal-window/set-title" "<Primary><Shift>s") +(gtk_accel_path "<Actions>/terminal-window/contents" "") +; (gtk_accel_path "<Actions>/terminal-window/zoom-reset" "<Primary>0") +; (gtk_accel_path "<Actions>/terminal-window/close-tab" "<Primary><Shift>w") +; (gtk_accel_path "<Actions>/terminal-window/new-tab" "<Primary><Shift>t") +; (gtk_accel_path "<Actions>/terminal-window/new-window" "<Primary><Shift>n") +; (gtk_accel_path "<Actions>/terminal-window/terminal-menu" "") +; (gtk_accel_path "<Actions>/terminal-window/show-menubar" "") +; (gtk_accel_path "<Actions>/terminal-window/select-all" "<Primary><Shift>a") +; (gtk_accel_path "<Actions>/terminal-window/paste" "<Primary><Shift>v") +(gtk_accel_path "<Actions>/terminal-window/goto-tab-9" "<Alt>9") +; (gtk_accel_path "<Actions>/terminal-window/move-tab-left" "<Primary><Shift>Page_Up") +; (gtk_accel_path "<Actions>/terminal-window/search" "<Primary><Shift>f") +; (gtk_accel_path "<Actions>/terminal-window/file-menu" "") +; (gtk_accel_path "<Actions>/terminal-window/prev-tab" "<Primary>Page_Up") +; (gtk_accel_path "<Actions>/terminal-window/paste-selection" "") +; (gtk_accel_path "<Actions>/terminal-window/zoom-in" "<Primary>plus") +; (gtk_accel_path "<Actions>/terminal-window/zoom-out" "<Primary>minus") +(gtk_accel_path "<Actions>/terminal-window/goto-tab-8" "<Alt>8") +; (gtk_accel_path "<Actions>/terminal-window/help-menu" "") +(gtk_accel_path "<Actions>/terminal-window/goto-tab-4" "<Alt>4") +(gtk_accel_path "<Actions>/terminal-window/goto-tab-3" "<Alt>3") diff --git a/dot_config/xfce4/xfconf/xfce-perchannel-xml/displays.xml b/dot_config/xfce4/xfconf/xfce-perchannel-xml/displays.xml new file mode 100644 index 0000000..abe7b1e --- /dev/null +++ b/dot_config/xfce4/xfconf/xfce-perchannel-xml/displays.xml @@ -0,0 +1,101 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<channel name="displays" version="1.0"> + <property name="Default" type="empty"> + <property name="eDP1" type="string" value="1. LGD 14""> + <property name="Active" type="bool" value="false"/> + <property name="Resolution" type="string" value="2560x1440"/> + <property name="RefreshRate" type="double" value="59.997716"/> + <property name="Rotation" type="int" value="0"/> + <property name="Reflection" type="string" value="0"/> + <property name="Primary" type="bool" value="true"/> + <property name="Position" type="empty"> + <property name="X" type="int" value="0"/> + <property name="Y" type="int" value="0"/> + </property> + </property> + <property name="DP2" type="string" value="2. Hewlett Packard 27""> + <property name="Active" type="bool" value="true"/> + <property name="Resolution" type="string" value="3840x2160"/> + <property name="RefreshRate" type="double" value="59.996625"/> + <property name="Rotation" type="int" value="0"/> + <property name="Reflection" type="string" value="0"/> + <property name="Primary" type="bool" value="false"/> + <property name="Position" type="empty"> + <property name="X" type="int" value="0"/> + <property name="Y" type="int" value="0"/> + </property> + </property> + <property name="HDMI-1" type="string" value="Goldstar Company Ltd 27""> + <property name="Active" type="bool" value="true"/> + <property name="EDID" type="string" value="8b6223e9c3908f0c17cb0487baafb4b7dae247a4"/> + <property name="Resolution" type="string" value="3840x2160"/> + <property name="RefreshRate" type="double" value="60.000000"/> + <property name="Rotation" type="int" value="0"/> + <property name="Reflection" type="string" value="0"/> + <property name="Primary" type="bool" value="true"/> + <property name="Position" type="empty"> + <property name="X" type="int" value="0"/> + <property name="Y" type="int" value="0"/> + </property> + <property name="Scale" type="empty"> + <property name="X" type="double" value="1.000000"/> + <property name="Y" type="double" value="1.000000"/> + </property> + </property> + <property name="DP-3" type="string" value="DO NOT USE - RTK 27""> + <property name="Active" type="bool" value="true"/> + <property name="EDID" type="string" value="f396435bdc58149bc1f56157ea28cd14af2aaf3d"/> + <property name="Resolution" type="string" value="3840x2160"/> + <property name="RefreshRate" type="double" value="59.981998"/> + <property name="Rotation" type="int" value="0"/> + <property name="Reflection" type="string" value="0"/> + <property name="Primary" type="bool" value="false"/> + <property name="Position" type="empty"> + <property name="X" type="int" value="0"/> + <property name="Y" type="int" value="0"/> + </property> + <property name="Scale" type="empty"> + <property name="X" type="double" value="1.000000"/> + <property name="Y" type="double" value="1.000000"/> + </property> + </property> + </property> + <property name="ActiveProfile" type="string" value="Default"/> + <property name="Fallback" type="empty"> + <property name="HDMI-1" type="string" value="Goldstar Company Ltd 27""> + <property name="Active" type="bool" value="true"/> + <property name="EDID" type="string" value="8b6223e9c3908f0c17cb0487baafb4b7dae247a4"/> + <property name="Resolution" type="string" value="3840x2160"/> + <property name="RefreshRate" type="double" value="60.000000"/> + <property name="Rotation" type="int" value="0"/> + <property name="Reflection" type="string" value="0"/> + <property name="Primary" type="bool" value="true"/> + <property name="Position" type="empty"> + <property name="X" type="int" value="0"/> + <property name="Y" type="int" value="0"/> + </property> + <property name="Scale" type="empty"> + <property name="X" type="double" value="1.000000"/> + <property name="Y" type="double" value="1.000000"/> + </property> + </property> + <property name="DP-3" type="string" value="DO NOT USE - RTK 27""> + <property name="Active" type="bool" value="true"/> + <property name="EDID" type="string" value="f396435bdc58149bc1f56157ea28cd14af2aaf3d"/> + <property name="Resolution" type="string" value="3840x2160"/> + <property name="RefreshRate" type="double" value="59.981998"/> + <property name="Rotation" type="int" value="0"/> + <property name="Reflection" type="string" value="0"/> + <property name="Primary" type="bool" value="false"/> + <property name="Position" type="empty"> + <property name="X" type="int" value="0"/> + <property name="Y" type="int" value="0"/> + </property> + <property name="Scale" type="empty"> + <property name="X" type="double" value="1.000000"/> + <property name="Y" type="double" value="1.000000"/> + </property> + </property> + </property> +</channel> diff --git a/.config/xfce4/xfconf/xfce-perchannel-xml/keyboards.xml b/dot_config/xfce4/xfconf/xfce-perchannel-xml/keyboards.xml similarity index 100% rename from .config/xfce4/xfconf/xfce-perchannel-xml/keyboards.xml rename to dot_config/xfce4/xfconf/xfce-perchannel-xml/keyboards.xml diff --git a/dot_config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml b/dot_config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml new file mode 100644 index 0000000..6dc0558 --- /dev/null +++ b/dot_config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<channel name="thunar" version="1.0"> + <property name="misc-volume-management" type="empty"/> + <property name="shortcuts-icon-size" type="empty"/> + <property name="last-view" type="string" value="ThunarIconView"/> + <property name="last-icon-view-zoom-level" type="string" value="THUNAR_ZOOM_LEVEL_75_PERCENT"/> + <property name="last-window-width" type="int" value="1274"/> + <property name="last-window-height" type="int" value="2121"/> + <property name="last-window-maximized" type="bool" value="false"/> +</channel> diff --git a/dot_config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml b/dot_config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml new file mode 100644 index 0000000..6f340b0 --- /dev/null +++ b/dot_config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml @@ -0,0 +1,56 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<channel name="xfce4-desktop" version="1.0"> + <property name="desktop-icons" type="empty"> + <property name="style" type="empty"/> + <property name="file-icons" type="empty"> + <property name="show-home" type="empty"/> + <property name="show-filesystem" type="empty"/> + <property name="show-removable" type="empty"/> + <property name="show-trash" type="empty"/> + </property> + <property name="icon-size" type="empty"/> + <property name="tooltip-size" type="empty"/> + </property> + <property name="backdrop" type="empty"> + <property name="screen0" type="empty"> + <property name="monitor0" type="empty"> + <property name="image-path" type="empty"/> + <property name="image-style" type="empty"/> + <property name="image-show" type="empty"/> + <property name="workspace0" type="empty"> + <property name="color-style" type="int" value="0"/> + <property name="image-style" type="int" value="5"/> + <property name="last-image" type="string" value="/usr/share/xfce4/backdrops/xubuntu-wallpaper.png"/> + </property> + </property> + <property name="monitor1" type="empty"> + <property name="image-path" type="empty"/> + <property name="image-style" type="empty"/> + <property name="image-show" type="empty"/> + </property> + <property name="monitorHDMI-1" type="empty"> + <property name="workspace0" type="empty"> + <property name="color-style" type="int" value="0"/> + <property name="image-style" type="int" value="5"/> + <property name="last-image" type="string" value="/usr/share/backgrounds/xfce/xfce-verticals.png"/> + </property> + <property name="workspace1" type="empty"> + <property name="color-style" type="int" value="0"/> + <property name="image-style" type="int" value="5"/> + <property name="last-image" type="string" value="/usr/share/backgrounds/xfce/xfce-verticals.png"/> + </property> + <property name="workspace2" type="empty"> + <property name="color-style" type="int" value="0"/> + <property name="image-style" type="int" value="5"/> + <property name="last-image" type="string" value="/usr/share/backgrounds/xfce/xfce-verticals.png"/> + </property> + <property name="workspace3" type="empty"> + <property name="color-style" type="int" value="0"/> + <property name="image-style" type="int" value="5"/> + <property name="last-image" type="string" value="/usr/share/backgrounds/xfce/xfce-verticals.png"/> + </property> + </property> + </property> + </property> +</channel> diff --git a/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml b/dot_config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml similarity index 69% rename from .config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml rename to dot_config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml index ab0d597..2faa48e 100644 --- a/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml +++ b/dot_config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml @@ -17,22 +17,62 @@ <property name="<Primary>Escape" type="empty"/> <property name="XF86WWW" type="empty"/> <property name="XF86Mail" type="empty"/> + <property name="<Primary><Alt>Escape" type="empty"/> + <property name="Print" type="empty"/> + <property name="<Alt>Print" type="empty"/> + <property name="XF86HomePage" type="empty"/> + <property name="<Super>w" type="empty"/> + <property name="<Super>m" type="empty"/> + <property name="XF86Explorer" type="empty"/> + <property name="<Super>f" type="empty"/> + <property name="<Super>F1" type="empty"/> + <property name="<Primary><Alt>t" type="empty"/> + <property name="<Super>t" type="empty"/> + <property name="<Super>r" type="empty"/> + <property name="<Super>e" type="empty"/> + <property name="XF86Calculator" type="empty"/> + <property name="XF86Music" type="empty"/> + <property name="<Super>1" type="empty"/> + <property name="XF86Messenger" type="empty"/> + <property name="<Super>2" type="empty"/> + <property name="<Super>3" type="empty"/> + <property name="<Super>4" type="empty"/> </property> <property name="custom" type="empty"> + <property name="Print" type="string" value="xfce4-screenshooter -f"/> + <property name="<Alt>Print" type="string" value="xfce4-screenshooter -w"/> + <property name="<Primary><Alt>Delete" type="string" value="xflock4"/> + <property name="XF86Explorer" type="string" value="exo-open --launch FileManager"/> + <property name="<Super>e" type="string" value="mousepad"/> + <property name="<Super>f" type="string" value="exo-open --launch FileManager"/> <property name="<Alt>F3" type="string" value="xfce4-appfinder"> <property name="startup-notify" type="bool" value="true"/> </property> - <property name="<Alt>F1" type="string" value="xfce4-popup-applicationsmenu"/> - <property name="<Alt>F2" type="string" value="xfce4-appfinder --collapsed"> + <property name="<Alt>F2" type="string" value="xfrun4"> <property name="startup-notify" type="bool" value="true"/> </property> - <property name="<Primary><Alt>Delete" type="string" value="xflock4"/> <property name="<Primary><Alt>l" type="string" value="xflock4"/> - <property name="XF86Mail" type="string" value="exo-open --launch MailReader"/> - <property name="XF86Display" type="string" value="xfce4-display-settings --minimal"/> - <property name="XF86WWW" type="string" value="exo-open --launch WebBrowser"/> + <property name="<Super>m" type="string" value="exo-open --launch MailReader"/> + <property name="<Super>1" type="string" value="parole"/> + <property name="<Super>2" type="string" value="pidgin"/> + <property name="<Super>3" type="string" value="libreoffice --writer"/> + <property name="<Super>4" type="string" value="libreoffice --calc"/> + <property name="<Primary><Alt>t" type="string" value="exo-open --launch TerminalEmulator"/> + <property name="<Super>r" type="string" value="xfce4-appfinder"/> + <property name="<Super>t" type="string" value="exo-open --launch TerminalEmulator"/> <property name="<Super>p" type="string" value="xfce4-display-settings --minimal"/> - <property name="<Primary>Escape" type="string" value="xfdesktop --menu"/> + <property name="<Super>w" type="string" value="exo-open --launch WebBrowser"/> + <property name="<Primary>Escape" type="string" value="xfce4-popup-whiskermenu"/> + <property name="XF86Display" type="string" value="xfce4-display-settings --minimal"/> + <property name="<Alt>F1" type="string" value="xfce4-popup-applicationsmenu"/> + <property name="XF86WWW" type="string" value="exo-open --launch WebBrowser"/> + <property name="XF86Mail" type="string" value="exo-open --launch MailReader"/> + <property name="<Primary><Alt>Escape" type="string" value="xkill"/> + <property name="XF86Messenger" type="string" value="pidgin"/> + <property name="XF86Calculator" type="string" value="mate-calc"/> + <property name="XF86Music" type="string" value="parole"/> + <property name="XF86HomePage" type="string" value="exo-open --launch WebBrowser"/> + <property name="<Super>F1" type="string" value="xfce4-find-cursor"/> <property name="override" type="bool" value="true"/> </property> </property> @@ -90,59 +130,76 @@ <property name="<Primary>F10" type="empty"/> <property name="<Primary>F11" type="empty"/> <property name="<Primary>F12" type="empty"/> + <property name="<Alt>F5" type="empty"/> + <property name="<Super>KP_1" type="empty"/> + <property name="<Super>Down" type="empty"/> + <property name="<Super>KP_3" type="empty"/> + <property name="<Super>Left" type="empty"/> + <property name="<Super>Right" type="empty"/> + <property name="<Super>KP_7" type="empty"/> + <property name="<Super>Up" type="empty"/> + <property name="<Super>KP_9" type="empty"/> </property> <property name="custom" type="empty"> <property name="Up" type="string" value="up_key"/> <property name="<Primary><Alt>KP_9" type="string" value="move_window_workspace_9_key"/> - <property name="<Primary><Alt>KP_8" type="string" value="move_window_workspace_8_key"/> + <property name="<Super>KP_7" type="string" value="tile_up_left_key"/> <property name="Left" type="string" value="left_key"/> + <property name="<Super>KP_9" type="string" value="tile_up_right_key"/> + <property name="<Primary><Alt>KP_7" type="string" value="move_window_workspace_7_key"/> + <property name="<Primary>F3" type="string" value="workspace_3_key"/> + <property name="<Super>Up" type="string" value="tile_up_key"/> + <property name="<Alt>Tab" type="string" value="cycle_windows_key"/> <property name="<Primary><Alt>KP_6" type="string" value="move_window_workspace_6_key"/> <property name="<Alt>Insert" type="string" value="add_workspace_key"/> - <property name="<Alt>Tab" type="string" value="cycle_windows_key"/> - <property name="<Alt><Shift>Tab" type="string" value="cycle_reverse_windows_key"/> - <property name="<Primary><Alt>KP_7" type="string" value="move_window_workspace_7_key"/> <property name="<Primary><Alt>Right" type="string" value="right_workspace_key"/> <property name="<Primary><Shift><Alt>Right" type="string" value="move_window_right_key"/> <property name="<Primary><Alt>d" type="string" value="show_desktop_key"/> <property name="<Primary><Alt>Up" type="string" value="up_workspace_key"/> - <property name="<Primary>F7" type="string" value="workspace_7_key"/> + <property name="<Primary><Alt>KP_8" type="string" value="move_window_workspace_8_key"/> + <property name="<Primary><Alt>KP_4" type="string" value="move_window_workspace_4_key"/> + <property name="<Alt><Shift>Tab" type="string" value="cycle_reverse_windows_key"/> + <property name="<Primary><Alt>KP_3" type="string" value="move_window_workspace_3_key"/> <property name="<Primary><Alt>Home" type="string" value="move_window_prev_workspace_key"/> - <property name="<Alt>F4" type="string" value="close_window_key"/> - <property name="<Primary><Shift><Alt>Left" type="string" value="move_window_left_key"/> - <property name="<Alt>F6" type="string" value="stick_window_key"/> - <property name="<Alt>F10" type="string" value="maximize_window_key"/> - <property name="<Alt>F12" type="string" value="above_key"/> - <property name="<Alt>F9" type="string" value="hide_window_key"/> + <property name="<Super>Right" type="string" value="tile_right_key"/> <property name="<Primary><Alt>Down" type="string" value="down_workspace_key"/> - <property name="<Alt>F8" type="string" value="resize_window_key"/> - <property name="<Super>Tab" type="string" value="switch_window_key"/> - <property name="Escape" type="string" value="cancel_key"/> - <property name="<Primary><Alt>End" type="string" value="move_window_next_workspace_key"/> - <property name="<Primary>F10" type="string" value="workspace_10_key"/> - <property name="<Primary>F11" type="string" value="workspace_11_key"/> + <property name="<Alt>F5" type="string" value="maximize_horiz_key"/> + <property name="<Primary><Shift><Alt>Left" type="string" value="move_window_left_key"/> <property name="<Alt>F11" type="string" value="fullscreen_key"/> + <property name="<Super>Down" type="string" value="tile_down_key"/> + <property name="<Alt>F6" type="string" value="maximize_vert_key"/> + <property name="<Alt>F4" type="string" value="close_window_key"/> + <property name="<Alt>F12" type="string" value="above_key"/> + <property name="Escape" type="string" value="cancel_key"/> + <property name="<Alt>F7" type="string" value="maximize_window_key"/> + <property name="<Alt>F8" type="string" value="stick_window_key"/> + <property name="<Primary><Alt>End" type="string" value="move_window_next_workspace_key"/> + <property name="<Primary>F11" type="string" value="workspace_11_key"/> + <property name="<Primary>F10" type="string" value="workspace_10_key"/> + <property name="<Super>Tab" type="string" value="switch_window_key"/> + <property name="<Alt>F9" type="string" value="hide_window_key"/> <property name="<Primary><Shift><Alt>Up" type="string" value="move_window_up_key"/> - <property name="Right" type="string" value="right_key"/> <property name="Down" type="string" value="down_key"/> - <property name="<Alt>F7" type="string" value="move_window_key"/> <property name="<Shift><Alt>Page_Down" type="string" value="lower_window_key"/> + <property name="Right" type="string" value="right_key"/> + <property name="<Primary>F6" type="string" value="workspace_6_key"/> <property name="<Primary>F12" type="string" value="workspace_12_key"/> <property name="<Primary>F1" type="string" value="workspace_1_key"/> <property name="<Primary><Alt>Left" type="string" value="left_workspace_key"/> <property name="<Primary>F2" type="string" value="workspace_2_key"/> <property name="<Primary>F4" type="string" value="workspace_4_key"/> <property name="<Primary>F5" type="string" value="workspace_5_key"/> - <property name="<Primary>F6" type="string" value="workspace_6_key"/> - <property name="<Alt>space" type="string" value="popup_menu_key"/> + <property name="<Super>Left" type="string" value="tile_left_key"/> + <property name="<Primary>F7" type="string" value="workspace_7_key"/> <property name="<Primary>F8" type="string" value="workspace_8_key"/> <property name="<Primary>F9" type="string" value="workspace_9_key"/> <property name="<Primary><Alt>KP_1" type="string" value="move_window_workspace_1_key"/> - <property name="<Alt>Delete" type="string" value="del_workspace_key"/> + <property name="<Super>KP_1" type="string" value="tile_down_left_key"/> <property name="<Shift><Alt>Page_Up" type="string" value="raise_window_key"/> - <property name="<Primary>F3" type="string" value="workspace_3_key"/> + <property name="<Super>KP_3" type="string" value="tile_down_right_key"/> <property name="<Primary><Alt>KP_2" type="string" value="move_window_workspace_2_key"/> - <property name="<Primary><Alt>KP_3" type="string" value="move_window_workspace_3_key"/> - <property name="<Primary><Alt>KP_4" type="string" value="move_window_workspace_4_key"/> + <property name="<Alt>Delete" type="string" value="del_workspace_key"/> + <property name="<Alt>space" type="string" value="popup_menu_key"/> <property name="<Primary><Alt>KP_5" type="string" value="move_window_workspace_5_key"/> <property name="override" type="bool" value="true"/> </property> diff --git a/dot_config/xfce4/xfconf/xfce-perchannel-xml/xfce4-notifyd.xml b/dot_config/xfce4/xfconf/xfce-perchannel-xml/xfce4-notifyd.xml new file mode 100644 index 0000000..1d7482c --- /dev/null +++ b/dot_config/xfce4/xfconf/xfce-perchannel-xml/xfce4-notifyd.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<channel name="xfce4-notifyd" version="1.0"> + <property name="notify-location" type="empty"/> + <property name="theme" type="empty"/> + <property name="initial-opacity" type="empty"/> + <property name="applications" type="empty"> + <property name="known_applications" type="array"> + <value type="string" value="Firefox"/> + <value type="string" value="google-chrome"/> + <value type="string" value="nm-applet"/> + <value type="string" value="notify-send"/> + <value type="string" value="org.gnome.Evolution-alarm-notify"/> + <value type="string" value="Spotify"/> + <value type="string" value="Xfce volume control"/> + <value type="string" value="xfce4-settings-helper"/> + </property> + </property> +</channel> diff --git a/dot_config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml b/dot_config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml new file mode 100644 index 0000000..3077199 --- /dev/null +++ b/dot_config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml @@ -0,0 +1,98 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<channel name="xfce4-panel" version="1.0"> + <property name="panels" type="uint" value="1"> + <property name="panel-0" type="empty"> + <property name="position" type="string" value="p=6;x=0;y=0"/> + <property name="length" type="uint" value="100"/> + <property name="position-locked" type="bool" value="true"/> + <property name="plugin-ids" type="array"> + <value type="int" value="7"/> + <value type="int" value="12"/> + <value type="int" value="2"/> + <value type="int" value="3"/> + <value type="int" value="4"/> + <value type="int" value="5"/> + <value type="int" value="6"/> + <value type="int" value="1"/> + <value type="int" value="10"/> + <value type="int" value="11"/> + </property> + <property name="background-style" type="uint" value="0"/> + <property name="background-alpha" type="uint" value="80"/> + <property name="size" type="uint" value="32"/> + <property name="length-adjust" type="bool" value="true"/> + <property name="span-monitors" type="bool" value="false"/> + <property name="enter-opacity" type="uint" value="100"/> + <property name="leave-opacity" type="uint" value="100"/> + <property name="mode" type="uint" value="0"/> + <property name="autohide-behavior" type="uint" value="0"/> + </property> + </property> + <property name="plugins" type="empty"> + <property name="plugin-2" type="string" value="tasklist"> + <property name="flat-buttons" type="bool" value="true"/> + </property> + <property name="plugin-3" type="string" value="separator"> + <property name="style" type="uint" value="0"/> + <property name="expand" type="bool" value="true"/> + </property> + <property name="plugin-4" type="string" value="systray"> + <property name="show-frame" type="bool" value="false"/> + <property name="size-max" type="uint" value="22"/> + <property name="names-visible" type="array"> + <value type="string" value="network"/> + <value type="string" value="networkmanager applet"/> + <value type="string" value="blueman-applet"/> + <value type="string" value="remmina"/> + </property> + <property name="names-ordered" type="array"> + <value type="string" value="remmina"/> + <value type="string" value="hexchat"/> + <value type="string" value="obs"/> + </property> + <property name="known-items" type="array"> + <value type="string" value="chrome_status_icon_1"/> + <value type="string" value="Barrier"/> + <value type="string" value="discord1"/> + <value type="string" value="vlc"/> + <value type="string" value="obs"/> + <value type="string" value="remmina-icon"/> + </property> + <property name="known-legacy-items" type="array"> + <value type="string" value="reminders"/> + <value type="string" value="evolution-alarm-notify"/> + <value type="string" value="remmina"/> + </property> + </property> + <property name="plugin-9" type="string" value="pulseaudio"> + <property name="enable-keyboard-shortcuts" type="bool" value="true"/> + <property name="enable-mpris" type="bool" value="true"/> + <property name="mixer-command" type="string" value="pavucontrol"/> + <property name="mpris-players" type="string" value="parole"/> + <property name="show-notifications" type="bool" value="true"/> + </property> + <property name="plugin-10" type="string" value="separator"> + <property name="style" type="uint" value="0"/> + <property name="expand" type="bool" value="false"/> + </property> + <property name="plugin-11" type="string" value="clock"> + <property name="digital-format" type="string" value="%d %b, %H:%M:%S"/> + </property> + <property name="plugin-12" type="string" value="pager"> + <property name="rows" type="uint" value="1"/> + <property name="miniature-view" type="bool" value="true"/> + </property> + <property name="plugin-13" type="string" value="genmon"/> + <property name="plugin-1" type="string" value="xfce4-clipman-plugin"/> + <property name="plugin-5" type="string" value="cpugraph"/> + <property name="plugin-6" type="string" value="pulseaudio"> + <property name="enable-keyboard-shortcuts" type="bool" value="true"/> + <property name="mpris-players" type="string" value="chrome.instance486584;firefox.instance139344;firefox.instance177030;firefox.instance354219;firefox.instance435270;firefox.instance47310;firefox.instance67698;firefox.instance8847;firefox.instance984;kdeconnect.mpris_139c920d94b14a47b3c01f1cb40b9a31;spotify;vlc"/> + </property> + <property name="plugin-7" type="string" value="applicationsmenu"> + <property name="show-button-title" type="bool" value="false"/> + </property> + </property> + <property name="configver" type="int" value="2"/> +</channel> diff --git a/dot_config/xfce4/xfconf/xfce-perchannel-xml/xfce4-power-manager.xml b/dot_config/xfce4/xfconf/xfce-perchannel-xml/xfce4-power-manager.xml new file mode 100644 index 0000000..2950c5c --- /dev/null +++ b/dot_config/xfce4/xfconf/xfce-perchannel-xml/xfce4-power-manager.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<channel name="xfce4-power-manager" version="1.0"> + <property name="xfce4-power-manager" type="empty"> + <property name="power-button-action" type="empty"/> + <property name="lock-screen-suspend-hibernate" type="bool" value="false"/> + <property name="logind-handle-lid-switch" type="empty"/> + <property name="blank-on-ac" type="int" value="60"/> + <property name="blank-on-battery" type="empty"/> + <property name="dpms-enabled" type="bool" value="false"/> + <property name="dpms-on-ac-sleep" type="uint" value="60"/> + <property name="dpms-on-ac-off" type="uint" value="60"/> + <property name="dpms-on-battery-sleep" type="empty"/> + <property name="dpms-on-battery-off" type="empty"/> + <property name="show-panel-label" type="empty"/> + <property name="brightness-switch-restore-on-exit" type="int" value="1"/> + <property name="brightness-switch" type="int" value="0"/> + <property name="show-tray-icon" type="bool" value="false"/> + </property> +</channel> diff --git a/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml b/dot_config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml similarity index 63% rename from .config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml rename to dot_config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml index 276b7ec..ac75ee5 100644 --- a/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml +++ b/dot_config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml @@ -3,26 +3,43 @@ <channel name="xfce4-session" version="1.0"> <property name="general" type="empty"> <property name="FailsafeSessionName" type="empty"/> - <property name="SessionName" type="string" value="Default"/> + <property name="LockCommand" type="empty"/> <property name="SaveOnExit" type="bool" value="true"/> + <property name="SessionName" type="string" value="Default"/> </property> <property name="sessions" type="empty"> <property name="Failsafe" type="empty"> <property name="IsFailsafe" type="empty"/> <property name="Count" type="empty"/> <property name="Client0_Command" type="empty"/> + <property name="Client0_Priority" type="empty"/> <property name="Client0_PerScreen" type="empty"/> <property name="Client1_Command" type="empty"/> + <property name="Client1_Priority" type="empty"/> <property name="Client1_PerScreen" type="empty"/> <property name="Client2_Command" type="empty"/> + <property name="Client2_Priority" type="empty"/> <property name="Client2_PerScreen" type="empty"/> <property name="Client3_Command" type="empty"/> + <property name="Client3_Priority" type="empty"/> <property name="Client3_PerScreen" type="empty"/> <property name="Client4_Command" type="empty"/> + <property name="Client4_Priority" type="empty"/> <property name="Client4_PerScreen" type="empty"/> </property> </property> <property name="splash" type="empty"> <property name="Engine" type="empty"/> </property> + <property name="compat" type="empty"> + <property name="LaunchGNOME" type="empty"/> + </property> + <property name="shutdown" type="empty"> + <property name="LockScreen" type="empty"/> + </property> + <property name="startup" type="empty"> + <property name="screensaver" type="empty"> + <property name="type" type="empty"/> + </property> + </property> </channel> diff --git a/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-settings-manager.xml b/dot_config/xfce4/xfconf/xfce-perchannel-xml/xfce4-settings-manager.xml similarity index 56% rename from .config/xfce4/xfconf/xfce-perchannel-xml/xfce4-settings-manager.xml rename to dot_config/xfce4/xfconf/xfce-perchannel-xml/xfce4-settings-manager.xml index e2805de..e3f254f 100644 --- a/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-settings-manager.xml +++ b/dot_config/xfce4/xfconf/xfce-perchannel-xml/xfce4-settings-manager.xml @@ -2,7 +2,7 @@ <channel name="xfce4-settings-manager" version="1.0"> <property name="last" type="empty"> - <property name="window-width" type="int" value="721"/> - <property name="window-height" type="int" value="500"/> + <property name="window-width" type="int" value="948"/> + <property name="window-height" type="int" value="2032"/> </property> </channel> diff --git a/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml b/dot_config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml similarity index 89% rename from .config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml rename to dot_config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml index 06196bb..d13769e 100644 --- a/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml +++ b/dot_config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml @@ -3,7 +3,6 @@ <channel name="xfwm4" version="1.0"> <property name="general" type="empty"> <property name="activate_action" type="string" value="bring"/> - <property name="borderless_maximize" type="bool" value="true"/> <property name="box_move" type="bool" value="false"/> <property name="box_resize" type="bool" value="false"/> <property name="button_layout" type="string" value="O|SHMC"/> @@ -12,35 +11,20 @@ <property name="click_to_focus" type="bool" value="true"/> <property name="cycle_apps_only" type="bool" value="false"/> <property name="cycle_draw_frame" type="bool" value="true"/> - <property name="cycle_hidden" type="bool" value="true"/> - <property name="cycle_minimum" type="bool" value="true"/> <property name="cycle_preview" type="bool" value="true"/> - <property name="cycle_tabwin_mode" type="int" value="0"/> - <property name="cycle_workspaces" type="bool" value="false"/> - <property name="double_click_action" type="string" value="maximize"/> <property name="double_click_distance" type="int" value="5"/> <property name="double_click_time" type="int" value="250"/> - <property name="easy_click" type="string" value="Alt"/> <property name="focus_delay" type="int" value="250"/> - <property name="focus_hint" type="bool" value="true"/> <property name="focus_new" type="bool" value="true"/> <property name="frame_opacity" type="int" value="100"/> <property name="full_width_title" type="bool" value="true"/> - <property name="horiz_scroll_opacity" type="bool" value="false"/> - <property name="inactive_opacity" type="int" value="100"/> <property name="maximized_offset" type="int" value="0"/> <property name="mousewheel_rollup" type="bool" value="true"/> - <property name="move_opacity" type="int" value="100"/> <property name="placement_mode" type="string" value="center"/> - <property name="placement_ratio" type="int" value="20"/> - <property name="popup_opacity" type="int" value="100"/> - <property name="prevent_focus_stealing" type="bool" value="false"/> <property name="raise_delay" type="int" value="250"/> <property name="raise_on_click" type="bool" value="true"/> <property name="raise_on_focus" type="bool" value="false"/> - <property name="raise_with_any_button" type="bool" value="true"/> <property name="repeat_urgent_blink" type="bool" value="false"/> - <property name="resize_opacity" type="int" value="100"/> <property name="scroll_workspaces" type="bool" value="true"/> <property name="shadow_delta_height" type="int" value="0"/> <property name="shadow_delta_width" type="int" value="0"/> @@ -51,43 +35,63 @@ <property name="show_dock_shadow" type="bool" value="true"/> <property name="show_frame_shadow" type="bool" value="true"/> <property name="show_popup_shadow" type="bool" value="false"/> - <property name="snap_resist" type="bool" value="false"/> <property name="snap_to_border" type="bool" value="true"/> <property name="snap_to_windows" type="bool" value="false"/> <property name="snap_width" type="int" value="10"/> - <property name="sync_to_vblank" type="bool" value="false"/> <property name="theme" type="string" value="Default"/> - <property name="tile_on_move" type="bool" value="true"/> <property name="title_alignment" type="string" value="center"/> <property name="title_font" type="string" value="Sans Bold 9"/> <property name="title_horizontal_offset" type="int" value="0"/> - <property name="titleless_maximize" type="bool" value="false"/> <property name="title_shadow_active" type="string" value="false"/> <property name="title_shadow_inactive" type="string" value="false"/> <property name="title_vertical_offset_active" type="int" value="0"/> <property name="title_vertical_offset_inactive" type="int" value="0"/> - <property name="toggle_workspaces" type="bool" value="false"/> - <property name="unredirect_overlays" type="bool" value="true"/> <property name="urgent_blink" type="bool" value="false"/> <property name="use_compositing" type="bool" value="true"/> - <property name="workspace_count" type="int" value="6"/> - <property name="wrap_cycle" type="bool" value="true"/> - <property name="wrap_layout" type="bool" value="true"/> + <property name="workspace_count" type="int" value="5"/> <property name="workspace_names" type="array"> <value type="string" value="1"/> - <value type="string" value="Workspace 2"/> - <value type="string" value="Workspace 3"/> - <value type="string" value="Workspace 4"/> + <value type="string" value="2"/> + <value type="string" value="3"/> + <value type="string" value="5"/> + <value type="string" value="6"/> + <value type="string" value="7"/> <value type="string" value="9"/> + <value type="string" value="Workspace 8"/> <value type="string" value="9"/> - <value type="string" value="Workspace 7"/> - <value type="string" value="10"/> - <value type="string" value="Workspace 9"/> - <value type="string" value="Workspace 10"/> </property> <property name="wrap_resistance" type="int" value="10"/> <property name="wrap_windows" type="bool" value="true"/> <property name="wrap_workspaces" type="bool" value="false"/> + <property name="borderless_maximize" type="bool" value="true"/> + <property name="cycle_hidden" type="bool" value="true"/> + <property name="cycle_minimum" type="bool" value="true"/> + <property name="cycle_tabwin_mode" type="int" value="0"/> + <property name="cycle_workspaces" type="bool" value="false"/> + <property name="double_click_action" type="string" value="maximize"/> + <property name="easy_click" type="string" value="Alt"/> + <property name="focus_hint" type="bool" value="true"/> + <property name="horiz_scroll_opacity" type="bool" value="false"/> + <property name="inactive_opacity" type="int" value="100"/> + <property name="move_opacity" type="int" value="100"/> + <property name="placement_ratio" type="int" value="20"/> + <property name="popup_opacity" type="int" value="100"/> + <property name="prevent_focus_stealing" type="bool" value="false"/> + <property name="raise_with_any_button" type="bool" value="true"/> + <property name="resize_opacity" type="int" value="100"/> + <property name="snap_resist" type="bool" value="false"/> + <property name="sync_to_vblank" type="bool" value="false"/> + <property name="tile_on_move" type="bool" value="true"/> + <property name="titleless_maximize" type="bool" value="false"/> + <property name="toggle_workspaces" type="bool" value="false"/> + <property name="unredirect_overlays" type="bool" value="true"/> + <property name="wrap_cycle" type="bool" value="true"/> + <property name="wrap_layout" type="bool" value="true"/> <property name="zoom_desktop" type="bool" value="true"/> + <property name="cycle_raise" type="bool" value="false"/> + <property name="cycle_minimized" type="bool" value="false"/> + <property name="frame_border_top" type="int" value="0"/> + <property name="vblank_mode" type="string" value="auto"/> + <property name="zoom_pointer" type="bool" value="true"/> </property> </channel> diff --git a/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml b/dot_config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml similarity index 64% rename from .config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml rename to dot_config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml index 349e8e3..762e18a 100644 --- a/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml +++ b/dot_config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml @@ -2,7 +2,7 @@ <channel name="xsettings" version="1.0"> <property name="Net" type="empty"> - <property name="ThemeName" type="string" value="Arc"/> + <property name="ThemeName" type="string" value="Adwaita-dark"/> <property name="IconThemeName" type="string" value="Arc"/> <property name="DoubleClickTime" type="empty"/> <property name="DoubleClickDistance" type="empty"/> @@ -12,18 +12,21 @@ <property name="SoundThemeName" type="empty"/> <property name="EnableEventSounds" type="empty"/> <property name="EnableInputFeedbackSounds" type="empty"/> + <property name="FallbackIconTheme" type="empty"/> </property> <property name="Xft" type="empty"> - <property name="DPI" type="int" value="120"/> - <property name="Antialias" type="empty"/> + <property name="DPI" type="int" value="130"/> + <property name="Antialias" type="int" value="1"/> <property name="Hinting" type="int" value="1"/> <property name="HintStyle" type="string" value="hintslight"/> <property name="RGBA" type="string" value="rgb"/> + <property name="Lcdfilter" type="empty"/> </property> <property name="Gtk" type="empty"> <property name="CanChangeAccels" type="empty"/> <property name="ColorPalette" type="empty"/> - <property name="FontName" type="string" value="Cantarell 11"/> + <property name="FontName" type="string" value="Sans 12"/> + <property name="MonospaceFontName" type="string" value="Liberation Mono 12"/> <property name="IconSizes" type="empty"/> <property name="KeyThemeName" type="empty"/> <property name="ToolbarStyle" type="empty"/> @@ -31,11 +34,16 @@ <property name="MenuImages" type="empty"/> <property name="ButtonImages" type="empty"/> <property name="MenuBarAccel" type="empty"/> - <property name="CursorThemeName" type="string" value="mate"/> - <property name="CursorThemeSize" type="int" value="18"/> + <property name="CursorThemeName" type="string" value="elementary"/> + <property name="CursorThemeSize" type="empty"/> <property name="DecorationLayout" type="empty"/> + <property name="DialogsUseHeader" type="empty"/> + <property name="TitlebarMiddleClick" type="empty"/> + </property> + <property name="Gdk" type="empty"> + <property name="WindowScalingFactor" type="empty"/> </property> <property name="Xfce" type="empty"> - <property name="LastCustomDPI" type="int" value="120"/> + <property name="LastCustomDPI" type="int" value="130"/> </property> </channel> diff --git a/.conkyrc b/dot_conkyrc similarity index 100% rename from .conkyrc rename to dot_conkyrc diff --git a/.emacs.local/barak-theme.el b/dot_emacs.local/barak-theme.el similarity index 100% rename from .emacs.local/barak-theme.el rename to dot_emacs.local/barak-theme.el diff --git a/.fehbg.example b/dot_fehbg.example similarity index 100% rename from .fehbg.example rename to dot_fehbg.example diff --git a/.fonts/Droid Sans Mono Dotted.ttf b/dot_fonts/Droid Sans Mono Dotted.ttf similarity index 100% rename from .fonts/Droid Sans Mono Dotted.ttf rename to dot_fonts/Droid Sans Mono Dotted.ttf diff --git a/.gitconfig b/dot_gitconfig similarity index 54% rename from .gitconfig rename to dot_gitconfig index 9cf26ee..5e7cf17 100644 --- a/.gitconfig +++ b/dot_gitconfig @@ -3,6 +3,7 @@ email = me@barakmich.com [alias] + br = branch -a -v st = status -uno stat = status -uno ci = commit @@ -16,10 +17,18 @@ ours = "!f() { git checkout --ours $@ && git add $@; }; f" theirs = "!f() { git checkout --theirs $@ && git add $@; }; f" praise = blame + hist = show-branch -a + undo-last = reset HEAD^ + unstage = restore --staged + latest = branch --sort=committerdate + f = fetch origin main [diff] renamelimit = 0 +[merge] + conflictstyle = diff3 + [color] diff = auto interactive = auto @@ -34,3 +43,22 @@ default = current [rerere] enabled = true + +[url "git@github.com:"] + insteadOf = https://github.com + +[url "git@git.barakmich.com:"] + insteadOf = https://git.barakmich.com +[pull] + ff = only +[init] + defaultBranch = main +[filter "lfs"] + clean = git-lfs clean -- %f + smudge = git-lfs smudge -- %f + process = git-lfs filter-process + required = true +[status] + submodulesummary = 1 +[submodule] + recurse = true diff --git a/dot_gitignore b/dot_gitignore new file mode 100644 index 0000000..93bfd12 --- /dev/null +++ b/dot_gitignore @@ -0,0 +1,2 @@ +*~ +.DS_Store diff --git a/dot_gnome.dconf b/dot_gnome.dconf new file mode 100644 index 0000000..7fd06a0 --- /dev/null +++ b/dot_gnome.dconf @@ -0,0 +1,100 @@ +[desktop/input-sources] +current=uint32 0 +sources=[('xkb', 'us')] +xkb-options=['lv3:ralt_switch', 'ctrl:nocaps'] + +[desktop/interface] +clock-show-seconds=false +clock-show-weekday=true +enable-hot-corners=false +gtk-im-module='gtk-im-context-simple' +gtk-key-theme='Default' +show-battery-percentage=true +text-scaling-factor=1.2 +toolkit-accessibility=false + +[desktop/peripherals/mouse] +natural-scroll=false + +[desktop/peripherals/touchpad] +natural-scroll=false +tap-to-click=true +two-finger-scrolling-enabled=true + +[desktop/privacy] +report-technical-problems=false + +[desktop/wm/keybindings] +close=['<Shift><Alt>c'] +move-to-workspace-1=['<Shift><Alt>exclam'] +move-to-workspace-10=['<Shift><Alt>parenright'] +move-to-workspace-2=['<Shift><Alt>at'] +move-to-workspace-3=['<Shift><Alt>numbersign'] +move-to-workspace-4=['<Shift><Alt>dollar'] +move-to-workspace-5=['<Shift><Alt>percent'] +move-to-workspace-6=['<Shift><Alt>asciicircum'] +move-to-workspace-7=['<Shift><Alt>ampersand'] +move-to-workspace-8=['<Shift><Alt>asterisk'] +move-to-workspace-9=['<Shift><Alt>parenleft'] +move-to-workspace-left=['<Primary><Shift><Alt>h'] +move-to-workspace-right=['<Primary><Shift><Alt>l'] +switch-to-workspace-1=['<Alt>1'] +switch-to-workspace-10=['<Alt>0'] +switch-to-workspace-2=['<Alt>2'] +switch-to-workspace-3=['<Alt>3'] +switch-to-workspace-4=['<Alt>4'] +switch-to-workspace-5=['<Alt>5'] +switch-to-workspace-6=['<Alt>6'] +switch-to-workspace-7=['<Alt>7'] +switch-to-workspace-8=['<Alt>8'] +switch-to-workspace-9=['<Alt>9'] + +[desktop/wm/preferences] +focus-mode='mouse' +num-workspaces=10 + +[mutter] +dynamic-workspaces=false + +[settings-daemon/plugins/media-keys] +custom-keybindings=['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/'] +screensaver=['<Shift><Alt>F12'] + +[settings-daemon/plugins/media-keys/custom-keybindings/custom0] +binding='<Shift><Alt>Return' +command='terminator' +name='Launch Terminal' + +[shell/extensions/pop-shell] +activate-launcher=['<Primary>space'] +active-hint=true +focus-down=['<Alt>j'] +focus-left=['<Alt>h'] +focus-right=['<Alt>l'] +focus-up=['<Alt>k'] +gap-inner=uint32 2 +gap-outer=uint32 2 +hint-color-rgba='rgb(52,158,143)' +show-title=false +smart-gaps=true +tile-by-default=true +tile-enter=['<Alt>r'] +toggle-floating=['<Alt>g'] +toggle-tiling=['<Alt>y'] + +[shell/keybindings] +focus-active-notification=['<Alt>n'] +toggle-application-view=@as [] +toggle-message-tray=['<Shift><Alt>n'] + +[terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9] +background-color='rgb(0,0,0)' +background-transparency-percent=13 +bold-is-bright=false +font='Iosevka Berkeley 18' +foreground-color='rgb(255,255,255)' +palette=['rgb(46,52,54)', 'rgb(204,0,0)', 'rgb(78,154,6)', 'rgb(196,160,0)', 'rgb(52,101,164)', 'rgb(117,80,123)', 'rgb(6,152,154)', 'rgb(211,215,207)', 'rgb(85,87,83)', 'rgb(239,41,41)', 'rgb(138,226,52)', 'rgb(252,233,79)', 'rgb(114,159,207)', 'rgb(173,127,168)', 'rgb(52,226,226)', 'rgb(238,238,236)'] +scrollbar-policy='never' +use-system-font=false +use-theme-colors=false +use-transparent-background=true diff --git a/.gvimrc b/dot_gvimrc similarity index 100% rename from .gvimrc rename to dot_gvimrc diff --git a/.hgrc b/dot_hgrc similarity index 100% rename from .hgrc rename to dot_hgrc diff --git a/.i3/config b/dot_i3/config similarity index 79% rename from .i3/config rename to dot_i3/config index de57186..0574562 100644 --- a/.i3/config +++ b/dot_i3/config @@ -1,6 +1,6 @@ -# This file has been auto-generated by i3-config-wizard(1). +# This file has been auto-generated by i4-config-wizard(1). # It will not be overwritten, so edit it as you like. -# +#jk # Should you change your keyboard layout some time, delete # this file and re-run i3-config-wizard(1). # @@ -10,6 +10,7 @@ # Please see http://i3wm.org/docs/userguide.html for a complete reference! set $mod Mod1 +set $win Mod4 # Font for window titles. Will also be used by the bar unless a different font # is used in the bar {} block below. @@ -38,11 +39,15 @@ client.urgent #2f343a #900000 #ffffff #900000 # Use Mouse+$mod to drag floating windows to their wanted position floating_modifier $mod +#gaps inner 10 + # start a terminal -bindsym $mod+Shift+Return exec run_terminal +bindsym $mod+Shift+Return exec alacritty -bindsym Control+space exec rofi -show run -fuzzy -terminal run_terminal +#bindsym Control+space exec rofi -show run -fuzzy -terminal run_terminal +#bindsym Control+space exec rofi -combi-modi window,run,ssh -modi combi -show combi +bindsym Control+space exec "rofi -combi-modi run,drun -modi combi -show combi -terminal run_terminal -fuzzy" # kill focused window bindsym $mod+Shift+c kill @@ -54,6 +59,8 @@ bindsym $mod+d exec i3-dmenu-desktop --dmenu='rofi -dmenu' bindsym $mod+F12 exec xscreensaver-command -lock bindsym $mod+Shift+y exec xinput-toggle -r yubikey -n -e -t 10 +bindsym $mod+Shift+f exec --no-startup-id xmodmap ~/.Xmodmap +bindsym $mod+Shift+s exec xfce4-screenshooter # There also is the (new) i3-dmenu-desktop which only displays applications # shipping a .desktop file. It is a wrapper around dmenu, so you need that # installed. @@ -61,11 +68,13 @@ bindsym $mod+Shift+y exec xinput-toggle -r yubikey -n -e -t 10 # change focus bindsym $mod+h focus left -#bindsym $mod+j focus down -#bindsym $mod+k focus up +bindsym $mod+j focus down +bindsym $mod+k focus up bindsym $mod+l focus right -bindsym $mod+j exec --no-startup-id ~/.i3/i3-focus-next -bindsym $mod+k exec --no-startup-id ~/.i3/i3-focus-next --reverse +#bindsym $mod+j exec --no-startup-id ~/.i3/i3-focus-next +#bindsym $mod+k exec --no-startup-id ~/.i3/i3-focus-next --reverse +bindsym $mod+y move workspace to output left +bindsym $mod+Return exec --no-startup-id ~/.i3/i3-barak-tool.py promote # alternatively, you can use the cursor keys: #bindsym $mod+Left focus left @@ -123,6 +132,8 @@ bindsym $mod+8 workspace 8 bindsym $mod+9 workspace 9 bindsym $mod+0 workspace 10 +bindsym $mod+Tab workspace back_and_forth + # move focused container to workspace bindsym $mod+Shift+1 move container to workspace 1 bindsym $mod+Shift+2 move container to workspace 2 @@ -142,6 +153,8 @@ bindsym $mod+Shift+r restart # exit i3 (logs you out of your X session) bindsym $mod+Shift+q exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'" +bindsym $mod+u resize set width 62ppt + # resize window (you can also use the mouse for that) mode "resize" { # These bindings trigger as soon as you enter the resize mode @@ -194,6 +207,25 @@ mode "moveworkspace" { bindsym $mod+t mode "moveworkspace" +mode "goremote" { + bindsym g exec "remmina -c ~/.local/share/remmina/1523485448993.remmina"; mode "default" + bindsym t exec "run_terminal -x ssh -p 2222 barak@rack.0b100.net"; mode "default" + bindsym p exec "run_terminal -x ssh -p 2222 barak@barakmich.com"; mode "default" + bindsym Return mode "default" + bindsym Escape mode "default" +} + +bindsym $mod+Shift+Control+r mode "goremote" + + +# Media controls +bindsym $win+Shift+k exec "playerctl play-pause" +bindsym $win+Shift+h exec "playerctl previous" +bindsym $win+Shift+l exec "playerctl next" +# Spotify doesn't understand volume controls? +#bindsym $win+Shift+j exec "playerctl volume 0.1-" +#bindsym $win+Shift+k exec "playerctl volume 0.1+" + # Start i3bar to display a workspace bar (plus the system information i3status # finds out, if available) #bar { @@ -202,4 +234,7 @@ bindsym $mod+t mode "moveworkspace" #position top #tray_output primary #} -exec --no-startup-id xfce4-panel --disable-wm-check +#exec --no-startup-id xfce4-panel --disable-wm-check +#exec polybar HDMI1 +#exec --no-startup-id nitrogen --restore +#exec --no-startup-id picom -b --config ~/.compton.conf diff --git a/dot_i3/i3-barak-tool.py b/dot_i3/i3-barak-tool.py new file mode 100755 index 0000000..97e9c6e --- /dev/null +++ b/dot_i3/i3-barak-tool.py @@ -0,0 +1,151 @@ +#!/usr/bin/env python3 + +import json +import subprocess +import socket +import struct +import sys + + +_struct_header = '=6sII' + +RUN_COMMAND = 0 +GET_WORKSPACES = 1 +SUBSCRIBE = 4 +GET_OUTPUTS=3 +GET_TREE = 4 + + +def get_i3_socketpath(): + socketpath = subprocess.check_output(["i3", "--get-socketpath"]) + return socketpath.decode().rstrip() + + +def format_i3_command(kind: int, cmd: str): + b = cmd.encode() + return b"i3-ipc" + struct.pack("=II", len(b), kind) + b + + +def _ipc_recv(sock): + data = sock.recv(14) + + if len(data) == 0: + raise EOFError('got EOF from ipc socket') + + _, msg_length, msg_type = _unpack_header(data) + msg_size = 6 + msg_length + while len(data) < msg_size: + data += sock.recv(msg_length) + payload = _unpack(data) + return payload, msg_type + + +def _unpack(data): + _, msg_length, _ = _unpack_header(data) + size = struct.calcsize(_struct_header) + msg_size = size + msg_length + payload = data[size:msg_size] + return payload.decode('utf-8', 'replace') + + +def _unpack_header(data: bytes): + return struct.unpack(_struct_header, data[:struct.calcsize(_struct_header)]) + + +def open_i3_socket(): + client = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) + client.connect(get_i3_socketpath()) + return client + + +def send_command(client, kind, data): + client.sendall(format_i3_command(kind, data)) + result, _ = _ipc_recv(client) + return json.loads(result) + + +class TreeNode: + def __init__(self, json): + self.id = None + self.rect = None + self.focused = False + self.name = "" + for k, v in json.items(): + if k != "nodes": + self.__setattr__(k, v) + self.parent = None + self.nodes = list(map(TreeNode, json["nodes"])) + for n in self.nodes: + n.parent = self + + def find(self, where=None): + if where is None: + where = lambda _: True + if where(self): + yield self + for n in self.nodes: + yield from n.find(where) + + def __repr__(self) -> str: + return "TreeNode(%d, %s, focused=%s, rect=%s)" % (self.id, self.name, self.focused, str(self.rect)) + + def find_parent(self, where=None): + if self.parent is None: + return None + if where is None or where(self.parent): + return self.parent + return self.parent.find_parent(where) + + def leaves(self): + if len(self.nodes) == 0: + yield self + else: + for n in self.nodes: + yield from n.leaves() + + +def find_biggest_window(tree: TreeNode): + max_leaf = None + max_area = 0 + max_x = -1 + for leaf in tree.leaves(): + rect = leaf.rect + area = rect["width"] * rect["height"] + if area > max_area or (area == max_area and max_x > rect["x"]): + max_area = area + max_leaf = leaf + max_x = rect["x"] + + return max_leaf + + +def current_workspace(tree): + focused = list(tree.find(where=lambda n: n.focused is True)) + if len(focused) == 0: + print("not found") + sys.exit(1) + focused = focused[0] + ws = focused.find_parent(lambda n: n.type == "workspace") + return ws + + +def promote(client): + json = send_command(client, GET_TREE, "") + tree = TreeNode(json) + ws = current_workspace(tree) + master = find_biggest_window(ws) + send_command(client, RUN_COMMAND, "swap container with con_id %s" % master.id) + + +def main(): + if len(sys.argv) < 2: + print("needs an argument") + return + command = sys.argv[1] + client = open_i3_socket() + if command == "promote": + promote(client) + client.close() + +if __name__ == "__main__": + main() diff --git a/.i3/i3-focus-next b/dot_i3/i3-focus-next similarity index 100% rename from .i3/i3-focus-next rename to dot_i3/i3-focus-next diff --git a/.i3status.conf b/dot_i3status.conf similarity index 100% rename from .i3status.conf rename to dot_i3status.conf diff --git a/dot_latex/basehtml.cfg b/dot_latex/basehtml.cfg new file mode 100644 index 0000000..34e0fe2 --- /dev/null +++ b/dot_latex/basehtml.cfg @@ -0,0 +1,10 @@ +\Preamble{html} +\begin{document} +\Css {body { + margin-top: 50px; + margin-left: auto; + margin-right: auto; + width: 1000px; + } + } +\EndPreamble diff --git a/dot_local/share/applications/com.spotify.Client.desktop b/dot_local/share/applications/com.spotify.Client.desktop new file mode 100755 index 0000000..1240b5d --- /dev/null +++ b/dot_local/share/applications/com.spotify.Client.desktop @@ -0,0 +1,15 @@ +[Desktop Entry] +Type=Application +Name=Spotify +GenericName=Online music streaming service +Comment=Access all of your favorite music +Icon=com.spotify.Client +Exec=/usr/bin/flatpak run --branch=stable --arch=x86_64 --command=spotify --file-forwarding com.spotify.Client --force-device-scale-factor=1.5 @@u %U @@ +Terminal=false +MimeType=x-scheme-handler/spotify; +Categories=Audio;Music;AudioVideo; +Keywords=Music;Player;Streaming;Online; +StartupWMClass=Spotify +X-GNOME-UsesNotifications=true +X-Flatpak-Tags=proprietary; +X-Flatpak=com.spotify.Client diff --git a/dot_local/share/rofi/themes/rounded-blue-dark.rasi b/dot_local/share/rofi/themes/rounded-blue-dark.rasi new file mode 100644 index 0000000..712d714 --- /dev/null +++ b/dot_local/share/rofi/themes/rounded-blue-dark.rasi @@ -0,0 +1,18 @@ +/******************************************************************************* + * ROUNDED THEME FOR ROFI + * User : LR-Tech + * Theme Repo : https://github.com/lr-tech/rofi-themes-collection + *******************************************************************************/ + +* { + bg0: #212121F2; + bg1: #2A2A2A; + bg2: #3D3D3D80; + bg3: #1A73E8F2; + fg0: #E6E6E6; + fg1: #FFFFFF; + fg2: #969696; + fg3: #3D3D3D; +} + +@import "rounded-common.rasi" diff --git a/dot_local/share/rofi/themes/rounded-common.rasi b/dot_local/share/rofi/themes/rounded-common.rasi new file mode 100644 index 0000000..5072337 --- /dev/null +++ b/dot_local/share/rofi/themes/rounded-common.rasi @@ -0,0 +1,94 @@ +/******************************************************************************* + * ROUNDED THEME FOR ROFI + * User : LR-Tech + * Theme Repo : https://github.com/lr-tech/rofi-themes-collection + *******************************************************************************/ + +* { + font: "Roboto 12"; + + background-color: transparent; + text-color: @fg0; + + margin: 0px; + padding: 0px; + spacing: 0px; +} + +window { + location: center; + width: 480; + y-offset: -200; + border-radius: 24px; + + background-color: @bg0; +} + +mainbox { + padding: 12px; +} + +inputbar { + background-color: @bg1; + border-color: @bg3; + + border: 2px; + border-radius: 16px; + + padding: 8px 16px; + spacing: 8px; + children: [ prompt, entry ]; +} + +prompt { + text-color: @fg2; +} + +entry { + placeholder: "Search"; + placeholder-color: @fg3; +} + +message { + margin: 12px 0 0; + border-radius: 16px; + border-color: @bg2; + background-color: @bg2; +} + +textbox { + padding: 8px 24px; +} + +listview { + background-color: transparent; + + margin: 12px 0 0; + lines: 8; + columns: 1; + + fixed-height: false; +} + +element { + padding: 8px 16px; + spacing: 8px; + border-radius: 16px; +} + +element normal active { + text-color: @bg3; +} + +element selected normal, element selected active { + background-color: @bg3; +} + +element-icon { + size: 1em; + vertical-align: 0.5; +} + +element-text { + text-color: inherit; +} diff --git a/dot_local/share/rofi/themes/rounded-gray-dark.rasi b/dot_local/share/rofi/themes/rounded-gray-dark.rasi new file mode 100644 index 0000000..943280d --- /dev/null +++ b/dot_local/share/rofi/themes/rounded-gray-dark.rasi @@ -0,0 +1,18 @@ +/******************************************************************************* + * ROUNDED THEME FOR ROFI + * User : LR-Tech + * Theme Repo : https://github.com/lr-tech/rofi-themes-collection + *******************************************************************************/ + +* { + bg0: #212121F2; + bg1: #2A2A2A; + bg2: #3D3D3D80; + bg3: #616161F2; + fg0: #E6E6E6; + fg1: #FFFFFF; + fg2: #969696; + fg3: #3D3D3D; +} + +@import "rounded-common.rasi" diff --git a/dot_local/share/rofi/themes/rounded-green-dark.rasi b/dot_local/share/rofi/themes/rounded-green-dark.rasi new file mode 100644 index 0000000..a268f62 --- /dev/null +++ b/dot_local/share/rofi/themes/rounded-green-dark.rasi @@ -0,0 +1,18 @@ +/******************************************************************************* + * ROUNDED THEME FOR ROFI + * User : LR-Tech + * Theme Repo : https://github.com/lr-tech/rofi-themes-collection + *******************************************************************************/ + +* { + bg0: #212121F2; + bg1: #2A2A2A; + bg2: #3D3D3D80; + bg3: #4CAF50F2; + fg0: #E6E6E6; + fg1: #FFFFFF; + fg2: #969696; + fg3: #3D3D3D; +} + +@import "rounded-common.rasi" diff --git a/dot_local/share/rofi/themes/rounded-nord-dark.rasi b/dot_local/share/rofi/themes/rounded-nord-dark.rasi new file mode 100644 index 0000000..ef35389 --- /dev/null +++ b/dot_local/share/rofi/themes/rounded-nord-dark.rasi @@ -0,0 +1,22 @@ +/******************************************************************************* + * ROUNDED THEME FOR ROFI + * User : LR-Tech + * Theme Repo : https://github.com/lr-tech/rofi-themes-collection + *******************************************************************************/ + +* { + bg0: #2E3440F2; + bg1: #3B4252; + bg2: #4C566A80; + bg3: #88C0D0F2; + fg0: #D8DEE9; + fg1: #ECEFF4; + fg2: #D8DEE9; + fg3: #4C566A; +} + +@import "rounded-common.rasi" + +element selected { + text-color: @bg1; +} diff --git a/dot_local/share/rofi/themes/rounded-orange-dark.rasi b/dot_local/share/rofi/themes/rounded-orange-dark.rasi new file mode 100644 index 0000000..da4acea --- /dev/null +++ b/dot_local/share/rofi/themes/rounded-orange-dark.rasi @@ -0,0 +1,18 @@ +/******************************************************************************* + * ROUNDED THEME FOR ROFI + * User : LR-Tech + * Theme Repo : https://github.com/lr-tech/rofi-themes-collection + *******************************************************************************/ + +* { + bg0: #212121F2; + bg1: #2A2A2A; + bg2: #3D3D3D80; + bg3: #F57C00F2; + fg0: #E6E6E6; + fg1: #FFFFFF; + fg2: #969696; + fg3: #3D3D3D; +} + +@import "rounded-common.rasi" diff --git a/dot_local/share/rofi/themes/rounded-pink-dark.rasi b/dot_local/share/rofi/themes/rounded-pink-dark.rasi new file mode 100644 index 0000000..2288dc0 --- /dev/null +++ b/dot_local/share/rofi/themes/rounded-pink-dark.rasi @@ -0,0 +1,18 @@ +/******************************************************************************* + * ROUNDED THEME FOR ROFI + * User : LR-Tech + * Theme Repo : https://github.com/lr-tech/rofi-themes-collection + *******************************************************************************/ + +* { + bg0: #212121F2; + bg1: #2A2A2A; + bg2: #3D3D3D80; + bg3: #EC407AF2; + fg0: #E6E6E6; + fg1: #FFFFFF; + fg2: #969696; + fg3: #3D3D3D; +} + +@import "rounded-common.rasi" diff --git a/dot_local/share/rofi/themes/rounded-purple-dark.rasi b/dot_local/share/rofi/themes/rounded-purple-dark.rasi new file mode 100644 index 0000000..55c651b --- /dev/null +++ b/dot_local/share/rofi/themes/rounded-purple-dark.rasi @@ -0,0 +1,18 @@ +/******************************************************************************* + * ROUNDED THEME FOR ROFI + * User : LR-Tech + * Theme Repo : https://github.com/lr-tech/rofi-themes-collection + *******************************************************************************/ + +* { + bg0: #212121F2; + bg1: #2A2A2A; + bg2: #3D3D3D80; + bg3: #AB47BCF2; + fg0: #E6E6E6; + fg1: #FFFFFF; + fg2: #969696; + fg3: #3D3D3D; +} + +@import "rounded-common.rasi" diff --git a/dot_local/share/rofi/themes/rounded-red-dark.rasi b/dot_local/share/rofi/themes/rounded-red-dark.rasi new file mode 100644 index 0000000..c1d71a6 --- /dev/null +++ b/dot_local/share/rofi/themes/rounded-red-dark.rasi @@ -0,0 +1,18 @@ +/******************************************************************************* + * ROUNDED THEME FOR ROFI + * User : LR-Tech + * Theme Repo : https://github.com/lr-tech/rofi-themes-collection + *******************************************************************************/ + +* { + bg0: #212121F2; + bg1: #2A2A2A; + bg2: #3D3D3D80; + bg3: #E53935F2; + fg0: #E6E6E6; + fg1: #FFFFFF; + fg2: #969696; + fg3: #3D3D3D; +} + +@import "rounded-common.rasi" diff --git a/dot_local/share/rofi/themes/rounded-yellow-dark.rasi b/dot_local/share/rofi/themes/rounded-yellow-dark.rasi new file mode 100644 index 0000000..dbdaeb3 --- /dev/null +++ b/dot_local/share/rofi/themes/rounded-yellow-dark.rasi @@ -0,0 +1,18 @@ +/******************************************************************************* + * ROUNDED THEME FOR ROFI + * User : LR-Tech + * Theme Repo : https://github.com/lr-tech/rofi-themes-collection + *******************************************************************************/ + +* { + bg0: #212121F2; + bg1: #2A2A2A; + bg2: #3D3D3D80; + bg3: #FBC02DF2; + fg0: #E6E6E6; + fg1: #FFFFFF; + fg2: #969696; + fg3: #3D3D3D; +} + +@import "rounded-common.rasi" diff --git a/dot_local/share/rofi/themes/spotlight-dark.rasi b/dot_local/share/rofi/themes/spotlight-dark.rasi new file mode 100644 index 0000000..b61bc21 --- /dev/null +++ b/dot_local/share/rofi/themes/spotlight-dark.rasi @@ -0,0 +1,99 @@ +/******************************************************************************* + * MACOS SPOTLIGHT LIKE DARK THEME FOR ROFI + * User : LR-Tech + * Theme Repo : https://github.com/lr-tech/rofi-themes-collection + *******************************************************************************/ + +* { + font: "Montserrat 18"; + + bg0: #242424E6; + bg1: #7E7E7E80; + bg2: #0860f2E6; + + fg0: #DEDEDE; + fg1: #FFFFFF; + fg2: #DEDEDE80; + + background-color: transparent; + text-color: @fg0; + + margin: 0.1em; + padding: 0; + spacing: 0; +} + +window { + background-color: @bg0; + + location: center; + width: 640; + y-offset: -200; + border-radius: 8; +} + +inputbar { + font: "Montserrat 32"; + padding: 12px; + spacing: 12px; + children: [ icon-search, entry ]; +} + +icon-search { + expand: false; + filename: "search"; + size: 28px; +} + +icon-search, entry, element-icon, element-text { + vertical-align: 0.5; +} + +entry { + font: inherit; + + placeholder : "Search"; + placeholder-color : @fg2; +} + +message { + border: 2px 0 0; + border-color: @bg1; + background-color: @bg1; +} + +textbox { + padding: 8px 24px; +} + +listview { + lines: 10; + columns: 1; + + fixed-height: false; + border: 1px 0 0; + border-color: @bg1; +} + +element { + padding: 8px 16px; + spacing: 16px; + background-color: transparent; +} + +element normal active { + text-color: @bg2; +} + +element selected normal, element selected active { + background-color: @bg2; + text-color: @fg1; +} + +element-icon { + size: 1em; +} + +element-text { + text-color: inherit; +} diff --git a/dot_local/share/rofi/themes/spotlight.rasi b/dot_local/share/rofi/themes/spotlight.rasi new file mode 100644 index 0000000..3f17463 --- /dev/null +++ b/dot_local/share/rofi/themes/spotlight.rasi @@ -0,0 +1,99 @@ +/******************************************************************************* + * MACOS SPOTLIGHT LIKE THEME FOR ROFI + * User : LR-Tech + * Theme Repo : https://github.com/lr-tech/rofi-themes-collection + *******************************************************************************/ + +* { + font: "Montserrat 12"; + + bg0: #F5F5F5BF; + bg1: #7E7E7E80; + bg2: #0860F2E6; + + fg0: #242424; + fg1: #FFFFFF; + fg2: #24242480; + + background-color: transparent; + text-color: @fg0; + + margin: 0; + padding: 0; + spacing: 0; +} + +window { + background-color: @bg0; + + location: center; + width: 640; + y-offset: -200; + border-radius: 8; +} + +inputbar { + font: "Montserrat 20"; + padding: 12px; + spacing: 12px; + children: [ icon-search, entry ]; +} + +icon-search { + expand: false; + filename: "search"; + size: 28px; +} + +icon-search, entry, element-icon, element-text { + vertical-align: 0.5; +} + +entry { + font: inherit; + + placeholder : "Search"; + placeholder-color : @fg2; +} + +message { + border: 2px 0 0; + border-color: @bg1; + background-color: @bg1; +} + +textbox { + padding: 8px 24px; +} + +listview { + lines: 10; + columns: 1; + + fixed-height: false; + border: 1px 0 0; + border-color: @bg1; +} + +element { + padding: 8px 16px; + spacing: 16px; + background-color: transparent; +} + +element normal active { + text-color: @bg2; +} + +element selected normal, element selected active { + background-color: @bg2; + text-color: @fg1; +} + +element-icon { + size: 1em; +} + +element-text { + text-color: inherit; +} diff --git a/dot_local/share/symlink_fonts.tmpl b/dot_local/share/symlink_fonts.tmpl new file mode 100644 index 0000000..60362ac --- /dev/null +++ b/dot_local/share/symlink_fonts.tmpl @@ -0,0 +1 @@ +{{- .chezmoi.homeDir }}/.fonts diff --git a/dot_mailcap b/dot_mailcap new file mode 100644 index 0000000..3ba639f --- /dev/null +++ b/dot_mailcap @@ -0,0 +1,3 @@ +text/html; w3m -I %{charset} -T text/html -cols 150; copiousoutput; +#text/html; pandoc -f html -t markdown; copiousoutput; + diff --git a/.muttrc b/dot_muttrc similarity index 77% rename from .muttrc rename to dot_muttrc index c366808..56c3284 100644 --- a/.muttrc +++ b/dot_muttrc @@ -1,5 +1,6 @@ set imap_user = "barak@barakmich.com" #set imap_pass = "secret" +source ~/.mutt/secret set smtp_url = "smtp://barak@barakmich.com@smtp.gmail.com:587/" #set smtp_pass = "secret" @@ -10,6 +11,7 @@ set folder = "imaps://imap.gmail.com:993" set spoolfile = "+INBOX" set postponed = "+[Gmail]/Drafts" set record="+[Gmail]/Sent Mail" +set copy=no set trash = "imaps://imap.gmail.com/[Gmail]/Trash" # These two lines appear to be needed on some Linux distros, like Arch Linux @@ -24,17 +26,20 @@ set certificate_file=~/.mutt/certificates set signature=~/.sig bind editor <space> noop +bind index,pager g noop bind index,pager c mail #Compose -macro index,pager e "<save-message>=[Gmail]/All Mail<enter><enter>" "Archive" +macro index,pager e "<save-message>=[Gmail]/All Mail<enter>" "Archive" bind generic x tag-entry #Select Conversation bind index x tag-thread #Select Conversation bind pager x tag-message #Select Conversation bind index,pager s flag-message #Star a message -macro index,pager + "<save-message>=[Gmail]/Important<enter><enter>" "Mark as important" -macro index,pager ! "<save-message>=[Gmail]/Spam<enter><enter>" "Report spam" +macro index,pager + "<save-message>=[Gmail]/Important<enter>" "Mark as important" +macro index,pager ! "<save-message>=[Gmail]/Spam<enter>" "Report spam" bind index,pager a group-reply #Reply all +bind pager A view-attachments #In emails bind index,pager \# delete-thread #Delete bind index,pager l copy-message #Label +bind index L limit bind index,pager v save-message #Move to macro index,pager I "<set-flag>O" "Mark as read" macro index,pager U "<clear-flag>O" "Mark as unread" @@ -44,6 +49,7 @@ macro index,pager gd "<change-folder>=[Gmail]/Drafts<enter>" "Go to 'Drafts'" macro index,pager gl "<change-folder>?" "Go to 'Label'" macro index,pager gi "<change-folder>=INBOX<enter>" "Go to inbox" macro index,pager gt "<change-folder>=[Gmail]/Sent Mail<enter>" "Go to 'Sent Mail'" +macro pager B "<pipe-entry>'urlview'<enter>" 'Follow links with urlview' folder-hook +INBOX macro index,pager y "e" "Archive" folder-hook "+[Gmail]/Trash" macro index,pager y "<save-message>=INBOX<enter><enter>" "Move to inbox" folder-hook "+[Gmail]/Starred" bind index,pager y flag-message #"Toggle star" @@ -69,7 +75,7 @@ set beep_new set sort = reverse-threads set sort_aux = last-date-received -alternative_order text/plain text/html +alternative_order text/plain text/enriched text/html auto_view text/html #set alias_file = ~/.mutt/aliases @@ -82,8 +88,10 @@ set reverse_name = yes bind index gg first-entry bind index G last-entry -bind index A toggle-read +#bind index A toggle-read bind index n mail +bind index _ collapse-all +bind index - collapse-thread macro index c "<change-folder>?<toggle-mailboxes>" "open a different folder" macro pager c "<change-folder>?<toggle-mailboxes>" "open a different folder" @@ -113,3 +121,13 @@ color header brightblue black ^Subject: color body brightred black [\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+ color body brightblue black (https?|ftp)://[\-\.,/%~_:?&=\#a-zA-Z0-9]+ color index brightcyan default ~N + +color index yellow default "~v~(!~N)~(!~F)" # collapsed thread with no New or Flagged +color index red default "~v~(~F)~(!~N)" # collapsed thread with Flagged but no New +color index green default "~v~(~N)" # collapsed thread with New + +folder-hook . exec collapse-all +## TO show the number of messages in a collapsed thread +## you need to add "%M" to the "index_format", eg: +#set index_format="%4C %Z %2M %[!%y%m%d] %-17.17F (%3l) %s" +set index_format="%4C %Z %2M %{%b %d} %-15.15L (%?l?%4l&%4c?) %s" diff --git a/.nethackrc b/dot_nethackrc similarity index 87% rename from .nethackrc rename to dot_nethackrc index f352d95..79817f0 100644 --- a/.nethackrc +++ b/dot_nethackrc @@ -1,7 +1,8 @@ # # System-wide NetHack configuration file for console-only NetHack. # -OPTIONS=windowtype:tty,toptenwin,hilite_pet,!number_pad,!cmdassist +#OPTIONS=windowtype:tty,toptenwin,hilite_pet,!number_pad,!cmdassist +OPTIONS=!number_pad,!cmdassist OPTIONS=fixinv,safe_pet,sortpack,tombstone,color OPTIONS=verbose,news,fruit:potato OPTIONS=dogname:Darty diff --git a/.npmrc b/dot_npmrc similarity index 100% rename from .npmrc rename to dot_npmrc diff --git a/.puppet/console.pp b/dot_puppet/console.pp similarity index 100% rename from .puppet/console.pp rename to dot_puppet/console.pp diff --git a/.puppet/cpp.pp b/dot_puppet/cpp.pp similarity index 100% rename from .puppet/cpp.pp rename to dot_puppet/cpp.pp diff --git a/.puppet/editor.pp b/dot_puppet/editor.pp similarity index 100% rename from .puppet/editor.pp rename to dot_puppet/editor.pp diff --git a/.puppet/go.pp b/dot_puppet/go.pp similarity index 100% rename from .puppet/go.pp rename to dot_puppet/go.pp diff --git a/.puppet/install-dev.pp b/dot_puppet/install-dev.pp similarity index 100% rename from .puppet/install-dev.pp rename to dot_puppet/install-dev.pp diff --git a/.puppet/install-linux.pp b/dot_puppet/install-linux.pp similarity index 100% rename from .puppet/install-linux.pp rename to dot_puppet/install-linux.pp diff --git a/.puppet/python.pp b/dot_puppet/python.pp similarity index 100% rename from .puppet/python.pp rename to dot_puppet/python.pp diff --git a/.puppet/x11.pp b/dot_puppet/x11.pp similarity index 100% rename from .puppet/x11.pp rename to dot_puppet/x11.pp diff --git a/.pylintrc b/dot_pylintrc similarity index 100% rename from .pylintrc rename to dot_pylintrc diff --git a/.screenrc b/dot_screenrc similarity index 100% rename from .screenrc rename to dot_screenrc diff --git a/.setup_new_env.sh b/dot_setup_new_env.sh similarity index 100% rename from .setup_new_env.sh rename to dot_setup_new_env.sh diff --git a/.spacemacs b/dot_spacemacs similarity index 81% rename from .spacemacs rename to dot_spacemacs index 283c1f7..a9ac93f 100644 --- a/.spacemacs +++ b/dot_spacemacs @@ -25,11 +25,12 @@ values." auto-completion-enable-help-tooltip t auto-completion-enable-snippets-in-popup nil) ;; better-defaults + idris emacs-lisp mu4e git go - themes-megapack + ;themes-megapack latex markdown (org :variables @@ -71,7 +72,6 @@ This function is called at the very startup of Spacemacs initialization before layers configuration. You should not put any user code in there besides modifying the variable values." - (load-file "~/.emacs.local/barak-theme.el") ;; This setq-default sexp is an exhaustive list of all the supported ;; spacemacs settings. (setq-default @@ -104,7 +104,7 @@ values." ;; leuven ;; monokai ;; zenburn) - dotspacemacs-themes '(barak) + ;;dotspacemacs-themes '(barak) ;; If non nil the cursor color matches the state color. dotspacemacs-colorize-cursor-according-to-state t ;; Default font. `powerline-scale' allows to quickly tweak the mode-line @@ -229,8 +229,10 @@ user code." "Configuration function for user code. This function is called at the very end of Spacemacs initialization after layers configuration. You are free to put any user code." + (load-file "~/.emacs.local/barak-theme.el") + (load-theme 'barak t) (fset 'xterm-color-unfontify-region 'font-lock-default-unfontify-region) - (setq dotspacemacs-additional-packages '(barak-theme)) + ;(setq dotspacemacs-additional-packages '(barak-theme)) (defun kill-buffer-and-its-windows (buffer) "Kill BUFFER and delete its windows. Default is `current-buffer'. BUFFER may be either a buffer or its name (a string)." @@ -313,8 +315,8 @@ BUFFER may be either a buffer or its name (a string)." (add-hook 'window-setup-hook 'on-after-init) - (set-frame-parameter (selected-frame) 'alpha '(85 85)) - (add-to-list 'default-frame-alist '(alpha 85 85)) + ;(set-frame-parameter (selected-frame) 'alpha '(85 85)) + ;(add-to-list 'default-frame-alist '(alpha 85 85)) (setq diff-hl-side 'left) (defun cleanup-org-tables () @@ -407,10 +409,11 @@ BUFFER may be either a buffer or its name (a string)." ;; If you edit it by hand, you could mess it up, so be careful. ;; Your init file should contain only one such instance. ;; If there is more than one, they won't work right. + '(evil-want-Y-yank-to-eol t) '(org-support-shift-select (quote always)) '(package-selected-packages (quote - (powerline spinner org alert log4e gntp markdown-mode hydra parent-mode projectile request go-guru gitignore-mode fringe-helper git-gutter+ git-gutter flycheck pkg-info epl flx magit magit-popup git-commit with-editor smartparens iedit anzu evil goto-chg undo-tree highlight diminish pos-tip go-mode company bind-map bind-key yasnippet packed anaconda-mode pythonic f dash s helm avy helm-core async auto-complete popup package-build yapfify uuidgen py-isort ox-gfm org-projectile org-download mu4e-maildirs-extension mu4e-alert ht live-py-mode link-hint hide-comnt git-link eyebrowse evil-visual-mark-mode evil-unimpaired evil-ediff eshell-z dumb-jump darkokai-theme column-enforce-mode company-auctex auctex-latexmk auctex zonokai-theme zenburn-theme zen-and-art-theme yaml-mode xterm-color ws-butler window-numbering which-key volatile-highlights vi-tilde-fringe use-package underwater-theme ujelly-theme twilight-theme twilight-bright-theme twilight-anti-bright-theme tronesque-theme toxi-theme toc-org tao-theme tangotango-theme tango-plus-theme tango-2-theme systemd sunny-day-theme sublime-themes subatomic256-theme subatomic-theme stekene-theme spacemacs-theme spaceline spacegray-theme soothe-theme soft-stone-theme soft-morning-theme soft-charcoal-theme smyx-theme smooth-scrolling smeargle shell-pop seti-theme reverse-theme restart-emacs railscasts-theme quelpa pyvenv pytest pyenv-mode py-yapf purple-haze-theme protobuf-mode professional-theme popwin planet-theme pip-requirements phoenix-dark-pink-theme phoenix-dark-mono-theme persp-mode pcre2el pastels-on-dark-theme paradox page-break-lines orgit organic-green-theme org-repo-todo org-present org-pomodoro org-plus-contrib org-bullets open-junk-file omtose-phellack-theme oldlace-theme occidental-theme obsidian-theme noctilux-theme niflheim-theme neotree naquadah-theme mustang-theme multi-term move-text monokai-theme monochrome-theme molokai-theme moe-theme mmm-mode minimal-theme material-theme markdown-toc majapahit-theme magit-gitflow macrostep lush-theme lorem-ipsum linum-relative light-soap-theme leuven-theme jbeans-theme jazz-theme ir-black-theme inkpot-theme info+ indent-guide ido-vertical-mode hy-mode hungry-delete htmlize hl-todo highlight-parentheses highlight-numbers highlight-indentation heroku-theme hemisu-theme help-fns+ helm-themes helm-swoop helm-pydoc helm-projectile helm-mode-manager helm-make helm-gitignore helm-flx helm-descbinds helm-company helm-c-yasnippet helm-ag hc-zenburn-theme gruvbox-theme gruber-darker-theme grandshell-theme gotham-theme google-translate golden-ratio go-eldoc gnuplot gitconfig-mode gitattributes-mode git-timemachine git-messenger git-gutter-fringe git-gutter-fringe+ gh-md gandalf-theme flycheck-pos-tip flx-ido flatui-theme flatland-theme firebelly-theme fill-column-indicator farmhouse-theme fancy-battery expand-region exec-path-from-shell evil-visualstar evil-tutor evil-surround evil-search-highlight-persist evil-numbers evil-nerd-commenter evil-mc evil-matchit evil-magit evil-lisp-state evil-indent-plus evil-iedit-state evil-exchange evil-escape evil-args evil-anzu eval-sexp-fu espresso-theme eshell-prompt-extras esh-help elisp-slime-nav dracula-theme django-theme diff-hl define-word darktooth-theme darkmine-theme darkburn-theme dakrone-theme cython-mode cyberpunk-theme company-statistics company-quickhelp company-go company-anaconda colorsarenice-theme color-theme-sanityinc-tomorrow color-theme-sanityinc-solarized clues-theme clean-aindent-mode cherry-blossom-theme busybee-theme buffer-move bubbleberry-theme bracketed-paste birds-of-paradise-plus-theme badwolf-theme auto-yasnippet auto-highlight-symbol auto-compile apropospriate-theme anti-zenburn-theme ample-zen-theme ample-theme alect-themes aggressive-indent afternoon-theme adaptive-wrap ace-window ace-link ace-jump-helm-line ac-ispell))) + (idris-mode prop-menu winum solarized-theme org-category-capture madhat2r-theme dash-functional fuzzy autothemer powerline spinner org alert log4e gntp markdown-mode hydra parent-mode projectile request go-guru gitignore-mode fringe-helper git-gutter+ git-gutter flycheck pkg-info epl flx magit magit-popup git-commit with-editor smartparens iedit anzu evil goto-chg undo-tree highlight diminish pos-tip go-mode company bind-map bind-key yasnippet packed anaconda-mode pythonic f dash s helm avy helm-core async auto-complete popup package-build yapfify uuidgen py-isort ox-gfm org-projectile org-download mu4e-maildirs-extension mu4e-alert ht live-py-mode link-hint hide-comnt git-link eyebrowse evil-visual-mark-mode evil-unimpaired evil-ediff eshell-z dumb-jump darkokai-theme column-enforce-mode company-auctex auctex-latexmk auctex zonokai-theme zenburn-theme zen-and-art-theme yaml-mode xterm-color ws-butler window-numbering which-key volatile-highlights vi-tilde-fringe use-package underwater-theme ujelly-theme twilight-theme twilight-bright-theme twilight-anti-bright-theme tronesque-theme toxi-theme toc-org tao-theme tangotango-theme tango-plus-theme tango-2-theme systemd sunny-day-theme sublime-themes subatomic256-theme subatomic-theme stekene-theme spacemacs-theme spaceline spacegray-theme soothe-theme soft-stone-theme soft-morning-theme soft-charcoal-theme smyx-theme smooth-scrolling smeargle shell-pop seti-theme reverse-theme restart-emacs railscasts-theme quelpa pyvenv pytest pyenv-mode py-yapf purple-haze-theme protobuf-mode professional-theme popwin planet-theme pip-requirements phoenix-dark-pink-theme phoenix-dark-mono-theme persp-mode pcre2el pastels-on-dark-theme paradox page-break-lines orgit organic-green-theme org-repo-todo org-present org-pomodoro org-plus-contrib org-bullets open-junk-file omtose-phellack-theme oldlace-theme occidental-theme obsidian-theme noctilux-theme niflheim-theme neotree naquadah-theme mustang-theme multi-term move-text monokai-theme monochrome-theme molokai-theme moe-theme mmm-mode minimal-theme material-theme markdown-toc majapahit-theme magit-gitflow macrostep lush-theme lorem-ipsum linum-relative light-soap-theme leuven-theme jbeans-theme jazz-theme ir-black-theme inkpot-theme info+ indent-guide ido-vertical-mode hy-mode hungry-delete htmlize hl-todo highlight-parentheses highlight-numbers highlight-indentation heroku-theme hemisu-theme help-fns+ helm-themes helm-swoop helm-pydoc helm-projectile helm-mode-manager helm-make helm-gitignore helm-flx helm-descbinds helm-company helm-c-yasnippet helm-ag hc-zenburn-theme gruvbox-theme gruber-darker-theme grandshell-theme gotham-theme google-translate golden-ratio go-eldoc gnuplot gitconfig-mode gitattributes-mode git-timemachine git-messenger git-gutter-fringe git-gutter-fringe+ gh-md gandalf-theme flycheck-pos-tip flx-ido flatui-theme flatland-theme firebelly-theme fill-column-indicator farmhouse-theme fancy-battery expand-region exec-path-from-shell evil-visualstar evil-tutor evil-surround evil-search-highlight-persist evil-numbers evil-nerd-commenter evil-mc evil-matchit evil-magit evil-lisp-state evil-indent-plus evil-iedit-state evil-exchange evil-escape evil-args evil-anzu eval-sexp-fu espresso-theme eshell-prompt-extras esh-help elisp-slime-nav dracula-theme django-theme diff-hl define-word darktooth-theme darkmine-theme darkburn-theme dakrone-theme cython-mode cyberpunk-theme company-statistics company-quickhelp company-go company-anaconda colorsarenice-theme color-theme-sanityinc-tomorrow color-theme-sanityinc-solarized clues-theme clean-aindent-mode cherry-blossom-theme busybee-theme buffer-move bubbleberry-theme bracketed-paste birds-of-paradise-plus-theme badwolf-theme auto-yasnippet auto-highlight-symbol auto-compile apropospriate-theme anti-zenburn-theme ample-zen-theme ample-theme alect-themes aggressive-indent afternoon-theme adaptive-wrap ace-window ace-link ace-jump-helm-line ac-ispell))) '(paradox-github-token t) '(safe-local-variable-values (quote @@ -426,8 +429,4 @@ BUFFER may be either a buffer or its name (a string)." ;; If you edit it by hand, you could mess it up, so be careful. ;; Your init file should contain only one such instance. ;; If there is more than one, they won't work right. - '(company-tooltip-common ((t (:inherit company-tooltip :weight bold :underline nil)))) - '(company-tooltip-common-selection ((t (:inherit company-tooltip-selection :weight bold :underline nil)))) - '(match ((t (:weight bold)))) - '(show-paren-match ((t (:foreground "chartreuse")))) ) diff --git a/.taskrc b/dot_taskrc similarity index 100% rename from .taskrc rename to dot_taskrc diff --git a/dot_tmux.conf b/dot_tmux.conf new file mode 100644 index 0000000..c2aeef0 --- /dev/null +++ b/dot_tmux.conf @@ -0,0 +1,135 @@ +set -g prefix C-a +unbind C-b + +set -g base-index 1 +setw -g pane-base-index 1 + +# Make vim more responsive +set -sg escape-time 10 + +bind-key C-o last-window +# bind-key C-a select-pane -t :.+ +bind-key a send-prefix +bind r source-file ~/.tmux.conf +bind -n M-j select-pane -t :.+ +bind -n M-k select-pane -t :.- +#bind -n M-h select-pane -L +#bind -n M-l select-pane -R +bind -n M-n next-window +bind -n M-p previous-window +bind-key C-n next-window +bind-key C-p previous-window +set -g set-titles off +set -g mouse on +set -g default-terminal tmux-256color +#set-option -g default-shell /bin/fish +setw -g mode-keys vi +new -d + + +# shift-movement keys will resize panes +bind -r H resize-pane -L 5 +bind -r J resize-pane -D 5 +bind -r K resize-pane -U 5 +bind -r L resize-pane -R 5 + +# better mnemonics for splitting panes! +#bind | split-window -h +#bind - split-window -v + +bind-key h select-pane -L +bind-key k select-pane -U +bind-key j select-pane -D +bind-key l select-pane -R + +bind-key u break-pane +#bind-key sdf command-prompt -p "join pane from:" "join-pane -s '%%'" +bind-key y command-prompt -p "send pane to:" "join-pane -t :'%%' \; select-layout main-vertical" +bind-key Space rotate-window + +bind v split-window -h +bind Enter split-window -h \; select-layout main-vertical +bind = select-layout even-horizontal +bind | select-layout main-vertical +set -g main-pane-width 68% +bind-key C-t new-window "ttyd -R -d -t fontSize=18 tmux attach -t `tmux display -p '#S'`" + +# Status Bar +##set -g status-bg black +set -g status-interval 5 +##set -g status-left '#[fg=green]#H#[default]' +##set -g status-right '#[fg=green]#(~/src/tpom/tpom) #[fg=cyan,bold]%Y-%m-%d %H:%M:%S#[default]' +#set -g status-justify centre # center align window list +#set -g status-style fg=white,bg=default +set -g status-position top + +## default window title colors +#set-window-option -g window-status-style fg=white,bg=default,dim + +## active window title colors +#set -g main-pane-width 68% +#set-window-option -g window-status-current-style fg=cyan,bg=default,bright + +#set-window-option -g window-style fg=#999999,bg=terminal +#set-window-option -g window-active-style fg=terminal,bg=terminal + +#set -g status-left '#[fg=green][ #h ][' +#set -g status-left-length 40 +#set -g status-right '#[fg=green]][#(battery) #{pane_width}x#{pane_height} #[bright]#[fg=blue]%Y-%m-%d #[fg=white]%I:%M #[dim]#[fg=green]]' +#set -g status-right-length 40 +set-window-option -g window-status-activity-style none +# Notifying if other windows has activities +set -g monitor-activity on +set -g visual-activity off +set -g visual-bell on +set -g bell-action none +set -g activity-action none + +# Highlighting the active window in status bar +#setw -g window-status-current-style bg=red,bright + + +set -g @catppuccin_window_status "icon" +set -g @catppuccin_flavor 'mocha' # or frappe, macchiato, mocha + +set -g @catppuccin_window_status_style "rounded" + + +set -g @catppuccin_window_current_text_color "#4780d2" +set -g @catppuccin_window_current_number_color "#4780d2" +set -g @catppuccin_window_text_color "#{@thm_surface_1}" +set -g @catppuccin_window_number_color "#{@thm_surface_1}" + +set -g @catppuccin_window_text "#W " +set -g @catppuccin_window_number "#I" +set -g @catppuccin_window_current_text "#W " +set -g @catppuccin_window_current_number "#I" + +set -ogq @catppuccin_window_flags "icon" +set -ogq @catppuccin_window_flags_icon_last "󰖰" +set -ogq @catppuccin_window_flags_icon_current "󰫣" +set -ogq @catppuccin_window_flags_icon_zoom "󰁌" +set -ogq @catppuccin_window_flags_icon_mark "󰃀" +set -ogq @catppuccin_window_flags_icon_silent "󰂛" +set -ogq @catppuccin_window_flags_icon_activity "󱅫" +set -ogq @catppuccin_window_flags_icon_bell "󰂞" + +set -ogq @catppuccin_window_flags_icon_format "##{?window_activity_flag,#{E:@catppuccin_window_flags_icon_activity},}##{?window_bell_flag,#{E:@catppuccin_window_flags_icon_bell},}##{?window_silence_flag,#{E:@catppuccin_window_flags_icon_silent},}##{?window_active,#{E:@catppuccin_window_flags_icon_current},}##{?window_last_flag,#{E:@catppuccin_window_flags_icon_last},}##{?window_marked_flag,#{E:@catppuccin_window_flags_icon_mark},}##{?window_zoomed_flag,#{E:@catppuccin_window_flags_icon_zoom},}" + +run '~/.tmux/plugins/tmux/catppuccin.tmux' + +set -g status-right-length 100 +set -g status-left-length 100 +set -g status-left "" +set -g status-right "#{E:@catppuccin_status_directory}" +set -agF status-right "#{E:@catppuccin_status_battery}" +set -ag status-right "#{E:@catppuccin_status_host}" +set -ag status-right "#{E:@catppuccin_status_date_time}" + +#set -g @catppuccin_directory_text " #{b:pane_current_path}" +set -g @plugin 'catppuccin/tmux' + + +set -g @plugin 'tmux-plugins/tmux-battery' +set -g @plugin 'tmux-plugins/tpm' +run -b '~/.tmux/plugins/tpm/tpm' diff --git a/.tz_aliases.sh b/dot_tz_aliases.sh similarity index 100% rename from .tz_aliases.sh rename to dot_tz_aliases.sh diff --git a/.vim/after/ftplugin/go.vim b/dot_vim/after/ftplugin/go.vim similarity index 100% rename from .vim/after/ftplugin/go.vim rename to dot_vim/after/ftplugin/go.vim diff --git a/.vim/after/ftplugin/haskell.vim b/dot_vim/after/ftplugin/haskell.vim similarity index 100% rename from .vim/after/ftplugin/haskell.vim rename to dot_vim/after/ftplugin/haskell.vim diff --git a/dot_vim/after/ftplugin/qf.vim b/dot_vim/after/ftplugin/qf.vim new file mode 100644 index 0000000..0f10635 --- /dev/null +++ b/dot_vim/after/ftplugin/qf.vim @@ -0,0 +1,2 @@ +nmap <buffer> { <Plug>(qf_previous_file) +nmap <buffer> } <Plug>(qf_next_file) diff --git a/.vim/after/syntax/cocoa_keywords.vim b/dot_vim/after/syntax/cocoa_keywords.vim similarity index 100% rename from .vim/after/syntax/cocoa_keywords.vim rename to dot_vim/after/syntax/cocoa_keywords.vim diff --git a/.vim/after/syntax/objc_enhanced.vim b/dot_vim/after/syntax/objc_enhanced.vim similarity index 100% rename from .vim/after/syntax/objc_enhanced.vim rename to dot_vim/after/syntax/objc_enhanced.vim diff --git a/.vim/autoload/airline/themes/barak.vim b/dot_vim/autoload/airline/themes/barak.vim similarity index 100% rename from .vim/autoload/airline/themes/barak.vim rename to dot_vim/autoload/airline/themes/barak.vim diff --git a/.vim/autoload/genutils.vim b/dot_vim/autoload/genutils.vim similarity index 100% rename from .vim/autoload/genutils.vim rename to dot_vim/autoload/genutils.vim diff --git a/.vim/autoload/lookupfile.vim b/dot_vim/autoload/lookupfile.vim similarity index 100% rename from .vim/autoload/lookupfile.vim rename to dot_vim/autoload/lookupfile.vim diff --git a/.vim/autoload/objc/cocoacomplete.vim b/dot_vim/autoload/objc/cocoacomplete.vim similarity index 100% rename from .vim/autoload/objc/cocoacomplete.vim rename to dot_vim/autoload/objc/cocoacomplete.vim diff --git a/.vim/autoload/objc/man.vim b/dot_vim/autoload/objc/man.vim similarity index 100% rename from .vim/autoload/objc/man.vim rename to dot_vim/autoload/objc/man.vim diff --git a/.vim/autoload/objc/method_builder.vim b/dot_vim/autoload/objc/method_builder.vim similarity index 100% rename from .vim/autoload/objc/method_builder.vim rename to dot_vim/autoload/objc/method_builder.vim diff --git a/.vim/autoload/objc/method_list.vim b/dot_vim/autoload/objc/method_list.vim similarity index 100% rename from .vim/autoload/objc/method_list.vim rename to dot_vim/autoload/objc/method_list.vim diff --git a/.vim/autoload/objc/pum_snippet.vim b/dot_vim/autoload/objc/pum_snippet.vim similarity index 100% rename from .vim/autoload/objc/pum_snippet.vim rename to dot_vim/autoload/objc/pum_snippet.vim diff --git a/.vim/autoload/pathogen.vim b/dot_vim/autoload/pathogen.vim similarity index 100% rename from .vim/autoload/pathogen.vim rename to dot_vim/autoload/pathogen.vim diff --git a/.vim/autoload/plug.vim b/dot_vim/autoload/plug.vim similarity index 80% rename from .vim/autoload/plug.vim rename to dot_vim/autoload/plug.vim index ceb2762..9c3011f 100644 --- a/.vim/autoload/plug.vim +++ b/dot_vim/autoload/plug.vim @@ -22,10 +22,10 @@ " Plug 'SirVer/ultisnips' | Plug 'honza/vim-snippets' " " " On-demand loading -" Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' } +" Plug 'preservim/nerdtree', { 'on': 'NERDTreeToggle' } " Plug 'tpope/vim-fireplace', { 'for': 'clojure' } " -" " Using a non-master branch +" " Using a non-default branch " Plug 'rdnetto/YCM-Generator', { 'branch': 'stable' } " " " Using a tagged release; wildcard allowed (requires git 1.9.2 or above) @@ -96,11 +96,17 @@ let s:plug_src = 'https://github.com/junegunn/vim-plug.git' let s:plug_tab = get(s:, 'plug_tab', -1) let s:plug_buf = get(s:, 'plug_buf', -1) let s:mac_gui = has('gui_macvim') && has('gui_running') -let s:is_win = has('win32') || has('win64') +let s:is_win = has('win32') let s:nvim = has('nvim-0.2') || (has('nvim') && exists('*jobwait') && !s:is_win) let s:vim8 = has('patch-8.0.0039') && exists('*job_start') -let s:me = resolve(expand('<sfile>:p')) -let s:base_spec = { 'branch': 'master', 'frozen': 0 } +if s:is_win && &shellslash + set noshellslash + let s:me = resolve(expand('<sfile>:p')) + set shellslash +else + let s:me = resolve(expand('<sfile>:p')) +endif +let s:base_spec = { 'branch': '', 'frozen': 0 } let s:TYPE = { \ 'string': type(''), \ 'list': type([]), @@ -110,18 +116,140 @@ let s:TYPE = { let s:loaded = get(s:, 'loaded', {}) let s:triggers = get(s:, 'triggers', {}) +function! s:is_powershell(shell) + return a:shell =~# 'powershell\(\.exe\)\?$' || a:shell =~# 'pwsh\(\.exe\)\?$' +endfunction + +function! s:isabsolute(dir) abort + return a:dir =~# '^/' || (has('win32') && a:dir =~? '^\%(\\\|[A-Z]:\)') +endfunction + +function! s:git_dir(dir) abort + let gitdir = s:trim(a:dir) . '/.git' + if isdirectory(gitdir) + return gitdir + endif + if !filereadable(gitdir) + return '' + endif + let gitdir = matchstr(get(readfile(gitdir), 0, ''), '^gitdir: \zs.*') + if len(gitdir) && !s:isabsolute(gitdir) + let gitdir = a:dir . '/' . gitdir + endif + return isdirectory(gitdir) ? gitdir : '' +endfunction + +function! s:git_origin_url(dir) abort + let gitdir = s:git_dir(a:dir) + let config = gitdir . '/config' + if empty(gitdir) || !filereadable(config) + return '' + endif + return matchstr(join(readfile(config)), '\[remote "origin"\].\{-}url\s*=\s*\zs\S*\ze') +endfunction + +function! s:git_revision(dir) abort + let gitdir = s:git_dir(a:dir) + let head = gitdir . '/HEAD' + if empty(gitdir) || !filereadable(head) + return '' + endif + + let line = get(readfile(head), 0, '') + let ref = matchstr(line, '^ref: \zs.*') + if empty(ref) + return line + endif + + if filereadable(gitdir . '/' . ref) + return get(readfile(gitdir . '/' . ref), 0, '') + endif + + if filereadable(gitdir . '/packed-refs') + for line in readfile(gitdir . '/packed-refs') + if line =~# ' ' . ref + return matchstr(line, '^[0-9a-f]*') + endif + endfor + endif + + return '' +endfunction + +function! s:git_local_branch(dir) abort + let gitdir = s:git_dir(a:dir) + let head = gitdir . '/HEAD' + if empty(gitdir) || !filereadable(head) + return '' + endif + let branch = matchstr(get(readfile(head), 0, ''), '^ref: refs/heads/\zs.*') + return len(branch) ? branch : 'HEAD' +endfunction + +function! s:git_origin_branch(spec) + if len(a:spec.branch) + return a:spec.branch + endif + + " The file may not be present if this is a local repository + let gitdir = s:git_dir(a:spec.dir) + let origin_head = gitdir.'/refs/remotes/origin/HEAD' + if len(gitdir) && filereadable(origin_head) + return matchstr(get(readfile(origin_head), 0, ''), + \ '^ref: refs/remotes/origin/\zs.*') + endif + + " The command may not return the name of a branch in detached HEAD state + let result = s:lines(s:system('git symbolic-ref --short HEAD', a:spec.dir)) + return v:shell_error ? '' : result[-1] +endfunction + +if s:is_win + function! s:plug_call(fn, ...) + let shellslash = &shellslash + try + set noshellslash + return call(a:fn, a:000) + finally + let &shellslash = shellslash + endtry + endfunction +else + function! s:plug_call(fn, ...) + return call(a:fn, a:000) + endfunction +endif + +function! s:plug_getcwd() + return s:plug_call('getcwd') +endfunction + +function! s:plug_fnamemodify(fname, mods) + return s:plug_call('fnamemodify', a:fname, a:mods) +endfunction + +function! s:plug_expand(fmt) + return s:plug_call('expand', a:fmt, 1) +endfunction + +function! s:plug_tempname() + return s:plug_call('tempname') +endfunction + function! plug#begin(...) if a:0 > 0 let s:plug_home_org = a:1 - let home = s:path(fnamemodify(expand(a:1), ':p')) + let home = s:path(s:plug_fnamemodify(s:plug_expand(a:1), ':p')) elseif exists('g:plug_home') let home = s:path(g:plug_home) + elseif has('nvim') + let home = stdpath('data') . '/plugged' elseif !empty(&rtp) let home = s:path(split(&rtp, ',')[0]) . '/plugged' else return s:err('Unable to determine plug home. Try calling plug#begin() with a path argument.') endif - if fnamemodify(home, ':t') ==# 'plugin' && fnamemodify(home, ':h') ==# s:first_rtp + if s:plug_fnamemodify(home, ':t') ==# 'plugin' && s:plug_fnamemodify(home, ':h') ==# s:first_rtp return s:err('Invalid plug home. '.home.' is a standard Vim runtime path and is not allowed.') endif @@ -139,6 +267,16 @@ function! s:define_commands() if !executable('git') return s:err('`git` executable not found. Most commands will not be available. To suppress this message, prepend `silent!` to `call plug#begin(...)`.') endif + if has('win32') + \ && &shellslash + \ && (&shell =~# 'cmd\(\.exe\)\?$' || s:is_powershell(&shell)) + return s:err('vim-plug does not support shell, ' . &shell . ', when shellslash is set.') + endif + if !has('nvim') + \ && (has('win32') || has('win32unix')) + \ && !has('multi_byte') + return s:err('Vim needs +multi_byte feature on Windows to run shell commands. Enable +iconv for best results.') + endif command! -nargs=* -bar -bang -complete=customlist,s:names PlugInstall call s:install(<bang>0, [<f-args>]) command! -nargs=* -bar -bang -complete=customlist,s:names PlugUpdate call s:update(<bang>0, [<f-args>]) command! -nargs=0 -bar -bang PlugClean call s:clean(<bang>0) @@ -193,9 +331,17 @@ function! s:ask_no_interrupt(...) endtry endfunction +function! s:lazy(plug, opt) + return has_key(a:plug, a:opt) && + \ (empty(s:to_a(a:plug[a:opt])) || + \ !isdirectory(a:plug.dir) || + \ len(s:glob(s:rtp(a:plug), 'plugin')) || + \ len(s:glob(s:rtp(a:plug), 'after/plugin'))) +endfunction + function! plug#end() if !exists('g:plugs') - return s:err('Call plug#begin() first') + return s:err('plug#end() called without calling plug#begin() first') endif if exists('#PlugLOD') @@ -206,7 +352,7 @@ function! plug#end() endif let lod = { 'ft': {}, 'map': {}, 'cmd': {} } - if exists('g:did_load_filetypes') + if get(g:, 'did_load_filetypes', 0) filetype off endif for name in g:plugs_order @@ -214,7 +360,7 @@ function! plug#end() continue endif let plug = g:plugs[name] - if get(s:loaded, name, 0) || !has_key(plug, 'on') && !has_key(plug, 'for') + if get(s:loaded, name, 0) || !s:lazy(plug, 'on') && !s:lazy(plug, 'for') let s:loaded[name] = 1 continue endif @@ -261,7 +407,7 @@ function! plug#end() for [map, names] in items(lod.map) for [mode, map_prefix, key_prefix] in - \ [['i', '<C-O>', ''], ['n', '', ''], ['v', '', 'gv'], ['o', '', '']] + \ [['i', '<C-\><C-O>', ''], ['n', '', ''], ['v', '', 'gv'], ['o', '', '']] execute printf( \ '%snoremap <silent> %s %s:<C-U>call <SID>lod_map(%s, %s, %s, "%s")<CR>', \ mode, map, map_prefix, string(map), string(names), mode != 'i', key_prefix) @@ -316,7 +462,7 @@ endfunction function! s:git_version_requirement(...) if !exists('s:git_version') - let s:git_version = map(split(split(s:system('git --version'))[2], '\.'), 'str2nr(v:val)') + let s:git_version = map(split(split(s:system(['git', '--version']))[2], '\.'), 'str2nr(v:val)') endif return s:version_requirement(s:git_version, a:000) endfunction @@ -326,11 +472,11 @@ function! s:progress_opt(base) \ s:git_version_requirement(1, 7, 1) ? '--progress' : '' endfunction -if s:is_win - function! s:rtp(spec) - return s:path(a:spec.dir . get(a:spec, 'rtp', '')) - endfunction +function! s:rtp(spec) + return s:path(a:spec.dir . get(a:spec, 'rtp', '')) +endfunction +if s:is_win function! s:path(path) return s:trim(substitute(a:path, '/', '\', 'g')) endfunction @@ -342,11 +488,33 @@ if s:is_win function! s:is_local_plug(repo) return a:repo =~? '^[a-z]:\|^[%~]' endfunction -else - function! s:rtp(spec) - return s:dirpath(a:spec.dir . get(a:spec, 'rtp', '')) + + " Copied from fzf + function! s:wrap_cmds(cmds) + let cmds = [ + \ '@echo off', + \ 'setlocal enabledelayedexpansion'] + \ + (type(a:cmds) == type([]) ? a:cmds : [a:cmds]) + \ + ['endlocal'] + if has('iconv') + if !exists('s:codepage') + let s:codepage = libcallnr('kernel32.dll', 'GetACP', 0) + endif + return map(cmds, printf('iconv(v:val."\r", "%s", "cp%d")', &encoding, s:codepage)) + endif + return map(cmds, 'v:val."\r"') endfunction + function! s:batchfile(cmd) + let batchfile = s:plug_tempname().'.bat' + call writefile(s:wrap_cmds(a:cmd), batchfile) + let cmd = plug#shellescape(batchfile, {'shell': &shell, 'script': 0}) + if s:is_powershell(&shell) + let cmd = '& ' . cmd + endif + return [batchfile, cmd] + endfunction +else function! s:path(path) return s:trim(a:path) endfunction @@ -426,8 +594,8 @@ endfunction function! s:dobufread(names) for name in a:names - let path = s:rtp(g:plugs[name]).'/**' - for dir in ['ftdetect', 'ftplugin'] + let path = s:rtp(g:plugs[name]) + for dir in ['ftdetect', 'ftplugin', 'after/ftdetect', 'after/ftplugin'] if len(finddir(dir, path)) if exists('#BufRead') doautocmd BufRead @@ -546,7 +714,7 @@ function! plug#(repo, ...) try let repo = s:trim(a:repo) let opts = a:0 == 1 ? s:parse_options(a:1) : s:base_spec - let name = get(opts, 'as', fnamemodify(repo, ':t:s?\.git$??')) + let name = get(opts, 'as', s:plug_fnamemodify(repo, ':t:s?\.git$??')) let spec = extend(s:infer_properties(name, repo), opts) if !has_key(g:plugs, name) call add(g:plugs_order, name) @@ -554,19 +722,41 @@ function! plug#(repo, ...) let g:plugs[name] = spec let s:loaded[name] = get(s:loaded, name, 0) catch - return s:err(v:exception) + return s:err(repo . ' ' . v:exception) endtry endfunction function! s:parse_options(arg) let opts = copy(s:base_spec) let type = type(a:arg) + let opt_errfmt = 'Invalid argument for "%s" option of :Plug (expected: %s)' if type == s:TYPE.string + if empty(a:arg) + throw printf(opt_errfmt, 'tag', 'string') + endif let opts.tag = a:arg elseif type == s:TYPE.dict + for opt in ['branch', 'tag', 'commit', 'rtp', 'dir', 'as'] + if has_key(a:arg, opt) + \ && (type(a:arg[opt]) != s:TYPE.string || empty(a:arg[opt])) + throw printf(opt_errfmt, opt, 'string') + endif + endfor + for opt in ['on', 'for'] + if has_key(a:arg, opt) + \ && type(a:arg[opt]) != s:TYPE.list + \ && (type(a:arg[opt]) != s:TYPE.string || empty(a:arg[opt])) + throw printf(opt_errfmt, opt, 'string or list') + endif + endfor + if has_key(a:arg, 'do') + \ && type(a:arg.do) != s:TYPE.funcref + \ && (type(a:arg.do) != s:TYPE.string || empty(a:arg.do)) + throw printf(opt_errfmt, 'do', 'string or funcref') + endif call extend(opts, a:arg) if has_key(opts, 'dir') - let opts.dir = s:dirpath(expand(opts.dir)) + let opts.dir = s:dirpath(s:plug_expand(opts.dir)) endif else throw 'Invalid argument type (expected: string or dictionary)' @@ -577,7 +767,7 @@ endfunction function! s:infer_properties(name, repo) let repo = a:repo if s:is_local_plug(repo) - return { 'dir': s:dirpath(expand(repo)) } + return { 'dir': s:dirpath(s:plug_expand(repo)) } else if repo =~ ':' let uri = repo @@ -605,7 +795,7 @@ function! plug#helptags() return s:err('plug#begin was not called') endif for spec in values(g:plugs) - let docd = join([spec.dir, 'doc'], '/') + let docd = join([s:rtp(spec), 'doc'], '/') if isdirectory(docd) silent! execute 'helptags' s:esc(docd) endif @@ -620,7 +810,7 @@ function! s:syntax() syn match plugNumber /[0-9]\+[0-9.]*/ contained syn match plugBracket /[[\]]/ contained syn match plugX /x/ contained - syn match plugDash /^-/ + syn match plugDash /^-\{1}\ / syn match plugPlus /^+/ syn match plugStar /^*/ syn match plugMessage /\(^- \)\@<=.*/ @@ -638,6 +828,7 @@ function! s:syntax() syn match plugError /^x.*/ syn region plugDeleted start=/^\~ .*/ end=/^\ze\S/ syn match plugH2 /^.*:\n-\+$/ + syn match plugH2 /^-\{2,}/ syn keyword Function PlugInstall PlugStatus PlugUpdate PlugClean hi def link plug1 Title hi def link plug2 Repeat @@ -730,7 +921,7 @@ function! s:finish_bindings() endfunction function! s:prepare(...) - if empty(getcwd()) + if empty(s:plug_getcwd()) throw 'Invalid current working directory. Cannot proceed.' endif @@ -750,7 +941,7 @@ function! s:prepare(...) call s:new_window() endif - nnoremap <silent> <buffer> q :if b:plug_preview==1<bar>pc<bar>endif<bar>bd<cr> + nnoremap <silent> <buffer> q :call <SID>close_pane()<cr> if a:0 == 0 call s:finish_bindings() endif @@ -763,12 +954,24 @@ function! s:prepare(...) execute 'silent! unmap <buffer>' k endfor setlocal buftype=nofile bufhidden=wipe nobuflisted nolist noswapfile nowrap cursorline modifiable nospell + if exists('+colorcolumn') + setlocal colorcolumn= + endif setf vim-plug if exists('g:syntax_on') call s:syntax() endif endfunction +function! s:close_pane() + if b:plug_preview == 1 + pc + let b:plug_preview = -1 + else + bd + endif +endfunction + function! s:assign_name() " Assign buffer name let prefix = '[Plugins]' @@ -783,31 +986,35 @@ endfunction function! s:chsh(swap) let prev = [&shell, &shellcmdflag, &shellredir] - if s:is_win - set shell=cmd.exe shellcmdflag=/c shellredir=>%s\ 2>&1 - elseif a:swap - set shell=sh shellredir=>%s\ 2>&1 + if !s:is_win + set shell=sh + endif + if a:swap + if s:is_powershell(&shell) + let &shellredir = '2>&1 | Out-File -Encoding UTF8 %s' + elseif &shell =~# 'sh' || &shell =~# 'cmd\(\.exe\)\?$' + set shellredir=>%s\ 2>&1 + endif endif return prev endfunction function! s:bang(cmd, ...) + let batchfile = '' try let [sh, shellcmdflag, shrd] = s:chsh(a:0) " FIXME: Escaping is incomplete. We could use shellescape with eval, " but it won't work on Windows. let cmd = a:0 ? s:with_cd(a:cmd, a:1) : a:cmd if s:is_win - let batchfile = tempname().'.bat' - call writefile(['@echo off', cmd], batchfile) - let cmd = batchfile + let [batchfile, cmd] = s:batchfile(cmd) endif let g:_plug_bang = (s:is_win && has('gui_running') ? 'silent ' : '').'!'.escape(cmd, '#!%') execute "normal! :execute g:_plug_bang\<cr>\<cr>" finally unlet g:_plug_bang let [&shell, &shellcmdflag, &shellredir] = [sh, shellcmdflag, shrd] - if s:is_win + if s:is_win && filereadable(batchfile) call delete(batchfile) endif endtry @@ -820,7 +1027,7 @@ function! s:regress_bar() endfunction function! s:is_updated(dir) - return !empty(s:system_chomp('git log --pretty=format:"%h" "HEAD...HEAD@{1}"', a:dir)) + return !empty(s:system_chomp(['git', 'log', '--pretty=format:%h', 'HEAD...HEAD@{1}'], a:dir)) endfunction function! s:do(pull, force, todo) @@ -857,6 +1064,7 @@ function! s:do(pull, force, todo) endif elseif type == s:TYPE.funcref try + call s:load_plugin(spec) let status = installed ? 'installed' : (updated ? 'updated' : 'unchanged') call spec.do({ 'name': name, 'status': status, 'force': a:force }) catch @@ -883,10 +1091,11 @@ endfunction function! s:checkout(spec) let sha = a:spec.commit - let output = s:system('git rev-parse HEAD', a:spec.dir) - if !v:shell_error && !s:hash_match(sha, s:lines(output)[0]) + let output = s:git_revision(a:spec.dir) + if !empty(output) && !s:hash_match(sha, s:lines(output)[0]) + let credential_helper = s:git_version_requirement(2) ? '-c credential.helper= ' : '' let output = s:system( - \ 'git fetch --depth 999999 && git checkout '.s:esc(sha).' --', a:spec.dir) + \ 'git '.credential_helper.'fetch --depth 999999 && git checkout '.plug#shellescape(sha).' --', a:spec.dir) endif return output endfunction @@ -908,7 +1117,7 @@ function! s:finish(pull) call add(msgs, "Press 'R' to retry.") endif if a:pull && len(s:update.new) < len(filter(getline(5, '$'), - \ "v:val =~ '^- ' && stridx(v:val, 'Already up-to-date') < 0")) + \ "v:val =~ '^- ' && v:val !~# 'Already up.to.date'")) call add(msgs, "Press 'D' to see the updated changes.") endif echo join(msgs, ' ') @@ -1001,13 +1210,21 @@ function! s:update_impl(pull, force, args) abort normal! 2G silent! redraw - let s:clone_opt = get(g:, 'plug_shallow', 1) ? - \ '--depth 1' . (s:git_version_requirement(1, 7, 10) ? ' --no-single-branch' : '') : '' - - if has('win32unix') - let s:clone_opt .= ' -c core.eol=lf -c core.autocrlf=input' + " Set remote name, overriding a possible user git config's clone.defaultRemoteName + let s:clone_opt = ['--origin', 'origin'] + if get(g:, 'plug_shallow', 1) + call extend(s:clone_opt, ['--depth', '1']) + if s:git_version_requirement(1, 7, 10) + call add(s:clone_opt, '--no-single-branch') + endif endif + if has('win32unix') || has('wsl') + call extend(s:clone_opt, ['-c', 'core.eol=lf', '-c', 'core.autocrlf=input']) + endif + + let s:submodule_opt = s:git_version_requirement(2, 8) ? ' --jobs='.threads : '' + " Python version requirement (>= 2.7) if python && !has('python3') && !ruby && !use_job && s:update.threads > 1 redir => pyv @@ -1081,7 +1298,7 @@ function! s:update_finish() elseif has_key(spec, 'tag') let tag = spec.tag if tag =~ '\*' - let tags = s:lines(s:system('git tag --list '.s:shellesc(tag).' --sort -version:refname 2>&1', spec.dir)) + let tags = s:lines(s:system('git tag --list '.plug#shellescape(tag).' --sort -version:refname 2>&1', spec.dir)) if !v:shell_error && !empty(tags) let tag = tags[0] call s:log4(name, printf('Latest tag for %s -> %s', spec.tag, tag)) @@ -1089,17 +1306,17 @@ function! s:update_finish() endif endif call s:log4(name, 'Checking out '.tag) - let out = s:system('git checkout -q '.s:esc(tag).' -- 2>&1', spec.dir) + let out = s:system('git checkout -q '.plug#shellescape(tag).' -- 2>&1', spec.dir) else - let branch = s:esc(get(spec, 'branch', 'master')) - call s:log4(name, 'Merging origin/'.branch) - let out = s:system('git checkout -q '.branch.' -- 2>&1' - \. (has_key(s:update.new, name) ? '' : ('&& git merge --ff-only origin/'.branch.' 2>&1')), spec.dir) + let branch = s:git_origin_branch(spec) + call s:log4(name, 'Merging origin/'.s:esc(branch)) + let out = s:system('git checkout -q '.plug#shellescape(branch).' -- 2>&1' + \. (has_key(s:update.new, name) ? '' : ('&& git merge --ff-only '.plug#shellescape('origin/'.branch).' 2>&1')), spec.dir) endif if !v:shell_error && filereadable(spec.dir.'/.gitmodules') && \ (s:update.force || has_key(s:update.new, name) || s:is_updated(spec.dir)) call s:log4(name, 'Updating submodules. This may take a while.') - let out .= s:bang('git submodule update --init --recursive 2>&1', spec.dir) + let out .= s:bang('git submodule update --init --recursive'.s:submodule_opt.' 2>&1', spec.dir) endif let msg = s:format_message(v:shell_error ? 'x': '-', name, out) if v:shell_error @@ -1138,7 +1355,7 @@ function! s:job_abort() silent! call job_stop(j.jobid) endif if j.new - call s:system('rm -rf ' . s:shellesc(g:plugs[name].dir)) + call s:rm_rf(g:plugs[name].dir) endif endfor let s:jobs = {} @@ -1184,29 +1401,27 @@ function! s:job_cb(fn, job, ch, data) endfunction function! s:nvim_cb(job_id, data, event) dict abort - return a:event == 'stdout' ? + return (a:event == 'stdout' || a:event == 'stderr') ? \ s:job_cb('s:job_out_cb', self, 0, join(a:data, "\n")) : \ s:job_cb('s:job_exit_cb', self, 0, a:data) endfunction function! s:spawn(name, cmd, opts) let job = { 'name': a:name, 'running': 1, 'error': 0, 'lines': [''], - \ 'batchfile': (s:is_win && (s:nvim || s:vim8)) ? tempname().'.bat' : '', \ 'new': get(a:opts, 'new', 0) } let s:jobs[a:name] = job - let cmd = has_key(a:opts, 'dir') ? s:with_cd(a:cmd, a:opts.dir) : a:cmd - if !empty(job.batchfile) - call writefile(['@echo off', cmd], job.batchfile) - let cmd = job.batchfile - endif - let argv = add(s:is_win ? ['cmd', '/c'] : ['sh', '-c'], cmd) if s:nvim + if has_key(a:opts, 'dir') + let job.cwd = a:opts.dir + endif + let argv = a:cmd call extend(job, { \ 'on_stdout': function('s:nvim_cb'), + \ 'on_stderr': function('s:nvim_cb'), \ 'on_exit': function('s:nvim_cb'), \ }) - let jid = jobstart(argv, job) + let jid = s:plug_call('jobstart', argv, job) if jid > 0 let job.jobid = jid else @@ -1216,9 +1431,16 @@ function! s:spawn(name, cmd, opts) \ 'Invalid arguments (or job table is full)'] endif elseif s:vim8 + let cmd = join(map(copy(a:cmd), 'plug#shellescape(v:val, {"script": 0})')) + if has_key(a:opts, 'dir') + let cmd = s:with_cd(cmd, a:opts.dir, 0) + endif + let argv = s:is_win ? ['cmd', '/s', '/c', '"'.cmd.'"'] : ['sh', '-c', cmd] let jid = job_start(s:is_win ? join(argv, ' ') : argv, { \ 'out_cb': function('s:job_cb', ['s:job_out_cb', job]), + \ 'err_cb': function('s:job_cb', ['s:job_out_cb', job]), \ 'exit_cb': function('s:job_cb', ['s:job_exit_cb', job]), + \ 'err_mode': 'raw', \ 'out_mode': 'raw' \}) if job_status(jid) == 'run' @@ -1229,7 +1451,7 @@ function! s:spawn(name, cmd, opts) let job.lines = ['Failed to start job'] endif else - let job.lines = s:lines(call('s:system', [cmd])) + let job.lines = s:lines(call('s:system', has_key(a:opts, 'dir') ? [a:cmd, a:opts.dir] : [a:cmd])) let job.error = v:shell_error != 0 let job.running = 0 endif @@ -1249,9 +1471,6 @@ function! s:reap(name) call s:log(bullet, a:name, empty(result) ? 'OK' : result) call s:bar() - if has_key(job, 'batchfile') && !empty(job.batchfile) - call delete(job.batchfile) - endif call remove(s:jobs, a:name) endfunction @@ -1266,9 +1485,10 @@ function! s:bar() endfunction function! s:logpos(name) - for i in range(4, line('$')) + let max = line('$') + for i in range(4, max > 4 ? max : 4) if getline(i) =~# '^[-+x*] '.a:name.':' - for j in range(i + 1, line('$')) + for j in range(i + 1, max > 5 ? max : 5) if getline(j) !~ '^ ' return [i, j - 1] endif @@ -1318,7 +1538,7 @@ while 1 " Without TCO, Vim stack is bound to explode let name = keys(s:update.todo)[0] let spec = remove(s:update.todo, name) - let new = !isdirectory(spec.dir) + let new = empty(globpath(spec.dir, '.git', 1)) call s:log(new ? '+' : '*', name, pull ? 'Updating ...' : 'Installing ...') redraw @@ -1328,8 +1548,14 @@ while 1 " Without TCO, Vim stack is bound to explode let [error, _] = s:git_validate(spec, 0) if empty(error) if pull - let fetch_opt = (has_tag && !empty(globpath(spec.dir, '.git/shallow'))) ? '--depth 99999999' : '' - call s:spawn(name, printf('git fetch %s %s 2>&1', fetch_opt, prog), { 'dir': spec.dir }) + let cmd = s:git_version_requirement(2) ? ['git', '-c', 'credential.helper=', 'fetch'] : ['git', 'fetch'] + if has_tag && !empty(globpath(spec.dir, '.git/shallow')) + call extend(cmd, ['--depth', '99999999']) + endif + if !empty(prog) + call add(cmd, prog) + endif + call s:spawn(name, cmd, { 'dir': spec.dir }) else let s:jobs[name] = { 'running': 0, 'lines': ['Already installed'], 'error': 0 } endif @@ -1337,12 +1563,14 @@ while 1 " Without TCO, Vim stack is bound to explode let s:jobs[name] = { 'running': 0, 'lines': s:lines(error), 'error': 1 } endif else - call s:spawn(name, - \ printf('git clone %s %s %s %s 2>&1', - \ has_tag ? '' : s:clone_opt, - \ prog, - \ s:shellesc(spec.uri), - \ s:shellesc(s:trim(spec.dir))), { 'new': 1 }) + let cmd = ['git', 'clone'] + if !has_tag + call extend(cmd, s:clone_opt) + endif + if !empty(prog) + call add(cmd, prog) + endif + call s:spawn(name, extend(cmd, [spec.uri, s:trim(spec.dir)]), { 'new': 1 }) endif if !s:jobs[name].running @@ -1379,7 +1607,7 @@ G_NVIM = vim.eval("has('nvim')") == '1' G_PULL = vim.eval('s:update.pull') == '1' G_RETRIES = int(vim.eval('get(g:, "plug_retries", 2)')) + 1 G_TIMEOUT = int(vim.eval('get(g:, "plug_timeout", 60)')) -G_CLONE_OPT = vim.eval('s:clone_opt') +G_CLONE_OPT = ' '.join(vim.eval('s:clone_opt')) G_PROGRESS = vim.eval('s:progress_opt(1)') G_LOG_PROB = 1.0 / int(vim.eval('s:update.threads')) G_STOP = thr.Event() @@ -1916,7 +2144,7 @@ function! s:update_ruby() end } if VIM::evaluate('s:mac_gui') == 1 - clone_opt = VIM::evaluate('s:clone_opt') + clone_opt = VIM::evaluate('s:clone_opt').join(' ') progress = VIM::evaluate('s:progress_opt(1)') nthr.times do mtx.synchronize do @@ -1969,19 +2197,45 @@ function! s:update_ruby() EOF endfunction -function! s:shellesc_cmd(arg) - let escaped = substitute(a:arg, '[&|<>()@^]', '^&', 'g') - let escaped = substitute(escaped, '%', '%%', 'g') - let escaped = substitute(escaped, '"', '\\^&', 'g') - let escaped = substitute(escaped, '\(\\\+\)\(\\^\)', '\1\1\2', 'g') - return '^"'.substitute(escaped, '\(\\\+\)$', '\1\1', '').'^"' +function! s:shellesc_cmd(arg, script) + let escaped = substitute('"'.a:arg.'"', '[&|<>()@^!"]', '^&', 'g') + return substitute(escaped, '%', (a:script ? '%' : '^') . '&', 'g') endfunction -function! s:shellesc(arg) - if &shell =~# 'cmd.exe$' - return s:shellesc_cmd(a:arg) +function! s:shellesc_ps1(arg) + return "'".substitute(escape(a:arg, '\"'), "'", "''", 'g')."'" +endfunction + +function! s:shellesc_sh(arg) + return "'".substitute(a:arg, "'", "'\\\\''", 'g')."'" +endfunction + +" Escape the shell argument based on the shell. +" Vim and Neovim's shellescape() are insufficient. +" 1. shellslash determines whether to use single/double quotes. +" Double-quote escaping is fragile for cmd.exe. +" 2. It does not work for powershell. +" 3. It does not work for *sh shells if the command is executed +" via cmd.exe (ie. cmd.exe /c sh -c command command_args) +" 4. It does not support batchfile syntax. +" +" Accepts an optional dictionary with the following keys: +" - shell: same as Vim/Neovim 'shell' option. +" If unset, fallback to 'cmd.exe' on Windows or 'sh'. +" - script: If truthy and shell is cmd.exe, escape for batchfile syntax. +function! plug#shellescape(arg, ...) + if a:arg =~# '^[A-Za-z0-9_/:.-]\+$' + return a:arg endif - return shellescape(a:arg) + let opts = a:0 > 0 && type(a:1) == s:TYPE.dict ? a:1 : {} + let shell = get(opts, 'shell', s:is_win ? 'cmd.exe' : 'sh') + let script = get(opts, 'script', 1) + if shell =~# 'cmd\(\.exe\)\?$' + return s:shellesc_cmd(a:arg, script) + elseif s:is_powershell(shell) + return s:shellesc_ps1(a:arg) + endif + return s:shellesc_sh(a:arg) endfunction function! s:glob_dir(path) @@ -2013,23 +2267,39 @@ function! s:format_message(bullet, name, message) endif endfunction -function! s:with_cd(cmd, dir) - return printf('cd%s %s && %s', s:is_win ? ' /d' : '', s:shellesc(a:dir), a:cmd) +function! s:with_cd(cmd, dir, ...) + let script = a:0 > 0 ? a:1 : 1 + return printf('cd%s %s && %s', s:is_win ? ' /d' : '', plug#shellescape(a:dir, {'script': script}), a:cmd) endfunction function! s:system(cmd, ...) + let batchfile = '' try let [sh, shellcmdflag, shrd] = s:chsh(1) - let cmd = a:0 > 0 ? s:with_cd(a:cmd, a:1) : a:cmd - if s:is_win - let batchfile = tempname().'.bat' - call writefile(['@echo off', cmd], batchfile) - let cmd = batchfile + if type(a:cmd) == s:TYPE.list + " Neovim's system() supports list argument to bypass the shell + " but it cannot set the working directory for the command. + " Assume that the command does not rely on the shell. + if has('nvim') && a:0 == 0 + return system(a:cmd) + endif + let cmd = join(map(copy(a:cmd), 'plug#shellescape(v:val, {"shell": &shell, "script": 0})')) + if s:is_powershell(&shell) + let cmd = '& ' . cmd + endif + else + let cmd = a:cmd endif - return system(s:is_win ? '('.cmd.')' : cmd) + if a:0 > 0 + let cmd = s:with_cd(cmd, a:1, type(a:cmd) != s:TYPE.list) + endif + if s:is_win && type(a:cmd) != s:TYPE.list + let [batchfile, cmd] = s:batchfile(cmd) + endif + return system(cmd) finally let [&shell, &shellcmdflag, &shellredir] = [sh, shellcmdflag, shrd] - if s:is_win + if s:is_win && filereadable(batchfile) call delete(batchfile) endif endtry @@ -2043,18 +2313,17 @@ endfunction function! s:git_validate(spec, check_branch) let err = '' if isdirectory(a:spec.dir) - let result = s:lines(s:system('git rev-parse --abbrev-ref HEAD 2>&1 && git config -f .git/config remote.origin.url', a:spec.dir)) + let result = [s:git_local_branch(a:spec.dir), s:git_origin_url(a:spec.dir)] let remote = result[-1] - if v:shell_error + if empty(remote) let err = join([remote, 'PlugClean required.'], "\n") elseif !s:compare_git_uri(remote, a:spec.uri) let err = join(['Invalid URI: '.remote, \ 'Expected: '.a:spec.uri, \ 'PlugClean required.'], "\n") elseif a:check_branch && has_key(a:spec, 'commit') - let result = s:lines(s:system('git rev-parse HEAD 2>&1', a:spec.dir)) - let sha = result[-1] - if v:shell_error + let sha = s:git_revision(a:spec.dir) + if empty(sha) let err = join(add(result, 'PlugClean required.'), "\n") elseif !s:hash_match(sha, a:spec.commit) let err = join([printf('Invalid HEAD (expected: %s, actual: %s)', @@ -2062,8 +2331,9 @@ function! s:git_validate(spec, check_branch) \ 'PlugUpdate required.'], "\n") endif elseif a:check_branch - let branch = result[0] + let current_branch = result[0] " Check tag + let origin_branch = s:git_origin_branch(a:spec) if has_key(a:spec, 'tag') let tag = s:system_chomp('git describe --exact-match --tags HEAD 2>&1', a:spec.dir) if a:spec.tag !=# tag && a:spec.tag !~ '\*' @@ -2071,25 +2341,26 @@ function! s:git_validate(spec, check_branch) \ (empty(tag) ? 'N/A' : tag), a:spec.tag) endif " Check branch - elseif a:spec.branch !=# branch + elseif origin_branch !=# current_branch let err = printf('Invalid branch: %s (expected: %s). Try PlugUpdate.', - \ branch, a:spec.branch) + \ current_branch, origin_branch) endif if empty(err) - let [ahead, behind] = split(s:lastline(s:system(printf( - \ 'git rev-list --count --left-right HEAD...origin/%s', - \ a:spec.branch), a:spec.dir)), '\t') + let [ahead, behind] = split(s:lastline(s:system([ + \ 'git', 'rev-list', '--count', '--left-right', + \ printf('HEAD...origin/%s', origin_branch) + \ ], a:spec.dir)), '\t') if !v:shell_error && ahead if behind " Only mention PlugClean if diverged, otherwise it's likely to be " pushable (and probably not that messed up). let err = printf( \ "Diverged from origin/%s (%d commit(s) ahead and %d commit(s) behind!\n" - \ .'Backup local changes and run PlugClean and PlugUpdate to reinstall it.', a:spec.branch, ahead, behind) + \ .'Backup local changes and run PlugClean and PlugUpdate to reinstall it.', origin_branch, ahead, behind) else let err = printf("Ahead of origin/%s by %d commit(s).\n" \ .'Cannot update until local changes are pushed.', - \ a:spec.branch, ahead) + \ origin_branch, ahead) endif endif endif @@ -2102,7 +2373,9 @@ endfunction function! s:rm_rf(dir) if isdirectory(a:dir) - call s:system((s:is_win ? 'rmdir /S /Q ' : 'rm -rf ') . s:shellesc(a:dir)) + return s:system(s:is_win + \ ? 'rmdir /S /Q '.plug#shellescape(a:dir) + \ : ['rm', '-rf', a:dir]) endif endfunction @@ -2134,7 +2407,7 @@ function! s:clean(force) let allowed = {} for dir in dirs - let allowed[s:dirpath(fnamemodify(dir, ':h:h'))] = 1 + let allowed[s:dirpath(s:plug_fnamemodify(dir, ':h:h'))] = 1 let allowed[dir] = 1 for child in s:glob_dir(dir) let allowed[child] = 1 @@ -2184,6 +2457,7 @@ endfunction function! s:delete(range, force) let [l1, l2] = a:range let force = a:force + let err_count = 0 while l1 <= l2 let line = getline(l1) if line =~ '^- ' && isdirectory(line[2:]) @@ -2192,11 +2466,22 @@ function! s:delete(range, force) let answer = force ? 1 : s:ask('Delete '.line[2:].'?', 1) let force = force || answer > 1 if answer - call s:rm_rf(line[2:]) + let err = s:rm_rf(line[2:]) setlocal modifiable - call setline(l1, '~'.line[1:]) - let s:clean_count += 1 - call setline(4, printf('Removed %d directories.', s:clean_count)) + if empty(err) + call setline(l1, '~'.line[1:]) + let s:clean_count += 1 + else + delete _ + call append(l1 - 1, s:format_message('x', line[1:], err)) + let l2 += len(s:lines(err)) + let err_count += 1 + endif + let msg = printf('Removed %d directories.', s:clean_count) + if err_count > 0 + let msg .= printf(' Failed to remove %d directories.', err_count) + endif + call setline(4, msg) setlocal nomodifiable endif endif @@ -2207,11 +2492,11 @@ endfunction function! s:upgrade() echo 'Downloading the latest version of vim-plug' redraw - let tmp = tempname() + let tmp = s:plug_tempname() let new = tmp . '/plug.vim' try - let out = s:system(printf('git clone --depth 1 %s %s', s:plug_src, tmp)) + let out = s:system(['git', 'clone', '--depth', '1', s:plug_src, tmp]) if v:shell_error return s:err('Error upgrading vim-plug: '. out) endif @@ -2246,15 +2531,16 @@ function! s:status() let unloaded = 0 let [cnt, total] = [0, len(g:plugs)] for [name, spec] in items(g:plugs) + let is_dir = isdirectory(spec.dir) if has_key(spec, 'uri') - if isdirectory(spec.dir) + if is_dir let [err, _] = s:git_validate(spec, 1) let [valid, msg] = [empty(err), empty(err) ? 'OK' : err] else let [valid, msg] = [0, 'Not found. Try PlugInstall.'] endif else - if isdirectory(spec.dir) + if is_dir let [valid, msg] = [1, 'OK'] else let [valid, msg] = [0, 'Not found.'] @@ -2263,7 +2549,7 @@ function! s:status() let cnt += 1 let ecnt += !valid " `s:loaded` entry can be missing if PlugUpgraded - if valid && get(s:loaded, name, -1) == 0 + if is_dir && get(s:loaded, name, -1) == 0 let unloaded = 1 let msg .= ' (not loaded)' endif @@ -2335,34 +2621,41 @@ function! s:preview_commit() let sha = matchstr(getline('.'), '^ \X*\zs[0-9a-f]\{7,9}') if empty(sha) - return + let name = matchstr(getline('.'), '^- \zs[^:]*\ze:$') + if empty(name) + return + endif + let title = 'HEAD@{1}..' + let command = 'git diff --no-color HEAD@{1}' + else + let title = sha + let command = 'git show --no-color --pretty=medium '.sha + let name = s:find_name(line('.')) endif - let name = s:find_name(line('.')) if empty(name) || !has_key(g:plugs, name) || !isdirectory(g:plugs[name].dir) return endif if exists('g:plug_pwindow') && !s:is_preview_window_open() execute g:plug_pwindow - execute 'e' sha + execute 'e' title else - execute 'pedit' sha + execute 'pedit' title wincmd P endif - setlocal previewwindow filetype=git buftype=nofile nobuflisted modifiable + setlocal previewwindow filetype=git buftype=nofile bufhidden=wipe nobuflisted modifiable + let batchfile = '' try let [sh, shellcmdflag, shrd] = s:chsh(1) - let cmd = 'cd '.s:shellesc(g:plugs[name].dir).' && git show --no-color --pretty=medium '.sha + let cmd = 'cd '.plug#shellescape(g:plugs[name].dir).' && '.command if s:is_win - let batchfile = tempname().'.bat' - call writefile(['@echo off', cmd], batchfile) - let cmd = batchfile + let [batchfile, cmd] = s:batchfile(cmd) endif execute 'silent %!' cmd finally let [&shell, &shellcmdflag, &shellredir] = [sh, shellcmdflag, shrd] - if s:is_win + if s:is_win && filereadable(batchfile) call delete(batchfile) endif endtry @@ -2405,12 +2698,23 @@ function! s:diff() endif call s:append_ul(2, origin ? 'Pending updates:' : 'Last update:') for [k, v] in plugs - let range = origin ? '..origin/'.v.branch : 'HEAD@{1}..' - let diff = s:system_chomp('git log --graph --color=never --pretty=format:"%x01%h%x01%d%x01%s%x01%cr" '.s:shellesc(range), v.dir) - if !empty(diff) - let ref = has_key(v, 'tag') ? (' (tag: '.v.tag.')') : has_key(v, 'commit') ? (' '.v.commit) : '' - call append(5, extend(['', '- '.k.':'.ref], map(s:lines(diff), 's:format_git_log(v:val)'))) - let cnts[origin] += 1 + let branch = s:git_origin_branch(v) + if len(branch) + let range = origin ? '..origin/'.branch : 'HEAD@{1}..' + let cmd = ['git', 'log', '--graph', '--color=never'] + if s:git_version_requirement(2, 10, 0) + call add(cmd, '--no-show-signature') + endif + call extend(cmd, ['--pretty=format:%x01%h%x01%d%x01%s%x01%cr', range]) + if has_key(v, 'rtp') + call extend(cmd, ['--', v.rtp]) + endif + let diff = s:system_chomp(cmd, v.dir) + if !empty(diff) + let ref = has_key(v, 'tag') ? (' (tag: '.v.tag.')') : has_key(v, 'commit') ? (' '.v.commit) : '' + call append(5, extend(['', '- '.k.':'.ref], map(s:lines(diff), 's:format_git_log(v:val)'))) + let cnts[origin] += 1 + endif endif let bar .= '=' call s:progress_bar(2, bar, len(total)) @@ -2425,8 +2729,13 @@ function! s:diff() \ . (cnts[1] ? printf(' %d plugin(s) have pending updates.', cnts[1]) : '')) if cnts[0] || cnts[1] - nnoremap <silent> <buffer> <cr> :silent! call <SID>preview_commit()<cr> - nnoremap <silent> <buffer> o :silent! call <SID>preview_commit()<cr> + nnoremap <silent> <buffer> <plug>(plug-preview) :silent! call <SID>preview_commit()<cr> + if empty(maparg("\<cr>", 'n')) + nmap <buffer> <cr> <plug>(plug-preview) + endif + if empty(maparg('o', 'n')) + nmap <buffer> o <plug>(plug-preview) + endif endif if cnts[0] nnoremap <silent> <buffer> X :call <SID>revert()<cr> @@ -2447,7 +2756,7 @@ function! s:revert() return endif - call s:system('git reset --hard HEAD@{1} && git checkout '.s:esc(g:plugs[name].branch).' --', g:plugs[name].dir) + call s:system('git reset --hard HEAD@{1} && git checkout '.plug#shellescape(g:plugs[name].branch).' --', g:plugs[name].dir) setlocal modifiable normal! "_dap setlocal nomodifiable @@ -2465,9 +2774,9 @@ function! s:snapshot(force, ...) abort 1 let anchor = line('$') - 3 let names = sort(keys(filter(copy(g:plugs), - \'has_key(v:val, "uri") && !has_key(v:val, "commit") && isdirectory(v:val.dir)'))) + \'has_key(v:val, "uri") && isdirectory(v:val.dir)'))) for name in reverse(names) - let sha = s:system_chomp('git rev-parse --short HEAD', g:plugs[name].dir) + let sha = has_key(g:plugs[name], 'commit') ? g:plugs[name].commit : s:git_revision(g:plugs[name].dir) if !empty(sha) call append(anchor, printf("silent! let g:plugs['%s'].commit = '%s'", name, sha)) redraw @@ -2475,7 +2784,7 @@ function! s:snapshot(force, ...) abort endfor if a:0 > 0 - let fn = expand(a:1) + let fn = s:plug_expand(a:1) if filereadable(fn) && !(a:force || s:ask(a:1.' already exists. Overwrite?')) return endif diff --git a/.vim/autoload/pythoncomplete.vim b/dot_vim/autoload/pythoncomplete.vim similarity index 100% rename from .vim/autoload/pythoncomplete.vim rename to dot_vim/autoload/pythoncomplete.vim diff --git a/.vim/autoload/rubycomplete.vim b/dot_vim/autoload/rubycomplete.vim similarity index 100% rename from .vim/autoload/rubycomplete.vim rename to dot_vim/autoload/rubycomplete.vim diff --git a/.vim/autoload/snipMate.vim b/dot_vim/autoload/snipMate.vim similarity index 100% rename from .vim/autoload/snipMate.vim rename to dot_vim/autoload/snipMate.vim diff --git a/.vim/buftabs.vim b/dot_vim/buftabs.vim similarity index 100% rename from .vim/buftabs.vim rename to dot_vim/buftabs.vim diff --git a/.vim/charm.vim b/dot_vim/charm.vim similarity index 100% rename from .vim/charm.vim rename to dot_vim/charm.vim diff --git a/.vim/closetag.vim b/dot_vim/closetag.vim similarity index 100% rename from .vim/closetag.vim rename to dot_vim/closetag.vim diff --git a/dot_vim/coc-settings.json b/dot_vim/coc-settings.json new file mode 100644 index 0000000..eea4ad7 --- /dev/null +++ b/dot_vim/coc-settings.json @@ -0,0 +1,34 @@ +{ + "suggest.timeout": 5000, + "suggest.enablePreview": true, + "suggest.maxPreviewWidth": 70, + "diagnostic.displayByAle": false, + "diagnostic.checkCurrentLine": true, + "python.linting.pylintEnabled": false, + "python.linting.flake8Enabled": true, + "python.linting.mypyEnabled": true, + "python.linting.mypyArgs": ["--ignore-missing-imports"], + "python.venvPath": "~/.virtualenvs", + "python.analysis.typeCheckingMode": "off", + "suggest.detailField": "abbr", + "suggest.snippetIndicator": "", + "rust-analyzer.server.path": "rust-analyzer", + "rust-analyzer.inlayHints.enable": false, + "languageserver": { + "ccls": { + "command": "ccls", + "filetypes": ["c", "cc", "cpp", "cuda", "objc", "objcpp"], + "rootPatterns": [".ccls", "compile_commands.json", ".vim/", ".git/", ".hg/"], + "initializationOptions": { + "cache": { + "directory": ".ccls-cache" + } + } + }, + "golang": { + "command": "gopls", + "rootPatterns": ["go.mod", ".vim/", ".git/", ".hg/"], + "filetypes": ["go"] + } + } +} diff --git a/.vim/colors/barak.vim b/dot_vim/colors/barak.vim similarity index 100% rename from .vim/colors/barak.vim rename to dot_vim/colors/barak.vim diff --git a/.vim/colors/baraknew.vim b/dot_vim/colors/baraknew.vim similarity index 94% rename from .vim/colors/baraknew.vim rename to dot_vim/colors/baraknew.vim index 03df230..504e3c5 100644 --- a/.vim/colors/baraknew.vim +++ b/dot_vim/colors/baraknew.vim @@ -38,7 +38,7 @@ hi Normal ctermfg=253 ctermbg=NONE " ------------- " any comment hi Comment guifg=#238e23 gui=italic -hi Comment ctermfg=34 cterm=none +hi Comment ctermfg=34 cterm=italic " Constant Group @@ -287,13 +287,13 @@ hi WildMenu ctermfg=16 ctermbg=186 cterm=bold " ---- " added line hi DiffAdd guifg=#80a090 guibg=#313c36 gui=none -hi DiffAdd ctermfg=18 ctermbg=22 cterm=none +hi DiffAdd ctermfg=fg ctermbg=22 cterm=none " changed line hi DiffChange guifg=NONE guibg=#4a343a gui=none -hi DiffChange ctermfg=fg ctermbg=52 cterm=none +hi DiffChange ctermfg=fg ctermbg=58 cterm=none " deleted line hi DiffDelete guifg=#6c6661 guibg=#3c3631 gui=none -hi DiffDelete ctermfg=59 ctermbg=58 cterm=none +hi DiffDelete ctermfg=fg ctermbg=52 cterm=none " changed text within line hi DiffText guifg=#f05060 guibg=#4a343a gui=bold hi DiffText ctermfg=203 ctermbg=52 cterm=bold @@ -322,11 +322,13 @@ hi Search ctermbg=214 cterm=none " Popup Menu " ---------- " normal item in popup +"hi Pmenu guifg=#e0e0e0 guibg=#303840 gui=none +"hi Pmenu ctermfg=253 ctermbg=233 cterm=none hi Pmenu guifg=#e0e0e0 guibg=#303840 gui=none -hi Pmenu ctermfg=253 ctermbg=233 cterm=none +hi Pmenu ctermfg=253 ctermbg=237 cterm=none " selected item in popup hi PmenuSel guifg=#cae682 guibg=#505860 gui=none -hi PmenuSel ctermfg=186 ctermbg=237 cterm=none +hi PmenuSel ctermfg=186 ctermbg=239 cterm=none " scrollbar in popup hi PMenuSbar guibg=#505860 gui=none hi PMenuSbar ctermbg=59 cterm=none @@ -419,3 +421,14 @@ hi DONE guifg=green guibg=NONE ctermfg=green ctermbg=NONE " hi deniteMatchedChar guifg=#FFFFFF guibg=#5F87FF ctermfg=15 ctermbg=27 +hi link NormalFloat Pmenu + + +" Vim-Signify +" ---- +hi SignifySignAdd guifg=#80a090 guibg=#181818 gui=none +hi SignifySignAdd ctermfg=29 ctermbg=233 cterm=none +hi SignifySignChange guifg=#4a343a guibg=#181818 gui=none +hi SignifySignChange ctermfg=100 ctermbg=233 cterm=none +hi SignifySignDelete guifg=#6c6661 guibg=#181818 gui=none +hi SignifySignDelete ctermfg=124 ctermbg=233 cterm=none diff --git a/.vim/colors/dante.vim b/dot_vim/colors/dante.vim similarity index 100% rename from .vim/colors/dante.vim rename to dot_vim/colors/dante.vim diff --git a/.vim/colors/ir_black.vim b/dot_vim/colors/ir_black.vim similarity index 100% rename from .vim/colors/ir_black.vim rename to dot_vim/colors/ir_black.vim diff --git a/.vim/colors/lucius.vim b/dot_vim/colors/lucius.vim similarity index 100% rename from .vim/colors/lucius.vim rename to dot_vim/colors/lucius.vim diff --git a/.vim/colors/ps_color.vim b/dot_vim/colors/ps_color.vim similarity index 100% rename from .vim/colors/ps_color.vim rename to dot_vim/colors/ps_color.vim diff --git a/.vim/colors/zenburn.vim b/dot_vim/colors/zenburn.vim similarity index 100% rename from .vim/colors/zenburn.vim rename to dot_vim/colors/zenburn.vim diff --git a/.vim/doc/NERD_tree.txt b/dot_vim/doc/NERD_tree.txt similarity index 100% rename from .vim/doc/NERD_tree.txt rename to dot_vim/doc/NERD_tree.txt diff --git a/.vim/doc/bufexplorer.txt b/dot_vim/doc/bufexplorer.txt similarity index 100% rename from .vim/doc/bufexplorer.txt rename to dot_vim/doc/bufexplorer.txt diff --git a/.vim/doc/cocoa.txt b/dot_vim/doc/cocoa.txt similarity index 100% rename from .vim/doc/cocoa.txt rename to dot_vim/doc/cocoa.txt diff --git a/.vim/doc/matchit.txt b/dot_vim/doc/matchit.txt similarity index 100% rename from .vim/doc/matchit.txt rename to dot_vim/doc/matchit.txt diff --git a/.vim/doc/project.txt b/dot_vim/doc/project.txt similarity index 100% rename from .vim/doc/project.txt rename to dot_vim/doc/project.txt diff --git a/.vim/doc/ps_color.txt b/dot_vim/doc/ps_color.txt similarity index 100% rename from .vim/doc/ps_color.txt rename to dot_vim/doc/ps_color.txt diff --git a/.vim/doc/snipMate.txt b/dot_vim/doc/snipMate.txt similarity index 100% rename from .vim/doc/snipMate.txt rename to dot_vim/doc/snipMate.txt diff --git a/.vim/doc/tags b/dot_vim/doc/tags similarity index 100% rename from .vim/doc/tags rename to dot_vim/doc/tags diff --git a/.vim/doc/vcscommand.txt b/dot_vim/doc/vcscommand.txt similarity index 100% rename from .vim/doc/vcscommand.txt rename to dot_vim/doc/vcscommand.txt diff --git a/.vim/filetype.vim b/dot_vim/filetype.vim similarity index 57% rename from .vim/filetype.vim rename to dot_vim/filetype.vim index 4f42c32..48fb035 100644 --- a/.vim/filetype.vim +++ b/dot_vim/filetype.vim @@ -1,8 +1,10 @@ " general per-language filetype file -if exists("did\_load\_filetypes") +if exists("g:did_load_personal_filetypes") finish endif +let g:did_load_personal_filetypes = 1 + " Filetype mappingss augroup markdown au! BufRead,BufNewFile *.mkd setfiletype markdown @@ -26,18 +28,26 @@ augroup less autocmd BufNewFile,BufRead *.less set filetype=less augroup END +augroup pcal + au BufNewFile,BufRead *.pcal setf tla +augroup END + +augroup ragel + au BufNewFile,BufRead *.rl setf ragel +augroup END + au! BufNewFile,BufRead *.pde setf arduino -augroup org - " leave these as is: - au! BufRead,BufWrite,BufWritePost,BufNewFile *.org - au BufRead,BufNewFile *.org call org#SetOrgFileType() - au BufRead,BufNewFile *.org :GitGutterDisable - au BufRead *.org :PreLoadTags - au BufWrite *.org :PreWriteTags - au BufWritePost *.org :PostWriteTags -augroup END +"augroup org + "" leave these as is: + "au! BufRead,BufWrite,BufWritePost,BufNewFile *.org + ""au BufRead,BufNewFile *.org call org#SetOrgFileType() + ""au BufRead,BufNewFile *.org :GitGutterDisable + "au BufRead *.org :PreLoadTags + "au BufWrite *.org :PreWriteTags + "au BufWritePost *.org :PostWriteTags +"augroup END au BufNewFile,BufRead motd.public,/tmp/motd.public.r.* setf motd @@ -47,6 +57,10 @@ au BufRead,BufNewFile *.go set filetype=go au FileType cpp let b:delimitMate_matchpairs = "(:),[:],{:}" +autocmd FileType vue syntax sync fromstart +au Filetype vue let b:AutoPairs = {'(':')', '[':']', '{':'}',"'":"'",'"':'"', '`':'`', '<':'>'} +au Filetype html let b:AutoPairs = {'(':')', '[':']', '{':'}',"'":"'",'"':'"', '`':'`', '<':'>'} + "Settings per filetype augroup python ""autocmd FileType python set omnifunc=pythoncomplete#Complete @@ -85,10 +99,21 @@ augroup go autocmd FileType go set softtabstop=2 autocmd FileType go set shiftwidth=2 autocmd FileType go set noexpandtab - autocmd FileType go nmap <Leader>gd <Plug>(go-doc) - autocmd FileType go nmap gd <Plug>(go-def) + autocmd FileType go imap <buffer> <silent> <Leader>rr <C-o>:GoIfErr<cr> + autocmd FileType go nmap <buffer> <silent> <Leader>rr :GoIfErr<cr> + autocmd FileType go nnoremap <silent> <Leader>im <cmd>lua require('telescope').extensions.goimpl.goimpl{theme = "ivy", layout_config = {height = 10}}<cr> + "autocmd FileType go nmap <Leader>gd <Plug>(go-doc) + "autocmd FileType go nmap gd <Plug>(go-def) augroup END +augroup idris + autocmd FileType idris nmap <buffer> <LocalLeader>a a?hole<Esc><LocalLeader>t +augroup end + +augroup markdown + autocmd FileType markdown imap <buffer> <S-Tab> <C-o><< +augroup end + autocmd FileType go let b:auto_trim_whitespace=1 autocmd FileType cpp let b:auto_trim_whitespace=1 autocmd FileType perl let b:auto_trim_whitespace=1 @@ -97,4 +122,26 @@ autocmd FileType javascript let b:auto_trim_whitespace=1 autocmd FileType python let b:auto_trim_whitespace=1 autocmd FileType proto let b:auto_trim_whitespace=1 autocmd FileType hy let b:auto_trim_whitespace=1 +autocmd FileType idris let b:auto_trim_whitespace=1 +autocmd FileType java let b:auto_trim_whitespace=1 +autocmd FileType lua let b:auto_trim_whitespace=1 +augroup templates + autocmd BufNewFile *.vue 0r ~/.vim/skeletons/vue.skel + autocmd BufNewFile *.svelte 0r ~/.vim/skeletons/svelte.skel +augroup end + +augroup rust + autocmd FileType rust nnoremap <Leader>lg <cmd>lua rust_where_at_line()<CR> +augroup end + +function DetectGoHtmlTmpl() + if expand('%:e') == "html" && search("{{") != 0 + setfiletype gohtmltmpl + endif +endfunction + +augroup filetypedetect + " gohtmltmpl + au BufRead,BufNewFile *.html call DetectGoHtmlTmpl() +augroup END diff --git a/.vim/ftdetect/proto.vim b/dot_vim/ftdetect/proto.vim similarity index 100% rename from .vim/ftdetect/proto.vim rename to dot_vim/ftdetect/proto.vim diff --git a/.vim/ftdetect/scala.vim b/dot_vim/ftdetect/scala.vim similarity index 100% rename from .vim/ftdetect/scala.vim rename to dot_vim/ftdetect/scala.vim diff --git a/.vim/ftplugin/html_snip_helper.vim b/dot_vim/ftplugin/html_snip_helper.vim similarity index 100% rename from .vim/ftplugin/html_snip_helper.vim rename to dot_vim/ftplugin/html_snip_helper.vim diff --git a/.vim/ftplugin/objc_cocoa_mappings.vim b/dot_vim/ftplugin/objc_cocoa_mappings.vim similarity index 100% rename from .vim/ftplugin/objc_cocoa_mappings.vim rename to dot_vim/ftplugin/objc_cocoa_mappings.vim diff --git a/.vim/indent/cpp.vim b/dot_vim/indent/cpp.vim similarity index 100% rename from .vim/indent/cpp.vim rename to dot_vim/indent/cpp.vim diff --git a/dot_vim/indent/gohtmltmpl.vim b/dot_vim/indent/gohtmltmpl.vim new file mode 100644 index 0000000..8cc544a --- /dev/null +++ b/dot_vim/indent/gohtmltmpl.vim @@ -0,0 +1,54 @@ +if exists("b:did_indent") + finish +endif + +runtime! indent/html.vim + +" Indent Golang HTML templates +setlocal indentexpr=GetGoHTMLTmplIndent(v:lnum) +setlocal indentkeys+==else,=end + +" Only define the function once. +if exists("*GetGoHTMLTmplIndent") + finish +endif + +" don't spam the user when Vim is started in Vi compatibility mode +let s:cpo_save = &cpo +set cpo&vim + +function! GetGoHTMLTmplIndent(lnum) + " Get HTML indent + if exists('*HtmlIndent') + let ind = HtmlIndent() + else + let ind = HtmlIndentGet(a:lnum) + endif + + " The value of a single shift-width + if exists('*shiftwidth') + let sw = shiftwidth() + else + let sw = &sw + endif + + " If need to indent based on last line + let last_line = getline(a:lnum-1) + if last_line =~ '^\s*{{-\=\s*\%(if\|else\|range\|with\|define\|block\).*}}' + let ind += sw + endif + + " End of FuncMap block + let current_line = getline(a:lnum) + if current_line =~ '^\s*{{-\=\s*\%(else\|end\).*}}' + let ind -= sw + endif + + return ind +endfunction + +" restore Vi compatibility settings +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim: sw=2 ts=2 et diff --git a/.vim/indent/haskell.vim b/dot_vim/indent/haskell.vim similarity index 100% rename from .vim/indent/haskell.vim rename to dot_vim/indent/haskell.vim diff --git a/.vim/indent/javascript.vim b/dot_vim/indent/javascript.vim similarity index 100% rename from .vim/indent/javascript.vim rename to dot_vim/indent/javascript.vim diff --git a/.vim/indent/mako.vim b/dot_vim/indent/mako.vim similarity index 100% rename from .vim/indent/mako.vim rename to dot_vim/indent/mako.vim diff --git a/.vim/indent/python.vim b/dot_vim/indent/python.vim similarity index 100% rename from .vim/indent/python.vim rename to dot_vim/indent/python.vim diff --git a/.vim/indent/scala.vim b/dot_vim/indent/scala.vim similarity index 100% rename from .vim/indent/scala.vim rename to dot_vim/indent/scala.vim diff --git a/dot_vim/init.vim b/dot_vim/init.vim new file mode 100644 index 0000000..f182e5b --- /dev/null +++ b/dot_vim/init.vim @@ -0,0 +1,3 @@ +set runtimepath^=~/.vim runtimepath+=~/.vim/after +let &packpath = &runtimepath +source ~/.vimrc diff --git a/dot_vim/lua/avante_setup.lua b/dot_vim/lua/avante_setup.lua new file mode 100644 index 0000000..21a8ec3 --- /dev/null +++ b/dot_vim/lua/avante_setup.lua @@ -0,0 +1,17 @@ +require("avante_lib").load() +require("avante").setup({ + provider = "ollama", + auto_suggestions_provider = "ollama", + cursor_applying_provider = "ollama", + behavior = { + auto_suggestions = false, + enable_cursor_planning_mode = true, + }, + hints = { + enabled = false, + }, + ollama = { + endpoint = "http://127.0.0.1:11434", + model = "phi4:14b", + }, +}) diff --git a/dot_vim/lua/cmp_setup.lua b/dot_vim/lua/cmp_setup.lua new file mode 100644 index 0000000..bbc30f0 --- /dev/null +++ b/dot_vim/lua/cmp_setup.lua @@ -0,0 +1,117 @@ +local cmp = require 'cmp' +local lspkind = require('lspkind') + +--lspkind.init({ +---- disables text annotations +----with_text = false, +----with_text = true, + +---- defines how annotations are shown +---- default: symbol +---- options: 'text', 'text_symbol', 'symbol_text', 'symbol' +--mode = 'symbol', + +---- default symbol map +---- can be either 'default' or 'codicons' +--preset = 'default', + +---- override preset symbols +---- default: {} +----symbol_map = { +----Method = 'm', +----Function = 'f', +----Text = 'txt', +----Constructor = 'new', +----Variable = 'var', +----Class = 'cls', +----Interface = 'iface', +----Module = 'mod', +----Property = 'prop', +----Unit = 'unit', +----Value = 'val', +----Enum = 'enum', +----Keyword = 'kw', +----Snippet = 'sn', +----Color = 'color', +----File = 'file', +----Folder = 'fold', +----EnumMember = 'enum', +----Constant = 'const', +----Struct = 'struct', +----}, +--}) + + +cmp.setup({ + snippet = { + -- REQUIRED - you must specify a snippet engine + expand = function(args) + require('snippy').expand_snippet(args.body) -- For `snippy` users. + -- vim.snippet.expand(args.body) -- For native neovim snippets (Neovim v0.10+) + end, + }, + formatting = { + format = lspkind.cmp_format({ + mode = 'symbol_text', -- show only symbol annotations + maxwidth = 50, -- prevent the popup from showing more than provided characters (e.g 50 will not show more than 50 characters) + -- can also be a function to dynamically calculate max width such as + -- maxwidth = function() return math.floor(0.45 * vim.o.columns) end, + ellipsis_char = '...', -- when popup menu exceed maxwidth, the truncated part would show ellipsis_char instead (must define maxwidth first) + show_labelDetails = true, -- show labelDetails in menu. Disabled by default + + -- The function below will be called before any actual modifications from lspkind + -- so that you can provide more controls on popup customization. (See [#30](https://github.com/onsails/lspkind-nvim/pull/30)) + before = function(entry, vim_item) + return vim_item + end + }) + }, + window = { + -- completion = cmp.config.window.bordered(), + -- documentation = cmp.config.window.bordered(), + }, + preselect = cmp.PreselectMode.None, + mapping = cmp.mapping.preset.insert { + ['<C-d>'] = cmp.mapping.scroll_docs(-4), + ['<C-f>'] = cmp.mapping.scroll_docs(4), + ['<C-Space>'] = cmp.mapping.complete {}, + ["<CR>"] = cmp.mapping({ + i = function(fallback) + if cmp.visible() and cmp.get_active_entry() then + cmp.confirm({ behavior = cmp.ConfirmBehavior.Replace, select = false }) + else + fallback() + end + end, + s = cmp.mapping.confirm({ select = true }), + c = cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Replace, select = true }), + }), + ['<Tab>'] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + --elseif luasnip.expand_or_jumpable() then + --luasnip.expand_or_jump() + else + fallback() + end + end, { 'i', 's' }), + ['<S-Tab>'] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_prev_item() + --elseif luasnip.jumpable(-1) then + --luasnip.jump(-1) + else + fallback() + end + end, { 'i', 's' }), + }, + sources = cmp.config.sources({ + { name = 'nvim_lsp' }, + -- { name = 'vsnip' }, -- For vsnip users. + -- { name = 'luasnip' }, -- For luasnip users. + -- { name = 'ultisnips' }, -- For ultisnips users. + { name = 'snippy' }, -- For snippy users. + --}, { + { name = 'buffer' }, + }) +}) diff --git a/dot_vim/lua/lir_setup.lua b/dot_vim/lua/lir_setup.lua new file mode 100644 index 0000000..e559e37 --- /dev/null +++ b/dot_vim/lua/lir_setup.lua @@ -0,0 +1,88 @@ +local actions = require 'lir.actions' +local mark_actions = require 'lir.mark.actions' +local clipboard_actions = require 'lir.clipboard.actions' + +require 'lir'.setup { + show_hidden_files = false, + ignore = { ".DS_Store" }, -- { ".DS_Store", "node_modules" } etc. + devicons = { + enable = true, + highlight_dirname = true + }, + mappings = { + ['l'] = actions.edit, + ['<CR>'] = actions.edit, + ['<C-s>'] = actions.split, + ['<C-v>'] = actions.vsplit, + ['<C-t>'] = actions.tabedit, + + ['h'] = actions.up, + ['q'] = actions.quit, + + ['K'] = actions.mkdir, + ['N'] = actions.newfile, + ['R'] = actions.rename, + ['@'] = actions.cd, + ['Y'] = actions.yank_path, + ['.'] = actions.toggle_show_hidden, + ['D'] = actions.delete, + + ['J'] = function() + mark_actions.toggle_mark() + vim.cmd('normal! j') + end, + ['C'] = clipboard_actions.copy, + ['X'] = clipboard_actions.cut, + ['P'] = clipboard_actions.paste, + }, + float = { + winblend = 0, + curdir_window = { + enable = false, + highlight_dirname = false + }, + + -- -- You can define a function that returns a table to be passed as the third + -- -- argument of nvim_open_win(). + -- win_opts = function() + -- local width = math.floor(vim.o.columns * 0.8) + -- local height = math.floor(vim.o.lines * 0.8) + -- return { + -- border = { + -- "+", "─", "+", "│", "+", "─", "+", "│", + -- }, + -- width = width, + -- height = height, + -- row = 1, + -- col = math.floor((vim.o.columns - width) / 2), + -- } + -- end, + }, + hide_cursor = true +} + +vim.api.nvim_create_autocmd({ 'FileType' }, { + pattern = { "lir" }, + callback = function() + -- use visual mode + vim.api.nvim_buf_set_keymap( + 0, + "x", + "J", + ':<C-u>lua require"lir.mark.actions".toggle_mark("v")<CR>', + { noremap = true, silent = true } + ) + + -- echo cwd + -- vim.api.nvim_echo({ { vim.fn.expand("%:p"), "Normal" } }, false, {}) + end +}) + +-- custom folder icon +require 'nvim-web-devicons'.set_icon({ + lir_folder_icon = { + icon = "", + color = "#7ebae4", + name = "LirFolderNode" + } +}) diff --git a/dot_vim/lua/lualine_setup.lua b/dot_vim/lua/lualine_setup.lua new file mode 100644 index 0000000..2856362 --- /dev/null +++ b/dot_vim/lua/lualine_setup.lua @@ -0,0 +1,40 @@ +require('lsp-progress').setup({ + +}) + +-- Define a function to check the status and return the corresponding icon +local function get_ollama_status() + local status = require("ollama").status() + + if status == "IDLE" then + return "" + elseif status == "WORKING" then + return "OLLAMA BUSY" + end +end + +local config = { + sections = { + lualine_c = { + 'filename', + function() + return require('lsp-progress').progress() + end, + }, + lualine_x = { + 'filetype', + get_ollama_status, + } + } +} + +--local function ins_left(component) +--table.insert(config.sections.lualine_c, component) +--end + +--ins_left({ +--'lsp_progress', +--display_components = { 'lsp_client_name', { 'percentage' } } +--}) + +require('lualine').setup(config) diff --git a/dot_vim/lua/ollama_setup.lua b/dot_vim/lua/ollama_setup.lua new file mode 100644 index 0000000..c3ae490 --- /dev/null +++ b/dot_vim/lua/ollama_setup.lua @@ -0,0 +1,10 @@ +require("ollama").setup({ + model = "codellama:34b", + url = "http://daystrom.home.0b100.net:11434", + serve = { + on_start = false, + }, +}) + +vim.keymap.set("n", "<Leader>,,", ":<c-u>lua require('ollama').prompt()<cr>", { silent = true }) +vim.keymap.set("v", "<Leader>,,", ":<c-u>lua require('ollama').prompt()<cr>", { silent = true }) diff --git a/dot_vim/lua/symlink_murdock.lua b/dot_vim/lua/symlink_murdock.lua new file mode 100644 index 0000000..b2372b1 --- /dev/null +++ b/dot_vim/lua/symlink_murdock.lua @@ -0,0 +1 @@ +/home/barak/src/gptool/murdock.lua diff --git a/.vim/markdown_cheatsheet.md b/dot_vim/markdown_cheatsheet.md similarity index 100% rename from .vim/markdown_cheatsheet.md rename to dot_vim/markdown_cheatsheet.md diff --git a/dot_vim/nvim.lua b/dot_vim/nvim.lua new file mode 100644 index 0000000..ad0742a --- /dev/null +++ b/dot_vim/nvim.lua @@ -0,0 +1,690 @@ +require('nvim-autopairs').setup {} + +-- nvim_lsp object +local nvim_lsp = require 'lspconfig' +require('cmp_setup') + +-- function to attach completion when setting up lsp +local on_attach = function(client) +end + +-- Set my preferred diagnostic options +local diagnostic_options = { + virtual_text = false, + signs = true, + update_in_insert = false, +} + +--local rust_capabilities = vim.lsp.protocol.make_client_capabilities() +--rust_capabilities.textDocument.completion.completionItem.snippetSupport = true +--rust_capabilities.textDocument.completion.completionItem.resolveSupport = { +--properties = { +--'documentation', +--'detail', +--'additionalTextEdits', +--} +--} + +--local default_capabilities = vim.lsp.protocol.make_client_capabilities() +local default_capabilities = vim.lsp.protocol.make_client_capabilities() +default_capabilities.textDocument.completion.completionItem.snippetSupport = true +default_capabilities.textDocument.completion.completionItem.resolveSupport = { + properties = { + 'documentation', + 'detail', + 'additionalTextEdits', + } +} +default_capabilities = require('cmp_nvim_lsp').default_capabilities(default_capabilities) + +-- Enable rust_analyzer +nvim_lsp.rust_analyzer.setup({ + on_attach = function(client, bufnr) + client.server_capabilities.semanticTokensProvider = nil + end, + capabilities = default_capabilities, + settings = { + ['rust-analyzer'] = { + checkOnSave = { + allFeatures = true, + overrideCommand = { + 'cargo', 'clippy', '--workspace', '--message-format=json', + '--all-targets', '--all-features' + } + }, + runnables = { + extraEnv = { + TORCH_CUDA_VERSION = "cu121", + } + } + } + } +}) +nvim_lsp.gopls.setup({ + on_attach = function(client, bufnr) + --client.server_capabilities.semanticTokensProvider = { + --full = true, + --legend = { + ----tokenTypes = { 'namespace', 'type', 'class', 'enum', 'interface', 'struct', 'typeParameter', 'parameter', 'variable', 'property', 'enumMember', 'event', 'function', 'method', 'macro', 'keyword', 'modifier', 'comment', 'string', 'number', 'regexp', 'operator', 'decorator', }, + --tokenTypes = { 'namespace' }, + --tokenModifiers = { 'declaration', 'definition', 'readonly', 'static', 'deprecated', 'abstract', 'async', 'modification', 'documentation', 'defaultLibrary' }, + --} + --} + end, + capabilities = default_capabilities, + settings = { + gopls = { + semanticTokens = true, + }, + }, +}) + +local function filter(arr, func) + -- Filter in place + -- https://stackoverflow.com/questions/49709998/how-to-filter-a-lua-array-inplace + local new_index = 1 + local size_orig = #arr + for old_index, v in ipairs(arr) do + if func(v, old_index) then + arr[new_index] = v + new_index = new_index + 1 + end + end + for i = new_index, size_orig do arr[i] = nil end +end + +local function pyright_accessed_filter(diagnostic) + -- Allow kwargs to be unused, sometimes you want many functions to take the + -- same arguments but you don't use all the arguments in all the functions, + -- so kwargs is used to suck up all the extras + if diagnostic.message == '"kwargs" is not accessed' then + return false + end + -- Allow variables starting with an underscore + if string.match(diagnostic.message, '"_.+" is not accessed') then + return false + end + + return true +end + +local function pyright_custom_diagnostic(a, params, client_id, c, config) + filter(params.diagnostics, pyright_accessed_filter) + vim.lsp.diagnostic.on_publish_diagnostics(a, params, client_id, c, config) +end + +nvim_lsp.pyright.setup({ + on_attach = function(client, bufnr) + vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with(pyright_custom_diagnostic, diagnostic_options) + end, + capabilities = default_capabilities, +}) +--nvim_lsp.pyright.setup({ on_attach = on_attach }) +--nvim_lsp.pylsp.setup({ +--on_attach = on_attach, +--settings = { +--pylsp = { +--plugins = { +---- formatter options +----black = { enabled = true }, +--autopep8 = { enabled = false }, +--yapf = { enabled = false }, +---- linter options +--pylint = { enabled = false, executable = "pylint" }, +--pyflakes = { enabled = false }, +--pycodestyle = { enabled = false }, +---- type checker +--pylsp_mypy = { enabled = true }, +---- auto-completion options +--jedi_completion = { enabled = false }, +---- import sorting +----pyls_isort = { enabled = true }, +----flake8 = { +----maxLineLength = 100, +----}, +--pycodestyle = { +--maxLineLength = 100, +--}, +----rope_autoimport = { +----enabled = true +----}, +----rope_completion = { +----enabled = true +----}, +--} +--} +--} +--}) + +nvim_lsp.clangd.setup { on_attach = on_attach, capabilities = default_capabilities } +nvim_lsp.ts_ls.setup { + cmd = { "/home/barak/.yarn/bin/typescript-language-server", "--stdio" } +} +nvim_lsp.vuels.setup { + cmd = { "/home/barak/.yarn/bin/vls" }, + capabilities = default_capabilities, +} +nvim_lsp.hls.setup { + cmd = { "haskell-language-server-wrapper", "--lsp" }, + capabilities = default_capabilities, +} + +nvim_lsp.svelte.setup { + cmd = { "/home/barak/.bun/bin/bunx", "svelteserver", "--stdio" }, + capabilities = default_capabilities, +} + +local runtime_path = vim.split(package.path, ';') +table.insert(runtime_path, "lua/?.lua") +table.insert(runtime_path, "lua/?/init.lua") + +nvim_lsp.lua_ls.setup { + capabilities = default_capabilities, + settings = { + Lua = { + runtime = { + -- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim) + version = 'LuaJIT', + -- Setup your lua path + path = runtime_path, + }, + diagnostics = { + -- Get the language server to recognize the `vim` global + globals = { 'vim' }, + }, + workspace = { + -- Make the server aware of Neovim runtime files + library = vim.api.nvim_get_runtime_file("", true), + }, + -- Do not send telemetry data containing a randomized but unique identifier + telemetry = { + enable = false, + }, + }, + }, +} + + +require('go').setup({ + iferr_vertical_shift = 2 +}) + +--require('telescope').load_extension('goimpl') + +function org_imports(wait_ms) + local params = vim.lsp.util.make_range_params() + + params.context = { only = { "source.organizeImports" } } + + local result = vim.lsp.buf_request_sync(0, "textDocument/codeAction", params, wait_ms) + + for _, res in pairs(result or {}) do + for _, r in pairs(res.result or {}) do + if r.edit then + vim.lsp.util.apply_workspace_edit(r.edit, "utf-8") + else + vim.lsp.buf.execute_command(r.command) + end + end + end +end + +-- register linters +local luaformat = require("efmls-configs.formatters.lua_format") +local rustfmt = require('efmls-configs.formatters.rustfmt') +local black = require('efmls-configs.formatters.black') +local mypy = require('efmls-configs.linters.mypy') +local eslint = require('efmls-configs.linters.eslint') +local isort = require('efmls-configs.formatters.isort') +local languages = { + typescript = { eslint }, + lua = { luaformat }, + python = { black, mypy, isort }, + rust = { rustfmt }, +} + +local efmls_config = { + filetypes = vim.tbl_keys(languages), + settings = { + rootMarkers = { '.git/' }, + languages = languages, + }, + init_options = { + documentFormatting = true, + documentRangeFormatting = true, + }, +} + +nvim_lsp.efm.setup(vim.tbl_extend('force', efmls_config, { + -- Pass your custom lsp config below like on_attach and capabilities + on_attach = on_attach, + capabilities = default_capabilities, +})) + +-- Enable diagnostics +vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with( + vim.lsp.diagnostic.on_publish_diagnostics, + diagnostic_options +) + +--signature_cfg = { +--hint_enable = true, +--hint_prefix = "% ", +--handler_opts = { +--border = "none" +--}, +--} + +--require'lsp_signature'.on_attach(signature_cfg) + +local saga_cfg = { + code_action_prompt = { + enable = false, + sign = false, + virtual_text = false, + }, +} +-- require'lspsaga'.init_lsp_saga(saga_cfg) + +local t = function(str) + return vim.api.nvim_replace_termcodes(str, true, true, true) +end + +local check_back_space = function() + local col = vim.fn.col('.') - 1 + if col == 0 or vim.fn.getline('.'):sub(col, col):match('%s') then + return true + else + return false + end +end + +-- Use (s-)tab to: +--- move to prev/next item in completion menuone +--- jump to prev/next snippet's placeholder +--_G.tab_complete = function() +--if vim.fn.pumvisible() == 1 then +--return t "<C-n>" +--elseif check_back_space() then +--return t "<Tab>" +--else +--return vim.fn['compe#complete']() +--end +--end + +--_G.s_tab_complete = function() +--if vim.fn.pumvisible() == 1 then +--return t "<C-p>" +--else +--return t "<S-Tab>" +--end +--end + +--vim.api.nvim_set_keymap("i", "<Tab>", "v:lua.tab_complete()", { expr = true }) +--vim.api.nvim_set_keymap("s", "<Tab>", "v:lua.tab_complete()", { expr = true }) +--vim.api.nvim_set_keymap("i", "<S-Tab>", "v:lua.s_tab_complete()", { expr = true }) +--vim.api.nvim_set_keymap("s", "<S-Tab>", "v:lua.s_tab_complete()", { expr = true }) + +--require('rust-tools').setup({ +--}) + +require('trouble').setup { + mode = "document_diagnostics", + auto_close = true, + action_keys = { -- key mappings for actions in the trouble list + -- map to {} to remove a mapping, for example: + -- close = {}, + --close = "q", -- close the list + --cancel = "<esc>", -- cancel the preview and get back to your last window / buffer / cursor + --refresh = "r", -- manually refresh + jump = { "o", "<tab>" }, -- jump to the diagnostic or open / close folds + --open_split = { "<c-x>" }, -- open buffer in new split + --open_vsplit = { "<c-v>" }, -- open buffer in new vsplit + open_tab = {}, -- open buffer in new tab + jump_close = { "<cr>" }, -- jump to the diagnostic and close the list + toggle_mode = "m", -- toggle between "workspace" and "document" diagnostics mode + toggle_preview = "P", -- toggle auto_preview + hover = "K", -- opens a small popup with the full multiline message + preview = "p", -- preview the diagnostic location + close_folds = { "zM", "zm" }, -- close all folds + open_folds = { "zR", "zr" }, -- open all folds + toggle_fold = { "zA", "za" }, -- toggle fold of current file + previous = "k", -- previous item + next = "j" -- next item + }, +} + +local trouble_telescope = require("trouble.sources.telescope") +local builtin = require 'telescope.builtin' + +local sendtoqf = function(loc) + local actions = require('telescope.actions') + actions.send_to_qflist(loc) + builtin.quickfix({ initial_mode = "normal" }) +end + +require('telescope').setup { + defaults = { + mappings = { + n = { + ["q"] = require('telescope.actions').close, + ["ff"] = sendtoqf, + ["<c-t>"] = trouble_telescope.open, + }, + i = { + ["<c-t>"] = trouble_telescope.open, + ["ff"] = require('telescope.actions').send_to_qflist, + }, + }, + path_display = { "smart", "shorten" }, + dynamic_preview_title = true, + }, + pickers = { + goimpl = { + theme = "ivy", + layout_config = { + height = 10, + }, + }, + lsp_code_actions = { + theme = "ivy", + layout_config = { + height = 10, + }, + }, + lsp_range_code_actions = { + theme = "ivy", + layout_config = { + height = 10, + }, + }, + lsp_references = { + theme = "ivy", + layout_config = { + height = 15, + }, + }, + quickfix = { + theme = "ivy", + layout_config = { + height = 15, + }, + initial_mode = "normal", + }, + git_files = { + theme = "ivy", + }, + grep_string = { + theme = "ivy", + layout_config = { + height = 15, + }, + initial_mode = "normal", + }, + live_grep = { + theme = "ivy", + layout_config = { + height = 15, + }, + }, + buffers = { + theme = "ivy", + layout_config = { + height = 15, + }, + ignore_current_buffer = true, + initial_mode = "normal", + }, + }, +} + + +-- +-- Treesitter +-- + +require 'nvim-treesitter.configs'.setup({ + -- One of "all", "maintained" (parsers with maintainers), or a list of languages + ensure_installed = { + "c", + "cpp", + "css", + "cue", + "dockerfile", + "fish", + "go", + "gomod", + "gosum", + "gotmpl", + "haskell", + "html", + "javascript", + "json", + "lua", + "make", + "markdown", + "proto", + "python", + "query", + "rust", + "starlark", + "terraform", + "toml", + "tsx", + "typescript", + "vim", + "yaml", + }, + + -- Install languages synchronously (only applied to `ensure_installed`) + sync_install = false, + + -- List of parsers to ignore installing + -- ignore_install = { "javascript" }, + + highlight = { + -- `false` will disable the whole extension + enable = true, + + -- list of language that will be disabled + -- disable = { "c", "rust" }, + + -- Setting this to true will run `:h syntax` and tree-sitter at the same time. + -- Set this to `true` if you depend on 'syntax' being enabled (like for indentation). + -- Using this option may slow down your editor, and you may see some duplicate highlights. + -- Instead of true it can also be a list of languages + additional_vim_regex_highlighting = false, + --custom_captures = { + --["generic_type_param"] = "TSCGenericTypeParam", + --["type_identifier"] = "TSCGenericTypeParam", + --}, + }, + + indent = { + enable = true + }, + + playground = { + enable = true, + disable = {}, + updatetime = 25, -- Debounced time for highlighting nodes in the playground from source code + persist_queries = false, -- Whether the query persists across vim sessions + keybindings = { + toggle_query_editor = 'o', + toggle_hl_groups = 'i', + toggle_injected_languages = 't', + toggle_anonymous_nodes = 'a', + toggle_language_display = 'I', + focus_language = 'f', + unfocus_language = 'F', + update = 'R', + goto_node = '<cr>', + show_help = '?', + }, + } +}) + +require "neogen".setup {} + +require('leap').set_default_keymaps() +require("flit").setup {} + +require('snippy').setup({ + mappings = { + is = { + [',,'] = 'expand_or_advance', + [',.'] = 'previous', + }, + nx = { + ['<leader>x'] = 'cut_text', + }, + }, +}) + + +--- +--- My own "where" clause generator for Rust +--- +function string.insert(str1, str2, pos) + return str1:sub(1, pos) .. str2 .. str1:sub(pos + 1) +end + +function string.split(s, delimiter) + local result = {}; + for match in (s .. delimiter):gmatch("(.-)" .. delimiter) do + table.insert(result, match); + end + return result; +end + +local function rust_whereify_line(line, var_name) + if string.find(line, "fn") == nil then + return nil + end + + local paren = string.find(line, "%(") + if paren == nil then return nil end + + local open_generic = string.find(line, "<") + if open_generic ~= nil then + if open_generic < paren then + -- TODO(barakmich): it's already generic, we need to do something for that + -- probably a different function + return nil + end + -- just continue otherwise + end + + local whitespace = string.match(line, "^(%s*)") + + local generic = "<" .. var_name .. ">" + local out = string.insert(line, generic, paren - 1) + + local brace = string.find(out, "%{") + if brace == nil then brace = string.len(out) end + + out = string.insert(out, "\n" .. whitespace .. "where\n" .. whitespace .. " " .. var_name .. ": ,\n" .. whitespace, + brace - 1) + + return string.split(out, "\n") +end + +function rust_where_at_line() + local var_name = vim.fn.input("Variable: ") + local lineNum, col = unpack(vim.api.nvim_win_get_cursor(0)) + local replacements = rust_whereify_line(vim.api.nvim_get_current_line(), var_name) + vim.api.nvim_buf_set_lines(0, lineNum - 1, lineNum, false, replacements) + vim.api.nvim_win_set_cursor(0, { lineNum + 2, 4 }) +end + +function neogen_dwim() + local table = { + ["function_declaration"] = "func", + ["function_definition"] = "func", + ["function_item"] = "func", + ["function_signature_item"] = "func", + ["struct_item"] = "class", + ["trait_item"] = "class", + ["package_clause"] = "type", + ["const_declaration"] = "type", + ["var_declaration"] = "type", + ["class_definition"] = "class", + } + + local ts_utils = require 'nvim-treesitter.ts_utils' + local current_node = ts_utils.get_node_at_cursor() + while (current_node) do + local v = table[current_node:type()] + if v then + require('neogen').generate({ type = v }) + break + else + current_node = current_node:parent() + end + end +end + +require("hoversplit").setup({}) + +require("quicker").setup() + +vim.keymap.set("n", "<leader>q", function() + require("quicker").toggle() +end, { + desc = "Toggle quickfix", +}) + +--require("murdock") +--require("ollama_setup") +--require("gen_setup") +require("lir_setup") +require("lualine_setup") +--require("avante_setup") +--require("gen").setup({ +--model = "gemma3:12b-it-qat", +--init = nil, +--}) +--require("smear_cursor").setup({ +--stiffness = 0.8, +--trailing_stiffness = 0.5, +--distance_stop_animating= 0.5, +--}) + +require("parrot").setup({ + providers = { + ollama = {} + }, + chat_user_prefix = "Chat: ", + llm_prefix = "LLM: ", + hooks = { + CompleteFullContext = function(prt, params) + local template = [[ + I have the following code from {{filename}}: + + ```{{filetype}} + {{filecontent}} + ``` + + Please look at the following section specifically: + ```{{filetype}} + {{selection}} + ``` + + Goal: {{command}} + + Respond just with the snippet of code that should be inserted. + + + ]] + local model_obj = prt.get_model("command") + prt.Prompt(params, prt.ui.Target.append, model_obj, nil, template) + end, + }, +}) + +vim.diagnostic.config({ + virtual_text = false, + signs = true, + update_in_insert = false, + underline = true, +}) diff --git a/.vim/plugin/AppleT.vim b/dot_vim/plugin/AppleT.vim similarity index 100% rename from .vim/plugin/AppleT.vim rename to dot_vim/plugin/AppleT.vim diff --git a/.vim/plugin/a.vim b/dot_vim/plugin/a.vim similarity index 100% rename from .vim/plugin/a.vim rename to dot_vim/plugin/a.vim diff --git a/.vim/plugin/bclose.vim b/dot_vim/plugin/bclose.vim similarity index 93% rename from .vim/plugin/bclose.vim rename to dot_vim/plugin/bclose.vim index 3769df4..3c1bb19 100644 --- a/.vim/plugin/bclose.vim +++ b/dot_vim/plugin/bclose.vim @@ -1,3 +1,12 @@ +if exists("loaded_bclosePlugin") + finish +endif +if (v:progname == "ex") + finish +endif +let loaded_bclosePlugin = 1 + + "here is a more exotic version of my original Kwbd script "delete the buffer; keep windows; create a scratch buffer if no buffers left function s:Kwbd(kwbdStage) diff --git a/.vim/plugin/camelcasemotion.vim b/dot_vim/plugin/camelcasemotion.vim similarity index 100% rename from .vim/plugin/camelcasemotion.vim rename to dot_vim/plugin/camelcasemotion.vim diff --git a/.vim/plugin/cocoa.vim b/dot_vim/plugin/cocoa.vim similarity index 100% rename from .vim/plugin/cocoa.vim rename to dot_vim/plugin/cocoa.vim diff --git a/.vim/plugin/cscope_maps.vim b/dot_vim/plugin/cscope_maps.vim similarity index 100% rename from .vim/plugin/cscope_maps.vim rename to dot_vim/plugin/cscope_maps.vim diff --git a/.vim/plugin/cscopemenu.vim b/dot_vim/plugin/cscopemenu.vim similarity index 100% rename from .vim/plugin/cscopemenu.vim rename to dot_vim/plugin/cscopemenu.vim diff --git a/.vim/plugin/genutils.vim b/dot_vim/plugin/genutils.vim similarity index 100% rename from .vim/plugin/genutils.vim rename to dot_vim/plugin/genutils.vim diff --git a/.vim/plugin/gotags.vim b/dot_vim/plugin/gotags.vim similarity index 100% rename from .vim/plugin/gotags.vim rename to dot_vim/plugin/gotags.vim diff --git a/.vim/plugin/matchit.vim b/dot_vim/plugin/matchit.vim similarity index 100% rename from .vim/plugin/matchit.vim rename to dot_vim/plugin/matchit.vim diff --git a/.vim/plugin/vcsbzr.vim b/dot_vim/plugin/vcsbzr.vim similarity index 100% rename from .vim/plugin/vcsbzr.vim rename to dot_vim/plugin/vcsbzr.vim diff --git a/.vim/plugin/vcscommand.vim b/dot_vim/plugin/vcscommand.vim similarity index 100% rename from .vim/plugin/vcscommand.vim rename to dot_vim/plugin/vcscommand.vim diff --git a/.vim/plugin/vcscvs.vim b/dot_vim/plugin/vcscvs.vim similarity index 100% rename from .vim/plugin/vcscvs.vim rename to dot_vim/plugin/vcscvs.vim diff --git a/.vim/plugin/vcsgit.vim b/dot_vim/plugin/vcsgit.vim similarity index 100% rename from .vim/plugin/vcsgit.vim rename to dot_vim/plugin/vcsgit.vim diff --git a/.vim/plugin/vcshg.vim b/dot_vim/plugin/vcshg.vim similarity index 100% rename from .vim/plugin/vcshg.vim rename to dot_vim/plugin/vcshg.vim diff --git a/.vim/plugin/vcssvk.vim b/dot_vim/plugin/vcssvk.vim similarity index 100% rename from .vim/plugin/vcssvk.vim rename to dot_vim/plugin/vcssvk.vim diff --git a/.vim/plugin/vcssvn.vim b/dot_vim/plugin/vcssvn.vim similarity index 100% rename from .vim/plugin/vcssvn.vim rename to dot_vim/plugin/vcssvn.vim diff --git a/.vim/plugin/vim-scmdiff/NEWS b/dot_vim/plugin/vim-scmdiff/NEWS similarity index 100% rename from .vim/plugin/vim-scmdiff/NEWS rename to dot_vim/plugin/vim-scmdiff/NEWS diff --git a/.vim/plugin/vim-scmdiff/README b/dot_vim/plugin/vim-scmdiff/README similarity index 100% rename from .vim/plugin/vim-scmdiff/README rename to dot_vim/plugin/vim-scmdiff/README diff --git a/.vim/plugin/vim-scmdiff/TODO b/dot_vim/plugin/vim-scmdiff/TODO similarity index 100% rename from .vim/plugin/vim-scmdiff/TODO rename to dot_vim/plugin/vim-scmdiff/TODO diff --git a/.vim/plugin/vim-scmdiff/scmdiff.vim b/dot_vim/plugin/vim-scmdiff/scmdiff.vim similarity index 100% rename from .vim/plugin/vim-scmdiff/scmdiff.vim rename to dot_vim/plugin/vim-scmdiff/scmdiff.vim diff --git a/dot_vim/skeletons/svelte.skel b/dot_vim/skeletons/svelte.skel new file mode 100644 index 0000000..4f2a325 --- /dev/null +++ b/dot_vim/skeletons/svelte.skel @@ -0,0 +1,9 @@ +<script lang="ts"> + import { onMount, onDestroy } from "svelte"; +</script> + +<div> +</div> + +<style> +</style> diff --git a/dot_vim/skeletons/vue.skel b/dot_vim/skeletons/vue.skel new file mode 100644 index 0000000..8310166 --- /dev/null +++ b/dot_vim/skeletons/vue.skel @@ -0,0 +1,19 @@ +<template> + +</template> + +<script> +//import header from './header.vue' + +export default { + name: 'components', + data () { + return { + msg: 'Hello World' + } + } +} +</script> + +<style> +</style> diff --git a/.vim/syntax/c.vim b/dot_vim/syntax/c.vim similarity index 100% rename from .vim/syntax/c.vim rename to dot_vim/syntax/c.vim diff --git a/.vim/syntax/cvsannotate.vim b/dot_vim/syntax/cvsannotate.vim similarity index 100% rename from .vim/syntax/cvsannotate.vim rename to dot_vim/syntax/cvsannotate.vim diff --git a/.vim/syntax/gitannotate.vim b/dot_vim/syntax/gitannotate.vim similarity index 100% rename from .vim/syntax/gitannotate.vim rename to dot_vim/syntax/gitannotate.vim diff --git a/.vim/syntax/haskell.vim b/dot_vim/syntax/haskell.vim similarity index 100% rename from .vim/syntax/haskell.vim rename to dot_vim/syntax/haskell.vim diff --git a/.vim/syntax/hgannotate.vim b/dot_vim/syntax/hgannotate.vim similarity index 100% rename from .vim/syntax/hgannotate.vim rename to dot_vim/syntax/hgannotate.vim diff --git a/.vim/syntax/java.vim b/dot_vim/syntax/java.vim similarity index 100% rename from .vim/syntax/java.vim rename to dot_vim/syntax/java.vim diff --git a/.vim/syntax/javascript.vim b/dot_vim/syntax/javascript.vim similarity index 100% rename from .vim/syntax/javascript.vim rename to dot_vim/syntax/javascript.vim diff --git a/.vim/syntax/lilypond-words b/dot_vim/syntax/lilypond-words similarity index 100% rename from .vim/syntax/lilypond-words rename to dot_vim/syntax/lilypond-words diff --git a/.vim/syntax/lilypond-words.vim b/dot_vim/syntax/lilypond-words.vim similarity index 100% rename from .vim/syntax/lilypond-words.vim rename to dot_vim/syntax/lilypond-words.vim diff --git a/.vim/syntax/lilypond.vim b/dot_vim/syntax/lilypond.vim similarity index 100% rename from .vim/syntax/lilypond.vim rename to dot_vim/syntax/lilypond.vim diff --git a/.vim/syntax/mako.vim b/dot_vim/syntax/mako.vim similarity index 100% rename from .vim/syntax/mako.vim rename to dot_vim/syntax/mako.vim diff --git a/.vim/syntax/mediawiki.vim b/dot_vim/syntax/mediawiki.vim similarity index 100% rename from .vim/syntax/mediawiki.vim rename to dot_vim/syntax/mediawiki.vim diff --git a/.vim/syntax/mkd.vim b/dot_vim/syntax/mkd.vim similarity index 100% rename from .vim/syntax/mkd.vim rename to dot_vim/syntax/mkd.vim diff --git a/.vim/syntax/motd.vim b/dot_vim/syntax/motd.vim similarity index 100% rename from .vim/syntax/motd.vim rename to dot_vim/syntax/motd.vim diff --git a/.vim/syntax/nvpscript.vim b/dot_vim/syntax/nvpscript.vim similarity index 100% rename from .vim/syntax/nvpscript.vim rename to dot_vim/syntax/nvpscript.vim diff --git a/.vim/syntax/proto.vim b/dot_vim/syntax/proto.vim similarity index 100% rename from .vim/syntax/proto.vim rename to dot_vim/syntax/proto.vim diff --git a/.vim/syntax/scala.vim b/dot_vim/syntax/scala.vim similarity index 100% rename from .vim/syntax/scala.vim rename to dot_vim/syntax/scala.vim diff --git a/.vim/syntax/snippet.vim b/dot_vim/syntax/snippet.vim similarity index 100% rename from .vim/syntax/snippet.vim rename to dot_vim/syntax/snippet.vim diff --git a/.vim/syntax/svkannotate.vim b/dot_vim/syntax/svkannotate.vim similarity index 100% rename from .vim/syntax/svkannotate.vim rename to dot_vim/syntax/svkannotate.vim diff --git a/.vim/syntax/svnannotate.vim b/dot_vim/syntax/svnannotate.vim similarity index 100% rename from .vim/syntax/svnannotate.vim rename to dot_vim/syntax/svnannotate.vim diff --git a/.vim/syntax/vcscommit.vim b/dot_vim/syntax/vcscommit.vim similarity index 100% rename from .vim/syntax/vcscommit.vim rename to dot_vim/syntax/vcscommit.vim diff --git a/.vim/syntax_checkers/go/golintc.vim b/dot_vim/syntax_checkers/go/golintc.vim similarity index 100% rename from .vim/syntax_checkers/go/golintc.vim rename to dot_vim/syntax_checkers/go/golintc.vim diff --git a/.vim/syntax_checkers/go/gonyet.vim b/dot_vim/syntax_checkers/go/gonyet.vim similarity index 100% rename from .vim/syntax_checkers/go/gonyet.vim rename to dot_vim/syntax_checkers/go/gonyet.vim diff --git a/.vim/syntax_checkers/go/govetshadow.vim b/dot_vim/syntax_checkers/go/govetshadow.vim similarity index 100% rename from .vim/syntax_checkers/go/govetshadow.vim rename to dot_vim/syntax_checkers/go/govetshadow.vim diff --git a/.vim/tabbar.vim b/dot_vim/tabbar.vim similarity index 100% rename from .vim/tabbar.vim rename to dot_vim/tabbar.vim diff --git a/.vim/usnips/c.snippets b/dot_vim/usnips/c.snippets similarity index 100% rename from .vim/usnips/c.snippets rename to dot_vim/usnips/c.snippets diff --git a/.vim/usnips/cpp.snippets b/dot_vim/usnips/cpp.snippets similarity index 100% rename from .vim/usnips/cpp.snippets rename to dot_vim/usnips/cpp.snippets diff --git a/dot_vim/usnips/go.snippets b/dot_vim/usnips/go.snippets new file mode 100644 index 0000000..ddf15a8 --- /dev/null +++ b/dot_vim/usnips/go.snippets @@ -0,0 +1,565 @@ +# Snippets for Go + +priority -10 + +# shorthand variable declaration +snippet : "v := value" +${1} := ${0} +endsnippet + +# anonymous function +snippet anon "fn := func() { ... }" +${1:fn} := func() { + ${2:${VISUAL}} +} +${0} +endsnippet + +# append +snippet ap "append(slice, value)" +append(${1:slice}, ${0:value}) +endsnippet + +# append assignment +snippet ap= "a = append(a, value)" +${1:slice} = append($1, ${0:value}) +endsnippet + +# break +snippet br "break" +break +endsnippet + +# channel +snippet ch "chan Type" +chan ${0:int} +endsnippet + +# case +snippet case "case ...:" +case ${1:value}: + ${0:${VISUAL}} +endsnippet + +# constant +snippet con "const XXX Type = ..." +const ${1:NAME} ${2:Type} = ${0:0} +endsnippet + +# constants +snippet cons "const ( ... )" +const ( + ${1:NAME} ${2:Type} = ${3:value} + ${0} +) +endsnippet + +# constants with iota +snippet iota "const ( ... = iota )" +const ( + ${1:NAME} ${2:Type} = iota + ${0} +) +endsnippet + +# continue +snippet cn "continue" +continue +endsnippet + +# default case +snippet default "default: ..." +default: + ${0:${VISUAL}} +endsnippet + +# defer +snippet df "defer someFunction()" +defer ${1:func}(${2}) +${0} +endsnippet + +snippet def "defer func() { ... }" +defer func() { + ${0:${VISUAL}} +}() +endsnippet + +# defer recover +snippet defr +defer func() { + if err := recover(); err != nil { + ${0:${VISUAL}} + } +}() +endsnippet + +# gpl +snippet gpl +/* +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation; either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, see <http://www.gnu.org/licenses/>. +* +* Copyright (C) ${1:Author}, `!v strftime("%Y")` +*/ +${0} +endsnippet + +# import +snippet import "import ( ... )" +import ( + "${1:package}" +) +endsnippet + +# full interface snippet +snippet interface "interface I { ... }" +type ${1:Interface} interface { + ${2:/* TODO: add methods */} +} +endsnippet + +# if condition +snippet if "if ... { ... }" +if ${1:condition} { + ${0:${VISUAL}} +} +endsnippet + +# else snippet +snippet else +else { + ${0:${VISUAL}} +} +endsnippet + +# if inline error +snippet ife "If with inline error" +if err := ${1:condition}; err != nil { + ${0:${VISUAL}} +} +endsnippet + +snippet ew "errors.Wrap" +errors.Wrap(${1:err}, "${2:message}") +endsnippet + +snippet ewf "errors.Wrapf" +errors.Wrapf(${1:err}, "${2:message %v}", ${3:args...}) +endsnippet + +# error snippet +snippet errn "Error return" !b +if err != nil { + return err +} +${0} +endsnippet + +snippet errnw "Error return wrap" !b +if err != nil { + return errors.Wrap(err, "${1:message}") +} +${0} +endsnippet + +snippet errnwf "Error return wrapf" !b +if err != nil { + return errors.Wrapf(err, "${1:message %v}", ${2:args...}) +} +${0} +endsnippet + +# error log snippet +snippet errl "Error with log.Fatal(err)" !b +if err != nil { + log.Fatal(err) +} +${0} +endsnippet + +# error multiple return +snippet errn, "Error return with two return values" !b +if err != nil { + return ${1:nil}, ${2:err} +} +${0} +endsnippet + +snippet errn,w "Error return wrap with two return values" !b +if err != nil { + return nil, errors.Wrap(err, "${1:message}") +} +${0} +endsnippet + +snippet errn,wf "Error return wrapf with two return values" !b +if err != nil { + return nil, errors.Wrapf(err, "${1:message %v}", ${2:args...}) +} +${0} +endsnippet + +# error panic +snippet errp "Error panic" !b +if err != nil { + panic(${1}) +} +${0} +endsnippet + +# error test +snippet errt "Error test fatal " !b +if err != nil { + t.Fatal(err) +} +${0} +endsnippet + +# error handle +snippet errh "Error handle and return" !b +if err != nil { + ${1} + return +} +${0} +endsnippet + +# json field tag +snippet json "\`json:key\`" +\`json:"${1:`!v go#util#snippetcase(matchstr(getline("."), '\w\+'))`}"\` +endsnippet + +# yaml field tag +snippet yaml "\`yaml:key\`" +\`yaml:"${1:`!v go#util#snippetcase(matchstr(getline("."), '\w\+'))`}"\` +endsnippet + +# fallthrough +snippet ft "fallthrough" +fallthrough +endsnippet + +# for loop +snippet for "for ... { ... }" +for ${1} { + ${0:${VISUAL}} +} +endsnippet + +# for integer loop +snippet fori "for 0..N-1 { ... }" +for ${1:i} := 0; $1 < ${2:N}; $1++ { + ${0:${VISUAL}} +} +endsnippet + +# for range loop +snippet forr "for k, v := range items { ... }" +for ${2:k}, ${3:v} := range ${1} { + ${0:${VISUAL}} +} +endsnippet + +snippet forsel "for select" +for { + select { + case ${2:${1:result} := }<- ${3:channel}: + ${0} + } +} +endsnippet + +snippet selc "select case" !b +case ${1:${2:var} := }<-${3:channel}: + ${0} +endsnippet + +# function +snippet func "func Function(...) [error] { ... }" +func ${1:name}(${2:params})${3/(.+)/ /}`!p opening_par(snip, 3)`$3`!p closing_par(snip, 3)` { + ${0:${VISUAL}} +} +endsnippet + +# Fmt Printf debug +snippet ff "fmt.Printf(...)" +fmt.Printf("$1 = %+v\n", ${1:${VISUAL}}) +endsnippet + +# Fmt Printf debug with hash +snippet ffh "fmt.Printf(#...) hash" +fmt.Printf("$1 = %#v\n", ${1:${VISUAL}}) +endsnippet + +# Fmt Println debug +snippet fn "fmt.Println(...)" +fmt.Println("${1:${VISUAL}}") +endsnippet + +# Fmt Errorf debug +snippet fe "fmt.Errorf(...)" +fmt.Errorf("${1:${VISUAL}}") +endsnippet + +# Fmt Errorf wrap +snippet few "fmt.Errorf(%w, err)" +fmt.Errorf("${1:message}: %w", ${2:${VISUAL:err}}) +endsnippet + +# Fmt Errorf wrap and return +snippet errnfw "Error return fmt.Errorf(%w, err)" !b +if ${1:${VISUAL:err}} != nil { + return fmt.Errorf("${2:message}: %w", $1) +} +endsnippet + +# log printf +snippet lf "log.Printf(...)" +log.Printf("${1:${VISUAL}} = %+v\n", $1) +endsnippet + +# log println +snippet ln "log.Println(...)" +log.Println("${1:${VISUAL}}") +endsnippet + +# make +snippet make "make(Type, size)" +make(${1:[]string}, ${2:0})${0} +endsnippet + +# map +snippet map "map[Type]Type" +map[${1:string}]${0:int} +endsnippet + +# main() +snippet main "func main() { ... }" +func main() { + ${0:${VISUAL}} +} +endsnippet + +# method +snippet meth "func (self Type) Method(...) [error] { ... }" +func (${1:receiver} ${2:type}) ${3:name}(${4:params})${5/(.+)/ /}`!p opening_par(snip, 5)`$5`!p closing_par(snip, 5)` { + ${0:${VISUAL}} +} +endsnippet + +# ok +snippet ok "if !ok { ... }" +if !ok { + ${0:${VISUAL}} +} +endsnippet + +# package +snippet package "package ..." +// Package $1 provides ${2:...} +package ${1:main} +${0} +endsnippet + +# panic +snippet pn "panic()" +panic("${0:msg}") +endsnippet + +# return +snippet rt "return" +return ${0:${VISUAL}} +endsnippet + +# select +snippet select "select { case a := <-chan: ... }" +select { +case ${1:v1} := <-${2:chan1}: + ${0} +} +endsnippet + +# struct +snippet st "type T struct { ... }" +type ${1:Type} struct { + ${0} +} +endsnippet + +# switch +snippet switch "switch x { ... }" +switch ${1:var} { +case ${2:value1}: + ${0} +} +endsnippet + +snippet tswitch "type switch x { ... }" +switch ${2:$1 := }${1:v}.(type) { + ${0} +} +endsnippet + +# sprintf +snippet sp "fmt.Sprintf(...)" +fmt.Sprintf("%${1:s}", ${2:var}) +endsnippet + +# goroutine named function +snippet go "go someFunc(...)" +go ${1:funcName}(${0}) +endsnippet + +# goroutine anonymous function +snippet gof "go func() { ... }()" +go func() { + ${1:${VISUAL}} +}() +${0} +endsnippet + +# test function +snippet test "func TestXYZ(t *testing.T) { ... }" +func Test${1:Function}(t *testing.T) { + ${0:${VISUAL}} +} +endsnippet + +# test t.Run +snippet tr "t.Run(XYZ, func(t *testing.T){ ... })" +t.Run("${0}", func(t *testing.T){ + +}) +endsnippet + +# test table snippet +snippet tt +var tests = []struct { + name string + expected string + given string +}{ + {"${1}", "${2}", "${3}",}, +} +for _, tt := range tests { + tt := tt + t.Run(tt.name, func(t *testing.T){ + actual := ${0:${VISUAL}}(tt.given) + if actual != tt.expected { + t.Errorf("$0(%s): expected %s, actual %s", tt.given, tt.expected, actual) + } + + }) +} +endsnippet + + +snippet hf "http.HandlerFunc" +func ${1:handler}(w http.ResponseWriter, r *http.Request) { + ${0:fmt.Fprintf(w, "hello world")} +} +endsnippet + +snippet hhf "mux.HandleFunc" !b +${1:http}.HandleFunc("${2:/}", func(w http.ResponseWriter, r *http.Request) { + ${0:fmt.Fprintf(w, "hello world")} +}) +endsnippet + +# quick test server +snippet tsrv "httptest.NewServer" +ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + fmt.Fprintln(w, ${1:`response`}) +})) +defer ts.Close() + +${0:someUrl} = ts.URL +endsnippet + +# test error handling +snippet ter "if err != nil { t.Errorf(...) }" +if err != nil { + t.Errorf("${0:message}") +} +endsnippet + +# test fatal error +snippet terf "if err != nil { t.Fatalf(...) }" +if err != nil { + t.Fatalf("${0:message}") +} +endsnippet + +snippet example "func ExampleXYZ() { ... }" +func Example${1:Method}() { + ${0:${VISUAL}} + // Output: +} +endsnippet + +snippet benchmark "func BenchmarkXYZ(b *testing.B) { ... }" +func Benchmark${1:Method}(b *testing.B) { + for i := 0; i < b.N; i++ { + ${0:${VISUAL}} + } +} +endsnippet + +# variable declaration +snippet var "var x Type [= ...]" +var ${1:x} ${2:Type}${3: = ${0:value}} +endsnippet + +# variables declaration +snippet vars "var ( ... )" +var ( + ${1:x} ${2:Type}${3: = ${0:value}} +) +endsnippet + +# equals fails the test if exp is not equal to act. +snippet eq "equals: test two identifiers with DeepEqual" +if !reflect.DeepEqual(${1:expected}, ${2:actual}) { + _, file, line, _ := runtime.Caller(0) + fmt.Printf("%s:%d:\n\n\texp: %#v\n\n\tgot: %#v\n\n", filepath.Base(file), line, $1, $2) + t.FailNow() +} +endsnippet + +global !p + +import re + +# Automatically wrap return types with parentheses + +def return_values(s): + # remove everything wrapped in parentheses + s = re.sub("\(.*?\)|\([^)]*$", "", s) + return len(s.split(",")) + +def opening_par(snip, pos): + if return_values(t[pos]) > 1 and not t[pos].startswith("("): + snip.rv = "(" + else: + snip.rv = "" + +def closing_par(snip, pos): + if return_values(t[pos]) > 1: + snip.rv = ")" + else: + snip.rv = "" + +endglobal + +# vim:ft=snippets: diff --git a/dot_vimrc b/dot_vimrc new file mode 100644 index 0000000..e9a7e36 --- /dev/null +++ b/dot_vimrc @@ -0,0 +1,555 @@ +" ___ _ _ _ +" | _ ) __ _ _ _ __ _| |_( )___ __ _(_)_ __ _ _ __ +" | _ \/ _` | '_/ _` | / //(_-< \ V / | ' \| '_/ _| +" |___/\__,_|_| \__,_|_\_\ /__/ (_)_/|_|_|_|_|_| \__| +" +" +" ** BASIC EDITOR SETTINGS ** +" +" First, we are vim, not vi, so start as many others do with +set nocompatible + +" Allow background buffers. Super important for various tab modes. +set hidden + +" Set default spacing. +" Hard tabs should show as 8. +set ts=8 +" Soft tabs should be 2 wide, and we should use spaces. +" (This is the Googler in me. I've converted to spaces over +" the years because it really is more consistent.) +set softtabstop=2 +set shiftwidth=2 +set expandtab +" I like comma instead of slash, but that probably comes from playing +" Nethack and Angband +let mapleader = "," +let maplocalleader = "\\" + +" Set 'smart' things in Vim +" Search case insensitive, unless it contains Uppercase letters +set smartcase +" Use all the indent features +set autoindent +set smartindent +set cindent +" Make backspace remove indents and line breaks, like a normal editor +set backspace=indent,eol,start + +" Keep a bigger history +set history=1000 +" Allow tab completion for files in command mode. +set wildmenu +set wildmode=list:longest +" Show where you are in the file in the statusbar. +set ruler + +" I hate split above, so make it split below. Likewise, to the right. +set splitbelow +set splitright +" For autocomplete, follow requirements for nvim-compe +set completeopt=menuone,noselect +set signcolumn=yes +set shortmess+=c + +set diffopt+=vertical +" Some stuff for 256-Color consoles that I've forgotten. +set t_Co=256 +set t_Sf=ESC[3%dm +set t_Sb=ESC[4%dm +set t_ut= +"set t_SH= +"set t_kb= + +" This is like HiglightTooLongLines below, but for modern vim. The problem is +" that it highlights the column, even if your short. Good for measuring, bad for +" my eyes. +"if v:version >= 703 + "set relativenumber + "set colorcolumn=81 +"endif +" ** PATH SETTINGS ** + +let g:loaded_python_provider = 0 +let $RUST_SRC_PATH="/usr/src/rust/src/" + +" Disable the powerline plugin from standard Vim installs +let g:powerline_loaded = 1 + +" Required: +set runtimepath+=$HOME/.vim/bundle/repos/github.com/Shougo/dein.vim + +" Required: +call plug#begin($HOME . '/.vim/bundle') + +" Plugins that must be first +Plug $HOME . '/.vim/bundle/repos/github.com/Shougo/dein.vim' +Plug 'let-def/vimbufsync' +Plug 'lambdalisue/suda.vim' +Plug 'skywind3000/asyncrun.vim' +Plug 'barakmich/vim-code-dark' + +" Plugins that I almost never use +Plug 'kana/vim-textobj-user' + + +" Plugins I wish I used more +Plug 'jceb/vim-orgmode' +Plug 'tpope/vim-speeddating' + +Plug 'tpope/vim-fugitive' +Plug 'tpope/vim-unimpaired' +Plug 'b4winckler/vim-angry' +Plug 'tpope/vim-surround' +Plug 'junegunn/vim-easy-align' +Plug 'bps/vim-textobj-python' + +" Plugins I NEED +Plug 'scrooloose/nerdcommenter' +"Plug 'sjbach/lusty' +Plug 'mhinz/vim-signify' +Plug 'nvim-lualine/lualine.nvim' +Plug 'linrongbin16/lsp-progress.nvim' +"Plug 'airblade/vim-rooter' +Plug 'majutsushi/tagbar' +Plug 'dcampos/nvim-snippy' +Plug 'dcampos/cmp-snippy' +Plug 'rafamadriz/friendly-snippets' + +Plug 'honza/vim-snippets' +Plug 'tpope/vim-abolish' + +" Plugins for syntax +Plug 'lunaru/vim-less' +Plug 'hylang/vim-hy', {'for': 'hy'} +Plug 'habamax/vim-asciidoctor' +Plug 'jneen/ragel.vim' +Plug 'NoahTheDuke/vim-just' +Plug 'leafOfTree/vim-svelte-plugin' +Plug 'Shougo/context_filetype.vim' +"Plug 'idris-hackers/idris-vim', {'for': 'idris'} +Plug 'fedorenchik/AnsiEsc' +Plug 'hwayne/tla.vim' +Plug 'zchee/vim-goasm' +"Plug 'cappyzawa/starlark.vim' + +" Plugins that autocomplete +Plug 'neovim/nvim-lspconfig' +Plug 'nvim-lua/lsp_extensions.nvim' +Plug 'hrsh7th/cmp-nvim-lsp' +Plug 'hrsh7th/cmp-buffer' +Plug 'hrsh7th/cmp-path' +Plug 'hrsh7th/nvim-cmp' +Plug 'onsails/lspkind-nvim' + +Plug 'nvim-lua/popup.nvim' +Plug 'nvim-lua/plenary.nvim' +Plug 'nvim-telescope/telescope.nvim' +Plug 'sindrets/diffview.nvim' + +Plug 'kyazdani42/nvim-web-devicons' " for file icons + +Plug 'ray-x/lsp_signature.nvim' +Plug 'ray-x/go.nvim' + +Plug 'RishabhRD/popfix' +Plug 'RishabhRD/nvim-lsputils' +Plug 'stevanmilic/nvim-lspimport' +Plug 'folke/trouble.nvim' +Plug 'creativenull/efmls-configs-nvim', { 'tag': 'v1.*' } + +Plug 'roobert/hoversplit.nvim' +Plug 'tamago324/lir.nvim' + +Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'} +Plug 'nvim-treesitter/playground' +Plug 'nvim-treesitter/nvim-treesitter-textobjects' + + +Plug 'ggandor/leap.nvim' +Plug 'ggandor/flit.nvim' +Plug 'simrat39/rust-tools.nvim' + +Plug 'Shougo/unite.vim' +" TODO: Look into Coqtail, same author +Plug 'whonore/coquille', {'branch': 'pathogen-bundle', 'for': 'coq'} + +Plug 'gabrielelana/vim-markdown' +Plug 'lervag/vimtex' +Plug 'Shougo/echodoc.vim' +Plug 'windwp/nvim-autopairs' +Plug 'danymat/neogen' +Plug 'stevearc/dressing.nvim' +Plug 'MunifTanjim/nui.nvim' +Plug 'zbirenbaum/copilot.lua' +"Plug 'yetone/avante.nvim', {'branch': 'main', 'do': 'make'} +"Plug 'David-Kunz/gen.nvim' +Plug 'ibhagwan/fzf-lua' +Plug 'frankroeder/parrot.nvim' + +Plug 'edolphin-ydf/goimpl.nvim' +Plug 'stevearc/quicker.nvim' +Plug 'rafikdraoui/jj-diffconflicts' + +call plug#end() + +filetype plugin indent on +syntax enable + +" Configure Plugins in Lua + +luafile $HOME/.vim/nvim.lua + + +" **** Configure LSP + +" Code navigation shortcuts +nnoremap <silent> gd <cmd>lua vim.lsp.buf.definition()<CR> +nnoremap <silent> gi <cmd>lua require('telescope.builtin').lsp_implementations({initial_mode = "normal"})<cr> +nnoremap <silent> gy <cmd>lua vim.lsp.buf.type_definition()<CR> +nnoremap <silent> K <cmd>lua vim.lsp.buf.hover()<CR> +nnoremap <silent> gs <cmd>lua vim.lsp.buf.signature_help()<CR> +nnoremap <silent> gR <cmd>lua vim.lsp.buf.rename()<CR> +"nnoremap <silent> gr <cmd>lua vim.lsp.buf.references()<CR> +nnoremap <silent> gr <cmd>lua require('telescope.builtin').lsp_references({initial_mode = "normal"})<cr> +nnoremap <silent> g0 <cmd>lua vim.lsp.buf.document_symbol()<CR> +nnoremap <silent> gW <cmd>lua require('telescope.builtin').lsp_workspace_symbols({initial_mode = "normal"})<cr> +"nnoremap <silent> gd <cmd>lua vim.lsp.buf.declaration()<CR> +nnoremap <silent> ga <cmd>lua vim.lsp.buf.code_action()<CR> +"nnoremap <silent> ga <cmd>lua require('telescope.builtin').lsp_code_actions({initial_mode = "normal"})<cr> +vnoremap <silent> ga <cmd>lua vim.lsp.buf.code_action()<CR> +"vnoremap <silent> ga :<C-U>lua require('telescope.builtin').lsp_range_code_actions({initial_mode = "normal"})<cr> +"nnoremap <silent> ge <cmd>lua vim.lsp.diagnostic.show_line_diagnostics({show_header = false, focusable = false})<CR> +"nnoremap <silent> ge <cmd>lua vim.diagnostic.open_float({focusable = false})<CR> +nnoremap <silent> <leader>im <cmd>lua require'telescope'.extensions.goimpl.goimpl{}<CR> + + +nnoremap <silent> <leader>xx <cmd>TroubleToggle<cr> +nnoremap <silent> <leader>xq <cmd>lua vim.diagnostic.setqflist()<CR> +"nnoremap <silent> <leader>nc <cmd>lua neogen_dwim()<CR> +nnoremap <silent> <leader>nc <cmd>lua require('neogen').generate({ type = 'any' })<CR> +nnoremap <silent> gm <cmd>lua require('lspimport').import()<CR> +nnoremap <silent> <leader>K <cmd>lua require('hoversplit').vsplit_remain_focused()<CR> + + +" Set updatetime for CursorHold +" 300ms of no cursor movement to trigger CursorHold +set updatetime=500 +" Show diagnostic popup on cursor hold +autocmd CursorHold * lua vim.diagnostic.open_float({focusable = false}) + +" Autoformat on save +autocmd BufWritePre *.lua lua vim.lsp.buf.format({ async = false }) +autocmd BufWritePre *.py lua vim.lsp.buf.format({ async = false }) +autocmd BufWritePre *.rs lua vim.lsp.buf.format({ async = false }) +autocmd BufWritePre *.go lua vim.lsp.buf.format({ async = false }) +autocmd BufWritePre *.go silent! lua org_imports(3000) +autocmd BufWritePre *.ts lua vim.lsp.buf.format({ async = false }) + +" Goto previous/next diagnostic warning/error +nnoremap <silent> g[ <cmd>lua vim.diagnostic.goto_prev()<CR> +nnoremap <silent> g] <cmd>lua vim.diagnostic.goto_next()<CR> + +let g:completion_matching_strategy_list = ['exact', 'substring', 'fuzzy'] +let g:completion_matching_smart_case = 1 +let g:completion_sorting = 'length' + + +" **** End LSP + +" Cull trailing whitespace for all files. +autocmd BufWritePre * :call AutoTrimWhitespace() + +" Set syntax and highlighting +syntax on + +"let g:codedark_conservative = 1 +let g:codedark_transparent=1 +let g:codedark_italics=1 +colorscheme codedark + + +" Turn on the cursorline (highlight on line under cursor) but only for the +" window and buffer you're currently in. +autocmd BufEnter * setlocal cursorline +autocmd WinEnter * setlocal cursorline +autocmd WinLeave * setlocal nocursorline +setlocal cursorline + + +" ** PLUGIN CONFIGURATION ** + +" * Vim general/Unknown +let g:Tb_MaxSize=0 +let g:Tb_MapCTabSwitchBufs = 1 + +" * Signify +let g:signify_realtime = 1 +let g:signify_vcs_list = ['git'] +let g:signify_sign_change = '~' +let g:signify_sign_changedelete = g:signify_sign_change +let g:signify_sign_show_count = 0 +let g:signify_priority = 5 + +" * Tagbar plugin settings +let g:tagbar_width = 40 +let g:tagbar_autofocus = 1 +let g:tagbar_autoclose = 1 +let g:tagbar_compact = 1 + +" * vim-rooter +"let g:rooter_cd_cmd="lcd" +"let g:rooter_manual_only = 1 +"set autochdir + +" " * FZF +let g:rg_command = ' + \ rg --column --line-number --no-heading --fixed-strings --ignore-case --no-ignore --hidden --follow --color "always" + \ -g "!{.git,node_modules,vendor}/*" ' + + +" ** STATUSLINE ** +set laststatus=2 +set statusline=%t "tail of the filename +"set statusline+=[%{&ff}] "file format +"set statusline+=%h "help file flag +set statusline+=\ %w "help file flag +set statusline+=%r "read only flag +set statusline+=%y "filetype +set statusline+=\ %m "modified flag +set statusline+=%= "left/right separator +set statusline+=%{fugitive#statusline()}\ \ +set statusline+=%c, "cursor column +set statusline+=%l/%L "cursor line/total lines +set statusline+=\ %P "percent through file + +" ** SMALL FUNCTIONS THAT DON'T FIT AS PLUGINS *** + +" Add capital W and Q so I can be lazy about my shift key +if !exists(":W") + command W :w +endif + +if !exists(":Q") + command Q :q +endif + +" CD to the path of the file I'm editing. +command Cdf :cd %:p:h + +" Print path of file +command Filepath :echo expand('%:p') + +" Save a vim session! Useful if you want to save buffer states and so on +command SaveSession :mksession! ~/.vim_last_session +command LoadSession :source ~/.vim_last_session + +" Sudo-make-me-a-sandwich write. For when I forget to be root. +"command Wdammit :w !sudo tee > /dev/null % +command Wdammit :w suda://% + + +" I can never remember markdown fully. Open me a cheatsheet +command MarkdownCheatsheet :rightb vsplit ~/.vim/markdown_cheatsheet.md + + +" Doesn't quite work right but can be a real savior if needed. +" Oh-shit-what-was-this-like-before-I-changed-it? +function! s:DiffWithSaved() + let filetype=&ft + diffthis + vnew | r # | normal! 1Gdd + diffthis + exe "setlocal bt=nofile bh=wipe nobl noswf ro ft=" . filetype +endfunction +com! DiffSaved call s:DiffWithSaved() + +" Highlight lines that are longer than textwidth for the filetype, commonly 80 +" characters. +function! HighlightTooLongLines() + highlight def link RightMargin Error + if &textwidth != 0 + exec 'match RightMargin /\%<' . (&textwidth + 3) . 'v.\%>' . (&textwidth + 1) . 'v/' + endif +endfunction + +" Toggles the quickfix window split. +command -bang -nargs=? QFix call QFixToggle(<bang>0) +function! QFixToggle(forced) + if exists("g:qfix_win") && a:forced == 0 + cclose + else + execute "copen " . 15 + endif +endfunction + +" Toggle LocationList +command -bang -nargs=? LFix call LFixToggle(<bang>0) +function! LFixToggle(forced) + if exists("g:lfix_win") && a:forced == 0 + unlet! g:lfix_win + lclose + else + execute "lopen " . 10 + let g:lfix_win = "t" + endif +endfunction + +"au FileType go nmap <leader>C <Plug>(go-clearlay) +"clear overlay +command -bang -nargs=? GoCoverlayT call GoCoverlayToggle(<bang>0) +function! GoCoverlayToggle(forced) + if exists("g:go_coverlay_t") && a:forced == 0 + unlet! g:go_coverlay_t + GoClearlay + "call <Plug>(go-clearlay) + else + "call <Plug>(go-coverlay) + GoCoverlay + let g:go_coverlay_t = "t" + endif +endfunction + + +" Make the Quickfix window respond well to commands (for instance, q to close, +" Enter to select, etc). In tandem with the above. +augroup QFixToggle + autocmd! + autocmd BufWinEnter quickfix let g:qfix_win = bufnr("$") + autocmd BufWinEnter quickfix exec "nnoremap <silent> <buffer> q :QFix<CR>" + autocmd BufWinLeave * if exists("g:qfix_win") && expand("<abuf>") == g:qfix_win | unlet! g:qfix_win | endif +augroup END + + +" Highlight all instances of word under cursor, when idle. +" Useful when studying strange source code. +" Type z/ to toggle highlighting on/off. +nnoremap z/ :if AutoHighlightToggle()<Bar>set hls<Bar>else<Bar>set nohls<Bar>endif<CR> +function! AutoHighlightToggle() + let @/ = '' + if exists('#auto_highlight') + au! auto_highlight + augroup! auto_highlight + setl updatetime=4000 + echo 'Highlight current word: off' + return 0 + else + augroup auto_highlight + au! + au CursorHold * let @/ = '\V\<'.escape(expand('<cword>'), '\').'\>' + augroup end + setl updatetime=500 + echo 'Highlight current word: ON' + return 1 + endif +endfunction + +" Removes trailing spaces +function AutoTrimWhitespace() + if exists("b:auto_trim_whitespace") + if b:auto_trim_whitespace == 1 + let l:winview = winsaveview() + silent! %s/\s\+$// + call winrestview(l:winview) + endif + endif +endfunction + + + +" ** KEY REMAPPINGS ** +" +" +" Toggle GoCoverlay +au FileType go nmap <leader>c :GoCoverlayT<CR> + +" Coquille +au FileType coq nmap <leader>a :CoqToCursor<CR> +au FileType coq imap <leader>a <C-O>:CoqToCursor<CR> + +" I don't know how I came up with gt for opening the tree, but it stuck. +nmap <silent> gt :edit %:h<CR> +nmap gb :TagbarToggle<CR> +"nnoremap gx :Kwbd<CR> +" :Kwbd (defined below) really kills a buffer dead, and closes the window. +" gK is similar. +nnoremap gc :Kwbd<CR> + +" I use gn/gp to cycle through open tabs/buffers +nnoremap gn :bn<CR> +nnoremap gp :bp<CR> +nnoremap gz :pclose<CR> + +" The single most handy way to get around a file. Cursor over a word, and then +" type g* -- you'll go to the next instance of that word in the file. Make it +" easier to reach by calling it gw (go-word) instead of hidden away. +nnoremap gw g* +" Make shift-p like p except, put the line above instead of below. +nmap P o<Esc>p + +" Line-based movement is cute, but it's tricky for files with lines that wrap. +" Attune more to what you see on the screen instead of where the lines actually +" are. +nnoremap <silent> j gj +nnoremap k gk +xnoremap j gj +xnoremap k gk +nnoremap <Down> gj +nnoremap <Up> gk +xnoremap <Down> gj +xnoremap <Up> gk +inoremap <Down> <C-o>gj +inoremap <Up> <C-o>gk +"nnoremap <C-i> <C-a> +" Years of using bash and zsh have caused my fingers to expect these Emacs-like +" mappings to exist. Make them exist in vim as well. But eye them with +" suspicion, as they come from Emacs. +nnoremap <C-a> ^ +nnoremap <C-e> $ +xnoremap <C-a> ^ +xnoremap <C-e> $ +inoremap <C-a> <C-O>^ +inoremap <C-e> <C-O>$ + + +" Make it easier to clear highlighting, with no functionality penalty +nnoremap <CR> :noh<CR><CR> + +" Better fold mappings +nnoremap <silent> <Space> @=(foldlevel('.')?'za':'l')<CR> +vnoremap <Space> zf +" Just to be handy, Ctrl-C acts like escape. So does jj, which never really +" comes up in practice. If you really need to type jj do so slowly. +imap <C-c> <Esc> +inoremap jj <Esc> + +" Leader key functions +" Next quickfix. +nnoremap <Leader>fn :lnext<CR> +" Prev quickfix. +nnoremap <Leader>fp :lprev<CR> +" +nnoremap <silent> <C-k> <cmd>lua require('telescope.builtin').git_files{}<cr> +nnoremap <silent> <Leader>ag <cmd>lua require('telescope.builtin').live_grep{ word_match = "-w", only_sort_text = true, cwd = vim.fn.systemlist("git rev-parse --show-toplevel")[1], search = ''}<cr> +nnoremap <silent> <Leader>aw <cmd>lua require('telescope.builtin').grep_string{ word_match = "-w", only_sort_text = true, cwd = vim.fn.systemlist("git rev-parse --show-toplevel")[1]}<cr> +"nnoremap <silent> <Leader>q <cmd>lua require('telescope.builtin').quickfix{}<cr> +nnoremap <silent> <Leader>ff <cmd>lua require('telescope.builtin').quickfix{}<cr> +nnoremap <silent> <Leader>ar <cmd>lua require('telescope.builtin').resume{}<cr> +nnoremap <silent> <Leader>o <cmd>lua require('telescope.builtin').buffers{initial_mode = "insert"}<cr> +nnoremap <silent> <C-j> <cmd>lua require('telescope.builtin').buffers{prompt_prefix = " "}<cr> + +" For C++ -- A is a great plugin which allows you to jump from the c file to the +" header and vice-versa. Mneumonic here is headerheader. +nnoremap <Leader>hh :A<CR> +nnoremap <Leader>mm :w<CR>:make!<CR> + +" ** EXTRA INCLUDES ** +" +let s:extrarc = expand($HOME . '/.vimrc_work') +if filereadable(s:extrarc) + exec ':so ' . s:extrarc +endif + + +" Final hi links for TreeSitter +hi link @type.rust TSCSecondaryTypeParam diff --git a/dot_weechat/weechat.conf b/dot_weechat/weechat.conf new file mode 100644 index 0000000..d7156d7 --- /dev/null +++ b/dot_weechat/weechat.conf @@ -0,0 +1,697 @@ +# +# weechat -- weechat.conf +# +# WARNING: It is NOT recommended to edit this file by hand, +# especially if WeeChat is running. +# +# Use /set or similar command to change settings in WeeChat. +# +# For more info, see: https://weechat.org/doc/quickstart +# + +[debug] + +[startup] +command_after_plugins = "" +command_before_plugins = "" +display_logo = on +display_version = on +sys_rlimit = "" + +[look] +align_end_of_lines = message +align_multiline_words = on +bar_more_down = "++" +bar_more_left = "<<" +bar_more_right = ">>" +bar_more_up = "--" +bare_display_exit_on_input = on +bare_display_time_format = "%H:%M" +buffer_auto_renumber = on +buffer_notify_default = all +buffer_position = end +buffer_search_case_sensitive = off +buffer_search_force_default = off +buffer_search_regex = off +buffer_search_where = prefix_message +buffer_time_format = "%H:%M:%S" +buffer_time_same = "" +color_basic_force_bold = off +color_inactive_buffer = on +color_inactive_message = on +color_inactive_prefix = on +color_inactive_prefix_buffer = on +color_inactive_time = off +color_inactive_window = on +color_nick_offline = off +color_pairs_auto_reset = 5 +color_real_white = off +command_chars = "" +command_incomplete = off +confirm_quit = off +confirm_upgrade = off +day_change = on +day_change_message_1date = "-- %a, %d %b %Y --" +day_change_message_2dates = "-- %%a, %%d %%b %%Y (%a, %d %b %Y) --" +eat_newline_glitch = off +emphasized_attributes = "" +highlight = "" +highlight_regex = "" +highlight_tags = "" +hotlist_add_conditions = "${away} || ${buffer.num_displayed} == 0" +hotlist_buffer_separator = ", " +hotlist_count_max = 2 +hotlist_count_min_msg = 2 +hotlist_names_count = 3 +hotlist_names_length = 0 +hotlist_names_level = 12 +hotlist_names_merged_buffers = off +hotlist_prefix = "H: " +hotlist_remove = merged +hotlist_short_names = on +hotlist_sort = group_time_asc +hotlist_suffix = "" +hotlist_unique_numbers = on +input_cursor_scroll = 20 +input_share = none +input_share_overwrite = off +input_undo_max = 32 +item_away_message = on +item_buffer_filter = "*" +item_buffer_zoom = "!" +item_mouse_status = "M" +item_time_format = "%H:%M" +jump_current_to_previous_buffer = on +jump_previous_buffer_when_closing = on +jump_smart_back_to_buffer = on +key_bind_safe = on +key_grab_delay = 800 +mouse = off +mouse_timer_delay = 100 +nick_color_force = "" +nick_color_hash = djb2 +nick_color_hash_salt = "" +nick_color_stop_chars = "_|[" +nick_prefix = "" +nick_suffix = "" +paste_auto_add_newline = on +paste_bracketed = on +paste_bracketed_timer_delay = 10 +paste_max_lines = 1 +prefix_action = " *" +prefix_align = right +prefix_align_max = 0 +prefix_align_min = 0 +prefix_align_more = "+" +prefix_align_more_after = on +prefix_buffer_align = right +prefix_buffer_align_max = 0 +prefix_buffer_align_more = "+" +prefix_buffer_align_more_after = on +prefix_error = "=!=" +prefix_join = "-->" +prefix_network = "--" +prefix_quit = "<--" +prefix_same_nick = "" +prefix_same_nick_middle = "" +prefix_suffix = "|" +quote_nick_prefix = "<" +quote_nick_suffix = ">" +quote_time_format = "%H:%M:%S" +read_marker = line +read_marker_always_show = off +read_marker_string = "- " +save_config_on_exit = on +save_config_with_fsync = off +save_layout_on_exit = none +scroll_amount = 3 +scroll_bottom_after_switch = off +scroll_page_percent = 100 +search_text_not_found_alert = on +separator_horizontal = "-" +separator_vertical = "" +tab_width = 1 +time_format = "%a, %d %b %Y %T" +window_auto_zoom = off +window_separator_horizontal = on +window_separator_vertical = on +window_title = "WeeChat ${info:version}" +word_chars_highlight = "!\u00A0,-,_,|,alnum" +word_chars_input = "!\u00A0,-,_,|,alnum" + +[palette] + +[color] +bar_more = lightmagenta +chat = default +chat_bg = default +chat_buffer = white +chat_channel = white +chat_day_change = cyan +chat_delimiters = green +chat_highlight = yellow +chat_highlight_bg = magenta +chat_host = cyan +chat_inactive_buffer = default +chat_inactive_window = default +chat_nick = lightcyan +chat_nick_colors = "cyan,magenta,green,brown,lightblue,default,lightcyan,lightmagenta,lightgreen,blue" +chat_nick_offline = default +chat_nick_offline_highlight = default +chat_nick_offline_highlight_bg = blue +chat_nick_other = cyan +chat_nick_prefix = green +chat_nick_self = white +chat_nick_suffix = green +chat_prefix_action = white +chat_prefix_buffer = brown +chat_prefix_buffer_inactive_buffer = default +chat_prefix_error = yellow +chat_prefix_join = lightgreen +chat_prefix_more = lightmagenta +chat_prefix_network = magenta +chat_prefix_quit = lightred +chat_prefix_suffix = green +chat_read_marker = magenta +chat_read_marker_bg = default +chat_server = brown +chat_tags = red +chat_text_found = yellow +chat_text_found_bg = lightmagenta +chat_time = default +chat_time_delimiters = brown +chat_value = cyan +chat_value_null = blue +emphasized = yellow +emphasized_bg = magenta +input_actions = lightgreen +input_text_not_found = red +item_away = yellow +nicklist_away = cyan +nicklist_group = green +separator = blue +status_count_highlight = magenta +status_count_msg = brown +status_count_other = default +status_count_private = green +status_data_highlight = lightmagenta +status_data_msg = yellow +status_data_other = default +status_data_private = lightgreen +status_filter = green +status_more = yellow +status_mouse = green +status_name = white +status_name_ssl = lightgreen +status_nicklist_count = default +status_number = yellow +status_time = default + +[completion] +base_word_until_cursor = on +command_inline = on +default_template = "%(nicks)|%(irc_channels)" +nick_add_space = on +nick_case_sensitive = off +nick_completer = ":" +nick_first_only = off +nick_ignore_chars = "[]`_-^" +partial_completion_alert = on +partial_completion_command = off +partial_completion_command_arg = off +partial_completion_count = on +partial_completion_other = off +partial_completion_templates = "config_options" + +[history] +display_default = 5 +max_buffer_lines_minutes = 0 +max_buffer_lines_number = 4096 +max_commands = 100 +max_visited_buffers = 50 + +[proxy] + +[network] +connection_timeout = 60 +gnutls_ca_file = "/etc/ssl/certs/ca-certificates.crt" +gnutls_handshake_timeout = 30 +proxy_curl = "" + +[plugin] +autoload = "*" +debug = off +extension = ".so,.dll" +path = "%h/plugins" +save_config_on_unload = on + +[bar] +buflist.color_bg = default +buflist.color_bg_inactive = default +buflist.color_delim = default +buflist.color_fg = default +buflist.conditions = "" +buflist.filling_left_right = vertical +buflist.filling_top_bottom = columns_vertical +buflist.hidden = off +buflist.items = "buflist" +buflist.position = left +buflist.priority = 0 +buflist.separator = on +buflist.size = 0 +buflist.size_max = 0 +buflist.type = root +fset.color_bg = default +fset.color_bg_inactive = default +fset.color_delim = cyan +fset.color_fg = default +fset.conditions = "${buffer.full_name} == fset.fset" +fset.filling_left_right = vertical +fset.filling_top_bottom = horizontal +fset.hidden = off +fset.items = "fset" +fset.position = top +fset.priority = 0 +fset.separator = on +fset.size = 3 +fset.size_max = 3 +fset.type = window +input.color_bg = default +input.color_bg_inactive = default +input.color_delim = cyan +input.color_fg = default +input.conditions = "" +input.filling_left_right = vertical +input.filling_top_bottom = horizontal +input.hidden = off +input.items = "[input_prompt]+(away),[input_search],[input_paste],input_text" +input.position = bottom +input.priority = 1000 +input.separator = off +input.size = 1 +input.size_max = 0 +input.type = window +nicklist.color_bg = default +nicklist.color_bg_inactive = default +nicklist.color_delim = cyan +nicklist.color_fg = default +nicklist.conditions = "${nicklist}" +nicklist.filling_left_right = vertical +nicklist.filling_top_bottom = columns_vertical +nicklist.hidden = off +nicklist.items = "buffer_nicklist" +nicklist.position = right +nicklist.priority = 200 +nicklist.separator = on +nicklist.size = 0 +nicklist.size_max = 0 +nicklist.type = window +status.color_bg = blue +status.color_bg_inactive = default +status.color_delim = cyan +status.color_fg = default +status.conditions = "" +status.filling_left_right = vertical +status.filling_top_bottom = horizontal +status.hidden = off +status.items = "[buffer_last_number],[buffer_plugin],buffer_number+:+buffer_name+(buffer_modes)+{buffer_nicklist_count}+buffer_zoom+buffer_filter,scroll,[lag],[hotlist],completion" +status.position = bottom +status.priority = 500 +status.separator = off +status.size = 1 +status.size_max = 0 +status.type = window +title.color_bg = blue +title.color_bg_inactive = default +title.color_delim = cyan +title.color_fg = default +title.conditions = "" +title.filling_left_right = vertical +title.filling_top_bottom = horizontal +title.hidden = off +title.items = "buffer_title" +title.position = top +title.priority = 500 +title.separator = off +title.size = 1 +title.size_max = 0 +title.type = window +vi_cmd.color_bg = default +vi_cmd.color_bg_inactive = default +vi_cmd.color_delim = default +vi_cmd.color_fg = default +vi_cmd.conditions = "" +vi_cmd.filling_left_right = vertical +vi_cmd.filling_top_bottom = vertical +vi_cmd.hidden = on +vi_cmd.items = "cmd_text" +vi_cmd.position = bottom +vi_cmd.priority = 0 +vi_cmd.separator = off +vi_cmd.size = 0 +vi_cmd.size_max = 0 +vi_cmd.type = root +vi_line_numbers.color_bg = default +vi_line_numbers.color_bg_inactive = default +vi_line_numbers.color_delim = default +vi_line_numbers.color_fg = default +vi_line_numbers.conditions = "" +vi_line_numbers.filling_left_right = vertical +vi_line_numbers.filling_top_bottom = vertical +vi_line_numbers.hidden = on +vi_line_numbers.items = "line_numbers" +vi_line_numbers.position = left +vi_line_numbers.priority = 0 +vi_line_numbers.separator = off +vi_line_numbers.size = 0 +vi_line_numbers.size_max = 0 +vi_line_numbers.type = window + +[layout] + +[notify] + +[filter] + +[key] +ctrl-? = "/input delete_previous_char" +ctrl-A = "/input move_beginning_of_line" +ctrl-B = "/window page_up" +ctrl-C_ = "/input insert \x1F" +ctrl-Cb = "/input insert \x02" +ctrl-Cc = "/input insert \x03" +ctrl-Ci = "/input insert \x1D" +ctrl-Co = "/input insert \x0F" +ctrl-Cv = "/input insert \x16" +ctrl-D = "/input delete_next_char" +ctrl-E = "/input move_end_of_line" +ctrl-F = "/window page_down" +ctrl-H = "/input delete_previous_char" +ctrl-I = "/input complete_next" +ctrl-J = "/input return" +ctrl-K = "/input delete_end_of_line" +ctrl-L = "/window refresh" +ctrl-M = "/input return" +ctrl-N = "/buffer +1" +ctrl-O = "/input jump_smart" +ctrl-P = "/buffer -1" +ctrl-R = "/input search_text_here" +ctrl-Sctrl-U = "/input set_unread" +ctrl-T = "/input transpose_chars" +ctrl-U = "/input delete_beginning_of_line" +ctrl-W = "/input delete_previous_word" +ctrl-W= = "/window balance" +ctrl-Wh = "/window left" +ctrl-Wj = "/window down" +ctrl-Wk = "/window up" +ctrl-Wl = "/window right" +ctrl-Wq = "/window merge" +ctrl-Ws = "/window splith" +ctrl-Wv = "/window splitv" +ctrl-Wx = "/window swap" +ctrl-X = "/input switch_active_buffer" +ctrl-Y = "/input clipboard_paste" +meta-meta-OP = "/bar scroll buflist * b" +meta-meta-OQ = "/bar scroll buflist * e" +meta-meta2-11~ = "/bar scroll buflist * b" +meta-meta2-12~ = "/bar scroll buflist * e" +meta-meta2-1~ = "/window scroll_top" +meta-meta2-23~ = "/bar scroll nicklist * b" +meta-meta2-24~ = "/bar scroll nicklist * e" +meta-meta2-4~ = "/window scroll_bottom" +meta-meta2-5~ = "/window scroll_up" +meta-meta2-6~ = "/window scroll_down" +meta-meta2-7~ = "/window scroll_top" +meta-meta2-8~ = "/window scroll_bottom" +meta-meta2-A = "/buffer -1" +meta-meta2-B = "/buffer +1" +meta-meta2-C = "/buffer +1" +meta-meta2-D = "/buffer -1" +meta-- = "/filter toggle @" +meta-/ = "/input jump_last_buffer_displayed" +meta-0 = "/buffer *10" +meta-1 = "/buffer *1" +meta-2 = "/buffer *2" +meta-3 = "/buffer *3" +meta-4 = "/buffer *4" +meta-5 = "/buffer *5" +meta-6 = "/buffer *6" +meta-7 = "/buffer *7" +meta-8 = "/buffer *8" +meta-9 = "/buffer *9" +meta-< = "/input jump_previously_visited_buffer" +meta-= = "/filter toggle" +meta-> = "/input jump_next_visited_buffer" +meta-B = "/buflist toggle" +meta-OA = "/input history_global_previous" +meta-OB = "/input history_global_next" +meta-OC = "/input move_next_word" +meta-OD = "/input move_previous_word" +meta-OF = "/input move_end_of_line" +meta-OH = "/input move_beginning_of_line" +meta-OP = "/bar scroll buflist * -100%" +meta-OQ = "/bar scroll buflist * +100%" +meta-Oa = "/input history_global_previous" +meta-Ob = "/input history_global_next" +meta-Oc = "/input move_next_word" +meta-Od = "/input move_previous_word" +meta2-11^ = "/bar scroll buflist * -100%" +meta2-11~ = "/bar scroll buflist * -100%" +meta2-12^ = "/bar scroll buflist * +100%" +meta2-12~ = "/bar scroll buflist * +100%" +meta2-15~ = "/buffer -1" +meta2-17~ = "/buffer +1" +meta2-18~ = "/window -1" +meta2-19~ = "/window +1" +meta2-1;3A = "/buffer -1" +meta2-1;3B = "/buffer +1" +meta2-1;3C = "/buffer +1" +meta2-1;3D = "/buffer -1" +meta2-1;3F = "/window scroll_bottom" +meta2-1;3H = "/window scroll_top" +meta2-1;3P = "/bar scroll buflist * b" +meta2-1;3Q = "/bar scroll buflist * e" +meta2-1;5A = "/input history_global_previous" +meta2-1;5B = "/input history_global_next" +meta2-1;5C = "/input move_next_word" +meta2-1;5D = "/input move_previous_word" +meta2-1;5P = "/bar scroll buflist * -100%" +meta2-1;5Q = "/bar scroll buflist * +100%" +meta2-1~ = "/input move_beginning_of_line" +meta2-200~ = "/input paste_start" +meta2-201~ = "/input paste_stop" +meta2-20~ = "/bar scroll title * -30%" +meta2-21~ = "/bar scroll title * +30%" +meta2-23;3~ = "/bar scroll nicklist * b" +meta2-23~ = "/bar scroll nicklist * -100%" +meta2-24;3~ = "/bar scroll nicklist * e" +meta2-24~ = "/bar scroll nicklist * +100%" +meta2-3~ = "/input delete_next_char" +meta2-4~ = "/input move_end_of_line" +meta2-5;3~ = "/window scroll_up" +meta2-5~ = "/window page_up" +meta2-6;3~ = "/window scroll_down" +meta2-6~ = "/window page_down" +meta2-7~ = "/input move_beginning_of_line" +meta2-8~ = "/input move_end_of_line" +meta2-A = "/input history_previous" +meta2-B = "/input history_next" +meta2-C = "/input move_next_char" +meta2-D = "/input move_previous_char" +meta2-F = "/input move_end_of_line" +meta2-G = "/window page_down" +meta2-H = "/input move_beginning_of_line" +meta2-I = "/window page_up" +meta2-Z = "/input complete_previous" +meta2-[E = "/buffer -1" +meta-_ = "/input redo" +meta-a = "/input jump_smart" +meta-b = "/input move_previous_word" +meta-d = "/input delete_next_word" +meta-f = "/input move_next_word" +meta-h = "/input hotlist_clear" +meta-j01 = "/buffer *1" +meta-j02 = "/buffer *2" +meta-j03 = "/buffer *3" +meta-j04 = "/buffer *4" +meta-j05 = "/buffer *5" +meta-j06 = "/buffer *6" +meta-j07 = "/buffer *7" +meta-j08 = "/buffer *8" +meta-j09 = "/buffer *9" +meta-j10 = "/buffer *10" +meta-j11 = "/buffer *11" +meta-j12 = "/buffer *12" +meta-j13 = "/buffer *13" +meta-j14 = "/buffer *14" +meta-j15 = "/buffer *15" +meta-j16 = "/buffer *16" +meta-j17 = "/buffer *17" +meta-j18 = "/buffer *18" +meta-j19 = "/buffer *19" +meta-j20 = "/buffer *20" +meta-j21 = "/buffer *21" +meta-j22 = "/buffer *22" +meta-j23 = "/buffer *23" +meta-j24 = "/buffer *24" +meta-j25 = "/buffer *25" +meta-j26 = "/buffer *26" +meta-j27 = "/buffer *27" +meta-j28 = "/buffer *28" +meta-j29 = "/buffer *29" +meta-j30 = "/buffer *30" +meta-j31 = "/buffer *31" +meta-j32 = "/buffer *32" +meta-j33 = "/buffer *33" +meta-j34 = "/buffer *34" +meta-j35 = "/buffer *35" +meta-j36 = "/buffer *36" +meta-j37 = "/buffer *37" +meta-j38 = "/buffer *38" +meta-j39 = "/buffer *39" +meta-j40 = "/buffer *40" +meta-j41 = "/buffer *41" +meta-j42 = "/buffer *42" +meta-j43 = "/buffer *43" +meta-j44 = "/buffer *44" +meta-j45 = "/buffer *45" +meta-j46 = "/buffer *46" +meta-j47 = "/buffer *47" +meta-j48 = "/buffer *48" +meta-j49 = "/buffer *49" +meta-j50 = "/buffer *50" +meta-j51 = "/buffer *51" +meta-j52 = "/buffer *52" +meta-j53 = "/buffer *53" +meta-j54 = "/buffer *54" +meta-j55 = "/buffer *55" +meta-j56 = "/buffer *56" +meta-j57 = "/buffer *57" +meta-j58 = "/buffer *58" +meta-j59 = "/buffer *59" +meta-j60 = "/buffer *60" +meta-j61 = "/buffer *61" +meta-j62 = "/buffer *62" +meta-j63 = "/buffer *63" +meta-j64 = "/buffer *64" +meta-j65 = "/buffer *65" +meta-j66 = "/buffer *66" +meta-j67 = "/buffer *67" +meta-j68 = "/buffer *68" +meta-j69 = "/buffer *69" +meta-j70 = "/buffer *70" +meta-j71 = "/buffer *71" +meta-j72 = "/buffer *72" +meta-j73 = "/buffer *73" +meta-j74 = "/buffer *74" +meta-j75 = "/buffer *75" +meta-j76 = "/buffer *76" +meta-j77 = "/buffer *77" +meta-j78 = "/buffer *78" +meta-j79 = "/buffer *79" +meta-j80 = "/buffer *80" +meta-j81 = "/buffer *81" +meta-j82 = "/buffer *82" +meta-j83 = "/buffer *83" +meta-j84 = "/buffer *84" +meta-j85 = "/buffer *85" +meta-j86 = "/buffer *86" +meta-j87 = "/buffer *87" +meta-j88 = "/buffer *88" +meta-j89 = "/buffer *89" +meta-j90 = "/buffer *90" +meta-j91 = "/buffer *91" +meta-j92 = "/buffer *92" +meta-j93 = "/buffer *93" +meta-j94 = "/buffer *94" +meta-j95 = "/buffer *95" +meta-j96 = "/buffer *96" +meta-j97 = "/buffer *97" +meta-j98 = "/buffer *98" +meta-j99 = "/buffer *99" +meta-k = "/input grab_key_command" +meta-l = "/window bare" +meta-m = "/mute mouse toggle" +meta-n = "/window scroll_next_highlight" +meta-p = "/window scroll_previous_highlight" +meta-r = "/input delete_line" +meta-s = "/mute aspell toggle" +meta-u = "/window scroll_unread" +meta-x = "/input zoom_merged_buffer" +meta-z = "/window zoom" +ctrl-^ = "/input jump_last_buffer_displayed" +ctrl-_ = "/input undo" + +[key_search] +ctrl-I = "/input search_switch_where" +ctrl-J = "/input search_stop_here" +ctrl-M = "/input search_stop_here" +ctrl-Q = "/input search_stop" +ctrl-R = "/input search_switch_regex" +meta2-A = "/input search_previous" +meta2-B = "/input search_next" +meta-c = "/input search_switch_case" + +[key_cursor] +ctrl-J = "/cursor stop" +ctrl-M = "/cursor stop" +meta-meta2-A = "/cursor move area_up" +meta-meta2-B = "/cursor move area_down" +meta-meta2-C = "/cursor move area_right" +meta-meta2-D = "/cursor move area_left" +meta2-1;3A = "/cursor move area_up" +meta2-1;3B = "/cursor move area_down" +meta2-1;3C = "/cursor move area_right" +meta2-1;3D = "/cursor move area_left" +meta2-A = "/cursor move up" +meta2-B = "/cursor move down" +meta2-C = "/cursor move right" +meta2-D = "/cursor move left" +@item(buffer_nicklist):K = "/window ${_window_number};/kickban ${nick}" +@item(buffer_nicklist):b = "/window ${_window_number};/ban ${nick}" +@item(buffer_nicklist):k = "/window ${_window_number};/kick ${nick}" +@item(buffer_nicklist):q = "/window ${_window_number};/query ${nick};/cursor stop" +@item(buffer_nicklist):w = "/window ${_window_number};/whois ${nick}" +@chat:Q = "hsignal:chat_quote_time_prefix_message;/cursor stop" +@chat:m = "hsignal:chat_quote_message;/cursor stop" +@chat:q = "hsignal:chat_quote_prefix_message;/cursor stop" + +[key_mouse] +@bar(buflist):ctrl-wheeldown = "hsignal:buflist_mouse" +@bar(buflist):ctrl-wheelup = "hsignal:buflist_mouse" +@bar(input):button2 = "/input grab_mouse_area" +@bar(nicklist):button1-gesture-down = "/bar scroll nicklist ${_window_number} +100%" +@bar(nicklist):button1-gesture-down-long = "/bar scroll nicklist ${_window_number} e" +@bar(nicklist):button1-gesture-up = "/bar scroll nicklist ${_window_number} -100%" +@bar(nicklist):button1-gesture-up-long = "/bar scroll nicklist ${_window_number} b" +@chat(fset.fset):button1 = "/window ${_window_number};/fset -go ${_chat_line_y}" +@chat(fset.fset):button2* = "hsignal:fset_mouse" +@chat(fset.fset):wheeldown = "/fset -down 5" +@chat(fset.fset):wheelup = "/fset -up 5" +@chat(script.scripts):button1 = "/window ${_window_number};/script go ${_chat_line_y}" +@chat(script.scripts):button2 = "/window ${_window_number};/script go ${_chat_line_y};/script installremove -q ${script_name_with_extension}" +@chat(script.scripts):wheeldown = "/script down 5" +@chat(script.scripts):wheelup = "/script up 5" +@item(buffer_nicklist):button1 = "/window ${_window_number};/query ${nick}" +@item(buffer_nicklist):button1-gesture-left = "/window ${_window_number};/kick ${nick}" +@item(buffer_nicklist):button1-gesture-left-long = "/window ${_window_number};/kickban ${nick}" +@item(buffer_nicklist):button2 = "/window ${_window_number};/whois ${nick}" +@item(buffer_nicklist):button2-gesture-left = "/window ${_window_number};/ban ${nick}" +@item(buflist):button1* = "hsignal:buflist_mouse" +@item(buflist):button2* = "hsignal:buflist_mouse" +@item(buflist2):button1* = "hsignal:buflist_mouse" +@item(buflist2):button2* = "hsignal:buflist_mouse" +@item(buflist3):button1* = "hsignal:buflist_mouse" +@item(buflist3):button2* = "hsignal:buflist_mouse" +@bar:wheeldown = "/bar scroll ${_bar_name} ${_window_number} +20%" +@bar:wheelup = "/bar scroll ${_bar_name} ${_window_number} -20%" +@chat:button1 = "/window ${_window_number}" +@chat:button1-gesture-left = "/window ${_window_number};/buffer -1" +@chat:button1-gesture-left-long = "/window ${_window_number};/buffer 1" +@chat:button1-gesture-right = "/window ${_window_number};/buffer +1" +@chat:button1-gesture-right-long = "/window ${_window_number};/input jump_last_buffer" +@chat:ctrl-wheeldown = "/window scroll_horiz -window ${_window_number} +10%" +@chat:ctrl-wheelup = "/window scroll_horiz -window ${_window_number} -10%" +@chat:wheeldown = "/window scroll_down -window ${_window_number}" +@chat:wheelup = "/window scroll_up -window ${_window_number}" +@*:button3 = "/cursor go ${_x},${_y}" diff --git a/.xinitrc b/dot_xinitrc.bak similarity index 82% rename from .xinitrc rename to dot_xinitrc.bak index f14b088..8e3d5c3 100755 --- a/.xinitrc +++ b/dot_xinitrc.bak @@ -2,6 +2,8 @@ export PATH=$HOME/bin:$PATH systemctl --user import-environment DISPLAY XAUTHORITY +systemctl --user start pulseaudio.socket +systemctl --user start pulseaudio.service if which dbus-update-activation-environment >/dev/null 2>&1; then dbus-update-activation-environment DISPLAY XAUTHORITY @@ -19,7 +21,7 @@ xrdb -merge .Xdefaults & xscreensaver -no-splash & #kupfer --no-splash & rofi -key-run control-space -fuzzy -terminal run_terminal & -nm-applet & +#nm-applet & gnome-sound-applet & remmina -i & #setxkbmap -option ctrl:nocaps & @@ -29,7 +31,7 @@ xmodmap ~/.Xmodmap & # Running a really minimal arch system? This helps: /usr/lib/xfce4/notifyd/xfce4-notifyd & -pulseaudio --start & +#pulseaudio --start & blueman-applet & #wicd-gtk --tray & @@ -39,9 +41,10 @@ fi ~/.fehbg & -if command -v compton &>/dev/null; then - compton -b --config ~/.compton.conf & +if command -v picom &>/dev/null; then + picom -b --config ~/.compton.conf & fi + #exec awesome exec i3 #exec startxfce4 diff --git a/.xmonad/xmonad.hs b/dot_xmonad/xmonad.hs similarity index 100% rename from .xmonad/xmonad.hs rename to dot_xmonad/xmonad.hs diff --git a/dot_yarnrc b/dot_yarnrc new file mode 100644 index 0000000..79d0f61 --- /dev/null +++ b/dot_yarnrc @@ -0,0 +1,6 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +lastUpdateCheck 1723662140748 +prefix "/home/barak/.yarn" diff --git a/.ycm_extra_conf.py b/dot_ycm_extra_conf.py similarity index 100% rename from .ycm_extra_conf.py rename to dot_ycm_extra_conf.py diff --git a/.zprofile b/dot_zprofile similarity index 86% rename from .zprofile rename to dot_zprofile index 7296da2..6aac3e5 100644 --- a/.zprofile +++ b/dot_zprofile @@ -12,12 +12,6 @@ SunOS) UCB_PATH=/usr/sww/lang/acl:/usr/sww/lang/jdk-1.5.0/bin:/usr/openwin/bin:/usr/dt/bin:/usr/sww/opt/java/bin:/usr/sww/bin:/share/b/grading/bin:/share/b/grading/sbin:/share/b/runas/sun4u:/share/b/bin:/home/aa/projects/scheme/bin:/usr/ucb:/usr/ccs/bin:/usr/sfw/bin; export UCB_PATH PATH=$PATH:$UCB_PATH; export PATH ;; -Darwin) - MACPORTS_PATH=/opt/local/bin:/opt/local/sbin:/opt/local/usr/bin:/opt/local/usr/local/bin; export MACPORTS_PATH - PATH=$HOME/bin:$MACPORTS_PATH:$PATH; export PATH -# export DISPLAY=:0.0 - #set completion-ignore-case on - ;; esac #PATH=$HOME/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/usr/X11R6/bin; export PATH @@ -33,6 +27,7 @@ PAGER=less; export PAGER # set ENV to a file invoked each time sh is started for interactive use. ENV=$HOME/.zshrc; export ENV +RUST_BACKTRACE=1; export RUST_BACKTRACE #alias ls='ls -FG' #alias la='ls -FGal' diff --git a/.zshenv b/dot_zshenv similarity index 96% rename from .zshenv rename to dot_zshenv index 3c26470..59b71eb 100644 --- a/.zshenv +++ b/dot_zshenv @@ -14,3 +14,4 @@ bindkey '\e[5~' insert-last-word # Page up key if [ -z "$GOPATH" ]; then export GOPATH="$HOME/.go/" fi +. "$HOME/.cargo/env" diff --git a/.zshrc b/dot_zshrc similarity index 55% rename from .zshrc rename to dot_zshrc index b671463..2add78b 100644 --- a/.zshrc +++ b/dot_zshrc @@ -23,7 +23,7 @@ bindkey -e #ZLS_COLORS=$LS_COLORS -export DISTCC_HOSTS='hyades01 hyades02 hyades03 hyades04' +#export DISTCC_HOSTS='hyades01 hyades02 hyades03 hyades04' #if [[ "$GOROOT" == "" ]]; then #export GOROOT=$HOME/local/go #export GOARCH=amd64 @@ -39,42 +39,66 @@ export DISTCC_HOSTS='hyades01 hyades02 hyades03 hyades04' #fi - setopt prompt_subst +setopt prompt_subst - ### - # See if we can use colors. +### +# See if we can use colors. - autoload colors zsh/terminfo - if [[ "$terminfo[colors]" -ge 8 ]]; then - colors - fi - for color in RED GREEN YELLOW BLUE MAGENTA CYAN WHITE; do - eval PR_LIGHT_$color='%{$terminfo[bold]$fg[${(L)color}]%}' - eval PR_$color='%{$fg[${(L)color}]%}' - (( count = $count + 1 )) - done - PR_NO_COLOUR="%{$terminfo[sgr0]%}" +autoload colors zsh/terminfo +if [[ "$terminfo[colors]" -ge 8 ]]; then + colors +fi +for color in RED GREEN YELLOW BLUE MAGENTA CYAN WHITE; do + eval PR_LIGHT_$color='%{$terminfo[bold]$fg[${(L)color}]%}' + eval PR_$color='%{$fg[${(L)color}]%}' + (( count = $count + 1 )) +done +PR_NO_COLOUR="%{$terminfo[sgr0]%}" - ### - # Decide whether to set a screen title -# if [[ "$TERM" == "screen" ]]; then -# PR_STITLE=$'%{\ekzsh\e\\%}' -# else -# PR_STITLE='' -# fi +case `uname` in + Darwin) + PR_HOST_COLOR=$PR_CYAN + ;; + Linux) + PR_HOST_COLOR=$PR_GREEN + ;; + FreeBSD) + PR_HOST_COLOR=$PR_RED + ;; + *) + PR_HOST_COLOR=$PR_YELLOW + ;; +esac -# preexec () { -# local CMD="${1/#sudo /#}" -# local CMD="${CMD/#nano /}" -# local CMD="${CMD/#ssh />}" -# $SCREENME true || echo -ne "\ek${CMD%% *}\e\\" -# } - #precmd () { - #$SCREENME true || echo -ne "\ekzsh\e\\" - #} +#PR_HOST_COLOR=$PR_NO_COLOUR +#if [ -x "$(command -v $MD5_COMMAND)" ]; then + #str=`echo -n "${HOST} ${HOSTNAME}" | $MD5_COMMAND $MD5_COMMAND_OPTS` + #last="${str: -1}" + #echo + #case $last in + #"1"|"6"|"b"|"0") + #PR_HOST_COLOR=$PR_GREEN + #;; + #"2"|"7"|"c") + #PR_HOST_COLOR=$PR_YELLOW + #;; + #"3"|"8"|"d") + #PR_HOST_COLOR=$PR_BLUE + #;; + #"4"|"9"|"e") + #PR_HOST_COLOR=$PR_MAGENTA + #;; + #"5"|"a"|"f") + #PR_HOST_COLOR=$PR_CYAN + #;; + #"*") + #;; + #esac +#fi - PROMPT='$PR_STITLE$PR_LIGHT_BLUE($PR_LIGHT_YELLOW%D{%H:%M}|%!$PR_BLUE%)[%(!.$PR_RED.$PR_GREEN)%n@%m$PR_LIGHT_CYAN %~$PR_BLUE]$PR_NO_COLOUR + +PROMPT='$PR_STITLE$PR_LIGHT_BLUE(%(!.$PR_RED.$PR_LIGHT_YELLOW)%D{%H:%M}|%!$PR_BLUE%)[%(!.$PR_RED.$PR_HOST_COLOR)%n@%m$PR_LIGHT_CYAN %~$PR_BLUE]$PR_NO_COLOUR %(!.#.$) ' #source .zshprompt @@ -86,12 +110,26 @@ fi if [ -f /usr/local/bin/virtualenvwrapper_lazy.sh ]; then source /usr/local/bin/virtualenvwrapper_lazy.sh +elif [ -f /usr/bin/virtualenvwrapper_lazy.sh ]; then + source /usr/bin/virtualenvwrapper_lazy.sh fi fasd_cache="$HOME/.fasd-init-zsh" if [ "$(command -v fasd)" -nt "$fasd_cache" -o ! -s "$fasd_cache" ]; then fasd --init posix-alias zsh-hook zsh-ccomp zsh-ccomp-install zsh-wcomp zsh-wcompinstall >| "$fasd_cache" fi + +[ -f ~/.fzf.bash ] && source ~/.fzf.bash + + +[ -f /usr/share/fzf/key-bindings.zsh ] && source /usr/share/fzf/key-bindings.zsh +[ -f /usr/share/fzf/shell/key-bindings.zsh ] && source /usr/share/fzf/shell/key-bindings.zsh +[ -f /usr/share/fzf/completion.zsh ] && source /usr/share/fzf/completion.zsh + +export FZF_DEFAULT_COMMAND='rg --files --hidden --follow -g "!{.git,node_modules}/*" 2> /dev/null' +export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND" +#bind -x '"\C-p": vim $(fzf);' + source "$fasd_cache" unset fasd_cache @@ -125,3 +163,14 @@ if [ -f '/home/barak/local/google-cloud-sdk/path.zsh.inc' ]; then source '/home/ # The next line enables shell command completion for gcloud. if [ -f '/home/barak/local/google-cloud-sdk/completion.zsh.inc' ]; then source '/home/barak/local/google-cloud-sdk/completion.zsh.inc'; fi + +if [ -f '/usr/local/lib/bazel/bin/_bazel' ]; then source '/usr/local/lib/bazel/bin/_bazel'; fi + +# This enables autocomplete for kubectl +if [ $commands[kubectl] ]; then + source <(kubectl completion zsh) +fi + +export PATH="$HOME/.yarn/bin:$HOME/.config/yarn/global/node_modules/.bin:$PATH" + +if [ -f "$HOME/.zsh_work_rc" ]; then source $HOME/.zsh_work_rc; fi diff --git a/symlink_dot_fonts.conf b/symlink_dot_fonts.conf new file mode 100644 index 0000000..34e7b31 --- /dev/null +++ b/symlink_dot_fonts.conf @@ -0,0 +1 @@ +/home/barak/.config/fontconfig/fonts.conf diff --git a/symlink_dot_nvim b/symlink_dot_nvim new file mode 100644 index 0000000..55d00c5 --- /dev/null +++ b/symlink_dot_nvim @@ -0,0 +1 @@ +.vim diff --git a/symlink_dot_nvimrc b/symlink_dot_nvimrc new file mode 100644 index 0000000..be2db78 --- /dev/null +++ b/symlink_dot_nvimrc @@ -0,0 +1 @@ +.vimrc diff --git a/symlink_dot_xsession b/symlink_dot_xsession new file mode 100644 index 0000000..c2ebcf9 --- /dev/null +++ b/symlink_dot_xsession @@ -0,0 +1 @@ +.xinitrc diff --git a/symlink_dot_zsh_profile b/symlink_dot_zsh_profile new file mode 100644 index 0000000..c08ab2a --- /dev/null +++ b/symlink_dot_zsh_profile @@ -0,0 +1 @@ +.zprofile