diff --git a/.Xresources b/.Xresources index bc76d6b..a1cca43 100644 --- a/.Xresources +++ b/.Xresources @@ -19,28 +19,6 @@ #define CYAN2 #9AEDFE #define ORANGE #FFB86C -! Regular DPI Parameters -#define DPI 96 -#define BAR_HEIGHT 25 -#define MODULE_MARGIN 2 -#define TRAY_MAXSIZE 15 -#define TRAY_SCALE 1 -#define BORDER_SIZE 2 -#define INNER_GAPS 20 -#define OUTER_GAPS 10 -#define MAXLEN 75 - -! ! HiDPI Parameters -! #define DPI 192 -! #define BAR_HEIGHT 50 -! #define MODULE_MARGIN 1 -! #define TRAY_MAXSIZE 30 -! #define TRAY_SCALE 1 -! #define BORDER_SIZE 4 -! #define INNER_GAPS 40 -! #define OUTER_GAPS 20 -! #define MAXLEN 45 - ! Dracula Xresources Palette *.foreground: FOREGROUND *.background: BACKGROUND @@ -62,13 +40,26 @@ *.color15: WHITE1 *.color16: ORANGE +! System76 Oryx Pro 7 DPI Parameters +#define DPI 96 +#define BAR_HEIGHT 25 +#define MODULE_MARGIN 1 +#define MODULE_PADDING 2 +#define TRAY_MAXSIZE 20 +#define TRAY_SCALE 1 +#define BORDER_SIZE 2 +#define INNER_GAPS 20 +#define OUTER_GAPS 10 +#define MAXLEN 50 +#define CURSOR_SIZE 16 + ! DWM -dwm.normbgcolor: BACKGROUND dwm.normbordercolor: BLACK2 +dwm.normbgcolor: BACKGROUND dwm.normfgcolor: FOREGROUND -dwm.selfgcolor: BACKGROUND dwm.selbordercolor: PURPLE1 dwm.selbgcolor: PURPLE1 +dwm.selfgcolor: BACKGROUND dwm.borderpx: BORDER_SIZE dwm.gappih: INNER_GAPS dwm.gappiv: INNER_GAPS @@ -83,7 +74,7 @@ polybar.tray-scale: TRAY_SCALE polybar.maxlen: MAXLEN ! Dunst -dunst.geometry-x: OUTER_GAPS +dunst.geometry-x: 0 dunst.geometry-y: BAR_HEIGHT dunst.sep-height: BORDER_SIZE dunst.padding: OUTER_GAPS @@ -92,13 +83,14 @@ dunst.max-icon-size: DPI dunst.frame-width: BORDER_SIZE dunst.low-background: BACKGROUND dunst.low-foreground: FOREGROUND -dunst.low-frame: PURPLE1 +dunst.low-frame: GREEN1 dunst.normal-background: BACKGROUND dunst.normal-foreground: FOREGROUND -dunst.normal-frame: PURPLE1 +dunst.normal-frame: GREEN1 dunst.critical-background: RED1 dunst.critical-foreground: FOREGROUND -dunst.critical-frame: PURPLE1 +dunst.critical-frame: GREEN1 ! Display Scaling *.dpi: DPI +Xcursor.size: CURSOR_SIZE diff --git a/.bashrc b/.bashrc index f805e5e..9983e26 100644 --- a/.bashrc +++ b/.bashrc @@ -116,15 +116,16 @@ if ! shopt -oq posix; then fi fi -# Run neofetch when opening terminal -neofetch - # ALIASES alias config='/usr/bin/git --git-dir=$HOME/.cfg/ --work-tree=$HOME' -# EXPORTS -export EDITOR="code -w" +# ENVIRONMENT VARIABLES +export EDITOR="emacs" export TERM=xterm-256color +export QT_STYLE_OVERRIDE=kvantum +export XDG_CONFIG_HOME=$HOME/.config -# Starship Prompt -eval "$(starship init bash)" +# Greeting +clear +pokemon-colorscripts -r +echo "bash shell" diff --git a/.config/MangoHud/MangoHud.conf b/.config/MangoHud/MangoHud.conf index 2af54b1..31122aa 100644 --- a/.config/MangoHud/MangoHud.conf +++ b/.config/MangoHud/MangoHud.conf @@ -1,26 +1,45 @@ -################### File Generated by GOverlay ################### +toggle_fps_limit=F1 - -cpu_stats -cpu_temp -cpu_color=2e97cb -cpu_text=CPU +legacy_layout=false gpu_stats gpu_temp gpu_core_clock gpu_mem_clock -vulkan_driver -gpu_name -gpu_color=2e9762 +gpu_power +gpu_load_change +gpu_load_value=50,90 +gpu_load_color=FFFFFF,FF7800,CC0000 gpu_text=GPU +cpu_stats +cpu_temp +cpu_power +cpu_mhz +cpu_load_change +core_load_change +cpu_load_value=50,90 +cpu_load_color=FFFFFF,FF7800,CC0000 +cpu_color=2e97cb +cpu_text=CPU +io_stats +io_read +io_write +io_color=a491d3 +swap vram vram_color=ad64c1 ram ram_color=c26693 -io_color=a491d3 +fps +engine_color=eb5b5b +gpu_name +gpu_color=2e9762 +vulkan_driver +wine +wine_color=eb5b5b frame_timing=1 frametime_color=00ff00 +media_player_color=ffffff background_alpha=0.4 font_size=24 background_color=020202 @@ -28,5 +47,5 @@ position=top-left text_color=ffffff toggle_hud=Shift_R+F12 toggle_logging=Shift_L+F2 -output_file=/home/sravan/mangohud_log_ +output_folder=/home/sravan media_player_name=spotify diff --git a/.config/alacritty/alacritty.yml b/.config/alacritty/alacritty.yml new file mode 100644 index 0000000..011bec4 --- /dev/null +++ b/.config/alacritty/alacritty.yml @@ -0,0 +1,583 @@ +# 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) + # + # Specified in number of columns/lines, not pixels. + # If both are `0`, this setting is ignored. + #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: 5 + y: 5 + + # 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, but no title bar buttons + #decorations: full + + # Startup Mode (changes require restart) + # + # Values for `startup_mode`: + # - Windowed + # - Maximized + # - Fullscreen + # + # Values for `startup_mode` (macOS only): + # - SimpleFullscreen + #startup_mode: Windowed + + # Window title + #title: Alacritty + + # 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 + +# Number of lines the viewport will move for every line scrolled when +# scrollback is enabled (history > 0). +#multiplier: 3 + +# Font configuration +font: + # Normal (roman) font face + normal: + # Font family + # + # Default: + # - (macOS) Menlo + # - (Linux/BSD) monospace + # - (Windows) Consolas + family: Fira Code Nerd Font + + # The `style` can be specified to pick a specific face. + style: Regular + + # Bold font face + bold: + # Font family + # + # If the bold family is not specified, it will fall back to the + # value specified for the normal font. + family: Fira Code Nerd Font + + # 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: 8.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 upwards. + #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` + # + # macOS >= 10.14.x: + # + # If the font quality on non-retina display looks bad then set + # `use_thin_strokes` to `true` and enable font smoothing by running the + # following command: + # `defaults write -g CGFontRenderingFontSmoothingDisabled -bool NO` + # + # This is a global setting and will require a log out or restart to take + # effect. + #use_thin_strokes: true + +# If `true`, bold text is drawn using the bright color variants. +#draw_bold_text_with_bright_colors: false + +colors: + # Default colors + primary: + background: "0x22212c" + foreground: "0xf8f8f2" + + # 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: '0x9a9a9a' + #bright_foreground: '0xffffff' + + # Cursor colors + # + # Colors which should be used to draw the terminal cursor. If these are unset, + # the cursor color will be the inverse of the cell color. + cursor: + text: "0x454158" + cursor: "0xf8f8f2" + + # Selection colors + # + # Colors which should be used to draw the selection area. If selection + # background is unset, selection color will be the inverse of the cell colors. + # If only text is unset the cell text color will remain the same. + selection: + text: "0xf8f8f2" + background: "0x454158" + + # Normal colors + normal: + black: "0x22212c" + red: "0xff9580" + green: "0x8aff80" + yellow: "0xffff80" + blue: "0x9580ff" + magenta: "0xff80bf" + cyan: "0x80ffea" + white: "0xf8f8f2" + + # Bright colors + bright: + black: "0x22212c" + red: "0xffaa99" + green: "0xa2ff99" + yellow: "0xffff99" + blue: "0xaa99ff" + magenta: "0xff99cc" + cyan: "0x99ffee" + white: "0xffffff" + + # 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: '0xff00ff' }` + # + indexed_colors: [] + +# Bell +# +# The bell is rung every time the BEL control character is received. +#bell: + # Visual Bell Animation + # + # Animation effect for flashing the screen when the visual bell is rung. + # + # Values for `animation`: + # - Ease + # - EaseOut + # - EaseOutSine + # - EaseOutQuad + # - EaseOutCubic + # - EaseOutQuart + # - EaseOutQuint + # - EaseOutExpo + # - EaseOutCirc + # - Linear + #animation: EaseOutExpo + + # Duration of the visual bell flash in milliseconds. A `duration` of `0` will + # disable the visual bell animation. + #duration: 0 + + # Visual bell animation color. + #color: '#ffffff' + + # Bell Command + # + # This program is executed whenever the bell is rung. + # + # When set to `command: None`, no command will be executed. + # + # Example: + # command: + # program: notify-send + # args: ["Hello, World!"] + # + #command: None + +# Background opacity +# +# Window opacity as a floating point number from `0.0` to `1.0`. +# The value `0.0` is completely transparent and `1.0` is opaque. +# background_opacity: 1.0 +background_opacity: 0.8 + +#selection: +#semantic_escape_chars: ",│`|:\"' ()[]{}<>\t" + +# When set to `true`, selected text will be copied to the primary clipboard. +#save_to_clipboard: false + +# Allow terminal applications to change Alacritty's window title. +#dynamic_title: true + +cursor: + # Cursor style + # + # Values for `style`: + # - ▇ Block + # - _ Underline + # - | Beam + style: Beam + + # If this is `true`, the cursor will be rendered as a hollow box when the + # window is not focused. + #unfocused_hollow: true + +# 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: /usr/bin/fish + # args: + # - -l + # - -c + # - "tmux attach || 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 + +# WinPTY backend (Windows only) +# +# Alacritty defaults to using the newer ConPTY backend if it is available, +# since it resolves a lot of bugs and is quite a bit faster. If it is not +# available, the the WinPTY backend will be used instead. +# +# Setting this option to `true` makes Alacritty use the legacy WinPTY backend, +# even if the ConPTY backend is available. +#winpty_backend: false + +# Send ESC (\x1b) before characters when alt is pressed. +#alt_send_esc: true + +# mouse: + # Click settings + # + # The `double_click` and `triple_click` settings control the time + # alacritty should wait for accepting multiple clicks as one double + # or triple click. + #double_click: { threshold: 300 } + #triple_click: { threshold: 300 } + + # If this is `true`, the cursor is temporarily hidden when typing. + #hide_when_typing: false + +# Regex hints +# +# Terminal hints can be used to find text in the visible part of the terminal +# and pipe it to other applications. +#hints: + # Keys used for the hint labels. + #alphabet: "jfkdls;ahgurieowpq" + + # List with all available hints + # + # Each hint must have a `regex` and either an `action` or a `command` field. + # The fields `mouse`, `binding` and `post_processing` are optional. + # + # The fields `command`, `binding.key`, `binding.mods` 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: "(mailto:|gemini:|gopher:|https:|http:|news:|file:|git:|ssh:|ftp:)\ + # [^\u0000-\u001F\u007F-\u009F<>\"\\s{-}\\^⟨⟩`]+" + # command: xdg-open + # post_processing: true + # mouse: + # enabled: true + # mods: None + # binding: + # key: U + # mods: Control|Shift + +# Mouse bindings +# +# Mouse bindings are specified as a list of objects, much like the key +# bindings further below. +# +# To trigger mouse bindings when an application running within Alacritty captures the mouse, the +# `Shift` modifier is automatically added as a requirement. +# +# Each mouse binding will specify a: +# +# - `mouse`: +# +# - Middle +# - Left +# - Right +# - Numeric identifier such as `5` +# +# - `action` (see key bindings) +# +# And optionally: +# +# - `mods` (see key bindings) +#mouse_bindings: +# - { mouse: Middle, action: PasteSelection } + +# Key bindings +# +# Key bindings are specified as a list of objects. For example, this is the +# default paste binding: +# +# `- { key: V, mods: Control|Shift, action: Paste }` +# +# Each key binding will specify a: +# +# - `key`: Identifier of the key pressed +# +# - A-Z +# - F1-F24 +# - Key0-Key9 +# +# A full list with available key codes can be found here: +# https://docs.rs/glutin/*/glutin/event/enum.VirtualKeyCode.html#variants +# +# Instead of using the name of the keys, the `key` field also supports using +# the scancode of the desired key. Scancodes have to be specified as a +# decimal number. This command will allow you to display the hex scancodes +# for certain keys: +# +# `showkey --scancodes`. +# +# Then exactly one of: +# +# - `chars`: Send a byte sequence to the running application +# +# The `chars` field writes the specified string to the terminal. This makes +# it possible to pass escape sequences. To find escape codes for bindings +# like `PageUp` (`"\x1b[5~"`), you can run the command `showkey -a` outside +# of tmux. Note that applications use terminfo to map escape sequences back +# to keys. It is therefore required to update the terminfo when changing an +# escape sequence. +# +# - `action`: Execute a predefined action +# +# - Copy +# - Paste +# - PasteSelection +# - IncreaseFontSize +# - DecreaseFontSize +# - ResetFontSize +# - ScrollPageUp +# - ScrollPageDown +# - ScrollLineUp +# - ScrollLineDown +# - ScrollToTop +# - ScrollToBottom +# - ClearHistory +# - Hide +# - Minimize +# - Quit +# - ToggleFullscreen +# - SpawnNewInstance +# - ClearLogNotice +# - ReceiveChar +# - None +# +# (macOS only): +# - ToggleSimpleFullscreen: Enters fullscreen without occupying another space +# +# - `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 +# - Alt +# +# 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 +# at once. +#key_bindings: +# (Windows, Linux, and BSD only) +#- { key: V, mods: Control|Shift, action: Paste } +#- { key: C, mods: Control|Shift, action: Copy } +#- { key: Insert, mods: Shift, action: PasteSelection } +#- { key: Key0, mods: Control, action: ResetFontSize } +#- { key: Equals, mods: Control, action: IncreaseFontSize } +#- { key: Add, mods: Control, action: IncreaseFontSize } +#- { key: Subtract, mods: Control, action: DecreaseFontSize } +#- { key: Minus, mods: Control, action: DecreaseFontSize } + +# (Windows only) +#- { key: Return, mods: Alt, action: ToggleFullscreen } + +# (macOS only) +#- { key: Key0, mods: Command, action: ResetFontSize } +#- { key: Equals, mods: Command, action: IncreaseFontSize } +#- { key: Add, mods: Command, action: IncreaseFontSize } +#- { key: Minus, mods: Command, action: DecreaseFontSize } +#- { key: K, mods: Command, action: ClearHistory } +#- { key: K, mods: Command, chars: "\x0c" } +#- { key: V, mods: Command, action: Paste } +#- { key: C, mods: Command, action: Copy } +#- { key: H, mods: Command, action: Hide } +#- { key: M, mods: Command, action: Minimize } +#- { key: Q, mods: Command, action: Quit } +#- { key: W, mods: Command, action: Quit } +#- { key: F, mods: Command|Control, action: ToggleFullscreen } + +#- { key: Paste, action: Paste } +#- { key: Copy, action: Copy } +#- { key: L, mods: Control, action: ClearLogNotice } +#- { key: L, mods: Control, chars: "\x0c" } +#- { key: PageUp, mods: Shift, action: ScrollPageUp, mode: ~Alt } +#- { key: PageDown, mods: Shift, action: ScrollPageDown, mode: ~Alt } +#- { key: Home, mods: Shift, action: ScrollToTop, mode: ~Alt } +#- { key: End, mods: Shift, action: ScrollToBottom, mode: ~Alt } + +#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`: +# - None +# - Error +# - Warn +# - Info +# - Debug +# - Trace +#log_level: Warn + +# Print all received window events. +#print_events: false diff --git a/.config/autorandr/postswitch b/.config/autorandr/postswitch new file mode 100755 index 0000000..3f4c85a --- /dev/null +++ b/.config/autorandr/postswitch @@ -0,0 +1,3 @@ +#!/bin/bash +/usr/bin/nitrogen --restore # Restore wallpaper +/home/sravan/.scripts/session.sh --restart # Restart dwm diff --git a/.config/betterlockscreenrc b/.config/betterlockscreenrc new file mode 100644 index 0000000..a2e61f6 --- /dev/null +++ b/.config/betterlockscreenrc @@ -0,0 +1,41 @@ +display_on=0 +span_image=false +lock_timeout=300 +fx_list=(dim blur dimblur pixel dimpixel color) +dim_level=40 +blur_level=1 +pixel_scale=10,1000 +solid_color=333333 +wallpaper_cmd="feh --bg-fill" +# i3lockcolor_bin="i3lock-color" # Manually set command for i3lock-color + +loginbox=282a36ff +loginshadow=282a36ff +locktext="Enter password to unlock..." +font="sans-serif" +ringcolor=44475aff +insidecolor=00000000 +separatorcolor=00000000 +ringvercolor=50fa7bff +insidevercolor=50fa7bff +ringwrongcolor=ff5555ff +insidewrongcolor=ff5555ff +timecolor=f8f8f2ff +time_format="%X" +greetercolor=f8f8f2ff +layoutcolor=f8f8f2ff +keyhlcolor=bd93f9ff +bshlcolor=8be9fdff +verifcolor=50fa7bff +wrongcolor=ff5555ff +modifcolor=ff5555ff +bgcolor=282a36ff + +prelock() { + /home/sravan/.scripts/deadd.sh --pause +} + +# custom postlock +postlock() { + /home/sravan/.scripts/deadd.sh --unpause +} diff --git a/.config/conky/conky-shcts b/.config/conky/conky-shcts new file mode 100644 index 0000000..adaaa59 --- /dev/null +++ b/.config/conky/conky-shcts @@ -0,0 +1,95 @@ +conky.config = { + background = true, + update_interval = 1, + + cpu_avg_samples = 2, + net_avg_samples = 2, + temperature_unit = 'celsius', + if_up_strictness = 'address', + + double_buffer = true, + no_buffers = true, + text_buffer_size = 2048, + + own_window = true, + own_window_class = 'conky', + own_window_type = 'override', + own_window_hints = 'undecorated,sticky,skip_taskbar,skip_pager,below', + + --own_window_colour = '#555555', + own_window_transparent = true, + own_window_argb_visual = true, + own_window_argb_value = 0, + + draw_shades = false, + draw_outline = false, + draw_borders = false, + draw_graph_borders = false, + + alignment = 'top_right', + gap_x = 50, + --von oben | + gap_y = 50, + minimum_width = 350, + minimum_height = 450, + maximum_width = 400, + border_inner_margin = 0, + border_outer_margin = 20, + --xinerama_head = 0, + + override_utf8_locale = true, + use_xft = true, + font = 'monospace:size=8', + xftalpha = 0.8, + uppercase = false, + + -- Defining colors + default_color = '#FFFFFF', + -- Shades of Gray + color1 = '#DDDDDD', + color2 = '#AAAAAA', + color3 = '#FFFFFF', + -- Orange EF5A29 green 159a7f + color4 = '#808080', + -- Green Pihole + color5 = '#EF5A29', + --color0 + color6='#b2c8d8', + -- color1 + color7='#b2c8d8', + color8 = '#697987', -- DeepSkyBlue 00BFFF grau=323232 + color9 = '#2d3b41', -- CadetBlue 5F9EA0, light grey + +} + +conky.text = [[ +${font Play:size=10:style=normal} +${color2}open terminal - ${alignr}${color}super+enter +${color2}open browser - ${alignr}${color}super+F1 +${color2}open mail - ${alignr}${color}super+F2 +${color2}open filemanager - ${alignr}${color}super+F3 +${color2}open text - ${alignr}${color}super+F4 + +#rofi +${color2}application launcher ... - ${alignr}${color}super+d +${color2}screenshot - ${alignr}${color}print + +${color2}resize window - ${alignr}${color}super+r +${color2}kill focused - ${alignr}${color}super+c | super+q +${color2}toggle split direction - ${alignr}${color}super+shift+q +${color2}toggle floating - ${alignr}${color}super+space +${color2}toggle fullscreen - ${alignr}${color}super+f +# switch to workspace +${color2}switch to workspace 1-8 - ${alignr}${color}super+1-8 +# move focused container to workspace +${color2}send to workspace 1-8 - ${alignr}${color}super+shift+1-8 +# Move to workspace with focused container +${color2}move to workspace 1-8 - ${alignr}${color}alt+shift+1-8 +${color2}navigate workspaces - ${alignr}${color}super+ctrl+arrowkeys +${color2}navigate windows - ${alignr}${color}super+shift+arrowkeys +${color2}change focus - ${alignr}${color}super+arrowkeys +${color2}restart i3 inplace - ${alignr}${color}super+shift+r +${color2}reload config file - ${alignr}${color}super+shift+c +${color2}logout, reboot, shutdown ... - ${alignr}${color}super+0 +]]; + diff --git a/.config/conky/conky.conf b/.config/conky/conky.conf new file mode 100644 index 0000000..64d1285 --- /dev/null +++ b/.config/conky/conky.conf @@ -0,0 +1,157 @@ +--[[ +Conky, a system monitor, based on torsmo + +Any original torsmo code is licensed under the BSD license + +All code written since the fork of torsmo is licensed under the GPL + +Please see COPYING for details + +Copyright (c) 2004, Hannu Saransaari and Lauri Hakkarainen +Copyright (c) 2005-2021 Brenden Matthews, Philip Kovacs, et. al. (see AUTHORS) +All rights reserved. + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +]] + +conky.config ={ + -- CONKY SETTINGS + background = true, + update_interval = 1, + update_interval_on_battery = 5, + total_run_times = 0, + + cpu_avg_samples = 2, + net_avg_samples = 2, + + override_utf8_locale = true, + + double_buffer = true, + no_buffers = true, + + text_buffer_size = 32768, + + -- CONKY: WINDOW SPECIFICATIONS + own_window = true, + own_window_argb_value = 192, + own_window_argb_visual = true, + own_window_class = 'conky-semi', + -- own_window_colour = '#0b0d18', + own_window_hints = 'undecorated,below,sticky,skip_taskbar,skip_pager', + own_window_transparent = true, + own_window_type = 'dock', + + border_inner_margin = 6, + border_width = 5, + + minimum_height = 1020, + + minimum_width = 280, + maximum_width = 280, + + alignment = 'bottom_left', + gap_x = 10, + gap_y = 0, + + -- GRAPHICS SETTINGS + draw_outline = true, + draw_outline = false, + draw_borders = false, + draw_graph_borders = true, + -- draw_graph_borders = false, + + -- TEXT SETTINGS + use_xft = true, + font = 'Montserrat Regular:size=10', + xftalpha = 0.2, + + uppercase = false, + + -- Pad percentages to this many decimals (0 = no padding) + pad_percents = 2, + + -- COLOUR SETTINGS + default_color = 'AAAAAA', + default_shade_color = '333333', + -- default_outline_color = '111111', + default_outline_color = '010101', + color1 = '999999', + color2 = 'CCCCCC', + color3 = 'EEEEEE', + color4 = '444444', + color5 = '555555', + color6 = '666666', + color7 = '3b71a1', +}; + + +conky.text = [[ +${alignc}${color1}${font Montserrat Bold:size=20}${time %X (%Z)}${font}${color}${alignc} +${voffset -9} +${alignc}${font Montserrat Light:size=10}${time %A %d %B %Y}${font}${alignc} +${color6}${hr 2}${color} +${voffset -6} +${font Montserrat Light:size=8}${color1}SYSTEM:${color}${font} ${alignr}$sysname $nodename +${font Montserrat Light:size=8}${color1}UPTIME:${color}${font} ${alignr}$uptime_short +${font Montserrat Light:size=8}${color1}KERNEL:${color}${font} ${alignr}$kernel ${voffset 5} +${font :size=11}${color}CPUs ${color}${hr 2}${color} +${voffset -15} +${font Montserrat Light:size=10}${color1}CPU:${color}${font} ${alignr}${color}${execi 300 cat /proc/cpuinfo | grep 'model name' | cut -c 14-40 | uniq}${color}${font} +${font Montserrat Light:size=9}${color1}Used: ${alignr}${color}${font}${cpu cpu0}% +${font :size=11}${color}${cpubar cpu0}${color} +${voffset -15} +${font Montserrat Light:size=9}${color1}01 - 04:${color}${font} ${goto 100}${cpu cpu1}% ${goto 150}${cpu cpu2 }% ${goto 200}${cpu cpu3 }% ${goto 250}${cpu cpu4 }% +${font Montserrat Light:size=9}${color1}05 - 08:${color}${font} ${goto 100}${cpu cpu5}% ${goto 150}${cpu cpu6 }% ${goto 200}${cpu cpu7 }% ${goto 250}${cpu cpu8 }% +${font Montserrat Light:size=9}${color1}09 - 12:${color}${font} ${goto 100}${cpu cpu9}% ${goto 150}${cpu cpu10}% ${goto 200}${cpu cpu11}% ${goto 250}${cpu cpu12}% +${voffset -8} +${font Montserrat Light:size=9}${color1}CPU TEMP:${color}${font} ${font :size=10}${alignr}${hwmon 1 temp 1}°${color4}C${color}${voffset 5} +${font :size=11}${color}Network ${color}${hr 2}${color} +${voffset -15} +# ${font Montserrat Light:size=10}${color1}IP ADDRESS:${color}${font} ${alignr}${addr wlp0s20f3} +${if_match "${addr wlp0s20f3}"!="No Address"}${voffset 5}${font Montserrat Light:size=10}${font}Download ${alignr}${downspeedf wlp0s20f3}k/s (${totaldown wlp0s20f3}) +${color3}${downspeedgraph wlp0s20f3 50,280 ADFF2F 32CD32 -t} +${font Montserrat Light:size=10}${font}Upload ${alignr}${upspeedf wlp0s20f3}k/s (${totalup wlp0s20f3}) +${color3}${upspeedgraph wlp0s20f3 50,280 FF0000 8B0000 -t} +${endif}${voffset 5}${font :size=11}${color}HDD ${color}${hr 2}${color} +${color1}Used: ${color3}${fs_used /}${color1}${goto 190}Free:${goto 230}${color3}${fs_free /} +${color2}${fs_bar /} +${font Montserrat Light:size=8}${color1}DISK I/O:${color}${font} ${alignr}$diskio +${voffset 2}${font Montserrat Light:size=8}${color1}READ: ${color}${font} ${goto 80}${color4}${diskiograph_read 15,210 ADFF2F 32CD32 750}${color} +${voffset 2}${font Montserrat Light:size=8}${color1}WRITE:${color}${font} ${goto 80}${color4}${diskiograph_write 15,210 FF0000 8B0000 750}${color} +${font :size=11}${color}Memory ${color}${hr 2}${color}${voffset 2} +$font${color DimGray}RAM $alignc $mem / $memmax $alignr ${color 188f18}$memperc% +${color 188f18}$membar${voffset 1} +${font :size=11}${color}GPU ${color}${hr 2}${color}${voffset 2} +${font Montserrat Light:size=9}${color1}GPU Freq.: $alignr ${color}${font}${nvidia gpufreq} Mhz${voffset 3} +${font Montserrat Light:size=9}${color1}Memory Freq.: $alignr ${color}${font}${nvidia memfreq} Mhz${voffset 3} +${font Montserrat Light:size=9}${color1}Temperature: $alignr ${color}${font}${nvidia temp}°C ${voffset 3} +${voffset 3}${font :size=11}${color}Processes ${color}${hr 2}${color} +${voffset -15} +${font :size=10}${font Montserrat Light:size=8}${color1}TOTAL:${color}${font} ${alignr}${processes} +${voffset -10} +${font Montserrat Light:size=9}${color1}APP NAME: ${goto 160}MEMORY: ${goto 245}CPU: ${color}${font} +${voffset -16} +${font Montserrat Light:size=9}${color1}${top_mem name 1} ${color}${font} ${goto 160}${top mem 1} % ${goto 235}${top cpu 1} % +${font Montserrat Light:size=9}${color1}${top_mem name 2} ${color}${font} ${goto 160}${top mem 2} % ${goto 235}${top cpu 2} % +${font Montserrat Light:size=9}${color1}${top_mem name 3} ${color}${font} ${goto 160}${top mem 3} % ${goto 235}${top cpu 3} % +${font Montserrat Light:size=9}${color1}${top_mem name 4} ${color}${font} ${goto 160}${top mem 4} % ${goto 235}${top cpu 4} % +${font Montserrat Light:size=9}${color1}${top_mem name 5} ${color}${font} ${goto 160}${top mem 5} % ${goto 235}${top cpu 5} % +${font Montserrat Light:size=9}${color1}${top_mem name 6} ${color}${font} ${goto 160}${top mem 6} % ${goto 235}${top cpu 6} % +${font Montserrat Light:size=9}${color1}${top_mem name 7} ${color}${font} ${goto 160}${top mem 7} % ${goto 235}${top cpu 7} % +${font Montserrat Light:size=9}${color1}${top_mem name 8} ${color}${font} ${goto 160}${top mem 8} % ${goto 235}${top cpu 8} % +${font Montserrat Light:size=9}${color1}${top_mem name 9} ${color}${font} ${goto 160}${top mem 9} % ${goto 235}${top cpu 9} % +${font Montserrat Light:size=9}${color1}${top_mem name 10} ${color}${font} ${goto 160}${top mem 10} % ${goto 235}${top cpu 10} % + +# ${font Montserrat Light:size=10}${color1}${alignr}by: Mo Abdrabou${color}${font} + +]]; diff --git a/.config/deadd/deadd.conf b/.config/deadd/deadd.conf new file mode 100644 index 0000000..af714aa --- /dev/null +++ b/.config/deadd/deadd.conf @@ -0,0 +1,78 @@ +[notification-center] + +hideOnMouseLeave = false + +marginTop = 25 + +marginBottom = 0 + +marginRight = 0 + +width = 700 + +monitor = 0 + +followMouse = true + +# startupCommand = "deadd-notification-center-startup" + +newFirst = true + +useActionIcons = true + +ignoreTransient = false + +useMarkup = true + +parseHtmlEntities = true + +configSendNotiClosedDbusMessage = false + +guessIconFromAppname = true + +#match = "title=Abc;body=abc":"app=notify-send" +#modify = "transient=false" +#run = "":"killall notify-send" + +[notification-center-notification-popup] + +notiDefaultTimeout = 10000 + +distanceTop = 25 + +distanceRight = 0 + +distanceBetween = 10 + +width = 400 + +monitor = 0 + +followMouse = true + +iconSize = 25 + +maxImageSize = 100 + +imageMarginTop = 10 +imageMarginBottom = 10 +imageMarginLeft = 0 +imageMarginRight = 0 + +shortenBody = 5 + +dismissButton = mouse1 + +defaultActionButton = mouse3 + +[buttons] + +buttonsPerRow = 5 + +buttonHeight = 60 + +buttonMargin = 2 + +# labels = "VPN":"Bluetooth":"Wifi":"Screensaver" + +# commands = "sudo vpnToggle":"bluetoothToggle":"wifiToggle":"screensaverToggle" diff --git a/.config/deadd/deadd.css b/.config/deadd/deadd.css new file mode 100644 index 0000000..ce5c161 --- /dev/null +++ b/.config/deadd/deadd.css @@ -0,0 +1,132 @@ +.blurredBG, #main_window, .blurredBG.low, .blurredBG.normal { + background: rgba(40, 42, 54, 0.8); + border: 2pt #50fa7b solid; + border-radius: 10px; +} + +.noti-center.time { + font-size: 32px; +} + +.title { + font-weight: bold; + font-size: 16px; +} + +.appname { + font-size: 12px; +} + +.time { + font-size: 12px; +} + +.blurredBG.notification { + background: rgba(40, 42, 54, 0.8); + border: 2pt #50fa7b solid; + border-radius: 10px; +} + +.blurredBG.notification.critical { + background: rgba(255, 85, 85, 0.8); + border: 2pt #50fa7b solid; + border-radius: 10px; +} + +.notificationInCenter.critical { + background: rgba(255, 85, 85, 0.8); +} + +label { + color: #f8f8f2; +} + +label.notification { + color: #f8f8f2; +} + +label.critical { + color: #f8f8f2; +} +.notificationInCenter label.critical { + color: #f8f8f2; +} + +button { + background: transparent; + color: #f8f8f2; + border-radius: 10px; + border-width: 2px; + background-position: 0px 0px; + text-shadow: none; +} + +button:hover { + border-radius: 10px; + background: rgba(68, 71, 90, 0.8); + border-width: 2px; + border-top: transparent; + border-color: #50fa7b; + color: #282a36; +} + +.userbutton { + background: transparent; + border-radius: 10px; + border-width: 2px; + background-position: 0px 0px; + text-shadow: none; +} + +.userbutton:hover { + border-radius: 10px; + background: rgba(68, 71, 90, 0.8); + border-width: 2px; + border-top: transparent; + border-color: #50fa7b; +} + +.userbuttonlabel { + color: #f8f8f2; + font-size: 12px; +} + +.userbuttonlabel:hover { + color: #f8f8f2; +} + +button.buttonState1 { + background: rgba(20,0,0,0.5); +} + +.userbuttonlabel.buttonState1 { + color: #fff; +} + +button.buttonState1:hover { + background: rgba(20,0,0, 0.4); +} + +.userbuttonlabel.buttonState1:hover { + color: #111; +} + +button.buttonState2 { + background: rgba(255,255,255,0.3); +} + +.userbuttonlabel.buttonState2 { + color: #111; +} + +button.buttonState2:hover { + background: rgba(20,0,0, 0.3); +} + +.userbuttonlabel.buttonState2:hover { + color: #000; +} + +image.deadd-noti-center.notification.image { + margin-left: 10px; +} diff --git a/.config/dunst/dunstrc b/.config/dunst/dunstrc index ecd3c13..88f16a2 100644 --- a/.config/dunst/dunstrc +++ b/.config/dunst/dunstrc @@ -189,7 +189,7 @@ ### Misc/Advanced ### # dmenu path. - dmenu = /usr/bin/rofi -dmenu -p dunst: + dmenu = /usr/bin/rofi -dmenu -i -p dunst: # Browser for opening urls in context menu. browser = /usr/bin/vivaldi-stable diff --git a/.config/dunst/launch_dunst.sh b/.config/dunst/launch_dunst.sh deleted file mode 100755 index 0886d2e..0000000 --- a/.config/dunst/launch_dunst.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash - -# Get values from Xresources -config=~/.config/dunst/dunstrc -geometry_x=$(xgetres dunst.geometry-x) -geometry_y=$(xgetres dunst.geometry-y) -separator_height=$(xgetres dunst.sep-height) -padding=$(xgetres dunst.padding) -horizontal_padding=$(xgetres dunst.horiz-padding) -max_icon_size=$(xgetres dunst.max-icon-size) -frame_width=$(xgetres dunst.frame-width) -lb=$(xgetres dunst.low-background) -lf=$(xgetres dunst.low-foreground) -lfr=$(xgetres dunst.low-frame) -nb=$(xgetres dunst.normal-background) -nf=$(xgetres dunst.normal-foreground) -nfr=$(xgetres dunst.normal-frame) -cb=$(xgetres dunst.critical-background) -cf=$(xgetres dunst.critical-foreground) -cfr=$(xgetres dunst.critical-frame) - -# Kill and running dunst instances and start -killall dunst;/usr/bin/dunst -config $config \ - -geometry "0x0-$geometry_x+$geometry_y" \ - -separator_height "$separator_height" \ - -padding "$padding" \ - -horizontal_padding "$horizontal_padding" \ - -max_icon_size "$max_icon_size" \ - -frame_width "$frame_width" \ - -lb "$lb" \ - -lf "$lf" \ - -lfr "$lfr" \ - -nb "$nb" \ - -nf "$nf" \ - -nfr "$nfr" \ - -cb "$cb" \ - -cf "$cf" \ - -cfr "$cfr" diff --git a/.config/dwm b/.config/dwm deleted file mode 160000 index 8e4f659..0000000 --- a/.config/dwm +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 8e4f659772b7b4e99abe2efb30ad1192fd8da4de diff --git a/.config/dwm-flexipatch b/.config/dwm-flexipatch new file mode 160000 index 0000000..735f3cd --- /dev/null +++ b/.config/dwm-flexipatch @@ -0,0 +1 @@ +Subproject commit 735f3cd6ea5f7233d7c8938d5b0be3bf73716833 diff --git a/.config/emacs b/.config/emacs new file mode 160000 index 0000000..1307b78 --- /dev/null +++ b/.config/emacs @@ -0,0 +1 @@ +Subproject commit 1307b78a5cb082637834a5a65b3ff03c04ec1840 diff --git a/.config/fish/conf.d/dracula.fish b/.config/fish/conf.d/dracula.fish index a396547..e467e6d 100644 --- a/.config/fish/conf.d/dracula.fish +++ b/.config/fish/conf.d/dracula.fish @@ -13,13 +13,13 @@ set -l pink ff79c6 # Syntax Highlighting Colors set -g fish_color_normal $foreground set -g fish_color_command $cyan +set -g fish_color_keyword $pink set -g fish_color_quote $yellow set -g fish_color_redirection $foreground set -g fish_color_end $orange set -g fish_color_error $red set -g fish_color_param $purple set -g fish_color_comment $comment -set -g fish_color_match --background=$selection set -g fish_color_selection --background=$selection set -g fish_color_search_match --background=$selection set -g fish_color_operator $green diff --git a/.config/fish/config.fish b/.config/fish/config.fish index 5c4d476..90097af 100644 --- a/.config/fish/config.fish +++ b/.config/fish/config.fish @@ -1,27 +1,11 @@ -############ -# GREETING # -############ function fish_greeting - # Indices of colorscripts that don't block prompt - set colorscript_indices 2 3 5 6 7 13 14 15 16 17 18 19 20 21 22 23 25 26 27 28 29 30 31 36 37 38 39 40 41 43 44 46 47 48 49 50 51 - # Get length of array - set length (count $colorscript_indices) - # Randomly select array index - set i (math (random) % $length + 1) - # Output randomly selected colorscript from approved list - colorscript -e $colorscript_indices[$i] - # Output swimming fish string + clear + pokemon-colorscripts -r echo "¸.·´¯`·.´¯`·.¸¸.·´¯`·.¸><(((º>" end -############# -# VARIABLES # -############# set -U fish_user_paths $fish_user_paths $HOME/.local/bin/ -########### -# ALIASES # -########### # pacman and paru alias pacsyu='sudo pacman -Syyu' # update only standard pkgs alias parusua='paru -Sua --noconfirm' # update only AUR pkgs @@ -54,12 +38,6 @@ alias gpg-retrieve="gpg2 --keyserver-options auto-key-retrieve --receive-keys" # bare git repo alias for dotfiles alias config="GIT_WORK_TREE=~ GIT_DIR=~/.cfg" -# ssh fix for kitty terminal -alias ssh="kitty +kitten ssh" - -####### -# TTY # -####### if [ "$TERM" = "linux" ] then printf %b '\e[40m' '\e[8]' # set default background to color 0 'dracula-bg' @@ -83,8 +61,5 @@ if [ "$TERM" = "linux" ] clear end -########## -# PROMPT # -########## # Starship Prompt starship init fish | source diff --git a/.config/gamemode.ini b/.config/gamemode.ini index d875e26..9bdfa2c 100644 --- a/.config/gamemode.ini +++ b/.config/gamemode.ini @@ -23,7 +23,7 @@ softrealtime=off ; GameMode can renice game processes. You can put any value between 0 and 20 here, the value ; will be negated and applied as a nice value (0 means no change). Defaults to 0. -renice=0 +renice=10 ; By default, GameMode adjusts the iopriority of clients to BE/0, you can put any value ; between 0 and 7 here (with 0 being highest priority), or one of the special values diff --git a/.config/greenclip.cfg b/.config/greenclip.cfg index 3cf8fd1..f55d5c8 100644 --- a/.config/greenclip.cfg +++ b/.config/greenclip.cfg @@ -7,4 +7,4 @@ Config { blacklistedApps = [], trimSpaceFromSelection = True, enableImageSupport = True -} \ No newline at end of file +} diff --git a/.config/kitty/diff.conf b/.config/kitty/diff.conf new file mode 100644 index 0000000..5fec447 --- /dev/null +++ b/.config/kitty/diff.conf @@ -0,0 +1,19 @@ +foreground #f8f8f2 +background #282a36 +title_fg #f8f8f2 +title_bg #282a36 +margin_bg #6272a4 +margin_fg #44475a +removed_bg #ff5555 +highlight_removed_bg #ff5555 +removed_margin_bg #ff5555 +added_bg #50fa7b +highlight_added_bg #50fa7b +added_margin_bg #50fa7b +filler_bg #44475a +hunk_margin_bg #44475a +hunk_bg #bd93f9 +search_bg #8be9fd +search_fg #282a36 +select_bg #f1fa8c +select_fg #282a36 diff --git a/.config/kitty/kitty.conf b/.config/kitty/kitty.conf index 36ba011..7f033d6 100644 --- a/.config/kitty/kitty.conf +++ b/.config/kitty/kitty.conf @@ -1,5 +1,3 @@ -# vim:fileencoding=utf-8:ft=conf:foldmethod=marker - #: Fonts {{{ #: kitty has very powerful font management. You can configure @@ -427,7 +425,7 @@ window_resize_step_lines 2 #: resizing windows. The cells value is used for horizontal resizing #: and the lines value for vertical resizing. -window_border_width 0.5pt +window_border_width 0.5 #: The width of window borders. Can be either in pixels (px) or pts #: (pt). Values in pts will be rounded to the nearest number of pixels @@ -763,7 +761,7 @@ mark3_background #f274bc #: Advanced {{{ -shell . +shell fish #: The shell program to execute. The default value of . means to use #: whatever shell is set as the default shell for the current user. @@ -1029,6 +1027,8 @@ clear_all_shortcuts no #: kitty +kitten hints --hints-offset to zero for all mappings, #: including the builtin ones. +#: }}} + #: Clipboard {{{ map kitty_mod+c copy_to_clipboard @@ -1309,6 +1309,4 @@ map kitty_mod+delete clear_terminal reset active #: }}} -# }}} - -include dracula.conf \ No newline at end of file +include dracula.conf diff --git a/.config/multilock/config b/.config/multilock/config deleted file mode 100644 index 07bbb15..0000000 --- a/.config/multilock/config +++ /dev/null @@ -1,45 +0,0 @@ -# default options -display_on=0 -span_image=false -lock_timeout=300 -fx_list=(dim blur dimblur pixel dimpixel color) -dim_level=40 -blur_level=1 -pixel_scale=10,1000 -solid_color=333333 - -# # default theme options -# loginbox=00000066 -# loginshadow=00000000 -# locktext="Type password to unlock..." -# font="sans-serif" -# ringcolor=ffffffff -# insidecolor=00000000 -# separatorcolor=00000000 -# ringvercolor=ffffffff -# insidevercolor=00000000 -# ringwrongcolor=ffffffff -# insidewrongcolor=d23c3dff -# keyhlcolor=d23c3dff -# bshlcolor=d23c3dff -# verifcolor=ffffffff -# timecolor=ffffffff -# datecolor=ffffffff - -# Dracula theme options -loginbox=282a3666 -loginshadow=282a3600 -locktext="Type password to unlock..." -font="sans-serif" -ringcolor=8be9fdff -insidecolor=00000000 -separatorcolor=00000000 -ringvercolor=50fa7bff -insidevercolor=50fa7bff -ringwrongcolor=ff5555ff -insidewrongcolor=ff5555ff -keyhlcolor=bd93f9ff -bshlcolor=bd93f9ff -verifcolor=ffffffff -timecolor=f8f8f2ff -datecolor=f8f8f2ff \ No newline at end of file diff --git a/.config/neofetch/config.conf b/.config/neofetch/config.conf index 07e31b2..68d0388 100644 --- a/.config/neofetch/config.conf +++ b/.config/neofetch/config.conf @@ -10,7 +10,7 @@ print_info() { info "Uptime" uptime info "Packages" packages info "Shell" shell - info "Resolution" resolution + # info "Resolution" resolution info "DE" de info "WM" wm info "WM Theme" wm_theme @@ -20,11 +20,11 @@ print_info() { info "Terminal Font" term_font info "CPU" cpu info "GPU" gpu - info "Memory" memory - info "GPU Driver" gpu_driver # Linux/macOS only + # info "GPU Driver" gpu_driver # Linux/macOS only # info "CPU Usage" cpu_usage + # info "Memory" memory # info "Disk" disk - info "Battery" battery + # info "Battery" battery info "Font" font # info "Song" song # [[ "$player" ]] && prin "Music Player" "$player" @@ -32,12 +32,9 @@ print_info() { # info "Public IP" public_ip # info "Users" users # info "Locale" locale # This only works on glibc systems. - # info cols + info cols } -# Title - - # Hide/Show Fully qualified domain name. # # Default: 'off' @@ -45,10 +42,6 @@ print_info() { # Flag: --title_fqdn title_fqdn="off" - -# Kernel - - # Shorten the output of the kernel function. # # Default: 'on' @@ -61,10 +54,6 @@ title_fqdn="off" # off: 'Linux 4.8.9-1-ARCH' kernel_shorthand="on" - -# Distro - - # Shorten the output of the distro function # # Default: 'off' @@ -85,10 +74,6 @@ distro_shorthand="off" # off: 'Arch Linux' os_arch="on" - -# Uptime - - # Shorten the output of the uptime function # # Default: 'on' @@ -101,10 +86,6 @@ os_arch="on" # off: '2 days, 10 hours, 3 minutes' uptime_shorthand="on" - -# Memory - - # Show memory pecentage in output. # # Default: 'off' @@ -116,10 +97,6 @@ uptime_shorthand="on" # off: '1801MiB / 7881MiB' memory_percent="on" - -# Packages - - # Show/Hide Package Manager names. # # Default: 'tiny' @@ -132,10 +109,6 @@ memory_percent="on" # off: '908' package_managers="on" - -# Shell - - # Show the path to $SHELL # # Default: 'off' @@ -158,10 +131,6 @@ shell_path="off" # off: 'bash' shell_version="on" - -# CPU - - # CPU speed type # # Default: 'bios_limit' @@ -237,10 +206,6 @@ cpu_cores="logical" # off: 'Intel i7-6500U (4) @ 3.1GHz' cpu_temp="F" - -# GPU - - # Enable/Disable GPU Brand # # Default: 'on' @@ -271,10 +236,6 @@ gpu_brand="on" # GPU1: Intel Integrated Graphics gpu_type="all" - -# Resolution - - # Display refresh rate next to each monitor # Default: 'off' # Values: 'on', 'off' @@ -286,10 +247,6 @@ gpu_type="all" # off: '1920x1080' refresh_rate="on" - -# Gtk Theme / Icons / Font - - # Shorten output of GTK Theme / Icons / Font # # Default: 'off' @@ -324,10 +281,6 @@ gtk2="on" # off: 'Numix [GTK2]' gtk3="on" - -# IP Address - - # Website to ping for the public IP # # Default: 'http://ident.me' @@ -342,10 +295,6 @@ public_ip_host="http://ident.me" # Flag: --ip_timeout public_ip_timeout=2 - -# Desktop Environment - - # Show Desktop Environment version # # Default: 'off' @@ -353,10 +302,6 @@ public_ip_timeout=2 # Flag: --de_version de_version="on" - -# Disk - - # Which disks to display. # The values can be any /dev/sdXX, mount point or directory. # NOTE: By default we only show the disk info for '/'. @@ -411,10 +356,6 @@ disk_subtitle="mount" # off: 'Disk (/): 74G / 118G' disk_percent="on" - -# Song - - # Manually specify a music player. # # Default: 'auto' @@ -493,10 +434,6 @@ song_shorthand="off" # Example: mpc_args=(-h HOST -P PASSWORD) mpc_args=() - -# Text Colors - - # Text Colors # # Default: 'distro' @@ -511,10 +448,6 @@ mpc_args=() # colors=(4 6 1 8 8 6) - Text is colored in the order above. colors=(distro) - -# Text Options - - # Toggle bold text # # Default: 'on' @@ -548,10 +481,6 @@ underline_char="-" # separator=" =": 'WM = dwm' separator=":" - -# Color Blocks - - # Color block range # The range of colors to print. # @@ -603,9 +532,6 @@ block_height=1 # col_offset=7 - Leave 7 spaces then print the colors col_offset="auto" -# Progress Bars - - # Bar characters # # Default: '-', '=' @@ -646,7 +572,6 @@ bar_length=15 bar_color_elapsed="distro" bar_color_total="distro" - # Info display # Display a bar with the info. # @@ -667,10 +592,6 @@ memory_display="off" battery_display="off" disk_display="off" - -# Backend Settings - - # Image backend. # # Default: 'ascii' @@ -693,10 +614,6 @@ image_backend="ascii" # wallpaper will be used. image_source="auto" - -# Ascii Options - - # Ascii distro # Which distro's ascii art to display. # @@ -764,10 +681,6 @@ ascii_colors=(distro) # Flag: --ascii_bold ascii_bold="on" - -# Image Options - - # Image loop # Setting this to on will make neofetch redraw the image constantly until # Ctrl+C is pressed. This fixes display issues in some terminal emulators. @@ -836,9 +749,6 @@ xoffset=0 # Flag: --bg_color background_color= - -# Misc Options - # Stdout mode # Turn off all colors and disables image backend (ASCII/Image). # Useful for piping into another command. diff --git a/.config/picom/picom.conf b/.config/picom/picom.conf index 0087729..0911e35 100644 --- a/.config/picom/picom.conf +++ b/.config/picom/picom.conf @@ -1,6 +1,3 @@ -################################ -# Animations # -################################# # requires https://github.com/jonaburg/picom # length of animation in milliseconds (default: 300) @@ -30,10 +27,6 @@ spawn-center = true; # Whether to animate down scaling (some programs handle this poorly) (default: false) no-scale-down = true; - -################################# -# Corners # -################################# # requires: https://github.com/sdhand/compton or https://github.com/jonaburg/picom corner-radius = 10.0; rounded-corners-exclude = [ @@ -44,6 +37,8 @@ rounded-corners-exclude = [ # "class_g = 'kitty'", # "class_g = 'Alacritty'", "class_g = 'Polybar'", + "class_g = 'Rofi'", + "class_g = 'deadd-notification-center'", # "class_g = 'code-oss'", #"class_g = 'TelegramDesktop'", # "class_g = 'firefox'", @@ -54,11 +49,6 @@ round-borders-exclude = [ #"class_g = 'TelegramDesktop'", ]; - -################################# -# Shadows # -################################# - # Enabled client-side shadows on windows. Note desktop windows # (windows with '_NET_WM_WINDOW_TYPE_DESKTOP') never get shadow, # unless explicitly requested using the wintypes option. @@ -137,11 +127,6 @@ shadow-exclude = [ # Crop shadow of a window fully on a particular Xinerama screen to the screen. # xinerama-shadow-crop = false - -################################# -# Fading # -################################# - # Fade windows in/out when opening/closing and when opacity changes, # unless no-fading-openclose is used. # fading = false @@ -171,11 +156,6 @@ no-fading-openclose = true # Do not fade destroyed ARGB windows with WM frame. Workaround of bugs in Openbox, Fluxbox, etc. # no-fading-destroyed-argb = false - -################################# -# Transparency / Opacity # -################################# - # Opacity of inactive windows. (0.1 - 1.0, defaults to 1.0) inactive-opacity = 1 # inactive-opacity = 0.8; @@ -194,7 +174,6 @@ popup_menu = { opacity = 1.0; } # dropdown_menu = { opacity = 0.8; } dropdown_menu = { opacity = 1.0; } - # Let inactive opacity set by -i override the '_NET_WM_OPACITY' values of windows. # inactive-opacity-override = true inactive-opacity-override = false; @@ -240,11 +219,6 @@ opacity-rule = [ # "100:class_g = 'Thunderbird'" ]; - -################################# -# Background-Blurring # -################################# - # Parameters for background blurring, see the *BLUR* section for more information. # blur-method = # blur-size = 12 @@ -298,15 +272,13 @@ blur-background-exclude = [ # prevents picom from blurring the background # when taking selection screenshot with `main` # https://github.com/naelstrof/maim/issues/130 + "class_g = 'peek'", + "class_g = 'Peek'", "class_g = 'slop'", + "class_g = 'zoom'", "_GTK_FRAME_EXTENTS@:c" ]; - -################################# -# General Settings # -################################# - # Daemonize process. Fork to background after initialization. Causes issues with certain (badly-written) drivers. # daemon = false @@ -372,6 +344,10 @@ refresh-rate = 0 # when redirecting/unredirecting windows. paint-on-overlay may make the flickering less obvious. # # unredir-if-possible = false +unredir-if-possible = true; +# unredir-if-possible-exclude = [ +# "class_g = 'looking-glass-client' && !focused" +# ] # Delay before unredirecting the window, in milliseconds. Defaults to 0. # unredir-if-possible-delay = 0 @@ -524,7 +500,7 @@ log-level = "info"; wintypes: { normal = { fade = false; shadow = false; } - tooltip = { fade = true; shadow = true; opacity = 0.75; focus = true; full-shadow = false; }; + tooltip = { fade = true; shadow = true; opacity = 1.0; focus = true; full-shadow = false; }; dock = { shadow = false; } dnd = { shadow = false; } # popup_menu = { opacity = 0.8; } diff --git a/.config/picom/toggle_picom.sh b/.config/picom/toggle_picom.sh deleted file mode 100755 index 0d5c2cf..0000000 --- a/.config/picom/toggle_picom.sh +++ /dev/null @@ -1,66 +0,0 @@ -#!/bin/bash - -helpmenu() { - echo "Script to toggle picom ON/OFF. Use only one argument at a time." - echo "Usage: toggle_picom.sh [--toggle | -t] [--on] [--off] [--help | -h]" - echo " - Toggle: toggle_picom.sh OR toggle_picom.sh --toggle OR toggle_picom.sh -t" - echo " - Turn On: toggle_picom.sh --on" - echo " - Turn Off: toggle_picom.sh --off" - echo " - Help: toggle_picom.sh --help OR toggle_picom.sh -h" -} - -check_running() { - if pgrep -x picom >/dev/null; then - echo 1 - else - echo 0 - fi -} - -turn_on() { - notify-send "Turning Picom ON" - - if [ $(check_running) -eq '0' ]; then - picom --config /home/sravan/.config/picom/picom.conf & - fi -} - -turn_off() { - notify-send "Turning Picom OFF" - - if [ $(check_running) -eq '1' ]; then - killall picom - fi -} - -toggle() { - if [ $(check_running) -eq '1' ]; then - turn_off - else - turn_on - fi -} - -main() { - if [ $# -eq 0 ]; then - # No arguments - toggle - else - case $1 in - --help | -h) - helpmenu - ;; - --toggle | -t) - toggle - ;; - --on) - turn_on - ;; - --off) - turn_off - ;; - esac - fi -} - -main $@ diff --git a/.config/polybar b/.config/polybar deleted file mode 160000 index 13a0ee5..0000000 --- a/.config/polybar +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 13a0ee5c2bcf2ef4790163a47c7b95b87a289dcb diff --git a/.config/rofi/config.rasi b/.config/rofi/config.rasi index 259fe72..32fe5d7 100644 --- a/.config/rofi/config.rasi +++ b/.config/rofi/config.rasi @@ -1,17 +1,17 @@ configuration { - modi: "drun,run,clipboard:greenclip print,ssh"; + modi: "window,drun,combi,run,clipboard:greenclip print,ssh"; /* width: 50;*/ /* lines: 15;*/ /* columns: 1;*/ - font: "NotoSans Nerd Font 12"; + font: "NotoSans Nerd Font 12"; /* bw: 1;*/ /* location: 0;*/ /* padding: 5;*/ /* yoffset: 0;*/ /* xoffset: 0;*/ /* fixed-num-lines: true;*/ - show-icons: true; - terminal: "kitty"; + show-icons: true; + terminal: "kitty"; /* ssh-client: "ssh";*/ /* ssh-command: "{terminal} -e {ssh-client} {host} [-p {port}]";*/ /* run-command: "{cmd}";*/ @@ -19,7 +19,7 @@ configuration { /* run-shell-command: "{terminal} -e {cmd}";*/ /* window-command: "wmctrl -i -R {window}";*/ /* window-match-fields: "all";*/ - icon-theme: "Papirus-Dark"; + icon-theme: "Papirus-Dark"; /* drun-match-fields: "name,generic,exec,categories";*/ /* drun-show-actions: false;*/ /* drun-display-format: "{name} [({generic})]";*/ @@ -34,7 +34,7 @@ configuration { /* auto-select: false;*/ /* parse-hosts: false;*/ /* parse-known-hosts: true;*/ -/* combi-modi: "window,run";*/ + combi-modi: "window,drun"; /* matching: "normal";*/ /* tokenize: true;*/ /* m: "-5";*/ @@ -82,19 +82,19 @@ configuration { /* kb-remove-word-back: "Control+Alt+h,Control+BackSpace";*/ /* kb-remove-word-forward: "Control+Alt+d";*/ /* kb-remove-char-forward: "Delete,Control+d";*/ -/* kb-remove-char-back: "BackSpace,Shift+BackSpace,Control+h";*/ -/* kb-remove-to-eol: "Control+k";*/ + kb-remove-char-back: "BackSpace"; + kb-remove-to-eol: "Control+Shift+e"; /* kb-remove-to-sol: "Control+u";*/ -/* kb-accept-entry: "Control+j,Control+m,Return,KP_Enter";*/ + kb-accept-entry: "Control+m,Return,KP_Enter"; /* kb-accept-custom: "Control+Return";*/ /* kb-accept-alt: "Shift+Return";*/ /* kb-delete-entry: "Shift+Delete";*/ -/* kb-mode-next: "Shift+Right,Control+Tab";*/ -/* kb-mode-previous: "Shift+Left,Control+ISO_Left_Tab";*/ + kb-mode-next: "Shift+Right,Control+Tab,Control+l"; + kb-mode-previous: "Shift+Left,Control+ISO_Left_Tab,Control+h"; /* kb-row-left: "Control+Page_Up";*/ /* kb-row-right: "Control+Page_Down";*/ -/* kb-row-up: "Up,Control+p,ISO_Left_Tab";*/ -/* kb-row-down: "Down,Control+n";*/ + kb-row-up: "Up,Control+k,Control+p,ISO_Left_Tab"; + kb-row-down: "Down,Control+j,Control+n"; /* kb-row-tab: "Tab";*/ /* kb-page-prev: "Page_Up";*/ /* kb-page-next: "Page_Down";*/ @@ -143,4 +143,10 @@ configuration { /* me-accept-entry: "MouseDPrimary";*/ /* me-accept-custom: "Control+MouseDPrimary";*/ } -@import "./themes/dracula-blurry-full.rasi" + +@import "./themes/centertab-dracula.rasi" +/* @import "./themes/dmenu-dracula.rasi" */ +/* @import "./themes/dracula-blurry-full.rasi" */ +/* @import "./themes/dracula.rasi" */ +/* @import "./themes/sidetab-dracula.rasi" */ +/* @import "./themes/slate-dracula.rasi" */ diff --git a/.config/rofi/themes/centertab-dracula.rasi b/.config/rofi/themes/centertab-dracula.rasi new file mode 100644 index 0000000..7dec91d --- /dev/null +++ b/.config/rofi/themes/centertab-dracula.rasi @@ -0,0 +1,144 @@ +/** + * ROFI Color theme: centertab-dracula + * User: balajsra + * Copyright: deadguy & Sravan Balaji + */ + +configuration { + display-drun: "launch"; + display-run: "execute"; + display-window: "window"; + display-combi: "combi"; + show-icons: true; + sidebar-mode: false; + font: "NotoSans Nerd Font 12"; +} + +* { + background-color: #282a36; + text-color: #f8f8f2; + selbg: #8be9fd; + actbg: #44475a; + urgbg: #ff5555; + winbg: #8be9fd; + + selected-normal-foreground: @winbg; + normal-foreground: @text-color; + selected-normal-background: @actbg; + normal-background: @background-color; + + selected-urgent-foreground: @background-color; + urgent-foreground: @text-color; + selected-urgent-background: @urgbg; + urgent-background: @background-color; + + selected-active-foreground: @winbg; + active-foreground: @background-color; + selected-active-background: @actbg; + active-background: @selbg; + + line-margin: 2; + line-padding: 2; + separator-style: "none"; + hide-scrollbar: "true"; + margin: 0; + padding: 0; +} + +window { + location: center; + anchor: center; + height: 75%; + width: 75%; + orientation: horizontal; + children: [mainbox]; + border: 2; + border-color: @winbg; +} + +mainbox { + spacing: 0.8em; + children: [ entry, listview, mode-switcher ]; +} + +button { + padding: 5px 2px; +} + +button selected { + background-color: @active-background; + text-color: @background-color; +} + +inputbar { + padding: 5px; + spacing: 5px; +} + +listview { + spacing: 0.5em; + dynamic: false; + cycle: true; +} + +element { + padding: 10px; +} + +element-icon { + size: 2.00ch; +} + +entry { + expand: false; + text-color: @normal-foreground; + vertical-align: 1; + padding: 5px; +} + +element normal.normal { + background-color: @normal-background; + text-color: @normal-foreground; +} + +element normal.urgent { + background-color: @urgent-background; + text-color: @urgent-foreground; +} + +element normal.active { + background-color: @active-background; + text-color: @active-foreground; +} + +element selected.normal { + background-color: @selected-normal-background; + text-color: @selected-normal-foreground; + border: 0 5px solid 0 0; + border-color: @active-background; +} + +element selected.urgent { + background-color: @selected-urgent-background; + text-color: @selected-urgent-foreground; +} + +element selected.active { + background-color: @selected-active-background; + text-color: @selected-active-foreground; +} + +element alternate.normal { + background-color: @normal-background; + text-color: @normal-foreground; +} + +element alternate.urgent { + background-color: @urgent-background; + text-color: @urgent-foreground; +} + +element alternate.active { + background-color: @active-background; + text-color: @active-foreground; +} diff --git a/.config/rofi/themes/dmenu-dracula.rasi b/.config/rofi/themes/dmenu-dracula.rasi index bdd112f..00f1d8a 100644 --- a/.config/rofi/themes/dmenu-dracula.rasi +++ b/.config/rofi/themes/dmenu-dracula.rasi @@ -3,40 +3,41 @@ * User: balajsra * Copyright: Sravan Balaji */ + * { - background-color: #282a36; - text-color: #f8f8f2; - font: "NotoSans Nerd Font 12"; + background-color: #282a36; + text-color: #f8f8f2; + font: "NotoSans Nerd Font 12"; } #window { - anchor: north; - location: north; - width: 100%; - padding: 2px 5px 2px 5px; /* top right bottom left */ - children: [ horibox ]; + anchor: north; + location: north; + width: 100%; + padding: 2px 5px 2px 5px; /* top right bottom left */ + children: [ horibox ]; } #horibox { - orientation: horizontal; - children: [ prompt, entry, listview ]; + orientation: horizontal; + children: [ prompt, entry, listview ]; } #listview { - layout: horizontal; - spacing: 10px; - lines: 100; + layout: horizontal; + spacing: 10px; + lines: 100; } #entry { - expand: false; - width: 10em; + expand: false; + width: 10em; } #element { - padding: 1px 5px 1px 5px; /* top right bottom left */ + padding: 1px 5px 1px 5px; /* top right bottom left */ } #element selected { - background-color: #bd93f9; - text-color: #282a36; + background-color: #bd93f9; + text-color: #282a36; } diff --git a/.config/rofi/themes/dracula-blurry-full.rasi b/.config/rofi/themes/dracula-blurry-full.rasi index ac439eb..aca75ca 100644 --- a/.config/rofi/themes/dracula-blurry-full.rasi +++ b/.config/rofi/themes/dracula-blurry-full.rasi @@ -11,128 +11,128 @@ */ configuration { - drun-display-format: "{name}"; - threads: 0; - scroll-method: 0; - disable-history: false; - fullscreen: false; - hide-scrollbar: true; - sidebar-mode: false; + drun-display-format: "{name}"; + threads: 0; + scroll-method: 0; + disable-history: false; + fullscreen: false; + hide-scrollbar: true; + sidebar-mode: false; } * { - background: #00000000; - background-color: #282a36cc; - background-entry: #44475acc; - background-alt: #44475acc; - foreground: #f8f8f2cc; - foreground-selected: #50fa7bcc; - urgent: #ff5555cc; - urgent-selected: #ff5555cc; + background: #00000000; + background-color: #282a36cc; + background-entry: #44475acc; + background-alt: #44475acc; + foreground: #f8f8f2cc; + foreground-selected: #50fa7bcc; + urgent: #ff5555cc; + urgent-selected: #ff5555cc; } window { - transparency: "real"; - background-color: @background; - text-color: @foreground; - height: 100%; - width: 100%; - location: northwest; - anchor: northwest; - x-offset: 0; - y-offset: 0; + transparency: "real"; + background-color: @background; + text-color: @foreground; + height: 100%; + width: 100%; + location: northwest; + anchor: northwest; + x-offset: 0; + y-offset: 0; } prompt { - enabled: false; + enabled: false; } inputbar { - background-color: @background-alt; - text-color: @foreground; - expand: false; - border-radius: 6px; - margin: 0px 430px 0px 430px; - padding: 10px 10px 10px 10px; - position: north; + background-color: @background-alt; + text-color: @foreground; + expand: false; + border-radius: 6px; + margin: 0px 430px 0px 430px; + padding: 10px 10px 10px 10px; + position: north; } entry { - background-color: @background; - text-color: @foreground; - placeholder-color: @foreground; - expand: true; - horizontal-align: 0.5; - placeholder: "Search applications"; - blink: true; + background-color: @background; + text-color: @foreground; + placeholder-color: @foreground; + expand: true; + horizontal-align: 0.5; + placeholder: "Search applications"; + blink: true; } case-indicator { - background-color: @background; - text-color: @foreground; - spacing: 0; + background-color: @background; + text-color: @foreground; + spacing: 0; } listview { - background-color: @background; - columns: 7; - spacing: 4px; - cycle: false; - dynamic: true; - layout: vertical; + background-color: @background; + columns: 7; + spacing: 4px; + cycle: false; + dynamic: true; + layout: vertical; } mainbox { - background-color: @background-color; - children: [ inputbar, listview ]; - spacing: 25px; - padding: 70px 135px 55px 135px; + background-color: @background-color; + children: [ inputbar, listview ]; + spacing: 25px; + padding: 70px 135px 55px 135px; } element { - background-color: @background; - text-color: @foreground; - orientation: vertical; - border-radius: 9px; - padding: 20px 0px 20px 0px; + background-color: @background; + text-color: @foreground; + orientation: vertical; + border-radius: 9px; + padding: 20px 0px 20px 0px; } element-icon { - size: 65px; - border: 0px; + size: 65px; + border: 0px; } element-text { - expand: true; - horizontal-align: 0.5; - vertical-align: 0.5; - margin: 5px 10px 0px 10px; + expand: true; + horizontal-align: 0.5; + vertical-align: 0.5; + margin: 5px 10px 0px 10px; } element normal.urgent, element alternate.urgent { - background-color: @urgent; - text-color: @foreground; - border-radius: 9px; + background-color: @urgent; + text-color: @foreground; + border-radius: 9px; } element normal.active, element alternate.active { - background-color: @background-alt; - text-color: @foreground; + background-color: @background-alt; + text-color: @foreground; } element selected { - background-color: @background-alt; - text-color: @foreground-selected; + background-color: @background-alt; + text-color: @foreground-selected; } element selected.urgent { - background-color: @urgent-selected; - text-color: @foreground; + background-color: @urgent-selected; + text-color: @foreground; } element selected.active { - background-color: @background-alt; - color: @foreground-selected; + background-color: @background-alt; + color: @foreground-selected; } diff --git a/.config/rofi/themes/sidetab-dracula.rasi b/.config/rofi/themes/sidetab-dracula.rasi index 49fa186..cb39c60 100644 --- a/.config/rofi/themes/sidetab-dracula.rasi +++ b/.config/rofi/themes/sidetab-dracula.rasi @@ -1,137 +1,137 @@ /** - * ROFI Color theme: dmenu-dracula + * ROFI Color theme: sidetab-dracula * User: balajsra * Copyright: deadguy & Sravan Balaji */ configuration { - display-drun: "Activate"; - display-run: "Execute"; - display-window: "Window"; - show-icons: true; - sidebar-mode: true; - font: "NotoSans Nerd Font 12"; + display-drun: "Launch"; + display-run: "Execute"; + display-window: "Window"; + show-icons: true; + sidebar-mode: true; + font: "NotoSans Nerd Font 12"; } * { - background-color: #282a36; - text-color: #f8f8f2; - selbg: #bd93f9; - actbg: #44475a; - urgbg: #ff5555; - winbg: #50fa7b; + background-color: #282a36; + text-color: #f8f8f2; + selbg: #bd93f9; + actbg: #44475a; + urgbg: #ff5555; + winbg: #50fa7b; - selected-normal-foreground: @winbg; - normal-foreground: @text-color; - selected-normal-background: @actbg; - normal-background: @background-color; + selected-normal-foreground: @winbg; + normal-foreground: @text-color; + selected-normal-background: @actbg; + normal-background: @background-color; - selected-urgent-foreground: @background-color; - urgent-foreground: @text-color; - selected-urgent-background: @urgbg; - urgent-background: @background-color; + selected-urgent-foreground: @background-color; + urgent-foreground: @text-color; + selected-urgent-background: @urgbg; + urgent-background: @background-color; - selected-active-foreground: @winbg; - active-foreground: @text-color; - selected-active-background: @actbg; - active-background: @selbg; + selected-active-foreground: @winbg; + active-foreground: @text-color; + selected-active-background: @actbg; + active-background: @selbg; - line-margin: 2; - line-padding: 2; - separator-style: "none"; - hide-scrollbar: "true"; - margin: 0; - padding: 0; + line-margin: 2; + line-padding: 2; + separator-style: "none"; + hide-scrollbar: "true"; + margin: 0; + padding: 0; } window { - location: west; - anchor: west; - height: 100%; - width: 25%; - orientation: horizontal; - children: [mainbox]; + location: west; + anchor: west; + height: 100%; + width: 25%; + orientation: horizontal; + children: [mainbox]; } mainbox { - spacing: 0.8em; - children: [ entry, listview, mode-switcher ]; + spacing: 0.8em; + children: [ entry, listview, mode-switcher ]; } button { - padding: 5px 2px; + padding: 5px 2px; } button selected { - background-color: @active-background; - text-color: @background-color; + background-color: @active-background; + text-color: @background-color; } inputbar { - padding: 5px; - spacing: 5px; + padding: 5px; + spacing: 5px; } listview { - spacing: 0.5em; - dynamic: false; - cycle: true; + spacing: 0.5em; + dynamic: false; + cycle: true; } element { - padding: 10px; + padding: 10px; } entry { - expand: false; - text-color: @normal-foreground; - vertical-align: 1; - padding: 5px; + expand: false; + text-color: @normal-foreground; + vertical-align: 1; + padding: 5px; } element normal.normal { - background-color: @normal-background; - text-color: @normal-foreground; + background-color: @normal-background; + text-color: @normal-foreground; } element normal.urgent { - background-color: @urgent-background; - text-color: @urgent-foreground; + background-color: @urgent-background; + text-color: @urgent-foreground; } element normal.active { - background-color: @active-background; - text-color: @active-foreground; + background-color: @active-background; + text-color: @active-foreground; } element selected.normal { - background-color: @selected-normal-background; - text-color: @selected-normal-foreground; - border: 0 5px solid 0 0; - border-color: @active-background; + background-color: @selected-normal-background; + text-color: @selected-normal-foreground; + border: 0 5px solid 0 0; + border-color: @active-background; } element selected.urgent { - background-color: @selected-urgent-background; - text-color: @selected-urgent-foreground; + background-color: @selected-urgent-background; + text-color: @selected-urgent-foreground; } element selected.active { - background-color: @selected-active-background; - text-color: @selected-active-foreground; + background-color: @selected-active-background; + text-color: @selected-active-foreground; } element alternate.normal { - background-color: @normal-background; - text-color: @normal-foreground; + background-color: @normal-background; + text-color: @normal-foreground; } element alternate.urgent { - background-color: @urgent-background; - text-color: @urgent-foreground; + background-color: @urgent-background; + text-color: @urgent-foreground; } element alternate.active { - background-color: @active-background; - text-color: @active-foreground; + background-color: @active-background; + text-color: @active-foreground; } diff --git a/.config/rofi/themes/slate-dracula.rasi b/.config/rofi/themes/slate-dracula.rasi index 8179d13..d380a67 100644 --- a/.config/rofi/themes/slate-dracula.rasi +++ b/.config/rofi/themes/slate-dracula.rasi @@ -1,50 +1,51 @@ /** - * ROFI Color theme: dmenu-dracula + * ROFI Color theme: slate-dracula * User: balajsra * Copyright: Sravan Balaji */ + * { - background-color: #282a36; - border-color: #bd93f9; - text-color: #f8f8f2; - spacing: 0; - width: 1024px; - font: "NotoSans Nerd Font 12"; + background-color: #282a36; + border-color: #bd93f9; + text-color: #f8f8f2; + spacing: 0; + width: 1024px; + font: "NotoSans Nerd Font 12"; } inputbar { - border: 0 0 1px 0; /* top right bottom left */ - children: [prompt, entry]; + border: 0 0 1px 0; /* top right bottom left */ + children: [prompt, entry]; } prompt { - padding: 16px; - border: 2px 1px 0 2px; /* top right bottom left */ + padding: 16px; + border: 2px 1px 0 2px; /* top right bottom left */ } textbox { - background-color: #282a36; - border: 0 0 1px 0; /* top right bottom left */ - border-color: #bd93f9; - padding: 8px 16px 8px 16px; /* top right bottom left */ + background-color: #282a36; + border: 0 0 1px 0; /* top right bottom left */ + border-color: #bd93f9; + padding: 8px 16px 8px 16px; /* top right bottom left */ } entry { - border: 2px 2px 0px 0; /* top right bottom left */ - padding: 16px; + border: 2px 2px 0px 0; /* top right bottom left */ + padding: 16px; } listview { - cycle: true; - margin: 0 0 0px 0; /* top right bottom left */ - scrollbar: true; + cycle: true; + margin: 0 0 0px 0; /* top right bottom left */ + scrollbar: true; } element { - border: 0 2px 1px 2px; /* top right bottom left */ - padding: 16px; + border: 0 2px 1px 2px; /* top right bottom left */ + padding: 16px; } element selected { - background-color: #44475a; + background-color: #44475a; } diff --git a/.config/starship.toml b/.config/starship.toml index 80142f6..3fb11e2 100644 --- a/.config/starship.toml +++ b/.config/starship.toml @@ -1,5 +1,3 @@ -# ~/.config/starship.toml - # Don't print a new line at the start of the prompt add_newline = false @@ -34,7 +32,7 @@ truncate_to_repo = false truncation_symbol = "…/" read_only = "" -[docker] +[docker_context] symbol = " " [elixir] @@ -49,8 +47,8 @@ symbol = " " [golang] symbol = " " -[haskell] -symbol = " " +# [haskell] +# symbol = " " [hg_branch] symbol = " " diff --git a/.config/vkBasalt/vkBasalt.conf b/.config/vkBasalt/vkBasalt.conf new file mode 100644 index 0000000..849e824 --- /dev/null +++ b/.config/vkBasalt/vkBasalt.conf @@ -0,0 +1,3 @@ +casSharpness=1.0 +toggleKey = Home +effects = cas diff --git a/.gitconfig b/.gitconfig index 5d237a0..671f492 100644 --- a/.gitconfig +++ b/.gitconfig @@ -1,7 +1,72 @@ +# Sravan Balaji's Git Configuration +# Based on: https://gist.github.com/tdd/470582 [user] - email = balajsra@umich.edu - name = Sravan Balaji + email = balajsra@umich.edu + name = Sravan Balaji +[color] + # Enable colors in color-supporting terminals + ui = auto [pull] - rebase = false + rebase = true [alias] - tree = log --all --decorate --oneline --graph \ No newline at end of file + # List available aliases + aliases = !git config --get-regexp alias | sed -re 's/alias\\.(\\S*)\\s(.*)$/\\1 = \\2/g' + # Command shortcuts + ci = commit + co = checkout + st = status + # Display tree-like log, because default log is a pain… + lg = log --graph --date=relative --pretty=tformat:'%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%an %ad)%Creset' + # Useful when you have to update your last commit + # with staged files without editing the commit message. + oops = commit --amend --no-edit + # Ensure that force-pushing won't lose someone else's work (only mine). + push-with-lease = push --force-with-lease + # Rebase won’t trigger hooks on each "replayed" commit. + # This is an ugly hack that will replay each commit during rebase with the + # standard `commit` command which will trigger hooks. + rebase-with-hooks = rebase -x 'git reset --soft HEAD~1 && git commit -C HEAD@{1}' + # List local commits that were not pushed to remote repository + review-local = "!git lg @{push}.." + # Edit last commit message + reword = commit --amend + # Undo last commit but keep changed files in stage + uncommit = reset --soft HEAD~1 + # Remove file(s) from Git but not from disk + untrack = rm --cache -- +[core] + # Emacs + editor = "emacs" + # Don't consider trailing space change as a cause for merge conflicts + whitespace = -trailing-space +[diff] + # Use better, descriptive initials (c, i, w) instead of a/b. + mnemonicPrefix = true + # Show renames/moves as such + renames = true + # When using --word-diff, assume --word-diff-regex=. + wordRegex = . + # Display submodule-related information (commit listings) + submodule = log +[fetch] + # Auto-fetch submodule changes (sadly, won't auto-update) + recurseSubmodules = on-demand +[grep] + break = true + heading = true + lineNumber = true + # Consider most regexes to be ERE + extendedRegexp = true +[log] + # Use abbrev SHAs whenever possible/relevant instead of full 40 chars + abbrevCommit = true + # Automatically --follow when given a single path + follow = true + # Disable decorate for reflog + # (because there is no dedicated `reflog` section available) + decorate = false +[status] + # Display submodule rev change summaries in status + submoduleSummary = true + # Recursively traverse untracked directories to display all contents + showUntrackedFiles = all diff --git a/.gitignore b/.gitignore index e7dd8b9..0aed936 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -.cfg \ No newline at end of file +.cfg +*~ diff --git a/.gitmodules b/.gitmodules index 1d75865..beda520 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,15 +1,76 @@ [submodule ".vim/pack/themes/start/dracula"] path = .vim/pack/themes/start/dracula - url = https://github.com/dracula/vim.git -[submodule ".themes/Dracula"] - path = .themes/Dracula + url = git@github.com:dracula/vim.git + branch = master +[submodule ".themes/dracula-blender"] + path = .themes/dracula-blender + url = git@github.com:dracula/blender.git + branch = master +[submodule ".themes/dracula-freecad"] + path = .themes/dracula-freecad + url = git@github.com:dracula/freecad.git + branch = master +[submodule ".themes/dracula-gnome-terminal"] + path = .themes/dracula-gnome-terminal + url = git@github.com:dracula/gnome-terminal.git + branch = master +[submodule ".themes/dracula-xournalpp"] + path = .themes/dracula-xournalpp + url = git@github.com:dracula/xournalpp.git + branch = master +[submodule ".themes/dracula-steam"] + path = .themes/dracula-steam + url = git@github.com:dracula/steam.git + branch = master +[submodule ".themes/dracula-gtk"] + path = .themes/dracula-gtk url = git@github.com:dracula/gtk.git -[submodule ".config/dwm"] - path = .config/dwm - url = https://github.com/balajsra/dwm.git -[submodule ".config/polybar"] - path = .config/polybar - url = git@github.com:balajsra/polybar.git -[submodule "/home/sravan/.local/share/Steam/skins/Dracula"] - path = /home/sravan/.local/share/Steam/skins/Dracula - url = https://github.com/dracula/steam.git + branch = master +[submodule ".themes/dracula-fish"] + path = .themes/dracula-fish + url = git@github.com:dracula/fish.git + branch = master +[submodule ".themes/dracula-kitty"] + path = .themes/dracula-kitty + url = git@github.com:dracula/kitty.git + branch = master +[submodule ".themes/dracula-libreoffice"] + path = .themes/dracula-libreoffice + url = git@github.com:dracula/libreoffice.git + branch = master +[submodule ".themes/dracula-tty"] + path = .themes/dracula-tty + url = git@github.com:dracula/tty.git + branch = master +[submodule ".themes/dracula-latex"] + path = .themes/dracula-latex + url = git@github.com:dracula/latex.git + branch = master +[submodule ".themes/dracula-matplotlib"] + path = .themes/dracula-matplotlib + url = git@github.com:dracula/matplotlib.git + branch = master +[submodule ".themes/dracula-matlab"] + path = .themes/dracula-matlab + url = git@github.com:dracula/matlab.git + branch = master +[submodule ".xmonad"] + path = .xmonad + url = git@github.com:balajsra/xmonad.git + branch = master +[submodule ".themes/dracula-qbittorrent"] + path = .themes/dracula-qbittorrent + url = git@github.com:dracula/qbittorrent.git + branch = master +[submodule ".config/dwm-flexipatch"] + path = .config/dwm-flexipatch + url = git@github.com:balajsra/dwm-flexipatch.git + branch = master +[submodule ".themes/fallout-grub-theme"] + path = .themes/fallout-grub-theme + url = git@github.com:shvchk/fallout-grub-theme.git + branch = master +[submodule ".config/emacs"] + path = .config/emacs + url = git@github.com:balajsra/emacs.git + branch = main diff --git a/.scripts/control-center.sh b/.scripts/control-center.sh new file mode 100755 index 0000000..395b5ec --- /dev/null +++ b/.scripts/control-center.sh @@ -0,0 +1,72 @@ +#!/bin/bash +help_menu() { + echo "Main script to launch sub-menu scripts. Use only one argument at a time." + # echo " - Play / Pause: playerctl.sh --play-pause" + # echo " - Next: playerctl.sh --next" + # echo " - Previous: playerctl.sh --prev" + # echo " - Change Player: playerctl.sh --change" + # echo " - Rofi Menu: playerctl.sh --rofi" + # echo " - Help: playerctl.sh --help OR playerctl.sh -h" +} + +rofi_menu() { + declare -a options=( + " Compositor - picom" + " Notifications - deadd" + " Media - playerctl" + "墳Volume - pactl" + " Startup Processes - startup" + " Hardware - system76-power" + " Power Menu - session" + " Back - back" + " Quit - quit" + ) + + choice=$(printf '%s\n' "${options[@]}" | rofi -dmenu -i) + option=$(printf '%s\n' "${choice}" | awk '{print $NF}') + + if [[ "$option" == "quit" ]]; then + kilall rofi + elif [[ "$option" != "back" ]]; then + main "--$option" && main "--rofi" + fi +} + +main() { + if [ $# -eq 0 ]; then + # No arguments + help_menu + else + case $1 in + --help | -h) + help_menu + ;; + --picom) + /home/sravan/.scripts/picom.sh --rofi + ;; + --deadd) + /home/sravan/.scripts/deadd.sh --rofi + ;; + --playerctl) + /home/sravan/.scripts/playerctl.sh --rofi + ;; + --pactl) + /home/sravan/.scripts/pactl.sh --rofi + ;; + --startup) + /home/sravan/.scripts/startup.sh --rofi + ;; + --system76-power) + /home/sravan/.scripts/system76-power.sh --rofi + ;; + --session) + /home/sravan/.scripts/session.sh --rofi + ;; + --rofi) + rofi_menu + ;; + esac + fi +} + +main $@ diff --git a/.scripts/deadd.sh b/.scripts/deadd.sh new file mode 100755 index 0000000..11224a1 --- /dev/null +++ b/.scripts/deadd.sh @@ -0,0 +1,102 @@ +#!/bin/bash +help_menu() { + echo "Script to interact with deadd. Use only one argument at a time." + echo " - Toggle On/Off: deadd.sh OR deadd.sh --toggle OR deadd.sh -t" + echo " - Turn On: deadd.sh --on" + echo " - Turn Off: deadd.sh --off" + echo " - Toggle Notification Center: deadd.sh --toggle-center" + echo " - Pause Popup Notifications: deadd.sh --pause" + echo " - Unpause Popup Notifications: deadd.sh --unpause" + echo " - Rofi Menu: deadd.sh --rofi" + echo " - Help: deadd.sh --help OR deadd.sh -h" +} + +is_running() { + if pgrep -x deadd-notificat >/dev/null; then + echo 1 + else + echo 0 + fi +} + +rofi_menu() { + declare -a options=( + "⏼ Toggle - toggle" + " Turn On - on" + " Turn Off - off" + " Toggle Notification Center - toggle-center" + " Pause Popup Notifications - pause" + " Unpause Popup Notifications - unpause" + " Back - back" + " Quit - quit" + ) + + choice=$(printf '%s\n' "${options[@]}" | rofi -dmenu -i) + option=$(printf '%s\n' "${choice}" | awk '{print $NF}') + + if [[ "$option" == "quit" ]]; then + kilall rofi + elif [[ "$option" != "back" ]]; then + main "--$option" && main "--rofi" + fi +} + +main() { + if [ $# -eq 0 ]; then + # No arguments + help_menu + else + case $1 in + --help | -h) + help_menu + ;; + --toggle) + if [ $(is_running) -eq '1' ]; then + main --off + else + main --on + fi + ;; + --on) + if [ $(is_running) -eq '1' ]; then + killall deadd-notificat + fi + + /home/sravan/.local/bin/notify-send.py a --hint \ + boolean:deadd-notification-center:true \ + string:type:reloadStyle + + notify-send "Turning Deadd ON" + ;; + --off) + notify-send "Turning Deadd OFF" + + if [ $(is_running) -eq '1' ]; then + killall deadd-notificat + fi + ;; + --toggle-center) + kill -s USR1 $(pidof deadd-notification-center) + ;; + --pause) + notify-send "Pausing Notifications" + + /home/sravan/.local/bin/notify-send.py a --hint \ + boolean:deadd-notification-center:true \ + string:type:pausePopups > /dev/null 2>&1 + ;; + --unpause) + /home/sravan/.local/bin/notify-send.py a --hint \ + boolean:deadd-notification-center:true \ + string:type:unpausePopups > /dev/null 2>&1 + + notify-send "Unpausing Notifications" + ;; + --rofi) + rofi_menu + ;; + esac + fi +} + +main $@ diff --git a/.scripts/dunst.sh b/.scripts/dunst.sh new file mode 100755 index 0000000..b67c7e3 --- /dev/null +++ b/.scripts/dunst.sh @@ -0,0 +1,132 @@ +#!/bin/bash +help_menu() { + echo "Script to interact with dunst. Use only one argument at a time." + echo " - Toggle On/Off: dunst.sh OR dunst.sh --toggle OR dunst.sh -t" + echo " - Turn On: dunst.sh --on" + echo " - Turn Off: dunst.sh --off" + echo " - Context Menu: dunst.sh --context" + echo " - Close Notification: dunst.sh --close" + echo " - History Pop: dunst.sh --history" + echo " - Toggle Do Not Disturb: dunst.sh --dnd" + echo " - Rofi Menu: dunst.sh --rofi" + echo " - Help: dunst.sh --help OR dunst.sh -h" +} + +is_running() { + if pgrep -x dunst >/dev/null; then + echo 1 + else + echo 0 + fi +} + +rofi_menu() { + declare -a options=( + "⏼ Toggle - toggle" + " Turn On - on" + " Turn Off - off" + " Open Actions - context" + " Close Notification - close" + " View History - history" + " Toggle Do Not Disturb - dnd" + " Back - back" + " Quit - quit" + ) + + choice=$(printf '%s\n' "${options[@]}" | rofi -dmenu -i) + option=$(printf '%s\n' "${choice}" | awk '{print $NF}') + + if [[ "$option" == "quit" ]]; then + kilall rofi + elif [[ "$option" != "back" ]]; then + main "--$option" && main "--rofi" + fi +} + +main() { + if [ $# -eq 0 ]; then + # No arguments + help_menu + else + case $1 in + --help | -h) + help_menu + ;; + --toggle) + if [ $(is_running) -eq '1' ]; then + main --off + else + main --on + fi + ;; + --on) + # Get values from Xresources + config=~/.config/dunst/dunstrc + geometry_x=$(xgetres dunst.geometry-x) + geometry_y=$(xgetres dunst.geometry-y) + separator_height=$(xgetres dunst.sep-height) + padding=$(xgetres dunst.padding) + horizontal_padding=$(xgetres dunst.horiz-padding) + max_icon_size=$(xgetres dunst.max-icon-size) + frame_width=$(xgetres dunst.frame-width) + lb=$(xgetres dunst.low-background) + lf=$(xgetres dunst.low-foreground) + lfr=$(xgetres dunst.low-frame) + nb=$(xgetres dunst.normal-background) + nf=$(xgetres dunst.normal-foreground) + nfr=$(xgetres dunst.normal-frame) + cb=$(xgetres dunst.critical-background) + cf=$(xgetres dunst.critical-foreground) + cfr=$(xgetres dunst.critical-frame) + + if [ $(is_running) -eq '1' ]; then + killall dunst + fi + + # Start Dunst + /usr/bin/dunst -config $config \ + -geometry "0x0-$geometry_x+$geometry_y" \ + -separator_height "$separator_height" \ + -padding "$padding" \ + -horizontal_padding "$horizontal_padding" \ + -max_icon_size "$max_icon_size" \ + -frame_width "$frame_width" \ + -lb "$lb" \ + -lf "$lf" \ + -lfr "$lfr" \ + -nb "$nb" \ + -nf "$nf" \ + -nfr "$nfr" \ + -cb "$cb" \ + -cf "$cf" \ + -cfr "$cfr" & + + notify-send "Turning Dunst ON" + ;; + --off) + notify-send "Turning Dunst OFF" + + if [ $(is_running) -eq '1' ]; then + killall dunst + fi + ;; + --context) + dunstctl context + ;; + --close) + dunstctl close + ;; + --history) + dunstctl history-pop + ;; + --dnd) + dunstctl set-paused toggle + ;; + --rofi) + rofi_menu + ;; + esac + fi +} + +main $@ diff --git a/.scripts/game_exit.sh b/.scripts/game_exit.sh new file mode 100755 index 0000000..e0981ae --- /dev/null +++ b/.scripts/game_exit.sh @@ -0,0 +1,2 @@ +#!/bin/bash +/home/sravan/.scripts/deadd.sh --unpause diff --git a/.scripts/game_launch.sh b/.scripts/game_launch.sh new file mode 100755 index 0000000..8a27b75 --- /dev/null +++ b/.scripts/game_launch.sh @@ -0,0 +1,2 @@ +#!/bin/bash +/home/sravan/.scripts/deadd.sh --pause diff --git a/.scripts/pactl.sh b/.scripts/pactl.sh new file mode 100755 index 0000000..b79ab5f --- /dev/null +++ b/.scripts/pactl.sh @@ -0,0 +1,60 @@ +#!/bin/bash +help_menu() { + echo "Script to interact with pactl. Use only one argument at a time." + # echo " - Play / Pause: playerctl.sh --play-pause" + # echo " - Next: playerctl.sh --next" + # echo " - Previous: playerctl.sh --prev" + # echo " - Change Player: playerctl.sh --change" + # echo " - Rofi Menu: playerctl.sh --rofi" + # echo " - Help: playerctl.sh --help OR playerctl.sh -h" +} + +rofi_menu() { + declare -a options=( + " Raise Volume - raise" + " Lower Volume - lower" + " Mute - mute" + "﴾ Mixer - mixer" + " Back - back" + " Quit - quit" + ) + + choice=$(printf '%s\n' "${options[@]}" | rofi -dmenu -i) + option=$(printf '%s\n' "${choice}" | awk '{print $NF}') + + if [[ "$option" == "quit" ]]; then + kilall rofi + elif [[ "$option" != "back" ]]; then + main "--$option" && main "--rofi" + fi +} + +main() { + if [ $# -eq 0 ]; then + # No arguments + help_menu + else + case $1 in + --help | -h) + help_menu + ;; + --raise) + pactl set-sink-volume @DEFAULT_SINK@ +5% + ;; + --lower) + pactl set-sink-volume @DEFAULT_SINK@ -5% + ;; + --mute) + pactl set-sink-mute @DEFAULT_SINK@ toggle + ;; + --mixer) + pavucontrol + ;; + --rofi) + rofi_menu + ;; + esac + fi +} + +main $@ diff --git a/.scripts/picom.sh b/.scripts/picom.sh new file mode 100755 index 0000000..73c6072 --- /dev/null +++ b/.scripts/picom.sh @@ -0,0 +1,76 @@ +#!/bin/bash +help_menu() { + echo "Script to interact with picom. Use only one argument at a time." + echo " - Toggle On/Off: picom.sh OR picom.sh --toggle OR picom.sh -t" + echo " - Turn On: picom.sh --on" + echo " - Turn Off: picom.sh --off" + echo " - Help: picom.sh --help OR picom.sh -h" +} + +is_running() { + if pgrep -x picom >/dev/null; then + echo 1 + else + echo 0 + fi +} + +rofi_menu() { + declare -a options=( + "⏼ Toggle - toggle" + " Turn On - on" + " Turn Off - off" + " Back - back" + " Quit - quit" + ) + + choice=$(printf '%s\n' "${options[@]}" | rofi -dmenu -i) + option=$(printf '%s\n' "${choice}" | awk '{print $NF}') + + if [[ "$option" == "quit" ]]; then + kilall rofi + elif [[ "$option" != "back" ]]; then + main "--$option" && main "--rofi" + fi +} + +main() { + if [ $# -eq 0 ]; then + # No arguments + help_menu + else + case $1 in + --help | -h) + help_menu + ;; + --toggle) + if [ $(is_running) -eq '1' ]; then + main --off + else + main --on + fi + ;; + --on) + if [ $(is_running) -eq '1' ]; then + killall picom + fi + + picom --config /home/sravan/.config/picom/picom.conf & + + notify-send "Turning Picom ON" + ;; + --off) + if [ $(is_running) -eq '1' ]; then + killall picom + fi + + notify-send "Turning Picom OFF" + ;; + --rofi) + rofi_menu + ;; + esac + fi +} + +main $@ diff --git a/.scripts/playerctl.sh b/.scripts/playerctl.sh new file mode 100755 index 0000000..948a19d --- /dev/null +++ b/.scripts/playerctl.sh @@ -0,0 +1,60 @@ +#!/bin/bash +help_menu() { + echo "Script to interact with playerctl. Use only one argument at a time." + echo " - Play / Pause: playerctl.sh --play-pause" + echo " - Next: playerctl.sh --next" + echo " - Previous: playerctl.sh --prev" + echo " - Change Player: playerctl.sh --change" + echo " - Rofi Menu: playerctl.sh --rofi" + echo " - Help: playerctl.sh --help OR playerctl.sh -h" +} + +rofi_menu() { + declare -a options=( + "懶 Play / Pause - play-pause" + "怜 Next - next" + "玲 Previous - prev" + "﴾ Change Source - change" + " Back - back" + " Quit - quit" + ) + + choice=$(printf '%s\n' "${options[@]}" | rofi -dmenu -i) + option=$(printf '%s\n' "${choice}" | awk '{print $NF}') + + if [[ "$option" == "quit" ]]; then + kilall rofi + elif [[ "$option" != "back" ]]; then + main "--$option" && main "--rofi" + fi +} + +main() { + if [ $# -eq 0 ]; then + # No arguments + help_menu + else + case $1 in + --help | -h) + help_menu + ;; + --play-pause) + playerctl --player=playerctld play-pause + ;; + --next) + playerctl --player=playerctld next + ;; + --prev) + playerctl --player=playerctld previous + ;; + --change) + playerctld shift + ;; + --rofi) + rofi_menu + ;; + esac + fi +} + +main $@ diff --git a/.scripts/session.sh b/.scripts/session.sh new file mode 100755 index 0000000..7c3e604 --- /dev/null +++ b/.scripts/session.sh @@ -0,0 +1,79 @@ +#!/bin/bash +help_menu() { + echo "Script to interact with desktop session. Use only one argument at a time." + # echo " - Play / Pause: playerctl.sh --play-pause" + # echo " - Next: playerctl.sh --next" + # echo " - Previous: playerctl.sh --prev" + # echo " - Change Player: playerctl.sh --change" + # echo " - Rofi Menu: playerctl.sh --rofi" + # echo " - Help: playerctl.sh --help OR playerctl.sh -h" +} + +rofi_menu() { + declare -a options=( + "勒 Restart Dwm - restart" + " Logout - logout" + " Lock - lock" + "⏾ Sleep - sleep" + " Reboot - reboot" + " Shutdown - shutdown" + "鈴 Hibernate - hibernate" + " Back - back" + " Quit - quit" + ) + + choice=$(printf '%s\n' "${options[@]}" | rofi -dmenu -i) + option=$(printf '%s\n' "${choice}" | awk '{print $NF}') + + if [[ "$option" == "quit" ]]; then + kilall rofi + elif [[ "$option" != "back" ]]; then + main "--$option" && killall rofi + fi +} + +main() { + if [ $# -eq 0 ]; then + # No arguments + help_menu + else + case $1 in + --help | -h) + help_menu + ;; + --logout) + notify-send "Session Control" "Logging Out of Dwm" + xdotool key Super+Shift_L+q + ;; + --lock) + notify-send "Session Control" "Locking Session" + loginctl lock-session + ;; + --sleep) + notify-send "Session Control" "Going to Sleep" + systemctl suspend + ;; + --reboot) + notify-send "Session Control" "Rebooting System" + reboot + ;; + --shutdown) + notify-send "Session Control" "Shutting Down System" + shutdown now + ;; + --hibernate) + notify-send "Session Control" "Hibernating System" + systemctl hibernate + ;; + --restart) + notify-send "Session Control" "Restarting Dwm" + xdotool key Super+Control_L+Shift_L+q + ;; + --rofi) + rofi_menu + ;; + esac + fi +} + +main $@ diff --git a/.scripts/startup.sh b/.scripts/startup.sh new file mode 100755 index 0000000..18a0554 --- /dev/null +++ b/.scripts/startup.sh @@ -0,0 +1,142 @@ +#!/bin/bash +declare -a startup_array=(\ + # Background Processes + "bash /home/sravan/.scripts/deadd.sh --on" \ # Deadd Notification Center + "bash /home/sravan/.scripts/picom.sh --on" \ # Picom Compositor + "/usr/bin/greenclip daemon" \ # Greenclip Clipboard Manager + "/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1" \ # GNOME Polkit Authentication Agent + "/usr/bin/xss-lock -l -- betterlockscreen --lock" \ # Session Lock Utility + "/usr/lib/kdeconnectd --replace" \ # KDE Connect Daemon + "/usr/bin/redshift -x" \ # Redshift Blue Light Filter +) + +declare -a kill_startup_array=(\ + # Background Processes + "killall deadd-notificat" \ # Deadd Notification Center + "killall picom" \ # Picom Compositor + "killall greenclip" \ # Greenclip Clipboard Manager + "killall polkit" \ # GNOME Polkit Authentication Agent + "killall xss-lock" \ # Session Lock Utility + "killall kdeconnectd" \ # KDE Connect Daemon + "killall redshift" \ # Redshift Blue Light Filter +) + +declare -a delay_array=(\ + # System Tray Applications + "/usr/bin/redshift-gtk" \ # Redshift Blue Light Filter + "/usr/bin/blueman-applet" \ # Blueman Bluetooth Manager + "/usr/bin/nm-applet" \ # Network Manager Applet + "/usr/bin/kdeconnect-indicator" \ # KDE Connect Indicator + "/usr/bin/flameshot" \ # Flameshot Screenshot Tool + "/usr/bin/xfce4-power-manager" \ # XFCE4 Power Manager + "/usr/bin/volctl" \ # PulseAudio Volume Control + "/usr/bin/nyrna" \ # Nyrna + # System Restore Processes + "/usr/bin/autorandr --change --force" \ # Auto restore screen layout + "/usr/bin/numlockx on" \ # Enable numlock +) + +declare -a kill_delay_array=(\ + # System Tray Applications + "killall redshift" \ # Redshift Blue Light Filter + "killall blueman-applet" \ # Blueman Bluetooth Manager + "killall nm-applet" \ # Network Manager Applet + "killall kdeconnect-indicator" \ # KDE Connect Indicator + "killall flameshot" \ # Flameshot Screenshot Tool + "killall xfce4-power-manager" \ # XFCE4 Power Manager + "killall volctl" \ # PulseAudio Volume Control + "killall nyrna" \ # Nyrna +) + + +help_menu() { + echo "Main script to launch and kill startup processes. Use only one argument at a time." + # echo " - Play / Pause: playerctl.sh --play-pause" + # echo " - Next: playerctl.sh --next" + # echo " - Previous: playerctl.sh --prev" + # echo " - Change Player: playerctl.sh --change" + # echo " - Rofi Menu: playerctl.sh --rofi" + # echo " - Help: playerctl.sh --help OR playerctl.sh -h" +} + +rofi_menu() { + declare -a options=( + " Launch Startup Processes - startup" + "羽 Launch Delayed Processes - delay" + " Kill Startup Processes - kill-startup" + " Kill Delayed Processes - kill-delay" + " Back - back" + " Quit - quit" + ) + + choice=$(printf '%s\n' "${options[@]}" | rofi -dmenu -i) + option=$(printf '%s\n' "${choice}" | awk '{print $NF}') + + if [[ "$option" == "quit" ]]; then + kilall rofi + elif [[ "$option" != "back" ]]; then + main "--$option" && main "--rofi" + fi +} + +main() { + if [ $# -eq 0 ]; then + # No arguments + help_menu + else + case $1 in + --help | -h) + help_menu + ;; + --startup) + for i in "${startup_array[@]}" + do + if ! command -v $i > /dev/null + then + do_nothing() { :; } + else + $i & + fi + done + ;; + --delay) + for i in "${delay_array[@]}" + do + if ! command -v $i > /dev/null + then + do_nothing() { :; } + else + $i & + fi + done + ;; + --kill-startup) + for i in "${kill_startup_array[@]}" + do + if ! command -v $i > /dev/null + then + do_nothing() { :; } + else + $i & + fi + done + ;; + --kill-delay) + for i in "${kill_delay_array[@]}" + do + if ! command -v $i > /dev/null + then + do_nothing() { :; } + else + $i & + fi + done + ;; + --rofi) + rofi_menu + ;; + esac + fi +} + +main $@ diff --git a/.scripts/system76-power.sh b/.scripts/system76-power.sh new file mode 100755 index 0000000..df9d018 --- /dev/null +++ b/.scripts/system76-power.sh @@ -0,0 +1,133 @@ +#!/bin/bash +help_menu() { + echo "Script to interact with system76-power. Use only one argument at a time." + # echo " - Play / Pause: playerctl.sh --play-pause" + # echo " - Next: playerctl.sh --next" + # echo " - Previous: playerctl.sh --prev" + # echo " - Change Player: playerctl.sh --change" + # echo " - Rofi Menu: playerctl.sh --rofi" + # echo " - Help: playerctl.sh --help OR playerctl.sh -h" +} + +rofi_menu() { + declare -a options=( + " Switchable Graphics - rofi-graphics" + " Performance Profile - rofi-profile" + " Back - back" + " Quit - quit" + ) + + choice=$(printf '%s\n' "${options[@]}" | rofi -dmenu -i) + option=$(printf '%s\n' "${choice}" | awk '{print $NF}') + + if [[ "$option" == "quit" ]]; then + kilall rofi + elif [[ "$option" != "back" ]]; then + main "--$option" && main "--rofi" + fi +} + +rofi_graphics_menu() { + declare -a options=( + "Query Current Graphics - graphics-query" + "Switch to Compute Mode - graphics-compute" + "Switch to Hybrid Mode - graphics-hybrid" + "Switch to Integrated Mode - graphics-integrated" + "Switch to Nvidia Mode - graphics-nvidia" + " Back - back" + " Quit - quit" + ) + + choice=$(printf '%s\n' "${options[@]}" | rofi -dmenu -i) + option=$(printf '%s\n' "${choice}" | awk '{print $NF}') + + if [[ "$option" == "quit" ]]; then + kilall rofi + elif [[ "$option" != "back" ]]; then + main "--$option" && main "--rofi-graphics" + fi +} + +rofi_profile_menu() { + declare -a options=( + "Query Current Profile - profile-query" + "Switch to Battery Mode - profile-battery" + "Switch to Balanced Mode - profile-balanced" + "Switch to Performance Mode - profile-performance" + " Back - back" + " Quit - quit" + ) + + choice=$(printf '%s\n' "${options[@]}" | rofi -dmenu -i) + option=$(printf '%s\n' "${choice}" | awk '{print $NF}') + + if [[ "$option" == "quit" ]]; then + kilall rofi + elif [[ "$option" != "back" ]]; then + main "--$option" && main "--rofi-profile" + fi +} + +main() { + if [ $# -eq 0 ]; then + # No arguments + help_menu + else + case $1 in + --help | -h) + help_menu + ;; + --rofi-graphics) + rofi_graphics_menu + ;; + --graphics-query) + current_graphics=$(pkexec system76-power graphics) + notify-send "System76-Power Graphics" "$current_graphics" + ;; + --graphics-compute) + notify-send "System76-Power Graphics" "Switching to Compute Graphics..." + pkexec system76-power graphics compute + notify-send -u critical -t 0 "System76-Power Graphics" "Please restart computer to switch graphics" + ;; + --graphics-hybrid) + notify-send "System76-Power Graphics" "Switching to Hybrid Graphics..." + pkexec system76-power graphics hybrid + notify-send -u critical -t 0 "System76-Power Graphics" "Please restart computer to switch graphics" + ;; + --graphics-integrated) + notify-send "System76-Power Graphics" "Switching to Integrated Graphics..." + pkexec system76-power graphics integrated + notify-send -u critical -t 0 "System76-Power Graphics" "Please restart computer to switch graphics" + ;; + --graphics-nvidia) + notify-send "System76-Power Graphics" "Switching to Nvidia Graphics..." + pkexec system76-power graphics nvidia + notify-send -u critical -t 0 "System76-Power Graphics" "Please restart computer to switch graphics" + ;; + --rofi-profile) + rofi_profile_menu + ;; + --profile-query) + current_profile=$(pkexec system76-power profile) + notify-send "System76-Power Profile" "$current_profile" + ;; + --profile-battery) + pkexec system76-power profile battery + notify-send "System76-Power Profile" "Switched to Battery Profile" + ;; + --profile-balanced) + pkexec system76-power profile balanced + notify-send "System76-Power Profile" "Switched to Balanced Profile" + ;; + --profile-performance) + pkexec system76-power profile performance + notify-send "System76-Power Profile" "Switched to Performance Profile" + ;; + --rofi) + rofi_menu + ;; + esac + fi +} + +main $@ diff --git a/.scripts/trackpad.sh b/.scripts/trackpad.sh new file mode 100755 index 0000000..cc7d7d5 --- /dev/null +++ b/.scripts/trackpad.sh @@ -0,0 +1,11 @@ +#!/bin/bash +trackpad_id=13 + +if xinput list-props $trackpad_id | grep "Device Enabled (.*):.*1" >/dev/null +then + xinput disable $trackpad_id + notify-send -u low -i mouse "Trackpad disabled" +else + xinput enable $trackpad_id + notify-send -u low -i mouse "Trackpad enabled" +fi diff --git a/.themes/Dracula b/.themes/Dracula deleted file mode 160000 index ab2efe3..0000000 --- a/.themes/Dracula +++ /dev/null @@ -1 +0,0 @@ -Subproject commit ab2efe3ff5a1ce06a9f49c5d71be4a819b04a105 diff --git a/.themes/dracula-blender b/.themes/dracula-blender new file mode 160000 index 0000000..624a3c5 --- /dev/null +++ b/.themes/dracula-blender @@ -0,0 +1 @@ +Subproject commit 624a3c5065e57a2f1dc160b6e827ccb7c12f255e diff --git a/.themes/dracula-fish b/.themes/dracula-fish new file mode 160000 index 0000000..28db361 --- /dev/null +++ b/.themes/dracula-fish @@ -0,0 +1 @@ +Subproject commit 28db361b55bb49dbfd7a679ebec9140be8c2d593 diff --git a/.themes/dracula-freecad b/.themes/dracula-freecad new file mode 160000 index 0000000..30b19d6 --- /dev/null +++ b/.themes/dracula-freecad @@ -0,0 +1 @@ +Subproject commit 30b19d6e6e007144ffac871b3a79a8ace0206d96 diff --git a/.themes/dracula-gnome-terminal b/.themes/dracula-gnome-terminal new file mode 160000 index 0000000..4dfebf1 --- /dev/null +++ b/.themes/dracula-gnome-terminal @@ -0,0 +1 @@ +Subproject commit 4dfebf1c4a8e52a89353e0646b6f241b006868e8 diff --git a/.themes/dracula-gtk b/.themes/dracula-gtk new file mode 160000 index 0000000..e369c8e --- /dev/null +++ b/.themes/dracula-gtk @@ -0,0 +1 @@ +Subproject commit e369c8e230b5b8d090677c2254509fcef61946aa diff --git a/.themes/dracula-kitty b/.themes/dracula-kitty new file mode 160000 index 0000000..6d6239a --- /dev/null +++ b/.themes/dracula-kitty @@ -0,0 +1 @@ +Subproject commit 6d6239abe975e168e6ffb8b19c03a997bbe88fe6 diff --git a/.themes/dracula-latex b/.themes/dracula-latex new file mode 160000 index 0000000..bff3dbb --- /dev/null +++ b/.themes/dracula-latex @@ -0,0 +1 @@ +Subproject commit bff3dbbffd63a8242c74f79c07982ee2b0dfd269 diff --git a/.themes/dracula-libreoffice b/.themes/dracula-libreoffice new file mode 160000 index 0000000..cbe293c --- /dev/null +++ b/.themes/dracula-libreoffice @@ -0,0 +1 @@ +Subproject commit cbe293cb92b8cec80bc8a473289647d98e9df4da diff --git a/.themes/dracula-matlab b/.themes/dracula-matlab new file mode 160000 index 0000000..bb30e9b --- /dev/null +++ b/.themes/dracula-matlab @@ -0,0 +1 @@ +Subproject commit bb30e9b4153eb52c78faad93c5ef3403d3d850b3 diff --git a/.themes/dracula-matplotlib b/.themes/dracula-matplotlib new file mode 160000 index 0000000..cbc8019 --- /dev/null +++ b/.themes/dracula-matplotlib @@ -0,0 +1 @@ +Subproject commit cbc801991b6054e15075d7eeb909b5c760fc2842 diff --git a/.themes/dracula-qbittorrent b/.themes/dracula-qbittorrent new file mode 160000 index 0000000..3b8bc6f --- /dev/null +++ b/.themes/dracula-qbittorrent @@ -0,0 +1 @@ +Subproject commit 3b8bc6f5adb41d79391006649e847035287449d4 diff --git a/.local/share/Steam/skins/Dracula b/.themes/dracula-steam similarity index 100% rename from .local/share/Steam/skins/Dracula rename to .themes/dracula-steam diff --git a/.themes/dracula-tty b/.themes/dracula-tty new file mode 160000 index 0000000..f0aa77e --- /dev/null +++ b/.themes/dracula-tty @@ -0,0 +1 @@ +Subproject commit f0aa77e23896c0b60ad342f89405e5c7d2296019 diff --git a/.themes/dracula-xournalpp b/.themes/dracula-xournalpp new file mode 160000 index 0000000..045fa9a --- /dev/null +++ b/.themes/dracula-xournalpp @@ -0,0 +1 @@ +Subproject commit 045fa9a477e923c5f9576da348014e202225974e diff --git a/.themes/fallout-grub-theme b/.themes/fallout-grub-theme new file mode 160000 index 0000000..211348f --- /dev/null +++ b/.themes/fallout-grub-theme @@ -0,0 +1 @@ +Subproject commit 211348f7fe7002a144c709dc3eb5d04f4acde4dd diff --git a/.vim/pack/themes/start/dracula b/.vim/pack/themes/start/dracula index 494dbe9..d1ff992 160000 --- a/.vim/pack/themes/start/dracula +++ b/.vim/pack/themes/start/dracula @@ -1 +1 @@ -Subproject commit 494dbe9d4effff140ffe6743b614d900a0f34dd7 +Subproject commit d1ff992bf605c098577b7f0e632e3ea887b71520 diff --git a/.vim/pack/themes/start/dracula_pro/vim/.DS_Store b/.vim/pack/themes/start/dracula_pro/vim/.DS_Store new file mode 100644 index 0000000..ed45eba Binary files /dev/null and b/.vim/pack/themes/start/dracula_pro/vim/.DS_Store differ diff --git a/.vim/pack/themes/start/dracula_pro/vim/.gitignore b/.vim/pack/themes/start/dracula_pro/vim/.gitignore new file mode 100644 index 0000000..926ccaa --- /dev/null +++ b/.vim/pack/themes/start/dracula_pro/vim/.gitignore @@ -0,0 +1 @@ +doc/tags diff --git a/.vim/pack/themes/start/dracula_pro/vim/INSTALL.md b/.vim/pack/themes/start/dracula_pro/vim/INSTALL.md new file mode 100644 index 0000000..9a74fdc --- /dev/null +++ b/.vim/pack/themes/start/dracula_pro/vim/INSTALL.md @@ -0,0 +1,63 @@ +### [Vim](http://www.vim.org/) + +#### Install + +These are the default instructions using Vim 8's `|packages|` feature. + +1. Create theme folder (in case you don't have yet): + +``` +mkdir -p ~/.vim/pack/themes/start +``` + +In case you're using NeoVim: + +``` +mkdir -p ~/.local/share/nvim/site/pack/themes/start +``` + +2. Copy the `vim` folder and rename to "dracula_pro": + +``` +cp -r vim ~/.vim/pack/themes/start/dracula_pro +``` + +**NeoVim** + +In case you're using NeoVim, here are the instructions. + +1. Create theme folder (in case you don't have yet): + +``` +mkdir -p ~/.local/share/nvim/site/pack/themes/start +``` + +2. Copy the `vim` folder and rename to "dracula_pro": + +``` +cp -r vim ~/.local/share/nvim/site/pack/themes/start/dracula_pro +``` + +#### Activate + +1. Create configuration file (in case you don't have yet): + +``` +vim ~/.vimrc +``` + +Or `.nvimrc` if you're using NeoVim. + +2. Edit the `~/.vimrc` file with the following content: + +``` +packadd! dracula_pro + +syntax enable + +let g:dracula_colorterm = 0 + +colorscheme dracula_pro +``` + +P.S.: You need a 256-color or truecolor terminal and you may want one that supports xterm sequences for :terminal. \ No newline at end of file diff --git a/.vim/pack/themes/start/dracula_pro/vim/after/plugin/dracula_pro.vim b/.vim/pack/themes/start/dracula_pro/vim/after/plugin/dracula_pro.vim new file mode 100644 index 0000000..b4178d3 --- /dev/null +++ b/.vim/pack/themes/start/dracula_pro/vim/after/plugin/dracula_pro.vim @@ -0,0 +1,45 @@ +if dracula_pro#should_abort() + finish +endif + +" Fzf: {{{ +if exists('g:loaded_fzf') && ! exists('g:fzf_colors') + let g:fzf_colors = { + \ 'fg': ['fg', 'Normal'], + \ 'bg': ['bg', 'Normal'], + \ 'hl': ['fg', 'Search'], + \ 'fg+': ['fg', 'Normal'], + \ 'bg+': ['bg', 'Normal'], + \ 'hl+': ['fg', 'DraculaOrange'], + \ 'info': ['fg', 'DraculaPurple'], + \ 'border': ['fg', 'Ignore'], + \ 'prompt': ['fg', 'DraculaGreen'], + \ 'pointer': ['fg', 'Exception'], + \ 'marker': ['fg', 'Keyword'], + \ 'spinner': ['fg', 'Label'], + \ 'header': ['fg', 'Comment'], + \} +endif +"}}} +" ALE: {{{ +if exists('g:ale_enabled') + hi! link ALEError DraculaErrorLine + hi! link ALEWarning DraculaWarnLine + hi! link ALEInfo DraculaInfoLine + + hi! link ALEErrorSign DraculaRed + hi! link ALEWarningSign DraculaOrange + hi! link ALEInfoSign DraculaCyan + + hi! link ALEVirtualTextError Comment + hi! link ALEVirtualTextWarning Comment +endif +" }}} +" CtrlP: {{{ +if exists('g:loaded_ctrlp') + hi! link CtrlPMatch IncSearch + hi! link CtrlPBufferHid Normal +endif +" }}} + +" vim: fdm=marker ts=2 sts=2 sw=2 fdl=0: diff --git a/.vim/pack/themes/start/dracula_pro/vim/after/syntax/css.vim b/.vim/pack/themes/start/dracula_pro/vim/after/syntax/css.vim new file mode 100644 index 0000000..f0ba8d2 --- /dev/null +++ b/.vim/pack/themes/start/dracula_pro/vim/after/syntax/css.vim @@ -0,0 +1,15 @@ +if dracula_pro#should_abort('css') + finish +endif + +hi! link cssAttrComma Delimiter +hi! link cssAttrRegion DraculaPink +hi! link cssAttributeSelector DraculaGreenItalic +hi! link cssBraces Delimiter +hi! link cssFunctionComma Delimiter +hi! link cssNoise DraculaPink +hi! link cssProp DraculaCyan +hi! link cssPseudoClass DraculaPink +hi! link cssPseudoClassId DraculaGreenItalic +hi! link cssUnitDecorators DraculaPink +hi! link cssVendor DraculaGreenItalic diff --git a/.vim/pack/themes/start/dracula_pro/vim/after/syntax/gitcommit.vim b/.vim/pack/themes/start/dracula_pro/vim/after/syntax/gitcommit.vim new file mode 100644 index 0000000..2124617 --- /dev/null +++ b/.vim/pack/themes/start/dracula_pro/vim/after/syntax/gitcommit.vim @@ -0,0 +1,12 @@ +if dracula_pro#should_abort('gitcommit') + finish +endif + +" The following two are misnomers. Colors are correct. +hi! link diffFile DraculaGreen +hi! link diffNewFile DraculaRed + +hi! link diffAdded DraculaGreen +hi! link diffLine DraculaCyanItalic +hi! link diffRemoved DraculaRed + diff --git a/.vim/pack/themes/start/dracula_pro/vim/after/syntax/html.vim b/.vim/pack/themes/start/dracula_pro/vim/after/syntax/html.vim new file mode 100644 index 0000000..02d6333 --- /dev/null +++ b/.vim/pack/themes/start/dracula_pro/vim/after/syntax/html.vim @@ -0,0 +1,9 @@ +if dracula_pro#should_abort('html') + finish +endif + +hi! link htmlTag DraculaFg +hi! link htmlArg DraculaGreenItalic +hi! link htmlTitle DraculaFg +hi! link htmlH1 DraculaFg +hi! link htmlSpecialChar DraculaPurple diff --git a/.vim/pack/themes/start/dracula_pro/vim/after/syntax/javascript.vim b/.vim/pack/themes/start/dracula_pro/vim/after/syntax/javascript.vim new file mode 100644 index 0000000..d2f1ae5 --- /dev/null +++ b/.vim/pack/themes/start/dracula_pro/vim/after/syntax/javascript.vim @@ -0,0 +1,25 @@ +if dracula_pro#should_abort('javascript') + finish +endif + +hi! link javaScriptBraces Delimiter +hi! link javaScriptNumber Constant +hi! link javaScriptNull Constant +hi! link javaScriptFunction Keyword + +" pangloss/vim-javascript {{{ + +hi! link jsArrowFunction Operator +hi! link jsClassMethodType Keyword +hi! link jsDestructuringAssignment DraculaOrangeItalic +hi! link jsDocParam DraculaOrangeItalic +hi! link jsDocTags Keyword +hi! link jsDocType Type +hi! link jsDocTypeBrackets DraculaCyan +hi! link jsFuncArgOperator Operator +hi! link jsFunction Keyword +hi! link jsTemplateBraces Special + +"}}} + +" vim: fdm=marker ts=2 sts=2 sw=2 fdl=0: diff --git a/.vim/pack/themes/start/dracula_pro/vim/after/syntax/json.vim b/.vim/pack/themes/start/dracula_pro/vim/after/syntax/json.vim new file mode 100644 index 0000000..ef40288 --- /dev/null +++ b/.vim/pack/themes/start/dracula_pro/vim/after/syntax/json.vim @@ -0,0 +1,6 @@ +if dracula_pro#should_abort('json') + finish +endif + +hi! link jsonKeyword DraculaCyan +hi! link jsonKeywordMatch DraculaPink diff --git a/.vim/pack/themes/start/dracula_pro/vim/after/syntax/markdown.vim b/.vim/pack/themes/start/dracula_pro/vim/after/syntax/markdown.vim new file mode 100644 index 0000000..2dd36ee --- /dev/null +++ b/.vim/pack/themes/start/dracula_pro/vim/after/syntax/markdown.vim @@ -0,0 +1,50 @@ +if dracula_pro#should_abort('markdown', 'mkd') + finish +endif + +if b:current_syntax ==# 'mkd' +" plasticboy/vim-markdown {{{1 + hi! link htmlBold DraculaOrangeBold + hi! link htmlBoldItalic DraculaOrangeBoldItalic + hi! link htmlH1 DraculaPurpleBold + hi! link htmlItalic DraculaYellowItalic + hi! link mkdBlockquote DraculaYellowItalic + hi! link mkdBold DraculaOrangeBold + hi! link mkdBoldItalic DraculaOrangeBoldItalic + hi! link mkdCode DraculaGreen + hi! link mkdCodeEnd DraculaGreen + hi! link mkdCodeStart DraculaGreen + hi! link mkdHeading DraculaPurpleBold + hi! link mkdInlineUrl DraculaLink + hi! link mkdItalic DraculaYellowItalic + hi! link mkdLink DraculaPink + hi! link mkdListItem DraculaCyan + hi! link mkdRule DraculaComment + hi! link mkdUrl DraculaLink +"}}}1 +elseif b:current_syntax ==# 'markdown' +" Builtin: {{{1 + hi! link markdownBlockquote DraculaCyan + hi! link markdownBold DraculaOrangeBold + hi! link markdownBoldItalic DraculaOrangeBoldItalic + hi! link markdownCodeBlock DraculaGreen + hi! link markdownCode DraculaGreen + hi! link markdownCodeDelimiter DraculaGreen + hi! link markdownH1 DraculaPurpleBold + hi! link markdownH2 markdownH1 + hi! link markdownH3 markdownH1 + hi! link markdownH4 markdownH1 + hi! link markdownH5 markdownH1 + hi! link markdownH6 markdownH1 + hi! link markdownHeadingDelimiter markdownH1 + hi! link markdownHeadingRule markdownH1 + hi! link markdownItalic DraculaYellowItalic + hi! link markdownLinkText DraculaPink + hi! link markdownListMarker DraculaCyan + hi! link markdownOrderedListMarker DraculaCyan + hi! link markdownRule DraculaComment + hi! link markdownUrl DraculaLink +"}}} +endif + +" vim: fdm=marker ts=2 sts=2 sw=2 fdl=0: diff --git a/.vim/pack/themes/start/dracula_pro/vim/after/syntax/ocaml.vim b/.vim/pack/themes/start/dracula_pro/vim/after/syntax/ocaml.vim new file mode 100644 index 0000000..496cd36 --- /dev/null +++ b/.vim/pack/themes/start/dracula_pro/vim/after/syntax/ocaml.vim @@ -0,0 +1,7 @@ +if dracula_pro#should_abort('ocaml') + finish +endif + +hi! link ocamlModule Type +hi! link ocamlModPath Normal +hi! link ocamlLabel DraculaOrangeItalic diff --git a/.vim/pack/themes/start/dracula_pro/vim/after/syntax/perl.vim b/.vim/pack/themes/start/dracula_pro/vim/after/syntax/perl.vim new file mode 100644 index 0000000..00aed71 --- /dev/null +++ b/.vim/pack/themes/start/dracula_pro/vim/after/syntax/perl.vim @@ -0,0 +1,38 @@ +if dracula_pro#should_abort('perl') + finish +endif + +" Regex +hi! link perlMatchStartEnd DraculaRed + +" Builtin functions +hi! link perlOperator DraculaCyan +hi! link perlStatementFiledesc DraculaCyan +hi! link perlStatementFiles DraculaCyan +hi! link perlStatementFlow DraculaCyan +hi! link perlStatementHash DraculaCyan +hi! link perlStatementIOfunc DraculaCyan +hi! link perlStatementIPC DraculaCyan +hi! link perlStatementList DraculaCyan +hi! link perlStatementMisc DraculaCyan +hi! link perlStatementNetwork DraculaCyan +hi! link perlStatementNumeric DraculaCyan +hi! link perlStatementProc DraculaCyan +hi! link perlStatementPword DraculaCyan +hi! link perlStatementRegexp DraculaCyan +hi! link perlStatementScalar DraculaCyan +hi! link perlStatementSocket DraculaCyan +hi! link perlStatementTime DraculaCyan +hi! link perlStatementVector DraculaCyan + +" Highlighting for quoting constructs, tied to existing option in vim-perl +if get(g:, 'perl_string_as_statement', 0) + hi! link perlStringStartEnd DraculaRed +endif + +" Signatures +hi! link perlSignature DraculaOrangeItalic +hi! link perlSubPrototype DraculaOrangeItalic + +" Hash keys +hi! link perlVarSimpleMemberName DraculaPurple diff --git a/.vim/pack/themes/start/dracula_pro/vim/after/syntax/php.vim b/.vim/pack/themes/start/dracula_pro/vim/after/syntax/php.vim new file mode 100644 index 0000000..e1ca7d6 --- /dev/null +++ b/.vim/pack/themes/start/dracula_pro/vim/after/syntax/php.vim @@ -0,0 +1,10 @@ +if dracula_pro#should_abort('php') + finish +endif + +hi! link phpClass Type +hi! link phpClasses Type +hi! link phpDocTags DraculaCyanItalic +hi! link phpFunction Function +hi! link phpParent Normal +hi! link phpSpecialFunction DraculaCyan diff --git a/.vim/pack/themes/start/dracula_pro/vim/after/syntax/plantuml.vim b/.vim/pack/themes/start/dracula_pro/vim/after/syntax/plantuml.vim new file mode 100644 index 0000000..7faa5d7 --- /dev/null +++ b/.vim/pack/themes/start/dracula_pro/vim/after/syntax/plantuml.vim @@ -0,0 +1,13 @@ +if dracula_pro#should_abort('plantuml') + finish +endif + +hi! link plantumlClassPrivate SpecialKey +hi! link plantumlClassProtected DraculaOrange +hi! link plantumlClassPublic Function +hi! link plantumlColonLine String +hi! link plantumlDirectedOrVerticalArrowLR Constant +hi! link plantumlDirectedOrVerticalArrowRL Constant +hi! link plantumlHorizontalArrow Constant +hi! link plantumlSkinParamKeyword DraculaCyan +hi! link plantumlTypeKeyword Keyword diff --git a/.vim/pack/themes/start/dracula_pro/vim/after/syntax/python.vim b/.vim/pack/themes/start/dracula_pro/vim/after/syntax/python.vim new file mode 100644 index 0000000..869349f --- /dev/null +++ b/.vim/pack/themes/start/dracula_pro/vim/after/syntax/python.vim @@ -0,0 +1,11 @@ +if dracula_pro#should_abort('python') + finish +endif + +hi! link pythonBuiltinObj Type +hi! link pythonBuiltinObject Type +hi! link pythonBuiltinType Type +hi! link pythonClassVar DraculaPurpleItalic +hi! link pythonExClass Type +hi! link pythonNone Type +hi! link pythonRun Comment diff --git a/.vim/pack/themes/start/dracula_pro/vim/after/syntax/ruby.vim b/.vim/pack/themes/start/dracula_pro/vim/after/syntax/ruby.vim new file mode 100644 index 0000000..34f07d3 --- /dev/null +++ b/.vim/pack/themes/start/dracula_pro/vim/after/syntax/ruby.vim @@ -0,0 +1,16 @@ +if dracula_pro#should_abort('ruby') + finish +endif + +if ! exists('g:ruby_operators') + let g:ruby_operators=1 +endif + +hi! link rubyBlockArgument DraculaOrangeItalic +hi! link rubyBlockParameter DraculaOrangeItalic +hi! link rubyCurlyBlock DraculaPink +hi! link rubyGlobalVariable DraculaPurple +hi! link rubyInstanceVariable DraculaPurpleItalic +hi! link rubyInterpolationDelimiter DraculaPink +hi! link rubyRegexpDelimiter DraculaRed +hi! link rubyStringDelimiter DraculaYellow diff --git a/.vim/pack/themes/start/dracula_pro/vim/after/syntax/rust.vim b/.vim/pack/themes/start/dracula_pro/vim/after/syntax/rust.vim new file mode 100644 index 0000000..f5a9fc6 --- /dev/null +++ b/.vim/pack/themes/start/dracula_pro/vim/after/syntax/rust.vim @@ -0,0 +1,5 @@ +if dracula_pro#should_abort('rust') + finish +endif + +hi! link rustCommentLineDoc Comment diff --git a/.vim/pack/themes/start/dracula_pro/vim/after/syntax/sass.vim b/.vim/pack/themes/start/dracula_pro/vim/after/syntax/sass.vim new file mode 100644 index 0000000..d3e33d8 --- /dev/null +++ b/.vim/pack/themes/start/dracula_pro/vim/after/syntax/sass.vim @@ -0,0 +1,12 @@ +if dracula_pro#should_abort('sass') + finish +endif + +hi! link sassClass cssClassName +hi! link sassClassChar cssClassNameDot +hi! link sassId cssIdentifier +hi! link sassIdChar cssIdentifier +hi! link sassInterpolationDelimiter DraculaPink +hi! link sassMixinName Function +hi! link sassProperty cssProp +hi! link sassVariableAssignment Operator diff --git a/.vim/pack/themes/start/dracula_pro/vim/after/syntax/sh.vim b/.vim/pack/themes/start/dracula_pro/vim/after/syntax/sh.vim new file mode 100644 index 0000000..2238952 --- /dev/null +++ b/.vim/pack/themes/start/dracula_pro/vim/after/syntax/sh.vim @@ -0,0 +1,8 @@ +if dracula_pro#should_abort('bash', 'ksh', 'posix', 'sh') + finish +endif + +hi! link shCommandSub NONE +hi! link shEscape DraculaRed +hi! link shParen NONE +hi! link shParenError NONE diff --git a/.vim/pack/themes/start/dracula_pro/vim/after/syntax/tex.vim b/.vim/pack/themes/start/dracula_pro/vim/after/syntax/tex.vim new file mode 100644 index 0000000..54f9c5e --- /dev/null +++ b/.vim/pack/themes/start/dracula_pro/vim/after/syntax/tex.vim @@ -0,0 +1,17 @@ +if dracula_pro#should_abort('tex') + finish +endif + +hi! link texBeginEndName DraculaOrangeItalic +hi! link texBoldItalStyle DraculaOrangeBoldItalic +hi! link texBoldStyle DraculaOrangeBold +hi! link texInputFile DraculaOrangeItalic +hi! link texItalStyle DraculaYellowItalic +hi! link texLigature DraculaPurple +hi! link texMath DraculaPurple +hi! link texMathMatcher DraculaPurple +hi! link texMathSymbol DraculaPurple +hi! link texRefZone DraculaBgDarker +hi! link texSpecialChar DraculaPurple +hi! link texSubscripts DraculaPurple +hi! link texTitle DraculaFgBold diff --git a/.vim/pack/themes/start/dracula_pro/vim/after/syntax/typescript.vim b/.vim/pack/themes/start/dracula_pro/vim/after/syntax/typescript.vim new file mode 100644 index 0000000..fc2ddd8 --- /dev/null +++ b/.vim/pack/themes/start/dracula_pro/vim/after/syntax/typescript.vim @@ -0,0 +1,57 @@ +if dracula_pro#should_abort('typescript', 'typescriptreact') + finish +endif + +" HerringtonDarkholme/yats.vim {{{ + +hi! link typescriptAliasDeclaration Type +hi! link typescriptArrayMethod Function +hi! link typescriptArrowFunc Operator +hi! link typescriptArrowFuncArg DraculaOrangeItalic +hi! link typescriptAssign Operator +hi! link typescriptBOMWindowProp Constant +hi! link typescriptBinaryOp Operator +hi! link typescriptBraces Delimiter +hi! link typescriptCall typescriptArrowFuncArg +hi! link typescriptClassHeritage Type +hi! link typescriptClassName Type +hi! link typescriptDateMethod DraculaCyan +hi! link typescriptDateStaticMethod Function +hi! link typescriptDecorator DraculaGreenItalic +hi! link typescriptDefaultParam Operator +hi! link typescriptES6SetMethod DraculaCyan +hi! link typescriptEndColons Delimiter +hi! link typescriptEnum Type +hi! link typescriptEnumKeyword Keyword +hi! link typescriptFuncComma Delimiter +hi! link typescriptFuncKeyword Keyword +hi! link typescriptFuncType DraculaOrangeItalic +hi! link typescriptFuncTypeArrow Operator +hi! link typescriptGlobal Type +hi! link typescriptGlobalMethod DraculaCyan +hi! link typescriptGlobalObjects Type +hi! link typescriptIdentifier DraculaPurpleItalic +hi! link typescriptInterfaceHeritage Type +hi! link typescriptInterfaceName Type +hi! link typescriptInterpolationDelimiter Keyword +hi! link typescriptKeywordOp Keyword +hi! link typescriptLogicSymbols Operator +hi! link typescriptMember Identifier +hi! link typescriptMemberOptionality Special +hi! link typescriptObjectColon Special +hi! link typescriptObjectLabel Identifier +hi! link typescriptObjectSpread Operator +hi! link typescriptOperator Operator +hi! link typescriptParamImpl DraculaOrangeItalic +hi! link typescriptParens Delimiter +hi! link typescriptPredefinedType Type +hi! link typescriptRestOrSpread Operator +hi! link typescriptTernaryOp Operator +hi! link typescriptTypeAnnotation Special +hi! link typescriptTypeCast Operator +hi! link typescriptTypeParameter DraculaOrangeItalic +hi! link typescriptTypeReference Type +hi! link typescriptUnaryOp Operator +hi! link typescriptVariable Keyword + +" }}} diff --git a/.vim/pack/themes/start/dracula_pro/vim/after/syntax/typescriptreact.vim b/.vim/pack/themes/start/dracula_pro/vim/after/syntax/typescriptreact.vim new file mode 100644 index 0000000..9fff356 --- /dev/null +++ b/.vim/pack/themes/start/dracula_pro/vim/after/syntax/typescriptreact.vim @@ -0,0 +1,10 @@ +if dracula_pro#should_abort('typescriptreact') + finish +endif + +runtime! syntax/typescript.vim + +hi! link tsxAttrib DraculaGreenItalic +hi! link tsxEqual Operator +hi! link tsxIntrinsicTagName Keyword +hi! link tsxTagName Type diff --git a/.vim/pack/themes/start/dracula_pro/vim/after/syntax/vim.vim b/.vim/pack/themes/start/dracula_pro/vim/after/syntax/vim.vim new file mode 100644 index 0000000..c2cc2ee --- /dev/null +++ b/.vim/pack/themes/start/dracula_pro/vim/after/syntax/vim.vim @@ -0,0 +1,14 @@ +if dracula_pro#should_abort('vim') + finish +endif + +hi! link vimAutoCmdSfxList Type +hi! link vimAutoEventList Type +hi! link vimEnvVar Constant +hi! link vimFunction Function +hi! link vimHiBang Keyword +hi! link vimOption Type +hi! link vimSetMod Keyword +hi! link vimSetSep Delimiter +hi! link vimUserAttrbCmpltFunc Function +hi! link vimUserFunc Function diff --git a/.vim/pack/themes/start/dracula_pro/vim/after/syntax/xml.vim b/.vim/pack/themes/start/dracula_pro/vim/after/syntax/xml.vim new file mode 100644 index 0000000..945df52 --- /dev/null +++ b/.vim/pack/themes/start/dracula_pro/vim/after/syntax/xml.vim @@ -0,0 +1,13 @@ +if dracula_pro#should_abort('xml') + finish +endif + +hi! link xmlAttrib DraculaGreenItalic +hi! link xmlEqual Operator +hi! link xmlTag Delimiter +hi! link xmlTagName Statement + +" Fixes missing highlight over end tags +syn region xmlTagName + \ matchgroup=xmlTag start=+"']\@=+ + \ matchgroup=xmlTag end=+>+ diff --git a/.vim/pack/themes/start/dracula_pro/vim/after/syntax/yaml.vim b/.vim/pack/themes/start/dracula_pro/vim/after/syntax/yaml.vim new file mode 100644 index 0000000..6e9524d --- /dev/null +++ b/.vim/pack/themes/start/dracula_pro/vim/after/syntax/yaml.vim @@ -0,0 +1,12 @@ +if dracula_pro#should_abort('yaml') + finish +endif + +hi! link yamlAlias DraculaGreenItalicUnderline +hi! link yamlAnchor DraculaPinkItalic +hi! link yamlBlockMappingKey DraculaCyan +hi! link yamlFlowCollection DraculaPink +hi! link yamlFlowIndicator Delimiter +hi! link yamlNodeTag DraculaPink +hi! link yamlPlainScalar DraculaYellow + diff --git a/.vim/pack/themes/start/dracula_pro/vim/autoload/airline/themes/dracula_pro.vim b/.vim/pack/themes/start/dracula_pro/vim/autoload/airline/themes/dracula_pro.vim new file mode 100644 index 0000000..d079cdd --- /dev/null +++ b/.vim/pack/themes/start/dracula_pro/vim/autoload/airline/themes/dracula_pro.vim @@ -0,0 +1,150 @@ +" Helpers: {{{ + +" Takes a foreground color name, background color name, and optionally one or +" more attr-list items as input, transforms it to the format accepted by +" airline#themes#generate_color_map and returns that value +func! s:clr(fg, bg, ...) + let l:fg = g:dracula_pro#palette[a:fg] + let l:bg = g:dracula_pro#palette[a:bg] + return [ l:fg[0], l:bg[0], l:fg[1], l:bg[1] ] + + \ filter(copy(a:000), 'type(v:val) == 1 && len(v:val) > 0') +endfunc + +" Takes three ['fg', 'bg'] color lists and optionally a dictionary of extra +" key-value pairs and returns the value generated by +" airline#themes#generate_color_map after optionally merging the dictionary of +" extra key-value pairs. +" +" a:a -> airline_a, airline_x +" a:b -> airline_b, airline_y +" a:c -> airline_c, airline_z +func! s:color_map(a, b, c, ...) + if a:0 == 0 + return call('airline#themes#generate_color_map', [call('s:clr', a:a), call('s:clr', a:b), call('s:clr', a:c)]) + else + return call('extend', [ call('airline#themes#generate_color_map', [call('s:clr', a:a), call('s:clr', a:b), call('s:clr', a:c)]) ] + a:000) + endif +endfunc + +"}}} + +let g:airline#themes#dracula_pro#palette = { +\ 'normal': s:color_map( +\ ['bg', 'purple'], +\ ['fg', 'comment'], +\ ['fg', 'selection'], +\ { +\ 'airline_warning': s:clr('bg', 'orange'), +\ 'airline_error': s:clr('bg', 'red'), +\ }, +\ ), +\ 'normal_modified': s:color_map( +\ ['bg', 'purple'], +\ ['fg', 'comment'], +\ ['fg', 'bgdark'], +\ { +\ 'airline_warning': s:clr('bg', 'orange'), +\ 'airline_error': s:clr('bg', 'red'), +\ }, +\ ), +\ 'insert': s:color_map( +\ ['bg', 'green'], +\ ['fg', 'comment'], +\ ['fg', 'selection'], +\ { +\ 'airline_warning': s:clr('bg', 'orange'), +\ 'airline_error': s:clr('bg', 'red'), +\ }, +\ ), +\ 'insert_modified': s:color_map( +\ ['bg', 'green'], +\ ['fg', 'comment'], +\ ['fg', 'bgdark'], +\ { +\ 'airline_warning': s:clr('bg', 'orange'), +\ 'airline_error': s:clr('bg', 'red'), +\ }, +\ ), +\ 'replace': s:color_map( +\ ['bg', 'orange'], +\ ['fg', 'comment'], +\ ['fg', 'selection'], +\ { +\ 'airline_warning': s:clr('bg', 'orange'), +\ 'airline_error': s:clr('bg', 'red'), +\ }, +\ ), +\ 'replace_modified': s:color_map( +\ ['bg', 'orange'], +\ ['fg', 'comment'], +\ ['fg', 'bgdark'], +\ { +\ 'airline_warning': s:clr('bg', 'orange'), +\ 'airline_error': s:clr('bg', 'red'), +\ }, +\ ), +\ 'visual': s:color_map( +\ ['bg', 'yellow'], +\ ['fg', 'comment'], +\ ['fg', 'selection'], +\ { +\ 'airline_warning': s:clr('bg', 'orange'), +\ 'airline_error': s:clr('bg', 'red'), +\ }, +\ ), +\ 'visual_modified': s:color_map( +\ ['bg', 'yellow'], +\ ['fg', 'comment'], +\ ['fg', 'bgdark'], +\ { +\ 'airline_warning': s:clr('bg', 'orange'), +\ 'airline_error': s:clr('bg', 'red'), +\ }, +\ ), +\ 'inactive': s:color_map( +\ ['bg', 'comment'], +\ ['fg', 'bgdark'], +\ ['fg', 'selection'], +\ { +\ 'airline_warning': s:clr('bg', 'orange'), +\ 'airline_error': s:clr('bg', 'red'), +\ }, +\ ), +\ 'terminal': s:color_map( +\ ['bg', 'purple'], +\ ['fg', 'comment'], +\ ['fg', 'selection'], +\ { +\ 'airline_term': s:clr('fg', 'selection'), +\ }, +\ ), +\} + +" Extensions: {{{ +" Tabline: {{{ +if get(g:, 'airline#extensions#tabline#enabled', 0) + let g:airline#themes#dracula_pro#palette.tabline = { + \ 'airline_tabfill': s:clr('bg', 'bglight'), + \ + \ 'airline_tab': s:clr('comment', 'bg'), + \ 'airline_tabsel': s:clr('bg', 'purple'), + \ 'airline_tabmod': s:clr('green', 'bg'), + \ + \ 'airline_tab_right': s:clr('comment', 'bg'), + \ 'airline_tabsel_right': s:clr('fg', 'bg', ), + \ 'airline_tabmod_right': s:clr('green', 'bg'), + \} +endif +"}}} +" CtrlP: {{{2 +if exists('g:loaded_ctrlp') + let g:airline#themes#dracula_pro#palette.ctrlp = airline#extensions#ctrlp#generate_color_map( + \ s:clr('fg', 'selection'), + \ s:clr('fg', 'comment'), + \ s:clr('fg', 'purple'), + \) +endif +"}}}2 +"}}} + +" vim: fdm=marker ts=2 sts=2 sw=2 fdl=0: diff --git a/.vim/pack/themes/start/dracula_pro/vim/autoload/dracula_pro.vim b/.vim/pack/themes/start/dracula_pro/vim/autoload/dracula_pro.vim new file mode 100644 index 0000000..227b564 --- /dev/null +++ b/.vim/pack/themes/start/dracula_pro/vim/autoload/dracula_pro.vim @@ -0,0 +1,57 @@ +" Palette: {{{ + +let g:dracula_pro#palette = {} +let g:dracula_pro#palette.fg = ['#F8F8F2', 231] + +let g:dracula_pro#palette.bglighter = ['#393649', 59] +let g:dracula_pro#palette.bglight = ['#2E2B3B', 59] +let g:dracula_pro#palette.bg = ['#22212C', 59] +let g:dracula_pro#palette.bgdark = ['#17161D', 17] +let g:dracula_pro#palette.bgdarker = ['#0B0B0F', 16] + +let g:dracula_pro#palette.comment = ['#7970A9', 103] +let g:dracula_pro#palette.selection = ['#454158', 60] +let g:dracula_pro#palette.subtle = ['#424450', 60] + +let g:dracula_pro#palette.cyan = ['#80FFEA', 159] +let g:dracula_pro#palette.green = ['#8AFF80', 157] +let g:dracula_pro#palette.orange = ['#FFCA80', 223] +let g:dracula_pro#palette.pink = ['#FF80BF', 218] +let g:dracula_pro#palette.purple = ['#9580FF', 147] +let g:dracula_pro#palette.red = ['#FF9580', 217] +let g:dracula_pro#palette.yellow = ['#FFFF80', 229] + +" +" ANSI +" +let g:dracula_pro#palette.color_0 = '#454158' +let g:dracula_pro#palette.color_1 = '#FF9580' +let g:dracula_pro#palette.color_2 = '#8AFF80' +let g:dracula_pro#palette.color_3 = '#FFFF80' +let g:dracula_pro#palette.color_4 = '#9580FF' +let g:dracula_pro#palette.color_5 = '#FF80BF' +let g:dracula_pro#palette.color_6 = '#80FFEA' +let g:dracula_pro#palette.color_7 = '#F8F8F2' +let g:dracula_pro#palette.color_8 = '#7970A9' +let g:dracula_pro#palette.color_9 = '#FFAA99' +let g:dracula_pro#palette.color_10 = '#A2FF99' +let g:dracula_pro#palette.color_11 = '#FFFF99' +let g:dracula_pro#palette.color_12 = '#AA99FF' +let g:dracula_pro#palette.color_13 = '#FF99CC' +let g:dracula_pro#palette.color_14 = '#99FFEE' +let g:dracula_pro#palette.color_15 = '#FFFFFF' + +" }}} + +" Helper function that takes a variadic list of filetypes as args and returns +" whether or not the execution of the ftplugin should be aborted. +func! dracula_pro#should_abort(...) + if ! exists('g:colors_name') || g:colors_name !~# 'dracula_pro.*' + return 1 + elseif a:0 > 0 && (! exists('b:current_syntax') || index(a:000, b:current_syntax) == -1) + return 1 + endif + return 0 +endfunction + +" vim: fdm=marker ts=2 sts=2 sw=2 fdl=0: diff --git a/.vim/pack/themes/start/dracula_pro/vim/autoload/lightline/colorscheme/dracula_pro.vim b/.vim/pack/themes/start/dracula_pro/vim/autoload/lightline/colorscheme/dracula_pro.vim new file mode 100644 index 0000000..be7b584 --- /dev/null +++ b/.vim/pack/themes/start/dracula_pro/vim/autoload/lightline/colorscheme/dracula_pro.vim @@ -0,0 +1,35 @@ +let s:black = g:dracula_pro#palette.bg +let s:gray = g:dracula_pro#palette.selection +let s:white = g:dracula_pro#palette.fg +let s:darkblue = g:dracula_pro#palette.comment +let s:cyan = g:dracula_pro#palette.cyan +let s:green = g:dracula_pro#palette.green +let s:orange = g:dracula_pro#palette.orange +let s:purple = g:dracula_pro#palette.purple +let s:red = g:dracula_pro#palette.red +let s:yellow = g:dracula_pro#palette.yellow + +if exists('g:lightline') + + let s:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}, 'tabline': {}} + let s:p.normal.left = [ [ s:black, s:purple ], [ s:cyan, s:gray ] ] + let s:p.normal.right = [ [ s:black, s:purple ], [ s:white, s:darkblue ] ] + let s:p.inactive.right = [ [ s:black, s:darkblue ], [ s:white, s:black ] ] + let s:p.inactive.left = [ [ s:cyan, s:black ], [ s:white, s:black ] ] + let s:p.insert.left = [ [ s:black, s:green ], [ s:cyan, s:gray ] ] + let s:p.replace.left = [ [ s:black, s:red ], [ s:cyan, s:gray ] ] + let s:p.visual.left = [ [ s:black, s:orange ], [ s:cyan, s:gray ] ] + let s:p.normal.middle = [ [ s:white, s:gray ] ] + let s:p.inactive.middle = [ [ s:white, s:gray ] ] + let s:p.tabline.left = [ [ s:darkblue, s:gray ] ] + let s:p.tabline.tabsel = [ [ s:cyan, s:black ] ] + let s:p.tabline.middle = [ [ s:darkblue, s:gray ] ] + let s:p.tabline.right = copy(s:p.normal.right) + let s:p.normal.error = [ [ s:red, s:black ] ] + let s:p.normal.warning = [ [ s:yellow, s:black ] ] + + let g:lightline#colorscheme#dracula_pro#palette = lightline#colorscheme#flatten(s:p) + +endif + +" vim: fdm=marker ts=2 sts=2 sw=2 fdl=0: diff --git a/.vim/pack/themes/start/dracula_pro/vim/colors/dracula_pro.vim b/.vim/pack/themes/start/dracula_pro/vim/colors/dracula_pro.vim new file mode 100644 index 0000000..953fb03 --- /dev/null +++ b/.vim/pack/themes/start/dracula_pro/vim/colors/dracula_pro.vim @@ -0,0 +1,14 @@ +runtime autoload/dracula_pro.vim + +let g:dracula_pro#palette.comment = ['#7970A9', 103] +let g:dracula_pro#palette.selection = ['#454158', 60] + +let g:dracula_pro#palette.bglighter = ['#393649', 59] +let g:dracula_pro#palette.bglight = ['#2E2B3B', 59] +let g:dracula_pro#palette.bg = ['#22212C', 59] +let g:dracula_pro#palette.bgdark = ['#17161D', 17] +let g:dracula_pro#palette.bgdarker = ['#0B0B0F', 16] + +runtime colors/dracula_pro_base.vim + +let g:colors_name = 'dracula_pro' diff --git a/.vim/pack/themes/start/dracula_pro/vim/colors/dracula_pro_base.vim b/.vim/pack/themes/start/dracula_pro/vim/colors/dracula_pro_base.vim new file mode 100644 index 0000000..d6c8014 --- /dev/null +++ b/.vim/pack/themes/start/dracula_pro/vim/colors/dracula_pro_base.vim @@ -0,0 +1,301 @@ +" Configuration: {{{ + +if v:version > 580 + highlight clear + if exists('syntax_on') + syntax reset + endif +endif + +let g:colors_name = 'dracula_pro' + +if !(has('termguicolors') && &termguicolors) && !has('gui_running') && &t_Co != 256 + finish +endif + +" Palette: {{{2 + +let s:fg = g:dracula_pro#palette.fg + +let s:bglighter = g:dracula_pro#palette.bglighter +let s:bglight = g:dracula_pro#palette.bglight +let s:bg = g:dracula_pro#palette.bg +let s:bgdark = g:dracula_pro#palette.bgdark +let s:bgdarker = g:dracula_pro#palette.bgdarker + +let s:comment = g:dracula_pro#palette.comment +let s:selection = g:dracula_pro#palette.selection +let s:subtle = g:dracula_pro#palette.subtle + +let s:cyan = g:dracula_pro#palette.cyan +let s:green = g:dracula_pro#palette.green +let s:orange = g:dracula_pro#palette.orange +let s:pink = g:dracula_pro#palette.pink +let s:purple = g:dracula_pro#palette.purple +let s:red = g:dracula_pro#palette.red +let s:yellow = g:dracula_pro#palette.yellow + +let s:none = ['NONE', 'NONE'] + +if has('nvim') + for s:i in range(16) + let g:terminal_color_{s:i} = g:dracula_pro#palette['color_' . s:i] + endfor +endif + +if has('terminal') + let g:terminal_ansi_colors = [] + for s:i in range(16) + call add(g:terminal_ansi_colors, g:dracula_pro#palette['color_' . s:i]) + endfor +endif + +" }}}2 +" User Configuration: {{{2 + +if !exists('g:dracula_bold') + let g:dracula_bold = 1 +endif + +if !exists('g:dracula_italic') + let g:dracula_italic = 1 +endif + +if !exists('g:dracula_underline') + let g:dracula_underline = 1 +endif + +if !exists('g:dracula_undercurl') && g:dracula_underline != 0 + let g:dracula_undercurl = 1 +endif + +if !exists('g:dracula_inverse') + let g:dracula_inverse = 1 +endif + +if !exists('g:dracula_colorterm') + let g:dracula_colorterm = 1 +endif + +"}}}2 +" Script Helpers: {{{2 + +let s:attrs = { + \ 'bold': g:dracula_bold == 1 ? 'bold' : 0, + \ 'italic': g:dracula_italic == 1 ? 'italic' : 0, + \ 'underline': g:dracula_underline == 1 ? 'underline' : 0, + \ 'undercurl': g:dracula_undercurl == 1 ? 'undercurl' : 0, + \ 'inverse': g:dracula_inverse == 1 ? 'inverse' : 0, + \} + +function! s:h(scope, fg, ...) " bg, attr_list, special + let l:fg = copy(a:fg) + let l:bg = get(a:, 1, ['NONE', 'NONE']) + + let l:attr_list = filter(get(a:, 2, ['NONE']), 'type(v:val) == 1') + let l:attrs = len(l:attr_list) > 0 ? join(l:attr_list, ',') : 'NONE' + + " Falls back to coloring foreground group on terminals because + " nearly all do not support undercurl + let l:special = get(a:, 3, ['NONE', 'NONE']) + if l:special[0] !=# 'NONE' && l:fg[0] ==# 'NONE' && !has('gui_running') + let l:fg[0] = l:special[0] + let l:fg[1] = l:special[1] + endif + + let l:hl_string = [ + \ 'highlight!', a:scope, + \ 'guifg=' . l:fg[0], 'ctermfg=' . l:fg[1], + \ 'guibg=' . l:bg[0], 'ctermbg=' . l:bg[1], + \ 'gui=' . l:attrs, 'cterm=' . l:attrs, + \ 'guisp=' . l:special[0], + \] + + execute join(l:hl_string, ' ') +endfunction + +"}}}2 +" Dracula Highlight Groups: {{{2 + +call s:h('DraculaBgLight', s:none, s:bglight) +call s:h('DraculaBgLighter', s:none, s:bglighter) +call s:h('DraculaBgDark', s:none, s:bgdark) +call s:h('DraculaBgDarker', s:none, s:bgdarker) + +call s:h('DraculaFg', s:fg) +call s:h('DraculaFgUnderline', s:fg, s:none, [s:attrs.underline]) +call s:h('DraculaFgBold', s:fg, s:none, [s:attrs.bold]) + +call s:h('DraculaComment', s:comment) +call s:h('DraculaCommentBold', s:comment, s:none, [s:attrs.bold]) + +call s:h('DraculaSelection', s:none, s:selection) + +call s:h('DraculaSubtle', s:subtle) + +call s:h('DraculaCyan', s:cyan) +call s:h('DraculaCyanItalic', s:cyan, s:none, [s:attrs.italic]) + +call s:h('DraculaGreen', s:green) +call s:h('DraculaGreenBold', s:green, s:none, [s:attrs.bold]) +call s:h('DraculaGreenItalic', s:green, s:none, [s:attrs.italic]) +call s:h('DraculaGreenItalicUnderline', s:green, s:none, [s:attrs.italic, s:attrs.underline]) + +call s:h('DraculaOrange', s:orange) +call s:h('DraculaOrangeBold', s:orange, s:none, [s:attrs.bold]) +call s:h('DraculaOrangeItalic', s:orange, s:none, [s:attrs.italic]) +call s:h('DraculaOrangeBoldItalic', s:orange, s:none, [s:attrs.bold, s:attrs.italic]) +call s:h('DraculaOrangeInverse', s:bg, s:orange) + +call s:h('DraculaPink', s:pink) +call s:h('DraculaPinkItalic', s:pink, s:none, [s:attrs.italic]) + +call s:h('DraculaPurple', s:purple) +call s:h('DraculaPurpleBold', s:purple, s:none, [s:attrs.bold]) +call s:h('DraculaPurpleItalic', s:purple, s:none, [s:attrs.italic]) + +call s:h('DraculaRed', s:red) +call s:h('DraculaRedInverse', s:fg, s:red) + +call s:h('DraculaYellow', s:yellow) +call s:h('DraculaYellowItalic', s:yellow, s:none, [s:attrs.italic]) + +call s:h('DraculaError', s:red, s:none, [], s:red) + +call s:h('DraculaErrorLine', s:none, s:none, [s:attrs.undercurl], s:red) +call s:h('DraculaWarnLine', s:none, s:none, [s:attrs.undercurl], s:orange) +call s:h('DraculaInfoLine', s:none, s:none, [s:attrs.undercurl], s:cyan) + +call s:h('DraculaTodo', s:cyan, s:none, [s:attrs.bold, s:attrs.inverse]) +call s:h('DraculaSearch', s:green, s:none, [s:attrs.inverse]) +call s:h('DraculaBoundary', s:comment, s:bgdark) +call s:h('DraculaLink', s:cyan, s:none, [s:attrs.underline]) + +call s:h('DraculaDiffChange', s:orange, s:none) +call s:h('DraculaDiffText', s:bg, s:orange) +call s:h('DraculaDiffDelete', s:red, s:bgdark) + +" }}}2 + +" }}} +" User Interface: {{{ + +set background=dark + +" Required as some plugins will overwrite +call s:h('Normal', s:fg, g:dracula_colorterm || has('gui_running') ? s:bg : s:none ) +call s:h('StatusLine', s:none, s:bglighter, [s:attrs.bold]) +call s:h('StatusLineNC', s:none, s:bglight) +call s:h('StatusLineTerm', s:none, s:bglighter, [s:attrs.bold]) +call s:h('StatusLineTermNC', s:none, s:bglight) +call s:h('WildMenu', s:bg, s:purple, [s:attrs.bold]) +call s:h('CursorLine', s:none, s:subtle) + +hi! link ColorColumn DraculaBgDark +hi! link CursorColumn CursorLine +hi! link CursorLineNr DraculaYellow +hi! link DiffAdd DraculaGreen +hi! link DiffAdded DiffAdd +hi! link DiffChange DraculaDiffChange +hi! link DiffDelete DraculaDiffDelete +hi! link DiffRemoved DiffDelete +hi! link DiffText DraculaDiffText +hi! link Directory DraculaPurpleBold +hi! link ErrorMsg DraculaRedInverse +hi! link FoldColumn DraculaSubtle +hi! link Folded DraculaBoundary +hi! link IncSearch DraculaOrangeInverse +call s:h('LineNr', s:comment) +hi! link MoreMsg DraculaFgBold +hi! link NonText DraculaSubtle +hi! link Pmenu DraculaBgDark +hi! link PmenuSbar DraculaBgDark +hi! link PmenuSel DraculaSelection +hi! link PmenuThumb DraculaSelection +hi! link Question DraculaFgBold +hi! link Search DraculaSearch +call s:h('SignColumn', s:comment) +hi! link TabLine DraculaBoundary +hi! link TabLineFill DraculaBgDarker +hi! link TabLineSel Normal +hi! link Title DraculaGreenBold +hi! link VertSplit DraculaBoundary +hi! link Visual DraculaSelection +hi! link VisualNOS Visual +hi! link WarningMsg DraculaOrangeInverse + +" }}} +" Syntax: {{{ + +" Required as some plugins will overwrite +call s:h('MatchParen', s:green, s:none, [s:attrs.underline]) +call s:h('Conceal', s:cyan, s:none) + +" Neovim uses SpecialKey for escape characters only. Vim uses it for that, plus whitespace. +if has('nvim') + hi! link SpecialKey DraculaRed + hi! link LspDiagnosticsUnderline DraculaFgUnderline + hi! link LspDiagnosticsInformation DraculaCyan + hi! link LspDiagnosticsHint DraculaCyan + hi! link LspDiagnosticsError DraculaError + hi! link LspDiagnosticsWarning DraculaOrange + hi! link LspDiagnosticsUnderlineError DraculaErrorLine + hi! link LspDiagnosticsUnderlineHint DraculaInfoLine + hi! link LspDiagnosticsUnderlineInformation DraculaInfoLine + hi! link LspDiagnosticsUnderlineWarning DraculaWarnLine +else + hi! link SpecialKey DraculaSubtle +endif + +hi! link Comment DraculaComment +hi! link Underlined DraculaFgUnderline +hi! link Todo DraculaTodo + +hi! link Error DraculaError +hi! link SpellBad DraculaErrorLine +hi! link SpellLocal DraculaWarnLine +hi! link SpellCap DraculaInfoLine +hi! link SpellRare DraculaInfoLine + +hi! link Constant DraculaPurple +hi! link String DraculaYellow +hi! link Character DraculaPink +hi! link Number Constant +hi! link Boolean Constant +hi! link Float Constant + +hi! link Identifier DraculaFg +hi! link Function DraculaGreen + +hi! link Statement DraculaPink +hi! link Conditional DraculaPink +hi! link Repeat DraculaPink +hi! link Label DraculaPink +hi! link Operator DraculaPink +hi! link Keyword DraculaPink +hi! link Exception DraculaPink + +hi! link PreProc DraculaPink +hi! link Include DraculaPink +hi! link Define DraculaPink +hi! link Macro DraculaPink +hi! link PreCondit DraculaPink +hi! link StorageClass DraculaPink +hi! link Structure DraculaPink +hi! link Typedef DraculaPink + +hi! link Type DraculaCyanItalic + +hi! link Delimiter DraculaFg + +hi! link Special DraculaPink +hi! link SpecialComment DraculaCyanItalic +hi! link Tag DraculaCyan +hi! link helpHyperTextJump DraculaLink +hi! link helpCommand DraculaPurple +hi! link helpExample DraculaGreen +hi! link helpBacktick Special + +"}}} + +" vim: fdm=marker ts=2 sts=2 sw=2 fdl=0 et: diff --git a/.vim/pack/themes/start/dracula_pro/vim/colors/dracula_pro_blade.vim b/.vim/pack/themes/start/dracula_pro/vim/colors/dracula_pro_blade.vim new file mode 100644 index 0000000..7b45d41 --- /dev/null +++ b/.vim/pack/themes/start/dracula_pro/vim/colors/dracula_pro_blade.vim @@ -0,0 +1,14 @@ +runtime autoload/dracula_pro.vim + +let g:dracula_pro#palette.comment = ['#70A99F', 109] +let g:dracula_pro#palette.selection = ['#415854', 66] + +let g:dracula_pro#palette.bglighter = ['#364946', 59] +let g:dracula_pro#palette.bglight = ['#2B3B38', 59] +let g:dracula_pro#palette.bg = ['#212C2A', 59] +let g:dracula_pro#palette.bgdark = ['#161D1C', 23] +let g:dracula_pro#palette.bgdarker = ['#0B0F0E', 16] + +runtime colors/dracula_pro_base.vim + +let g:colors_name = 'dracula_pro_blade' diff --git a/.vim/pack/themes/start/dracula_pro/vim/colors/dracula_pro_buffy.vim b/.vim/pack/themes/start/dracula_pro/vim/colors/dracula_pro_buffy.vim new file mode 100644 index 0000000..2cd08f7 --- /dev/null +++ b/.vim/pack/themes/start/dracula_pro/vim/colors/dracula_pro_buffy.vim @@ -0,0 +1,14 @@ +runtime autoload/dracula_pro.vim + +let g:dracula_pro#palette.comment = ['#9F70A9', 139] +let g:dracula_pro#palette.selection = ['#544158', 96] + +let g:dracula_pro#palette.bglighter = ['#463649', 59] +let g:dracula_pro#palette.bglight = ['#382B3B', 59] +let g:dracula_pro#palette.bg = ['#2A212C', 59] +let g:dracula_pro#palette.bgdark = ['#1C161D', 53] +let g:dracula_pro#palette.bgdarker = ['#0E0B0F', 16] + +runtime colors/dracula_pro_base.vim + +let g:colors_name = 'dracula_pro_buffy' diff --git a/.vim/pack/themes/start/dracula_pro/vim/colors/dracula_pro_lincoln.vim b/.vim/pack/themes/start/dracula_pro/vim/colors/dracula_pro_lincoln.vim new file mode 100644 index 0000000..a93ed1c --- /dev/null +++ b/.vim/pack/themes/start/dracula_pro/vim/colors/dracula_pro_lincoln.vim @@ -0,0 +1,14 @@ +runtime autoload/dracula_pro.vim + +let g:dracula_pro#palette.comment = ['#A99F70', 144] +let g:dracula_pro#palette.selection = ['#585441', 101] + +let g:dracula_pro#palette.bglighter = ['#494636', 59] +let g:dracula_pro#palette.bglight = ['#3B382B', 59] +let g:dracula_pro#palette.bg = ['#2C2A21', 59] +let g:dracula_pro#palette.bgdark = ['#1D1C16', 58] +let g:dracula_pro#palette.bgdarker = ['#0F0E0B', 16] + +runtime colors/dracula_pro_base.vim + +let g:colors_name = 'dracula_pro_lincoln' diff --git a/.vim/pack/themes/start/dracula_pro/vim/colors/dracula_pro_morbius.vim b/.vim/pack/themes/start/dracula_pro/vim/colors/dracula_pro_morbius.vim new file mode 100644 index 0000000..cb6baa4 --- /dev/null +++ b/.vim/pack/themes/start/dracula_pro/vim/colors/dracula_pro_morbius.vim @@ -0,0 +1,14 @@ +runtime autoload/dracula_pro.vim + +let g:dracula_pro#palette.comment = ['#A97079', 138] +let g:dracula_pro#palette.selection = ['#584145', 95] + +let g:dracula_pro#palette.bglighter = ['#493639', 59] +let g:dracula_pro#palette.bglight = ['#3B2B2E', 59] +let g:dracula_pro#palette.bg = ['#2C2122', 59] +let g:dracula_pro#palette.bgdark = ['#1D1617', 52] +let g:dracula_pro#palette.bgdarker = ['#0F0B0B', 16] + +runtime colors/dracula_pro_base.vim + +let g:colors_name = 'dracula_pro_morbius' diff --git a/.vim/pack/themes/start/dracula_pro/vim/colors/dracula_pro_van_helsing.vim b/.vim/pack/themes/start/dracula_pro/vim/colors/dracula_pro_van_helsing.vim new file mode 100644 index 0000000..2a32443 --- /dev/null +++ b/.vim/pack/themes/start/dracula_pro/vim/colors/dracula_pro_van_helsing.vim @@ -0,0 +1,14 @@ +runtime autoload/dracula_pro.vim + +let g:dracula_pro#palette.comment = ['#708CA9', 109] +let g:dracula_pro#palette.selection = ['#414D58', 66] + +let g:dracula_pro#palette.bglighter = ['#161A1D', 23] +let g:dracula_pro#palette.bglight = ['#111417', 16] +let g:dracula_pro#palette.bg = ['#0B0D0F', 16] +let g:dracula_pro#palette.bgdark = ['#070809', 16] +let g:dracula_pro#palette.bgdarker = ['#000000', 16] + +runtime colors/dracula_pro_base.vim + +let g:colors_name = 'dracula_pro_van_helsing' diff --git a/.vim/pack/themes/start/dracula_pro/vim/doc/dracula_pro.txt b/.vim/pack/themes/start/dracula_pro/vim/doc/dracula_pro.txt new file mode 100644 index 0000000..9355eb1 --- /dev/null +++ b/.vim/pack/themes/start/dracula_pro/vim/doc/dracula_pro.txt @@ -0,0 +1,146 @@ +*dracula_pro.txt* For Vim version 8 Last change: 2020 Apr 27 +*dracula-pro* *vim-dracula-pro* + + + |\ ,, ~ + \\ _ || _ ~ + / \\ ,._-_ < \, _-_ \\ \\ || < \, -_-_ ,._-_ /'\\ ~ + || || || /-|| || || || || /-|| || \\ || || || ~ + || || || (( || || || || || (( || || || || || || ~ + \\/ \\, \/\\ \\,/ \\/\\ \\ \/\\ ||-' \\, \\,/ ~ + |/ ~ + ' ~ + + A premium dark theme for vim + +================================================================================ +CONTENTS *dracula-pro-contents* + + 1. Intro .............................................. |dracula-pro-intro| + 2. Usage .............................................. |dracula-pro-usage| + 3. Configuration .............................. |dracula-pro-configuration| + 4. Personal Customization ..................... |dracula-pro-customization| + 5. License .......................................... |dracula-pro-license| + 6. Bugs ................................................ |dracula-pro-bugs| + 7. Contributing ................................ |dracula-pro-contributing| + 8. Credits .......................................... |dracula-pro-credits| + +================================================================================ +INTRO *dracula-pro-intro* + +Dracula PRO is a vim plugin that contains + + - a dark colorscheme for vim + - a similarly-themed colorscheme for the vim plugin airline + +================================================================================ +USAGE *dracula-pro-usage* + +Install it with your favorite plugin manager, and then > + colorscheme dracula_pro + " or + colorscheme dracula_pro_variation +in your vimrc! See also |dracula-pro-runtimepath|. + +If you are an airline user, you can also do > + let g:airline_theme='dracula_pro' +to have airline use Dracula. + + *dracula-pro-runtimepath* + +Note that dracula must be in your 'runtimepath' for this command to work +properly: Version 2.0 introduced autoload functionality for part of the +plugin, which doesn't work without 'runtimepath' properly set. + +For users of Vim 8's |packages| feature, it suffices to put this in your vimrc: + packadd! dracula_pro + colorscheme dracula_pro + +================================================================================ +CONFIGURATION *dracula-pro-configuration* + +There are a couple of variables used by Dracula that you might want to adjust +depending on your terminal's capabilities. + +Default values are shown. + +-------------------------------------------------------------------------------- +In the following section, `1` signifies `on` and `0` signifies `off`. + +* *g:dracula_bold* +Include bold attributes in highlighting > + let g:dracula_bold = 1 + +* *g:dracula_italic* +Include italic attributes in highlighting > + let g:dracula_italic = 1 + +* *g:dracula_underline* +Include underline attributes in highlighting > + let g:dracula_underline = 1 + +* *g:dracula_undercurl* +Include undercurl attributes in highlighting (only if underline enabled) > + let g:dracula_undercurl = 1 + +* *g:dracula_inverse* +Include inverse attributes in highlighting > + let g:dracula_inverse = 1 + +* *g:dracula_colorterm* +Include background fill colors > + let g:dracula_colorterm = 1 + +================================================================================ +CUSTOMIZATION *dracula-pro-customization* + +Like all colorschemes, Dracula PRO is easy to customize with |autocmd|. Make use +of the |ColorScheme| event as in the following examples. + +It would be a good idea to put all of your personal changes in an |augroup|, +which you can do with the following code: > + augroup dracula_customization + au! + " autocmds... + augroup END +> + +- To add underline styling to |hl-CursorLine|, you can use the following: > + autocmd ColorScheme dracula_pro* hi CursorLine cterm=underline term=underline +< +================================================================================ +LICENSE *dracula-pro-license* + +Copyright © 2020 Dracula Theme +EULA available at https://gum.co/dracula-pro + +================================================================================ +BUGS *dracula-pro-bugs* + +At the time of this writing, no major bugs have been found. + +If you find one and wish to report it, send an email to zeno@draculatheme.com + +================================================================================ +CONTRIBUTING *dracula-pro-contributing* + +Want to submit a new feature, bugfix, or hack on Dracula PRO? +Send an email to zeno@draculatheme.com + +Existing code determines style guidelines. + +================================================================================ +CREDITS *dracula-pro-credits* + +Originally Created by: +- Derek S. (https://github.com/dsifford) +- D. Ben Knoble (https://github.com/benknoble) + +Modified by: +- D. Ben Knoble (https://github.com/benknoble) +- Zeno Rocha (https://github.com/zenorocha) + +Further information available at +https://draculatheme.com/pro + + vim:tw=78:ts=8:ft=help:norl: diff --git a/.vimrc b/.vimrc index 8a41210..cad1ca8 100644 --- a/.vimrc +++ b/.vimrc @@ -1,5 +1,3 @@ -" Sravan's Vimrc - " Don't try to be vi compatible set nocompatible @@ -81,9 +79,11 @@ set wildmenu set lazyredraw set showmatch -" Dracula Theme +" Add Dracula Themes packadd! dracula packadd! dracula_pro + +" Enable Dracula Pro Theme +syntax enable let g:dracula_colorterm = 0 colorscheme dracula_pro - diff --git a/.xinitrc b/.xinitrc index 53b6bde..a16b138 100755 --- a/.xinitrc +++ b/.xinitrc @@ -1,19 +1,22 @@ -######################### -# ENVIRONMENT VARIABLES # -######################### -export TERM=xterm-256color # Sets the terminal type -export SHELL=/usr/bin/fish # Preferred shell -export EDITOR="code -w" # Default editor -export BROWSER=brave # Web Browser -export XDG_CONFIG_HOME=$HOME/.config # Set Config directory -export QT_QPA_PLATFORMTHEME=qt5ct # QGtkStyle +#!/bin/sh +export TERM=xterm-256color # Sets the terminal type +export SHELL=/usr/bin/fish # Preferred shell +export EDITOR="emacs" # Default editor +export GIT_EDITOR="emacs" # Default git editor +export BROWSER=vivaldi-stable # Web Browser +export XDG_CONFIG_HOME=$HOME/.config # Set Config directory +export QT_QPA_PLATFORMTHEME=qt5ct # QGtkStyle +export _JAVA_AWT_WM_NONREPARENTING=1 # Java fix for Window Managers -########### -# STARTUP # -########### xrdb ~/.Xresources -################## -# WINDOW MANAGER # -################## +# Startup Applications +/home/sravan/.scripts/startup.sh --kill-startup && + /home/sravan/.scripts/startup.sh --startup + +# Delayed Startup Applications +(sleep 5 && + /home/sravan/.scripts/startup.sh --kill-delay && + /home/sravan/.scripts/startup.sh --delay) & + exec dwm diff --git a/.xmonad b/.xmonad new file mode 160000 index 0000000..0dbd477 --- /dev/null +++ b/.xmonad @@ -0,0 +1 @@ +Subproject commit 0dbd47799ca8995c0c074f4d66fa1580719c1bda diff --git a/.zshrc b/.zshrc index d3ad4e8..df45e95 100644 --- a/.zshrc +++ b/.zshrc @@ -1,126 +1,191 @@ # If you come from bash you might have to change your $PATH. # export PATH=$HOME/bin:/usr/local/bin:$PATH -# Path to your oh-my-zsh installation. -export ZSH="/home/sravan/.oh-my-zsh" +# Set $PATH if ~/.local/bin exist +if [ -d "$HOME/.local/bin" ]; then + export PATH=$HOME/.local/bin:$PATH +fi -# Set name of the theme to load --- if set to "random", it will -# load a random theme each time oh-my-zsh is loaded, in which case, -# to know which specific one was loaded, run: echo $RANDOM_THEME -# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes -ZSH_THEME="robbyrussell" +eval "$(starship init zsh)" +function set_win_title(){ + echo -ne "\033]0; $USER@$HOST:${PWD/$HOME/~} \007" +} +precmd_functions+=(set_win_title) -# Set list of themes to pick from when loading at random -# Setting this variable when ZSH_THEME=random will cause zsh to load -# a theme from this variable instead of looking in $ZSH/themes/ -# If set to an empty array, this variable will have no effect. -# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" ) +## Plugins section: Enable fish style features +# Use syntax highlighting +source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh -# Uncomment the following line to use case-sensitive completion. -# CASE_SENSITIVE="true" +# Use autosuggestion +source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh -# Uncomment the following line to use hyphen-insensitive completion. -# Case-sensitive completion must be off. _ and - will be interchangeable. -# HYPHEN_INSENSITIVE="true" +# Use history substring search +source /usr/share/zsh/plugins/zsh-history-substring-search/zsh-history-substring-search.zsh -# Uncomment the following line to disable bi-weekly auto-update checks. -# DISABLE_AUTO_UPDATE="true" +# Use fzf +source /usr/share/fzf/key-bindings.zsh +source /usr/share/fzf/completion.zsh -# Uncomment the following line to automatically update without prompting. -# DISABLE_UPDATE_PROMPT="true" +# Arch Linux command-not-found support, you must have package pkgfile installed +# https://wiki.archlinux.org/index.php/Pkgfile#.22Command_not_found.22_hook +[[ -e /usr/share/doc/pkgfile/command-not-found.zsh ]] && source /usr/share/doc/pkgfile/command-not-found.zsh -# Uncomment the following line to change how often to auto-update (in days). -# export UPDATE_ZSH_DAYS=13 -# Uncomment the following line if pasting URLs and other text is messed up. -# DISABLE_MAGIC_FUNCTIONS=true +## Options section +setopt correct # Auto correct mistakes +setopt extendedglob # Extended globbing. Allows using regular expressions with * +setopt nocaseglob # Case insensitive globbing +setopt rcexpandparam # Array expension with parameters +setopt nocheckjobs # Don't warn about running processes when exiting +setopt numericglobsort # Sort filenames numerically when it makes sense +setopt nobeep # No beep +setopt appendhistory # Immediately append history instead of overwriting +setopt histignorealldups # If a new command is a duplicate, remove the older one +setopt autocd # if only directory path is entered, cd there. +setopt auto_pushd +setopt pushd_ignore_dups +setopt pushdminus -# Uncomment the following line to disable colors in ls. -# DISABLE_LS_COLORS="true" +# Completion. +autoload -Uz compinit +compinit +zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' # Case insensitive tab completion +zstyle ':completion:*' rehash true # automatically find new executables in path +zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}" # Colored completion (different colors for dirs/files/etc) +zstyle ':completion:*' completer _expand _complete _ignored _approximate +zstyle ':completion:*' menu select=2 +zstyle ':completion:*' select-prompt '%SScrolling active: current selection at %p%s' +zstyle ':completion:*:descriptions' format '%U%F{cyan}%d%f%u' -# Uncomment the following line to disable auto-setting terminal title. -# DISABLE_AUTO_TITLE="true" +# Speed up completions +zstyle ':completion:*' accept-exact '*(N)' +zstyle ':completion:*' use-cache on +zstyle ':completion:*' cache-path ~/.cache/zcache -# Uncomment the following line to enable command auto-correction. -# ENABLE_CORRECTION="true" +# automatically load bash completion functions +autoload -U +X bashcompinit && bashcompinit -# Uncomment the following line to display red dots whilst waiting for completion. -COMPLETION_WAITING_DOTS="true" +HISTFILE=~/.zhistory +HISTSIZE=50000 +SAVEHIST=10000 -# Uncomment the following line if you want to disable marking untracked files -# under VCS as dirty. This makes repository status check for large repositories -# much, much faster. -# DISABLE_UNTRACKED_FILES_DIRTY="true" -# Uncomment the following line if you want to change the command execution time -# stamp shown in the history command output. -# You can set one of the optional three formats: -# "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd" -# or set a custom format using the strftime function format specifications, -# see 'man strftime' for details. -# HIST_STAMPS="mm/dd/yyyy" +## Keys +# Use emacs key bindings +bindkey -e -# Would you like to use another custom folder than $ZSH/custom? -# ZSH_CUSTOM=/path/to/new-custom-folder +# [PageUp] - Up a line of history +if [[ -n "${terminfo[kpp]}" ]]; then + bindkey -M emacs "${terminfo[kpp]}" up-line-or-history + bindkey -M viins "${terminfo[kpp]}" up-line-or-history + bindkey -M vicmd "${terminfo[kpp]}" up-line-or-history +fi +# [PageDown] - Down a line of history +if [[ -n "${terminfo[knp]}" ]]; then + bindkey -M emacs "${terminfo[knp]}" down-line-or-history + bindkey -M viins "${terminfo[knp]}" down-line-or-history + bindkey -M vicmd "${terminfo[knp]}" down-line-or-history +fi -# Which plugins would you like to load? -# Standard plugins can be found in $ZSH/plugins/ -# Custom plugins may be added to $ZSH_CUSTOM/plugins/ -# Example format: plugins=(rails git textmate ruby lighthouse) -# Add wisely, as too many plugins slow down shell startup. -plugins=(alias-finder docker git python tmux vscode zsh_reload) +# Start typing + [Up-Arrow] - fuzzy find history forward +if [[ -n "${terminfo[kcuu1]}" ]]; then + autoload -U up-line-or-beginning-search + zle -N up-line-or-beginning-search -source $ZSH/oh-my-zsh.sh + bindkey -M emacs "${terminfo[kcuu1]}" up-line-or-beginning-search + bindkey -M viins "${terminfo[kcuu1]}" up-line-or-beginning-search + bindkey -M vicmd "${terminfo[kcuu1]}" up-line-or-beginning-search +fi +# Start typing + [Down-Arrow] - fuzzy find history backward +if [[ -n "${terminfo[kcud1]}" ]]; then + autoload -U down-line-or-beginning-search + zle -N down-line-or-beginning-search -# User configuration + bindkey -M emacs "${terminfo[kcud1]}" down-line-or-beginning-search + bindkey -M viins "${terminfo[kcud1]}" down-line-or-beginning-search + bindkey -M vicmd "${terminfo[kcud1]}" down-line-or-beginning-search +fi -# export MANPATH="/usr/local/man:$MANPATH" +# [Home] - Go to beginning of line +if [[ -n "${terminfo[khome]}" ]]; then + bindkey -M emacs "${terminfo[khome]}" beginning-of-line + bindkey -M viins "${terminfo[khome]}" beginning-of-line + bindkey -M vicmd "${terminfo[khome]}" beginning-of-line +fi +# [End] - Go to end of line +if [[ -n "${terminfo[kend]}" ]]; then + bindkey -M emacs "${terminfo[kend]}" end-of-line + bindkey -M viins "${terminfo[kend]}" end-of-line + bindkey -M vicmd "${terminfo[kend]}" end-of-line +fi -# You may need to manually set your language environment -# export LANG=en_US.UTF-8 +# [Shift-Tab] - move through the completion menu backwards +if [[ -n "${terminfo[kcbt]}" ]]; then + bindkey -M emacs "${terminfo[kcbt]}" reverse-menu-complete + bindkey -M viins "${terminfo[kcbt]}" reverse-menu-complete + bindkey -M vicmd "${terminfo[kcbt]}" reverse-menu-complete +fi -# Preferred editor for local and remote sessions -if [[ -n $SSH_CONNECTION ]]; then - export EDITOR='code -w' +# [Backspace] - delete backward +bindkey -M emacs '^?' backward-delete-char +bindkey -M viins '^?' backward-delete-char +bindkey -M vicmd '^?' backward-delete-char +# [Delete] - delete forward +if [[ -n "${terminfo[kdch1]}" ]]; then + bindkey -M emacs "${terminfo[kdch1]}" delete-char + bindkey -M viins "${terminfo[kdch1]}" delete-char + bindkey -M vicmd "${terminfo[kdch1]}" delete-char else - export EDITOR='code -w' + bindkey -M emacs "^[[3~" delete-char + bindkey -M viins "^[[3~" delete-char + bindkey -M vicmd "^[[3~" delete-char + + bindkey -M emacs "^[3;5~" delete-char + bindkey -M viins "^[3;5~" delete-char + bindkey -M vicmd "^[3;5~" delete-char fi -# Compilation flags -# export ARCHFLAGS="-arch x86_64" +# Common use aliases +alias aup="pamac upgrade --aur" +alias grubup="sudo update-grub" +alias fixpacman="sudo rm /var/lib/pacman/db.lck" +alias tarnow='tar -acf ' +alias untar='tar -zxvf ' +alias wget='wget -c ' +alias psmem='ps auxf | sort -nr -k 4' +alias psmem10='ps auxf | sort -nr -k 4 | head -10' +alias ..='cd ..' +alias ...='cd ../..' +alias ....='cd ../../..' +alias .....='cd ../../../..' +alias ......='cd ../../../../..' +alias dir='dir --color=auto' +alias vdir='vdir --color=auto' +alias grep='grep --color=auto' +alias fgrep='fgrep --color=auto' +alias egrep='egrep --color=auto' +alias hw='hwinfo --short' # Hardware Info +alias gitpkg='pacman -Q | grep -i "\-git" | wc -l' # List amount of -git packages -# Set personal aliases, overriding those provided by oh-my-zsh libs, -# plugins, and themes. Aliases can be placed here, though oh-my-zsh -# users are encouraged to define aliases within the ZSH_CUSTOM folder. -# For a full list of active aliases, run `alias`. -# -# Example aliases -# alias zshconfig="mate ~/.zshrc" -# alias ohmyzsh="mate ~/.oh-my-zsh" +# Get fastest mirrors +alias mirror="sudo reflector -f 30 -l 30 --number 10 --verbose --save /etc/pacman.d/mirrorlist" +alias mirrord="sudo reflector --latest 50 --number 20 --sort delay --save /etc/pacman.d/mirrorlist" +alias mirrors="sudo reflector --latest 50 --number 20 --sort score --save /etc/pacman.d/mirrorlist" +alias mirrora="sudo reflector --latest 50 --number 20 --sort age --save /etc/pacman.d/mirrorlist" -# Powerline Shell -function powerline_precmd() { - PS1="$(powerline-shell --shell zsh $?)" -} +# Help people new to Arch +alias apt='man pacman' +alias apt-get='man pacman' +alias please='sudo' +alias tb='nc termbin.com 9999' -function install_powerline_precmd() { - for s in "${precmd_functions[@]}"; do - if [ "$s" = "powerline_precmd" ]; then - return - fi - done - precmd_functions+=(powerline_precmd) -} +# Replace yay with paru if installed +[ ! -x /usr/bin/yay ] && [ -x /usr/bin/paru ] && alias yay='paru' -if [ "$TERM" != "linux" ]; then - install_powerline_precmd -fi +# Set your countries like --country France --country Germany -- or more. +alias upd='sudo reflector --latest 5 --age 2 --fastest 5 --protocol https --sort rate --save /etc/pacman.d/mirrorlist && cat /etc/pacman.d/mirrorlist && sudo pacman -Syu && sudo updatedb' -# Run neofetch when opening terminal -neofetch - -# ALIASES -alias config='/usr/bin/git --git-dir=$HOME/.cfg/ --work-tree=$HOME' - -# EXPORTS -export TERM=xterm-256color +# Greeting +clear +pokemon-colorscripts -r +echo "zsh shell" diff --git a/README.md b/README.md deleted file mode 100644 index 882cca1..0000000 --- a/README.md +++ /dev/null @@ -1,37 +0,0 @@ -# dotfiles - -Personal dotfiles repository - -## Install on a new system - -See [Acknowledgements](#Acknowledgements) for tutorial source. - -* Prior to the installation, create alias for config - * `alias config="GIT_WORK_TREE=~ GIT_DIR=~/.cfg"` -* Add `.cfg` to `.gitignore` - * `echo ".cfg" >> .gitignore` -* Clone dotfiles into a bare repository - * `git clone --bare $HOME/.cfg` -* Define the alias in the current shell scope - * `alias config="GIT_WORK_TREE=~ GIT_DIR=~/.cfg"` -* Checkout content from bare repository to `$HOME` - * `config git checkout` -* Step above might fail with a message like: - * ``` - error: The following untracked working tree files would be overwritten by checkout: - .bashrc - .gitignore - Please move or remove them before you can switch branches. - Aborting - ``` -* Delete `.bashrc` and `.gitignore` - * `rm ~/.bashrc ~/.gitignore` -* Re-run checkout - * `config git checkout` -* Set the flag `showUntrackedFiles` to `no` on this specific (local) repo - * `config git config --local status.showUntrackedFiles no` - -## Acknowledgements - -I followed [DistroTube](https://www.youtube.com/channel/UCVls1GmFKf6WlTraIb_IaJg)'s process for setting up a git bare repository as shown in [Git Bare Repository - A Better Way To Manage Dotfiles](https://youtu.be/tBoLDpTWVOM). -He references [The best way to store your dotfiles: A bare Git repository](https://www.atlassian.com/git/tutorials/dotfiles) by [Nicola Paolucci](https://www.durdn.com/). diff --git a/README.org b/README.org new file mode 100644 index 0000000..2f46ece --- /dev/null +++ b/README.org @@ -0,0 +1,7801 @@ +#+title: Personal Dotfiles +#+author: Sravan Balaji +#+auto_tangle: t +#+startup: showeverything + +* Installation + +See [[*Acknowledgements]] for tutorial source. + +Prior to the installation, create alias for config + +#+begin_src shell + alias config="GIT_WORK_TREE=~ GIT_DIR=~/.cfg" +#+end_src + +Add =.cfg= to ~.gitignore~ + +#+begin_src shell + echo ".cfg" >> .gitignore +#+end_src + +Clone dotfiles into a bare repository + +#+begin_src shell + git clone --bare $HOME/.cfg +#+end_src + +Define the alias in the current shell scope + +#+begin_src shell + alias config="GIT_WORK_TREE=~ GIT_DIR=~/.cfg" +#+end_src + +Checkout content from bare repository to ~$HOME~ + +#+begin_src shell + config git checkout +#+end_src + +Step above might fail with a message like: + +#+begin_example + error: The following untracked working tree files would be overwritten by checkout: + .bashrc + .gitignore + Please move or remove them before you can switch branches. + Aborting +#+end_example + +Delete the untracked files so they can be overwritten with the version from dotfiles + +#+begin_src shell + rm ~/.bashrc ~/.gitignore +#+end_src + +Re-run checkout + +#+begin_src shell + config git checkout +#+end_src + +Set the flag =showUntrackedFiles= to =no= on this specific (local) repo + +#+begin_src shell + config git config --local status.showUntrackedFiles no +#+end_src + +Pull and update submodules + +#+begin_src shell + config git submodule update --init --recursive --remote +#+end_src + +* Git + +** Config + +#+begin_src gitconfig :tangle .gitconfig + # Sravan Balaji's Git Configuration + # Based on: https://gist.github.com/tdd/470582 + [user] + email = balajsra@umich.edu + name = Sravan Balaji + [color] + # Enable colors in color-supporting terminals + ui = auto + [pull] + rebase = true + [alias] + # List available aliases + aliases = !git config --get-regexp alias | sed -re 's/alias\\.(\\S*)\\s(.*)$/\\1 = \\2/g' + # Command shortcuts + ci = commit + co = checkout + st = status + # Display tree-like log, because default log is a pain… + lg = log --graph --date=relative --pretty=tformat:'%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%an %ad)%Creset' + # Useful when you have to update your last commit + # with staged files without editing the commit message. + oops = commit --amend --no-edit + # Ensure that force-pushing won't lose someone else's work (only mine). + push-with-lease = push --force-with-lease + # Rebase won’t trigger hooks on each "replayed" commit. + # This is an ugly hack that will replay each commit during rebase with the + # standard `commit` command which will trigger hooks. + rebase-with-hooks = rebase -x 'git reset --soft HEAD~1 && git commit -C HEAD@{1}' + # List local commits that were not pushed to remote repository + review-local = "!git lg @{push}.." + # Edit last commit message + reword = commit --amend + # Undo last commit but keep changed files in stage + uncommit = reset --soft HEAD~1 + # Remove file(s) from Git but not from disk + untrack = rm --cache -- + [core] + # Emacs + editor = "emacs" + # Don't consider trailing space change as a cause for merge conflicts + whitespace = -trailing-space + [diff] + # Use better, descriptive initials (c, i, w) instead of a/b. + mnemonicPrefix = true + # Show renames/moves as such + renames = true + # When using --word-diff, assume --word-diff-regex=. + wordRegex = . + # Display submodule-related information (commit listings) + submodule = log + [fetch] + # Auto-fetch submodule changes (sadly, won't auto-update) + recurseSubmodules = on-demand + [grep] + break = true + heading = true + lineNumber = true + # Consider most regexes to be ERE + extendedRegexp = true + [log] + # Use abbrev SHAs whenever possible/relevant instead of full 40 chars + abbrevCommit = true + # Automatically --follow when given a single path + follow = true + # Disable decorate for reflog + # (because there is no dedicated `reflog` section available) + decorate = false + [status] + # Display submodule rev change summaries in status + submoduleSummary = true + # Recursively traverse untracked directories to display all contents + showUntrackedFiles = all +#+end_src + +** Dotfiles Ignore + +#+begin_src gitignore :tangle .gitignore + .cfg + ,*~ +#+end_src + +* Notifications +** Dunst Notification Daemon + +*** Global + +#+begin_src conf :tangle .config/dunst/dunstrc + [global] + ### Display ### + + # Which monitor should the notifications be displayed on. + monitor = 0 + + # Display notification on focused monitor. Possible modes are: + # mouse: follow mouse pointer + # keyboard: follow window with keyboard focus + # none: don't follow anything + # + # "keyboard" needs a window manager that exports the + # _NET_ACTIVE_WINDOW property. + # This should be the case for almost all modern window managers. + # + # If this option is set to mouse or keyboard, the monitor option + # will be ignored. + follow = keyboard + + # The geometry of the window: + # [{width}]x{height}[+/-{x}+/-{y}] + # The geometry of the message window. + # The height is measured in number of notifications everything else + # in pixels. If the width is omitted but the height is given + # ("-geometry x2"), the message window expands over the whole screen + # (dmenu-like). If width is 0, the window expands to the longest + # message displayed. A positive x is measured from the left, a + # negative from the right side of the screen. Y is measured from + # the top and down respectively. + # The width can be negative. In this case the actual width is the + # screen width minus the width defined in within the geometry option. + geometry = "0x0-10+40" + + # Show how many messages are currently hidden (because of geometry). + indicate_hidden = yes + + # Shrink window if it's smaller than the width. Will be ignored if + # width is 0. + shrink = no + + # The transparency of the window. Range: [0; 100]. + # This option will only work if a compositing window manager is + # present (e.g. xcompmgr, compiz, etc.). + transparency = 15 + + # The height of the entire notification. If the height is smaller + # than the font height and padding combined, it will be raised + # to the font height and padding. + notification_height = 0 + + # Draw a line of "separator_height" pixel height between two + # notifications. + # Set to 0 to disable. + separator_height = 1 + + # Padding between text and separator. + padding = 8 + + # Horizontal padding. + horizontal_padding = 10 + + # Defines width in pixels of frame around the notification window. + # Set to 0 to disable. + frame_width = 2 + + # Defines color of the frame around the notification window. + frame_color = "#aaaaaa" + + # Define a color for the separator. + # possible values are: + # * auto: dunst tries to find a color fitting to the background; + # * foreground: use the same color as the foreground; + # * frame: use the same color as the frame; + # * anything else will be interpreted as a X color. + separator_color = auto + + # Sort messages by urgency. + sort = yes + + # Don't remove messages, if the user is idle (no mouse or keyboard input) + # for longer than idle_threshold seconds. + # Set to 0 to disable. + # A client can set the 'transient' hint to bypass this. See the rules + # section for how to disable this if necessary + idle_threshold = 120 + + ### Text ### + + font = Monospace 10 + + # The spacing between lines. If the height is smaller than the + # font height, it will get raised to the font height. + line_height = 0 + + # Possible values are: + # full: Allow a small subset of html markup in notifications: + # bold + # italic + # strikethrough + # underline + # + # For a complete reference see + # . + # + # strip: This setting is provided for compatibility with some broken + # clients that send markup even though it's not enabled on the + # server. Dunst will try to strip the markup but the parsing is + # simplistic so using this option outside of matching rules for + # specific applications *IS GREATLY DISCOURAGED*. + # + # no: Disable markup parsing, incoming notifications will be treated as + # plain text. Dunst will not advertise that it has the body-markup + # capability if this is set as a global setting. + # + # It's important to note that markup inside the format option will be parsed + # regardless of what this is set to. + markup = full + + # The format of the message. Possible variables are: + # %a appname + # %s summary + # %b body + # %i iconname (including its path) + # %I iconname (without its path) + # %p progress value if set ([ 0%] to [100%]) or nothing + # %n progress value if set without any extra characters + # %% Literal % + # Markup is allowed + format = "%s | %a %p\n%b" + + # Alignment of message text. + # Possible values are "left", "center" and "right". + alignment = center + + # Vertical alignment of message text and icon. + # Possible values are "top", "center" and "bottom". + vertical_alignment = center + + # Show age of message if message is older than show_age_threshold + # seconds. + # Set to -1 to disable. + show_age_threshold = 60 + + # Split notifications into multiple lines if they don't fit into + # geometry. + word_wrap = yes + + # When word_wrap is set to no, specify where to make an ellipsis in long lines. + # Possible values are "start", "middle" and "end". + ellipsize = middle + + # Ignore newlines '\n' in notifications. + ignore_newline = no + + # Stack together notifications with the same content + stack_duplicates = true + + # Hide the count of stacked notifications with the same content + hide_duplicate_count = false + + # Display indicators for URLs (U) and actions (A). + show_indicators = yes + + ### Icons ### + + # Align icons left/right/off + icon_position = left + + # Scale small icons up to this size, set to 0 to disable. Helpful + # for e.g. small files or high-dpi screens. In case of conflict, + # max_icon_size takes precedence over this. + min_icon_size = 0 + + # Scale larger icons down to this size, set to 0 to disable + max_icon_size = 96 + + # Paths to default icons. + icon_path = /usr/share/icons/Papirus-Dark/16x16/status/:/usr/share/icons/Papirus-Dark/16x16/devices/:/usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/ + + ### History ### + + # Should a notification popped up from history be sticky or timeout + # as if it would normally do. + sticky_history = yes + + # Maximum amount of notifications kept in history + history_length = 20 + + ### Misc/Advanced ### + + # dmenu path. + dmenu = /usr/bin/rofi -dmenu -i -p dunst: + + # Browser for opening urls in context menu. + browser = /usr/bin/vivaldi-stable + + # Always run rule-defined scripts, even if the notification is suppressed + always_run_script = true + + # Define the title of the windows spawned by dunst + title = Dunst + + # Define the class of the windows spawned by dunst + class = Dunst + + # Print a notification on startup. + # This is mainly for error detection, since dbus (re-)starts dunst + # automatically after a crash. + startup_notification = true + + # Manage dunst's desire for talking + # Can be one of the following values: + # crit: Critical features. Dunst aborts + # warn: Only non-fatal warnings + # mesg: Important Messages + # info: all unimportant stuff + # debug: all less than unimportant stuff + verbosity = mesg + + # Define the corner radius of the notification window + # in pixel size. If the radius is 0, you have no rounded + # corners. + # The radius will be automatically lowered if it exceeds half of the + # notification height to avoid clipping text and/or icons. + corner_radius = 10 + + # Ignore the dbus closeNotification message. + # Useful to enforce the timeout set by dunst configuration. Without this + # parameter, an application may close the notification sent before the + # user defined timeout. + ignore_dbusclose = false + + ### Legacy + + # Use the Xinerama extension instead of RandR for multi-monitor support. + # This setting is provided for compatibility with older nVidia drivers that + # do not support RandR and using it on systems that support RandR is highly + # discouraged. + # + # By enabling this setting dunst will not be able to detect when a monitor + # is connected or disconnected which might break follow mode if the screen + # layout changes. + force_xinerama = false + + ### mouse + + # Defines list of actions for each mouse event + # Possible values are: + # * none: Don't do anything. + # * do_action: If the notification has exactly one action, or one is marked as default, + # invoke it. If there are multiple and no default, open the context menu. + # * close_current: Close current notification. + # * close_all: Close all notifications. + # These values can be strung together for each mouse event, and + # will be executed in sequence. + mouse_left_click = close_current + mouse_middle_click = close_all + mouse_right_click = do_action, close_current +#+end_src + +*** Experimental + +#+begin_src conf :tangle .config/dunst/dunstrc + # Experimental features that may or may not work correctly. Do not expect them + # to have a consistent behaviour across releases. + [experimental] + # Calculate the dpi to use on a per-monitor basis. + # If this setting is enabled the Xft.dpi value will be ignored and instead + # dunst will attempt to calculate an appropriate dpi value for each monitor + # using the resolution and physical size. This might be useful in setups + # where there are multiple screens with very different dpi values. + per_monitor_dpi = false +#+end_src + +*** Shortcuts + +#+begin_src conf :tangle .config/dunst/dunstrc + [shortcuts] + + # Shortcuts are specified as [modifier+][modifier+]...key + # Available modifiers are "ctrl", "mod1" (the alt-key), "mod2", + # "mod3" and "mod4" (windows-key). + # Xev might be helpful to find names for keys. + + # Close notification. + # close = ctrl+space + + # Close all notifications. + # close_all = ctrl+shift+space + + # Redisplay last message(s). + # On the US keyboard layout "grave" is normally above TAB and left + # of "1". Make sure this key actually exists on your keyboard layout, + # e.g. check output of 'xmodmap -pke' + # history = ctrl+grave + + # Context menu. + # context = ctrl+shift+period +#+end_src + +*** Urgency Low + +#+begin_src conf :tangle .config/dunst/dunstrc + [urgency_low] + # IMPORTANT: colors have to be defined in quotation marks. + # Otherwise the "#" and following would be interpreted as a comment. + # background = "#222222" + # foreground = "#888888" + frame_color = "#bd93f9" + background = "#282a36" + foreground = "#f8f8f2" + timeout = 10 + # Icon for notifications with low urgency, uncomment to enable + #icon = /path/to/icon +#+end_src + +*** Urgency Normal + +#+begin_src conf :tangle .config/dunst/dunstrc + [urgency_normal] + # background = "#285577" + # foreground = "#ffffff" + frame_color = "#bd93f9" + background = "#282a36" + foreground = "#f8f8f2" + timeout = 10 + # Icon for notifications with normal urgency, uncomment to enable + #icon = /path/to/icon +#+end_src + +*** Urgency Critical + +#+begin_src conf :tangle .config/dunst/dunstrc + [urgency_critical] + # background = "#900000" + # foreground = "#ffffff" + frame_color = "#282a36" + background = "#ff5555" + foreground = "#f8f8f2" + timeout = 0 + # Icon for notifications with critical urgency, uncomment to enable + #icon = /path/to/icon +#+end_src + +*** Miscellaneous + +#+begin_src conf :tangle .config/dunst/dunstrc + # Every section that isn't one of the above is interpreted as a rules to + # override settings for certain messages. + # + # Messages can be matched by + # appname (discouraged, see desktop_entry) + # body + # category + # desktop_entry + # icon + # match_transient + # msg_urgency + # stack_tag + # summary + # + # and you can override the + # background + # foreground + # format + # frame_color + # fullscreen + # new_icon + # set_stack_tag + # set_transient + # timeout + # urgency + # + # Shell-like globbing will get expanded. + # + # Instead of the appname filter, it's recommended to use the desktop_entry filter. + # GLib based applications export their desktop-entry name. In comparison to the appname, + # the desktop-entry won't get localized. + # + # SCRIPTING + # You can specify a script that gets run when the rule matches by + # setting the "script" option. + # The script will be called as follows: + # script appname summary body icon urgency + # where urgency can be "LOW", "NORMAL" or "CRITICAL". + # + # NOTE: if you don't want a notification to be displayed, set the format + # to "". + # NOTE: It might be helpful to run dunst -print in a terminal in order + # to find fitting options for rules. + + # Disable the transient hint so that idle_threshold cannot be bypassed from the + # client + #[transient_disable] + # match_transient = yes + # set_transient = no + # + # Make the handling of transient notifications more strict by making them not + # be placed in history. + #[transient_history_ignore] + # match_transient = yes + # history_ignore = yes + + # fullscreen values + # show: show the notifications, regardless if there is a fullscreen window opened + # delay: displays the new notification, if there is no fullscreen window active + # If the notification is already drawn, it won't get undrawn. + # pushback: same as delay, but when switching into fullscreen, the notification will get + # withdrawn from screen again and will get delayed like a new notification + #[fullscreen_delay_everything] + # fullscreen = delay + #[fullscreen_show_critical] + # msg_urgency = critical + # fullscreen = show + + #[espeak] + # summary = "*" + # script = dunst_espeak.sh + + #[script-test] + # summary = "*script*" + # script = dunst_test.sh + + #[ignore] + # # This notification will not be displayed + # summary = "foobar" + # format = "" + + #[history-ignore] + # # This notification will not be saved in history + # summary = "foobar" + # history_ignore = yes + + #[skip-display] + # # This notification will not be displayed, but will be included in the history + # summary = "foobar" + # skip_display = yes + + #[signed_on] + # appname = Pidgin + # summary = "*signed on*" + # urgency = low + # + #[signed_off] + # appname = Pidgin + # summary = *signed off* + # urgency = low + # + #[says] + # appname = Pidgin + # summary = *says* + # urgency = critical + # + #[twitter] + # appname = Pidgin + # summary = *twitter.com* + # urgency = normal + # + #[stack-volumes] + # appname = "some_volume_notifiers" + # set_stack_tag = "volume" + # + # vim: ft=cfg +#+end_src + +*** Control Script + +#+begin_src shell :shebang #!/bin/bash :tangle .scripts/dunst.sh + help_menu() { + echo "Script to interact with dunst. Use only one argument at a time." + echo " - Toggle On/Off: dunst.sh OR dunst.sh --toggle OR dunst.sh -t" + echo " - Turn On: dunst.sh --on" + echo " - Turn Off: dunst.sh --off" + echo " - Context Menu: dunst.sh --context" + echo " - Close Notification: dunst.sh --close" + echo " - History Pop: dunst.sh --history" + echo " - Toggle Do Not Disturb: dunst.sh --dnd" + echo " - Rofi Menu: dunst.sh --rofi" + echo " - Help: dunst.sh --help OR dunst.sh -h" + } + + is_running() { + if pgrep -x dunst >/dev/null; then + echo 1 + else + echo 0 + fi + } + + rofi_menu() { + declare -a options=( + "⏼ Toggle - toggle" + " Turn On - on" + " Turn Off - off" + " Open Actions - context" + " Close Notification - close" + " View History - history" + " Toggle Do Not Disturb - dnd" + " Back - back" + " Quit - quit" + ) + + choice=$(printf '%s\n' "${options[@]}" | rofi -dmenu -i) + option=$(printf '%s\n' "${choice}" | awk '{print $NF}') + + if [[ "$option" == "quit" ]]; then + kilall rofi + elif [[ "$option" != "back" ]]; then + main "--$option" && main "--rofi" + fi + } + + main() { + if [ $# -eq 0 ]; then + # No arguments + help_menu + else + case $1 in + --help | -h) + help_menu + ;; + --toggle) + if [ $(is_running) -eq '1' ]; then + main --off + else + main --on + fi + ;; + --on) + # Get values from Xresources + config=~/.config/dunst/dunstrc + geometry_x=$(xgetres dunst.geometry-x) + geometry_y=$(xgetres dunst.geometry-y) + separator_height=$(xgetres dunst.sep-height) + padding=$(xgetres dunst.padding) + horizontal_padding=$(xgetres dunst.horiz-padding) + max_icon_size=$(xgetres dunst.max-icon-size) + frame_width=$(xgetres dunst.frame-width) + lb=$(xgetres dunst.low-background) + lf=$(xgetres dunst.low-foreground) + lfr=$(xgetres dunst.low-frame) + nb=$(xgetres dunst.normal-background) + nf=$(xgetres dunst.normal-foreground) + nfr=$(xgetres dunst.normal-frame) + cb=$(xgetres dunst.critical-background) + cf=$(xgetres dunst.critical-foreground) + cfr=$(xgetres dunst.critical-frame) + + if [ $(is_running) -eq '1' ]; then + killall dunst + fi + + # Start Dunst + /usr/bin/dunst -config $config \ + -geometry "0x0-$geometry_x+$geometry_y" \ + -separator_height "$separator_height" \ + -padding "$padding" \ + -horizontal_padding "$horizontal_padding" \ + -max_icon_size "$max_icon_size" \ + -frame_width "$frame_width" \ + -lb "$lb" \ + -lf "$lf" \ + -lfr "$lfr" \ + -nb "$nb" \ + -nf "$nf" \ + -nfr "$nfr" \ + -cb "$cb" \ + -cf "$cf" \ + -cfr "$cfr" & + + notify-send "Turning Dunst ON" + ;; + --off) + notify-send "Turning Dunst OFF" + + if [ $(is_running) -eq '1' ]; then + killall dunst + fi + ;; + --context) + dunstctl context + ;; + --close) + dunstctl close + ;; + --history) + dunstctl history-pop + ;; + --dnd) + dunstctl set-paused toggle + ;; + --rofi) + rofi_menu + ;; + esac + fi + } + + main $@ +#+end_src + +** Deadd Notification Center + +*** Configuration + +**** Notification Center + +#+begin_src conf :tangle .config/deadd/deadd.conf + [notification-center] +#+end_src + +Hide the notification center when the mouse leaves the window +#+begin_src conf :tangle .config/deadd/deadd.conf + hideOnMouseLeave = false +#+end_src + +Margin at the top of the notification center in pixels. This can be used to avoid overlap between the notification center and bars such as polybar or i3blocks. +#+begin_src conf :tangle .config/deadd/deadd.conf + marginTop = 25 +#+end_src + +Margin at the bottom of the notification center in pixels. +#+begin_src conf :tangle .config/deadd/deadd.conf + marginBottom = 0 +#+end_src + +Margin to the right of the notification center in pixels. +#+begin_src conf :tangle .config/deadd/deadd.conf + marginRight = 0 +#+end_src + +Width of the notification center in pixels. +#+begin_src conf :tangle .config/deadd/deadd.conf + width = 700 +#+end_src + +Monitor on which the notification center will be printed. +#+begin_src conf :tangle .config/deadd/deadd.conf + monitor = 0 +#+end_src + +If true, the notification center will open on the screen, on which the mouse is +#+begin_src conf :tangle .config/deadd/deadd.conf + followMouse = true +#+end_src + +(Optional) Command to run at startup. This can be used to setup button states. +#+begin_src conf :tangle .config/deadd/deadd.conf + # startupCommand = "deadd-notification-center-startup" +#+end_src + +If newFirst is set to true, newest notifications appear on the top of the notification center. Else, notifications stack, from top to bottom. +#+begin_src conf :tangle .config/deadd/deadd.conf + newFirst = true +#+end_src + +If useActionIcons is set to true, Action Buttons can show Icon +#+begin_src conf :tangle .config/deadd/deadd.conf + useActionIcons = true +#+end_src + +If true, the transient field in notifications will be ignored and the notification will be persisted in the notification center anyways +#+begin_src conf :tangle .config/deadd/deadd.conf + ignoreTransient = false +#+end_src + +If true, markup (, , , ) will be displayed properly +#+begin_src conf :tangle .config/deadd/deadd.conf + useMarkup = true +#+end_src + +If true, html entities (& for &, % for %, etc) will be parsed properly. This is useful for chromium-based apps, which tend to send these in notifications. +#+begin_src conf :tangle .config/deadd/deadd.conf + parseHtmlEntities = true +#+end_src + +If set to true, the parameter noClosedMsg can be set on notifications. If noClosedMsg is set to true on a notification, DBUS NotificationClosed messages will not be send for this notification. +#+begin_src conf :tangle .config/deadd/deadd.conf + configSendNotiClosedDbusMessage = false +#+end_src + +If set to true: If no icon is passed by the app_icon parameter and no application "desktop-entry"-hint is present, the notification center will try to guess the icon from the application name (if present). Default is true. +#+begin_src conf :tangle .config/deadd/deadd.conf + guessIconFromAppname = true +#+end_src + +See section [[https://github.com/phuhl/linux_notification_center#notification-based-scripting][Notification based scripting]] for an explanation +#+begin_src conf :tangle .config/deadd/deadd.conf + #match = "title=Abc;body=abc":"app=notify-send" + #modify = "transient=false" + #run = "":"killall notify-send" +#+end_src + +**** Notification Popup + +#+begin_src conf :tangle .config/deadd/deadd.conf + [notification-center-notification-popup] +#+end_src + +Default timeout used for notifications in milli-seconds. This can be overwritten with the "-t" option (or "--expire-time") of the notify-send command. +#+begin_src conf :tangle .config/deadd/deadd.conf + notiDefaultTimeout = 10000 +#+end_src + +Margin above notifications (in pixels). This can be used to avoid overlap between notifications and a bar such as polybar or i3blocks. +#+begin_src conf :tangle .config/deadd/deadd.conf + distanceTop = 25 +#+end_src + +Margin on the right of the notification (in pixels). +#+begin_src conf :tangle .config/deadd/deadd.conf + distanceRight = 0 +#+end_src + +Vertical distance between 2 notifications (in pixels). +#+begin_src conf :tangle .config/deadd/deadd.conf + distanceBetween = 10 +#+end_src + +Width of the notifications. +#+begin_src conf :tangle .config/deadd/deadd.conf + width = 400 +#+end_src + +Monitor on which the notification will be printed. +#+begin_src conf :tangle .config/deadd/deadd.conf + monitor = 0 +#+end_src + +If true, the notifications will open on the screen, on which the mouse is +#+begin_src conf :tangle .config/deadd/deadd.conf + followMouse = true +#+end_src + +The display size of the application icons in the notification pop-ups and in the notification center +#+begin_src conf :tangle .config/deadd/deadd.conf + iconSize = 25 +#+end_src + +The maximal display size of images that are part of notifications for notification pop-ups and in the notification center +#+begin_src conf :tangle .config/deadd/deadd.conf + maxImageSize = 100 +#+end_src + +The margin around the top, bottom, left, and right of notification images. Applies to popup notifications and in-center notifications. +#+begin_src conf :tangle .config/deadd/deadd.conf + imageMarginTop = 10 + imageMarginBottom = 10 + imageMarginLeft = 0 + imageMarginRight = 0 +#+end_src + +Truncates notification bodies with '...' at the specified number of lines. If -1 is specified, the body text will not be truncated. Applies only to popup notifications +#+begin_src conf :tangle .config/deadd/deadd.conf + shortenBody = 5 +#+end_src + +The mouse button for closing a popup. Must be either "mouse1", "mouse2", "mouse3", "mouse4", or "mouse5" +#+begin_src conf :tangle .config/deadd/deadd.conf + dismissButton = mouse1 +#+end_src + +The mouse button for opening a popup with the default action. Must be either "mouse1", "mouse2", "mouse3", "mouse4", or "mouse5" +#+begin_src conf :tangle .config/deadd/deadd.conf + defaultActionButton = mouse3 +#+end_src + +**** Buttons + +This section describes the configurable buttons within the notification center and NOT the buttons that appear in the notifications + +Note: If you want your buttons in the notification center to be + squares you should verify that the following equality holds: + [notification-center]::width + == [buttons]::buttonsPerRow * [buttons]::buttonHeight + + ([buttons]::buttonsPerRow + 1) * [buttons]::buttonMargin + +#+begin_src conf :tangle .config/deadd/deadd.conf + [buttons] +#+end_src + +Numbers of buttons that can be drawn on a row of the notification center. +#+begin_src conf :tangle .config/deadd/deadd.conf + buttonsPerRow = 5 +#+end_src + +Height of buttons in the notification center (in pixels). +#+begin_src conf :tangle .config/deadd/deadd.conf + buttonHeight = 60 +#+end_src + +Horizontal and vertical margin between each button in the notification center (in pixels). +#+begin_src conf :tangle .config/deadd/deadd.conf + buttonMargin = 2 +#+end_src + +Labels written on the buttons in the notification center. Labels should be written between quotes and separated by a colon. For example: +#+begin_src conf :tangle .config/deadd/deadd.conf + # labels = "VPN":"Bluetooth":"Wifi":"Screensaver" +#+end_src + +Each label is represented as a clickable button in the notification center. The commands variable below define the commands that should be launched when the user clicks on the associated button. There should be the same number of entries in `commands` and in `labels` +#+begin_src conf :tangle .config/deadd/deadd.conf + # commands = "sudo vpnToggle":"bluetoothToggle":"wifiToggle":"screensaverToggle" +#+end_src + +*** Styling + +**** Notification Center + +#+begin_src conf :tangle .config/deadd/deadd.css + .blurredBG, #main_window, .blurredBG.low, .blurredBG.normal { + background: rgba(40, 42, 54, 0.8); + border: 2pt #50fa7b solid; + border-radius: 10px; + } + + .noti-center.time { + font-size: 32px; + } +#+end_src + +**** Notifications + +#+begin_src conf :tangle .config/deadd/deadd.css + .title { + font-weight: bold; + font-size: 16px; + } + + .appname { + font-size: 12px; + } + + .time { + font-size: 12px; + } + + .blurredBG.notification { + background: rgba(40, 42, 54, 0.8); + border: 2pt #50fa7b solid; + border-radius: 10px; + } + + .blurredBG.notification.critical { + background: rgba(255, 85, 85, 0.8); + border: 2pt #50fa7b solid; + border-radius: 10px; + } + + .notificationInCenter.critical { + background: rgba(255, 85, 85, 0.8); + } +#+end_src + +**** Labels + +#+begin_src conf :tangle .config/deadd/deadd.css + label { + color: #f8f8f2; + } + + label.notification { + color: #f8f8f2; + } + + label.critical { + color: #f8f8f2; + } + .notificationInCenter label.critical { + color: #f8f8f2; + } +#+end_src + +**** Buttons + +#+begin_src conf :tangle .config/deadd/deadd.css + button { + background: transparent; + color: #f8f8f2; + border-radius: 10px; + border-width: 2px; + background-position: 0px 0px; + text-shadow: none; + } + + button:hover { + border-radius: 10px; + background: rgba(68, 71, 90, 0.8); + border-width: 2px; + border-top: transparent; + border-color: #50fa7b; + color: #282a36; + } +#+end_src + +**** Custom Buttons + +#+begin_src conf :tangle .config/deadd/deadd.css + .userbutton { + background: transparent; + border-radius: 10px; + border-width: 2px; + background-position: 0px 0px; + text-shadow: none; + } + + .userbutton:hover { + border-radius: 10px; + background: rgba(68, 71, 90, 0.8); + border-width: 2px; + border-top: transparent; + border-color: #50fa7b; + } + + .userbuttonlabel { + color: #f8f8f2; + font-size: 12px; + } + + .userbuttonlabel:hover { + color: #f8f8f2; + } + + button.buttonState1 { + background: rgba(20,0,0,0.5); + } + + .userbuttonlabel.buttonState1 { + color: #fff; + } + + button.buttonState1:hover { + background: rgba(20,0,0, 0.4); + } + + .userbuttonlabel.buttonState1:hover { + color: #111; + } + + button.buttonState2 { + background: rgba(255,255,255,0.3); + } + + .userbuttonlabel.buttonState2 { + color: #111; + } + + button.buttonState2:hover { + background: rgba(20,0,0, 0.3); + } + + .userbuttonlabel.buttonState2:hover { + color: #000; + } +#+end_src + +**** Images + +#+begin_src conf :tangle .config/deadd/deadd.css + image.deadd-noti-center.notification.image { + margin-left: 10px; + } +#+end_src + +*** Control Script + +#+begin_src shell :shebang #!/bin/bash :tangle .scripts/deadd.sh + help_menu() { + echo "Script to interact with deadd. Use only one argument at a time." + echo " - Toggle On/Off: deadd.sh OR deadd.sh --toggle OR deadd.sh -t" + echo " - Turn On: deadd.sh --on" + echo " - Turn Off: deadd.sh --off" + echo " - Toggle Notification Center: deadd.sh --toggle-center" + echo " - Pause Popup Notifications: deadd.sh --pause" + echo " - Unpause Popup Notifications: deadd.sh --unpause" + echo " - Rofi Menu: deadd.sh --rofi" + echo " - Help: deadd.sh --help OR deadd.sh -h" + } + + is_running() { + if pgrep -x deadd-notificat >/dev/null; then + echo 1 + else + echo 0 + fi + } + + rofi_menu() { + declare -a options=( + "⏼ Toggle - toggle" + " Turn On - on" + " Turn Off - off" + " Toggle Notification Center - toggle-center" + " Pause Popup Notifications - pause" + " Unpause Popup Notifications - unpause" + " Back - back" + " Quit - quit" + ) + + choice=$(printf '%s\n' "${options[@]}" | rofi -dmenu -i) + option=$(printf '%s\n' "${choice}" | awk '{print $NF}') + + if [[ "$option" == "quit" ]]; then + kilall rofi + elif [[ "$option" != "back" ]]; then + main "--$option" && main "--rofi" + fi + } + + main() { + if [ $# -eq 0 ]; then + # No arguments + help_menu + else + case $1 in + --help | -h) + help_menu + ;; + --toggle) + if [ $(is_running) -eq '1' ]; then + main --off + else + main --on + fi + ;; + --on) + if [ $(is_running) -eq '1' ]; then + killall deadd-notificat + fi + + /home/sravan/.local/bin/notify-send.py a --hint \ + boolean:deadd-notification-center:true \ + string:type:reloadStyle + + notify-send "Turning Deadd ON" + ;; + --off) + notify-send "Turning Deadd OFF" + + if [ $(is_running) -eq '1' ]; then + killall deadd-notificat + fi + ;; + --toggle-center) + kill -s USR1 $(pidof deadd-notification-center) + ;; + --pause) + notify-send "Pausing Notifications" + + /home/sravan/.local/bin/notify-send.py a --hint \ + boolean:deadd-notification-center:true \ + string:type:pausePopups > /dev/null 2>&1 + ;; + --unpause) + /home/sravan/.local/bin/notify-send.py a --hint \ + boolean:deadd-notification-center:true \ + string:type:unpausePopups > /dev/null 2>&1 + + notify-send "Unpausing Notifications" + ;; + --rofi) + rofi_menu + ;; + esac + fi + } + + main $@ +#+end_src + +* Application Launcher + +** Rofi + +*** Configuration + +#+begin_src conf :tangle .config/rofi/config.rasi + configuration { + modi: "window,drun,combi,run,clipboard:greenclip print,ssh"; + /* width: 50;*/ + /* lines: 15;*/ + /* columns: 1;*/ + font: "NotoSans Nerd Font 12"; + /* bw: 1;*/ + /* location: 0;*/ + /* padding: 5;*/ + /* yoffset: 0;*/ + /* xoffset: 0;*/ + /* fixed-num-lines: true;*/ + show-icons: true; + terminal: "kitty"; + /* ssh-client: "ssh";*/ + /* ssh-command: "{terminal} -e {ssh-client} {host} [-p {port}]";*/ + /* run-command: "{cmd}";*/ + /* run-list-command: "";*/ + /* run-shell-command: "{terminal} -e {cmd}";*/ + /* window-command: "wmctrl -i -R {window}";*/ + /* window-match-fields: "all";*/ + icon-theme: "Papirus-Dark"; + /* drun-match-fields: "name,generic,exec,categories";*/ + /* drun-show-actions: false;*/ + /* drun-display-format: "{name} [({generic})]";*/ + /* disable-history: false;*/ + /* ignored-prefixes: "";*/ + /* sort: false;*/ + /* sorting-method: ;*/ + /* case-sensitive: false;*/ + /* cycle: true;*/ + /* sidebar-mode: false;*/ + /* eh: 1;*/ + /* auto-select: false;*/ + /* parse-hosts: false;*/ + /* parse-known-hosts: true;*/ + combi-modi: "window,drun"; + /* matching: "normal";*/ + /* tokenize: true;*/ + /* m: "-5";*/ + /* line-margin: 2;*/ + /* line-padding: 1;*/ + /* filter: ;*/ + /* separator-style: "dash";*/ + /* hide-scrollbar: false;*/ + /* fullscreen: false;*/ + /* fake-transparency: false;*/ + /* dpi: -1;*/ + /* threads: 0;*/ + /* scrollbar-width: 8;*/ + /* scroll-method: 0;*/ + /* fake-background: "screenshot";*/ + /* window-format: "{w} {c} {t}";*/ + /* click-to-exit: true;*/ + /* show-match: true;*/ + /* theme: ;*/ + /* color-normal: ;*/ + /* color-urgent: ;*/ + /* color-active: ;*/ + /* color-window: ;*/ + /* max-history-size: 25;*/ + /* combi-hide-mode-prefix: false;*/ + /* matching-negate-char: '-' /* unsupported */;*/ + /* cache-dir: ;*/ + /* pid: "/run/user/1000/rofi.pid";*/ + /* display-window: ;*/ + /* display-windowcd: ;*/ + /* display-run: ;*/ + /* display-ssh: ;*/ + /* display-drun: ;*/ + /* display-combi: ;*/ + /* display-keys: ;*/ + /* kb-primary-paste: "Control+V,Shift+Insert";*/ + /* kb-secondary-paste: "Control+v,Insert";*/ + /* kb-clear-line: "Control+w";*/ + /* kb-move-front: "Control+a";*/ + /* kb-move-end: "Control+e";*/ + /* kb-move-word-back: "Alt+b,Control+Left";*/ + /* kb-move-word-forward: "Alt+f,Control+Right";*/ + /* kb-move-char-back: "Left,Control+b";*/ + /* kb-move-char-forward: "Right,Control+f";*/ + /* kb-remove-word-back: "Control+Alt+h,Control+BackSpace";*/ + /* kb-remove-word-forward: "Control+Alt+d";*/ + /* kb-remove-char-forward: "Delete,Control+d";*/ + kb-remove-char-back: "BackSpace"; + kb-remove-to-eol: "Control+Shift+e"; + /* kb-remove-to-sol: "Control+u";*/ + kb-accept-entry: "Control+m,Return,KP_Enter"; + /* kb-accept-custom: "Control+Return";*/ + /* kb-accept-alt: "Shift+Return";*/ + /* kb-delete-entry: "Shift+Delete";*/ + kb-mode-next: "Shift+Right,Control+Tab,Control+l"; + kb-mode-previous: "Shift+Left,Control+ISO_Left_Tab,Control+h"; + /* kb-row-left: "Control+Page_Up";*/ + /* kb-row-right: "Control+Page_Down";*/ + kb-row-up: "Up,Control+k,Control+p,ISO_Left_Tab"; + kb-row-down: "Down,Control+j,Control+n"; + /* kb-row-tab: "Tab";*/ + /* kb-page-prev: "Page_Up";*/ + /* kb-page-next: "Page_Down";*/ + /* kb-row-first: "Home,KP_Home";*/ + /* kb-row-last: "End,KP_End";*/ + /* kb-row-select: "Control+space";*/ + /* kb-screenshot: "Alt+S";*/ + /* kb-ellipsize: "Alt+period";*/ + /* kb-toggle-case-sensitivity: "grave,dead_grave";*/ + /* kb-toggle-sort: "Alt+grave";*/ + /* kb-cancel: "Escape,Control+g,Control+bracketleft";*/ + /* kb-custom-1: "Alt+1";*/ + /* kb-custom-2: "Alt+2";*/ + /* kb-custom-3: "Alt+3";*/ + /* kb-custom-4: "Alt+4";*/ + /* kb-custom-5: "Alt+5";*/ + /* kb-custom-6: "Alt+6";*/ + /* kb-custom-7: "Alt+7";*/ + /* kb-custom-8: "Alt+8";*/ + /* kb-custom-9: "Alt+9";*/ + /* kb-custom-10: "Alt+0";*/ + /* kb-custom-11: "Alt+exclam";*/ + /* kb-custom-12: "Alt+at";*/ + /* kb-custom-13: "Alt+numbersign";*/ + /* kb-custom-14: "Alt+dollar";*/ + /* kb-custom-15: "Alt+percent";*/ + /* kb-custom-16: "Alt+dead_circumflex";*/ + /* kb-custom-17: "Alt+ampersand";*/ + /* kb-custom-18: "Alt+asterisk";*/ + /* kb-custom-19: "Alt+parenleft";*/ + /* kb-select-1: "Super+1";*/ + /* kb-select-2: "Super+2";*/ + /* kb-select-3: "Super+3";*/ + /* kb-select-4: "Super+4";*/ + /* kb-select-5: "Super+5";*/ + /* kb-select-6: "Super+6";*/ + /* kb-select-7: "Super+7";*/ + /* kb-select-8: "Super+8";*/ + /* kb-select-9: "Super+9";*/ + /* kb-select-10: "Super+0";*/ + /* ml-row-left: "ScrollLeft";*/ + /* ml-row-right: "ScrollRight";*/ + /* ml-row-up: "ScrollUp";*/ + /* ml-row-down: "ScrollDown";*/ + /* me-select-entry: "MousePrimary";*/ + /* me-accept-entry: "MouseDPrimary";*/ + /* me-accept-custom: "Control+MouseDPrimary";*/ + } +#+end_src + +*** Themes + +**** Theme Selection + +#+begin_src conf :tangle .config/rofi/config.rasi + @import "./themes/centertab-dracula.rasi" + /* @import "./themes/dmenu-dracula.rasi" */ + /* @import "./themes/dracula-blurry-full.rasi" */ + /* @import "./themes/dracula.rasi" */ + /* @import "./themes/sidetab-dracula.rasi" */ + /* @import "./themes/slate-dracula.rasi" */ +#+end_src + +**** Centertab Dracula + +#+begin_src conf :tangle .config/rofi/themes/centertab-dracula.rasi + /** + ,* ROFI Color theme: centertab-dracula + ,* User: balajsra + ,* Copyright: deadguy & Sravan Balaji + ,*/ + + configuration { + display-drun: "launch"; + display-run: "execute"; + display-window: "window"; + display-combi: "combi"; + show-icons: true; + sidebar-mode: false; + font: "NotoSans Nerd Font 12"; + } + + ,* { + background-color: #282a36; + text-color: #f8f8f2; + selbg: #8be9fd; + actbg: #44475a; + urgbg: #ff5555; + winbg: #8be9fd; + + selected-normal-foreground: @winbg; + normal-foreground: @text-color; + selected-normal-background: @actbg; + normal-background: @background-color; + + selected-urgent-foreground: @background-color; + urgent-foreground: @text-color; + selected-urgent-background: @urgbg; + urgent-background: @background-color; + + selected-active-foreground: @winbg; + active-foreground: @background-color; + selected-active-background: @actbg; + active-background: @selbg; + + line-margin: 2; + line-padding: 2; + separator-style: "none"; + hide-scrollbar: "true"; + margin: 0; + padding: 0; + } + + window { + location: center; + anchor: center; + height: 75%; + width: 75%; + orientation: horizontal; + children: [mainbox]; + border: 2; + border-color: @winbg; + } + + mainbox { + spacing: 0.8em; + children: [ entry, listview, mode-switcher ]; + } + + button { + padding: 5px 2px; + } + + button selected { + background-color: @active-background; + text-color: @background-color; + } + + inputbar { + padding: 5px; + spacing: 5px; + } + + listview { + spacing: 0.5em; + dynamic: false; + cycle: true; + } + + element { + padding: 10px; + } + + element-icon { + size: 2.00ch; + } + + entry { + expand: false; + text-color: @normal-foreground; + vertical-align: 1; + padding: 5px; + } + + element normal.normal { + background-color: @normal-background; + text-color: @normal-foreground; + } + + element normal.urgent { + background-color: @urgent-background; + text-color: @urgent-foreground; + } + + element normal.active { + background-color: @active-background; + text-color: @active-foreground; + } + + element selected.normal { + background-color: @selected-normal-background; + text-color: @selected-normal-foreground; + border: 0 5px solid 0 0; + border-color: @active-background; + } + + element selected.urgent { + background-color: @selected-urgent-background; + text-color: @selected-urgent-foreground; + } + + element selected.active { + background-color: @selected-active-background; + text-color: @selected-active-foreground; + } + + element alternate.normal { + background-color: @normal-background; + text-color: @normal-foreground; + } + + element alternate.urgent { + background-color: @urgent-background; + text-color: @urgent-foreground; + } + + element alternate.active { + background-color: @active-background; + text-color: @active-foreground; + } +#+end_src + +**** Dmenu Dracula + +#+begin_src conf :tangle .config/rofi/themes/dmenu-dracula.rasi + /** + ,* ROFI Color theme: dmenu-dracula + ,* User: balajsra + ,* Copyright: Sravan Balaji + ,*/ + + ,* { + background-color: #282a36; + text-color: #f8f8f2; + font: "NotoSans Nerd Font 12"; + } + + #window { + anchor: north; + location: north; + width: 100%; + padding: 2px 5px 2px 5px; /* top right bottom left */ + children: [ horibox ]; + } + + #horibox { + orientation: horizontal; + children: [ prompt, entry, listview ]; + } + + #listview { + layout: horizontal; + spacing: 10px; + lines: 100; + } + + #entry { + expand: false; + width: 10em; + } + + #element { + padding: 1px 5px 1px 5px; /* top right bottom left */ + } + #element selected { + background-color: #bd93f9; + text-color: #282a36; + } +#+end_src + +**** Blurry Full Dracula + +#+begin_src conf :tangle .config/rofi/themes/dracula-blurry-full.rasi + /* + ,* + ,* Author : Aditya Shakya (adi1090x) + ,* Mail : adi1090x@gmail.com + ,* Github : @adi1090x + ,* Reddit : @adi1090x + ,* + ,* Dracula Theme Colors : Sravan Balaji (balajsra) + ,* Mail: balajsra@umich.edu + ,* Github: @balajsra + ,*/ + + configuration { + drun-display-format: "{name}"; + threads: 0; + scroll-method: 0; + disable-history: false; + fullscreen: false; + hide-scrollbar: true; + sidebar-mode: false; + } + + ,* { + background: #00000000; + background-color: #282a36cc; + background-entry: #44475acc; + background-alt: #44475acc; + foreground: #f8f8f2cc; + foreground-selected: #50fa7bcc; + urgent: #ff5555cc; + urgent-selected: #ff5555cc; + } + + window { + transparency: "real"; + background-color: @background; + text-color: @foreground; + height: 100%; + width: 100%; + location: northwest; + anchor: northwest; + x-offset: 0; + y-offset: 0; + } + + prompt { + enabled: false; + } + + inputbar { + background-color: @background-alt; + text-color: @foreground; + expand: false; + border-radius: 6px; + margin: 0px 430px 0px 430px; + padding: 10px 10px 10px 10px; + position: north; + } + + entry { + background-color: @background; + text-color: @foreground; + placeholder-color: @foreground; + expand: true; + horizontal-align: 0.5; + placeholder: "Search applications"; + blink: true; + } + + case-indicator { + background-color: @background; + text-color: @foreground; + spacing: 0; + } + + listview { + background-color: @background; + columns: 7; + spacing: 4px; + cycle: false; + dynamic: true; + layout: vertical; + } + + mainbox { + background-color: @background-color; + children: [ inputbar, listview ]; + spacing: 25px; + padding: 70px 135px 55px 135px; + } + + element { + background-color: @background; + text-color: @foreground; + orientation: vertical; + border-radius: 9px; + padding: 20px 0px 20px 0px; + } + + element-icon { + size: 65px; + border: 0px; + } + + element-text { + expand: true; + horizontal-align: 0.5; + vertical-align: 0.5; + margin: 5px 10px 0px 10px; + } + + element normal.urgent, + element alternate.urgent { + background-color: @urgent; + text-color: @foreground; + border-radius: 9px; + } + + element normal.active, + element alternate.active { + background-color: @background-alt; + text-color: @foreground; + } + + element selected { + background-color: @background-alt; + text-color: @foreground-selected; + } + + element selected.urgent { + background-color: @urgent-selected; + text-color: @foreground; + } + + element selected.active { + background-color: @background-alt; + color: @foreground-selected; + } +#+end_src + +**** Official Dracula Theme + +#+begin_src conf :tangle .config/rofi/themes/dracula.rasi + /*Dracula theme based on the Purple official rofi theme*/ + + ,* { + font: "Jetbrains Mono 12"; + foreground: #f8f8f2; + background-color: #282a36; + active-background: #6272a4; + urgent-background: #ff5555; + selected-background: @active-background; + selected-urgent-background: @urgent-background; + selected-active-background: @active-background; + separatorcolor: @active-background; + bordercolor: @active-background; + } + + #window { + background-color: @background; + border: 1; + border-radius: 6; + border-color: @bordercolor; + padding: 5; + } + #mainbox { + border: 0; + padding: 0; + } + #message { + border: 1px dash 0px 0px ; + border-color: @separatorcolor; + padding: 1px ; + } + #textbox { + text-color: @foreground; + } + #listview { + fixed-height: 0; + border: 2px dash 0px 0px ; + border-color: @bordercolor; + spacing: 2px ; + scrollbar: false; + padding: 2px 0px 0px ; + } + #element { + border: 0; + padding: 1px ; + } + #element.normal.normal { + background-color: @background; + text-color: @foreground; + } + #element.normal.urgent { + background-color: @urgent-background; + text-color: @urgent-foreground; + } + #element.normal.active { + background-color: @active-background; + text-color: @foreground; + } + #element.selected.normal { + background-color: @selected-background; + text-color: @foreground; + } + #element.selected.urgent { + background-color: @selected-urgent-background; + text-color: @foreground; + } + #element.selected.active { + background-color: @selected-active-background; + text-color: @foreground; + } + #element.alternate.normal { + background-color: @background; + text-color: @foreground; + } + #element.alternate.urgent { + background-color: @urgent-background; + text-color: @foreground; + } + #element.alternate.active { + background-color: @active-background; + text-color: @foreground; + } + #scrollbar { + width: 2px ; + border: 0; + handle-width: 8px ; + padding: 0; + } + #sidebar { + border: 2px dash 0px 0px ; + border-color: @separatorcolor; + } + #button.selected { + background-color: @selected-background; + text-color: @foreground; + } + #inputbar { + spacing: 0; + text-color: @foreground; + padding: 1px ; + } + #case-indicator { + spacing: 0; + text-color: @foreground; + } + #entry { + spacing: 0; + text-color: @foreground; + } + #prompt { + spacing: 0; + text-color: @foreground; + } + #inputbar { + children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; + } + #textbox-prompt-colon { + expand: false; + str: ":"; + margin: 0px 0.3em 0em 0em ; + text-color: @foreground; + } +#+end_src + +**** Sidetab Dracula + +#+begin_src conf :tangle .config/rofi/themes/sidetab-dracula.rasi + /** + ,* ROFI Color theme: sidetab-dracula + ,* User: balajsra + ,* Copyright: deadguy & Sravan Balaji + ,*/ + + configuration { + display-drun: "Launch"; + display-run: "Execute"; + display-window: "Window"; + show-icons: true; + sidebar-mode: true; + font: "NotoSans Nerd Font 12"; + } + + ,* { + background-color: #282a36; + text-color: #f8f8f2; + selbg: #bd93f9; + actbg: #44475a; + urgbg: #ff5555; + winbg: #50fa7b; + + selected-normal-foreground: @winbg; + normal-foreground: @text-color; + selected-normal-background: @actbg; + normal-background: @background-color; + + selected-urgent-foreground: @background-color; + urgent-foreground: @text-color; + selected-urgent-background: @urgbg; + urgent-background: @background-color; + + selected-active-foreground: @winbg; + active-foreground: @text-color; + selected-active-background: @actbg; + active-background: @selbg; + + line-margin: 2; + line-padding: 2; + separator-style: "none"; + hide-scrollbar: "true"; + margin: 0; + padding: 0; + } + + window { + location: west; + anchor: west; + height: 100%; + width: 25%; + orientation: horizontal; + children: [mainbox]; + } + + mainbox { + spacing: 0.8em; + children: [ entry, listview, mode-switcher ]; + } + + button { + padding: 5px 2px; + } + + button selected { + background-color: @active-background; + text-color: @background-color; + } + + inputbar { + padding: 5px; + spacing: 5px; + } + + listview { + spacing: 0.5em; + dynamic: false; + cycle: true; + } + + element { + padding: 10px; + } + + entry { + expand: false; + text-color: @normal-foreground; + vertical-align: 1; + padding: 5px; + } + + element normal.normal { + background-color: @normal-background; + text-color: @normal-foreground; + } + + element normal.urgent { + background-color: @urgent-background; + text-color: @urgent-foreground; + } + + element normal.active { + background-color: @active-background; + text-color: @active-foreground; + } + + element selected.normal { + background-color: @selected-normal-background; + text-color: @selected-normal-foreground; + border: 0 5px solid 0 0; + border-color: @active-background; + } + + element selected.urgent { + background-color: @selected-urgent-background; + text-color: @selected-urgent-foreground; + } + + element selected.active { + background-color: @selected-active-background; + text-color: @selected-active-foreground; + } + + element alternate.normal { + background-color: @normal-background; + text-color: @normal-foreground; + } + + element alternate.urgent { + background-color: @urgent-background; + text-color: @urgent-foreground; + } + + element alternate.active { + background-color: @active-background; + text-color: @active-foreground; + } +#+end_src + +**** Slate Dracula + +#+begin_src conf :tangle .config/rofi/themes/slate-dracula.rasi + /** + ,* ROFI Color theme: slate-dracula + ,* User: balajsra + ,* Copyright: Sravan Balaji + ,*/ + + ,* { + background-color: #282a36; + border-color: #bd93f9; + text-color: #f8f8f2; + spacing: 0; + width: 1024px; + font: "NotoSans Nerd Font 12"; + } + + inputbar { + border: 0 0 1px 0; /* top right bottom left */ + children: [prompt, entry]; + } + + prompt { + padding: 16px; + border: 2px 1px 0 2px; /* top right bottom left */ + } + + textbox { + background-color: #282a36; + border: 0 0 1px 0; /* top right bottom left */ + border-color: #bd93f9; + padding: 8px 16px 8px 16px; /* top right bottom left */ + } + + entry { + border: 2px 2px 0px 0; /* top right bottom left */ + padding: 16px; + } + + listview { + cycle: true; + margin: 0 0 0px 0; /* top right bottom left */ + scrollbar: true; + } + + element { + border: 0 2px 1px 2px; /* top right bottom left */ + padding: 16px; + } + + element selected { + background-color: #44475a; + } +#+end_src + +*** Greenclip Clipboard Manager + +#+begin_src conf :tangle .config/greenclip.cfg + Config { + maxHistoryLength = 50, + historyPath = "~/.cache/greenclip.history", + staticHistoryPath = "~/.cache/greenclip.staticHistory", + imageCachePath = "/tmp/greenclip/", + usePrimarySelectionAsInput = False, + blacklistedApps = [], + trimSpaceFromSelection = True, + enableImageSupport = True + } +#+end_src + +* Display Configuration & Effects + +** Autorandr + +See [[https://github.com/phillipberndt/autorandr#hook-scripts][autorandr hook scripts]] for more information. + +*** Post Switch + +#+begin_src shell :shebang #!/bin/bash :tangle .config/autorandr/postswitch + /usr/bin/nitrogen --restore # Restore wallpaper + /home/sravan/.scripts/session.sh --restart # Restart dwm +#+end_src + +** Compositor +*** Picom Jonaburg + +**** Animations + +#+begin_src conf :tangle .config/picom/picom.conf + # requires https://github.com/jonaburg/picom + + # length of animation in milliseconds (default: 300) + transition-length = 150; + + # animation easing on the x-axis (default: 0.1) + transition-pow-x = 0.1; + + # animation easing on the y-axis (default: 0.1) + transition-pow-y = 0.1; + + #animation easing on the window width (default: 0.1) + transition-pow-w = 0.1; + + # animation easing on the window height (default: 0.1) + transition-pow-h = 0.1; + + # whether to animate window size changes (default: true) + size-transition = true; + + # whether to animate new windows from the center of the screen (default: false) + spawn-center-screen = false; + + # whether to animate new windows from their own center (default: true) + spawn-center = true; + + # Whether to animate down scaling (some programs handle this poorly) (default: false) + no-scale-down = true; +#+end_src + +**** Corners + +#+begin_src conf :tangle .config/picom/picom.conf + # requires: https://github.com/sdhand/compton or https://github.com/jonaburg/picom + corner-radius = 10.0; + rounded-corners-exclude = [ + # "window_type = 'normal'", + # "class_g = 'awesome'", + # "class_g = 'URxvt'", + # "class_g = 'XTerm'", + # "class_g = 'kitty'", + # "class_g = 'Alacritty'", + "class_g = 'Polybar'", + "class_g = 'Rofi'", + "class_g = 'deadd-notification-center'", + # "class_g = 'code-oss'", + #"class_g = 'TelegramDesktop'", + # "class_g = 'firefox'", + # "class_g = 'Thunderbird'" + ]; + round-borders = 1; + round-borders-exclude = [ + #"class_g = 'TelegramDesktop'", + ]; +#+end_src + +**** Shadows + +#+begin_src conf :tangle .config/picom/picom.conf + # Enabled client-side shadows on windows. Note desktop windows + # (windows with '_NET_WM_WINDOW_TYPE_DESKTOP') never get shadow, + # unless explicitly requested using the wintypes option. + # + # shadow = false + shadow = false; + + # The blur radius for shadows, in pixels. (defaults to 12) + # shadow-radius = 12 + shadow-radius = 7; + + # The opacity of shadows. (0.0 - 1.0, defaults to 0.75) + # shadow-opacity = .75 + + # The left offset for shadows, in pixels. (defaults to -15) + # shadow-offset-x = -15 + shadow-offset-x = -7; + + # The top offset for shadows, in pixels. (defaults to -15) + # shadow-offset-y = -15 + shadow-offset-y = -7; + + # Avoid drawing shadows on dock/panel windows. This option is deprecated, + # you should use the *wintypes* option in your config file instead. + # + # no-dock-shadow = false + + # Don't draw shadows on drag-and-drop windows. This option is deprecated, + # you should use the *wintypes* option in your config file instead. + # + # no-dnd-shadow = false + + # Red color value of shadow (0.0 - 1.0, defaults to 0). + # shadow-red = 0 + + # Green color value of shadow (0.0 - 1.0, defaults to 0). + # shadow-green = 0 + + # Blue color value of shadow (0.0 - 1.0, defaults to 0). + # shadow-blue = 0 + + # Do not paint shadows on shaped windows. Note shaped windows + # here means windows setting its shape through X Shape extension. + # Those using ARGB background is beyond our control. + # Deprecated, use + # shadow-exclude = 'bounding_shaped' + # or + # shadow-exclude = 'bounding_shaped && !rounded_corners' + # instead. + # + # shadow-ignore-shaped = '' + + # Specify a list of conditions of windows that should have no shadow. + # + # examples: + # shadow-exclude = "n:e:Notification"; + # + # shadow-exclude = [] + shadow-exclude = [ + # "name = 'Notification'", + # "class_g = 'Conky'", + # "class_g ?= 'Notify-osd'", + # "class_g = 'Cairo-clock'", + # "class_g = 'slop'", + # "class_g = 'Polybar'", + # "_GTK_FRAME_EXTENTS@:c" + ]; + + # Specify a X geometry that describes the region in which shadow should not + # be painted in, such as a dock window region. Use + # shadow-exclude-reg = "x10+0+0" + # for example, if the 10 pixels on the bottom of the screen should not have shadows painted on. + # + # shadow-exclude-reg = "" + + # Crop shadow of a window fully on a particular Xinerama screen to the screen. + # xinerama-shadow-crop = false +#+end_src + +**** Fading + +#+begin_src conf :tangle .config/picom/picom.conf + # Fade windows in/out when opening/closing and when opacity changes, + # unless no-fading-openclose is used. + # fading = false + fading = true; + + # Opacity change between steps while fading in. (0.01 - 1.0, defaults to 0.028) + # fade-in-step = 0.028 + fade-in-step = 0.03; + + # Opacity change between steps while fading out. (0.01 - 1.0, defaults to 0.03) + # fade-out-step = 0.03 + fade-out-step = 0.03; + + # The time between steps in fade step, in milliseconds. (> 0, defaults to 10) + # fade-delta = 10 + + # Specify a list of conditions of windows that should not be faded. + # don't need this, we disable fading for all normal windows with wintypes: {} + fade-exclude = [ + # "class_g = 'slop'" # maim + ] + + # Do not fade on window open/close. + # no-fading-openclose = false + no-fading-openclose = true + + # Do not fade destroyed ARGB windows with WM frame. Workaround of bugs in Openbox, Fluxbox, etc. + # no-fading-destroyed-argb = false +#+end_src + +**** Transparency / Opacity + +#+begin_src conf :tangle .config/picom/picom.conf + # Opacity of inactive windows. (0.1 - 1.0, defaults to 1.0) + inactive-opacity = 1 + # inactive-opacity = 0.8; + + # Opacity of window titlebars and borders. (0.1 - 1.0, disabled by default) + frame-opacity = 1.0 + # frame-opacity = 0.7; + + # Default opacity for dropdown menus and popup menus. (0.0 - 1.0, defaults to 1.0) + # menu-opacity = 1.0 + # menu-opacity is depreciated use dropdown-menu and popup-menu instead. + + #If using these 2 below change their values in line 530 & 531 aswell + # popup_menu = { opacity = 0.8; } + popup_menu = { opacity = 1.0; } + # dropdown_menu = { opacity = 0.8; } + dropdown_menu = { opacity = 1.0; } + + # Let inactive opacity set by -i override the '_NET_WM_OPACITY' values of windows. + # inactive-opacity-override = true + inactive-opacity-override = false; + + # Default opacity for active windows. (0.0 - 1.0, defaults to 1.0) + active-opacity = 1.0; + + # Dim inactive windows. (0.0 - 1.0, defaults to 0.0) + # inactive-dim = 0.0 + + # Specify a list of conditions of windows that should always be considered focused. + # focus-exclude = [] + focus-exclude = [ + # "class_g = 'Cairo-clock'", + # "class_g = 'Bar'", # lemonbar + # "class_g = 'slop'" # maim + ]; + + # Use fixed inactive dim value, instead of adjusting according to window opacity. + # inactive-dim-fixed = 1.0 + + # Specify a list of opacity rules, in the format `PERCENT:PATTERN`, + # like `50:name *= "Firefox"`. picom-trans is recommended over this. + # Note we don't make any guarantee about possible conflicts with other + # programs that set '_NET_WM_WINDOW_OPACITY' on frame or client windows. + # example: + # opacity-rule = [ "80:class_g = 'URxvt'" ]; + # + # opacity-rule = [] + opacity-rule = [ + # "80:class_g = 'Bar'", # lemonbar + # "100:class_g = 'slop'", # maim + # "100:class_g = 'XTerm'", + # "100:class_g = 'URxvt'", + # "100:class_g = 'kitty'", + # "100:class_g = 'Alacritty'", + # "80:class_g = 'Polybar'", + # "100:class_g = 'code-oss'", + # "100:class_g = 'Meld'", + # "70:class_g = 'TelegramDesktop'", + # "90:class_g = 'Joplin'", + # "100:class_g = 'firefox'", + # "100:class_g = 'Thunderbird'" + ]; +#+end_src + +**** Background Blurring + +#+begin_src conf :tangle .config/picom/picom.conf + # Parameters for background blurring, see the *BLUR* section for more information. + # blur-method = + # blur-size = 12 + # + # blur-deviation = false + + # Blur background of semi-transparent / ARGB windows. + # Bad in performance, with driver-dependent behavior. + # The name of the switch may change without prior notifications. + # + # blur-background = true; + + # Blur background of windows when the window frame is not opaque. + # Implies: + # blur-background + # Bad in performance, with driver-dependent behavior. The name may change. + # + # blur-background-frame = false; + + + # Use fixed blur strength rather than adjusting according to window opacity. + # blur-background-fixed = false; + + + # Specify the blur convolution kernel, with the following format: + # example: + # blur-kern = "5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1"; + # + # blur-kern = '' + # blur-kern = "3x3box"; + + blur: { + # requires: https://github.com/ibhagwan/picom + method = "kawase"; + #method = "kernel"; + strength = 7; + # deviation = 1.0; + # kernel = "11x11gaussian"; + background = false; + background-frame = false; + background-fixed = false; + kern = "3x3box"; + } + + # Exclude conditions for background blur. + blur-background-exclude = [ + #"window_type = 'dock'", + #"window_type = 'desktop'", + #"class_g = 'URxvt'", + # + # prevents picom from blurring the background + # when taking selection screenshot with `main` + # https://github.com/naelstrof/maim/issues/130 + "class_g = 'peek'", + "class_g = 'Peek'", + "class_g = 'slop'", + "class_g = 'zoom'", + "_GTK_FRAME_EXTENTS@:c" + ]; +#+end_src + +**** General Settings + +#+begin_src conf :tangle .config/picom/picom.conf + # Daemonize process. Fork to background after initialization. Causes issues with certain (badly-written) drivers. + # daemon = false + + # Specify the backend to use: `xrender`, `glx`, or `xr_glx_hybrid`. + # `xrender` is the default one. + # + experimental-backends = true; + backend = "glx"; + #backend = "xrender"; + + + # Enable/disable VSync. + # vsync = false + vsync = false + + # Enable remote control via D-Bus. See the *D-BUS API* section below for more details. + # dbus = false + + # Try to detect WM windows (a non-override-redirect window with no + # child that has 'WM_STATE') and mark them as active. + # + # mark-wmwin-focused = false + mark-wmwin-focused = true; + + # Mark override-redirect windows that doesn't have a child window with 'WM_STATE' focused. + # mark-ovredir-focused = false + mark-ovredir-focused = true; + + # Try to detect windows with rounded corners and don't consider them + # shaped windows. The accuracy is not very high, unfortunately. + # + # detect-rounded-corners = false + detect-rounded-corners = true; + + # Detect '_NET_WM_OPACITY' on client windows, useful for window managers + # not passing '_NET_WM_OPACITY' of client windows to frame windows. + # + # detect-client-opacity = false + detect-client-opacity = true; + + # Specify refresh rate of the screen. If not specified or 0, picom will + # try detecting this with X RandR extension. + # + # refresh-rate = 60 + refresh-rate = 0 + + # Limit picom to repaint at most once every 1 / 'refresh_rate' second to + # boost performance. This should not be used with + # vsync drm/opengl/opengl-oml + # as they essentially does sw-opti's job already, + # unless you wish to specify a lower refresh rate than the actual value. + # + # sw-opti = + + # Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window, + # rather than listening to 'FocusIn'/'FocusOut' event. Might have more accuracy, + # provided that the WM supports it. + # + # use-ewmh-active-win = false + + # Unredirect all windows if a full-screen opaque window is detected, + # to maximize performance for full-screen windows. Known to cause flickering + # when redirecting/unredirecting windows. paint-on-overlay may make the flickering less obvious. + # + # unredir-if-possible = false + unredir-if-possible = true; + # unredir-if-possible-exclude = [ + # "class_g = 'looking-glass-client' && !focused" + # ] + + # Delay before unredirecting the window, in milliseconds. Defaults to 0. + # unredir-if-possible-delay = 0 + + # Conditions of windows that shouldn't be considered full-screen for unredirecting screen. + # unredir-if-possible-exclude = [] + + # Use 'WM_TRANSIENT_FOR' to group windows, and consider windows + # in the same group focused at the same time. + # + # detect-transient = false + detect-transient = true + + # Use 'WM_CLIENT_LEADER' to group windows, and consider windows in the same + # group focused at the same time. 'WM_TRANSIENT_FOR' has higher priority if + # detect-transient is enabled, too. + # + # detect-client-leader = false + detect-client-leader = true + + # Resize damaged region by a specific number of pixels. + # A positive value enlarges it while a negative one shrinks it. + # If the value is positive, those additional pixels will not be actually painted + # to screen, only used in blur calculation, and such. (Due to technical limitations, + # with use-damage, those pixels will still be incorrectly painted to screen.) + # Primarily used to fix the line corruption issues of blur, + # in which case you should use the blur radius value here + # (e.g. with a 3x3 kernel, you should use `--resize-damage 1`, + # with a 5x5 one you use `--resize-damage 2`, and so on). + # May or may not work with *--glx-no-stencil*. Shrinking doesn't function correctly. + # + # resize-damage = 1 + + # Specify a list of conditions of windows that should be painted with inverted color. + # Resource-hogging, and is not well tested. + # + # invert-color-include = [] + + # GLX backend: Avoid using stencil buffer, useful if you don't have a stencil buffer. + # Might cause incorrect opacity when rendering transparent content (but never + # practically happened) and may not work with blur-background. + # My tests show a 15% performance boost. Recommended. + # + # glx-no-stencil = false + + # GLX backend: Avoid rebinding pixmap on window damage. + # Probably could improve performance on rapid window content changes, + # but is known to break things on some drivers (LLVMpipe, xf86-video-intel, etc.). + # Recommended if it works. + # + # glx-no-rebind-pixmap = false + + # Disable the use of damage information. + # This cause the whole screen to be redrawn everytime, instead of the part of the screen + # has actually changed. Potentially degrades the performance, but might fix some artifacts. + # The opposing option is use-damage + # + # no-use-damage = false + #use-damage = true (Causing Weird Black semi opaque rectangles when terminal is opened) + #Changing use-damage to false fixes the problem + use-damage = false + + # Use X Sync fence to sync clients' draw calls, to make sure all draw + # calls are finished before picom starts drawing. Needed on nvidia-drivers + # with GLX backend for some users. + # + # xrender-sync-fence = false + + # GLX backend: Use specified GLSL fragment shader for rendering window contents. + # See `compton-default-fshader-win.glsl` and `compton-fake-transparency-fshader-win.glsl` + # in the source tree for examples. + # + # glx-fshader-win = '' + + # Force all windows to be painted with blending. Useful if you + # have a glx-fshader-win that could turn opaque pixels transparent. + # + # force-win-blend = false + + # Do not use EWMH to detect fullscreen windows. + # Reverts to checking if a window is fullscreen based only on its size and coordinates. + # + # no-ewmh-fullscreen = false + + # Dimming bright windows so their brightness doesn't exceed this set value. + # Brightness of a window is estimated by averaging all pixels in the window, + # so this could comes with a performance hit. + # Setting this to 1.0 disables this behaviour. Requires --use-damage to be disabled. (default: 1.0) + # + # max-brightness = 1.0 + + # Make transparent windows clip other windows like non-transparent windows do, + # instead of blending on top of them. + # + # transparent-clipping = false + + # Set the log level. Possible values are: + # "trace", "debug", "info", "warn", "error" + # in increasing level of importance. Case doesn't matter. + # If using the "TRACE" log level, it's better to log into a file + # using *--log-file*, since it can generate a huge stream of logs. + # + # log-level = "debug" + log-level = "info"; + + # Set the log file. + # If *--log-file* is never specified, logs will be written to stderr. + # Otherwise, logs will to written to the given file, though some of the early + # logs might still be written to the stderr. + # When setting this option from the config file, it is recommended to use an absolute path. + # + # log-file = '/path/to/your/log/file' + + # Show all X errors (for debugging) + # show-all-xerrors = false + + # Write process ID to a file. + # write-pid-path = '/path/to/your/log/file' + + # Window type settings + # + # 'WINDOW_TYPE' is one of the 15 window types defined in EWMH standard: + # "unknown", "desktop", "dock", "toolbar", "menu", "utility", + # "splash", "dialog", "normal", "dropdown_menu", "popup_menu", + # "tooltip", "notification", "combo", and "dnd". + # + # Following per window-type options are available: :: + # + # fade, shadow::: + # Controls window-type-specific shadow and fade settings. + # + # opacity::: + # Controls default opacity of the window type. + # + # focus::: + # Controls whether the window of this type is to be always considered focused. + # (By default, all window types except "normal" and "dialog" has this on.) + # + # full-shadow::: + # Controls whether shadow is drawn under the parts of the window that you + # normally won't be able to see. Useful when the window has parts of it + # transparent, and you want shadows in those areas. + # + # redir-ignore::: + # Controls whether this type of windows should cause screen to become + # redirected again after been unredirected. If you have unredir-if-possible + # set, and doesn't want certain window to cause unnecessary screen redirection, + # you can set this to `true`. + # + wintypes: + { + normal = { fade = false; shadow = false; } + tooltip = { fade = true; shadow = true; opacity = 1.0; focus = true; full-shadow = false; }; + dock = { shadow = false; } + dnd = { shadow = false; } + # popup_menu = { opacity = 0.8; } + popup_menu = { opacity = 1.0; } + # dropdown_menu = { opacity = 0.8; } + dropdown_menu = { opacity = 1.0; } + }; +#+end_src + +**** Control Script + +#+begin_src shell :shebang #!/bin/bash :tangle .scripts/picom.sh + help_menu() { + echo "Script to interact with picom. Use only one argument at a time." + echo " - Toggle On/Off: picom.sh OR picom.sh --toggle OR picom.sh -t" + echo " - Turn On: picom.sh --on" + echo " - Turn Off: picom.sh --off" + echo " - Help: picom.sh --help OR picom.sh -h" + } + + is_running() { + if pgrep -x picom >/dev/null; then + echo 1 + else + echo 0 + fi + } + + rofi_menu() { + declare -a options=( + "⏼ Toggle - toggle" + " Turn On - on" + " Turn Off - off" + " Back - back" + " Quit - quit" + ) + + choice=$(printf '%s\n' "${options[@]}" | rofi -dmenu -i) + option=$(printf '%s\n' "${choice}" | awk '{print $NF}') + + if [[ "$option" == "quit" ]]; then + kilall rofi + elif [[ "$option" != "back" ]]; then + main "--$option" && main "--rofi" + fi + } + + main() { + if [ $# -eq 0 ]; then + # No arguments + help_menu + else + case $1 in + --help | -h) + help_menu + ;; + --toggle) + if [ $(is_running) -eq '1' ]; then + main --off + else + main --on + fi + ;; + --on) + if [ $(is_running) -eq '1' ]; then + killall picom + fi + + picom --config /home/sravan/.config/picom/picom.conf & + + notify-send "Turning Picom ON" + ;; + --off) + if [ $(is_running) -eq '1' ]; then + killall picom + fi + + notify-send "Turning Picom OFF" + ;; + --rofi) + rofi_menu + ;; + esac + fi + } + + main $@ +#+end_src + +** Night Mode + +*** Redshift + +#+begin_src conf :tangle .config/redshift/redshift.conf + ; Global settings for redshift + [redshift] + ; Set the day and night screen temperatures + temp-day=6500 + temp-night=3500 + + ; Enable/Disable a smooth transition between day and night + ; 0 will cause a direct change from day to night screen temperature. + ; 1 will gradually increase or decrease the screen temperature. + transition=1 + + ; Set the screen brightness. Default is 1.0. + ;brightness=0.9 + ; It is also possible to use different settings for day and night + ; since version 1.8. + ;brightness-day=0.7 + ;brightness-night=0.4 + ; Set the screen gamma (for all colors, or each color channel + ; individually) + ; gamma=0.8 + ;gamma=0.8:0.7:0.8 + ; This can also be set individually for day and night since + ; version 1.10. + ;gamma-day=0.8:0.7:0.8 + ;gamma-night=0.6 + + ; Set the location-provider: 'geoclue', 'geoclue2', 'manual' + ; type 'redshift -l list' to see possible values. + ; The location provider settings are in a different section. + location-provider=manual + + ; Set the adjustment-method: 'randr', 'vidmode' + ; type 'redshift -m list' to see all possible values. + ; 'randr' is the preferred method, 'vidmode' is an older API. + ; but works in some cases when 'randr' does not. + ; The adjustment method settings are in a different section. + adjustment-method=randr + + ; Configuration of the location-provider: + ; type 'redshift -l PROVIDER:help' to see the settings. + ; ex: 'redshift -l manual:help' + ; Keep in mind that longitudes west of Greenwich (e.g. the Americas) + ; are negative numbers. + [manual] + ; Farmington Hills, MI + lat=42.4990 + lon=-83.3677 + + ; Configuration of the adjustment-method + ; type 'redshift -m METHOD:help' to see the settings. + ; ex: 'redshift -m randr:help' + ; In this example, randr is configured to adjust screen 1. + ; Note that the numbering starts from 0, so this is actually the + ; second screen. If this option is not specified, Redshift will try + ; to adjust _all_ screens. + ; [randr] + ; screen=1 +#+end_src + +* Lock Screen +** Betterlockscreen + +*** Default Options + +#+begin_src conf :tangle .config/betterlockscreenrc + display_on=0 + span_image=false + lock_timeout=300 + fx_list=(dim blur dimblur pixel dimpixel color) + dim_level=40 + blur_level=1 + pixel_scale=10,1000 + solid_color=333333 + wallpaper_cmd="feh --bg-fill" + # i3lockcolor_bin="i3lock-color" # Manually set command for i3lock-color +#+end_src + +*** Theme Options + +#+begin_src conf :tangle .config/betterlockscreenrc + loginbox=282a36ff + loginshadow=282a36ff + locktext="Enter password to unlock..." + font="sans-serif" + ringcolor=44475aff + insidecolor=00000000 + separatorcolor=00000000 + ringvercolor=50fa7bff + insidevercolor=50fa7bff + ringwrongcolor=ff5555ff + insidewrongcolor=ff5555ff + timecolor=f8f8f2ff + time_format="%X" + greetercolor=f8f8f2ff + layoutcolor=f8f8f2ff + keyhlcolor=bd93f9ff + bshlcolor=8be9fdff + verifcolor=50fa7bff + wrongcolor=ff5555ff + modifcolor=ff5555ff + bgcolor=282a36ff +#+end_src + +*** Pre-Lock + +#+begin_src conf :tangle .config/betterlockscreenrc + prelock() { + /home/sravan/.scripts/deadd.sh --pause + } +#+end_src + +*** Post-Lock + +#+begin_src conf :tangle .config/betterlockscreenrc + # custom postlock + postlock() { + /home/sravan/.scripts/deadd.sh --unpause + } +#+end_src + +* Terminal & Shell + +** Prompt +*** Starship + +#+begin_src conf :tangle .config/starship.toml + # Don't print a new line at the start of the prompt + add_newline = false + + format = "[◆](bold green) $all" + + [aws] + symbol = " " + + [battery] + full_symbol = "" + charging_symbol = "" + discharging_symbol = "" + + [character] + format = "$symbol" + success_symbol = "[❯](bold purple)[❯](bold cyan)[❯](bold green) " + error_symbol = "[❯❯❯](bold red) " + + [cmd_duration] + min_time = 10_000 + + [conda] + symbol = " " + + [dart] + symbol = " " + + [directory] + format = "[$path]($style)[$read_only]($read_only_style) " + truncation_length = 4 + truncate_to_repo = false + truncation_symbol = "…/" + read_only = "" + + [docker_context] + symbol = " " + + [elixir] + symbol = " " + + [elm] + symbol = " " + + [git_branch] + symbol = " " + + [golang] + symbol = " " + + # [haskell] + # symbol = " " + + [hg_branch] + symbol = " " + + [java] + symbol = " " + + [julia] + symbol = " " + + [line_break] + disabled = false + + [memory_usage] + symbol = " " + + [nim] + symbol = " " + + [nix_shell] + symbol = " " + + [nodejs] + symbol = " " + + [package] + symbol = " " + + [perl] + symbol = " " + + [php] + symbol = " " + + [python] + symbol = " " + + [ruby] + symbol = " " + + [rust] + symbol = " " + + [swift] + symbol = "ﯣ " +#+end_src + +*** Neofetch + +**** Main Configuration + +#+begin_src conf :tangle .config/neofetch/config.conf + # See this wiki page for more info: + # https://github.com/dylanaraps/neofetch/wiki/Customizing-Info + print_info() { + info title + info underline + + info "OS" distro + info "Host" model + info "Kernel" kernel + info "Uptime" uptime + info "Packages" packages + info "Shell" shell + # info "Resolution" resolution + info "DE" de + info "WM" wm + info "WM Theme" wm_theme + info "Theme" theme + info "Icons" icons + info "Terminal" term + info "Terminal Font" term_font + info "CPU" cpu + info "GPU" gpu + # info "GPU Driver" gpu_driver # Linux/macOS only + # info "CPU Usage" cpu_usage + # info "Memory" memory + # info "Disk" disk + # info "Battery" battery + info "Font" font + # info "Song" song + # [[ "$player" ]] && prin "Music Player" "$player" + # info "Local IP" local_ip + # info "Public IP" public_ip + # info "Users" users + # info "Locale" locale # This only works on glibc systems. + info cols + } +#+end_src + +**** Title + +#+begin_src conf :tangle .config/neofetch/config.conf + # Hide/Show Fully qualified domain name. + # + # Default: 'off' + # Values: 'on', 'off' + # Flag: --title_fqdn + title_fqdn="off" +#+end_src + +**** Kernel + +#+begin_src conf :tangle .config/neofetch/config.conf + # Shorten the output of the kernel function. + # + # Default: 'on' + # Values: 'on', 'off' + # Flag: --kernel_shorthand + # Supports: Everything except *BSDs (except PacBSD and PC-BSD) + # + # Example: + # on: '4.8.9-1-ARCH' + # off: 'Linux 4.8.9-1-ARCH' + kernel_shorthand="on" +#+end_src + +**** Distro + +#+begin_src conf :tangle .config/neofetch/config.conf + # Shorten the output of the distro function + # + # Default: 'off' + # Values: 'on', 'tiny', 'off' + # Flag: --distro_shorthand + # Supports: Everything except Windows and Haiku + distro_shorthand="off" + + # Show/Hide OS Architecture. + # Show 'x86_64', 'x86' and etc in 'Distro:' output. + # + # Default: 'on' + # Values: 'on', 'off' + # Flag: --os_arch + # + # Example: + # on: 'Arch Linux x86_64' + # off: 'Arch Linux' + os_arch="on" +#+end_src + +**** Uptime + +#+begin_src conf :tangle .config/neofetch/config.conf + # Shorten the output of the uptime function + # + # Default: 'on' + # Values: 'on', 'tiny', 'off' + # Flag: --uptime_shorthand + # + # Example: + # on: '2 days, 10 hours, 3 mins' + # tiny: '2d 10h 3m' + # off: '2 days, 10 hours, 3 minutes' + uptime_shorthand="on" +#+end_src + +**** Memory + +#+begin_src conf :tangle .config/neofetch/config.conf + # Show memory pecentage in output. + # + # Default: 'off' + # Values: 'on', 'off' + # Flag: --memory_percent + # + # Example: + # on: '1801MiB / 7881MiB (22%)' + # off: '1801MiB / 7881MiB' + memory_percent="on" +#+end_src + +**** Packages + +#+begin_src conf :tangle .config/neofetch/config.conf + # Show/Hide Package Manager names. + # + # Default: 'tiny' + # Values: 'on', 'tiny' 'off' + # Flag: --package_managers + # + # Example: + # on: '998 (pacman), 8 (flatpak), 4 (snap)' + # tiny: '908 (pacman, flatpak, snap)' + # off: '908' + package_managers="on" +#+end_src + +**** Shell + +#+begin_src conf :tangle .config/neofetch/config.conf + # Show the path to $SHELL + # + # Default: 'off' + # Values: 'on', 'off' + # Flag: --shell_path + # + # Example: + # on: '/bin/bash' + # off: 'bash' + shell_path="off" + + # Show $SHELL version + # + # Default: 'on' + # Values: 'on', 'off' + # Flag: --shell_version + # + # Example: + # on: 'bash 4.4.5' + # off: 'bash' + shell_version="on" +#+end_src + +**** CPU + +#+begin_src conf :tangle .config/neofetch/config.conf + # CPU speed type + # + # Default: 'bios_limit' + # Values: 'scaling_cur_freq', 'scaling_min_freq', 'scaling_max_freq', 'bios_limit'. + # Flag: --speed_type + # Supports: Linux with 'cpufreq' + # NOTE: Any file in '/sys/devices/system/cpu/cpu0/cpufreq' can be used as a value. + speed_type="bios_limit" + + # CPU speed shorthand + # + # Default: 'off' + # Values: 'on', 'off'. + # Flag: --speed_shorthand + # NOTE: This flag is not supported in systems with CPU speed less than 1 GHz + # + # Example: + # on: 'i7-6500U (4) @ 3.1GHz' + # off: 'i7-6500U (4) @ 3.100GHz' + speed_shorthand="off" + + # Enable/Disable CPU brand in output. + # + # Default: 'on' + # Values: 'on', 'off' + # Flag: --cpu_brand + # + # Example: + # on: 'Intel i7-6500U' + # off: 'i7-6500U (4)' + cpu_brand="on" + + # CPU Speed + # Hide/Show CPU speed. + # + # Default: 'on' + # Values: 'on', 'off' + # Flag: --cpu_speed + # + # Example: + # on: 'Intel i7-6500U (4) @ 3.1GHz' + # off: 'Intel i7-6500U (4)' + cpu_speed="on" + + # CPU Cores + # Display CPU cores in output + # + # Default: 'logical' + # Values: 'logical', 'physical', 'off' + # Flag: --cpu_cores + # Support: 'physical' doesn't work on BSD. + # + # Example: + # logical: 'Intel i7-6500U (4) @ 3.1GHz' (All virtual cores) + # physical: 'Intel i7-6500U (2) @ 3.1GHz' (All physical cores) + # off: 'Intel i7-6500U @ 3.1GHz' + cpu_cores="logical" + + # CPU Temperature + # Hide/Show CPU temperature. + # Note the temperature is added to the regular CPU function. + # + # Default: 'off' + # Values: 'C', 'F', 'off' + # Flag: --cpu_temp + # Supports: Linux, BSD + # NOTE: For FreeBSD and NetBSD-based systems, you'll need to enable + # coretemp kernel module. This only supports newer Intel processors. + # + # Example: + # C: 'Intel i7-6500U (4) @ 3.1GHz [27.2°C]' + # F: 'Intel i7-6500U (4) @ 3.1GHz [82.0°F]' + # off: 'Intel i7-6500U (4) @ 3.1GHz' + cpu_temp="F" +#+end_src + +**** GPU + +#+begin_src conf :tangle .config/neofetch/config.conf + # Enable/Disable GPU Brand + # + # Default: 'on' + # Values: 'on', 'off' + # Flag: --gpu_brand + # + # Example: + # on: 'AMD HD 7950' + # off: 'HD 7950' + gpu_brand="on" + + # Which GPU to display + # + # Default: 'all' + # Values: 'all', 'dedicated', 'integrated' + # Flag: --gpu_type + # Supports: Linux + # + # Example: + # all: + # GPU1: AMD HD 7950 + # GPU2: Intel Integrated Graphics + # + # dedicated: + # GPU1: AMD HD 7950 + # + # integrated: + # GPU1: Intel Integrated Graphics + gpu_type="all" +#+end_src + +**** Resolution + +#+begin_src conf :tangle .config/neofetch/config.conf + # Display refresh rate next to each monitor + # Default: 'off' + # Values: 'on', 'off' + # Flag: --refresh_rate + # Supports: Doesn't work on Windows. + # + # Example: + # on: '1920x1080 @ 60Hz' + # off: '1920x1080' + refresh_rate="on" +#+end_src + +**** Gtk Theme / Icons / Font + +#+begin_src conf :tangle .config/neofetch/config.conf + # Shorten output of GTK Theme / Icons / Font + # + # Default: 'off' + # Values: 'on', 'off' + # Flag: --gtk_shorthand + # + # Example: + # on: 'Numix, Adwaita' + # off: 'Numix [GTK2], Adwaita [GTK3]' + gtk_shorthand="off" + + + # Enable/Disable gtk2 Theme / Icons / Font + # + # Default: 'on' + # Values: 'on', 'off' + # Flag: --gtk2 + # + # Example: + # on: 'Numix [GTK2], Adwaita [GTK3]' + # off: 'Adwaita [GTK3]' + gtk2="on" + + # Enable/Disable gtk3 Theme / Icons / Font + # + # Default: 'on' + # Values: 'on', 'off' + # Flag: --gtk3 + # + # Example: + # on: 'Numix [GTK2], Adwaita [GTK3]' + # off: 'Numix [GTK2]' + gtk3="on" +#+end_src + +**** IP Address + +#+begin_src conf :tangle .config/neofetch/config.conf + # Website to ping for the public IP + # + # Default: 'http://ident.me' + # Values: 'url' + # Flag: --ip_host + public_ip_host="http://ident.me" + + # Public IP timeout. + # + # Default: '2' + # Values: 'int' + # Flag: --ip_timeout + public_ip_timeout=2 +#+end_src + +**** Desktop Environment + +#+begin_src conf :tangle .config/neofetch/config.conf + # Show Desktop Environment version + # + # Default: 'off' + # Values: 'on', 'off' + # Flag: --de_version + de_version="on" +#+end_src + +**** Disk + +#+begin_src conf :tangle .config/neofetch/config.conf + # Which disks to display. + # The values can be any /dev/sdXX, mount point or directory. + # NOTE: By default we only show the disk info for '/'. + # + # Default: '/' + # Values: '/', '/dev/sdXX', '/path/to/drive'. + # Flag: --disk_show + # + # Example: + # disk_show=('/' '/dev/sdb1'): + # 'Disk (/): 74G / 118G (66%)' + # 'Disk (/mnt/Videos): 823G / 893G (93%)' + # + # disk_show=('/'): + # 'Disk (/): 74G / 118G (66%)' + # + disk_show=('/') + + # Disk subtitle. + # What to append to the Disk subtitle. + # + # Default: 'mount' + # Values: 'mount', 'name', 'dir', 'none' + # Flag: --disk_subtitle + # + # Example: + # name: 'Disk (/dev/sda1): 74G / 118G (66%)' + # 'Disk (/dev/sdb2): 74G / 118G (66%)' + # + # mount: 'Disk (/): 74G / 118G (66%)' + # 'Disk (/mnt/Local Disk): 74G / 118G (66%)' + # 'Disk (/mnt/Videos): 74G / 118G (66%)' + # + # dir: 'Disk (/): 74G / 118G (66%)' + # 'Disk (Local Disk): 74G / 118G (66%)' + # 'Disk (Videos): 74G / 118G (66%)' + # + # none: 'Disk: 74G / 118G (66%)' + # 'Disk: 74G / 118G (66%)' + # 'Disk: 74G / 118G (66%)' + disk_subtitle="mount" + + # Disk percent. + # Show/Hide disk percent. + # + # Default: 'on' + # Values: 'on', 'off' + # Flag: --disk_percent + # + # Example: + # on: 'Disk (/): 74G / 118G (66%)' + # off: 'Disk (/): 74G / 118G' + disk_percent="on" +#+end_src + +**** Song + +#+begin_src conf :tangle .config/neofetch/config.conf + # Manually specify a music player. + # + # Default: 'auto' + # Values: 'auto', 'player-name' + # Flag: --music_player + # + # Available values for 'player-name': + # + # amarok + # audacious + # banshee + # bluemindo + # clementine + # cmus + # deadbeef + # deepin-music + # dragon + # elisa + # exaile + # gnome-music + # gmusicbrowser + # gogglesmm + # guayadeque + # io.elementary.music + # iTunes + # juk + # lollypop + # mocp + # mopidy + # mpd + # muine + # netease-cloud-music + # pogo + # pragha + # qmmp + # quodlibet + # rhythmbox + # sayonara + # smplayer + # spotify + # strawberry + # tomahawk + # vlc + # xmms2d + # xnoise + # yarock + music_player="auto" + + # Format to display song information. + # + # Default: '%artist% - %album% - %title%' + # Values: '%artist%', '%album%', '%title%' + # Flag: --song_format + # + # Example: + # default: 'Song: Jet - Get Born - Sgt Major' + song_format="%artist% - %album% - %title%" + + # Print the Artist, Album and Title on separate lines + # + # Default: 'off' + # Values: 'on', 'off' + # Flag: --song_shorthand + # + # Example: + # on: 'Artist: The Fratellis' + # 'Album: Costello Music' + # 'Song: Chelsea Dagger' + # + # off: 'Song: The Fratellis - Costello Music - Chelsea Dagger' + song_shorthand="off" + + # 'mpc' arguments (specify a host, password etc). + # + # Default: '' + # Example: mpc_args=(-h HOST -P PASSWORD) + mpc_args=() +#+end_src + +**** Text Colors + +#+begin_src conf :tangle .config/neofetch/config.conf + # Text Colors + # + # Default: 'distro' + # Values: 'distro', 'num' 'num' 'num' 'num' 'num' 'num' + # Flag: --colors + # + # Each number represents a different part of the text in + # this order: 'title', '@', 'underline', 'subtitle', 'colon', 'info' + # + # Example: + # colors=(distro) - Text is colored based on Distro colors. + # colors=(4 6 1 8 8 6) - Text is colored in the order above. + colors=(distro) +#+end_src + +**** Text Options + +#+begin_src conf :tangle .config/neofetch/config.conf + # Toggle bold text + # + # Default: 'on' + # Values: 'on', 'off' + # Flag: --bold + bold="on" + + # Enable/Disable Underline + # + # Default: 'on' + # Values: 'on', 'off' + # Flag: --underline + underline_enabled="on" + + # Underline character + # + # Default: '-' + # Values: 'string' + # Flag: --underline_char + underline_char="-" + + + # Info Separator + # Replace the default separator with the specified string. + # + # Default: ':' + # Flag: --separator + # + # Example: + # separator="->": 'Shell-> bash' + # separator=" =": 'WM = dwm' + separator=":" +#+end_src + +**** Color Blocks + +#+begin_src conf :tangle .config/neofetch/config.conf + # Color block range + # The range of colors to print. + # + # Default: '0', '15' + # Values: 'num' + # Flag: --block_range + # + # Example: + # + # Display colors 0-7 in the blocks. (8 colors) + # neofetch --block_range 0 7 + # + # Display colors 0-15 in the blocks. (16 colors) + # neofetch --block_range 0 15 + block_range=(0 15) + + # Toggle color blocks + # + # Default: 'on' + # Values: 'on', 'off' + # Flag: --color_blocks + color_blocks="on" + + # Color block width in spaces + # + # Default: '3' + # Values: 'num' + # Flag: --block_width + block_width=3 + + # Color block height in lines + # + # Default: '1' + # Values: 'num' + # Flag: --block_height + block_height=1 + + # Color Alignment + # + # Default: 'auto' + # Values: 'auto', 'num' + # Flag: --col_offset + # + # Number specifies how far from the left side of the terminal (in spaces) to + # begin printing the columns, in case you want to e.g. center them under your + # text. + # Example: + # col_offset="auto" - Default behavior of neofetch + # col_offset=7 - Leave 7 spaces then print the colors + col_offset="auto" +#+end_src + +**** Progress Bars + +#+begin_src conf :tangle .config/neofetch/config.conf + # Bar characters + # + # Default: '-', '=' + # Values: 'string', 'string' + # Flag: --bar_char + # + # Example: + # neofetch --bar_char 'elapsed' 'total' + # neofetch --bar_char '-' '=' + bar_char_elapsed="-" + bar_char_total="=" + + # Toggle Bar border + # + # Default: 'on' + # Values: 'on', 'off' + # Flag: --bar_border + bar_border="on" + + # Progress bar length in spaces + # Number of chars long to make the progress bars. + # + # Default: '15' + # Values: 'num' + # Flag: --bar_length + bar_length=15 + + # Progress bar colors + # When set to distro, uses your distro's logo colors. + # + # Default: 'distro', 'distro' + # Values: 'distro', 'num' + # Flag: --bar_colors + # + # Example: + # neofetch --bar_colors 3 4 + # neofetch --bar_colors distro 5 + bar_color_elapsed="distro" + bar_color_total="distro" + + # Info display + # Display a bar with the info. + # + # Default: 'off' + # Values: 'bar', 'infobar', 'barinfo', 'off' + # Flags: --cpu_display + # --memory_display + # --battery_display + # --disk_display + # + # Example: + # bar: '[---=======]' + # infobar: 'info [---=======]' + # barinfo: '[---=======] info' + # off: 'info' + cpu_display="off" + memory_display="off" + battery_display="off" + disk_display="off" +#+end_src + +**** Backend Settings + +#+begin_src conf :tangle .config/neofetch/config.conf + # Image backend. + # + # Default: 'ascii' + # Values: 'ascii', 'caca', 'chafa', 'jp2a', 'iterm2', 'off', + # 'termpix', 'pixterm', 'tycat', 'w3m', 'kitty' + # Flag: --backend + image_backend="ascii" + + # Image Source + # + # Which image or ascii file to display. + # + # Default: 'auto' + # Values: 'auto', 'ascii', 'wallpaper', '/path/to/img', '/path/to/ascii', '/path/to/dir/' + # 'command output (neofetch --ascii "$(fortune | cowsay -W 30)")' + # Flag: --source + # + # NOTE: 'auto' will pick the best image source for whatever image backend is used. + # In ascii mode, distro ascii art will be used and in an image mode, your + # wallpaper will be used. + image_source="auto" +#+end_src + +***** Ascii Options + +#+begin_src conf :tangle .config/neofetch/config.conf + # Ascii distro + # Which distro's ascii art to display. + # + # Default: 'auto' + # Values: 'auto', 'distro_name' + # Flag: --ascii_distro + # NOTE: AIX, Alpine, Anarchy, Android, Antergos, antiX, AOSC, + # Apricity, ArcoLinux, ArchBox, ARCHlabs, ArchStrike, + # XFerience, ArchMerge, Arch, Artix, Arya, Bedrock, Bitrig, + # BlackArch, BLAG, BlankOn, BlueLight, bonsai, BSD, + # BunsenLabs, Calculate, Carbs, CentOS, Chakra, ChaletOS, + # Chapeau, Chrom*, Cleanjaro, ClearOS, Clear_Linux, Clover, + # Condres, Container_Linux, CRUX, Cucumber, Debian, Deepin, + # DesaOS, Devuan, DracOS, DragonFly, Drauger, Elementary, + # EndeavourOS, Endless, EuroLinux, Exherbo, Fedora, Feren, FreeBSD, + # FreeMiNT, Frugalware, Funtoo, GalliumOS, Gentoo, Pentoo, + # gNewSense, GNU, GoboLinux, Grombyang, Guix, Haiku, Huayra, + # Hyperbola, janus, Kali, KaOS, KDE_neon, Kibojoe, Kogaion, + # Korora, KSLinux, Kubuntu, LEDE, LFS, Linux_Lite, + # LMDE, Lubuntu, Lunar, macos, Mageia, MagpieOS, Mandriva, + # Manjaro, Maui, Mer, Minix, LinuxMint, MX_Linux, Namib, + # Neptune, NetBSD, Netrunner, Nitrux, NixOS, Nurunner, + # NuTyX, OBRevenge, OpenBSD, OpenIndiana, OpenMandriva, + # OpenWrt, osmc, Oracle, PacBSD, Parabola, Pardus, Parrot, + # Parsix, TrueOS, PCLinuxOS, Peppermint, popos, Porteus, + # PostMarketOS, Proxmox, Puppy, PureOS, Qubes, Radix, Raspbian, + # Reborn_OS, Redstar, Redcore, Redhat, Refracted_Devuan, Regata, + # Rosa, sabotage, Sabayon, Sailfish, SalentOS, Scientific, Septor, + # SharkLinux, Siduction, Slackware, SliTaz, SmartOS, Solus, + # Source_Mage, Sparky, Star, SteamOS, SunOS, openSUSE_Leap, + # openSUSE_Tumbleweed, openSUSE, SwagArch, Tails, Trisquel, + # Ubuntu-Budgie, Ubuntu-GNOME, Ubuntu-MATE, Ubuntu-Studio, Ubuntu, + # Void, Obarun, windows10, Windows7, Xubuntu, Zorin, and IRIX + # have ascii logos + # NOTE: Arch, Ubuntu, Redhat, and Dragonfly have 'old' logo variants. + # Use '{distro name}_old' to use the old logos. + # NOTE: Ubuntu has flavor variants. + # Change this to Lubuntu, Kubuntu, Xubuntu, Ubuntu-GNOME, + # Ubuntu-Studio, Ubuntu-Mate or Ubuntu-Budgie to use the flavors. + # NOTE: Arcolinux, Dragonfly, Fedora, Alpine, Arch, Ubuntu, + # CRUX, Debian, Gentoo, FreeBSD, Mac, NixOS, OpenBSD, android, + # Antrix, CentOS, Cleanjaro, ElementaryOS, GUIX, Hyperbola, + # Manjaro, MXLinux, NetBSD, Parabola, POP_OS, PureOS, + # Slackware, SunOS, LinuxLite, OpenSUSE, Raspbian, + # postmarketOS, and Void have a smaller logo variant. + # Use '{distro name}_small' to use the small variants. + ascii_distro="auto" + + # Ascii Colors + # + # Default: 'distro' + # Values: 'distro', 'num' 'num' 'num' 'num' 'num' 'num' + # Flag: --ascii_colors + # + # Example: + # ascii_colors=(distro) - Ascii is colored based on Distro colors. + # ascii_colors=(4 6 1 8 8 6) - Ascii is colored using these colors. + ascii_colors=(distro) + + # Bold ascii logo + # Whether or not to bold the ascii logo. + # + # Default: 'on' + # Values: 'on', 'off' + # Flag: --ascii_bold + ascii_bold="on" +#+end_src + +***** Image Options + +#+begin_src conf :tangle .config/neofetch/config.conf + # Image loop + # Setting this to on will make neofetch redraw the image constantly until + # Ctrl+C is pressed. This fixes display issues in some terminal emulators. + # + # Default: 'off' + # Values: 'on', 'off' + # Flag: --loop + image_loop="off" + + # Thumbnail directory + # + # Default: '~/.cache/thumbnails/neofetch' + # Values: 'dir' + thumbnail_dir="${XDG_CACHE_HOME:-${HOME}/.cache}/thumbnails/neofetch" + + # Crop mode + # + # Default: 'normal' + # Values: 'normal', 'fit', 'fill' + # Flag: --crop_mode + # + # See this wiki page to learn about the fit and fill options. + # https://github.com/dylanaraps/neofetch/wiki/What-is-Waifu-Crop%3F + crop_mode="normal" + + # Crop offset + # Note: Only affects 'normal' crop mode. + # + # Default: 'center' + # Values: 'northwest', 'north', 'northeast', 'west', 'center' + # 'east', 'southwest', 'south', 'southeast' + # Flag: --crop_offset + crop_offset="center" + + # Image size + # The image is half the terminal width by default. + # + # Default: 'auto' + # Values: 'auto', '00px', '00%', 'none' + # Flags: --image_size + # --size + image_size="auto" + + # Gap between image and text + # + # Default: '3' + # Values: 'num', '-num' + # Flag: --gap + gap=3 + + # Image offsets + # Only works with the w3m backend. + # + # Default: '0' + # Values: 'px' + # Flags: --xoffset + # --yoffset + yoffset=0 + xoffset=0 + + # Image background color + # Only works with the w3m backend. + # + # Default: '' + # Values: 'color', 'blue' + # Flag: --bg_color + background_color= +#+end_src + +***** Misc Options + +#+begin_src conf :tangle .config/neofetch/config.conf + # Stdout mode + # Turn off all colors and disables image backend (ASCII/Image). + # Useful for piping into another command. + # Default: 'off' + # Values: 'on', 'off' + stdout="off" +#+end_src + +** Shell +*** Bash + +#+begin_src shell :tangle .bashrc + # ~/.bashrc: executed by bash(1) for non-login shells. + # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) + # for examples + + # If not running interactively, don't do anything + case $- in + ,*i*) ;; + ,*) return ;; + esac + + # don't put duplicate lines or lines starting with space in the history. + # See bash(1) for more options + HISTCONTROL=ignoreboth + + # append to the history file, don't overwrite it + shopt -s histappend + + # for setting history length see HISTSIZE and HISTFILESIZE in bash(1) + HISTSIZE=1000 + HISTFILESIZE=2000 + + # check the window size after each command and, if necessary, + # update the values of LINES and COLUMNS. + shopt -s checkwinsize + + # If set, the pattern "**" used in a pathname expansion context will + # match all files and zero or more directories and subdirectories. + #shopt -s globstar + + # make less more friendly for non-text input files, see lesspipe(1) + [ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" + + # set variable identifying the chroot you work in (used in the prompt below) + if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then + debian_chroot=$(cat /etc/debian_chroot) + fi + + # set a fancy prompt (non-color, unless we know we "want" color) + case "$TERM" in + xterm-color | *-256color) color_prompt=yes ;; + esac + + # uncomment for a colored prompt, if the terminal has the capability; turned + # off by default to not distract the user: the focus in a terminal window + # should be on the output of commands, not on the prompt + #force_color_prompt=yes + + if [ -n "$force_color_prompt" ]; then + if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then + # We have color support; assume it's compliant with Ecma-48 + # (ISO/IEC-6429). (Lack of such support is extremely rare, and such + # a case would tend to support setf rather than setaf.) + color_prompt=yes + else + color_prompt= + fi + fi + + if [ "$color_prompt" = yes ]; then + PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' + else + PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' + fi + unset color_prompt force_color_prompt + + # If this is an xterm set the title to user@host:dir + case "$TERM" in + xterm* | rxvt*) + PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" + ;; + ,*) ;; + + esac + + # enable color support of ls and also add handy aliases + if [ -x /usr/bin/dircolors ]; then + test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" + alias ls='ls --color=auto' + #alias dir='dir --color=auto' + #alias vdir='vdir --color=auto' + + alias grep='grep --color=auto' + alias fgrep='fgrep --color=auto' + alias egrep='egrep --color=auto' + fi + + # colored GCC warnings and errors + #export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' + + # some more ls aliases + alias ll='ls -alF' + alias la='ls -A' + alias l='ls -CF' + + # Add an "alert" alias for long running commands. Use like so: + # sleep 10; alert + alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"' + + # Alias definitions. + # You may want to put all your additions into a separate file like + # ~/.bash_aliases, instead of adding them here directly. + # See /usr/share/doc/bash-doc/examples in the bash-doc package. + + if [ -f ~/.bash_aliases ]; then + . ~/.bash_aliases + fi + + # enable programmable completion features (you don't need to enable + # this, if it's already enabled in /etc/bash.bashrc and /etc/profile + # sources /etc/bash.bashrc). + if ! shopt -oq posix; then + if [ -f /usr/share/bash-completion/bash_completion ]; then + . /usr/share/bash-completion/bash_completion + elif [ -f /etc/bash_completion ]; then + . /etc/bash_completion + fi + fi + + # ALIASES + alias config='/usr/bin/git --git-dir=$HOME/.cfg/ --work-tree=$HOME' + + # ENVIRONMENT VARIABLES + export EDITOR="emacs" + export TERM=xterm-256color + export QT_STYLE_OVERRIDE=kvantum + export XDG_CONFIG_HOME=$HOME/.config + + # Greeting + clear + pokemon-colorscripts -r + echo "bash shell" +#+end_src +*** Zsh + +#+begin_src shell :tangle .zshrc + # If you come from bash you might have to change your $PATH. + # export PATH=$HOME/bin:/usr/local/bin:$PATH + + # Set $PATH if ~/.local/bin exist + if [ -d "$HOME/.local/bin" ]; then + export PATH=$HOME/.local/bin:$PATH + fi + + eval "$(starship init zsh)" + function set_win_title(){ + echo -ne "\033]0; $USER@$HOST:${PWD/$HOME/~} \007" + } + precmd_functions+=(set_win_title) + + ## Plugins section: Enable fish style features + # Use syntax highlighting + source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh + + # Use autosuggestion + source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh + + # Use history substring search + source /usr/share/zsh/plugins/zsh-history-substring-search/zsh-history-substring-search.zsh + + # Use fzf + source /usr/share/fzf/key-bindings.zsh + source /usr/share/fzf/completion.zsh + + # Arch Linux command-not-found support, you must have package pkgfile installed + # https://wiki.archlinux.org/index.php/Pkgfile#.22Command_not_found.22_hook + [[ -e /usr/share/doc/pkgfile/command-not-found.zsh ]] && source /usr/share/doc/pkgfile/command-not-found.zsh + + + ## Options section + setopt correct # Auto correct mistakes + setopt extendedglob # Extended globbing. Allows using regular expressions with * + setopt nocaseglob # Case insensitive globbing + setopt rcexpandparam # Array expension with parameters + setopt nocheckjobs # Don't warn about running processes when exiting + setopt numericglobsort # Sort filenames numerically when it makes sense + setopt nobeep # No beep + setopt appendhistory # Immediately append history instead of overwriting + setopt histignorealldups # If a new command is a duplicate, remove the older one + setopt autocd # if only directory path is entered, cd there. + setopt auto_pushd + setopt pushd_ignore_dups + setopt pushdminus + + # Completion. + autoload -Uz compinit + compinit + zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' # Case insensitive tab completion + zstyle ':completion:*' rehash true # automatically find new executables in path + zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}" # Colored completion (different colors for dirs/files/etc) + zstyle ':completion:*' completer _expand _complete _ignored _approximate + zstyle ':completion:*' menu select=2 + zstyle ':completion:*' select-prompt '%SScrolling active: current selection at %p%s' + zstyle ':completion:*:descriptions' format '%U%F{cyan}%d%f%u' + + # Speed up completions + zstyle ':completion:*' accept-exact '*(N)' + zstyle ':completion:*' use-cache on + zstyle ':completion:*' cache-path ~/.cache/zcache + + # automatically load bash completion functions + autoload -U +X bashcompinit && bashcompinit + + HISTFILE=~/.zhistory + HISTSIZE=50000 + SAVEHIST=10000 + + + ## Keys + # Use emacs key bindings + bindkey -e + + # [PageUp] - Up a line of history + if [[ -n "${terminfo[kpp]}" ]]; then + bindkey -M emacs "${terminfo[kpp]}" up-line-or-history + bindkey -M viins "${terminfo[kpp]}" up-line-or-history + bindkey -M vicmd "${terminfo[kpp]}" up-line-or-history + fi + # [PageDown] - Down a line of history + if [[ -n "${terminfo[knp]}" ]]; then + bindkey -M emacs "${terminfo[knp]}" down-line-or-history + bindkey -M viins "${terminfo[knp]}" down-line-or-history + bindkey -M vicmd "${terminfo[knp]}" down-line-or-history + fi + + # Start typing + [Up-Arrow] - fuzzy find history forward + if [[ -n "${terminfo[kcuu1]}" ]]; then + autoload -U up-line-or-beginning-search + zle -N up-line-or-beginning-search + + bindkey -M emacs "${terminfo[kcuu1]}" up-line-or-beginning-search + bindkey -M viins "${terminfo[kcuu1]}" up-line-or-beginning-search + bindkey -M vicmd "${terminfo[kcuu1]}" up-line-or-beginning-search + fi + # Start typing + [Down-Arrow] - fuzzy find history backward + if [[ -n "${terminfo[kcud1]}" ]]; then + autoload -U down-line-or-beginning-search + zle -N down-line-or-beginning-search + + bindkey -M emacs "${terminfo[kcud1]}" down-line-or-beginning-search + bindkey -M viins "${terminfo[kcud1]}" down-line-or-beginning-search + bindkey -M vicmd "${terminfo[kcud1]}" down-line-or-beginning-search + fi + + # [Home] - Go to beginning of line + if [[ -n "${terminfo[khome]}" ]]; then + bindkey -M emacs "${terminfo[khome]}" beginning-of-line + bindkey -M viins "${terminfo[khome]}" beginning-of-line + bindkey -M vicmd "${terminfo[khome]}" beginning-of-line + fi + # [End] - Go to end of line + if [[ -n "${terminfo[kend]}" ]]; then + bindkey -M emacs "${terminfo[kend]}" end-of-line + bindkey -M viins "${terminfo[kend]}" end-of-line + bindkey -M vicmd "${terminfo[kend]}" end-of-line + fi + + # [Shift-Tab] - move through the completion menu backwards + if [[ -n "${terminfo[kcbt]}" ]]; then + bindkey -M emacs "${terminfo[kcbt]}" reverse-menu-complete + bindkey -M viins "${terminfo[kcbt]}" reverse-menu-complete + bindkey -M vicmd "${terminfo[kcbt]}" reverse-menu-complete + fi + + # [Backspace] - delete backward + bindkey -M emacs '^?' backward-delete-char + bindkey -M viins '^?' backward-delete-char + bindkey -M vicmd '^?' backward-delete-char + # [Delete] - delete forward + if [[ -n "${terminfo[kdch1]}" ]]; then + bindkey -M emacs "${terminfo[kdch1]}" delete-char + bindkey -M viins "${terminfo[kdch1]}" delete-char + bindkey -M vicmd "${terminfo[kdch1]}" delete-char + else + bindkey -M emacs "^[[3~" delete-char + bindkey -M viins "^[[3~" delete-char + bindkey -M vicmd "^[[3~" delete-char + + bindkey -M emacs "^[3;5~" delete-char + bindkey -M viins "^[3;5~" delete-char + bindkey -M vicmd "^[3;5~" delete-char + fi + + # Common use aliases + alias aup="pamac upgrade --aur" + alias grubup="sudo update-grub" + alias fixpacman="sudo rm /var/lib/pacman/db.lck" + alias tarnow='tar -acf ' + alias untar='tar -zxvf ' + alias wget='wget -c ' + alias psmem='ps auxf | sort -nr -k 4' + alias psmem10='ps auxf | sort -nr -k 4 | head -10' + alias ..='cd ..' + alias ...='cd ../..' + alias ....='cd ../../..' + alias .....='cd ../../../..' + alias ......='cd ../../../../..' + alias dir='dir --color=auto' + alias vdir='vdir --color=auto' + alias grep='grep --color=auto' + alias fgrep='fgrep --color=auto' + alias egrep='egrep --color=auto' + alias hw='hwinfo --short' # Hardware Info + alias gitpkg='pacman -Q | grep -i "\-git" | wc -l' # List amount of -git packages + + # Get fastest mirrors + alias mirror="sudo reflector -f 30 -l 30 --number 10 --verbose --save /etc/pacman.d/mirrorlist" + alias mirrord="sudo reflector --latest 50 --number 20 --sort delay --save /etc/pacman.d/mirrorlist" + alias mirrors="sudo reflector --latest 50 --number 20 --sort score --save /etc/pacman.d/mirrorlist" + alias mirrora="sudo reflector --latest 50 --number 20 --sort age --save /etc/pacman.d/mirrorlist" + + # Help people new to Arch + alias apt='man pacman' + alias apt-get='man pacman' + alias please='sudo' + alias tb='nc termbin.com 9999' + + # Replace yay with paru if installed + [ ! -x /usr/bin/yay ] && [ -x /usr/bin/paru ] && alias yay='paru' + + # Set your countries like --country France --country Germany -- or more. + alias upd='sudo reflector --latest 5 --age 2 --fastest 5 --protocol https --sort rate --save /etc/pacman.d/mirrorlist && cat /etc/pacman.d/mirrorlist && sudo pacman -Syu && sudo updatedb' + + # Greeting + clear + pokemon-colorscripts -r + echo "zsh shell" +#+end_src + +*** Fish + +**** Greeting + +#+begin_src fish :tangle .config/fish/config.fish + function fish_greeting + clear + pokemon-colorscripts -r + echo "¸.·´¯`·.´¯`·.¸¸.·´¯`·.¸><(((º>" + end +#+end_src + +**** Variables + +#+begin_src fish :tangle .config/fish/config.fish + set -U fish_user_paths $fish_user_paths $HOME/.local/bin/ +#+end_src + +**** Aliases + +#+begin_src fish :tangle .config/fish/config.fish + # pacman and paru + alias pacsyu='sudo pacman -Syyu' # update only standard pkgs + alias parusua='paru -Sua --noconfirm' # update only AUR pkgs + alias parusyu='paru -Syu --noconfirm' # update standard pkgs and AUR pkgs + alias unlock='sudo rm /var/lib/pacman/db.lck' # remove pacman lock + alias cleanup='sudo pacman -Rns (pacman -Qtdq)' # remove orphaned packages + + # get fastest mirrors + alias mirror="sudo reflector -f 30 -l 30 --number 10 --verbose --save /etc/pacman.d/mirrorlist" + alias mirrord="sudo reflector --latest 50 --number 20 --sort delay --save /etc/pacman.d/mirrorlist" + alias mirrors="sudo reflector --latest 50 --number 20 --sort score --save /etc/pacman.d/mirrorlist" + alias mirrora="sudo reflector --latest 50 --number 20 --sort age --save /etc/pacman.d/mirrorlist" + + # Colorize grep output (good for log files) + alias grep='grep --color=auto' + alias egrep='egrep --color=auto' + alias fgrep='fgrep --color=auto' + + # confirm before overwriting something + alias cp="cp -i" + alias mv='mv -i' + alias rm='rm -i' + + # gpg encryption + # verify signature for isos + alias gpg-check="gpg2 --keyserver-options auto-key-retrieve --verify" + # receive the key of a developer + alias gpg-retrieve="gpg2 --keyserver-options auto-key-retrieve --receive-keys" + + # bare git repo alias for dotfiles + alias config="GIT_WORK_TREE=~ GIT_DIR=~/.cfg" +#+end_src + +**** TTY + +#+begin_src fish :tangle .config/fish/config.fish + if [ "$TERM" = "linux" ] + then + printf %b '\e[40m' '\e[8]' # set default background to color 0 'dracula-bg' + printf %b '\e[37m' '\e[8]' # set default foreground to color 7 'dracula-fg' + printf %b '\e]P0282a36' # redefine 'black' as 'dracula-bg' + printf %b '\e]P86272a4' # redefine 'bright-black' as 'dracula-comment' + printf %b '\e]P1ff5555' # redefine 'red' as 'dracula-red' + printf %b '\e]P9ff7777' # redefine 'bright-red' as '#ff7777' + printf %b '\e]P250fa7b' # redefine 'green' as 'dracula-green' + printf %b '\e]PA70fa9b' # redefine 'bright-green' as '#70fa9b' + printf %b '\e]P3f1fa8c' # redefine 'brown' as 'dracula-yellow' + printf %b '\e]PBffb86c' # redefine 'bright-brown' as 'dracula-orange' + printf %b '\e]P4bd93f9' # redefine 'blue' as 'dracula-purple' + printf %b '\e]PCcfa9ff' # redefine 'bright-blue' as '#cfa9ff' + printf %b '\e]P5ff79c6' # redefine 'magenta' as 'dracula-pink' + printf %b '\e]PDff88e8' # redefine 'bright-magenta' as '#ff88e8' + printf %b '\e]P68be9fd' # redefine 'cyan' as 'dracula-cyan' + printf %b '\e]PE97e2ff' # redefine 'bright-cyan' as '#97e2ff' + printf %b '\e]P7f8f8f2' # redefine 'white' as 'dracula-fg' + printf %b '\e]PFffffff' # redefine 'bright-white' as '#ffffff' + clear + end +#+end_src + +**** Prompt + +#+begin_src fish :tangle .config/fish/config.fish + # Starship Prompt + starship init fish | source +#+end_src + +**** Dracula Theme + +#+begin_src fish :tangle .config/fish/conf.d/dracula.fish + # Dracula Color Palette + set -l foreground f8f8f2 + set -l selection 44475a + set -l comment 6272a4 + set -l red ff5555 + set -l orange ffb86c + set -l yellow f1fa8c + set -l green 50fa7b + set -l purple bd93f9 + set -l cyan 8be9fd + set -l pink ff79c6 + + # Syntax Highlighting Colors + set -g fish_color_normal $foreground + set -g fish_color_command $cyan + set -g fish_color_keyword $pink + set -g fish_color_quote $yellow + set -g fish_color_redirection $foreground + set -g fish_color_end $orange + set -g fish_color_error $red + set -g fish_color_param $purple + set -g fish_color_comment $comment + set -g fish_color_selection --background=$selection + set -g fish_color_search_match --background=$selection + set -g fish_color_operator $green + set -g fish_color_escape $pink + set -g fish_color_autosuggestion $comment + + # Completion Pager Colors + set -g fish_pager_color_progress $comment + set -g fish_pager_color_prefix $cyan + set -g fish_pager_color_completion $foreground + set -g fish_pager_color_description $comment +#+end_src + +** Terminal +*** Kitty + +**** Fonts + +#+begin_src conf :tangle .config/kitty/kitty.conf + #: Fonts {{{ + + #: kitty has very powerful font management. You can configure + #: individual font faces and even specify special fonts for particular + #: characters. + + font_family Fira Code Regular Nerd Font Complete + bold_font Fira Code Bold Nerd Font Complete + italic_font Fira Code Regular Nerd Font Complete + bold_italic_font Fira Code Bold Nerd Font Complete + + #: You can specify different fonts for the bold/italic/bold-italic + #: variants. To get a full list of supported fonts use the `kitty + #: list-fonts` command. By default they are derived automatically, by + #: the OSes font system. Setting them manually is useful for font + #: families that have many weight variants like Book, Medium, Thick, + #: etc. For example:: + + #: font_family Operator Mono Book + #: bold_font Operator Mono Medium + #: italic_font Operator Mono Book Italic + #: bold_italic_font Operator Mono Medium Italic + + font_size 12.0 + + #: Font size (in pts) + + force_ltr no + + #: kitty does not support BIDI (bidirectional text), however, for RTL + #: scripts, words are automatically displayed in RTL. That is to say, + #: in an RTL script, the words "HELLO WORLD" display in kitty as + #: "WORLD HELLO", and if you try to select a substring of an RTL- + #: shaped string, you will get the character that would be there had + #: the the string been LTR. For example, assuming the Hebrew word + #: ירושלים, selecting the character that on the screen appears to be ם + #: actually writes into the selection buffer the character י. + + #: kitty's default behavior is useful in conjunction with a filter to + #: reverse the word order, however, if you wish to manipulate RTL + #: glyphs, it can be very challenging to work with, so this option is + #: provided to turn it off. Furthermore, this option can be used with + #: the command line program GNU FriBidi + #: to get BIDI + #: support, because it will force kitty to always treat the text as + #: LTR, which FriBidi expects for terminals. + + adjust_line_height 0 + adjust_column_width 0 + + #: Change the size of each character cell kitty renders. You can use + #: either numbers, which are interpreted as pixels or percentages + #: (number followed by %), which are interpreted as percentages of the + #: unmodified values. You can use negative pixels or percentages less + #: than 100% to reduce sizes (but this might cause rendering + #: artifacts). + + # symbol_map U+E0A0-U+E0A3,U+E0C0-U+E0C7 PowerlineSymbols + + #: Map the specified unicode codepoints to a particular font. Useful + #: if you need special rendering for some symbols, such as for + #: Powerline. Avoids the need for patched fonts. Each unicode code + #: point is specified in the form U+. You + #: can specify multiple code points, separated by commas and ranges + #: separated by hyphens. symbol_map itself can be specified multiple + #: times. Syntax is:: + + #: symbol_map codepoints Font Family Name + + disable_ligatures never + + #: Choose how you want to handle multi-character ligatures. The + #: default is to always render them. You can tell kitty to not render + #: them when the cursor is over them by using cursor to make editing + #: easier, or have kitty never render them at all by using always, if + #: you don't like them. The ligature strategy can be set per-window + #: either using the kitty remote control facility or by defining + #: shortcuts for it in kitty.conf, for example:: + + #: map alt+1 disable_ligatures_in active always + #: map alt+2 disable_ligatures_in all never + #: map alt+3 disable_ligatures_in tab cursor + + #: Note that this refers to programming ligatures, typically + #: implemented using the calt OpenType feature. For disabling general + #: ligatures, use the font_features setting. + + font_features none + + #: Choose exactly which OpenType features to enable or disable. This + #: is useful as some fonts might have features worthwhile in a + #: terminal. For example, Fira Code Retina includes a discretionary + #: feature, zero, which in that font changes the appearance of the + #: zero (0), to make it more easily distinguishable from Ø. Fira Code + #: Retina also includes other discretionary features known as + #: Stylistic Sets which have the tags ss01 through ss20. + + #: Note that this code is indexed by PostScript name, and not the font + #: family. This allows you to define very precise feature settings; + #: e.g. you can disable a feature in the italic font but not in the + #: regular font. + + #: On Linux, these are read from the FontConfig database first and + #: then this, setting is applied, so they can be configured in a + #: single, central place. + + #: To get the PostScript name for a font, use kitty + list-fonts + #: --psnames: + + #: .. code-block:: sh + + #: $ kitty + list-fonts --psnames | grep Fira + #: Fira Code + #: Fira Code Bold (FiraCode-Bold) + #: Fira Code Light (FiraCode-Light) + #: Fira Code Medium (FiraCode-Medium) + #: Fira Code Regular (FiraCode-Regular) + #: Fira Code Retina (FiraCode-Retina) + + #: The part in brackets is the PostScript name. + + #: Enable alternate zero and oldstyle numerals:: + + #: font_features FiraCode-Retina +zero +onum + + #: Enable only alternate zero:: + + #: font_features FiraCode-Retina +zero + + #: Disable the normal ligatures, but keep the calt feature which (in + #: this font) breaks up monotony:: + + #: font_features TT2020StyleB-Regular -liga +calt + + #: In conjunction with force_ltr, you may want to disable Arabic + #: shaping entirely, and only look at their isolated forms if they + #: show up in a document. You can do this with e.g.:: + + #: font_features UnifontMedium +isol -medi -fina -init + + box_drawing_scale 0.001, 1, 1.5, 2 + + #: Change the sizes of the lines used for the box drawing unicode + #: characters These values are in pts. They will be scaled by the + #: monitor DPI to arrive at a pixel value. There must be four values + #: corresponding to thin, normal, thick, and very thick lines. + + #: }}} +#+end_src + +**** Cursor Customization + +#+begin_src conf :tangle .config/kitty/kitty.conf + #: Cursor customization {{{ + + ; cursor #cccccc + + #: Default cursor color + + ; cursor_text_color #111111 + + #: Choose the color of text under the cursor. If you want it rendered + #: with the background color of the cell underneath instead, use the + #: special keyword: background + + cursor_shape beam + + #: The cursor shape can be one of (block, beam, underline) + + cursor_beam_thickness 1.5 + + #: Defines the thickness of the beam cursor (in pts) + + cursor_underline_thickness 2.0 + + #: Defines the thickness of the underline cursor (in pts) + + cursor_blink_interval -1 + + #: The interval (in seconds) at which to blink the cursor. Set to zero + #: to disable blinking. Negative values mean use system default. Note + #: that numbers smaller than repaint_delay will be limited to + #: repaint_delay. + + cursor_stop_blinking_after 15.0 + + #: Stop blinking cursor after the specified number of seconds of + #: keyboard inactivity. Set to zero to never stop blinking. + + #: }}} +#+end_src + +**** Scrollback + +#+begin_src conf :tangle .config/kitty/kitty.conf + #: Scrollback {{{ + + scrollback_lines 2000 + + #: Number of lines of history to keep in memory for scrolling back. + #: Memory is allocated on demand. Negative numbers are (effectively) + #: infinite scrollback. Note that using very large scrollback is not + #: recommended as it can slow down performance of the terminal and + #: also use large amounts of RAM. Instead, consider using + #: scrollback_pager_history_size. + + scrollback_pager less --chop-long-lines --RAW-CONTROL-CHARS +INPUT_LINE_NUMBER + + #: Program with which to view scrollback in a new window. The + #: scrollback buffer is passed as STDIN to this program. If you change + #: it, make sure the program you use can handle ANSI escape sequences + #: for colors and text formatting. INPUT_LINE_NUMBER in the command + #: line above will be replaced by an integer representing which line + #: should be at the top of the screen. Similarly CURSOR_LINE and + #: CURSOR_COLUMN will be replaced by the current cursor position. + + scrollback_pager_history_size 0 + + #: Separate scrollback history size, used only for browsing the + #: scrollback buffer (in MB). This separate buffer is not available + #: for interactive scrolling but will be piped to the pager program + #: when viewing scrollback buffer in a separate window. The current + #: implementation stores the data in UTF-8, so approximatively 10000 + #: lines per megabyte at 100 chars per line, for pure ASCII text, + #: unformatted text. A value of zero or less disables this feature. + #: The maximum allowed size is 4GB. + + wheel_scroll_multiplier 5.0 + + #: Modify the amount scrolled by the mouse wheel. Note this is only + #: used for low precision scrolling devices, not for high precision + #: scrolling on platforms such as macOS and Wayland. Use negative + #: numbers to change scroll direction. + + touch_scroll_multiplier 1.0 + + #: Modify the amount scrolled by a touchpad. Note this is only used + #: for high precision scrolling devices on platforms such as macOS and + #: Wayland. Use negative numbers to change scroll direction. + + #: }}} +#+end_src + +**** Mouse + +#+begin_src conf :tangle .config/kitty/kitty.conf + #: Mouse {{{ + + mouse_hide_wait 3.0 + + #: Hide mouse cursor after the specified number of seconds of the + #: mouse not being used. Set to zero to disable mouse cursor hiding. + #: Set to a negative value to hide the mouse cursor immediately when + #: typing text. Disabled by default on macOS as getting it to work + #: robustly with the ever-changing sea of bugs that is Cocoa is too + #: much effort. + + ; url_color #0087bd + url_style curly + + #: The color and style for highlighting URLs on mouse-over. url_style + #: can be one of: none, single, double, curly + + open_url_modifiers kitty_mod + + #: The modifier keys to press when clicking with the mouse on URLs to + #: open the URL + + open_url_with default + + #: The program with which to open URLs that are clicked on. The + #: special value default means to use the operating system's default + #: URL handler. + + url_prefixes http https file ftp + + #: The set of URL prefixes to look for when detecting a URL under the + #: mouse cursor. + + detect_urls yes + + #: Detect URLs under the mouse. Detected URLs are highlighted with an + #: underline and the mouse cursor becomes a hand over them. Even if + #: this option is disabled, URLs are still clickable. + + copy_on_select no + + #: Copy to clipboard or a private buffer on select. With this set to + #: clipboard, simply selecting text with the mouse will cause the text + #: to be copied to clipboard. Useful on platforms such as macOS that + #: do not have the concept of primary selections. You can instead + #: specify a name such as a1 to copy to a private kitty buffer + #: instead. Map a shortcut with the paste_from_buffer action to paste + #: from this private buffer. For example:: + + #: map cmd+shift+v paste_from_buffer a1 + + #: Note that copying to the clipboard is a security risk, as all + #: programs, including websites open in your browser can read the + #: contents of the system clipboard. + + strip_trailing_spaces never + + #: Remove spaces at the end of lines when copying to clipboard. A + #: value of smart will do it when using normal selections, but not + #: rectangle selections. always will always do it. + + rectangle_select_modifiers ctrl+alt + + #: The modifiers to use rectangular selection (i.e. to select text in + #: a rectangular block with the mouse) + + terminal_select_modifiers shift + + #: The modifiers to override mouse selection even when a terminal + #: application has grabbed the mouse + + select_by_word_characters @-./_~?&=%+# + + #: Characters considered part of a word when double clicking. In + #: addition to these characters any character that is marked as an + #: alphanumeric character in the unicode database will be matched. + + click_interval -1.0 + + #: The interval between successive clicks to detect double/triple + #: clicks (in seconds). Negative numbers will use the system default + #: instead, if available, or fallback to 0.5. + + focus_follows_mouse no + + #: Set the active window to the window under the mouse when moving the + #: mouse around + + pointer_shape_when_grabbed arrow + + #: The shape of the mouse pointer when the program running in the + #: terminal grabs the mouse. Valid values are: arrow, beam and hand + + default_pointer_shape beam + + #: The default shape of the mouse pointer. Valid values are: arrow, + #: beam and hand + + pointer_shape_when_dragging beam + + #: The default shape of the mouse pointer when dragging across text. + #: Valid values are: arrow, beam and hand + + #: }}} +#+end_src + +**** Performance Tuning + +#+begin_src conf :tangle .config/kitty/kitty.conf + #: Performance tuning {{{ + + repaint_delay 10 + + #: Delay (in milliseconds) between screen updates. Decreasing it, + #: increases frames-per-second (FPS) at the cost of more CPU usage. + #: The default value yields ~100 FPS which is more than sufficient for + #: most uses. Note that to actually achieve 100 FPS you have to either + #: set sync_to_monitor to no or use a monitor with a high refresh + #: rate. Also, to minimize latency when there is pending input to be + #: processed, repaint_delay is ignored. + + input_delay 3 + + #: Delay (in milliseconds) before input from the program running in + #: the terminal is processed. Note that decreasing it will increase + #: responsiveness, but also increase CPU usage and might cause flicker + #: in full screen programs that redraw the entire screen on each loop, + #: because kitty is so fast that partial screen updates will be drawn. + + sync_to_monitor no + + #: Sync screen updates to the refresh rate of the monitor. This + #: prevents tearing (https://en.wikipedia.org/wiki/Screen_tearing) + #: when scrolling. However, it limits the rendering speed to the + #: refresh rate of your monitor. With a very high speed mouse/high + #: keyboard repeat rate, you may notice some slight input latency. If + #: so, set this to no. + + #: }}} +#+end_src + +**** Terminal Bell + +#+begin_src conf :tangle .config/kitty/kitty.conf + #: Terminal bell {{{ + + enable_audio_bell yes + + #: Enable/disable the audio bell. Useful in environments that require + #: silence. + + visual_bell_duration 0.0 + + #: Visual bell duration. Flash the screen when a bell occurs for the + #: specified number of seconds. Set to zero to disable. + + window_alert_on_bell yes + + #: Request window attention on bell. Makes the dock icon bounce on + #: macOS or the taskbar flash on linux. + + bell_on_tab yes + + #: Show a bell symbol on the tab if a bell occurs in one of the + #: windows in the tab and the window is not the currently focused + #: window + + command_on_bell none + + #: Program to run when a bell occurs. + + #: }}} +#+end_src + +**** Window Layout + +#+begin_src conf :tangle .config/kitty/kitty.conf + #: Window layout {{{ + + remember_window_size yes + initial_window_width 640 + initial_window_height 400 + + #: If enabled, the window size will be remembered so that new + #: instances of kitty will have the same size as the previous + #: instance. If disabled, the window will initially have size + #: configured by initial_window_width/height, in pixels. You can use a + #: suffix of "c" on the width/height values to have them interpreted + #: as number of cells instead of pixels. + + enabled_layouts * + + #: The enabled window layouts. A comma separated list of layout names. + #: The special value all means all layouts. The first listed layout + #: will be used as the startup layout. Default configuration is all + #: layouts in alphabetical order. For a list of available layouts, see + #: the https://sw.kovidgoyal.net/kitty/index.html#layouts. + + window_resize_step_cells 2 + window_resize_step_lines 2 + + #: The step size (in units of cell width/cell height) to use when + #: resizing windows. The cells value is used for horizontal resizing + #: and the lines value for vertical resizing. + + window_border_width 0.5 + + #: The width of window borders. Can be either in pixels (px) or pts + #: (pt). Values in pts will be rounded to the nearest number of pixels + #: based on screen resolution. If not specified the unit is assumed to + #: be pts. Note that borders are displayed only when more than one + #: window is visible. They are meant to separate multiple windows. + + draw_minimal_borders yes + + #: Draw only the minimum borders needed. This means that only the + #: minimum needed borders for inactive windows are drawn. That is only + #: the borders that separate the inactive window from a neighbor. Note + #: that setting a non-zero window margin overrides this and causes all + #: borders to be drawn. + + window_margin_width 0 + + #: The window margin (in pts) (blank area outside the border). A + #: single value sets all four sides. Two values set the vertical and + #: horizontal sides. Three values set top, horizontal and bottom. Four + #: values set top, right, bottom and left. + + single_window_margin_width -1 + + #: The window margin (in pts) to use when only a single window is + #: visible. Negative values will cause the value of + #: window_margin_width to be used instead. A single value sets all + #: four sides. Two values set the vertical and horizontal sides. Three + #: values set top, horizontal and bottom. Four values set top, right, + #: bottom and left. + + window_padding_width 5 + + #: The window padding (in pts) (blank area between the text and the + #: window border). A single value sets all four sides. Two values set + #: the vertical and horizontal sides. Three values set top, horizontal + #: and bottom. Four values set top, right, bottom and left. + + placement_strategy center + + #: When the window size is not an exact multiple of the cell size, the + #: cell area of the terminal window will have some extra padding on + #: the sides. You can control how that padding is distributed with + #: this option. Using a value of center means the cell area will be + #: placed centrally. A value of top-left means the padding will be on + #: only the bottom and right edges. + + active_border_color #00ff00 + + #: The color for the border of the active window. Set this to none to + #: not draw borders around the active window. + + inactive_border_color #cccccc + + #: The color for the border of inactive windows + + bell_border_color #ff5a00 + + #: The color for the border of inactive windows in which a bell has + #: occurred + + inactive_text_alpha 1.0 + + #: Fade the text in inactive windows by the specified amount (a number + #: between zero and one, with zero being fully faded). + + hide_window_decorations no + + #: Hide the window decorations (title-bar and window borders) with + #: yes. On macOS, titlebar-only can be used to only hide the titlebar. + #: Whether this works and exactly what effect it has depends on the + #: window manager/operating system. + + resize_debounce_time 0.1 + + #: The time (in seconds) to wait before redrawing the screen when a + #: resize event is received. On platforms such as macOS, where the + #: operating system sends events corresponding to the start and end of + #: a resize, this number is ignored. + + resize_draw_strategy static + + #: Choose how kitty draws a window while a resize is in progress. A + #: value of static means draw the current window contents, mostly + #: unchanged. A value of scale means draw the current window contents + #: scaled. A value of blank means draw a blank window. A value of size + #: means show the window size in cells. + + resize_in_steps no + + #: Resize the OS window in steps as large as the cells, instead of + #: with the usual pixel accuracy. Combined with an + #: initial_window_width and initial_window_height in number of cells, + #: this option can be used to keep the margins as small as possible + #: when resizing the OS window. Note that this does not currently work + #: on Wayland. + + confirm_os_window_close 0 + + #: Ask for confirmation when closing an OS window or a tab that has at + #: least this number of kitty windows in it. A value of zero disables + #: confirmation. This confirmation also applies to requests to quit + #: the entire application (all OS windows, via the quit action). + + #: }}} +#+end_src + +**** Tab Bar + +#+begin_src conf :tangle .config/kitty/kitty.conf + #: Tab bar {{{ + + tab_bar_edge top + + #: Which edge to show the tab bar on, top or bottom + + tab_bar_margin_width 0.0 + + #: The margin to the left and right of the tab bar (in pts) + + tab_bar_style powerline + + #: The tab bar style, can be one of: fade, separator, powerline, or + #: hidden. In the fade style, each tab's edges fade into the + #: background color, in the separator style, tabs are separated by a + #: configurable separator, and the powerline shows the tabs as a + #: continuous line. If you use the hidden style, you might want to + #: create a mapping for the select_tab action which presents you with + #: a list of tabs and allows for easy switching to a tab. + + tab_bar_min_tabs 2 + + #: The minimum number of tabs that must exist before the tab bar is + #: shown + + tab_switch_strategy previous + + #: The algorithm to use when switching to a tab when the current tab + #: is closed. The default of previous will switch to the last used + #: tab. A value of left will switch to the tab to the left of the + #: closed tab. A value of right will switch to the tab to the right of + #: the closed tab. A value of last will switch to the right-most tab. + + tab_fade 0.25 0.5 0.75 1 + + #: Control how each tab fades into the background when using fade for + #: the tab_bar_style. Each number is an alpha (between zero and one) + #: that controls how much the corresponding cell fades into the + #: background, with zero being no fade and one being full fade. You + #: can change the number of cells used by adding/removing entries to + #: this list. + + tab_separator " ┇" + + #: The separator between tabs in the tab bar when using separator as + #: the tab_bar_style. + + tab_activity_symbol none + + #: Some text or a unicode symbol to show on the tab if a window in the + #: tab that does not have focus has some activity. + + tab_title_template "{index}: {title}" + + #: A template to render the tab title. The default just renders the + #: title. If you wish to include the tab-index as well, use something + #: like: {index}: {title}. Useful if you have shortcuts mapped for + #: goto_tab N. In addition you can use {layout_name} for the current + #: layout name and {num_windows} for the number of windows in the tab. + #: Note that formatting is done by Python's string formatting + #: machinery, so you can use, for instance, {layout_name[:2].upper()} + #: to show only the first two letters of the layout name, upper-cased. + #: If you want to style the text, you can use styling directives, for + #: example: {fmt.fg.red}red{fmt.fg.default}normal{fmt.bg._00FF00}green + #: bg{fmt.bg.normal}. Similarly, for bold and italic: + #: {fmt.bold}bold{fmt.nobold}normal{fmt.italic}italic{fmt.noitalic}. + + active_tab_title_template none + + #: Template to use for active tabs, if not specified falls back to + #: tab_title_template. + + ; active_tab_foreground #000 + ; active_tab_background #eee + active_tab_font_style bold-italic + ; inactive_tab_foreground #444 + ; inactive_tab_background #999 + inactive_tab_font_style normal + + #: Tab bar colors and styles + + tab_bar_background none + + #: Background color for the tab bar. Defaults to using the terminal + #: background color. + + #: }}} +#+end_src + +**** Color Scheme + +#+begin_src conf :tangle .config/kitty/kitty.conf + #: Color scheme {{{ + + ; foreground #dddddd + ; background #000000 + + #: The foreground and background colors + + background_opacity 0.8 + + #: The opacity of the background. A number between 0 and 1, where 1 is + #: opaque and 0 is fully transparent. This will only work if + #: supported by the OS (for instance, when using a compositor under + #: X11). Note that it only sets the background color's opacity in + #: cells that have the same background color as the default terminal + #: background. This is so that things like the status bar in vim, + #: powerline prompts, etc. still look good. But it means that if you + #: use a color theme with a background color in your editor, it will + #: not be rendered as transparent. Instead you should change the + #: default background color in your kitty config and not use a + #: background color in the editor color scheme. Or use the escape + #: codes to set the terminals default colors in a shell script to + #: launch your editor. Be aware that using a value less than 1.0 is a + #: (possibly significant) performance hit. If you want to dynamically + #: change transparency of windows set dynamic_background_opacity to + #: yes (this is off by default as it has a performance cost) + + background_image none + + #: Path to a background image. Must be in PNG format. + + background_image_layout tiled + + #: Whether to tile or scale the background image. + + background_image_linear no + + #: When background image is scaled, whether linear interpolation + #: should be used. + + dynamic_background_opacity no + + #: Allow changing of the background_opacity dynamically, using either + #: keyboard shortcuts (increase_background_opacity and + #: decrease_background_opacity) or the remote control facility. + + background_tint 0.0 + + #: How much to tint the background image by the background color. The + #: tint is applied only under the text area, not margin/borders. Makes + #: it easier to read the text. Tinting is done using the current + #: background color for each window. This setting applies only if + #: background_opacity is set and transparent windows are supported or + #: background_image is set. + + dim_opacity 0.8 + + #: How much to dim text that has the DIM/FAINT attribute set. One + #: means no dimming and zero means fully dimmed (i.e. invisible). + + ; selection_foreground #000000 + + #: The foreground for text selected with the mouse. A value of none + #: means to leave the color unchanged. + + ; selection_background #fffacd + + #: The background for text selected with the mouse. + + + #: The 16 terminal colors. There are 8 basic colors, each color has a + #: dull and bright version. You can also set the remaining colors from + #: the 256 color table as color16 to color255. + + ; color0 #000000 + ; color8 #767676 + + #: black + + ; color1 #cc0403 + ; color9 #f2201f + + #: red + + ; color2 #19cb00 + ; color10 #23fd00 + + #: green + + ; color3 #cecb00 + ; color11 #fffd00 + + #: yellow + + ; color4 #0d73cc + ; color12 #1a8fff + + #: blue + + ; color5 #cb1ed1 + ; color13 #fd28ff + + #: magenta + + ; color6 #0dcdcd + ; color14 #14ffff + + #: cyan + + ; color7 #dddddd + ; color15 #ffffff + + #: white + + ; mark1_foreground black + + #: Color for marks of type 1 + + ; mark1_background #98d3cb + + #: Color for marks of type 1 (light steel blue) + + mark2_foreground black + + #: Color for marks of type 2 + + mark2_background #f2dcd3 + + #: Color for marks of type 1 (beige) + + mark3_foreground black + + #: Color for marks of type 3 + + mark3_background #f274bc + + #: Color for marks of type 1 (violet) + + #: }}} +#+end_src + +**** Advanced + +#+begin_src conf :tangle .config/kitty/kitty.conf + #: Advanced {{{ + + shell fish + + #: The shell program to execute. The default value of . means to use + #: whatever shell is set as the default shell for the current user. + #: Note that on macOS if you change this, you might need to add + #: --login to ensure that the shell starts in interactive mode and + #: reads its startup rc files. + + editor . + + #: The console editor to use when editing the kitty config file or + #: similar tasks. A value of . means to use the environment variables + #: VISUAL and EDITOR in that order. Note that this environment + #: variable has to be set not just in your shell startup scripts but + #: system-wide, otherwise kitty will not see it. + + close_on_child_death no + + #: Close the window when the child process (shell) exits. If no (the + #: default), the terminal will remain open when the child exits as + #: long as there are still processes outputting to the terminal (for + #: example disowned or backgrounded processes). If yes, the window + #: will close as soon as the child process exits. Note that setting it + #: to yes means that any background processes still using the terminal + #: can fail silently because their stdout/stderr/stdin no longer work. + + allow_remote_control no + + #: Allow other programs to control kitty. If you turn this on other + #: programs can control all aspects of kitty, including sending text + #: to kitty windows, opening new windows, closing windows, reading the + #: content of windows, etc. Note that this even works over ssh + #: connections. You can chose to either allow any program running + #: within kitty to control it, with yes or only programs that connect + #: to the socket specified with the kitty --listen-on command line + #: option, if you use the value socket-only. The latter is useful if + #: you want to prevent programs running on a remote computer over ssh + #: from controlling kitty. + + listen_on none + + #: Tell kitty to listen to the specified unix/tcp socket for remote + #: control connections. Note that this will apply to all kitty + #: instances. It can be overridden by the kitty --listen-on command + #: line flag. This option accepts only UNIX sockets, such as + #: unix:${TEMP}/mykitty or (on Linux) unix:@mykitty. Environment + #: variables are expanded. If {kitty_pid} is present then it is + #: replaced by the PID of the kitty process, otherwise the PID of the + #: kitty process is appended to the value, with a hyphen. This option + #: is ignored unless you also set allow_remote_control to enable + #: remote control. See the help for kitty --listen-on for more + #: details. + + # env + + #: Specify environment variables to set in all child processes. Note + #: that environment variables are expanded recursively, so if you + #: use:: + + #: env MYVAR1=a + #: env MYVAR2=${MYVAR1}/${HOME}/b + + #: The value of MYVAR2 will be a//b. + + update_check_interval 0 + + #: Periodically check if an update to kitty is available. If an update + #: is found a system notification is displayed informing you of the + #: available update. The default is to check every 24 hrs, set to zero + #: to disable. + + startup_session none + + #: Path to a session file to use for all kitty instances. Can be + #: overridden by using the kitty --session command line option for + #: individual instances. See + #: https://sw.kovidgoyal.net/kitty/index.html#sessions in the kitty + #: documentation for details. Note that relative paths are interpreted + #: with respect to the kitty config directory. Environment variables + #: in the path are expanded. + + clipboard_control write-clipboard write-primary + + #: Allow programs running in kitty to read and write from the + #: clipboard. You can control exactly which actions are allowed. The + #: set of possible actions is: write-clipboard read-clipboard write- + #: primary read-primary. You can additionally specify no-append to + #: disable kitty's protocol extension for clipboard concatenation. The + #: default is to allow writing to the clipboard and primary selection + #: with concatenation enabled. Note that enabling the read + #: functionality is a security risk as it means that any program, even + #: one running on a remote server via SSH can read your clipboard. + + allow_hyperlinks yes + + #: Process hyperlink (OSC 8) escape sequences. If disabled OSC 8 + #: escape sequences are ignored. Otherwise they become clickable + #: links, that you can click by holding down ctrl+shift and clicking + #: with the mouse. The special value of ``ask`` means that kitty will + #: ask before opening the link. + + term xterm-kitty + + #: The value of the TERM environment variable to set. Changing this + #: can break many terminal programs, only change it if you know what + #: you are doing, not because you read some advice on Stack Overflow + #: to change it. The TERM variable is used by various programs to get + #: information about the capabilities and behavior of the terminal. If + #: you change it, depending on what programs you run, and how + #: different the terminal you are changing it to is, various things + #: from key-presses, to colors, to various advanced features may not + #: work. + + #: }}} +#+end_src + +**** OS Specific Tweaks + +#+begin_src conf :tangle .config/kitty/kitty.conf + #: OS specific tweaks {{{ + + macos_titlebar_color system + + #: Change the color of the kitty window's titlebar on macOS. A value + #: of system means to use the default system color, a value of + #: background means to use the background color of the currently + #: active window and finally you can use an arbitrary color, such as + #: #12af59 or red. WARNING: This option works by using a hack, as + #: there is no proper Cocoa API for it. It sets the background color + #: of the entire window and makes the titlebar transparent. As such it + #: is incompatible with background_opacity. If you want to use both, + #: you are probably better off just hiding the titlebar with + #: hide_window_decorations. + + macos_option_as_alt no + + #: Use the option key as an alt key. With this set to no, kitty will + #: use the macOS native Option+Key = unicode character behavior. This + #: will break any Alt+key keyboard shortcuts in your terminal + #: programs, but you can use the macOS unicode input technique. You + #: can use the values: left, right, or both to use only the left, + #: right or both Option keys as Alt, instead. + + macos_hide_from_tasks no + + #: Hide the kitty window from running tasks (Option+Tab) on macOS. + + macos_quit_when_last_window_closed no + + #: Have kitty quit when all the top-level windows are closed. By + #: default, kitty will stay running, even with no open windows, as is + #: the expected behavior on macOS. + + macos_window_resizable yes + + #: Disable this if you want kitty top-level (OS) windows to not be + #: resizable on macOS. + + macos_thicken_font 0 + + #: Draw an extra border around the font with the given width, to + #: increase legibility at small font sizes. For example, a value of + #: 0.75 will result in rendering that looks similar to sub-pixel + #: antialiasing at common font sizes. + + macos_traditional_fullscreen no + + #: Use the traditional full-screen transition, that is faster, but + #: less pretty. + + macos_show_window_title_in all + + #: Show or hide the window title in the macOS window or menu-bar. A + #: value of window will show the title of the currently active window + #: at the top of the macOS window. A value of menubar will show the + #: title of the currently active window in the macOS menu-bar, making + #: use of otherwise wasted space. all will show the title everywhere + #: and none hides the title in the window and the menu-bar. + + macos_custom_beam_cursor no + + #: Enable/disable custom mouse cursor for macOS that is easier to see + #: on both light and dark backgrounds. WARNING: this might make your + #: mouse cursor invisible on dual GPU machines. + + linux_display_server auto + + #: Choose between Wayland and X11 backends. By default, an appropriate + #: backend based on the system state is chosen automatically. Set it + #: to x11 or wayland to force the choice. + + #: }}} +#+end_src + +**** Keyboard Shortcuts + +#+begin_src conf :tangle .config/kitty/kitty.conf + #: Keyboard shortcuts {{{ + + #: For a list of key names, see: the GLFW key macros + #: . + #: The name to use is the part after the GLFW_KEY_ prefix. For a list + #: of modifier names, see: GLFW mods + #: + + #: On Linux you can also use XKB key names to bind keys that are not + #: supported by GLFW. See XKB keys + #: for a list of key names. The name to use is the part + #: after the XKB_KEY_ prefix. Note that you can only use an XKB key + #: name for keys that are not known as GLFW keys. + + #: Finally, you can use raw system key codes to map keys, again only + #: for keys that are not known as GLFW keys. To see the system key + #: code for a key, start kitty with the kitty --debug-keyboard option. + #: Then kitty will output some debug text for every key event. In that + #: text look for ``native_code`` the value of that becomes the key + #: name in the shortcut. For example: + + #: .. code-block:: none + + #: on_key_input: glfw key: 65 native_code: 0x61 action: PRESS mods: 0x0 text: 'a' + + #: Here, the key name for the A key is 0x61 and you can use it with:: + + #: map ctrl+0x61 something + + #: to map ctrl+a to something. + + #: You can use the special action no_op to unmap a keyboard shortcut + #: that is assigned in the default configuration:: + + #: map kitty_mod+space no_op + + #: You can combine multiple actions to be triggered by a single + #: shortcut, using the syntax below:: + + #: map key combine action1 action2 action3 ... + + #: For example:: + + #: map kitty_mod+e combine : new_window : next_layout + + #: this will create a new window and switch to the next available + #: layout + + #: You can use multi-key shortcuts using the syntax shown below:: + + #: map key1>key2>key3 action + + #: For example:: + + #: map ctrl+f>2 set_font_size 20 + + kitty_mod ctrl+shift + + #: The value of kitty_mod is used as the modifier for all default + #: shortcuts, you can change it in your kitty.conf to change the + #: modifiers for all the default shortcuts. + + clear_all_shortcuts no + + #: You can have kitty remove all shortcut definition seen up to this + #: point. Useful, for instance, to remove the default shortcuts. + + # kitten_alias hints hints --hints-offset=0 + + #: You can create aliases for kitten names, this allows overriding the + #: defaults for kitten options and can also be used to shorten + #: repeated mappings of the same kitten with a specific group of + #: options. For example, the above alias changes the default value of + #: kitty +kitten hints --hints-offset to zero for all mappings, + #: including the builtin ones. + + #: }}} +#+end_src + +**** Clipboard + +#+begin_src conf :tangle .config/kitty/kitty.conf + #: Clipboard {{{ + + map kitty_mod+c copy_to_clipboard + + #: There is also a copy_or_interrupt action that can be optionally + #: mapped to Ctrl+c. It will copy only if there is a selection and + #: send an interrupt otherwise. Similarly, copy_and_clear_or_interrupt + #: will copy and clear the selection or send an interrupt if there is + #: no selection. + + map kitty_mod+v paste_from_clipboard + map kitty_mod+s paste_from_selection + map shift+insert paste_from_selection + map kitty_mod+o pass_selection_to_program + + #: You can also pass the contents of the current selection to any + #: program using pass_selection_to_program. By default, the system's + #: open program is used, but you can specify your own, the selection + #: will be passed as a command line argument to the program, for + #: example:: + + #: map kitty_mod+o pass_selection_to_program firefox + + #: You can pass the current selection to a terminal program running in + #: a new kitty window, by using the @selection placeholder:: + + #: map kitty_mod+y new_window less @selection + + #: }}} +#+end_src + +**** Scrolling + +#+begin_src conf :tangle .config/kitty/kitty.conf + #: Scrolling {{{ + + map kitty_mod+up scroll_line_up + map kitty_mod+k scroll_line_up + map kitty_mod+down scroll_line_down + map kitty_mod+j scroll_line_down + map kitty_mod+page_up scroll_page_up + map kitty_mod+page_down scroll_page_down + map kitty_mod+home scroll_home + map kitty_mod+end scroll_end + map kitty_mod+h show_scrollback + + #: You can pipe the contents of the current screen + history buffer as + #: STDIN to an arbitrary program using the ``launch`` function. For + #: example, the following opens the scrollback buffer in less in an + #: overlay window:: + + #: map f1 launch --stdin-source=@screen_scrollback --stdin-add-formatting --type=overlay less +G -R + + #: For more details on piping screen and buffer contents to external + #: programs, see launch. + + #: }}} +#+end_src + +**** Window Management + +#+begin_src conf :tangle .config/kitty/kitty.conf + #: Window management {{{ + + map kitty_mod+enter new_window + + #: You can open a new window running an arbitrary program, for + #: example:: + + #: map kitty_mod+y launch mutt + + #: You can open a new window with the current working directory set to + #: the working directory of the current window using:: + + #: map ctrl+alt+enter launch --cwd=current + + #: You can open a new window that is allowed to control kitty via the + #: kitty remote control facility by prefixing the command line with @. + #: Any programs running in that window will be allowed to control + #: kitty. For example:: + + #: map ctrl+enter launch --allow-remote-control some_program + + #: You can open a new window next to the currently active window or as + #: the first window, with:: + + #: map ctrl+n launch --location=neighbor some_program + #: map ctrl+f launch --location=first some_program + + #: For more details, see launch. + + map kitty_mod+n new_os_window + + #: Works like new_window above, except that it opens a top level OS + #: kitty window. In particular you can use new_os_window_with_cwd to + #: open a window with the current working directory. + + map kitty_mod+w close_window + map kitty_mod+] next_window + map kitty_mod+[ previous_window + map kitty_mod+f move_window_forward + map kitty_mod+b move_window_backward + map kitty_mod+` move_window_to_top + map kitty_mod+r start_resizing_window + map kitty_mod+1 first_window + map kitty_mod+2 second_window + map kitty_mod+3 third_window + map kitty_mod+4 fourth_window + map kitty_mod+5 fifth_window + map kitty_mod+6 sixth_window + map kitty_mod+7 seventh_window + map kitty_mod+8 eighth_window + map kitty_mod+9 ninth_window + map kitty_mod+0 tenth_window + #: }}} +#+end_src + +**** Tab Management + +#+begin_src conf :tangle .config/kitty/kitty.conf + #: Tab management {{{ + + map kitty_mod+right next_tab + map kitty_mod+left previous_tab + map kitty_mod+t new_tab + map kitty_mod+q close_tab + map kitty_mod+. move_tab_forward + map kitty_mod+, move_tab_backward + map kitty_mod+alt+t set_tab_title + + #: You can also create shortcuts to go to specific tabs, with 1 being + #: the first tab, 2 the second tab and -1 being the previously active + #: tab, and any number larger than the last tab being the last tab:: + + #: map ctrl+alt+1 goto_tab 1 + #: map ctrl+alt+2 goto_tab 2 + + #: Just as with new_window above, you can also pass the name of + #: arbitrary commands to run when using new_tab and use + #: new_tab_with_cwd. Finally, if you want the new tab to open next to + #: the current tab rather than at the end of the tabs list, use:: + + #: map ctrl+t new_tab !neighbor [optional cmd to run] + #: }}} +#+end_src + +**** Layout Management + +#+begin_src conf :tangle .config/kitty/kitty.conf + #: Layout management {{{ + + map kitty_mod+l next_layout + + #: You can also create shortcuts to switch to specific layouts:: + + #: map ctrl+alt+t goto_layout tall + #: map ctrl+alt+s goto_layout stack + + #: Similarly, to switch back to the previous layout:: + + #: map ctrl+alt+p last_used_layout + #: }}} +#+end_src + +**** Font Sizes + +#+begin_src conf :tangle .config/kitty/kitty.conf + #: Font sizes {{{ + + #: You can change the font size for all top-level kitty OS windows at + #: a time or only the current one. + + map kitty_mod+equal change_font_size all +2.0 + map kitty_mod+minus change_font_size all -2.0 + map kitty_mod+backspace change_font_size all 0 + + #: To setup shortcuts for specific font sizes:: + + #: map kitty_mod+f6 change_font_size all 10.0 + + #: To setup shortcuts to change only the current OS window's font + #: size:: + + #: map kitty_mod+f6 change_font_size current 10.0 + #: }}} +#+end_src + +**** Select and Act on Visible Text + +#+begin_src conf :tangle .config/kitty/kitty.conf + #: Select and act on visible text {{{ + + #: Use the hints kitten to select text and either pass it to an + #: external program or insert it into the terminal or copy it to the + #: clipboard. + + map kitty_mod+e kitten hints + + #: Open a currently visible URL using the keyboard. The program used + #: to open the URL is specified in open_url_with. + + map kitty_mod+p>f kitten hints --type path --program - + + #: Select a path/filename and insert it into the terminal. Useful, for + #: instance to run git commands on a filename output from a previous + #: git command. + + map kitty_mod+p>shift+f kitten hints --type path + + #: Select a path/filename and open it with the default open program. + + map kitty_mod+p>l kitten hints --type line --program - + + #: Select a line of text and insert it into the terminal. Use for the + #: output of things like: ls -1 + + map kitty_mod+p>w kitten hints --type word --program - + + #: Select words and insert into terminal. + + map kitty_mod+p>h kitten hints --type hash --program - + + #: Select something that looks like a hash and insert it into the + #: terminal. Useful with git, which uses sha1 hashes to identify + #: commits + + map kitty_mod+p>n kitten hints --type linenum + + #: Select something that looks like filename:linenum and open it in + #: vim at the specified line number. + + map kitty_mod+p>y kitten hints --type hyperlink + + #: Select a hyperlink (i.e. a URL that has been marked as such by the + #: terminal program, for example, by ls --hyperlink=auto). + + + #: The hints kitten has many more modes of operation that you can map + #: to different shortcuts. For a full description see kittens/hints. + #: }}} +#+end_src + +**** Miscellaneous + +#+begin_src conf :tangle .config/kitty/kitty.conf + #: Miscellaneous {{{ + + map kitty_mod+f11 toggle_fullscreen + map kitty_mod+f10 toggle_maximized + map kitty_mod+u kitten unicode_input + map kitty_mod+f2 edit_config_file + map kitty_mod+escape kitty_shell window + + #: Open the kitty shell in a new window/tab/overlay/os_window to + #: control kitty using commands. + + map kitty_mod+a>m set_background_opacity +0.1 + map kitty_mod+a>l set_background_opacity -0.1 + map kitty_mod+a>1 set_background_opacity 1 + map kitty_mod+a>d set_background_opacity default + map kitty_mod+delete clear_terminal reset active + + #: You can create shortcuts to clear/reset the terminal. For example:: + + #: # Reset the terminal + #: map kitty_mod+f9 clear_terminal reset active + #: # Clear the terminal screen by erasing all contents + #: map kitty_mod+f10 clear_terminal clear active + #: # Clear the terminal scrollback by erasing it + #: map kitty_mod+f11 clear_terminal scrollback active + #: # Scroll the contents of the screen into the scrollback + #: map kitty_mod+f12 clear_terminal scroll active + + #: If you want to operate on all windows instead of just the current + #: one, use all instead of active. + + #: It is also possible to remap Ctrl+L to both scroll the current + #: screen contents into the scrollback buffer and clear the screen, + #: instead of just clearing the screen:: + + #: map ctrl+l combine : clear_terminal scroll active : send_text normal,application \x0c + + + #: You can tell kitty to send arbitrary (UTF-8) encoded text to the + #: client program when pressing specified shortcut keys. For example:: + + #: map ctrl+alt+a send_text all Special text + + #: This will send "Special text" when you press the ctrl+alt+a key + #: combination. The text to be sent is a python string literal so you + #: can use escapes like \x1b to send control codes or \u21fb to send + #: unicode characters (or you can just input the unicode characters + #: directly as UTF-8 text). The first argument to send_text is the + #: keyboard modes in which to activate the shortcut. The possible + #: values are normal or application or kitty or a comma separated + #: combination of them. The special keyword all means all modes. The + #: modes normal and application refer to the DECCKM cursor key mode + #: for terminals, and kitty refers to the special kitty extended + #: keyboard protocol. + + #: Another example, that outputs a word and then moves the cursor to + #: the start of the line (same as pressing the Home key):: + + #: map ctrl+alt+a send_text normal Word\x1b[H + #: map ctrl+alt+a send_text application Word\x1bOH + + #: }}} +#+end_src + +**** Dracula Theme + +#+begin_src conf :tangle .config/kitty/kitty.conf + include dracula.conf +#+end_src + +#+begin_src conf :tangle .config/kitty/dracula.conf + # https://draculatheme.com/kitty + # + # Installation instructions: + # + # cp dracula.conf ~/.config/kitty/ + # echo "include dracula.conf" >> ~/.config/kitty/kitty.conf + # + # Then reload kitty for the config to take affect. + # Alternatively copy paste below directly into kitty.conf + + foreground #f8f8f2 + background #282a36 + selection_foreground #ffffff + selection_background #44475a + + url_color #8be9fd + + # black + color0 #21222c + color8 #6272a4 + + # red + color1 #ff5555 + color9 #ff6e6e + + # green + color2 #50fa7b + color10 #69ff94 + + # yellow + color3 #f1fa8c + color11 #ffffa5 + + # blue + color4 #bd93f9 + color12 #d6acff + + # magenta + color5 #ff79c6 + color13 #ff92df + + # cyan + color6 #8be9fd + color14 #a4ffff + + # white + color7 #f8f8f2 + color15 #ffffff + + # Cursor colors + cursor #f8f8f2 + cursor_text_color background + + # Tab bar colors + active_tab_foreground #282a36 + active_tab_background #f8f8f2 + inactive_tab_foreground #282a36 + inactive_tab_background #6272a4 + + # Marks + mark1_foreground #282a36 + mark1_background #ff5555 +#+end_src +*** Alacritty + +Configuration for Alacritty, the GPU enhanced terminal emulator. + +**** Environment Variable + +#+begin_src conf :tangle .config/alacritty/alacritty.yml + # Any items in the `env` entry below will be added as + # environment variables. Some entries may override variables + # set by alacritty itself. + #env: + # TERM variable + # + # This value is used to set the `$TERM` environment variable for + # each instance of Alacritty. If it is not present, alacritty will + # check the local terminfo database and use `alacritty` if it is + # available, otherwise `xterm-256color` is used. + #TERM: alacritty +#+end_src + +**** Window + +#+begin_src conf :tangle .config/alacritty/alacritty.yml + window: + # Window dimensions (changes require restart) + # + # Specified in number of columns/lines, not pixels. + # If both are `0`, this setting is ignored. + #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: 5 + y: 5 + + # 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, but no title bar buttons + #decorations: full + + # Startup Mode (changes require restart) + # + # Values for `startup_mode`: + # - Windowed + # - Maximized + # - Fullscreen + # + # Values for `startup_mode` (macOS only): + # - SimpleFullscreen + #startup_mode: Windowed + + # Window title + #title: Alacritty + + # 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 +#+end_src + +**** Scrolling + +#+begin_src conf :tangle .config/alacritty/alacritty.yml + #scrolling: + # Maximum number of lines in the scrollback buffer. + # Specifying '0' will disable scrolling. + #history: 10000 + + # Number of lines the viewport will move for every line scrolled when + # scrollback is enabled (history > 0). + #multiplier: 3 +#+end_src + +**** Font + +#+begin_src conf :tangle .config/alacritty/alacritty.yml + # Font configuration + font: + # Normal (roman) font face + normal: + # Font family + # + # Default: + # - (macOS) Menlo + # - (Linux/BSD) monospace + # - (Windows) Consolas + family: Fira Code Nerd Font + + # The `style` can be specified to pick a specific face. + style: Regular + + # Bold font face + bold: + # Font family + # + # If the bold family is not specified, it will fall back to the + # value specified for the normal font. + family: Fira Code Nerd Font + + # 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: 8.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 upwards. + #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` + # + # macOS >= 10.14.x: + # + # If the font quality on non-retina display looks bad then set + # `use_thin_strokes` to `true` and enable font smoothing by running the + # following command: + # `defaults write -g CGFontRenderingFontSmoothingDisabled -bool NO` + # + # This is a global setting and will require a log out or restart to take + # effect. + #use_thin_strokes: true +#+end_src + +**** Colors + +#+begin_src conf :tangle .config/alacritty/alacritty.yml + # If `true`, bold text is drawn using the bright color variants. + #draw_bold_text_with_bright_colors: false +#+end_src + +***** Tomorrow Night Bright + +*NOT IN USE* +#+begin_src conf :tangle no + colors: + # Default colors + primary: + background: '#000000' + foreground: '#eaeaea' + + # 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: '#9a9a9a' + # bright_foreground: '#ffffff' + + # Cursor colors + + # Colors which should be used to draw the terminal cursor. If these are unset, + # the cursor color will be the inverse of the cell color. + cursor: + text: '#000000' + cursor: '#ffffff' + + # Selection colors + + # Colors which should be used to draw the selection area. If selection + # background is unset, selection color will be the inverse of the cell colors. + # If only text is unset the cell text color will remain the same. + selection: + text: '#eaeaea' + background: '#404040' + + # Normal colors + normal: + black: '#000000' + red: '#d54e53' + green: '#b9ca4a' + yellow: '#e6c547' + blue: '#7aa6da' + magenta: '#c397d8' + cyan: '#70c0ba' + white: '#eaeaea' + + # Bright colors + bright: + black: '#666666' + red: '#ff3334' + green: '#9ec400' + yellow: '#e7c547' + blue: '#7aa6da' + magenta: '#b77ee0' + cyan: '#54ced6' + white: '#ffffff' + + # Dim colors + + # If the dim colors are not set, they will be calculated automatically based + # on the `normal` colors. + dim: + black: '#000000' + red: '#8c3336' + green: '#7a8530' + yellow: '#97822e' + blue: '#506d8f' + magenta: '#80638e' + cyan: '#497e7a' + white: '#9a9a9a' +#+end_src + +***** Dracula + +*NOT IN USE* +#+begin_src conf :tangle no + colors: + # Default colors + primary: + background: "0x282a36" + foreground: "0xf8f8f2" + + # 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: '0x9a9a9a' + #bright_foreground: '0xffffff' + + # Cursor colors + # + # Colors which should be used to draw the terminal cursor. If these are unset, + # the cursor color will be the inverse of the cell color. + cursor: + text: "0x44475a" + cursor: "0xf8f8f2" + + # Normal colors + normal: + black: "0x000000" + red: "0xff5555" + green: "0x50fa7b" + yellow: "0xf1fa8c" + blue: "0xbd93f9" + magenta: "0xff79c6" + cyan: "0x8be9fd" + white: "0xbfbfbf" + + # Bright colors + bright: + black: "0x4d4d4d" + red: "0xff6e67" + green: "0x5af78e" + yellow: "0xf4f99d" + blue: "0xcaa9fa" + magenta: "0xff92d0" + cyan: "0x9aedfe" + white: "0xe6e6e6" + + # Dim colors + # + # If the dim colors are not set, they will be calculated automatically based + # on the `normal` colors. + dim: + black: "0x14151b" + red: "0xff2222" + green: "0x1ef956" + yellow: "0xebf85b" + blue: "0x4d5b86" + magenta: "0xff46b0" + cyan: "0x59dffc" + white: "0xe6e6d1" +#+end_src + +***** Dracula PRO + +#+begin_src conf :tangle .config/alacritty/alacritty.yml + colors: + # Default colors + primary: + background: "0x22212c" + foreground: "0xf8f8f2" + + # 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: '0x9a9a9a' + #bright_foreground: '0xffffff' + + # Cursor colors + # + # Colors which should be used to draw the terminal cursor. If these are unset, + # the cursor color will be the inverse of the cell color. + cursor: + text: "0x454158" + cursor: "0xf8f8f2" + + # Selection colors + # + # Colors which should be used to draw the selection area. If selection + # background is unset, selection color will be the inverse of the cell colors. + # If only text is unset the cell text color will remain the same. + selection: + text: "0xf8f8f2" + background: "0x454158" + + # Normal colors + normal: + black: "0x22212c" + red: "0xff9580" + green: "0x8aff80" + yellow: "0xffff80" + blue: "0x9580ff" + magenta: "0xff80bf" + cyan: "0x80ffea" + white: "0xf8f8f2" + + # Bright colors + bright: + black: "0x22212c" + red: "0xffaa99" + green: "0xa2ff99" + yellow: "0xffff99" + blue: "0xaa99ff" + magenta: "0xff99cc" + cyan: "0x99ffee" + white: "0xffffff" + + # 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: '0xff00ff' }` + # + indexed_colors: [] +#+end_src + +**** Visual Bell + +#+begin_src conf :tangle .config/alacritty/alacritty.yml + # 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 +#+end_src + +**** Background Opacity + +#+begin_src conf :tangle .config/alacritty/alacritty.yml + # Background opacity + # + # Window opacity as a floating point number from `0.0` to `1.0`. + # The value `0.0` is completely transparent and `1.0` is opaque. + # background_opacity: 1.0 + background_opacity: 0.8 +#+end_src + +**** Selection + +#+begin_src conf :tangle .config/alacritty/alacritty.yml + #selection: + #semantic_escape_chars: ",│`|:\"' ()[]{}<>\t" + + # When set to `true`, selected text will be copied to the primary clipboard. + #save_to_clipboard: false +#+end_src + +**** Window Title + +#+begin_src conf :tangle .config/alacritty/alacritty.yml + # Allow terminal applications to change Alacritty's window title. + #dynamic_title: true +#+end_src + +**** Cursor + +#+begin_src conf :tangle .config/alacritty/alacritty.yml + cursor: + # Cursor style + # + # Values for `style`: + # - ▇ Block + # - _ Underline + # - | Beam + style: Beam + + # If this is `true`, the cursor will be rendered as a hollow box when the + # window is not focused. + #unfocused_hollow: true +#+end_src + +**** Live Config Reload + +#+begin_src conf :tangle .config/alacritty/alacritty.yml + # Live config reload (changes require restart) + live_config_reload: true +#+end_src + +**** Shell + +#+begin_src conf :tangle .config/alacritty/alacritty.yml + # 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: /usr/bin/fish + # args: + # - -l + # - -c + # - "tmux attach || tmux" +#+end_src + +**** Startup Directory + +#+begin_src conf :tangle .config/alacritty/alacritty.yml + # 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 +#+end_src + +**** WinPTY Backend (Windows Only) + +#+begin_src conf :tangle .config/alacritty/alacritty.yml + # WinPTY backend (Windows only) + # + # Alacritty defaults to using the newer ConPTY backend if it is available, + # since it resolves a lot of bugs and is quite a bit faster. If it is not + # available, the the WinPTY backend will be used instead. + # + # Setting this option to `true` makes Alacritty use the legacy WinPTY backend, + # even if the ConPTY backend is available. + #winpty_backend: false +#+end_src + +**** Alt Send Escape + +#+begin_src conf :tangle .config/alacritty/alacritty.yml + # Send ESC (\x1b) before characters when alt is pressed. + #alt_send_esc: true +#+end_src + +**** Mouse + +#+begin_src conf :tangle .config/alacritty/alacritty.yml + # 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 +#+end_src + +**** Hints + +#+begin_src conf :tangle .config/alacritty/alacritty.yml + # 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` 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: "(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 +#+end_src + +**** Mouse Bindings + +#+begin_src conf :tangle .config/alacritty/alacritty.yml + # Mouse bindings + # + # Mouse bindings are specified as a list of objects, much like the key + # bindings further below. + # + # To trigger mouse bindings when an application running within Alacritty captures the mouse, the + # `Shift` modifier is automatically added as a requirement. + # + # Each mouse binding will specify a: + # + # - `mouse`: + # + # - Middle + # - Left + # - Right + # - Numeric identifier such as `5` + # + # - `action` (see key bindings) + # + # And optionally: + # + # - `mods` (see key bindings) + #mouse_bindings: + # - { mouse: Middle, action: PasteSelection } +#+end_src + +**** Key Bindings + +#+begin_src conf :tangle .config/alacritty/alacritty.yml + # 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 + # + # - Copy + # - Paste + # - PasteSelection + # - IncreaseFontSize + # - DecreaseFontSize + # - ResetFontSize + # - ScrollPageUp + # - ScrollPageDown + # - ScrollLineUp + # - ScrollLineDown + # - ScrollToTop + # - ScrollToBottom + # - ClearHistory + # - Hide + # - Minimize + # - Quit + # - ToggleFullscreen + # - SpawnNewInstance + # - ClearLogNotice + # - ReceiveChar + # - None + # + # (macOS only): + # - ToggleSimpleFullscreen: Enters fullscreen without occupying another space + # + # - `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 + # - Alt + # + # 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 + # at once. + #key_bindings: + # (Windows, Linux, and BSD only) + #- { key: V, mods: Control|Shift, action: Paste } + #- { key: C, mods: Control|Shift, action: Copy } + #- { key: Insert, mods: Shift, action: PasteSelection } + #- { key: Key0, mods: Control, action: ResetFontSize } + #- { key: Equals, mods: Control, action: IncreaseFontSize } + #- { key: Add, mods: Control, action: IncreaseFontSize } + #- { key: Subtract, mods: Control, action: DecreaseFontSize } + #- { key: Minus, mods: Control, action: DecreaseFontSize } + + # (Windows only) + #- { key: Return, mods: Alt, action: ToggleFullscreen } + + # (macOS only) + #- { key: Key0, mods: Command, action: ResetFontSize } + #- { key: Equals, mods: Command, action: IncreaseFontSize } + #- { key: Add, mods: Command, action: IncreaseFontSize } + #- { key: Minus, mods: Command, action: DecreaseFontSize } + #- { key: K, mods: Command, action: ClearHistory } + #- { key: K, mods: Command, chars: "\x0c" } + #- { key: V, mods: Command, action: Paste } + #- { key: C, mods: Command, action: Copy } + #- { key: H, mods: Command, action: Hide } + #- { key: M, mods: Command, action: Minimize } + #- { key: Q, mods: Command, action: Quit } + #- { key: W, mods: Command, action: Quit } + #- { key: F, mods: Command|Control, action: ToggleFullscreen } + + #- { key: Paste, action: Paste } + #- { key: Copy, action: Copy } + #- { key: L, mods: Control, action: ClearLogNotice } + #- { key: L, mods: Control, chars: "\x0c" } + #- { key: PageUp, mods: Shift, action: ScrollPageUp, mode: ~Alt } + #- { key: PageDown, mods: Shift, action: ScrollPageDown, mode: ~Alt } + #- { key: Home, mods: Shift, action: ScrollToTop, mode: ~Alt } + #- { key: End, mods: Shift, action: ScrollToBottom, mode: ~Alt } +#+end_src + +**** Debug & Logging + +#+begin_src conf :tangle .config/alacritty/alacritty.yml + #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`: + # - None + # - Error + # - Warn + # - Info + # - Debug + # - Trace + #log_level: Warn + + # Print all received window events. + #print_events: false +#+end_src + +* Text Editor + +** Vim + +#+begin_src vimrc :tangle .vimrc + " Don't try to be vi compatible + set nocompatible + + " Syntax Highlighting + syntax on + + " Pick a leader key + let mapleader = "\\" + + " Security + set modelines=0 + + " Show line numbers + set number relativenumber + + " Show file stats + set ruler + + " Blink cursors on error instead of beeping + set visualbell + + " Encoding + set encoding=utf-8 + + " Whitespace + set wrap + set textwidth=110 + set formatoptions=tcqrn1 + set tabstop=4 + set shiftwidth=4 + set softtabstop=4 + set expandtab + set noshiftround + set smarttab + set autoindent + + " Cursor Motion + set scrolloff=3 + set backspace=indent,eol,start + set matchpairs+=<:> " use % to jumb between pairs + + " Allow hidden buffers + set hidden + + " Rendering + set ttyfast + + " Status bar + set laststatus=2 + + " Last line + set showmode + set showcmd + + " Searching + nnoremap / /\v + vnoremap / /\v + set hlsearch + set incsearch + set ignorecase + set smartcase + set showmatch + map :let @/='' " clear search + + " Formatting + map q gqip + + " Visualize tabs and newlines + set listchars=tab:▸\ ,eol:¬ + map l :set list! " Toggle tabs and EOL + + " Exit Inser Mode Easily + :inoremap jk + + " UI Config + set cursorline + filetype indent on + set wildmenu + set lazyredraw + set showmatch + + " Add Dracula Themes + packadd! dracula + packadd! dracula_pro + + " Enable Dracula Pro Theme + syntax enable + let g:dracula_colorterm = 0 + colorscheme dracula_pro +#+end_src + +* System Monitor + +** Conky + +#+begin_src conf :tangle .config/conky/conky.conf + --[[ + Conky, a system monitor, based on torsmo + + Any original torsmo code is licensed under the BSD license + + All code written since the fork of torsmo is licensed under the GPL + + Please see COPYING for details + + Copyright (c) 2004, Hannu Saransaari and Lauri Hakkarainen + Copyright (c) 2005-2021 Brenden Matthews, Philip Kovacs, et. al. (see AUTHORS) + All rights reserved. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + You should have received a copy of the GNU General Public License + along with this program. If not, see . + ]] + + conky.config ={ + -- CONKY SETTINGS + background = true, + update_interval = 1, + update_interval_on_battery = 5, + total_run_times = 0, + + cpu_avg_samples = 2, + net_avg_samples = 2, + + override_utf8_locale = true, + + double_buffer = true, + no_buffers = true, + + text_buffer_size = 32768, + + -- CONKY: WINDOW SPECIFICATIONS + own_window = true, + own_window_argb_value = 192, + own_window_argb_visual = true, + own_window_class = 'conky-semi', + -- own_window_colour = '#0b0d18', + own_window_hints = 'undecorated,below,sticky,skip_taskbar,skip_pager', + own_window_transparent = true, + own_window_type = 'dock', + + border_inner_margin = 6, + border_width = 5, + + minimum_height = 1020, + + minimum_width = 280, + maximum_width = 280, + + alignment = 'bottom_left', + gap_x = 10, + gap_y = 0, + + -- GRAPHICS SETTINGS + draw_outline = true, + draw_outline = false, + draw_borders = false, + draw_graph_borders = true, + -- draw_graph_borders = false, + + -- TEXT SETTINGS + use_xft = true, + font = 'Montserrat Regular:size=10', + xftalpha = 0.2, + + uppercase = false, + + -- Pad percentages to this many decimals (0 = no padding) + pad_percents = 2, + + -- COLOUR SETTINGS + default_color = 'AAAAAA', + default_shade_color = '333333', + -- default_outline_color = '111111', + default_outline_color = '010101', + color1 = '999999', + color2 = 'CCCCCC', + color3 = 'EEEEEE', + color4 = '444444', + color5 = '555555', + color6 = '666666', + color7 = '3b71a1', + }; + + + conky.text = [[ + ${alignc}${color1}${font Montserrat Bold:size=20}${time %X (%Z)}${font}${color}${alignc} + ${voffset -9} + ${alignc}${font Montserrat Light:size=10}${time %A %d %B %Y}${font}${alignc} + ${color6}${hr 2}${color} + ${voffset -6} + ${font Montserrat Light:size=8}${color1}SYSTEM:${color}${font} ${alignr}$sysname $nodename + ${font Montserrat Light:size=8}${color1}UPTIME:${color}${font} ${alignr}$uptime_short + ${font Montserrat Light:size=8}${color1}KERNEL:${color}${font} ${alignr}$kernel ${voffset 5} + ${font :size=11}${color}CPUs ${color}${hr 2}${color} + ${voffset -15} + ${font Montserrat Light:size=10}${color1}CPU:${color}${font} ${alignr}${color}${execi 300 cat /proc/cpuinfo | grep 'model name' | cut -c 14-40 | uniq}${color}${font} + ${font Montserrat Light:size=9}${color1}Used: ${alignr}${color}${font}${cpu cpu0}% + ${font :size=11}${color}${cpubar cpu0}${color} + ${voffset -15} + ${font Montserrat Light:size=9}${color1}01 - 04:${color}${font} ${goto 100}${cpu cpu1}% ${goto 150}${cpu cpu2 }% ${goto 200}${cpu cpu3 }% ${goto 250}${cpu cpu4 }% + ${font Montserrat Light:size=9}${color1}05 - 08:${color}${font} ${goto 100}${cpu cpu5}% ${goto 150}${cpu cpu6 }% ${goto 200}${cpu cpu7 }% ${goto 250}${cpu cpu8 }% + ${font Montserrat Light:size=9}${color1}09 - 12:${color}${font} ${goto 100}${cpu cpu9}% ${goto 150}${cpu cpu10}% ${goto 200}${cpu cpu11}% ${goto 250}${cpu cpu12}% + ${voffset -8} + ${font Montserrat Light:size=9}${color1}CPU TEMP:${color}${font} ${font :size=10}${alignr}${hwmon 1 temp 1}°${color4}C${color}${voffset 5} + ${font :size=11}${color}Network ${color}${hr 2}${color} + ${voffset -15} + # ${font Montserrat Light:size=10}${color1}IP ADDRESS:${color}${font} ${alignr}${addr wlp0s20f3} + ${if_match "${addr wlp0s20f3}"!="No Address"}${voffset 5}${font Montserrat Light:size=10}${font}Download ${alignr}${downspeedf wlp0s20f3}k/s (${totaldown wlp0s20f3}) + ${color3}${downspeedgraph wlp0s20f3 50,280 ADFF2F 32CD32 -t} + ${font Montserrat Light:size=10}${font}Upload ${alignr}${upspeedf wlp0s20f3}k/s (${totalup wlp0s20f3}) + ${color3}${upspeedgraph wlp0s20f3 50,280 FF0000 8B0000 -t} + ${endif}${voffset 5}${font :size=11}${color}HDD ${color}${hr 2}${color} + ${color1}Used: ${color3}${fs_used /}${color1}${goto 190}Free:${goto 230}${color3}${fs_free /} + ${color2}${fs_bar /} + ${font Montserrat Light:size=8}${color1}DISK I/O:${color}${font} ${alignr}$diskio + ${voffset 2}${font Montserrat Light:size=8}${color1}READ: ${color}${font} ${goto 80}${color4}${diskiograph_read 15,210 ADFF2F 32CD32 750}${color} + ${voffset 2}${font Montserrat Light:size=8}${color1}WRITE:${color}${font} ${goto 80}${color4}${diskiograph_write 15,210 FF0000 8B0000 750}${color} + ${font :size=11}${color}Memory ${color}${hr 2}${color}${voffset 2} + $font${color DimGray}RAM $alignc $mem / $memmax $alignr ${color 188f18}$memperc% + ${color 188f18}$membar${voffset 1} + ${font :size=11}${color}GPU ${color}${hr 2}${color}${voffset 2} + ${font Montserrat Light:size=9}${color1}GPU Freq.: $alignr ${color}${font}${nvidia gpufreq} Mhz${voffset 3} + ${font Montserrat Light:size=9}${color1}Memory Freq.: $alignr ${color}${font}${nvidia memfreq} Mhz${voffset 3} + ${font Montserrat Light:size=9}${color1}Temperature: $alignr ${color}${font}${nvidia temp}°C ${voffset 3} + ${voffset 3}${font :size=11}${color}Processes ${color}${hr 2}${color} + ${voffset -15} + ${font :size=10}${font Montserrat Light:size=8}${color1}TOTAL:${color}${font} ${alignr}${processes} + ${voffset -10} + ${font Montserrat Light:size=9}${color1}APP NAME: ${goto 160}MEMORY: ${goto 245}CPU: ${color}${font} + ${voffset -16} + ${font Montserrat Light:size=9}${color1}${top_mem name 1} ${color}${font} ${goto 160}${top mem 1} % ${goto 235}${top cpu 1} % + ${font Montserrat Light:size=9}${color1}${top_mem name 2} ${color}${font} ${goto 160}${top mem 2} % ${goto 235}${top cpu 2} % + ${font Montserrat Light:size=9}${color1}${top_mem name 3} ${color}${font} ${goto 160}${top mem 3} % ${goto 235}${top cpu 3} % + ${font Montserrat Light:size=9}${color1}${top_mem name 4} ${color}${font} ${goto 160}${top mem 4} % ${goto 235}${top cpu 4} % + ${font Montserrat Light:size=9}${color1}${top_mem name 5} ${color}${font} ${goto 160}${top mem 5} % ${goto 235}${top cpu 5} % + ${font Montserrat Light:size=9}${color1}${top_mem name 6} ${color}${font} ${goto 160}${top mem 6} % ${goto 235}${top cpu 6} % + ${font Montserrat Light:size=9}${color1}${top_mem name 7} ${color}${font} ${goto 160}${top mem 7} % ${goto 235}${top cpu 7} % + ${font Montserrat Light:size=9}${color1}${top_mem name 8} ${color}${font} ${goto 160}${top mem 8} % ${goto 235}${top cpu 8} % + ${font Montserrat Light:size=9}${color1}${top_mem name 9} ${color}${font} ${goto 160}${top mem 9} % ${goto 235}${top cpu 9} % + ${font Montserrat Light:size=9}${color1}${top_mem name 10} ${color}${font} ${goto 160}${top mem 10} % ${goto 235}${top cpu 10} % + + # ${font Montserrat Light:size=10}${color1}${alignr}by: Mo Abdrabou${color}${font} + + ]]; +#+end_src + +* Gaming +** Gamemode + +*** General + +#+begin_src conf :tangle .config/gamemode.ini + [general] + ; The reaper thread will check every 5 seconds for exited clients, for config file changes, and for the CPU/iGPU power balance + reaper_freq=5 + + ; The desired governor is used when entering GameMode instead of "performance" + desiredgov=performance + ; The default governor is used when leaving GameMode instead of restoring the original value + ;defaultgov=powersave + + ; The iGPU desired governor is used when the integrated GPU is under heavy load + igpu_desiredgov=powersave + ; Threshold to use to decide when the integrated GPU is under heavy load. + ; This is a ratio of iGPU Watts / CPU Watts which is used to determine when the + ; integraged GPU is under heavy enough load to justify switching to + ; igpu_desiredgov. Set this to -1 to disable all iGPU checking and always + ; use desiredgov for games. + igpu_power_threshold=0.3 + + ; GameMode can change the scheduler policy to SCHED_ISO on kernels which support it (currently + ; not supported by upstream kernels). Can be set to "auto", "on" or "off". "auto" will enable + ; with 4 or more CPU cores. "on" will always enable. Defaults to "off". + softrealtime=off + + ; GameMode can renice game processes. You can put any value between 0 and 20 here, the value + ; will be negated and applied as a nice value (0 means no change). Defaults to 0. + renice=10 + + ; By default, GameMode adjusts the iopriority of clients to BE/0, you can put any value + ; between 0 and 7 here (with 0 being highest priority), or one of the special values + ; "off" (to disable) or "reset" (to restore Linux default behavior based on CPU priority), + ; currently, only the best-effort class is supported thus you cannot set it here + ioprio=0 + + ; Sets whether gamemode will inhibit the screensaver when active + ; Defaults to 1 + inhibit_screensaver=1 +#+end_src + +*** Filter + +#+begin_src conf :tangle .config/gamemode.ini + [filter] + ; If "whitelist" entry has a value(s) + ; gamemode will reject anything not in the whitelist + ;whitelist=RiseOfTheTombRaider + + ; Gamemode will always reject anything in the blacklist + ;blacklist=HalfLife3 + ; glxgears +#+end_src + +*** GPU + +#+begin_src conf :tangle .config/gamemode.ini + [gpu] + ; Here Be Dragons! + ; Warning: Use these settings at your own risk + ; Any damage to hardware incurred due to this feature is your responsibility and yours alone + ; It is also highly recommended you try these settings out first manually to find the sweet spots + + ; Setting this to the keyphrase "accept-responsibility" will allow gamemode to apply GPU optimisations such as overclocks + ;apply_gpu_optimisations=0 + + ; The DRM device number on the system (usually 0), ie. the number in /sys/class/drm/card0/ + ;gpu_device=0 + + ; Nvidia specific settings + ; Requires the coolbits extension activated in nvidia-xconfig + ; This corresponds to the desired GPUPowerMizerMode + ; "Adaptive"=0 "Prefer Maximum Performance"=1 and "Auto"=2 + ; See NV_CTRL_GPU_POWER_MIZER_MODE and friends in https://github.com/NVIDIA/nvidia-settings/blob/master/src/libXNVCtrl/NVCtrl.h + ;nv_powermizer_mode=1 + + ; These will modify the core and mem clocks of the highest perf state in the Nvidia PowerMizer + ; They are measured as Mhz offsets from the baseline, 0 will reset values to default, -1 or unset will not modify values + ;nv_core_clock_mhz_offset=0 + ;nv_mem_clock_mhz_offset=0 + + ; AMD specific settings + ; Requires a relatively up to date AMDGPU kernel module + ; See: https://dri.freedesktop.org/docs/drm/gpu/amdgpu.html#gpu-power-thermal-controls-and-monitoring + ; It is also highly recommended you use lm-sensors (or other available tools) to verify card temperatures + ; This corresponds to power_dpm_force_performance_level, "manual" is not supported for now + ;amd_performance_level=high +#+end_src + +*** Supervisor + +#+begin_src conf :tangle .config/gamemode.ini + [supervisor] + ; This section controls the new gamemode functions gamemode_request_start_for and gamemode_request_end_for + ; The whilelist and blacklist control which supervisor programs are allowed to make the above requests + ;supervisor_whitelist= + ;supervisor_blacklist= + + ; In case you want to allow a supervisor to take full control of gamemode, this option can be set + ; This will only allow gamemode clients to be registered by using the above functions by a supervisor client + ;require_supervisor=0 +#+end_src + +*** Custom + +#+begin_src conf :tangle .config/gamemode.ini + [custom] + ; Custom scripts (executed using the shell) when gamemode starts and ends + ;start=notify-send "GameMode started" + ; /home/me/bin/stop_ethmining.sh + + ;end=notify-send "GameMode ended" + ; /home/me/bin/start_ethmining.sh + + ; Timeout for scripts (seconds). Scripts will be killed if they do not complete within this time. + ;script_timeout=10 +#+end_src +** MangoHUD + +#+begin_src conf :tangle .config/MangoHud/MangoHud.conf + toggle_fps_limit=F1 + + + legacy_layout=false + gpu_stats + gpu_temp + gpu_core_clock + gpu_mem_clock + gpu_power + gpu_load_change + gpu_load_value=50,90 + gpu_load_color=FFFFFF,FF7800,CC0000 + gpu_text=GPU + cpu_stats + cpu_temp + cpu_power + cpu_mhz + cpu_load_change + core_load_change + cpu_load_value=50,90 + cpu_load_color=FFFFFF,FF7800,CC0000 + cpu_color=2e97cb + cpu_text=CPU + io_stats + io_read + io_write + io_color=a491d3 + swap + vram + vram_color=ad64c1 + ram + ram_color=c26693 + fps + engine_color=eb5b5b + gpu_name + gpu_color=2e9762 + vulkan_driver + wine + wine_color=eb5b5b + frame_timing=1 + frametime_color=00ff00 + media_player_color=ffffff + background_alpha=0.4 + font_size=24 + background_color=020202 + position=top-left + text_color=ffffff + toggle_hud=Shift_R+F12 + toggle_logging=Shift_L+F2 + output_folder=/home/sravan + media_player_name=spotify +#+end_src +** vkBasalt + +#+begin_src conf :tangle .config/vkBasalt/vkBasalt.conf + casSharpness=1.0 + toggleKey = Home + effects = cas +#+end_src + +* SSH + +#+begin_src conf :tangle .ssh/config + # CAEN On-Campus + Host caen-oncampus + HostName oncampus-course.engin.umich.edu + User balajsra + Compression yes + + # CAEN Off-Campus + Host caen-offcampus + HostName login-course.engin.umich.edu + User balajsra + Compression yes +#+end_src + +* System Settings + +** Xinit + +*** Environment Variables + +#+begin_src shell :shebang #!/bin/sh :tangle .xinitrc + export TERM=xterm-256color # Sets the terminal type + export SHELL=/usr/bin/fish # Preferred shell + export EDITOR="emacs" # Default editor + export GIT_EDITOR="emacs" # Default git editor + export BROWSER=vivaldi-stable # Web Browser + export XDG_CONFIG_HOME=$HOME/.config # Set Config directory + export QT_QPA_PLATFORMTHEME=qt5ct # QGtkStyle + export _JAVA_AWT_WM_NONREPARENTING=1 # Java fix for Window Managers +#+end_src + +*** Load Xresources + +#+begin_src shell :shebang #!/bin/sh :tangle .xinitrc + xrdb ~/.Xresources +#+end_src + +*** Startup Applications & Processes + +#+begin_src shell :shebang #!/bin/sh :tangle .xinitrc + # Startup Applications + /home/sravan/.scripts/startup.sh --kill-startup && + /home/sravan/.scripts/startup.sh --startup + + # Delayed Startup Applications + (sleep 5 && + /home/sravan/.scripts/startup.sh --kill-delay && + /home/sravan/.scripts/startup.sh --delay) & +#+end_src + +*** Launch Environment + +#+begin_src shell :shebang #!/bin/sh :tangle .xinitrc + exec dwm +#+end_src + +** Xresources + +*** Colors + +#+begin_src conf :tangle .Xresources + ! Colors + #define FOREGROUND #F8F8F2 + #define BACKGROUND #282A36 + #define BLACK1 #000000 + #define BLACK2 #4D4D4D + #define WHITE1 #E6E6E6 + #define WHITE2 #BFBFBF + #define RED1 #FF5555 + #define RED2 #FF6E67 + #define GREEN1 #50FA7B + #define GREEN2 #5AF78E + #define YELLOW1 #F1FA8C + #define YELLOW2 #F4F99D + #define PURPLE1 #BD93F9 + #define PURPLE2 #CAA9FA + #define PINK1 #FF79C6 + #define PINK2 #FF92D0 + #define CYAN1 #8BE9FD + #define CYAN2 #9AEDFE + #define ORANGE #FFB86C + + ! Dracula Xresources Palette + ,*.foreground: FOREGROUND + ,*.background: BACKGROUND + ,*.color0: BLACK1 + ,*.color8: BLACK2 + ,*.color1: RED1 + ,*.color9: RED2 + ,*.color2: GREEN1 + ,*.color10: GREEN2 + ,*.color3: YELLOW1 + ,*.color11: YELLOW2 + ,*.color4: PURPLE1 + ,*.color12: PURPLE2 + ,*.color5: PINK1 + ,*.color13: PINK2 + ,*.color6: CYAN1 + ,*.color14: CYAN2 + ,*.color7: WHITE2 + ,*.color15: WHITE1 + ,*.color16: ORANGE +#+end_src + +*** Sizes + +*NOT IN USE* +#+begin_src conf :tangle no + ! Regular DPI Parameters + #define DPI 96 + #define BAR_HEIGHT 25 + #define MODULE_MARGIN 2 + #define MODULE_PADDING 2 + #define TRAY_MAXSIZE 20 + #define TRAY_SCALE 1 + #define BORDER_SIZE 2 + #define INNER_GAPS 20 + #define OUTER_GAPS 10 + #define MAXLEN 75 + #define CURSOR_SIZE 16 +#+end_src + +#+begin_src conf :tangle .Xresources + ! System76 Oryx Pro 7 DPI Parameters + #define DPI 96 + #define BAR_HEIGHT 25 + #define MODULE_MARGIN 1 + #define MODULE_PADDING 2 + #define TRAY_MAXSIZE 20 + #define TRAY_SCALE 1 + #define BORDER_SIZE 2 + #define INNER_GAPS 20 + #define OUTER_GAPS 10 + #define MAXLEN 50 + #define CURSOR_SIZE 16 +#+end_src + +*NOT IN USE* +#+begin_src conf :tangle no + ! HiDPI Parameters + #define DPI 192 + #define BAR_HEIGHT 50 + #define MODULE_MARGIN 1 + #define MODULE_PADDING 2 + #define TRAY_MAXSIZE 40 + #define TRAY_SCALE 1 + #define BORDER_SIZE 4 + #define INNER_GAPS 40 + #define OUTER_GAPS 20 + #define MAXLEN 45 + #define CURSOR_SIZE 32 +#+end_src + +*** Application Specific Changes + +**** dwm + +#+begin_src conf :tangle .Xresources + ! DWM + dwm.normbordercolor: BLACK2 + dwm.normbgcolor: BACKGROUND + dwm.normfgcolor: FOREGROUND + dwm.selbordercolor: PURPLE1 + dwm.selbgcolor: PURPLE1 + dwm.selfgcolor: BACKGROUND + dwm.borderpx: BORDER_SIZE + dwm.gappih: INNER_GAPS + dwm.gappiv: INNER_GAPS + dwm.gappoh: OUTER_GAPS + dwm.gappov: OUTER_GAPS +#+end_src + +**** Polybar + +#+begin_src conf :tangle .Xresources + ! Polybar + polybar.bar-height: BAR_HEIGHT + polybar.module-margin: MODULE_MARGIN + polybar.tray-maxsize: TRAY_MAXSIZE + polybar.tray-scale: TRAY_SCALE + polybar.maxlen: MAXLEN +#+end_src + +**** Dunst + +#+begin_src conf :tangle .Xresources + ! Dunst + dunst.geometry-x: 0 + dunst.geometry-y: BAR_HEIGHT + dunst.sep-height: BORDER_SIZE + dunst.padding: OUTER_GAPS + dunst.horiz-padding: OUTER_GAPS + dunst.max-icon-size: DPI + dunst.frame-width: BORDER_SIZE + dunst.low-background: BACKGROUND + dunst.low-foreground: FOREGROUND + dunst.low-frame: GREEN1 + dunst.normal-background: BACKGROUND + dunst.normal-foreground: FOREGROUND + dunst.normal-frame: GREEN1 + dunst.critical-background: RED1 + dunst.critical-foreground: FOREGROUND + dunst.critical-frame: GREEN1 +#+end_src + +**** Display Scaling + +#+begin_src conf :tangle .Xresources + ! Display Scaling + ,*.dpi: DPI + Xcursor.size: CURSOR_SIZE +#+end_src + +* Miscellaneous Scripts + +** Media Control + +#+begin_src shell :shebang #!/bin/bash :tangle .scripts/playerctl.sh + help_menu() { + echo "Script to interact with playerctl. Use only one argument at a time." + echo " - Play / Pause: playerctl.sh --play-pause" + echo " - Next: playerctl.sh --next" + echo " - Previous: playerctl.sh --prev" + echo " - Change Player: playerctl.sh --change" + echo " - Rofi Menu: playerctl.sh --rofi" + echo " - Help: playerctl.sh --help OR playerctl.sh -h" + } + + rofi_menu() { + declare -a options=( + "懶 Play / Pause - play-pause" + "怜 Next - next" + "玲 Previous - prev" + "﴾ Change Source - change" + " Back - back" + " Quit - quit" + ) + + choice=$(printf '%s\n' "${options[@]}" | rofi -dmenu -i) + option=$(printf '%s\n' "${choice}" | awk '{print $NF}') + + if [[ "$option" == "quit" ]]; then + kilall rofi + elif [[ "$option" != "back" ]]; then + main "--$option" && main "--rofi" + fi + } + + main() { + if [ $# -eq 0 ]; then + # No arguments + help_menu + else + case $1 in + --help | -h) + help_menu + ;; + --play-pause) + playerctl --player=playerctld play-pause + ;; + --next) + playerctl --player=playerctld next + ;; + --prev) + playerctl --player=playerctld previous + ;; + --change) + playerctld shift + ;; + --rofi) + rofi_menu + ;; + esac + fi + } + + main $@ +#+end_src + +** Volume Control + +#+begin_src shell :shebang #!/bin/bash :tangle .scripts/pactl.sh + help_menu() { + echo "Script to interact with pactl. Use only one argument at a time." + # echo " - Play / Pause: playerctl.sh --play-pause" + # echo " - Next: playerctl.sh --next" + # echo " - Previous: playerctl.sh --prev" + # echo " - Change Player: playerctl.sh --change" + # echo " - Rofi Menu: playerctl.sh --rofi" + # echo " - Help: playerctl.sh --help OR playerctl.sh -h" + } + + rofi_menu() { + declare -a options=( + " Raise Volume - raise" + " Lower Volume - lower" + " Mute - mute" + "﴾ Mixer - mixer" + " Back - back" + " Quit - quit" + ) + + choice=$(printf '%s\n' "${options[@]}" | rofi -dmenu -i) + option=$(printf '%s\n' "${choice}" | awk '{print $NF}') + + if [[ "$option" == "quit" ]]; then + kilall rofi + elif [[ "$option" != "back" ]]; then + main "--$option" && main "--rofi" + fi + } + + main() { + if [ $# -eq 0 ]; then + # No arguments + help_menu + else + case $1 in + --help | -h) + help_menu + ;; + --raise) + pactl set-sink-volume @DEFAULT_SINK@ +5% + ;; + --lower) + pactl set-sink-volume @DEFAULT_SINK@ -5% + ;; + --mute) + pactl set-sink-mute @DEFAULT_SINK@ toggle + ;; + --mixer) + pavucontrol + ;; + --rofi) + rofi_menu + ;; + esac + fi + } + + main $@ +#+end_src + +** Trackpad Control + +#+begin_src shell :shebang #!/bin/bash :tangle .scripts/trackpad.sh + trackpad_id=13 + + if xinput list-props $trackpad_id | grep "Device Enabled (.*):.*1" >/dev/null + then + xinput disable $trackpad_id + notify-send -u low -i mouse "Trackpad disabled" + else + xinput enable $trackpad_id + notify-send -u low -i mouse "Trackpad enabled" + fi +#+end_src + +** System76 Power Control + +#+begin_src shell :shebang #!/bin/bash :tangle .scripts/system76-power.sh + help_menu() { + echo "Script to interact with system76-power. Use only one argument at a time." + # echo " - Play / Pause: playerctl.sh --play-pause" + # echo " - Next: playerctl.sh --next" + # echo " - Previous: playerctl.sh --prev" + # echo " - Change Player: playerctl.sh --change" + # echo " - Rofi Menu: playerctl.sh --rofi" + # echo " - Help: playerctl.sh --help OR playerctl.sh -h" + } + + rofi_menu() { + declare -a options=( + " Switchable Graphics - rofi-graphics" + " Performance Profile - rofi-profile" + " Back - back" + " Quit - quit" + ) + + choice=$(printf '%s\n' "${options[@]}" | rofi -dmenu -i) + option=$(printf '%s\n' "${choice}" | awk '{print $NF}') + + if [[ "$option" == "quit" ]]; then + kilall rofi + elif [[ "$option" != "back" ]]; then + main "--$option" && main "--rofi" + fi + } + + rofi_graphics_menu() { + declare -a options=( + "Query Current Graphics - graphics-query" + "Switch to Compute Mode - graphics-compute" + "Switch to Hybrid Mode - graphics-hybrid" + "Switch to Integrated Mode - graphics-integrated" + "Switch to Nvidia Mode - graphics-nvidia" + " Back - back" + " Quit - quit" + ) + + choice=$(printf '%s\n' "${options[@]}" | rofi -dmenu -i) + option=$(printf '%s\n' "${choice}" | awk '{print $NF}') + + if [[ "$option" == "quit" ]]; then + kilall rofi + elif [[ "$option" != "back" ]]; then + main "--$option" && main "--rofi-graphics" + fi + } + + rofi_profile_menu() { + declare -a options=( + "Query Current Profile - profile-query" + "Switch to Battery Mode - profile-battery" + "Switch to Balanced Mode - profile-balanced" + "Switch to Performance Mode - profile-performance" + " Back - back" + " Quit - quit" + ) + + choice=$(printf '%s\n' "${options[@]}" | rofi -dmenu -i) + option=$(printf '%s\n' "${choice}" | awk '{print $NF}') + + if [[ "$option" == "quit" ]]; then + kilall rofi + elif [[ "$option" != "back" ]]; then + main "--$option" && main "--rofi-profile" + fi + } + + main() { + if [ $# -eq 0 ]; then + # No arguments + help_menu + else + case $1 in + --help | -h) + help_menu + ;; + --rofi-graphics) + rofi_graphics_menu + ;; + --graphics-query) + current_graphics=$(pkexec system76-power graphics) + notify-send "System76-Power Graphics" "$current_graphics" + ;; + --graphics-compute) + notify-send "System76-Power Graphics" "Switching to Compute Graphics..." + pkexec system76-power graphics compute + notify-send -u critical -t 0 "System76-Power Graphics" "Please restart computer to switch graphics" + ;; + --graphics-hybrid) + notify-send "System76-Power Graphics" "Switching to Hybrid Graphics..." + pkexec system76-power graphics hybrid + notify-send -u critical -t 0 "System76-Power Graphics" "Please restart computer to switch graphics" + ;; + --graphics-integrated) + notify-send "System76-Power Graphics" "Switching to Integrated Graphics..." + pkexec system76-power graphics integrated + notify-send -u critical -t 0 "System76-Power Graphics" "Please restart computer to switch graphics" + ;; + --graphics-nvidia) + notify-send "System76-Power Graphics" "Switching to Nvidia Graphics..." + pkexec system76-power graphics nvidia + notify-send -u critical -t 0 "System76-Power Graphics" "Please restart computer to switch graphics" + ;; + --rofi-profile) + rofi_profile_menu + ;; + --profile-query) + current_profile=$(pkexec system76-power profile) + notify-send "System76-Power Profile" "$current_profile" + ;; + --profile-battery) + pkexec system76-power profile battery + notify-send "System76-Power Profile" "Switched to Battery Profile" + ;; + --profile-balanced) + pkexec system76-power profile balanced + notify-send "System76-Power Profile" "Switched to Balanced Profile" + ;; + --profile-performance) + pkexec system76-power profile performance + notify-send "System76-Power Profile" "Switched to Performance Profile" + ;; + --rofi) + rofi_menu + ;; + esac + fi + } + + main $@ +#+end_src + +** Session Control + +#+begin_src shell :shebang #!/bin/bash :tangle .scripts/session.sh + help_menu() { + echo "Script to interact with desktop session. Use only one argument at a time." + # echo " - Play / Pause: playerctl.sh --play-pause" + # echo " - Next: playerctl.sh --next" + # echo " - Previous: playerctl.sh --prev" + # echo " - Change Player: playerctl.sh --change" + # echo " - Rofi Menu: playerctl.sh --rofi" + # echo " - Help: playerctl.sh --help OR playerctl.sh -h" + } + + rofi_menu() { + declare -a options=( + "勒 Restart Dwm - restart" + " Logout - logout" + " Lock - lock" + "⏾ Sleep - sleep" + " Reboot - reboot" + " Shutdown - shutdown" + "鈴 Hibernate - hibernate" + " Back - back" + " Quit - quit" + ) + + choice=$(printf '%s\n' "${options[@]}" | rofi -dmenu -i) + option=$(printf '%s\n' "${choice}" | awk '{print $NF}') + + if [[ "$option" == "quit" ]]; then + kilall rofi + elif [[ "$option" != "back" ]]; then + main "--$option" && killall rofi + fi + } + + main() { + if [ $# -eq 0 ]; then + # No arguments + help_menu + else + case $1 in + --help | -h) + help_menu + ;; + --logout) + notify-send "Session Control" "Logging Out of Dwm" + xdotool key Super+Shift_L+q + ;; + --lock) + notify-send "Session Control" "Locking Session" + loginctl lock-session + ;; + --sleep) + notify-send "Session Control" "Going to Sleep" + systemctl suspend + ;; + --reboot) + notify-send "Session Control" "Rebooting System" + reboot + ;; + --shutdown) + notify-send "Session Control" "Shutting Down System" + shutdown now + ;; + --hibernate) + notify-send "Session Control" "Hibernating System" + systemctl hibernate + ;; + --restart) + notify-send "Session Control" "Restarting Dwm" + xdotool key Super+Control_L+Shift_L+q + ;; + --rofi) + rofi_menu + ;; + esac + fi + } + + main $@ +#+end_src + +** Startup + +#+begin_src shell :shebang #!/bin/bash :tangle .scripts/startup.sh + declare -a startup_array=(\ + # Background Processes + "bash /home/sravan/.scripts/deadd.sh --on" \ # Deadd Notification Center + "bash /home/sravan/.scripts/picom.sh --on" \ # Picom Compositor + "/usr/bin/greenclip daemon" \ # Greenclip Clipboard Manager + "/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1" \ # GNOME Polkit Authentication Agent + "/usr/bin/xss-lock -l -- betterlockscreen --lock" \ # Session Lock Utility + "/usr/lib/kdeconnectd --replace" \ # KDE Connect Daemon + "/usr/bin/redshift -x" \ # Redshift Blue Light Filter + ) + + declare -a kill_startup_array=(\ + # Background Processes + "killall deadd-notificat" \ # Deadd Notification Center + "killall picom" \ # Picom Compositor + "killall greenclip" \ # Greenclip Clipboard Manager + "killall polkit" \ # GNOME Polkit Authentication Agent + "killall xss-lock" \ # Session Lock Utility + "killall kdeconnectd" \ # KDE Connect Daemon + "killall redshift" \ # Redshift Blue Light Filter + ) + + declare -a delay_array=(\ + # System Tray Applications + "/usr/bin/redshift-gtk" \ # Redshift Blue Light Filter + "/usr/bin/blueman-applet" \ # Blueman Bluetooth Manager + "/usr/bin/nm-applet" \ # Network Manager Applet + "/usr/bin/kdeconnect-indicator" \ # KDE Connect Indicator + "/usr/bin/flameshot" \ # Flameshot Screenshot Tool + "/usr/bin/xfce4-power-manager" \ # XFCE4 Power Manager + "/usr/bin/volctl" \ # PulseAudio Volume Control + "/usr/bin/nyrna" \ # Nyrna + # System Restore Processes + "/usr/bin/autorandr --change --force" \ # Auto restore screen layout + "/usr/bin/numlockx on" \ # Enable numlock + ) + + declare -a kill_delay_array=(\ + # System Tray Applications + "killall redshift" \ # Redshift Blue Light Filter + "killall blueman-applet" \ # Blueman Bluetooth Manager + "killall nm-applet" \ # Network Manager Applet + "killall kdeconnect-indicator" \ # KDE Connect Indicator + "killall flameshot" \ # Flameshot Screenshot Tool + "killall xfce4-power-manager" \ # XFCE4 Power Manager + "killall volctl" \ # PulseAudio Volume Control + "killall nyrna" \ # Nyrna + ) + + + help_menu() { + echo "Main script to launch and kill startup processes. Use only one argument at a time." + # echo " - Play / Pause: playerctl.sh --play-pause" + # echo " - Next: playerctl.sh --next" + # echo " - Previous: playerctl.sh --prev" + # echo " - Change Player: playerctl.sh --change" + # echo " - Rofi Menu: playerctl.sh --rofi" + # echo " - Help: playerctl.sh --help OR playerctl.sh -h" + } + + rofi_menu() { + declare -a options=( + " Launch Startup Processes - startup" + "羽 Launch Delayed Processes - delay" + " Kill Startup Processes - kill-startup" + " Kill Delayed Processes - kill-delay" + " Back - back" + " Quit - quit" + ) + + choice=$(printf '%s\n' "${options[@]}" | rofi -dmenu -i) + option=$(printf '%s\n' "${choice}" | awk '{print $NF}') + + if [[ "$option" == "quit" ]]; then + kilall rofi + elif [[ "$option" != "back" ]]; then + main "--$option" && main "--rofi" + fi + } + + main() { + if [ $# -eq 0 ]; then + # No arguments + help_menu + else + case $1 in + --help | -h) + help_menu + ;; + --startup) + for i in "${startup_array[@]}" + do + if ! command -v $i > /dev/null + then + do_nothing() { :; } + else + $i & + fi + done + ;; + --delay) + for i in "${delay_array[@]}" + do + if ! command -v $i > /dev/null + then + do_nothing() { :; } + else + $i & + fi + done + ;; + --kill-startup) + for i in "${kill_startup_array[@]}" + do + if ! command -v $i > /dev/null + then + do_nothing() { :; } + else + $i & + fi + done + ;; + --kill-delay) + for i in "${kill_delay_array[@]}" + do + if ! command -v $i > /dev/null + then + do_nothing() { :; } + else + $i & + fi + done + ;; + --rofi) + rofi_menu + ;; + esac + fi + } + + main $@ +#+end_src + +** Gaming + +These are scripts that should be run from Lutris when launching or exiting a game. + +*** Pre-Launch Script + +*Preferences > System options > Pre-launch script* + +#+begin_src shell :shebang #!/bin/bash :tangle .scripts/game_launch.sh + /home/sravan/.scripts/deadd.sh --pause +#+end_src + +*** Post-Exit Script + +*Preferences > System options > Post-exit script* + +#+begin_src shell :shebang #!/bin/bash :tangle .scripts/game_exit.sh + /home/sravan/.scripts/deadd.sh --unpause +#+end_src + +** Control Center + +#+begin_src shell :shebang #!/bin/bash :tangle .scripts/control-center.sh + help_menu() { + echo "Main script to launch sub-menu scripts. Use only one argument at a time." + # echo " - Play / Pause: playerctl.sh --play-pause" + # echo " - Next: playerctl.sh --next" + # echo " - Previous: playerctl.sh --prev" + # echo " - Change Player: playerctl.sh --change" + # echo " - Rofi Menu: playerctl.sh --rofi" + # echo " - Help: playerctl.sh --help OR playerctl.sh -h" + } + + rofi_menu() { + declare -a options=( + " Compositor - picom" + " Notifications - deadd" + " Media - playerctl" + "墳Volume - pactl" + " Startup Processes - startup" + " Hardware - system76-power" + " Power Menu - session" + " Back - back" + " Quit - quit" + ) + + choice=$(printf '%s\n' "${options[@]}" | rofi -dmenu -i) + option=$(printf '%s\n' "${choice}" | awk '{print $NF}') + + if [[ "$option" == "quit" ]]; then + kilall rofi + elif [[ "$option" != "back" ]]; then + main "--$option" && main "--rofi" + fi + } + + main() { + if [ $# -eq 0 ]; then + # No arguments + help_menu + else + case $1 in + --help | -h) + help_menu + ;; + --picom) + /home/sravan/.scripts/picom.sh --rofi + ;; + --deadd) + /home/sravan/.scripts/deadd.sh --rofi + ;; + --playerctl) + /home/sravan/.scripts/playerctl.sh --rofi + ;; + --pactl) + /home/sravan/.scripts/pactl.sh --rofi + ;; + --startup) + /home/sravan/.scripts/startup.sh --rofi + ;; + --system76-power) + /home/sravan/.scripts/system76-power.sh --rofi + ;; + --session) + /home/sravan/.scripts/session.sh --rofi + ;; + --rofi) + rofi_menu + ;; + esac + fi + } + + main $@ +#+end_src + +* Acknowledgements + +I followed [[https://www.youtube.com/channel/UCVls1GmFKf6WlTraIb_IaJg][DistroTube]]'s process for setting up a git bare repository as shown in [[https://youtu.be/tBoLDpTWVOM][Git Bare Repository - A Better Way To Manage Dotfiles]]. +He references [[https://www.atlassian.com/git/tutorials/dotfiles][The best way to store your dotfiles: A bare Git repository]] by [[https://www.durdn.com/][Nicola Paolucci]].