From 9f27ccae29bcb4eb6c5811b7490d9da8d1c23b0c Mon Sep 17 00:00:00 2001 From: foozzi Date: Sat, 23 Dec 2023 16:30:24 -0500 Subject: [PATCH] stow --- .gitattributes | 2 + .github/README.md | 1 + .gitmodules | 3 + global/.gitconfig | 17 + global/.ideavimrc | 28 + global/.ssh/config | Bin 0 -> 489 bytes global/.tern-project | 11 + global/scripts/vimwiki_diary_template | 25 + linux/.config/alacritty/alacritty.yml | 1016 +++++++++++++++++ linux/.config/mutt/gruvbox/README.md | 35 + .../colors-gruvbox-shuber-extended.muttrc | 1 + .../mutt/gruvbox/colors-gruvbox-shuber.muttrc | 121 ++ linux/.config/mutt/mailcap | 4 + linux/.config/mutt/muttrc | Bin 0 -> 4355 bytes linux/.tmux.conf | 56 + linux/.vimrc | 261 +++++ linux/.zshrc | 104 ++ 17 files changed, 1685 insertions(+) create mode 100644 .gitattributes create mode 100644 .github/README.md create mode 100644 .gitmodules create mode 100644 global/.gitconfig create mode 100644 global/.ideavimrc create mode 100644 global/.ssh/config create mode 100644 global/.tern-project create mode 100755 global/scripts/vimwiki_diary_template create mode 100644 linux/.config/alacritty/alacritty.yml create mode 100644 linux/.config/mutt/gruvbox/README.md create mode 100644 linux/.config/mutt/gruvbox/colors-gruvbox-shuber-extended.muttrc create mode 100644 linux/.config/mutt/gruvbox/colors-gruvbox-shuber.muttrc create mode 100644 linux/.config/mutt/mailcap create mode 100644 linux/.config/mutt/muttrc create mode 100755 linux/.tmux.conf create mode 100644 linux/.vimrc create mode 100644 linux/.zshrc diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..4f288b2 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +muttrc filter=git-crypt diff=git-crypt +global/.ssh/config filter=git-crypt diff=git-crypt diff --git a/.github/README.md b/.github/README.md new file mode 100644 index 0000000..eb1ae45 --- /dev/null +++ b/.github/README.md @@ -0,0 +1 @@ +... diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..7fd1907 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "linux/.config/mutt/gruvbox"] + path = linux/.config/mutt/gruvbox + url = https://git.sthu.org/repos/mutt-gruvbox.git diff --git a/global/.gitconfig b/global/.gitconfig new file mode 100644 index 0000000..7b2c134 --- /dev/null +++ b/global/.gitconfig @@ -0,0 +1,17 @@ +[user] + name = foozzi + email = foozzione@gmail.com +[core] + excludesfile = "$HOME/.gitignore" + pager = delta +[interactive] + diffFilter = delta --color-only +[delta] + navigate = true # use n and N to move between diff sections + light = false # set to true if you're in a terminal w/ a light background color (e.g. the default macOS terminal) +[merge] + conflictstyle = diff3 +[diff] + colorMoved = default +[init] + defaultBranch = master diff --git a/global/.ideavimrc b/global/.ideavimrc new file mode 100644 index 0000000..d5e5226 --- /dev/null +++ b/global/.ideavimrc @@ -0,0 +1,28 @@ +" load system vim config +source ~/.vimrc +set ideajoin +" .ideavimrc is a configuration file for IdeaVim plugin. It uses +" the same commands as the original .vimrc configuration. +" You can find a list of commands here: https://jb.gg/h38q75 +" Find more examples here: https://jb.gg/share-ideavimrc + + +" Don't use Ex mode, use Q for formatting. +map Q gq + +"" -- Map IDE actions to IdeaVim -- https://jb.gg/abva4t +"" Map \r to the Reformat Code action +"" map \r (ReformatCode) + +"" Map d to start debug +"map d (Debug) + +"" Map \b to toggle the breakpoint on the current line +"map \b (ToggleLineBreakpoint) +"" +map nf (NewFile) +map nd (NewDir) +map tt (ActivateTerminalToolWindow) +map rr (IdeaVim.ReloadVimRc.reload) +map go (GotoDeclaration) +map ru (runShellFileAction) \ No newline at end of file diff --git a/global/.ssh/config b/global/.ssh/config new file mode 100644 index 0000000000000000000000000000000000000000..5521e221fc1acc174a14e1438a16fa05e1f1c19d GIT binary patch literal 489 zcmV6>(0%@sh2PD%TB4?Um7XB_WUK2H_hNfkg*_*x)SJ9ntHfaO zJ!?q~jtd<2W8x%R&4a6BVGfP}7&34s-ZWhjQE(hm`{6)gbFFrlulA8WGcKaztLZhQ z=3En~%h)aMqQj&N`%a@F;jn;+XPw`5wOeuU-Yu@a4)z=&6gWu@*1ShTb(jv8{stOp zz+m?C!mK2(duCmZ)G#@7SoE@l^qs3J5gvJL&;S%(XDEbw`JPs$r#B8x7Mgv0K1r3r!sckY z%%$(vN%QYy;c5xv)vs~!k`?!%{R~y^hrfbopy^gRdqdNRmaC}YW37FmRd58-(&2VK zpI)q_Nl2$+k?+HSe?UTzF7S5(_asuG{1kr<8pK7xG=RmWDFzFWmPc~D` z1nQr#Y3-nHZqlP6BmmxdDgQ!oW(LL>yx3=J-+Irh7#~2k-zb#uM8dArgu#(D@P3z{ f*MhYP$F|ZU;@l_c@soj$F)zi?V4Ti|WBMYvbfx;~ literal 0 HcmV?d00001 diff --git a/global/.tern-project b/global/.tern-project new file mode 100644 index 0000000..5f3e6e3 --- /dev/null +++ b/global/.tern-project @@ -0,0 +1,11 @@ +{ + "ecmaVersion": 6, + "libs": [ + "browser", + "react" + ], + "plugins": { + "node": {}, + "jsx": {} + } +} diff --git a/global/scripts/vimwiki_diary_template b/global/scripts/vimwiki_diary_template new file mode 100755 index 0000000..99eaacf --- /dev/null +++ b/global/scripts/vimwiki_diary_template @@ -0,0 +1,25 @@ +#!/usr/bin/env python3 +import datetime +import urllib.request +from urllib.parse import quote_plus + + +weather_url = "https://wttr.in/Ottawa?format=" +url_part = "Time:+%T;+%l:+%c+%t+(%f);+%m;+Precipitation:+%p+(3hour);+Pressure:+%P;+UV index:+%u;+Sunrise:+%S;+Dawn:+%D;" +encode_url_part = quote_plus(url_part) + +template = """ +Date: {date} +Weather: {weather} + +== Notes == +""" + +current_date_time = datetime.datetime.now() +formatted_date_time = current_date_time.strftime('%a %b %d %H:%M:%S %Z %Y') + +response = urllib.request.urlopen(weather_url + encode_url_part) +weather_data = response.read().decode("utf-8").replace("+", " ") + + +print(template.format(date=formatted_date_time, weather=weather_data)) diff --git a/linux/.config/alacritty/alacritty.yml b/linux/.config/alacritty/alacritty.yml new file mode 100644 index 0000000..a659c56 --- /dev/null +++ b/linux/.config/alacritty/alacritty.yml @@ -0,0 +1,1016 @@ +# Configuration for Alacritty, the GPU enhanced terminal emulator. + +# Import additional configuration files +# +# Imports are loaded in order, skipping all missing files, with the importing +# file being loaded last. If a field is already present in a previous import, it +# will be replaced. +# +# All imports must either be absolute paths starting with `/`, or paths relative +# to the user's home directory starting with `~/`. +#import: +# - /path/to/alacritty.yml + +# Any items in the `env` entry below will be added as +# environment variables. Some entries may override variables +# set by alacritty itself. +env: + # TERM variable + # + # This value is used to set the `$TERM` environment variable for + # each instance of Alacritty. If it is not present, alacritty will + # check the local terminfo database and use `alacritty` if it is + # available, otherwise `xterm-256color` is used. + TERM: xterm-256color + +window: + # Window dimensions (changes require restart) + # + # Number of lines/columns (not pixels) in the terminal. Both lines and columns + # must be non-zero for this to take effect. The number of columns must be at + # least `2`, while using a value of `0` for columns and lines will fall back + # to the window manager's recommended size + #dimensions: + # columns: 0 + # lines: 0 + + # Window position (changes require restart) + # + # Specified in number of pixels. + # If the position is not set, the window manager will handle the placement. + #position: + # x: 0 + # y: 0 + + # Window padding (changes require restart) + # + # Blank space added around the window in pixels. This padding is scaled + # by DPI and the specified value is always added at both opposing sides. + padding: + x: 2 + y: 2 + + # Spread additional padding evenly around the terminal content. + dynamic_padding: false + + # Window decorations + # + # Values for `decorations`: + # - full: Borders and title bar + # - none: Neither borders nor title bar + # + # Values for `decorations` (macOS only): + # - transparent: Title bar, transparent background and title bar buttons + # - buttonless: Title bar, transparent background and no title bar buttons + decorations: full + + # Background opacity + # + # Window opacity as a floating point number from `0.0` to `1.0`. + # The value `0.0` is completely transparent and `1.0` is opaque. + #opacity: 1.0 + + # Startup Mode (changes require restart) + # + # Values for `startup_mode`: + # - Windowed + # - Maximized + # - Fullscreen + # + # Values for `startup_mode` (macOS only): + # - SimpleFullscreen + startup_mode: Maximized + + # Window title + #title: Alacritty + + # Allow terminal applications to change Alacritty's window title. + dynamic_title: true + + # Window class (Linux/BSD only): + #class: + # Application instance name + #instance: Alacritty + # General application class + #general: Alacritty + + # Decorations theme variant + # + # Override the variant of the System theme/GTK theme/Wayland client side + # decorations. Commonly supported values are `Dark`, `Light`, and `None` for + # auto pick-up. Set this to `None` to use the default theme variant. + #decorations_theme_variant: None + + # Resize increments + # + # Prefer resizing window by discrete steps equal to cell dimensions. + #resize_increments: false + + # Make `Option` key behave as `Alt` (macOS only): + # - OnlyLeft + # - OnlyRight + # - Both + # - None (default) + #option_as_alt: None + +scrolling: + # Maximum number of lines in the scrollback buffer. + # Specifying '0' will disable scrolling. + history: 50000 + + # Scrolling distance multiplier. + multiplier: 3 + +# Font configuration +font: + # Normal (roman) font face + normal: + # Font family + # + # Default: + # - (macOS) Menlo + # - (Linux/BSD) monospace + # - (Windows) Consolas + family: JetBrainsMono NF + + # The `style` can be specified to pick a specific face. + style: Regular + + # Bold font face + bold: + # Font family + # + # If the bold family is not specified, it will fall back to the + # value specified for the normal font. + family: JetBrainsMono NF + + # The `style` can be specified to pick a specific face. + style: Bold + + # Italic font face + italic: + # Font family + # + # If the italic family is not specified, it will fall back to the + # value specified for the normal font. + family: JetBrainsMono NF + + # The `style` can be specified to pick a specific face. + style: Italic + + # Bold italic font face + bold_italic: + # Font family + # + # If the bold italic family is not specified, it will fall back to the + # value specified for the normal font. + family: JetBrainsMono NF + + # The `style` can be specified to pick a specific face. + style: Bold Italic + + # Point size + size: 10.0 + + # Offset is the extra space around each character. `offset.y` can be thought + # of as modifying the line spacing, and `offset.x` as modifying the letter + # spacing. + #offset: + # x: 0 + # y: 0 + + # Glyph offset determines the locations of the glyphs within their cells with + # the default being at the bottom. Increasing `x` moves the glyph to the + # right, increasing `y` moves the glyph upward. + #glyph_offset: + # x: 0 + # y: 0 + + # Use built-in font for box drawing characters. + # + # If `true`, Alacritty will use a custom built-in font for box drawing + # characters (Unicode points 2500 - 259f). + # + #builtin_box_drawing: true + +# If `true`, bold text is drawn using the bright color variants. +#draw_bold_text_with_bright_colors: false + +# Colors (Tomorrow Night) +#colors: + # Default colors + #primary: + # background: '#1d1f21' + # foreground: '#c5c8c6' + + # Bright and dim foreground colors + # + # The dimmed foreground color is calculated automatically if it is not + # present. If the bright foreground color is not set, or + # `draw_bold_text_with_bright_colors` is `false`, the normal foreground + # color will be used. + #dim_foreground: '#828482' + #bright_foreground: '#eaeaea' + +import: + - ~/.config/alacritty/themes/dracula.yml + + # Cursor colors + # + # Colors which should be used to draw the terminal cursor. + # + # Allowed values are CellForeground/CellBackground, which reference the + # affected cell, or hexadecimal colors like #ff00ff. + #cursor: + # text: CellBackground + # cursor: CellForeground + + # Vi mode cursor colors + # + # Colors for the cursor when the vi mode is active. + # + # Allowed values are CellForeground/CellBackground, which reference the + # affected cell, or hexadecimal colors like #ff00ff. + #vi_mode_cursor: + # text: CellBackground + # cursor: CellForeground + + # Search colors + # + # Colors used for the search bar and match highlighting. + #search: + # Allowed values are CellForeground/CellBackground, which reference the + # affected cell, or hexadecimal colors like #ff00ff. + #matches: + # foreground: '#000000' + # background: '#ffffff' + #focused_match: + # foreground: '#ffffff' + # background: '#000000' + + # Keyboard hints + #hints: + # First character in the hint label + # + # Allowed values are CellForeground/CellBackground, which reference the + # affected cell, or hexadecimal colors like #ff00ff. + #start: + # foreground: '#1d1f21' + # background: '#e9ff5e' + + # All characters after the first one in the hint label + # + # Allowed values are CellForeground/CellBackground, which reference the + # affected cell, or hexadecimal colors like #ff00ff. + #end: + # foreground: '#e9ff5e' + # background: '#1d1f21' + + # Line indicator + # + # Color used for the indicator displaying the position in history during + # search and vi mode. + # + # By default, these will use the opposing primary color. + #line_indicator: + # foreground: None + # background: None + + # Footer bar + # + # Color used for the footer bar on the bottom, used by search regex input, + # hyperlink URI preview, etc. + # + #footer_bar: + # background: '#c5c8c6' + # foreground: '#1d1f21' + + # Selection colors + # + # Colors which should be used to draw the selection area. + # + # Allowed values are CellForeground/CellBackground, which reference the + # affected cell, or hexadecimal colors like #ff00ff. + #selection: + # text: CellBackground + # background: CellForeground + + # Normal colors + #normal: + # black: '#1d1f21' + # red: '#cc6666' + # green: '#b5bd68' + # yellow: '#f0c674' + # blue: '#81a2be' + # magenta: '#b294bb' + # cyan: '#8abeb7' + # white: '#c5c8c6' + + # Bright colors + #bright: + # black: '#666666' + # red: '#d54e53' + # green: '#b9ca4a' + # yellow: '#e7c547' + # blue: '#7aa6da' + # magenta: '#c397d8' + # cyan: '#70c0b1' + # white: '#eaeaea' + + # Dim colors + # + # If the dim colors are not set, they will be calculated automatically based + # on the `normal` colors. + #dim: + # black: '#131415' + # red: '#864343' + # green: '#777c44' + # yellow: '#9e824c' + # blue: '#556a7d' + # magenta: '#75617b' + # cyan: '#5b7d78' + # white: '#828482' + + # Indexed Colors + # + # The indexed colors include all colors from 16 to 256. + # When these are not set, they're filled with sensible defaults. + # + # Example: + # `- { index: 16, color: '#ff00ff' }` + # + #indexed_colors: [] + + # Transparent cell backgrounds + # + # Whether or not `window.opacity` applies to all cell backgrounds or only to + # the default background. When set to `true` all cells will be transparent + # regardless of their background color. + #transparent_background_colors: false + +# Bell +# +# The bell is rung every time the BEL control character is received. +#bell: + # Visual Bell Animation + # + # Animation effect for flashing the screen when the visual bell is rung. + # + # Values for `animation`: + # - Ease + # - EaseOut + # - EaseOutSine + # - EaseOutQuad + # - EaseOutCubic + # - EaseOutQuart + # - EaseOutQuint + # - EaseOutExpo + # - EaseOutCirc + # - Linear + #animation: EaseOutExpo + + # Duration of the visual bell flash in milliseconds. A `duration` of `0` will + # disable the visual bell animation. + #duration: 0 + + # Visual bell animation color. + #color: '#ffffff' + + # Bell Command + # + # This program is executed whenever the bell is rung. + # + # When set to `command: None`, no command will be executed. + # + # Example: + # command: + # program: notify-send + # args: ["Hello, World!"] + # + #command: None + +selection: + # This string contains all characters that are used as separators for + # "semantic words" in Alacritty. + semantic_escape_chars: ",│`|:\"' ()[]{}<>\t" + + # When set to `true`, selected text will be copied to the primary clipboard. + save_to_clipboard: false + +cursor: + # Cursor style + style: + # Cursor shape + # + # Values for `shape`: + # - ▇ Block + # - _ Underline + # - | Beam + shape: Block + + # Cursor blinking state + # + # Values for `blinking`: + # - Never: Prevent the cursor from ever blinking + # - Off: Disable blinking by default + # - On: Enable blinking by default + # - Always: Force the cursor to always blink + #blinking: Off + + # Vi mode cursor style + # + # If the vi mode cursor style is `None` or not specified, it will fall back to + # the style of the active value of the normal cursor. + # + # See `cursor.style` for available options. + #vi_mode_style: None + + # Cursor blinking interval in milliseconds. + #blink_interval: 750 + + # Time after which cursor stops blinking, in seconds. + # + # Specifying '0' will disable timeout for blinking. + #blink_timeout: 5 + + # If this is `true`, the cursor will be rendered as a hollow box when the + # window is not focused. + unfocused_hollow: true + + # Thickness of the cursor relative to the cell width as floating point number + # from `0.0` to `1.0`. + #thickness: 0.15 + +# Live config reload (changes require restart) +live_config_reload: true + +# Shell +# +# You can set `shell.program` to the path of your favorite shell, e.g. +# `/bin/fish`. Entries in `shell.args` are passed unmodified as arguments to the +# shell. +# +# Default: +# - (Linux/BSD/macOS) `$SHELL` or the user's login shell, if `$SHELL` is unset +# - (Windows) powershell +shell: + program: /bin/zsh + args: + - -l + - -c + - "tmux attach || tmux" + #- "emacs" + +# Startup directory +# +# Directory the shell is started in. If this is unset, or `None`, the working +# directory of the parent process will be used. +#working_directory: None + +# Offer IPC using `alacritty msg` (unix only) +#ipc_socket: true + +mouse: + # Click settings + # + # The `double_click` and `triple_click` settings control the time + # alacritty should wait for accepting multiple clicks as one double + # or triple click. + double_click: { threshold: 300 } + triple_click: { threshold: 300 } + + # If this is `true`, the cursor is temporarily hidden when typing. + #hide_when_typing: false + +# Hints +# +# Terminal hints can be used to find text or hyperlink in the visible part of +# the terminal and pipe it to other applications. +#hints: + # Keys used for the hint labels. + #alphabet: "jfkdls;ahgurieowpq" + + # List with all available hints + # + # Each hint must have any of `regex` or `hyperlinks` field and either an + # `action` or a `command` field. The fields `mouse`, `binding` and + # `post_processing` are optional. + # + # The `hyperlinks` option will cause OSC 8 escape sequence hyperlinks to be + # highlighted. + # + # The fields `command`, `binding.key`, `binding.mods`, `binding.mode` and + # `mouse.mods` accept the same values as they do in the `key_bindings` section. + # + # The `mouse.enabled` field controls if the hint should be underlined while + # the mouse with all `mouse.mods` keys held or the vi mode cursor is above it. + # + # If the `post_processing` field is set to `true`, heuristics will be used to + # shorten the match if there are characters likely not to be part of the hint + # (e.g. a trailing `.`). This is most useful for URIs and applies only to + # `regex` matches. + # + # Values for `action`: + # - Copy + # Copy the hint's text to the clipboard. + # - Paste + # Paste the hint's text to the terminal or search. + # - Select + # Select the hint's text. + # - MoveViModeCursor + # Move the vi mode cursor to the beginning of the hint. + #enabled: + # - regex: "(ipfs:|ipns:|magnet:|mailto:|gemini:|gopher:|https:|http:|news:|file:|git:|ssh:|ftp:)\ + # [^\u0000-\u001F\u007F-\u009F<>\"\\s{-}\\^⟨⟩`]+" + # hyperlinks: true + # command: xdg-open + # post_processing: true + # mouse: + # enabled: true + # mods: None + # binding: + # key: U + # mods: Control|Shift + +# Mouse bindings +# +# Mouse bindings are specified as a list of objects, much like the key +# bindings further below. +# +# To trigger mouse bindings when an application running within Alacritty +# captures the mouse, the `Shift` modifier is automatically added as a +# requirement. +# +# Each mouse binding will specify a: +# +# - `mouse`: +# +# - Middle +# - Left +# - Right +# - Numeric identifier such as `5` +# +# - `action` (see key bindings for actions not exclusive to mouse mode) +# +# - Mouse exclusive actions: +# +# - ExpandSelection +# Expand the selection to the current mouse cursor location. +# +# And optionally: +# +# - `mods` (see key bindings) +#mouse_bindings: +# - { mouse: Right, action: ExpandSelection } +# - { mouse: Right, mods: Control, action: ExpandSelection } +# - { mouse: Middle, mode: ~Vi, action: PasteSelection } + +# Key bindings +# +# Key bindings are specified as a list of objects. For example, this is the +# default paste binding: +# +# `- { key: V, mods: Control|Shift, action: Paste }` +# +# Each key binding will specify a: +# +# - `key`: Identifier of the key pressed +# +# - A-Z +# - F1-F24 +# - Key0-Key9 +# +# A full list with available key codes can be found here: +# https://docs.rs/winit/*/winit/event/enum.VirtualKeyCode.html#variants +# +# Instead of using the name of the keys, the `key` field also supports using +# the scancode of the desired key. Scancodes have to be specified as a +# decimal number. This command will allow you to display the hex scancodes +# for certain keys: +# +# `showkey --scancodes`. +# +# Then exactly one of: +# +# - `chars`: Send a byte sequence to the running application +# +# The `chars` field writes the specified string to the terminal. This makes +# it possible to pass escape sequences. To find escape codes for bindings +# like `PageUp` (`"\x1b[5~"`), you can run the command `showkey -a` outside +# of tmux. Note that applications use terminfo to map escape sequences back +# to keys. It is therefore required to update the terminfo when changing an +# escape sequence. +# +# - `action`: Execute a predefined action +# +# - ToggleViMode +# - SearchForward +# Start searching toward the right of the search origin. +# - SearchBackward +# Start searching toward the left of the search origin. +# - Copy +# - Paste +# - IncreaseFontSize +# - DecreaseFontSize +# - ResetFontSize +# - ScrollPageUp +# - ScrollPageDown +# - ScrollHalfPageUp +# - ScrollHalfPageDown +# - ScrollLineUp +# - ScrollLineDown +# - ScrollToTop +# - ScrollToBottom +# - ClearHistory +# Remove the terminal's scrollback history. +# - Hide +# Hide the Alacritty window. +# - Minimize +# Minimize the Alacritty window. +# - Quit +# Quit Alacritty. +# - ToggleFullscreen +# - ToggleMaximized +# - SpawnNewInstance +# Spawn a new instance of Alacritty. +# - CreateNewWindow +# Create a new Alacritty window from the current process. +# - ClearLogNotice +# Clear Alacritty's UI warning and error notice. +# - ClearSelection +# Remove the active selection. +# - ReceiveChar +# - None +# +# - Vi mode exclusive actions: +# +# - Open +# Perform the action of the first matching hint under the vi mode cursor +# with `mouse.enabled` set to `true`. +# - ToggleNormalSelection +# - ToggleLineSelection +# - ToggleBlockSelection +# - ToggleSemanticSelection +# Toggle semantic selection based on `selection.semantic_escape_chars`. +# - CenterAroundViCursor +# Center view around vi mode cursor +# +# - Vi mode exclusive cursor motion actions: +# +# - Up +# One line up. +# - Down +# One line down. +# - Left +# One character left. +# - Right +# One character right. +# - First +# First column, or beginning of the line when already at the first column. +# - Last +# Last column, or beginning of the line when already at the last column. +# - FirstOccupied +# First non-empty cell in this terminal row, or first non-empty cell of +# the line when already at the first cell of the row. +# - High +# Top of the screen. +# - Middle +# Center of the screen. +# - Low +# Bottom of the screen. +# - SemanticLeft +# Start of the previous semantically separated word. +# - SemanticRight +# Start of the next semantically separated word. +# - SemanticLeftEnd +# End of the previous semantically separated word. +# - SemanticRightEnd +# End of the next semantically separated word. +# - WordLeft +# Start of the previous whitespace separated word. +# - WordRight +# Start of the next whitespace separated word. +# - WordLeftEnd +# End of the previous whitespace separated word. +# - WordRightEnd +# End of the next whitespace separated word. +# - Bracket +# Character matching the bracket at the cursor's location. +# - SearchNext +# Beginning of the next match. +# - SearchPrevious +# Beginning of the previous match. +# - SearchStart +# Start of the match to the left of the vi mode cursor. +# - SearchEnd +# End of the match to the right of the vi mode cursor. +# +# - Search mode exclusive actions: +# - SearchFocusNext +# Move the focus to the next search match. +# - SearchFocusPrevious +# Move the focus to the previous search match. +# - SearchConfirm +# - SearchCancel +# - SearchClear +# Reset the search regex. +# - SearchDeleteWord +# Delete the last word in the search regex. +# - SearchHistoryPrevious +# Go to the previous regex in the search history. +# - SearchHistoryNext +# Go to the next regex in the search history. +# +# - macOS exclusive actions: +# - ToggleSimpleFullscreen +# Enter fullscreen without occupying another space. +# +# - Linux/BSD exclusive actions: +# +# - CopySelection +# Copy from the selection buffer. +# - PasteSelection +# Paste from the selection buffer. +# +# - `command`: Fork and execute a specified command plus arguments +# +# The `command` field must be a map containing a `program` string and an +# `args` array of command line parameter strings. For example: +# `{ program: "alacritty", args: ["-e", "vttest"] }` +# +# And optionally: +# +# - `mods`: Key modifiers to filter binding actions +# +# - Command +# - Control +# - Option +# - Super +# - Shift +# - Alt +# +# Multiple `mods` can be combined using `|` like this: +# `mods: Control|Shift`. +# Whitespace and capitalization are relevant and must match the example. +# +# - `mode`: Indicate a binding for only specific terminal reported modes +# +# This is mainly used to send applications the correct escape sequences +# when in different modes. +# +# - AppCursor +# - AppKeypad +# - Search +# - Alt +# - Vi +# +# A `~` operator can be used before a mode to apply the binding whenever +# the mode is *not* active, e.g. `~Alt`. +# +# Bindings are always filled by default, but will be replaced when a new +# binding with the same triggers is defined. To unset a default binding, it can +# be mapped to the `ReceiveChar` action. Alternatively, you can use `None` for +# a no-op if you do not wish to receive input characters for that binding. +# +# If the same trigger is assigned to multiple actions, all of them are executed +# in the order they were defined in. +key_bindings: + - { key: W, mods: Alt, chars: "\x1bW" } + # - { key: 26, mods: Control, chars: "\x01h" } + # - { key: 27, mods: Control, chars: "\x01l" } + # - { key: D, mods: Command, chars: "\x1bd" } + # - { key: E, mods: Control, chars: "\x1be" } + # - { key: T, mods: Control, chars: "\x1bt" } + - { key: X, mods: Alt, chars: "\x1bX" } + - { key: 27, mods: Alt|Shift, chars: "\x1bn" } + - { key: 26, mods: Alt|Shift, chars: "\x1bp" } + - { key: Z, mods: Alt, chars: "\x01w" } + + # tmux resurrect plugin + - { key: S, mods: Alt, chars: "\x01\x13" } + - { key: R, mods: Alt, chars: "\x01\x12" } + + # move cursor per word + # - { key: Right, mods: Alt, chars: "\x1bF" } + # - { key: Left, mods: Alt, chars: "\x1bB" } + + # - { key: C, mods: Alt, chars: "\x1bc" } + + + # emacs + # - { key: A, mods: Alt, chars: "\x1ba" } + # - { key: B, mods: Alt, chars: "\x1bb" } + # - { key: C, mods: Alt, chars: "\x1bc" } + # - { key: D, mods: Alt, chars: "\x1bd" } + # - { key: E, mods: Alt, chars: "\x1be" } + # - { key: F, mods: Alt, chars: "\x1bf" } + # - { key: G, mods: Alt, chars: "\x1bg" } + # - { key: H, mods: Alt, chars: "\x1bh" } + # - { key: I, mods: Alt, chars: "\x1bi" } + # - { key: J, mods: Alt, chars: "\x1bj" } + # - { key: K, mods: Alt, chars: "\x1bk" } + # - { key: L, mods: Alt, chars: "\x1bl" } + # - { key: M, mods: Alt, chars: "\x1bm" } + # - { key: N, mods: Alt, chars: "\x1bn" } + # - { key: O, mods: Alt, chars: "\x1bo" } + # - { key: P, mods: Alt, chars: "\x1bp" } + # - { key: Q, mods: Alt, chars: "\x1bq" } + # - { key: R, mods: Alt, chars: "\x1br" } + # - { key: S, mods: Alt, chars: "\x1bs" } + # - { key: T, mods: Alt, chars: "\x1bt" } + # - { key: U, mods: Alt, chars: "\x1bu" } + # - { key: V, mods: Alt, chars: "\x1bv" } + # - { key: W, mods: Alt, chars: "\x1bw" } + # - { key: X, mods: Alt, chars: "\x1bx" } + # - { key: Y, mods: Alt, chars: "\x1by" } + # - { key: Z, mods: Alt, chars: "\x1bz" } + # - { key: A, mods: Alt|Shift, chars: "\x1bA" } + # - { key: B, mods: Alt|Shift, chars: "\x1bB" } + # - { key: C, mods: Alt|Shift, chars: "\x1bC" } + # - { key: D, mods: Alt|Shift, chars: "\x1bD" } + # - { key: E, mods: Alt|Shift, chars: "\x1bE" } + # - { key: F, mods: Alt|Shift, chars: "\x1bF" } + # - { key: G, mods: Alt|Shift, chars: "\x1bG" } + # - { key: H, mods: Alt|Shift, chars: "\x1bH" } + # - { key: I, mods: Alt|Shift, chars: "\x1bI" } + # - { key: J, mods: Alt|Shift, chars: "\x1bJ" } + # - { key: K, mods: Alt|Shift, chars: "\x1bK" } + # - { key: L, mods: Alt|Shift, chars: "\x1bL" } + # - { key: M, mods: Alt|Shift, chars: "\x1bM" } + # - { key: N, mods: Alt|Shift, chars: "\x1bN" } + # - { key: O, mods: Alt|Shift, chars: "\x1bO" } + # - { key: P, mods: Alt|Shift, chars: "\x1bP" } + # - { key: Q, mods: Alt|Shift, chars: "\x1bQ" } + # - { key: R, mods: Alt|Shift, chars: "\x1bR" } + # - { key: S, mods: Alt|Shift, chars: "\x1bS" } + # - { key: T, mods: Alt|Shift, chars: "\x1bT" } + # - { key: U, mods: Alt|Shift, chars: "\x1bU" } + # - { key: V, mods: Alt|Shift, chars: "\x1bV" } + # - { key: W, mods: Alt|Shift, chars: "\x1bW" } + # - { key: X, mods: Alt|Shift, chars: "\x1bX" } + # - { key: Y, mods: Alt|Shift, chars: "\x1bY" } + # - { key: Z, mods: Alt|Shift, chars: "\x1bZ" } + # - { key: Key1, mods: Alt, chars: "\x1b1" } + # - { key: Key2, mods: Alt, chars: "\x1b2" } + # - { key: Key3, mods: Alt, chars: "\x1b3" } + # - { key: Key4, mods: Alt, chars: "\x1b4" } + # - { key: Key5, mods: Alt, chars: "\x1b5" } + # - { key: Key6, mods: Alt, chars: "\x1b6" } + # - { key: Key7, mods: Alt, chars: "\x1b7" } + # - { key: Key8, mods: Alt, chars: "\x1b8" } + # - { key: Key9, mods: Alt, chars: "\x1b9" } + # - { key: Key0, mods: Alt, chars: "\x1b0" } + # - { key: Space, mods: Control, chars: "\x00" } # Ctrl + Space + # - { key: Grave, mods: Alt, chars: "\x1b`" } # Alt + ` + # - { key: Grave, mods: Alt|Shift, chars: "\x1b~" } # Alt + ~ + # - { key: Period, mods: Alt, chars: "\x1b." } # Alt + . + # - { key: Key8, mods: Alt|Shift, chars: "\x1b*" } # Alt + * + # - { key: Key3, mods: Alt|Shift, chars: "\x1b#" } # Alt + # + # - { key: Period, mods: Alt|Shift, chars: "\x1b>" } # Alt + > + # - { key: Comma, mods: Alt|Shift, chars: "\x1b<" } # Alt + < + # - { key: Minus, mods: Alt|Shift, chars: "\x1b_" } # Alt + _ + # - { key: Key5, mods: Alt|Shift, chars: "\x1b%" } # Alt + % + # - { key: Key6, mods: Alt|Shift, chars: "\x1b^" } # Alt + ^ + # - { key: Backslash, mods: Alt, chars: "\x1b\\" } # Alt + \ + # - { key: Backslash, mods: Alt|Shift, chars: "\x1b|" } # Alt + | + + #- { key: Paste, action: Paste } + #- { key: Copy, action: Copy } + #- { key: L, mods: Control, action: ClearLogNotice } + #- { key: L, mods: Control, mode: ~Vi|~Search, chars: "\x0c" } + #- { key: PageUp, mods: Shift, mode: ~Alt, action: ScrollPageUp } + #- { key: PageDown, mods: Shift, mode: ~Alt, action: ScrollPageDown } + #- { key: Home, mods: Shift, mode: ~Alt, action: ScrollToTop } + #- { key: End, mods: Shift, mode: ~Alt, action: ScrollToBottom } + + # Vi Mode + #- { key: Space, mods: Shift|Control, mode: ~Search, action: ToggleViMode } + #- { key: Space, mods: Shift|Control, mode: Vi|~Search, action: ScrollToBottom } + #- { key: Escape, mode: Vi|~Search, action: ClearSelection } + #- { key: I, mode: Vi|~Search, action: ToggleViMode } + #- { key: I, mode: Vi|~Search, action: ScrollToBottom } + #- { key: C, mods: Control, mode: Vi|~Search, action: ToggleViMode } + #- { key: Y, mods: Control, mode: Vi|~Search, action: ScrollLineUp } + #- { key: E, mods: Control, mode: Vi|~Search, action: ScrollLineDown } + #- { key: G, mode: Vi|~Search, action: ScrollToTop } + #- { key: G, mods: Shift, mode: Vi|~Search, action: ScrollToBottom } + #- { key: B, mods: Control, mode: Vi|~Search, action: ScrollPageUp } + #- { key: F, mods: Control, mode: Vi|~Search, action: ScrollPageDown } + #- { key: U, mods: Control, mode: Vi|~Search, action: ScrollHalfPageUp } + #- { key: D, mods: Control, mode: Vi|~Search, action: ScrollHalfPageDown } + #- { key: Y, mode: Vi|~Search, action: Copy } + #- { key: Y, mode: Vi|~Search, action: ClearSelection } + #- { key: Copy, mode: Vi|~Search, action: ClearSelection } + #- { key: V, mode: Vi|~Search, action: ToggleNormalSelection } + #- { key: V, mods: Shift, mode: Vi|~Search, action: ToggleLineSelection } + #- { key: V, mods: Control, mode: Vi|~Search, action: ToggleBlockSelection } + #- { key: V, mods: Alt, mode: Vi|~Search, action: ToggleSemanticSelection } + #- { key: Return, mode: Vi|~Search, action: Open } + #- { key: Z, mode: Vi|~Search, action: CenterAroundViCursor } + #- { key: K, mode: Vi|~Search, action: Up } + #- { key: J, mode: Vi|~Search, action: Down } + #- { key: H, mode: Vi|~Search, action: Left } + #- { key: L, mode: Vi|~Search, action: Right } + #- { key: Up, mode: Vi|~Search, action: Up } + #- { key: Down, mode: Vi|~Search, action: Down } + #- { key: Left, mode: Vi|~Search, action: Left } + #- { key: Right, mode: Vi|~Search, action: Right } + #- { key: Key0, mode: Vi|~Search, action: First } + #- { key: Key4, mods: Shift, mode: Vi|~Search, action: Last } + #- { key: Key6, mods: Shift, mode: Vi|~Search, action: FirstOccupied } + #- { key: H, mods: Shift, mode: Vi|~Search, action: High } + #- { key: M, mods: Shift, mode: Vi|~Search, action: Middle } + #- { key: L, mods: Shift, mode: Vi|~Search, action: Low } + #- { key: B, mode: Vi|~Search, action: SemanticLeft } + #- { key: W, mode: Vi|~Search, action: SemanticRight } + #- { key: E, mode: Vi|~Search, action: SemanticRightEnd } + #- { key: B, mods: Shift, mode: Vi|~Search, action: WordLeft } + #- { key: W, mods: Shift, mode: Vi|~Search, action: WordRight } + #- { key: E, mods: Shift, mode: Vi|~Search, action: WordRightEnd } + #- { key: Key5, mods: Shift, mode: Vi|~Search, action: Bracket } + #- { key: Slash, mode: Vi|~Search, action: SearchForward } + #- { key: Slash, mods: Shift, mode: Vi|~Search, action: SearchBackward } + #- { key: N, mode: Vi|~Search, action: SearchNext } + #- { key: N, mods: Shift, mode: Vi|~Search, action: SearchPrevious } + + # Search Mode + #- { key: Return, mode: Search|Vi, action: SearchConfirm } + #- { key: Escape, mode: Search, action: SearchCancel } + #- { key: C, mods: Control, mode: Search, action: SearchCancel } + #- { key: U, mods: Control, mode: Search, action: SearchClear } + #- { key: W, mods: Control, mode: Search, action: SearchDeleteWord } + #- { key: P, mods: Control, mode: Search, action: SearchHistoryPrevious } + #- { key: N, mods: Control, mode: Search, action: SearchHistoryNext } + #- { key: Up, mode: Search, action: SearchHistoryPrevious } + #- { key: Down, mode: Search, action: SearchHistoryNext } + #- { key: Return, mode: Search|~Vi, action: SearchFocusNext } + #- { key: Return, mods: Shift, mode: Search|~Vi, action: SearchFocusPrevious } + + # (Windows, Linux, and BSD only) + #- { key: V, mods: Control|Shift, mode: ~Vi, action: Paste } + #- { key: C, mods: Control|Shift, action: Copy } + #- { key: F, mods: Control|Shift, mode: ~Search, action: SearchForward } + #- { key: B, mods: Control|Shift, mode: ~Search, action: SearchBackward } + #- { key: C, mods: Control|Shift, mode: Vi|~Search, action: ClearSelection } + #- { key: Insert, mods: Shift, action: PasteSelection } + #- { key: Key0, mods: Control, action: ResetFontSize } + #- { key: Equals, mods: Control, action: IncreaseFontSize } + #- { key: Plus, mods: Control, action: IncreaseFontSize } + #- { key: NumpadAdd, mods: Control, action: IncreaseFontSize } + #- { key: Minus, mods: Control, action: DecreaseFontSize } + #- { key: NumpadSubtract, mods: Control, action: DecreaseFontSize } + + # (Windows only) + #- { key: Return, mods: Alt, action: ToggleFullscreen } + + # (macOS only) + #- { key: K, mods: Command, mode: ~Vi|~Search, chars: "\x0c" } + #- { key: K, mods: Command, mode: ~Vi|~Search, action: ClearHistory } + #- { key: Key0, mods: Command, action: ResetFontSize } + #- { key: Equals, mods: Command, action: IncreaseFontSize } + #- { key: Plus, mods: Command, action: IncreaseFontSize } + #- { key: NumpadAdd, mods: Command, action: IncreaseFontSize } + #- { key: Minus, mods: Command, action: DecreaseFontSize } + #- { key: NumpadSubtract, mods: Command, action: DecreaseFontSize } + #- { key: V, mods: Command, action: Paste } + #- { key: C, mods: Command, action: Copy } + #- { key: C, mods: Command, mode: Vi|~Search, action: ClearSelection } + #- { key: H, mods: Command, action: Hide } + #- { key: H, mods: Command|Alt, action: HideOtherApplications } + #- { key: M, mods: Command, action: Minimize } + #- { key: Q, mods: Command, action: Quit } + #- { key: W, mods: Command, action: Quit } + #- { key: N, mods: Command, action: CreateNewWindow } + #- { key: F, mods: Command|Control, action: ToggleFullscreen } + #- { key: F, mods: Command, mode: ~Search, action: SearchForward } + #- { key: B, mods: Command, mode: ~Search, action: SearchBackward } + +#debug: + # Display the time it takes to redraw each frame. + #render_timer: false + + # Keep the log file after quitting Alacritty. + #persistent_logging: false + + # Log level + # + # Values for `log_level`: + # - Off + # - Error + # - Warn + # - Info + # - Debug + # - Trace + #log_level: Warn + + # Renderer override. + # - glsl3 + # - gles2 + # - gles2_pure + #renderer: None + + # Print all received window events. + #print_events: false + + # Highlight window damage information. + #highlight_damage: false diff --git a/linux/.config/mutt/gruvbox/README.md b/linux/.config/mutt/gruvbox/README.md new file mode 100644 index 0000000..f99e0fe --- /dev/null +++ b/linux/.config/mutt/gruvbox/README.md @@ -0,0 +1,35 @@ +# A gruvbox color scheme for mutt and neomutt + +## Description + +[Gruvbox](https://github.com/morhetz/gruvbox) is a well designed, popular +colorscheme for vim. This is a port to mutt and neomutt, in which vim can act +as mail composer. + +This is a replication of the repository +[here](https://git.sthu.org/?p=mutt-gruvbox.git;a=summary). The +[website](https://www.sthu.org/code/codesnippets/mutt-gruvbox.html) gives +further details and a screenshot, like this: + +![screenshot](https://www.sthu.org/code/codesnippets/img/mutt-gruvbox.png) + + +## Usage + +Download the files or clone the repo, e.g. + + cd ~/.mutt + git clone https://git.sthu.org/repos/mutt-gruvbox.git gruvbox + +Then source them in your `~/.mutt/muttrc`, e.g. + + source ~/.mutt/gruvbox/colors-gruvbox-shuber.muttrc + # For neomutt also add this line: + # source ~/.mutt/gruvbox/colors-gruvbox-shuber-extended.muttrc + +The colorscheme is split into two files, where the latter also defines colors +for neomutt. + +## License + +GNU Lesser General Public License v3. diff --git a/linux/.config/mutt/gruvbox/colors-gruvbox-shuber-extended.muttrc b/linux/.config/mutt/gruvbox/colors-gruvbox-shuber-extended.muttrc new file mode 100644 index 0000000..fb3eb1e --- /dev/null +++ b/linux/.config/mutt/gruvbox/colors-gruvbox-shuber-extended.muttrc @@ -0,0 +1 @@ +color sidebar_unread color108 color234 diff --git a/linux/.config/mutt/gruvbox/colors-gruvbox-shuber.muttrc b/linux/.config/mutt/gruvbox/colors-gruvbox-shuber.muttrc new file mode 100644 index 0000000..c283d0f --- /dev/null +++ b/linux/.config/mutt/gruvbox/colors-gruvbox-shuber.muttrc @@ -0,0 +1,121 @@ +# gruvbox dark (contrast dark): + +# bg0 = 234 +# bg1 = 237 +# bg2 = 239 +# bg3 = 241 +# bg4 = 243 +# +# gray = 245 +# +# fg0 = 229 +# fg1 = 223 +# fg2 = 250 +# fg3 = 248 +# fg4 = 246 +# +# red = 167 +# green = 142 +# yellow = 214 +# blue = 109 +# purple = 175 +# aqua = 108 +# orange = 208 + + +# See http://www.mutt.org/doc/manual/#color + +color attachment color109 color234 +color bold color229 color234 +color error color167 color234 +color hdrdefault color246 color234 +color indicator color223 color237 +color markers color243 color234 +color normal color223 color234 +color quoted color250 color234 +color quoted1 color108 color234 +color quoted2 color250 color234 +color quoted3 color108 color234 +color quoted4 color250 color234 +color quoted5 color108 color234 +color search color234 color208 +color signature color108 color234 +color status color234 color250 +color tilde color243 color234 +color tree color142 color234 +color underline color223 color239 + +color sidebar_divider color250 color234 +color sidebar_new color142 color234 + +color index color142 color234 ~N +color index color108 color234 ~O +color index color109 color234 ~P +color index color214 color234 ~F +color index color175 color234 ~Q +color index color167 color234 ~= +color index color234 color223 ~T +color index color234 color167 ~D + +color header color214 color234 "^(To:|From:)" +color header color142 color234 "^Subject:" +color header color108 color234 "^X-Spam-Status:" +color header color108 color234 "^Received:" + +# Regex magic for URLs and hostnames +# +# Attention: BSD's regex has RE_DUP_MAX set to 255. +# +# Examples: +# http://some-service.example.com +# example.com +# a.example.com +# some-service.example.com +# example.com/ +# example.com/datenschutz +# file:///tmp/foo +# +# Non-examples: +# 1.1.1900 +# 14.02.2022/24:00 +# 23.59 +# w.l.o.g +# team.its +color body color142 color234 "[a-z]{3,255}://[[:graph:]]*" +color body color142 color234 "([-[:alnum:]]+\\.)+([0-9]{1,3}|[-[:alpha:]]+)/[[:graph:]]*" +color body color142 color234 "([-[:alnum:]]+\\.){2,255}[-[:alpha:]]{2,10}" + +# IPv4 and IPv6 stolen from https://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses +color body color142 color234 "((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])" +color body color142 color234 "(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))" + +# Mail addresses and mailto URLs +color body color208 color234 "[-a-z_0-9.%$]+@[-a-z_0-9.]+\\.[-a-z][-a-z]+" +color body color208 color234 "mailto:[-a-z_0-9.]+@[-a-z_0-9.]+" + +# some simleys and stuff +color body color234 color214 "[;:]-*[)>(SejhtLtM5?4A4`9qgq{O7K`>KpA?>fGDuZ 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 literal 0 HcmV?d00001 diff --git a/linux/.tmux.conf b/linux/.tmux.conf new file mode 100755 index 0000000..ee95fd9 --- /dev/null +++ b/linux/.tmux.conf @@ -0,0 +1,56 @@ +# mouse +setw -g mouse on + +unbind C-b +set -g prefix C-a + +set -g mode-keys vi + +bind-key -T copy-mode-vi v send-keys -X begin-selection +bind-key -T copy-mode-vi y send-keys -X copy-pipe "pbcopy" + +set -g default-terminal "xterm-256color" + +# reset gpg-agent password cache after close the pane (vimwiki diary) +set-hook -g window-unlinked 'run-shell "gpgconf --reload gpg-agent"' + +# pane navigation +# bind -n M-h select-pane -L +# bind -n M-j select-pane -D +# bind -n M-k select-pane -U +# bind -n M-l select-pane -R + +# windows +bind -n M-t new-window +bind -n M-X kill-window +bind -n M-n next-window +bind -n M-p last-window +bind -n M-e split-window -v -c '#{pane_current_path}' +bind -n M-d split-window -h -c '#{pane_current_path}' +bind -n M-W kill-pane + +# Automatic restore +set -g @continuum-restore 'on' +set -g @resurrect-capture-pane-contents 'on' +#set -g @resurrect-processes '' + +set -g @catppuccin_window_status_icon_enable "yes" +set -g @catppuccin_window_default_fill "number" +set -g @catppuccin_status_left_separator "█" +set -g @catppuccin_status_fill "all" +set -g @catppuccin_status_modules_right "application session battery" +set -g @catppuccin_application_icon "" + +# plugins +set -g @plugin 'tmux-plugins/tpm' +set -g @plugin 'catppuccin/tmux' +set -g @plugin 'tmux-plugins/tmux-battery' +set -g @plugin 'tmux-plugins/tmux-sensible' +set -g @plugin 'tmux-plugins/tmux-resurrect' +set -g @plugin 'tmux-plugins/tmux-continuum' +set -g @plugin 'MunifTanjim/tmux-mode-indicator' +set -g @plugin 'christoomey/vim-tmux-navigator' + + +run '~/.tmux/plugins/tpm/tpm' + diff --git a/linux/.vimrc b/linux/.vimrc new file mode 100644 index 0000000..112df0d --- /dev/null +++ b/linux/.vimrc @@ -0,0 +1,261 @@ +" Base settings (add comments) +set nocompatible +syntax on " syntax highlight + +set clipboard=unnamedplus + +set t_Co=256 " set 256 colors + +set number " show line numbers +set ruler +set ttyfast " terminal acceleration + +set tabstop=4 " 4 whitespaces for tabs visual presentation +set shiftwidth=4 " shift lines by 4 spaces +set smarttab " set tabs for a shifttabs logic +set expandtab " expand tabs into spaces +set autoindent " indent when moving to the next line while writing code + +set cursorline " shows line under the cursor's line +set showmatch " shows matching part of bracket pairs (), [], {} + +set enc=utf-8 " utf-8 by default + +set nobackup " no backup files +set nowritebackup " only in case you don't want a backup file while editing +set noswapfile " no swap files + +set backspace=indent,eol,start " backspace removes all (indents, EOLs, start) What is start? + +set scrolloff=10 " let 10 lines before/after cursor during scroll + +set clipboard=unnamed " use system clipboard + +set exrc " enable usage of additional .vimrc files from working directory +set secure " prohibit .vimrc files to execute shell, create files, etc... + +let mapleader = " " " leader key + +" Buffers +set switchbuf=useopen " open buffer instead of creating a new one +set laststatus=2 +" close current buffer +nmap bc :bd + +" Search +set incsearch " incremental search +set hlsearch " highlight search results + +" highlight 'long' lines (>= 80 symbols) in python files +augroup vimrc_autocmds + autocmd! + autocmd FileType python,rst,c,cpp highlight Excess ctermbg=DarkGrey guibg=Black + autocmd FileType python,rst,c,cpp match Excess /\%81v.*/ + autocmd FileType python,rst,c,cpp set nowrap + autocmd FileType python,rst,c,cpp set colorcolumn=80 + + autocmd FileType vimwiki set wrap + autocmd FileType vimwiki set textwidth=80 +augroup END + +" terminal +cabbrev bterm bo term +autocmd TerminalWinOpen * + \ if &buftype == 'terminal' | + \ resize 10 | + "\ setlocal termwinsize=0x140 | + \ endif +nmap tt :bterm + +autocmd FileType html setlocal tabstop=2 shiftwidth=2 softtabstop=2 +autocmd FileType css setlocal tabstop=2 shiftwidth=2 softtabstop=2 +autocmd FileType javascript setlocal tabstop=2 shiftwidth=2 softtabstop=2 + +" plugings +call plug#begin() + +Plug 'machakann/vim-highlightedyank' +Plug 'tpope/vim-commentary' +Plug 'easymotion/vim-easymotion' +Plug 'preservim/nerdtree' +Plug 'tpope/vim-surround' +Plug 'terryma/vim-multiple-cursors' +Plug 'tommcdo/vim-exchange' +Plug 'michaeljsmith/vim-indent-object' +Plug 'vimwiki/vimwiki' +Plug 'mattn/calendar-vim' +Plug 'jamessan/vim-gnupg' +Plug 'ryanoasis/vim-devicons' +" https://github.com/LunarWatcher/auto-pairs/blob/master/doc/AutoPairs.txt +Plug 'LunarWatcher/auto-pairs' +Plug 'vim-airline/vim-airline' +Plug 'vim-airline/vim-airline-themes' +Plug 'tiagofumo/vim-nerdtree-syntax-highlight' +Plug 'morhetz/gruvbox' +Plug 'christoomey/vim-tmux-navigator' +Plug 'sheerun/vim-polyglot' +Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } +Plug 'junegunn/fzf.vim' +Plug 'mhinz/vim-startify' +Plug 'tpope/vim-fugitive' +Plug 'tpope/vim-obsession' +Plug 'ycm-core/YouCompleteMe' +Plug 'dense-analysis/ale' +Plug 'SirVer/ultisnips' +Plug 'honza/vim-snippets' +Plug 'majutsushi/tagbar' + +call plug#end() + +filetype on +filetype plugin on +filetype plugin indent on + +" tagbar +let g:tagbar_autofocus=0 +let g:tagbar_width=42 +autocmd BufEnter *.py :call tagbar#autoopen(0) + +" ultisnips +let g:UltiSnipsExpandTrigger = '' +let g:UltiSnipsJumpForwardTrigger = '' +let g:UltiSnipsJumpBackwardTrigger = '' + +" easymotion +map F (easymotion-s) +map f (easymotion-f) +" nerdtree +map :NERDTree +nmap " :NERDTreeToggle +let NERDTreeIgnore=['\.pyc$', '\.pyo$', '__pycache__$'] " Ignore files in NERDTree +let NERDTreeWinSize=40 +" autocmd VimEnter * if !argc() | NERDTree | endif " Load NERDTree only if vim is run without arguments + +" fzf +set rtp+=/opt/homebrew/opt/fzf +nmap bb :Buffers + +" auto-pairs +let g:AutoPairsMapBS = 1 +let g:AutoPairsBSAfter = 0 + +" airline +let g:airline#extensions#obsession#enable = 1 +let g:airline#extensions#tabline#enabled = 1 +let g:airline#extensions#ale#enabled = 1 +let g:airline_powerline_fonts = 1 +let g:airline#extensions#whitespace#enabled = 0 +let g:airline_theme='gruvbox' +if !exists('g:airline_symbols') + let g:airline_symbols = {} +endif +let g:airline_symbols.linenr = ' ☰ ' +let g:airline_symbols.colnr = ' : ' +let g:airline_symbols.maxlinenr = '' + +" theme +autocmd vimenter * ++nested colorscheme gruvbox +set background=dark +let g:gruvbox_contrast_dark='soft' + +" vim wiki +let g:GPGFilePattern = '*.\(gpg\|asc\|pgp\)\(.wiki\|.md\)\=' +" toogle checklists +nnoremap cl :VimwikiToggleListItem +" reset gpg-agent password cache after close or save the buffer (vimwiki diary) +autocmd BufWritePost *.asc.md !gpgconf --reload gpg-agent +" https://github.com/WnP/vimwiki_markdown +" ~/vimwiki/personal - private content +" ~/vimwiki/public_wiki - public wiki content +" ~/vimwiki/diary - private diary +let default_wiki = '~/vimwiki/personal' +let public_wiki = '~/vimwiki/public_wiki' +let g:diary = '~/vimwiki/diary' +let g:diary_index_name = 'diary' +let g:diary_ext = '.asc.md' +let g:vimwiki_list = [{ + \ 'path': default_wiki, + \ 'diary_rel_path': '../diary', + \ 'auto_diary_index': 1, + \ 'auto_export': 0}, + \ {'path': public_wiki, + \ 'auto_export': 0, + \ 'diary_rel_path': '../diary', + \ 'template_path': public_wiki . '/templates/', + \ 'template_default': 'default', + \ 'syntax': 'markdown', + \ 'ext': '.md', + \ 'path_html': public_wiki . '/site_html/', + \ 'custom_wiki2html': 'vimwiki_markdown', + \ 'template_ext': '.tpl'}, + \ {'path': diary, + \ 'index': diary_index_name, + \ 'ext': diary_ext, + \ 'diary_rel_path': './', + \ 'auto_diary_index': 1, + \ 'auto_export': 0}] +" fix - https://github.com/vimwiki/vimwiki/issues/1055 +exe 'autocmd BufEnter ' . diary_index_name . diary_ext . ' :VimwikiDiaryGenerateLinks' +" inserting default diary template +function! AppendDiaryTemplate() + " detecting path of current buffer + let current_dir = substitute(expand('%:p:h'), '^' . $HOME, '~', '') + if current_dir == g:diary + r! ~/scripts/vimwiki_diary_template + execute '1,2d' + normal G + normal o + endif +endfunction +command! InsertDiaryTemplate call AppendDiaryTemplate() +nnoremap idr :InsertDiaryTemplate +" inserting default GPG fingerprint for the diary +let g:diaryGPG = 'CE7EB8727486553012A04E284EE708165AA10C48' +" inserting default GPG fingerprint for the personal notes +let g:personalGPG = '5F2D798AC3A4A1B1A0CAA868EBE731F3329F400C' +command! InsertGPGAndExit call AppendGPGAndExit() +function! AppendGPGAndExit() + " detecting vim-gnupg dialog + if match(getline(2), '^GPG:') == 0 + call append(line('.'), g:diaryGPG) + wq + endif +endfunction +nnoremap igg :InsertGPGAndExit + +command! InsertDiaryGPGAndExit call AppendDiaryGPGAndExit() +function! AppendDiaryGPGAndExit() + " detecting vim-gnupg dialog + if match(getline(2), '^GPG:') == 0 + call append(line('.'), g:personalGPG) + wq + endif +endfunction +nnoremap igp :InsertDiaryGPGAndExit + +" prettier +nmap mm (PrettierAsync) + +" ALE +let g:ale_linters = { +\ 'python': ['ruff', 'mypy', 'pyright'], +\} +let g:ale_fixers = { +\ '*': ['remove_trailing_lines', 'trim_whitespace'], +\ 'python': ['ruff', 'ruff_format'], +\ 'javascript': ['prettier', 'eslint'], +\} +let g:ale_fix_on_save = 1 +map (ale_next_wrap) +map (ale_previous_wrap) +nmap go :ALEGoToDefinition +nmap qf :ALEFix +nmap k :ALEHover +let g:ale_python_auto_virtualenv = 1 +let g:ale_fix_on_save = 1 + +" YCM +set completeopt-=preview +" autocmd CompleteDone * if pumvisible() == 0 | pclose | endif +" +set langmap=йq,цw,уe,кr,еt,нy,гu,шi,щo,зp,х[,ъ],фa,ыs,вd,аf,пg,рh,оj,лk,дl,ж\\;,э',ё\\,яz,чx,сc,мv,иb,тn,ьm,б\\,,ю.,ЙQ,ЦW,УE,КR,ЕT,НY,ГU,ШI,ЩO,ЗP,Х{,Ъ},ФA,ЫS,ВD,АF,ПG,РH,ОJ,ЛK,ДL,Ж:,Э\\",ЯZ,ЧX,СC,МV,ИB,ТN,ЬM,Б<,Ю>,Ё/| diff --git a/linux/.zshrc b/linux/.zshrc new file mode 100644 index 0000000..0de2d3b --- /dev/null +++ b/linux/.zshrc @@ -0,0 +1,104 @@ +# Path to your oh-my-zsh installation. +export ZSH="$HOME/.oh-my-zsh" + +# Set name of the theme to load --- if set to "random", it will +# load a random theme each time oh-my-zsh is loaded, in which case, +# to know which specific one was loaded, run: echo $RANDOM_THEME +# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes +ZSH_THEME="robbyrussell" + +# Which plugins would you like to load? +# Standard plugins can be found in $ZSH/plugins/ +# Custom plugins may be added to $ZSH_CUSTOM/plugins/ +# Example format: plugins=(rails git textmate ruby lighthouse) +# Add wisely, as too many plugins slow down shell startup. +plugins=(git python tmux genpass web-search zsh-syntax-highlighting zsh-autosuggestions) + +fpath+=${ZSH_CUSTOM:-${ZSH:-~/.oh-my-zsh}/custom}/plugins/zsh-completions/src + +source $ZSH/oh-my-zsh.sh +# functions +### ARCHIVE EXTRACTION +# usage: ex +ex () +{ + if [ -f "$1" ] ; then + case $1 in + *.tar.bz2) tar xjf $1 ;; + *.tar.gz) tar xzf $1 ;; + *.bz2) bunzip2 $1 ;; + *.rar) unrar x $1 ;; + *.gz) gunzip $1 ;; + *.tar) tar xf $1 ;; + *.tbz2) tar xjf $1 ;; + *.tgz) tar xzf $1 ;; + *.zip) unzip $1 ;; + *.Z) uncompress $1;; + *.7z) 7z x $1 ;; + *.deb) ar x $1 ;; + *.tar.xz) tar xf $1 ;; + *.tar.zst) unzstd $1 ;; + *) echo "'$1' cannot be extracted via ex()" ;; + esac + else + echo "'$1' is not a valid file" + fi +} + + +# aliases +## tmux +alias tsc='tmux switch-client -t' +alias tsd='tmux new-session -d -s' +alias txrd='tmux source-file ~/.tmux.conf' +## default command +alias cat='bat --paging=never --theme=Dracula' +alias ls="eza" +alias la="eza -lagh --git --header" +alias lt="eza -T --git-ignore" +alias nano='micro' +## files/dirs +alias zshe='vim ~/.zshrc' +alias zshs='. ~/.zshrc' +## neomutt +alias nm='neomutt' +## vim +alias diary='vim ~/vimwiki/diary/diary.asc.md' +## wttr.in +alias wr='curl wttr.in' +## python +alias python='python3' +alias py='python' + +# Preferred editor for local and remote sessions +export EDITOR='vim' + +# bindkeys +## autosuggest +bindkey "^]" autosuggest-accept + +# envs +export DISABLE_AUTO_TITLE='true' +## fzf dracula theme +export FZF_DEFAULT_OPTS=$FZF_DEFAULT_OPTS' +--color=dark +--color=fg:-1,bg:-1,hl:#5fff87,fg+:-1,bg+:-1,hl+:#ffaf5f +--color=info:#af87ff,prompt:#5fff87,pointer:#ff87d7,marker:#ff87d7,spinner:#ff87d7' + +# paths +## rust +source $HOME/.cargo/env +## all from local/bin +export PATH=$PATH:$HOME/.local/bin +## pdtm +export PATH=$PATH:$HOME/.pdtm/go/bin +## doom emacs +export PATH=$PATH:$HOME/.config/emacs/bin +## golang +export GOPATH=$HOME/go # don't forget to change your path correctly! +export PATH=$PATH:$GOPATH/bin + +[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh +export VOLTA_HOME="$HOME/.volta" +export PATH="$VOLTA_HOME/bin:$PATH" +