From 117b20bb7ba5fb3876d192b0aa0d2fec7a00a249 Mon Sep 17 00:00:00 2001 From: aleidk Date: Mon, 13 Feb 2023 20:07:23 -0300 Subject: [PATCH] update --- .gitmodules | 3 + config/alacritty/alacritty.yml | 844 ++++++++++++++++++ config/alacritty/themes | 1 + config/foot/foot.ini | 197 ++++ config/foot/themes/catppuccin | 1 + config/tmux/tmux.conf | 72 ++ config/zsh/config/aliases.zsh | 33 +- .../zsh/{config => functions}/functions.zsh | 12 - config/zsh/functions/tmux.zsh | 29 + config/zsh/zprofile | 2 + {config => exports}/Gnome Extensions | 0 setup.sh | 13 +- setup/config | 19 + setup/tmux | 9 + setup/zsh | 2 + 15 files changed, 1204 insertions(+), 33 deletions(-) create mode 100644 .gitmodules create mode 100644 config/alacritty/alacritty.yml create mode 160000 config/alacritty/themes create mode 100644 config/foot/foot.ini create mode 160000 config/foot/themes/catppuccin create mode 100644 config/tmux/tmux.conf rename config/zsh/{config => functions}/functions.zsh (62%) create mode 100644 config/zsh/functions/tmux.zsh rename {config => exports}/Gnome Extensions (100%) create mode 100755 setup/config create mode 100644 setup/tmux diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..ed5b8ab --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "config/alacritty/themes/catppuccin"] + path = config/alacritty/themes/catppuccin + url = git@github.com:catppuccin/alacritty.git diff --git a/config/alacritty/alacritty.yml b/config/alacritty/alacritty.yml new file mode 100644 index 0000000..fae2e1f --- /dev/null +++ b/config/alacritty/alacritty.yml @@ -0,0 +1,844 @@ +# 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 + - ~/.config/alacritty/themes/catppuccin/catppuccin-macchiato.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: 10 + y: 10 + # Spread additional padding evenly around the terminal content. + dynamic_padding: true + + # 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: 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. + opacity: 0.92 + +# 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: + family: JetBrainsMono Nerd Font Mono + style: Regular + bold: + # family: JetBrainsMono NF + style: Bold + italic: + # family: JetBrainsMono NF + style: italic + + bold_italic: + # family: monospace + style: Bold Italic + + # Point size + size: 12.0 +# Offset is the extra space around each character. `offset.y` can be thought +# of as modifying the line spacing, and `offset.x` as modifying the letter +# spacing. +#offset: +# x: 0 +# y: 0 + +# Glyph offset determines the locations of the glyphs within their cells with +# the default being at the bottom. Increasing `x` moves the glyph to the +# right, increasing `y` moves the glyph upward. +#glyph_offset: +# x: 0 +# y: 0 + +# Thin stroke font rendering (macOS only) +# +# Thin strokes are suitable for retina displays, but for non-retina screens +# it is recommended to set `use_thin_strokes` to `false`. +#use_thin_strokes: true + +# Use built-in font for box drawing characters. +# +# If `true`, Alacritty will use a custom built-in font for box drawing +# characters (Unicode points 2500 - 259f). +# +#builtin_box_drawing: true + +# If `true`, bold text is drawn using the bright color variants. +#draw_bold_text_with_bright_colors: false + +# Colors (Tomorrow Night) +#colors: +# Default colors +#primary: +# background: '#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: [] + +# Transparent cell backgrounds +# +# Whether or not `window.opacity` applies to all cell backgrounds or only to +# the default background. When set to `true` all cells will be transparent +# regardless of their background color. +#transparent_background_colors: false + +# Bell +# +# The bell is rung every time the BEL control character is received. +#bell: +# Visual Bell Animation +# +# Animation effect for flashing the screen when the visual bell is rung. +# +# Values for `animation`: +# - Ease +# - EaseOut +# - EaseOutSine +# - EaseOutQuad +# - EaseOutCubic +# - EaseOutQuart +# - EaseOutQuint +# - EaseOutExpo +# - EaseOutCirc +# - Linear +#animation: EaseOutExpo + +# Duration of the visual bell flash in milliseconds. A `duration` of `0` will +# disable the visual bell animation. +#duration: 0 + +# Visual bell animation color. +#color: '#ffffff' + +# Bell Command +# +# This program is executed whenever the bell is rung. +# +# When set to `command: None`, no command will be executed. +# +# Example: +# command: +# program: notify-send +# args: ["Hello, World!"] +# +#command: None + +#selection: +# This string contains all characters that are used as separators for +# "semantic words" in Alacritty. +#semantic_escape_chars: ",│`|:\"' ()[]{}<>\t" + +# When set to `true`, selected text will be copied to the primary clipboard. +#save_to_clipboard: false + +#cursor: +# Cursor style +#style: +# Cursor shape +# +# Values for `shape`: +# - ▇ Block +# - _ Underline +# - | Beam +#shape: Block + +# Cursor blinking state +# +# Values for `blinking`: +# - Never: Prevent the cursor from ever blinking +# - Off: Disable blinking by default +# - On: Enable blinking by default +# - Always: Force the cursor to always blink +#blinking: Off + +# Vi mode cursor style +# +# If the vi mode cursor style is `None` or not specified, it will fall back to +# the style of the active value of the normal cursor. +# +# See `cursor.style` for available options. +#vi_mode_style: None + +# Cursor blinking interval in milliseconds. +#blink_interval: 750 + +# If this is `true`, the cursor will be rendered as a hollow box when the +# window is not focused. +#unfocused_hollow: true + +# Thickness of the cursor relative to the cell width as floating point number +# from `0.0` to `1.0`. +#thickness: 0.15 + +# Live config reload (changes require restart) +#live_config_reload: true + +# Shell +# +# You can set `shell.program` to the path of your favorite shell, e.g. +# `/bin/fish`. Entries in `shell.args` are passed unmodified as arguments to the +# shell. +# +# Default: +# - (macOS) /bin/bash --login +# - (Linux/BSD) user login shell +# - (Windows) powershell +shell: + program: /bin/zsh + args: + - -l + - -c + # Open tmux session selector on startup + - "source ~/.config/zsh/functions/tmux.zsh && tm || echo 'Error running tmux...'" +# Startup directory +# +# Directory the shell is started in. If this is unset, or `None`, the working +# directory of the parent process will be used. +#working_directory: None + +# Send ESC (\x1b) before characters when alt is pressed. +#alt_send_esc: true + +# Offer IPC using `alacritty msg` (unix only) +#ipc_socket: true + +mouse: + # Click settings + # + # The `double_click` and `triple_click` settings control the time + # alacritty should wait for accepting multiple clicks as one double + # or triple click. + #double_click: { threshold: 300 } + #triple_click: { threshold: 300 } + + # If this is `true`, the cursor is temporarily hidden when typing. + hide_when_typing: false +# Regex hints +# +# Terminal hints can be used to find text in the visible part of the terminal +# and pipe it to other applications. +#hints: +# Keys used for the hint labels. +#alphabet: "jfkdls;ahgurieowpq" + +# List with all available hints +# +# Each hint must have a `regex` and either an `action` or a `command` field. +# The fields `mouse`, `binding` and `post_processing` are optional. +# +# The fields `command`, `binding.key`, `binding.mods`, `binding.mode` and +# `mouse.mods` accept the same values as they do in the `key_bindings` section. +# +# The `mouse.enabled` field controls if the hint should be underlined while +# the mouse with all `mouse.mods` keys held or the vi mode cursor is above it. +# +# If the `post_processing` field is set to `true`, heuristics will be used to +# shorten the match if there are characters likely not to be part of the hint +# (e.g. a trailing `.`). This is most useful for URIs. +# +# Values for `action`: +# - Copy +# Copy the hint's text to the clipboard. +# - Paste +# Paste the hint's text to the terminal or search. +# - Select +# Select the hint's text. +# - MoveViModeCursor +# Move the vi mode cursor to the beginning of the hint. +#enabled: +# - regex: "(ipfs:|ipns:|magnet:|mailto:|gemini:|gopher:|https:|http:|news:|file:|git:|ssh:|ftp:)\ +# [^\u0000-\u001F\u007F-\u009F<>\"\\s{-}\\^⟨⟩`]+" +# command: xdg-open +# post_processing: true +# mouse: +# enabled: true +# mods: None +# binding: +# key: U +# mods: Control|Shift + +# Mouse bindings +# +# Mouse bindings are specified as a list of objects, much like the key +# bindings further below. +# +# To trigger mouse bindings when an application running within Alacritty +# captures the mouse, the `Shift` modifier is automatically added as a +# requirement. +# +# Each mouse binding will specify a: +# +# - `mouse`: +# +# - Middle +# - Left +# - Right +# - Numeric identifier such as `5` +# +# - `action` (see key bindings for actions not exclusive to mouse mode) +# +# - Mouse exclusive actions: +# +# - ExpandSelection +# Expand the selection to the current mouse cursor location. +# +# And optionally: +# +# - `mods` (see key bindings) +#mouse_bindings: +# - { mouse: Right, action: ExpandSelection } +# - { mouse: Right, mods: Control, action: ExpandSelection } +# - { mouse: Middle, mode: ~Vi, action: PasteSelection } + +# Key bindings +# +# Key bindings are specified as a list of objects. For example, this is the +# default paste binding: +# +# `- { key: V, mods: Control|Shift, action: Paste }` +# +# Each key binding will specify a: +# +# - `key`: Identifier of the key pressed +# +# - A-Z +# - F1-F24 +# - Key0-Key9 +# +# A full list with available key codes can be found here: +# https://docs.rs/glutin/*/glutin/event/enum.VirtualKeyCode.html#variants +# +# Instead of using the name of the keys, the `key` field also supports using +# the scancode of the desired key. Scancodes have to be specified as a +# decimal number. This command will allow you to display the hex scancodes +# for certain keys: +# +# `showkey --scancodes`. +# +# Then exactly one of: +# +# - `chars`: Send a byte sequence to the running application +# +# The `chars` field writes the specified string to the terminal. This makes +# it possible to pass escape sequences. To find escape codes for bindings +# like `PageUp` (`"\x1b[5~"`), you can run the command `showkey -a` outside +# of tmux. Note that applications use terminfo to map escape sequences back +# to keys. It is therefore required to update the terminfo when changing an +# escape sequence. +# +# - `action`: Execute a predefined action +# +# - ToggleViMode +# - SearchForward +# Start searching toward the right of the search origin. +# - SearchBackward +# Start searching toward the left of the search origin. +# - Copy +# - Paste +# - IncreaseFontSize +# - DecreaseFontSize +# - ResetFontSize +# - ScrollPageUp +# - ScrollPageDown +# - ScrollHalfPageUp +# - ScrollHalfPageDown +# - ScrollLineUp +# - ScrollLineDown +# - ScrollToTop +# - ScrollToBottom +# - ClearHistory +# Remove the terminal's scrollback history. +# - Hide +# Hide the Alacritty window. +# - Minimize +# Minimize the Alacritty window. +# - Quit +# Quit Alacritty. +# - ToggleFullscreen +# - SpawnNewInstance +# Spawn a new instance of Alacritty. +# - CreateNewWindow +# Create a new Alacritty window from the current process. +# - ClearLogNotice +# Clear Alacritty's UI warning and error notice. +# - ClearSelection +# Remove the active selection. +# - ReceiveChar +# - None +# +# - Vi mode exclusive actions: +# +# - Open +# Perform the action of the first matching hint under the vi mode cursor +# with `mouse.enabled` set to `true`. +# - ToggleNormalSelection +# - ToggleLineSelection +# - ToggleBlockSelection +# - ToggleSemanticSelection +# Toggle semantic selection based on `selection.semantic_escape_chars`. +# +# - Vi mode exclusive cursor motion actions: +# +# - Up +# One line up. +# - Down +# One line down. +# - Left +# One character left. +# - Right +# One character right. +# - First +# First column, or beginning of the line when already at the first column. +# - Last +# Last column, or beginning of the line when already at the last column. +# - FirstOccupied +# First non-empty cell in this terminal row, or first non-empty cell of +# the line when already at the first cell of the row. +# - High +# Top of the screen. +# - Middle +# Center of the screen. +# - Low +# Bottom of the screen. +# - SemanticLeft +# Start of the previous semantically separated word. +# - SemanticRight +# Start of the next semantically separated word. +# - SemanticLeftEnd +# End of the previous semantically separated word. +# - SemanticRightEnd +# End of the next semantically separated word. +# - WordLeft +# Start of the previous whitespace separated word. +# - WordRight +# Start of the next whitespace separated word. +# - WordLeftEnd +# End of the previous whitespace separated word. +# - WordRightEnd +# End of the next whitespace separated word. +# - Bracket +# Character matching the bracket at the cursor's location. +# - SearchNext +# Beginning of the next match. +# - SearchPrevious +# Beginning of the previous match. +# - SearchStart +# Start of the match to the left of the vi mode cursor. +# - SearchEnd +# End of the match to the right of the vi mode cursor. +# +# - Search mode exclusive actions: +# - SearchFocusNext +# Move the focus to the next search match. +# - SearchFocusPrevious +# Move the focus to the previous search match. +# - SearchConfirm +# - SearchCancel +# - SearchClear +# Reset the search regex. +# - SearchDeleteWord +# Delete the last word in the search regex. +# - SearchHistoryPrevious +# Go to the previous regex in the search history. +# - SearchHistoryNext +# Go to the next regex in the search history. +# +# - macOS exclusive actions: +# - ToggleSimpleFullscreen +# Enter fullscreen without occupying another space. +# +# - Linux/BSD exclusive actions: +# +# - CopySelection +# Copy from the selection buffer. +# - PasteSelection +# Paste from the selection buffer. +# +# - `command`: Fork and execute a specified command plus arguments +# +# The `command` field must be a map containing a `program` string and an +# `args` array of command line parameter strings. For example: +# `{ program: "alacritty", args: ["-e", "vttest"] }` +# +# And optionally: +# +# - `mods`: Key modifiers to filter binding actions +# +# - Command +# - Control +# - Option +# - Super +# - Shift +# - Alt +# +# Multiple `mods` can be combined using `|` like this: +# `mods: Control|Shift`. +# Whitespace and capitalization are relevant and must match the example. +# +# - `mode`: Indicate a binding for only specific terminal reported modes +# +# This is mainly used to send applications the correct escape sequences +# when in different modes. +# +# - AppCursor +# - AppKeypad +# - Search +# - Alt +# - Vi +# +# A `~` operator can be used before a mode to apply the binding whenever +# the mode is *not* active, e.g. `~Alt`. +# +# Bindings are always filled by default, but will be replaced when a new +# binding with the same triggers is defined. To unset a default binding, it can +# be mapped to the `ReceiveChar` action. Alternatively, you can use `None` for +# a no-op if you do not wish to receive input characters for that binding. +# +# If the same trigger is assigned to multiple actions, all of them are executed +# in the order they were defined in. +#key_bindings: +#- { key: Paste, action: Paste } +#- { key: Copy, action: Copy } +#- { key: L, mods: Control, action: ClearLogNotice } +#- { key: L, mods: Control, mode: ~Vi|~Search, chars: "\x0c" } +#- { key: PageUp, mods: Shift, mode: ~Alt, action: ScrollPageUp, } +#- { key: PageDown, mods: Shift, mode: ~Alt, action: ScrollPageDown } +#- { key: Home, mods: Shift, mode: ~Alt, action: ScrollToTop, } +#- { key: End, mods: Shift, mode: ~Alt, action: ScrollToBottom } + +# Vi Mode +#- { key: Space, mods: Shift|Control, mode: ~Search, action: ToggleViMode } +#- { key: Space, mods: Shift|Control, mode: Vi|~Search, action: ScrollToBottom } +#- { key: Escape, mode: Vi|~Search, action: ClearSelection } +#- { key: I, mode: Vi|~Search, action: ToggleViMode } +#- { key: I, mode: Vi|~Search, action: ScrollToBottom } +#- { key: C, mods: Control, mode: Vi|~Search, action: ToggleViMode } +#- { key: Y, mods: Control, mode: Vi|~Search, action: ScrollLineUp } +#- { key: E, mods: Control, mode: Vi|~Search, action: ScrollLineDown } +#- { key: G, mode: Vi|~Search, action: ScrollToTop } +#- { key: G, mods: Shift, mode: Vi|~Search, action: ScrollToBottom } +#- { key: B, mods: Control, mode: Vi|~Search, action: ScrollPageUp } +#- { key: F, mods: Control, mode: Vi|~Search, action: ScrollPageDown } +#- { key: U, mods: Control, mode: Vi|~Search, action: ScrollHalfPageUp } +#- { key: D, mods: Control, mode: Vi|~Search, action: ScrollHalfPageDown } +#- { key: Y, mode: Vi|~Search, action: Copy } +#- { key: Y, mode: Vi|~Search, action: ClearSelection } +#- { key: Copy, mode: Vi|~Search, action: ClearSelection } +#- { key: V, mode: Vi|~Search, action: ToggleNormalSelection } +#- { key: V, mods: Shift, mode: Vi|~Search, action: ToggleLineSelection } +#- { key: V, mods: Control, mode: Vi|~Search, action: ToggleBlockSelection } +#- { key: V, mods: Alt, mode: Vi|~Search, action: ToggleSemanticSelection } +#- { key: Return, mode: Vi|~Search, action: Open } +#- { key: K, mode: Vi|~Search, action: Up } +#- { key: J, mode: Vi|~Search, action: Down } +#- { key: H, mode: Vi|~Search, action: Left } +#- { key: L, mode: Vi|~Search, action: Right } +#- { key: Up, mode: Vi|~Search, action: Up } +#- { key: Down, mode: Vi|~Search, action: Down } +#- { key: Left, mode: Vi|~Search, action: Left } +#- { key: Right, mode: Vi|~Search, action: Right } +#- { key: Key0, mode: Vi|~Search, action: First } +#- { key: Key4, mods: Shift, mode: Vi|~Search, action: Last } +#- { key: Key6, mods: Shift, mode: Vi|~Search, action: FirstOccupied } +#- { key: H, mods: Shift, mode: Vi|~Search, action: High } +#- { key: M, mods: Shift, mode: Vi|~Search, action: Middle } +#- { key: L, mods: Shift, mode: Vi|~Search, action: Low } +#- { key: B, mode: Vi|~Search, action: SemanticLeft } +#- { key: W, mode: Vi|~Search, action: SemanticRight } +#- { key: E, mode: Vi|~Search, action: SemanticRightEnd } +#- { key: B, mods: Shift, mode: Vi|~Search, action: WordLeft } +#- { key: W, mods: Shift, mode: Vi|~Search, action: WordRight } +#- { key: E, mods: Shift, mode: Vi|~Search, action: WordRightEnd } +#- { key: Key5, mods: Shift, mode: Vi|~Search, action: Bracket } +#- { key: Slash, mode: Vi|~Search, action: SearchForward } +#- { key: Slash, mods: Shift, mode: Vi|~Search, action: SearchBackward } +#- { key: N, mode: Vi|~Search, action: SearchNext } +#- { key: N, mods: Shift, mode: Vi|~Search, action: SearchPrevious } + +# Search Mode +#- { key: Return, mode: Search|Vi, action: SearchConfirm } +#- { key: Escape, mode: Search, action: SearchCancel } +#- { key: C, mods: Control, mode: Search, action: SearchCancel } +#- { key: U, mods: Control, mode: Search, action: SearchClear } +#- { key: W, mods: Control, mode: Search, action: SearchDeleteWord } +#- { key: P, mods: Control, mode: Search, action: SearchHistoryPrevious } +#- { key: N, mods: Control, mode: Search, action: SearchHistoryNext } +#- { key: Up, mode: Search, action: SearchHistoryPrevious } +#- { key: Down, mode: Search, action: SearchHistoryNext } +#- { key: Return, mode: Search|~Vi, action: SearchFocusNext } +#- { key: Return, mods: Shift, mode: Search|~Vi, action: SearchFocusPrevious } + +# (Windows, Linux, and BSD only) +#- { key: V, mods: Control|Shift, mode: ~Vi, action: Paste } +#- { key: C, mods: Control|Shift, action: Copy } +#- { key: F, mods: Control|Shift, mode: ~Search, action: SearchForward } +#- { key: B, mods: Control|Shift, mode: ~Search, action: SearchBackward } +#- { key: C, mods: Control|Shift, mode: Vi|~Search, action: ClearSelection } +#- { key: Insert, mods: Shift, action: PasteSelection } +#- { key: Key0, mods: Control, action: ResetFontSize } +#- { key: Equals, mods: Control, action: IncreaseFontSize } +#- { key: Plus, mods: Control, action: IncreaseFontSize } +#- { key: NumpadAdd, mods: Control, action: IncreaseFontSize } +#- { key: Minus, mods: Control, action: DecreaseFontSize } +#- { key: NumpadSubtract, mods: Control, action: DecreaseFontSize } + +# (Windows only) +#- { key: Return, mods: Alt, action: ToggleFullscreen } + +# (macOS only) +#- { key: K, mods: Command, mode: ~Vi|~Search, chars: "\x0c" } +#- { key: K, mods: Command, mode: ~Vi|~Search, action: ClearHistory } +#- { key: Key0, mods: Command, action: ResetFontSize } +#- { key: Equals, mods: Command, action: IncreaseFontSize } +#- { key: Plus, mods: Command, action: IncreaseFontSize } +#- { key: NumpadAdd, mods: Command, action: IncreaseFontSize } +#- { key: Minus, mods: Command, action: DecreaseFontSize } +#- { key: NumpadSubtract, mods: Command, action: DecreaseFontSize } +#- { key: V, mods: Command, action: Paste } +#- { key: C, mods: Command, action: Copy } +#- { key: C, mods: Command, mode: Vi|~Search, action: ClearSelection } +#- { key: H, mods: Command, action: Hide } +#- { key: H, mods: Command|Alt, action: HideOtherApplications } +#- { key: M, mods: Command, action: Minimize } +#- { key: Q, mods: Command, action: Quit } +#- { key: W, mods: Command, action: Quit } +#- { key: N, mods: Command, action: SpawnNewInstance } +#- { key: F, mods: Command|Control, action: ToggleFullscreen } +#- { key: F, mods: Command, mode: ~Search, action: SearchForward } +#- { key: B, mods: Command, mode: ~Search, action: SearchBackward } + +#debug: +# Display the time it takes to redraw each frame. +#render_timer: false + +# Keep the log file after quitting Alacritty. +#persistent_logging: false + +# Log level +# +# Values for `log_level`: +# - Off +# - Error +# - Warn +# - Info +# - Debug +# - Trace +#log_level: Warn + +# Print all received window events. +#print_events: false diff --git a/config/alacritty/themes b/config/alacritty/themes new file mode 160000 index 0000000..3c808cb --- /dev/null +++ b/config/alacritty/themes @@ -0,0 +1 @@ +Subproject commit 3c808cbb4f9c87be43ba5241bc57373c793d2f17 diff --git a/config/foot/foot.ini b/config/foot/foot.ini new file mode 100644 index 0000000..dc7c809 --- /dev/null +++ b/config/foot/foot.ini @@ -0,0 +1,197 @@ +# -*- conf -*- + +# shell=$SHELL (if set, otherwise user's default shell from /etc/passwd) +# term=foot (or xterm-256color if built with -Dterminfo=disabled) +# login-shell=no + +include=~/.config/foot/themes/catppuccin/catppuccin-macchiato.conf + +# app-id=foot +# title=foot +# locked-title=no + +font=JetBrainsMono NF:style=Regular:size=11 +font-bold=JetBrainsMono NF:style=Bold:size=11 +font-italic=JetBrainsMono NF:style=Italic:size=11 +font-bold-italic=JetBrainsMono NF:style=Bold Italic:size=11 +# line-height= +# letter-spacing=0 +# horizontal-letter-offset=0 +# vertical-letter-offset=0 +# underline-offset= +# box-drawings-uses-font-glyphs=no +# dpi-aware=auto + +# initial-window-size-pixels=700x500 # Or, +# initial-window-size-chars= +# initial-window-mode=windowed +pad=10x10 +# resize-delay-ms=100 + +# notify=notify-send -a ${app-id} -i ${app-id} ${title} ${body} + +# bold-text-in-bright=no +# word-delimiters=,│`|:"'()[]{}<> +# selection-target=primary +# workers= + +[environment] +# name=value + +[bell] +# urgent=no +# notify=no +# command= +# command-focused=no + +[scrollback] +# lines=1000 +# multiplier=3.0 +# indicator-position=relative +# indicator-format= + +[url] +# launch=xdg-open ${url} +# label-letters=sadfjklewcmpgh +# osc8-underline=url-mode +# protocols=http, https, ftp, ftps, file, gemini, gopher +# uri-characters=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.,~:;/?#@!$&%*+="'()[] + +[cursor] +# style=block +# color= +# blink=no +# beam-thickness=1.5 +# underline-thickness= + +[mouse] +# hide-when-typing=no +# alternate-scroll-mode=yes + +[colors] +alpha=0.9 +# foreground=dcdccc +# background=111111 + +## Normal/regular colors (color palette 0-7) +# regular0=222222 # black +# regular1=cc9393 # red +# regular2=7f9f7f # green +# regular3=d0bf8f # yellow +# regular4=6ca0a3 # blue +# regular5=dc8cc3 # magenta +# regular6=93e0e3 # cyan +# regular7=dcdccc # white + +## Bright colors (color palette 8-15) +# bright0=666666 # bright black +# bright1=dca3a3 # bright red +# bright2=bfebbf # bright green +# bright3=f0dfaf # bright yellow +# bright4=8cd0d3 # bright blue +# bright5=fcace3 # bright magenta +# bright6=b3ffff # bright cyan +# bright7=ffffff # bright white + +## dimmed colors (see foot.ini(5) man page) +# dim0= +# ... +# dim7= + +## The remaining 256-color palette +# 16 = <256-color palette #16> +# ... +# 255 = <256-color palette #255> + +## Misc colors +# selection-foreground= +# selection-background= +# jump-labels= # black-on-yellow +# scrollback-indicator= # black-on-bright-blue +# search-box-no-match= # black-on-red +# search-box-match= # black-on-yellow +# urls= + +[csd] +preferred=none +# size=26 +# font= +# color= +# hide-when-typing=no +# border-width=0 +# border-color= +# button-width=26 +# button-color= +# button-minimize-color= +# button-maximize-color= +# button-close-color= + +[key-bindings] +# scrollback-up-page=Shift+Page_Up +# scrollback-up-half-page=none +# scrollback-up-line=none +# scrollback-down-page=Shift+Page_Down +# scrollback-down-half-page=none +# scrollback-down-line=none +# clipboard-copy=Control+Shift+c XF86Copy +# clipboard-paste=Control+Shift+v XF86Paste +# primary-paste=Shift+Insert +# search-start=Control+Shift+r +# font-increase=Control+plus Control+equal Control+KP_Add +# font-decrease=Control+minus Control+KP_Subtract +# font-reset=Control+0 Control+KP_0 +# spawn-terminal=Control+Shift+n +# minimize=none +# maximize=none +# fullscreen=none +# pipe-visible=[sh -c "xurls | fuzzel | xargs -r firefox"] none +# pipe-scrollback=[sh -c "xurls | fuzzel | xargs -r firefox"] none +# pipe-selected=[xargs -r firefox] none +# show-urls-launch=Control+Shift+u +# show-urls-copy=none +# show-urls-persistent=none +# prompt-prev=Control+Shift+z +# prompt-next=Control+Shift+x +# unicode-input=none +# noop=none + +[search-bindings] +# cancel=Control+g Control+c Escape +# commit=Return +# find-prev=Control+r +# find-next=Control+s +# cursor-left=Left Control+b +# cursor-left-word=Control+Left Mod1+b +# cursor-right=Right Control+f +# cursor-right-word=Control+Right Mod1+f +# cursor-home=Home Control+a +# cursor-end=End Control+e +# delete-prev=BackSpace +# delete-prev-word=Mod1+BackSpace Control+BackSpace +# delete-next=Delete +# delete-next-word=Mod1+d Control+Delete +# extend-to-word-boundary=Control+w +# extend-to-next-whitespace=Control+Shift+w +# clipboard-paste=Control+v Control+Shift+v Control+y XF86Paste +# primary-paste=Shift+Insert +# unicode-input=none + +[url-bindings] +# cancel=Control+g Control+c Control+d Escape +# toggle-url-visible=t + +[text-bindings] +# \x03=Mod4+c # Map Super+c -> Ctrl+c + +[mouse-bindings] +# selection-override-modifiers=Shift +# primary-paste=BTN_MIDDLE +# select-begin=BTN_LEFT +# select-begin-block=Control+BTN_LEFT +# select-extend=BTN_RIGHT +# select-extend-character-wise=Control+BTN_RIGHT +# select-word=BTN_LEFT-2 +# select-word-whitespace=Control+BTN_LEFT-2 +# select-row=BTN_LEFT-3 + +# vim: ft=dosini diff --git a/config/foot/themes/catppuccin b/config/foot/themes/catppuccin new file mode 160000 index 0000000..79ab526 --- /dev/null +++ b/config/foot/themes/catppuccin @@ -0,0 +1 @@ +Subproject commit 79ab526a1428318dba793d58afd1d2545ed3cb7c diff --git a/config/tmux/tmux.conf b/config/tmux/tmux.conf new file mode 100644 index 0000000..da8fc15 --- /dev/null +++ b/config/tmux/tmux.conf @@ -0,0 +1,72 @@ +## Base Config +set -g default-terminal "screen-256color" +set -g mouse on +set -g history-limit 100000 +set -g base-index 1 # start windows in 1 +set-window-option -g pane-base-index 1 +set-window-option -g mode-keys vi +unbind -T copy-mode-vi Space; #Default for begin-selection +unbind -T copy-mode-vi Enter; #Default for copy-selection +bind -T copy-mode-vi v send-keys -X begin-selection +bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "wl-copy" +set -g -a terminal-overrides ',*:Ss=\E[%p1%d q:Se=\E[2 q' +set -sg escape-time 0 + +## Keybindings +unbind C-b +unbind C-q +set -g prefix C-q + +# Reload Config +unbind R +bind R source-file ~/.tmux.conf \; display "Reloaded ~/.tmux.conf" + +# Copy Mode +unbind [ +bind V copy-mode + +# Panes +unbind v +unbind s +unbind % # Split vertically +unbind '"' # Split horizontally + +bind s split-window -h -c "#{pane_current_path}" +bind v split-window -v -c "#{pane_current_path}" + +bind -r m resize-pane -Z # maximize pane + +# Windows +unbind r +unbind n +unbind h +unbind l + +bind r command-prompt "rename-window '%%'" +bind n new-window -c "#{pane_current_path}" +bind h previous-window +bind l next-window + +## Plugins +run -b '~/.tmux/plugins/tpm/tpm' + +set -g @plugin 'catppuccin/tmux' +# set -g @plugin 'rwxd/catppuccin-tmux' + +set -g @plugin 'tmux-plugins/tmux-copycat'` +set -g @plugin 'laktak/extrakto' +set -g @plugin 'christoomey/vim-tmux-navigator' +set -g @plugin 'sainnhe/tmux-fzf' + +set -g @plugin 'tmux-plugins/tpm' + +## Plugin Config +set -g @catppuccin_flavour 'macchiato' +set -g @catppuccin_window_tabs_enabled on # or off to disable window_tabs + +TMUX_FZF_LAUNCH_KEY="w" +TMUX_FZF_OPTIONS="-p -w 80% -h 60% -m" + +# Tmux Managment +bind-key "F" run-shell -b "$HOME/.tmux/plugins/tmux-fzf/scripts/session.sh switch" +bind-key "f" run-shell -b "$HOME/.tmux/plugins/tmux-fzf/scripts/window.sh switch" diff --git a/config/zsh/config/aliases.zsh b/config/zsh/config/aliases.zsh index 2944fc3..e67134f 100644 --- a/config/zsh/config/aliases.zsh +++ b/config/zsh/config/aliases.zsh @@ -17,32 +17,35 @@ alias \ # Exa for listing alias \ - ls='exa -lh --color=always --icons --git ' \ - la='exa -alh --color=always --icons --git ' \ - ld='exa -la --no-permissions --no-filesize --no-time --no-time --no-user' + ls='exa -lh --color=always --icons --git ' \ + la='exa -alh --color=always --icons --git ' \ + ld='exa -la --no-permissions --no-filesize --no-time --no-time --no-user' # Pacman alias \ - pkgu="paru -Syu --removemake --cleanafter --sudoloop --color always" \ - pkgi="paru --skipreview --removemake --cleanafter --sudoloop --color always --needed" \ - pkgr="paru -R" \ - cleanup='sudo pacman -Rns $(pacman -Qtdq)' \ - pkglast="expac --timefmt='%Y-%m-%d %T' '%l\t%n %v' | sort | tail -25 | nl" + pkgu="paru -Syu --removemake --cleanafter --sudoloop --color always" \ + pkgi="paru --skipreview --removemake --cleanafter --sudoloop --color always --needed" \ + pkgr="paru -R" \ + cleanup='sudo pacman -Rns $(pacman -Qtdq)' \ + pkglast="expac --timefmt='%Y-%m-%d %T' '%l\t%n %v' | sort | tail -25 | nl" alias \ - reload='exec $SHELL -l' \ + reload='exec $SHELL -l' \ -# Query Stuff + # Query Stuff alias \ - ip='ip -human -color -brief addr' \ - df='df -h' + ip='ip -human -color -brief addr' \ + df='df -h' -## Lofi +## Music Streams lofi_url="https://youtu.be/jfKfPfyJRdk" +nintendo_url="https://youtu.be/Ns_uXoOJ7iw" alias \ - lofi='celluloid "$lofi_url"& ; disown %1' \ - lofi-bg='ts lofi -d "mpv --no-video $lofi_url"' + music-lofi='celluloid "$lofi_url" &>/dev/null &!' \ + music-lofi-bg='ts lofi -d "mpv --no-video $lofi_url"' \ + music-ninten='celluloid "$nintendo_url" &>/dev/null &!' \ + music-ninten-bg='ts lofi -d "mpv --no-video $nintendo_url"' #--------------------------------------------------------------------# # Global # diff --git a/config/zsh/config/functions.zsh b/config/zsh/functions/functions.zsh similarity index 62% rename from config/zsh/config/functions.zsh rename to config/zsh/functions/functions.zsh index 9bb9d6d..0aa32cd 100644 --- a/config/zsh/config/functions.zsh +++ b/config/zsh/functions/functions.zsh @@ -36,18 +36,6 @@ pvenv() { source "$dir/bin/activate" } -# tm - create new tmux session, or switch to existing one. Works from within tmux too. (@bag-man) -# `tm` will allow you to select your tmux session via fzf. -# `tm irc` will attach to the irc session (if it exists), else it will create it. - -tm() { - [[ -n "$TMUX" ]] && change="switch-client" || change="attach-session" - if [ $1 ]; then - tmux $change -t "$1" 2>/dev/null || (tmux new-session -d -s $1 && tmux $change -t "$1"); return - fi - session=$(tmux list-sessions -F "#{session_name}" 2>/dev/null | fzf --select-1 --exit-0) && tmux $change -t "$session" || echo "No sessions found." -} - # Print bottlenecks profzsh() { shell=${1-$SHELL} diff --git a/config/zsh/functions/tmux.zsh b/config/zsh/functions/tmux.zsh new file mode 100644 index 0000000..4a6736d --- /dev/null +++ b/config/zsh/functions/tmux.zsh @@ -0,0 +1,29 @@ +SEPARATOR=" │ " +FZF_SEPARATOR="│" # Same character, without whitespaces + +format_values() { + values="$1" + shift + divider="$1" + shift + echo -e "$(echo "$values" | column --table --separator $divider --output-separator $SEPARATOR)" +} + +tmux_switch_or_create() { + target=$1 + [[ -n "$TMUX" ]] && change="switch-client" || change="attach-session" + + tmux $change -t "$target" 2>/dev/null || (tmux new-session -d -s $target && tmux $change -t "$target"); return +} + +# tm - create new tmux session, or switch to existing one. Works from within tmux too. (@bag-man) +# `tm` will allow you to select your tmux session via fzf. +# `tm irc` will attach to the irc session (if it exists), else it will create it. + +tm() { + [[ -n "$TMUX" ]] && change="switch-client" || change="attach-session" + if [ $1 ]; then + tmux $change -t "$1" 2>/dev/null || (tmux new-session -d -s $1 && tmux $change -t "$1"); return + fi + session=$(tmux list-sessions -F "#{session_name}" 2>/dev/null | fzf --exit-0 --select-1) && tmux $change -t "$session" || echo "No sessions found." +} diff --git a/config/zsh/zprofile b/config/zsh/zprofile index 55cf298..04cf667 100755 --- a/config/zsh/zprofile +++ b/config/zsh/zprofile @@ -36,3 +36,5 @@ update_path "$PYENV_ROOT/bin" . "$HOME/.cargo/env" eval "$(pyenv init --path)" + +tmux new-session -d "default" diff --git a/config/Gnome Extensions b/exports/Gnome Extensions similarity index 100% rename from config/Gnome Extensions rename to exports/Gnome Extensions diff --git a/setup.sh b/setup.sh index a149e57..b284b2a 100755 --- a/setup.sh +++ b/setup.sh @@ -28,7 +28,7 @@ create() { dir_name="$(basename "$dir")" if [[ ! -d "$dir" ]]; then echo -e "Creating directory for ${BLD}${BLU}'$dir_name'${RST}..." - mkdir -p "$dir" && sleep 2 + mkdir -p "$dir" && sleep 0.3 fi } @@ -38,14 +38,14 @@ backup() { if [[ -e "$file" ]] && [[ ! -e "$backup_file" ]]; then echo "Backing up ${BLD}${BLU}$file${RST} to ${BLD}${CYN}$backup_file${RST}..." - cp -r "$file" "$backup_file" && sleep 2 + cp -r "$file" "$backup_file" && sleep 0.3 fi } symlink() { local dootsfile="$1" target_dir="$2" - echo -e "Symlinking ${BLD}${BLU}$dootsfile${RST} to ${BLD}${CYN}$target_dir${RST}..." - ln -sf "$dootsfile" "$target_dir" && sleep 2 + echo -e "Symlinking ${BLD}${BLU}$dootsfile${RST} to ${BLD}${GRN}$target_dir${RST}..." + ln -sf "$dootsfile" "$target_dir" && sleep 0.3 } setup() { @@ -53,7 +53,7 @@ setup() { echo "Fetching Dots from the source..." create "$DOTS" && cd "$_" || return git clone --recurse-submodules "$REPO" "$(pwd)" - source ./config/zsh/functions/colors.zsh && define_colors + source "$DOTS/config/zsh/config/colors.zsh" && define_colors # backup files first dirs=("$CONFIG" "$BINS" "$THEMES" "$ICONS") for dir in "${dirs[@]}"; do @@ -73,7 +73,8 @@ setup() { main() { setup - source ./config/zsh/functions/colors.zsh && define_colors + source "$DOTS/config/zsh/config/colors.zsh" && define_colors + for file in ./setup/*; do # shellcheck disable=all source "$file" diff --git a/setup/config b/setup/config new file mode 100755 index 0000000..579b2d7 --- /dev/null +++ b/setup/config @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +echo -e "\n${BLD}${SUL}${GRN}Setting up config...${RST}\n" + +original_pwd="$(pwd)" +cd "$DOTS/config" || exit + +readarray -t configs < <( + fd -d 1 \ + --exclude "*.old" \ + --exclude "create*" \ + --exclude "tmux" +) + +for dot in "${configs[@]}"; do + symlink "$(pwd)/$dot" "${CONFIG}" +done + +cd "$original_pwd" || exit diff --git a/setup/tmux b/setup/tmux new file mode 100644 index 0000000..b235b50 --- /dev/null +++ b/setup/tmux @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +echo -e "\n${BLD}${SUL}${GRN}Setting up tmux...${RST}\n" + +setup_zsh() { + symlink "$DOTS/config/tmux/tmux.conf" "$HOME"/.tmux.conf +} + +setup_zsh diff --git a/setup/zsh b/setup/zsh index 929e403..ec20763 100755 --- a/setup/zsh +++ b/setup/zsh @@ -1,5 +1,7 @@ #!/usr/bin/env bash +echo -e "\n${BLD}${SUL}${GRN}Setting up ZSH...${RST}\n" + setup_zsh() { backup "$HOME/.zshenv" create "$HOME/.local/state/zsh/"