commit 534141e40a17a9ad9b38478b7da3cc2595cae96d Author: antoxa Date: Tue Oct 7 09:26:47 2025 +0300 first commit diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..759492c --- /dev/null +++ b/Makefile @@ -0,0 +1,2 @@ +stow: + stow --target=${HOME} */ diff --git a/alacritty/.config/alacritty/alacritty.old.yml b/alacritty/.config/alacritty/alacritty.old.yml new file mode 100644 index 0000000..2fb8d0a --- /dev/null +++ b/alacritty/.config/alacritty/alacritty.old.yml @@ -0,0 +1,878 @@ +# 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: alacritty + +window: + # Window dimensions (changes require restart) + # + # Number of lines/columns (not pixels) in the terminal. 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: 0 + y: 0 + + # 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: 0.9 + + # Startup Mode (changes require restart) + # + # Values for `startup_mode`: + # - Windowed + # - Maximized + # - Fullscreen + # + # Values for `startup_mode` (macOS only): + # - SimpleFullscreen + #startup_mode: Windowed + + # 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 + + # GTK theme variant (Linux/BSD only) + # + # Override the variant of the GTK theme. Commonly supported values are `dark` + # and `light`. Set this to `None` to use the default theme variant. + #gtk_theme_variant: None + +#scrolling: + # Maximum number of lines in the scrollback buffer. + # Specifying '0' will disable scrolling. + #history: 10000 + + # Scrolling distance multiplier. + #multiplier: 3 + +# Font configuration +font: + # Normal (roman) font face + normal: + # Font family + # + # Default: + # - (macOS) Menlo + # - (Linux/BSD) monospace + # - (Windows) Consolas + family: Terminus # TerminessTTF Nerd Font + + # 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: monospace + + # 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: monospace + + # 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: monospace + + # The `style` can be specified to pick a specific face. + #style: Bold Italic + + # Point size + size: 15.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 + + # Thin stroke font rendering (macOS only) + # + # Thin strokes are suitable for retina displays, but for non-retina screens + # it is recommended to set `use_thin_strokes` to `false`. + #use_thin_strokes: true + + # 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: '#252525' + # 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' + + # 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' + + #bar: + # background: '#c5c8c6' + # foreground: '#1d1f21' + + # Keyboard regex 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 + + # 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 + + # 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: +# - (macOS) /bin/bash --login +# - (Linux/BSD) user login shell +# - (Windows) powershell +#shell: +# program: /bin/fish +# args: +# - --login + +# 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 + +# Send ESC (\x1b) before characters when alt is pressed. +#alt_send_esc: true + +# 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 + +# Regex hints +# +# Terminal hints can be used to find text 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 a `regex` and either an `action` or a `command` field. + # The fields `mouse`, `binding` and `post_processing` are optional. + # + # 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. + # + # 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{-}\\^⟨⟩`]+" + # 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/glutin/*/glutin/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 +# - 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`. +# +# - 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: 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: 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: SpawnNewInstance } + #- { 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 + + # Print all received window events. + #print_events: false diff --git a/alacritty/.config/alacritty/alacritty.toml b/alacritty/.config/alacritty/alacritty.toml new file mode 100644 index 0000000..f5b34e8 --- /dev/null +++ b/alacritty/.config/alacritty/alacritty.toml @@ -0,0 +1,15 @@ +[colors.primary] +background = "#252525" + +[font] +size = 15.0 + +[font.normal] +family = "Terminus" + +[window] +opacity = 0.9 + +[window.padding] +x = 0 +y = 0 diff --git a/fonts/.local/share/fonts/5mal6Lampen/5mal6Lampen.ttf b/fonts/.local/share/fonts/5mal6Lampen/5mal6Lampen.ttf new file mode 100644 index 0000000..b038996 Binary files /dev/null and b/fonts/.local/share/fonts/5mal6Lampen/5mal6Lampen.ttf differ diff --git a/fonts/.local/share/fonts/5mal6Lampen/5mal6Lampen.ttf:Zone.Identifier b/fonts/.local/share/fonts/5mal6Lampen/5mal6Lampen.ttf:Zone.Identifier new file mode 100644 index 0000000..8bb4de1 --- /dev/null +++ b/fonts/.local/share/fonts/5mal6Lampen/5mal6Lampen.ttf:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\info\Downloads\5mal6Lampen.zip diff --git a/fonts/.local/share/fonts/5mal6Lampen/COPYRIGHT.txt b/fonts/.local/share/fonts/5mal6Lampen/COPYRIGHT.txt new file mode 100644 index 0000000..2998a39 --- /dev/null +++ b/fonts/.local/share/fonts/5mal6Lampen/COPYRIGHT.txt @@ -0,0 +1,2 @@ +Copyright (c) 2018 by Peter Wiegel. Open Font under Terms of following Free Software Licenses: +GPL (General Public License) with font-exception and OFL (Open Font License \ No newline at end of file diff --git a/fonts/.local/share/fonts/5mal6Lampen/COPYRIGHT.txt:Zone.Identifier b/fonts/.local/share/fonts/5mal6Lampen/COPYRIGHT.txt:Zone.Identifier new file mode 100644 index 0000000..8bb4de1 --- /dev/null +++ b/fonts/.local/share/fonts/5mal6Lampen/COPYRIGHT.txt:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\info\Downloads\5mal6Lampen.zip diff --git a/fonts/.local/share/fonts/DS_Army_Cyr/DS Army Cyr italic.ttf b/fonts/.local/share/fonts/DS_Army_Cyr/DS Army Cyr italic.ttf new file mode 100644 index 0000000..c184cfe Binary files /dev/null and b/fonts/.local/share/fonts/DS_Army_Cyr/DS Army Cyr italic.ttf differ diff --git a/fonts/.local/share/fonts/DS_Army_Cyr/DS Army Cyr.ttf b/fonts/.local/share/fonts/DS_Army_Cyr/DS Army Cyr.ttf new file mode 100644 index 0000000..ed6ee0b Binary files /dev/null and b/fonts/.local/share/fonts/DS_Army_Cyr/DS Army Cyr.ttf differ diff --git a/fonts/.local/share/fonts/DaMiOne/DaMiOne-Regular.ttf b/fonts/.local/share/fonts/DaMiOne/DaMiOne-Regular.ttf new file mode 100644 index 0000000..7a3063b Binary files /dev/null and b/fonts/.local/share/fonts/DaMiOne/DaMiOne-Regular.ttf differ diff --git a/fonts/.local/share/fonts/EastSeaDokdo/east-sea-dokdo.otf b/fonts/.local/share/fonts/EastSeaDokdo/east-sea-dokdo.otf new file mode 100644 index 0000000..79ccb57 Binary files /dev/null and b/fonts/.local/share/fonts/EastSeaDokdo/east-sea-dokdo.otf differ diff --git a/fonts/.local/share/fonts/HaloGrotesk/HaloGrotesk-Regular.otf b/fonts/.local/share/fonts/HaloGrotesk/HaloGrotesk-Regular.otf new file mode 100644 index 0000000..af90ab6 Binary files /dev/null and b/fonts/.local/share/fonts/HaloGrotesk/HaloGrotesk-Regular.otf differ diff --git a/fonts/.local/share/fonts/HemicoGreek/HemicoGreekRegular.ttf b/fonts/.local/share/fonts/HemicoGreek/HemicoGreekRegular.ttf new file mode 100644 index 0000000..6d0a8bd Binary files /dev/null and b/fonts/.local/share/fonts/HemicoGreek/HemicoGreekRegular.ttf differ diff --git a/fonts/.local/share/fonts/Imprerial/Imperial Web.ttf b/fonts/.local/share/fonts/Imprerial/Imperial Web.ttf new file mode 100644 index 0000000..d210ca1 Binary files /dev/null and b/fonts/.local/share/fonts/Imprerial/Imperial Web.ttf differ diff --git a/fonts/.local/share/fonts/Imprerial/Imperial.otf b/fonts/.local/share/fonts/Imprerial/Imperial.otf new file mode 100644 index 0000000..72e9180 Binary files /dev/null and b/fonts/.local/share/fonts/Imprerial/Imperial.otf differ diff --git a/fonts/.local/share/fonts/NeuropolMedium/Neuropol Medium.ttf b/fonts/.local/share/fonts/NeuropolMedium/Neuropol Medium.ttf new file mode 100644 index 0000000..ed02d5c Binary files /dev/null and b/fonts/.local/share/fonts/NeuropolMedium/Neuropol Medium.ttf differ diff --git a/fonts/.local/share/fonts/NimbusSans/nimbussanl_boldcond.ttf b/fonts/.local/share/fonts/NimbusSans/nimbussanl_boldcond.ttf new file mode 100644 index 0000000..45e46f3 Binary files /dev/null and b/fonts/.local/share/fonts/NimbusSans/nimbussanl_boldcond.ttf differ diff --git a/fonts/.local/share/fonts/PPObjectSans/object.ttf b/fonts/.local/share/fonts/PPObjectSans/object.ttf new file mode 100644 index 0000000..17c4d21 Binary files /dev/null and b/fonts/.local/share/fonts/PPObjectSans/object.ttf differ diff --git a/fonts/.local/share/fonts/Ravenhol/Ravenholm Demo.otf b/fonts/.local/share/fonts/Ravenhol/Ravenholm Demo.otf new file mode 100644 index 0000000..69b0ac0 Binary files /dev/null and b/fonts/.local/share/fonts/Ravenhol/Ravenholm Demo.otf differ diff --git a/fonts/.local/share/fonts/Roadkill_Heavy_Reqular/Roadkill Heavy Regular.otf b/fonts/.local/share/fonts/Roadkill_Heavy_Reqular/Roadkill Heavy Regular.otf new file mode 100644 index 0000000..6375522 Binary files /dev/null and b/fonts/.local/share/fonts/Roadkill_Heavy_Reqular/Roadkill Heavy Regular.otf differ diff --git a/fonts/.local/share/fonts/ST_Warmovie_noncommercial/ST-Warmovie-noncommercial.otf b/fonts/.local/share/fonts/ST_Warmovie_noncommercial/ST-Warmovie-noncommercial.otf new file mode 100644 index 0000000..b89be98 Binary files /dev/null and b/fonts/.local/share/fonts/ST_Warmovie_noncommercial/ST-Warmovie-noncommercial.otf differ diff --git a/fonts/.local/share/fonts/ST_Warmovie_noncommercial/ST-Warmovie-noncommercial.ttf b/fonts/.local/share/fonts/ST_Warmovie_noncommercial/ST-Warmovie-noncommercial.ttf new file mode 100644 index 0000000..21c16de Binary files /dev/null and b/fonts/.local/share/fonts/ST_Warmovie_noncommercial/ST-Warmovie-noncommercial.ttf differ diff --git a/fonts/.local/share/fonts/Saiba-45/SAIBA-45-Outline-(v1.1).otf b/fonts/.local/share/fonts/Saiba-45/SAIBA-45-Outline-(v1.1).otf new file mode 100644 index 0000000..247994e Binary files /dev/null and b/fonts/.local/share/fonts/Saiba-45/SAIBA-45-Outline-(v1.1).otf differ diff --git a/fonts/.local/share/fonts/Saiba-45/SAIBA-45-Regular-(v1.1).otf b/fonts/.local/share/fonts/Saiba-45/SAIBA-45-Regular-(v1.1).otf new file mode 100644 index 0000000..46cbe9a Binary files /dev/null and b/fonts/.local/share/fonts/Saiba-45/SAIBA-45-Regular-(v1.1).otf differ diff --git a/fonts/.local/share/fonts/Shist/Schist Black.ttf b/fonts/.local/share/fonts/Shist/Schist Black.ttf new file mode 100644 index 0000000..342b4e7 Binary files /dev/null and b/fonts/.local/share/fonts/Shist/Schist Black.ttf differ diff --git a/fonts/.local/share/fonts/Shist/Schist Bold.ttf b/fonts/.local/share/fonts/Shist/Schist Bold.ttf new file mode 100644 index 0000000..5e68dea Binary files /dev/null and b/fonts/.local/share/fonts/Shist/Schist Bold.ttf differ diff --git a/fonts/.local/share/fonts/Shist/Schist Light.ttf b/fonts/.local/share/fonts/Shist/Schist Light.ttf new file mode 100644 index 0000000..53d0f0c Binary files /dev/null and b/fonts/.local/share/fonts/Shist/Schist Light.ttf differ diff --git a/fonts/.local/share/fonts/Shist/Schist Regular.ttf b/fonts/.local/share/fonts/Shist/Schist Regular.ttf new file mode 100644 index 0000000..bdddd39 Binary files /dev/null and b/fonts/.local/share/fonts/Shist/Schist Regular.ttf differ diff --git a/fonts/.local/share/fonts/Terminess/Terminess (TTF) Bold Italic Nerd Font Complete.ttf b/fonts/.local/share/fonts/Terminess/Terminess (TTF) Bold Italic Nerd Font Complete.ttf new file mode 100644 index 0000000..90142f5 Binary files /dev/null and b/fonts/.local/share/fonts/Terminess/Terminess (TTF) Bold Italic Nerd Font Complete.ttf differ diff --git a/fonts/.local/share/fonts/Terminess/Terminess (TTF) Bold Nerd Font Complete.ttf b/fonts/.local/share/fonts/Terminess/Terminess (TTF) Bold Nerd Font Complete.ttf new file mode 100644 index 0000000..c638be4 Binary files /dev/null and b/fonts/.local/share/fonts/Terminess/Terminess (TTF) Bold Nerd Font Complete.ttf differ diff --git a/fonts/.local/share/fonts/Terminess/Terminess (TTF) Italic Nerd Font Complete.ttf b/fonts/.local/share/fonts/Terminess/Terminess (TTF) Italic Nerd Font Complete.ttf new file mode 100644 index 0000000..dd278b4 Binary files /dev/null and b/fonts/.local/share/fonts/Terminess/Terminess (TTF) Italic Nerd Font Complete.ttf differ diff --git a/fonts/.local/share/fonts/Terminess/Terminess (TTF) Nerd Font Complete.ttf b/fonts/.local/share/fonts/Terminess/Terminess (TTF) Nerd Font Complete.ttf new file mode 100644 index 0000000..6e9dfbd Binary files /dev/null and b/fonts/.local/share/fonts/Terminess/Terminess (TTF) Nerd Font Complete.ttf differ diff --git a/i3/.config/i3/config b/i3/.config/i3/config new file mode 100644 index 0000000..a23537e --- /dev/null +++ b/i3/.config/i3/config @@ -0,0 +1,164 @@ +# Gaps. +gaps inner 10 +gaps outer 0 + +smart_gaps off + +# Variables. +set $mod Mod4 + +# set $mon0 LVDS-1 +# workspace 0 output $mon0 + +# Font. +font pango:Terminus 14 + +# Use Mouse+$mod to drag floating windows to their wanted position +floating_modifier $mod + +# start a terminal +bindsym $mod+Return exec i3-sensible-terminal + +# kill focused window +bindsym $mod+Shift+q kill + +# start dmenu (a program launcher) +bindsym $mod+p exec --no-startup-id dmenu_run -fn Terminus:size=16 + +# change focus +bindsym $mod+h focus left +bindsym $mod+j focus down +bindsym $mod+k focus up +bindsym $mod+l focus right + +# alternatively, you can use the cursor keys: +bindsym $mod+Left focus left +bindsym $mod+Down focus down +bindsym $mod+Up focus up +bindsym $mod+Right focus right + +# move focused window +bindsym $mod+Shift+h move left +bindsym $mod+Shift+j move down +bindsym $mod+Shift+k move up +bindsym $mod+Shift+l move right + +# alternatively, you can use the cursor keys: +bindsym $mod+Shift+Left move left +bindsym $mod+Shift+Down move down +bindsym $mod+Shift+Up move up +bindsym $mod+Shift+Right move right + +# split in horizontal orientation +# bindsym $mod+Shift+h split h + +# split in vertical orientation +# bindsym $mod+Shift+v split v + +# enter fullscreen mode for the focused container +bindsym $mod+f fullscreen toggle + +# change container layout (stacked, tabbed, toggle split) +bindsym $mod+s layout stacking +bindsym $mod+w layout tabbed +bindsym $mod+e layout toggle split + +# toggle tiling / floating +bindsym $mod+Shift+space floating toggle + +# change focus between tiling / floating windows +bindsym $mod+space focus mode_toggle + +# focus the parent container +bindsym $mod+a focus parent + +# focus the child container +bindsym $mod+d focus child + +# Define names for default workspaces for which we configure key bindings later on. +# We use variables to avoid repeating the names in multiple places. +set $ws0 "0" +set $ws1 "1" +set $ws2 "2" +set $ws3 "3" +set $ws4 "4" +set $ws5 "5" +set $ws6 "6" +set $ws7 "7" +set $ws8 "8" +set $ws9 "9" + +# switch to workspace +bindsym $mod+0 workspace number $ws0 +bindsym $mod+1 workspace number $ws1 +bindsym $mod+2 workspace number $ws2 +bindsym $mod+3 workspace number $ws3 +bindsym $mod+4 workspace number $ws4 +bindsym $mod+5 workspace number $ws5 +bindsym $mod+6 workspace number $ws6 +bindsym $mod+7 workspace number $ws7 +bindsym $mod+8 workspace number $ws8 +bindsym $mod+9 workspace number $ws9 + +# move focused container to workspace +bindsym $mod+Shift+0 move container to workspace number $ws0 +bindsym $mod+Shift+1 move container to workspace number $ws1 +bindsym $mod+Shift+2 move container to workspace number $ws2 +bindsym $mod+Shift+3 move container to workspace number $ws3 +bindsym $mod+Shift+4 move container to workspace number $ws4 +bindsym $mod+Shift+5 move container to workspace number $ws5 +bindsym $mod+Shift+6 move container to workspace number $ws6 +bindsym $mod+Shift+7 move container to workspace number $ws7 +bindsym $mod+Shift+8 move container to workspace number $ws8 +bindsym $mod+Shift+9 move container to workspace number $ws9 + +# reload the configuration file +bindsym $mod+Shift+c reload +# restart i3 inplace (preserves your layout/session, can be used to upgrade i3) +bindsym $mod+Shift+r restart +# exit i3 (logs you out of your X session) +bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'" + +# resize window (you can also use the mouse for that) +mode "resize" { + # These bindings trigger as soon as you enter the resize mode + + # Pressing left will shrink the window’s width. + # Pressing right will grow the window’s width. + # Pressing up will shrink the window’s height. + # Pressing down will grow the window’s height. + bindsym h resize shrink width 10 px or 10 ppt + bindsym j resize grow height 10 px or 10 ppt + bindsym k resize shrink height 10 px or 10 ppt + bindsym l resize grow width 10 px or 10 ppt + + # same bindings, but for the arrow keys + bindsym Left resize shrink width 10 px or 10 ppt + bindsym Down resize grow height 10 px or 10 ppt + bindsym Up resize shrink height 10 px or 10 ppt + bindsym Right resize grow width 10 px or 10 ppt + + # back to normal: Enter or Escape or $mod+r + bindsym Return mode "default" + bindsym Escape mode "default" + bindsym $mod+r mode "default" +} + +bindsym $mod+r mode "resize" + +# You can also use any non-zero value if you'd like to have a border +for_window [class=".*"] border pixel 0 + +# Start i3bar to display a workspace bar (plus the system information i3status +# finds out, if available) +# bar { +# position top +# status_command i3status +# } + +# PulseAudio. +set $refresh_i3status killall -SIGUSR1 i3status +bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +5% && $refresh_i3status +bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -5% && $refresh_i3status +bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status +bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status diff --git a/motion/.config/motion/motion.conf b/motion/.config/motion/motion.conf new file mode 100644 index 0000000..d6cd815 --- /dev/null +++ b/motion/.config/motion/motion.conf @@ -0,0 +1,175 @@ +# Rename this distribution example file to motion.conf +# +# This config file was generated by motion 4.5.1 +# Documentation: /usr/share/doc/motion/motion_guide.html +# +# This file contains only the basic configuration options to get a +# system working. There are many more options available. Please +# consult the documentation for the complete list of all options. +# + +############################################################ +# System control configuration parameters +############################################################ + +# Start in daemon (background) mode and release terminal. +daemon off + +# Start in Setup-Mode, daemon disabled. +setup_mode off + +# File to store the process ID. +; pid_file value + +# File to write logs messages into. If not defined stderr and syslog is used. +; log_file value + +# Level of log messages [1..9] (EMG, ALR, CRT, ERR, WRN, NTC, INF, DBG, ALL). +log_level 6 + +# Target directory for pictures, snapshots and movies +target_dir /home/axp/motion + +# Video device (e.g. /dev/video0) to be used for capturing. +video_device /dev/video0 + +# Parameters to control video device. See motion_guide.html +; video_params value + +# The full URL of the network camera stream. +; netcam_url value + +# Name of mmal camera (e.g. vc.ril.camera for pi camera). +; mmalcam_name value + +# Camera control parameters (see raspivid/raspistill tool documentation) +; mmalcam_params value + +############################################################ +# Image Processing configuration parameters +############################################################ + +# Image width in pixels. +width 720 + +# Image height in pixels. +height 480 + +# Maximum number of frames to be captured per second. +framerate 60 + +# rotate 180 + +# Text to be overlayed in the lower left corner of images +text_left CAMERA1 + +# Text to be overlayed in the lower right corner of images. +text_right %Y-%m-%d\n%T-%q + +############################################################ +# Motion detection configuration parameters +############################################################ + +# Always save pictures and movies even if there was no motion. +emulate_motion on + +# Threshold for number of changed pixels that triggers motion. +threshold 1 + +# Noise threshold for the motion detection. +; noise_level 32 + +# Despeckle the image using (E/e)rode or (D/d)ilate or (l)abel. +despeckle_filter EedDl + +# Number of images that must contain motion to trigger an event. +minimum_motion_frames 1 + +# Gap in seconds of no motion detected that triggers the end of an event. +event_gap 60 + +# The number of pre-captured (buffered) pictures from before motion. +pre_capture 3 + +# Number of frames to capture after motion is no longer detected. +post_capture 0 + +############################################################ +# Script execution configuration parameters +############################################################ + +# Command to be executed when an event starts. +; on_event_start value + +# Command to be executed when an event ends. +; on_event_end value + +# Command to be executed when a movie file is closed. +; on_movie_end value + +############################################################ +# Picture output configuration parameters +############################################################ + +# Output pictures when motion is detected +picture_output off + +# File name(without extension) for pictures relative to target directory +picture_filename %Y%m%d%H%M%S-%q + +############################################################ +# Movie output configuration parameters +############################################################ + +# Create movies of motion events. +movie_output on + +# Maximum length of movie in seconds. +movie_max_time 1024 + +# The encoding quality of the movie. (0=use bitrate. 1=worst quality, 100=best) +movie_quality 100 + +# Container/Codec to used for the movie. See motion_guide.html +movie_codec mkv + +# File name(without extension) for movies relative to target directory +movie_filename %Y-%m-%d_%H-%M-%S + +############################################################ +# Webcontrol configuration parameters +############################################################ + +# Port number used for the webcontrol. +webcontrol_port 8082 + +# Restrict webcontrol connections to the localhost. +webcontrol_localhost on + +# Type of configuration options to allow via the webcontrol. +webcontrol_parms 0 + +############################################################ +# Live stream configuration parameters +############################################################ + +# The port number for the live stream. +stream_port 8081 + +# Restrict stream connections to the localhost. +stream_localhost off +stream_auth_method 1 +stream_authentication antoxa:kde5asxm + +############################################################## +# Camera config files - One for each camera. +############################################################## +; camera /usr/etc/motion/camera1.conf +; camera /usr/etc/motion/camera2.conf +; camera /usr/etc/motion/camera3.conf +; camera /usr/etc/motion/camera4.conf + +############################################################## +# Directory to read '.conf' files for cameras. +############################################################## +; camera_dir /usr/etc/motion/conf.d diff --git a/nvim/.config/nvim/AGENTS.md b/nvim/.config/nvim/AGENTS.md new file mode 100644 index 0000000..cf819d0 --- /dev/null +++ b/nvim/.config/nvim/AGENTS.md @@ -0,0 +1,5 @@ +# AGENTS.md - Конфигурация NVIM + +## Общее описание +Отвечать на русском языке. +Работать только с директорией ./lua/antoxa diff --git a/nvim/.config/nvim/init.lua b/nvim/.config/nvim/init.lua new file mode 100644 index 0000000..46e2dcd --- /dev/null +++ b/nvim/.config/nvim/init.lua @@ -0,0 +1 @@ +require('antoxa') diff --git a/nvim/.config/nvim/lazy-lock.json b/nvim/.config/nvim/lazy-lock.json new file mode 100644 index 0000000..c2fa8a9 --- /dev/null +++ b/nvim/.config/nvim/lazy-lock.json @@ -0,0 +1,23 @@ +{ + "LuaSnip": { "branch": "master", "commit": "458560534a73f7f8d7a11a146c801db00b081df0" }, + "cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" }, + "cmp-nvim-lsp": { "branch": "main", "commit": "bd5a7d6db125d4654b50eeae9f5217f24bb22fd3" }, + "cmp-path": { "branch": "main", "commit": "c642487086dbd9a93160e1679a1327be111cbc25" }, + "cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" }, + "friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" }, + "lazy.nvim": { "branch": "main", "commit": "59334064f8604ca073791c25dcc5c9698865406e" }, + "lspkind.nvim": { "branch": "master", "commit": "3ddd1b4edefa425fda5a9f95a4f25578727c0bb3" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "6bdb14f230de0904229ec367b410fb817e59b072" }, + "mason-tool-installer.nvim": { "branch": "main", "commit": "517ef5994ef9d6b738322664d5fdd948f0fdeb46" }, + "mason.nvim": { "branch": "main", "commit": "ad7146aa61dcaeb54fa900144d768f040090bff0" }, + "neodev.nvim": { "branch": "main", "commit": "46aa467dca16cf3dfe27098042402066d2ae242d" }, + "nightfox.nvim": { "branch": "main", "commit": "ba47d4b4c5ec308718641ba7402c143836f35aa9" }, + "nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" }, + "nvim-lsp-file-operations": { "branch": "master", "commit": "9744b738183a5adca0f916527922078a965515ed" }, + "nvim-lspconfig": { "branch": "master", "commit": "e688b486fe9291f151eae7e5c0b5a5c4ef980847" }, + "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, + "opencode.nvim": { "branch": "main", "commit": "8e01fd796da438b03ff502c2105abb458d81d364" }, + "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" }, + "snacks.nvim": { "branch": "main", "commit": "bfe8c26dbd83f7c4fbc222787552e29b4eccfcc0" }, + "telescope.nvim": { "branch": "0.1.x", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" } +} diff --git a/nvim/.config/nvim/lua/antoxa/core/init.lua b/nvim/.config/nvim/lua/antoxa/core/init.lua new file mode 100644 index 0000000..3646b76 --- /dev/null +++ b/nvim/.config/nvim/lua/antoxa/core/init.lua @@ -0,0 +1,2 @@ +require('antoxa.core.options') +require('antoxa.core.keymap') diff --git a/nvim/.config/nvim/lua/antoxa/core/keymap.lua b/nvim/.config/nvim/lua/antoxa/core/keymap.lua new file mode 100644 index 0000000..df9e397 --- /dev/null +++ b/nvim/.config/nvim/lua/antoxa/core/keymap.lua @@ -0,0 +1,18 @@ +vim.g.mapleader = ' ' + +-- Mappings tabs. +vim.keymap.set('n', '', ':-tabmove') +vim.keymap.set('n', '', ':+tabmove') + +-- Mappings buffers. +vim.keymap.set('n', 'k', ':bn') +vim.keymap.set('n', 'j', ':bp') + +-- Move cursour vertical. +vim.keymap.set('n', '', 'zz') + +-- Diagnostic keymaps. +vim.keymap.set('n', '[d', vim.diagnostic.goto_prev) +vim.keymap.set('n', ']d', vim.diagnostic.goto_next) +vim.keymap.set('n', 'e', vim.diagnostic.open_float) +vim.keymap.set('n', 'q', vim.diagnostic.setloclist) diff --git a/nvim/.config/nvim/lua/antoxa/core/options.lua b/nvim/.config/nvim/lua/antoxa/core/options.lua new file mode 100644 index 0000000..8287567 --- /dev/null +++ b/nvim/.config/nvim/lua/antoxa/core/options.lua @@ -0,0 +1,45 @@ +-- Encoding. +vim.scriptencoding = 'utf-8' +vim.opt.encoding = 'utf-8' +vim.opt.fileencoding = 'utf-8' + +-- Backups. +vim.opt.backup = false +vim.opt.swapfile = false + +-- Lines. +vim.opt.number = true +vim.opt.relativenumber = true +vim.opt.colorcolumn = '80' +vim.opt.signcolumn = 'yes' +vim.opt.cursorline = true +vim.opt.guicursor = '' +vim.opt.wrap = false + +-- Tabs. +vim.opt.tabstop = 2 +vim.opt.shiftwidth = 2 + +-- Search +vim.opt.ignorecase = true +vim.opt.smartcase = true + +-- View. +vim.opt.termguicolors = true +-- vim.opt.background = "dark" +-- vim.opt.splitright = true +-- vim.opt.splitbelow = true + +-- Explorer style tree +-- vim.g.netrw_liststyle = 3 + +-- Etc. +vim.opt.mouse = '' +vim.opt.clipboard:append('unnamedplus') + +vim.opt.list = true +vim.opt.listchars:append 'tab:┊ ' +-- vim.opt.listchars:append 'space:·' +-- vim.opt.listchars:append 'eol:↴' + +-- vim.opt.backspace = 'indent,eol,start' diff --git a/nvim/.config/nvim/lua/antoxa/init.lua b/nvim/.config/nvim/lua/antoxa/init.lua new file mode 100644 index 0000000..5e88548 --- /dev/null +++ b/nvim/.config/nvim/lua/antoxa/init.lua @@ -0,0 +1,2 @@ +require('antoxa.core') +require('antoxa.lazy') diff --git a/nvim/.config/nvim/lua/antoxa/lazy.lua b/nvim/.config/nvim/lua/antoxa/lazy.lua new file mode 100644 index 0000000..dcd723a --- /dev/null +++ b/nvim/.config/nvim/lua/antoxa/lazy.lua @@ -0,0 +1,36 @@ +-- Bootstrap lazy.nvim +local lazypath = vim.fn.stdpath('data') .. '/lazy/lazy.nvim' +if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = 'https://github.com/folke/lazy.nvim.git' + local out = vim.fn.system({ 'git', 'clone', '--filter=blob:none', '--branch=stable', lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { 'Failed to clone lazy.nvim:\n', 'ErrorMsg' }, + { out, 'WarningMsg' }, + { '\nPress any key to exit...' }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end +end +vim.opt.rtp:prepend(lazypath) + +-- Make sure to setup `mapleader` and `maplocalleader` before +-- loading lazy.nvim so that mappings are correct. +-- This is also a good place to setup other settings (vim.opt) +-- vim.g.mapleader = ' ' +-- vim.g.maplocalleader = '\\' + +-- Setup lazy.nvim +require('lazy').setup({ + spec = { + -- import your plugins + { import = 'antoxa.plugins' }, + { import = 'antoxa.plugins.lsp' } + }, + -- Configure any other settings here. See the documentation for more details. + -- colorscheme that will be used when installing plugins. + install = { colorscheme = { 'habamax' } }, + -- automatically check for plugin updates + checker = { enabled = true }, +}) diff --git a/nvim/.config/nvim/lua/antoxa/plugins/lsp/lspconfig.lua b/nvim/.config/nvim/lua/antoxa/plugins/lsp/lspconfig.lua new file mode 100644 index 0000000..4d444a0 --- /dev/null +++ b/nvim/.config/nvim/lua/antoxa/plugins/lsp/lspconfig.lua @@ -0,0 +1,150 @@ +return { + "neovim/nvim-lspconfig", + event = { "BufReadPre", "BufNewFile" }, + dependencies = { + "hrsh7th/cmp-nvim-lsp", + { "antosha417/nvim-lsp-file-operations", config = true }, + { "folke/neodev.nvim", opts = {} }, + }, + config = function() + -- import cmp-nvim-lsp plugin + local cmp_nvim_lsp = require("cmp_nvim_lsp") + + local keymap = vim.keymap -- for conciseness + vim.api.nvim_create_autocmd("LspAttach", { + group = vim.api.nvim_create_augroup("UserLspConfig", {}), + callback = function(ev) + -- Buffer local mappings. + -- See `:help vim.lsp.*` for documentation on any of the below functions + local opts = { buffer = ev.buf, silent = true } + + -- set keybinds + opts.desc = "Show LSP references" + keymap.set("n", "gR", "Telescope lsp_references", opts) -- show definition, references + + opts.desc = "Go to declaration" + keymap.set("n", "gD", vim.lsp.buf.declaration, opts) -- go to declaration + + opts.desc = "Show LSP definitions" + keymap.set("n", "gd", "Telescope lsp_definitions", opts) -- show lsp definitions + + opts.desc = "Show LSP implementations" + keymap.set("n", "gi", "Telescope lsp_implementations", opts) -- show lsp implementations + + -- opts.desc = "Show LSP type definitions" + -- keymap.set("n", "gt", "Telescope lsp_type_definitions", opts) -- show lsp type definitions + + opts.desc = "See available code actions" + keymap.set({ "n", "v" }, "ca", vim.lsp.buf.code_action, opts) -- see available code actions, in visual mode will apply to selection + + opts.desc = "Smart rename" + keymap.set("n", "rn", vim.lsp.buf.rename, opts) -- smart rename + + opts.desc = "Show buffer diagnostics" + keymap.set("n", "D", "Telescope diagnostics bufnr=0", opts) -- show diagnostics for file + + opts.desc = "Show line diagnostics" + keymap.set("n", "d", vim.diagnostic.open_float, opts) -- show diagnostics for line + + -- opts.desc = "Go to previous diagnostic" + -- keymap.set("n", "[d", vim.diagnostic.goto_prev, opts) -- jump to previous diagnostic in buffer + -- + -- opts.desc = "Go to next diagnostic" + -- keymap.set("n", "]d", vim.diagnostic.goto_next, opts) -- jump to next diagnostic in buffer + + opts.desc = "Show documentation for what is under cursor" + keymap.set("n", "K", vim.lsp.buf.hover, opts) -- show documentation for what is under cursor + + -- opts.desc = "Restart LSP" + -- keymap.set("n", "rs", ":LspRestart", opts) -- mapping to restart lsp if necessary + end, + }) + + -- used to enable autocompletion (assign to every lsp server config) + local capabilities = cmp_nvim_lsp.default_capabilities() + + -- vim.diagnostic.config({ + -- signs = { + -- text = { + -- [vim.diagnostic.severity.ERROR] = " ", + -- [vim.diagnostic.severity.WARN] = " ", + -- [vim.diagnostic.severity.HINT] = "󰠠 ", + -- [vim.diagnostic.severity.INFO] = " ", + -- }, + -- }, + -- }) + + vim.lsp.config("*", { + capabilities = capabilities, + }) + + vim.lsp.config("lua_ls", { + settings = { + Lua = { + -- make the language server recognize "vim" global + diagnostics = { + globals = { "vim" }, + }, + completion = { + callSnippet = "Replace", + }, + }, + }, + }) + + vim.lsp.config('ts_ls', { + init_options = { + plugins = { + { + name = '@vue/typescript-plugin', + location = '/home/antoxa/.nvm/versions/node/v22.20.0/lib/node_modules/@vue/typescript-plugin', + languages = { 'vue' } + } + } + }, + settings = { + typescript = { + tsserver = { + useSyntaxServer = false, + }, + inlayHints = { + includeInlayParameterNameHints = 'all', + includeInlayParameterNameHintsWhenArgumentMatchesName = true, + includeInlayFunctionParameterTypeHints = true, + includeInlayVariableTypeHints = true, + includeInlayVariableTypeHintsWhenTypeMatchesName = true, + includeInlayPropertyDeclarationTypeHints = true, + includeInlayFunctionLikeReturnTypeHints = true, + includeInlayEnumMemberValueHints = true, + }, + }, + }, + filetypes = { 'javascript', 'typescript', 'vue' } + }) + + -- vim.lsp.config("svelte", { + -- on_attach = function(client, bufnr) + -- vim.api.nvim_create_autocmd("BufWritePost", { + -- pattern = { "*.js", "*.ts" }, + -- callback = function(ctx) + -- -- Here use ctx.match instead of ctx.file + -- client.notify("$/onDidChangeTsOrJsFile", { uri = ctx.match }) + -- end, + -- }) + -- end, + -- }) + + vim.lsp.config("graphql", { + filetypes = { "graphql", "gql", "svelte", "typescriptreact", "javascriptreact" }, + }) + + vim.lsp.config("emmet_ls", { + filetypes = { "html", "typescriptreact", "javascriptreact", "css", "sass", "scss", "less", "svelte" }, + }) + + -- vim.lsp.config("eslint", { + -- filetypes = { "html", "typescriptreact", "javascriptreact", "css", "sass", "scss", "less", "svelte" }, + -- }) + + end +} diff --git a/nvim/.config/nvim/lua/antoxa/plugins/lsp/mason.lua b/nvim/.config/nvim/lua/antoxa/plugins/lsp/mason.lua new file mode 100644 index 0000000..5631bac --- /dev/null +++ b/nvim/.config/nvim/lua/antoxa/plugins/lsp/mason.lua @@ -0,0 +1,57 @@ +return { + "williamboman/mason.nvim", + dependencies = { + "williamboman/mason-lspconfig.nvim", + "WhoIsSethDaniel/mason-tool-installer.nvim", + }, + config = function() + -- import mason + local mason = require("mason") + + -- import mason-lspconfig + local mason_lspconfig = require("mason-lspconfig") + + local mason_tool_installer = require("mason-tool-installer") + + -- enable mason and configure icons + mason.setup({ + -- ui = { + -- icons = { + -- package_installed = "✓", + -- package_pending = "➜", + -- package_uninstalled = "✗", + -- }, + -- }, + }) + + mason_lspconfig.setup({ + -- list of servers for mason to install + ensure_installed = { + "ts_ls", + "html", + "cssls", + "tailwindcss", + "lua_ls", + "graphql", + "emmet_ls", + "clangd", + -- "svelte", + -- "prismals", + -- "pyright", + -- "eslint", + }, + }) + + mason_tool_installer.setup({ + ensure_installed = { + "prettier", -- prettier formatter + "stylua", -- lua formatter + "clang-format", -- c/c++ formatter + -- "isort", -- python formatter + -- "black", -- python formatter + -- "pylint", + -- "eslint_d", + }, + }) + end, +} diff --git a/nvim/.config/nvim/lua/antoxa/plugins/nightfox.lua b/nvim/.config/nvim/lua/antoxa/plugins/nightfox.lua new file mode 100644 index 0000000..02030f1 --- /dev/null +++ b/nvim/.config/nvim/lua/antoxa/plugins/nightfox.lua @@ -0,0 +1,7 @@ +return { + 'EdenEast/nightfox.nvim', + priority = 1000, + config = function() + vim.cmd.colorscheme('nightfox') + end +} diff --git a/nvim/.config/nvim/lua/antoxa/plugins/nvim-cmp.lua b/nvim/.config/nvim/lua/antoxa/plugins/nvim-cmp.lua new file mode 100644 index 0000000..a4cd1d2 --- /dev/null +++ b/nvim/.config/nvim/lua/antoxa/plugins/nvim-cmp.lua @@ -0,0 +1,63 @@ +return { + "hrsh7th/nvim-cmp", + event = "InsertEnter", + dependencies = { + "hrsh7th/cmp-buffer", -- source for text in buffer + "hrsh7th/cmp-path", -- source for file system paths + { + "L3MON4D3/LuaSnip", + -- follow latest release. + version = "v2.*", -- Replace by the latest released major (first number of latest release) + -- install jsregexp (optional!). + build = "make install_jsregexp", + }, + "saadparwaiz1/cmp_luasnip", -- for autocompletion + "rafamadriz/friendly-snippets", -- useful snippets + "onsails/lspkind.nvim", -- vs-code like pictograms + }, + config = function() + local cmp = require("cmp") + + local luasnip = require("luasnip") + + local lspkind = require("lspkind") + + -- loads vscode style snippets from installed plugins (e.g. friendly-snippets) + require("luasnip.loaders.from_vscode").lazy_load() + + cmp.setup({ + completion = { + completeopt = "menu,menuone,preview,noselect", + }, + snippet = { -- configure how nvim-cmp interacts with snippet engine + expand = function(args) + luasnip.lsp_expand(args.body) + end, + }, + mapping = cmp.mapping.preset.insert({ + -- [""] = cmp.mapping.select_prev_item(), -- previous suggestion + -- [""] = cmp.mapping.select_next_item(), -- next suggestion + -- [""] = cmp.mapping.scroll_docs(-4), + -- [""] = cmp.mapping.scroll_docs(4), + -- [""] = cmp.mapping.complete(), -- show completion suggestions + -- [""] = cmp.mapping.abort(), -- close completion window + [""] = cmp.mapping.confirm({ select = false }), + }), + -- sources for autocompletion + sources = cmp.config.sources({ + { name = "nvim_lsp"}, + { name = "luasnip" }, -- snippets + { name = "buffer" }, -- text within current buffer + { name = "path" }, -- file system paths + }), + + -- configure lspkind for vs-code like pictograms in completion menu + formatting = { + format = lspkind.cmp_format({ + maxwidth = 50, + ellipsis_char = "...", + }), + }, + }) + end +} diff --git a/nvim/.config/nvim/lua/antoxa/plugins/opencode.lua b/nvim/.config/nvim/lua/antoxa/plugins/opencode.lua new file mode 100644 index 0000000..5bb9aff --- /dev/null +++ b/nvim/.config/nvim/lua/antoxa/plugins/opencode.lua @@ -0,0 +1,28 @@ +return { + 'NickvanDyke/opencode.nvim', + dependencies = { + -- Recommended for better prompt input, and required to use `opencode.nvim`'s embedded terminal — otherwise optional + { 'folke/snacks.nvim', opts = { input = { enabled = true } } }, + }, + config = function() + vim.g.opencode_opts = { + -- Your configuration, if any — see `lua/opencode/config.lua` + } + + -- Required for `opts.auto_reload` + vim.opt.autoread = true + + -- Recommended/example keymaps + vim.keymap.set('n', 'ot', function() require('opencode').toggle() end, { desc = 'Toggle embedded' }) + vim.keymap.set('n', 'oA', function() require('opencode').ask() end, { desc = 'Ask' }) + vim.keymap.set('n', 'oa', function() require('opencode').ask('@cursor: ') end, { desc = 'Ask about this' }) + vim.keymap.set('v', 'oa', function() require('opencode').ask('@selection: ') end, { desc = 'Ask about selection' }) + vim.keymap.set('n', 'oe', function() require('opencode').prompt('Explain @cursor and its context') end, { desc = 'Explain this code' }) + vim.keymap.set('n', 'o+', function() require('opencode').prompt('@buffer', { append = true }) end, { desc = 'Add buffer to prompt' }) + vim.keymap.set('v', 'o+', function() require('opencode').prompt('@selection', { append = true }) end, { desc = 'Add selection to prompt' }) + vim.keymap.set('n', 'on', function() require('opencode').command('session_new') end, { desc = 'New session' }) + vim.keymap.set('n', '', function() require('opencode').command('messages_half_page_up') end, { desc = 'Messages half page up' }) + vim.keymap.set('n', '', function() require('opencode').command('messages_half_page_down') end, { desc = 'Messages half page down' }) + vim.keymap.set({ 'n', 'v' }, 'os', function() require('opencode').select() end, { desc = 'Select prompt' }) + end, +} diff --git a/nvim/.config/nvim/lua/antoxa/plugins/telescope.lua b/nvim/.config/nvim/lua/antoxa/plugins/telescope.lua new file mode 100644 index 0000000..de08fe1 --- /dev/null +++ b/nvim/.config/nvim/lua/antoxa/plugins/telescope.lua @@ -0,0 +1,17 @@ +return { + 'nvim-telescope/telescope.nvim', branch = '0.1.x', + dependencies = { 'nvim-lua/plenary.nvim' }, + config = function() + local builtin = require('telescope.builtin') + + -- Default keys + vim.keymap.set('n', 'ff', builtin.find_files, { desc = 'Telescope find files' }) + vim.keymap.set('n', 'fg', builtin.live_grep, { desc = 'Telescope live grep' }) + vim.keymap.set('n', 'fb', builtin.buffers, { desc = 'Telescope buffers' }) + vim.keymap.set('n', 'fh', builtin.help_tags, { desc = 'Telescope help tags' }) + + -- Custom keys + vim.keymap.set('n', '?', builtin.oldfiles, { desc = 'Telescope old files' }) + vim.keymap.set('n', 'fc', builtin.grep_string, { desc = 'Telescope grep string' }) + end +} diff --git a/nvim/.config/nvim/lua/antoxa/plugins/treesitter.lua b/nvim/.config/nvim/lua/antoxa/plugins/treesitter.lua new file mode 100644 index 0000000..3ed0133 --- /dev/null +++ b/nvim/.config/nvim/lua/antoxa/plugins/treesitter.lua @@ -0,0 +1,39 @@ +return { + 'nvim-treesitter/nvim-treesitter', brench = 'master', + event = { 'BufReadPre', 'BufNewFile' }, + build = ':TSUpdate', + config = function() + local treesitter = require('nvim-treesitter.configs') + treesitter.setup({ + highlight = { enable = true }, + indent = { enable = true }, + ensure_installed = { + 'vim', + 'lua', + 'cmake', + 'cpp', + 'c', + 'bash', + 'javascript', + 'typescript', + 'tsx', + 'json', + 'html', + 'vue', + 'css', + 'dockerfile', + 'markdown', + 'yaml' + }, + incremental_selection = { + enable = true, + keymaps = { + init_selection = '', + node_incremental = '', + -- scope_incremental = false, + -- node_decremental = '' + } + } + }) + end +} diff --git a/nvim/.config/nvim/lua/axp/base.lua b/nvim/.config/nvim/lua/axp/base.lua new file mode 100644 index 0000000..f59c644 --- /dev/null +++ b/nvim/.config/nvim/lua/axp/base.lua @@ -0,0 +1,52 @@ +-- Encoding. +vim.scriptencoding = 'utf-8' +vim.o.encoding = 'utf-8' +vim.o.fileencoding = 'utf-8' + +-- Backups. +vim.o.backup = false +vim.o.swapfile = false + +-- Lines. +vim.o.number = true +vim.o.relativenumber = true +vim.o.colorcolumn = '80' +vim.o.signcolumn = 'yes' +vim.o.cursorline = true +vim.o.guicursor = '' + +-- Tabs. +vim.o.tabstop = 2 +vim.o.shiftwidth = 2 + +-- Etc. +vim.o.mouse = '' +vim.o.clipboard = 'unnamedplus' + +-- View. +vim.g.mapleader = ' ' +-- vim.g.netrw_liststyle = 3 +vim.o.termguicolors = true + +vim.o.list = true +vim.opt.listchars:append 'space:·' +vim.opt.listchars:append 'tab:┊ ' +-- vim.opt.listchars:append 'eol:↴' + +-- Mappings tabs. +vim.keymap.set('n', '', ':-tabmove') +vim.keymap.set('n', '', ':+tabmove') + +-- Mappings buffers. +vim.keymap.set('n', 'k', ':bn') +vim.keymap.set('n', 'j', ':bp') + +-- Move cursour vertical. +vim.keymap.set('n', '', 'zz') +vim.keymap.set('n', '', 'zz') + +-- Diagnostic keymaps. +vim.keymap.set('n', '[d', vim.diagnostic.goto_prev) +vim.keymap.set('n', ']d', vim.diagnostic.goto_next) +vim.keymap.set('n', 'e', vim.diagnostic.open_float) +vim.keymap.set('n', 'q', vim.diagnostic.setloclist) diff --git a/nvim/.config/nvim/lua/axp/init.lua b/nvim/.config/nvim/lua/axp/init.lua new file mode 100644 index 0000000..9c4e449 --- /dev/null +++ b/nvim/.config/nvim/lua/axp/init.lua @@ -0,0 +1,2 @@ +require('axp.base') +require('axp.manager.packer') diff --git a/nvim/.config/nvim/lua/axp/manager/packer.lua b/nvim/.config/nvim/lua/axp/manager/packer.lua new file mode 100644 index 0000000..637ed8c --- /dev/null +++ b/nvim/.config/nvim/lua/axp/manager/packer.lua @@ -0,0 +1,54 @@ +-- Download packer. +local ensure_packer = function() + local fn = vim.fn + local install_path = fn.stdpath('data')..'/site/pack/packer/start/packer.nvim' + if fn.empty(fn.glob(install_path)) > 0 then + print('Download packer...') + fn.system({'git', 'clone', '--depth', '1', 'https://github.com/wbthomason/packer.nvim', install_path}) + vim.cmd [[packadd packer.nvim]] + return true + end + return false +end + +-- Bootstrap packer. +local packer_bootstrap = ensure_packer() + +-- Chek packer. +local status, packer = pcall(require, 'packer') +if (not status) then + print('Oops. Packer is not installed!') + return +end + +-- Init packer. +packer.init({ + display = { + open_fn = function() + return require('packer.util').float({ border = 'single' }) + end + } +}) + +-- Plugins. +local plugins = require('axp.plugins') + +-- Startup packer. +packer.startup(function(use) + use 'wbthomason/packer.nvim' + + -- Use pludins. + for _, plugin in ipairs(plugins.list) do + use(plugin) + end + + -- Automatically set up your configuration after cloning packer.nvim + -- Put this at the end after all plugins + if packer_bootstrap then + print('Packer sync...') + require('packer').sync() + end +end) + +-- Init plugins. +plugins.init() diff --git a/nvim/.config/nvim/lua/axp/plugins/autopairs.lua b/nvim/.config/nvim/lua/axp/plugins/autopairs.lua new file mode 100644 index 0000000..38ffc51 --- /dev/null +++ b/nvim/.config/nvim/lua/axp/plugins/autopairs.lua @@ -0,0 +1,2 @@ +local status, autopairs = pcall(require, 'nvim-autopairs') +if status then autopairs.setup {} end diff --git a/nvim/.config/nvim/lua/axp/plugins/blankline.lua b/nvim/.config/nvim/lua/axp/plugins/blankline.lua new file mode 100644 index 0000000..5fd7625 --- /dev/null +++ b/nvim/.config/nvim/lua/axp/plugins/blankline.lua @@ -0,0 +1,8 @@ +local status, ibl = pcall(require, 'ibl') +if (not status) then return end + +ibl.setup { + indent = { + char = '┊' + } +} diff --git a/nvim/.config/nvim/lua/axp/plugins/comment.lua b/nvim/.config/nvim/lua/axp/plugins/comment.lua new file mode 100644 index 0000000..3d2eeb3 --- /dev/null +++ b/nvim/.config/nvim/lua/axp/plugins/comment.lua @@ -0,0 +1,2 @@ +local status, comment = pcall(require, 'Comment') +if (status) then comment.setup {} end diff --git a/nvim/.config/nvim/lua/axp/plugins/init.lua b/nvim/.config/nvim/lua/axp/plugins/init.lua new file mode 100644 index 0000000..7af6a25 --- /dev/null +++ b/nvim/.config/nvim/lua/axp/plugins/init.lua @@ -0,0 +1,53 @@ +local M = {} + +M.list = { + -- Common. + 'nvim-lua/plenary.nvim', + + -- Etc. + 'nvim-treesitter/nvim-treesitter', + 'nvim-telescope/telescope.nvim', + 'windwp/nvim-autopairs', + 'numToStr/Comment.nvim', + + -- View. + 'EdenEast/nightfox.nvim', + 'lukas-reineke/indent-blankline.nvim', + + -- Lsp. + 'neovim/nvim-lspconfig', + 'williamboman/mason.nvim', + 'williamboman/mason-lspconfig.nvim', + 'hrsh7th/cmp-nvim-lsp', + + --- Null-ls. + -- 'jose-elias-alvarez/null-ls.nvim', + + -- Autocompletion. + 'L3MON4D3/LuaSnip', + 'hrsh7th/nvim-cmp' +} + +M.init = function() + -- Etc. + require('axp.plugins.autopairs') + require('axp.plugins.comment') + require('axp.plugins.telescope') + require('axp.plugins.treesitter') + + -- View. + require('axp.plugins.nightfox') + require('axp.plugins.blankline') + + -- Lsp. + require('axp.plugins.lsp') + + -- Null-ls. + -- require('axp.plugins.null-ls') + + -- Autocompletion + require('axp.plugins.luasnip') + require('axp.plugins.nvim-cmp') +end + +return M diff --git a/nvim/.config/nvim/lua/axp/plugins/lsp.lua b/nvim/.config/nvim/lua/axp/plugins/lsp.lua new file mode 100644 index 0000000..941417c --- /dev/null +++ b/nvim/.config/nvim/lua/axp/plugins/lsp.lua @@ -0,0 +1,79 @@ +-- Check Lspconfig. +-- local status_lspconfig, lspconfig = pcall(require, 'lspconfig') +-- if (not status_lspconfig) then return end + +-- Check Mason. +local status_mason, mason = pcall(require, 'mason') +if (not status_mason) then return end + +-- Check Mason lsp installer. +local status_mason_lspconfig, mason_lspconfig = pcall(require, 'mason-lspconfig') +if (not status_mason_lspconfig) then return end + +-- Config servers. +local servers = { + 'ts_ls', + 'lua_ls', + 'bashls', + 'cmake', + 'html', + 'dockerls', + 'jsonls', + 'yamlls', + 'graphql' +} + +vim.lsp.config('lua_ls', { + settings = { + Lua = { + runtime = { + version = 'LuaJIT', + }, + diagnostics = { + globals = { + 'vim', + 'require', + }, + }, + }, + } +}) + +vim.lsp.config('ts_ls', { + init_options = { + plugins = { + { + name = '@vue/typescript-plugin', + location = '/home/antoxa/.nvm/versions/node/v22.12.0/lib/node_modules/@vue/typescript-plugin', + languages = { 'vue' } + } + } + }, + settings = { + typescript = { + tsserver = { + useSyntaxServer = false, + }, + inlayHints = { + includeInlayParameterNameHints = 'all', + includeInlayParameterNameHintsWhenArgumentMatchesName = true, + includeInlayFunctionParameterTypeHints = true, + includeInlayVariableTypeHints = true, + includeInlayVariableTypeHintsWhenTypeMatchesName = true, + includeInlayPropertyDeclarationTypeHints = true, + includeInlayFunctionLikeReturnTypeHints = true, + includeInlayEnumMemberValueHints = true, + }, + }, + }, + filetypes = { 'javascript', 'typescript', 'vue' } +}) + +-- Mason. +mason.setup {} + +-- Mason lsp installer. +mason_lspconfig.setup { + ensure_installed = servers, + automatic_enable = true +} diff --git a/nvim/.config/nvim/lua/axp/plugins/luasnip/init.lua b/nvim/.config/nvim/lua/axp/plugins/luasnip/init.lua new file mode 100644 index 0000000..889168a --- /dev/null +++ b/nvim/.config/nvim/lua/axp/plugins/luasnip/init.lua @@ -0,0 +1,18 @@ +local status_luasnip, ls = pcall(require, 'luasnip') +if (not status_luasnip) then return end + +-- Init. +ls.config.set_config {} + +-- Snippets. +local snippets = require 'axp.plugins.luasnip.snippets' +for name, snippet in pairs(snippets.list) do + ls.add_snippets(name, snippet) +end + +-- Keymaps. +vim.keymap.set({ 'i', 's' }, '', function() + if ls.expand_or_jumpable() then + ls.expand_or_jump() + end +end, { silent = true }) diff --git a/nvim/.config/nvim/lua/axp/plugins/luasnip/snippets.lua b/nvim/.config/nvim/lua/axp/plugins/luasnip/snippets.lua new file mode 100644 index 0000000..3d92599 --- /dev/null +++ b/nvim/.config/nvim/lua/axp/plugins/luasnip/snippets.lua @@ -0,0 +1,110 @@ +local M = {} + +M.list = {} + +local status_luasnip, ls = pcall(require, 'luasnip') +if (status_luasnip) then + local s = ls.snippet + local t = ls.text_node + local i = ls.insert_node + -- local c = ls.choice_node + local fmt = require('luasnip.extras.fmt').fmt + + local javascript = { + s('import', { + t('import '), + i(2, 'lib'), + t(' from \''), + i(1, 'lib'), + t('\'') + }), + s('try', fmt( + [[ + try {{ + {} + }} catch (e) {{}} + ]], + { + i(1) + } + )), + s('/**', fmt( + [[ + /** + * {} + */ + ]], + { + i(1) + } + )), + s('const fn', { + t('const '), + i(1, 'fn'), + t(' = '), + i(2, 'async'), + t(' ('), + i(3), + t(') => {'), + i(4), + t('}') + }) + } + + local vue = { + s(''), + i(3), + t('') + }), + s(''), + i(2), + t('') + }), + s(''), + i(2), + t('') + }), + s('const props', { + t('const props = defineProps<{'), + i(1), + t('}>()') + }), + s('const emit', { + t('const emit = defineEmits<{ (e: \''), + i(1, 'update:modelValue'), + t('\', v: '), + i(2, 'any'), + t('): void }>()') + }), + s('onMounted', { + t('onMounted(() => '), + i(1, 'loadData()'), + t(')') + }) + } + + -- Add javascript in vue. + for number, value in ipairs(javascript) do + vue[6 + number] = value + end + + M.list = { + javascript = javascript, + typescript = javascript, + typescriptreact = javascript, + vue = vue + } +end + +return M diff --git a/nvim/.config/nvim/lua/axp/plugins/nightfox.lua b/nvim/.config/nvim/lua/axp/plugins/nightfox.lua new file mode 100644 index 0000000..714d9e1 --- /dev/null +++ b/nvim/.config/nvim/lua/axp/plugins/nightfox.lua @@ -0,0 +1,10 @@ +local status = pcall(require, 'nightfox') + +if status then + -- Apply theme. + vim.cmd.colorscheme('nightfox') + + -- Transparency. + -- vim.api.nvim_set_hl(0, 'Normal', { bg = 'none' }) + -- vim.api.nvim_set_hl_ns(1) +end diff --git a/nvim/.config/nvim/lua/axp/plugins/null-ls/.clang-format b/nvim/.config/nvim/lua/axp/plugins/null-ls/.clang-format new file mode 100644 index 0000000..4b8d5fb --- /dev/null +++ b/nvim/.config/nvim/lua/axp/plugins/null-ls/.clang-format @@ -0,0 +1,225 @@ +--- +Language: Cpp +# BasedOnStyle: LLVM +AccessModifierOffset: -2 +AlignAfterOpenBracket: Align +AlignArrayOfStructures: None +AlignConsecutiveAssignments: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: true +AlignConsecutiveBitFields: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: false +AlignConsecutiveDeclarations: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: false +AlignConsecutiveMacros: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: false +AlignEscapedNewlines: Right +AlignOperands: Align +AlignTrailingComments: + Kind: Always + OverEmptyLines: 0 +AllowAllArgumentsOnNextLine: true +AllowAllParametersOfDeclarationOnNextLine: true +AllowShortBlocksOnASingleLine: Never +AllowShortCaseLabelsOnASingleLine: false +AllowShortEnumsOnASingleLine: true +AllowShortFunctionsOnASingleLine: All +AllowShortIfStatementsOnASingleLine: Never +AllowShortLambdasOnASingleLine: All +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: false +AlwaysBreakTemplateDeclarations: MultiLine +AttributeMacros: + - __capability +BinPackArguments: true +BinPackParameters: true +BitFieldColonSpacing: Both +BraceWrapping: + AfterCaseLabel: false + AfterClass: false + AfterControlStatement: Never + AfterEnum: false + AfterExternBlock: false + AfterFunction: false + AfterNamespace: false + AfterObjCDeclaration: false + AfterStruct: false + AfterUnion: false + BeforeCatch: false + BeforeElse: false + BeforeLambdaBody: false + BeforeWhile: false + IndentBraces: false + SplitEmptyFunction: true + SplitEmptyRecord: true + SplitEmptyNamespace: true +BreakAfterAttributes: Never +BreakAfterJavaFieldAnnotations: false +BreakArrays: true +BreakBeforeBinaryOperators: None +BreakBeforeConceptDeclarations: Always +BreakBeforeBraces: Attach +BreakBeforeInlineASMColon: OnlyMultiline +BreakBeforeTernaryOperators: true +BreakConstructorInitializers: BeforeColon +BreakInheritanceList: BeforeColon +BreakStringLiterals: true +ColumnLimit: 80 +CommentPragmas: '^ IWYU pragma:' +CompactNamespaces: false +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: true +DerivePointerAlignment: false +DisableFormat: false +EmptyLineAfterAccessModifier: Never +EmptyLineBeforeAccessModifier: LogicalBlock +ExperimentalAutoDetectBinPacking: false +FixNamespaceComments: true +ForEachMacros: + - foreach + - Q_FOREACH + - BOOST_FOREACH +IfMacros: + - KJ_IF_MAYBE +IncludeBlocks: Preserve +IncludeCategories: + - Regex: '^"(llvm|llvm-c|clang|clang-c)/' + Priority: 2 + SortPriority: 0 + CaseSensitive: false + - Regex: '^(<|"(gtest|gmock|isl|json)/)' + Priority: 3 + SortPriority: 0 + CaseSensitive: false + - Regex: '.*' + Priority: 1 + SortPriority: 0 + CaseSensitive: false +IncludeIsMainRegex: '(Test)?$' +IncludeIsMainSourceRegex: '' +IndentAccessModifiers: false +IndentCaseBlocks: false +IndentCaseLabels: false +IndentExternBlock: AfterExternBlock +IndentGotoLabels: true +IndentPPDirectives: None +IndentRequiresClause: true +IndentWidth: 2 +IndentWrappedFunctionNames: false +InsertBraces: false +InsertNewlineAtEOF: false +InsertTrailingCommas: None +IntegerLiteralSeparator: + Binary: 0 + BinaryMinDigits: 0 + Decimal: 0 + DecimalMinDigits: 0 + Hex: 0 + HexMinDigits: 0 +JavaScriptQuotes: Leave +JavaScriptWrapImports: true +KeepEmptyLinesAtTheStartOfBlocks: true +LambdaBodyIndentation: Signature +LineEnding: DeriveLF +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: None +ObjCBinPackProtocolList: Auto +ObjCBlockIndentWidth: 2 +ObjCBreakBeforeNestedBlockParam: true +ObjCSpaceAfterProperty: false +ObjCSpaceBeforeProtocolList: true +PackConstructorInitializers: BinPack +PenaltyBreakAssignment: 2 +PenaltyBreakBeforeFirstCallParameter: 19 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakOpenParenthesis: 0 +PenaltyBreakString: 1000 +PenaltyBreakTemplateDeclaration: 10 +PenaltyExcessCharacter: 1000000 +PenaltyIndentedWhitespace: 0 +PenaltyReturnTypeOnItsOwnLine: 60 +PointerAlignment: Right +PPIndentWidth: -1 +QualifierAlignment: Leave +ReferenceAlignment: Pointer +ReflowComments: true +RemoveBracesLLVM: false +RemoveSemicolon: false +RequiresClausePosition: OwnLine +RequiresExpressionIndentation: OuterScope +SeparateDefinitionBlocks: Leave +ShortNamespaceLines: 1 +SortIncludes: CaseSensitive +SortJavaStaticImport: Before +SortUsingDeclarations: LexicographicNumeric +SpaceAfterCStyleCast: false +SpaceAfterLogicalNot: false +SpaceAfterTemplateKeyword: true +SpaceAroundPointerQualifiers: Default +SpaceBeforeAssignmentOperators: true +SpaceBeforeCaseColon: false +SpaceBeforeCpp11BracedList: false +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeParens: ControlStatements +SpaceBeforeParensOptions: + AfterControlStatements: true + AfterForeachMacros: true + AfterFunctionDefinitionName: false + AfterFunctionDeclarationName: false + AfterIfMacros: true + AfterOverloadedOperator: false + AfterRequiresInClause: false + AfterRequiresInExpression: false + BeforeNonEmptyParentheses: false +SpaceBeforeRangeBasedForLoopColon: true +SpaceBeforeSquareBrackets: false +SpaceInEmptyBlock: false +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: Never +SpacesInConditionalStatement: false +SpacesInContainerLiterals: true +SpacesInCStyleCastParentheses: false +SpacesInLineCommentPrefix: + Minimum: 1 + Maximum: -1 +SpacesInParentheses: false +SpacesInSquareBrackets: false +Standard: Latest +StatementAttributeLikeMacros: + - Q_EMIT +StatementMacros: + - Q_UNUSED + - QT_REQUIRE_VERSION +TabWidth: 2 +UseTab: Always +WhitespaceSensitiveMacros: + - BOOST_PP_STRINGIZE + - CF_SWIFT_NAME + - NS_SWIFT_NAME + - PP_STRINGIZE + - STRINGIZE +... + diff --git a/nvim/.config/nvim/lua/axp/plugins/null-ls/.prettierrc b/nvim/.config/nvim/lua/axp/plugins/null-ls/.prettierrc new file mode 100644 index 0000000..cdda34f --- /dev/null +++ b/nvim/.config/nvim/lua/axp/plugins/null-ls/.prettierrc @@ -0,0 +1,9 @@ +{ + "useTabs": true, + "tabWidth": 2, + "singleQuote": true, + "semi": false, + "trailingComma": "none", + "arrowParens": "avoid", + "printWidth": 79 +} diff --git a/nvim/.config/nvim/lua/axp/plugins/null-ls/init.lua b/nvim/.config/nvim/lua/axp/plugins/null-ls/init.lua new file mode 100644 index 0000000..5c93992 --- /dev/null +++ b/nvim/.config/nvim/lua/axp/plugins/null-ls/init.lua @@ -0,0 +1,30 @@ +-- Null-ls. +local status, null_ls = pcall(require, 'null-ls') +if (not status) then return end + +local formatting = null_ls.builtins.formatting +local prettier_config = vim.fn.stdpath('config') .. '/lua/axp/plugins/null-ls/.prettierrc' +-- local clang_format_config = vim.fn.stdpath('config') .. '/lua/axp/plugins/null-ls/.clang-format' + +-- Init. +null_ls.setup { + sources = { + -- formatting.clang_format.with({ + -- extra_args = { + -- -- '--style=Google' + -- '--assume-filename=' .. clang_format_config + -- } + -- }), + formatting.prettier.with({ + extra_args = { '--config', prettier_config } + }) + }, + on_attach = function (client, bufnr) + if client.supports_method('textDocument/formatting') then + -- Create a command `:Format` local to the LSP buffer + vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_) + vim.lsp.buf.format() + end, { desc = 'Format current buffer with LSP' }) + end + end +} diff --git a/nvim/.config/nvim/lua/axp/plugins/nvim-cmp.lua b/nvim/.config/nvim/lua/axp/plugins/nvim-cmp.lua new file mode 100644 index 0000000..2f0e79a --- /dev/null +++ b/nvim/.config/nvim/lua/axp/plugins/nvim-cmp.lua @@ -0,0 +1,27 @@ +local status, cmp = pcall(require, 'cmp') +if (not status) then return end + +local status_ls, ls = pcall(require, 'luasnip') + +cmp.setup { + snippet = { + expand = function(args) + if (status_ls) then + ls.lsp_expand(args.body) + end + end, + }, + mapping = cmp.mapping.preset.insert { + [''] = cmp.mapping.scroll_docs( -4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete {}, + [''] = cmp.mapping.confirm { + behavior = cmp.ConfirmBehavior.Replace, + select = true, + }, + }, + sources = { + { name = 'nvim_lsp' }, + { name = 'luasnip' }, + } +} diff --git a/nvim/.config/nvim/lua/axp/plugins/telescope.lua b/nvim/.config/nvim/lua/axp/plugins/telescope.lua new file mode 100644 index 0000000..d169995 --- /dev/null +++ b/nvim/.config/nvim/lua/axp/plugins/telescope.lua @@ -0,0 +1,34 @@ +local status, telescope = pcall(require, 'telescope') +if (not status) then return end + +-- Configure. +telescope.setup { + defaults = { + file_ignore_patterns = { + '.git', + 'node_modules', + 'dist', + 'static', + 'public' + } + } +} + +-- See `:help telescope.builtin` +local builtin = require('telescope.builtin') + +-- Search. +vim.keymap.set('n', 'sf', builtin.find_files) +vim.keymap.set('n', 'sw', builtin.grep_string) +vim.keymap.set('n', 'sg', builtin.live_grep) + +-- Old files. +vim.keymap.set('n', '?', builtin.oldfiles) + +-- Search current buffer. +-- vim.keymap.set('n', '/', function() +-- builtin.current_buffer_fuzzy_find(require('telescope.themes').get_dropdown { +-- winblend = 10, +-- previewer = false, +-- }) +-- end) diff --git a/nvim/.config/nvim/lua/axp/plugins/treesitter.lua b/nvim/.config/nvim/lua/axp/plugins/treesitter.lua new file mode 100644 index 0000000..97e2224 --- /dev/null +++ b/nvim/.config/nvim/lua/axp/plugins/treesitter.lua @@ -0,0 +1,40 @@ +local status, ts = pcall(require, 'nvim-treesitter.configs') +if (not status) then return end + +ts.setup { + ensure_installed = { + 'vim', + 'lua', + 'cmake', + 'cpp', + 'bash', + 'javascript', + 'typescript', + 'tsx', + 'json', + 'html', + 'pug', + 'vue', + 'css', + 'scss', + 'python', + 'dockerfile', + 'regex', + 'markdown', + 'yaml', + 'astro', + }, + ignore_install = {}, + modules = {}, + sync_install = false, + auto_install = true, + autotag = { enable = true }, + highlight = { + enable = true, + disable = {}, + }, + indent = { + enable = true, + disable = {} + } +} diff --git a/nvim/.config/nvim/plugin/packer_compiled.lua b/nvim/.config/nvim/plugin/packer_compiled.lua new file mode 100644 index 0000000..c40b92e --- /dev/null +++ b/nvim/.config/nvim/plugin/packer_compiled.lua @@ -0,0 +1,164 @@ +-- Automatically generated packer.nvim plugin loader code + +if vim.api.nvim_call_function('has', {'nvim-0.5'}) ~= 1 then + vim.api.nvim_command('echohl WarningMsg | echom "Invalid Neovim version for packer.nvim! | echohl None"') + return +end + +vim.api.nvim_command('packadd packer.nvim') + +local no_errors, error_msg = pcall(function() + +_G._packer = _G._packer or {} +_G._packer.inside_compile = true + +local time +local profile_info +local should_profile = false +if should_profile then + local hrtime = vim.loop.hrtime + profile_info = {} + time = function(chunk, start) + if start then + profile_info[chunk] = hrtime() + else + profile_info[chunk] = (hrtime() - profile_info[chunk]) / 1e6 + end + end +else + time = function(chunk, start) end +end + +local function save_profiles(threshold) + local sorted_times = {} + for chunk_name, time_taken in pairs(profile_info) do + sorted_times[#sorted_times + 1] = {chunk_name, time_taken} + end + table.sort(sorted_times, function(a, b) return a[2] > b[2] end) + local results = {} + for i, elem in ipairs(sorted_times) do + if not threshold or threshold and elem[2] > threshold then + results[i] = elem[1] .. ' took ' .. elem[2] .. 'ms' + end + end + if threshold then + table.insert(results, '(Only showing plugins that took longer than ' .. threshold .. ' ms ' .. 'to load)') + end + + _G._packer.profile_output = results +end + +time([[Luarocks path setup]], true) +local package_path_str = "/home/antoxa/.cache/nvim/packer_hererocks/2.1.1753364724/share/lua/5.1/?.lua;/home/antoxa/.cache/nvim/packer_hererocks/2.1.1753364724/share/lua/5.1/?/init.lua;/home/antoxa/.cache/nvim/packer_hererocks/2.1.1753364724/lib/luarocks/rocks-5.1/?.lua;/home/antoxa/.cache/nvim/packer_hererocks/2.1.1753364724/lib/luarocks/rocks-5.1/?/init.lua" +local install_cpath_pattern = "/home/antoxa/.cache/nvim/packer_hererocks/2.1.1753364724/lib/lua/5.1/?.so" +if not string.find(package.path, package_path_str, 1, true) then + package.path = package.path .. ';' .. package_path_str +end + +if not string.find(package.cpath, install_cpath_pattern, 1, true) then + package.cpath = package.cpath .. ';' .. install_cpath_pattern +end + +time([[Luarocks path setup]], false) +time([[try_loadstring definition]], true) +local function try_loadstring(s, component, name) + local success, result = pcall(loadstring(s), name, _G.packer_plugins[name]) + if not success then + vim.schedule(function() + vim.api.nvim_notify('packer.nvim: Error running ' .. component .. ' for ' .. name .. ': ' .. result, vim.log.levels.ERROR, {}) + end) + end + return result +end + +time([[try_loadstring definition]], false) +time([[Defining packer_plugins]], true) +_G.packer_plugins = { + ["Comment.nvim"] = { + loaded = true, + path = "/home/antoxa/.local/share/nvim/site/pack/packer/start/Comment.nvim", + url = "https://github.com/numToStr/Comment.nvim" + }, + LuaSnip = { + loaded = true, + path = "/home/antoxa/.local/share/nvim/site/pack/packer/start/LuaSnip", + url = "https://github.com/L3MON4D3/LuaSnip" + }, + ["cmp-nvim-lsp"] = { + loaded = true, + path = "/home/antoxa/.local/share/nvim/site/pack/packer/start/cmp-nvim-lsp", + url = "https://github.com/hrsh7th/cmp-nvim-lsp" + }, + ["indent-blankline.nvim"] = { + loaded = true, + path = "/home/antoxa/.local/share/nvim/site/pack/packer/start/indent-blankline.nvim", + url = "https://github.com/lukas-reineke/indent-blankline.nvim" + }, + ["mason-lspconfig.nvim"] = { + loaded = true, + path = "/home/antoxa/.local/share/nvim/site/pack/packer/start/mason-lspconfig.nvim", + url = "https://github.com/williamboman/mason-lspconfig.nvim" + }, + ["mason.nvim"] = { + loaded = true, + path = "/home/antoxa/.local/share/nvim/site/pack/packer/start/mason.nvim", + url = "https://github.com/williamboman/mason.nvim" + }, + ["nightfox.nvim"] = { + loaded = true, + path = "/home/antoxa/.local/share/nvim/site/pack/packer/start/nightfox.nvim", + url = "https://github.com/EdenEast/nightfox.nvim" + }, + ["nvim-autopairs"] = { + loaded = true, + path = "/home/antoxa/.local/share/nvim/site/pack/packer/start/nvim-autopairs", + url = "https://github.com/windwp/nvim-autopairs" + }, + ["nvim-cmp"] = { + loaded = true, + path = "/home/antoxa/.local/share/nvim/site/pack/packer/start/nvim-cmp", + url = "https://github.com/hrsh7th/nvim-cmp" + }, + ["nvim-lspconfig"] = { + loaded = true, + path = "/home/antoxa/.local/share/nvim/site/pack/packer/start/nvim-lspconfig", + url = "https://github.com/neovim/nvim-lspconfig" + }, + ["nvim-treesitter"] = { + loaded = true, + path = "/home/antoxa/.local/share/nvim/site/pack/packer/start/nvim-treesitter", + url = "https://github.com/nvim-treesitter/nvim-treesitter" + }, + ["packer.nvim"] = { + loaded = true, + path = "/home/antoxa/.local/share/nvim/site/pack/packer/start/packer.nvim", + url = "https://github.com/wbthomason/packer.nvim" + }, + ["plenary.nvim"] = { + loaded = true, + path = "/home/antoxa/.local/share/nvim/site/pack/packer/start/plenary.nvim", + url = "https://github.com/nvim-lua/plenary.nvim" + }, + ["telescope.nvim"] = { + loaded = true, + path = "/home/antoxa/.local/share/nvim/site/pack/packer/start/telescope.nvim", + url = "https://github.com/nvim-telescope/telescope.nvim" + } +} + +time([[Defining packer_plugins]], false) + +_G._packer.inside_compile = false +if _G._packer.needs_bufread == true then + vim.cmd("doautocmd BufRead") +end +_G._packer.needs_bufread = false + +if should_profile then save_profiles() end + +end) + +if not no_errors then + error_msg = error_msg:gsub('"', '\\"') + vim.api.nvim_command('echohl ErrorMsg | echom "Error in packer_compiled: '..error_msg..'" | echom "Please check your config for correctness" | echohl None') +end diff --git a/opencode/.config/opencode/opencode.json b/opencode/.config/opencode/opencode.json new file mode 100644 index 0000000..ba857dc --- /dev/null +++ b/opencode/.config/opencode/opencode.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://opencode.ai/config.json", + "provider": { + "ollama": { + "npm": "@ai-sdk/openai-compatible", + "name": "Ollama (local)", + "options": { + "baseURL": "http://localhost:11434/v1" + }, + "models": { + "qwen3:8b": { + "name": "qwen3:8b" + } + } + } + } +} diff --git a/picom/.config/picom/picom.conf b/picom/.config/picom/picom.conf new file mode 100644 index 0000000..0cc883f --- /dev/null +++ b/picom/.config/picom/picom.conf @@ -0,0 +1,427 @@ +################################# +# Shadows # +################################# + + +# Enabled client-side shadows on windows. Note desktop windows +# (windows with '_NET_WM_WINDOW_TYPE_DESKTOP') never get shadow, +# unless explicitly requested using the wintypes option. +# +# shadow = false +shadow = true; + +# The blur radius for shadows, in pixels. (defaults to 12) +# shadow-radius = 12 +shadow-radius = 7; + +# The opacity of shadows. (0.0 - 1.0, defaults to 0.75) +# shadow-opacity = .75 + +# The left offset for shadows, in pixels. (defaults to -15) +# shadow-offset-x = -15 +shadow-offset-x = -7; + +# The top offset for shadows, in pixels. (defaults to -15) +# shadow-offset-y = -15 +shadow-offset-y = -7; +# Red color value of shadow (0.0 - 1.0, defaults to 0). +# shadow-red = 0 + +# Green color value of shadow (0.0 - 1.0, defaults to 0). +# shadow-green = 0 + +# Blue color value of shadow (0.0 - 1.0, defaults to 0). +# shadow-blue = 0 + +# Hex string color value of shadow (#000000 - #FFFFFF, defaults to #000000). This option will override options set shadow-(red/green/blue) +# shadow-color = "#000000" + +# Specify a list of conditions of windows that should have no shadow. +# +# examples: +# shadow-exclude = "n:e:Notification"; +# +# shadow-exclude = [] +shadow-exclude = [ + "name = 'Notification'", + "class_g = 'Conky'", + "class_g ?= 'Notify-osd'", + "class_g = 'Cairo-clock'", + "_GTK_FRAME_EXTENTS@:c" +]; + +# Specify a list of conditions of windows that should have no shadow painted over, such as a dock window. +# clip-shadow-above = [] + +# Specify a X geometry that describes the region in which shadow should not +# be painted in, such as a dock window region. Use +# shadow-exclude-reg = "x10+0+0" +# for example, if the 10 pixels on the bottom of the screen should not have shadows painted on. +# +# shadow-exclude-reg = "" + +# Crop shadow of a window fully on a particular Xinerama screen to the screen. +# xinerama-shadow-crop = false + + +################################# +# Fading # +################################# + + +# Fade windows in/out when opening/closing and when opacity changes, +# unless no-fading-openclose is used. +# fading = false +fading = true; + +# Opacity change between steps while fading in. (0.01 - 1.0, defaults to 0.028) +# fade-in-step = 0.028 +fade-in-step = 0.03; + +# Opacity change between steps while fading out. (0.01 - 1.0, defaults to 0.03) +# fade-out-step = 0.03 +fade-out-step = 0.03; + +# The time between steps in fade step, in milliseconds. (> 0, defaults to 10) +# fade-delta = 10 + +# Specify a list of conditions of windows that should not be faded. +# fade-exclude = [] + +# Do not fade on window open/close. +# no-fading-openclose = false + +# Do not fade destroyed ARGB windows with WM frame. Workaround of bugs in Openbox, Fluxbox, etc. +# no-fading-destroyed-argb = false + + +################################# +# Transparency / Opacity # +################################# + + +# Opacity of inactive windows. (0.1 - 1.0, defaults to 1.0) +# inactive-opacity = 1 +inactive-opacity = 0.95; + +# Opacity of window titlebars and borders. (0.1 - 1.0, disabled by default) +# frame-opacity = 1.0 +frame-opacity = 0.9; + +# Let inactive opacity set by -i override the '_NET_WM_WINDOW_OPACITY' values of windows. +# inactive-opacity-override = true +inactive-opacity-override = false; + +# Default opacity for active windows. (0.0 - 1.0, defaults to 1.0) +# active-opacity = 1.0 + +# Dim inactive windows. (0.0 - 1.0, defaults to 0.0) +# inactive-dim = 0.0 + +# Specify a list of conditions of windows that should never be considered focused. +# focus-exclude = [] +focus-exclude = [ "class_g = 'Cairo-clock'" ]; + +# Use fixed inactive dim value, instead of adjusting according to window opacity. +# inactive-dim-fixed = 1.0 + +# Specify a list of opacity rules, in the format `PERCENT:PATTERN`, +# like `50:name *= "Firefox"`. picom-trans is recommended over this. +# Note we don't make any guarantee about possible conflicts with other +# programs that set '_NET_WM_WINDOW_OPACITY' on frame or client windows. +# example: +# opacity-rule = [ "80:class_g = 'URxvt'" ]; +# +# opacity-rule = [] + + +################################# +# Corners # +################################# + +# Sets the radius of rounded window corners. When > 0, the compositor will +# round the corners of windows. Does not interact well with +# `transparent-clipping`. +corner-radius = 0 + +# Exclude conditions for rounded corners. +rounded-corners-exclude = [ + "window_type = 'dock'", + "window_type = 'desktop'" +]; + + +################################# +# Background-Blurring # +################################# + + +# Parameters for background blurring, see the *BLUR* section for more information. +# blur-method = +# blur-size = 12 +# +# blur-deviation = false +# +# blur-strength = 5 + +# Blur background of semi-transparent / ARGB windows. +# Bad in performance, with driver-dependent behavior. +# The name of the switch may change without prior notifications. +# +# blur-background = false + +# Blur background of windows when the window frame is not opaque. +# Implies: +# blur-background +# Bad in performance, with driver-dependent behavior. The name may change. +# +# blur-background-frame = false + + +# Use fixed blur strength rather than adjusting according to window opacity. +# blur-background-fixed = false + + +# Specify the blur convolution kernel, with the following format: +# example: +# blur-kern = "5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1"; +# +# blur-kern = "" +blur-kern = "3x3box"; + + +# Exclude conditions for background blur. +# blur-background-exclude = [] +blur-background-exclude = [ + "window_type = 'dock'", + "window_type = 'desktop'", + "_GTK_FRAME_EXTENTS@:c" +]; + +################################# +# General Settings # +################################# + +# Enable remote control via D-Bus. See the man page for more details. +# dbus = true + +# Daemonize process. Fork to background after initialization. Causes issues with certain (badly-written) drivers. +# daemon = false + +# Specify the backend to use: `xrender`, `glx`, or `xr_glx_hybrid`. +# `xrender` is the default one. +# +# backend = "glx" +backend = "xrender"; + +# Enable/disable VSync. +# vsync = false +vsync = true; + +# Enable remote control via D-Bus. See the *D-BUS API* section below for more details. +# dbus = false + +# Try to detect WM windows (a non-override-redirect window with no +# child that has 'WM_STATE') and mark them as active. +# +# mark-wmwin-focused = false +mark-wmwin-focused = true; + +# Mark override-redirect windows that doesn't have a child window with 'WM_STATE' focused. +# mark-ovredir-focused = false +mark-ovredir-focused = true; + +# Try to detect windows with rounded corners and don't consider them +# shaped windows. The accuracy is not very high, unfortunately. +# +# detect-rounded-corners = false +detect-rounded-corners = true; + +# Detect '_NET_WM_WINDOW_OPACITY' on client windows, useful for window managers +# not passing '_NET_WM_WINDOW_OPACITY' of client windows to frame windows. +# +# detect-client-opacity = false +detect-client-opacity = true; + +# Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window, +# rather than listening to 'FocusIn'/'FocusOut' event. Might have more accuracy, +# provided that the WM supports it. +# +# use-ewmh-active-win = false + +# Unredirect all windows if a full-screen opaque window is detected, +# to maximize performance for full-screen windows. Known to cause flickering +# when redirecting/unredirecting windows. +# +# unredir-if-possible = false + +# Delay before unredirecting the window, in milliseconds. Defaults to 0. +# unredir-if-possible-delay = 0 + +# Conditions of windows that shouldn't be considered full-screen for unredirecting screen. +# unredir-if-possible-exclude = [] + +# Use 'WM_TRANSIENT_FOR' to group windows, and consider windows +# in the same group focused at the same time. +# +# detect-transient = false +detect-transient = true; + +# Use 'WM_CLIENT_LEADER' to group windows, and consider windows in the same +# group focused at the same time. This usually means windows from the same application +# will be considered focused or unfocused at the same time. +# 'WM_TRANSIENT_FOR' has higher priority if detect-transient is enabled, too. +# +# detect-client-leader = false + +# Resize damaged region by a specific number of pixels. +# A positive value enlarges it while a negative one shrinks it. +# If the value is positive, those additional pixels will not be actually painted +# to screen, only used in blur calculation, and such. (Due to technical limitations, +# with use-damage, those pixels will still be incorrectly painted to screen.) +# Primarily used to fix the line corruption issues of blur, +# in which case you should use the blur radius value here +# (e.g. with a 3x3 kernel, you should use `--resize-damage 1`, +# with a 5x5 one you use `--resize-damage 2`, and so on). +# May or may not work with *--glx-no-stencil*. Shrinking doesn't function correctly. +# +# resize-damage = 1 + +# Specify a list of conditions of windows that should be painted with inverted color. +# Resource-hogging, and is not well tested. +# +# invert-color-include = [] + +# GLX backend: Avoid using stencil buffer, useful if you don't have a stencil buffer. +# Might cause incorrect opacity when rendering transparent content (but never +# practically happened) and may not work with blur-background. +# My tests show a 15% performance boost. Recommended. +# +glx-no-stencil = true; + +# GLX backend: Avoid rebinding pixmap on window damage. +# Probably could improve performance on rapid window content changes, +# but is known to break things on some drivers (LLVMpipe, xf86-video-intel, etc.). +# Recommended if it works. +# +# glx-no-rebind-pixmap = false + +# Disable the use of damage information. +# This cause the whole screen to be redrawn every time, instead of the part of the screen +# has actually changed. Potentially degrades the performance, but might fix some artifacts. +# The opposing option is use-damage +# +# no-use-damage = false +use-damage = true; + +# Use X Sync fence to sync clients' draw calls, to make sure all draw +# calls are finished before picom starts drawing. Needed on nvidia-drivers +# with GLX backend for some users. +# +# xrender-sync-fence = false + +# GLX backend: Use specified GLSL fragment shader for rendering window +# contents. Read the man page for a detailed explanation of the interface. +# +# window-shader-fg = "default" + +# Use rules to set per-window shaders. Syntax is SHADER_PATH:PATTERN, similar +# to opacity-rule. SHADER_PATH can be "default". This overrides window-shader-fg. +# +# window-shader-fg-rule = [ +# "my_shader.frag:window_type != 'dock'" +# ] + +# Force all windows to be painted with blending. Useful if you +# have a glx-fshader-win that could turn opaque pixels transparent. +# +# force-win-blend = false + +# Do not use EWMH to detect fullscreen windows. +# Reverts to checking if a window is fullscreen based only on its size and coordinates. +# +# no-ewmh-fullscreen = false + +# Dimming bright windows so their brightness doesn't exceed this set value. +# Brightness of a window is estimated by averaging all pixels in the window, +# so this could comes with a performance hit. +# Setting this to 1.0 disables this behaviour. Requires --use-damage to be disabled. (default: 1.0) +# +# max-brightness = 1.0 + +# Make transparent windows clip other windows like non-transparent windows do, +# instead of blending on top of them. +# +# transparent-clipping = false + +# Specify a list of conditions of windows that should never have transparent +# clipping applied. Useful for screenshot tools, where you need to be able to +# see through transparent parts of the window. +# +# transparent-clipping-exclude = [] + +# Set the log level. Possible values are: +# "trace", "debug", "info", "warn", "error" +# in increasing level of importance. Case doesn't matter. +# If using the "TRACE" log level, it's better to log into a file +# using *--log-file*, since it can generate a huge stream of logs. +# +# log-level = "debug" +log-level = "warn"; + +# Set the log file. +# If *--log-file* is never specified, logs will be written to stderr. +# Otherwise, logs will to written to the given file, though some of the early +# logs might still be written to the stderr. +# When setting this option from the config file, it is recommended to use an absolute path. +# +# log-file = "/path/to/your/log/file" + +# Show all X errors (for debugging) +# show-all-xerrors = false + +# Write process ID to a file. +# write-pid-path = "/path/to/your/log/file" + +# Window type settings +# +# 'WINDOW_TYPE' is one of the 15 window types defined in EWMH standard: +# "unknown", "desktop", "dock", "toolbar", "menu", "utility", +# "splash", "dialog", "normal", "dropdown_menu", "popup_menu", +# "tooltip", "notification", "combo", and "dnd". +# +# Following per window-type options are available: :: +# +# fade, shadow::: +# Controls window-type-specific shadow and fade settings. +# +# opacity::: +# Controls default opacity of the window type. +# +# focus::: +# Controls whether the window of this type is to be always considered focused. +# (By default, all window types except "normal" and "dialog" has this on.) +# +# full-shadow::: +# Controls whether shadow is drawn under the parts of the window that you +# normally won't be able to see. Useful when the window has parts of it +# transparent, and you want shadows in those areas. +# +# clip-shadow-above::: +# Controls whether shadows that would have been drawn above the window should +# be clipped. Useful for dock windows that should have no shadow painted on top. +# +# redir-ignore::: +# Controls whether this type of windows should cause screen to become +# redirected again after been unredirected. If you have unredir-if-possible +# set, and doesn't want certain window to cause unnecessary screen redirection, +# you can set this to `true`. +# +wintypes: +{ + tooltip = { fade = true; shadow = true; opacity = 0.75; focus = true; full-shadow = false; }; + dock = { shadow = false; clip-shadow-above = true; } + dnd = { shadow = false; } + popup_menu = { opacity = 0.8; } + dropdown_menu = { opacity = 0.8; } +}; diff --git a/polybar/.config/polybar/config.ini b/polybar/.config/polybar/config.ini new file mode 100644 index 0000000..0cc268b --- /dev/null +++ b/polybar/.config/polybar/config.ini @@ -0,0 +1,198 @@ +[settings] +screenchange-reload = true +pseudo-transparency = true + +[colors] +primary = #77A7D2 +secondary = #F00000 +foreground = #CDCDCD + +alert = #A54242 +disabled = #707880 + +background = #242424 +background-alt = #373B41 + +[bar/top] +monitor = ${env:MONITOR} +monitor-strict = true + +font-0 = Terminus:pixelsize=18;3 +font-1 = TerminessTTF Nerd Font:pixelsize=14;3 + +width = 100% +height = 28 +radius = 0 + +line-size = 2 + +background = ${colors.background} +foreground = ${colors.foreground} + +separator = | +separator-foreground = ${colors.disabled} + +border-size = 0 +border-color = #00000000 + +padding-left = 0 +padding-right = 1 + +module-margin = 1 + +modules-left = xworkspaces i3 xwindow +modules-right = cpu temperature memory pulseaudio xkeyboard battery date + +tray-position = right +tray-detached = false + +cursor-click = pointer + +[module/xworkspaces] +type = internal/xworkspaces +pin-workspaces = true +enable-scroll = false + +label-active = %name% +label-active-background = ${colors.background-alt} +label-active-underline= ${colors.primary} +label-active-padding = 1 + +label-occupied = %name% +label-occupied-padding = 1 + +label-urgent = %name% +label-urgent-background = ${colors.alert} +label-urgent-padding = 1 + +label-empty = %name% +label-empty-foreground = ${colors.disabled} +label-empty-padding = 1 + +[module/i3] +type = internal/i3 + +label-mode = %mode% +label-mode-padding = 1 +label-mode-background = ${colors.secondary} + +format = + +[module/xwindow] +type = internal/xwindow +label = %title:0:60:...% + +[module/cpu] +type = internal/cpu +interval = 2 +label = %percentage:2%% +format-prefix = "Cpu:" +format-prefix-foreground = ${colors.primary} + +[module/temperature] +type = internal/temperature + +thermal-zone = 0 +warn-temperature = 70 + +format =