From e280dad1d4af1312f01f1594b40e2c6187beb655 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Dudr?= Date: Fri, 6 May 2022 10:08:57 +0200 Subject: [PATCH] init --- .chezmoiexternal.toml | 10 + _laya-repo | 12 + bin/executable_devel | 63 + dot_config/broot/conf.hjson | 360 +++ .../composer/encrypted_private_auth.json.asc | 9 + dot_config/composer/private_config.json | 6 + dot_config/containers/containers.conf.tmpl | 607 +++++ dot_config/containers/registries.conf | 77 + .../registries.conf.d/00-shortnames.conf | 108 + dot_config/containers/storage.conf.tmpl | 9 + dot_config/dunst/dunstrc | 414 +++ dot_config/encrypted_laya.cfg.asc | 8 + dot_config/greenclip.toml.tmpl | 9 + dot_config/herbstluftwm/colors.sh | 54 + .../herbstluftwm/executable_autostart.tmpl | 256 ++ dot_config/herbstluftwm/executable_clipmenu | 52 + dot_config/herbstluftwm/executable_clipmenud | 118 + .../herbstluftwm/executable_file-browser | 38 + dot_config/herbstluftwm/executable_monitors | 25 + .../herbstluftwm/executable_monitors.plug | 28 + .../herbstluftwm/executable_panel-generator | 78 + .../executable_panel-generator.ksh | 76 + .../herbstluftwm/executable_panel-handler | 272 ++ .../herbstluftwm/executable_passboltmenu | 18 + .../herbstluftwm/executable_passboltmenu2 | 28 + dot_config/herbstluftwm/executable_passmenu | 25 + dot_config/herbstluftwm/executable_passmenu2 | 30 + .../herbstluftwm/executable_pmount-dmenu | 34 + dot_config/herbstluftwm/executable_pulsemenu | 75 + dot_config/imv/config | 63 + dot_config/jesseduffield/lazygit/config.yml | 11 + dot_config/kitty/kitty.conf | 1942 ++++++++++++++ dot_config/kitty/open-actions.conf | 10 + .../kitty/private_Gruvbox Dark Hard.conf | 33 + dot_config/nginx/fastcgi.conf | 26 + dot_config/nginx/fastcgi_params | 25 + dot_config/nginx/koi-utf | 109 + dot_config/nginx/koi-win | 103 + dot_config/nginx/mime.types | 1003 +++++++ dot_config/nginx/nginx.conf.tmpl | 443 ++++ dot_config/nginx/scgi_params | 17 + dot_config/nginx/ssl/localhost.crt | 31 + dot_config/nginx/ssl/localhost.key | 27 + dot_config/nginx/uwsgi_params | 17 + dot_config/nginx/win-utf | 126 + dot_config/nvim/after/ftplugin/latte.vim | 2 + dot_config/nvim/after/syntax/latte.vim | 10 + dot_config/nvim/autoload/go.vim | 9 + dot_config/nvim/ftdetect/nette.vim | 1 + dot_config/nvim/ftdetect/yaml.vim | 5 + dot_config/nvim/init.lua | 458 ++++ dot_config/php/.keep | 0 dot_config/phpactor/.keep | 0 dot_config/picom/.keep | 0 dot_config/private_cmus/autosave.tmpl | 227 ++ dot_config/private_cmus/solarized-sogun.theme | 49 + dot_config/private_mc/ini | 196 ++ dot_config/private_mc/mc.ext | 827 ++++++ dot_config/private_mc/menu | 418 +++ dot_config/private_mpv/mpv.conf | 1 + dot_config/private_pipewire/pipewire.conf | 248 ++ dot_config/private_qutebrowser/config.py | 2317 +++++++++++++++++ dot_config/private_qutebrowser/gruvbox.py | 332 +++ dot_config/private_qutebrowser/quickmarks | 4 + dot_config/ranger/rc.conf | 4 + .../rclone/encrypted_private_rclone.conf.asc | 253 ++ dot_config/rofi/.keep | 0 .../symlink_mpDris2.service | 1 + .../symlink_pipewire-pulse.service | 1 + dot_config/systemd/user/dunst.service | 10 + dot_config/systemd/user/greenclip.service | 10 + dot_config/systemd/user/hlwm.target | 5 + .../symlink_dunst.service.tmpl | 1 + .../symlink_greenclip.service.tmpl | 1 + .../symlink_mconnect.service.tmpl | 1 + .../symlink_panel-generator.service.tmpl | 1 + .../symlink_panel-handler.service.tmpl | 1 + .../symlink_picom.service.tmpl | 1 + dot_config/systemd/user/mconnect.service | 8 + .../user/mpDris2.service.d/override.conf | 2 + dot_config/systemd/user/nginx.service.tmpl | 14 + .../systemd/user/panel-generator.service.tmpl | 12 + .../systemd/user/panel-handler.service.tmpl | 10 + dot_config/systemd/user/php@.service.tmpl | 20 + dot_config/systemd/user/picom.service | 10 + .../symlink_wireplumber.service | 1 + .../symlink_pipewire-pulse.socket | 1 + dot_config/systemd/user/swayidle.service | 9 + .../user/symlink_at-spi-dbus-bus.service | 1 + .../systemd/user/symlink_gvfs-daemon.service | 1 + .../user/symlink_gvfs-metadata.service | 1 + ...ymlink_gvfs-udisks2-volume-monitor.service | 1 + .../symlink_xdg-desktop-portal-gtk.service | 1 + dot_config/zsh/.keep | 0 dot_config/zsh/aliases.zsh | 28 + dot_config/zsh/functions.zsh | 25 + dot_gitconfig | 38 + dot_mbsyncrc | 66 + dot_zshrc | 105 + private_dot_msmtprc | 49 + run_once_install-packages | 65 + 101 files changed, 12747 insertions(+) create mode 100644 .chezmoiexternal.toml create mode 100644 _laya-repo create mode 100644 bin/executable_devel create mode 100644 dot_config/broot/conf.hjson create mode 100644 dot_config/composer/encrypted_private_auth.json.asc create mode 100644 dot_config/composer/private_config.json create mode 100644 dot_config/containers/containers.conf.tmpl create mode 100644 dot_config/containers/registries.conf create mode 100644 dot_config/containers/registries.conf.d/00-shortnames.conf create mode 100644 dot_config/containers/storage.conf.tmpl create mode 100644 dot_config/dunst/dunstrc create mode 100644 dot_config/encrypted_laya.cfg.asc create mode 100644 dot_config/greenclip.toml.tmpl create mode 100644 dot_config/herbstluftwm/colors.sh create mode 100644 dot_config/herbstluftwm/executable_autostart.tmpl create mode 100644 dot_config/herbstluftwm/executable_clipmenu create mode 100644 dot_config/herbstluftwm/executable_clipmenud create mode 100644 dot_config/herbstluftwm/executable_file-browser create mode 100644 dot_config/herbstluftwm/executable_monitors create mode 100644 dot_config/herbstluftwm/executable_monitors.plug create mode 100644 dot_config/herbstluftwm/executable_panel-generator create mode 100644 dot_config/herbstluftwm/executable_panel-generator.ksh create mode 100644 dot_config/herbstluftwm/executable_panel-handler create mode 100644 dot_config/herbstluftwm/executable_passboltmenu create mode 100644 dot_config/herbstluftwm/executable_passboltmenu2 create mode 100644 dot_config/herbstluftwm/executable_passmenu create mode 100644 dot_config/herbstluftwm/executable_passmenu2 create mode 100644 dot_config/herbstluftwm/executable_pmount-dmenu create mode 100644 dot_config/herbstluftwm/executable_pulsemenu create mode 100644 dot_config/imv/config create mode 100644 dot_config/jesseduffield/lazygit/config.yml create mode 100644 dot_config/kitty/kitty.conf create mode 100644 dot_config/kitty/open-actions.conf create mode 100644 dot_config/kitty/private_Gruvbox Dark Hard.conf create mode 100644 dot_config/nginx/fastcgi.conf create mode 100644 dot_config/nginx/fastcgi_params create mode 100644 dot_config/nginx/koi-utf create mode 100644 dot_config/nginx/koi-win create mode 100644 dot_config/nginx/mime.types create mode 100644 dot_config/nginx/nginx.conf.tmpl create mode 100644 dot_config/nginx/scgi_params create mode 100644 dot_config/nginx/ssl/localhost.crt create mode 100644 dot_config/nginx/ssl/localhost.key create mode 100644 dot_config/nginx/uwsgi_params create mode 100644 dot_config/nginx/win-utf create mode 100644 dot_config/nvim/after/ftplugin/latte.vim create mode 100644 dot_config/nvim/after/syntax/latte.vim create mode 100644 dot_config/nvim/autoload/go.vim create mode 100644 dot_config/nvim/ftdetect/nette.vim create mode 100644 dot_config/nvim/ftdetect/yaml.vim create mode 100644 dot_config/nvim/init.lua create mode 100644 dot_config/php/.keep create mode 100644 dot_config/phpactor/.keep create mode 100644 dot_config/picom/.keep create mode 100644 dot_config/private_cmus/autosave.tmpl create mode 100644 dot_config/private_cmus/solarized-sogun.theme create mode 100644 dot_config/private_mc/ini create mode 100644 dot_config/private_mc/mc.ext create mode 100644 dot_config/private_mc/menu create mode 100644 dot_config/private_mpv/mpv.conf create mode 100644 dot_config/private_pipewire/pipewire.conf create mode 100644 dot_config/private_qutebrowser/config.py create mode 100644 dot_config/private_qutebrowser/gruvbox.py create mode 100644 dot_config/private_qutebrowser/quickmarks create mode 100644 dot_config/ranger/rc.conf create mode 100644 dot_config/rclone/encrypted_private_rclone.conf.asc create mode 100644 dot_config/rofi/.keep create mode 100644 dot_config/systemd/user/default.target.wants/symlink_mpDris2.service create mode 100644 dot_config/systemd/user/default.target.wants/symlink_pipewire-pulse.service create mode 100644 dot_config/systemd/user/dunst.service create mode 100644 dot_config/systemd/user/greenclip.service create mode 100644 dot_config/systemd/user/hlwm.target create mode 100644 dot_config/systemd/user/hlwm.target.wants/symlink_dunst.service.tmpl create mode 100644 dot_config/systemd/user/hlwm.target.wants/symlink_greenclip.service.tmpl create mode 100644 dot_config/systemd/user/hlwm.target.wants/symlink_mconnect.service.tmpl create mode 100644 dot_config/systemd/user/hlwm.target.wants/symlink_panel-generator.service.tmpl create mode 100644 dot_config/systemd/user/hlwm.target.wants/symlink_panel-handler.service.tmpl create mode 100644 dot_config/systemd/user/hlwm.target.wants/symlink_picom.service.tmpl create mode 100644 dot_config/systemd/user/mconnect.service create mode 100644 dot_config/systemd/user/mpDris2.service.d/override.conf create mode 100644 dot_config/systemd/user/nginx.service.tmpl create mode 100644 dot_config/systemd/user/panel-generator.service.tmpl create mode 100644 dot_config/systemd/user/panel-handler.service.tmpl create mode 100644 dot_config/systemd/user/php@.service.tmpl create mode 100644 dot_config/systemd/user/picom.service create mode 100644 dot_config/systemd/user/pipewire.service.wants/symlink_wireplumber.service create mode 100644 dot_config/systemd/user/sockets.target.wants/symlink_pipewire-pulse.socket create mode 100644 dot_config/systemd/user/swayidle.service create mode 100644 dot_config/systemd/user/symlink_at-spi-dbus-bus.service create mode 100644 dot_config/systemd/user/symlink_gvfs-daemon.service create mode 100644 dot_config/systemd/user/symlink_gvfs-metadata.service create mode 100644 dot_config/systemd/user/symlink_gvfs-udisks2-volume-monitor.service create mode 100644 dot_config/systemd/user/symlink_xdg-desktop-portal-gtk.service create mode 100644 dot_config/zsh/.keep create mode 100644 dot_config/zsh/aliases.zsh create mode 100644 dot_config/zsh/functions.zsh create mode 100644 dot_gitconfig create mode 100644 dot_mbsyncrc create mode 100644 dot_zshrc create mode 100644 private_dot_msmtprc create mode 100644 run_once_install-packages diff --git a/.chezmoiexternal.toml b/.chezmoiexternal.toml new file mode 100644 index 0000000..452ae33 --- /dev/null +++ b/.chezmoiexternal.toml @@ -0,0 +1,10 @@ +[".oh-my-zsh"] +type = "archive" +url = "https://github.com/ohmyzsh/ohmyzsh/archive/master.tar.gz" +exact = true +stripComponents = 1 +refreshPeriod = "168h" + +[".local/share/nvim/site/pack/packer/start/packer.nvim"] +type = "git-repo" +url = "https://github.com/wbthomason/packer.nvim" diff --git a/_laya-repo b/_laya-repo new file mode 100644 index 0000000..f2df9c3 --- /dev/null +++ b/_laya-repo @@ -0,0 +1,12 @@ +#compdef laya-repo + +_describe 'command' '( + commit-all:go\ through\ all\ libs\ in\ storage,\ stage\ all\ changes,\ commit\ them\ + convert:create\ new\ laya\ repository\ and\ copy\ current\ dir\ to\ repository\ directory\ + pull-all:pull\ or\ clone\ everything\ in\ repository.laya.io/laya/\ + status:show\ what\ is\ not\ commited\ + diff:show\ diff\ of\ current\ directory\ agains\ laya\ lib\ of\ same\ name\ + sync:synchronize\ all\ files\ of\ current\ directory\ to\ laya\ lib\ of\ same\ name\ + sync-all:call\ sync\ to\ all\ subdirectories\ of\ current\ directory + )' && ret=0 + diff --git a/bin/executable_devel b/bin/executable_devel new file mode 100644 index 0000000..0b69ad7 --- /dev/null +++ b/bin/executable_devel @@ -0,0 +1,63 @@ +#!/bin/bash +versions=( 56 71 72 73 74 80 81) + +stop_fpm() { + for v in "${versions[@]}" + do + msg="${v:-default}" + [[ "$(systemctl --user is-active "php@${v}.service")" == active ]] && systemctl --user stop "php@${v}" && echo "Stop php fpm ($msg)" + done +} + +start() { + [[ "$(systemctl --user is-active nginx.service)" != active ]] && echo Start nginx && systemctl --user start nginx.service + msg="${1:-default}" + systemctl --user restart "php@$1.service" && echo "Start php fpm ($msg)" +} + +restart() { + stop_fpm + start "${1:-74}" +} + +case $1 in + start|default|80|php80) + restart 80 + ;; + stop) + systemctl --user stop nginx && echo Stop nginx + stop_fpm + ;; + php71|71) + restart 71 + ;; + php72|72) + restart 72 + ;; + php73|73) + restart 73 + ;; + php74|74) + restart 74 + ;; + php81|81) + restart 81 + ;; + php56|56) + restart 56 + ;; + dev|snapshot|-snapshot) + restart -snapshot + ;; + *) + for v in "${versions[@]}" + do + msg="${v:-default}" + [[ "$(systemctl --user is-active "php@${v}")" == active ]] && echo "($msg)" && exit + done + + restart + + ;; +esac + diff --git a/dot_config/broot/conf.hjson b/dot_config/broot/conf.hjson new file mode 100644 index 0000000..8d99b41 --- /dev/null +++ b/dot_config/broot/conf.hjson @@ -0,0 +1,360 @@ +############################################################### +# This configuration file lets you +# - define new commands +# - change the shortcut or triggering keys of built-in verbs +# - change the colors +# - set default values for flags +# - set special behaviors on specific paths +# - and more... +# +# Configuration documentation is available at +# https://dystroy.org/broot +# +# This file's format is Hjson ( https://hjson.github.io/ ). Some +# properties are commented out. To enable them, remove the `#`. +# +############################################################### +{ + capture_mouse: false + + ############################################################### + # Default flags + # You can set up flags you want broot to start with by + # default, for example `default_flags="ihp"` if you usually want + # to see hidden and gitignored files and the permissions (then + # if you don't want the hidden files you can launch `br -H`) + # A popular flag is the `g` one which displays git related info. + # + # default_flags: + + ############################################################### + # Date/Time format + # If you want to change the format for date/time, uncomment the + # following line and change it according to + # https://docs.rs/chrono/0.4.11/chrono/format/strftime/index.html + # + # date_time_format: %Y/%m/%d %R + + ############################################################### + # uncomment to activate modal mode + # + # (you really should read https://dystroy.org/broot/modal/ + # before as it may not suit everybody even among vim users) + # + modal: false + + ############################################################### + # Whether to mark the selected line with a triangle + # + show_selection_mark: true + + ############################################################### + # Column order + # cols_order, if specified, must be a permutation of the following + # array. You should keep the name at the end as it has a variable + # length. + # + # cols_order: [ + # mark + # git + # size + # permission + # date + # count + # branch + # name + # ] + + ############################################################### + # True Colors + # If this parameter isn't set, broot tries to automatically + # determine whether true colors (24 bits) are available. + # As this process is unreliable, you may uncomment this setting + # and set it to false or true if you notice the colors in + # previewed images are too off. + # + # true_colors: false + + ############################################################### + # Icons + # If you want to display icons in broot, uncomment this line + # (see https://dystroy.org/broot/icons for installation and + # troubleshooting) + # + # icon_theme: vscode + + ############################################################### + # Special paths + # If some paths must be handled specially, uncomment (and change + # this section as per the examples) + # + # special_paths: { + # "/media/slow-backup-disk" : no-enter + # "/home/dys/useless" : hide + # "/home/dys/my-link-I-want-to-explore" : enter + # } + + ############################################################### + # Quit on last cancel + # You can usually cancel the last state change on escape. + # If you want the escape key to quit broot when there's nothing + # to cancel (for example when you just opened broot), uncomment + # this parameter + # + # quit_on_last_cancel: true + + ############################################################### + # Search modes + # + # broot allows many search modes. + # A search mode is defined by + # - the way to search: 'fuzzy', 'exact', 'regex', or 'tokens'. + # - where to search: file 'name', 'path', or file 'content' + # A search pattern may for example be "fuzzy path" (default), + # "regex content" or "exact path". + # + # The search mode is selected from its prefix. For example, if + # you type "abc", the default mode is "fuzzy path". If you type + # "/abc", the mode is "regex path". If you type "rn/abc", the mode + # is "regex name". + # + # This mapping may be modified. You may want to dedicate the + # empty prefix (the one which doesn't need a '/') to the + # search mode you use most often. The example below makes it + # easy to search on name rather than on the subpath. + # + # More information on + # https://dystroy.org/broot/input/#the-filtering-pattern + # + # search_modes: { + # : fuzzy name + # /: regex name + # } + + ############################################################### + # Verbs and shortcuts + # You can define your own commands which would be applied to + # the selection. + # You'll also find below verbs that you can customize or enable. + verbs: [ + + # Example 1: launching `tail -n` on the selected file (leaving broot) + # { + # name: tail_lines + # invocation: tl {lines_count} + # execution: "tail -f -n {lines_count} {file}" + # } + + # Example 2: creating a new file without leaving broot + # { + # name: touch + # invocation: touch {new_file} + # execution: "touch {directory}/{new_file}" + # leave_broot: false + # } + + # A standard recommended command for editing files, that you + # can customize. + # If $EDITOR isn't set on your computer, you should either set it using + # something similar to + # export EDITOR=nvim + # or just replace it with your editor of choice in the 'execution' + # pattern. + # If your editor is able to open a file on a specific line, use {line} + # so that you may jump directly at the right line from a preview. + # Example: + # execution: nvim +{line} {file} + { + invocation: edit + shortcut: e + execution: "$EDITOR +{line} {file}" + leave_broot: false + } + + # A convenient shortcut to create new text files in + # the current directory or below + { + invocation: create {subpath} + execution: "$EDITOR {directory}/{subpath}" + leave_broot: false + } + + { + invocation: git_diff + shortcut: gd + leave_broot: false + execution: "git difftool -y {file}" + } + + # On ctrl-b, propose the creation of a copy of the selection. + # While this might occasionally be useful, this verb is mostly here + # as an example to demonstrate rare standard groups like {file-stem} + # and {file-dot-extension} and the auto_exec verb property which + # allows verbs not executed until you hit enter + { + invocation: "backup {version}" + key: ctrl-b + leave_broot: false + auto_exec: false + execution: "cp -r {file} {parent}/{file-stem}-{version}{file-dot-extension}" + } + + # This verb lets you launch a terminal on ctrl-T + # (on exit you'll be back in broot) + { + invocation: terminal + key: ctrl-t + execution: "$SHELL" + set_working_dir: true + leave_broot: false + } + + # Here's an example of a shortcut bringing you to your home directory + # { + # invocation: home + # key: ctrl-home + # execution: ":focus ~" + # } + + # A popular set of shortcuts for going up and down: + # + # { + # key: ctrl-k + # execution: ":line_up" + # } + # { + # key: ctrl-j + # execution: ":line_down" + # } + # { + # key: ctrl-u + # execution: ":page_up" + # } + # { + # key: ctrl-d + # execution: ":page_down" + # } + + # If you develop using git, you might like to often switch + # to the git status filter: + # { + # key: ctrl-g + # execution: ":toggle_git_status" + # } + + # You can reproduce the bindings of Norton Commander + # on copying or moving to the other panel: + # { + # key: F5 + # external: "cp -r {file} {other-panel-directory}" + # leave_broot: false + # } + # { + # key: F6 + # external: "mv {file} {other-panel-directory}" + # leave_broot: false + # } + ] + + ############################################################### + # Skin + # If you want to change the colors of broot, + # uncomment the following bloc and start messing + # with the various values. + # A skin entry value is made of two parts separated with a '/': + # The first one is the skin for the active panel. + # The second one, optional, is the skin for non active panels. + # You may find explanations and other skins on + # https://dystroy.org/broot/skins + ############################################################### + # If you only want to set the default color and a transparent + # background, uncomment this simplified skin: + # skin: { + # default: none none / gray(20) none + # } + # + # To experiment with a whole skin, uncomment this one: + # skin: { + # default: gray(23) none / gray(20) none + # tree: ansi(94) None / gray(3) None + # parent: gray(18) None / gray(13) None + # file: gray(20) None / gray(15) None + # directory: ansi(208) None Bold / ansi(172) None bold + # exe: Cyan None + # link: Magenta None + # pruning: gray(12) None Italic + # perm__: gray(5) None + # perm_r: ansi(94) None + # perm_w: ansi(132) None + # perm_x: ansi(65) None + # owner: ansi(138) None + # group: ansi(131) None + # count: ansi(136) gray(3) + # dates: ansi(66) None + # sparse: ansi(214) None + # content_extract: ansi(29) None + # content_match: ansi(34) None + # git_branch: ansi(229) None + # git_insertions: ansi(28) None + # git_deletions: ansi(160) None + # git_status_current: gray(5) None + # git_status_modified: ansi(28) None + # git_status_new: ansi(94) None Bold + # git_status_ignored: gray(17) None + # git_status_conflicted: ansi(88) None + # git_status_other: ansi(88) None + # selected_line: None gray(5) / None gray(4) + # char_match: Yellow None + # file_error: Red None + # flag_label: gray(15) None + # flag_value: ansi(208) None Bold + # input: White None / gray(15) gray(2) + # status_error: gray(22) ansi(124) + # status_job: ansi(220) gray(5) + # status_normal: gray(20) gray(3) / gray(2) gray(2) + # status_italic: ansi(208) gray(3) / gray(2) gray(2) + # status_bold: ansi(208) gray(3) Bold / gray(2) gray(2) + # status_code: ansi(229) gray(3) / gray(2) gray(2) + # status_ellipsis: gray(19) gray(1) / gray(2) gray(2) + # purpose_normal: gray(20) gray(2) + # purpose_italic: ansi(178) gray(2) + # purpose_bold: ansi(178) gray(2) Bold + # purpose_ellipsis: gray(20) gray(2) + # scrollbar_track: gray(7) None / gray(4) None + # scrollbar_thumb: gray(22) None / gray(14) None + # help_paragraph: gray(20) None + # help_bold: ansi(208) None Bold + # help_italic: ansi(166) None + # help_code: gray(21) gray(3) + # help_headers: ansi(208) None + # help_table_border: ansi(239) None + # preview: gray(20) gray(1) / gray(18) gray(2) + # preview_line_number: gray(12) gray(3) + # preview_match: None ansi(29) + # hex_null: gray(11) None + # hex_ascii_graphic: gray(18) None + # hex_ascii_whitespace: ansi(143) None + # hex_ascii_other: ansi(215) None + # hex_non_ascii: ansi(167) None + # } + + + ############################################################### + # File Extension Colors + # + # uncomment and modify the next section if you want to color + # file name depending on their extension + # + # ext_colors: { + # png: rgb(255, 128, 75) + # rs: yellow + # } + + + ############################################################### + # Max Panels Count + # + # Change this if you sometimes want to have more than 2 panels + # open + # max_panels_count: 2 +} diff --git a/dot_config/composer/encrypted_private_auth.json.asc b/dot_config/composer/encrypted_private_auth.json.asc new file mode 100644 index 0000000..6c637b2 --- /dev/null +++ b/dot_config/composer/encrypted_private_auth.json.asc @@ -0,0 +1,9 @@ +-----BEGIN PGP MESSAGE----- + +jA0EBwMCZjtG6wrHtAby0sAEARfimhkXBBUg/srSCY+f8Ul7RbRYHeioZWYE1FY6 +coVcqgKHjpvxaCbXF2XWZyC6iLe/4i31OIRVz7nAbnTBNlUSKBwXudprQVfi5tUW +rtlZJQYPCr5auwqZr5JZrfe02aMt4RVx+w++shWwcf9sBrWzOX6TyVJzJxIcVEhE +We+kBJqPDy2t1f453BEhdJpXbWkqNkHWj/K+/PD0iFXDjODoKtZLsbY8CPYz0siQ +8hFsJ9IPfL9CGt7svOtkKL6ordqV9A== +=VS4r +-----END PGP MESSAGE----- diff --git a/dot_config/composer/private_config.json b/dot_config/composer/private_config.json new file mode 100644 index 0000000..70194f1 --- /dev/null +++ b/dot_config/composer/private_config.json @@ -0,0 +1,6 @@ +{ + "repositories": [ + { "type": "composer", "url": "https://packages.laya.io" } + ] + +} diff --git a/dot_config/containers/containers.conf.tmpl b/dot_config/containers/containers.conf.tmpl new file mode 100644 index 0000000..a359a31 --- /dev/null +++ b/dot_config/containers/containers.conf.tmpl @@ -0,0 +1,607 @@ +# The containers configuration file specifies all of the available configuration +# command-line options/flags for container engine tools like Podman & Buildah, +# but in a TOML format that can be easily modified and versioned. + +# Please refer to containers.conf(5) for details of all configuration options. +# Not all container engines implement all of the options. +# All of the options have hard coded defaults and these options will override +# the built in defaults. Users can then override these options via the command +# line. Container engines will read containers.conf files in up to three +# locations in the following order: +# 1. /usr/share/containers/containers.conf +# 2. /etc/containers/containers.conf +# 3. $HOME/.config/containers/containers.conf (Rootless containers ONLY) +# Items specified in the latter containers.conf, if they exist, override the +# previous containers.conf settings, or the default settings. + +[containers] + +# List of annotation. Specified as +# "key = value" +# If it is empty or commented out, no annotations will be added +# +#annotations = [] + +# Used to change the name of the default AppArmor profile of container engine. +# +#apparmor_profile = "container-default" + +# Default way to to create a cgroup namespace for the container +# Options are: +# `private` Create private Cgroup Namespace for the container. +# `host` Share host Cgroup Namespace with the container. +# +#cgroupns = "private" + +# Control container cgroup configuration +# Determines whether the container will create CGroups. +# Options are: +# `enabled` Enable cgroup support within container +# `disabled` Disable cgroup support, will inherit cgroups from parent +# `no-conmon` Do not create a cgroup dedicated to conmon. +# +#cgroups = "enabled" + +# List of default capabilities for containers. If it is empty or commented out, +# the default capabilities defined in the container engine will be added. +# +default_capabilities = [ + "CHOWN", + "DAC_OVERRIDE", + "FOWNER", + "FSETID", + "KILL", + "NET_BIND_SERVICE", + "SETFCAP", + "SETGID", + "SETPCAP", + "SETUID", + "SYS_CHROOT" +] + +# A list of sysctls to be set in containers by default, +# specified as "name=value", +# for example:"net.ipv4.ping_group_range=0 0". +# +default_sysctls = [ + "net.ipv4.ping_group_range=0 0", +] + +# A list of ulimits to be set in containers by default, specified as +# "=:", for example: +# "nofile=1024:2048" +# See setrlimit(2) for a list of resource names. +# Any limit not specified here will be inherited from the process launching the +# container engine. +# Ulimits has limits for non privileged container engines. +# +#default_ulimits = [ +# "nofile=1280:2560", +#] + +# List of devices. Specified as +# "::", for example: +# "/dev/sdc:/dev/xvdc:rwm". +# If it is empty or commented out, only the default devices will be used +# +#devices = [] + +# List of default DNS options to be added to /etc/resolv.conf inside of the container. +# +#dns_options = [] + +# List of default DNS search domains to be added to /etc/resolv.conf inside of the container. +# +#dns_searches = [] + +# Set default DNS servers. +# This option can be used to override the DNS configuration passed to the +# container. The special value "none" can be specified to disable creation of +# /etc/resolv.conf in the container. +# The /etc/resolv.conf file in the image will be used without changes. +# +#dns_servers = [] + +# Environment variable list for the conmon process; used for passing necessary +# environment variables to conmon or the runtime. +# +#env = [ +# "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", +# "TERM=xterm", +#] + +# Pass all host environment variables into the container. +# +#env_host = false + +# Default proxy environment variables passed into the container. +# The environment variables passed in include: +# http_proxy, https_proxy, ftp_proxy, no_proxy, and the upper case versions of +# these. This option is needed when host system uses a proxy but container +# should not use proxy. Proxy environment variables specified for the container +# in any other way will override the values passed from the host. +# +#http_proxy = true + +# Run an init inside the container that forwards signals and reaps processes. +# +#init = false + +# Container init binary, if init=true, this is the init binary to be used for containers. +# +#init_path = "/usr/libexec/podman/catatonit" + +# Default way to to create an IPC namespace (POSIX SysV IPC) for the container +# Options are: +# `private` Create private IPC Namespace for the container. +# `host` Share host IPC Namespace with the container. +# +#ipcns = "private" + +# keyring tells the container engine whether to create +# a kernel keyring for use within the container. +# +#keyring = true + +# label tells the container engine whether to use container separation using +# MAC(SELinux) labeling or not. +# The label flag is ignored on label disabled systems. +# +#label = true + +# Logging driver for the container. Available options: k8s-file and journald. +# +#log_driver = "k8s-file" + +# Maximum size allowed for the container log file. Negative numbers indicate +# that no size limit is imposed. If positive, it must be >= 8192 to match or +# exceed conmon's read buffer. The file is truncated and re-opened so the +# limit is never exceeded. +# +#log_size_max = -1 + +# Specifies default format tag for container log messages. +# This is useful for creating a specific tag for container log messages. +# Containers logs default to truncated container ID as a tag. +# +#log_tag = "" + +# Default way to to create a Network namespace for the container +# Options are: +# `private` Create private Network Namespace for the container. +# `host` Share host Network Namespace with the container. +# `none` Containers do not use the network +# +#netns = "private" + +# Create /etc/hosts for the container. By default, container engine manage +# /etc/hosts, automatically adding the container's own IP address. +# +#no_hosts = false + +# Default way to to create a PID namespace for the container +# Options are: +# `private` Create private PID Namespace for the container. +# `host` Share host PID Namespace with the container. +# +#pidns = "private" + +# Maximum number of processes allowed in a container. +# +#pids_limit = 2048 + +# Copy the content from the underlying image into the newly created volume +# when the container is created instead of when it is started. If false, +# the container engine will not copy the content until the container is started. +# Setting it to true may have negative performance implications. +# +#prepare_volume_on_create = false + +# Path to the seccomp.json profile which is used as the default seccomp profile +# for the runtime. +# +#seccomp_profile = "/usr/share/containers/seccomp.json" + +# Size of /dev/shm. Specified as . +# Unit is optional, values: +# b (bytes), k (kilobytes), m (megabytes), or g (gigabytes). +# If the unit is omitted, the system uses bytes. +# +#shm_size = "65536k" + +# Set timezone in container. Takes IANA timezones as well as "local", +# which sets the timezone in the container to match the host machine. +# +#tz = "" + +# Set umask inside the container +# +#umask = "0022" + +# Default way to to create a User namespace for the container +# Options are: +# `auto` Create unique User Namespace for the container. +# `host` Share host User Namespace with the container. +# +#userns = "host" + +# Number of UIDs to allocate for the automatic container creation. +# UIDs are allocated from the "container" UIDs listed in +# /etc/subuid & /etc/subgid +# +#userns_size = 65536 + +# Default way to to create a UTS namespace for the container +# Options are: +# `private` Create private UTS Namespace for the container. +# `host` Share host UTS Namespace with the container. +# +#utsns = "private" + +# List of volumes. Specified as +# "::", for example: +# "/db:/var/lib/db:ro". +# If it is empty or commented out, no volumes will be added +# +#volumes = [] + +[secrets] +#driver = "file" + +[secrets.opts] +#root = "/example/directory" + +[network] + +# Network backend determines what network driver will be used to set up and tear down container networks. +# Valid values are "cni" and "netavark". +# The default value is empty which means that it will automatically choose CNI or netavark. If there are +# already containers/images or CNI networks preset it will choose CNI. +# +# Before changing this value all containers must be stopped otherwise it is likely that +# iptables rules and network interfaces might leak on the host. A reboot will fix this. +# +#network_backend = "" + +# Path to directory where CNI plugin binaries are located. +# +#cni_plugin_dirs = [ +# "/usr/local/libexec/cni", +# "/usr/libexec/cni", +# "/usr/local/lib/cni", +# "/usr/lib/cni", +# "/opt/cni/bin", +#] + +# The network name of the default network to attach pods to. +# +#default_network = "podman" + +# The default subnet for the default network given in default_network. +# If a network with that name does not exist, a new network using that name and +# this subnet will be created. +# Must be a valid IPv4 CIDR prefix. +# +#default_subnet = "10.88.0.0/16" + +# Path to the directory where network configuration files are located. +# For the CNI backend the default is "/etc/cni/net.d" as root +# and "$HOME/.config/cni/net.d" as rootless. +# For the netavark backend "/etc/containers/networks" is used as root +# and "$graphroot/networks" as rootless. +# +#network_config_dir = "/etc/cni/net.d/" + +[engine] +# Index to the active service +# +#active_service = production + +# The compression format to use when pushing an image. +# Valid options are: `gzip`, `zstd` and `zstd:chunked`. +# +#compression_format = "gzip" + + +# Cgroup management implementation used for the runtime. +# Valid options "systemd" or "cgroupfs" +# +cgroup_manager = "systemd" + +# Environment variables to pass into conmon +# +#conmon_env_vars = [ +# "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" +#] + +# Paths to look for the conmon container manager binary +# +#conmon_path = [ +# "/usr/libexec/podman/conmon", +# "/usr/local/libexec/podman/conmon", +# "/usr/local/lib/podman/conmon", +# "/usr/bin/conmon", +# "/usr/sbin/conmon", +# "/usr/local/bin/conmon", +# "/usr/local/sbin/conmon" +#] + +# Enforces using docker.io for completing short names in Podman's compatibility +# REST API. Note that this will ignore unqualified-search-registries and +# short-name aliases defined in containers-registries.conf(5). +#compat_api_enforce_docker_hub = true + +# Specify the keys sequence used to detach a container. +# Format is a single character [a-Z] or a comma separated sequence of +# `ctrl-`, where `` is one of: +# `a-z`, `@`, `^`, `[`, `\`, `]`, `^` or `_` +# +#detach_keys = "ctrl-p,ctrl-q" + +# Determines whether engine will reserve ports on the host when they are +# forwarded to containers. When enabled, when ports are forwarded to containers, +# ports are held open by as long as the container is running, ensuring that +# they cannot be reused by other programs on the host. However, this can cause +# significant memory usage if a container has many ports forwarded to it. +# Disabling this can save memory. +# +#enable_port_reservation = true + +# Environment variables to be used when running the container engine (e.g., Podman, Buildah). +# For example "http_proxy=internal.proxy.company.com". +# Note these environment variables will not be used within the container. +# Set the env section under [containers] table, if you want to set environment variables for the container. +# +#env = [] + +# Define where event logs will be stored, when events_logger is "file". +#events_logfile_path="" + +# Selects which logging mechanism to use for container engine events. +# Valid values are `journald`, `file` and `none`. +# +#events_logger = "journald" + +# A is a list of directories which are used to search for helper binaries. +# +#helper_binaries_dir = [ +# "/usr/local/libexec/podman", +# "/usr/local/lib/podman", +# "/usr/libexec/podman", +# "/usr/lib/podman", +#] + +# Path to OCI hooks directories for automatically executed hooks. +# +#hooks_dir = [ +# "/usr/share/containers/oci/hooks.d", +#] + +# Manifest Type (oci, v2s2, or v2s1) to use when pulling, pushing, building +# container images. By default image pulled and pushed match the format of the +# source image. Building/committing defaults to OCI. +# +#image_default_format = "" + +# Default transport method for pulling and pushing for images +# +#image_default_transport = "docker://" + +# Maximum number of image layers to be copied (pulled/pushed) simultaneously. +# Not setting this field, or setting it to zero, will fall back to containers/image defaults. +# +#image_parallel_copies = 0 + +# Default command to run the infra container +# +#infra_command = "/pause" + +# Infra (pause) container image name for pod infra containers. When running a +# pod, we start a `pause` process in a container to hold open the namespaces +# associated with the pod. This container does nothing other then sleep, +# reserving the pods resources for the lifetime of the pod. By default container +# engines run a builtin container using the pause executable. If you want override +# specify an image to pull. +# +#infra_image = "" + +# Specify the locking mechanism to use; valid values are "shm" and "file". +# Change the default only if you are sure of what you are doing, in general +# "file" is useful only on platforms where cgo is not available for using the +# faster "shm" lock type. You may need to run "podman system renumber" after +# you change the lock type. +# +#lock_type** = "shm" + +# Indicates if Podman is running inside a VM via Podman Machine. +# Podman uses this value to do extra setup around networking from the +# container inside the VM to to host. +# +#machine_enabled = false + +# MultiImageArchive - if true, the container engine allows for storing archives +# (e.g., of the docker-archive transport) with multiple images. By default, +# Podman creates single-image archives. +# +#multi_image_archive = "false" + +# Default engine namespace +# If engine is joined to a namespace, it will see only containers and pods +# that were created in the same namespace, and will create new containers and +# pods in that namespace. +# The default namespace is "", which corresponds to no namespace. When no +# namespace is set, all containers and pods are visible. +# +#namespace = "" + +# Path to the slirp4netns binary +# +#network_cmd_path = "" + +# Default options to pass to the slirp4netns binary. +# For example "allow_host_loopback=true" +# +#network_cmd_options = ["enable_ipv6=true",] + +# Whether to use chroot instead of pivot_root in the runtime +# +#no_pivot_root = false + +# Number of locks available for containers and pods. +# If this is changed, a lock renumber must be performed (e.g. with the +# 'podman system renumber' command). +# +#num_locks = 2048 + +# Whether to pull new image before running a container +# +#pull_policy = "missing" + +# Indicates whether the application should be running in remote mode. This flag modifies the +# --remote option on container engines. Setting the flag to true will default +# `podman --remote=true` for access to the remote Podman service. +# +#remote = false + +# Default OCI runtime +# +runtime = "crun" + +# List of the OCI runtimes that support --format=json. When json is supported +# engine will use it for reporting nicer errors. +# +#runtime_supports_json = ["crun", "runc", "kata", "runsc", "krun"] + +# List of the OCI runtimes that supports running containers with KVM Separation. +# +#runtime_supports_kvm = ["kata", "krun"] + +# List of the OCI runtimes that supports running containers without cgroups. +# +#runtime_supports_nocgroups = ["crun", "krun"] + +# Default location for storing temporary container image content. Can be overridden with the TMPDIR environment +# variable. If you specify "storage", then the location of the +# container/storage tmp directory will be used. +image_copy_tmp_dir="{{.chezmoi.homeDir}}/.local/tmp" + +# Number of seconds to wait without a connection +# before the `podman system service` times out and exits +# +#service_timeout = 5 + +# Directory for persistent engine files (database, etc) +# By default, this will be configured relative to where the containers/storage +# stores containers +# Uncomment to change location from this default +# +#static_dir = "/var/lib/containers/storage/libpod" + +# Number of seconds to wait for container to exit before sending kill signal. +# +#stop_timeout = 10 + +# map of service destinations +# +#[service_destinations] +# [service_destinations.production] +# URI to access the Podman service +# Examples: +# rootless "unix://run/user/$UID/podman/podman.sock" (Default) +# rootfull "unix://run/podman/podman.sock (Default) +# remote rootless ssh://engineering.lab.company.com/run/user/1000/podman/podman.sock +# remote rootfull ssh://root@10.10.1.136:22/run/podman/podman.sock +# +# uri = "ssh://user@production.example.com/run/user/1001/podman/podman.sock" +# Path to file containing ssh identity key +# identity = "~/.ssh/id_rsa" + +# Directory for temporary files. Must be tmpfs (wiped after reboot) +# +#tmp_dir = "/run/libpod" + +# Directory for libpod named volumes. +# By default, this will be configured relative to where containers/storage +# stores containers. +# Uncomment to change location from this default. +# +#volume_path = "/var/lib/containers/storage/volumes" + +# Paths to look for a valid OCI runtime (crun, runc, kata, runsc, krun, etc) +[engine.runtimes] +#crun = [ +# "/usr/bin/crun", +# "/usr/sbin/crun", +# "/usr/local/bin/crun", +# "/usr/local/sbin/crun", +# "/sbin/crun", +# "/bin/crun", +# "/run/current-system/sw/bin/crun", +#] + +#kata = [ +# "/usr/bin/kata-runtime", +# "/usr/sbin/kata-runtime", +# "/usr/local/bin/kata-runtime", +# "/usr/local/sbin/kata-runtime", +# "/sbin/kata-runtime", +# "/bin/kata-runtime", +# "/usr/bin/kata-qemu", +# "/usr/bin/kata-fc", +#] + +#runc = [ +# "/usr/bin/runc", +# "/usr/sbin/runc", +# "/usr/local/bin/runc", +# "/usr/local/sbin/runc", +# "/sbin/runc", +# "/bin/runc", +# "/usr/lib/cri-o-runc/sbin/runc", +#] + +#runsc = [ +# "/usr/bin/runsc", +# "/usr/sbin/runsc", +# "/usr/local/bin/runsc", +# "/usr/local/sbin/runsc", +# "/bin/runsc", +# "/sbin/runsc", +# "/run/current-system/sw/bin/runsc", +#] + +#krun = [ +# "/usr/bin/krun", +# "/usr/local/bin/krun", +#] + +[engine.volume_plugins] +#testplugin = "/run/podman/plugins/test.sock" + +[machine] +# Number of CPU's a machine is created with. +# +#cpus=1 + +# The size of the disk in GB created when init-ing a podman-machine VM. +# +#disk_size=10 + +# The image used when creating a podman-machine VM. +# +#image = "testing" + +# Memory in MB a machine is created with. +# +#memory=2048 + +# The username to use and create on the podman machine OS for rootless +# container access. +# +#user = "core" + +# The [machine] table MUST be the last entry in this file. +# (Unless another table is added) +# TOML does not provide a way to end a table other than a further table being +# defined, so every key hereafter will be part of [machine] and not the +# main config. diff --git a/dot_config/containers/registries.conf b/dot_config/containers/registries.conf new file mode 100644 index 0000000..40ba1ae --- /dev/null +++ b/dot_config/containers/registries.conf @@ -0,0 +1,77 @@ +# For more information on this configuration file, see containers-registries.conf(5). +# +# NOTE: RISK OF USING UNQUALIFIED IMAGE NAMES +# We recommend always using fully qualified image names including the registry +# server (full dns name), namespace, image name, and tag +# (e.g., registry.redhat.io/ubi8/ubi:latest). Pulling by digest (i.e., +# quay.io/repository/name@digest) further eliminates the ambiguity of tags. +# When using short names, there is always an inherent risk that the image being +# pulled could be spoofed. For example, a user wants to pull an image named +# `foobar` from a registry and expects it to come from myregistry.com. If +# myregistry.com is not first in the search list, an attacker could place a +# different `foobar` image at a registry earlier in the search list. The user +# would accidentally pull and run the attacker's image and code rather than the +# intended content. We recommend only adding registries which are completely +# trusted (i.e., registries which don't allow unknown or anonymous users to +# create accounts with arbitrary names). This will prevent an image from being +# spoofed, squatted or otherwise made insecure. If it is necessary to use one +# of these registries, it should be added at the end of the list. +# +# # An array of host[:port] registries to try when pulling an unqualified image, in order. +unqualified-search-registries = ["docker.io"] +# +# [[registry]] +# # The "prefix" field is used to choose the relevant [[registry]] TOML table; +# # (only) the TOML table with the longest match for the input image name +# # (taking into account namespace/repo/tag/digest separators) is used. +# # +# # The prefix can also be of the form: *.example.com for wildcard subdomain +# # matching. +# # +# # If the prefix field is missing, it defaults to be the same as the "location" field. +# prefix = "example.com/foo" +# +# # If true, unencrypted HTTP as well as TLS connections with untrusted +# # certificates are allowed. +# insecure = false +# +# # If true, pulling images with matching names is forbidden. +# blocked = false +# +# # The physical location of the "prefix"-rooted namespace. +# # +# # By default, this is equal to "prefix" (in which case "prefix" can be omitted +# # and the [[registry]] TOML table can only specify "location"). +# # +# # Example: Given +# # prefix = "example.com/foo" +# # location = "internal-registry-for-example.net/bar" +# # requests for the image example.com/foo/myimage:latest will actually work with the +# # internal-registry-for-example.net/bar/myimage:latest image. +# +# # The location can be empty iff prefix is in a +# # wildcarded format: "*.example.com". In this case, the input reference will +# # be used as-is without any rewrite. +# location = internal-registry-for-example.com/bar" +# +# # (Possibly-partial) mirrors for the "prefix"-rooted namespace. +# # +# # The mirrors are attempted in the specified order; the first one that can be +# # contacted and contains the image will be used (and if none of the mirrors contains the image, +# # the primary location specified by the "registry.location" field, or using the unmodified +# # user-specified reference, is tried last). +# # +# # Each TOML table in the "mirror" array can contain the following fields, with the same semantics +# # as if specified in the [[registry]] TOML table directly: +# # - location +# # - insecure +# [[registry.mirror]] +# location = "example-mirror-0.local/mirror-for-foo" +# [[registry.mirror]] +# location = "example-mirror-1.local/mirrors/foo" +# insecure = true +# # Given the above, a pull of example.com/foo/image:latest will try: +# # 1. example-mirror-0.local/mirror-for-foo/image:latest +# # 2. example-mirror-1.local/mirrors/foo/image:latest +# # 3. internal-registry-for-example.net/bar/image:latest +# # in order, and use the first one that exists. diff --git a/dot_config/containers/registries.conf.d/00-shortnames.conf b/dot_config/containers/registries.conf.d/00-shortnames.conf new file mode 100644 index 0000000..51b0e50 --- /dev/null +++ b/dot_config/containers/registries.conf.d/00-shortnames.conf @@ -0,0 +1,108 @@ +[aliases] + # almalinux + "almalinux" = "docker.io/library/almalinux" + "almalinux-minimal" = "docker.io/library/almalinux-minimal" + # Arch Linux + "archlinux" = "docker.io/archlinux/archlinux" + # centos + "centos" = "quay.io/centos/centos" + # containers + "skopeo" = "quay.io/skopeo/stable" + "buildah" = "quay.io/buildah/stable" + "podman" = "quay.io/podman/stable" + # docker + "alpine" = "docker.io/library/alpine" + "docker" = "docker.io/library/docker" + "registry" = "docker.io/library/registry" + "hello-world" = "docker.io/library/hello-world" + "swarm" = "docker.io/library/swarm" + # Fedora + "fedora-minimal" = "registry.fedoraproject.org/fedora-minimal" + "fedora" = "registry.fedoraproject.org/fedora" + # openSUSE + "opensuse/tumbleweed" = "registry.opensuse.org/opensuse/tumbleweed" + "opensuse/tumbleweed-dnf" = "registry.opensuse.org/opensuse/tumbleweed-dnf" + "opensuse/tumbleweed-microdnf" = "registry.opensuse.org/opensuse/tumbleweed-microdnf" + "opensuse/leap" = "registry.opensuse.org/opensuse/leap" + "opensuse/busybox" = "registry.opensuse.org/opensuse/busybox" + "tumbleweed" = "registry.opensuse.org/opensuse/tumbleweed" + "tumbleweed-dnf" = "registry.opensuse.org/opensuse/tumbleweed-dnf" + "tumbleweed-microdnf" = "registry.opensuse.org/opensuse/tumbleweed-microdnf" + "leap" = "registry.opensuse.org/opensuse/leap" + "leap-dnf" = "registry.opensuse.org/opensuse/leap-dnf" + "leap-microdnf" = "registry.opensuse.org/opensuse/leap-microdnf" + "tw-busybox" = "registry.opensuse.org/opensuse/busybox" + # SUSE + "suse/sle15" = "registry.suse.com/suse/sle15" + "suse/sles12sp5" = "registry.suse.com/suse/sles12sp5" + "suse/sles12sp4" = "registry.suse.com/suse/sles12sp4" + "suse/sles12sp3" = "registry.suse.com/suse/sles12sp3" + "sle15" = "registry.suse.com/suse/sle15" + "sles12sp5" = "registry.suse.com/suse/sles12sp5" + "sles12sp4" = "registry.suse.com/suse/sles12sp4" + "sles12sp3" = "registry.suse.com/suse/sles12sp3" + # Red Hat Enterprise Linux + "rhel" = "registry.access.redhat.com/rhel" + "rhel6" = "registry.access.redhat.com/rhel6" + "rhel7" = "registry.access.redhat.com/rhel7" + "rhel7.9" = "registry.access.redhat.com/rhel7.9" + "rhel-atomic" = "registry.access.redhat.com/rhel-atomic" + "rhel-minimal" = "registry.access.redhat.com/rhel-minimum" + "rhel-init" = "registry.access.redhat.com/rhel-init" + "rhel7-atomic" = "registry.access.redhat.com/rhel7-atomic" + "rhel7-minimal" = "registry.access.redhat.com/rhel7-minimum" + "rhel7-init" = "registry.access.redhat.com/rhel7-init" + "rhel7/rhel" = "registry.access.redhat.com/rhel7/rhel" + "rhel7/rhel-atomic" = "registry.access.redhat.com/rhel7/rhel7/rhel-atomic" + "ubi7/ubi" = "registry.access.redhat.com/ubi7/ubi" + "ubi7/ubi-minimal" = "registry.access.redhat.com/ubi7-minimal" + "ubi7/ubi-init" = "registry.access.redhat.com/ubi7-init" + "ubi7" = "registry.access.redhat.com/ubi7" + "ubi7-init" = "registry.access.redhat.com/ubi7-init" + "ubi7-minimal" = "registry.access.redhat.com/ubi7-minimal" + "rhel8" = "registry.access.redhat.com/ubi8" + "rhel8-init" = "registry.access.redhat.com/ubi8-init" + "rhel8-minimal" = "registry.access.redhat.com/ubi8-minimal" + "rhel8-micro" = "registry.access.redhat.com/ubi8-micro" + "ubi8" = "registry.access.redhat.com/ubi8" + "ubi8-minimal" = "registry.access.redhat.com/ubi8-minimal" + "ubi8-init" = "registry.access.redhat.com/ubi8-init" + "ubi8-micro" = "registry.access.redhat.com/ubi8-micro" + "ubi8/ubi" = "registry.access.redhat.com/ubi8/ubi" + "ubi8/ubi-minimal" = "registry.access.redhat.com/ubi8-minimal" + "ubi8/ubi-init" = "registry.access.redhat.com/ubi8-init" + "ubi8/ubi-micro" = "registry.access.redhat.com/ubi8-micro" + "rhel9" = "registry.access.redhat.com/ubi9" + "rhel9-init" = "registry.access.redhat.com/ubi9-init" + "rhel9-minimal" = "registry.access.redhat.com/ubi9-minimal" + "rhel9-micro" = "registry.access.redhat.com/ubi9-micro" + "ubi9" = "registry.access.redhat.com/ubi9" + "ubi9-minimal" = "registry.access.redhat.com/ubi9-minimal" + "ubi9-init" = "registry.access.redhat.com/ubi9-init" + "ubi9-micro" = "registry.access.redhat.com/ubi9-micro" + "ubi9/ubi" = "registry.access.redhat.com/ubi9/ubi" + "ubi9/ubi-minimal" = "registry.access.redhat.com/ubi9-minimal" + "ubi9/ubi-init" = "registry.access.redhat.com/ubi9-init" + "ubi9/ubi-micro" = "registry.access.redhat.com/ubi9-micro" + # Rocky Linux + "rockylinux" = "docker.io/library/rockylinux" + # Debian + "debian" = "docker.io/library/debian" + # Kali Linux + "kali-bleeding-edge" = "docker.io/kalilinux/kali-bleeding-edge" + "kali-dev" = "docker.io/kalilinux/kali-dev" + "kali-experimental" = "docker.io/kalilinux/kali-experimental" + "kali-last-release" = "docker.io/kalilinux/kali-last-release" + "kali-rolling" = "docker.io/kalilinux/kali-rolling" + # Ubuntu + "ubuntu" = "docker.io/library/ubuntu" + # Oracle Linux + "oraclelinux" = "container-registry.oracle.com/os/oraclelinux" + # busybox + "busybox" = "docker.io/library/busybox" + # php + "php" = "docker.io/library/php" + # python + "python" = "docker.io/library/python" + # node + "node" = "docker.io/library/node" diff --git a/dot_config/containers/storage.conf.tmpl b/dot_config/containers/storage.conf.tmpl new file mode 100644 index 0000000..eb6d5b6 --- /dev/null +++ b/dot_config/containers/storage.conf.tmpl @@ -0,0 +1,9 @@ +[storage] + driver = "overlay" + runroot = "/run/user/1000" + graphroot = "{{.chezmoi.homeDir}}/.local/share/containers/storage" + # [storage.options] + # mount_program = "/usr/bin/fuse-overlayfs" + + +# vim: ft=toml diff --git a/dot_config/dunst/dunstrc b/dot_config/dunst/dunstrc new file mode 100644 index 0000000..204cd3f --- /dev/null +++ b/dot_config/dunst/dunstrc @@ -0,0 +1,414 @@ +[global] + ### Display ### + + # Which monitor should the notifications be displayed on. + monitor = 0 + + # Display notification on focused monitor. Possible modes are: + # mouse: follow mouse pointer + # keyboard: follow window with keyboard focus + # none: don't follow anything + # + # "keyboard" needs a window manager that exports the + # _NET_ACTIVE_WINDOW property. + # This should be the case for almost all modern window managers. + # + # If this option is set to mouse or keyboard, the monitor option + # will be ignored. + follow = keyboard + + # The geometry of the window: + # [{width}]x{height}[+/-{x}+/-{y}] + # The geometry of the message window. + # The height is measured in number of notifications everything else + # in pixels. If the width is omitted but the height is given + # ("-geometry x2"), the message window expands over the whole screen + # (dmenu-like). If width is 0, the window expands to the longest + # message displayed. A positive x is measured from the left, a + # negative from the right side of the screen. Y is measured from + # the top and down respectively. + # The width can be negative. In this case the actual width is the + # screen width minus the width defined in within the geometry option. + geometry = "300x5-30+45" + + # Show how many messages are currently hidden (because of geometry). + indicate_hidden = yes + + # Shrink window if it's smaller than the width. Will be ignored if + # width is 0. + shrink = no + + # The transparency of the window. Range: [0; 100]. + # This option will only work if a compositing window manager is + # present (e.g. xcompmgr, compiz, etc.). + transparency = 0 + + # The height of the entire notification. If the height is smaller + # than the font height and padding combined, it will be raised + # to the font height and padding. + notification_height = 0 + + # Draw a line of "separator_height" pixel height between two + # notifications. + # Set to 0 to disable. + separator_height = 2 + + # Padding between text and separator. + padding = 8 + + # Horizontal padding. + horizontal_padding = 8 + + # Defines width in pixels of frame around the notification window. + # Set to 0 to disable. + frame_width = 3 + + # Defines color of the frame around the notification window. + frame_color = "#aaaaaa" + + # Define a color for the separator. + # possible values are: + # * auto: dunst tries to find a color fitting to the background; + # * foreground: use the same color as the foreground; + # * frame: use the same color as the frame; + # * anything else will be interpreted as a X color. + separator_color = frame + + # Sort messages by urgency. + sort = yes + + # Don't remove messages, if the user is idle (no mouse or keyboard input) + # for longer than idle_threshold seconds. + # Set to 0 to disable. + # A client can set the 'transient' hint to bypass this. See the rules + # section for how to disable this if necessary + idle_threshold = 120 + + ### Text ### + + font = Mononoki 8 + + # The spacing between lines. If the height is smaller than the + # font height, it will get raised to the font height. + line_height = 0 + + # Possible values are: + # full: Allow a small subset of html markup in notifications: + # bold + # italic + # strikethrough + # underline + # + # For a complete reference see + # . + # + # strip: This setting is provided for compatibility with some broken + # clients that send markup even though it's not enabled on the + # server. Dunst will try to strip the markup but the parsing is + # simplistic so using this option outside of matching rules for + # specific applications *IS GREATLY DISCOURAGED*. + # + # no: Disable markup parsing, incoming notifications will be treated as + # plain text. Dunst will not advertise that it has the body-markup + # capability if this is set as a global setting. + # + # It's important to note that markup inside the format option will be parsed + # regardless of what this is set to. + markup = full + + # The format of the message. Possible variables are: + # %a appname + # %s summary + # %b body + # %i iconname (including its path) + # %I iconname (without its path) + # %p progress value if set ([ 0%] to [100%]) or nothing + # %n progress value if set without any extra characters + # %% Literal % + # Markup is allowed + format = "%s\n%b" + + # Alignment of message text. + # Possible values are "left", "center" and "right". + alignment = left + + # Show age of message if message is older than show_age_threshold + # seconds. + # Set to -1 to disable. + show_age_threshold = 60 + + # Split notifications into multiple lines if they don't fit into + # geometry. + word_wrap = yes + + # When word_wrap is set to no, specify where to make an ellipsis in long lines. + # Possible values are "start", "middle" and "end". + ellipsize = middle + + # Ignore newlines '\n' in notifications. + ignore_newline = no + + # Stack together notifications with the same content + stack_duplicates = true + + # Hide the count of stacked notifications with the same content + hide_duplicate_count = false + + # Display indicators for URLs (U) and actions (A). + show_indicators = yes + + ### Icons ### + + # Align icons left/right/off + icon_position = left + + # Scale larger icons down to this size, set to 0 to disable + max_icon_size = 48 + + # Paths to default icons. + icon_path = /usr/share/icons/clarity-albus/16x16/status:/usr/share/icons/clarity-albus/16x16/devices + + ### History ### + + # Should a notification popped up from history be sticky or timeout + # as if it would normally do. + sticky_history = yes + + # Maximum amount of notifications kept in history + history_length = 20 + + ### Misc/Advanced ### + + # dmenu path. + dmenu = /usr/bin/dmenu -p dunst: + + # Browser for opening urls in context menu. + browser = /usr/bin/firefox -new-tab + + # Always run rule-defined scripts, even if the notification is suppressed + always_run_script = true + + # Define the title of the windows spawned by dunst + title = Dunst + + # Define the class of the windows spawned by dunst + class = Dunst + + # Print a notification on startup. + # This is mainly for error detection, since dbus (re-)starts dunst + # automatically after a crash. + startup_notification = false + + # Manage dunst's desire for talking + # Can be one of the following values: + # crit: Critical features. Dunst aborts + # warn: Only non-fatal warnings + # mesg: Important Messages + # info: all unimportant stuff + # debug: all less than unimportant stuff + verbosity = mesg + + # Define the corner radius of the notification window + # in pixel size. If the radius is 0, you have no rounded + # corners. + # The radius will be automatically lowered if it exceeds half of the + # notification height to avoid clipping text and/or icons. + corner_radius = 5 + + ### Legacy + + # Use the Xinerama extension instead of RandR for multi-monitor support. + # This setting is provided for compatibility with older nVidia drivers that + # do not support RandR and using it on systems that support RandR is highly + # discouraged. + # + # By enabling this setting dunst will not be able to detect when a monitor + # is connected or disconnected which might break follow mode if the screen + # layout changes. + force_xinerama = false + + ### mouse + + # Defines action of mouse event + # Possible values are: + # * none: Don't do anything. + # * do_action: If the notification has exactly one action, or one is marked as default, + # invoke it. If there are multiple and no default, open the context menu. + # * close_current: Close current notification. + # * close_all: Close all notifications. + mouse_left_click = close_current + mouse_middle_click = do_action + mouse_right_click = close_all + +# Experimental features that may or may not work correctly. Do not expect them +# to have a consistent behaviour across releases. +[experimental] + # Calculate the dpi to use on a per-monitor basis. + # If this setting is enabled the Xft.dpi value will be ignored and instead + # dunst will attempt to calculate an appropriate dpi value for each monitor + # using the resolution and physical size. This might be useful in setups + # where there are multiple screens with very different dpi values. + per_monitor_dpi = false + +[shortcuts] + + # Shortcuts are specified as [modifier+][modifier+]...key + # Available modifiers are "ctrl", "mod1" (the alt-key), "mod2", + # "mod3" and "mod4" (windows-key). + # Xev might be helpful to find names for keys. + + # Close notification. + close = ctrl+space + + # Close all notifications. + close_all = ctrl+shift+space + + # Redisplay last message(s). + # On the US keyboard layout "grave" is normally above TAB and left + # of "1". Make sure this key actually exists on your keyboard layout, + # e.g. check output of 'xmodmap -pke' + history = ctrl+grave + + # Context menu. + context = ctrl+shift+period + +[urgency_low] + # IMPORTANT: colors have to be defined in quotation marks. + # Otherwise the "#" and following would be interpreted as a comment. + background = "#222222" + foreground = "#888888" + timeout = 10 + # Icon for notifications with low urgency, uncomment to enable + #icon = /path/to/icon + +[urgency_normal] + background = "#285577" + foreground = "#ffffff" + timeout = 10 + # Icon for notifications with normal urgency, uncomment to enable + #icon = /path/to/icon + +[urgency_critical] + background = "#900000" + foreground = "#ffffff" + frame_color = "#ff0000" + timeout = 0 + # Icon for notifications with critical urgency, uncomment to enable + #icon = /path/to/icon + +# Every section that isn't one of the above is interpreted as a rules to +# override settings for certain messages. +# +# Messages can be matched by +# appname (discouraged, see desktop_entry) +# body +# category +# desktop_entry +# icon +# match_transient +# msg_urgency +# stack_tag +# summary +# +# and you can override the +# background +# foreground +# format +# frame_color +# fullscreen +# new_icon +# set_stack_tag +# set_transient +# timeout +# urgency +# +# Shell-like globbing will get expanded. +# +# Instead of the appname filter, it's recommended to use the desktop_entry filter. +# GLib based applications export their desktop-entry name. In comparison to the appname, +# the desktop-entry won't get localized. +# +# SCRIPTING +# You can specify a script that gets run when the rule matches by +# setting the "script" option. +# The script will be called as follows: +# script appname summary body icon urgency +# where urgency can be "LOW", "NORMAL" or "CRITICAL". +# +# NOTE: if you don't want a notification to be displayed, set the format +# to "". +# NOTE: It might be helpful to run dunst -print in a terminal in order +# to find fitting options for rules. + +# Disable the transient hint so that idle_threshold cannot be bypassed from the +# client +#[transient_disable] +# match_transient = yes +# set_transient = no +# +# Make the handling of transient notifications more strict by making them not +# be placed in history. +#[transient_history_ignore] +# match_transient = yes +# history_ignore = yes + +# fullscreen values +# show: show the notifications, regardless if there is a fullscreen window opened +# delay: displays the new notification, if there is no fullscreen window active +# If the notification is already drawn, it won't get undrawn. +# pushback: same as delay, but when switching into fullscreen, the notification will get +# withdrawn from screen again and will get delayed like a new notification +#[fullscreen_delay_everything] +# fullscreen = delay +#[fullscreen_show_critical] +# msg_urgency = critical +# fullscreen = show + +#[espeak] +# summary = "*" +# script = dunst_espeak.sh + +#[script-test] +# summary = "*script*" +# script = dunst_test.sh + +#[ignore] +# # This notification will not be displayed +# summary = "foobar" +# format = "" + +#[history-ignore] +# # This notification will not be saved in history +# summary = "foobar" +# history_ignore = yes + +#[skip-display] +# # This notification will not be displayed, but will be included in the history +# summary = "foobar" +# skip_display = yes + +#[signed_on] +# appname = Pidgin +# summary = "*signed on*" +# urgency = low +# +#[signed_off] +# appname = Pidgin +# summary = *signed off* +# urgency = low +# +#[says] +# appname = Pidgin +# summary = *says* +# urgency = critical +# +#[twitter] +# appname = Pidgin +# summary = *twitter.com* +# urgency = normal +# +#[stack-volumes] +# appname = "some_volume_notifiers" +# set_stack_tag = "volume" +# +# vim: ft=cfg diff --git a/dot_config/encrypted_laya.cfg.asc b/dot_config/encrypted_laya.cfg.asc new file mode 100644 index 0000000..f2c8ae0 --- /dev/null +++ b/dot_config/encrypted_laya.cfg.asc @@ -0,0 +1,8 @@ +-----BEGIN PGP MESSAGE----- + +jA0EBwMCNN+mXsCZFvzy0o4B3bBBstcKWyGiQYXSXyzKbeHft5Hh1RkeTbOS9yoD +96xGfZMWHEjCM1JXCHMx7fs8+YbQ1lwd0s8qM8OuquYxx+Z46tmZ+ZfAi1mIqn6s +zdt0mN+jVizQYii5+o7g+yu2o5dvEoyAqe4dvSWPQFxzDSBEsPtRxzKyDOcGD41o +G5TXoZZ1HVWe9yN+cixs +=z5zU +-----END PGP MESSAGE----- diff --git a/dot_config/greenclip.toml.tmpl b/dot_config/greenclip.toml.tmpl new file mode 100644 index 0000000..8b93d59 --- /dev/null +++ b/dot_config/greenclip.toml.tmpl @@ -0,0 +1,9 @@ +[greenclip] +blacklisted_applications = [] +enable_image_support = true +history_file = "{{.chezmoi.homeDir}}/.cache/greenclip.history" +image_cache_directory = "/tmp/greenclip" +max_history_length = 50 +max_selection_size_bytes = 2000 +trim_space_from_selection = true +use_primary_selection_as_input = false diff --git a/dot_config/herbstluftwm/colors.sh b/dot_config/herbstluftwm/colors.sh new file mode 100644 index 0000000..de49fef --- /dev/null +++ b/dot_config/herbstluftwm/colors.sh @@ -0,0 +1,54 @@ +# shellcheck shell=bash +# shellcheck disable=SC2034 + +declare -A colors + +colors=( + [dark0_hard]='#1d2021' + [dark0]='#282828' + [dark0_soft]='#32302f' + [dark1]='#3c3836' + [dark2]='#504945' + [dark3]='#665c54' + [dark4]='#7c6f64' + [dark4_256]='#7c6f64' + + [gray_245]='#928374' + [gray_244]='#928374' + + [light0_hard]='#f9f5d7' + [light0]='#fbf1c7' + [light0_soft]='#f2e5bc' + [light1]='#ebdbb2' + [light2]='#d5c4a1' + [light3]='#bdae93' + [light4]='#a89984' + [light4_256]='#a89984' + + [bright_red]='#fb4934' + [bright_green]='#b8bb26' + [bright_yellow]='#fabd2f' + [bright_blue]='#83a598' + [bright_purple]='#d3869b' + [bright_aqua]='#8ec07c' + [bright_orange]='#fe8019' + + [neutral_red]='#cc241d' + [neutral_green]='#98971a' + [neutral_yellow]='#d79921' + [neutral_blue]='#458588' + [neutral_purple]='#b16286' + [neutral_aqua]='#689d6a' + [neutral_orange]='#d65d0e' + + [faded_red]='#9d0006' + [faded_green]='#79740e' + [faded_yellow]='#b57614' + [faded_blue]='#076678' + [faded_purple]='#8f3f71' + [faded_aqua]='#427b58' + [faded_orange]='#af3a03' +) + +colors[active]="${colors[bright_blue]}" +colors[urgent]="${colors[bright_orange]}" diff --git a/dot_config/herbstluftwm/executable_autostart.tmpl b/dot_config/herbstluftwm/executable_autostart.tmpl new file mode 100644 index 0000000..674ac17 --- /dev/null +++ b/dot_config/herbstluftwm/executable_autostart.tmpl @@ -0,0 +1,256 @@ +#!/bin/bash + +# this is a simple config for herbstluftwm + +hc() { + herbstclient "$@" +} + +hc emit_hook reload + +# shellcheck source={{.chezmoi.homeDir}}/.config/herbstluftwm/colors.sh +. "$(dirname "$0")/colors.sh" + +### disable touchpad, cuz trackpoint rulezzzz +xinput --disable 'SynPS/2 Synaptics TouchPad' + +xsetroot -solid "${colors[dark0_hard]}" + +# remove all existing keybindings +hc keyunbind --all + +# keybindings +# if you have a super key you will be much happier with Mod set to Mod4 +#Mod=Mod1 # Use alt as the main modifier +Mod=Mod4 # Use the super key as the main modifier + +hc keybind $Mod-Shift-q quit +hc keybind $Mod-Shift-r reload +hc keybind $Mod-Shift-c close +hc keybind $Mod-Return spawn kitty +hc keybind $Mod-x spawn rofi -modi drun -show drun +hc keybind $Mod-Shift-x spawn rofi -show fb -modi fb:{{.chezmoi.homeDir}}/.config/herbstluftwm/file-browser +hc keybind $Mod-z spawn rofi -modi "clipboard:greenclip print" -show clipboard -run-command '{cmd}' +hc keybind $Mod-c spawn rofi -lines 0 -show calc -modi calc -no-show-match -no-sort -no-history +hc keybind $Mod-a spawn rofi -show pb -modi "pb:$HOME/.config/herbstluftwm/passmenu2" +hc keybind $Mod-Shift-a spawn rofi -show pb -modi "pb:$HOME/.config/herbstluftwm/passboltmenu2" +hc keybind $Mod-m spawn ~/.config/herbstluftwm/pmount-dmenu +hc keybind $Mod-Escape spawn dunstctl close + +# basic movement in tiling and floating mode +# focusing clients +hc keybind $Mod-Left focus left +hc keybind $Mod-Down focus down +hc keybind $Mod-Up focus up +hc keybind $Mod-Right focus right +hc keybind $Mod-h focus left +hc keybind $Mod-j focus down +hc keybind $Mod-k focus up +hc keybind $Mod-l focus right + +# moving clients in tiling and floating mode +hc keybind $Mod-Shift-Left shift left +hc keybind $Mod-Shift-Down shift down +hc keybind $Mod-Shift-Up shift up +hc keybind $Mod-Shift-Right shift right +hc keybind $Mod-Shift-h shift left +hc keybind $Mod-Shift-j shift down +hc keybind $Mod-Shift-k shift up +hc keybind $Mod-Shift-l shift right + +# splitting frames +# create an empty frame at the specified direction +hc keybind $Mod-u split bottom 0.5 +hc keybind $Mod-o split right 0.5 +# let the current frame explode into subframes +hc keybind $Mod-Control-space split explode + +# resizing frames and floating clients +resizestep=0.02 +hc keybind $Mod-Control-h resize left +$resizestep +hc keybind $Mod-Control-j resize down +$resizestep +hc keybind $Mod-Control-k resize up +$resizestep +hc keybind $Mod-Control-l resize right +$resizestep +hc keybind $Mod-Control-Left resize left +$resizestep +hc keybind $Mod-Control-Down resize down +$resizestep +hc keybind $Mod-Control-Up resize up +$resizestep +hc keybind $Mod-Control-Right resize right +$resizestep + +# tags +tag_names=( {1..9} ) +tag_keys=( {1..9} ) + +hc rename default "${tag_names[0]}" || true +for i in "${!tag_names[@]}" ; do + hc add "${tag_names[$i]}" + key="${tag_keys[$i]}" + if [ -n "$key" ] ; then + hc keybind "$Mod-$key" use_index "$i" + hc keybind "$Mod-Shift-$key" move_index "$i" + fi +done + +# cycle through tags +hc keybind $Mod-period use_index +1 --skip-visible +hc keybind $Mod-comma use_index -1 --skip-visible + +# layouting +hc keybind $Mod-r remove +hc keybind $Mod-s floating toggle +hc keybind $Mod-f fullscreen toggle +hc keybind $Mod-Shift-f set_attr clients.focus.floating toggle +hc keybind $Mod-Shift-d set_attr clients.focus.decorated toggle +hc keybind $Mod-Shift-m set_attr clients.focus.minimized true +hc keybind $Mod-Control-m jumpto last-minimized +hc keybind $Mod-p pseudotile toggle +# The following cycles through the available layouts within a frame, but skips +# layouts, if the layout change wouldn't affect the actual window positions. +# I.e. if there are two windows within a frame, the grid layout is skipped. +hc keybind $Mod-space \ + or , and . compare tags.focus.curframe_wcount = 2 \ + . cycle_layout +1 vertical horizontal max vertical grid \ + , cycle_layout +1 + +# mouse +hc mouseunbind --all +hc mousebind $Mod-Button1 move +hc mousebind $Mod-Button2 zoom +hc mousebind $Mod-Button3 resize +hc mousebind $Mod-Control-Button1 call substitute WID clients.dragged.winid close WID + +# focus +hc keybind $Mod-BackSpace cycle_monitor +hc keybind $Mod-Tab cycle_all +1 +hc keybind $Mod-Shift-Tab cycle_all -1 +hc keybind $Mod-grave cycle +hc keybind $Mod-i jumpto urgent + +# music +# hc keybind XF86AudioMute chain , spawn sh -c 'pactl set-sink-mute $(pactl get-default-sink) toggle' , emit_hook volume +# hc keybind XF86AudioLowerVolume chain , spawn sh -c 'pactl set-sink-volume $(pactl get-default-sink) -10%' , emit_hook volume +# hc keybind XF86AudioRaiseVolume chain , spawn sh -c 'pactl set-sink-volume $(pactl get-default-sink) +10%' , emit_hook volume +# shellcheck disable=SC2016 +hc keybind XF86AudioMute spawn sh -c 'pactl set-sink-mute $(pactl get-default-sink) toggle' +# shellcheck disable=SC2016 +hc keybind XF86AudioLowerVolume spawn sh -c 'pactl set-sink-volume $(pactl get-default-sink) -10%' +# shellcheck disable=SC2016 +hc keybind XF86AudioRaiseVolume spawn sh -c 'pactl set-sink-volume $(pactl get-default-sink) +10%' +hc keybind XF86AudioRaiseVolume spawn sh -c 'pactl set-sink-volume $(pactl get-default-sink) +10%' +hc keybind XF86AudioMicMute spawn rofi -show pulse -modi "pulse:$HOME/.config/herbstluftwm/pulsemenu" +hc keybind XF86AudioNext spawn cmus-remote -n +hc keybind XF86AudioPrev spawn cmus-remote -r +hc keybind XF86AudioPlay spawn cmus-remote -u + +# shellcheck disable=2016 # needed to pass whole script to keybind... +hc keybind XF86TouchpadToggle spawn dash -c 'xinput --set-prop "SynPS/2 Synaptics TouchPad" "Device Enabled" $(xinput --list-props "SynPS/2 Synaptics TouchPad" | awk -F ":\t+" "/Device Enabled/ { print (1+\$2)%2}")' + +hc keybind XF86Display spawn ~/.config/herbstluftwm/monitors +hc keybind XF86ScreenSaver and a spawn slock a spawn xset dpms force off +# shellcheck disable=2016 # $f is scrot interpolation string, not shells +hc keybind Print spawn scrot --focused --exec 'imv $f' {{.chezmoi.homeDir}}/Pictures/scrot/%F-scrot.png +# shellcheck disable=SC2016 +hc keybind Shift-Print spawn scrot --select --exec 'imv $f' {{.chezmoi.homeDir}}/Pictures/scrot/%F-scrot.png + +# theme +hc attr theme.tiling.reset 1 +hc attr theme.floating.reset 1 +hc set frame_border_active_color "${colors[active]}" +hc set frame_bg_active_color "${colors[active]}" +hc set frame_bg_normal_color "${colors[dark3]}" +hc set frame_border_normal_color "${colors[dark3]}" +hc set frame_border_width 2 +hc set always_show_frame on +hc set frame_bg_transparent on +hc set frame_transparent_width 5 +hc set frame_gap 0 +hc set frame_normal_opacity 100 +hc set frame_active_opacity 50 + +hc attr theme.title_height 15 +hc attr theme.title_when multiple_tabs +hc attr theme.title_font 'Dejavu Sans:pixelsize=12' # example using Xft +# hc attr theme.title_font '-*-fixed-medium-r-*-*-13-*-*-*-*-*-*-*' +hc attr theme.title_depth 3 # space below the title's baseline +hc attr theme.active.color "${colors[active]}" +hc attr theme.title_color "${colors[light0_hard]}" +hc attr theme.normal.color "${colors[dark3]}" +hc attr theme.urgent.color "${colors[urgent]}" +hc attr theme.tab_color "${colors[dark0_hard]}" +hc attr theme.active.tab_color "${colors[dark3]}" +hc attr theme.active.tab_outer_color "${colors[dark3]}" +hc attr theme.active.tab_title_color "${colors[light0]}" +hc attr theme.normal.title_color "${colors[light3]}" +hc attr theme.inner_width 0 +hc attr theme.inner_color "${colors[dark0_hard]}" +hc attr theme.border_width 3 +hc attr theme.floating.border_width 4 +hc attr theme.floating.outer_width 1 +hc attr theme.floating.outer_color "${colors[dark0_hard]}" +hc attr theme.active.inner_color "${colors[active]}" +hc attr theme.urgent.inner_color "${colors[urgent]}" +hc attr theme.normal.inner_color "${colors[dark3]}" +# copy inner color to outer_color +for state in active urgent normal ; do + hc substitute C theme.${state}.inner_color \ + attr theme.${state}.outer_color C +done +hc attr theme.tiling.outer_width 1 +hc attr theme.background_color "${colors[dark0_hard]}" + +hc set window_gap 0 +hc set frame_padding 0 +hc set smart_window_surroundings off +hc set smart_frame_surroundings on +hc set mouse_recenter_gap 0 + +# rules +hc unrule -F +#hc rule class=XTerm tag=3 # move all xterms to tag 3 +hc rule focus=on # normally focus new clients +hc rule floatplacement=center +#hc rule focus=off # normally do not focus new clients +# give focus to most common terminals +#hc rule class~'(.*[Rr]xvt.*|.*[Tt]erm|Konsole)' focus=on +hc rule windowtype~'_NET_WM_WINDOW_TYPE_(DIALOG|UTILITY|SPLASH)' floating=on +hc rule windowtype='_NET_WM_WINDOW_TYPE_DIALOG' focus=on +hc rule windowtype~'_NET_WM_WINDOW_TYPE_(NOTIFICATION|DOCK|DESKTOP)' manage=off +hc rule fixedsize floating=on +hc rule class='pinentry-qt' floating=on +hc rule class='mpv' floating=on + +hc set tree_style '╾│ ├└╼─┐' + +# unlock, just to be sure +hc unlock + +# do multi monitor setup here, e.g.: +# hc set_monitors 1280x1024+0+0 1280x1024+1280+0 +# or simply: +hc detect_monitors + +### switch off disconnected +#for mon in "$(xrandr | grep -E 'disconnected [[:digit:]]{3,4}' | awk '{ print $1}')" ; do + #xrandr --output $mon --off +#done + +hc attr settings.auto_detect_monitors 1 + +systemctl --user import-environment DISPLAY XAUTHORITY XDG_SESSION_PATH + +systemctl restart --user "hlwm.target" + +#monitors=$(hc list_monitors | awk -F":" '{print $1}') +#panel_height=18 +#for monitor in $monitors ; do + #hc pad "$monitor" "$panel_height" +#done +#hc pad "0" "$panel_height" + +### set my favourite keymap (and map compose key to <> key i dont use anyway) +setxkbmap -option compose:102 us cz_sk_de + +xset s off +xset -dpms + +### set wallpaper +#feh --bg-center {{.chezmoi.homeDir}}/config/wallpaper/RoyalRadish-Wallpaper_practice_12.png diff --git a/dot_config/herbstluftwm/executable_clipmenu b/dot_config/herbstluftwm/executable_clipmenu new file mode 100644 index 0000000..45a559e --- /dev/null +++ b/dot_config/herbstluftwm/executable_clipmenu @@ -0,0 +1,52 @@ +#!/bin/bash + +shopt -s nullglob + +# We use this to make sure the cache files are sorted bytewise +LC_COLLATE=C + +# Some people copy/paste huge swathes of text that could slow down dmenu +line_length_limit=500 + +declare -A selections +ordered_selections=() + +files=("/tmp/clipmenu.$USER/"*) + +# We can't use `for ... in` here because we need to add files to +# ordered_selections from last to first -- that is, newest to oldest. Incoming +# clipboard entries have a ISO datetime prefixed to the front to aid in this. +for (( i=${#files[@]}-1; i>=0; i-- )); do + file=${files[$i]} + + # We look for the first line matching regex /./ here because we want the + # first line that can provide reasonable context to the user. That is, if + # you have 5 leading lines of whitespace, displaying " (6 lines)" is much + # less useful than displaying "foo (6 lines)", where "foo" is the first + # line in the entry with actionable context. + first_line=$(sed -n '/./{p;q}' "$file" | cut -c1-"$line_length_limit") + lines=$(wc -l < "$file") + + if (( lines > 1 )); then + first_line+=" ($lines lines)" + fi + + ordered_selections+=("$first_line") + selections[$first_line]=$file +done + +# It's okay to hardcode `-l 8` here as a sensible default without checking +# whether `-l` is also in "$@", because the way that dmenu works allows a later +# argument to override an earlier one. That is, if the user passes in `-l`, our +# one will be ignored. +chosen_line=$(printf '%s\n' "${ordered_selections[@]}" | uniq | rofi -columns 1 -p "Clipboard history: " -dmenu -l 8 "$@") + +[[ $chosen_line ]] || exit 1 + +for selection in clipboard primary; do + if type -p xsel >/dev/null 2>&1; then + xsel --logfile /dev/null -i --"$selection" < "${selections[$chosen_line]}" + else + xclip -sel "$selection" < "${selections[$chosen_line]}" + fi +done diff --git a/dot_config/herbstluftwm/executable_clipmenud b/dot_config/herbstluftwm/executable_clipmenud new file mode 100644 index 0000000..ece9080 --- /dev/null +++ b/dot_config/herbstluftwm/executable_clipmenud @@ -0,0 +1,118 @@ +#!/bin/bash + +hr_msg() { + printf -- '\n--- %s ---\n\n' "$1" >&2 +} + +debug() { + if (( DEBUG )); then + printf '%s\n' "$@" >&2 + fi +} + +print_debug_info() { + # DEBUG comes from the environment + if ! (( DEBUG )); then + return + fi + + local msg="${1?}" + + hr_msg "$msg" + + hr_msg Environment + env | LC_ALL=C sort >&2 + + cgroup_path=/proc/$$/cgroup + + if [[ -f $cgroup_path ]]; then + hr_msg cgroup + cat "$cgroup_path" >&2 + else + hr_msg 'NO CGROUP' + fi + + hr_msg 'Finished debug info' +} + +print_debug_info 'Initialising' + +cache_dir=/tmp/clipmenu.$USER/ + +# It's ok that this only applies to the final directory. +# shellcheck disable=SC2174 +mkdir -p -m0700 "$cache_dir" + +declare -A last_data +declare -A last_filename + +while sleep "${CLIPMENUD_SLEEP:-0.5}"; do + print_debug_info 'About to run selection' + + for selection in clipboard primary; do + print_debug_info "About to do selection for '$selection'" + + if type -p xsel >/dev/null 2>&1; then + debug 'Using xsel' + data=$(xsel --logfile /dev/null -o --"$selection"; printf x) + else + debug 'Using xclip' + data=$(xclip -o -sel "$selection"; printf x) + fi + + debug "Data before stripping: $data" + + # We add and remove the x so that trailing newlines are not stripped. + # Otherwise, they would be stripped by the very nature of how POSIX + # defines command substitution. + data=${data%x} + + debug "Data after stripping: $data" + + if [[ $data != *[^[:space:]]* ]]; then + debug "Skipping as clipboard is only blank" + continue + fi + + if [[ ${last_data[$selection]} == "$data" ]]; then + debug 'Skipping as last selection is the same as this one' + continue + fi + + # If we were in the middle of doing a selection when the previous poll + # ran, then we may have got a partial clip. + possible_partial=${last_data[$selection]} + if [[ $possible_partial && $data == "$possible_partial"* ]]; then + debug "$possible_partial is a possible partial of $data" + debug "Removing ${last_filename[$selection]}" + rm -- "${last_filename[$selection]}" + fi + + filename="$cache_dir/$(LC_ALL=C date +%F-%T.%N)" + + last_data[$selection]=$data + last_filename[$selection]=$filename + + debug "Writing $data to $filename" + printf '%s' "$data" > "$filename" + + if ! (( NO_OWN_CLIPBOARD )) && [[ $selection != primary ]]; then + # Take ownership of the clipboard, in case the original application + # is unable to serve the clipboard request (due to being suspended, + # etc). + # + # Primary is excluded from the change of ownership as applications + # sometimes act up if clipboard focus is taken away from them -- + # for example, urxvt will unhilight text, which is undesirable. + # + # We can't colocate this with the above copying code because + # https://github.com/cdown/clipmenu/issues/34 requires knowing if + # we would skip first. + if type -p xsel >/dev/null 2>&1; then + xsel --logfile /dev/null -o --"$selection" | xsel -i --"$selection" + else + xclip -o -sel "$selection" | xclip -i -sel "$selection" + fi + fi + done +done diff --git a/dot_config/herbstluftwm/executable_file-browser b/dot_config/herbstluftwm/executable_file-browser new file mode 100644 index 0000000..c00462c --- /dev/null +++ b/dot_config/herbstluftwm/executable_file-browser @@ -0,0 +1,38 @@ +#!/usr/bin/env bash +set -e + +last_dir_file=/run/user/1000/rofi-fb.last-dir + +if (( ROFI_RETV == 0 )) +then + # echo "first call" >&2 + rm -f /run/user/1000/rofi-fb.last-dir +fi + +if [[ -e "$last_dir_file" ]] +then + ld="$(cat "$last_dir_file")" + # echo "change to $ld" >&2 + [[ -d "$ld" ]] && cd "$ld" +fi + + + +if [[ -d "$1" ]] +then + cd "$1" + echo "$PWD" > "$last_dir_file" +elif [[ -x "$1" ]] +then + "$1" +elif [[ -n "$1" ]] +then + file="$(realpath "$1")" + echo "opening '$file'" >&2 + systemd-run --user --scope xdg-open "$file" &>/dev/null + exit 0 +fi + +echo ".." +ls -A +# vim:sw=4:ts=4:et: diff --git a/dot_config/herbstluftwm/executable_monitors b/dot_config/herbstluftwm/executable_monitors new file mode 100644 index 0000000..fab5c2b --- /dev/null +++ b/dot_config/herbstluftwm/executable_monitors @@ -0,0 +1,25 @@ +#!/bin/bash + +trap '[[ -n "$reload" ]] && herbstclient reload' EXIT + +for mon in $(xrandr | grep -E 'disconnected [[:digit:]]{3,4}' | awk '{ print $1}') +do + xrandr --output "$mon" --off + reload=yes +done + +MONITORS=$(xrandr | grep -v LVDS1 | grep ' connected' | awk '{print $1}') + +[[ -z "$MONITORS" ]] && exit + +CONFIG="$(echo "$MONITORS" | rofi -dmenu -p "Choose a monitor")" + +[[ -z "$CONFIG" ]] && exit + +DIRECTION="$(echo -e 'left\nright' | rofi -dmenu -p "Where you want it")" + +[[ -z "$DIRECTION" ]] && exit + +xrandr --output "$CONFIG" "--$DIRECTION-of" LVDS-1 --auto +reload=yes + diff --git a/dot_config/herbstluftwm/executable_monitors.plug b/dot_config/herbstluftwm/executable_monitors.plug new file mode 100644 index 0000000..ce271d7 --- /dev/null +++ b/dot_config/herbstluftwm/executable_monitors.plug @@ -0,0 +1,28 @@ +#!/bin/bash + +trap '[[ -n "$reload" ]] && herbstclient detect_monitors && systemctl restart --user panel-handler@$DISPLAY' EXIT + +if [[ -z "$*" ]] +then + for mon in $(xrandr | grep -E 'disconnected [[:digit:]]{3,4}' | awk '{ print $1}') + do + xrandr --output "$mon" --off + reload=yes + done +fi + +MONITORS=$(xrandr | grep -v LVDS1 | grep ' connected' | awk '{print $1}') + +[[ -z "$MONITORS" ]] && exit + +CONFIG="$(echo "$MONITORS" | rofi -dmenu)" + +[[ -z "$CONFIG" ]] && exit + +DIRECTION="$(echo -e 'left\nright' | rofi -dmenu)" + +[[ -z "$DIRECTION" ]] && exit + +xrandr --output "$CONFIG" "--$DIRECTION-of" LVDS1 --auto +reload=yes + diff --git a/dot_config/herbstluftwm/executable_panel-generator b/dot_config/herbstluftwm/executable_panel-generator new file mode 100644 index 0000000..2e858b0 --- /dev/null +++ b/dot_config/herbstluftwm/executable_panel-generator @@ -0,0 +1,78 @@ +#!/bin/bash + +#pids= + +#trap 'for p in $pids ; do kill $p ; done ' EXIT + +batt_name=BAT0 + +declare -A state + +update() { + local what="$1" + local new="$2" + + if [[ "${state[$what]}" != "$new" ]] + then + herbstclient emit_hook "$(printf '%s\t%s' "$what" "$new")" +# echo "$what :: $new" + state[$what]="$new" + fi +} + +( +playerctl metadata --format '{{playerName}}|{{status}}|{{artist}}|{{xesam:comment}}|{{title}}' -a -F | +while IFS='|' read -r player status artist comment title +do + test -n "$status" || status=off + update "$(echo -en "player\t$player")" "$(printf '%s\t%s\t%s\t%s' "$status" "$artist" "$comment" "$title")" +done +notify-send -u critical "Player" "Player monitoring loop failed!" + +) & +#pids="$!" + +( +while : +do + pactl subscribe | ag "Event 'change' on sink" | while read -r _ + do + volume="$(pactl get-sink-volume "$(pactl get-default-sink)" | grep -E -o '[0-9]+%' | uniq | tr '\n' ',' | sed 's/,$//')" + update volume "$volume" + done + sleep 10 +done +) & + +while : +do + # shellcheck source=/sys/class/power_supply/BAT0/uevent # most likely + #. /sys/class/power_supply/$batt_name/uevent + read -r batt_perc < /sys/devices/platform/smapi/BAT0/remaining_percent + read -r ac < /sys/devices/platform/smapi/BAT0/state + read -r load _ < /proc/loadavg + read -r temp < /sys/devices/platform/coretemp.0/hwmon/hwmon?/temp1_input + + update ac "$ac" + + update load "$load" + + update battery "$batt_perc" + + update temperature "$((temp / 1000 ))" + + update network "$(ip -br addr show dev eth0 | awk '{ print $2"\t"$3 }')" + + update wifi "$(iwctl station wlan0 show |grep 'Connected network' | sed 's/ */ /g' | cut -d ' ' -f 4-)" + + #if [ -e /run/user/1000/cmus-socket ] + #then + #update player "$(printf '%s\t%s \t%s' "$(playerctl metadata artist | tr -d "'" )" "$(playerctl metadata xesam:comment)" "$(playerctl metadata title)")" + #else + #update player "" + #fi + + update date "%{T2}%{T-} $(date '+%{F#efefef}%H:%M%{F#909090}, %Y-%m-%{F#efefef}%d')" + + sleep 10 +done diff --git a/dot_config/herbstluftwm/executable_panel-generator.ksh b/dot_config/herbstluftwm/executable_panel-generator.ksh new file mode 100644 index 0000000..4fbecb3 --- /dev/null +++ b/dot_config/herbstluftwm/executable_panel-generator.ksh @@ -0,0 +1,76 @@ +#!/bin/ksh + +#pids= + +#trap 'for p in $pids ; do kill $p ; done ' EXIT + +declare -A state + +update() { + local what="$1" + local new="$2" + + if [[ "${state[$what]}" != "$new" ]] + then + herbstclient emit_hook "$(printf '%s\t%s' "$what" "$new")" +# echo "$what :: $new" + state[$what]="$new" + fi +} + +( +playerctl metadata --format '{{playerName}}|{{status}}|{{artist}}|{{xesam:comment}}|{{title}}' -a -F | +while IFS='|' read -r player status artist comment title +do + test -n "$status" || status=off + update "$(echo -en "player\t$player")" "$(printf '%s\t%s\t%s\t%s' "$status" "$artist" "$comment" "$title")" +done +notify-send -u critical "Player" "Player monitoring loop failed!" + +) & +#pids="$!" + +( +while : +do + pactl subscribe | ag "Event 'change' on sink" | while read -r _ + do + volume="$(pactl get-sink-volume "$(pactl get-default-sink)" | grep -E -o '[0-9]+%' | uniq | tr '\n' ',' | sed 's/,$//')" + update volume "$volume" + done + sleep 10 +done +) & + +while : +do + # shellcheck source=/sys/class/power_supply/BAT0/uevent # most likely + #. /sys/class/power_supply/$batt_name/uevent + read -r batt_perc < /sys/devices/platform/smapi/BAT0/remaining_percent + read -r ac < /sys/devices/platform/smapi/BAT0/state + read -r load _ < /proc/loadavg + read -r temp < /sys/devices/platform/coretemp.0/hwmon/hwmon4/temp1_input + + update ac "$ac" + + update load "$load" + + update battery "$batt_perc" + + update temperature "$((temp / 1000 ))" + + update network "$(ip -br addr show dev eth0 | awk '{ print $2"\t"$3 }')" + + update wifi "$(iwctl station wlan0 show |grep 'Connected network' | sed 's/ */ /g' | cut -d ' ' -f 4-)" + + #if [ -e /run/user/1000/cmus-socket ] + #then + #update player "$(printf '%s\t%s \t%s' "$(playerctl metadata artist | tr -d "'" )" "$(playerctl metadata xesam:comment)" "$(playerctl metadata title)")" + #else + #update player "" + #fi + + update date "%{T2}%{T-} $(date '+%{F#efefef}%H:%M%{F#909090}, %Y-%m-%{F#efefef}%d')" + + sleep 10 +done diff --git a/dot_config/herbstluftwm/executable_panel-handler b/dot_config/herbstluftwm/executable_panel-handler new file mode 100644 index 0000000..29a2cb3 --- /dev/null +++ b/dot_config/herbstluftwm/executable_panel-handler @@ -0,0 +1,272 @@ +#!/bin/bash + +hc() { herbstclient "$@" ;} +panel_height=18 +# bgcolor=$(hc get frame_border_normal_color) +# selbg=$(hc get window_border_active_color) +# selfg='#282828' +# fg='#fbf1c7' +# bgcolor='#282828' +# selsecbg='#ebdbb2' + + +. "$(dirname "$0")/colors.sh" + +col_bg_pri_sel=${colors[active]} +col_fg_pri_sel=${colors[dark0]} + +col_bg_sec_sel=${colors[dark3]} +col_fg_sec_sel=${colors[light1]} + +col_bg=${colors[dark0]} +col_fg=${colors[light0]} + +col_fg_sec=${colors[light4]} + +col_bg_urg=${colors[urgent]} + +monitors=( ) + +i=0 +while read -r _ resolution +do + monitors[$i]="$(herbstclient list_monitors | grep "$resolution" | cut -d":" -f1)" + i=$((i+1)) +done < <(xrandr| awk '/ connected/ { FS=" " ; $0=$0 ; if ($3 == "primary") { res=$4 } else {res=$3} ; FS="+" ; $0=$0 ; print $2" "res }' | sort -n) + +first_loop=1 + +notify() { + if [[ "$first_loop" != 1 ]] + then + #twmnc "$@" + notify-send "$@" + fi +} + +# so it bootstraps... +( sleep 0.5; hc emit_hook volume ) & + +hc --idle | { + for monitor in "${monitors[@]}" ; do + tags[$monitor]="$(hc tag_status "$monitor")" + done + date="%{T2}%{T-} $(date '+%{F#efefef}%H:%M%{F#909090}, %Y-%m-%{F#efefef}%d')" + windowtitle="" + #count-mails; + #charge=$(battery | awk '{print $2}') + while true ; do + + ### prepare by monitor tags displaying + for monitor in "${monitors[@]}" ; do + output_tags[$monitor]="%{A4:herbstclient use_index +1 --skip-visible:}%{A5:herbstclient use_index -1 --skip-visible:}" + for i in ${tags[$monitor]} ; do + case ${i:0:1} in + '#'|'+') + output_tags[$monitor]="${output_tags[$monitor]}%{F$col_fg_pri_sel}%{B$col_bg_pri_sel}" + ;; + #'+') + #output_tags[$monitor]="${output_tags[$monitor]}%{B#3c7693}%{F#141414}" + #;; + ':') + output_tags[$monitor]="${output_tags[$monitor]}%{B-}%{F-}" + ;; + '!') + output_tags[$monitor]="${output_tags[$monitor]}%{B${col_bg_urg}}%{F-}" + ;; + '-'|'%') + output_tags[$monitor]="${output_tags[$monitor]}%{B${col_bg_sec_sel}%{F${col_fg_sec_sel}}" + ;; + *) + output_tags[$monitor]="${output_tags[$monitor]}%{B-}%{F${col_fg_sec}}" + ;; + esac + +# output_tags[$monitor]="${output_tags[$monitor]}%{A:herbstclient use_index $((${i:1} - 1 )):} ${i:1} %{A}" + output_tags[$monitor]="${output_tags[$monitor]}%{A1:herbstclient use ${i:1}:} ${i:1} %{A}%{B-}%{F-}" + done + output_tags[$monitor]="${output_tags[$monitor]}%{A}%{A}" + done + + #bordercolor="#26221C" + separator="%{B-}%{F-}|" + #separator="%{B$selbg} %{B-}%{F-}" + #right= + #for st in playing volume wifi temperature load date + #do + #data="$(eval $st)" + #[[ -n "$data" ]] && right="$right $separator $data" + #done + + ### All drawing happens here +# echo -n "%{T5}" # set font + for m in "${!monitors[@]}" ; do + monitor=${monitors[$m]} + + ### set monitor + echo -n "%{S$m}" + #echo -en "%{S$((${#monitors[@]} - monitor))}" + ### print the left + echo -n "%{l}${output_tags[$monitor]}$separator ${windowtitle:0:150}" + ### center + #echo -n "%{c}%{U${colors[bright_orange]}}${windowtitle:0:150}%{U-}" + ### print the right + echo -n "%{r}$playing $separator $volume $separator $wifi $separator $network $separator $temperature $separator $load $separator $date $separator %{U#f2f229}$charge%{U-} $separator" + #echo -en "%{r}$right $separator %{U#f2f229}$charge%{U-} $separator" + done + + ### end the output + echo + + ### Data handling ### + # This part handles the events generated in the event loop, and sets + # internal variables based on them. The event and its arguments are + # read into the array cmd, then action is taken depending on the event + # name. + # "Special" events (quit_panel/togglehidepanel/reload) are also handled + # here. + + # wait for next event + IFS=$'\t' read -ra cmd || break + #for z in ${cmd[@]} + #do + #echo -n "'$z' " >&2 + #done + #echo >&2 + # find out event origin + case "${cmd[0]}" in + tag*) + #echo "resetting tags" >&2 + for monitor in "${monitors[@]}" ; do + tags[$monitor]="$(hc tag_status "$monitor")" + done + ;; + date) + #echo "resetting date" >&2 + date="${cmd[*]:1}" + ;; + quit_panel) + exit + ;; + reload) + exit + ;; + load) + load=" ${cmd[*]:1}" + ;; + focus_changed|window_title_changed) + windowtitle="${cmd[*]:2}" + echo "$windowtitle" > /tmp/wt + ;; + player) + # declare -A player_status + if [[ "${cmd[1]}" = cmus ]] + then + play_line=" ${cmd[3]:0:20}/${cmd[4]:0:20}- ${cmd[5]:0:20}" + play_sym= + case "${cmd[2]}" in + off|Stopped) + play_line= + ;; + Paused) + play_sym= + ;; + *) + play_sym="%{T2}%{T-}" + ;; + esac + playing="$play_sym$play_line" + fi + + # [[ "${player_status[${cmd[1]}]}" != "${cmd[2]}" ]] && + # notify "Player: ${cmd[1]}" "${cmd[2]}" + # player_status[${cmd[1]}]="${cmd[2]}" + ;; + ac) + case ${cmd[1]} in + charging) + batt_sym="%{F#00aa00}$batt_sym%{F-}" + ac="+" + notify "Power" "Battery charging" + ;; + discharging) + ac="-" + batt_sym="%{F#ffdb00}$batt_sym%{F-}" + notify "Power" "Battery discharging" + ;; + idle) + ac="=" + notify "Power" "Fully charged" + ;; + esac + ;; + + battery) + #echo "battery" >&2 + batt_perc="${cmd[1]}" + { [ "$batt_perc" -ge 95 ] && batt_sym= ; } || + { [ "$batt_perc" -ge 75 ] && batt_sym= ; } || + { [ "$batt_perc" -ge 50 ] && batt_sym= ; } || + { [ "$batt_perc" -ge 25 ] && batt_sym= ; } || batt_sym= + + case "$ac" in + +) + batt_sym="%{F#00aa00}$batt_sym%{F-}" + ac="+" + ;; + -) + batt_sym="%{F#ffdb00}$batt_sym%{F-}" + ;; + *) + ;; + esac + + charge="$batt_sym ${batt_perc}%" + + [ "$batt_perc" -le 15 ] && [ "$ac" != '+' ] && notify -u critical "Power" "Battery has only ${batt_perc}%" + ;; + temperature) + temperature=" ${cmd[1]}°C" + ;; + wifi) + _wifi_net="${cmd[1]}" + if [[ -n "$_wifi_net" ]] + then + _wifi_sym=直 + else + _wifi_sym=睊 + fi + wifi="$(xargs <<<"$_wifi_sym $_wifi_net")" + ;; + + network) + _net_status="${cmd[1]}" + if [[ "$_net_status" == 'UP' ]] + then + network="$(xargs <<<"ﯱ ${cmd[2]}")" + else + network= + fi + ;; + + volume) + sleep 0.1 + + mute="$(pactl get-sink-mute "$(pactl get-default-sink)" | awk '{print $2}')" + + if [[ "$mute" == yes ]] + then + volume="" + else + volume=" ${cmd[1]}" + fi + ;; + esac + first_loop=0 + done + +} | lemonbar -f "Noto Sans Mono-10" -f "Symbols Nerd Font-10" -a30 -B "$col_bg" -F "$col_fg" -u 1 | sh +#} | lemonbar -f "DejaVu Sans-9" -f "Font Awesome-9" -f "Symbols Nerd Font-9" +#} | tee >(lemonbar -f "DejaViu Sans-9" -f "Font Awesome-9" ) + +systemctl stop --user "hlwm.target" diff --git a/dot_config/herbstluftwm/executable_passboltmenu b/dot_config/herbstluftwm/executable_passboltmenu new file mode 100644 index 0000000..37f4956 --- /dev/null +++ b/dot_config/herbstluftwm/executable_passboltmenu @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + +. /usr/share/nvm/init-nvm.sh + +if [[ $(passbolt auth check) != 'You are already logged in.' ]] +then + passbolt auth login +fi + +tmp=$(mktemp) +trap 'rm $tmp' EXIT + + +uuid=$(passbolt find | tail -n+2|rofi -columns 1 -width 80 -p "Password for" -dmenu "$@" | awk '{print $NF}') + +[[ -n "$uuid" ]] || exit + +passbolt get "$uuid" | gpg -q | xclip -i -selection clipboard diff --git a/dot_config/herbstluftwm/executable_passboltmenu2 b/dot_config/herbstluftwm/executable_passboltmenu2 new file mode 100644 index 0000000..fc8b68a --- /dev/null +++ b/dot_config/herbstluftwm/executable_passboltmenu2 @@ -0,0 +1,28 @@ +#!/bin/bash + +. /usr/share/nvm/init-nvm.sh + +if (( ROFI_RETV == 0 )) +then + echo -en "\0prompt\x1fPassword for\n" + temp="$(mktemp)" + passbolt find > "$temp" + awk 'NR >1 { str = substr($0, 0, 58) ; gsub(/ +$/, "", str) ;print str"|"$NF}' < "$temp" | while IFS="|" read -r name uuid + do + echo -e "$name\0info\x1f$uuid" + done + +else + ( + data="$(passbolt get "$ROFI_INFO" | gpg -q)" + if jq '.' <<<"$data" &>/dev/null + then + password="$(jq -r '.password' <<<"$data")" + else + password="$data" + fi + + xclip -i -selection clipboard <<<"$password" + ) > /dev/null + exit 0 +fi diff --git a/dot_config/herbstluftwm/executable_passmenu b/dot_config/herbstluftwm/executable_passmenu new file mode 100644 index 0000000..a62fb3e --- /dev/null +++ b/dot_config/herbstluftwm/executable_passmenu @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +shopt -s nullglob globstar + +typeit=0 +if [[ $1 == "--type" ]]; then + typeit=1 + shift +fi + +prefix=${PASSWORD_STORE_DIR-~/.password-store} +password_files=( "$prefix"/**/*.gpg ) +password_files=( "${password_files[@]#"$prefix"/}" ) +password_files=( "${password_files[@]%.gpg}" ) + +password=$(printf '%s\n' "${password_files[@]}" | rofi -p "Password for" -dmenu "$@") + +[[ -n $password ]] || exit + +if [[ $typeit -eq 0 ]]; then + pass show -c "$password" 2>/dev/null +else + pass show "$password" | { read -r pass; printf %s "$pass"; } | + xdotool type --clearmodifiers --file - +fi diff --git a/dot_config/herbstluftwm/executable_passmenu2 b/dot_config/herbstluftwm/executable_passmenu2 new file mode 100644 index 0000000..a871f98 --- /dev/null +++ b/dot_config/herbstluftwm/executable_passmenu2 @@ -0,0 +1,30 @@ +#!/usr/bin/env bash + +shopt -s nullglob globstar + +if (( ROFI_RETV == 0 )) +then + echo -en "\0prompt\x1fPassword for\n" + prefix=${PASSWORD_STORE_DIR-~/.password-store} + password_files=( "$prefix"/**/*.gpg ) + password_files=( "${password_files[@]#"$prefix"/}" ) + password_files=( "${password_files[@]%.gpg}" ) + + printf '%s\n' "${password_files[@]}" +else + typeit=0 + (( ROFI_RETV == 2 )) && typeit=1 + password="$1" + echo "$@" >&2 + echo "$ROFI_RETV" >&2 + + [[ -n $password ]] || exit + + if (( typeit == 0 )) + then + coproc pass show -c "$password" &>/dev/null + else + coproc ( pass show "$password" | { read -r pass; printf %s "$pass"; } | + xdotool type --clearmodifiers --file - ) + fi +fi diff --git a/dot_config/herbstluftwm/executable_pmount-dmenu b/dot_config/herbstluftwm/executable_pmount-dmenu new file mode 100644 index 0000000..04745ca --- /dev/null +++ b/dot_config/herbstluftwm/executable_pmount-dmenu @@ -0,0 +1,34 @@ +#!/bin/bash +notify() { + #notify-send -i /usr/share/icons/Adwaita/96x96/devices/drive-harddisk-usb-symbolic.symbolic.png "$@" + notify-send -i drive-harddisk "$@" +} + +read -r block mnt < <(lsblk -ln -o NAME,HOTPLUG,FSTYPE,MOUNTPOINT \ + | awk '$2==1 && $3 !="" { if ($4 != "") {print $1" (unmount)"} else { print $1}}' \ + | rofi -p 'Mount' -dmenu) + +if [[ -z "$block" ]] +then + exit 0 +fi + +if [[ -z "$mnt" ]] +then + if pmount "$block" + then + notify "$block mounted" + herbstclient spawn kitty -d "/media/$block" + else + notify "$block mount failed" + fi +else + res="$(pumount "$block" 2>&1)" + if (( $? == 0 )) + then + notify "$block unmounted" + else + notify -u critical "$block unmount failed" "$res" + fi +fi + diff --git a/dot_config/herbstluftwm/executable_pulsemenu b/dot_config/herbstluftwm/executable_pulsemenu new file mode 100644 index 0000000..ea89f5b --- /dev/null +++ b/dot_config/herbstluftwm/executable_pulsemenu @@ -0,0 +1,75 @@ +#!/bin/bash + +export MESSAGE="" + +print_list() { + pactl list sinks | awk ' + function rofi_set(prop, val) { + print "\0"prop"\x1f"val + } + BEGIN { + have_sink = 0 + i = 0 + "pactl get-default-sink" | getline active_sink + list="" + active_line=-1 + }; + /^Sink/ { + new=mute" "name" ("volume")\0info\x1f"sink + if (have_sink == active_line) { + list=new"\n"list + } else if (have_sink > 0) { + list=list"\n"new + } + sink=substr($2,2); + have_sink++ + + }; + /Description/ { + $1 = "" ; + name = substr($0,2); + }; + /Mute/ { + if ( $2 == "yes") { + mute="(M)" + } else { + mute="" + } + } + /Volume/ && ! /Base Volume/ { + if ( $5 == $12) { + volume=$5 + } else { + volume=$5"|"$12 + } + } + + /Name/ && $2 == active_sink { + active_line=have_sink + } + END { + new=mute" "name" ("volume")\0info\x1f"sink + if (have_sink == active_line) { + list=new"\n"list + } else if (have_sink > 0) { + list=list"\n"new + } + rofi_set("prompt", "Default sink") + rofi_set("message", ENVIRON["MESSAGE"]) + rofi_set("use-hot-keys","true") + rofi_set("active", "0") + sub(/\n+/, "\n", list) + print list + }' +} + +case "$ROFI_RETV" in + 0) : ;; + 1) pactl set-default-sink "$ROFI_INFO" ; exit 0 ;; + 10) pactl set-sink-volume "$ROFI_INFO" -10% ;; + 11) pactl set-sink-volume "$ROFI_INFO" +10% ;; + 12) pactl set-sink-mute "$ROFI_INFO" toggle ;; + *) export MESSAGE="unknown action" ;; +esac + +print_list diff --git a/dot_config/imv/config b/dot_config/imv/config new file mode 100644 index 0000000..5989ab7 --- /dev/null +++ b/dot_config/imv/config @@ -0,0 +1,63 @@ +# Default config for imv + +[options] + +# Suppress built-in key bindings, and specify them explicitly in this +# config file. +suppress_default_binds = true + +[aliases] +# Define aliases here. Any arguments passed to an alias are appended to the +# command. +# alias = command to run + +[binds] +# Define some key bindings +q = quit +y = exec echo working! + +# Image navigation + = prev + = prev + = next + = next +gg = goto 1 + = goto -1 + +# Panning +j = pan 0 -50 +k = pan 0 50 +h = pan 50 0 +l = pan -50 0 + +# Zooming + = zoom 1 + = zoom 1 +i = zoom 1 + = zoom -1 + = zoom -1 +o = zoom -1 + +# Rotate Clockwise by 90 degrees + = rotate by 90 + +# Other commands +x = close +f = fullscreen +d = overlay +p = exec echo $imv_current_file +y = exec echo $imv_current_file | xclip -i +c = center +s = scaling next + = upscaling next +a = zoom actual +r = reset + +# Gif playback + = next_frame + = toggle_playing + +# Slideshow control +t = slideshow +1 + = slideshow -1 + diff --git a/dot_config/jesseduffield/lazygit/config.yml b/dot_config/jesseduffield/lazygit/config.yml new file mode 100644 index 0000000..9ce7909 --- /dev/null +++ b/dot_config/jesseduffield/lazygit/config.yml @@ -0,0 +1,11 @@ +reporting: "off" +startuppopupversion: 1 +git: + pull: + mode: rebase + +customCommands: + - key: '' + context: files + command: | + php-cs-fixer fix --rules '{"@Symfony":true,"array_syntax":{"syntax":"short"},"binary_operator_spaces":{"default":"align_single_space_minimal"},"fully_qualified_strict_types":false}' {{.SelectedFile.Name}} diff --git a/dot_config/kitty/kitty.conf b/dot_config/kitty/kitty.conf new file mode 100644 index 0000000..66b9b34 --- /dev/null +++ b/dot_config/kitty/kitty.conf @@ -0,0 +1,1942 @@ +# vim:fileencoding=utf-8:ft=conf:foldmethod=marker + +#: Fonts {{{ + +#: kitty has very powerful font management. You can configure +#: individual font faces and even specify special fonts for particular +#: characters. + +#font_family Fira Sans +font_family Noto Sans +#font_family Inconsolata +#font_family Fantasque Sans Mono +bold_font auto +italic_font auto +bold_italic_font auto + +#: You can specify different fonts for the bold/italic/bold-italic +#: variants. To get a full list of supported fonts use the `kitty +#: list-fonts` command. By default they are derived automatically, by +#: the OSes font system. When bold_font or bold_italic_font is set to +#: auto on macOS, the priority of bold fonts is semi-bold, bold, +#: heavy. Setting them manually is useful for font families that have +#: many weight variants like Book, Medium, Thick, etc. For example:: + +#: font_family Operator Mono Book +#: bold_font Operator Mono Medium +#: italic_font Operator Mono Book Italic +#: bold_italic_font Operator Mono Medium Italic + +font_size 12.0 + +#: Font size (in pts) + +force_ltr no + +#: kitty does not support BIDI (bidirectional text), however, for RTL +#: scripts, words are automatically displayed in RTL. That is to say, +#: in an RTL script, the words "HELLO WORLD" display in kitty as +#: "WORLD HELLO", and if you try to select a substring of an RTL- +#: shaped string, you will get the character that would be there had +#: the the string been LTR. For example, assuming the Hebrew word +#: ירושלים, selecting the character that on the screen appears to be ם +#: actually writes into the selection buffer the character י. kitty's +#: default behavior is useful in conjunction with a filter to reverse +#: the word order, however, if you wish to manipulate RTL glyphs, it +#: can be very challenging to work with, so this option is provided to +#: turn it off. Furthermore, this option can be used with the command +#: line program GNU FriBidi +#: to get BIDI +#: support, because it will force kitty to always treat the text as +#: LTR, which FriBidi expects for terminals. + +adjust_line_height 0 +adjust_column_width 0 + +#: Change the size of each character cell kitty renders. You can use +#: either numbers, which are interpreted as pixels or percentages +#: (number followed by %), which are interpreted as percentages of the +#: unmodified values. You can use negative pixels or percentages less +#: than 100% to reduce sizes (but this might cause rendering +#: artifacts). + +adjust_baseline 0 + +#: Adjust the vertical alignment of text (the height in the cell at +#: which text is positioned). You can use either numbers, which are +#: interpreted as pixels or a percentages (number followed by %), +#: which are interpreted as the percentage of the line height. A +#: positive value moves the baseline up, and a negative value moves +#: them down. The underline and strikethrough positions are adjusted +#: accordingly. + +#symbol_map + +#: E.g. symbol_map U+E0A0-U+E0A3,U+E0C0-U+E0C7 PowerlineSymbols + +#: Map the specified unicode codepoints to a particular font. Useful +#: if you need special rendering for some symbols, such as for +#: Powerline. Avoids the need for patched fonts. Each unicode code +#: point is specified in the form U+. You +#: can specify multiple code points, separated by commas and ranges +#: separated by hyphens. symbol_map itself can be specified multiple +#: times. Syntax is:: + +#: symbol_map codepoints Font Family Name + +disable_ligatures never + +#: Choose how you want to handle multi-character ligatures. The +#: default is to always render them. You can tell kitty to not render +#: them when the cursor is over them by using cursor to make editing +#: easier, or have kitty never render them at all by using always, if +#: you don't like them. The ligature strategy can be set per-window +#: either using the kitty remote control facility or by defining +#: shortcuts for it in kitty.conf, for example:: + +#: map alt+1 disable_ligatures_in active always +#: map alt+2 disable_ligatures_in all never +#: map alt+3 disable_ligatures_in tab cursor + +#: Note that this refers to programming ligatures, typically +#: implemented using the calt OpenType feature. For disabling general +#: ligatures, use the font_features setting. + +font_features + +#: E.g. font_features none + +#: Choose exactly which OpenType features to enable or disable. This +#: is useful as some fonts might have features worthwhile in a +#: terminal. For example, Fira Code Retina includes a discretionary +#: feature, zero, which in that font changes the appearance of the +#: zero (0), to make it more easily distinguishable from Ø. Fira Code +#: Retina also includes other discretionary features known as +#: Stylistic Sets which have the tags ss01 through ss20. + +#: For the exact syntax to use for individual features, see the +#: Harfbuzz documentation . + +#: Note that this code is indexed by PostScript name, and not the font +#: family. This allows you to define very precise feature settings; +#: e.g. you can disable a feature in the italic font but not in the +#: regular font. + +#: On Linux, these are read from the FontConfig database first and +#: then this, setting is applied, so they can be configured in a +#: single, central place. + +#: To get the PostScript name for a font, use kitty + list-fonts +#: --psnames: + +#: .. code-block:: sh + +#: $ kitty + list-fonts --psnames | grep Fira +#: Fira Code +#: Fira Code Bold (FiraCode-Bold) +#: Fira Code Light (FiraCode-Light) +#: Fira Code Medium (FiraCode-Medium) +#: Fira Code Regular (FiraCode-Regular) +#: Fira Code Retina (FiraCode-Retina) + +#: The part in brackets is the PostScript name. + +#: Enable alternate zero and oldstyle numerals:: + +#: font_features FiraCode-Retina +zero +onum + +#: Enable only alternate zero:: + +#: font_features FiraCode-Retina +zero + +#: Disable the normal ligatures, but keep the calt feature which (in +#: this font) breaks up monotony:: + +#: font_features TT2020StyleB-Regular -liga +calt + +#: In conjunction with force_ltr, you may want to disable Arabic +#: shaping entirely, and only look at their isolated forms if they +#: show up in a document. You can do this with e.g.:: + +#: font_features UnifontMedium +isol -medi -fina -init + +box_drawing_scale 0.001, 1, 1.5, 2 + +#: Change the sizes of the lines used for the box drawing unicode +#: characters These values are in pts. They will be scaled by the +#: monitor DPI to arrive at a pixel value. There must be four values +#: corresponding to thin, normal, thick, and very thick lines. + +#: }}} + +#: Cursor customization {{{ + +cursor #cccccc + +#: Default cursor color. If set to the special value none the cursor +#: will be rendered with a "reverse video" effect. It's color will be +#: the color of the text in the cell it is over and the text will be +#: rendered with the background color of the cell. Note that if the +#: program running in the terminal sets a cursor color, this takes +#: precedence. Also, the cursor colors are modified if the cell +#: background and foreground colors have very low contrast. + +cursor_text_color #111111 + +#: Choose the color of text under the cursor. If you want it rendered +#: with the background color of the cell underneath instead, use the +#: special keyword: background. Note that if cursor is set to none +#: then this setting if ignored. + +cursor_shape block + +#: The cursor shape can be one of (block, beam, underline). Note that +#: when reloading the config this will be changed only if the cursor +#: shape has not been set by the program running in the terminal. This +#: sets the default cursor shape. Applications running in the terminal +#: can override it. In particular, +#: https://sw.kovidgoyal.net/kitty/shell-integration/ in kitty sets +#: the cursor shape to beam at shell prompts. You can avoid this by +#: setting shell_integration to no-cursor. + +cursor_beam_thickness 1.5 + +#: Defines the thickness of the beam cursor (in pts) + +cursor_underline_thickness 2.0 + +#: Defines the thickness of the underline cursor (in pts) + +cursor_blink_interval 0 + +#: The interval (in seconds) at which to blink the cursor. Set to zero +#: to disable blinking. Negative values mean use system default. Note +#: that numbers smaller than repaint_delay will be limited to +#: repaint_delay. + +cursor_stop_blinking_after 15.0 + +#: Stop blinking cursor after the specified number of seconds of +#: keyboard inactivity. Set to zero to never stop blinking. + +#: }}} + +#: Scrollback {{{ + +scrollback_lines 5000 + +#: Number of lines of history to keep in memory for scrolling back. +#: Memory is allocated on demand. Negative numbers are (effectively) +#: infinite scrollback. Note that using very large scrollback is not +#: recommended as it can slow down performance of the terminal and +#: also use large amounts of RAM. Instead, consider using +#: scrollback_pager_history_size. Note that on config reload if this +#: is changed it will only affect newly created windows, not existing +#: ones. + +scrollback_pager less --chop-long-lines --RAW-CONTROL-CHARS +INPUT_LINE_NUMBER + +#: Program with which to view scrollback in a new window. The +#: scrollback buffer is passed as STDIN to this program. If you change +#: it, make sure the program you use can handle ANSI escape sequences +#: for colors and text formatting. INPUT_LINE_NUMBER in the command +#: line above will be replaced by an integer representing which line +#: should be at the top of the screen. Similarly CURSOR_LINE and +#: CURSOR_COLUMN will be replaced by the current cursor position or +#: set to 0 if there is no cursor, for example, when showing the last +#: command output. + +scrollback_pager_history_size 0 + +#: Separate scrollback history size, used only for browsing the +#: scrollback buffer (in MB). This separate buffer is not available +#: for interactive scrolling but will be piped to the pager program +#: when viewing scrollback buffer in a separate window. The current +#: implementation stores the data in UTF-8, so approximatively 10000 +#: lines per megabyte at 100 chars per line, for pure ASCII text, +#: unformatted text. A value of zero or less disables this feature. +#: The maximum allowed size is 4GB. Note that on config reload if this +#: is changed it will only affect newly created windows, not existing +#: ones. + +scrollback_fill_enlarged_window no + +#: Fill new space with lines from the scrollback buffer after +#: enlarging a window. + +wheel_scroll_multiplier 5.0 + +#: Modify the amount scrolled by the mouse wheel. Note this is only +#: used for low precision scrolling devices, not for high precision +#: scrolling on platforms such as macOS and Wayland. Use negative +#: numbers to change scroll direction. + +touch_scroll_multiplier 1.0 + +#: Modify the amount scrolled by a touchpad. Note this is only used +#: for high precision scrolling devices on platforms such as macOS and +#: Wayland. Use negative numbers to change scroll direction. + +#: }}} + +#: Mouse {{{ + +mouse_hide_wait 3.0 + +#: Hide mouse cursor after the specified number of seconds of the +#: mouse not being used. Set to zero to disable mouse cursor hiding. +#: Set to a negative value to hide the mouse cursor immediately when +#: typing text. Disabled by default on macOS as getting it to work +#: robustly with the ever-changing sea of bugs that is Cocoa is too +#: much effort. + +url_color #0087bd +url_style curly + +#: The color and style for highlighting URLs on mouse-over. url_style +#: can be one of: none, single, double, curly + +open_url_with default + +#: The program with which to open URLs that are clicked on. The +#: special value default means to use the operating system's default +#: URL handler. + +url_prefixes http https file ftp gemini irc gopher mailto news git + +#: The set of URL prefixes to look for when detecting a URL under the +#: mouse cursor. + +detect_urls yes + +#: Detect URLs under the mouse. Detected URLs are highlighted with an +#: underline and the mouse cursor becomes a hand over them. Even if +#: this option is disabled, URLs are still clickable. + +url_excluded_characters + +#: Additional characters to be disallowed from URLs, when detecting +#: URLs under the mouse cursor. By default, all characters legal in +#: URLs are allowed. + +copy_on_select no + +#: Copy to clipboard or a private buffer on select. With this set to +#: clipboard, simply selecting text with the mouse will cause the text +#: to be copied to clipboard. Useful on platforms such as macOS that +#: do not have the concept of primary selections. You can instead +#: specify a name such as a1 to copy to a private kitty buffer +#: instead. Map a shortcut with the paste_from_buffer action to paste +#: from this private buffer. For example:: + +#: map shift+cmd+v paste_from_buffer a1 + +#: Note that copying to the clipboard is a security risk, as all +#: programs, including websites open in your browser can read the +#: contents of the system clipboard. + +strip_trailing_spaces never + +#: Remove spaces at the end of lines when copying to clipboard. A +#: value of smart will do it when using normal selections, but not +#: rectangle selections. always will always do it. + +select_by_word_characters @-./_~?&=%+# + +#: Characters considered part of a word when double clicking. In +#: addition to these characters any character that is marked as an +#: alphanumeric character in the unicode database will be matched. + +click_interval -1.0 + +#: The interval between successive clicks to detect double/triple +#: clicks (in seconds). Negative numbers will use the system default +#: instead, if available, or fallback to 0.5. + +focus_follows_mouse no + +#: Set the active window to the window under the mouse when moving the +#: mouse around + +pointer_shape_when_grabbed arrow + +#: The shape of the mouse pointer when the program running in the +#: terminal grabs the mouse. Valid values are: arrow, beam and hand + +default_pointer_shape beam + +#: The default shape of the mouse pointer. Valid values are: arrow, +#: beam and hand + +pointer_shape_when_dragging beam + +#: The default shape of the mouse pointer when dragging across text. +#: Valid values are: arrow, beam and hand + +#: Mouse actions {{{ + +#: Mouse buttons can be remapped to perform arbitrary actions. The +#: syntax for doing so is: + +#: .. code-block:: none + +#: mouse_map button-name event-type modes action + +#: Where ``button-name`` is one of ``left``, ``middle``, ``right`` or +#: ``b1 ... b8`` with added keyboard modifiers, for example: +#: ``ctrl+shift+left`` refers to holding the ctrl+shift keys while +#: clicking with the left mouse button. The number ``b1 ... b8`` can +#: be used to refer to upto eight buttons on a mouse. + +#: ``event-type`` is one ``press``, ``release``, ``doublepress``, +#: ``triplepress``, ``click`` and ``doubleclick``. ``modes`` +#: indicates whether the action is performed when the mouse is grabbed +#: by the program running in the terminal, or not. It can have one or +#: more or the values, ``grabbed,ungrabbed``. ``grabbed`` refers to +#: when the program running in the terminal has requested mouse +#: events. Note that the click and double click events have a delay of +#: click_interval to disambiguate from double and triple presses. + +#: You can run kitty with the kitty --debug-input command line option +#: to see mouse events. See the builtin actions below to get a sense +#: of what is possible. + +#: If you want to unmap an action map it to ``no-op``. For example, to +#: disable opening of URLs with a plain click:: + +#: mouse_map left click ungrabbed no-op + +#: .. note:: +#: Once a selection is started, releasing the button that started it will +#: automatically end it and no release event will be dispatched. + +clear_all_mouse_actions no + +#: You can have kitty remove all mouse actions seen up to this point. +#: Useful, for instance, to remove the default mouse actions. + +#: Click the link under the mouse or move the cursor + +mouse_map left click ungrabbed mouse_handle_click selection link prompt + +#:: First check for a selection and if one exists do nothing. Then +#:: check for a link under the mouse cursor and if one exists, click +#:: it. Finally check if the click happened at the current shell +#:: prompt and if so, move the cursor to the click location. Note +#:: that this requires shell-integration to work. + +#: Click the link under the mouse or move the cursor even when grabbed + +mouse_map shift+left click grabbed,ungrabbed mouse_handle_click selection link prompt + +#:: Same as above, except that the action is performed even when the +#:: mouse is grabbed by the program running in the terminal. + +#: Click the link under the mouse cursor + +mouse_map ctrl+shift+left release grabbed,ungrabbed mouse_handle_click link + +#:: Variant with ctrl+shift is present because the simple click based +#:: version has an unavoidable delay of click_interval, to +#:: disambiguate clicks from double clicks. + +#: Discard press event for link click + +mouse_map ctrl+shift+left press grabbed discard_event + +#:: Prevent this press event from being sent to the program that has +#:: grabbed the mouse, as the corresponding release event is used to +#:: open a URL. + +#: Paste from the primary selection + +mouse_map middle release ungrabbed paste_from_selection + +#: Start selecting text + +mouse_map left press ungrabbed mouse_selection normal + +#: Start selecting text in a rectangle + +mouse_map ctrl+alt+left press ungrabbed mouse_selection rectangle + +#: Select a word + +mouse_map left doublepress ungrabbed mouse_selection word + +#: Select a line + +mouse_map left triplepress ungrabbed mouse_selection line + +#:: Select the entire line + +#: Select line from point + +mouse_map ctrl+alt+left triplepress ungrabbed mouse_selection line_from_point + +#:: Select from the clicked point to the end of the line + +#: Extend the current selection + +mouse_map right press ungrabbed mouse_selection extend + +#:: If you want only the end of the selection to be moved instead of +#:: the nearest boundary, use move-end instead of extend. + +#: Paste from the primary selection even when grabbed + +mouse_map shift+middle release ungrabbed,grabbed paste_selection +mouse_map shift+middle press grabbed discard_event + +#: Start selecting text even when grabbed + +mouse_map shift+left press ungrabbed,grabbed mouse_selection normal + +#: Start selecting text in a rectangle even when grabbed + +mouse_map ctrl+shift+alt+left press ungrabbed,grabbed mouse_selection rectangle + +#: Select a word even when grabbed + +mouse_map shift+left doublepress ungrabbed,grabbed mouse_selection word + +#: Select a line even when grabbed + +mouse_map shift+left triplepress ungrabbed,grabbed mouse_selection line + +#:: Select the entire line + +#: Select line from point even when grabbed + +mouse_map ctrl+shift+alt+left triplepress ungrabbed,grabbed mouse_selection line_from_point + +#:: Select from the clicked point to the end of the line + +#: Extend the current selection even when grabbed + +mouse_map shift+right press ungrabbed,grabbed mouse_selection extend + +#: Show clicked command output in pager + +mouse_map ctrl+shift+right press ungrabbed mouse_show_command_output + +#:: Requires https://sw.kovidgoyal.net/kitty/shell-integration/ to +#:: work + +#: }}} + +#: }}} + +#: Performance tuning {{{ + +repaint_delay 10 + +#: Delay (in milliseconds) between screen updates. Decreasing it, +#: increases frames-per-second (FPS) at the cost of more CPU usage. +#: The default value yields ~100 FPS which is more than sufficient for +#: most uses. Note that to actually achieve 100 FPS you have to either +#: set sync_to_monitor to no or use a monitor with a high refresh +#: rate. Also, to minimize latency when there is pending input to be +#: processed, repaint_delay is ignored. + +input_delay 3 + +#: Delay (in milliseconds) before input from the program running in +#: the terminal is processed. Note that decreasing it will increase +#: responsiveness, but also increase CPU usage and might cause flicker +#: in full screen programs that redraw the entire screen on each loop, +#: because kitty is so fast that partial screen updates will be drawn. + +sync_to_monitor yes + +#: Sync screen updates to the refresh rate of the monitor. This +#: prevents tearing (https://en.wikipedia.org/wiki/Screen_tearing) +#: when scrolling. However, it limits the rendering speed to the +#: refresh rate of your monitor. With a very high speed mouse/high +#: keyboard repeat rate, you may notice some slight input latency. If +#: so, set this to no. + +#: }}} + +#: Terminal bell {{{ + +enable_audio_bell no + +#: Enable/disable the audio bell. Useful in environments that require +#: silence. + +visual_bell_duration 0.0 + +#: Visual bell duration. Flash the screen when a bell occurs for the +#: specified number of seconds. Set to zero to disable. + +visual_bell_color none + +#: The color used by visual bell. Set to none will fall back to +#: selection background color. If you feel that the visual bell is too +#: bright, you can set it to a darker color. + +window_alert_on_bell yes + +#: Request window attention on bell. Makes the dock icon bounce on +#: macOS or the taskbar flash on linux. + +bell_on_tab yes + +#: Show a bell symbol on the tab if a bell occurs in one of the +#: windows in the tab and the window is not the currently focused +#: window + +command_on_bell none + +#: Program to run when a bell occurs. The environment variable +#: KITTY_CHILD_CMDLINE can be used to get the program running in the +#: window in which the bell occurred. + +bell_path none + +#: Path to a sound file to play as the bell sound. If set to none, the +#: system default bell sound is used. Must be in a format supported by +#: the operating systems sound API, such as WAV or OGA on Linux +#: (libcanberra) or AIFF, MP3 or WAV on macOS (NSSound) + +#: }}} + +#: Window layout {{{ + +remember_window_size yes +initial_window_width 640 +initial_window_height 400 + +#: If enabled, the window size will be remembered so that new +#: instances of kitty will have the same size as the previous +#: instance. If disabled, the window will initially have size +#: configured by initial_window_width/height, in pixels. You can use a +#: suffix of "c" on the width/height values to have them interpreted +#: as number of cells instead of pixels. + +enabled_layouts * + +#: The enabled window layouts. A comma separated list of layout names. +#: The special value all means all layouts. The first listed layout +#: will be used as the startup layout. Default configuration is all +#: layouts in alphabetical order. For a list of available layouts, see +#: the https://sw.kovidgoyal.net/kitty/overview/#layouts. + +window_resize_step_cells 2 +window_resize_step_lines 2 + +#: The step size (in units of cell width/cell height) to use when +#: resizing kitty windows in a layout with the keyboard +#: (start_resizing_window). The cells value is used for horizontal +#: resizing and the lines value for vertical resizing. + +window_border_width 0.5pt + +#: The width of window borders. Can be either in pixels (px) or pts +#: (pt). Values in pts will be rounded to the nearest number of pixels +#: based on screen resolution. If not specified the unit is assumed to +#: be pts. Note that borders are displayed only when more than one +#: window is visible. They are meant to separate multiple windows. + +draw_minimal_borders yes + +#: Draw only the minimum borders needed. This means that only the +#: minimum needed borders for inactive windows are drawn. That is only +#: the borders that separate the inactive window from a neighbor. Note +#: that setting a non-zero window margin overrides this and causes all +#: borders to be drawn. + +window_margin_width 0 + +#: The window margin (in pts) (blank area outside the border). A +#: single value sets all four sides. Two values set the vertical and +#: horizontal sides. Three values set top, horizontal and bottom. Four +#: values set top, right, bottom and left. + +single_window_margin_width -1 + +#: The window margin (in pts) to use when only a single window is +#: visible. Negative values will cause the value of +#: window_margin_width to be used instead. A single value sets all +#: four sides. Two values set the vertical and horizontal sides. Three +#: values set top, horizontal and bottom. Four values set top, right, +#: bottom and left. + +window_padding_width 0 + +#: The window padding (in pts) (blank area between the text and the +#: window border). A single value sets all four sides. Two values set +#: the vertical and horizontal sides. Three values set top, horizontal +#: and bottom. Four values set top, right, bottom and left. + +placement_strategy center + +#: When the window size is not an exact multiple of the cell size, the +#: cell area of the terminal window will have some extra padding on +#: the sides. You can control how that padding is distributed with +#: this option. Using a value of center means the cell area will be +#: placed centrally. A value of top-left means the padding will be on +#: only the bottom and right edges. + +active_border_color #00ff00 + +#: The color for the border of the active window. Set this to none to +#: not draw borders around the active window. + +inactive_border_color #cccccc + +#: The color for the border of inactive windows + +bell_border_color #ff5a00 + +#: The color for the border of inactive windows in which a bell has +#: occurred + +inactive_text_alpha 1.0 + +#: Fade the text in inactive windows by the specified amount (a number +#: between zero and one, with zero being fully faded). + +hide_window_decorations no + +#: Hide the window decorations (title-bar and window borders) with +#: yes. On macOS, titlebar-only can be used to only hide the titlebar. +#: Whether this works and exactly what effect it has depends on the +#: window manager/operating system. Note that the effects of changing +#: this setting when reloading config are undefined. + +window_logo_path none + +#: Path to a logo image. Must be in PNG format. Relative paths are +#: interpreted relative to the kitty config directory. The logo is +#: displayed in a corner of every kitty window. The position is +#: controlled by window_logo_position. Individual windows can be +#: configured to have different logos either using the launch function +#: or the remote-control facility. + +window_logo_position bottom-right + +#: Where to position the window logo in the window. The value can be +#: one of: top-left, top, top-right, left, center, right, bottom-left, +#: bottom, bottom-right. + +window_logo_alpha 0.5 + +#: The amount the logo should be faded into the background. With zero +#: being fully faded and one being fully opaque. + +resize_debounce_time 0.1 + +#: The time (in seconds) to wait before redrawing the screen when a +#: resize event is received. On platforms such as macOS, where the +#: operating system sends events corresponding to the start and end of +#: a resize, this number is ignored. + +resize_draw_strategy static + +#: Choose how kitty draws a window while a resize is in progress. A +#: value of static means draw the current window contents, mostly +#: unchanged. A value of scale means draw the current window contents +#: scaled. A value of blank means draw a blank window. A value of size +#: means show the window size in cells. + +resize_in_steps no + +#: Resize the OS window in steps as large as the cells, instead of +#: with the usual pixel accuracy. Combined with an +#: initial_window_width and initial_window_height in number of cells, +#: this option can be used to keep the margins as small as possible +#: when resizing the OS window. Note that this does not currently work +#: on Wayland. + +visual_window_select_characters 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ + +#: The list of characters to use for visual window selection (for +#: example for selecting a window to focus with focus_visible_window). +#: The value should be a series of unique numbers or alphabets, case +#: insensitive, from the set [0-9A-Z]. Specify your preference as a +#: string of characters. + +confirm_os_window_close 0 + +#: Ask for confirmation when closing an OS window or a Tab with at +#: least this number of kitty windows in it by window manager (e.g. +#: clicking the window close button or pressing the Operating system +#: shortcut to close windows) or by the close_tab action. A value of +#: zero disables confirmation. This confirmation also applies to +#: requests to quit the entire application (all OS windows, via the +#: quit action). Negative values are converted to positive ones, +#: however, with https://sw.kovidgoyal.net/kitty/shell-integration/ +#: enabled, using negative values means windows sitting at a shell +#: prompt are not counted, only windows where some command is +#: currently running. Note that if you want confirmation when closing +#: individual windows, you can map the +#: https://sw.kovidgoyal.net/kitty/actions/#close-window-with- +#: confirmation action. + +#: }}} + +#: Tab bar {{{ + +tab_bar_edge bottom + +#: Which edge to show the tab bar on, top or bottom + +tab_bar_margin_width 0.0 + +#: The margin to the left and right of the tab bar (in pts) + +tab_bar_margin_height 0.0 0.0 + +#: The margin above and below the tab bar (in pts). The first number +#: is the margin between the edge of the OS Window and the tab bar and +#: the second number is the margin between the tab bar and the +#: contents of the current tab. + +tab_bar_style fade + +#: The tab bar style, can be one of: + +#: fade +#: Each tab's edges fade into the background color (see tab_fade) +#: slant +#: Tabs look like the tabs in a physical file +#: separator +#: Tabs are separated by a configurable separator (see tab_separator) +#: powerline +#: Tabs are shown as a continuous line with "fancy" separators +#: (see tab_powerline_style) +#: custom +#: A user-supplied Python function called draw_tab is loaded from the file +#: tab_bar.py in the kitty config directory. For examples of how to +#: write such a function, see the functions named draw_tab_with_* in +#: kitty's source code: kitty/tab_bar.py. +#: hidden +#: The tab bar is hidden. If you use this, you might want to create a +#: mapping for the https://sw.kovidgoyal.net/kitty/actions/#select-tab +#: action which presents you with a list of tabs and allows for easy +#: switching to a tab. + +tab_bar_align left + +#: The horizontal alignment of the tab bar, can be one of: left, +#: center, or right. + +tab_bar_min_tabs 2 + +#: The minimum number of tabs that must exist before the tab bar is +#: shown + +tab_switch_strategy previous + +#: The algorithm to use when switching to a tab when the current tab +#: is closed. The default of previous will switch to the last used +#: tab. A value of left will switch to the tab to the left of the +#: closed tab. A value of right will switch to the tab to the right of +#: the closed tab. A value of last will switch to the right-most tab. + +tab_fade 0.25 0.5 0.75 1 + +#: Control how each tab fades into the background when using fade for +#: the tab_bar_style. Each number is an alpha (between zero and one) +#: that controls how much the corresponding cell fades into the +#: background, with zero being no fade and one being full fade. You +#: can change the number of cells used by adding/removing entries to +#: this list. + +tab_separator " ┇" + +#: The separator between tabs in the tab bar when using separator as +#: the tab_bar_style. + +tab_powerline_style angled + +#: The powerline separator style between tabs in the tab bar when +#: using powerline as the tab_bar_style, can be one of: angled, +#: slanted, or round. + +tab_activity_symbol none + +#: Some text or a unicode symbol to show on the tab if a window in the +#: tab that does not have focus has some activity. If you want to use +#: leading or trailing spaces surround the text with quotes. + +tab_title_template "{title}" + +#: A template to render the tab title. The default just renders the +#: title. If you wish to include the tab-index as well, use something +#: like: {index}: {title}. Useful if you have shortcuts mapped for +#: goto_tab N. If you prefer to see the index as a superscript, use +#: {sup.index}. In addition you can use {layout_name} for the current +#: layout name, {num_windows} for the number of windows in the tab and +#: {num_window_groups} for the number of window groups (not counting +#: overlay windows) in the tab. Note that formatting is done by +#: Python's string formatting machinery, so you can use, for instance, +#: {layout_name[:2].upper()} to show only the first two letters of the +#: layout name, upper-cased. If you want to style the text, you can +#: use styling directives, for example: +#: {fmt.fg.red}red{fmt.fg.default}normal{fmt.bg._00FF00}green +#: bg{fmt.bg.tab}. Similarly, for bold and italic: +#: {fmt.bold}bold{fmt.nobold}normal{fmt.italic}italic{fmt.noitalic}. + +active_tab_title_template none + +#: Template to use for active tabs, if not specified falls back to +#: tab_title_template. + +active_tab_foreground #000 +active_tab_background #eee +active_tab_font_style bold-italic +inactive_tab_foreground #444 +inactive_tab_background #999 +inactive_tab_font_style normal + +#: Tab bar colors and styles + +tab_bar_background none + +#: Background color for the tab bar. Defaults to using the terminal +#: background color. + +tab_bar_margin_color none + +#: Color for the tab bar margin area. Defaults to using the terminal +#: background color. + +#: }}} + +#: Color scheme {{{ + +foreground #fbf1c7 +background #1d2021 + +#: The foreground and background colors + +background_opacity 1.0 + +#: The opacity of the background. A number between 0 and 1, where 1 is +#: opaque and 0 is fully transparent. This will only work if +#: supported by the OS (for instance, when using a compositor under +#: X11). Note that it only sets the background color's opacity in +#: cells that have the same background color as the default terminal +#: background. This is so that things like the status bar in vim, +#: powerline prompts, etc. still look good. But it means that if you +#: use a color theme with a background color in your editor, it will +#: not be rendered as transparent. Instead you should change the +#: default background color in your kitty config and not use a +#: background color in the editor color scheme. Or use the escape +#: codes to set the terminals default colors in a shell script to +#: launch your editor. Be aware that using a value less than 1.0 is a +#: (possibly significant) performance hit. If you want to dynamically +#: change transparency of windows set dynamic_background_opacity to +#: yes (this is off by default as it has a performance cost). Changing +#: this setting when reloading the config will only work if +#: dynamic_background_opacity was enabled in the original config. + +background_image none + +#: Path to a background image. Must be in PNG format. + +background_image_layout tiled + +#: Whether to tile, scale or clamp the background image. The value can +#: be one of tiled, mirror-tiled, scaled, clamped. + +background_image_linear no + +#: When background image is scaled, whether linear interpolation +#: should be used. + +dynamic_background_opacity no + +#: Allow changing of the background_opacity dynamically, using either +#: keyboard shortcuts (increase_background_opacity and +#: decrease_background_opacity) or the remote control facility. +#: Changing this setting by reloading the config is not supported. + +background_tint 0.0 + +#: How much to tint the background image by the background color. The +#: tint is applied only under the text area, not margin/borders. Makes +#: it easier to read the text. Tinting is done using the current +#: background color for each window. This setting applies only if +#: background_opacity is set and transparent windows are supported or +#: background_image is set. + +dim_opacity 0.75 + +#: How much to dim text that has the DIM/FAINT attribute set. One +#: means no dimming and zero means fully dimmed (i.e. invisible). + +selection_foreground #000000 +selection_background #fffacd + +#: The foreground and background colors for text selected with the +#: mouse. Setting both of these to none will cause a "reverse video" +#: effect for selections, where the selection will be the cell text +#: color and the text will become the cell background color. Setting +#: only selection_foreground to none will cause the foreground color +#: to be used unchanged. Note that these colors can be overridden by +#: the program running in the terminal. + +#: The color table {{{ + +#: The 256 terminal colors. There are 8 basic colors, each color has a +#: dull and bright version, for the first 16 colors. You can set the +#: remaining 240 colors as color16 to color255. + +color0 #1d2021 +color8 #767676 + +#: black + +color1 #cc0403 +color9 #f2201f + +#: red + +color2 #19cb00 +color10 #23fd00 + +#: green + +color3 #cecb00 +color11 #fffd00 + +#: yellow + +color4 #0d73cc +color12 #1a8fff + +#: blue + +color5 #cb1ed1 +color13 #fd28ff + +#: magenta + +color6 #0dcdcd +color14 #14ffff + +#: cyan + +color7 #dddddd +color15 #ffffff + +#: white + +mark1_foreground black + +#: Color for marks of type 1 + +mark1_background #98d3cb + +#: Color for marks of type 1 (light steel blue) + +mark2_foreground black + +#: Color for marks of type 2 + +mark2_background #f2dcd3 + +#: Color for marks of type 1 (beige) + +mark3_foreground black + +#: Color for marks of type 3 + +mark3_background #f274bc + +#: Color for marks of type 3 (violet) + +#: }}} + +#: }}} + +#: Advanced {{{ + +shell . + +#: The shell program to execute. The default value of . means to use +#: whatever shell is set as the default shell for the current user. +#: Note that on macOS if you change this, you might need to add +#: --login and --interactive to ensure that the shell starts in +#: interactive mode and reads its startup rc files. + +editor . + +#: The terminal editor (such as ``vim`` or ``nano``) to use when +#: editing the kitty config file or similar tasks. + +#: The default value of . means to use the environment variables +#: VISUAL and EDITOR in that order. If these variables aren't set, +#: kitty will run your shell (``$SHELL -l -i -c env``) to see if your +#: shell config files set VISUAL or EDITOR. If that doesn't work, +#: kitty will cycle through various known editors (``vim``, ``emacs``, +#: etc) and take the first one that exists on your system. + +close_on_child_death no + +#: Close the window when the child process (shell) exits. If no (the +#: default), the terminal will remain open when the child exits as +#: long as there are still processes outputting to the terminal (for +#: example disowned or backgrounded processes). If yes, the window +#: will close as soon as the child process exits. Note that setting it +#: to yes means that any background processes still using the terminal +#: can fail silently because their stdout/stderr/stdin no longer work. + +allow_remote_control yes + +#: Allow other programs to control kitty. If you turn this on other +#: programs can control all aspects of kitty, including sending text +#: to kitty windows, opening new windows, closing windows, reading the +#: content of windows, etc. Note that this even works over ssh +#: connections. You can chose to either allow any program running +#: within kitty to control it, with yes or only programs that connect +#: to the socket specified with the kitty --listen-on command line +#: option, if you use the value socket-only. The latter is useful if +#: you want to prevent programs running on a remote computer over ssh +#: from controlling kitty. Reloading the config will not affect this +#: setting. + +listen_on none + +#: Tell kitty to listen to the specified unix/tcp socket for remote +#: control connections. Note that this will apply to all kitty +#: instances. It can be overridden by the kitty --listen-on command +#: line flag. This option accepts only UNIX sockets, such as +#: unix:${TEMP}/mykitty or (on Linux) unix:@mykitty. Environment +#: variables are expanded. If {kitty_pid} is present then it is +#: replaced by the PID of the kitty process, otherwise the PID of the +#: kitty process is appended to the value, with a hyphen. This option +#: is ignored unless you also set allow_remote_control to enable +#: remote control. See the help for kitty --listen-on for more +#: details. Changing this option by reloading the config is not +#: supported. + +env + +#: Specify environment variables to set in all child processes. Note +#: that environment variables are expanded recursively, so if you +#: use:: + +#: env MYVAR1=a +#: env MYVAR2=${MYVAR1}/${HOME}/b + +#: The value of MYVAR2 will be a//b. Using +#: VAR= will set it to the empty string and using just VAR will delete +#: the variable from the child process' environment. + +watcher + +#: Path to python file which will be loaded for +#: https://sw.kovidgoyal.net/kitty/launch/#watchers. Can be specified +#: more than once to load multiple watchers. The watchers will be +#: added to every kitty window. Relative paths are resolved relative +#: to the kitty config directory. Note that reloading the config will +#: only affect windows created after the reload. + +exe_search_path + +#: Control where kitty looks to find programs to run. The default +#: search order is: First search the system wide PATH, then +#: ~/.local/bin and ~/bin. If not still not found, the PATH defined in +#: the login shell after sourcing all its startup files is tried. +#: Finally, if present, the PATH in the env option is tried. + +#: This option allows you to prepend, append, or remove paths from +#: this search order. It can be specified multiple times for multiple +#: paths. A simple path will be prepended to the search order. A path +#: that starts with the + sign will be append to the search order, +#: after ~/bin above. A path that starts with the - sign will be +#: removed from the entire search order. For example:: + +#: exe_search_path /some/prepended/path +#: exe_search_path +/some/appended/path +#: exe_search_path -/some/excluded/path + +update_check_interval 0 + +#: Periodically check if an update to kitty is available. If an update +#: is found a system notification is displayed informing you of the +#: available update. The default is to check every 24 hrs, set to zero +#: to disable. Changing this option by reloading the config is not +#: supported. + +startup_session none + +#: Path to a session file to use for all kitty instances. Can be +#: overridden by using the kitty --session command line option for +#: individual instances. See +#: https://sw.kovidgoyal.net/kitty/overview/#startup-sessions in the +#: kitty documentation for details. Note that relative paths are +#: interpreted with respect to the kitty config directory. Environment +#: variables in the path are expanded. Changing this option by +#: reloading the config is not supported. + +clipboard_control write-clipboard write-primary read-clipboard-ask read-primary-ask + +#: Allow programs running in kitty to read and write from the +#: clipboard. You can control exactly which actions are allowed. The +#: set of possible actions is: write-clipboard read-clipboard write- +#: primary read-primary read-clipboard-ask read-primary-ask. The +#: default is to allow writing to the clipboard and primary selection +#: and to ask for permission when a program tries to read from the +#: clipboard. Note that disabling the read confirmation is a security +#: risk as it means that any program, even one running on a remote +#: server via SSH can read your clipboard. See also +#: clipboard_max_size. + +clipboard_max_size 64 + +#: The maximum size (in MB) of data from programs running in kitty +#: that will be stored for writing to the system clipboard. See also +#: clipboard_control. A value of zero means no size limit is applied. + +file_transfer_confirmation_bypass + +#: A password, that can be supplied to the file transfer kitten to +#: skip the transfer confirmation prompt. This should only be used +#: when initiating transfers from trusted computers, over trusted +#: networks or encrypted transports, as it allows programs running on +#: the remote machine to read/write to the local filesystem, without +#: permission. + +allow_hyperlinks yes + +#: Process hyperlink (OSC 8) escape sequences. If disabled OSC 8 +#: escape sequences are ignored. Otherwise they become clickable +#: links, that you can click by with the mouse or the hints kitten +#: . The special value of ``ask`` means that kitty +#: will ask before opening the link when clicked. + +shell_integration no-cursor + +#: Enable shell integration on supported shells. This enables features +#: such as jumping to previous prompts, browsing the output of the +#: previous command in a pager, etc. on supported shells. Set to +#: ``disabled`` to turn off shell integration, completely. See +#: https://sw.kovidgoyal.net/kitty/shell-integration/ for details. + +term xterm-kitty + +#: The value of the TERM environment variable to set. Changing this +#: can break many terminal programs, only change it if you know what +#: you are doing, not because you read some advice on Stack Overflow +#: to change it. The TERM variable is used by various programs to get +#: information about the capabilities and behavior of the terminal. If +#: you change it, depending on what programs you run, and how +#: different the terminal you are changing it to is, various things +#: from key-presses, to colors, to various advanced features may not +#: work. Changing this option by reloading the config will only affect +#: newly created windows. + +#: }}} + +#: OS specific tweaks {{{ + +wayland_titlebar_color system + +#: Change the color of the kitty window's titlebar on Wayland systems +#: with client side window decorations such as GNOME. A value of +#: system means to use the default system color, a value of background +#: means to use the background color of the currently active window +#: and finally you can use an arbitrary color, such as #12af59 or red. + +linux_display_server auto + +#: Choose between Wayland and X11 backends. By default, an appropriate +#: backend based on the system state is chosen automatically. Set it +#: to x11 or wayland to force the choice. Changing this setting by +#: reloading the config is not supported. + +#: }}} + +#: Keyboard shortcuts {{{ + +#: Keys are identified simply by their lowercase unicode characters. +#: For example: ``a`` for the A key, ``[`` for the left square bracket +#: key, etc. For functional keys, such as ``Enter or Escape`` the +#: names are present at https://sw.kovidgoyal.net/kitty/keyboard- +#: protocol/#functional-key-definitions. For a list of modifier names, +#: see: GLFW mods + +#: On Linux you can also use XKB key names to bind keys that are not +#: supported by GLFW. See XKB keys +#: for a list of key names. The name to use is the part +#: after the XKB_KEY_ prefix. Note that you can only use an XKB key +#: name for keys that are not known as GLFW keys. + +#: Finally, you can use raw system key codes to map keys, again only +#: for keys that are not known as GLFW keys. To see the system key +#: code for a key, start kitty with the kitty --debug-input option. +#: Then kitty will output some debug text for every key event. In that +#: text look for ``native_code`` the value of that becomes the key +#: name in the shortcut. For example: + +#: .. code-block:: none + +#: on_key_input: glfw key: 65 native_code: 0x61 action: PRESS mods: 0x0 text: 'a' + +#: Here, the key name for the A key is 0x61 and you can use it with:: + +#: map ctrl+0x61 something + +#: to map ctrl+a to something. + +#: You can use the special action no_op to unmap a keyboard shortcut +#: that is assigned in the default configuration:: + +#: map kitty_mod+space no_op + +#: If you would like kitty to completely ignore a key event, not even +#: sending it to the program running in the terminal, map it to +#: discard_event:: + +#: map kitty_mod+f1 discard_event + +#: You can combine multiple actions to be triggered by a single +#: shortcut, using the syntax below:: + +#: map key combine action1 action2 action3 ... + +#: For example:: + +#: map kitty_mod+e combine : new_window : next_layout + +#: this will create a new window and switch to the next available +#: layout + +#: You can use multi-key shortcuts using the syntax shown below:: + +#: map key1>key2>key3 action + +#: For example:: + +#: map ctrl+f>2 set_font_size 20 + +#: The full list of actions that can be mapped to key presses is +#: available here . + +kitty_mod ctrl+shift + +#: The value of kitty_mod is used as the modifier for all default +#: shortcuts, you can change it in your kitty.conf to change the +#: modifiers for all the default shortcuts. + +clear_all_shortcuts no + +#: You can have kitty remove all shortcut definition seen up to this +#: point. Useful, for instance, to remove the default shortcuts. + +action_alias + +#: E.g. action_alias launch_tab launch --type=tab --cwd=current + +#: Define aliases to avoid repeating the same options in multiple +#: mappings. Aliases can be defined for any action. Aliases are +#: expanded recursively. For example, the above alias allows you to +#: create mappings to launch a new tab in the current working +#: directory without duplication:: + +#: map f1 launch_tab vim +#: map f2 launch_tab emacs + +#: Similarly, to alias kitten invocation:: + +#: action_alias hints kitten hints --hints-offset=0 + +kitten_alias + +#: E.g. kitten_alias hints hints --hints-offset=0 + +#: Like action_alias above but, specifically for kittens. Generally, +#: prefer to use action_alias. This option is a legacy version, +#: present for backwards compatibility. It causes all invocations of +#: the aliased kitten to be substituted. So the example above will +#: cause all invocations of the hints kitten to have the --hints- +#: offset=0 option applied. + +#: Clipboard {{{ + +#: Copy to clipboard + +map kitty_mod+c copy_to_clipboard + +#:: There is also a copy_or_interrupt action that can be optionally +#:: mapped to Ctrl+c. It will copy only if there is a selection and +#:: send an interrupt otherwise. Similarly, +#:: copy_and_clear_or_interrupt will copy and clear the selection or +#:: send an interrupt if there is no selection. + +#: Paste from clipboard + +map kitty_mod+v paste_from_clipboard + +#: Paste from selection + +map kitty_mod+s paste_from_selection +map shift+insert paste_from_selection + +#: Pass selection to program + +map kitty_mod+o pass_selection_to_program + +#:: You can also pass the contents of the current selection to any +#:: program using pass_selection_to_program. By default, the system's +#:: open program is used, but you can specify your own, the selection +#:: will be passed as a command line argument to the program, for +#:: example:: + +#:: map kitty_mod+o pass_selection_to_program firefox + +#:: You can pass the current selection to a terminal program running +#:: in a new kitty window, by using the @selection placeholder:: + +#:: map kitty_mod+y new_window less @selection + +#: }}} + +#: Scrolling {{{ + +#: Scroll line up + +map kitty_mod+up scroll_line_up +map kitty_mod+k scroll_line_up +map opt+cmd+page_up scroll_line_up +map cmd+up scroll_line_up + +#: Scroll line down + +map kitty_mod+down scroll_line_down +map kitty_mod+j scroll_line_down +map opt+cmd+page_down scroll_line_down +map cmd+down scroll_line_down + +#: Scroll page up + +map kitty_mod+page_up scroll_page_up +map cmd+page_up scroll_page_up + +#: Scroll page down + +map kitty_mod+page_down scroll_page_down +map cmd+page_down scroll_page_down + +#: Scroll to top + +map kitty_mod+home scroll_home +map cmd+home scroll_home + +#: Scroll to bottom + +map kitty_mod+end scroll_end +map cmd+end scroll_end + +#: Scroll to previous shell prompt + +map kitty_mod+z scroll_to_prompt -1 + +#:: Use a parameter of zero for scroll_to_prompt to scroll to the +#:: last jumped to or the last clicked position. Requires +#:: https://sw.kovidgoyal.net/kitty/shell-integration/ to work. + +#: Scroll to next shell prompt + +map kitty_mod+x scroll_to_prompt 1 + +#: Browse scrollback buffer in pager + +map kitty_mod+h show_scrollback + +#:: You can pipe the contents of the current screen + history buffer +#:: as STDIN to an arbitrary program using the ``launch`` function. +#:: For example, the following opens the scrollback buffer in less in +#:: an overlay window:: + +#:: map f1 launch --stdin-source=@screen_scrollback --stdin-add-formatting --type=overlay less +G -R + +#:: For more details on piping screen and buffer contents to external +#:: programs, see launch. + +#: Browse output of the last shell command in pager + +map kitty_mod+g show_last_command_output + +#:: You can also define additional shortcuts to get the command +#:: output. For example, to get the first command output on screen:: + +#:: map f1 show_first_command_output_on_screen + +#:: To get the command output that was last accessed by a keyboard +#:: action or mouse action:: + +#:: map f1 show_last_visited_command_output + +#:: You can pipe the output of the last command run in the shell +#:: using the launch function. For example, the following opens the +#:: output in less in an overlay window:: + +#:: map f1 launch --stdin-source=@last_cmd_output --stdin-add-formatting --type=overlay less +G -R + +#:: To get the output of the first command on the screen, use +#:: @first_cmd_output_on_screen. To get the output of the last jumped +#:: to command, use @last_visited_cmd_output. + +#:: Requires https://sw.kovidgoyal.net/kitty/shell-integration/ to +#:: work. + +#: }}} + +#: Window management {{{ + +#: New window + +map kitty_mod+enter new_window +map cmd+enter new_window + +#:: You can open a new window running an arbitrary program, for +#:: example:: + +#:: map kitty_mod+y launch mutt + +#:: You can open a new window with the current working directory set +#:: to the working directory of the current window using:: + +#:: map ctrl+alt+enter launch --cwd=current + +#:: You can open a new window that is allowed to control kitty via +#:: the kitty remote control facility by prefixing the command line +#:: with @. Any programs running in that window will be allowed to +#:: control kitty. For example:: + +#:: map ctrl+enter launch --allow-remote-control some_program + +#:: You can open a new window next to the currently active window or +#:: as the first window, with:: + +#:: map ctrl+n launch --location=neighbor some_program +#:: map ctrl+f launch --location=first some_program + +#:: For more details, see launch. + +#: New OS window + +map kitty_mod+n new_os_window +map cmd+n new_os_window + +#:: Works like new_window above, except that it opens a top level OS +#:: kitty window. In particular you can use new_os_window_with_cwd to +#:: open a window with the current working directory. + +#: Close window + +map kitty_mod+w close_window +map shift+cmd+d close_window + +#: Next window + +map kitty_mod+] next_window + +#: Previous window + +map kitty_mod+[ previous_window + +#: Move window forward + +map kitty_mod+f move_window_forward + +#: Move window backward + +map kitty_mod+b move_window_backward + +#: Move window to top + +map kitty_mod+` move_window_to_top + +#: Start resizing window + +map kitty_mod+r start_resizing_window +map cmd+r start_resizing_window + +#: First window + +map kitty_mod+1 first_window +map cmd+1 first_window + +#: Second window + +map kitty_mod+2 second_window +map cmd+2 second_window + +#: Third window + +map kitty_mod+3 third_window +map cmd+3 third_window + +#: Fourth window + +map kitty_mod+4 fourth_window +map cmd+4 fourth_window + +#: Fifth window + +map kitty_mod+5 fifth_window +map cmd+5 fifth_window + +#: Sixth window + +map kitty_mod+6 sixth_window +map cmd+6 sixth_window + +#: Seventh window + +map kitty_mod+7 seventh_window +map cmd+7 seventh_window + +#: Eight window + +map kitty_mod+8 eighth_window +map cmd+8 eighth_window + +#: Ninth window + +map kitty_mod+9 ninth_window +map cmd+9 ninth_window + +#: Tenth window + +map kitty_mod+0 tenth_window + +#: Visually select focus window + +map kitty_mod+f7 focus_visible_window + +#: Visually swap window with another + +map kitty_mod+f8 swap_with_window + +#: }}} + +#: Tab management {{{ + +#: Next tab + +map kitty_mod+right next_tab +map shift+cmd+] next_tab +map ctrl+tab next_tab + +#: Previous tab + +map kitty_mod+left previous_tab +map shift+cmd+[ previous_tab +map ctrl+shift+tab previous_tab + +#: New tab + +map kitty_mod+t new_tab +map cmd+t new_tab + +#: Close tab + +map kitty_mod+q close_tab +map cmd+w close_tab + +#: Close OS window + +map shift+cmd+w close_os_window + +#: Move tab forward + +map kitty_mod+. move_tab_forward + +#: Move tab backward + +map kitty_mod+, move_tab_backward + +#: Set tab title + +map kitty_mod+alt+t set_tab_title +map shift+cmd+i set_tab_title + + +#: You can also create shortcuts to go to specific tabs, with 1 being +#: the first tab, 2 the second tab and -1 being the previously active +#: tab, and any number larger than the last tab being the last tab:: + +#: map ctrl+alt+1 goto_tab 1 +#: map ctrl+alt+2 goto_tab 2 + +#: Just as with new_window above, you can also pass the name of +#: arbitrary commands to run when using new_tab and use +#: new_tab_with_cwd. Finally, if you want the new tab to open next to +#: the current tab rather than at the end of the tabs list, use:: + +#: map ctrl+t new_tab !neighbor [optional cmd to run] +#: }}} + +#: Layout management {{{ + +#: Next layout + +map kitty_mod+l next_layout + + +#: You can also create shortcuts to switch to specific layouts:: + +#: map ctrl+alt+t goto_layout tall +#: map ctrl+alt+s goto_layout stack + +#: Similarly, to switch back to the previous layout:: + +#: map ctrl+alt+p last_used_layout + +#: There is also a toggle layout function that switches to the named +#: layout or back to the previous layout if in the named layout. +#: Useful to temporarily "zoom" the active window by switching to the +#: stack layout:: + +#: map ctrl+alt+z toggle_layout stack +#: }}} + +#: Font sizes {{{ + +#: You can change the font size for all top-level kitty OS windows at +#: a time or only the current one. + +#: Increase font size + +map kitty_mod+equal change_font_size all +2.0 +map kitty_mod+plus change_font_size all +2.0 +map kitty_mod+kp_add change_font_size all +2.0 +map cmd+plus change_font_size all +2.0 +map cmd+equal change_font_size all +2.0 +map shift+cmd+equal change_font_size all +2.0 + +#: Decrease font size + +map kitty_mod+minus change_font_size all -2.0 +map kitty_mod+kp_subtract change_font_size all -2.0 +map cmd+minus change_font_size all -2.0 +map shift+cmd+minus change_font_size all -2.0 + +#: Reset font size + +map kitty_mod+backspace change_font_size all 0 +map cmd+0 change_font_size all 0 + + +#: To setup shortcuts for specific font sizes:: + +#: map kitty_mod+f6 change_font_size all 10.0 + +#: To setup shortcuts to change only the current OS window's font +#: size:: + +#: map kitty_mod+f6 change_font_size current 10.0 +#: }}} + +#: Select and act on visible text {{{ + +#: Use the hints kitten to select text and either pass it to an +#: external program or insert it into the terminal or copy it to the +#: clipboard. + +#: Open URL + +map kitty_mod+e open_url_with_hints + +#:: Open a currently visible URL using the keyboard. The program used +#:: to open the URL is specified in open_url_with. + +#: Insert selected path + +map kitty_mod+p>f kitten hints --type path --program - + +#:: Select a path/filename and insert it into the terminal. Useful, +#:: for instance to run git commands on a filename output from a +#:: previous git command. + +#: Open selected path + +map kitty_mod+p>shift+f kitten hints --type path + +#:: Select a path/filename and open it with the default open program. + +#: Insert selected line + +map kitty_mod+p>l kitten hints --type line --program - + +#:: Select a line of text and insert it into the terminal. Use for +#:: the output of things like: ls -1 + +#: Insert selected word + +map kitty_mod+p>w kitten hints --type word --program - + +#:: Select words and insert into terminal. + +#: Insert selected hash + +map kitty_mod+p>h kitten hints --type hash --program - + +#:: Select something that looks like a hash and insert it into the +#:: terminal. Useful with git, which uses sha1 hashes to identify +#:: commits + +#: Open the selected file at the selected line + +map kitty_mod+p>n kitten hints --type linenum + +#:: Select something that looks like filename:linenum and open it in +#:: vim at the specified line number. + +#: Open the selected hyperlink + +map kitty_mod+p>y kitten hints --type hyperlink + +#:: Select a hyperlink (i.e. a URL that has been marked as such by +#:: the terminal program, for example, by ls --hyperlink=auto). + + +#: The hints kitten has many more modes of operation that you can map +#: to different shortcuts. For a full description see kittens/hints. +#: }}} + +#: Miscellaneous {{{ + +#: Toggle fullscreen + +map kitty_mod+f11 toggle_fullscreen + +#: Toggle maximized + +map kitty_mod+f10 toggle_maximized + +#: Unicode input + +map kitty_mod+u kitten unicode_input +map ctrl+cmd+space kitten unicode_input + +#: Edit config file + +map kitty_mod+f2 edit_config_file +map cmd+, edit_config_file + +#: Open the kitty command shell + +map kitty_mod+escape kitty_shell window + +#:: Open the kitty shell in a new window/tab/overlay/os_window to +#:: control kitty using commands. + +#: Increase background opacity + +map kitty_mod+a>m set_background_opacity +0.1 + +#: Decrease background opacity + +map kitty_mod+a>l set_background_opacity -0.1 + +#: Make background fully opaque + +map kitty_mod+a>1 set_background_opacity 1 + +#: Reset background opacity + +map kitty_mod+a>d set_background_opacity default + +#: Reset the terminal + +map kitty_mod+delete clear_terminal reset active +map opt+cmd+r clear_terminal reset active + +#:: You can create shortcuts to clear/reset the terminal. For +#:: example:: + +#:: # Reset the terminal +#:: map kitty_mod+f9 clear_terminal reset active +#:: # Clear the terminal screen by erasing all contents +#:: map kitty_mod+f10 clear_terminal clear active +#:: # Clear the terminal scrollback by erasing it +#:: map kitty_mod+f11 clear_terminal scrollback active +#:: # Scroll the contents of the screen into the scrollback +#:: map kitty_mod+f12 clear_terminal scroll active + +#:: If you want to operate on all windows instead of just the current +#:: one, use all instead of active. + +#:: It is also possible to remap Ctrl+L to both scroll the current +#:: screen contents into the scrollback buffer and clear the screen, +#:: instead of just clearing the screen, for example, for ZSH add the +#:: following to ~/.zshrc: + +#:: .. code-block:: sh + +#:: scroll-and-clear-screen() { +#:: printf '\n%.0s' {1..$LINES} +#:: zle clear-screen +#:: } +#:: zle -N scroll-and-clear-screen +#:: bindkey '^l' scroll-and-clear-screen + +#: Reload kitty.conf + +map kitty_mod+f5 load_config_file +map ctrl+cmd+, load_config_file + +#:: Reload kitty.conf, applying any changes since the last time it +#:: was loaded. Note that a handful of settings cannot be dynamically +#:: changed and require a full restart of kitty. You can also map a +#:: keybinding to load a different config file, for example:: + +#:: map f5 load_config /path/to/alternative/kitty.conf + +#:: Note that all setting from the original kitty.conf are discarded, +#:: in other words the new conf settings *replace* the old ones. + +#: Debug kitty configuration + +map kitty_mod+f6 debug_config +map opt+cmd+, debug_config + +#:: Show details about exactly what configuration kitty is running +#:: with and its host environment. Useful for debugging issues. + +#: Send arbitrary text on key presses + +#:: E.g. map ctrl+shift+alt+h send_text all Hello World + +#:: You can tell kitty to send arbitrary (UTF-8) encoded text to the +#:: client program when pressing specified shortcut keys. For +#:: example:: + +#:: map ctrl+alt+a send_text all Special text + +#:: This will send "Special text" when you press the ctrl+alt+a key +#:: combination. The text to be sent is a python string literal so +#:: you can use escapes like \x1b to send control codes or \u21fb to +#:: send unicode characters (or you can just input the unicode +#:: characters directly as UTF-8 text). The first argument to +#:: send_text is the keyboard modes in which to activate the +#:: shortcut. The possible values are normal or application or kitty +#:: or a comma separated combination of them. The special keyword +#:: all means all modes. The modes normal and application refer to +#:: the DECCKM cursor key mode for terminals, and kitty refers to the +#:: special kitty extended keyboard protocol. + +#:: Another example, that outputs a word and then moves the cursor to +#:: the start of the line (same as pressing the Home key):: + +#:: map ctrl+alt+a send_text normal Word\x1b[H +#:: map ctrl+alt+a send_text application Word\x1bOH + +#: }}} + +#: }}} + + +#include Gruvbox Dark Hard.conf diff --git a/dot_config/kitty/open-actions.conf b/dot_config/kitty/open-actions.conf new file mode 100644 index 0000000..949e556 --- /dev/null +++ b/dot_config/kitty/open-actions.conf @@ -0,0 +1,10 @@ +# Open any file with a fragment in vim, fragments are generated +# by the hyperlink_grep kitten and nothing else so far. +protocol file +fragment_matches [0-9]+ +action launch --type=overlay vim +${FRAGMENT} ${FILE_PATH} + +# Open text files without fragments in the editor +protocol file +mime text/* +action launch --type=overlay nvim ${FILE_PATH} diff --git a/dot_config/kitty/private_Gruvbox Dark Hard.conf b/dot_config/kitty/private_Gruvbox Dark Hard.conf new file mode 100644 index 0000000..649473f --- /dev/null +++ b/dot_config/kitty/private_Gruvbox Dark Hard.conf @@ -0,0 +1,33 @@ +## name: Gruvbox Dark Hard +## author: Pavel Pertsev +## license: MIT/X11 +## upstream: https://raw.githubusercontent.com/gruvbox-community/gruvbox-contrib/master/kitty/gruvbox-dark-hard.conf + + +selection_foreground #ebdbb2 +selection_background #d65d0e + +background #1d2021 +foreground #ebdbb2 + +color0 #3c3836 +color1 #cc241d +color2 #98971a +color3 #d79921 +color4 #458588 +color5 #b16286 +color6 #689d6a +color7 #a89984 +color8 #928374 +color9 #fb4934 +color10 #b8bb26 +color11 #fabd2f +color12 #83a598 +color13 #d3869b +color14 #8ec07c +color15 #fbf1c7 + +cursor #bdae93 +cursor_text_color #665c54 + +url_color #458588 diff --git a/dot_config/nginx/fastcgi.conf b/dot_config/nginx/fastcgi.conf new file mode 100644 index 0000000..091738c --- /dev/null +++ b/dot_config/nginx/fastcgi.conf @@ -0,0 +1,26 @@ + +fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; +fastcgi_param QUERY_STRING $query_string; +fastcgi_param REQUEST_METHOD $request_method; +fastcgi_param CONTENT_TYPE $content_type; +fastcgi_param CONTENT_LENGTH $content_length; + +fastcgi_param SCRIPT_NAME $fastcgi_script_name; +fastcgi_param REQUEST_URI $request_uri; +fastcgi_param DOCUMENT_URI $document_uri; +fastcgi_param DOCUMENT_ROOT $document_root; +fastcgi_param SERVER_PROTOCOL $server_protocol; +fastcgi_param REQUEST_SCHEME $scheme; +fastcgi_param HTTPS $https if_not_empty; + +fastcgi_param GATEWAY_INTERFACE CGI/1.1; +fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; + +fastcgi_param REMOTE_ADDR $remote_addr; +fastcgi_param REMOTE_PORT $remote_port; +fastcgi_param SERVER_ADDR $server_addr; +fastcgi_param SERVER_PORT $server_port; +fastcgi_param SERVER_NAME $server_name; + +# PHP only, required if PHP was built with --enable-force-cgi-redirect +fastcgi_param REDIRECT_STATUS 200; diff --git a/dot_config/nginx/fastcgi_params b/dot_config/nginx/fastcgi_params new file mode 100644 index 0000000..28decb9 --- /dev/null +++ b/dot_config/nginx/fastcgi_params @@ -0,0 +1,25 @@ + +fastcgi_param QUERY_STRING $query_string; +fastcgi_param REQUEST_METHOD $request_method; +fastcgi_param CONTENT_TYPE $content_type; +fastcgi_param CONTENT_LENGTH $content_length; + +fastcgi_param SCRIPT_NAME $fastcgi_script_name; +fastcgi_param REQUEST_URI $request_uri; +fastcgi_param DOCUMENT_URI $document_uri; +fastcgi_param DOCUMENT_ROOT $document_root; +fastcgi_param SERVER_PROTOCOL $server_protocol; +fastcgi_param REQUEST_SCHEME $scheme; +fastcgi_param HTTPS $https if_not_empty; + +fastcgi_param GATEWAY_INTERFACE CGI/1.1; +fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; + +fastcgi_param REMOTE_ADDR $remote_addr; +fastcgi_param REMOTE_PORT $remote_port; +fastcgi_param SERVER_ADDR $server_addr; +fastcgi_param SERVER_PORT $server_port; +fastcgi_param SERVER_NAME $server_name; + +# PHP only, required if PHP was built with --enable-force-cgi-redirect +fastcgi_param REDIRECT_STATUS 200; diff --git a/dot_config/nginx/koi-utf b/dot_config/nginx/koi-utf new file mode 100644 index 0000000..e7974ff --- /dev/null +++ b/dot_config/nginx/koi-utf @@ -0,0 +1,109 @@ + +# This map is not a full koi8-r <> utf8 map: it does not contain +# box-drawing and some other characters. Besides this map contains +# several koi8-u and Byelorussian letters which are not in koi8-r. +# If you need a full and standard map, use contrib/unicode2nginx/koi-utf +# map instead. + +charset_map koi8-r utf-8 { + + 80 E282AC ; # euro + + 95 E280A2 ; # bullet + + 9A C2A0 ; #   + + 9E C2B7 ; # · + + A3 D191 ; # small yo + A4 D194 ; # small Ukrainian ye + + A6 D196 ; # small Ukrainian i + A7 D197 ; # small Ukrainian yi + + AD D291 ; # small Ukrainian soft g + AE D19E ; # small Byelorussian short u + + B0 C2B0 ; # ° + + B3 D081 ; # capital YO + B4 D084 ; # capital Ukrainian YE + + B6 D086 ; # capital Ukrainian I + B7 D087 ; # capital Ukrainian YI + + B9 E28496 ; # numero sign + + BD D290 ; # capital Ukrainian soft G + BE D18E ; # capital Byelorussian short U + + BF C2A9 ; # (C) + + C0 D18E ; # small yu + C1 D0B0 ; # small a + C2 D0B1 ; # small b + C3 D186 ; # small ts + C4 D0B4 ; # small d + C5 D0B5 ; # small ye + C6 D184 ; # small f + C7 D0B3 ; # small g + C8 D185 ; # small kh + C9 D0B8 ; # small i + CA D0B9 ; # small j + CB D0BA ; # small k + CC D0BB ; # small l + CD D0BC ; # small m + CE D0BD ; # small n + CF D0BE ; # small o + + D0 D0BF ; # small p + D1 D18F ; # small ya + D2 D180 ; # small r + D3 D181 ; # small s + D4 D182 ; # small t + D5 D183 ; # small u + D6 D0B6 ; # small zh + D7 D0B2 ; # small v + D8 D18C ; # small soft sign + D9 D18B ; # small y + DA D0B7 ; # small z + DB D188 ; # small sh + DC D18D ; # small e + DD D189 ; # small shch + DE D187 ; # small ch + DF D18A ; # small hard sign + + E0 D0AE ; # capital YU + E1 D090 ; # capital A + E2 D091 ; # capital B + E3 D0A6 ; # capital TS + E4 D094 ; # capital D + E5 D095 ; # capital YE + E6 D0A4 ; # capital F + E7 D093 ; # capital G + E8 D0A5 ; # capital KH + E9 D098 ; # capital I + EA D099 ; # capital J + EB D09A ; # capital K + EC D09B ; # capital L + ED D09C ; # capital M + EE D09D ; # capital N + EF D09E ; # capital O + + F0 D09F ; # capital P + F1 D0AF ; # capital YA + F2 D0A0 ; # capital R + F3 D0A1 ; # capital S + F4 D0A2 ; # capital T + F5 D0A3 ; # capital U + F6 D096 ; # capital ZH + F7 D092 ; # capital V + F8 D0AC ; # capital soft sign + F9 D0AB ; # capital Y + FA D097 ; # capital Z + FB D0A8 ; # capital SH + FC D0AD ; # capital E + FD D0A9 ; # capital SHCH + FE D0A7 ; # capital CH + FF D0AA ; # capital hard sign +} diff --git a/dot_config/nginx/koi-win b/dot_config/nginx/koi-win new file mode 100644 index 0000000..72afabe --- /dev/null +++ b/dot_config/nginx/koi-win @@ -0,0 +1,103 @@ + +charset_map koi8-r windows-1251 { + + 80 88 ; # euro + + 95 95 ; # bullet + + 9A A0 ; #   + + 9E B7 ; # · + + A3 B8 ; # small yo + A4 BA ; # small Ukrainian ye + + A6 B3 ; # small Ukrainian i + A7 BF ; # small Ukrainian yi + + AD B4 ; # small Ukrainian soft g + AE A2 ; # small Byelorussian short u + + B0 B0 ; # ° + + B3 A8 ; # capital YO + B4 AA ; # capital Ukrainian YE + + B6 B2 ; # capital Ukrainian I + B7 AF ; # capital Ukrainian YI + + B9 B9 ; # numero sign + + BD A5 ; # capital Ukrainian soft G + BE A1 ; # capital Byelorussian short U + + BF A9 ; # (C) + + C0 FE ; # small yu + C1 E0 ; # small a + C2 E1 ; # small b + C3 F6 ; # small ts + C4 E4 ; # small d + C5 E5 ; # small ye + C6 F4 ; # small f + C7 E3 ; # small g + C8 F5 ; # small kh + C9 E8 ; # small i + CA E9 ; # small j + CB EA ; # small k + CC EB ; # small l + CD EC ; # small m + CE ED ; # small n + CF EE ; # small o + + D0 EF ; # small p + D1 FF ; # small ya + D2 F0 ; # small r + D3 F1 ; # small s + D4 F2 ; # small t + D5 F3 ; # small u + D6 E6 ; # small zh + D7 E2 ; # small v + D8 FC ; # small soft sign + D9 FB ; # small y + DA E7 ; # small z + DB F8 ; # small sh + DC FD ; # small e + DD F9 ; # small shch + DE F7 ; # small ch + DF FA ; # small hard sign + + E0 DE ; # capital YU + E1 C0 ; # capital A + E2 C1 ; # capital B + E3 D6 ; # capital TS + E4 C4 ; # capital D + E5 C5 ; # capital YE + E6 D4 ; # capital F + E7 C3 ; # capital G + E8 D5 ; # capital KH + E9 C8 ; # capital I + EA C9 ; # capital J + EB CA ; # capital K + EC CB ; # capital L + ED CC ; # capital M + EE CD ; # capital N + EF CE ; # capital O + + F0 CF ; # capital P + F1 DF ; # capital YA + F2 D0 ; # capital R + F3 D1 ; # capital S + F4 D2 ; # capital T + F5 D3 ; # capital U + F6 C6 ; # capital ZH + F7 C2 ; # capital V + F8 DC ; # capital soft sign + F9 DB ; # capital Y + FA C7 ; # capital Z + FB D8 ; # capital SH + FC DD ; # capital E + FD D9 ; # capital SHCH + FE D7 ; # capital CH + FF DA ; # capital hard sign +} diff --git a/dot_config/nginx/mime.types b/dot_config/nginx/mime.types new file mode 100644 index 0000000..d5b5a36 --- /dev/null +++ b/dot_config/nginx/mime.types @@ -0,0 +1,1003 @@ +types { +application/A2L a2l; +application/AML aml; +application/andrew-inset ez; +application/ATF atf; +application/ATFX atfx; +application/ATXML atxml; +application/atom+xml atom; +application/atomcat+xml atomcat; +application/atomdeleted+xml atomdeleted; +application/atomsvc+xml atomsvc; +application/atsc-dwd+xml dwd; +application/atsc-held+xml held; +application/atsc-rsat+xml rsat; +application/auth-policy+xml apxml; +application/bacnet-xdd+zip xdd; +application/calendar+xml xcs; +application/cbor cbor; +application/cccex c3ex; +application/ccmp+xml ccmp; +application/ccxml+xml ccxml; +application/CDFX+XML cdfx; +application/cdmi-capability cdmia; +application/cdmi-container cdmic; +application/cdmi-domain cdmid; +application/cdmi-object cdmio; +application/cdmi-queue cdmiq; +application/CEA cea; +application/cellml+xml cellml cml; +application/clue_info+xml clue; +application/cms cmsc; +application/cpl+xml cpl; +application/csrattrs csrattrs; +application/dash+xml mpd; +application/dashdelta mpdd; +application/davmount+xml davmount; +application/DCD dcd; +application/dicom dcm; +application/DII dii; +application/DIT dit; +application/dskpp+xml xmls; +application/dssc+der dssc; +application/dssc+xml xdssc; +application/dvcs dvc; +application/ecmascript es; +application/efi efi; +application/emma+xml emma; +application/emotionml+xml emotionml; +application/epub+zip epub; +application/exi exi; +application/fastinfoset finf; +application/fdt+xml fdt; +application/font-tdpfr pfr; +application/geo+json geojson; +application/geopackage+sqlite3 gpkg; +application/gltf-buffer glbin glbuf; +application/gml+xml gml; +application/gzip gz tgz; +application/hyperstudio stk; +application/inkml+xml ink inkml; +application/ipfix ipfix; +application/its+xml its; +application/javascript js; +application/jrd+json jrd; +application/json json; +application/json-patch+json json-patch; +application/ld+json jsonld; +application/lgr+xml lgr; +application/link-format wlnk; +application/lost+xml lostxml; +application/lostsync+xml lostsyncxml; +application/lpf+zip lpf; +application/LXF lxf; +application/mac-binhex40 hqx; +application/mads+xml mads; +application/marc mrc; +application/marcxml+xml mrcx; +application/mathematica nb ma mb; +application/mathml+xml mml; +application/mbox mbox; +application/metalink4+xml meta4; +application/mets+xml mets; +application/MF4 mf4; +application/mmt-aei+xml maei; +application/mmt-usd+xml musd; +application/mods+xml mods; +application/mp21 m21 mp21; +application/msword doc; +application/mxf mxf; +application/n-quads nq; +application/n-triples nt; +application/ocsp-request orq; +application/ocsp-response ors; +application/octet-stream bin lha lzh exe class so dll img iso; +application/oda oda; +application/ODX odx; +application/oebps-package+xml opf; +application/ogg ogx; +application/oxps oxps; +application/p2p-overlay+xml relo; +application/pdf pdf; +application/PDX pdx; +application/pem-certificate-chain pem; +application/pgp-encrypted pgp; +application/pgp-signature sig; +application/pkcs10 p10; +application/pkcs12 p12 pfx; +application/pkcs7-mime p7m p7c; +application/pkcs7-signature p7s; +application/pkcs8 p8; +application/pkcs8-encrypted p8e; +application/pkix-cert cer; +application/pkix-crl crl; +application/pkix-pkipath pkipath; +application/pkixcmp pki; +application/pls+xml pls; +application/postscript ps eps ai; +application/provenance+xml provx; +application/prs.cww cw cww; +application/prs.hpub+zip hpub; +application/prs.nprend rnd rct; +application/prs.rdf-xml-crypt rdf-crypt; +application/prs.xsf+xml xsf; +application/pskc+xml pskcxml; +application/rdf+xml rdf; +application/route-apd+xml rapd; +application/route-s-tsid+xml sls; +application/route-usd+xml rusd; +application/reginfo+xml rif; +application/relax-ng-compact-syntax rnc; +application/resource-lists-diff+xml rld; +application/resource-lists+xml rl; +application/rfc+xml rfcxml; +application/rls-services+xml rs; +application/rpki-ghostbusters gbr; +application/rpki-manifest mft; +application/rpki-roa roa; +application/rtf rtf; +application/scim+json scim; +application/scvp-cv-request scq; +application/scvp-cv-response scs; +application/scvp-vp-request spq; +application/scvp-vp-response spp; +application/sdp sdp; +application/senml-etch+cbor senml-etchc; +application/senml-etch+json senml-etchj; +application/senml+cbor senmlc; +application/senml+json senml; +application/senml+xml senmlx; +application/senml-exi senmle; +application/sensml+cbor sensmlc; +application/sensml+json sensml; +application/sensml+xml sensmlx; +application/sensml-exi sensmle; +application/sgml-open-catalog soc; +application/shf+xml shf; +application/sieve siv sieve; +application/simple-filter+xml cl; +application/smil+xml smil smi sml; +application/sparql-query rq; +application/sparql-results+xml srx; +application/sql sql; +application/srgs gram; +application/srgs+xml grxml; +application/sru+xml sru; +application/ssml+xml ssml; +application/stix+json stix; +application/swid+xml swidtag; +application/tamp-apex-update tau; +application/tamp-apex-update-confirm auc; +application/tamp-community-update tcu; +application/tamp-community-update-confirm cuc; +application/td+json jsontd; +application/tamp-error ter; +application/tamp-sequence-adjust tsa; +application/tamp-sequence-adjust-confirm sac; +application/tamp-update tur; +application/tamp-update-confirm tuc; +application/tei+xml tei teiCorpus odd; +application/thraud+xml tfi; +application/timestamp-query tsq; +application/timestamp-reply tsr; +application/timestamped-data tsd; +application/trig trig; +application/ttml+xml ttml; +application/urc-grpsheet+xml gsheet; +application/urc-ressheet+xml rsheet; +application/urc-targetdesc+xml td; +application/urc-uisocketdesc+xml uis; +application/vnd.1000minds.decision-model+xml 1km; +application/vnd.3gpp.pic-bw-large plb; +application/vnd.3gpp.pic-bw-small psb; +application/vnd.3gpp.pic-bw-var pvb; +application/vnd.3gpp2.sms sms; +application/vnd.3gpp2.tcap tcap; +application/vnd.3lightssoftware.imagescal imgcal; +application/vnd.3M.Post-it-Notes pwn; +application/vnd.accpac.simply.aso aso; +application/vnd.accpac.simply.imp imp; +application/vnd.acucobol acu; +application/vnd.acucorp atc acutc; +application/vnd.adobe.flash.movie swf; +application/vnd.adobe.formscentral.fcdt fcdt; +application/vnd.adobe.fxp fxp fxpl; +application/vnd.adobe.xdp+xml xdp; +application/vnd.adobe.xfdf xfdf; +application/vnd.afpc.modca list3820 listafp afp pseg3820; +application/vnd.afpc.modca-overlay ovl; +application/vnd.afpc.modca-pagesegment psg; +application/vnd.ahead.space ahead; +application/vnd.airzip.filesecure.azf azf; +application/vnd.airzip.filesecure.azs azs; +application/vnd.amazon.mobi8-ebook azw3; +application/vnd.americandynamics.acc acc; +application/vnd.amiga.ami ami; +application/vnd.android.ota ota; +application/vnd.anki apkg; +application/vnd.anser-web-certificate-issue-initiation cii; +application/vnd.anser-web-funds-transfer-initiation fti; +application/vnd.apple.installer+xml dist distz pkg mpkg; +application/vnd.apple.keynote keynote; +application/vnd.apple.mpegurl m3u8; +application/vnd.apple.numbers numbers; +application/vnd.apple.pages pages; +application/vnd.aristanetworks.swi swi; +application/vnd.artisan+json artisan; +application/vnd.astraea-software.iota iota; +application/vnd.audiograph aep; +application/vnd.autopackage package; +application/vnd.balsamiq.bmml+xml bmml; +application/vnd.banana-accounting ac2; +application/vnd.balsamiq.bmpr bmpr; +application/vnd.blueice.multipass mpm; +application/vnd.bluetooth.ep.oob ep; +application/vnd.bluetooth.le.oob le; +application/vnd.bmi bmi; +application/vnd.businessobjects rep; +application/vnd.cendio.thinlinc.clientconf tlclient; +application/vnd.chemdraw+xml cdxml; +application/vnd.chess-pgn pgn; +application/vnd.chipnuts.karaoke-mmd mmd; +application/vnd.cinderella cdy; +application/vnd.citationstyles.style+xml csl; +application/vnd.claymore cla; +application/vnd.cloanto.rp9 rp9; +application/vnd.clonk.c4group c4g c4d c4f c4p c4u; +application/vnd.cluetrust.cartomobile-config c11amc; +application/vnd.cluetrust.cartomobile-config-pkg c11amz; +application/vnd.coffeescript coffee; +application/vnd.collabio.xodocuments.document xodt; +application/vnd.collabio.xodocuments.document-template xott; +application/vnd.collabio.xodocuments.presentation xodp; +application/vnd.collabio.xodocuments.presentation-template xotp; +application/vnd.collabio.xodocuments.spreadsheet xods; +application/vnd.collabio.xodocuments.spreadsheet-template xots; +application/vnd.comicbook-rar cbr; +application/vnd.comicbook+zip cbz; +application/vnd.commerce-battelle ica icf icd ic0 ic1 ic2 ic3 ic4 ic5 ic6 ic7 ic8; +application/vnd.commonspace csp cst; +application/vnd.contact.cmsg cdbcmsg; +application/vnd.coreos.ignition+json ign ignition; +application/vnd.cosmocaller cmc; +application/vnd.crick.clicker clkx; +application/vnd.crick.clicker.keyboard clkk; +application/vnd.crick.clicker.palette clkp; +application/vnd.crick.clicker.template clkt; +application/vnd.crick.clicker.wordbank clkw; +application/vnd.criticaltools.wbs+xml wbs; +application/vnd.crypto-shade-file ssvc; +application/vnd.ctc-posml pml; +application/vnd.cups-ppd ppd; +application/vnd.curl curl; +application/vnd.dart dart; +application/vnd.data-vision.rdz rdz; +application/vnd.dbf dbf; +application/vnd.debian.binary-package deb udeb; +application/vnd.dece.data uvf uvvf uvd uvvd; +application/vnd.dece.ttml+xml uvt uvvt; +application/vnd.dece.unspecified uvx uvvx; +application/vnd.dece.zip uvz uvvz; +application/vnd.denovo.fcselayout-link fe_launch; +application/vnd.desmume.movie dsm; +application/vnd.dna dna; +application/vnd.document+json docjson; +application/vnd.doremir.scorecloud-binary-document scld; +application/vnd.dpgraph dpg mwc dpgraph; +application/vnd.dreamfactory dfac; +application/vnd.dtg.local.flash fla; +application/vnd.dvb.ait ait; +application/vnd.dvb.service svc; +application/vnd.dynageo geo; +application/vnd.dzr dzr; +application/vnd.ecowin.chart mag; +application/vnd.enliven nml; +application/vnd.epson.esf esf; +application/vnd.epson.msf msf; +application/vnd.epson.quickanime qam; +application/vnd.epson.salt slt; +application/vnd.epson.ssf ssf; +application/vnd.ericsson.quickcall qcall qca; +application/vnd.espass-espass+zip espass; +application/vnd.eszigno3+xml es3 et3; +application/vnd.etsi.asic-e+zip asice sce; +application/vnd.etsi.asic-s+zip asics; +application/vnd.etsi.timestamp-token tst; +application/vnd.exstream-empower+zip mpw; +application/vnd.exstream-package pub; +application/vnd.evolv.ecig.profile ecigprofile; +application/vnd.evolv.ecig.settings ecig; +application/vnd.evolv.ecig.theme ecigtheme; +application/vnd.ezpix-album ez2; +application/vnd.ezpix-package ez3; +application/vnd.fastcopy-disk-image dim; +application/vnd.fdf fdf; +application/vnd.fdsn.mseed msd mseed; +application/vnd.fdsn.seed seed dataless; +application/vnd.ficlab.flb+zip flb; +application/vnd.filmit.zfc zfc; +application/vnd.FloGraphIt gph; +application/vnd.fluxtime.clip ftc; +application/vnd.font-fontforge-sfd sfd; +application/vnd.framemaker fm; +application/vnd.frogans.fnc fnc; +application/vnd.frogans.ltf ltf; +application/vnd.fsc.weblaunch fsc; +application/vnd.fujitsu.oasys oas; +application/vnd.fujitsu.oasys2 oa2; +application/vnd.fujitsu.oasys3 oa3; +application/vnd.fujitsu.oasysgp fg5; +application/vnd.fujitsu.oasysprs bh2; +application/vnd.fujixerox.ddd ddd; +application/vnd.fujixerox.docuworks xdw; +application/vnd.fujixerox.docuworks.binder xbd; +application/vnd.fujixerox.docuworks.container xct; +application/vnd.fuzzysheet fzs; +application/vnd.genomatix.tuxedo txd; +application/vnd.geocube+xml g3 g³; +application/vnd.geogebra.file ggb; +application/vnd.geogebra.tool ggt; +application/vnd.geometry-explorer gex gre; +application/vnd.geonext gxt; +application/vnd.geoplan g2w; +application/vnd.geospace g3w; +application/vnd.gmx gmx; +application/vnd.google-earth.kml+xml kml; +application/vnd.google-earth.kmz kmz; +application/vnd.grafeq gqf gqs; +application/vnd.groove-account gac; +application/vnd.groove-help ghf; +application/vnd.groove-identity-message gim; +application/vnd.groove-injector grv; +application/vnd.groove-tool-message gtm; +application/vnd.groove-tool-template tpl; +application/vnd.groove-vcard vcg; +application/vnd.hal+xml hal; +application/vnd.HandHeld-Entertainment+xml zmm; +application/vnd.hbci hbci hbc kom upa pkd bpd; +application/vnd.hdt hdt; +application/vnd.hhe.lesson-player les; +application/vnd.hp-HPGL hpgl; +application/vnd.hp-hpid hpi hpid; +application/vnd.hp-hps hps; +application/vnd.hp-jlyt jlt; +application/vnd.hp-PCL pcl; +application/vnd.hydrostatix.sof-data sfd-hdstx; +application/vnd.hzn-3d-crossword x3d; +application/vnd.ibm.electronic-media emm; +application/vnd.ibm.MiniPay mpy; +application/vnd.ibm.rights-management irm; +application/vnd.ibm.secure-container sc; +application/vnd.iccprofile icc icm; +application/vnd.ieee.1905 1905.1; +application/vnd.igloader igl; +application/vnd.imagemeter.folder+zip imf; +application/vnd.imagemeter.image+zip imi; +application/vnd.immervision-ivp ivp; +application/vnd.immervision-ivu ivu; +application/vnd.ims.imsccv1p1 imscc; +application/vnd.insors.igm igm; +application/vnd.intercon.formnet xpw xpx; +application/vnd.intergeo i2g; +application/vnd.intu.qbo qbo; +application/vnd.intu.qfx qfx; +application/vnd.ipunplugged.rcprofile rcprofile; +application/vnd.irepository.package+xml irp; +application/vnd.is-xpr xpr; +application/vnd.isac.fcs fcs; +application/vnd.jam jam; +application/vnd.jcp.javame.midlet-rms rms; +application/vnd.jisp jisp; +application/vnd.joost.joda-archive joda; +application/vnd.kahootz ktz ktr; +application/vnd.kde.karbon karbon; +application/vnd.kde.kchart chrt; +application/vnd.kde.kformula kfo; +application/vnd.kde.kivio flw; +application/vnd.kde.kontour kon; +application/vnd.kde.kpresenter kpr kpt; +application/vnd.kde.kspread ksp; +application/vnd.kde.kword kwd kwt; +application/vnd.kenameaapp htke; +application/vnd.kidspiration kia; +application/vnd.Kinar kne knp sdf; +application/vnd.koan skp skd skm skt; +application/vnd.kodak-descriptor sse; +application/vnd.las.las+json lasjson; +application/vnd.las.las+xml lasxml; +application/vnd.llamagraphics.life-balance.desktop lbd; +application/vnd.llamagraphics.life-balance.exchange+xml lbe; +application/vnd.logipipe.circuit+zip lcs lca; +application/vnd.loom loom; +application/vnd.lotus-1-2-3 123 wk4 wk3 wk1; +application/vnd.lotus-approach apr vew; +application/vnd.lotus-freelance prz pre; +application/vnd.lotus-notes nsf ntf ndl ns4 ns3 ns2 nsh nsg; +application/vnd.lotus-organizer or3 or2 org; +application/vnd.lotus-screencam scm; +application/vnd.lotus-wordpro lwp sam; +application/vnd.macports.portpkg portpkg; +application/vnd.mapbox-vector-tile mvt; +application/vnd.marlin.drm.mdcf mdc; +application/vnd.maxmind.maxmind-db mmdb; +application/vnd.mcd mcd; +application/vnd.medcalcdata mc1; +application/vnd.mediastation.cdkey cdkey; +application/vnd.MFER mwf; +application/vnd.mfmp mfm; +application/vnd.micrografx.flo flo; +application/vnd.micrografx.igx igx; +application/vnd.mif mif; +application/vnd.Mobius.DAF daf; +application/vnd.Mobius.DIS dis; +application/vnd.Mobius.MBK mbk; +application/vnd.Mobius.MQY mqy; +application/vnd.Mobius.MSL msl; +application/vnd.Mobius.PLC plc; +application/vnd.Mobius.TXF txf; +application/vnd.mophun.application mpn; +application/vnd.mophun.certificate mpc; +application/vnd.mozilla.xul+xml xul; +application/vnd.ms-3mfdocument 3mf; +application/vnd.ms-artgalry cil; +application/vnd.ms-asf asf; +application/vnd.ms-cab-compressed cab; +application/vnd.ms-excel xls xlm xla xlc xlt xlw; +application/vnd.ms-excel.template.macroEnabled.12 xltm; +application/vnd.ms-excel.addin.macroEnabled.12 xlam; +application/vnd.ms-excel.sheet.binary.macroEnabled.12 xlsb; +application/vnd.ms-excel.sheet.macroEnabled.12 xlsm; +application/vnd.ms-fontobject eot; +application/vnd.ms-htmlhelp chm; +application/vnd.ms-ims ims; +application/vnd.ms-lrm lrm; +application/vnd.ms-officetheme thmx; +application/vnd.ms-powerpoint ppt pps pot; +application/vnd.ms-powerpoint.addin.macroEnabled.12 ppam; +application/vnd.ms-powerpoint.presentation.macroEnabled.12 pptm; +application/vnd.ms-powerpoint.slide.macroEnabled.12 sldm; +application/vnd.ms-powerpoint.slideshow.macroEnabled.12 ppsm; +application/vnd.ms-powerpoint.template.macroEnabled.12 potm; +application/vnd.ms-project mpp mpt; +application/vnd.ms-tnef tnef tnf; +application/vnd.ms-word.document.macroEnabled.12 docm; +application/vnd.ms-word.template.macroEnabled.12 dotm; +application/vnd.ms-works wcm wdb wks wps; +application/vnd.ms-wpl wpl; +application/vnd.ms-xpsdocument xps; +application/vnd.msa-disk-image msa; +application/vnd.mseq mseq; +application/vnd.multiad.creator crtr; +application/vnd.multiad.creator.cif cif; +application/vnd.musician mus; +application/vnd.muvee.style msty; +application/vnd.mynfc taglet; +application/vnd.nervana entity request bkm kcm; +application/vnd.nimn nimn; +application/vnd.nitf nitf; +application/vnd.neurolanguage.nlu nlu; +application/vnd.nintendo.nitro.rom nds; +application/vnd.nintendo.snes.rom sfc smc; +application/vnd.noblenet-directory nnd; +application/vnd.noblenet-sealer nns; +application/vnd.noblenet-web nnw; +application/vnd.nokia.n-gage.ac+xml ac; +application/vnd.nokia.n-gage.data ngdat; +application/vnd.nokia.n-gage.symbian.install n-gage; +application/vnd.nokia.radio-preset rpst; +application/vnd.nokia.radio-presets rpss; +application/vnd.novadigm.EDM edm; +application/vnd.novadigm.EDX edx; +application/vnd.novadigm.EXT ext; +application/vnd.oasis.opendocument.chart odc; +application/vnd.oasis.opendocument.chart-template otc; +application/vnd.oasis.opendocument.database odb; +application/vnd.oasis.opendocument.formula odf; +application/vnd.oasis.opendocument.graphics odg; +application/vnd.oasis.opendocument.graphics-template otg; +application/vnd.oasis.opendocument.image odi; +application/vnd.oasis.opendocument.image-template oti; +application/vnd.oasis.opendocument.presentation odp; +application/vnd.oasis.opendocument.presentation-template otp; +application/vnd.oasis.opendocument.spreadsheet ods; +application/vnd.oasis.opendocument.spreadsheet-template ots; +application/vnd.oasis.opendocument.text odt; +application/vnd.oasis.opendocument.text-master odm; +application/vnd.oasis.opendocument.text-template ott; +application/vnd.oasis.opendocument.text-web oth; +application/vnd.olpc-sugar xo; +application/vnd.oma.dd2+xml dd2; +application/vnd.onepager tam; +application/vnd.onepagertamp tamp; +application/vnd.onepagertamx tamx; +application/vnd.onepagertat tat; +application/vnd.onepagertatp tatp; +application/vnd.onepagertatx tatx; +application/vnd.openblox.game+xml obgx; +application/vnd.openblox.game-binary obg; +application/vnd.openeye.oeb oeb; +application/vnd.openofficeorg.extension oxt; +application/vnd.openstreetmap.data+xml osm; +application/vnd.openxmlformats-officedocument.presentationml.presentation pptx; +application/vnd.openxmlformats-officedocument.presentationml.slide sldx; +application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx; +application/vnd.openxmlformats-officedocument.presentationml.template potx; +application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx; +application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx; +application/vnd.openxmlformats-officedocument.wordprocessingml.document docx; +application/vnd.openxmlformats-officedocument.wordprocessingml.template dotx; +application/vnd.osa.netdeploy ndc; +application/vnd.osgeo.mapguide.package mgp; +application/vnd.osgi.dp dp; +application/vnd.osgi.subsystem esa; +application/vnd.oxli.countgraph oxlicg; +application/vnd.palm prc pdb pqa oprc; +application/vnd.panoply plp; +application/vnd.patentdive dive; +application/vnd.pawaafile paw; +application/vnd.pg.format str; +application/vnd.pg.osasli ei6; +application/vnd.piaccess.application-license pil; +application/vnd.picsel efif; +application/vnd.pmi.widget wg; +application/vnd.pocketlearn plf; +application/vnd.powerbuilder6 pbd; +application/vnd.preminet preminet; +application/vnd.previewsystems.box box vbox; +application/vnd.proteus.magazine mgz; +application/vnd.psfs psfs; +application/vnd.publishare-delta-tree qps; +application/vnd.pvi.ptid1 ptid; +application/vnd.qualcomm.brew-app-res bar; +application/vnd.Quark.QuarkXPress qxd qxt qwd qwt qxl qxb; +application/vnd.quobject-quoxdocument quox quiz; +application/vnd.rainstor.data tree; +application/vnd.rar rar; +application/vnd.realvnc.bed bed; +application/vnd.recordare.musicxml mxl; +application/vnd.rig.cryptonote cryptonote; +application/vnd.route66.link66+xml link66; +application/vnd.sailingtracker.track st; +application/vnd.sar SAR; +application/vnd.scribus scd sla slaz; +application/vnd.sealed.3df s3df; +application/vnd.sealed.csf scsf; +application/vnd.sealed.doc sdoc sdo s1w; +application/vnd.sealed.eml seml sem; +application/vnd.sealed.mht smht smh; +application/vnd.sealed.ppt sppt s1p; +application/vnd.sealed.tiff stif; +application/vnd.sealed.xls sxls sxl s1e; +application/vnd.sealedmedia.softseal.html stml s1h; +application/vnd.sealedmedia.softseal.pdf spdf spd s1a; +application/vnd.seemail see; +application/vnd.sema sema; +application/vnd.semd semd; +application/vnd.semf semf; +application/vnd.shade-save-file ssv; +application/vnd.shana.informed.formdata ifm; +application/vnd.shana.informed.formtemplate itp; +application/vnd.shana.informed.interchange iif; +application/vnd.shana.informed.package ipk; +application/vnd.shp shp; +application/vnd.shx shx; +application/vnd.sigrok.session sr; +application/vnd.SimTech-MindMapper twd twds; +application/vnd.smaf mmf; +application/vnd.smart.notebook notebook; +application/vnd.smart.teacher teacher; +application/vnd.snesdev-page-table ptrom pt; +application/vnd.software602.filler.form+xml fo; +application/vnd.software602.filler.form-xml-zip zfo; +application/vnd.solent.sdkm+xml sdkm sdkd; +application/vnd.spotfire.dxp dxp; +application/vnd.spotfire.sfs sfs; +application/vnd.sqlite3 sqlite sqlite3; +application/vnd.stepmania.package smzip; +application/vnd.stepmania.stepchart sm; +application/vnd.sun.wadl+xml wadl; +application/vnd.sus-calendar sus susp; +application/vnd.syncml+xml xsm; +application/vnd.syncml.dm+wbxml bdm; +application/vnd.syncml.dm+xml xdm; +application/vnd.syncml.dmddf+xml ddf; +application/vnd.tao.intent-module-archive tao; +application/vnd.tcpdump.pcap pcap cap dmp; +application/vnd.theqvd qvd; +application/vnd.think-cell.ppttc+json ppttc; +application/vnd.tml vfr viaframe; +application/vnd.tmobile-livetv tmo; +application/vnd.trid.tpt tpt; +application/vnd.triscape.mxs mxs; +application/vnd.trueapp tra; +application/vnd.ufdl ufdl ufd frm; +application/vnd.uiq.theme utz; +application/vnd.umajin umj; +application/vnd.unity unityweb; +application/vnd.uoml+xml uoml uo; +application/vnd.uri-map urim urimap; +application/vnd.valve.source.material vmt; +application/vnd.vcx vcx; +application/vnd.vd-study mxi study-inter model-inter; +application/vnd.vectorworks vwx; +application/vnd.veryant.thin istc isws; +application/vnd.ves.encrypted VES; +application/vnd.vidsoft.vidconference vsc; +application/vnd.visio vsd vst vsw vss; +application/vnd.visionary vis; +application/vnd.vsf vsf; +application/vnd.wap.sic sic; +application/vnd.wap.slc slc; +application/vnd.wap.wbxml wbxml; +application/vnd.wap.wmlc wmlc; +application/vnd.wap.wmlscriptc wmlsc; +application/vnd.webturbo wtb; +application/vnd.wfa.p2p p2p; +application/vnd.wfa.wsc wsc; +application/vnd.wmc wmc; +application/vnd.wolfram.mathematica.package m; +application/vnd.wolfram.player nbp; +application/vnd.wordperfect wpd; +application/vnd.wqd wqd; +application/vnd.wt.stf stf; +application/vnd.wv.csp+wbxml wv; +application/vnd.xara xar; +application/vnd.xfdl xfdl xfd; +application/vnd.xmpie.cpkg cpkg; +application/vnd.xmpie.dpkg dpkg; +application/vnd.xmpie.ppkg ppkg; +application/vnd.xmpie.xlim xlim; +application/vnd.yamaha.hv-dic hvd; +application/vnd.yamaha.hv-script hvs; +application/vnd.yamaha.hv-voice hvp; +application/vnd.yamaha.openscoreformat osf; +application/vnd.yamaha.smaf-audio saf; +application/vnd.yamaha.smaf-phrase spf; +application/vnd.yaoweme yme; +application/vnd.yellowriver-custom-menu cmp; +application/vnd.zul zir zirz; +application/vnd.zzazz.deck+xml zaz; +application/voicexml+xml vxml; +application/voucher-cms+json vcj; +application/watcherinfo+xml wif; +application/widget wgt; +application/wsdl+xml wsdl; +application/wspolicy+xml wspolicy; +application/xcap-att+xml xav; +application/xcap-caps+xml xca; +application/xcap-diff+xml xdf; +application/xcap-el+xml xel; +application/xcap-error+xml xer; +application/xcap-ns+xml xns; +application/xhtml+xml xhtml xhtm xht; +application/xliff+xml xlf; +application/xml-dtd dtd; +application/xop+xml xop; +application/xslt+xml xsl xslt; +application/xv+xml mxml xhvml xvml xvm; +application/yang yang; +application/yin+xml yin; +application/zip zip; +application/zstd zst; +audio/32kadpcm 726; +audio/aac adts aac ass; +audio/ac3 ac3; +audio/AMR amr; +audio/AMR-WB awb; +audio/asc acn; +audio/ATRAC-ADVANCED-LOSSLESS aal; +audio/ATRAC-X atx; +audio/ATRAC3 at3 aa3 omg; +audio/basic au snd; +audio/dls dls; +audio/EVRC evc; +audio/EVRCB evb; +audio/EVRCNW enw; +audio/EVRCWB evw; +audio/iLBC lbc; +audio/L16 l16; +audio/mhas mhas; +audio/mobile-xmf mxmf; +audio/mp4 m4a; +audio/mpeg mp3 mpga mp1 mp2; +audio/ogg oga ogg opus spx; +audio/prs.sid sid psid; +audio/qcelp qcp; +audio/SMV smv; +audio/usac loas xhe; +audio/vnd.audikoz koz; +audio/vnd.dece.audio uva uvva; +audio/vnd.digital-winds eol; +audio/vnd.dolby.mlp mlp; +audio/vnd.dts dts; +audio/vnd.dts.hd dtshd; +audio/vnd.everad.plj plj; +audio/vnd.lucent.voice lvp; +audio/vnd.ms-playready.media.pya pya; +audio/vnd.nortel.vbk vbk; +audio/vnd.nuera.ecelp4800 ecelp4800; +audio/vnd.nuera.ecelp7470 ecelp7470; +audio/vnd.nuera.ecelp9600 ecelp9600; +audio/vnd.presonus.multitrack multitrack; +audio/vnd.rip rip; +audio/vnd.sealedmedia.softseal.mpeg smp3 smp s1m; +font/collection ttc; +font/otf otf; +font/ttf ttf; +font/woff woff; +font/woff2 woff2; +image/aces exr; +image/avci avci; +image/avcs avcs; +image/bmp bmp dib; +image/cgm cgm; +image/dicom-rle drle; +image/emf emf; +image/fits fits fit fts; +image/heic heic; +image/heic-sequence heics; +image/heif heif; +image/heif-sequence heifs; +image/hej2k hej2; +image/hsj2 hsj2; +image/gif gif; +image/ief ief; +image/jls jls; +image/jp2 jp2 jpg2; +image/jph jph; +image/jphc jhc; +image/jpeg jpg jpeg jpe jfif; +image/jpm jpm jpgm; +image/jpx jpx jpf; +image/jxr jxr; +image/jxrA jxra; +image/jxrS jxrs; +image/jxs jxs; +image/jxsc jxsc; +image/jxsi jxsi; +image/jxss jxss; +image/ktx ktx; +image/png png; +image/prs.btif btif btf; +image/prs.pti pti; +image/svg+xml svg svgz; +image/t38 t38; +image/tiff tiff tif; +image/tiff-fx tfx; +image/vnd.adobe.photoshop psd; +image/vnd.airzip.accelerator.azv azv; +image/vnd.dece.graphic uvi uvvi uvg uvvg; +image/vnd.djvu djvu djv; +image/vnd.dwg dwg; +image/vnd.dxf dxf; +image/vnd.fastbidsheet fbs; +image/vnd.fpx fpx; +image/vnd.fst fst; +image/vnd.fujixerox.edmics-mmr mmr; +image/vnd.fujixerox.edmics-rlc rlc; +image/vnd.globalgraphics.pgb pgb; +image/vnd.microsoft.icon ico; +image/vnd.mozilla.apng apng; +image/vnd.ms-modi mdi; +image/vnd.radiance hdr rgbe xyze; +image/vnd.sealed.png spng spn s1n; +image/vnd.sealedmedia.softseal.gif sgif sgi s1g; +image/vnd.sealedmedia.softseal.jpg sjpg sjp s1j; +image/vnd.tencent.tap tap; +image/vnd.valve.source.texture vtf; +image/vnd.wap.wbmp wbmp; +image/vnd.xiff xif; +image/vnd.zbrush.pcx pcx; +image/wmf wmf; +message/global u8msg; +message/global-delivery-status u8dsn; +message/global-disposition-notification u8mdn; +message/global-headers u8hdr; +message/rfc822 eml mail art; +model/gltf-binary glb; +model/gltf+json gltf; +model/iges igs iges; +model/mesh msh mesh silo; +model/mtl mtl; +model/obj obj; +model/stl stl; +model/vnd.collada+xml dae; +model/vnd.dwf dwf; +model/vnd.gdl gdl gsm win dor lmp rsm msm ism; +model/vnd.gtw gtw; +model/vnd.moml+xml moml; +model/vnd.mts mts; +model/vnd.opengex ogex; +model/vnd.parasolid.transmit.binary x_b xmt_bin; +model/vnd.parasolid.transmit.text x_t xmt_txt; +model/vnd.usdz+zip usdz; +model/vnd.valve.source.compiled-map bsp; +model/vnd.vtu vtu; +model/vrml wrl vrml; +model/x3d+xml x3db; +model/x3d-vrml x3dv x3dvz; +multipart/vnd.bint.med-plus bmed; +multipart/voice-message vpm; +text/cache-manifest appcache manifest; +text/calendar ics ifb; +text/css css; +text/csv csv; +text/csv-schema csvs; +text/dns soa zone; +text/html html htm; +text/jcr-cnd cnd; +text/markdown markdown md; +text/mizar miz; +text/n3 n3; +text/plain txt asc text pm el c h cc hh cxx hxx f90 conf log; +text/provenance-notation provn; +text/prs.fallenstein.rst rst; +text/prs.lines.tag tag dsc; +text/richtext rtx; +text/sgml sgml sgm; +text/tab-separated-values tsv; +text/troff t tr roff; +text/turtle ttl; +text/uri-list uris uri; +text/vcard vcf vcard; +text/vnd.a a; +text/vnd.abc abc; +text/vnd.ascii-art ascii; +text/vnd.debian.copyright copyright; +text/vnd.DMClientScript dms; +text/vnd.dvb.subtitle sub; +text/vnd.esmertec.theme-descriptor jtd; +text/vnd.ficlab.flt flt; +text/vnd.fly fly; +text/vnd.fmi.flexstor flx; +text/vnd.graphviz gv dot; +text/vnd.hgl hgl; +text/vnd.in3d.3dml 3dml 3dm; +text/vnd.in3d.spot spot spo; +text/vnd.ms-mediapackage mpf; +text/vnd.net2phone.commcenter.command ccc; +text/vnd.senx.warpscript mc2; +text/vnd.si.uricatalogue uric; +text/vnd.sun.j2me.app-descriptor jad; +text/vnd.sosi sos; +text/vnd.trolltech.linguist ts; +text/vnd.wap.si si; +text/vnd.wap.sl sl; +text/vnd.wap.wml wml; +text/vnd.wap.wmlscript wmls; +text/vtt vtt; +text/xml xml xsd rng; +text/xml-external-parsed-entity ent; +video/3gpp 3gp 3gpp; +video/3gpp2 3g2 3gpp2; +video/iso.segment m4s; +video/mj2 mj2 mjp2; +video/mp4 mp4 mpg4 m4v; +video/mpeg mpeg mpg mpe m1v m2v; +video/ogg ogv; +video/quicktime mov qt; +video/vnd.dece.hd uvh uvvh; +video/vnd.dece.mobile uvm uvvm; +video/vnd.dece.mp4 uvu uvvu; +video/vnd.dece.pd uvp uvvp; +video/vnd.dece.sd uvs uvvs; +video/vnd.dece.video uvv uvvv; +video/vnd.dvb.file dvb; +video/vnd.fvt fvt; +video/vnd.mpegurl mxu m4u; +video/vnd.ms-playready.media.pyv pyv; +video/vnd.nokia.interleaved-multimedia nim; +video/vnd.radgamettools.bink bik bk2; +video/vnd.radgamettools.smacker smk; +video/vnd.sealed.mpeg1 smpg s11; +video/vnd.sealed.mpeg4 s14; +video/vnd.sealed.swf sswf ssw; +video/vnd.sealedmedia.softseal.mov smov smo s1q; +video/vnd.youtube.yt yt; +video/vnd.vivo viv; +application/mac-compactpro cpt; +application/metalink+xml metalink; +application/owl+xml owx; +application/rss+xml rss; +application/vnd.android.package-archive apk; +application/vnd.oma.dd+xml dd; +application/vnd.oma.drm.content dcf; +application/vnd.oma.drm.dcf o4a o4v; +application/vnd.oma.drm.message dm; +application/vnd.oma.drm.rights+wbxml drc; +application/vnd.oma.drm.rights+xml dr; +application/vnd.sun.xml.calc sxc; +application/vnd.sun.xml.calc.template stc; +application/vnd.sun.xml.draw sxd; +application/vnd.sun.xml.draw.template std; +application/vnd.sun.xml.impress sxi; +application/vnd.sun.xml.impress.template sti; +application/vnd.sun.xml.math sxm; +application/vnd.sun.xml.writer sxw; +application/vnd.sun.xml.writer.global sxg; +application/vnd.sun.xml.writer.template stw; +application/vnd.symbian.install sis; +application/vnd.wap.mms-message mms; +application/x-annodex anx; +application/x-bcpio bcpio; +application/x-bittorrent torrent; +application/x-bzip2 bz2; +application/x-cdlink vcd; +application/x-chrome-extension crx; +application/x-cpio cpio; +application/x-csh csh; +application/x-director dcr dir dxr; +application/x-dvi dvi; +application/x-futuresplash spl; +application/x-gtar gtar; +application/x-hdf hdf; +application/x-java-archive jar; +application/x-java-jnlp-file jnlp; +application/x-java-pack200 pack; +application/x-killustrator kil; +application/x-latex latex; +application/x-netcdf nc cdf; +application/x-perl pl; +application/x-rpm rpm; +application/x-sh sh; +application/x-shar shar; +application/x-stuffit sit; +application/x-sv4cpio sv4cpio; +application/x-sv4crc sv4crc; +application/x-tar tar; +application/x-tcl tcl; +application/x-tex tex; +application/x-texinfo texinfo texi; +application/x-troff-man man 1 2 3 4 5 6 7 8; +application/x-troff-me me; +application/x-troff-ms ms; +application/x-ustar ustar; +application/x-wais-source src; +application/x-xpinstall xpi; +application/x-xspf+xml xspf; +application/x-xz xz; +audio/midi mid midi kar; +audio/x-aiff aif aiff aifc; +audio/x-annodex axa; +audio/x-flac flac; +audio/x-matroska mka; +audio/x-mod mod ult uni m15 mtm 669 med; +audio/x-mpegurl m3u; +audio/x-ms-wax wax; +audio/x-ms-wma wma; +audio/x-pn-realaudio ram rm; +audio/x-realaudio ra; +audio/x-s3m s3m; +audio/x-stm stm; +audio/x-wav wav; +chemical/x-xyz xyz; +image/webp webp; +image/x-cmu-raster ras; +image/x-portable-anymap pnm; +image/x-portable-bitmap pbm; +image/x-portable-graymap pgm; +image/x-portable-pixmap ppm; +image/x-rgb rgb; +image/x-targa tga; +image/x-xbitmap xbm; +image/x-xpixmap xpm; +image/x-xwindowdump xwd; +text/html-sandboxed sandboxed; +text/x-pod pod; +text/x-setext etx; +video/webm webm; +video/x-annodex axv; +video/x-flv flv; +video/x-javafx fxm; +video/x-matroska mkv; +video/x-matroska-3d mk3d; +video/x-ms-asf asx; +video/x-ms-wm wm; +video/x-ms-wmv wmv; +video/x-ms-wmx wmx; +video/x-ms-wvx wvx; +video/x-msvideo avi; +video/x-sgi-movie movie; +x-conference/x-cooltalk ice; +x-epoc/x-sisx-app sisx; +} diff --git a/dot_config/nginx/nginx.conf.tmpl b/dot_config/nginx/nginx.conf.tmpl new file mode 100644 index 0000000..2ef2c08 --- /dev/null +++ b/dot_config/nginx/nginx.conf.tmpl @@ -0,0 +1,443 @@ + +worker_processes 1; + +working_directory {{.chezmoi.homeDir}}/.config/nginx; +error_log stderr info; +daemon off; +load_module /usr/lib/nginx/modules/ngx_http_echo_module.so; + +events { + worker_connections 1024; +} + + +http { + upstream php { + server 127.0.0.1:9080; + } + + upstream php81 { + server 127.0.0.1:9081; + } + upstream php80 { + server 127.0.0.1:9080; + } + upstream php74 { + server 127.0.0.1:9074; + } + upstream php73 { + server 127.0.0.1:9073; + } + upstream php72 { + server 127.0.0.1:9072; + } + upstream php71 { + server 127.0.0.1:9071; + } + + include mime.types; + default_type application/octet-stream; + types_hash_bucket_size 128; + + #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + # '$status $body_bytes_sent "$http_referer" ' + # '"$http_user_agent" "$http_x_forwarded_for"'; + + #access_log logs/access.log main; + + sendfile on; + #tcp_nopush on; +#keepalive_timeout 0; + keepalive_timeout 65; + +# error_page 403 404 @errors; +# proxy_intercept_errors on; +# fastcgi_intercept_errors on; + + add_header "Access-Control-Allow-Origin" "*"; + access_log off; + + + + server { + server_name files.*; + + listen 80; + listen [::]:80; + listen 443 ssl http2; + listen [::]:443 ssl http2; + + ssl_certificate {{.chezmoi.homeDir}}/.config/nginx/ssl/localhost.crt; + ssl_certificate_key {{.chezmoi.homeDir}}/.config/nginx/ssl/localhost.key; + + client_max_body_size 10G; + proxy_request_buffering off; + proxy_buffering off; + + add_header "X-Dummy" 1; + + location /upload { + proxy_set_header X-Forwarded-Proto $scheme; + proxy_pass http://127.0.0.1:9999; + } + + location /download { + proxy_set_header X-Forwarded-Proto $scheme; + proxy_pass http://127.0.0.1:9999; + } + + location / { + proxy_set_header X-Forwarded-Proto $scheme; + proxy_pass http://s3.appsincloud.net:7480/vizitapptest_files/; + } + } + + server { + + #server_name ~^static\.(?[^.]+)\.[^.]+$; + server_name ~^static\.(.+\.)?(?[^.]+)\.[^.]+$; + + listen 80; + listen [::]:80; + listen 443 ssl http2; + listen [::]:443 ssl http2; + + ssl_certificate {{.chezmoi.homeDir}}/.config/nginx/ssl/localhost.crt; + ssl_certificate_key {{.chezmoi.homeDir}}/.config/nginx/ssl/localhost.key; + + root {{.chezmoi.homeDir}}/jopixel/$project/www/static; + + error_page 404 /errors/404.html; + error_page 403 /errors/403.html; + location /errors/ { + alias {{.chezmoi.homeDir}}/jopixel/errorpages/; + } + + } + + map $host $php_version { + hostnames; + default php80; + *.laya-server.localhost php74; + *.vizit.localhost php80; + *.up123.localhost php72; + *.katalogy.localhost php71; + *.eno.localhost php71; + } + + + server { + #server_name _; + server_name ~^[^.]+\.(?[^.]+)\..+$; + + listen 80; + listen [::]:80; + listen 443 ssl http2; + listen [::]:443 ssl http2; + + ssl_certificate {{.chezmoi.homeDir}}/.config/nginx/ssl/localhost.crt; + ssl_certificate_key {{.chezmoi.homeDir}}/.config/nginx/ssl/localhost.key; + + client_max_body_size 1G; + + root {{.chezmoi.homeDir}}/jopixel/$project/www/www; + + #add_header Access-Control-Allow-Origin "*"; + + index index.php; + + location /echo { + add_header "Content-Type" "text/plain"; + echo "ahoj"; + echo_flush; + return 200; + } + + location /favicon.ico { + log_not_found off; + access_log off; + } + + location /fpm-status { + fastcgi_pass php; + include fastcgi_params; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + } + + location / { + fastcgi_hide_header Access-Control-Allow-Origin; + fastcgi_pass $php_version; + + fastcgi_param SCRIPT_FILENAME $document_root/index.php; + fastcgi_param QUERY_STRING $query_string; + fastcgi_param REQUEST_METHOD $request_method; + fastcgi_param CONTENT_TYPE $content_type; + fastcgi_param CONTENT_LENGTH $content_length; + + fastcgi_param SCRIPT_NAME index.php; + fastcgi_param REQUEST_URI $request_uri; + fastcgi_param DOCUMENT_URI $document_uri; + fastcgi_param DOCUMENT_ROOT $document_root; + fastcgi_param SERVER_PROTOCOL $server_protocol; + fastcgi_param REQUEST_SCHEME $scheme; + fastcgi_param HTTPS $https if_not_empty; + + fastcgi_param GATEWAY_INTERFACE CGI/1.1; + fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; + + fastcgi_param REMOTE_ADDR $remote_addr; + fastcgi_param REMOTE_PORT $remote_port; + fastcgi_param SERVER_ADDR $server_addr; + fastcgi_param SERVER_PORT $server_port; + fastcgi_param SERVER_NAME $server_name; + + # PHP only, required if PHP was built with --enable-force-cgi-redirect + fastcgi_param REDIRECT_STATUS 200; + + fastcgi_buffers 16 16k; + fastcgi_buffer_size 32k; + fastcgi_keep_conn on; + fastcgi_read_timeout 300s; + fastcgi_index index.php; + } + + location /_files/ { + internal; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_method GET; + proxy_pass_request_body off; + #proxy_pass_request_headers off; + proxy_pass http://s3.appsincloud.net:7480/; + } + + location /_static/ { + internal; + root {{.chezmoi.homeDir}}/jopixel/$project/www/static; + try_files $uri =404; + } + + location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { + expires max; + log_not_found off; + } + + #error_page 404 /404.html; + + # redirect server error pages to the static page /50x.html + # + #error_page 500 502 503 504 /50x.html; + error_page 404 /errors/404.html; + error_page 403 /errors/403.html; + location /errors/ { + alias {{.chezmoi.homeDir}}/jopixel/errorpages/; + } + } + + # include sites/*.conf; + + server { + #server_name _; + server_name *.zdravotniregistr.cz; + + listen 80 default_server; + listen [::]:80 default_server; + listen 443 ssl default_server http2; + listen [::]:443 ssl default_server http2; + + ssl_certificate {{.chezmoi.homeDir}}/.config/nginx/ssl/localhost.crt; + ssl_certificate_key {{.chezmoi.homeDir}}/.config/nginx/ssl/localhost.key; + + client_max_body_size 1G; + + set $project "katalogy"; + + root {{.chezmoi.homeDir}}/jopixel/$project/www/www; + + #add_header Access-Control-Allow-Origin "*"; + + index index.php; + + location /echo { + add_header "Content-Type" "text/plain"; + echo "ahoj"; + echo_flush; + return 200; + } + + location /favicon.ico { + log_not_found off; + access_log off; + } + + location /fpm-status { + fastcgi_pass php; + include fastcgi_params; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + } + + location / { + fastcgi_hide_header Access-Control-Allow-Origin; + fastcgi_pass php71; + + fastcgi_param SCRIPT_FILENAME $document_root/index.php; + fastcgi_param QUERY_STRING $query_string; + fastcgi_param REQUEST_METHOD $request_method; + fastcgi_param CONTENT_TYPE $content_type; + fastcgi_param CONTENT_LENGTH $content_length; + + fastcgi_param SCRIPT_NAME index.php; + fastcgi_param REQUEST_URI $request_uri; + fastcgi_param DOCUMENT_URI $document_uri; + fastcgi_param DOCUMENT_ROOT $document_root; + fastcgi_param SERVER_PROTOCOL $server_protocol; + fastcgi_param REQUEST_SCHEME $scheme; + fastcgi_param HTTPS $https if_not_empty; + + fastcgi_param GATEWAY_INTERFACE CGI/1.1; + fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; + + fastcgi_param REMOTE_ADDR $remote_addr; + fastcgi_param REMOTE_PORT $remote_port; + fastcgi_param SERVER_ADDR $server_addr; + fastcgi_param SERVER_PORT $server_port; + fastcgi_param SERVER_NAME $server_name; + + # PHP only, required if PHP was built with --enable-force-cgi-redirect + fastcgi_param REDIRECT_STATUS 200; + + fastcgi_buffers 16 16k; + fastcgi_buffer_size 32k; + fastcgi_keep_conn on; + fastcgi_read_timeout 300s; + fastcgi_index index.php; + } + + location /_files/ { + internal; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_method GET; + proxy_pass_request_body off; + #proxy_pass_request_headers off; + proxy_pass http://s3.appsincloud.net:7480/; + } + + location /_static/ { + internal; + root {{.chezmoi.homeDir}}/jopixel/$project/www/static; + try_files $uri =404; + } + + location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { + expires max; + log_not_found off; + } + + #error_page 404 /404.html; + + # redirect server error pages to the static page /50x.html + # + #error_page 500 502 503 504 /50x.html; + error_page 404 /errors/404.html; + error_page 403 /errors/403.html; + location /errors/ { + alias {{.chezmoi.homeDir}}/jopixel/errorpages/; + } + } + + server { + #server_name _; + server_name gin.localhost; + + listen 80; + listen [::]:80; + listen 443 ssl http2; + listen [::]:443 ssl http2; + + ssl_certificate {{.chezmoi.homeDir}}/.config/nginx/ssl/localhost.crt; + ssl_certificate_key {{.chezmoi.homeDir}}/.config/nginx/ssl/localhost.key; + + + location / { + proxy_pass http://127.0.0.1:3000; + + location /api { + proxy_pass http://127.0.0.1:5204; + } + } + + } + + server { + #server_name _; + server_name wp2.localhost; + server_name *.wp2.localhost; + + listen 80; + listen [::]:80; + listen 443 ssl http2; + listen [::]:443 ssl http2; + + ssl_certificate {{.chezmoi.homeDir}}/.config/nginx/ssl/localhost.crt; + ssl_certificate_key {{.chezmoi.homeDir}}/.config/nginx/ssl/localhost.key; + + client_max_body_size 1G; + + root {{.chezmoi.homeDir}}/jopixel/wp2.localhost/live/www/www; + + #add_header Access-Control-Allow-Origin "*"; + + index index.php; + + location /favicon.ico { + log_not_found off; + access_log off; + } + + location / { + try_files $uri $uri/ /index.php?$args; + } + + location /skel { + alias {{.chezmoi.homeDir}}/jopixel/vpscontroller/wordpress-skel/uploads/; + } + + location ~ .php$ { + fastcgi_hide_header Access-Control-Allow-Origin; + fastcgi_pass php80; + + fastcgi_split_path_info ^(.+\.php)(.*)$; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_param QUERY_STRING $query_string; + fastcgi_param REQUEST_METHOD $request_method; + fastcgi_param CONTENT_TYPE $content_type; + fastcgi_param CONTENT_LENGTH $content_length; + + fastcgi_param SCRIPT_NAME $fastcgi_script_name; + fastcgi_param REQUEST_URI $request_uri; + fastcgi_param DOCUMENT_URI $document_uri; + fastcgi_param DOCUMENT_ROOT $document_root; + fastcgi_param SERVER_PROTOCOL $server_protocol; + fastcgi_param REQUEST_SCHEME $scheme; + fastcgi_param HTTPS $https if_not_empty; + + fastcgi_param GATEWAY_INTERFACE CGI/1.1; + fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; + + fastcgi_param REMOTE_ADDR $remote_addr; + fastcgi_param REMOTE_PORT $remote_port; + fastcgi_param SERVER_ADDR $server_addr; + fastcgi_param SERVER_PORT $server_port; + fastcgi_param SERVER_NAME $server_name; + + # PHP only, required if PHP was built with --enable-force-cgi-redirect + fastcgi_param REDIRECT_STATUS 200; + + fastcgi_buffers 16 16k; + fastcgi_buffer_size 32k; + fastcgi_keep_conn on; + fastcgi_read_timeout 300s; + fastcgi_index index.php; + } + } + +} diff --git a/dot_config/nginx/scgi_params b/dot_config/nginx/scgi_params new file mode 100644 index 0000000..6d4ce4f --- /dev/null +++ b/dot_config/nginx/scgi_params @@ -0,0 +1,17 @@ + +scgi_param REQUEST_METHOD $request_method; +scgi_param REQUEST_URI $request_uri; +scgi_param QUERY_STRING $query_string; +scgi_param CONTENT_TYPE $content_type; + +scgi_param DOCUMENT_URI $document_uri; +scgi_param DOCUMENT_ROOT $document_root; +scgi_param SCGI 1; +scgi_param SERVER_PROTOCOL $server_protocol; +scgi_param REQUEST_SCHEME $scheme; +scgi_param HTTPS $https if_not_empty; + +scgi_param REMOTE_ADDR $remote_addr; +scgi_param REMOTE_PORT $remote_port; +scgi_param SERVER_PORT $server_port; +scgi_param SERVER_NAME $server_name; diff --git a/dot_config/nginx/ssl/localhost.crt b/dot_config/nginx/ssl/localhost.crt new file mode 100644 index 0000000..9194fdf --- /dev/null +++ b/dot_config/nginx/ssl/localhost.crt @@ -0,0 +1,31 @@ +-----BEGIN CERTIFICATE----- +MIIFXzCCBEegAwIBAgIIHRxRuB6t75UwDQYJKoZIhvcNAQELBQAwPTELMAkGA1UE +BhMCQ1oxDjAMBgNVBAoTBVNvZ3VuMQwwCgYDVQQLEwN3ZWIxEDAOBgNVBAMTB1Nv +Z3VuQ0EwHhcNMTgwNDEyMTQxNTAwWhcNMjMwNDEyMTQxNTAwWjBBMQswCQYDVQQG +EwJDWjEOMAwGA1UEChMFU29ndW4xDDAKBgNVBAsTA3dlYjEUMBIGA1UEAwwLKi5s +b2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIEcPYabc3 +UWzCMsgpWpJSg6uzGIoBsgS0m1RQH22AIzMhxhJq4kwy5F53wqo8l70yDXgjaMv0 +DUnz5JC2IdrMo0hMBauOh1h5VpKHux6YhW3sgV6tRxSm4FhehPGw9vQk0fx6QRkL +YxzyeTHopqIX20N1FW6FlC3vZC9+xgKQnfm9TxmgFGHKVlXMFO9Vg32dYD7y8P66 +WWBttRqMkL326fShpmWMoE1GdRYz+yLABXwx6FsnLFubOVk7yKAnYycEuhxszEXO +uBU24ce0ymkaXZsnLUT2Kdk/T4bwz8gEb9VeYubIilupah041Fp7NjG751pxrmJH +pHP2RXyOv/7fAgMBAAGjggJdMIICWTAJBgNVHRMEAjAAMIICSgYDVR0RBIICQTCC +Aj2CESoudml6aXQubG9jYWxob3N0ghAqLmdkcHIubG9jYWxob3N0ghEqLnVwMTIz +LmxvY2FsaG9zdIIRKi5jYXZlcy5sb2NhbGhvc3SCDyouZW5vLmxvY2FsaG9zdIIT +Ki5hZG1pbmVyLmxvY2FsaG9zdIIXKi5sYXlhLXNlcnZlci5sb2NhbGhvc3SCESou +ZXNob3AubG9jYWxob3N0ghYqLnRlYXN0YXJ0ZXIubG9jYWxob3N0ghIqLmFpa2lk +by5sb2NhbGhvc3SCFioudHJhaWxndWlkZS5sb2NhbGhvc3SCEyoubXl0YW5nby5s +b2NhbGhvc3SCFSouaW52b2ljaW5nLmxvY2FsaG9zdIITKi5sYXlhd2ViLmxvY2Fs +aG9zdIIRKi5hc3FpeC5sb2NhbGhvc3SCFSouc3RhdGlzdGl4LmxvY2FsaG9zdIIT +Ki5ib29raW5nLmxvY2FsaG9zdIISKi5rb3RtZWwubG9jYWxob3N0ghkqLmJhdGVy +aWUtZ3JvaGUubG9jYWxob3N0ghUqLnpkcmF2b3RuaXJlZ2lzdHIuY3qCFCoua2F0 +YWxvZ3kubG9jYWxob3N0ghYqLnZpeml0LWNvcmUubG9jYWxob3N0ghgqLmJvb2tp +bmctY29yZS5sb2NhbGhvc3SCFCoubmljZXJpY2UubG9jYWxob3N0ghsqLmpvcGl4 +ZWwtc3VwcG9ydC5sb2NhbGhvc3SCGSouZW5vLXN0YXRpc3RpeC5sb2NhbGhvc3Qw +DQYJKoZIhvcNAQELBQADggEBAA0KW8I3dgn2s2PYpromKo3jTZP3qMuxJ8agp5S4 +GRkCV5xIASpJnUY3JUA4TLJ4ECQx/ZK2exggJw4Ojp/4P1LpK6mIGL1JpnxFj5rA +m8mJZLDOxBYzL7diG/24lrQh9DziGxHh/VFIEsky/jWQ4UQNmun3RF1fVKTcWUlY +dOHPgJgn1enWoBhd+NT2AEVYyiyXwI1tqjFAaJkYI+dW5Qx8WNpS/OQGjuv+ZYvp +9nENMwEOvtOa0uGtxja/mkof38mza1BtyEW5r4Sdw0PvRBNO+OYV0HUH06OMMZ90 +4MciCzkz8I3sFjxrzaRTm0iZ6SknFOohNfMQuxT1uM2CZ8M= +-----END CERTIFICATE----- diff --git a/dot_config/nginx/ssl/localhost.key b/dot_config/nginx/ssl/localhost.key new file mode 100644 index 0000000..b00c4f7 --- /dev/null +++ b/dot_config/nginx/ssl/localhost.key @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEAyBHD2Gm3N1FswjLIKVqSUoOrsxiKAbIEtJtUUB9tgCMzIcYS +auJMMuRed8KqPJe9Mg14I2jL9A1J8+SQtiHazKNITAWrjodYeVaSh7semIVt7IFe +rUcUpuBYXoTxsPb0JNH8ekEZC2Mc8nkx6KaiF9tDdRVuhZQt72QvfsYCkJ35vU8Z +oBRhylZVzBTvVYN9nWA+8vD+ullgbbUajJC99un0oaZljKBNRnUWM/siwAV8Mehb +JyxbmzlZO8igJ2MnBLocbMxFzrgVNuHHtMppGl2bJy1E9inZP0+G8M/IBG/VXmLm +yIpbqWodONRaezYxu+daca5iR6Rz9kV8jr/+3wIDAQABAoIBAAdzqfDAl0NnM/7T +t2La7cJHBzkne9RuVgCIHI7TbNet9/SVFRCIF0B6Aw7A4GhbWn+nwsbG23nemNeN +ttohzq16k3HJcEdhwSjb0Z9el9gkeCCr/OPFVv6UMpZqqznlKNjKPXYsQIuNCIH7 +g6Ffu3/Z+dw9jR1KlJ9rAt3c8DGEr9YbRXyWLvf8B+B0i0THjWjqmI6bJNJeZSTI +nu7G7h/4ZQTSQQs22o+YgVxX9rKPmOFbf13OP3MJ8VfvdeeMeDzCchs8KwOq/tYJ +vvYJs10Bl75XHKjsmjLpZX165T0zDfXLz8Kf5J1BsoMpbyd6jugCEXbSakZ2Cxwc +OzNzeBkCgYEA/Ws3iz35nvdFUoe+0owaTepN/ENcxWaLBQsec4KOmKhZfuCA2B2Q +EkyAk8j9n8pajZyvweU0cLcPX6hJdNXJ+wbegld236Fd7dYWCEmnSMVUTSP+AOHv +VmJLi1jMvBNvUL54fXVvQ3nshFR41xOFW4+caWIB+ra8iZbHGSMke0sCgYEAyhtw +2PbaGYndHTmYUUuUX/9rdaJKjol6t8Ljc2YaYdSKRgOBBIXU/+J0xrUaWQ857205 +XJutUxtkWaeMZneg9H0awC+7uySlgZEv50svkHluvsKYxS0pTHvxlmb+q92sme4S +T3rI88c2TnIMnTajr9WQUcR9nr5IjOnJwsj7Gj0CgYBjISGlEiUnDcrMMdVvPua7 +O8AtwZv0i9wtqN/Mh3GIPbJkcyVzZH0K62oQZTrw2pL5eiU2T5Zn0PPuk0HItihA +TbuUeOpDKDg55NjRfR421RnY4w9lAPxCakjqxV2w5FlS2G8BhIJ1fqgKS5DJcRVl +b5PblT7496pgl95h8uE+aQKBgQCQyMm11Fl39Ch/+DOjAXbgspTj54hrxhcwr5/L +mriJnv4TnA0AFXP6f9tSQokGhf7mA6QVML0hDT19cKcG/OpEW58fUNK3BVC/mifs +FROU9zkb1UIl9u1gCmaObWhB7QLqHv/lCjwNT4ga+F8K/QqUO3Uw7odjgkNtF0pf +jSU9rQKBgD2MASR1vY5ZeYb7LqVLRhOb+0lmXqxrOTiAHD4Z/9xacHREXTqIbIgS +varoU7PEAWSNM5qULiVGcQS+4W1itjkLpYH5PtS6JPDfNDq+Jck6VnQgEfZ6+QCN +tH5V1S6bcnx0dDuMhemcMHZMrxLhvNeBNZ2fHE2e7BLbhRFbfpcc +-----END RSA PRIVATE KEY----- diff --git a/dot_config/nginx/uwsgi_params b/dot_config/nginx/uwsgi_params new file mode 100644 index 0000000..09c732c --- /dev/null +++ b/dot_config/nginx/uwsgi_params @@ -0,0 +1,17 @@ + +uwsgi_param QUERY_STRING $query_string; +uwsgi_param REQUEST_METHOD $request_method; +uwsgi_param CONTENT_TYPE $content_type; +uwsgi_param CONTENT_LENGTH $content_length; + +uwsgi_param REQUEST_URI $request_uri; +uwsgi_param PATH_INFO $document_uri; +uwsgi_param DOCUMENT_ROOT $document_root; +uwsgi_param SERVER_PROTOCOL $server_protocol; +uwsgi_param REQUEST_SCHEME $scheme; +uwsgi_param HTTPS $https if_not_empty; + +uwsgi_param REMOTE_ADDR $remote_addr; +uwsgi_param REMOTE_PORT $remote_port; +uwsgi_param SERVER_PORT $server_port; +uwsgi_param SERVER_NAME $server_name; diff --git a/dot_config/nginx/win-utf b/dot_config/nginx/win-utf new file mode 100644 index 0000000..ed8bc00 --- /dev/null +++ b/dot_config/nginx/win-utf @@ -0,0 +1,126 @@ + +# This map is not a full windows-1251 <> utf8 map: it does not +# contain Serbian and Macedonian letters. If you need a full map, +# use contrib/unicode2nginx/win-utf map instead. + +charset_map windows-1251 utf-8 { + + 82 E2809A ; # single low-9 quotation mark + + 84 E2809E ; # double low-9 quotation mark + 85 E280A6 ; # ellipsis + 86 E280A0 ; # dagger + 87 E280A1 ; # double dagger + 88 E282AC ; # euro + 89 E280B0 ; # per mille + + 91 E28098 ; # left single quotation mark + 92 E28099 ; # right single quotation mark + 93 E2809C ; # left double quotation mark + 94 E2809D ; # right double quotation mark + 95 E280A2 ; # bullet + 96 E28093 ; # en dash + 97 E28094 ; # em dash + + 99 E284A2 ; # trade mark sign + + A0 C2A0 ; #   + A1 D18E ; # capital Byelorussian short U + A2 D19E ; # small Byelorussian short u + + A4 C2A4 ; # currency sign + A5 D290 ; # capital Ukrainian soft G + A6 C2A6 ; # borken bar + A7 C2A7 ; # section sign + A8 D081 ; # capital YO + A9 C2A9 ; # (C) + AA D084 ; # capital Ukrainian YE + AB C2AB ; # left-pointing double angle quotation mark + AC C2AC ; # not sign + AD C2AD ; # soft hypen + AE C2AE ; # (R) + AF D087 ; # capital Ukrainian YI + + B0 C2B0 ; # ° + B1 C2B1 ; # plus-minus sign + B2 D086 ; # capital Ukrainian I + B3 D196 ; # small Ukrainian i + B4 D291 ; # small Ukrainian soft g + B5 C2B5 ; # micro sign + B6 C2B6 ; # pilcrow sign + B7 C2B7 ; # · + B8 D191 ; # small yo + B9 E28496 ; # numero sign + BA D194 ; # small Ukrainian ye + BB C2BB ; # right-pointing double angle quotation mark + + BF D197 ; # small Ukrainian yi + + C0 D090 ; # capital A + C1 D091 ; # capital B + C2 D092 ; # capital V + C3 D093 ; # capital G + C4 D094 ; # capital D + C5 D095 ; # capital YE + C6 D096 ; # capital ZH + C7 D097 ; # capital Z + C8 D098 ; # capital I + C9 D099 ; # capital J + CA D09A ; # capital K + CB D09B ; # capital L + CC D09C ; # capital M + CD D09D ; # capital N + CE D09E ; # capital O + CF D09F ; # capital P + + D0 D0A0 ; # capital R + D1 D0A1 ; # capital S + D2 D0A2 ; # capital T + D3 D0A3 ; # capital U + D4 D0A4 ; # capital F + D5 D0A5 ; # capital KH + D6 D0A6 ; # capital TS + D7 D0A7 ; # capital CH + D8 D0A8 ; # capital SH + D9 D0A9 ; # capital SHCH + DA D0AA ; # capital hard sign + DB D0AB ; # capital Y + DC D0AC ; # capital soft sign + DD D0AD ; # capital E + DE D0AE ; # capital YU + DF D0AF ; # capital YA + + E0 D0B0 ; # small a + E1 D0B1 ; # small b + E2 D0B2 ; # small v + E3 D0B3 ; # small g + E4 D0B4 ; # small d + E5 D0B5 ; # small ye + E6 D0B6 ; # small zh + E7 D0B7 ; # small z + E8 D0B8 ; # small i + E9 D0B9 ; # small j + EA D0BA ; # small k + EB D0BB ; # small l + EC D0BC ; # small m + ED D0BD ; # small n + EE D0BE ; # small o + EF D0BF ; # small p + + F0 D180 ; # small r + F1 D181 ; # small s + F2 D182 ; # small t + F3 D183 ; # small u + F4 D184 ; # small f + F5 D185 ; # small kh + F6 D186 ; # small ts + F7 D187 ; # small ch + F8 D188 ; # small sh + F9 D189 ; # small shch + FA D18A ; # small hard sign + FB D18B ; # small y + FC D18C ; # small soft sign + FD D18D ; # small e + FE D18E ; # small yu + FF D18F ; # small ya +} diff --git a/dot_config/nvim/after/ftplugin/latte.vim b/dot_config/nvim/after/ftplugin/latte.vim new file mode 100644 index 0000000..884dc4c --- /dev/null +++ b/dot_config/nvim/after/ftplugin/latte.vim @@ -0,0 +1,2 @@ +setlocal tabstop=2 +setlocal shiftwidth=2 diff --git a/dot_config/nvim/after/syntax/latte.vim b/dot_config/nvim/after/syntax/latte.vim new file mode 100644 index 0000000..8055152 --- /dev/null +++ b/dot_config/nvim/after/syntax/latte.vim @@ -0,0 +1,10 @@ +syn keyword latteKeyword contained render renderIfExists + +"syn match layaRenderMacroView contained /\m[a-zA-Z_0-9]\+/ +"syn match layaRenderMacroChildOp contained /\m=>/ +syn match latteMacroRender contained /\m\(\({[{%]\@!\|{{\|{%\)\(render\|renderIfExists\)\s\)\@<=\(\S\+\)\(\ \+=> \+[a-zA-Z_0-9]\+\)\+!\?/ contains=layaRenderMacroChildOp,layaRenderMacroView +"syn region latteMacroRender contained keepend start=/\m\({render\|{renderIfExists\)/ end=/}/ contains=layaRenderMacroChildOp,layaRenderMacroView + +"hi def link layaRenderMacroView String +"hi def link layaRenderMacroChildOp Operator +hi def link latteMacroRender String diff --git a/dot_config/nvim/autoload/go.vim b/dot_config/nvim/autoload/go.vim new file mode 100644 index 0000000..d78e7b3 --- /dev/null +++ b/dot_config/nvim/autoload/go.vim @@ -0,0 +1,9 @@ +function! go#Gofmt(path) abort + let cmd = 'gofmt -w '.a:path + call system(cmd) + let winstate = winsaveview() + exec 'edit!' + call winrestview(winstate) +endfunction + + diff --git a/dot_config/nvim/ftdetect/nette.vim b/dot_config/nvim/ftdetect/nette.vim new file mode 100644 index 0000000..dc2bafb --- /dev/null +++ b/dot_config/nvim/ftdetect/nette.vim @@ -0,0 +1 @@ +autocmd BufRead,BufNewFile *.tpl setlocal filetype=html.latte diff --git a/dot_config/nvim/ftdetect/yaml.vim b/dot_config/nvim/ftdetect/yaml.vim new file mode 100644 index 0000000..3e12f11 --- /dev/null +++ b/dot_config/nvim/ftdetect/yaml.vim @@ -0,0 +1,5 @@ +autocmd BufRead,BufNewFile *.yml setlocal shiftwidth=2 + +"set expandtab +"set shiftwidth=2 +"set softtabstop=2 diff --git a/dot_config/nvim/init.lua b/dot_config/nvim/init.lua new file mode 100644 index 0000000..8565501 --- /dev/null +++ b/dot_config/nvim/init.lua @@ -0,0 +1,458 @@ +--- PACKAGES {{{ +vim.cmd 'packadd packer.nvim' -- Load package + +require('packer').startup(function() + use 'wbthomason/packer.nvim' + + use 'neovim/nvim-lspconfig' + -- use 'glepnir/lspsaga.nvim' + use {'hrsh7th/nvim-cmp', requires={'neovim/nvim-lspconfig'}} + use {'hrsh7th/cmp-nvim-lsp', requires={'hrsh7th/nvim-cmp'}} + use {'hrsh7th/cmp-buffer', requires={'hrsh7th/nvim-cmp'}} + use {'hrsh7th/cmp-path', requires={'hrsh7th/nvim-cmp'}} + use {'hrsh7th/cmp-nvim-lua', requires={'hrsh7th/nvim-cmp'}} + use 'hrsh7th/vim-vsnip' + use {'hrsh7th/cmp-vsnip', requires={'hrsh7th/nvim-cmp', 'hrsh7th/vim-vsnip'}} + use 'simrat39/symbols-outline.nvim' + + use { 'jose-elias-alvarez/null-ls.nvim', requires = { "nvim-lua/plenary.nvim" }} + + + use {'nvim-treesitter/nvim-treesitter', run=':TSUpdate'} + use 'nvim-treesitter/playground' + use 'David-Kunz/treesitter-unit' + use({ "yioneko/nvim-yati", requires = "nvim-treesitter/nvim-treesitter" }) + + use {'nvim-telescope/telescope.nvim', requires={'nvim-lua/popup.nvim', 'nvim-lua/plenary.nvim'}} + +-- use {"ellisonleao/gruvbox.nvim", requires = {"rktjmp/lush.nvim"}} + use 'morhetz/gruvbox' +-- use 'lifepillar/vim-solarized8' + + use 'chrisbra/Colorizer' + + use 'kdheepak/lazygit.nvim' + use {'lewis6991/gitsigns.nvim', requires={'nvim-lua/plenary.nvim'}} + + use { 'hoob3rt/lualine.nvim', requires = {'kyazdani42/nvim-web-devicons', opt = true}} + + use 'AndrewRadev/linediff.vim' + + use "lukas-reineke/indent-blankline.nvim" + + use 'b3nj5m1n/kommentary' + use 'airblade/vim-rooter' + + use {'vlada-dudr/vim-php-cs-fixer', ft='php'} + + use 'editorconfig/editorconfig-vim' + + use { 'scrooloose/nerdtree', disable=true } + use { 'kyazdani42/nvim-tree.lua', requires = 'kyazdani42/nvim-web-devicons' } + + use 'vim-vdebug/vdebug' + + use 'dyng/ctrlsf.vim' + use 'eugen0329/vim-esearch' + + use 'fpob/nette.vim' + + use { 'ziglang/zig.vim', ft='zig' } + + +end) + +--- PACKAGES }}} + +--- OPTIONS {{{ +vim.o.ruler=true +vim.o.mouse='' +vim.o.showcmd=true +vim.o.scrolloff=3 +vim.o.ignorecase=true +vim.o.smartcase=true +vim.o.hidden=true +vim.o.autoread=true +vim.o.completeopt='menuone,noinsert,noselect' +vim.o.tabstop=4 +vim.o.softtabstop=4 +vim.o.swapfile=true +vim.o.undofile=true +vim.o.expandtab=true +vim.o.shiftwidth=4 +vim.o.number=true +--vim.o.colorcolumn=0 +--vim.o.foldmethod='marker' +vim.o.foldcolumn='auto:1' +vim.o.signcolumn='yes' +vim.o.list=false +vim.o.relativenumber=false +vim.o.foldenable=true +vim.o.cursorline=true +vim.o.autoindent=true +vim.o.smartindent=true +vim.o.fileencodings='ucs-bom,utf-8,default,cp852,latin1' +vim.o.path='**' +--vim.o.clipboard = "unnamedplus" + +-- Buffer +vim.cmd([[ +augroup forceRecheck +au FocusGained,BufEnter * :silent! ! +augroup END +]]) + +-- vim.env.EDITOR = 'nvr' + +--- OPTIONS }}} + +--- LSP {{{ +-- local saga = require('lspsaga').init_lsp_saga() + +local nvim_lsp = require('lspconfig') +local on_attach = function(client, bufnr) + local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end + local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end + + -- require'completion'.on_attach() + + -- Mappings. + local opts = { noremap=true, silent=true } + buf_set_keymap('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) + buf_set_keymap('n', 'gd', 'lua vim.lsp.buf.definition()', opts) + buf_set_keymap('n', 'K', 'lua vim.lsp.buf.hover()', opts) + buf_set_keymap('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) + buf_set_keymap('n', '', 'lua vim.lsp.buf.signature_help()', opts) + buf_set_keymap('i', '', 'lua vim.lsp.buf.signature_help()', opts) + buf_set_keymap('n', 'wa', 'lua vim.lsp.buf.add_workspace_folder()', opts) + buf_set_keymap('n', 'wr', 'lua vim.lsp.buf.remove_workspace_folder()', opts) + buf_set_keymap('n', 'wl', 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))', opts) + buf_set_keymap('n', 'D', 'lua vim.lsp.buf.type_definition()', opts) + buf_set_keymap('n', 'rn', 'lua vim.lsp.buf.rename()', opts) + buf_set_keymap('n', 'ca', 'lua vim.lsp.buf.code_action()', opts) + buf_set_keymap('v', 'ca', 'lua vim.lsp.buf.range_code_action()', opts) + buf_set_keymap('n', 'gr', 'lua vim.lsp.buf.references()', opts) + buf_set_keymap('n', 'e', 'lua vim.show_line_diagnostics()', opts) + buf_set_keymap('n', '[d', 'lua vim.diagnostic.goto_prev()', opts) + buf_set_keymap('n', ']d', 'lua vim.diagnostic.goto_next()', opts) + buf_set_keymap('n', 'q', 'lua vim.diagnostic.setloclist()', opts) + buf_set_keymap("n", "f", "lua vim.lsp.buf.formatting()", opts) + buf_set_keymap("v", "f", "lua vim.lsp.buf.range_formatting()", opts) +end + +-- Use a loop to conveniently both setup defined servers +-- and map buffer local keybindings when the language server attaches +local servers = { 'phpactor', 'gopls', 'clangd', 'zls', 'hls' } +for _, lsp in ipairs(servers) do + nvim_lsp[lsp].setup { + on_attach = on_attach, + capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp.protocol.make_client_capabilities()) + } +end + +require'lspconfig'.omnisharp.setup{ + cmd = { '/usr/bin/omnisharp', '--languageserver' , '--hostPID', tostring(pid) }, + on_attach = on_attach, + capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp.protocol.make_client_capabilities()) +} + +require'lspconfig'.powershell_es.setup{ + bundle_path = '/home/sogun/devel/PowerShellEditorServices', + capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp.protocol.make_client_capabilities()) +} + +--- LSP }}} + +--- CMP {{{ +local cmp = require'cmp' + +cmp.setup({ + -- documentation = true, + sources = { + { name = 'nvim_lsp' }, + { name = 'nvim_lua' }, + { name = 'buffer' }, + { name = 'path' }, + }, + formatting = { + format = function(entry, vim_item) + -- set a name for each source + vim_item.menu = ({ + buffer = "[Buffer]", + nvim_lsp = "[LSP]", + nvim_lua = "[Lua]", + path = "[Path]" + })[entry.source.name] + return vim_item + end, + }, + window = { + -- completion = cmp.config.window.bordered(), + -- documentation = cmp.config.window.bordered(), + }, + mapping = cmp.mapping.preset.insert({ + [''] = cmp.mapping.confirm({ select = false }) + }), + snippet = { + expand = function(args) + -- For `vsnip` user. + vim.fn["vsnip#anonymous"](args.body) -- For `vsnip` user. + end + } +}) + +--- CMP }}} + +-- vsnip {{{ +vim.cmd 'imap vsnip#jumpable(1) ? \'(vsnip-jump-next)\' : \'\'' +vim.cmd 'smap vsnip#jumpable(1) ? \'(vsnip-jump-next)\' : \'\'' +vim.cmd 'imap vsnip#jumpable(-1) ? \'(vsnip-jump-prev)\' : \'\'' +vim.cmd 'smap vsnip#jumpable(-1) ? \'(vsnip-jump-prev)\' : \'\'' +-- vsnip }}} + +--- gitsigns {{{ +require'gitsigns'.setup{} +--- gitsigns }}} + +-- lualine {{{ +require'lualine'.setup { + options = { + icons_enabled = true, + theme = vim.env.TERM ~= 'linux' and 'gruvbox' or nil, + component_separators = {'', ''}, + section_separators = {'', ''}, + disabled_filetypes = {} + }, + sections = { + lualine_a = {'mode'}, + lualine_b = {'branch'}, + lualine_c = { {'filename', path = 1} }, + lualine_x = {'encoding', 'fileformat', 'filetype'}, + lualine_y = {'progress'}, + lualine_z = {'location'} + }, + inactive_sections = { + lualine_a = {}, + lualine_b = {}, + lualine_c = {'filename'}, + lualine_x = {'location'}, + lualine_y = {}, + lualine_z = {} + }, + tabline = {}, + extensions = {'nerdtree'} +} +-- lualine }}} + +-- NerdTree {{{ +--vim.api.nvim_set_keymap('n', '', [[NERDTreeToggle]], { noremap = true, silent = true }) +--vim.api.nvim_set_keymap('n', '', [[NERDTreeFind %]], { noremap = true, silent = true }) +-- NerdTree }}} + +-- NvimTree {{{ + +vim.g.nvim_tree_add_trailing = 1 +vim.g.nvim_tree_special_files = '' +vim.cmd ( [[ +let g:nvim_tree_show_icons = { +\ 'git': 0, +\ 'folders': 0, +\ 'files': 0, +\ 'folder_arrows': 0, +\ } +]]) +require'nvim-tree'.setup { +} + +vim.api.nvim_set_keymap('n', '', [[NvimTreeToggle]], { noremap = true, silent = true }) +vim.api.nvim_set_keymap('n', '', [[NvimTreeFindFile]], { noremap = true, silent = true }) + +-- }}} NvimTree + +-- Telescope {{{ +vim.api.nvim_set_keymap('n', '', [[Telescope buffers]], { noremap = true, silent = true }) + +require("telescope").setup { + defaults = { + preview = { + hide_on_startup = true + }, + --[[ mappings = { +i = { +[""] = actions.toggle_preview, +}, +n = { +[""] = actions.toggle_preview, +}, +}, ]] + }, + pickers = { + buffers = { + show_all_buffers = true, + sort_lastused = false, + sort_mru = true, + -- theme = "dropdown", + mappings = { + i = { + [""] = "delete_buffer", + }, + n = { + [""] = "delete_buffer", + } + } + } + } +} + +vim.cmd 'augroup Telescope' +vim.cmd 'autocmd FileType TelescopePrompt inoremap Telescope buffers initial_mode=insert' +vim.cmd 'autocmd FileType TelescopePrompt inoremap Telescope fd initial_mode=insert' +vim.cmd 'autocmd FileType TelescopePrompt nnoremap Telescope buffers initial_mode=insert' +vim.cmd 'autocmd FileType TelescopePrompt nnoremap Telescope fd initial_mode=insert' +vim.cmd 'autocmd FileType TelescopePrompt inoremap Telescope builtin initial_mode=insert' +vim.cmd 'autocmd FileType TelescopePrompt nnoremap Telescope builtin initial_mode=insert' +vim.cmd 'augroup END' + +-- Telescope }}} + +-- Tree sitter {{{ +require'nvim-treesitter.configs'.setup { + ensure_installed = 'all', -- one of "all", "maintained" (parsers with maintainers), or a list of languages + highlight = { enable = true, }, + playground = { enable = false, }, + yati = { enable = true, }, + incremental_selection = { + enable = true, + keymaps = { + init_selection = "gnn", + node_incremental = "grn", + scope_incremental = "grc", + node_decremental = "grm", + }, + }, + indent = { + -- disable = { "php" },-- php indent SUCKS A LOT + enable = false, + }, +} + +vim.api.nvim_set_keymap('x', 'iu', ':lua require"treesitter-unit".select()', {noremap=true}) +vim.api.nvim_set_keymap('x', 'au', ':lua require"treesitter-unit".select(true)', {noremap=true}) +vim.api.nvim_set_keymap('o', 'iu', ':lua require"treesitter-unit".select()', {noremap=true}) +vim.api.nvim_set_keymap('o', 'au', ':lua require"treesitter-unit".select(true)', {noremap=true}) + +--[[ vim.o.foldmethod = 'expr' +vim.o.foldexpr = 'nvim_treesitter#foldexpr()' ]] +--- Tree sitter }}} + +-- Indent lines {{{ +vim.g.indent_blankline_filetype_exclude = { 'help', 'NvimTree', 'TelescopePrompt', 'lspinfo' } +vim.g.indent_blankline_buftype_exclude = { 'terminal', 'nofile', 'prompt' } +-- indent lines }}} + +-- PHP CS FIXER {{{ +vim.g.php_cs_fixer_rules = [[ +{ +"@Symfony":true, +"array_syntax":{"syntax":"short"}, +"binary_operator_spaces":{"default":"align_single_space_minimal"}, +"fully_qualified_strict_types":false +} +]] + +--vim.g.php_cs_fixer_php_path = 'php7' -- Path to PHP +vim.g.php_cs_fixer_path = '/usr/bin/php-cs-fixer' -- Path to PHP +vim.g.php_cs_fixer_enable_default_mapping = 1 -- Enable the mapping by default (pcd) +vim.g.php_cs_fixer_dry_run = 0 -- Call command with dry-run option +vim.g.php_cs_fixer_verbose = 0 +vim.g.php_cs_fixer_version = 3 + +-- }}} + +-- kommentary {{{ +kommentary_config = require('kommentary.config') +kommentary_config.configure_language("php", { prefer_single_line_comments = true, }) +-- kommentary }}} + +-- NEORAY {{{ +vim.cmd [[ +if exists('g:neoray') +set guifont=Go_Mono:h11 +NeoraySet CursorAnimTime 0 +NeoraySet Transparency 0.95 +NeoraySet TargetTPS 120 +NeoraySet ContextMenuOn FALSE +NeoraySet BoxDrawingOn TRUE +NeoraySet WindowSize 100x40 +NeoraySet WindowState none +NeoraySet KeyZoomIn <> +NeoraySet KeyZoomOut <> +endif ]] + +-- }}} + +-- rooter {{{ +vim.g.rooter_manual_only = 1 +-- }}} + +-- null-ls {{{ +nls = require "null-ls" + +nls.setup({ + on_attach = on_attach, + debug = true, + sources = { + nls.builtins.formatting.xmllint, + nls.builtins.diagnostics.sqlfluff, + nls.builtins.diagnostics.phpstan.with({ + cwd = function(params) + -- falls back to root if return value is nil + return params.root:match("jopixel") and "www"; + end + }), + nls.builtins.formatting.phpcsfixer.with({ + extra_args = { "--rules", '{ "@Symfony":true, "nullable_type_declaration_for_default_null_value":true, "array_syntax":{"syntax":"short"}, "binary_operator_spaces":{"default":"align_single_space_minimal"}, "fully_qualified_strict_types":false }' } + }), + nls.builtins.diagnostics.shellcheck + } +}) + + +-- }}} + +-- color handling {{{ +term = vim.env.TERM +if(term ~= 'linux' or vim.g.neoray) +then + vim.cmd('set termguicolors') + vim.g.gruvbox_contrast_dark = 'hard' + vim.cmd('colorscheme gruvbox') + + vim.cmd 'highlight link Directory GruvboxGreen' + vim.cmd 'highlight link Function GruvboxFg1' + vim.cmd 'highlight link Operator GruvboxFg1' +end + +vim.cmd 'highlight link TSVariable Identifier' +vim.cmd 'highlight link TSVariableBuiltin Identifier' + +-- }}} + +-- {{{ LAYA +vim.cmd [[ +augroup layaAbbrevs + autocmd BufRead,BufNewFile ~/jopixel/**/*.php iabbrev T $this->obtainer()->translator()->t(); + autocmd BufRead,BufNewFile ~/jopixel/**/*.php iabbrev TI $this->obtainer()->translator()->t() + autocmd BufRead,BufNewFile ~/jopixel/**/*.php iabbrev LOG $this->obtainer()->logger()->log(); + autocmd BufRead,BufNewFile ~/jopixel/**/*.php iabbrev DEBUG $this->obtainer()->logger()->log('debug', 'debug',); + autocmd BufRead,BufNewFile ~/jopixel/**/*.php iabbrev PROD $this->producer() + autocmd BufRead,BufNewFile ~/jopixel/**/*.php iabbrev VIEW \laya\view\view + autocmd BufRead,BufNewFile ~/jopixel/**/*.php iabbrev FORM \layalib\view\form\form + autocmd BufRead,BufNewFile ~/jopixel/**/*.php iabbrev FILE $this->producer()->file() + autocmd BufRead,BufNewFile ~/jopixel/**/*.php iabbrev LINK $this->producer()->link($this, '') + autocmd BufRead,BufNewFile ~/jopixel/**/*.php iabbrev NOTIF $this->obtainer()->notifications() +augroup END +]] +-- }}} LAYA + +-- vim: sw=2: ts=2: fdm=marker: diff --git a/dot_config/php/.keep b/dot_config/php/.keep new file mode 100644 index 0000000..e69de29 diff --git a/dot_config/phpactor/.keep b/dot_config/phpactor/.keep new file mode 100644 index 0000000..e69de29 diff --git a/dot_config/picom/.keep b/dot_config/picom/.keep new file mode 100644 index 0000000..e69de29 diff --git a/dot_config/private_cmus/autosave.tmpl b/dot_config/private_cmus/autosave.tmpl new file mode 100644 index 0000000..0ca3540 --- /dev/null +++ b/dot_config/private_cmus/autosave.tmpl @@ -0,0 +1,227 @@ +set aaa_mode=album +set altformat_current= %F +set altformat_playlist= %f%= %d +set altformat_title=%f +set altformat_trackwin= %f%= %d +set auto_expand_albums_follow=true +set auto_expand_albums_search=true +set auto_expand_albums_selcur=true +set auto_reshuffle=true +set buffer_seconds=10 +set color_cmdline_attr=default +set color_cmdline_bg=235 +set color_cmdline_fg=208 +set color_cur_sel_attr=default +set color_error=167 +set color_info=214 +set color_separator=245 +set color_statusline_attr=default +set color_statusline_bg=236 +set color_statusline_fg=72 +set color_titleline_attr=default +set color_titleline_bg=245 +set color_titleline_fg=black +set color_trackwin_album_attr=bold +set color_trackwin_album_bg=default +set color_trackwin_album_fg=default +set color_win_attr=default +set color_win_bg=235 +set color_win_cur=142 +set color_win_cur_attr=default +set color_win_cur_sel_attr=default +set color_win_cur_sel_bg=237 +set color_win_cur_sel_fg=142 +set color_win_dir=223 +set color_win_fg=223 +set color_win_inactive_cur_sel_attr=default +set color_win_inactive_cur_sel_bg=235 +set color_win_inactive_cur_sel_fg=142 +set color_win_inactive_sel_attr=default +set color_win_inactive_sel_bg=235 +set color_win_inactive_sel_fg=229 +set color_win_sel_attr=default +set color_win_sel_bg=237 +set color_win_sel_fg=229 +set color_win_title_attr=default +set color_win_title_bg=239 +set color_win_title_fg=109 +set confirm_run=true +set continue=true +set continue_album=true +set device=/dev/cdrom +set display_artist_sort_name=false +set dsp.alsa.device= +set dsp.ao.buffer_size=16384 +set dsp.ao.device_interface= +set dsp.ao.driver= +set dsp.ao.wav_counter=1 +set dsp.ao.wav_dir={{.chezmoi.homeDir}} +set dsp.jack.resampling_quality=2 +set dsp.jack.server_name= +set dsp.oss.device= +set follow=true +set format_clipped_text=… +set format_current= %-20%a │ %t%=│ %-20%c│ %-20%l │ %-3%g │ %{?originaldate?%{originaldate}?%{date}} │ %d %{?X!=0?%3X ? } +set format_playlist= %-20%a │ %t%=│ %-20%c│ %-20%l │ %-3%g │ %{?originaldate?%{originaldate}?%{date}} │ %d %{?X!=0?%3X ? } +set format_playlist_va= %-20%a │ %t%=│ %-20%c│ %-20%l │ %-3%g │ %{?originaldate?%{originaldate}?%{date}} │ %d %{?X!=0?%3X ? } +set format_statusline= %{status} %{?show_playback_position?%{position} %{?duration?/ %{duration} }?%{?duration?%{duration} }}- %{total} %{?volume>=0?vol: %{?lvolume!=rvolume?%{lvolume},%{rvolume} ?%{volume} }}%{?stream?buf: %{buffer} }%{?show_current_bitrate & bitrate>=0? %{bitrate} kbps }%=%{?repeat_current?repeat current?%{?play_library?%{playlist_mode} from %{?play_sorted?sorted }library?playlist}} | %1{continue}%1{follow}%1{repeat}%1{shuffle} +set format_title=%a - %l - %t (%y) +set format_trackwin=%{?discnumber?%{discnumber}|}%3n. %t %=%c | %-5%g | %{?originaldate?%{originaldate}?%{date}} | %d +set format_trackwin_album= %l +set format_trackwin_va=%3n. %t %=%c | %-4%g | %-3%y | %d +set format_treewin= %l +set format_treewin_artist=%a +set icecast_default_charset=ISO-8859-1 +set id3_default_charset=ISO-8859-1 +set input.aac.priority=50 +set input.cdio.cddb_url=freedb.freedb.org:8880 +set input.cdio.priority=50 +set input.cue.priority=50 +set input.ffmpeg.priority=30 +set input.flac.priority=50 +set input.mad.priority=55 +set input.modplug.priority=50 +set input.mpc.priority=50 +set input.opus.priority=50 +set input.vorbis.priority=50 +set input.wav.priority=50 +set input.wavpack.priority=50 +set lib_add_filter= +set lib_sort=date title album discnumber tracknumber filename play_count +set mixer.alsa.channel= +set mixer.alsa.device= +set mixer.oss.channel=PCM +set mixer.oss.device= +set mixer.pulse.restore_volume=1 +set mouse=false +set mpris=true +set output_plugin=pulse +set passwd= +set pause_on_output_change=false +set pl_sort= +set play_library=true +set play_sorted=false +set repeat=false +set repeat_current=false +set replaygain=track +set replaygain_limit=true +set replaygain_preamp=0.000000 +set resume=false +set rewind_offset=5 +set scroll_offset=2 +set set_term_title=true +set show_all_tracks=true +set show_current_bitrate=false +set show_hidden=false +set show_playback_position=true +set show_remaining_time=false +set shuffle=off +set skip_track_info=false +set smart_artist_sort=true +set softvol=false +set softvol_state=0 0 +set start_view=tree +set status_display_program= +set stop_after_queue=false +set time_show_leading_zero=true +set tree_width_max=0 +set tree_width_percent=33 +set wrap_search=true +bind browser backspace browser-up +bind browser i toggle show_hidden +bind browser space win-activate +bind browser u win-update +bind common ! push shell +bind common + vol +10% +bind common , seek -1m +bind common - vol -10% +bind common . seek +1m +bind common / search-start +bind common 1 view tree +bind common 2 view sorted +bind common 3 view playlist +bind common 4 view queue +bind common 5 view browser +bind common 6 view filters +bind common 7 view settings +bind common = vol +10% +bind common ? search-b-start +bind common B player-next-album +bind common C toggle continue +bind common D win-remove +bind common E win-add-Q +bind common F push filter +bind common G win-bottom +bind common I echo {} +bind common L push live-filter +bind common M toggle play_library +bind common N search-prev +bind common P win-mv-before +bind common U win-update-cache +bind common Z player-prev-album +bind common [ vol +1% +0 +bind common ] vol +0 +1% +bind common ^B win-page-up +bind common ^C echo Type :quit to exit cmus. +bind common ^D win-half-page-down +bind common ^E win-scroll-down +bind common ^F win-page-down +bind common ^L refresh +bind common ^R toggle repeat_current +bind common ^T run herbstclient spawn kid3-qt {} +bind common ^U win-half-page-up +bind common ^Y win-scroll-up +bind common a win-add-l +bind common b player-next +bind common c player-pause +bind common delete win-remove +bind common down win-down +bind common e win-add-q +bind common end win-bottom +bind common enter win-activate +bind common f toggle follow +bind common g win-top +bind common h seek -5 +bind common home win-top +bind common i win-sel-cur +bind common j win-down +bind common k win-up +bind common l seek +5 +bind common left seek -5 +bind common m toggle aaa_mode +bind common mlb_click_bar player-pause +bind common mlb_click_selected win-activate +bind common mouse_scroll_down win-down +bind common mouse_scroll_down_bar seek -5 +bind common mouse_scroll_down_title right-view +bind common mouse_scroll_up win-up +bind common mouse_scroll_up_bar seek +5 +bind common mouse_scroll_up_title left-view +bind common n search-next +bind common o toggle play_sorted +bind common p win-mv-after +bind common page_down win-page-down +bind common page_up win-page-up +bind common q quit -i +bind common r toggle repeat +bind common right seek +5 +bind common s toggle shuffle +bind common space win-toggle +bind common t toggle show_remaining_time +bind common tab win-next +bind common u update-cache +bind common up win-up +bind common v player-stop +bind common x player-play +bind common y win-add-p +bind common z player-prev +bind common { vol -1% -0 +bind common } vol -0 -1% +fset 90s=date>=1990&date<2000 +fset classical=genre="Classical" +fset missing-tag=!stream&(artist=""|album=""|title=""|tracknumber=-1|date=-1) +fset mp3=filename="*.mp3" +fset ogg=filename="*.ogg" +fset ogg-or-mp3=ogg|mp3 +fset unheard=play_count=0 +factivate diff --git a/dot_config/private_cmus/solarized-sogun.theme b/dot_config/private_cmus/solarized-sogun.theme new file mode 100644 index 0000000..62caf38 --- /dev/null +++ b/dot_config/private_cmus/solarized-sogun.theme @@ -0,0 +1,49 @@ +# colors from solarized: http://ethanschoonover.com/solarized +# default text color +set color_win_fg=241 + +# overall background color +set color_win_bg=234 + +# command-line colors +set color_cmdline_bg=234 +set color_cmdline_fg=241 +set color_error=160 +set color_info=136 +set color_separator=240 + +# bottom status line +set color_statusline_bg=241 +set color_statusline_fg=235 + +# bottom title line +set color_titleline_bg=241 +set color_titleline_fg=235 + +# top title area +set color_win_title_bg=241 +set color_win_title_fg=235 +##### playing file colors ###################################################### +# unselected currently playing track's text +set color_win_cur=33 + +# active selection for currently playing track +set color_win_cur_sel_bg=136 +set color_win_cur_sel_fg=yellow + +# inactive selection for currently playing track +set color_win_inactive_cur_sel_bg=234 +set color_win_inactive_cur_sel_fg=125 + +##### non-playing file colors ################################################## +# active selection +set color_win_sel_bg=136 +set color_win_sel_fg=0 + +# inactive selection +set color_win_inactive_sel_bg=235 +set color_win_inactive_sel_fg=136 + +##### file browser view colors ################################################# +# directory listing color +set color_win_dir=33 diff --git a/dot_config/private_mc/ini b/dot_config/private_mc/ini new file mode 100644 index 0000000..71df3d9 --- /dev/null +++ b/dot_config/private_mc/ini @@ -0,0 +1,196 @@ +[Midnight-Commander] +verbose=true +pause_after_run=1 +shell_patterns=true +auto_save_setup=true +preallocate_space=false +auto_menu=false +use_internal_view=true +use_internal_edit=false +clear_before_exec=true +confirm_delete=true +confirm_overwrite=true +confirm_execute=false +confirm_history_cleanup=true +confirm_exit=false +confirm_directory_hotlist_delete=true +safe_delete=false +mouse_repeat_rate=100 +double_click_speed=250 +use_8th_bit_as_meta=false +confirm_view_dir=false +mouse_move_pages_viewer=true +mouse_close_dialog=false +fast_refresh=false +drop_menus=false +wrap_mode=true +old_esc_mode=false +old_esc_mode_timeout=1000000 +cd_symlinks=true +show_all_if_ambiguous=false +max_dirt_limit=10 +use_file_to_guess_type=true +alternate_plus_minus=false +only_leading_plus_minus=true +show_output_starts_shell=false +xtree_mode=false +num_history_items_recorded=60 +file_op_compute_totals=true +classic_progressbar=true +vfs_timeout=60 +ftpfs_directory_timeout=900 +use_netrc=true +ftpfs_retry_seconds=30 +ftpfs_always_use_proxy=false +ftpfs_use_passive_connections=true +ftpfs_use_passive_connections_over_proxy=false +ftpfs_use_unix_list_options=true +ftpfs_first_cd_then_ls=true +fish_directory_timeout=900 +editor_tab_spacing=8 +editor_word_wrap_line_length=72 +editor_fill_tabs_with_spaces=false +editor_return_does_auto_indent=true +editor_backspace_through_tabs=false +editor_fake_half_tabs=true +editor_option_save_mode=0 +editor_option_save_position=true +editor_option_auto_para_formatting=false +editor_option_typewriter_wrap=false +editor_edit_confirm_save=true +editor_syntax_highlighting=true +editor_persistent_selections=true +editor_drop_selection_on_copy=true +editor_cursor_beyond_eol=false +editor_cursor_after_inserted_block=false +editor_visible_tabs=true +editor_visible_spaces=true +editor_line_state=false +editor_simple_statusbar=false +editor_check_new_line=false +editor_show_right_margin=false +editor_group_undo=false +editor_ask_filename_before_edit=false +nice_rotating_dash=true +mcview_remember_file_position=false +auto_fill_mkdir_name=true +copymove_persistent_attr=true +select_flags=6 +editor_backup_extension=~ +editor_filesize_threshold=64M +editor_stop_format_chars=-+*\\,.;:&> +mcview_eof= +ignore_ftp_chattr_errors=true +skin=modarin256 + +filepos_max_saved_entries=1024 + +editor_state_full_filename=false + +safe_overwrite=false + +shadows=true + +[Layout] +message_visible=true +keybar_visible=true +xterm_title=true +output_lines=0 +command_prompt=true +menubar_visible=true +free_space=true +horizontal_split=false +vertical_equal=true +left_panel_size=80 +horizontal_equal=true +top_panel_size=29 + +[Misc] +timeformat_recent=%e.%b %H:%M +timeformat_old=%e.%b %Y +ftp_proxy_host=gate +ftpfs_password=anonymous@ +display_codepage=UTF-8 +source_codepage=Other_8_bit +autodetect_codeset= +clipboard_store= +clipboard_paste= + +[Colors] +base_color= +xterm= +color_terminals= + +xterm-256color= + +st-256color= + +xterm-termite= + +xterm-kitty= + +alacritty= + +linux= + +[Panels] +show_mini_info=true +kilobyte_si=false +mix_all_files=false +show_backups=true +show_dot_files=true +fast_reload=false +fast_reload_msg_shown=false +mark_moves_down=true +reverse_files_only=true +auto_save_setup_panels=false +navigate_with_arrows=false +panel_scroll_pages=true +mouse_move_pages=true +filetype_mode=true +permission_mode=false +torben_fj_mode=false +quick_search_mode=2 + +simple_swap=false + +select_flags=4 + +panel_scroll_center=false + +[FindFile] +file_case_sens=true +file_shell_pattern=false +file_find_recurs=true +file_skip_hidden=false +file_all_charsets=false +content_use=true +content_case_sens=true +content_regexp=false +content_first_hit=false +content_whole_words=false +content_all_charsets=false +ignore_dirs_enable=true +ignore_dirs=node_modules + +follow_symlinks=false + +[DiffView] +show_symbols=false +show_numbers=false +tab_size=8 +diff_quality=0 +diff_ignore_tws=false +diff_ignore_all_space=false +diff_ignore_space_change=false +diff_tab_expansion=false +diff_ignore_case=false + +[HotlistConfig] +expanded_view_of_groups=0 + +[Panelize] +Modified git files=git ls-files --modified +Najít odmítnuté části záplat (*.rej) po záplatování=find . -name \\*.rej -print +Najít programy SUID a SGID=find . \\( \\( -perm -04000 -a -perm /011 \\) -o \\( -perm -02000 -a -perm /01 \\) \\) -print +Najít všechny soubory *.orig po záplatování=find . -name \\*.orig -print diff --git a/dot_config/private_mc/mc.ext b/dot_config/private_mc/mc.ext new file mode 100644 index 0000000..e488cb0 --- /dev/null +++ b/dot_config/private_mc/mc.ext @@ -0,0 +1,827 @@ +# Midnight Commander 3.0 extension file +# Warning: Structure of this file has changed completely with version 3.0 +# +# All lines starting with # or empty lines are thrown away. +# Lines starting in the first column should have following format: +# +# keyword/descNL, i.e. everything after keyword/ until new line is desc +# +# keyword can be: +# +# shell (desc is, when starting with a dot, any extension (no wildcars), +# i.e. matches all the files *desc . Example: .tar matches *.tar; +# if it doesn't start with a dot, it matches only a file of that name) +# +# shell/i (desc is, when starting with a dot, any extension (no wildcars), +# The same as shell but with case insensitive. +# +# regex (desc is an extended regular expression) +# Please note that we are using the GNU regex library and thus +# \| matches the literal | and | has special meaning (or) and +# () have special meaning and \( \) stand for literal ( ). +# +# regex/i (desc is an extended regular expression) +# The same as regex but with case insensitive. +# +# type (file matches this if `file %f` matches regular expression desc +# (the filename: part from `file %f` is removed)) +# +# type/i (file matches this if `file %f` matches regular expression desc) +# The same as type but with case insensitive. +# +# directory (matches any directory matching regular expression desc) +# +# include (matches an include directive) +# +# default (matches any file no matter what desc is) +# +# Other lines should start with a space or tab and should be in the format: +# +# keyword=commandNL (with no spaces around =), where keyword should be: +# +# Open (if the user presses Enter or doubleclicks it), +# +# View (F3), Edit (F4) +# +# Include is the keyword used to add any further entries from an include/ +# section +# +# command is any one-line shell command, with the following substitutions: +# +# %% -> % character +# %p -> name of the current file (without path, but pwd is its path). +# Also provided to external application as MC_EXT_BASENAME +# global variable +# %f -> name of the current file. Unlike %p, if file is located on a +# non-local virtual filesystem, i.e. either tarfs or ftpfs, +# then the file will be temporarily copied into a local directory +# and %f will be the full path to this local temporal file. +# If you don't want to get a local copy and want to get the +# virtual fs path (like /#ftp:ftp.cvut.cz/pub/hungry/xword), then +# use %d/%p instead of %f. +# Also provided to external application as MC_EXT_FILENAME +# global variable +# %d -> name of the current directory (pwd, without trailing slash) +# Also provided to external application as MC_EXT_CURRENTDIR +# global variable +# %s -> "selected files", i.e. space separated list of tagged files if any +# or name of the current file. +# Also provided to external application as MC_EXT_SELECTED +# global variable +# %t -> list of tagged files +# Also provided to external application as MC_EXT_ONLYTAGGED +# global variable +# %u -> list of tagged files (they'll be untaged after the command) +# +# (If these 6 letters are in uppercase, they refer to the other panel. +# But you shouldn't have to use it in this file.) +# +# +# %cd -> the rest is a path mc should change into (cd won't work, since it's +# a child process). %cd handles even vfs names. +# +# %view -> the command you type will be piped into mc's internal file viewer +# if you type only the %view and no command, viewer will load %f file +# instead (i.e. no piping, so it is different to %view cat %f) +# %view may be directly followed by {} with a list of any of +# ascii (Ascii mode), hex (Hex mode), nroff (color highlighting for +# text using backspace for bold and underscore) and unform +# (no highlighting for nroff sequences) separated by commas. +# +# %var -> You use it like this: %var{VAR:default}. This macro will expand +# to the value of the VAR variable in the environment if it's set +# otherwise the value in default will be used. This is similar to +# the Bourne shell ${VAR-default} construct. +# +# Rules are applied from top to bottom, thus the order is important. +# If some actions are missing, search continues as if this target didn't +# match (i.e. if a file matches the first and second entry and View action +# is missing in the first one, then on pressing F3 the View action from +# the second entry will be used. default should catch all the actions. +# +# Any new entries you develop for you are always welcome if they are +# useful on more than one system. You can post your modifications +# as tickets at www.midnight-commander.org + + +### Changes ### +# +# Reorganization: 2012-03-07 Slava Zanko + + +### GIT Repo ### +# gitfs changeset +regex/^\[git\] + Open=%cd %p/changesetfs:// + View=%cd %p/patchsetfs:// + +### Archives ### + +# .tgz, .tpz, .tar.gz, .tar.z, .tar.Z, .ipk, .gem +regex/\.t([gp]?z|ar\.g?[zZ])$|\.ipk$|\.gem$ + Open=%cd %p/utar:// + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view tar.gz + +shell/.tar.bz + # Open=%cd %p/utar:// + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view tar.bzip + +regex/\.t(ar\.bz2|bz2?|b2)$ + Open=%cd %p/utar:// + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view tar.bzip2 + +# .tar.lzma, .tlz +regex/\.t(ar\.lzma|lz)$ + Open=%cd %p/utar:// + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view tar.lzma + +# .tar.lz +shell/.tar.lz + Open=%cd %p/utar:// + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view tar.lz + +# .tar.lz4, .tlz4 +regex/\.t(ar\.lz4|lz4)$ + Open=%cd %p/utar:// + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view tar.lz4 + +# .tar.xz, .txz +regex/\.t(ar\.xz|xz)$ + Open=%cd %p/utar:// + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view tar.xz + +# .tar.zst, .tzst +regex/\.t(ar\.zst|zst)$ + Open=%cd %p/utar:// + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view tar.zst + +# .tar.F - used in QNX +shell/.tar.F + # Open=%cd %p/utar:// + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view tar.F + +# .qpr/.qpk - QNX Neutrino package installer files +regex/\.qp[rk]$ + Open=%cd %p/utar:// + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view tar.qpr + +# tar +shell/i/.tar + Open=%cd %p/utar:// + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view tar + +# lha +type/^LHa\ .*archive + Open=%cd %p/ulha:// + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view lha + +# PAK +type/^PAK\ .*archive + Open=%cd %p/unar:// + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view pak + +# arj +regex/i/\.a(rj|[0-9][0-9])$ + Open=%cd %p/uarj:// + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view arj + +# cab +shell/i/.cab + Open=%cd %p/ucab:// + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view cab + +# ha +shell/i/.ha + Open=%cd %p/uha:// + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view ha + +# rar +regex/i/\.r(ar|[0-9][0-9])$ + Open=%cd %p/urar:// + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view rar + +# ALZip +shell/i/.alz + Open=%cd %p/ualz:// + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view alz + +# cpio +shell/.cpio.Z + Open=%cd %p/ucpio:// + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view cpio.z + +shell/.cpio.lz + Open=%cd %p/ucpio:// + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view cpio.lz + +shell/.cpio.lz4 + Open=%cd %p/ucpio:// + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view cpio.lz4 + +shell/.cpio.xz + Open=%cd %p/ucpio:// + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view cpio.xz + +shell/.cpio.zst + Open=%cd %p/ucpio:// + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view cpio.zst + +shell/.cpio.gz + Open=%cd %p/ucpio:// + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view cpio.gz + +shell/i/.cpio + Open=%cd %p/ucpio:// + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view cpio + +# initrd +regex/^(initramfs.*\.img|initrd(-.+)?\.img(-.+)?)$ + Open=%cd %p/ucpio:// + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view cpio + +# 7zip archives (they are not man pages) +shell/i/.7z + Open=%cd %p/u7z:// + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view 7z + +# patch +regex/\.(diff|patch)(\.bz2)$ + Open=%cd %p/patchfs:// + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view bz2 + +regex/\.(diff|patch)(\.(gz|Z))$ + Open=%cd %p/patchfs:// + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view gz + +regex/\.(diff|patch)(\.xz)$ + Open=%cd %p/patchfs:// + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view xz + +regex/\.(diff|patch)(\.zst)$ + Open=%cd %p/patchfs:// + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view zst + +# ls-lR +regex/(^|\.)ls-?lR(\.gz|Z|bz2)$ + Open=%cd %p/lslR:// + +# trpm +shell/.trpm + Open=%cd %p/trpm:// + View=%view{ascii} /usr/lib/mc/ext.d/package.sh view trpm + +# RPM packages (SuSE uses *.spm for source packages) +regex/\.(src\.rpm|spm)$ + Open=%cd %p/rpm:// + View=%view{ascii} /usr/lib/mc/ext.d/package.sh view src.rpm + +shell/.rpm + Open=%cd %p/rpm:// + View=%view{ascii} /usr/lib/mc/ext.d/package.sh view rpm + +# deb +regex/\.u?deb$ + Open=%cd %p/deb:// + View=%view{ascii} /usr/lib/mc/ext.d/package.sh view deb + +# dpkg +shell/.debd + Open=%cd %p/debd:// + View=%view{ascii} /usr/lib/mc/ext.d/package.sh view debd + +# apt +shell/.deba + Open=%cd %p/deba:// + View=%view{ascii} /usr/lib/mc/ext.d/package.sh view deba + +# ISO9660 +shell/i/.iso + Open=%cd %p/iso9660:// + View=%view{ascii} /usr/lib/mc/ext.d/misc.sh view iso9660 + + +regex/\.(diff|patch)$ + Open=%cd %p/patchfs:// + View=%view{ascii} /usr/lib/mc/ext.d/misc.sh view cat + +# ar library +regex/\.s?a$ + Open=%cd %p/uar:// + #Open=%view{ascii} ar tv %f + View=%view{ascii} /usr/lib/mc/ext.d/misc.sh view ar + +# gplib +shell/i/.lib + Open=%cd %p/ulib:// + View=%view{ascii} /usr/lib/mc/ext.d/misc.sh view lib + + +# Mailboxes +type/^ASCII\ mail\ text + Open=%cd %p/mailfs:// + + +### Sources ### + +# C/C++ +regex/i/\.(c|cc|cpp)$ + Include=editor + +# C/C++ header +regex/i/\.(h|hh|hpp)$ + Include=editor + +# Fortran +shell/i/.f + Include=editor + +# Assembler +regex/i/\.(s|asm)$ + Include=editor + +include/editor + Open=%var{EDITOR:vi} %f + +# .so libraries +regex/\.(so|so\.[0-9\.]*)$ + View=%view{ascii} /usr/lib/mc/ext.d/misc.sh view so + +# Object +type/^ELF + #Open=%var{PAGER:more} %f + View=%view{ascii} /usr/lib/mc/ext.d/misc.sh view elf + +### Documentation ### + +# Texinfo +#regex/\.(te?xi|texinfo)$ + +# GNU Info page +type/^Info\ text + Open=/usr/lib/mc/ext.d/text.sh open info + +shell/.info + Open=/usr/lib/mc/ext.d/text.sh open info + +# Exception: .3gp are video files not manual pages +shell/i/.3gp + Include=video + +# Manual page +regex/(([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])|\.man)$ + Open=/usr/lib/mc/ext.d/text.sh open man %var{PAGER:more} + View=%view{ascii,nroff} /usr/lib/mc/ext.d/text.sh view man %var{PAGER:more} + +# Perl pod page +shell/.pod + Open=/usr/lib/mc/ext.d/text.sh open pod %var{PAGER:more} + View=%view{ascii,nroff} /usr/lib/mc/ext.d/text.sh view pod %var{PAGER:more} + +# Troff with me macros. +# Exception - "read.me" is not a nroff file. +shell/read.me + Open= + View= + +shell/.me + Open=/usr/lib/mc/ext.d/text.sh open nroff.me %var{PAGER:more} + View=%view{ascii,nroff} /usr/lib/mc/ext.d/text.sh view nroff.me %var{PAGER:more} + +# Troff with ms macros. +shell/.ms + Open=/usr/lib/mc/ext.d/text.sh open nroff.ms %var{PAGER:more} + View=%view{ascii,nroff} /usr/lib/mc/ext.d/text.sh view nroff.ms %var{PAGER:more} + +# Manual page - compressed +type/^(ASCII )?troff.*gzip compressed + Open=/usr/lib/mc/ext.d/text.sh open man.gz %var{PAGER:more} + View=%view{ascii,nroff} /usr/lib/mc/ext.d/text.sh view man.gz %var{PAGER:more} + +type/^(ASCII )?troff.*bzip compressed + Open=/usr/lib/mc/ext.d/text.sh open man.bz %var{PAGER:more} + View=%view{ascii,nroff} /usr/lib/mc/ext.d/text.sh view man.bz %var{PAGER:more} + +type/^(ASCII )?troff.*bzip2 compressed + Open=/usr/lib/mc/ext.d/text.sh open man.bz2 %var{PAGER:more} + View=%view{ascii,nroff} /usr/lib/mc/ext.d/text.sh view man.bz2 %var{PAGER:more} + +# Manual page +type/^(ASCII )?troff + Open=/usr/lib/mc/ext.d/text.sh open man %var{PAGER:more} + View=%view{ascii,nroff} /usr/lib/mc/ext.d/text.sh view man %var{PAGER:more} + +# Perl pod page +shell/.pod + Open=/usr/lib/mc/ext.d/text.sh open pod %var{PAGER:more} + View=%view{ascii,nroff} /usr/lib/mc/ext.d/text.sh view pod %var{PAGER:more} + +regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.lz$ + Open=/usr/lib/mc/ext.d/text.sh open man.lz %var{PAGER:more} + View=%view{ascii,nroff} /usr/lib/mc/ext.d/text.sh view man.lz %var{PAGER:more} + +regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.lz4$ + Open=/usr/lib/mc/ext.d/text.sh open man.lz4 %var{PAGER:more} + View=%view{ascii,nroff} /usr/lib/mc/ext.d/text.sh view man.lz4 %var{PAGER:more} + +regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.lzma$ + Open=/usr/lib/mc/ext.d/text.sh open man.lzma %var{PAGER:more} + View=%view{ascii,nroff} /usr/lib/mc/ext.d/text.sh view man.lzma %var{PAGER:more} + +regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.xz$ + Open=/usr/lib/mc/ext.d/text.sh open man.xz %var{PAGER:more} + View=%view{ascii,nroff} /usr/lib/mc/ext.d/text.sh view man.xz %var{PAGER:more} + +regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.zst$ + Open=/usr/lib/mc/ext.d/text.sh open man.zst %var{PAGER:more} + View=%view{ascii,nroff} /usr/lib/mc/ext.d/text.sh view man.zst %var{PAGER:more} + +# CHM +shell/i/.chm + Open=/usr/lib/mc/ext.d/text.sh open chm + + +### Images ### + +type/^GIF + Include=image + +type/^JPEG + Include=image + +type/^PC\ bitmap + Include=image + +type/^PNG + Include=image + +type/^JNG + Include=image + +type/^MNG + Include=image + +type/^TIFF + Include=image + +type/^PBM + Include=image + +type/^PGM + Include=image + +type/^PPM + Include=image + +type/^Netpbm + Include=image + +shell/.xcf + Open=/usr/lib/mc/ext.d/image.sh open xcf + +shell/.xbm + Open=/usr/lib/mc/ext.d/image.sh open xbm + +shell/.xpm + Include=image + View=/usr/lib/mc/ext.d/image.sh view xpm %f + +shell/.ico + Include=image + +shell/i/.svg + Edit=herbstclient spawn inkscape %f + Include=image + +include/image + Open=herbstclient spawn imv %f + View=herbstclient spawn imv %f + Edit=herbstclient spawn gimp $f + + +### Sound files ### + +regex/i/\.(wav|snd|voc|au|smp|aiff|aif|snd|m4a|ape|aac|wv|mp3|spx|flac|og[gax]|wma|opus)$ + Include=audio + +regex/i/\.(mod|s3m|xm|it|mtm|669|stm|ult|far)$ + Open=/usr/lib/mc/ext.d/sound.sh open mod + +shell/i/.waw22 + Open=/usr/lib/mc/ext.d/sound.sh open wav22 + +regex/i/\.(midi?|rmid?)$ + Open=/usr/lib/mc/ext.d/sound.sh open midi + +include/audio + Open=/usr/bin/cmus-remote -q %f + View=herbstclient spawn /usr/bin/ffplay %f + Edit=herbstclient spawn /usr/bin/kid3-qt %f + +### Play lists ### + +regex/i/\.(m3u|pls)$ + Open=/usr/lib/mc/ext.d/sound.sh open playlist + + +### Video ### + +shell/i/.avi + Include=video + +regex/i/\.as[fx]$ + Include=video + +shell/i/.divx + Include=video + +shell/i/.mkv + Include=video + +regex/i/\.(mov|qt)$ + Include=video + +regex/i/\.(mp4|m4v|mpe?g)$ + Include=video + +# MPEG-2 TS container + H.264 codec +shell/i/.mts + Include=video + +shell/i/.ts + Include=video + +shell/i/.vob + Include=video + +shell/i/.wmv + Include=video + +regex/i/\.fl[icv]$ + Include=video + +shell/i/.ogv + Include=video + +regex/i/\.ra?m$ + Open=/usr/lib/mc/ext.d/video.sh open ram + +# WebM +shell/i/.webm + Include=video + +type/WebM + Include=video + +include/video + Open=/usr/bin/vlc %f &>/dev/null & + View=/usr/bin/ffplay %f + + +### Documents ### + +# Postscript +type/^PostScript + Open=/usr/lib/mc/ext.d/doc.sh open ps + View=%view{ascii} /usr/lib/mc/ext.d/doc.sh view ps + +# PDF +type/^PDF + Open=/usr/bin/mupdf %f &>/dev/null & + View=/usr/bin/mupdf %f + +# html +regex/i/\.html?$ + Open=/usr/lib/mc/ext.d/web.sh open html + View=%view{ascii} /usr/lib/mc/ext.d/web.sh view html + +# StarOffice 5.2 +shell/.sdw + Open=/usr/lib/mc/ext.d/doc.sh open ooffice + +# StarOffice 6 and OpenOffice.org formats +regex/i/\.(odt|ott|sxw|stw|ods|ots|sxc|stc|odp|otp|sxi|sti|odg|otg|sxd|std|odb|odf|sxm|odm|sxg)$ + Open=herbstclient spawn libreoffice %f + View=%view{ascii} /usr/lib/mc/ext.d/doc.sh view odt + +# AbiWord +shell/.abw + Open=/usr/lib/mc/ext.d/doc.sh open abw + +# Gnumeric +shell/i/.gnumeric + Open=/usr/lib/mc/ext.d/doc.sh open gnumeric + +# Microsoft Word Document +regex/i/\.(do[ct]|wri)$ + Open=/usr/lib/mc/ext.d/doc.sh open msdoc + View=%view{ascii} /usr/lib/mc/ext.d/doc.sh view msdoc +type/^Microsoft\ Word + Open=/usr/lib/mc/ext.d/doc.sh open msdoc + View=%view{ascii} /usr/lib/mc/ext.d/doc.sh view msdoc + +# RTF document +shell/i/.rtf + Open=herbstclient spawn libreoffice %f + +# Microsoft Excel Worksheet +regex/i/\.xl[sw]s?$ + Open=herbstclient spawn libreoffice %f + View=%view{ascii} /usr/lib/mc/ext.d/doc.sh view msxls +type/^Microsoft\ Excel + Open=herbstclient spawn libreoffice %f + View=%view{ascii} /usr/lib/mc/ext.d/doc.sh view msxls + +regex/i/\.(ppt|pps)$ + Open=herbstclient spawn libreoffice %f + View=%view{ascii} /usr/lib/mc/ext.d/doc.sh view msppt + +# Use OpenOffice.org to open any MS Office documents +type/^Microsoft\ Office\ Document + Open=herbstclient spawn libreoffice %f + +# Framemaker +type/^FrameMaker + Open=/usr/lib/mc/ext.d/doc.sh open framemaker + +# DVI +shell/i/.dvi + Open=/usr/lib/mc/ext.d/doc.sh open dvi + View=%view{ascii} /usr/lib/mc/ext.d/doc.sh view dvi + +# TeX +shell/i/.tex + Include=editor + +# DjVu +regex/i/\.djvu?$ + Open=/usr/lib/mc/ext.d/doc.sh open djvu + View=%view{ascii} /usr/lib/mc/ext.d/doc.sh view djvu + +# Comic Books +regex/i/\.cb[zr]$ + Open=/usr/lib/mc/ext.d/doc.sh open comic + +# Epub & mobi +regex/i/\.(epub|mobi)$ + Open=/usr/lib/mc/ext.d/doc.sh open epub + View=%view{ascii} /usr/lib/mc/ext.d/doc.sh view epub + + +### Miscellaneous ### + +# Compiled Java classes +shell/.class + View=%view{ascii} /usr/lib/mc/ext.d/misc.sh view javaclass + +# Makefile +regex/^[Mm]akefile$ + Open=make -f %f %{Enter parameters} + +# Imakefile +shell/Imakefile + Open=xmkmf -a + +# Makefile.PL (MakeMaker) +regex/^Makefile\.(PL|pl)$ + Open=%var{PERL:perl} %f + +# sqlite3.db +type/^SQLite 3.x database + Open=/usr/lib/mc/ext.d/misc.sh open sqlite + View=%view{ascii} /usr/lib/mc/ext.d/misc.sh view sqlite + +# dbf +shell/i/.dbf + Open=/usr/lib/mc/ext.d/misc.sh open dbf + View=%view{ascii} /usr/lib/mc/ext.d/misc.sh view dbf + +# REXX script +regex/\.(rexx?|cmd)$ + Open=rexx %f %{Enter parameters};echo "Press ENTER";read y + +# Disk images for Commodore computers (VIC20, C64, C128) +shell/i/.d64 + Open=%cd %p/uc1541:// + View=%view{ascii} c1541 %f -list + Extract=c1541 %f -extract + +# Glade, a user interface designer for GTK+ and GNOME +shell/i/.glade + Open=/usr/lib/mc/ext.d/misc.sh open glade + +# Gettext Catalogs +regex/\.g?mo$ + View=%view{ascii} /usr/lib/mc/ext.d/misc.sh view mo + +# po +shell/.po + Open=/usr/lib/mc/ext.d/misc.sh open po + +# lyx +shell/i/.lyx + Open=/usr/lib/mc/ext.d/misc.sh open lyx + View=%view{ascii} /usr/lib/mc/ext.d/misc.sh view lyx + +# torrent +shell/i/.torrent + View=%view{ascii} /usr/lib/mc/ext.d/misc.sh view torrent + +### Plain compressed files ### + +# ace +shell/i/.ace + Open=%cd %p/uace:// + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view ace + Extract=unace x %f + +# arc +shell/i/.arc + Open=%cd %p/uarc:// + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view arc + Extract=arc x %f '*' + Extract (with flags)=I=%{Enter any Arc flags:}; if test -n "$I"; then arc x $I %f; fi + +# zip +shell/i/.zip + Open=%cd %p/uzip:// + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view zip + +# zip +type/i/^zip\ archive + Open=%cd %p/uzip:// + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view zip + +# jar(zip) +type/i/^Java\ (Jar\ file|archive)\ data\ \((zip|JAR)\) + Open=%cd %p/uzip:// + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view zip + +# zoo +shell/i/.zoo + Open=%cd %p/uzoo:// + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view zoo + +# gzip +type/^gzip + Open=/usr/lib/mc/ext.d/archive.sh view gz %var{PAGER:more} + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view gz + +regex/\.(gz|Z)$ + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view gz + +# bzip2 +type/^bzip2 + Open=/usr/lib/mc/ext.d/archive.sh view bzip2 %var{PAGER:more} + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view bz2 + +regex/\.bz2?$ + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view bz2 + +# bzip +type/^bzip + Open=/usr/lib/mc/ext.d/archive.sh view bzip %var{PAGER:more} + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view bzip + +# compress +type/^compress + Open=/usr/lib/mc/ext.d/archive.sh view gz %var{PAGER:more} + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view gz + +# lz +regex/\.lz$ + Open=/usr/lib/mc/ext.d/archive.sh view lz %var{PAGER:more} + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view lz + +# lz +type/^LZIP + Open=/usr/lib/mc/ext.d/archive.sh view lz %var{PAGER:more} + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view lz + +# lz4 +regex/\.lz4$ + Open=/usr/lib/mc/ext.d/archive.sh view lz4 %var{PAGER:more} + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view lz4 + +# lzma +regex/\.lzma$ + Open=/usr/lib/mc/ext.d/archive.sh view lzma %var{PAGER:more} + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view lzma + +# xz +regex/\.xz$ + Open=/usr/lib/mc/ext.d/archive.sh view xz %var{PAGER:more} + View=%view{ascii} /usr/lib/mc/ext.d/archive.sh view xz + +# Parity Archive +type/^Parity\ Archive\ Volume\ Set + Open=/usr/lib/mc/ext.d/archive.sh open par2 + +### Default ### + +# Default target for anything not described above +default/* + Open= + View= + + +### EOF ### diff --git a/dot_config/private_mc/menu b/dot_config/private_mc/menu new file mode 100644 index 0000000..53085c3 --- /dev/null +++ b/dot_config/private_mc/menu @@ -0,0 +1,418 @@ +shell_patterns=0 ++ ! t t +@ Do something on the current file + CMD=%{Enter command} + $CMD %f + ++ t t +@ Do something on the tagged files + set %t; CMD=%{Enter command} + while [ -n "$1" ]; do + $CMD "$1" + shift + done + + +0 Edit a bug report and send it to root + I=`mktemp "${MC_TMPDIR:-/tmp}/mail.XXXXXX"` || exit 1 + ${EDITOR-vi} "$I" + test -r $I && mail root < $I + rm -f "$I" + +=+ f \.1$ | f \.3$ | f \.4$ | f \.5$ | f \.6$ | f \.7$ | f \.8$ | f \.man$ & t r +1 Display the file with roff -man + %view{ascii,nroff} roff -man %f + +2 Call the info hypertext browser + info + += t d +3 Compress the current subdirectory (tar.gz) + Pwd=`basename %d /` + echo -n "Name of the compressed file (without extension) [$Pwd]: " + read tar + if [ "$tar"x = x ]; then tar="$Pwd"; fi + cd .. && \ + tar cf - "$Pwd" | gzip -f9 > "$tar.tar.gz" && \ + echo "../$tar.tar.gz created." + +4 Compress the current subdirectory (tar.bz2) + Pwd=`basename %d /` + echo -n "Name of the compressed file (without extension) [$Pwd]: " + read tar + if [ "$tar"x = x ]; then tar="$Pwd"; fi + cd .. && \ + tar cf - "$Pwd" | bzip2 -f > "$tar.tar.bz2" && \ + echo "../$tar.tar.bz2 created." + +5 Compress the current subdirectory (tar.7z) + Pwd=`basename %d /` + echo -n "Name of the compressed file (without extension) [$Pwd]: " + read tar + if [ "$tar"x = x ]; then tar="$Pwd"; fi + cd .. && \ + tar cf - "$Pwd" | 7za a -si "$tar.tar.7z" && \ + echo "../$tar.tar.7z created." + +6 Compress the current subdirectory (tar.xz) + Pwd=`basename %d /` + echo -n "Name of the compressed file (without extension) [$Pwd]: " + read tar + if [ "$tar"x = x ]; then tar="$Pwd"; fi + cd .. && \ + tar cf - "$Pwd" | xz -f > "$tar.tar.xz" && \ + echo "../$tar.tar.xz created." + += f \.c$ & t r ++ f \.c$ & t r & ! t t +c Compile and link current .c file + make `basename %f .c` 2>/dev/null || cc -O -o `basename %f .c` %f + ++ t r & ! t t +a Append file to opposite + cat %f >> %D/%f + ++ t t +A Append files to opposite files + set %t + while [ -n "$1" ]; do + cat "$1" >> "%D/$1" + shift + done + ++ t r & ! t t +d Delete file if a copy exists in the other directory. + if [ "%d" = "%D" ]; then + echo "The two directories must be different." + exit 1 + fi + if [ -f %D/%f ]; then # if two of them, then + if cmp -s %D/%f %f; then + rm %f && echo "%f: DELETED." + else + echo "%f and %D/%f differ: NOT deleted." + echo -n "Press RETURN " + read key + fi + else + echo "%f: No copy in %D/%f: NOT deleted." + fi + ++ t t +D Delete tagged files if a copy exists in the other directory. + if [ "%d" = "%D" ]; then + echo "The two directores must be different." + exit 1 + fi + for i in %t + do + if [ -f "%D/$i" ]; then + SUM1="`sum \"$i\"`" + SUM2="`sum \"%D/$i\"`" + if [ "$SUM1" = "$SUM2" ]; then + rm "$i" && echo "${i}: DELETED." + else + echo "$i and %D/$i differ: NOT deleted." + fi + else + echo "$i has no copy in %D: NOT deleted." + fi + done + +m View manual page + MAN=%{Enter manual name} + %view{ascii,nroff} MANROFFOPT='' MAN_KEEP_FORMATTING=1 man -P cat $MAN + += f \.gz$ & t r ++ ! t t +n Inspect gzip'ed newsbatch file + dd if=%f bs=1 skip=12|zcat|${PAGER-more} + # assuming the cunbatch header is 12 bytes long. + += t r & ++ ! t t +h Strip headers from current newsarticle + CHECK=`awk '{print $1 ; exit}' %f` 2>/dev/null + case "$CHECK" in + Newsgroups:|Path:) + I=`mktemp "${MC_TMPDIR:-/tmp}/news.XXXXXX"` || exit 1 + cp %f "$I" && sed '/^'"$CHECK"' /,/^$/d' "$I" > %f + [ "$?" = "0" ] && rm "$I" + echo "%f: header removed." + ;; + *) + echo "%f is not a news article." + ;; + esac + ++ t t +H Strip headers from the marked newsarticles + set %t + while [ -n "$1" ]; do + CHECK=`awk '{print $1 ; exit}' $1` 2>/dev/null + WFILE=`mktemp "${MC_TMPDIR:-/tmp}/news.XXXXXX"` || exit 1 + case "$CHECK" in + Newsgroups:|Path:) + cp "$1" "$WFILE" && sed '/^'"$CHECK"' /,/^$/d' "$WFILE" > "$1" + if [ "$?" = "0" ]; then + rm "$WFILE"; echo "$1 header removed. OK." + else + echo "Oops! Please check $1 against $WFILE." + fi + ;; + *) + echo "$1 skipped: Not a news article." + ;; + esac + shift + done + += t r ++ ! t t +r Copy file to remote host + echo -n "To which host?: " + read Host + echo -n "To which directory on $Host?: " + read Dir + rcp -p %f "${Host}:$Dir" + ++ t t +R Copy files to remote host (no error checking) + echo -n "Copy files to which host?: " + read Host + echo -n "To which directory on $Host? :" + read Dir + rcp -pr %u "${Host}:$Dir" + += f \.tex$ & t r ++ f \.tex$ & t r & ! t t +t Run latex on file and show it with xdvi + latex %f && xdvi `basename %f .tex`.dvi + +=+ f ^part | f ^Part | f uue & t r ++ t t +U Uudecode marked news articles (needs work) + set %t + ( + while [ -n "$1" ]; do # strip headers + FIRST=`awk '{print $1 ; exit}' "$1"` + cat "$1" | sed '/^'"$FIRST"' /,/^$/d'; shift + done + ) |sed '/^$/d' |sed -n '/^begin 6/,/^end$/p' | uudecode + if [ "$?" != "0" ]; then + echo "Cannot decode %t." + fi + echo "Please test the output file before deleting anything." + +=+ f \.tar\.gz$ | f \.tar\.z$ | f \.tgz$ | f \.tpz$ | f \.tar\.lz$ | f \.tar\.lzma$ | f \.tar\.7z$ | f \.tar\.xz$ | f \.tar\.Z$ | f \.tar\.bz2$ & t r +x Extract the contents of a compressed tar file + unset PRG + case %f in + *.tar.bz2) + PRG="bunzip2 -c" + ;; + *.tar.gz|*.tar.z|*.tgz|*.tpz|*.tar.Z) + PRG="gzip -dc" + ;; + *.tar.lzma) + PRG="lzma -dc" + ;; + *.tar.lz) + PRG="lzip -dc" + ;; + *.tar.xz) + PRG="xz -dc" + ;; + *.tar.7z) + PRG="7za e -so" + ;; + *) + exit 1 + ;; + esac + $PRG %f | tar xvf - + += t r ++ ! t t +y Gzip or gunzip current file + unset DECOMP + case %f in + *.gz) DECOMP=-d;; + *.[zZ]) DECOMP=-d;; + esac + gzip $DECOMP -v %f + ++ t t +Y Gzip or gunzip tagged files + for i in %t + do + unset DECOMP + case "$i" in + *.gz) DECOMP=-d;; + *.[zZ]) DECOMP=-d;; + esac + gzip $DECOMP -v "$i" + done + ++ ! t t +b Bzip2 or bunzip2 current file + unset DECOMP + case %f in + *.bz2) DECOMP=-d;; + esac + bzip2 $DECOMP -v %f + ++ t t +B Bzip2 or bunzip2 tagged files + for i in %t + do + unset DECOMP + case "$i" in + *.bz2) DECOMP=-d;; + esac + bzip2 $DECOMP -v "$i" + done + ++ f \.tar.gz$ | f \.tgz$ | f \.tpz$ | f \.tar.Z$ | f \.tar.z$ | f \.tar.bz2$ | f \.tar.F$ & t r & ! t t +z Extract compressed tar file to subdirectory + unset D + set gzip -cd + case %f in + *.tar.gz) D="`basename %f .tar.gz`";; + *.tgz) D="`basename %f .tgz`";; + *.tpz) D="`basename %f .tpz`";; + *.tar.Z) D="`basename %f .tar.Z`";; + *.tar.z) D="`basename %f .tar.z`";; + *.tar.bz2) D="`basename %f .tar.bz2`"; set bunzip2 -c ;; + *.tar.F) D="`basename %f .tar.F`"; set freeze -dc; + esac + mkdir "$D"; cd "$D" && ("$1" "$2" ../%f | tar xvf -) + ++ t t +Z Extract compressed tar files to subdirectories + for i in %t + do + set gzip -dc + unset D + case "$i" in + *.tar.gz) D="`basename $i .tar.gz`";; + *.tgz) D="`basename $i .tgz`";; + *.tpz) D="`basename $i .tpz`";; + *.tar.Z) D="`basename $i .tar.Z`";; + *.tar.z) D="`basename $i .tar.z`";; + *.tar.F) D="`basename $i .tar.F`"; set freeze -dc;; + *.tar.bz2) D="`basename $i .tar.bz2`"; set bunzip2 -c;; + esac + mkdir "$D"; (cd "$D" && "$1" "$2" "../$i" | tar xvf -) + done + ++ f \.gz$ | f \.tgz$ | f \.tpz$ | f \.Z$ | f \.z$ | f \.bz2$ & t r & ! t t +c Convert gz<->bz2, tar.gz<->tar.bz2 & tgz->tar.bz2 + unset D + unset EXT + case %f in + *.tgz) EXT=tgz;; + *.tpz) EXT=tpz;; + *.Z) EXT=Z;; + *.z) EXT=z;; + *.gz) EXT=gz;; + *.bz2) EXT=bz2;; + esac + case $EXT in + tgz|tpz) D="`basename %f .$EXT`.tar";; + gz|Z|z) D="`basename %f .$EXT`";; + bz2) D="`basename %f .bz2`";; + esac + if [ "$EXT" = "bz2" ]; then + bunzip2 -v %f ; gzip -f9 -v "$D" + else + gunzip -v %f ; bzip2 -v "$D" + fi + ++ t t +C Convert gz<->bz2, tar.gz<->tar.bz2 & tgz->tar.bz2 + set %t + while [ -n "$1" ] + do + unset D + unset EXT + case "$1" in + *.tgz) EXT=tgz;; + *.tpz) EXT=tpz;; + *.Z) EXT=Z;; + *.z) EXT=z;; + *.gz) EXT=gz;; + *.bz2) EXT=bz2;; + esac + case $EXT in + tgz) D="`basename $1 .tgz`.tar";; + tpz) D="`basename $1 .tpz`.tar";; + gz|Z|z) D="`basename $1 .$EXT`";; + bz2) D="`basename $1 .bz2`";; + esac + if [ "$EXT" = "bz2" ]; then + bunzip2 -v "$1" + gzip -f9 -v "$D" + else + gunzip -v "$1" + bzip2 -v "$D" + fi + shift + done + ++ x /usr/bin/open | x /usr/local/bin/open & x /bin/sh +o Open next a free console + open -s -- sh + ++ f \.flac$ | f \.aif$ | f \.m4a$ +c Copy and convert to mp3 + set %t + [ -n "$1" ] || set %f + while [ -n "$1" ] + do + case "$1" in + *.flac) EXT=flac;; + *.aif) EXT=aif;; + *.m4a) EXT=m4a;; + esac + ffmpeg -i %d/"$1" -ab 320k -map_metadata 0 -id3v2_version 3 %D/"$(basename "$1" $EXT)mp3" + shift + done + ++ f \.wv$ | f \.aif$ | f \.m4a$ +f Copy and convert to flac + set %t + [ -n "$1" ] || set %f + while [ -n "$1" ] + do + case "$1" in + *.wv) EXT=wv;; + *.aif) EXT=aif;; + *.m4a) EXT=m4a;; + esac + ffmpeg -i %d/"$1" %D/"$(basename "$1" $EXT)flac" + shift + done + +u Copy unaccented + set %t + [ -n "$1" ] || set %f + while [ -n "$1" ] + do + NEW_FNAME=$(echo "$1" | iconv -f utf-8 -t ascii//TRANSLIT | tr -c -d 'a-zA-Z_0-9 .-') + cp %d/"$1" %D/"$NEW_FNAME" + shift + done + +k kak + herbstclient spawn xterm -e "kak \"$(realpath %f)\"" + ++ s \.cue$ +s Split by this cue + set %t + [ -n "$1" ] || set %f + while [ -n "$1" ] + do + shnsplit -o flac -t '%n - %%t' -f "$1" "${1//.cue}.flac" + shift + done diff --git a/dot_config/private_mpv/mpv.conf b/dot_config/private_mpv/mpv.conf new file mode 100644 index 0000000..9efc272 --- /dev/null +++ b/dot_config/private_mpv/mpv.conf @@ -0,0 +1 @@ +hwdec=auto diff --git a/dot_config/private_pipewire/pipewire.conf b/dot_config/private_pipewire/pipewire.conf new file mode 100644 index 0000000..e9a65d5 --- /dev/null +++ b/dot_config/private_pipewire/pipewire.conf @@ -0,0 +1,248 @@ +# Daemon config file for PipeWire version "0.3.32" # +# +# Copy and edit this file in /etc/pipewire for systemwide changes +# or in ~/.config/pipewire for local changes. + +context.properties = { + ## Configure properties in the system. + #library.name.system = support/libspa-support + #context.data-loop.library.name.system = support/libspa-support + #support.dbus = true + #link.max-buffers = 64 + link.max-buffers = 16 # version < 3 clients can't handle more + #mem.warn-mlock = false + #mem.allow-mlock = true + #mem.mlock-all = false + #clock.power-of-two-quantum = true + #log.level = 2 + + core.daemon = true # listening for socket connections + core.name = pipewire-0 # core name and socket name + + ## Properties for the DSP configuration. + default.clock.rate = 44100 + default.clock.allowed-rates = [ 44100 48000 88200 96000 192000 ] + #default.clock.quantum = 1024 + #default.clock.min-quantum = 32 + #default.clock.max-quantum = 8192 + #default.video.width = 640 + #default.video.height = 480 + #default.video.rate.num = 25 + #default.video.rate.denom = 1 + # + # These overrides are only applied when running in a vm. + vm.overrides = { + default.clock.min-quantum = 1024 + } +} + +context.spa-libs = { + # = + # + # Used to find spa factory names. It maps an spa factory name + # regular expression to a library name that should contain + # that factory. + # + audio.convert.* = audioconvert/libspa-audioconvert + api.alsa.* = alsa/libspa-alsa + api.v4l2.* = v4l2/libspa-v4l2 + api.libcamera.* = libcamera/libspa-libcamera + api.bluez5.* = bluez5/libspa-bluez5 + api.vulkan.* = vulkan/libspa-vulkan + api.jack.* = jack/libspa-jack + support.* = support/libspa-support + #videotestsrc = videotestsrc/libspa-videotestsrc + #audiotestsrc = audiotestsrc/libspa-audiotestsrc +} + +context.modules = [ + #{ name = + # [ args = { = ... } ] + # [ flags = [ [ ifexists ] [ nofail ] ] + #} + # + # Loads a module with the given parameters. + # If ifexists is given, the module is ignored when it is not found. + # If nofail is given, module initialization failures are ignored. + # + + # Uses RTKit to boost the data thread priority. + { name = libpipewire-module-rtkit + args = { + #nice.level = -11 + #rt.prio = 88 + #rt.time.soft = 2000000 + #rt.time.hard = 2000000 + } + flags = [ ifexists nofail ] + } + + # Set thread priorities without using RTKit. + #{ name = libpipewire-module-rt + # args = { + # nice.level = -11 + # rt.prio = 88 + # rt.time.soft = 2000000 + # rt.time.hard = 2000000 + # } + # flags = [ ifexists nofail ] + #} + + # The native communication protocol. + { name = libpipewire-module-protocol-native } + + # The profile module. Allows application to access profiler + # and performance data. It provides an interface that is used + # by pw-top and pw-profiler. + { name = libpipewire-module-profiler } + + # Allows applications to create metadata objects. It creates + # a factory for Metadata objects. + { name = libpipewire-module-metadata } + + # Creates a factory for making devices that run in the + # context of the PipeWire server. + { name = libpipewire-module-spa-device-factory } + + # Creates a factory for making nodes that run in the + # context of the PipeWire server. + { name = libpipewire-module-spa-node-factory } + + # Allows creating nodes that run in the context of the + # client. Is used by all clients that want to provide + # data to PipeWire. + { name = libpipewire-module-client-node } + + # Allows creating devices that run in the context of the + # client. Is used by the session manager. + { name = libpipewire-module-client-device } + + # The portal module monitors the PID of the portal process + # and tags connections with the same PID as portal + # connections. + { name = libpipewire-module-portal + flags = [ ifexists nofail ] + } + + # The access module can perform access checks and block + # new clients. + { name = libpipewire-module-access + args = { + # access.allowed to list an array of paths of allowed + # apps. + #access.allowed = [ + # /usr/bin/pipewire-media-session + #] + + # An array of rejected paths. + #access.rejected = [ ] + + # An array of paths with restricted access. + #access.restricted = [ ] + + # Anything not in the above lists gets assigned the + # access.force permission. + #access.force = flatpak + } + } + + # Makes a factory for wrapping nodes in an adapter with a + # converter and resampler. + { name = libpipewire-module-adapter } + + # Makes a factory for creating links between ports. + { name = libpipewire-module-link-factory } + + # Provides factories to make session manager objects. + { name = libpipewire-module-session-manager } + + { name = libpipewire-module-zeroconf-discover } +] + +context.objects = [ + #{ factory = + # [ args = { = ... } ] + # [ flags = [ [ nofail ] ] + #} + # + # Creates an object from a PipeWire factory with the given parameters. + # If nofail is given, errors are ignored (and no object is created). + # + #{ factory = spa-node-factory args = { factory.name = videotestsrc node.name = videotestsrc Spa:Pod:Object:Param:Props:patternType = 1 } } + #{ factory = spa-device-factory args = { factory.name = api.jack.device foo=bar } flags = [ nofail ] } + #{ factory = spa-device-factory args = { factory.name = api.alsa.enum.udev } } + #{ factory = spa-node-factory args = { factory.name = api.alsa.seq.bridge node.name = Internal-MIDI-Bridge } } + #{ factory = adapter args = { factory.name = audiotestsrc node.name = my-test } } + #{ factory = spa-node-factory args = { factory.name = api.vulkan.compute.source node.name = my-compute-source } } + + # A default dummy driver. This handles nodes marked with the "node.always-driver" + # property when no other driver is currently active. JACK clients need this. + { factory = spa-node-factory + args = { + factory.name = support.node.driver + node.name = Dummy-Driver + node.group = pipewire.dummy + priority.driver = 20000 + } + } + { factory = spa-node-factory + args = { + factory.name = support.node.driver + node.name = Freewheel-Driver + priority.driver = 19000 + node.group = pipewire.freewheel + node.freewheel = true + } + } + # This creates a new Source node. It will have input ports + # that you can link, to provide audio for this source. + #{ factory = adapter + # args = { + # factory.name = support.null-audio-sink + # node.name = "my-mic" + # node.description = "Microphone" + # media.class = "Audio/Source/Virtual" + # audio.position = "FL,FR" + # } + #} + + # This creates a single PCM source device for the given + # alsa device path hw:0. You can change source to sink + # to make a sink in the same way. + #{ factory = adapter + # args = { + # factory.name = api.alsa.pcm.source + # node.name = "alsa-source" + # node.description = "PCM Source" + # media.class = "Audio/Source" + # api.alsa.path = "hw:0" + # #api.alsa.period-size = 1024 + # #api.alsa.headroom = 0 + # #api.alsa.disable-mmap = false + # #api.alsa.disable-batch = false + # #audio.format = "S16LE" + # #audio.rate = 48000 + # #audio.channels = 2 + # #audio.position = "FL,FR" + # } + #} +] + +context.exec = [ + #{ path = [ args = "" ] } + # + # Execute the given program with arguments. + # + # You can optionally start the session manager here, + # but it is better to start it as a systemd service. + # Run the session manager with -h for options. + # + #{ path = "/usr/bin/pipewire-media-session" args = "" } + # + # You can optionally start the pulseaudio-server here as well + # but it is better to start it as a systemd service. + # It can be interesting to start another daemon here that listens + # on another address with the -a option (eg. -a tcp:4713). + # + #{ path = "/usr/bin/pipewire" args = "-c pipewire-pulse.conf" } +] diff --git a/dot_config/private_qutebrowser/config.py b/dot_config/private_qutebrowser/config.py new file mode 100644 index 0000000..3800def --- /dev/null +++ b/dot_config/private_qutebrowser/config.py @@ -0,0 +1,2317 @@ +## Autogenerated config.py +## +## NOTE: config.py is intended for advanced users who are comfortable +## with manually migrating the config file on qutebrowser upgrades. If +## you prefer, you can also configure qutebrowser using the +## :set/:bind/:config-* commands without having to write a config.py +## file. +## +## Documentation: +## qute://help/configuring.html +## qute://help/settings.html + +## This is here so configs done via the GUI are still loaded. +## Remove it to not load settings done via the GUI. +config.load_autoconfig(False) + +## Aliases for commands. The keys of the given dictionary are the +## aliases, while the values are the commands they map to. +## Type: Dict +# c.aliases = {'w': 'session-save', 'q': 'close', 'qa': 'quit', 'wq': 'quit --save', 'wqa': 'quit --save'} + +## Time interval (in milliseconds) between auto-saves of +## config/cookies/etc. +## Type: Int +# c.auto_save.interval = 15000 + +## Always restore open sites when qutebrowser is reopened. Without this +## option set, `:wq` (`:quit --save`) needs to be used to save open tabs +## (and restore them), while quitting qutebrowser in any other way will +## not save/restore the session. By default, this will save to the +## session which was last loaded. This behavior can be customized via the +## `session.default_name` setting. +## Type: Bool +c.auto_save.session = True + +## Backend to use to display websites. qutebrowser supports two different +## web rendering engines / backends, QtWebEngine and QtWebKit (not +## recommended). QtWebEngine is Qt's official successor to QtWebKit, and +## both the default/recommended backend. It's based on a stripped-down +## Chromium and regularly updated with security fixes and new features by +## the Qt project: https://wiki.qt.io/QtWebEngine QtWebKit was +## qutebrowser's original backend when the project was started. However, +## support for QtWebKit was discontinued by the Qt project with Qt 5.6 in +## 2016. The development of QtWebKit was picked up in an official fork: +## https://github.com/qtwebkit/qtwebkit - however, the project seems to +## have stalled again. The latest release (5.212.0 Alpha 4) from March +## 2020 is based on a WebKit version from 2016, with many known security +## vulnerabilities. Additionally, there is no process isolation and +## sandboxing. Due to all those issues, while support for QtWebKit is +## still available in qutebrowser for now, using it is strongly +## discouraged. +## Type: String +## Valid values: +## - webengine: Use QtWebEngine (based on Chromium - recommended). +## - webkit: Use QtWebKit (based on WebKit, similar to Safari - many known security issues!). +# c.backend = 'webengine' + +## Map keys to other keys, so that they are equivalent in all modes. When +## the key used as dictionary-key is pressed, the binding for the key +## used as dictionary-value is invoked instead. This is useful for global +## remappings of keys, for example to map to . NOTE: +## This should only be used if two keys should always be equivalent, i.e. +## for things like (keypad) and (non-keypad). For normal +## command bindings, qutebrowser works differently to vim: You always +## bind keys to commands, usually via `:bind` or `config.bind()`. Instead +## of using this setting, consider finding the command a key is bound to +## (e.g. via `:bind gg`) and then binding the same command to the desired +## key. Note that when a key is bound (via `bindings.default` or +## `bindings.commands`), the mapping is ignored. +## Type: Dict +# c.bindings.key_mappings = {'': '', '': '', '': '', '': '', '': '', '': '', '': '', '': '', '': ''} + +## When to show a changelog after qutebrowser was upgraded. +## Type: String +## Valid values: +## - major: Show changelog for major upgrades (e.g. v2.0.0 -> v3.0.0). +## - minor: Show changelog for major and minor upgrades (e.g. v2.0.0 -> v2.1.0). +## - patch: Show changelog for major, minor and patch upgrades (e.g. v2.0.0 -> v2.0.1). +## - never: Never show changelog after upgrades. +# c.changelog_after_upgrade = 'minor' + +## Background color of the completion widget category headers. +## Type: QssColor +# c.colors.completion.category.bg = 'qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #888888, stop:1 #505050)' + +## Bottom border color of the completion widget category headers. +## Type: QssColor +# c.colors.completion.category.border.bottom = 'black' + +## Top border color of the completion widget category headers. +## Type: QssColor +# c.colors.completion.category.border.top = 'black' + +## Foreground color of completion widget category headers. +## Type: QtColor +# c.colors.completion.category.fg = 'white' + +## Background color of the completion widget for even rows. +## Type: QssColor +# c.colors.completion.even.bg = '#333333' + +## Text color of the completion widget. May be a single color to use for +## all columns or a list of three colors, one for each column. +## Type: List of QtColor, or QtColor +# c.colors.completion.fg = ['white', 'white', 'white'] + +## Background color of the selected completion item. +## Type: QssColor +# c.colors.completion.item.selected.bg = '#e8c000' + +## Bottom border color of the selected completion item. +## Type: QssColor +# c.colors.completion.item.selected.border.bottom = '#bbbb00' + +## Top border color of the selected completion item. +## Type: QssColor +# c.colors.completion.item.selected.border.top = '#bbbb00' + +## Foreground color of the selected completion item. +## Type: QtColor +# c.colors.completion.item.selected.fg = 'black' + +## Foreground color of the matched text in the selected completion item. +## Type: QtColor +# c.colors.completion.item.selected.match.fg = '#ff4444' + +## Foreground color of the matched text in the completion. +## Type: QtColor +# c.colors.completion.match.fg = '#ff4444' + +## Background color of the completion widget for odd rows. +## Type: QssColor +# c.colors.completion.odd.bg = '#444444' + +## Color of the scrollbar in the completion view. +## Type: QssColor +# c.colors.completion.scrollbar.bg = '#333333' + +## Color of the scrollbar handle in the completion view. +## Type: QssColor +# c.colors.completion.scrollbar.fg = 'white' + +## Background color of disabled items in the context menu. If set to +## null, the Qt default is used. +## Type: QssColor +# c.colors.contextmenu.disabled.bg = None + +## Foreground color of disabled items in the context menu. If set to +## null, the Qt default is used. +## Type: QssColor +# c.colors.contextmenu.disabled.fg = None + +## Background color of the context menu. If set to null, the Qt default +## is used. +## Type: QssColor +# c.colors.contextmenu.menu.bg = None + +## Foreground color of the context menu. If set to null, the Qt default +## is used. +## Type: QssColor +# c.colors.contextmenu.menu.fg = None + +## Background color of the context menu's selected item. If set to null, +## the Qt default is used. +## Type: QssColor +# c.colors.contextmenu.selected.bg = None + +## Foreground color of the context menu's selected item. If set to null, +## the Qt default is used. +## Type: QssColor +# c.colors.contextmenu.selected.fg = None + +## Background color for the download bar. +## Type: QssColor +# c.colors.downloads.bar.bg = 'black' + +## Background color for downloads with errors. +## Type: QtColor +# c.colors.downloads.error.bg = 'red' + +## Foreground color for downloads with errors. +## Type: QtColor +# c.colors.downloads.error.fg = 'white' + +## Color gradient start for download backgrounds. +## Type: QtColor +# c.colors.downloads.start.bg = '#0000aa' + +## Color gradient start for download text. +## Type: QtColor +# c.colors.downloads.start.fg = 'white' + +## Color gradient stop for download backgrounds. +## Type: QtColor +# c.colors.downloads.stop.bg = '#00aa00' + +## Color gradient end for download text. +## Type: QtColor +# c.colors.downloads.stop.fg = 'white' + +## Color gradient interpolation system for download backgrounds. +## Type: ColorSystem +## Valid values: +## - rgb: Interpolate in the RGB color system. +## - hsv: Interpolate in the HSV color system. +## - hsl: Interpolate in the HSL color system. +## - none: Don't show a gradient. +# c.colors.downloads.system.bg = 'rgb' + +## Color gradient interpolation system for download text. +## Type: ColorSystem +## Valid values: +## - rgb: Interpolate in the RGB color system. +## - hsv: Interpolate in the HSV color system. +## - hsl: Interpolate in the HSL color system. +## - none: Don't show a gradient. +# c.colors.downloads.system.fg = 'rgb' + +## Background color for hints. Note that you can use a `rgba(...)` value +## for transparency. +## Type: QssColor +# c.colors.hints.bg = 'qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 rgba(255, 247, 133, 0.8), stop:1 rgba(255, 197, 66, 0.8))' + +## Font color for hints. +## Type: QssColor +# c.colors.hints.fg = 'black' + +## Font color for the matched part of hints. +## Type: QtColor +# c.colors.hints.match.fg = 'green' + +## Background color of the keyhint widget. +## Type: QssColor +# c.colors.keyhint.bg = 'rgba(0, 0, 0, 80%)' + +## Text color for the keyhint widget. +## Type: QssColor +# c.colors.keyhint.fg = '#FFFFFF' + +## Highlight color for keys to complete the current keychain. +## Type: QssColor +# c.colors.keyhint.suffix.fg = '#FFFF00' + +## Background color of an error message. +## Type: QssColor +# c.colors.messages.error.bg = 'red' + +## Border color of an error message. +## Type: QssColor +# c.colors.messages.error.border = '#bb0000' + +## Foreground color of an error message. +## Type: QssColor +# c.colors.messages.error.fg = 'white' + +## Background color of an info message. +## Type: QssColor +# c.colors.messages.info.bg = 'black' + +## Border color of an info message. +## Type: QssColor +# c.colors.messages.info.border = '#333333' + +## Foreground color of an info message. +## Type: QssColor +# c.colors.messages.info.fg = 'white' + +## Background color of a warning message. +## Type: QssColor +# c.colors.messages.warning.bg = 'darkorange' + +## Border color of a warning message. +## Type: QssColor +# c.colors.messages.warning.border = '#d47300' + +## Foreground color of a warning message. +## Type: QssColor +# c.colors.messages.warning.fg = 'black' + +## Background color for prompts. +## Type: QssColor +# c.colors.prompts.bg = '#444444' + +## Border used around UI elements in prompts. +## Type: String +# c.colors.prompts.border = '1px solid gray' + +## Foreground color for prompts. +## Type: QssColor +# c.colors.prompts.fg = 'white' + +## Background color for the selected item in filename prompts. +## Type: QssColor +# c.colors.prompts.selected.bg = 'grey' + +## Background color of the statusbar in caret mode. +## Type: QssColor +# c.colors.statusbar.caret.bg = 'purple' + +## Foreground color of the statusbar in caret mode. +## Type: QssColor +# c.colors.statusbar.caret.fg = 'white' + +## Background color of the statusbar in caret mode with a selection. +## Type: QssColor +# c.colors.statusbar.caret.selection.bg = '#a12dff' + +## Foreground color of the statusbar in caret mode with a selection. +## Type: QssColor +# c.colors.statusbar.caret.selection.fg = 'white' + +## Background color of the statusbar in command mode. +## Type: QssColor +# c.colors.statusbar.command.bg = 'black' + +## Foreground color of the statusbar in command mode. +## Type: QssColor +# c.colors.statusbar.command.fg = 'white' + +## Background color of the statusbar in private browsing + command mode. +## Type: QssColor +# c.colors.statusbar.command.private.bg = 'darkslategray' + +## Foreground color of the statusbar in private browsing + command mode. +## Type: QssColor +# c.colors.statusbar.command.private.fg = 'white' + +## Background color of the statusbar in insert mode. +## Type: QssColor +# c.colors.statusbar.insert.bg = 'darkgreen' + +## Foreground color of the statusbar in insert mode. +## Type: QssColor +# c.colors.statusbar.insert.fg = 'white' + +## Background color of the statusbar. +## Type: QssColor +# c.colors.statusbar.normal.bg = 'black' + +## Foreground color of the statusbar. +## Type: QssColor +# c.colors.statusbar.normal.fg = 'white' + +## Background color of the statusbar in passthrough mode. +## Type: QssColor +# c.colors.statusbar.passthrough.bg = 'darkblue' + +## Foreground color of the statusbar in passthrough mode. +## Type: QssColor +# c.colors.statusbar.passthrough.fg = 'white' + +## Background color of the statusbar in private browsing mode. +## Type: QssColor +# c.colors.statusbar.private.bg = '#666666' + +## Foreground color of the statusbar in private browsing mode. +## Type: QssColor +# c.colors.statusbar.private.fg = 'white' + +## Background color of the progress bar. +## Type: QssColor +# c.colors.statusbar.progress.bg = 'white' + +## Foreground color of the URL in the statusbar on error. +## Type: QssColor +# c.colors.statusbar.url.error.fg = 'orange' + +## Default foreground color of the URL in the statusbar. +## Type: QssColor +# c.colors.statusbar.url.fg = 'white' + +## Foreground color of the URL in the statusbar for hovered links. +## Type: QssColor +# c.colors.statusbar.url.hover.fg = 'aqua' + +## Foreground color of the URL in the statusbar on successful load +## (http). +## Type: QssColor +# c.colors.statusbar.url.success.http.fg = 'white' + +## Foreground color of the URL in the statusbar on successful load +## (https). +## Type: QssColor +# c.colors.statusbar.url.success.https.fg = 'lime' + +## Foreground color of the URL in the statusbar when there's a warning. +## Type: QssColor +# c.colors.statusbar.url.warn.fg = 'yellow' + +## Background color of the tab bar. +## Type: QssColor +# c.colors.tabs.bar.bg = '#555555' + +## Background color of unselected even tabs. +## Type: QtColor +# c.colors.tabs.even.bg = 'darkgrey' + +## Foreground color of unselected even tabs. +## Type: QtColor +# c.colors.tabs.even.fg = 'white' + +## Color for the tab indicator on errors. +## Type: QtColor +# c.colors.tabs.indicator.error = '#ff0000' + +## Color gradient start for the tab indicator. +## Type: QtColor +# c.colors.tabs.indicator.start = '#0000aa' + +## Color gradient end for the tab indicator. +## Type: QtColor +# c.colors.tabs.indicator.stop = '#00aa00' + +## Color gradient interpolation system for the tab indicator. +## Type: ColorSystem +## Valid values: +## - rgb: Interpolate in the RGB color system. +## - hsv: Interpolate in the HSV color system. +## - hsl: Interpolate in the HSL color system. +## - none: Don't show a gradient. +# c.colors.tabs.indicator.system = 'rgb' + +## Background color of unselected odd tabs. +## Type: QtColor +# c.colors.tabs.odd.bg = 'grey' + +## Foreground color of unselected odd tabs. +## Type: QtColor +# c.colors.tabs.odd.fg = 'white' + +## Background color of pinned unselected even tabs. +## Type: QtColor +# c.colors.tabs.pinned.even.bg = 'darkseagreen' + +## Foreground color of pinned unselected even tabs. +## Type: QtColor +# c.colors.tabs.pinned.even.fg = 'white' + +## Background color of pinned unselected odd tabs. +## Type: QtColor +# c.colors.tabs.pinned.odd.bg = 'seagreen' + +## Foreground color of pinned unselected odd tabs. +## Type: QtColor +# c.colors.tabs.pinned.odd.fg = 'white' + +## Background color of pinned selected even tabs. +## Type: QtColor +# c.colors.tabs.pinned.selected.even.bg = 'black' + +## Foreground color of pinned selected even tabs. +## Type: QtColor +# c.colors.tabs.pinned.selected.even.fg = 'white' + +## Background color of pinned selected odd tabs. +## Type: QtColor +# c.colors.tabs.pinned.selected.odd.bg = 'black' + +## Foreground color of pinned selected odd tabs. +## Type: QtColor +# c.colors.tabs.pinned.selected.odd.fg = 'white' + +## Background color of selected even tabs. +## Type: QtColor +# c.colors.tabs.selected.even.bg = 'black' + +## Foreground color of selected even tabs. +## Type: QtColor +# c.colors.tabs.selected.even.fg = 'white' + +## Background color of selected odd tabs. +## Type: QtColor +# c.colors.tabs.selected.odd.bg = 'black' + +## Foreground color of selected odd tabs. +## Type: QtColor +# c.colors.tabs.selected.odd.fg = 'white' + +## Background color for webpages if unset (or empty to use the theme's +## color). +## Type: QtColor +# c.colors.webpage.bg = 'white' + +## Which algorithm to use for modifying how colors are rendered with +## darkmode. The `lightness-cielab` value was added with QtWebEngine 5.14 +## and is treated like `lightness-hsl` with older QtWebEngine versions. +## Type: String +## Valid values: +## - lightness-cielab: Modify colors by converting them to CIELAB color space and inverting the L value. Not available with Qt < 5.14. +## - lightness-hsl: Modify colors by converting them to the HSL color space and inverting the lightness (i.e. the "L" in HSL). +## - brightness-rgb: Modify colors by subtracting each of r, g, and b from their maximum value. +# c.colors.webpage.darkmode.algorithm = 'lightness-cielab' + +## Contrast for dark mode. This only has an effect when +## `colors.webpage.darkmode.algorithm` is set to `lightness-hsl` or +## `brightness-rgb`. +## Type: Float +# c.colors.webpage.darkmode.contrast = 0.0 + +## Render all web contents using a dark theme. Example configurations +## from Chromium's `chrome://flags`: - "With simple HSL/CIELAB/RGB-based +## inversion": Set `colors.webpage.darkmode.algorithm` accordingly. - +## "With selective image inversion": Set +## `colors.webpage.darkmode.policy.images` to `smart`. - "With selective +## inversion of non-image elements": Set +## `colors.webpage.darkmode.threshold.text` to 150 and +## `colors.webpage.darkmode.threshold.background` to 205. - "With +## selective inversion of everything": Combines the two variants above. +## Type: Bool +# c.colors.webpage.darkmode.enabled = False + +## Render all colors as grayscale. This only has an effect when +## `colors.webpage.darkmode.algorithm` is set to `lightness-hsl` or +## `brightness-rgb`. +## Type: Bool +# c.colors.webpage.darkmode.grayscale.all = False + +## Desaturation factor for images in dark mode. If set to 0, images are +## left as-is. If set to 1, images are completely grayscale. Values +## between 0 and 1 desaturate the colors accordingly. +## Type: Float +# c.colors.webpage.darkmode.grayscale.images = 0.0 + +## Which images to apply dark mode to. With QtWebEngine 5.15.0, this +## setting can cause frequent renderer process crashes due to a +## https://codereview.qt-project.org/c/qt/qtwebengine- +## chromium/+/304211[bug in Qt]. +## Type: String +## Valid values: +## - always: Apply dark mode filter to all images. +## - never: Never apply dark mode filter to any images. +## - smart: Apply dark mode based on image content. Not available with Qt 5.15.0. +# c.colors.webpage.darkmode.policy.images = 'smart' + +## Which pages to apply dark mode to. The underlying Chromium setting has +## been removed in QtWebEngine 5.15.3, thus this setting is ignored +## there. Instead, every element is now classified individually. +## Type: String +## Valid values: +## - always: Apply dark mode filter to all frames, regardless of content. +## - smart: Apply dark mode filter to frames based on background color. +# c.colors.webpage.darkmode.policy.page = 'smart' + +## Threshold for inverting background elements with dark mode. Background +## elements with brightness above this threshold will be inverted, and +## below it will be left as in the original, non-dark-mode page. Set to +## 256 to never invert the color or to 0 to always invert it. Note: This +## behavior is the opposite of `colors.webpage.darkmode.threshold.text`! +## Type: Int +# c.colors.webpage.darkmode.threshold.background = 0 + +## Threshold for inverting text with dark mode. Text colors with +## brightness below this threshold will be inverted, and above it will be +## left as in the original, non-dark-mode page. Set to 256 to always +## invert text color or to 0 to never invert text color. +## Type: Int +# c.colors.webpage.darkmode.threshold.text = 256 + +## Value to use for `prefers-color-scheme:` for websites. The "light" +## value is only available with QtWebEngine 5.15.2+. On older versions, +## it is the same as "auto". The "auto" value is broken on QtWebEngine +## 5.15.2 due to a Qt bug. There, it will fall back to "light" +## unconditionally. +## Type: String +## Valid values: +## - auto: Use the system-wide color scheme setting. +## - light: Force a light theme. +## - dark: Force a dark theme. +# c.colors.webpage.preferred_color_scheme = 'auto' + +## Number of commands to save in the command history. 0: no history / -1: +## unlimited +## Type: Int +# c.completion.cmd_history_max_items = 100 + +## Delay (in milliseconds) before updating completions after typing a +## character. +## Type: Int +# c.completion.delay = 0 + +## Default filesystem autocomplete suggestions for :open. The elements of +## this list show up in the completion window under the Filesystem +## category when the command line contains `:open` but no argument. +## Type: List of String +# c.completion.favorite_paths = [] + +## Height (in pixels or as percentage of the window) of the completion. +## Type: PercOrInt +# c.completion.height = '50%' + +## Minimum amount of characters needed to update completions. +## Type: Int +# c.completion.min_chars = 1 + +## Which categories to show (in which order) in the :open completion. +## Type: FlagList +## Valid values: +## - searchengines +## - quickmarks +## - bookmarks +## - history +## - filesystem +# c.completion.open_categories = ['searchengines', 'quickmarks', 'bookmarks', 'history', 'filesystem'] + +## Move on to the next part when there's only one possible completion +## left. +## Type: Bool +# c.completion.quick = True + +## Padding (in pixels) of the scrollbar handle in the completion window. +## Type: Int +# c.completion.scrollbar.padding = 2 + +## Width (in pixels) of the scrollbar in the completion window. +## Type: Int +# c.completion.scrollbar.width = 12 + +## When to show the autocompletion window. +## Type: String +## Valid values: +## - always: Whenever a completion is available. +## - auto: Whenever a completion is requested. +## - never: Never. +# c.completion.show = 'always' + +## Shrink the completion to be smaller than the configured size if there +## are no scrollbars. +## Type: Bool +# c.completion.shrink = False + +## Format of timestamps (e.g. for the history completion). See +## https://sqlite.org/lang_datefunc.html and +## https://docs.python.org/3/library/datetime.html#strftime-strptime- +## behavior for allowed substitutions, qutebrowser uses both sqlite and +## Python to format its timestamps. +## Type: String +# c.completion.timestamp_format = '%Y-%m-%d %H:%M' + +## Execute the best-matching command on a partial match. +## Type: Bool +# c.completion.use_best_match = False + +## A list of patterns which should not be shown in the history. This only +## affects the completion. Matching URLs are still saved in the history +## (and visible on the `:history` page), but hidden in the completion. +## Changing this setting will cause the completion history to be +## regenerated on the next start, which will take a short while. +## Type: List of UrlPattern +# c.completion.web_history.exclude = [] + +## Number of URLs to show in the web history. 0: no history / -1: +## unlimited +## Type: Int +# c.completion.web_history.max_items = -1 + +## Require a confirmation before quitting the application. +## Type: ConfirmQuit +## Valid values: +## - always: Always show a confirmation. +## - multiple-tabs: Show a confirmation if multiple tabs are opened. +## - downloads: Show a confirmation if downloads are running +## - never: Never show a confirmation. +# c.confirm_quit = ['never'] + +## Automatically start playing `