From f8acb4edc93d2570856381eb7fb6f75db3955cf6 Mon Sep 17 00:00:00 2001 From: Luca Matei Pintilie Date: Tue, 21 Dec 2021 21:26:50 +0100 Subject: Initial commit2 --- .config/Vieb/viebrc | 200 +++++++ .config/alacritty/alacritty.yml | 853 ++++++++++++++++++++++++++++++ .config/alacritty/themes/dracula | 1 + .config/eww/eww.scss | 66 +++ .config/eww/eww.yuck | 61 +++ .config/eww/scripts/get_brightness | 2 + .config/eww/scripts/get_headvol | 2 + .config/eww/scripts/get_mastervol | 2 + .config/eww/scripts/getram | 2 + .config/fish/completions/alacritty.fish | 74 +++ .config/fish/completions/pass.fish | 116 ++++ .config/fish/conf.d/dracula.fish | 33 ++ .config/fish/config.fish | 24 + .config/fish/fish_plugins | 1 + .config/fish/fish_variables | 34 ++ .config/fish/functions/br.fish | 1 + .config/fish/functions/fish_greeting.fish | 4 + .config/glava/bars | 1 + .config/glava/bars.glsl | 33 ++ .config/glava/circle | 1 + .config/glava/circle.glsl | 24 + .config/glava/env_KWin.glsl | 8 + .config/glava/env_Openbox.glsl | 2 + .config/glava/env_Xfwm4.glsl | 3 + .config/glava/env_awesome.glsl | 1 + .config/glava/env_default.glsl | 1 + .config/glava/env_i3.glsl | 1 + .config/glava/graph | 1 + .config/glava/graph.glsl | 31 ++ .config/glava/radial | 1 + .config/glava/radial.glsl | 39 ++ .config/glava/rc.glsl | 227 ++++++++ .config/glava/smooth_parameters.glsl | 78 +++ .config/glava/util | 1 + .config/glava/wave | 1 + .config/glava/wave.glsl | 14 + .config/nvim/LICENSE | 674 +++++++++++++++++++++++ .config/nvim/lua/custom/chadrc.lua | 39 ++ .config/nvim/lua/custom/init.lua | 84 +++ .config/rofi/config.rasi | 93 ++++ .config/starship.toml | 708 +++++++++++++++++++++++++ .gitmodules | 3 + bootstrap.sh | 49 ++ 43 files changed, 3594 insertions(+) create mode 100644 .config/Vieb/viebrc create mode 100644 .config/alacritty/alacritty.yml create mode 160000 .config/alacritty/themes/dracula create mode 100644 .config/eww/eww.scss create mode 100644 .config/eww/eww.yuck create mode 100755 .config/eww/scripts/get_brightness create mode 100755 .config/eww/scripts/get_headvol create mode 100755 .config/eww/scripts/get_mastervol create mode 100755 .config/eww/scripts/getram create mode 100644 .config/fish/completions/alacritty.fish create mode 100644 .config/fish/completions/pass.fish create mode 100644 .config/fish/conf.d/dracula.fish create mode 100644 .config/fish/config.fish create mode 100644 .config/fish/fish_plugins create mode 100644 .config/fish/fish_variables create mode 120000 .config/fish/functions/br.fish create mode 100644 .config/fish/functions/fish_greeting.fish create mode 120000 .config/glava/bars create mode 100755 .config/glava/bars.glsl create mode 120000 .config/glava/circle create mode 100755 .config/glava/circle.glsl create mode 100755 .config/glava/env_KWin.glsl create mode 100755 .config/glava/env_Openbox.glsl create mode 100755 .config/glava/env_Xfwm4.glsl create mode 100755 .config/glava/env_awesome.glsl create mode 100755 .config/glava/env_default.glsl create mode 100755 .config/glava/env_i3.glsl create mode 120000 .config/glava/graph create mode 100755 .config/glava/graph.glsl create mode 120000 .config/glava/radial create mode 100755 .config/glava/radial.glsl create mode 100755 .config/glava/rc.glsl create mode 100755 .config/glava/smooth_parameters.glsl create mode 120000 .config/glava/util create mode 120000 .config/glava/wave create mode 100755 .config/glava/wave.glsl create mode 100644 .config/nvim/LICENSE create mode 100644 .config/nvim/lua/custom/chadrc.lua create mode 100644 .config/nvim/lua/custom/init.lua create mode 100644 .config/rofi/config.rasi create mode 100644 .config/starship.toml create mode 100644 .gitmodules create mode 100755 bootstrap.sh diff --git a/.config/Vieb/viebrc b/.config/Vieb/viebrc new file mode 100644 index 0000000..4509616 --- /dev/null +++ b/.config/Vieb/viebrc @@ -0,0 +1,200 @@ +" Options +set adblocker=update +set cache=clearonquit +" set noclearcookiesonquit +set nocleardownloadsoncompleted +set nocleardownloadsonquit +" set noclearhistoryonquit +" set noclearlocalstorageonquit +" set noclosablepinnedtabs +set commandhist=useronly +set containercolors=temp\d+~#ff0 +set containerkeeponreopen +set containernewtab=s:usecurrent +set containershowname=automatic +set containersplitpage=s:usecurrent +set containerstartuppage=main +set countlimit=100 +set devtoolsposition=split +set downloadmethod=confirm +set downloadpath=~/Downloads/ +set explorehist +set externalcommand= +set favicons=session +set favoritepages= +set firefoxmode=always +set follownewtabswitch +set fontsize=16 +set guifullscreennavbar=oninput +set guifullscreentabbar=onupdate +set guihidetimeout=2000 +set guinavbar=always +set guitabbar=always +set ignorecase +set incsearch +set keeprecentlyclosed +set mapsuggest=9000000000000000 +set mapsuggestposition=topright +set maxmapdepth=10 +set menupage=elementasneeded +set menuvieb=both +set mintabwidth=250 +set modifiers= +set modifiers+=Ctrl +set modifiers+=Shift +set modifiers+=Alt +set modifiers+=Meta +set modifiers+=NumLock +set modifiers+=CapsLock +set modifiers+=ScrollLock +set mouse +set nomousefocus +set mousenewtabswitch +set mousevisualmode=onswitch +set nativenotification=never +set notificationduration=6000 +set nonotificationforpermissions +set notificationposition=bottomright +set permissioncamera=ask +set permissionclipboardread=block +set permissionclosepage=allow +set permissiondisplaycapture=ask +set permissionfullscreen=allow +set permissiongeolocation=block +set permissionmediadevices=allow +set permissionmicrophone=ask +set permissionmidi=block +set permissionmidisysex=block +set permissionnotifications=block +set permissionopenexternal=ask +set permissionpersistentstorage=allow +set permissionpointerlock=block +set permissionsallowed= +set permissionsasked= +set permissionsblocked= +set permissionscreenwakelock=block +set permissionsensors=block +set permissionunknown=block +set noquitonlasttabclose +set redirects=https?://(www\.)?google\.com(\.\w+)?/amp/s/amp\.(.*)~https://$3 +set redirecttohttp +set requesttimeout=20000 +set norestoretabs +set restorewindowmaximize +set restorewindowposition +set restorewindowsize +set search=https://searx.be/search?q=%s +set searchwords= +set showcmd +set smartcase +set spell +set spelllang=system +set splitbelow +set nosplitright +set startuppages= +set storenewvisits=pages +set suggestcommands=9000000000000000 +set suggestorder= +set suggestorder+=history +set suggestorder+=searchword +set suggestorder+=file +set suggesttopsites=10 +set suspendonrestore=regular +set suspendtimeout=0 +set tabclosefocusright +set tabcycle +set tabnexttocurrent +set taboverflow=scroll +set tabreopenposition=previous +set timeout +set timeoutlen=1000 +set vimcommand=nvim +set windowtitle=title + +" Mappings +map <:downloads> +map +map +map +map <:devtools> +map +map +map <:close> +map +map <:history> +map +map <:hardcopy> +map <:quit> +map <:write> +map +map +map +map +map <:devtools> +map +map <:downloads> +map +map +map <:b 9999> +map <:b 0> +map <:b 1> +map <:b 2> +map <:b 3> +map <:b 4> +map <:b 5> +map <:b 6> +map <:b 7> +map <:b 8> +cmap +cmap +cmap +cmap +cmap +emap +emap +emap +emap +emap +fmap +fmap +fmap +imap +imap +imap +mmap +mmap +mmap +nmap +nmap +nmap +nmap +nmap +nmap +nmap +nmap +nmap +nmap +nmap +nmap +nmap +nmap +nmap +pmap +pmap +pmap +smap +smap +smap +smap +smap +smap +smap +vmap +vmap +vmap + +" Commands +colorscheme default + +" Viebrc generated by Vieb +" vim: ft=vim diff --git a/.config/alacritty/alacritty.yml b/.config/alacritty/alacritty.yml new file mode 100644 index 0000000..47a31f4 --- /dev/null +++ b/.config/alacritty/alacritty.yml @@ -0,0 +1,853 @@ +# 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: + - ~/.config/alacritty/themes/dracula/dracula.yml +# - /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 + + # 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: monospace + + # 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: 24.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 + +# If `true`, bold text is drawn using the bright color variants. +#draw_bold_text_with_bright_colors: false + +# Colors (Tomorrow Night) +#colors: + # Default colors + #primary: + # background: '#1d1f21' + # foreground: '#c5c8c6' + + # Bright and dim foreground colors + # + # The dimmed foreground color is calculated automatically if it is not + # present. If the bright foreground color is not set, or + # `draw_bold_text_with_bright_colors` is `false`, the normal foreground + # color will be used. + #dim_foreground: '#828482' + #bright_foreground: '#eaeaea' + + # 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: [] + +# 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 + +# 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. +background_opacity: 1 + +#election: + # 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: Beam + + # 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/bash +# 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 + +#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) +# +# And optionally: +# +# - `mods` (see key bindings) +#mouse_bindings: +# - { mouse: Middle, 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. +# - 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: Vi|~Search, action: ScrollToBottom } + #- { key: Space, mods: Shift|Control, mode: ~Search, action: ToggleViMode } + #- { key: Escape, mode: Vi|~Search, action: ClearSelection } + #- { key: I, mode: Vi|~Search, action: ScrollToBottom } + #- { key: I, mode: Vi|~Search, action: ToggleViMode } + #- { 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/.config/alacritty/themes/dracula b/.config/alacritty/themes/dracula new file mode 160000 index 0000000..05faff1 --- /dev/null +++ b/.config/alacritty/themes/dracula @@ -0,0 +1 @@ +Subproject commit 05faff15c0158712be87d200081633d9f4850a7d diff --git a/.config/eww/eww.scss b/.config/eww/eww.scss new file mode 100644 index 0000000..c517db2 --- /dev/null +++ b/.config/eww/eww.scss @@ -0,0 +1,66 @@ +* { + all: unset; //Unsets everything so you can style everything from scratch +} + +//Global Styles +.alsa-gui { + background-color: #1e222a; + color: #abb2bf; + padding: 12px; + border-radius: 7px; + font-size : 25px; +} + +.metric scale trough { + all: unset; + border-radius: 50px; + min-height: 3px; + min-width: 90px; + margin-left: 10px; + margin-right: 10px; +} + +.chad scale trough { + all: unset; + border-radius: 50px; + min-height: 3px; + min-width: 90px; + margin-left: 10px; + margin-right: 10px; +} + +.metric scale trough highlight { + all: unset; + background-color: #668ee3; + border-radius: 10px; +} + +.chad scale trough highlight { + all: unset; + background-color: #e06c75; + border-radius: 10px; +} + +.bri { + background-color: #d47d85; +} + +.metric scale trough { + all: unset; + background-color: #282c34; + border-radius: 50px; + min-height: 6px; + min-width: 90px; + margin-left: 10px; + margin-right: 10px; +} + +.chad scale trough { + all: unset; + background-color: #282c34; + border-radius: 50px; + min-height: 6px; + min-width: 90px; + margin-left: 10px; + margin-right: 10px; +} diff --git a/.config/eww/eww.yuck b/.config/eww/eww.yuck new file mode 100644 index 0000000..fb02c29 --- /dev/null +++ b/.config/eww/eww.yuck @@ -0,0 +1,61 @@ +(defwidget chad-widgets [] + (box :orientation "h" + (sliders))) + +(defwidget sliders [] + (box :class "master_vol" :orientation "v" :space-evenly false :halign "end" + (metric :label "" + :value master_vol + :onchange "amixer set Master {}%") + + (metric :label "" + :value head_vol + :onchange "amixer set Headphone {}%") + + (chad :label "" + :value brightness + :onchange "xbacklight -set {}%") + ) +) + +(defwidget chad [label value onchange] + (box :orientation "h" + :class "chad" + :space-evenly false + (box :class "label" label) + (scale :min 0 + :max 101 + :active {onchange != ""} + :value value + :onchange onchange))) + +(defwidget metric [label value onchange] + (box :orientation "h" + :class "metric" + :space-evenly false + (box :class "label" label) + (scale :min 0 + :max 101 + :active {onchange != ""} + :value value + :onchange onchange))) + +(defpoll master_vol :interval "1s" + "scripts/get_mastervol") + +(defpoll head_vol :interval "1s" + "scripts/get_headvol") + +(defpoll brightness :interval "1s" + "scripts/get_brightness") + +(defwindow alsa-gui + :monitor 0 + :windowtype "dock" + :geometry (geometry :x "-01%" + :y "8%" + :width "5%" + :height "0px" + :anchor "top right") + ; :reserve (struts :side "right" :distance "0%") + (chad-widgets)) diff --git a/.config/eww/scripts/get_brightness b/.config/eww/scripts/get_brightness new file mode 100755 index 0000000..4f03d54 --- /dev/null +++ b/.config/eww/scripts/get_brightness @@ -0,0 +1,2 @@ +#!/bin/sh +printf "%.0f\n" $(xbacklight -get) diff --git a/.config/eww/scripts/get_headvol b/.config/eww/scripts/get_headvol new file mode 100755 index 0000000..5ce9bf5 --- /dev/null +++ b/.config/eww/scripts/get_headvol @@ -0,0 +1,2 @@ +#!/bin/sh +amixer sget Headphone | grep 'Left:' | cut -d\ -f7 | tr -d '[%]' diff --git a/.config/eww/scripts/get_mastervol b/.config/eww/scripts/get_mastervol new file mode 100755 index 0000000..e1fd62a --- /dev/null +++ b/.config/eww/scripts/get_mastervol @@ -0,0 +1,2 @@ +#!/bin/sh +amixer get Master | awk '$0~/%/{print $4}' | tr -d '[%]' diff --git a/.config/eww/scripts/getram b/.config/eww/scripts/getram new file mode 100755 index 0000000..791a5a5 --- /dev/null +++ b/.config/eww/scripts/getram @@ -0,0 +1,2 @@ +#!/bin/sh +printf "%.0f\n" $(free -m | grep Mem | awk '{print ($3/$2)*100}') diff --git a/.config/fish/completions/alacritty.fish b/.config/fish/completions/alacritty.fish new file mode 100644 index 0000000..6f8da9b --- /dev/null +++ b/.config/fish/completions/alacritty.fish @@ -0,0 +1,74 @@ +# Meta +complete -c alacritty \ + -s "v" \ + -l "version" \ + -d "Prints version information" +complete -c alacritty \ + -s "h" \ + -l "help" \ + -d "Prints help information" + +# Config +complete -c alacritty \ + -f \ + -l "config-file" \ + -d "Specify an alternative config file" +complete -c alacritty \ + -s "t" \ + -l "title" \ + -d "Defines the window title" +complete -c alacritty \ + -l "class" \ + -d "Defines the window class" +complete -c alacritty \ + -l "embed" \ + -d "Defines the X11 window ID (as a decimal integer) to embed Alacritty within" +complete -c alacritty \ + -x \ + -a '(__fish_complete_directories (commandline -ct))' \ + -l "working-directory" \ + -d "Start shell in specified directory" +complete -c alacritty \ + -l "hold" \ + -d "Remain open after child process exits" +complete -c alacritty \ + -s "o" \ + -l "option" \ + -d "Override config file options" + +# Output +complete \ + -c alacritty \ + -l "print-events" \ + -d "Print all events to stdout" +complete \ + -c alacritty \ + -s "q" \ + -d "Reduces the level of verbosity (min is -qq)" +complete \ + -c alacritty \ + -s "qq" \ + -d "Reduces the level of verbosity" +complete \ + -c alacritty \ + -s "v" \ + -d "Increases the level of verbosity" +complete \ + -c alacritty \ + -s "vv" \ + -d "Increases the level of verbosity" +complete \ + -c alacritty \ + -s "vvv" \ + -d "Increases the level of verbosity" + +complete \ + -c alacritty \ + -l "ref-test" \ + -d "Generates ref test" + +complete \ + -c alacritty \ + -s "e" \ + -l "command" \ + -d "Execute command (must be last arg)" diff --git a/.config/fish/completions/pass.fish b/.config/fish/completions/pass.fish new file mode 100644 index 0000000..d70e33f --- /dev/null +++ b/.config/fish/completions/pass.fish @@ -0,0 +1,116 @@ +# Copyright (C) 2012-2014 Dmitry Medvinsky . All Rights Reserved. +# This file is licensed under the GPLv2+. Please see COPYING for more information. + +set -l PROG 'pass' + +function __fish_pass_get_prefix + if set -q PASSWORD_STORE_DIR + realpath -- "$PASSWORD_STORE_DIR" + else + echo "$HOME/.password-store" + end +end + +function __fish_pass_needs_command + [ (count (commandline -opc)) -eq 1 ] +end + +function __fish_pass_uses_command + set -l cmd (commandline -opc) + if [ (count $cmd) -gt 1 ] + if [ $argv[1] = $cmd[2] ] + return 0 + end + end + return 1 +end + +function __fish_pass_print_gpg_keys + gpg2 --list-keys | grep uid | sed 's/.*<\(.*\)>/\1/' +end + +function __fish_pass_print + set -l ext $argv[1] + set -l strip $argv[2] + set -l prefix (__fish_pass_get_prefix) + set -l matches $prefix/**$ext + printf '%s\n' $matches | sed "s#$prefix/\(.*\)$strip#\1#" +end + +function __fish_pass_print_entry_dirs + __fish_pass_print "/" +end + +function __fish_pass_print_entries + __fish_pass_print ".gpg" ".gpg" +end + +function __fish_pass_print_entries_and_dirs + __fish_pass_print_entry_dirs + __fish_pass_print_entries +end + +function __fish_pass_git_complete + set -l prefix (__fish_pass_get_prefix) + set -l git_cmd (commandline -opc) (commandline -ct) + set -e git_cmd[1 2] # Drop "pass git". + complete -C"git -C $prefix $git_cmd" +end + +complete -c $PROG -f -n '__fish_pass_needs_command' -a help -d 'Command: show usage help' +complete -c $PROG -f -n '__fish_pass_needs_command' -a version -d 'Command: show program version' + +complete -c $PROG -f -n '__fish_pass_needs_command' -a init -d 'Command: initialize new password storage' +complete -c $PROG -f -n '__fish_pass_uses_command init' -s p -l path -d 'Assign gpg-id for specified sub folder of password store' + +complete -c $PROG -f -n '__fish_pass_needs_command' -a ls -d 'Command: list passwords' +complete -c $PROG -f -n '__fish_pass_uses_command ls' -a "(__fish_pass_print_entry_dirs)" + +complete -c $PROG -f -n '__fish_pass_needs_command' -a insert -d 'Command: insert new password' +complete -c $PROG -f -n '__fish_pass_uses_command insert' -s e -l echo -d 'Echo the password on console' +complete -c $PROG -f -n '__fish_pass_uses_command insert' -s m -l multiline -d 'Provide multiline password entry' +complete -c $PROG -f -n '__fish_pass_uses_command insert' -s f -l force -d 'Do not prompt before overwritting' +complete -c $PROG -f -n '__fish_pass_uses_command insert' -a "(__fish_pass_print_entry_dirs)" + +complete -c $PROG -f -n '__fish_pass_needs_command' -a generate -d 'Command: generate new password' +complete -c $PROG -f -n '__fish_pass_uses_command generate' -s n -l no-symbols -d 'Do not use special symbols' +complete -c $PROG -f -n '__fish_pass_uses_command generate' -s c -l clip -d 'Put the password in clipboard' +complete -c $PROG -f -n '__fish_pass_uses_command generate' -s f -l force -d 'Do not prompt before overwritting' +complete -c $PROG -f -n '__fish_pass_uses_command generate' -s i -l in-place -d 'Replace only the first line with the generated password' +complete -c $PROG -f -n '__fish_pass_uses_command generate' -a "(__fish_pass_print_entry_dirs)" + +complete -c $PROG -f -n '__fish_pass_needs_command' -a mv -d 'Command: rename existing password' +complete -c $PROG -f -n '__fish_pass_uses_command mv' -s f -l force -d 'Force rename' +complete -c $PROG -f -n '__fish_pass_uses_command mv' -a "(__fish_pass_print_entries_and_dirs)" + +complete -c $PROG -f -n '__fish_pass_needs_command' -a cp -d 'Command: copy existing password' +complete -c $PROG -f -n '__fish_pass_uses_command cp' -s f -l force -d 'Force copy' +complete -c $PROG -f -n '__fish_pass_uses_command cp' -a "(__fish_pass_print_entries_and_dirs)" + +complete -c $PROG -f -n '__fish_pass_needs_command' -a rm -d 'Command: remove existing password' +complete -c $PROG -f -n '__fish_pass_uses_command rm' -s r -l recursive -d 'Remove password groups recursively' +complete -c $PROG -f -n '__fish_pass_uses_command rm' -s f -l force -d 'Force removal' +complete -c $PROG -f -n '__fish_pass_uses_command rm' -a "(__fish_pass_print_entries_and_dirs)" + +complete -c $PROG -f -n '__fish_pass_needs_command' -a edit -d 'Command: edit password using text editor' +complete -c $PROG -f -n '__fish_pass_uses_command edit' -a "(__fish_pass_print_entries)" + +complete -c $PROG -f -n '__fish_pass_needs_command' -a show -d 'Command: show existing password' +complete -c $PROG -f -n '__fish_pass_uses_command show' -s c -l clip -d 'Put password in clipboard' +complete -c $PROG -f -n '__fish_pass_uses_command show' -a "(__fish_pass_print_entries)" +# When no command is given, `show` is defaulted. +complete -c $PROG -f -n '__fish_pass_needs_command' -s c -l clip -d 'Put password in clipboard' +complete -c $PROG -f -n '__fish_pass_needs_command' -a "(__fish_pass_print_entries)" +complete -c $PROG -f -n '__fish_pass_uses_command -c' -a "(__fish_pass_print_entries)" +complete -c $PROG -f -n '__fish_pass_uses_command --clip' -a "(__fish_pass_print_entries)" + +complete -c $PROG -f -n '__fish_pass_needs_command' -a git -d 'Command: execute a git command' +complete -c $PROG -f -n '__fish_pass_uses_command git' -a '(__fish_pass_git_complete)' +complete -c $PROG -f -n '__fish_pass_needs_command' -a find -d 'Command: find a password file or directory matching pattern' +complete -c $PROG -f -n '__fish_pass_needs_command' -a grep -d 'Command: search inside of decrypted password files for matching pattern' +complete -c $PROG -f -n '__fish_pass_uses_command grep' -a '(begin + set -l cmd (commandline -opc) (commandline -ct) + set -e cmd[1 2] # Drop "pass grep". + complete -C"grep $cmd" +end)' + diff --git a/.config/fish/conf.d/dracula.fish b/.config/fish/conf.d/dracula.fish new file mode 100644 index 0000000..e467e6d --- /dev/null +++ b/.config/fish/conf.d/dracula.fish @@ -0,0 +1,33 @@ +# Dracula Color Palette +set -l foreground f8f8f2 +set -l selection 44475a +set -l comment 6272a4 +set -l red ff5555 +set -l orange ffb86c +set -l yellow f1fa8c +set -l green 50fa7b +set -l purple bd93f9 +set -l cyan 8be9fd +set -l pink ff79c6 + +# Syntax Highlighting Colors +set -g fish_color_normal $foreground +set -g fish_color_command $cyan +set -g fish_color_keyword $pink +set -g fish_color_quote $yellow +set -g fish_color_redirection $foreground +set -g fish_color_end $orange +set -g fish_color_error $red +set -g fish_color_param $purple +set -g fish_color_comment $comment +set -g fish_color_selection --background=$selection +set -g fish_color_search_match --background=$selection +set -g fish_color_operator $green +set -g fish_color_escape $pink +set -g fish_color_autosuggestion $comment + +# Completion Pager Colors +set -g fish_pager_color_progress $comment +set -g fish_pager_color_prefix $cyan +set -g fish_pager_color_completion $foreground +set -g fish_pager_color_description $comment diff --git a/.config/fish/config.fish b/.config/fish/config.fish new file mode 100644 index 0000000..e113322 --- /dev/null +++ b/.config/fish/config.fish @@ -0,0 +1,24 @@ +#!/usr/bin/env fish +abbr -a cls clear +abbr -a ls lsd + +export DENO_INSTALL="/home/luca/.deno" +export PATH="/bin:$DENO_INSTALL/bin:/home/luca/.cargo/bin:/home/luca/.local/bin:$HOME/bin:$HOME/.dprint/bin:$PATH" +export EDITOR=nvim + +export MANPAGER="sh -c 'col -bx | bat -l man -p'" +alias cat='bat --paging=never -p' + +deno completions fish | source +arduino-cli completion fish | source +starship completions fish | source +starship init fish | source + + +function fish_greeting + #fastfetch + fortune -s | cowsay -f (ls /usr/share/cows/*.cow | shuf -n1) | lolcat -t -F 0.3 +end + +funcsave fish_greeting + diff --git a/.config/fish/fish_plugins b/.config/fish/fish_plugins new file mode 100644 index 0000000..fd0366e --- /dev/null +++ b/.config/fish/fish_plugins @@ -0,0 +1 @@ +dracula/fish diff --git a/.config/fish/fish_variables b/.config/fish/fish_variables new file mode 100644 index 0000000..25cfd4b --- /dev/null +++ b/.config/fish/fish_variables @@ -0,0 +1,34 @@ +# This file contains fish universal variable definitions. +# VERSION: 3.0 +SETUVAR __fish_initialized:3100 +SETUVAR _fish_abbr_cls:clear +SETUVAR _fish_abbr_ls:lsd +SETUVAR _fisher_dracula_2F_fish_files:/home/luca/\x2econfig/fish/conf\x2ed/dracula\x2efish +SETUVAR _fisher_plugins:dracula/fish +SETUVAR fish_color_autosuggestion:555\x1ebrblack +SETUVAR fish_color_cancel:\x2dr +SETUVAR fish_color_command:005fd7 +SETUVAR fish_color_comment:990000 +SETUVAR fish_color_cwd:green +SETUVAR fish_color_cwd_root:red +SETUVAR fish_color_end:009900 +SETUVAR fish_color_error:ff0000 +SETUVAR fish_color_escape:00a6b2 +SETUVAR fish_color_history_current:\x2d\x2dbold +SETUVAR fish_color_host:normal +SETUVAR fish_color_host_remote:yellow +SETUVAR fish_color_normal:normal +SETUVAR fish_color_operator:00a6b2 +SETUVAR fish_color_param:00afff +SETUVAR fish_color_quote:999900 +SETUVAR fish_color_redirection:00afff +SETUVAR fish_color_search_match:bryellow\x1e\x2d\x2dbackground\x3dbrblack +SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack +SETUVAR fish_color_status:red +SETUVAR fish_color_user:brgreen +SETUVAR fish_color_valid_path:\x2d\x2dunderline +SETUVAR fish_key_bindings:fish_default_key_bindings +SETUVAR fish_pager_color_completion:\x1d +SETUVAR fish_pager_color_description:B3A06D\x1eyellow +SETUVAR fish_pager_color_prefix:white\x1e\x2d\x2dbold\x1e\x2d\x2dunderline +SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan diff --git a/.config/fish/functions/br.fish b/.config/fish/functions/br.fish new file mode 120000 index 0000000..f09fb22 --- /dev/null +++ b/.config/fish/functions/br.fish @@ -0,0 +1 @@ +/home/luca/.local/share/broot/launcher/fish/br.fish \ No newline at end of file diff --git a/.config/fish/functions/fish_greeting.fish b/.config/fish/functions/fish_greeting.fish new file mode 100644 index 0000000..671c5a0 --- /dev/null +++ b/.config/fish/functions/fish_greeting.fish @@ -0,0 +1,4 @@ +function fish_greeting + #fastfetch + fortune -s | cowsay -f (ls /usr/share/cows/*.cow | shuf -n1) | lolcat -t -F 0.3 +end diff --git a/.config/glava/bars b/.config/glava/bars new file mode 120000 index 0000000..09377e3 --- /dev/null +++ b/.config/glava/bars @@ -0,0 +1 @@ +/etc/xdg/glava//bars \ No newline at end of file diff --git a/.config/glava/bars.glsl b/.config/glava/bars.glsl new file mode 100755 index 0000000..6e6a7b0 --- /dev/null +++ b/.config/glava/bars.glsl @@ -0,0 +1,33 @@ + +/* Center line thickness (pixels) */ +#define C_LINE 1 +/* Width (in pixels) of each bar */ +#define BAR_WIDTH 4 +/* Width (in pixels) of each bar gap */ +#define BAR_GAP 2 +/* Outline color */ +#define BAR_OUTLINE #262626 +/* Outline width (in pixels, set to 0 to disable outline drawing) */ +#define BAR_OUTLINE_WIDTH 0 +/* Amplify magnitude of the results each bar displays */ +#define AMPLIFY 300 +/* Whether the current settings use the alpha channel; + enabling this is required for alpha to function + correctly on X11 with `"native"` transparency. */ +#define USE_ALPHA 0 +/* How strong the gradient changes */ +#define GRADIENT_POWER 60 +/* Bar color changes with height */ +#define GRADIENT (d / GRADIENT_POWER + 1) +/* Bar color */ +#define COLOR (#3366b2 * GRADIENT) +/* Direction that the bars are facing, 0 for inward, 1 for outward */ +#define DIRECTION 0 +/* Whether to switch left/right audio buffers */ +#define INVERT 0 +/* Whether to flip the output vertically */ +#define FLIP 0 +/* Whether to mirror output along `Y = X`, causing output to render on the left side of the window */ +/* Use with `FLIP 1` to render on the right side */ +#define MIRROR_YX 0 + diff --git a/.config/glava/circle b/.config/glava/circle new file mode 120000 index 0000000..f53c651 --- /dev/null +++ b/.config/glava/circle @@ -0,0 +1 @@ +/etc/xdg/glava//circle \ No newline at end of file diff --git a/.config/glava/circle.glsl b/.config/glava/circle.glsl new file mode 100755 index 0000000..83b8ad3 --- /dev/null +++ b/.config/glava/circle.glsl @@ -0,0 +1,24 @@ +/* center radius (pixels) */ +#define C_RADIUS 128 +/* center line thickness (pixels) */ +#define C_LINE 1.5 +/* outline color */ +#define OUTLINE #333333 +/* Amplify magnitude of the results each bar displays */ +#define AMPLIFY 150 +/* Angle (in radians) for how much to rotate the visualizer */ +#define ROTATE (PI / 2) +/* Whether to switch left/right audio buffers */ +#define INVERT 0 +/* Whether to fill in the space between the line and inner circle */ +#define C_FILL 0 +/* Whether to apply a post-processing image smoothing effect + 1 to enable, 0 to disable. Only works with `xroot` transparency, + and improves performance if disabled. */ +#define C_SMOOTH 1 + +/* Gravity step, overrude frin `smooth_parameters.glsl` */ +#request setgravitystep 6.0 + +/* Smoothing factor, override from `smooth_parameters.glsl` */ +#request setsmoothfactor 0.01 diff --git a/.config/glava/env_KWin.glsl b/.config/glava/env_KWin.glsl new file mode 100755 index 0000000..aa168ba --- /dev/null +++ b/.config/glava/env_KWin.glsl @@ -0,0 +1,8 @@ +#request setdecorated false +#request setxwintype "normal" +#request addxwinstate "below" +#request addxwinstate "skip_taskbar" +#request addxwinstate "skip_pager" +#request addxwinstate "pinned" +#request setclickthrough true + diff --git a/.config/glava/env_Openbox.glsl b/.config/glava/env_Openbox.glsl new file mode 100755 index 0000000..c95c616 --- /dev/null +++ b/.config/glava/env_Openbox.glsl @@ -0,0 +1,2 @@ +#request setxwintype "desktop" +#request addxwinstate "pinned" diff --git a/.config/glava/env_Xfwm4.glsl b/.config/glava/env_Xfwm4.glsl new file mode 100755 index 0000000..1c20359 --- /dev/null +++ b/.config/glava/env_Xfwm4.glsl @@ -0,0 +1,3 @@ +#request setxwintype "desktop" +#request addxwinstate "pinned" +#request addxwinstate "below" diff --git a/.config/glava/env_awesome.glsl b/.config/glava/env_awesome.glsl new file mode 100755 index 0000000..7f2bba3 --- /dev/null +++ b/.config/glava/env_awesome.glsl @@ -0,0 +1 @@ +#request setxwintype "!-" diff --git a/.config/glava/env_default.glsl b/.config/glava/env_default.glsl new file mode 100755 index 0000000..90336cc --- /dev/null +++ b/.config/glava/env_default.glsl @@ -0,0 +1 @@ +#request setxwintype "desktop" diff --git a/.config/glava/env_i3.glsl b/.config/glava/env_i3.glsl new file mode 100755 index 0000000..7f2bba3 --- /dev/null +++ b/.config/glava/env_i3.glsl @@ -0,0 +1 @@ +#request setxwintype "!-" diff --git a/.config/glava/graph b/.config/glava/graph new file mode 120000 index 0000000..2ad2983 --- /dev/null +++ b/.config/glava/graph @@ -0,0 +1 @@ +/etc/xdg/glava//graph \ No newline at end of file diff --git a/.config/glava/graph.glsl b/.config/glava/graph.glsl new file mode 100755 index 0000000..546d8d4 --- /dev/null +++ b/.config/glava/graph.glsl @@ -0,0 +1,31 @@ + +/* Vertical scale, larger values will amplify output */ +#define VSCALE 300 +/* Rendering direction, either -1 (outwards) or 1 (inwards). */ +#define DIRECTION 1 + +/* Color gradient scale, (optionally) used in `COLOR` macro */ +#define GRADIENT_SCALE 75 +/* Color definition. By default this is a gradient formed by mixing two colors. + `pos` represents the pixel position relative to the visualizer baseline. */ +#define COLOR mix(#802A2A, #4F4F92, clamp(pos / GRADIENT_SCALE, 0, 1)) +/* 1 to draw outline, 0 to disable */ +#define DRAW_OUTLINE 0 +/* 1 to draw edge highlight, 0 to disable */ +#define DRAW_HIGHLIGHT 1 +/* Whether to anti-alias the border of the graph, creating a smoother curve. + This may have a small impact on performance. + Note: requires `xroot` or `none` opacity to be set */ +#define ANTI_ALIAS 0 +/* outline color */ +#define OUTLINE #262626 +/* 1 to join the two channels together in the middle, 0 to clamp both down to zero */ +#define JOIN_CHANNELS 0 +/* 1 to invert (vertically), 0 otherwise */ +#define INVERT 0 + +/* Gravity step, overrude from `smooth_parameters.glsl` */ +#request setgravitystep 2.4 + +/* Smoothing factor, override from `smooth_parameters.glsl` */ +#request setsmoothfactor 0.015 diff --git a/.config/glava/radial b/.config/glava/radial new file mode 120000 index 0000000..04fe5e4 --- /dev/null +++ b/.config/glava/radial @@ -0,0 +1 @@ +/etc/xdg/glava//radial \ No newline at end of file diff --git a/.config/glava/radial.glsl b/.config/glava/radial.glsl new file mode 100755 index 0000000..4689be6 --- /dev/null +++ b/.config/glava/radial.glsl @@ -0,0 +1,39 @@ + +/* center radius (pixels) */ +#define C_RADIUS 128 +/* center line thickness (pixels) */ +#define C_LINE 2 +/* outline color */ +#define OUTLINE #333333 +/* number of bars (use even values for best results) */ +#define NBARS 180 +/* width (in pixels) of each bar*/ +#define BAR_WIDTH 3.5 +/* outline color */ +#define BAR_OUTLINE OUTLINE +/* outline width (in pixels, set to 0 to disable outline drawing) */ +#define BAR_OUTLINE_WIDTH 0 +/* Amplify magnitude of the results each bar displays */ +#define AMPLIFY 300 +/* Bar color */ +#define COLOR (#cc3333 * ((d / 40) + 1)) +/* Angle (in radians) for how much to rotate the visualizer */ +#define ROTATE (PI / 2) +/* Whether to switch left/right audio buffers */ +#define INVERT 0 +/* Aliasing factors. Higher values mean more defined and jagged lines. + Note: aliasing does not have a notable impact on performance, but requires + `xroot` transparency to be enabled since it relies on alpha blending with + the background. */ +#define BAR_ALIAS_FACTOR 1.2 +#define C_ALIAS_FACTOR 1.8 +/* Offset (Y) of the visualization */ +#define CENTER_OFFSET_Y 0 +/* Offset (X) of the visualization */ +#define CENTER_OFFSET_X 0 + +/* Gravity step, override from `smooth_parameters.glsl` */ +#request setgravitystep 5.0 + +/* Smoothing factor, override from `smooth_parameters.glsl` */ +#request setsmoothfactor 0.02 diff --git a/.config/glava/rc.glsl b/.config/glava/rc.glsl new file mode 100755 index 0000000..694e870 --- /dev/null +++ b/.config/glava/rc.glsl @@ -0,0 +1,227 @@ + +/* The module to use. A module is a set of shaders used to produce + the visualizer. The structure for a module is the following: + + module_name [directory] + 1.frag [file: fragment shader], + 2.frag [file: fragment shader], + ... + + Shaders are loaded in numerical order, starting at '1.frag', + continuing indefinitely. The results of each shader (except + for the final pass) is given to the next shader in the list + as a 2D sampler. + + See documentation for more details. */ +#request mod bars + +/* Window hints */ +#request setfloating false +#request setdecorated true +#request setfocused false +#request setmaximized false + +/* Set window background opacity mode. Possible values are: + + "native" - True transparency provided by the compositor. Can + reduce performance on some systems, depending on + the compositor used. + + "xroot" - Maintain a copy of the root window's pixmap + (usually the desktop background) to provide a + pseudo-transparent effect. Useful when no compositor + is available or native transparency isn't nessecary. + Has very little performance impact. + + "none" - Disable window opacity completely. */ +#request setopacity "native" + +/* Whether to mirror left and right audio input channels from PulseAudio.*/ +#request setmirror false + +/* OpenGL context and GLSL shader versions, do not change unless + you *absolutely* know what you are doing. */ +#request setversion 3 3 +#request setshaderversion 330 + +/* Window title */ +#request settitle "GLava" + +/* Window geometry (x, y, width, height) */ +#request setgeometry 0 0 1920 1080 + +/* Window background color (RGB format). + Does not work with `setopacity "xroot"` */ +#request setbg 00000000 + +/* (X11 only) EWMH Window type. Possible values are: + + "desktop", "dock", "toolbar", "menu", + "utility", "splash", "dialog", "normal" + + This will set _NET_WM_WINDOW_TYPE to _NET_WM_WINDOW_TYPE_(TYPE), + where (TYPE) is the one of the window types listed (after being + converted to uppercase). + + Alternatively, you can set this value to "!", which will cause + the window to be unmanaged. If this is set, then `addxwinstate` + will do nothing, but you can use "!+" and "!-" to stack on top + or below other windows. +*/ +#request setxwintype "normal" + +/* (X11 only) EWMH Window state atoms (multiple can be specified). + Possible values are: + + "modal", "sticky", "maximized_vert", "maximized_horz", + "shaded", "skip_taskbar", "skip_pager", "hidden", "fullscreen", + "above", "below", "demands_attention", "focused", "pinned" + + This will add _NET_WM_STATE_(TYPE) atoms to _NET_WM_STATE, + where (TYPE) is one of the window states listed (after being + converted to uppercase). + + The lines below (commented out by default) are of relevance + if you are trying to get GLava to behave as a desktop widget + and your WM is not correctly responding to the "desktop" value + for `setxwintype`. +*/ +// #request addxwinstate "sticky" +// #request addxwinstate "skip_taskbar" +// #request addxwinstate "skip_pager" +// #request addxwinstate "above" +// #request addxwinstate "pinned" + +/* (X11 only) Use the XShape extension to support clicking through + the GLava window. Useful when you want to interact with other + desktop windows (icons, menus, desktop shells). Enabled by + default when GLava itself is a desktop window. */ +#request setclickthrough false + +/* Audio source + + When the "pulseaudio" backend is set, this can be a number or + a name of an audio sink or device to record from. Set to "auto" + to use the default output device. + + When the "fifo" backend is set, "auto" is interpreted as + "/tmp/mpd.fifo". Otherwise, a valid path should be provided. */ +#request setsource "auto" + +/* Buffer swap interval (vsync), set to '0' to prevent + waiting for refresh, '1' (or more) to wait for the specified + amount of frames. */ +#request setswap 1 + +/* Linear interpolation for audio data frames. Drastically + improves smoothness with configurations that yield low UPS + (`setsamplerate` and `setsamplesize`), or monitors that have + high refresh rates. + + This feature itself, however, will effect performance as it + will have to interpolate data every frame on the CPU. It will + automatically (and temporarily) disable itself if the update + rate is close to, or higher than the framerate: + + if (update_rate / frame_rate > 0.9) disable_interpolation; + + This will delay data output by one update frame, so it can + desync audio with visual effects on low UPS configs. */ +#request setinterpolate true + +/* Frame limiter, set to the frames per second (FPS) desired or + simply set to zero (or lower) to disable the frame limiter. */ +#request setframerate 0 + +/* Suspends rendering if a fullscreen window is focused while + GLava is still visible (ie. on another monitor). This prevents + rendering from interfering with other graphically intensive + tasks. + + If GLava is minimized or completely obscured, it will not + render regardless of this option. */ +#request setfullscreencheck false + +/* Enable/disable printing framerate every second. 'FPS' stands + for 'Frames Per Second', and 'UPS' stands for 'Updates Per + Second'. Updates are performed when new data is submitted + by pulseaudio, and require transformations to be re-applied + (thus being a good measure of how much work your CPU has to + perform over time) */ +#request setprintframes true + +/* PulseAudio sample buffer size. Lower values result in more + frequent audio updates (also depends on sampling rate), but + will also require all transformations to be applied much + more frequently (CPU intensive). + + High (>2048, with 22050 Hz) values will decrease accuracy + (as some signals can be missed by transformations like FFT) + + The following settings (@22050 Hz) produce the listed rates: + + Sample UPS Description + - 2048 -> 43.0 (low accuracy, cheap), use with < 60 FPS + - 1024 -> 86.1 (high accuracy, expensive), use with >= 60 FPS + - 512 -> 172.3 (extreme accuracy, very expensive), use only + for graphing accurate spectrum data with + custom modules. + + If the framerate drops below the update rate, the update rate + will be locked to the framerate (to prevent wasting CPU time). + This behaviour means you can use a 1024 sample size on a 60Hz + monitor with vsync enabled to get 60FPS and 60UPS. + + For high refresh rate monitors (120+ Hz), it's recommended to + also stick with the 1024 sample size and use interpolation to + smooth the data, as accuracy beyond this setting is mostly + meaningless for visual purposes. +*/ +#request setsamplesize 1024 + +/* Audio buffer size to be used for processing and shaders. + Increasing this value can have the effect of adding 'gravity' + to FFT output, as the audio signal will remain in the buffer + longer. + + This value has a _massive_ effect on FFT performance and + quality for some modules. */ +#request setbufsize 4096 + +/* PulseAudio sample rate. Lower values can add 'gravity' to + FFT output, but can also reduce accuracy. Most hardware + samples at 44100Hz. + + Lower sample rates also can make output more choppy, when + not using interpolation. It's generally OK to leave this + value unless you have a strange PulseAudio configuration. + + This option does nothing when using the "fifo" audio + backend. Instead, an ideal rate should be be configured + in the application generating the output. */ +#request setsamplerate 22050 + +/* ** DEPRECATED ** + Force window geometry (locking the window in place), useful + for some pesky WMs that try to reposition the window when + embedding in the desktop. + + This routinely sends X11 events and should be avoided. */ +#request setforcegeometry false + +/* ** DEPRECATED ** + Force window to be raised (focused in some WMs), useful for + WMs that have their own stacking order for desktop windows. + + This routinely sends X11 events and should be avoided. */ +#request setforceraised false + +/* ** DEPRECATED ** + Scale down the audio buffer before any operations are + performed on the data. Higher values are faster. + + This value can affect the output of various transformations, + since it applies (crude) averaging to the data when shrinking + the buffer. It is reccommended to use `setsamplerate` and + `setsamplesize` to improve performance or accuracy instead. */ +#request setbufscale 1 diff --git a/.config/glava/smooth_parameters.glsl b/.config/glava/smooth_parameters.glsl new file mode 100755 index 0000000..bfea307 --- /dev/null +++ b/.config/glava/smooth_parameters.glsl @@ -0,0 +1,78 @@ + +/* Settings for smoothing functions and transformations commonly + used to display FFT output. + + IMPORTANT: THESE VALUES CAN BE OVERRIDDEN IN MODULE CONFIG + FILES, IF CHANGING VALUES HERE DOES NOT WORK, CHECK + TO MAKE SURE THEY ARE NOT BEING SET ELSEWHERE. +*/ + +/* The type of formula to use for weighting values when smoothing. + Possible values: + + - circular heavily rounded points + - sinusoidal rounded at both low and high weighted values + like a sine wave + - linear not rounded at all; linear distance + */ +#define ROUND_FORMULA sinusoidal + +/* The sampling mode for processing raw FFT input: + + - average averages all the inputs in the sample range for + a given point. Produces smooth output, but peaks + are not well represented + - maximum obtains the best value from the closest peak in + the sample range. Very accurate peaks, but + output is jagged and sporadic. + - hybrid uses the results from both `average` and `maximum` + with the weight provided in `SAMPLE_HYBRID_WEIGHT` */ +#define SAMPLE_MODE average +/* Weight should be provided in the range (0, 1). Higher values favour + averaged results. `hybrid` mode only. */ +#define SAMPLE_HYBRID_WEIGHT 0.65 + +/* Factor used to scale frequencies. Lower values allows lower + frequencies to occupy more space. */ +#define SAMPLE_SCALE 8 + +/* The frequency range to sample. 1.0 would be the entire FFT output, + and lower values reduce the displayed frequencies in a log-like + scale. */ +#define SAMPLE_RANGE 0.9 + +/* Factor for how to scale higher frequencies. Used in a linear equation + which is multiplied by the result of the fft transformation. */ +#request setfftscale 10.2 + +/* Cutoff for the bass end of the audio data when scaling frequencies. + Higher values cause more of the bass frequencies to be skipped when + scaling. */ +#request setfftcutoff 0.3 + +/* How many frames to queue and run through the average function. + Increasing this value will create latency between the audio and the + animation, but will make for much smoother results. */ +#request setavgframes 6 + +/* Whether to window frames ran through the average function (new & old + frames are weighted less). This massively helps smoothing out + spontaneous values in the animation. */ +#request setavgwindow true + +/* Gravity step, higher values means faster drops. The step is applied + in a rate independant method like so: + + val -= (gravitystep) * (seconds per update) */ +#request setgravitystep 4.2 + +/* Smoothing factor. Larger values mean more smoothing in the output, + however high values can be expensive to compute. Values are in + normalized width: [0.0, 1.0) */ +#request setsmoothfactor 0.025 + +/* Whether to use a separate pass for audio data while smoothing. On + most hardware, this will improve performance, but involves doing a + separate render step for each audio texture and will add some driver + (CPU) overhead. */ +#request setsmoothpass true diff --git a/.config/glava/util b/.config/glava/util new file mode 120000 index 0000000..3cbab73 --- /dev/null +++ b/.config/glava/util @@ -0,0 +1 @@ +/etc/xdg/glava//util \ No newline at end of file diff --git a/.config/glava/wave b/.config/glava/wave new file mode 120000 index 0000000..3cba0de --- /dev/null +++ b/.config/glava/wave @@ -0,0 +1 @@ +/etc/xdg/glava//wave \ No newline at end of file diff --git a/.config/glava/wave.glsl b/.config/glava/wave.glsl new file mode 100755 index 0000000..6a59fbe --- /dev/null +++ b/.config/glava/wave.glsl @@ -0,0 +1,14 @@ +/* min (vertical) line thickness */ +#define MIN_THICKNESS 1 + +/* max (vertical) line thickness */ +#define MAX_THICKNESS 6 + +/* base color to use, distance from center will multiply the RGB components */ +#define BASE_COLOR vec4(0.7, 0.2, 0.45, 1) + +/* amplitude */ +#define AMPLIFY 500 + +/* outline color */ +#define OUTLINE vec4(0.15, 0.15, 0.15, 1) diff --git a/.config/nvim/LICENSE b/.config/nvim/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/.config/nvim/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/.config/nvim/lua/custom/chadrc.lua b/.config/nvim/lua/custom/chadrc.lua new file mode 100644 index 0000000..bc4b88e --- /dev/null +++ b/.config/nvim/lua/custom/chadrc.lua @@ -0,0 +1,39 @@ +-- IMPORTANT NOTE : This is the user config, can be edited. Will be preserved if updated with internal updater +-- This file is for NvChad options & tools, custom settings are split between here and 'lua/custom/init.lua' + +local M = {} +M.options, M.ui, M.mappings, M.plugins = {}, {}, {}, {} + +-- NOTE: To use this, make a copy with `cp example_chadrc.lua chadrc.lua` + +-------------------------------------------------------------------- + +-- To use this file, copy the structure of `core/default_config.lua`, +-- examples of setting relative number & changing theme: + +-- M.options = { +-- relativenumber = true, +-- } + +M.ui = { + theme = "chadracula" +} + +-- NvChad included plugin options & overrides +M.plugins = { + options = { + -- lspconfig = { + -- path of file containing setups of different lsps (ex : "custom.plugins.lspconfig"), read the docs for more info + -- setup_lspconf = "", + -- }, + }, + -- To change the Packer `config` of a plugin that comes with NvChad, + -- add a table entry below matching the plugin github name + -- '-' -> '_', remove any '.lua', '.nvim' extensions + -- this string will be called in a `require` + -- use "(custom.configs).my_func()" to call a function + -- use "custom.blankline" to call a file + default_plugin_config_replace = {}, +} + +return M diff --git a/.config/nvim/lua/custom/init.lua b/.config/nvim/lua/custom/init.lua new file mode 100644 index 0000000..473ff84 --- /dev/null +++ b/.config/nvim/lua/custom/init.lua @@ -0,0 +1,84 @@ +-- This is where your custom modules and plugins go. +-- See the wiki for a guide on how to extend NvChad +local hooks = require "core.hooks" +vim.api.nvim_command("nnoremap :m .+1==") +vim.api.nvim_command("nnoremap :m .-2==") +vim.api.nvim_command("inoremap :m .+1==gi") +vim.api.nvim_command("inoremap :m .-2==gi") +vim.api.nvim_command("vnoremap :m '>+1gv=gv") +vim.api.nvim_command("vnoremap :m '<-2gv=gv") + +-- NOTE: To use this, make a copy with `cp example_init.lua init.lua` + +-------------------------------------------------------------------- + +-- To modify packaged plugin configs, use the overrides functionality +-- if the override does not exist in the plugin config, make or request a PR, +-- or you can override the whole plugin config with 'chadrc' -> M.plugins.default_plugin_config_replace{} +-- this will run your config instead of the NvChad config for the given plugin + +-- hooks.override("lsp", "publish_diagnostics", function(current) +-- current.virtual_text = false; +-- return current; +-- end) + +-- To add new mappings, use the "setup_mappings" hook, +-- you can set one or many mappings +-- example below: + +-- hooks.add("setup_mappings", function(map) +-- map("n", "cc", "gg0vG$d", opt) -- example to delete the buffer +-- .... many more mappings .... +-- end) + +-- To add new plugins, use the "install_plugin" hook, +-- NOTE: we heavily suggest using Packer's lazy loading (with the 'event' field) +-- see: https://github.com/wbthomason/packer.nvim +-- examples below: + +hooks.add("install_plugins", function(use) + use { + "williamboman/nvim-lsp-installer", + config = function() + local lsp_installer = require "nvim-lsp-installer" + + lsp_installer.on_server_ready(function(server) + local opts = {} + + if server.name == "denols" then + opts.root_dir = vim.loop.cwd + end + + server:setup(opts) + vim.cmd [[ do User LspAttachBuffers ]] + end) + end, + } + -- Custom stuff + use { "nathom/filetype.nvim" } + + use { + "karb94/neoscroll.nvim", + opt = true, + config = function() + require("neoscroll").setup() + end, + + -- lazy loading + setup = function() + require("core.utils").packer_lazy_load "neoscroll.nvim" + end, + } + + use { + "prettier/vim-prettier", + } + use { + "editorconfig/editorconfig-vim", + } +end) + +-- alternatively, put this in a sub-folder like "lua/custom/plugins/mkdir" +-- then source it with + +-- require "custom.plugins.mkdir" diff --git a/.config/rofi/config.rasi b/.config/rofi/config.rasi new file mode 100644 index 0000000..7f633a0 --- /dev/null +++ b/.config/rofi/config.rasi @@ -0,0 +1,93 @@ +configuration{ + modi: "drun"; + lines: 5; + font: "Iosevka 12"; + show-icons: true; + icon-theme: "Oranchelo"; + terminal: "alacritty"; + drun-display-format: "{icon} {name}"; + display-drun: "  "; + location: 0; + separator-style: "solid"; + disable-history: false; + hide-scrollbar: true; +} + +@theme "/dev/null" + +element-text, element-icon { + background-color: inherit; + text-color: inherit; +} + +* { + dark-black: #1e2122; + bg-col: #222526; + border-col: #282b2c; + selected-col: #282b2c; + blue: #8dae88; + fg-col: #d4be98; + fg-col2: #df736d; + width: 600; +} + +window { + padding: 20px; + height: 360px; + border: 3px; + border-color: @border-col; + background-color: @bg-col; +} + +mainbox { + padding: 5px; + border-radius: 13px; + background-color: @bg-col; +} + +inputbar { + children: [prompt,entry]; + background-color: @bg-col; + border-radius: 5px; + padding: 2px; +} + +prompt { + background-color: @blue; + padding: 5px 5px 0px; + text-color: @bg-col; + border-radius: 3px; +} + +textbox-prompt-colon { + expand: false; + str: ":"; +} + +entry { + padding: 6px; + text-color: @fg-col; + background-color: @bg-col; +} + +listview { + border: 0px 0px 0px; + padding: 6px 0px 0px; + columns: 2; + background-color: @bg-col; +} + +element { + padding: 5px; + background-color: @bg-col; + text-color: @fg-col ; +} + +element-icon { + size: 25px; +} + +element selected { + background-color: @selected-col ; + text-color: @fg-col2 ; +} diff --git a/.config/starship.toml b/.config/starship.toml new file mode 100644 index 0000000..1e2cb06 --- /dev/null +++ b/.config/starship.toml @@ -0,0 +1,708 @@ +# Warning: This config does not include keys that have an unset value +format = '$all' +scan_timeout = 30 +command_timeout = 500 +add_newline = false + +[aws] +format = 'on [$symbol($profile )(\($region\) )(\[$duration\])]($style)' +symbol = '☁️ ' +style = 'bold yellow' +disabled = false +expiration_symbol = 'X' + +[aws.region_aliases] + +[[battery.display]] +threshold = 10 +style = 'red bold' + +[character] +format = '$symbol ' +success_symbol = '[❯](bold green)' +error_symbol = '[❯](bold red)' +vicmd_symbol = '[❮](bold green)' +disabled = false + +[cmake] +format = 'via [$symbol($version )]($style)' +version_format = 'v${raw}' +symbol = '△ ' +style = 'bold blue' +disabled = false +detect_extensions = [] +detect_files = [ + 'CMakeLists.txt', + 'CMakeCache.txt', +] +detect_folders = [] + +[cmd_duration] +min_time = 2000 +format = 'took [$duration]($style) ' +style = 'yellow bold' +show_milliseconds = false +disabled = false +show_notifications = false +min_time_to_notify = 45000 + +[conda] +truncation_length = 1 +format = 'via [$symbol$environment]($style) ' +symbol = '🅒 ' +style = 'green bold' +ignore_base = true +disabled = true + +[crystal] +format = 'via [$symbol($version )]($style)' +version_format = 'v${raw}' +symbol = '🔮 ' +style = 'bold red' +disabled = false +detect_extensions = ['cr'] +detect_files = ['shard.yml'] +detect_folders = [] + +[dart] +format = 'via [$symbol($version )]($style)' +version_format = 'v${raw}' +symbol = '🎯 ' +style = 'bold blue' +disabled = false +detect_extensions = ['dart'] +detect_files = [ + 'pubspec.yaml', + 'pubspec.yml', + 'pubspec.lock', +] +detect_folders = ['.dart_tool'] + +[deno] +format = 'via [$symbol($version )]($style)' +version_format = 'v${raw}' +symbol = '🦕 ' +style = 'green bold' +disabled = false +detect_extensions = [ + "js", + "ts", +] +detect_files = [ + 'mod.ts', + 'deps.ts', + 'mod.js', + 'deps.js', +] +detect_folders = [] + +[directory] +truncation_length = 3 +truncate_to_repo = true +fish_style_pwd_dir_length = 0 +use_logical_path = true +format = '[$path]($style)[$read_only]($read_only_style) ' +style = 'cyan bold' +disabled = false +read_only = '🔒' +read_only_style = 'red' +truncation_symbol = '' +home_symbol = '~' + +[directory.substitutions] + +[docker_context] +symbol = '🐳 ' +style = 'blue bold' +format = 'via [$symbol$context]($style) ' +only_with_files = true +disabled = false +detect_extensions = [] +detect_files = [ + 'docker-compose.yml', + 'docker-compose.yaml', + 'Dockerfile', +] +detect_folders = [] + +[dotnet] +format = '[$symbol($version )(🎯 $tfm )]($style)' +version_format = 'v${raw}' +symbol = '.NET ' +style = 'blue bold' +heuristic = true +disabled = false +detect_extensions = [ + 'csproj', + 'fsproj', + 'xproj', + 'cs', +] +detect_files = [ + 'global.json', + 'project.json', + 'Directory.Build.props', + 'Directory.Build.targets', + 'Packages.props', +] +detect_folders = [] + +[elixir] +format = 'via [$symbol($version \(OTP $otp_version\) )]($style)' +version_format = 'v${raw}' +symbol = '💧 ' +style = 'bold purple' +disabled = false +detect_extensions = [] +detect_files = ['mix.exs'] +detect_folders = [] + +[elm] +format = 'via [$symbol($version )]($style)' +version_format = 'v${raw}' +symbol = '🌳 ' +style = 'cyan bold' +disabled = false +detect_extensions = ['elm'] +detect_files = [ + 'elm.json', + 'elm-package.json', + '.elm-version', +] +detect_folders = ['elm-stuff'] + +[env_var] +symbol = '' +style = 'black bold dimmed' +format = 'with [$env_value]($style) ' +disabled = false + +[erlang] +format = 'via [$symbol($version )]($style)' +version_format = 'v${raw}' +symbol = ' ' +style = 'bold red' +disabled = false +detect_extensions = [] +detect_files = [ + 'rebar.config', + 'erlang.mk', +] +detect_folders = [] + +[gcloud] +format = 'on [$symbol$account(@$domain)(\($region\))]($style) ' +symbol = '☁️ ' +style = 'bold blue' +disabled = false + +[gcloud.region_aliases] + +[git_branch] +format = 'on [$symbol$branch]($style)(:[$remote]($style)) ' +symbol = ' ' +style = 'bold purple' +truncation_length = 9223372036854775807 +truncation_symbol = '…' +only_attached = false +always_show_remote = false +disabled = false + +[git_commit] +commit_hash_length = 7 +format = '[\($hash$tag\)]($style) ' +style = 'green bold' +only_detached = true +disabled = false +tag_symbol = ' 🏷 ' +tag_disabled = true + +[git_state] +rebase = 'REBASING' +merge = 'MERGING' +revert = 'REVERTING' +cherry_pick = 'CHERRY-PICKING' +bisect = 'BISECTING' +am = 'AM' +am_or_rebase = 'AM/REBASE' +style = 'bold yellow' +format = '\([$state( $progress_current/$progress_total)]($style)\) ' +disabled = false + +[git_status] +format = '([\[$all_status$ahead_behind\]]($style) )' +style = 'red bold' +stashed = '\$' +ahead = '⇡' +behind = '⇣' +diverged = '⇕' +conflicted = '=' +deleted = '✘' +renamed = '»' +modified = '!' +staged = '+' +untracked = '?' +disabled = false + +[golang] +format = 'via [$symbol($version )]($style)' +version_format = 'v${raw}' +symbol = '🐹 ' +style = 'bold cyan' +disabled = false +detect_extensions = ['go'] +detect_files = [ + 'go.mod', + 'go.sum', + 'glide.yaml', + 'Gopkg.yml', + 'Gopkg.lock', + '.go-version', +] +detect_folders = ['Godeps'] + +[helm] +format = 'via [$symbol($version )]($style)' +version_format = 'v${raw}' +symbol = '⎈ ' +style = 'bold white' +disabled = false +detect_extensions = [] +detect_files = [ + 'helmfile.yaml', + 'Chart.yaml', +] +detect_folders = [] + +[hg_branch] +symbol = ' ' +style = 'bold purple' +format = 'on [$symbol$branch]($style) ' +truncation_length = 9223372036854775807 +truncation_symbol = '…' +disabled = true + +[hostname] +ssh_only = true +trim_at = '.' +format = '[$hostname]($style) in ' +style = 'green dimmed bold' +disabled = false + +[java] +disabled = false +format = 'via [$symbol($version )]($style)' +version_format = 'v${raw}' +style = 'red dimmed' +symbol = '☕ ' +detect_extensions = [ + 'java', + 'class', + 'jar', + 'gradle', + 'clj', + 'cljc', +] +detect_files = [ + 'pom.xml', + 'build.gradle.kts', + 'build.sbt', + '.java-version', + 'deps.edn', + 'project.clj', + 'build.boot', +] +detect_folders = [] + +[jobs] +threshold = 1 +format = '[$symbol$number]($style) ' +symbol = '✦' +style = 'bold blue' +disabled = false + +[julia] +format = 'via [$symbol($version )]($style)' +version_format = 'v${raw}' +symbol = 'ஃ ' +style = 'bold purple' +disabled = false +detect_extensions = ['jl'] +detect_files = [ + 'Project.toml', + 'Manifest.toml', +] +detect_folders = [] + +[kotlin] +format = 'via [$symbol($version )]($style)' +version_format = 'v${raw}' +symbol = '🅺 ' +style = 'bold blue' +kotlin_binary = 'kotlin' +disabled = false +detect_extensions = [ + 'kt', + 'kts', +] +detect_files = [] +detect_folders = [] + +[kubernetes] +symbol = '☸ ' +format = '[$symbol$context( \($namespace\))]($style) in ' +style = 'cyan bold' +disabled = true + +[kubernetes.context_aliases] + +[lua] +format = 'via [$symbol($version )]($style)' +version_format = 'v${raw}' +symbol = '🌙 ' +style = 'bold blue' +lua_binary = 'lua' +disabled = false +detect_extensions = ['lua'] +detect_files = ['.lua-version'] +detect_folders = ['lua'] + +[memory_usage] +threshold = 75 +format = 'via $symbol[$ram( | $swap)]($style) ' +style = 'white bold dimmed' +symbol = '🐏 ' +disabled = false + +[nim] +format = 'via [$symbol($version )]($style)' +version_format = 'v${raw}' +symbol = '👑 ' +style = 'yellow bold' +disabled = false +detect_extensions = [ + 'nim', + 'nims', + 'nimble', +] +detect_files = ['nim.cfg'] +detect_folders = [] + +[nix_shell] +format = 'via [$symbol$state( \($name\))]($style) ' +symbol = '❄️ ' +style = 'bold blue' +impure_msg = 'impure' +pure_msg = 'pure' +disabled = false + +[nodejs] +format = 'via [$symbol($version )]($style)' +version_format = 'v${raw}' +symbol = ' ' +style = 'bold green' +disabled = false +not_capable_style = 'bold red' +detect_extensions = [ +#'js', + 'mjs', + 'cjs', +#'ts', +] +detect_files = [ + 'package.json', + '.node-version', + '.nvmrc', +] +detect_folders = ['node_modules'] + +[ocaml] +format = 'via [$symbol($version )(\($switch_indicator$switch_name\) )]($style)' +version_format = 'v${raw}' +global_switch_indicator = '' +local_switch_indicator = '*' +symbol = '🐫 ' +style = 'bold yellow' +disabled = false +detect_extensions = [ + 'opam', + 'ml', + 'mli', + 're', + 'rei', +] +detect_files = [ + 'dune', + 'dune-project', + 'jbuild', + 'jbuild-ignore', + '.merlin', +] +detect_folders = [ + '_opam', + 'esy.lock', +] + +[openstack] +format = 'on [$symbol$cloud(\($project\))]($style) ' +symbol = '☁️ ' +style = 'bold yellow' +disabled = false + +[package] +format = 'is [$symbol$version]($style) ' +symbol = '📦 ' +style = '208 bold' +display_private = false +disabled = false + +[perl] +format = 'via [$symbol($version )]($style)' +version_format = 'v${raw}' +symbol = '🐪 ' +style = '149 bold' +disabled = false +detect_extensions = [ + 'pl', + 'pm', + 'pod', +] +detect_files = [ + 'Makefile.PL', + 'Build.PL', + 'cpanfile', + 'cpanfile.snapshot', + 'META.json', + 'META.yml', + '.perl-version', +] +detect_folders = [] + +[php] +format = 'via [$symbol($version )]($style)' +version_format = 'v${raw}' +symbol = '🐘 ' +style = '147 bold' +disabled = false +detect_extensions = ['php'] +detect_files = [ + 'composer.json', + '.php-version', +] +detect_folders = [] + +[purescript] +format = 'via [$symbol($version )]($style)' +version_format = 'v${raw}' +symbol = '<=> ' +style = 'bold white' +disabled = false +detect_extensions = ['purs'] +detect_files = ['spago.dhall'] +detect_folders = [] + +[python] +pyenv_version_name = false +pyenv_prefix = 'pyenv ' +python_binary = [ + 'python', + 'python3', + 'python2', +] +format = 'via [${symbol}${pyenv_prefix}(${version} )(\($virtualenv\) )]($style)' +version_format = 'v${raw}' +style = 'yellow bold' +symbol = '🐍 ' +disabled = false +detect_extensions = ['py'] +detect_files = [ + 'requirements.txt', + '.python-version', + 'pyproject.toml', + 'Pipfile', + 'tox.ini', + 'setup.py', + '__init__.py', +] +detect_folders = [] + +[rlang] +format = 'via [$symbol($version )]($style)' +version_format = 'v${raw}' +style = 'blue bold' +symbol = '📐 ' +disabled = false +detect_extensions = [ + 'R', + 'Rd', + 'Rmd', + 'Rproj', + 'Rsx', +] +detect_files = ['.Rprofile'] +detect_folders = ['.Rproj.user'] + +[red] +format = 'via [$symbol($version )]($style)' +symbol = '🔺 ' +style = 'red bold' +disabled = false +detect_extensions = [ + 'red', + 'reds', +] +detect_files = [] +detect_folders = [] + +[ruby] +format = 'via [$symbol($version )]($style)' +version_format = 'v${raw}' +symbol = '💎 ' +style = 'bold red' +disabled = false +detect_extensions = ['rb'] +detect_files = [ + 'Gemfile', + '.ruby-version', +] +detect_folders = [] + +[rust] +format = 'via [$symbol($version )]($style)' +version_format = 'v${raw}' +symbol = '🦀 ' +style = 'bold red' +disabled = false +detect_extensions = ['rs'] +detect_files = ['Cargo.toml'] +detect_folders = [] + +[scala] +format = 'via [$symbol($version )]($style)' +version_format = 'v${raw}' +disabled = false +style = 'red bold' +symbol = '🆂 ' +detect_extensions = [ + 'sbt', + 'scala', +] +detect_files = [ + '.scalaenv', + '.sbtenv', + 'build.sbt', +] +detect_folders = ['.metals'] + +[shell] +format = '$indicator ' +bash_indicator = 'bsh' +fish_indicator = 'fsh' +zsh_indicator = 'zsh' +powershell_indicator = 'psh' +ion_indicator = 'ion' +elvish_indicator = 'esh' +tcsh_indicator = 'tsh' +unknown_indicator = '' +disabled = true + +[shlvl] +threshold = 2 +format = '[$symbol$shlvl]($style) ' +symbol = '↕️ ' +repeat = false +style = 'bold yellow' +disabled = true + +[singularity] +symbol = '' +format = '[$symbol\[$env\]]($style) ' +style = 'blue bold dimmed' +disabled = false + +[status] +format = '[$symbol$status]($style) ' +symbol = '✖' +not_executable_symbol = '🚫' +not_found_symbol = '🔍' +sigint_symbol = '🧱' +signal_symbol = '⚡' +style = 'bold red' +map_symbol = false +recognize_signal_code = true +disabled = false + +[swift] +format = 'via [$symbol($version )]($style)' +version_format = 'v${raw}' +symbol = '🐦 ' +style = 'bold 202' +disabled = false +detect_extensions = ['swift'] +detect_files = ['Package.swift'] +detect_folders = [] + +[terraform] +format = 'via [$symbol$workspace]($style) ' +version_format = 'v${raw}' +symbol = '💠 ' +style = 'bold 105' +disabled = false +detect_extensions = [ + 'tf', + 'hcl', +] +detect_files = [] +detect_folders = ['.terraform'] + +[time] +format = 'at [$time]($style) ' +style = 'bold yellow' +use_12hr = false +disabled = true +utc_time_offset = 'local' +time_range = '-' + +[username] +format = '[$user]($style) in ' +style_root = 'red bold' +style_user = 'yellow bold' +show_always = false +disabled = false + +[vlang] +format = 'via [$symbol($version )]($style)' +symbol = 'V ' +style = 'blue bold' +disabled = false +detect_extensions = ['v'] +detect_files = [ + 'v.mod', + 'vpkg.json', + '.vpkg-lock.json', +] +detect_folders = [] + +[vagrant] +format = 'via [$symbol($version )]($style)' +version_format = 'v${raw}' +symbol = '⍱ ' +style = 'cyan bold' +disabled = false +detect_extensions = [] +detect_files = ['Vagrantfile'] +detect_folders = [] + +[zig] +format = 'via [$symbol($version )]($style)' +version_format = 'v${raw}' +symbol = '↯ ' +style = 'bold yellow' +disabled = false +detect_extensions = ['zig'] +detect_files = [] +detect_folders = [] + +[custom] + + diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..fd5bdf9 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule ".config/alacritty/themes/dracula"] + path = .config/alacritty/themes/dracula + url = git@github.com:dracula/alacritty.git diff --git a/bootstrap.sh b/bootstrap.sh new file mode 100755 index 0000000..671b2a2 --- /dev/null +++ b/bootstrap.sh @@ -0,0 +1,49 @@ +#!/usr/bin/env sh + +SYMLINKDIR=(readlink -f "$0") +BASEDIR=$(dirname "$SYMLINKDIR") +cd $BASEDIR + +source /etc/os-release + +read -p "Install dependencies? (y/n) " -n 1; +echo ""; +if [[ $REPLY =~ ^[Yy]$ ]]; then + + case $ID in + arch) + sudo pacman -S picom xorg-setxkbmap feh xorg-xinput dash imlib2 xorg-xsetroot alacritty flameshot rofi xorg-xbacklight pamixer playerctl xsecurelock git base rsync + ;; + void) + sudo xbps-install -S picom xorg-setxkbmap feh xorg-xinput dash imlib2 xorg-xsetroot alacritty flameshot rofi xorg-xbacklight pamixer playerctl xsecurelock git rsync + ;; + *) + echo "You'll have to install the dependencies yourself" + ;; + esac + +fi; + +git pull origin main; + +function doIt() { + git clone https://github.com/NvChad/NvChad.git ~/.config/nvim + rsync --exclude ".git/" \ + --exclude ".DS_Store" \ + --exclude ".osx" \ + --exclude "bootstrap.sh" \ + --exclude "README.md" \ + --exclude "LICENSE.md" \ + -avh --no-perms ./.config/ ~/.config +} + +if [ "$1" == "--force" -o "$1" == "-f" ]; then + doIt; +else + read -p "This may overwrite existing files in your home directory. Are you sure? (y/n) " -n 1; + echo ""; + if [[ $REPLY =~ ^[Yy]$ ]]; then + doIt; + fi; +fi; +unset doIt; -- cgit v1.2.3