From e318c61f922ec93afd728189c423f278d6e8b3fe Mon Sep 17 00:00:00 2001 From: pgfm Date: Fri, 6 May 2022 22:23:52 -0500 Subject: [PATCH] Complete rework of this repository to mirror my home directory. Now with a drastically better installation script. Took ownership over startup options sourced in bashrc. --- xresources/Xresources => .Xresources | 0 shell/bashrc => .bashrc | 0 .config/alacritty/alacritty.yml | 838 ++++++++++++++++++ .config/fontconfig/fonts.conf | 41 + {i3 => .config/i3}/config | 0 .config/i3status/config | 36 + {neovim => .config/nvim}/init.vim | 0 git/gitconfig => .gitconfig | 0 .gitignore | 6 + .../share/nvim/site/ftplugin}/json.vim | 0 .../share/nvim/site/ftplugin}/tex.vim | 0 .../share/nvim/site}/plugin/nvim-lint.vim | 3 +- .../nvim/site}/plugin/nvim-web-devicons.vim | 0 .../nvim/site}/plugin/telescope.nvim.vim | 0 .../share/nvim/site}/plugin/trouble.nvim.vim | 0 .../share/nvim/site}/plugin/vim-gitgutter.vim | 0 .local/share/nvim/site/plugin/vimtex.vim | 34 + .profile | 1 + .startup/ps1 | 28 + .startup/start-ssh-agent | 22 + .xinitrc | 2 + README.md | 1 + install.sh | 348 +++++--- neovim/after/plugin/vimtex.vim | 3 - setup-directories.sh | 19 +- 25 files changed, 1231 insertions(+), 151 deletions(-) rename xresources/Xresources => .Xresources (100%) rename shell/bashrc => .bashrc (100%) create mode 100644 .config/alacritty/alacritty.yml create mode 100644 .config/fontconfig/fonts.conf rename {i3 => .config/i3}/config (100%) create mode 100644 .config/i3status/config rename {neovim => .config/nvim}/init.vim (100%) rename git/gitconfig => .gitconfig (100%) create mode 100644 .gitignore rename {neovim => .local/share/nvim/site/ftplugin}/json.vim (100%) rename {neovim => .local/share/nvim/site/ftplugin}/tex.vim (100%) rename {neovim/after => .local/share/nvim/site}/plugin/nvim-lint.vim (90%) rename {neovim/after => .local/share/nvim/site}/plugin/nvim-web-devicons.vim (100%) rename {neovim/after => .local/share/nvim/site}/plugin/telescope.nvim.vim (100%) rename {neovim/after => .local/share/nvim/site}/plugin/trouble.nvim.vim (100%) rename {neovim/after => .local/share/nvim/site}/plugin/vim-gitgutter.vim (100%) create mode 100644 .local/share/nvim/site/plugin/vimtex.vim create mode 100644 .profile create mode 100644 .startup/ps1 create mode 100644 .startup/start-ssh-agent create mode 100644 .xinitrc delete mode 100644 neovim/after/plugin/vimtex.vim diff --git a/xresources/Xresources b/.Xresources similarity index 100% rename from xresources/Xresources rename to .Xresources diff --git a/shell/bashrc b/.bashrc similarity index 100% rename from shell/bashrc rename to .bashrc diff --git a/.config/alacritty/alacritty.yml b/.config/alacritty/alacritty.yml new file mode 100644 index 0000000..1a600ed --- /dev/null +++ b/.config/alacritty/alacritty.yml @@ -0,0 +1,838 @@ +# Configuration for Alacritty, the GPU enhanced terminal emulator. + +# Import additional configuration files +# +# Imports are loaded in order, skipping all missing files, with the importing +# file being loaded last. If a field is already present in a previous import, it +# will be replaced. +# +# All imports must either be absolute paths starting with `/`, or paths relative +# to the user's home directory starting with `~/`. +#import: +# - /path/to/alacritty.yml + +# Any items in the `env` entry below will be added as +# environment variables. Some entries may override variables +# set by alacritty itself. +env: + # TERM variable + # + # This value is used to set the `$TERM` environment variable for + # each instance of Alacritty. If it is not present, alacritty will + # check the local terminfo database and use `alacritty` if it is + # available, otherwise `xterm-256color` is used. + TERM: xterm-256color + +window: + # Window dimensions (changes require restart) + # + # Number of lines/columns (not pixels) in the terminal. The number of columns + # must be at least `2`, while using a value of `0` for columns and lines will + # fall back to the window manager's recommended size. + #dimensions: + # columns: 0 + # lines: 0 + + # Window position (changes require restart) + # + # Specified in number of pixels. + # If the position is not set, the window manager will handle the placement. + #position: + # x: 0 + # y: 0 + + # Window padding (changes require restart) + # + # Blank space added around the window in pixels. This padding is scaled + # by DPI and the specified value is always added at both opposing sides. + #padding: + # x: 0 + # y: 0 + + # Spread additional padding evenly around the terminal content. + #dynamic_padding: false + + # Window decorations + # + # Values for `decorations`: + # - full: Borders and title bar + # - none: Neither borders nor title bar + # + # Values for `decorations` (macOS only): + # - transparent: Title bar, transparent background and title bar buttons + # - buttonless: Title bar, transparent background and no title bar buttons + decorations: full + + # Background opacity + # + # Window opacity as a floating point number from `0.0` to `1.0`. + # The value `0.0` is completely transparent and `1.0` is opaque. + opacity: 1.0 + + # 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: false + + # 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: 13.0 + + # Offset is the extra space around each character. `offset.y` can be thought + # of as modifying the line spacing, and `offset.x` as modifying the letter + # spacing. + #offset: + # x: 0 + # y: 0 + + # Glyph offset determines the locations of the glyphs within their cells with + # the default being at the bottom. Increasing `x` moves the glyph to the + # right, increasing `y` moves the glyph upward. + #glyph_offset: + # x: 0 + # y: 0 + + # Thin stroke font rendering (macOS only) + # + # Thin strokes are suitable for retina displays, but for non-retina screens + # it is recommended to set `use_thin_strokes` to `false`. + #use_thin_strokes: true + + # Use built-in font for box drawing characters. + # + # If `true`, Alacritty will use a custom built-in font for box drawing + # characters (Unicode points 2500 - 259f). + # + #builtin_box_drawing: true + +# If `true`, bold text is drawn using the bright color variants. +#draw_bold_text_with_bright_colors: false + +colors: + # Gruvbox Material Hard Dark + primary: + background: '0x1d2021' + foreground: '0xd4be98' + + normal: + black: '0x32302f' + red: '0xea6962' + green: '0xa9b665' + yellow: '0xd8a657' + blue: '0x7daea3' + magenta: '0xd3869b' + cyan: '0x89b482' + white: '0xd4be98' + + bright: + black: '0x32302f' + red: '0xea6962' + green: '0xa9b665' + yellow: '0xd8a657' + blue: '0x7daea3' + magenta: '0xd3869b' + cyan: '0x89b482' + white: '0xd4be98' + + # 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 + +# Bell +# +# The bell is rung every time the BEL control character is received. +#bell: + # Visual Bell Animation + # + # Animation effect for flashing the screen when the visual bell is rung. + # + # Values for `animation`: + # - Ease + # - EaseOut + # - EaseOutSine + # - EaseOutQuad + # - EaseOutCubic + # - EaseOutQuart + # - EaseOutQuint + # - EaseOutExpo + # - EaseOutCirc + # - Linear + #animation: EaseOutExpo + + # Duration of the visual bell flash in milliseconds. A `duration` of `0` will + # disable the visual bell animation. + #duration: 0 + + # Visual bell animation color. + #color: '#ffffff' + + # Bell Command + # + # This program is executed whenever the bell is rung. + # + # When set to `command: None`, no command will be executed. + # + # Example: + # command: + # program: notify-send + # args: ["Hello, World!"] + # + #command: None + +selection: + # This string contains all characters that are used as separators for + # "semantic words" in Alacritty. + semantic_escape_chars: ",│`|:\"' ()[]{}<>\t" + + # When set to `true`, selected text will be copied to the primary clipboard. + #save_to_clipboard: false + +cursor: + # Cursor style + style: + # Cursor shape + # + # Values for `shape`: + # - ▇ Block + # - _ Underline + # - | Beam + shape: Block + + # Cursor blinking state + # + # Values for `blinking`: + # - Never: Prevent the cursor from ever blinking + # - Off: Disable blinking by default + # - On: Enable blinking by default + # - Always: Force the cursor to always blink + blinking: Off + + # Vi mode cursor style + # + # If the vi mode cursor style is `None` or not specified, it will fall back to + # the style of the active value of the normal cursor. + # + # See `cursor.style` for available options. + #vi_mode_style: None + + # Cursor blinking interval in milliseconds. + #blink_interval: 750 + + # If this is `true`, the cursor will be rendered as a hollow box when the + # window is not focused. + unfocused_hollow: true + + # Thickness of the cursor relative to the cell width as floating point number + # from `0.0` to `1.0`. + #thickness: 0.15 + +# Live config reload (changes require restart) +#live_config_reload: true + +# Shell +# +# You can set `shell.program` to the path of your favorite shell, e.g. +# `/bin/fish`. Entries in `shell.args` are passed unmodified as arguments to the +# shell. +# +# Default: +# - (macOS) /bin/bash --login +# - (Linux/BSD) user login shell +# - (Windows) powershell +#shell: +# program: /bin/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 + +# Offer IPC using `alacritty msg` (unix only) +#ipc_socket: true + +#mouse: + # Click settings + # + # The `double_click` and `triple_click` settings control the time + # alacritty should wait for accepting multiple clicks as one double + # or triple click. + #double_click: { threshold: 300 } + #triple_click: { threshold: 300 } + + # If this is `true`, the cursor is temporarily hidden when typing. + #hide_when_typing: false + +# Regex hints +# +# Terminal hints can be used to find text in the visible part of the terminal +# and pipe it to other applications. +#hints: + # Keys used for the hint labels. + #alphabet: "jfkdls;ahgurieowpq" + + # List with all available hints + # + # Each hint must have a `regex` and either an `action` or a `command` field. + # The fields `mouse`, `binding` and `post_processing` are optional. + # + # The fields `command`, `binding.key`, `binding.mods`, `binding.mode` and + # `mouse.mods` accept the same values as they do in the `key_bindings` section. + # + # The `mouse.enabled` field controls if the hint should be underlined while + # the mouse with all `mouse.mods` keys held or the vi mode cursor is above it. + # + # If the `post_processing` field is set to `true`, heuristics will be used to + # shorten the match if there are characters likely not to be part of the hint + # (e.g. a trailing `.`). This is most useful for URIs. + # + # Values for `action`: + # - Copy + # Copy the hint's text to the clipboard. + # - Paste + # Paste the hint's text to the terminal or search. + # - Select + # Select the hint's text. + # - MoveViModeCursor + # Move the vi mode cursor to the beginning of the hint. + #enabled: + # - regex: "(ipfs:|ipns:|magnet:|mailto:|gemini:|gopher:|https:|http:|news:|file:|git:|ssh:|ftp:)\ + # [^\u0000-\u001F\u007F-\u009F<>\"\\s{-}\\^⟨⟩`]+" + # command: xdg-open + # post_processing: true + # mouse: + # enabled: true + # mods: None + # binding: + # key: U + # mods: Control|Shift + +# Mouse bindings +# +# Mouse bindings are specified as a list of objects, much like the key +# bindings further below. +# +# To trigger mouse bindings when an application running within Alacritty +# captures the mouse, the `Shift` modifier is automatically added as a +# requirement. +# +# Each mouse binding will specify a: +# +# - `mouse`: +# +# - Middle +# - Left +# - Right +# - Numeric identifier such as `5` +# +# - `action` (see key bindings for actions not exclusive to mouse mode) +# +# - Mouse exclusive actions: +# +# - ExpandSelection +# Expand the selection to the current mouse cursor location. +# +# And optionally: +# +# - `mods` (see key bindings) +#mouse_bindings: +# - { mouse: Right, action: ExpandSelection } +# - { mouse: Right, mods: Control, action: ExpandSelection } +# - { mouse: Middle, mode: ~Vi, action: PasteSelection } + +# Key bindings +# +# Key bindings are specified as a list of objects. For example, this is the +# default paste binding: +# +# `- { key: V, mods: Control|Shift, action: Paste }` +# +# Each key binding will specify a: +# +# - `key`: Identifier of the key pressed +# +# - A-Z +# - F1-F24 +# - Key0-Key9 +# +# A full list with available key codes can be found here: +# https://docs.rs/glutin/*/glutin/event/enum.VirtualKeyCode.html#variants +# +# Instead of using the name of the keys, the `key` field also supports using +# the scancode of the desired key. Scancodes have to be specified as a +# decimal number. This command will allow you to display the hex scancodes +# for certain keys: +# +# `showkey --scancodes`. +# +# Then exactly one of: +# +# - `chars`: Send a byte sequence to the running application +# +# The `chars` field writes the specified string to the terminal. This makes +# it possible to pass escape sequences. To find escape codes for bindings +# like `PageUp` (`"\x1b[5~"`), you can run the command `showkey -a` outside +# of tmux. Note that applications use terminfo to map escape sequences back +# to keys. It is therefore required to update the terminfo when changing an +# escape sequence. +# +# - `action`: Execute a predefined action +# +# - ToggleViMode +# - SearchForward +# Start searching toward the right of the search origin. +# - SearchBackward +# Start searching toward the left of the search origin. +# - Copy +# - Paste +# - IncreaseFontSize +# - DecreaseFontSize +# - ResetFontSize +# - ScrollPageUp +# - ScrollPageDown +# - ScrollHalfPageUp +# - ScrollHalfPageDown +# - ScrollLineUp +# - ScrollLineDown +# - ScrollToTop +# - ScrollToBottom +# - ClearHistory +# Remove the terminal's scrollback history. +# - Hide +# Hide the Alacritty window. +# - Minimize +# Minimize the Alacritty window. +# - Quit +# Quit Alacritty. +# - ToggleFullscreen +# - SpawnNewInstance +# Spawn a new instance of Alacritty. +# - CreateNewWindow +# Create a new Alacritty window from the current process. +# - ClearLogNotice +# Clear Alacritty's UI warning and error notice. +# - ClearSelection +# Remove the active selection. +# - ReceiveChar +# - None +# +# - Vi mode exclusive actions: +# +# - Open +# Perform the action of the first matching hint under the vi mode cursor +# with `mouse.enabled` set to `true`. +# - ToggleNormalSelection +# - ToggleLineSelection +# - ToggleBlockSelection +# - ToggleSemanticSelection +# Toggle semantic selection based on `selection.semantic_escape_chars`. +# +# - Vi mode exclusive cursor motion actions: +# +# - Up +# One line up. +# - Down +# One line down. +# - Left +# One character left. +# - Right +# One character right. +# - First +# First column, or beginning of the line when already at the first column. +# - Last +# Last column, or beginning of the line when already at the last column. +# - FirstOccupied +# First non-empty cell in this terminal row, or first non-empty cell of +# the line when already at the first cell of the row. +# - High +# Top of the screen. +# - Middle +# Center of the screen. +# - Low +# Bottom of the screen. +# - SemanticLeft +# Start of the previous semantically separated word. +# - SemanticRight +# Start of the next semantically separated word. +# - SemanticLeftEnd +# End of the previous semantically separated word. +# - SemanticRightEnd +# End of the next semantically separated word. +# - WordLeft +# Start of the previous whitespace separated word. +# - WordRight +# Start of the next whitespace separated word. +# - WordLeftEnd +# End of the previous whitespace separated word. +# - WordRightEnd +# End of the next whitespace separated word. +# - Bracket +# Character matching the bracket at the cursor's location. +# - SearchNext +# Beginning of the next match. +# - SearchPrevious +# Beginning of the previous match. +# - SearchStart +# Start of the match to the left of the vi mode cursor. +# - SearchEnd +# End of the match to the right of the vi mode cursor. +# +# - Search mode exclusive actions: +# - SearchFocusNext +# Move the focus to the next search match. +# - SearchFocusPrevious +# Move the focus to the previous search match. +# - SearchConfirm +# - SearchCancel +# - SearchClear +# Reset the search regex. +# - SearchDeleteWord +# Delete the last word in the search regex. +# - SearchHistoryPrevious +# Go to the previous regex in the search history. +# - SearchHistoryNext +# Go to the next regex in the search history. +# +# - macOS exclusive actions: +# - ToggleSimpleFullscreen +# Enter fullscreen without occupying another space. +# +# - Linux/BSD exclusive actions: +# +# - CopySelection +# Copy from the selection buffer. +# - PasteSelection +# Paste from the selection buffer. +# +# - `command`: Fork and execute a specified command plus arguments +# +# The `command` field must be a map containing a `program` string and an +# `args` array of command line parameter strings. For example: +# `{ program: "alacritty", args: ["-e", "vttest"] }` +# +# And optionally: +# +# - `mods`: Key modifiers to filter binding actions +# +# - Command +# - Control +# - Option +# - Super +# - Shift +# - Alt +# +# Multiple `mods` can be combined using `|` like this: +# `mods: Control|Shift`. +# Whitespace and capitalization are relevant and must match the example. +# +# - `mode`: Indicate a binding for only specific terminal reported modes +# +# This is mainly used to send applications the correct escape sequences +# when in different modes. +# +# - AppCursor +# - AppKeypad +# - Search +# - Alt +# - Vi +# +# A `~` operator can be used before a mode to apply the binding whenever +# the mode is *not* active, e.g. `~Alt`. +# +# Bindings are always filled by default, but will be replaced when a new +# binding with the same triggers is defined. To unset a default binding, it can +# be mapped to the `ReceiveChar` action. Alternatively, you can use `None` for +# a no-op if you do not wish to receive input characters for that binding. +# +# If the same trigger is assigned to multiple actions, all of them are executed +# in the order they were defined in. +#key_bindings: + #- { key: Paste, action: Paste } + #- { key: Copy, action: Copy } + #- { key: L, mods: Control, action: ClearLogNotice } + #- { key: L, mods: Control, mode: ~Vi|~Search, chars: "\x0c" } + #- { key: PageUp, mods: Shift, mode: ~Alt, action: ScrollPageUp, } + #- { key: PageDown, mods: Shift, mode: ~Alt, action: ScrollPageDown } + #- { key: Home, mods: Shift, mode: ~Alt, action: ScrollToTop, } + #- { key: End, mods: Shift, mode: ~Alt, action: ScrollToBottom } + + # Vi Mode + #- { key: Space, mods: Shift|Control, mode: ~Search, action: ToggleViMode } + #- { key: Space, mods: Shift|Control, mode: Vi|~Search, action: ScrollToBottom } + #- { key: Escape, mode: Vi|~Search, action: ClearSelection } + #- { key: I, mode: Vi|~Search, action: ToggleViMode } + #- { key: I, mode: Vi|~Search, action: ScrollToBottom } + #- { key: C, mods: Control, mode: Vi|~Search, action: ToggleViMode } + #- { key: Y, mods: Control, mode: Vi|~Search, action: ScrollLineUp } + #- { key: E, mods: Control, mode: Vi|~Search, action: ScrollLineDown } + #- { key: G, mode: Vi|~Search, action: ScrollToTop } + #- { key: G, mods: Shift, mode: Vi|~Search, action: ScrollToBottom } + #- { key: B, mods: Control, mode: Vi|~Search, action: ScrollPageUp } + #- { key: F, mods: Control, mode: Vi|~Search, action: ScrollPageDown } + #- { key: U, mods: Control, mode: Vi|~Search, action: ScrollHalfPageUp } + #- { key: D, mods: Control, mode: Vi|~Search, action: ScrollHalfPageDown } + #- { key: Y, mode: Vi|~Search, action: Copy } + #- { key: Y, mode: Vi|~Search, action: ClearSelection } + #- { key: Copy, mode: Vi|~Search, action: ClearSelection } + #- { key: V, mode: Vi|~Search, action: ToggleNormalSelection } + #- { key: V, mods: Shift, mode: Vi|~Search, action: ToggleLineSelection } + #- { key: V, mods: Control, mode: Vi|~Search, action: ToggleBlockSelection } + #- { key: V, mods: Alt, mode: Vi|~Search, action: ToggleSemanticSelection } + #- { key: Return, mode: Vi|~Search, action: Open } + #- { key: K, mode: Vi|~Search, action: Up } + #- { key: J, mode: Vi|~Search, action: Down } + #- { key: H, mode: Vi|~Search, action: Left } + #- { key: L, mode: Vi|~Search, action: Right } + #- { key: Up, mode: Vi|~Search, action: Up } + #- { key: Down, mode: Vi|~Search, action: Down } + #- { key: Left, mode: Vi|~Search, action: Left } + #- { key: Right, mode: Vi|~Search, action: Right } + #- { key: Key0, mode: Vi|~Search, action: First } + #- { key: Key4, mods: Shift, mode: Vi|~Search, action: Last } + #- { key: Key6, mods: Shift, mode: Vi|~Search, action: FirstOccupied } + #- { key: H, mods: Shift, mode: Vi|~Search, action: High } + #- { key: M, mods: Shift, mode: Vi|~Search, action: Middle } + #- { key: L, mods: Shift, mode: Vi|~Search, action: Low } + #- { key: B, mode: Vi|~Search, action: SemanticLeft } + #- { key: W, mode: Vi|~Search, action: SemanticRight } + #- { key: E, mode: Vi|~Search, action: SemanticRightEnd } + #- { key: B, mods: Shift, mode: Vi|~Search, action: WordLeft } + #- { key: W, mods: Shift, mode: Vi|~Search, action: WordRight } + #- { key: E, mods: Shift, mode: Vi|~Search, action: WordRightEnd } + #- { key: Key5, mods: Shift, mode: Vi|~Search, action: Bracket } + #- { key: Slash, mode: Vi|~Search, action: SearchForward } + #- { key: Slash, mods: Shift, mode: Vi|~Search, action: SearchBackward } + #- { key: N, mode: Vi|~Search, action: SearchNext } + #- { key: N, mods: Shift, mode: Vi|~Search, action: SearchPrevious } + + # Search Mode + #- { key: Return, mode: Search|Vi, action: SearchConfirm } + #- { key: Escape, mode: Search, action: SearchCancel } + #- { key: C, mods: Control, mode: Search, action: SearchCancel } + #- { key: U, mods: Control, mode: Search, action: SearchClear } + #- { key: W, mods: Control, mode: Search, action: SearchDeleteWord } + #- { key: P, mods: Control, mode: Search, action: SearchHistoryPrevious } + #- { key: N, mods: Control, mode: Search, action: SearchHistoryNext } + #- { key: Up, mode: Search, action: SearchHistoryPrevious } + #- { key: Down, mode: Search, action: SearchHistoryNext } + #- { key: Return, mode: Search|~Vi, action: SearchFocusNext } + #- { key: Return, mods: Shift, mode: Search|~Vi, action: SearchFocusPrevious } + + # (Windows, Linux, and BSD only) + #- { key: V, mods: Control|Shift, mode: ~Vi, action: Paste } + #- { key: C, mods: Control|Shift, action: Copy } + #- { key: F, mods: Control|Shift, mode: ~Search, action: SearchForward } + #- { key: B, mods: Control|Shift, mode: ~Search, action: SearchBackward } + #- { key: C, mods: Control|Shift, mode: Vi|~Search, action: ClearSelection } + #- { key: Insert, mods: Shift, action: PasteSelection } + #- { key: Key0, mods: Control, action: ResetFontSize } + #- { key: Equals, mods: Control, action: IncreaseFontSize } + #- { key: Plus, mods: Control, action: IncreaseFontSize } + #- { key: NumpadAdd, mods: Control, action: IncreaseFontSize } + #- { key: Minus, mods: Control, action: DecreaseFontSize } + #- { key: NumpadSubtract, mods: Control, action: DecreaseFontSize } + + # (Windows only) + #- { key: Return, mods: Alt, action: ToggleFullscreen } + + # (macOS only) + #- { key: K, mods: Command, mode: ~Vi|~Search, chars: "\x0c" } + #- { key: K, mods: Command, mode: ~Vi|~Search, action: ClearHistory } + #- { key: Key0, mods: Command, action: ResetFontSize } + #- { key: Equals, mods: Command, action: IncreaseFontSize } + #- { key: Plus, mods: Command, action: IncreaseFontSize } + #- { key: NumpadAdd, mods: Command, action: IncreaseFontSize } + #- { key: Minus, mods: Command, action: DecreaseFontSize } + #- { key: NumpadSubtract, mods: Command, action: DecreaseFontSize } + #- { key: V, mods: Command, action: Paste } + #- { key: C, mods: Command, action: Copy } + #- { key: C, mods: Command, mode: Vi|~Search, action: ClearSelection } + #- { key: H, mods: Command, action: Hide } + #- { key: H, mods: Command|Alt, action: HideOtherApplications } + #- { key: M, mods: Command, action: Minimize } + #- { key: Q, mods: Command, action: Quit } + #- { key: W, mods: Command, action: Quit } + #- { key: N, mods: Command, action: SpawnNewInstance } + #- { key: F, mods: Command|Control, action: ToggleFullscreen } + #- { key: F, mods: Command, mode: ~Search, action: SearchForward } + #- { key: B, mods: Command, mode: ~Search, action: SearchBackward } + +#debug: + # Display the time it takes to redraw each frame. + #render_timer: false + + # Keep the log file after quitting Alacritty. + #persistent_logging: false + + # Log level + # + # Values for `log_level`: + # - Off + # - Error + # - Warn + # - Info + # - Debug + # - Trace + #log_level: Warn + + # Print all received window events. + #print_events: false + + # Highlight window damage information. + #highlight_damage: false diff --git a/.config/fontconfig/fonts.conf b/.config/fontconfig/fonts.conf new file mode 100644 index 0000000..4830821 --- /dev/null +++ b/.config/fontconfig/fonts.conf @@ -0,0 +1,41 @@ + + + + + sans-serif + + + + Liberation Sans + Noto Sans + + + + DejaVu Sans + + + serif + + + + Liberation Serif + Noto Serif + + + + DejaVu Serif + + + monospace + + + + Iosevka Nerd Font Mono + Liberation Mono + Noto Sans Mono + + + + DejaVu Sans Mono + + diff --git a/i3/config b/.config/i3/config similarity index 100% rename from i3/config rename to .config/i3/config diff --git a/.config/i3status/config b/.config/i3status/config new file mode 100644 index 0000000..06ec1f9 --- /dev/null +++ b/.config/i3status/config @@ -0,0 +1,36 @@ +# i3status configuration file. +# see "man i3status" for documentation. + +# It is important that this file is edited as UTF-8. +# The following line should contain a sharp s: +# ß +# If the above line is not correctly displayed, fix your editor first! + +general { + colors = true + interval = 5 +} + +order += "ethernet _first_" +order += "disk /" +order += "memory" +order += "tztime local" + +ethernet _first_ { + format_up = "Eth: %ip" + format_down = "Eth: down" +} + +disk "/" { + format = "Disk: %avail" +} + +memory { + format = "Mem: %used (%available Free)" + threshold_degraded = "1G" + format_degraded = "MEMORY < %available" +} + +tztime local { + format = "%Y-%m-%d %I:%M:%S" +} diff --git a/neovim/init.vim b/.config/nvim/init.vim similarity index 100% rename from neovim/init.vim rename to .config/nvim/init.vim diff --git a/git/gitconfig b/.gitconfig similarity index 100% rename from git/gitconfig rename to .gitconfig diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f55baad --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +metals.sbt +.bsp/ +.bloop/ +.metals/ +zig-cache/ +zig-out/ diff --git a/neovim/json.vim b/.local/share/nvim/site/ftplugin/json.vim similarity index 100% rename from neovim/json.vim rename to .local/share/nvim/site/ftplugin/json.vim diff --git a/neovim/tex.vim b/.local/share/nvim/site/ftplugin/tex.vim similarity index 100% rename from neovim/tex.vim rename to .local/share/nvim/site/ftplugin/tex.vim diff --git a/neovim/after/plugin/nvim-lint.vim b/.local/share/nvim/site/plugin/nvim-lint.vim similarity index 90% rename from neovim/after/plugin/nvim-lint.vim rename to .local/share/nvim/site/plugin/nvim-lint.vim index 0407708..00e8939 100644 --- a/neovim/after/plugin/nvim-lint.vim +++ b/.local/share/nvim/site/plugin/nvim-lint.vim @@ -1,7 +1,8 @@ lua << EOF require('lint').linters_by_ft = { - markdown = {'vale',}, html = {'tidy',}, + markdown = {'vale',}, + sh = {'shellcheck',}, vim = {'vint',}, yaml = {'yamllint'}, } diff --git a/neovim/after/plugin/nvim-web-devicons.vim b/.local/share/nvim/site/plugin/nvim-web-devicons.vim similarity index 100% rename from neovim/after/plugin/nvim-web-devicons.vim rename to .local/share/nvim/site/plugin/nvim-web-devicons.vim diff --git a/neovim/after/plugin/telescope.nvim.vim b/.local/share/nvim/site/plugin/telescope.nvim.vim similarity index 100% rename from neovim/after/plugin/telescope.nvim.vim rename to .local/share/nvim/site/plugin/telescope.nvim.vim diff --git a/neovim/after/plugin/trouble.nvim.vim b/.local/share/nvim/site/plugin/trouble.nvim.vim similarity index 100% rename from neovim/after/plugin/trouble.nvim.vim rename to .local/share/nvim/site/plugin/trouble.nvim.vim diff --git a/neovim/after/plugin/vim-gitgutter.vim b/.local/share/nvim/site/plugin/vim-gitgutter.vim similarity index 100% rename from neovim/after/plugin/vim-gitgutter.vim rename to .local/share/nvim/site/plugin/vim-gitgutter.vim diff --git a/.local/share/nvim/site/plugin/vimtex.vim b/.local/share/nvim/site/plugin/vimtex.vim new file mode 100644 index 0000000..a05b46f --- /dev/null +++ b/.local/share/nvim/site/plugin/vimtex.vim @@ -0,0 +1,34 @@ +" If the format cannot be determined, use this. +let g:tex_flavor = 'latex' +let g:vimtex_view_method = 'zathura' + +let g:vimtex_compiler_latexmk = { + \ 'executable' : 'latexmk', + \ 'options' : [ + \ '-xelatex', + \ '-file-line-error', + \ '-synctex=1', + \ '-interaction=nonstopmode', + \ ], + \} + +"let g:vimtex_compiler_latexmk = { +" \ 'backend' : 'nvim', +" \ 'background' : 1, +" \ 'build_dir' : '', +" \ 'callback' : 1, +" \ 'continuous' : 1, +" \ 'executable' : 'latexmk', +" \ 'hooks' : [], +" \ 'options' : [ +" \ '-xelatex', +" \ '-verbose', +" \ '-file-line-error', +" \ '-synctex=1', +" \ '-interaction=nonstopmode', +" \ ], +" \} + +"let g:vimtex_compiler_latexmk_engines = { +" \ '_' : '-xelatex', +" \} diff --git a/.profile b/.profile new file mode 100644 index 0000000..3ee6b29 --- /dev/null +++ b/.profile @@ -0,0 +1 @@ +. "$HOME/.bashrc" diff --git a/.startup/ps1 b/.startup/ps1 new file mode 100644 index 0000000..5cf2d33 --- /dev/null +++ b/.startup/ps1 @@ -0,0 +1,28 @@ +# Determine whether or not we should support color. +case "$TERM" in + xterm-color|*-256color|rxvt-unicode) color_prompt=yes;; +esac + +# Emit the current date and time. +__prompt_date() { + echo "$(date '+%D %r')" +} + +# Define a function that extracts the current git branch, if available. +__git_branch() { + ref="$(git symbolic-ref HEAD 2>/dev/null | cut -d'/' -f3)" + if [ ! -z $ref ]; then + echo " $ref" + else + echo "" + fi +} + +# Assign the prompt. +if [ "$color_prompt" = yes ]; then + PS1='\[\033[01;32m\]\u:\[\033[01;34m\]\w\[\033[00m\]\[\033[01;31m\]$(__git_branch)\[\033[00m\] $(__prompt_date)\n\$ ' +else + PS1='\u:\w$(__git_branch) $(__prompt_date)\n\$ ' +fi + +unset color_prompt diff --git a/.startup/start-ssh-agent b/.startup/start-ssh-agent new file mode 100644 index 0000000..ba34e9a --- /dev/null +++ b/.startup/start-ssh-agent @@ -0,0 +1,22 @@ +# Start ssh-agent if it is not already running. If it is running, ensure the +# environment variables are set properly. + +# This is intended for sourcing within some startup file like .bashrc or .zshrc + +sock_file="$HOME/.ssh-agent-sock" +pid_file="$HOME/.ssh-agent-pid" + +touch $sock_file +touch $pid_file + +if ps -p $(cat $pid_file) > /dev/null 2>&1; then + export SSH_AUTH_SOCK="$(cat $sock_file)" + export SSH_AGENT_PID="$(cat $pid_file)" +else + # Start a new instance of the SSH agent. + eval "$(ssh-agent)" + + # Record the new settings in the agent tracking files. + echo $SSH_AUTH_SOCK > $sock_file + echo $SSH_AGENT_PID > $pid_file +fi diff --git a/.xinitrc b/.xinitrc new file mode 100644 index 0000000..10b9a1d --- /dev/null +++ b/.xinitrc @@ -0,0 +1,2 @@ +xrdb -merge ~/.Xresources +exec i3 diff --git a/README.md b/README.md index 017ecc7..c691ca6 100644 --- a/README.md +++ b/README.md @@ -17,5 +17,6 @@ $ ./install.sh --auto-backup ## Documentation +- [Fonts](docs/fonts.md): Fonts that I use regularly. - [Utilities](docs/utilities.md): List of utilities I use. - [Programming](docs/programming.md): List of programming languages/tools I use. diff --git a/install.sh b/install.sh index 772aa1a..5f847dd 100755 --- a/install.sh +++ b/install.sh @@ -1,43 +1,153 @@ -#!/bin/bash +#!/usr/bin/env bash -# The directory where this script lives - used as the base for finding all -# of the configurations to be linked. -src_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" +set -o errexit +set -o pipefail +set -o nounset + +__dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +backup_dir="$HOME/.dotfiles/backups" + +# Colors for output. So fancy. -# Colors for output COLOR_SUCCESS='\033[0;32m' COLOR_ERROR='\033[0;31m' COLOR_NOTIFY='\033[1;33m' NC='\033[0m' # No Color -# Default settings for this script +# Default settings for this script: +# - Do not create backups automatically. +# - Install everything. + auto_backup=false -config_target="all" +config_selection="all" -# Installation sources -bash_source="$src_dir/shell/bashrc" -i3_source="$src_dir/i3/config" -xresources_source="$src_dir/xresources/Xresources" -neovim_source="$src_dir/neovim/init.vim" -git_source="$src_dir/git/gitconfig" +# Dotfile locations. Note that these locations should be identical between the +# home directory and the dotfile directory. -# Installation targets (symlinks to be created) -bash_target="$HOME/.bashrc" -i3_target="$HOME/.config/i3/config" -xresources_target="$HOME/.Xresources" -neovim_target="$HOME/.config/nvim/init.vim" -git_target="$HOME/.gitconfig" +bashrc=".bashrc" +bashrc_name="bashrc" +bashrc_source="${__dir}/${bashrc}" +bashrc_target="${HOME}/${bashrc}" +bashrc_backup="${backup_dir}/${bashrc_name}" -# Backup names -backup_dir="$HOME/.dotfiles/backups" -bash_backup="$backup_dir/bashrc.backup" -i3_backup="$backup_dir/i3.config.backup" -xresources_backup="$backup_dir/Xresources.backup" -neovim_backup="$backup_dir/neovim.init.vim.backup" -git_backup="$backup_dir/global.git.backup" +ps1=".startup/ps1" +ps1_name="ps1" +ps1_source="${__dir}/${ps1}" +ps1_target="${HOME}/${ps1}" +ps1_backup="${backup_dir}/${ps1_name}" + +profile=".profile" +profile_name="profile" +profile_source="${__dir}/${profile}" +profile_target="${HOME}/${profile}" +profile_backup="${backup_dir}/${profile_name}" + +i3=".config/i3/config" +i3_name="i3" +i3_source="${__dir}/${i3}" +i3_target="${HOME}/${i3}" +i3_backup="${backup_dir}/${i3_name}" + +i3status=".config/i3status/config" +i3status_name="i3status" +i3status_source="${__dir}/${i3status}" +i3status_target="${HOME}/${i3status}" +i3status_backup="${backup_dir}/${i3status_name}" + +xresources=".Xresources" +xresources_name="xresources" +xresources_source="${__dir}/${xresources}" +xresources_target="${HOME}/${xresources}" +xresources_backup="${backup_dir}/${xresources_name}" + +gitconfig=".gitconfig" +gitconfig_name="gitconfig" +gitconfig_source="${__dir}/${gitconfig}" +gitconfig_target="${HOME}/${gitconfig}" +gitconfig_backup="${backup_dir}/${gitconfig_name}" + +gitignore=".gitignore" +gitignore_name="gitignore" +gitignore_source="${__dir}/${gitignore}" +gitignore_target="${HOME}/${gitignore}" +gitignore_backup="${backup_dir}/${gitignore_name}" + +alacritty=".config/alacritty/alacritty.yml" +alacritty_name="alacritty" +alacritty_source="${__dir}/${alacritty}" +alacritty_target="${HOME}/${alacritty}" +alacritty_backup="${backup_dir}/${alacritty_name}" + +fontconfig=".config/fontconfig/fonts.conf" +fontconfig_name="fontconfig" +fontconfig_source="${__dir}/${fontconfig}" +fontconfig_target="${HOME}/${fontconfig}" +fontconfig_backup="${backup_dir}/${fontconfig_name}" + +ssh_agent=".startup/start-ssh-agent" +ssh_agent_name="ssh_agent" +ssh_agent_source="${__dir}/${ssh_agent}" +ssh_agent_target="${HOME}/${ssh_agent}" +ssh_agent_backup="${backup_dir}/${ssh_agent_name}" + +# Note: neovim is spread across several files, and this might be a rather +# inefficient way to do this. Alas, will deal with it for now. +nvim=".config/nvim/init.vim" +nvim_name="nvim" +nvim_source="${__dir}/${nvim}" +nvim_target="${HOME}/${nvim}" +nvim_backup="${backup_dir}/${nvim_name}" + +nvim_json=".local/share/nvim/site/ftplugin/json.vim" +nvim_json_name="nvim_json" +nvim_json_source="${__dir}/${nvim_json}" +nvim_json_target="${HOME}/${nvim_json}" +nvim_json_backup="${backup_dir}/${nvim_json_name}" + +nvim_tex=".local/share/nvim/site/ftplugin/tex.vim" +nvim_tex_name="nvim_tex" +nvim_tex_source="${__dir}/${nvim_tex}" +nvim_tex_target="${HOME}/${nvim_tex}" +nvim_tex_backup="${backup_dir}/${nvim_tex_name}" + +nvim_lint=".local/share/nvim/site/plugin/nvim-lint.vim" +nvim_lint_name="nvim_lint" +nvim_lint_source="${__dir}/${nvim_lint}" +nvim_lint_target="${HOME}/${nvim_lint}" +nvim_lint_backup="${backup_dir}/${nvim_lint_name}" + +nvim_web_devicons=".local/share/nvim/site/plugin/nvim-web-devicons.vim" +nvim_web_devicons_name="nvim_web_devicons" +nvim_web_devicons_source="${__dir}/${nvim_web_devicons}" +nvim_web_devicons_target="${HOME}/${nvim_web_devicons}" +nvim_web_devicons_backup="${backup_dir}/${nvim_web_devicons_name}" + +nvim_telescope=".local/share/nvim/site/plugin/telescope.nvim.vim" +nvim_telescope_name="nvim_telescope" +nvim_telescope_source="${__dir}/${nvim_telescope}" +nvim_telescope_target="${HOME}/${nvim_telescope}" +nvim_telescope_backup="${backup_dir}/${nvim_telescope_name}" + +nvim_trouble=".local/share/nvim/site/plugin/trouble.nvim.vim" +nvim_trouble_name="nvim_trouble" +nvim_trouble_source="${__dir}/${nvim_trouble}" +nvim_trouble_target="${HOME}/${nvim_trouble}" +nvim_trouble_backup="${backup_dir}/${nvim_trouble_name}" + +nvim_gitgutter=".local/share/nvim/site/plugin/vim-gitgutter.vim" +nvim_gitgutter_name="nvim_gitgutter" +nvim_gitgutter_source="${__dir}/${nvim_gitgutter}" +nvim_gitgutter_target="${HOME}/${nvim_gitgutter}" +nvim_gitgutter_backup="${backup_dir}/${nvim_gitgutter_name}" + +nvim_vimtex=".local/share/nvim/site/plugin/vimtex.vim" +nvim_vimtex_name="nvim_vimtex" +nvim_vimtex_source="${__dir}/${nvim_vimtex}" +nvim_vimtex_target="${HOME}/${nvim_vimtex}" +nvim_vimtex_backup="${backup_dir}/${nvim_vimtex_name}" function display_configs { - echo 'Supported config targets: all, bash, i3, xresources, neovim, git' + echo 'Supported config targets: all, bashrc, ps1, profile, i3, i3status, xresources, gitconfig, gitignore, alacritty, fontconfig, ssh_agent, nvim, nvim_json, nvim_tex, nvim_lint, nvim_web_devicons, nvim_telescope, nvim_trouble, nvim_gitgutter, nvim_vimtex' } function display_usage { @@ -47,13 +157,51 @@ function display_usage { echo 'Install configurations.' echo '' echo ' -c|--config Describes what to install: Default=all' - echo " $(display_configs)" + echo ' -l|--list List available configs.' echo ' -a|--auto-backup Automatically backup existing configs.' echo ' -h|--help Display this usage text.' echo '' echo 'Examples:' echo '' - echo "./install.sh --target=all --auto-backup" + echo "./install.sh --config=all --auto-backup" +} + +# Install some singular configuration file by creating a symbolic link. Handles +# automatic backups if the file already exists. +function install_config { + + # Used for diagnostic purposes only - describes the configuration. + local config_name="$1" + + # The location of the configuration to install. + local config_source="$2" + + # The destination where the symbolic link should be created. + local config_target="$3" + + # The backup file for this piece of configuration. + local config_backup="$4" + + if [ "$config_selection" = "all" ] || [ "${config_selection}" = "${config_name}" ]; then + echo -n -e "${COLOR_SUCCESS}[+]${NC} Installing '${config_name}' to '${config_target}'... " + if [ -f "${config_target}" ]; then + if $auto_backup; then + # The file exists, so create a backup and remove the file. + echo -e "\n\t${COLOR_NOTIFY}[Note]${NC} creating a backup of '${config_target}'" + cp "${config_target}" "${config_backup}" + rm "${config_target}" + ln -s "${config_source}" "${config_target}" + echo -e "\t${COLOR_SUCCESS}[Success]${NC}" + else + # The caller does not want backups/deletions, so we must abort. + echo -e "\n\t${COLOR_ERROR}[Error]${NC} Could not install configuration '${config_name}'. File '${config_target}' already exists. Please manually remove it or set --auto-backup" + fi + else + # The file doesn't exist, we can safely create a symlink. + ln -s "${config_source}" "${config_target}" + echo -e "${COLOR_SUCCESS}[Success]${NC}" + fi + fi } while [[ $# -gt 0 ]] @@ -62,7 +210,7 @@ key="$1" case $key in -c|--config) - config_target="$2" + config_selection="$2" shift shift ;; @@ -70,6 +218,10 @@ case $key in auto_backup=true shift ;; + -l|--list) + display_configs + exit 0 + ;; -h|--help) display_usage exit 0 @@ -82,17 +234,7 @@ case $key in esac done -case $config_target in - all|bash|i3|xresources|neovim|git) - ;; - *) - echo "Unrecognized configuration target selected." - display_configs - exit 1 - ;; -esac - -# Ensure the backup directory exists +# Ensure the backup directory exists (if backups are requested). if $auto_backup; then if [ ! -d $backup_dir ]; then if `mkdir $backup_dir`; then @@ -103,106 +245,26 @@ if $auto_backup; then fi fi -# Install bashrc -if [ "$config_target" = "all" ] || [ "$config_target" = "bash" ]; then - echo -e "\t- Installing .bashrc to '$bash_target'" - if [ -f $bash_target ]; then - # The file exists - we either create a backup and remove it, or fail. - if $auto_backup; then - echo -e "\t ${COLOR_NOTIFY}[Note]${NC} creating a backup of '$bash_target'" - cp $bash_target $bash_backup - rm $bash_target - ln -s $bash_source $bash_target - else - echo -e "\t ${COLOR_ERROR}[Error]${NC} File '$bash_target' already exists. Please manually remove it or set --auto-backup" - exit 1 - fi - else - # The file doesn't exist, we can safely create a symlink. - ln -s $bash_source $bash_target - fi -fi +# Install all requested configurations. +install_config "${bashrc_name}" "${bashrc_source}" "${bashrc_target}" "${bashrc_backup}" +install_config "${ps1_name}" "${ps1_source}" "${ps1_target}" "${ps1_backup}" +install_config "${profile_name}" "${profile_source}" "${profile_target}" "${profile_backup}" +install_config "${i3_name}" "${i3_source}" "${i3_target}" "${i3_backup}" +install_config "${i3status_name}" "${i3status_source}" "${i3status_target}" "${i3status_backup}" +install_config "${gitconfig_name}" "${gitconfig_source}" "${gitconfig_target}" "${gitconfig_backup}" +install_config "${gitignore_name}" "${gitignore_source}" "${gitignore_target}" "${gitignore_backup}" +install_config "${xresources_name}" "${xresources_source}" "${xresources_target}" "${xresources_backup}" +install_config "${alacritty_name}" "${alacritty_source}" "${alacritty_target}" "${alacritty_backup}" +install_config "${fontconfig_name}" "${fontconfig_source}" "${fontconfig_target}" "${fontconfig_backup}" +install_config "${ssh_agent_name}" "${ssh_agent_source}" "${ssh_agent_target}" "${ssh_agent_backup}" -# Install i3 configuration -if [ "$config_target" = "all" ] || [ "$config_target" = "i3" ]; then - echo -e "\t- Installing i3 config to '$i3_target'" - if [ -f $i3_target ]; then - # The file exists - we either create a backup and remove it, or fail. - if $auto_backup; then - echo -e "\t ${COLOR_NOTIFY}[Note]${NC} creating a backup of '$i3_target'" - cp $i3_target $i3_backup - rm $i3_target - ln -s $i3_source $i3_target - else - echo -e "\t ${COLOR_ERROR}[Error]${NC} File '$i3_target' already exists. Please manually remove it or set --auto-backup" - echo "File '$i3_target' already exists. Please manually remove it or set --auto-backup" - exit 1 - fi - else - # The file doesn't exist, we can safely create a symlink. - ln -s $i3_source $i3_target - fi -fi - -# Install .Xresources -if [ "$config_target" = "all" ] || [ "$config_target" = "xresources" ]; then - echo -e "\t- Installing xresources config to '$xresources_target'" - if [ -f $xresources_target ]; then - # The file exists - we either create a backup and remove it, or fail. - if $auto_backup; then - echo -e "\t ${COLOR_NOTIFY}[Note]${NC} creating a backup of '$xresources_target'" - cp $xresources_target $xresources_backup - rm $xresources_target - ln -s $xresources_source $xresources_target - else - echo -e "\t ${COLOR_ERROR}[Error]${NC} File '$xresources_target' already exists. Please manually remove it or set --auto-backup" - echo "File '$xresources_target' already exists. Please manually remove it or set --auto-backup" - exit 1 - fi - else - # The file doesn't exist, we can safely create a symlink. - ln -s $xresources_source $xresources_target - fi -fi - -# Install neovim config -if [ "$config_target" = "all" ] || [ "$config_target" = "neovim" ]; then - echo -e "\t- Installing neovim config to '$neovim_target'" - if [ -f $neovim_target ]; then - # The file exists - we either create a backup and remove it, or fail. - if $auto_backup; then - echo -e "\t ${COLOR_NOTIFY}[Note]${NC} creating a backup of '$neovim_target'" - cp $neovim_target $neovim_backup - rm $neovim_target - ln -s $neovim_source $neovim_target - else - echo -e "\t ${COLOR_ERROR}[Error]${NC} File '$neovim_target' already exists. Please manually remove it or set --auto-backup" - echo "File '$neovim_target' already exists. Please manually remove it or set --auto-backup" - exit 1 - fi - else - # The file doesn't exist, we can safely create a symlink. - ln -s $neovim_source $neovim_target - fi -fi - -# Install git config -if [ "$config_target" = "all" ] || [ "$config_target" = "git" ]; then - echo -e "\t- Installing git config to '$git_target'" - if [ -f $git_target ]; then - # The file exists - we either create a backup and remove it, or fail. - if $auto_backup; then - echo -e "\t ${COLOR_NOTIFY}[Note]${NC} creating a backup of '$git_target'" - cp $git_target $git_backup - rm $git_target - ln -s $git_source $git_target - else - echo -e "\t ${COLOR_ERROR}[Error]${NC} File '$git_target' already exists. Please manually remove it or set --auto-backup" - echo "File '$git_target' already exists. Please manually remove it or set --auto-backup" - exit 1 - fi - else - # The file doesn't exist, we can safely create a symlink. - ln -s $git_source $git_target - fi -fi +# Note that all of these configurations are Neovim-related: +install_config "${nvim_name}" "${nvim_source}" "${nvim_target}" "${nvim_backup}" +install_config "${nvim_json_name}" "${nvim_json_source}" "${nvim_json_target}" "${nvim_json_backup}" +install_config "${nvim_tex_name}" "${nvim_tex_source}" "${nvim_tex_target}" "${nvim_tex_backup}" +install_config "${nvim_lint_name}" "${nvim_lint_source}" "${nvim_lint_target}" "${nvim_lint_backup}" +install_config "${nvim_web_devicons_name}" "${nvim_web_devicons_source}" "${nvim_web_devicons_target}" "${nvim_web_devicons_backup}" +install_config "${nvim_telescope_name}" "${nvim_telescope_source}" "${nvim_telescope_target}" "${nvim_telescope_backup}" +install_config "${nvim_trouble_name}" "${nvim_trouble_source}" "${nvim_trouble_target}" "${nvim_trouble_backup}" +install_config "${nvim_gitgutter_name}" "${nvim_gitgutter_source}" "${nvim_gitgutter_target}" "${nvim_gitgutter_backup}" +install_config "${nvim_vimtex_name}" "${nvim_vimtex_source}" "${nvim_vimtex_target}" "${nvim_vimtex_backup}" diff --git a/neovim/after/plugin/vimtex.vim b/neovim/after/plugin/vimtex.vim deleted file mode 100644 index d45a0ea..0000000 --- a/neovim/after/plugin/vimtex.vim +++ /dev/null @@ -1,3 +0,0 @@ -" If the format cannot be determined, use this. -let g:tex_flavor = "latex" -let g:vimtex_view_method = 'zathura' diff --git a/setup-directories.sh b/setup-directories.sh index 1e526d5..a8fa297 100755 --- a/setup-directories.sh +++ b/setup-directories.sh @@ -1,10 +1,21 @@ -#!/bin/bash +#!/usr/bin/env bash + +set -o errexit +set -o pipefail +set -o nounset -mkdir $HOME/.startup mkdir $HOME/bin mkdir $HOME/log mkdir $HOME/log/$USER mkdir $HOME/opt mkdir $HOME/src -mkdir $HOME/.dotfiles -mkdir $HOME/.dotfiles/backups +mkdir -p $HOME/.dotfiles/backups +mkdir -p $HOME/.config +mkdir -p $HOME/.config/alacritty +mkdir -p $HOME/.config/fontconfig +mkdir -p $HOME/.config/i3 +mkdir -p $HOME/.config/i3status +mkdir -p $HOME/.config/nvim +mkdir -p $HOME/.startup +mkdir -p $HOME/.local/share/nvim/site/ftplugin +mkdir -p $HOME/.local/share/nvim/site/plugin