├── .gitignore ├── 100.sh ├── README.md ├── backup-dconf-settings.sh ├── brave-browser-install.sh ├── bun-and-node.sh ├── config-nvim.sh ├── config ├── backup.dconf.settings ├── init.vim ├── kitty.conf └── qterminal.ini ├── dev-server.sh ├── docker-install-mint.sh ├── docker-install.sh ├── fix-broken.sh ├── fix-libdvd.sh ├── fnm.sh ├── gen-ssh-key.sh ├── install-minikube.sh ├── install-my-ip-hide.sh ├── install-neovim.sh ├── install-stacer.sh ├── install-vscode.sh ├── installify.sh ├── load-dconf-settings.sh ├── pre-ruby.sh ├── rbenv-install.sh ├── requirements.txt ├── reset-default-terminal.sh ├── setup-terminal.sh ├── templates ├── cpp.cpp ├── css.css ├── html.html ├── javascript.js ├── php.php ├── python.py ├── shell_script.sh └── text.txt └── updater.sh /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/* 2 | .idea/ 3 | vscode-extensions.txt 4 | *.gpg 5 | -------------------------------------------------------------------------------- /100.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | current_day=20 3 | echo "Today is day #$current_day" 4 | 5 | link="https://twitter.com/intent/tweet?text=%23100DaysOfCode%0ADay%20%23$current_day" 6 | echo "Opening $link" 7 | browse "$link" 8 | 9 | ((current_day++)) 10 | val="current_day=$current_day" 11 | sed -i "1s/.*/$val/" $0 # update first line of the file 12 | echo "Day incremented" -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Installify 📜 2 | 3 | A very simple script that installs important packages for a new linux installtion. 📦 4 | 5 | > **NOTE:** Depends on _`apt`_ package manager 6 | 7 | ## Usage 8 | 9 | ```bash 10 | wget https://codeload.github.com/kerolloz/installify/zip/master # downloads a zip file of the repo 11 | unzip master # unzips the file 12 | cd installify-master # changes to the directory 13 | bash installify.sh # runs the script 14 | ``` 15 | 16 | ## Behind the scenes 👨‍💻 17 | 18 | The script will: 19 | 20 | - Install packages from [requirements.txt](./requirements.txt) file. 21 | - Copy files from the `templates` directory to `~/Templates`. 22 | - Configure git global username and email. 23 | 24 | --- 25 | 26 | ## Editors 27 | 28 | - Neovim with [LazyVim](https://github.com/LazyVim/LazyVim) config. 29 | -------------------------------------------------------------------------------- /backup-dconf-settings.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) 4 | 5 | dconf dump / > "$SCRIPT_DIR/config/backup.dconf.settings" 6 | 7 | -------------------------------------------------------------------------------- /brave-browser-install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sudo apt install apt-transport-https curl 3 | 4 | sudo curl -fsSLo /usr/share/keyrings/brave-browser-archive-keyring.gpg https://brave-browser-apt-release.s3.brave.com/brave-browser-archive-keyring.gpg 5 | 6 | echo "deb [signed-by=/usr/share/keyrings/brave-browser-archive-keyring.gpg arch=amd64] https://brave-browser-apt-release.s3.brave.com/ stable main"|sudo tee /etc/apt/sources.list.d/brave-browser-release.list 7 | 8 | sudo apt update 9 | 10 | sudo apt install brave-browser 11 | -------------------------------------------------------------------------------- /bun-and-node.sh: -------------------------------------------------------------------------------- 1 | # This script installs Bun and Node.js LTS version 2 | 3 | curl -fsSL https://bun.sh/install | bash 4 | 5 | curl -fsSL https://raw.githubusercontent.com/tj/n/master/bin/n | bash -s lts 6 | 7 | -------------------------------------------------------------------------------- /config-nvim.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | mkdir -p ~/.config/nvim/ 3 | cp ./config/init.vim ~/.config/nvim/ 4 | # Install Vundle 5 | [ ! -d ~/.vim/bundle/Vundle.vim ] && git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim 6 | # Install plugins 7 | nvim +PluginInstall +qall 8 | -------------------------------------------------------------------------------- /config/backup.dconf.settings: -------------------------------------------------------------------------------- 1 | [apps/update-manager] 2 | first-run=false 3 | launch-count=4 4 | launch-time=int64 1672472622 5 | 6 | [com/ubuntu/update-notifier] 7 | release-check-time=uint32 1671832347 8 | 9 | [org/gnome/TextEditor] 10 | show-line-numbers=true 11 | style-variant='follow' 12 | 13 | [org/gnome/Totem] 14 | active-plugins=['screenshot', 'apple-trailers', 'rotation', 'mpris', 'save-file', 'autoload-subtitles', 'variable-rate', 'open-directory', 'movie-properties', 'vimeo', 'recent', 'screensaver', 'skipto'] 15 | subtitle-encoding='UTF-8' 16 | 17 | [org/gnome/calculator] 18 | accuracy=9 19 | angle-units='degrees' 20 | base=10 21 | button-mode='basic' 22 | number-format='automatic' 23 | show-thousands=false 24 | show-zeroes=false 25 | source-currency='' 26 | source-units='degree' 27 | target-currency='' 28 | target-units='radian' 29 | word-size=64 30 | 31 | [org/gnome/cheese] 32 | burst-delay=1000 33 | camera='EasyCamera (V4L2)' 34 | photo-x-resolution=1280 35 | photo-y-resolution=720 36 | video-x-resolution=1280 37 | video-y-resolution=720 38 | 39 | [org/gnome/control-center] 40 | last-panel='sound' 41 | window-state=(915, 717, true) 42 | 43 | [org/gnome/deja-dup] 44 | backend='google' 45 | prompt-check='2022-12-09T15:20:57.852888Z' 46 | window-height=500 47 | window-width=700 48 | 49 | [org/gnome/desktop/app-folders] 50 | folder-children=['Utilities', 'YaST'] 51 | 52 | [org/gnome/desktop/app-folders/folders/Utilities] 53 | apps=['gnome-abrt.desktop', 'gnome-system-log.desktop', 'nm-connection-editor.desktop', 'org.gnome.baobab.desktop', 'org.gnome.Connections.desktop', 'org.gnome.DejaDup.desktop', 'org.gnome.Dictionary.desktop', 'org.gnome.DiskUtility.desktop', 'org.gnome.eog.desktop', 'org.gnome.Evince.desktop', 'org.gnome.FileRoller.desktop', 'org.gnome.fonts.desktop', 'org.gnome.seahorse.Application.desktop', 'org.gnome.tweaks.desktop', 'org.gnome.Usage.desktop', 'vinagre.desktop'] 54 | categories=['X-GNOME-Utilities'] 55 | name='X-GNOME-Utilities.directory' 56 | translate=true 57 | 58 | [org/gnome/desktop/app-folders/folders/YaST] 59 | categories=['X-SuSE-YaST'] 60 | name='suse-yast.directory' 61 | translate=true 62 | 63 | [org/gnome/desktop/applications/terminal] 64 | exec='/usr/bin/qterminal' 65 | 66 | [org/gnome/desktop/background] 67 | color-shading-type='solid' 68 | picture-options='zoom' 69 | picture-uri='~/.config/background' 70 | picture-uri-dark='~/.config/background' 71 | primary-color='#000000' 72 | secondary-color='#000000' 73 | 74 | [org/gnome/desktop/input-sources] 75 | mru-sources=[('xkb', 'us'), ('xkb', 'ara')] 76 | sources=[('xkb', 'us'), ('xkb', 'ara')] 77 | xkb-options=@as [] 78 | 79 | [org/gnome/desktop/interface] 80 | clock-format='12h' 81 | clock-show-weekday=true 82 | color-scheme='prefer-dark' 83 | cursor-theme='Yaru' 84 | enable-hot-corners=true 85 | font-hinting='slight' 86 | gtk-theme='Yaru-dark' 87 | icon-theme='Yaru-dark' 88 | show-battery-percentage=true 89 | 90 | [org/gnome/desktop/notifications] 91 | application-children=['org-gnome-settings', 'firefox-firefox', 'qterminal', 'org-gnome-totem', 'org-gnome-texteditor', 'myiphide', 'org-gnome-characters', 'gnome-power-panel', 'gnome-network-panel', 'apport-gtk', 'snap-store-ubuntu-software', 'code', 'obsidian-obsidian', 'gitkraken-url-handler', 'org-kde-kdenlive', 'google-chrome', 'kazam', 'vlc', 'update-manager', 'org-gnome-nautilus', 'teams'] 92 | 93 | [org/gnome/desktop/notifications/application/apport-gtk] 94 | application-id='apport-gtk.desktop' 95 | 96 | [org/gnome/desktop/notifications/application/code] 97 | application-id='code.desktop' 98 | 99 | [org/gnome/desktop/notifications/application/firefox-firefox] 100 | application-id='firefox_firefox.desktop' 101 | 102 | [org/gnome/desktop/notifications/application/gitkraken-url-handler] 103 | application-id='gitkraken-url-handler.desktop' 104 | 105 | [org/gnome/desktop/notifications/application/gnome-network-panel] 106 | application-id='gnome-network-panel.desktop' 107 | 108 | [org/gnome/desktop/notifications/application/gnome-power-panel] 109 | application-id='gnome-power-panel.desktop' 110 | 111 | [org/gnome/desktop/notifications/application/google-chrome] 112 | application-id='google-chrome.desktop' 113 | 114 | [org/gnome/desktop/notifications/application/kazam] 115 | application-id='kazam.desktop' 116 | 117 | [org/gnome/desktop/notifications/application/myiphide] 118 | application-id='myiphide.desktop' 119 | 120 | [org/gnome/desktop/notifications/application/obsidian-obsidian] 121 | application-id='obsidian_obsidian.desktop' 122 | 123 | [org/gnome/desktop/notifications/application/org-gnome-characters] 124 | application-id='org.gnome.Characters.desktop' 125 | 126 | [org/gnome/desktop/notifications/application/org-gnome-nautilus] 127 | application-id='org.gnome.Nautilus.desktop' 128 | 129 | [org/gnome/desktop/notifications/application/org-gnome-settings] 130 | application-id='org.gnome.Settings.desktop' 131 | 132 | [org/gnome/desktop/notifications/application/org-gnome-texteditor] 133 | application-id='org.gnome.TextEditor.desktop' 134 | 135 | [org/gnome/desktop/notifications/application/org-gnome-totem] 136 | application-id='org.gnome.Totem.desktop' 137 | 138 | [org/gnome/desktop/notifications/application/org-kde-kdenlive] 139 | application-id='org.kde.kdenlive.desktop' 140 | 141 | [org/gnome/desktop/notifications/application/qterminal] 142 | application-id='qterminal.desktop' 143 | 144 | [org/gnome/desktop/notifications/application/snap-store-ubuntu-software] 145 | application-id='snap-store_ubuntu-software.desktop' 146 | 147 | [org/gnome/desktop/notifications/application/teams] 148 | application-id='teams.desktop' 149 | 150 | [org/gnome/desktop/notifications/application/update-manager] 151 | application-id='update-manager.desktop' 152 | 153 | [org/gnome/desktop/notifications/application/vlc] 154 | application-id='vlc.desktop' 155 | 156 | [org/gnome/desktop/peripherals/keyboard] 157 | numlock-state=true 158 | 159 | [org/gnome/desktop/peripherals/mouse] 160 | natural-scroll=false 161 | 162 | [org/gnome/desktop/peripherals/touchpad] 163 | natural-scroll=false 164 | speed=-0.017094017094017144 165 | two-finger-scrolling-enabled=true 166 | 167 | [org/gnome/desktop/privacy] 168 | report-technical-problems=true 169 | 170 | [org/gnome/desktop/screensaver] 171 | color-shading-type='solid' 172 | picture-options='zoom' 173 | picture-uri='file:///usr/share/backgrounds/Kinetic_Kudu_by_Joshua_T_dark.jpg' 174 | primary-color='#000000' 175 | secondary-color='#000000' 176 | 177 | [org/gnome/desktop/search-providers] 178 | sort-order=['org.gnome.Contacts.desktop', 'org.gnome.Documents.desktop', 'org.gnome.Nautilus.desktop'] 179 | 180 | [org/gnome/desktop/sound] 181 | allow-volume-above-100-percent=false 182 | event-sounds=true 183 | 184 | [org/gnome/evince/default] 185 | window-ratio=(0.93790849673202614, 0.96969696969696972) 186 | 187 | [org/gnome/evolution-data-server] 188 | migrated=true 189 | 190 | [org/gnome/gnome-system-monitor] 191 | current-tab='resources' 192 | maximized=true 193 | network-total-in-bits=false 194 | show-dependencies=false 195 | show-whose-processes='user' 196 | window-state=(1920, 1053, 0, 27) 197 | 198 | [org/gnome/gnome-system-monitor/disktreenew] 199 | col-6-visible=true 200 | col-6-width=0 201 | 202 | [org/gnome/mutter] 203 | attach-modal-dialogs=false 204 | center-new-windows=true 205 | 206 | [org/gnome/nautilus/icon-view] 207 | default-zoom-level='medium' 208 | 209 | [org/gnome/nautilus/preferences] 210 | default-folder-viewer='icon-view' 211 | search-filter-time-type='last_modified' 212 | search-view='list-view' 213 | 214 | [org/gnome/nautilus/window-state] 215 | initial-size=(890, 550) 216 | 217 | [org/gnome/nm-applet/eap/02a4b998-9944-4cdf-8675-9874a97d5272] 218 | ignore-ca-cert=false 219 | ignore-phase2-ca-cert=false 220 | 221 | [org/gnome/settings-daemon/plugins/color] 222 | night-light-enabled=true 223 | night-light-schedule-automatic=false 224 | night-light-schedule-from=6.0 225 | 226 | [org/gnome/settings-daemon/plugins/media-keys] 227 | custom-keybindings=['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/'] 228 | 229 | [org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0] 230 | binding='j' 231 | command='~/bin/center_active_window.py' 232 | name='Center Current Window' 233 | 234 | [org/gnome/settings-daemon/plugins/power] 235 | sleep-inactive-ac-timeout=3600 236 | sleep-inactive-ac-type='nothing' 237 | 238 | [org/gnome/shell] 239 | favorite-apps=['google-chrome.desktop', 'org.gnome.Nautilus.desktop', 'code.desktop', 'appimagekit_157e16fa70d454ad8e1aeeda7d3374cd-obsidian.desktop'] 240 | had-bluetooth-devices-setup=true 241 | last-selected-power-profile='performance' 242 | welcome-dialog-last-shown-version='43.0' 243 | 244 | [org/gnome/shell/extensions/dash-to-dock] 245 | autohide=true 246 | dock-fixed=false 247 | 248 | [org/gnome/shell/extensions/ding] 249 | arrangeorder='NAME' 250 | keep-arranged=true 251 | keep-stacked=true 252 | show-home=true 253 | sort-special-folders=true 254 | 255 | [org/gnome/software] 256 | check-timestamp=int64 1672653308 257 | 258 | [org/gnome/system/location] 259 | enabled=false 260 | 261 | [org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9] 262 | palette=['rgb(0,0,0)', 'rgb(170,0,0)', 'rgb(0,170,0)', 'rgb(170,85,0)', 'rgb(0,0,170)', 'rgb(170,0,170)', 'rgb(0,170,170)', 'rgb(170,170,170)', 'rgb(85,85,85)', 'rgb(255,85,85)', 'rgb(85,255,85)', 'rgb(255,255,85)', 'rgb(85,85,255)', 'rgb(255,85,255)', 'rgb(85,255,255)', 'rgb(255,255,255)'] 263 | 264 | [org/gtk/gtk4/settings/file-chooser] 265 | date-format='regular' 266 | location-mode='path-bar' 267 | show-hidden=false 268 | show-size-column=true 269 | show-type-column=true 270 | sidebar-width=173 271 | sort-column='name' 272 | sort-directories-first=false 273 | sort-order='ascending' 274 | type-format='category' 275 | window-size=(1031, 817) 276 | 277 | [org/gtk/settings/file-chooser] 278 | date-format='regular' 279 | location-mode='path-bar' 280 | show-hidden=false 281 | show-size-column=true 282 | show-type-column=true 283 | sidebar-width=161 284 | sort-column='name' 285 | sort-directories-first=false 286 | sort-order='ascending' 287 | type-format='category' 288 | window-position=(344, 94) 289 | window-size=(1231, 902) 290 | 291 | [system/locale] 292 | region='en_US.UTF-8' 293 | 294 | [system/proxy] 295 | ignore-hosts=['localhost', '192.168.*', '127.*', '10.', '169.254.*', '*.local', '172.1*', '172.2*', '172.31.*', ''] 296 | mode='none' 297 | 298 | [system/proxy/http] 299 | host='127.0.0.1' 300 | port=21218 301 | 302 | [system/proxy/https] 303 | host='127.0.0.1' 304 | port=21218 305 | -------------------------------------------------------------------------------- /config/init.vim: -------------------------------------------------------------------------------- 1 | set nocompatible " be iMproved, required 2 | filetype off " required 3 | syntax on 4 | set number 5 | set cursorline 6 | " Set shift width to 4 spaces. 7 | set shiftwidth=4 8 | " Set tab width to 4 columns. 9 | set tabstop=4 10 | " Use space characters instead of tabs. 11 | set expandtab 12 | " Do not save backup files. 13 | set nobackup 14 | " Do not wrap lines. Allow long lines to extend as far as the line goes. 15 | set nowrap 16 | " While searching though a file incrementally highlight matching characters as you type. 17 | set incsearch 18 | " Ignore capital letters during search. 19 | set ignorecase 20 | " Override the ignorecase option if searching for capital letters. 21 | " This will allow you to search specifically for capital letters. 22 | set smartcase 23 | " Show partial command you type in the last line of the screen. 24 | set showcmd 25 | " Show the mode you are on the last line. 26 | set showmode 27 | " Show matching words during a search. 28 | set showmatch 29 | " Use highlighting when doing a search. 30 | set hlsearch 31 | " Set the commands to save in history default number is 20. 32 | set history=1000 33 | " set the runtime path to include Vundle and initialize 34 | set rtp+=~/.vim/bundle/Vundle.vim 35 | call vundle#begin() 36 | " Add your plugins 37 | Plugin 'morhetz/gruvbox' 38 | Plugin 'vim-airline/vim-airline' 39 | " All of your Plugins must be added before the following line 40 | call vundle#end() " required 41 | filetype plugin indent on " required 42 | autocmd vimenter * ++nested colorscheme gruvbox 43 | let g:airline_powerline_fonts = 1 44 | -------------------------------------------------------------------------------- /config/kitty.conf: -------------------------------------------------------------------------------- 1 | # vim:fileencoding=utf-8:foldmethod=marker 2 | 3 | #: Fonts {{{ 4 | 5 | #: kitty has very powerful font management. You can configure 6 | #: individual font faces and even specify special fonts for particular 7 | #: characters. 8 | 9 | # font_family monospace 10 | # bold_font auto 11 | # italic_font auto 12 | # bold_italic_font auto 13 | 14 | #: You can specify different fonts for the bold/italic/bold-italic 15 | #: variants. To get a full list of supported fonts use the `kitty 16 | #: +list-fonts` command. By default they are derived automatically, by 17 | #: the OSes font system. When bold_font or bold_italic_font is set to 18 | #: auto on macOS, the priority of bold fonts is semi-bold, bold, 19 | #: heavy. Setting them manually is useful for font families that have 20 | #: many weight variants like Book, Medium, Thick, etc. For example:: 21 | 22 | #: font_family Operator Mono Book 23 | #: bold_font Operator Mono Medium 24 | #: italic_font Operator Mono Book Italic 25 | #: bold_italic_font Operator Mono Medium Italic 26 | 27 | font_size 13.0 28 | 29 | #: Font size (in pts) 30 | 31 | # force_ltr no 32 | 33 | #: kitty does not support BIDI (bidirectional text), however, for RTL 34 | #: scripts, words are automatically displayed in RTL. That is to say, 35 | #: in an RTL script, the words "HELLO WORLD" display in kitty as 36 | #: "WORLD HELLO", and if you try to select a substring of an RTL- 37 | #: shaped string, you will get the character that would be there had 38 | #: the string been LTR. For example, assuming the Hebrew word ירושלים, 39 | #: selecting the character that on the screen appears to be ם actually 40 | #: writes into the selection buffer the character י. kitty's default 41 | #: behavior is useful in conjunction with a filter to reverse the word 42 | #: order, however, if you wish to manipulate RTL glyphs, it can be 43 | #: very challenging to work with, so this option is provided to turn 44 | #: it off. Furthermore, this option can be used with the command line 45 | #: program GNU FriBidi 46 | #: to get BIDI support, because it will force kitty to always treat 47 | #: the text as LTR, which FriBidi expects for terminals. 48 | 49 | # symbol_map 50 | 51 | #: E.g. symbol_map U+E0A0-U+E0A3,U+E0C0-U+E0C7 PowerlineSymbols 52 | 53 | #: Map the specified Unicode codepoints to a particular font. Useful 54 | #: if you need special rendering for some symbols, such as for 55 | #: Powerline. Avoids the need for patched fonts. Each Unicode code 56 | #: point is specified in the form `U+`. You 57 | #: can specify multiple code points, separated by commas and ranges 58 | #: separated by hyphens. This option can be specified multiple times. 59 | #: The syntax is:: 60 | 61 | #: symbol_map codepoints Font Family Name 62 | 63 | # narrow_symbols 64 | 65 | #: E.g. narrow_symbols U+E0A0-U+E0A3,U+E0C0-U+E0C7 1 66 | 67 | #: Usually, for Private Use Unicode characters and some symbol/dingbat 68 | #: characters, if the character is followed by one or more spaces, 69 | #: kitty will use those extra cells to render the character larger, if 70 | #: the character in the font has a wide aspect ratio. Using this 71 | #: option you can force kitty to restrict the specified code points to 72 | #: render in the specified number of cells (defaulting to one cell). 73 | #: This option can be specified multiple times. The syntax is:: 74 | 75 | #: narrow_symbols codepoints [optionally the number of cells] 76 | 77 | # disable_ligatures never 78 | 79 | #: Choose how you want to handle multi-character ligatures. The 80 | #: default is to always render them. You can tell kitty to not render 81 | #: them when the cursor is over them by using cursor to make editing 82 | #: easier, or have kitty never render them at all by using always, if 83 | #: you don't like them. The ligature strategy can be set per-window 84 | #: either using the kitty remote control facility or by defining 85 | #: shortcuts for it in kitty.conf, for example:: 86 | 87 | #: map alt+1 disable_ligatures_in active always 88 | #: map alt+2 disable_ligatures_in all never 89 | #: map alt+3 disable_ligatures_in tab cursor 90 | 91 | #: Note that this refers to programming ligatures, typically 92 | #: implemented using the calt OpenType feature. For disabling general 93 | #: ligatures, use the font_features option. 94 | 95 | # font_features 96 | 97 | #: E.g. font_features none 98 | 99 | #: Choose exactly which OpenType features to enable or disable. This 100 | #: is useful as some fonts might have features worthwhile in a 101 | #: terminal. For example, Fira Code includes a discretionary feature, 102 | #: zero, which in that font changes the appearance of the zero (0), to 103 | #: make it more easily distinguishable from Ø. Fira Code also includes 104 | #: other discretionary features known as Stylistic Sets which have the 105 | #: tags ss01 through ss20. 106 | 107 | #: For the exact syntax to use for individual features, see the 108 | #: HarfBuzz documentation . 110 | 111 | #: Note that this code is indexed by PostScript name, and not the font 112 | #: family. This allows you to define very precise feature settings; 113 | #: e.g. you can disable a feature in the italic font but not in the 114 | #: regular font. 115 | 116 | #: On Linux, font features are first read from the FontConfig database 117 | #: and then this option is applied, so they can be configured in a 118 | #: single, central place. 119 | 120 | #: To get the PostScript name for a font, use `kitty +list-fonts 121 | #: --psnames`: 122 | 123 | #: .. code-block:: sh 124 | 125 | #: $ kitty +list-fonts --psnames | grep Fira 126 | #: Fira Code 127 | #: Fira Code Bold (FiraCode-Bold) 128 | #: Fira Code Light (FiraCode-Light) 129 | #: Fira Code Medium (FiraCode-Medium) 130 | #: Fira Code Regular (FiraCode-Regular) 131 | #: Fira Code Retina (FiraCode-Retina) 132 | 133 | #: The part in brackets is the PostScript name. 134 | 135 | #: Enable alternate zero and oldstyle numerals:: 136 | 137 | #: font_features FiraCode-Retina +zero +onum 138 | 139 | #: Enable only alternate zero in the bold font:: 140 | 141 | #: font_features FiraCode-Bold +zero 142 | 143 | #: Disable the normal ligatures, but keep the calt feature which (in 144 | #: this font) breaks up monotony:: 145 | 146 | #: font_features TT2020StyleB-Regular -liga +calt 147 | 148 | #: In conjunction with force_ltr, you may want to disable Arabic 149 | #: shaping entirely, and only look at their isolated forms if they 150 | #: show up in a document. You can do this with e.g.:: 151 | 152 | #: font_features UnifontMedium +isol -medi -fina -init 153 | 154 | # modify_font 155 | 156 | #: Modify font characteristics such as the position or thickness of 157 | #: the underline and strikethrough. The modifications can have the 158 | #: suffix px for pixels or % for percentage of original value. No 159 | #: suffix means use pts. For example:: 160 | 161 | #: modify_font underline_position -2 162 | #: modify_font underline_thickness 150% 163 | #: modify_font strikethrough_position 2px 164 | 165 | #: Additionally, you can modify the size of the cell in which each 166 | #: font glyph is rendered and the baseline at which the glyph is 167 | #: placed in the cell. For example:: 168 | 169 | #: modify_font cell_width 80% 170 | #: modify_font cell_height -2px 171 | #: modify_font baseline 3 172 | 173 | #: Note that modifying the baseline will automatically adjust the 174 | #: underline and strikethrough positions by the same amount. 175 | #: Increasing the baseline raises glyphs inside the cell and 176 | #: decreasing it lowers them. Decreasing the cell size might cause 177 | #: rendering artifacts, so use with care. 178 | 179 | # box_drawing_scale 0.001, 1, 1.5, 2 180 | 181 | #: The sizes of the lines used for the box drawing Unicode characters. 182 | #: These values are in pts. They will be scaled by the monitor DPI to 183 | #: arrive at a pixel value. There must be four values corresponding to 184 | #: thin, normal, thick, and very thick lines. 185 | 186 | # undercurl_style thin-sparse 187 | 188 | #: The style with which undercurls are rendered. This option takes the 189 | #: form (thin|thick)-(sparse|dense). Thin and thick control the 190 | #: thickness of the undercurl. Sparse and dense control how often the 191 | #: curl oscillates. With sparse the curl will peak once per character, 192 | #: with dense twice. 193 | 194 | # text_composition_strategy platform 195 | 196 | #: Control how kitty composites text glyphs onto the background color. 197 | #: The default value of platform tries for text rendering as close to 198 | #: "native" for the platform kitty is running on as possible. 199 | 200 | #: A value of legacy uses the old (pre kitty 0.28) strategy for how 201 | #: glyphs are composited. This will make dark text on light 202 | #: backgrounds look thicker and light text on dark backgrounds 203 | #: thinner. It might also make some text appear like the strokes are 204 | #: uneven. 205 | 206 | #: You can fine tune the actual contrast curve used for glyph 207 | #: composition by specifying up to two space-separated numbers for 208 | #: this setting. 209 | 210 | #: The first number is the gamma adjustment, which controls the 211 | #: thickness of dark text on light backgrounds. Increasing the value 212 | #: will make text appear thicker. The default value for this is 1.0 on 213 | #: Linux and 1.7 on macOS. Valid values are 0.01 and above. The result 214 | #: is scaled based on the luminance difference between the background 215 | #: and the foreground. Dark text on light backgrounds receives the 216 | #: full impact of the curve while light text on dark backgrounds is 217 | #: affected very little. 218 | 219 | #: The second number is an additional multiplicative contrast. It is 220 | #: percentage ranging from 0 to 100. The default value is 0 on Linux 221 | #: and 30 on macOS. 222 | 223 | #: If you wish to achieve similar looking thickness in light and dark 224 | #: themes, a good way to experiment is start by setting the value to 225 | #: 1.0 0 and use a dark theme. Then adjust the second parameter until 226 | #: it looks good. Then switch to a light theme and adjust the first 227 | #: parameter until the perceived thickness matches the dark theme. 228 | 229 | # text_fg_override_threshold 0 230 | 231 | #: The minimum accepted difference in luminance between the foreground 232 | #: and background color, below which kitty will override the 233 | #: foreground color. It is percentage ranging from 0 to 100. If the 234 | #: difference in luminance of the foreground and background is below 235 | #: this threshold, the foreground color will be set to white if the 236 | #: background is dark or black if the background is light. The default 237 | #: value is 0, which means no overriding is performed. Useful when 238 | #: working with applications that use colors that do not contrast well 239 | #: with your preferred color scheme. 240 | 241 | #: }}} 242 | 243 | #: Cursor customization {{{ 244 | 245 | # cursor #cccccc 246 | 247 | #: Default cursor color. If set to the special value none the cursor 248 | #: will be rendered with a "reverse video" effect. It's color will be 249 | #: the color of the text in the cell it is over and the text will be 250 | #: rendered with the background color of the cell. Note that if the 251 | #: program running in the terminal sets a cursor color, this takes 252 | #: precedence. Also, the cursor colors are modified if the cell 253 | #: background and foreground colors have very low contrast. 254 | 255 | # cursor_text_color #111111 256 | 257 | #: The color of text under the cursor. If you want it rendered with 258 | #: the background color of the cell underneath instead, use the 259 | #: special keyword: background. Note that if cursor is set to none 260 | #: then this option is ignored. 261 | 262 | # cursor_shape block 263 | 264 | #: The cursor shape can be one of block, beam, underline. Note that 265 | #: when reloading the config this will be changed only if the cursor 266 | #: shape has not been set by the program running in the terminal. This 267 | #: sets the default cursor shape, applications running in the terminal 268 | #: can override it. In particular, shell integration 269 | #: in kitty sets 270 | #: the cursor shape to beam at shell prompts. You can avoid this by 271 | #: setting shell_integration to no-cursor. 272 | 273 | # cursor_beam_thickness 1.5 274 | 275 | #: The thickness of the beam cursor (in pts). 276 | 277 | # cursor_underline_thickness 2.0 278 | 279 | #: The thickness of the underline cursor (in pts). 280 | 281 | # cursor_blink_interval -1 282 | 283 | #: The interval to blink the cursor (in seconds). Set to zero to 284 | #: disable blinking. Negative values mean use system default. Note 285 | #: that the minimum interval will be limited to repaint_delay. 286 | 287 | # cursor_stop_blinking_after 15.0 288 | 289 | #: Stop blinking cursor after the specified number of seconds of 290 | #: keyboard inactivity. Set to zero to never stop blinking. 291 | 292 | #: }}} 293 | 294 | #: Scrollback {{{ 295 | 296 | # scrollback_lines 2000 297 | 298 | #: Number of lines of history to keep in memory for scrolling back. 299 | #: Memory is allocated on demand. Negative numbers are (effectively) 300 | #: infinite scrollback. Note that using very large scrollback is not 301 | #: recommended as it can slow down performance of the terminal and 302 | #: also use large amounts of RAM. Instead, consider using 303 | #: scrollback_pager_history_size. Note that on config reload if this 304 | #: is changed it will only affect newly created windows, not existing 305 | #: ones. 306 | 307 | # scrollback_pager less --chop-long-lines --RAW-CONTROL-CHARS +INPUT_LINE_NUMBER 308 | 309 | #: Program with which to view scrollback in a new window. The 310 | #: scrollback buffer is passed as STDIN to this program. If you change 311 | #: it, make sure the program you use can handle ANSI escape sequences 312 | #: for colors and text formatting. INPUT_LINE_NUMBER in the command 313 | #: line above will be replaced by an integer representing which line 314 | #: should be at the top of the screen. Similarly CURSOR_LINE and 315 | #: CURSOR_COLUMN will be replaced by the current cursor position or 316 | #: set to 0 if there is no cursor, for example, when showing the last 317 | #: command output. 318 | 319 | # scrollback_pager_history_size 0 320 | 321 | #: Separate scrollback history size (in MB), used only for browsing 322 | #: the scrollback buffer with pager. This separate buffer is not 323 | #: available for interactive scrolling but will be piped to the pager 324 | #: program when viewing scrollback buffer in a separate window. The 325 | #: current implementation stores the data in UTF-8, so approximately 326 | #: 10000 lines per megabyte at 100 chars per line, for pure ASCII, 327 | #: unformatted text. A value of zero or less disables this feature. 328 | #: The maximum allowed size is 4GB. Note that on config reload if this 329 | #: is changed it will only affect newly created windows, not existing 330 | #: ones. 331 | 332 | # scrollback_fill_enlarged_window no 333 | 334 | #: Fill new space with lines from the scrollback buffer after 335 | #: enlarging a window. 336 | 337 | # wheel_scroll_multiplier 5.0 338 | 339 | #: Multiplier for the number of lines scrolled by the mouse wheel. 340 | #: Note that this is only used for low precision scrolling devices, 341 | #: not for high precision scrolling devices on platforms such as macOS 342 | #: and Wayland. Use negative numbers to change scroll direction. See 343 | #: also wheel_scroll_min_lines. 344 | 345 | # wheel_scroll_min_lines 1 346 | 347 | #: The minimum number of lines scrolled by the mouse wheel. The scroll 348 | #: multiplier wheel_scroll_multiplier only takes effect after it 349 | #: reaches this number. Note that this is only used for low precision 350 | #: scrolling devices like wheel mice that scroll by very small amounts 351 | #: when using the wheel. With a negative number, the minimum number of 352 | #: lines will always be added. 353 | 354 | # touch_scroll_multiplier 1.0 355 | 356 | #: Multiplier for the number of lines scrolled by a touchpad. Note 357 | #: that this is only used for high precision scrolling devices on 358 | #: platforms such as macOS and Wayland. Use negative numbers to change 359 | #: scroll direction. 360 | 361 | #: }}} 362 | 363 | #: Mouse {{{ 364 | 365 | # mouse_hide_wait 3.0 366 | 367 | #: Hide mouse cursor after the specified number of seconds of the 368 | #: mouse not being used. Set to zero to disable mouse cursor hiding. 369 | #: Set to a negative value to hide the mouse cursor immediately when 370 | #: typing text. Disabled by default on macOS as getting it to work 371 | #: robustly with the ever-changing sea of bugs that is Cocoa is too 372 | #: much effort. 373 | 374 | # url_color #0087bd 375 | # url_style curly 376 | 377 | #: The color and style for highlighting URLs on mouse-over. url_style 378 | #: can be one of: none, straight, double, curly, dotted, dashed. 379 | 380 | # open_url_with default 381 | 382 | #: The program to open clicked URLs. The special value default with 383 | #: first look for any URL handlers defined via the open_actions 384 | #: facility and if non 385 | #: are found, it will use the Operating System's default URL handler 386 | #: (open on macOS and xdg-open on Linux). 387 | 388 | # url_prefixes file ftp ftps gemini git gopher http https irc ircs kitty mailto news sftp ssh 389 | 390 | #: The set of URL prefixes to look for when detecting a URL under the 391 | #: mouse cursor. 392 | 393 | # detect_urls yes 394 | 395 | #: Detect URLs under the mouse. Detected URLs are highlighted with an 396 | #: underline and the mouse cursor becomes a hand over them. Even if 397 | #: this option is disabled, URLs are still clickable. 398 | 399 | # url_excluded_characters 400 | 401 | #: Additional characters to be disallowed from URLs, when detecting 402 | #: URLs under the mouse cursor. By default, all characters that are 403 | #: legal in URLs are allowed. Additionally, newlines are allowed (but 404 | #: stripped). This is to accommodate programs such as mutt that add 405 | #: hard line breaks even for continued lines. \n can be added to this 406 | #: option to disable this behavior. Special characters can be 407 | #: specified using backslash escapes, to specify a backslash use a 408 | #: double backslash. 409 | 410 | # show_hyperlink_targets no 411 | 412 | #: When the mouse hovers over a terminal hyperlink, show the actual 413 | #: URL that will be activated when the hyperlink is clicked. 414 | 415 | # copy_on_select no 416 | 417 | #: Copy to clipboard or a private buffer on select. With this set to 418 | #: clipboard, selecting text with the mouse will cause the text to be 419 | #: copied to clipboard. Useful on platforms such as macOS that do not 420 | #: have the concept of primary selection. You can instead specify a 421 | #: name such as a1 to copy to a private kitty buffer. Map a shortcut 422 | #: with the paste_from_buffer action to paste from this private 423 | #: buffer. For example:: 424 | 425 | #: copy_on_select a1 426 | #: map shift+cmd+v paste_from_buffer a1 427 | 428 | #: Note that copying to the clipboard is a security risk, as all 429 | #: programs, including websites open in your browser can read the 430 | #: contents of the system clipboard. 431 | 432 | # paste_actions quote-urls-at-prompt 433 | 434 | #: A comma separated list of actions to take when pasting text into 435 | #: the terminal. The supported paste actions are: 436 | 437 | #: quote-urls-at-prompt: 438 | #: If the text being pasted is a URL and the cursor is at a shell prompt, 439 | #: automatically quote the URL (needs shell_integration). 440 | #: confirm: 441 | #: Confirm the paste if bracketed paste mode is not active or there is 442 | #: a large amount of text being pasted. 443 | #: filter: 444 | #: Run the filter_paste() function from the file paste-actions.py in 445 | #: the kitty config directory on the pasted text. The text returned by the 446 | #: function will be actually pasted. 447 | 448 | # strip_trailing_spaces never 449 | 450 | #: Remove spaces at the end of lines when copying to clipboard. A 451 | #: value of smart will do it when using normal selections, but not 452 | #: rectangle selections. A value of always will always do it. 453 | 454 | # select_by_word_characters @-./_~?&=%+# 455 | 456 | #: Characters considered part of a word when double clicking. In 457 | #: addition to these characters any character that is marked as an 458 | #: alphanumeric character in the Unicode database will be matched. 459 | 460 | # select_by_word_characters_forward 461 | 462 | #: Characters considered part of a word when extending the selection 463 | #: forward on double clicking. In addition to these characters any 464 | #: character that is marked as an alphanumeric character in the 465 | #: Unicode database will be matched. 466 | 467 | #: If empty (default) select_by_word_characters will be used for both 468 | #: directions. 469 | 470 | # click_interval -1.0 471 | 472 | #: The interval between successive clicks to detect double/triple 473 | #: clicks (in seconds). Negative numbers will use the system default 474 | #: instead, if available, or fallback to 0.5. 475 | 476 | # focus_follows_mouse no 477 | 478 | #: Set the active window to the window under the mouse when moving the 479 | #: mouse around. 480 | 481 | # pointer_shape_when_grabbed arrow 482 | 483 | #: The shape of the mouse pointer when the program running in the 484 | #: terminal grabs the mouse. Valid values are: arrow, beam and hand. 485 | 486 | # default_pointer_shape beam 487 | 488 | #: The default shape of the mouse pointer. Valid values are: arrow, 489 | #: beam and hand. 490 | 491 | # pointer_shape_when_dragging beam 492 | 493 | #: The default shape of the mouse pointer when dragging across text. 494 | #: Valid values are: arrow, beam and hand. 495 | 496 | #: Mouse actions {{{ 497 | 498 | #: Mouse buttons can be mapped to perform arbitrary actions. The 499 | #: syntax is: 500 | 501 | #: .. code-block:: none 502 | 503 | #: mouse_map button-name event-type modes action 504 | 505 | #: Where button-name is one of left, middle, right, b1 ... b8 with 506 | #: added keyboard modifiers. For example: ctrl+shift+left refers to 507 | #: holding the Ctrl+Shift keys while clicking with the left mouse 508 | #: button. The value b1 ... b8 can be used to refer to up to eight 509 | #: buttons on a mouse. 510 | 511 | #: event-type is one of press, release, doublepress, triplepress, 512 | #: click, doubleclick. modes indicates whether the action is performed 513 | #: when the mouse is grabbed by the program running in the terminal, 514 | #: or not. The values are grabbed or ungrabbed or a comma separated 515 | #: combination of them. grabbed refers to when the program running in 516 | #: the terminal has requested mouse events. Note that the click and 517 | #: double click events have a delay of click_interval to disambiguate 518 | #: from double and triple presses. 519 | 520 | #: You can run kitty with the kitty --debug-input command line option 521 | #: to see mouse events. See the builtin actions below to get a sense 522 | #: of what is possible. 523 | 524 | #: If you want to unmap an action, map it to no_op. For example, to 525 | #: disable opening of URLs with a plain click:: 526 | 527 | #: mouse_map left click ungrabbed no_op 528 | 529 | #: See all the mappable actions including mouse actions here 530 | #: . 531 | 532 | #: .. note:: 533 | #: Once a selection is started, releasing the button that started it will 534 | #: automatically end it and no release event will be dispatched. 535 | 536 | # clear_all_mouse_actions no 537 | 538 | #: Remove all mouse action definitions up to this point. Useful, for 539 | #: instance, to remove the default mouse actions. 540 | 541 | #: Click the link under the mouse or move the cursor 542 | 543 | # mouse_map left click ungrabbed mouse_handle_click selection link prompt 544 | 545 | #:: First check for a selection and if one exists do nothing. Then 546 | #:: check for a link under the mouse cursor and if one exists, click 547 | #:: it. Finally check if the click happened at the current shell 548 | #:: prompt and if so, move the cursor to the click location. Note 549 | #:: that this requires shell integration 550 | #:: to work. 551 | 552 | #: Click the link under the mouse or move the cursor even when grabbed 553 | 554 | # mouse_map shift+left click grabbed,ungrabbed mouse_handle_click selection link prompt 555 | 556 | #:: Same as above, except that the action is performed even when the 557 | #:: mouse is grabbed by the program running in the terminal. 558 | 559 | #: Click the link under the mouse cursor 560 | 561 | # mouse_map ctrl+shift+left release grabbed,ungrabbed mouse_handle_click link 562 | 563 | #:: Variant with Ctrl+Shift is present because the simple click based 564 | #:: version has an unavoidable delay of click_interval, to 565 | #:: disambiguate clicks from double clicks. 566 | 567 | #: Discard press event for link click 568 | 569 | # mouse_map ctrl+shift+left press grabbed discard_event 570 | 571 | #:: Prevent this press event from being sent to the program that has 572 | #:: grabbed the mouse, as the corresponding release event is used to 573 | #:: open a URL. 574 | 575 | #: Paste from the primary selection 576 | 577 | # mouse_map middle release ungrabbed paste_from_selection 578 | 579 | #: Start selecting text 580 | 581 | # mouse_map left press ungrabbed mouse_selection normal 582 | 583 | #: Start selecting text in a rectangle 584 | 585 | # mouse_map ctrl+alt+left press ungrabbed mouse_selection rectangle 586 | 587 | #: Select a word 588 | 589 | # mouse_map left doublepress ungrabbed mouse_selection word 590 | 591 | #: Select a line 592 | 593 | # mouse_map left triplepress ungrabbed mouse_selection line 594 | 595 | #: Select line from point 596 | 597 | # mouse_map ctrl+alt+left triplepress ungrabbed mouse_selection line_from_point 598 | 599 | #:: Select from the clicked point to the end of the line. 600 | 601 | #: Extend the current selection 602 | 603 | # mouse_map right press ungrabbed mouse_selection extend 604 | 605 | #:: If you want only the end of the selection to be moved instead of 606 | #:: the nearest boundary, use move-end instead of extend. 607 | 608 | #: Paste from the primary selection even when grabbed 609 | 610 | # mouse_map shift+middle release ungrabbed,grabbed paste_selection 611 | # mouse_map shift+middle press grabbed discard_event 612 | 613 | #: Start selecting text even when grabbed 614 | 615 | # mouse_map shift+left press ungrabbed,grabbed mouse_selection normal 616 | 617 | #: Start selecting text in a rectangle even when grabbed 618 | 619 | # mouse_map ctrl+shift+alt+left press ungrabbed,grabbed mouse_selection rectangle 620 | 621 | #: Select a word even when grabbed 622 | 623 | # mouse_map shift+left doublepress ungrabbed,grabbed mouse_selection word 624 | 625 | #: Select a line even when grabbed 626 | 627 | # mouse_map shift+left triplepress ungrabbed,grabbed mouse_selection line 628 | 629 | #: Select line from point even when grabbed 630 | 631 | # mouse_map ctrl+shift+alt+left triplepress ungrabbed,grabbed mouse_selection line_from_point 632 | 633 | #:: Select from the clicked point to the end of the line even when 634 | #:: grabbed. 635 | 636 | #: Extend the current selection even when grabbed 637 | 638 | # mouse_map shift+right press ungrabbed,grabbed mouse_selection extend 639 | 640 | #: Show clicked command output in pager 641 | 642 | # mouse_map ctrl+shift+right press ungrabbed mouse_show_command_output 643 | 644 | #:: Requires shell integration 645 | #:: to work. 646 | 647 | #: }}} 648 | 649 | #: }}} 650 | 651 | #: Performance tuning {{{ 652 | 653 | # repaint_delay 10 654 | 655 | #: Delay between screen updates (in milliseconds). Decreasing it, 656 | #: increases frames-per-second (FPS) at the cost of more CPU usage. 657 | #: The default value yields ~100 FPS which is more than sufficient for 658 | #: most uses. Note that to actually achieve 100 FPS, you have to 659 | #: either set sync_to_monitor to no or use a monitor with a high 660 | #: refresh rate. Also, to minimize latency when there is pending input 661 | #: to be processed, this option is ignored. 662 | 663 | # input_delay 3 664 | 665 | #: Delay before input from the program running in the terminal is 666 | #: processed (in milliseconds). Note that decreasing it will increase 667 | #: responsiveness, but also increase CPU usage and might cause flicker 668 | #: in full screen programs that redraw the entire screen on each loop, 669 | #: because kitty is so fast that partial screen updates will be drawn. 670 | 671 | # sync_to_monitor yes 672 | 673 | #: Sync screen updates to the refresh rate of the monitor. This 674 | #: prevents screen tearing 675 | #: when scrolling. 676 | #: However, it limits the rendering speed to the refresh rate of your 677 | #: monitor. With a very high speed mouse/high keyboard repeat rate, 678 | #: you may notice some slight input latency. If so, set this to no. 679 | 680 | #: }}} 681 | 682 | #: Terminal bell {{{ 683 | 684 | # enable_audio_bell yes 685 | 686 | #: The audio bell. Useful to disable it in environments that require 687 | #: silence. 688 | 689 | # visual_bell_duration 0.0 690 | 691 | #: The visual bell duration (in seconds). Flash the screen when a bell 692 | #: occurs for the specified number of seconds. Set to zero to disable. 693 | 694 | # visual_bell_color none 695 | 696 | #: The color used by visual bell. Set to none will fall back to 697 | #: selection background color. If you feel that the visual bell is too 698 | #: bright, you can set it to a darker color. 699 | 700 | # window_alert_on_bell yes 701 | 702 | #: Request window attention on bell. Makes the dock icon bounce on 703 | #: macOS or the taskbar flash on linux. 704 | 705 | # bell_on_tab "🔔 " 706 | 707 | #: Some text or a Unicode symbol to show on the tab if a window in the 708 | #: tab that does not have focus has a bell. If you want to use leading 709 | #: or trailing spaces, surround the text with quotes. See 710 | #: tab_title_template for how this is rendered. 711 | 712 | #: For backwards compatibility, values of yes, y and true are 713 | #: converted to the default bell symbol and no, n, false and none are 714 | #: converted to the empty string. 715 | 716 | # command_on_bell none 717 | 718 | #: Program to run when a bell occurs. The environment variable 719 | #: KITTY_CHILD_CMDLINE can be used to get the program running in the 720 | #: window in which the bell occurred. 721 | 722 | # bell_path none 723 | 724 | #: Path to a sound file to play as the bell sound. If set to none, the 725 | #: system default bell sound is used. Must be in a format supported by 726 | #: the operating systems sound API, such as WAV or OGA on Linux 727 | #: (libcanberra) or AIFF, MP3 or WAV on macOS (NSSound) 728 | 729 | # linux_bell_theme __custom 730 | 731 | #: The XDG Sound Theme kitty will use to play the bell sound. Defaults 732 | #: to the custom theme name used by GNOME and Budgie, falling back to 733 | #: the default freedesktop theme if it does not exist. This option may 734 | #: be removed if Linux ever provides desktop-agnostic support for 735 | #: setting system sound themes. 736 | 737 | #: }}} 738 | 739 | #: Window layout {{{ 740 | 741 | # remember_window_size yes 742 | # initial_window_width 640 743 | # initial_window_height 400 744 | 745 | #: If enabled, the OS Window size will be remembered so that new 746 | #: instances of kitty will have the same size as the previous 747 | #: instance. If disabled, the OS Window will initially have size 748 | #: configured by initial_window_width/height, in pixels. You can use a 749 | #: suffix of "c" on the width/height values to have them interpreted 750 | #: as number of cells instead of pixels. 751 | 752 | # enabled_layouts * 753 | 754 | #: The enabled window layouts. A comma separated list of layout names. 755 | #: The special value all means all layouts. The first listed layout 756 | #: will be used as the startup layout. Default configuration is all 757 | #: layouts in alphabetical order. For a list of available layouts, see 758 | #: the layouts . 759 | 760 | # window_resize_step_cells 2 761 | # window_resize_step_lines 2 762 | 763 | #: The step size (in units of cell width/cell height) to use when 764 | #: resizing kitty windows in a layout with the shortcut 765 | #: start_resizing_window. The cells value is used for horizontal 766 | #: resizing, and the lines value is used for vertical resizing. 767 | 768 | # window_border_width 0.5pt 769 | 770 | #: The width of window borders. Can be either in pixels (px) or pts 771 | #: (pt). Values in pts will be rounded to the nearest number of pixels 772 | #: based on screen resolution. If not specified, the unit is assumed 773 | #: to be pts. Note that borders are displayed only when more than one 774 | #: window is visible. They are meant to separate multiple windows. 775 | 776 | # draw_minimal_borders yes 777 | 778 | #: Draw only the minimum borders needed. This means that only the 779 | #: borders that separate the window from a neighbor are drawn. Note 780 | #: that setting a non-zero window_margin_width overrides this and 781 | #: causes all borders to be drawn. 782 | 783 | # window_margin_width 0 784 | 785 | #: The window margin (in pts) (blank area outside the border). A 786 | #: single value sets all four sides. Two values set the vertical and 787 | #: horizontal sides. Three values set top, horizontal and bottom. Four 788 | #: values set top, right, bottom and left. 789 | 790 | # single_window_margin_width -1 791 | 792 | #: The window margin to use when only a single window is visible (in 793 | #: pts). Negative values will cause the value of window_margin_width 794 | #: to be used instead. A single value sets all four sides. Two values 795 | #: set the vertical and horizontal sides. Three values set top, 796 | #: horizontal and bottom. Four values set top, right, bottom and left. 797 | 798 | # window_padding_width 0 799 | 800 | #: The window padding (in pts) (blank area between the text and the 801 | #: window border). A single value sets all four sides. Two values set 802 | #: the vertical and horizontal sides. Three values set top, horizontal 803 | #: and bottom. Four values set top, right, bottom and left. 804 | 805 | # placement_strategy center 806 | 807 | #: When the window size is not an exact multiple of the cell size, the 808 | #: cell area of the terminal window will have some extra padding on 809 | #: the sides. You can control how that padding is distributed with 810 | #: this option. Using a value of center means the cell area will be 811 | #: placed centrally. A value of top-left means the padding will be 812 | #: only at the bottom and right edges. 813 | 814 | # active_border_color #00ff00 815 | 816 | #: The color for the border of the active window. Set this to none to 817 | #: not draw borders around the active window. 818 | 819 | # inactive_border_color #cccccc 820 | 821 | #: The color for the border of inactive windows. 822 | 823 | # bell_border_color #ff5a00 824 | 825 | #: The color for the border of inactive windows in which a bell has 826 | #: occurred. 827 | 828 | # inactive_text_alpha 1.0 829 | 830 | #: Fade the text in inactive windows by the specified amount (a number 831 | #: between zero and one, with zero being fully faded). 832 | 833 | # hide_window_decorations no 834 | 835 | #: Hide the window decorations (title-bar and window borders) with 836 | #: yes. On macOS, titlebar-only and titlebar-and-corners can be used 837 | #: to only hide the titlebar and the rounded corners. Whether this 838 | #: works and exactly what effect it has depends on the window 839 | #: manager/operating system. Note that the effects of changing this 840 | #: option when reloading config are undefined. When using titlebar- 841 | #: only, it is useful to also set window_margin_width and 842 | #: placement_strategy to prevent the rounded corners from clipping 843 | #: text. Or use titlebar-and-corners. 844 | 845 | # window_logo_path none 846 | 847 | #: Path to a logo image. Must be in PNG format. Relative paths are 848 | #: interpreted relative to the kitty config directory. The logo is 849 | #: displayed in a corner of every kitty window. The position is 850 | #: controlled by window_logo_position. Individual windows can be 851 | #: configured to have different logos either using the launch action 852 | #: or the remote control facility. 854 | 855 | # window_logo_position bottom-right 856 | 857 | #: Where to position the window logo in the window. The value can be 858 | #: one of: top-left, top, top-right, left, center, right, bottom-left, 859 | #: bottom, bottom-right. 860 | 861 | # window_logo_alpha 0.5 862 | 863 | #: The amount the logo should be faded into the background. With zero 864 | #: being fully faded and one being fully opaque. 865 | 866 | # resize_debounce_time 0.1 0.5 867 | 868 | #: The time to wait before redrawing the screen during a live resize 869 | #: of the OS window, when no new resize events have been received, 870 | #: i.e. when resizing is either paused or finished. On platforms such 871 | #: as macOS, where the operating system sends events corresponding to 872 | #: the start and end of a live resize, the second number is used for 873 | #: redraw-after-pause since kitty can distinguish between a pause and 874 | #: end of resizing. On such systems the first number is ignored and 875 | #: redraw is immediate after end of resize. On other systems the 876 | #: first number is used so that kitty is "ready" quickly after the end 877 | #: of resizing, while not also continuously redrawing, to save energy. 878 | 879 | # resize_in_steps no 880 | 881 | #: Resize the OS window in steps as large as the cells, instead of 882 | #: with the usual pixel accuracy. Combined with initial_window_width 883 | #: and initial_window_height in number of cells, this option can be 884 | #: used to keep the margins as small as possible when resizing the OS 885 | #: window. Note that this does not currently work on Wayland. 886 | 887 | # visual_window_select_characters 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ 888 | 889 | #: The list of characters for visual window selection. For example, 890 | #: for selecting a window to focus on with focus_visible_window. The 891 | #: value should be a series of unique numbers or alphabets, case 892 | #: insensitive, from the set 0-9A-Z\-=[];',./\\`. Specify your 893 | #: preference as a string of characters. 894 | 895 | # confirm_os_window_close -1 896 | 897 | #: Ask for confirmation when closing an OS window or a tab with at 898 | #: least this number of kitty windows in it by window manager (e.g. 899 | #: clicking the window close button or pressing the operating system 900 | #: shortcut to close windows) or by the close_tab action. A value of 901 | #: zero disables confirmation. This confirmation also applies to 902 | #: requests to quit the entire application (all OS windows, via the 903 | #: quit action). Negative values are converted to positive ones, 904 | #: however, with shell_integration enabled, using negative values 905 | #: means windows sitting at a shell prompt are not counted, only 906 | #: windows where some command is currently running. Note that if you 907 | #: want confirmation when closing individual windows, you can map the 908 | #: close_window_with_confirmation action. 909 | 910 | #: }}} 911 | 912 | #: Tab bar {{{ 913 | 914 | # tab_bar_edge bottom 915 | 916 | #: The edge to show the tab bar on, top or bottom. 917 | 918 | # tab_bar_margin_width 0.0 919 | 920 | #: The margin to the left and right of the tab bar (in pts). 921 | 922 | # tab_bar_margin_height 0.0 0.0 923 | 924 | #: The margin above and below the tab bar (in pts). The first number 925 | #: is the margin between the edge of the OS Window and the tab bar. 926 | #: The second number is the margin between the tab bar and the 927 | #: contents of the current tab. 928 | 929 | # tab_bar_style fade 930 | 931 | #: The tab bar style, can be one of: 932 | 933 | #: fade 934 | #: Each tab's edges fade into the background color. (See also tab_fade) 935 | #: slant 936 | #: Tabs look like the tabs in a physical file. 937 | #: separator 938 | #: Tabs are separated by a configurable separator. (See also 939 | #: tab_separator) 940 | #: powerline 941 | #: Tabs are shown as a continuous line with "fancy" separators. 942 | #: (See also tab_powerline_style) 943 | #: custom 944 | #: A user-supplied Python function called draw_tab is loaded from the file 945 | #: tab_bar.py in the kitty config directory. For examples of how to 946 | #: write such a function, see the functions named draw_tab_with_* in 947 | #: kitty's source code: kitty/tab_bar.py. See also 948 | #: this discussion 949 | #: for examples from kitty users. 950 | #: hidden 951 | #: The tab bar is hidden. If you use this, you might want to create 952 | #: a mapping for the select_tab action which presents you with a list of 953 | #: tabs and allows for easy switching to a tab. 954 | 955 | # tab_bar_align left 956 | 957 | #: The horizontal alignment of the tab bar, can be one of: left, 958 | #: center, right. 959 | 960 | # tab_bar_min_tabs 2 961 | 962 | #: The minimum number of tabs that must exist before the tab bar is 963 | #: shown. 964 | 965 | # tab_switch_strategy previous 966 | 967 | #: The algorithm to use when switching to a tab when the current tab 968 | #: is closed. The default of previous will switch to the last used 969 | #: tab. A value of left will switch to the tab to the left of the 970 | #: closed tab. A value of right will switch to the tab to the right of 971 | #: the closed tab. A value of last will switch to the right-most tab. 972 | 973 | # tab_fade 0.25 0.5 0.75 1 974 | 975 | #: Control how each tab fades into the background when using fade for 976 | #: the tab_bar_style. Each number is an alpha (between zero and one) 977 | #: that controls how much the corresponding cell fades into the 978 | #: background, with zero being no fade and one being full fade. You 979 | #: can change the number of cells used by adding/removing entries to 980 | #: this list. 981 | 982 | # tab_separator " ┇" 983 | 984 | #: The separator between tabs in the tab bar when using separator as 985 | #: the tab_bar_style. 986 | 987 | # tab_powerline_style angled 988 | 989 | #: The powerline separator style between tabs in the tab bar when 990 | #: using powerline as the tab_bar_style, can be one of: angled, 991 | #: slanted, round. 992 | 993 | # tab_activity_symbol none 994 | 995 | #: Some text or a Unicode symbol to show on the tab if a window in the 996 | #: tab that does not have focus has some activity. If you want to use 997 | #: leading or trailing spaces, surround the text with quotes. See 998 | #: tab_title_template for how this is rendered. 999 | 1000 | # tab_title_max_length 0 1001 | 1002 | #: The maximum number of cells that can be used to render the text in 1003 | #: a tab. A value of zero means that no limit is applied. 1004 | 1005 | # tab_title_template "{fmt.fg.red}{bell_symbol}{activity_symbol}{fmt.fg.tab}{title}" 1006 | 1007 | #: A template to render the tab title. The default just renders the 1008 | #: title with optional symbols for bell and activity. If you wish to 1009 | #: include the tab-index as well, use something like: {index}:{title}. 1010 | #: Useful if you have shortcuts mapped for goto_tab N. If you prefer 1011 | #: to see the index as a superscript, use {sup.index}. All data 1012 | #: available is: 1013 | 1014 | #: title 1015 | #: The current tab title. 1016 | #: index 1017 | #: The tab index usable with goto_tab N goto_tab shortcuts. 1018 | #: layout_name 1019 | #: The current layout name. 1020 | #: num_windows 1021 | #: The number of windows in the tab. 1022 | #: num_window_groups 1023 | #: The number of window groups (a window group is a window and all of its overlay windows) in the tab. 1024 | #: tab.active_wd 1025 | #: The working directory of the currently active window in the tab 1026 | #: (expensive, requires syscall). Use active_oldest_wd to get 1027 | #: the directory of the oldest foreground process rather than the newest. 1028 | #: tab.active_exe 1029 | #: The name of the executable running in the foreground of the currently 1030 | #: active window in the tab (expensive, requires syscall). Use 1031 | #: active_oldest_exe for the oldest foreground process. 1032 | #: max_title_length 1033 | #: The maximum title length available. 1034 | 1035 | #: Note that formatting is done by Python's string formatting 1036 | #: machinery, so you can use, for instance, {layout_name[:2].upper()} 1037 | #: to show only the first two letters of the layout name, upper-cased. 1038 | #: If you want to style the text, you can use styling directives, for 1039 | #: example: 1040 | #: `{fmt.fg.red}red{fmt.fg.tab}normal{fmt.bg._00FF00}greenbg{fmt.bg.tab}`. 1041 | #: Similarly, for bold and italic: 1042 | #: `{fmt.bold}bold{fmt.nobold}normal{fmt.italic}italic{fmt.noitalic}`. 1043 | #: Note that for backward compatibility, if {bell_symbol} or 1044 | #: {activity_symbol} are not present in the template, they are 1045 | #: prepended to it. 1046 | 1047 | # active_tab_title_template none 1048 | 1049 | #: Template to use for active tabs. If not specified falls back to 1050 | #: tab_title_template. 1051 | 1052 | # active_tab_foreground #000 1053 | # active_tab_background #eee 1054 | # active_tab_font_style bold-italic 1055 | # inactive_tab_foreground #444 1056 | # inactive_tab_background #999 1057 | # inactive_tab_font_style normal 1058 | 1059 | #: Tab bar colors and styles. 1060 | 1061 | # tab_bar_background none 1062 | 1063 | #: Background color for the tab bar. Defaults to using the terminal 1064 | #: background color. 1065 | 1066 | # tab_bar_margin_color none 1067 | 1068 | #: Color for the tab bar margin area. Defaults to using the terminal 1069 | #: background color for margins above and below the tab bar. For side 1070 | #: margins the default color is chosen to match the background color 1071 | #: of the neighboring tab. 1072 | 1073 | #: }}} 1074 | 1075 | #: Color scheme {{{ 1076 | 1077 | # foreground #dddddd 1078 | # background #000000 1079 | 1080 | #: The foreground and background colors. 1081 | 1082 | # background_opacity 1.0 1083 | 1084 | #: The opacity of the background. A number between zero and one, where 1085 | #: one is opaque and zero is fully transparent. This will only work if 1086 | #: supported by the OS (for instance, when using a compositor under 1087 | #: X11). Note that it only sets the background color's opacity in 1088 | #: cells that have the same background color as the default terminal 1089 | #: background, so that things like the status bar in vim, powerline 1090 | #: prompts, etc. still look good. But it means that if you use a color 1091 | #: theme with a background color in your editor, it will not be 1092 | #: rendered as transparent. Instead you should change the default 1093 | #: background color in your kitty config and not use a background 1094 | #: color in the editor color scheme. Or use the escape codes to set 1095 | #: the terminals default colors in a shell script to launch your 1096 | #: editor. Be aware that using a value less than 1.0 is a (possibly 1097 | #: significant) performance hit. When using a low value for this 1098 | #: setting, it is desirable that you set the background color to a 1099 | #: color the matches the general color of the desktop background, for 1100 | #: best text rendering. If you want to dynamically change 1101 | #: transparency of windows, set dynamic_background_opacity to yes 1102 | #: (this is off by default as it has a performance cost). Changing 1103 | #: this option when reloading the config will only work if 1104 | #: dynamic_background_opacity was enabled in the original config. 1105 | 1106 | # background_blur 0 1107 | 1108 | #: Set to a positive value to enable background blur (blurring of the 1109 | #: visuals behind a transparent window) on platforms that support it. 1110 | #: Only takes effect when background_opacity is less than one. On 1111 | #: macOS, this will also control the blur radius (amount of blurring). 1112 | #: Setting it to too high a value will cause severe performance issues 1113 | #: and/or rendering artifacts. Usually, values up to 64 work well. 1114 | #: Note that this might cause performance issues, depending on how the 1115 | #: platform implements it, so use with care. Currently supported on 1116 | #: macOS and KDE under X11. 1117 | 1118 | # background_image none 1119 | 1120 | #: Path to a background image. Must be in PNG format. 1121 | 1122 | # background_image_layout tiled 1123 | 1124 | #: Whether to tile, scale or clamp the background image. The value can 1125 | #: be one of tiled, mirror-tiled, scaled, clamped, centered or 1126 | #: cscaled. The scaled and cscaled values scale the image to the 1127 | #: window size, with cscaled preserving the image aspect ratio. 1128 | 1129 | # background_image_linear no 1130 | 1131 | #: When background image is scaled, whether linear interpolation 1132 | #: should be used. 1133 | 1134 | # dynamic_background_opacity no 1135 | 1136 | #: Allow changing of the background_opacity dynamically, using either 1137 | #: keyboard shortcuts (increase_background_opacity and 1138 | #: decrease_background_opacity) or the remote control facility. 1139 | #: Changing this option by reloading the config is not supported. 1140 | 1141 | # background_tint 0.0 1142 | 1143 | #: How much to tint the background image by the background color. This 1144 | #: option makes it easier to read the text. Tinting is done using the 1145 | #: current background color for each window. This option applies only 1146 | #: if background_opacity is set and transparent windows are supported 1147 | #: or background_image is set. 1148 | 1149 | # background_tint_gaps 1.0 1150 | 1151 | #: How much to tint the background image at the window gaps by the 1152 | #: background color, after applying background_tint. Since this is 1153 | #: multiplicative with background_tint, it can be used to lighten the 1154 | #: tint over the window gaps for a *separated* look. 1155 | 1156 | # dim_opacity 0.4 1157 | 1158 | #: How much to dim text that has the DIM/FAINT attribute set. One 1159 | #: means no dimming and zero means fully dimmed (i.e. invisible). 1160 | 1161 | # selection_foreground #000000 1162 | # selection_background #fffacd 1163 | 1164 | #: The foreground and background colors for text selected with the 1165 | #: mouse. Setting both of these to none will cause a "reverse video" 1166 | #: effect for selections, where the selection will be the cell text 1167 | #: color and the text will become the cell background color. Setting 1168 | #: only selection_foreground to none will cause the foreground color 1169 | #: to be used unchanged. Note that these colors can be overridden by 1170 | #: the program running in the terminal. 1171 | 1172 | #: The color table {{{ 1173 | 1174 | #: The 256 terminal colors. There are 8 basic colors, each color has a 1175 | #: dull and bright version, for the first 16 colors. You can set the 1176 | #: remaining 240 colors as color16 to color255. 1177 | 1178 | # color0 #000000 1179 | # color8 #767676 1180 | 1181 | #: black 1182 | 1183 | # color1 #cc0403 1184 | # color9 #f2201f 1185 | 1186 | #: red 1187 | 1188 | # color2 #19cb00 1189 | # color10 #23fd00 1190 | 1191 | #: green 1192 | 1193 | # color3 #cecb00 1194 | # color11 #fffd00 1195 | 1196 | #: yellow 1197 | 1198 | # color4 #0d73cc 1199 | # color12 #1a8fff 1200 | 1201 | #: blue 1202 | 1203 | # color5 #cb1ed1 1204 | # color13 #fd28ff 1205 | 1206 | #: magenta 1207 | 1208 | # color6 #0dcdcd 1209 | # color14 #14ffff 1210 | 1211 | #: cyan 1212 | 1213 | # color7 #dddddd 1214 | # color15 #ffffff 1215 | 1216 | #: white 1217 | 1218 | # mark1_foreground black 1219 | 1220 | #: Color for marks of type 1 1221 | 1222 | # mark1_background #98d3cb 1223 | 1224 | #: Color for marks of type 1 (light steel blue) 1225 | 1226 | # mark2_foreground black 1227 | 1228 | #: Color for marks of type 2 1229 | 1230 | # mark2_background #f2dcd3 1231 | 1232 | #: Color for marks of type 1 (beige) 1233 | 1234 | # mark3_foreground black 1235 | 1236 | #: Color for marks of type 3 1237 | 1238 | # mark3_background #f274bc 1239 | 1240 | #: Color for marks of type 3 (violet) 1241 | 1242 | #: }}} 1243 | 1244 | #: }}} 1245 | 1246 | #: Advanced {{{ 1247 | 1248 | # shell . 1249 | 1250 | #: The shell program to execute. The default value of . means to use 1251 | #: whatever shell is set as the default shell for the current user. 1252 | #: Note that on macOS if you change this, you might need to add 1253 | #: --login and --interactive to ensure that the shell starts in 1254 | #: interactive mode and reads its startup rc files. 1255 | 1256 | # editor . 1257 | 1258 | #: The terminal based text editor (such as vim or nano) to use when 1259 | #: editing the kitty config file or similar tasks. 1260 | 1261 | #: The default value of . means to use the environment variables 1262 | #: VISUAL and EDITOR in that order. If these variables aren't set, 1263 | #: kitty will run your shell ($SHELL -l -i -c env) to see if your 1264 | #: shell startup rc files set VISUAL or EDITOR. If that doesn't work, 1265 | #: kitty will cycle through various known editors (vim, emacs, etc.) 1266 | #: and take the first one that exists on your system. 1267 | 1268 | # close_on_child_death no 1269 | 1270 | #: Close the window when the child process (shell) exits. With the 1271 | #: default value no, the terminal will remain open when the child 1272 | #: exits as long as there are still processes outputting to the 1273 | #: terminal (for example disowned or backgrounded processes). When 1274 | #: enabled with yes, the window will close as soon as the child 1275 | #: process exits. Note that setting it to yes means that any 1276 | #: background processes still using the terminal can fail silently 1277 | #: because their stdout/stderr/stdin no longer work. 1278 | 1279 | # remote_control_password 1280 | 1281 | #: Allow other programs to control kitty using passwords. This option 1282 | #: can be specified multiple times to add multiple passwords. If no 1283 | #: passwords are present kitty will ask the user for permission if a 1284 | #: program tries to use remote control with a password. A password can 1285 | #: also *optionally* be associated with a set of allowed remote 1286 | #: control actions. For example:: 1287 | 1288 | #: remote_control_password "my passphrase" get-colors set-colors focus-window focus-tab 1289 | 1290 | #: Only the specified actions will be allowed when using this 1291 | #: password. Glob patterns can be used too, for example:: 1292 | 1293 | #: remote_control_password "my passphrase" set-tab-* resize-* 1294 | 1295 | #: To get a list of available actions, run:: 1296 | 1297 | #: kitty @ --help 1298 | 1299 | #: A set of actions to be allowed when no password is sent can be 1300 | #: specified by using an empty password. For example:: 1301 | 1302 | #: remote_control_password "" *-colors 1303 | 1304 | #: Finally, the path to a python module can be specified that provides 1305 | #: a function is_cmd_allowed that is used to check every remote 1306 | #: control command. For example:: 1307 | 1308 | #: remote_control_password "my passphrase" my_rc_command_checker.py 1309 | 1310 | #: Relative paths are resolved from the kitty configuration directory. 1311 | #: See rc_custom_auth for details. 1313 | 1314 | # allow_remote_control no 1315 | 1316 | #: Allow other programs to control kitty. If you turn this on, other 1317 | #: programs can control all aspects of kitty, including sending text 1318 | #: to kitty windows, opening new windows, closing windows, reading the 1319 | #: content of windows, etc. Note that this even works over SSH 1320 | #: connections. The default setting of no prevents any form of remote 1321 | #: control. The meaning of the various values are: 1322 | 1323 | #: password 1324 | #: Remote control requests received over both the TTY device and the socket 1325 | #: are confirmed based on passwords, see remote_control_password. 1326 | 1327 | #: socket-only 1328 | #: Remote control requests received over a socket are accepted 1329 | #: unconditionally. Requests received over the TTY are denied. 1330 | #: See listen_on. 1331 | 1332 | #: socket 1333 | #: Remote control requests received over a socket are accepted 1334 | #: unconditionally. Requests received over the TTY are confirmed based on 1335 | #: password. 1336 | 1337 | #: no 1338 | #: Remote control is completely disabled. 1339 | 1340 | #: yes 1341 | #: Remote control requests are always accepted. 1342 | 1343 | # listen_on none 1344 | 1345 | #: Listen to the specified socket for remote control connections. Note 1346 | #: that this will apply to all kitty instances. It can be overridden 1347 | #: by the kitty --listen-on command line option. For UNIX sockets, 1348 | #: such as unix:${TEMP}/mykitty or unix:@mykitty (on Linux). 1349 | #: Environment variables are expanded and relative paths are resolved 1350 | #: with respect to the temporary directory. If {kitty_pid} is present, 1351 | #: then it is replaced by the PID of the kitty process, otherwise the 1352 | #: PID of the kitty process is appended to the value, with a hyphen. 1353 | #: For TCP sockets such as tcp:localhost:0 a random port is always 1354 | #: used even if a non-zero port number is specified. See the help for 1355 | #: kitty --listen-on for more details. Note that this will be ignored 1356 | #: unless allow_remote_control is set to either: yes, socket or 1357 | #: socket-only. Changing this option by reloading the config is not 1358 | #: supported. 1359 | 1360 | # env 1361 | 1362 | #: Specify the environment variables to be set in all child processes. 1363 | #: Using the name with an equal sign (e.g. env VAR=) will set it to 1364 | #: the empty string. Specifying only the name (e.g. env VAR) will 1365 | #: remove the variable from the child process' environment. Note that 1366 | #: environment variables are expanded recursively, for example:: 1367 | 1368 | #: env VAR1=a 1369 | #: env VAR2=${HOME}/${VAR1}/b 1370 | 1371 | #: The value of VAR2 will be /a/b. 1372 | 1373 | # watcher 1374 | 1375 | #: Path to python file which will be loaded for watchers 1376 | #: . Can be 1377 | #: specified more than once to load multiple watchers. The watchers 1378 | #: will be added to every kitty window. Relative paths are resolved 1379 | #: relative to the kitty config directory. Note that reloading the 1380 | #: config will only affect windows created after the reload. 1381 | 1382 | # exe_search_path 1383 | 1384 | #: Control where kitty finds the programs to run. The default search 1385 | #: order is: First search the system wide PATH, then ~/.local/bin and 1386 | #: ~/bin. If still not found, the PATH defined in the login shell 1387 | #: after sourcing all its startup files is tried. Finally, if present, 1388 | #: the PATH specified by the env option is tried. 1389 | 1390 | #: This option allows you to prepend, append, or remove paths from 1391 | #: this search order. It can be specified multiple times for multiple 1392 | #: paths. A simple path will be prepended to the search order. A path 1393 | #: that starts with the + sign will be append to the search order, 1394 | #: after ~/bin above. A path that starts with the - sign will be 1395 | #: removed from the entire search order. For example:: 1396 | 1397 | #: exe_search_path /some/prepended/path 1398 | #: exe_search_path +/some/appended/path 1399 | #: exe_search_path -/some/excluded/path 1400 | 1401 | # update_check_interval 24 1402 | 1403 | #: The interval to periodically check if an update to kitty is 1404 | #: available (in hours). If an update is found, a system notification 1405 | #: is displayed informing you of the available update. The default is 1406 | #: to check every 24 hours, set to zero to disable. Update checking is 1407 | #: only done by the official binary builds. Distro packages or source 1408 | #: builds do not do update checking. Changing this option by reloading 1409 | #: the config is not supported. 1410 | 1411 | # startup_session none 1412 | 1413 | #: Path to a session file to use for all kitty instances. Can be 1414 | #: overridden by using the kitty --session =none command line option 1415 | #: for individual instances. See sessions 1416 | #: in the kitty 1417 | #: documentation for details. Note that relative paths are interpreted 1418 | #: with respect to the kitty config directory. Environment variables 1419 | #: in the path are expanded. Changing this option by reloading the 1420 | #: config is not supported. 1421 | 1422 | # clipboard_control write-clipboard write-primary read-clipboard-ask read-primary-ask 1423 | 1424 | #: Allow programs running in kitty to read and write from the 1425 | #: clipboard. You can control exactly which actions are allowed. The 1426 | #: possible actions are: write-clipboard, read-clipboard, write- 1427 | #: primary, read-primary, read-clipboard-ask, read-primary-ask. The 1428 | #: default is to allow writing to the clipboard and primary selection 1429 | #: and to ask for permission when a program tries to read from the 1430 | #: clipboard. Note that disabling the read confirmation is a security 1431 | #: risk as it means that any program, even the ones running on a 1432 | #: remote server via SSH can read your clipboard. See also 1433 | #: clipboard_max_size. 1434 | 1435 | # clipboard_max_size 512 1436 | 1437 | #: The maximum size (in MB) of data from programs running in kitty 1438 | #: that will be stored for writing to the system clipboard. A value of 1439 | #: zero means no size limit is applied. See also clipboard_control. 1440 | 1441 | # file_transfer_confirmation_bypass 1442 | 1443 | #: The password that can be supplied to the file transfer kitten 1444 | #: to skip the 1445 | #: transfer confirmation prompt. This should only be used when 1446 | #: initiating transfers from trusted computers, over trusted networks 1447 | #: or encrypted transports, as it allows any programs running on the 1448 | #: remote machine to read/write to the local filesystem, without 1449 | #: permission. 1450 | 1451 | # allow_hyperlinks yes 1452 | 1453 | #: Process hyperlink escape sequences (OSC 8). If disabled OSC 8 1454 | #: escape sequences are ignored. Otherwise they become clickable 1455 | #: links, that you can click with the mouse or by using the hints 1456 | #: kitten . The 1457 | #: special value of ask means that kitty will ask before opening the 1458 | #: link when clicked. 1459 | 1460 | # shell_integration enabled 1461 | 1462 | #: Enable shell integration on supported shells. This enables features 1463 | #: such as jumping to previous prompts, browsing the output of the 1464 | #: previous command in a pager, etc. on supported shells. Set to 1465 | #: disabled to turn off shell integration, completely. It is also 1466 | #: possible to disable individual features, set to a space separated 1467 | #: list of these values: no-rc, no-cursor, no-title, no-cwd, no- 1468 | #: prompt-mark, no-complete. See Shell integration 1469 | #: for details. 1470 | 1471 | # allow_cloning ask 1472 | 1473 | #: Control whether programs running in the terminal can request new 1474 | #: windows to be created. The canonical example is clone-in-kitty 1475 | #: . 1476 | #: By default, kitty will ask for permission for each clone request. 1477 | #: Allowing cloning unconditionally gives programs running in the 1478 | #: terminal (including over SSH) permission to execute arbitrary code, 1479 | #: as the user who is running the terminal, on the computer that the 1480 | #: terminal is running on. 1481 | 1482 | # clone_source_strategies venv,conda,env_var,path 1483 | 1484 | #: Control what shell code is sourced when running clone-in-kitty in 1485 | #: the newly cloned window. The supported strategies are: 1486 | 1487 | #: venv 1488 | #: Source the file $VIRTUAL_ENV/bin/activate. This is used by the 1489 | #: Python stdlib venv module and allows cloning venvs automatically. 1490 | #: conda 1491 | #: Run conda activate $CONDA_DEFAULT_ENV. This supports the virtual 1492 | #: environments created by conda. 1493 | #: env_var 1494 | #: Execute the contents of the environment variable 1495 | #: KITTY_CLONE_SOURCE_CODE with eval. 1496 | #: path 1497 | #: Source the file pointed to by the environment variable 1498 | #: KITTY_CLONE_SOURCE_PATH. 1499 | 1500 | #: This option must be a comma separated list of the above values. 1501 | #: Only the first valid match, in the order specified, is sourced. 1502 | 1503 | # term xterm-kitty 1504 | 1505 | #: The value of the TERM environment variable to set. Changing this 1506 | #: can break many terminal programs, only change it if you know what 1507 | #: you are doing, not because you read some advice on "Stack Overflow" 1508 | #: to change it. The TERM variable is used by various programs to get 1509 | #: information about the capabilities and behavior of the terminal. If 1510 | #: you change it, depending on what programs you run, and how 1511 | #: different the terminal you are changing it to is, various things 1512 | #: from key-presses, to colors, to various advanced features may not 1513 | #: work. Changing this option by reloading the config will only affect 1514 | #: newly created windows. 1515 | 1516 | # forward_stdio no 1517 | 1518 | #: Forward STDOUT and STDERR of the kitty process to child processes 1519 | #: as file descriptors 3 and 4. This is useful for debugging as it 1520 | #: allows child processes to print to kitty's STDOUT directly. For 1521 | #: example, echo hello world >&3 in a shell will print to the parent 1522 | #: kitty's STDOUT. When enabled, this also sets the 1523 | #: KITTY_STDIO_FORWARDED=3 environment variable so child processes 1524 | #: know about the forwarding. 1525 | 1526 | #: }}} 1527 | 1528 | #: OS specific tweaks {{{ 1529 | 1530 | # wayland_titlebar_color system 1531 | 1532 | #: The color of the kitty window's titlebar on Wayland systems with 1533 | #: client side window decorations such as GNOME. A value of system 1534 | #: means to use the default system color, a value of background means 1535 | #: to use the background color of the currently active window and 1536 | #: finally you can use an arbitrary color, such as #12af59 or red. 1537 | 1538 | # macos_titlebar_color system 1539 | 1540 | #: The color of the kitty window's titlebar on macOS. A value of 1541 | #: system means to use the default system color, light or dark can 1542 | #: also be used to set it explicitly. A value of background means to 1543 | #: use the background color of the currently active window and finally 1544 | #: you can use an arbitrary color, such as #12af59 or red. WARNING: 1545 | #: This option works by using a hack when arbitrary color (or 1546 | #: background) is configured, as there is no proper Cocoa API for it. 1547 | #: It sets the background color of the entire window and makes the 1548 | #: titlebar transparent. As such it is incompatible with 1549 | #: background_opacity. If you want to use both, you are probably 1550 | #: better off just hiding the titlebar with hide_window_decorations. 1551 | 1552 | # macos_option_as_alt no 1553 | 1554 | #: Use the Option key as an Alt key on macOS. With this set to no, 1555 | #: kitty will use the macOS native Option+Key to enter Unicode 1556 | #: character behavior. This will break any Alt+Key keyboard shortcuts 1557 | #: in your terminal programs, but you can use the macOS Unicode input 1558 | #: technique. You can use the values: left, right or both to use only 1559 | #: the left, right or both Option keys as Alt, instead. Note that 1560 | #: kitty itself always treats Option the same as Alt. This means you 1561 | #: cannot use this option to configure different kitty shortcuts for 1562 | #: Option+Key vs. Alt+Key. Also, any kitty shortcuts using 1563 | #: Option/Alt+Key will take priority, so that any such key presses 1564 | #: will not be passed to terminal programs running inside kitty. 1565 | #: Changing this option by reloading the config is not supported. 1566 | 1567 | # macos_hide_from_tasks no 1568 | 1569 | #: Hide the kitty window from running tasks on macOS (⌘+Tab and the 1570 | #: Dock). Changing this option by reloading the config is not 1571 | #: supported. 1572 | 1573 | # macos_quit_when_last_window_closed no 1574 | 1575 | #: Have kitty quit when all the top-level windows are closed on macOS. 1576 | #: By default, kitty will stay running, even with no open windows, as 1577 | #: is the expected behavior on macOS. 1578 | 1579 | # macos_window_resizable yes 1580 | 1581 | #: Disable this if you want kitty top-level OS windows to not be 1582 | #: resizable on macOS. 1583 | 1584 | # macos_thicken_font 0 1585 | 1586 | #: Draw an extra border around the font with the given width, to 1587 | #: increase legibility at small font sizes on macOS. For example, a 1588 | #: value of 0.75 will result in rendering that looks similar to sub- 1589 | #: pixel antialiasing at common font sizes. Note that in modern kitty, 1590 | #: this option is obsolete (although still supported). Consider using 1591 | #: text_composition_strategy instead. 1592 | 1593 | # macos_traditional_fullscreen no 1594 | 1595 | #: Use the macOS traditional full-screen transition, that is faster, 1596 | #: but less pretty. 1597 | 1598 | # macos_show_window_title_in all 1599 | 1600 | #: Control where the window title is displayed on macOS. A value of 1601 | #: window will show the title of the currently active window at the 1602 | #: top of the macOS window. A value of menubar will show the title of 1603 | #: the currently active window in the macOS global menu bar, making 1604 | #: use of otherwise wasted space. A value of all will show the title 1605 | #: in both places, and none hides the title. See 1606 | #: macos_menubar_title_max_length for how to control the length of the 1607 | #: title in the menu bar. 1608 | 1609 | # macos_menubar_title_max_length 0 1610 | 1611 | #: The maximum number of characters from the window title to show in 1612 | #: the macOS global menu bar. Values less than one means that there is 1613 | #: no maximum limit. 1614 | 1615 | # macos_custom_beam_cursor no 1616 | 1617 | #: Use a custom mouse cursor for macOS that is easier to see on both 1618 | #: light and dark backgrounds. Nowadays, the default macOS cursor 1619 | #: already comes with a white border. WARNING: this might make your 1620 | #: mouse cursor invisible on dual GPU machines. Changing this option 1621 | #: by reloading the config is not supported. 1622 | 1623 | # macos_colorspace srgb 1624 | 1625 | #: The colorspace in which to interpret terminal colors. The default 1626 | #: of srgb will cause colors to match those seen in web browsers. The 1627 | #: value of default will use whatever the native colorspace of the 1628 | #: display is. The value of displayp3 will use Apple's special 1629 | #: snowflake display P3 color space, which will result in over 1630 | #: saturated (brighter) colors with some color shift. Reloading 1631 | #: configuration will change this value only for newly created OS 1632 | #: windows. 1633 | 1634 | # linux_display_server auto 1635 | 1636 | #: Choose between Wayland and X11 backends. By default, an appropriate 1637 | #: backend based on the system state is chosen automatically. Set it 1638 | #: to x11 or wayland to force the choice. Changing this option by 1639 | #: reloading the config is not supported. 1640 | 1641 | #: }}} 1642 | 1643 | #: Keyboard shortcuts {{{ 1644 | 1645 | #: Keys are identified simply by their lowercase Unicode characters. 1646 | #: For example: a for the A key, [ for the left square bracket key, 1647 | #: etc. For functional keys, such as Enter or Escape, the names are 1648 | #: present at Functional key definitions 1649 | #: . 1650 | #: For modifier keys, the names are ctrl (control, ⌃), shift (⇧), alt 1651 | #: (opt, option, ⌥), super (cmd, command, ⌘). See also: GLFW mods 1652 | #: 1653 | 1654 | #: On Linux you can also use XKB key names to bind keys that are not 1655 | #: supported by GLFW. See XKB keys 1656 | #: for a list of key names. The name to use is the part 1658 | #: after the XKB_KEY_ prefix. Note that you can only use an XKB key 1659 | #: name for keys that are not known as GLFW keys. 1660 | 1661 | #: Finally, you can use raw system key codes to map keys, again only 1662 | #: for keys that are not known as GLFW keys. To see the system key 1663 | #: code for a key, start kitty with the kitty --debug-input option, 1664 | #: kitty will output some debug text for every key event. In that text 1665 | #: look for native_code, the value of that becomes the key name in the 1666 | #: shortcut. For example: 1667 | 1668 | #: .. code-block:: none 1669 | 1670 | #: on_key_input: glfw key: 0x61 native_code: 0x61 action: PRESS mods: none text: 'a' 1671 | 1672 | #: Here, the key name for the A key is 0x61 and you can use it with:: 1673 | 1674 | #: map ctrl+0x61 something 1675 | 1676 | #: to map Ctrl+A to something. 1677 | 1678 | #: You can use the special action no_op to unmap a keyboard shortcut 1679 | #: that is assigned in the default configuration:: 1680 | 1681 | #: map kitty_mod+space no_op 1682 | 1683 | #: If you would like kitty to completely ignore a key event, not even 1684 | #: sending it to the program running in the terminal, map it to 1685 | #: discard_event:: 1686 | 1687 | #: map kitty_mod+f1 discard_event 1688 | 1689 | #: You can combine multiple actions to be triggered by a single 1690 | #: shortcut with combine action, using the syntax below:: 1691 | 1692 | #: map key combine action1 action2 action3 ... 1693 | 1694 | #: For example:: 1695 | 1696 | #: map kitty_mod+e combine : new_window : next_layout 1697 | 1698 | #: This will create a new window and switch to the next available 1699 | #: layout. 1700 | 1701 | #: You can use multi-key shortcuts with the syntax shown below:: 1702 | 1703 | #: map key1>key2>key3 action 1704 | 1705 | #: For example:: 1706 | 1707 | #: map ctrl+f>2 set_font_size 20 1708 | 1709 | #: The full list of actions that can be mapped to key presses is 1710 | #: available here . 1711 | 1712 | # kitty_mod ctrl+shift 1713 | 1714 | #: Special modifier key alias for default shortcuts. You can change 1715 | #: the value of this option to alter all default shortcuts that use 1716 | #: kitty_mod. 1717 | 1718 | # clear_all_shortcuts no 1719 | 1720 | #: Remove all shortcut definitions up to this point. Useful, for 1721 | #: instance, to remove the default shortcuts. 1722 | 1723 | # action_alias 1724 | 1725 | #: E.g. action_alias launch_tab launch --type=tab --cwd=current 1726 | 1727 | #: Define action aliases to avoid repeating the same options in 1728 | #: multiple mappings. Aliases can be defined for any action and will 1729 | #: be expanded recursively. For example, the above alias allows you to 1730 | #: create mappings to launch a new tab in the current working 1731 | #: directory without duplication:: 1732 | 1733 | #: map f1 launch_tab vim 1734 | #: map f2 launch_tab emacs 1735 | 1736 | #: Similarly, to alias kitten invocation:: 1737 | 1738 | #: action_alias hints kitten hints --hints-offset=0 1739 | 1740 | # kitten_alias 1741 | 1742 | #: E.g. kitten_alias hints hints --hints-offset=0 1743 | 1744 | #: Like action_alias above, but specifically for kittens. Generally, 1745 | #: prefer to use action_alias. This option is a legacy version, 1746 | #: present for backwards compatibility. It causes all invocations of 1747 | #: the aliased kitten to be substituted. So the example above will 1748 | #: cause all invocations of the hints kitten to have the --hints- 1749 | #: offset=0 option applied. 1750 | 1751 | #: Clipboard {{{ 1752 | 1753 | #: Copy to clipboard 1754 | 1755 | # map kitty_mod+c copy_to_clipboard 1756 | # map cmd+c copy_to_clipboard 1757 | 1758 | #:: There is also a copy_or_interrupt action that can be optionally 1759 | #:: mapped to Ctrl+C. It will copy only if there is a selection and 1760 | #:: send an interrupt otherwise. Similarly, 1761 | #:: copy_and_clear_or_interrupt will copy and clear the selection or 1762 | #:: send an interrupt if there is no selection. 1763 | 1764 | #: Paste from clipboard 1765 | 1766 | # map kitty_mod+v paste_from_clipboard 1767 | # map cmd+v paste_from_clipboard 1768 | 1769 | #: Paste from selection 1770 | 1771 | # map kitty_mod+s paste_from_selection 1772 | # map shift+insert paste_from_selection 1773 | 1774 | #: Pass selection to program 1775 | 1776 | # map kitty_mod+o pass_selection_to_program 1777 | 1778 | #:: You can also pass the contents of the current selection to any 1779 | #:: program with pass_selection_to_program. By default, the system's 1780 | #:: open program is used, but you can specify your own, the selection 1781 | #:: will be passed as a command line argument to the program. For 1782 | #:: example:: 1783 | 1784 | #:: map kitty_mod+o pass_selection_to_program firefox 1785 | 1786 | #:: You can pass the current selection to a terminal program running 1787 | #:: in a new kitty window, by using the @selection placeholder:: 1788 | 1789 | #:: map kitty_mod+y new_window less @selection 1790 | 1791 | #: }}} 1792 | 1793 | #: Scrolling {{{ 1794 | 1795 | #: Scroll line up 1796 | 1797 | # map kitty_mod+up scroll_line_up 1798 | # map kitty_mod+k scroll_line_up 1799 | # map opt+cmd+page_up scroll_line_up 1800 | # map cmd+up scroll_line_up 1801 | 1802 | #: Scroll line down 1803 | 1804 | # map kitty_mod+down scroll_line_down 1805 | # map kitty_mod+j scroll_line_down 1806 | # map opt+cmd+page_down scroll_line_down 1807 | # map cmd+down scroll_line_down 1808 | 1809 | #: Scroll page up 1810 | 1811 | # map kitty_mod+page_up scroll_page_up 1812 | # map cmd+page_up scroll_page_up 1813 | 1814 | #: Scroll page down 1815 | 1816 | # map kitty_mod+page_down scroll_page_down 1817 | # map cmd+page_down scroll_page_down 1818 | 1819 | #: Scroll to top 1820 | 1821 | # map kitty_mod+home scroll_home 1822 | # map cmd+home scroll_home 1823 | 1824 | #: Scroll to bottom 1825 | 1826 | # map kitty_mod+end scroll_end 1827 | # map cmd+end scroll_end 1828 | 1829 | #: Scroll to previous shell prompt 1830 | 1831 | # map kitty_mod+z scroll_to_prompt -1 1832 | 1833 | #:: Use a parameter of 0 for scroll_to_prompt to scroll to the last 1834 | #:: jumped to or the last clicked position. Requires shell 1835 | #:: integration 1836 | #:: to work. 1837 | 1838 | #: Scroll to next shell prompt 1839 | 1840 | # map kitty_mod+x scroll_to_prompt 1 1841 | 1842 | #: Browse scrollback buffer in pager 1843 | 1844 | # map kitty_mod+h show_scrollback 1845 | 1846 | #:: You can pipe the contents of the current screen and history 1847 | #:: buffer as STDIN to an arbitrary program using launch --stdin- 1848 | #:: source. For example, the following opens the scrollback buffer in 1849 | #:: less in an overlay window:: 1850 | 1851 | #:: map f1 launch --stdin-source=@screen_scrollback --stdin-add-formatting --type=overlay less +G -R 1852 | 1853 | #:: For more details on piping screen and buffer contents to external 1854 | #:: programs, see launch . 1855 | 1856 | #: Browse output of the last shell command in pager 1857 | 1858 | # map kitty_mod+g show_last_command_output 1859 | 1860 | #:: You can also define additional shortcuts to get the command 1861 | #:: output. For example, to get the first command output on screen:: 1862 | 1863 | #:: map f1 show_first_command_output_on_screen 1864 | 1865 | #:: To get the command output that was last accessed by a keyboard 1866 | #:: action or mouse action:: 1867 | 1868 | #:: map f1 show_last_visited_command_output 1869 | 1870 | #:: You can pipe the output of the last command run in the shell 1871 | #:: using the launch action. For example, the following opens the 1872 | #:: output in less in an overlay window:: 1873 | 1874 | #:: map f1 launch --stdin-source=@last_cmd_output --stdin-add-formatting --type=overlay less +G -R 1875 | 1876 | #:: To get the output of the first command on the screen, use 1877 | #:: @first_cmd_output_on_screen. To get the output of the last jumped 1878 | #:: to command, use @last_visited_cmd_output. 1879 | 1880 | #:: Requires shell integration 1881 | #:: to work. 1882 | 1883 | #: }}} 1884 | 1885 | #: Window management {{{ 1886 | 1887 | #: New window 1888 | 1889 | # map kitty_mod+enter new_window 1890 | enabled_layouts splits:split_axis=horizontal 1891 | 1892 | map cmd+enter no_op 1893 | 1894 | map cmd+h neighboring_window left 1895 | map cmd+l neighboring_window right 1896 | map cmd+k neighboring_window up 1897 | map cmd+j neighboring_window down 1898 | 1899 | map cmd+shift+k launch --cwd=current --location=vsplit 1900 | map cmd+shift+o launch --cwd=current --location=hsplit 1901 | 1902 | 1903 | #:: You can open a new kitty window running an arbitrary program, for 1904 | #:: example:: 1905 | 1906 | #:: map kitty_mod+y launch mutt 1907 | 1908 | #:: You can open a new window with the current working directory set 1909 | #:: to the working directory of the current window using:: 1910 | 1911 | #:: map ctrl+alt+enter launch --cwd=current 1912 | 1913 | #:: You can open a new window that is allowed to control kitty via 1914 | #:: the kitty remote control facility with launch --allow-remote- 1915 | #:: control. Any programs running in that window will be allowed to 1916 | #:: control kitty. For example:: 1917 | 1918 | #:: map ctrl+enter launch --allow-remote-control some_program 1919 | 1920 | #:: You can open a new window next to the currently active window or 1921 | #:: as the first window, with:: 1922 | 1923 | #:: map ctrl+n launch --location=neighbor 1924 | #:: map ctrl+f launch --location=first 1925 | 1926 | #:: For more details, see launch 1927 | #:: . 1928 | 1929 | #: New OS window 1930 | 1931 | # map kitty_mod+n new_os_window 1932 | # map cmd+n new_os_window 1933 | 1934 | #:: Works like new_window above, except that it opens a top-level OS 1935 | #:: window. In particular you can use new_os_window_with_cwd to open 1936 | #:: a window with the current working directory. 1937 | 1938 | #: Close window 1939 | 1940 | # map kitty_mod+w close_window 1941 | map cmd+d close_window 1942 | 1943 | #: Next window 1944 | 1945 | # map kitty_mod+] next_window 1946 | 1947 | #: Previous window 1948 | 1949 | # map kitty_mod+[ previous_window 1950 | 1951 | #: Move window forward 1952 | 1953 | # map kitty_mod+f move_window_forward 1954 | 1955 | #: Move window backward 1956 | 1957 | # map kitty_mod+b move_window_backward 1958 | 1959 | #: Move window to top 1960 | 1961 | # map kitty_mod+` move_window_to_top 1962 | 1963 | #: Start resizing window 1964 | 1965 | # map kitty_mod+r start_resizing_window 1966 | # map cmd+r start_resizing_window 1967 | 1968 | #: First window 1969 | 1970 | # map kitty_mod+1 first_window 1971 | # map cmd+1 first_window 1972 | 1973 | #: Second window 1974 | 1975 | # map kitty_mod+2 second_window 1976 | # map cmd+2 second_window 1977 | 1978 | #: Third window 1979 | 1980 | # map kitty_mod+3 third_window 1981 | # map cmd+3 third_window 1982 | 1983 | #: Fourth window 1984 | 1985 | # map kitty_mod+4 fourth_window 1986 | # map cmd+4 fourth_window 1987 | 1988 | #: Fifth window 1989 | 1990 | # map kitty_mod+5 fifth_window 1991 | # map cmd+5 fifth_window 1992 | 1993 | #: Sixth window 1994 | 1995 | # map kitty_mod+6 sixth_window 1996 | # map cmd+6 sixth_window 1997 | 1998 | #: Seventh window 1999 | 2000 | # map kitty_mod+7 seventh_window 2001 | # map cmd+7 seventh_window 2002 | 2003 | #: Eighth window 2004 | 2005 | # map kitty_mod+8 eighth_window 2006 | # map cmd+8 eighth_window 2007 | 2008 | #: Ninth window 2009 | 2010 | # map kitty_mod+9 ninth_window 2011 | # map cmd+9 ninth_window 2012 | 2013 | #: Tenth window 2014 | 2015 | # map kitty_mod+0 tenth_window 2016 | 2017 | #: Visually select and focus window 2018 | 2019 | # map kitty_mod+f7 focus_visible_window 2020 | 2021 | #:: Display overlay numbers and alphabets on the window, and switch 2022 | #:: the focus to the window when you press the key. When there are 2023 | #:: only two windows, the focus will be switched directly without 2024 | #:: displaying the overlay. You can change the overlay characters and 2025 | #:: their order with option visual_window_select_characters. 2026 | 2027 | #: Visually swap window with another 2028 | 2029 | # map kitty_mod+f8 swap_with_window 2030 | 2031 | #:: Works like focus_visible_window above, but swaps the window. 2032 | 2033 | #: }}} 2034 | 2035 | #: Tab management {{{ 2036 | 2037 | #: Next tab 2038 | 2039 | # map kitty_mod+right next_tab 2040 | # map shift+cmd+] next_tab 2041 | # map ctrl+tab next_tab 2042 | 2043 | #: Previous tab 2044 | 2045 | # map kitty_mod+left previous_tab 2046 | # map shift+cmd+[ previous_tab 2047 | # map ctrl+shift+tab previous_tab 2048 | 2049 | #: New tab 2050 | 2051 | # map kitty_mod+t new_tab 2052 | # map cmd+t new_tab 2053 | 2054 | #: Close tab 2055 | 2056 | # map kitty_mod+q close_tab 2057 | # map cmd+w close_tab 2058 | 2059 | #: Close OS window 2060 | 2061 | # map shift+cmd+w close_os_window 2062 | 2063 | #: Move tab forward 2064 | 2065 | # map kitty_mod+. move_tab_forward 2066 | 2067 | #: Move tab backward 2068 | 2069 | # map kitty_mod+, move_tab_backward 2070 | 2071 | #: Set tab title 2072 | 2073 | # map kitty_mod+alt+t set_tab_title 2074 | # map shift+cmd+i set_tab_title 2075 | 2076 | 2077 | #: You can also create shortcuts to go to specific tabs, with 1 being 2078 | #: the first tab, 2 the second tab and -1 being the previously active 2079 | #: tab, and any number larger than the last tab being the last tab:: 2080 | 2081 | #: map ctrl+alt+1 goto_tab 1 2082 | #: map ctrl+alt+2 goto_tab 2 2083 | 2084 | #: Just as with new_window above, you can also pass the name of 2085 | #: arbitrary commands to run when using new_tab and new_tab_with_cwd. 2086 | #: Finally, if you want the new tab to open next to the current tab 2087 | #: rather than at the end of the tabs list, use:: 2088 | 2089 | #: map ctrl+t new_tab !neighbor [optional cmd to run] 2090 | #: }}} 2091 | 2092 | #: Layout management {{{ 2093 | 2094 | #: Next layout 2095 | 2096 | # map kitty_mod+l next_layout 2097 | 2098 | 2099 | #: You can also create shortcuts to switch to specific layouts:: 2100 | 2101 | #: map ctrl+alt+t goto_layout tall 2102 | #: map ctrl+alt+s goto_layout stack 2103 | 2104 | #: Similarly, to switch back to the previous layout:: 2105 | 2106 | #: map ctrl+alt+p last_used_layout 2107 | 2108 | #: There is also a toggle_layout action that switches to the named 2109 | #: layout or back to the previous layout if in the named layout. 2110 | #: Useful to temporarily "zoom" the active window by switching to the 2111 | #: stack layout:: 2112 | 2113 | #: map ctrl+alt+z toggle_layout stack 2114 | #: }}} 2115 | 2116 | #: Font sizes {{{ 2117 | 2118 | #: You can change the font size for all top-level kitty OS windows at 2119 | #: a time or only the current one. 2120 | 2121 | #: Increase font size 2122 | 2123 | # map kitty_mod+equal change_font_size all +2.0 2124 | # map kitty_mod+plus change_font_size all +2.0 2125 | # map kitty_mod+kp_add change_font_size all +2.0 2126 | # map cmd+plus change_font_size all +2.0 2127 | # map cmd+equal change_font_size all +2.0 2128 | # map shift+cmd+equal change_font_size all +2.0 2129 | 2130 | #: Decrease font size 2131 | 2132 | # map kitty_mod+minus change_font_size all -2.0 2133 | # map kitty_mod+kp_subtract change_font_size all -2.0 2134 | # map cmd+minus change_font_size all -2.0 2135 | # map shift+cmd+minus change_font_size all -2.0 2136 | 2137 | #: Reset font size 2138 | 2139 | # map kitty_mod+backspace change_font_size all 0 2140 | # map cmd+0 change_font_size all 0 2141 | 2142 | 2143 | #: To setup shortcuts for specific font sizes:: 2144 | 2145 | #: map kitty_mod+f6 change_font_size all 10.0 2146 | 2147 | #: To setup shortcuts to change only the current OS window's font 2148 | #: size:: 2149 | 2150 | #: map kitty_mod+f6 change_font_size current 10.0 2151 | #: }}} 2152 | 2153 | #: Select and act on visible text {{{ 2154 | 2155 | #: Use the hints kitten to select text and either pass it to an 2156 | #: external program or insert it into the terminal or copy it to the 2157 | #: clipboard. 2158 | 2159 | #: Open URL 2160 | 2161 | # map kitty_mod+e open_url_with_hints 2162 | 2163 | #:: Open a currently visible URL using the keyboard. The program used 2164 | #:: to open the URL is specified in open_url_with. 2165 | 2166 | #: Insert selected path 2167 | 2168 | # map kitty_mod+p>f kitten hints --type path --program - 2169 | 2170 | #:: Select a path/filename and insert it into the terminal. Useful, 2171 | #:: for instance to run git commands on a filename output from a 2172 | #:: previous git command. 2173 | 2174 | #: Open selected path 2175 | 2176 | # map kitty_mod+p>shift+f kitten hints --type path 2177 | 2178 | #:: Select a path/filename and open it with the default open program. 2179 | 2180 | #: Insert selected line 2181 | 2182 | # map kitty_mod+p>l kitten hints --type line --program - 2183 | 2184 | #:: Select a line of text and insert it into the terminal. Useful for 2185 | #:: the output of things like: `ls -1`. 2186 | 2187 | #: Insert selected word 2188 | 2189 | # map kitty_mod+p>w kitten hints --type word --program - 2190 | 2191 | #:: Select words and insert into terminal. 2192 | 2193 | #: Insert selected hash 2194 | 2195 | # map kitty_mod+p>h kitten hints --type hash --program - 2196 | 2197 | #:: Select something that looks like a hash and insert it into the 2198 | #:: terminal. Useful with git, which uses SHA1 hashes to identify 2199 | #:: commits. 2200 | 2201 | #: Open the selected file at the selected line 2202 | 2203 | # map kitty_mod+p>n kitten hints --type linenum 2204 | 2205 | #:: Select something that looks like filename:linenum and open it in 2206 | #:: vim at the specified line number. 2207 | 2208 | #: Open the selected hyperlink 2209 | 2210 | # map kitty_mod+p>y kitten hints --type hyperlink 2211 | 2212 | #:: Select a hyperlink (i.e. a URL that has been marked as such by 2213 | #:: the terminal program, for example, by `ls --hyperlink=auto`). 2214 | 2215 | 2216 | #: The hints kitten has many more modes of operation that you can map 2217 | #: to different shortcuts. For a full description see hints kitten 2218 | #: . 2219 | #: }}} 2220 | 2221 | #: Miscellaneous {{{ 2222 | 2223 | #: Show documentation 2224 | 2225 | # map kitty_mod+f1 show_kitty_doc overview 2226 | 2227 | #: Toggle fullscreen 2228 | 2229 | # map kitty_mod+f11 toggle_fullscreen 2230 | # map ctrl+cmd+f toggle_fullscreen 2231 | 2232 | #: Toggle maximized 2233 | 2234 | # map kitty_mod+f10 toggle_maximized 2235 | 2236 | #: Toggle macOS secure keyboard entry 2237 | 2238 | # map opt+cmd+s toggle_macos_secure_keyboard_entry 2239 | 2240 | #: Unicode input 2241 | 2242 | # map kitty_mod+u kitten unicode_input 2243 | # map ctrl+cmd+space kitten unicode_input 2244 | 2245 | #: Edit config file 2246 | 2247 | # map kitty_mod+f2 edit_config_file 2248 | # map cmd+, edit_config_file 2249 | 2250 | #: Open the kitty command shell 2251 | 2252 | # map kitty_mod+escape kitty_shell window 2253 | 2254 | #:: Open the kitty shell in a new window / tab / overlay / os_window 2255 | #:: to control kitty using commands. 2256 | 2257 | #: Increase background opacity 2258 | 2259 | # map kitty_mod+a>m set_background_opacity +0.1 2260 | 2261 | #: Decrease background opacity 2262 | 2263 | # map kitty_mod+a>l set_background_opacity -0.1 2264 | 2265 | #: Make background fully opaque 2266 | 2267 | # map kitty_mod+a>1 set_background_opacity 1 2268 | 2269 | #: Reset background opacity 2270 | 2271 | # map kitty_mod+a>d set_background_opacity default 2272 | 2273 | #: Reset the terminal 2274 | 2275 | # map kitty_mod+delete clear_terminal reset active 2276 | # map opt+cmd+r clear_terminal reset active 2277 | 2278 | #:: You can create shortcuts to clear/reset the terminal. For 2279 | #:: example:: 2280 | 2281 | #:: # Reset the terminal 2282 | #:: map f1 clear_terminal reset active 2283 | #:: # Clear the terminal screen by erasing all contents 2284 | #:: map f1 clear_terminal clear active 2285 | #:: # Clear the terminal scrollback by erasing it 2286 | #:: map f1 clear_terminal scrollback active 2287 | #:: # Scroll the contents of the screen into the scrollback 2288 | #:: map f1 clear_terminal scroll active 2289 | #:: # Clear everything up to the line with the cursor 2290 | #:: map f1 clear_terminal to_cursor active 2291 | 2292 | #:: If you want to operate on all kitty windows instead of just the 2293 | #:: current one, use all instead of active. 2294 | 2295 | #:: Some useful functions that can be defined in the shell rc files 2296 | #:: to perform various kinds of clearing of the current window: 2297 | 2298 | #:: .. code-block:: sh 2299 | 2300 | #:: clear-only-screen() { 2301 | #:: printf "\e[H\e[2J" 2302 | #:: } 2303 | 2304 | #:: clear-screen-and-scrollback() { 2305 | #:: printf "\e[H\e[3J" 2306 | #:: } 2307 | 2308 | #:: clear-screen-saving-contents-in-scrollback() { 2309 | #:: printf "\e[H\e[22J" 2310 | #:: } 2311 | 2312 | #:: For instance, using these escape codes, it is possible to remap 2313 | #:: Ctrl+L to both scroll the current screen contents into the 2314 | #:: scrollback buffer and clear the screen, instead of just clearing 2315 | #:: the screen. For ZSH, in ~/.zshrc, add: 2316 | 2317 | #:: .. code-block:: zsh 2318 | 2319 | #:: ctrl_l() { 2320 | #:: builtin print -rn -- $'\r\e[0J\e[H\e[22J' >"$TTY" 2321 | #:: builtin zle .reset-prompt 2322 | #:: builtin zle -R 2323 | #:: } 2324 | #:: zle -N ctrl_l 2325 | #:: bindkey '^l' ctrl_l 2326 | 2327 | #: Clear up to cursor line 2328 | 2329 | # map cmd+k clear_terminal to_cursor active 2330 | 2331 | #: Reload kitty.conf 2332 | 2333 | # map kitty_mod+f5 load_config_file 2334 | # map ctrl+cmd+, load_config_file 2335 | 2336 | #:: Reload kitty.conf, applying any changes since the last time it 2337 | #:: was loaded. Note that a handful of options cannot be dynamically 2338 | #:: changed and require a full restart of kitty. Particularly, when 2339 | #:: changing shortcuts for actions located on the macOS global menu 2340 | #:: bar, a full restart is needed. You can also map a keybinding to 2341 | #:: load a different config file, for example:: 2342 | 2343 | #:: map f5 load_config /path/to/alternative/kitty.conf 2344 | 2345 | #:: Note that all options from the original kitty.conf are discarded, 2346 | #:: in other words the new configuration *replace* the old ones. 2347 | 2348 | #: Debug kitty configuration 2349 | 2350 | # map kitty_mod+f6 debug_config 2351 | # map opt+cmd+, debug_config 2352 | 2353 | #:: Show details about exactly what configuration kitty is running 2354 | #:: with and its host environment. Useful for debugging issues. 2355 | 2356 | #: Send arbitrary text on key presses 2357 | 2358 | #:: E.g. map ctrl+shift+alt+h send_text all Hello World 2359 | 2360 | #:: You can tell kitty to send arbitrary (UTF-8) encoded text to the 2361 | #:: client program when pressing specified shortcut keys. For 2362 | #:: example:: 2363 | 2364 | #:: map ctrl+alt+a send_text all Special text 2365 | 2366 | #:: This will send "Special text" when you press the Ctrl+Alt+A key 2367 | #:: combination. The text to be sent decodes ANSI C escapes 2368 | #:: so you can use escapes like \e to send control 2370 | #:: codes or \u21fb to send Unicode characters (or you can just input 2371 | #:: the Unicode characters directly as UTF-8 text). You can use 2372 | #:: `kitty +kitten show_key` to get the key escape codes you want to 2373 | #:: emulate. 2374 | 2375 | #:: The first argument to send_text is the keyboard modes in which to 2376 | #:: activate the shortcut. The possible values are normal, 2377 | #:: application, kitty or a comma separated combination of them. The 2378 | #:: modes normal and application refer to the DECCKM cursor key mode 2379 | #:: for terminals, and kitty refers to the kitty extended keyboard 2380 | #:: protocol. The special value all means all of them. 2381 | 2382 | #:: Some more examples:: 2383 | 2384 | #:: # Output a word and move the cursor to the start of the line (like typing and pressing Home) 2385 | #:: map ctrl+alt+a send_text normal Word\e[H 2386 | #:: map ctrl+alt+a send_text application Word\eOH 2387 | #:: # Run a command at a shell prompt (like typing the command and pressing Enter) 2388 | #:: map ctrl+alt+a send_text normal,application some command with arguments\r 2389 | 2390 | #: Open kitty Website 2391 | 2392 | # map shift+cmd+/ open_url https://sw.kovidgoyal.net/kitty/ 2393 | 2394 | #: Hide macOS kitty application 2395 | 2396 | # map cmd+h hide_macos_app 2397 | 2398 | #: Hide macOS other applications 2399 | 2400 | # map opt+cmd+h hide_macos_other_apps 2401 | 2402 | #: Minimize macOS window 2403 | 2404 | # map cmd+m minimize_macos_window 2405 | 2406 | #: Quit kitty 2407 | 2408 | # map cmd+q quit 2409 | 2410 | #: }}} 2411 | 2412 | #: }}} 2413 | -------------------------------------------------------------------------------- /config/qterminal.ini: -------------------------------------------------------------------------------- 1 | [General] 2 | AskOnExit=false 3 | BoldIntense=false 4 | BookmarksVisible=true 5 | Borderless=true 6 | ChangeWindowIcon=false 7 | ChangeWindowTitle=false 8 | CloseTabOnMiddleClick=false 9 | ConfirmMultilinePaste=false 10 | DisableBracketedPasteMode=false 11 | FixedTabWidth=false 12 | FixedTabWidthValue=498 13 | HandleHistory= 14 | HideTabBarWithOneTab=true 15 | HistoryLimited=false 16 | HistoryLimitedTo=1000 17 | KeyboardCursorShape=2 18 | LastWindowMaximized=true 19 | MenuVisible=false 20 | MotionAfterPaste=2 21 | NoMenubarAccel=true 22 | OpenNewTabRightToActiveTab=true 23 | PrefDialogSize=@Size(720 494) 24 | SavePosOnExit=true 25 | SaveSizeOnExit=true 26 | ScrollbarPosition=0 27 | ShowCloseTabButton=false 28 | TabBarless=false 29 | TabsPosition=0 30 | Term=xterm-256color 31 | TerminalBackgroundImage= 32 | TerminalBackgroundMode=0 33 | TerminalMargin=9 34 | TerminalTransparency=5 35 | TerminalsPreset=0 36 | TrimPastedTrailingNewlines=false 37 | UseBookmarks=false 38 | UseCWD=true 39 | UseFontBoxDrawingChars=true 40 | colorScheme=Tango 41 | emulation=default 42 | enabledBidiSupport=true 43 | fontFamily=Hack NF 44 | fontSize=15 45 | guiStyle= 46 | highlightCurrentTerminal=false 47 | showTerminalSizeHint=false 48 | version=1.3.0 49 | 50 | [DropMode] 51 | Height=45 52 | KeepOpen=false 53 | ShortCut=F12 54 | ShowOnStart=true 55 | Width=70 56 | 57 | [MainWindow] 58 | ApplicationTransparency=5 59 | fixedSize=@Size(600 400) 60 | pos=@Point(0 0) 61 | size=@Size(1850 1048) 62 | state=@ByteArray(\0\0\0\xff\0\0\0\0\xfd\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\0\xfc\x2\0\0\0\x1\xfb\0\0\0&\0\x42\0o\0o\0k\0m\0\x61\0r\0k\0s\0\x44\0o\0\x63\0k\0W\0i\0\x64\0g\0\x65\0t\0\0\0\0\0\xff\xff\xff\xff\0\0\0u\0\xff\xff\xff\0\0\a:\0\0\x4\x18\0\0\0\x4\0\0\0\x4\0\0\0\b\0\0\0\b\xfc\0\0\0\0) 63 | 64 | [Sessions] 65 | size=0 66 | 67 | [Shortcuts] 68 | Add%20Tab=Ctrl+Shift+T 69 | Bottom%20Subterminal=Alt+Down 70 | Clear%20Active%20Terminal=Ctrl+Shift+X 71 | Close%20Tab=Ctrl+Shift+W 72 | Collapse%20Subterminal= 73 | Copy%20Selection=Ctrl+Shift+C 74 | Find=Ctrl+Shift+F 75 | Fullscreen=F11 76 | Handle%20history= 77 | Hide%20Window%20Borders= 78 | Left%20Subterminal=Alt+Left 79 | Move%20Tab%20Left=Alt+Shift+Left|Ctrl+Shift+PgUp 80 | Move%20Tab%20Right=Alt+Shift+Right|Ctrl+Shift+PgDown 81 | New%20Window=Ctrl+Shift+N 82 | Next%20Tab=Ctrl+PgDown 83 | Next%20Tab%20in%20History=Ctrl+Shift+Tab 84 | Paste%20Clipboard=Ctrl+Shift+V 85 | Paste%20Selection=Shift+Ins 86 | Preferences...="Ctrl+," 87 | Previous%20Tab=Ctrl+PgUp 88 | Previous%20Tab%20in%20History=Ctrl+Tab 89 | Quit= 90 | Rename%20Session=Alt+Shift+S 91 | Right%20Subterminal=Alt+Right 92 | Show%20Tab%20Bar= 93 | Split%20Terminal%20Horizontally=Ctrl+Shift+O 94 | Split%20Terminal%20Vertically=Ctrl+Shift+K 95 | Tab%201= 96 | Tab%2010= 97 | Tab%202= 98 | Tab%203= 99 | Tab%204= 100 | Tab%205= 101 | Tab%206= 102 | Tab%207= 103 | Tab%208= 104 | Tab%209= 105 | Toggle%20Bookmarks=Ctrl+Shift+B 106 | Toggle%20Menu=Ctrl+Shift+M 107 | Top%20Subterminal=Alt+Up 108 | Zoom%20in=Ctrl++ 109 | Zoom%20out=Ctrl+- 110 | Zoom%20reset=Ctrl+0 111 | -------------------------------------------------------------------------------- /dev-server.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Install Neovim 4 | sudo apt update 5 | sudo apt install neovim curl unzip bash -y 6 | 7 | # Install Oh My Bash 8 | bash -c "$(curl -fsSL https://raw.githubusercontent.com/ohmybash/oh-my-bash/master/tools/install.sh)" 9 | 10 | # Optionally, you might want to set Neovim as the default editor 11 | echo "export EDITOR=nvim" >> ~/.bashrc 12 | 13 | # Optionally, you might want to set Neovim as the default git editor 14 | echo "export GIT_EDITOR=nvim" >> ~/.bashrc 15 | ./config-nvim.sh 16 | 17 | echo "Neovim and Oh My Bash have been installed successfully!" 18 | 19 | # Docker 20 | ./docker-install.sh -------------------------------------------------------------------------------- /docker-install-mint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sudo apt-get update 3 | sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common 4 | 5 | curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - 6 | sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(. /etc/os-release; echo "$UBUNTU_CODENAME") stable" 7 | cat /etc/apt/sources.list.d/additional-repositories.list 8 | sudo apt-get update 9 | sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose 10 | sudo usermod -aG docker $USER 11 | 12 | -------------------------------------------------------------------------------- /docker-install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Older versions of Docker went by the names of docker, docker.io, or docker-engine. Uninstall any such older versions before attempting to install a new version: 3 | for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done 4 | # Update the apt package index and install packages to allow apt to use a repository over HTTPS: 5 | # Add Docker's official GPG key: 6 | sudo apt-get update 7 | sudo apt-get install ca-certificates curl 8 | sudo install -m 0755 -d /etc/apt/keyrings 9 | sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc 10 | sudo chmod a+r /etc/apt/keyrings/docker.asc 11 | 12 | # Add the repository to Apt sources: 13 | echo \ 14 | "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ 15 | $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ 16 | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null 17 | sudo apt-get update 18 | # Install Docker Engine, containerd, and Docker Compose. 19 | sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y 20 | 21 | # Manage Docker as a non-root user 22 | 23 | # Create the docker group 24 | sudo groupadd docker 25 | # Add your user to the docker group 26 | sudo usermod -aG docker $USER 27 | # activate the changes to groups 28 | newgrp docker 29 | -------------------------------------------------------------------------------- /fix-broken.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sudo apt --fix-broken install -------------------------------------------------------------------------------- /fix-libdvd.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sudo dpkg-reconfigure libdvd-pkg 3 | -------------------------------------------------------------------------------- /fnm.sh: -------------------------------------------------------------------------------- 1 | curl -fsSL https://fnm.vercel.app/install | bash 2 | -------------------------------------------------------------------------------- /gen-ssh-key.sh: -------------------------------------------------------------------------------- 1 | ssh-keygen -t ed25519 -C "kerolloz@yahoo.com" 2 | 3 | eval "$(ssh-agent -s)" 4 | 5 | ssh-add ~/.ssh/id_ed25519 6 | 7 | cat ~/.ssh/id_ed25519.pub 8 | -------------------------------------------------------------------------------- /install-minikube.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # script to install minikube 3 | 4 | if ! grep -E 'vmx|svm' /proc/cpuinfo > /dev/null; then # must support virtualization 5 | echo "CPU doesn't support virtualization" 6 | exit 1 7 | fi 8 | 9 | install () { 10 | 11 | if command kubectl >/dev/null 2>&1; then # 2>&1 simply says redirect standard error to standard output. 12 | echo "kubetcl is already installed" 13 | else 14 | curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" 15 | chmod +x kubectl 16 | mv kubectl $HOME/local/bin 17 | fi 18 | 19 | if command minikube >/dev/null 2>&1; then 20 | echo "minikube is already installed" 21 | else 22 | curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 23 | chmod +x minikube 24 | mv minikube $HOME/local/bin 25 | fi 26 | } 27 | 28 | install 29 | -------------------------------------------------------------------------------- /install-my-ip-hide.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | wget http://myiphide.com/mih 3 | sh mih 4 | -------------------------------------------------------------------------------- /install-neovim.sh: -------------------------------------------------------------------------------- 1 | # Download the latest Neovim release tarball for Linux (x86_64) 2 | curl -LO https://github.com/neovim/neovim/releases/download/v0.11.0/nvim-linux-x86_64.tar.gz 3 | 4 | # Remove any existing Neovim installation 5 | sudo rm -rf /opt/nvim 6 | 7 | # Extract the downloaded tarball to /opt/nvim 8 | sudo tar -C /opt -xzf nvim-linux-x86_64.tar.gz 9 | 10 | # Clean up the tarball 11 | rm nvim-linux-x86_64.tar.gz 12 | 13 | # Update the PATH in ~/.zshrc to include the Neovim binary 14 | echo 'export PATH="$PATH:/opt/nvim-linux-x86_64/bin"' >> ~/.zshrc 15 | -------------------------------------------------------------------------------- /install-stacer.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sudo add-apt-repository ppa:oguzhaninan/stacer 3 | sudo apt-get update 4 | sudo apt-get install stacer 5 | -------------------------------------------------------------------------------- /install-vscode.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg 3 | sudo install -o root -g root -m 644 packages.microsoft.gpg /etc/apt/trusted.gpg.d/ 4 | sudo sh -c 'echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/trusted.gpg.d/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" > /etc/apt/sources.list.d/vscode.list' 5 | rm -f packages.microsoft.gpg 6 | sudo apt install apt-transport-https 7 | sudo apt update 8 | sudo apt install code 9 | -------------------------------------------------------------------------------- /installify.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | clear; 3 | 4 | username=$(whoami); 5 | echo "Hello," $username; 6 | 7 | BASEDIR=$(dirname "$0") 8 | programs=$(cat $BASEDIR/requirements.txt); 9 | 10 | echo "the following programs are going to be installed" 11 | echo "------------------------------------------------" 12 | echo "$programs" 13 | echo "------------------------------------------------" 14 | 15 | ./updater.sh 16 | 17 | enter_fullscreen() { 18 | # Save screen contents 19 | tput smcup 2> /dev/null 20 | } 21 | 22 | leave_fullscreen() { 23 | # Set cursor to normal 24 | tput cnorm 2> /dev/null 25 | # Restore screen contentsq 26 | tput rmcup 2> /dev/null 27 | stty echo 28 | } 29 | 30 | handle_sigint() { 31 | leave_fullscreen 32 | S="$?" 33 | kill 0 34 | exit $S 35 | } 36 | 37 | handle_sigtstp() { 38 | leave_fullscreen 39 | kill -s SIGSTOP $$ 40 | } 41 | 42 | 43 | 44 | sudo apt install $programs -y; 45 | echo "Installing software packages done." 46 | 47 | cp -r $BASEDIR/templates/* ~/Templates/ 48 | echo "Copying templates done." 49 | 50 | enter_fullscreen 51 | clear 52 | trap handle_sigint INT 53 | trap handle_sigtstp SIGTSTP 54 | 55 | # Git configuration 56 | read -p 'Git Author Name: ' author_name 57 | read -p 'Git Email: ' email 58 | 59 | git config --global user.email $email 60 | git config --global user.name "$author_name" 61 | 62 | leave_fullscreen 63 | echo "Git config done." 64 | 65 | -------------------------------------------------------------------------------- /load-dconf-settings.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) 4 | BACKUP_FILE="$SCRIPT_DIR/config/backup.dconf.settings" 5 | 6 | [ ! -f "$BACKUP_FILE" ] && { echo "Cannot find your saved configuration. $BACKUP_FILE does not exist."; exit 1; } 7 | 8 | dconf dump / > current.dconf.settings.backup 9 | echo "Created current.dconf.settings.backup file to save a backup of current settings" 10 | dconf load / < "$BACKUP_FILE" 11 | 12 | -------------------------------------------------------------------------------- /pre-ruby.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sudo apt install autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm6 libgdbm-dev libdb-dev 3 | -------------------------------------------------------------------------------- /rbenv-install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo "execute the lines in the terminal not as a sciprt" 3 | exit 1 4 | 5 | git clone https://github.com/rbenv/rbenv.git ~/.rbenv 6 | cd ~/.rbenv && src/configure && make -C src 7 | echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile 8 | echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc 9 | echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.zshrc 10 | ~/.rbenv/bin/rbenv init 11 | curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash 12 | # rbenv doctor -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | gcc 2 | g++ 3 | git 4 | python3 5 | python3-pip 6 | curl 7 | wget 8 | net-tools 9 | gnome-tweaks 10 | vlc 11 | software-properties-common gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly libdvd-pkg 12 | qterminal 13 | zsh 14 | libfuse2 15 | ripgrep 16 | 17 | -------------------------------------------------------------------------------- /reset-default-terminal.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | gsettings reset org.gnome.desktop.default-applications.terminal exec 3 | -------------------------------------------------------------------------------- /setup-terminal.sh: -------------------------------------------------------------------------------- 1 | # Ensure Dependencies 2 | sudo apt install zsh git curl wget fonts-powerline fonts-firacode qterminal 3 | 4 | echo "------------------------------------" 5 | echo "Please take into consideration to exit from the zsh shell that will be opened after oh-my-zsh installation" 6 | echo "------------------------------------" 7 | 8 | # Install OH MY ZSH 9 | sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" 10 | 11 | # Download Fonts 12 | wget https://github.com/ryanoasis/nerd-fonts/releases/download/v2.1.0/Hack.zip 13 | unzip Hack.zip 14 | 15 | mkdir ~/.fonts 16 | mv *.ttf ~/.fonts 17 | fc-cache -v -f ~/.fonts 18 | 19 | # Config Qterminal 20 | mkdir -p ~/.config/qterminal.org/ 21 | cat ./config/qterminal.ini > ~/.config/qterminal.org/qterminal.ini 22 | 23 | # Set as Default 24 | gsettings set org.gnome.desktop.default-applications.terminal exec /usr/bin/qterminal 25 | 26 | # P10k 27 | git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k 28 | 29 | sed -i 's/ZSH_THEME=.*$/ZSH_THEME="powerlevel10k\/powerlevel10k"/' ~/.zshrc 30 | 31 | echo "You'll need to reboot" 32 | 33 | 34 | -------------------------------------------------------------------------------- /templates/cpp.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef vector vi; 6 | typedef map mpsi; 7 | typedef pair pii; 8 | typedef map mpis; 9 | typedef set si; 10 | typedef long long ll; 11 | typedef unsigned long long ull; 12 | 13 | 14 | int main (){ 15 | // the following 2 lines are for fast input & output. For further info, please, visit: https://goo.gl/PoBEF1 16 | ios_base::sync_with_stdio(false); 17 | cin.tie(NULL); 18 | // come on, go SOLVE it..!!! 19 | // save your code, then use tester.py to check the test cases 20 | 21 | 22 | return 0; 23 | } 24 | -------------------------------------------------------------------------------- /templates/css.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kerolloz/installify/ff3b183ca65fcdf62fb3debafd3b228f5429bc64/templates/css.css -------------------------------------------------------------------------------- /templates/html.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Document 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /templates/javascript.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kerolloz/installify/ff3b183ca65fcdf62fb3debafd3b228f5429bc64/templates/javascript.js -------------------------------------------------------------------------------- /templates/php.php: -------------------------------------------------------------------------------- 1 |