diff --git a/.Xresources b/.Xresources index bad5b0d..e659733 100644 --- a/.Xresources +++ b/.Xresources @@ -39,3 +39,35 @@ *.color7: WHITE2 *.color15: WHITE1 *.color16: ORANGE + +! 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 + +! Dunst +dunst.geometry-x: OUTER_GAPS +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: PURPLE1 +dunst.normal-background: BACKGROUND +dunst.normal-foreground: FOREGROUND +dunst.normal-frame: PURPLE1 +dunst.critical-background: RED1 +dunst.critical-foreground: FOREGROUND +dunst.critical-frame: PURPLE1 + +! Display Scaling +*.dpi: DPI diff --git a/.config/MangoHud/MangoHud.conf b/.config/MangoHud/MangoHud.conf index 2af54b1..24c2c0b 100644 --- a/.config/MangoHud/MangoHud.conf +++ b/.config/MangoHud/MangoHud.conf @@ -1,7 +1,3 @@ -################### File Generated by GOverlay ################### - - - cpu_stats cpu_temp cpu_color=2e97cb 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 index 58fbdca..64d1285 100644 --- a/.config/conky/conky.conf +++ b/.config/conky/conky.conf @@ -154,5 +154,4 @@ ${font Montserrat Light:size=9}${color1}${top_mem name 10} ${color}${font} ${got # ${font Montserrat Light:size=10}${color1}${alignr}by: Mo Abdrabou${color}${font} - ]]; diff --git a/.config/emacs b/.config/emacs index cc53769..5505fbd 160000 --- a/.config/emacs +++ b/.config/emacs @@ -1 +1 @@ -Subproject commit cc53769619e38efd9608ab70a060452e937d7041 +Subproject commit 5505fbd6a6e66b7829fe1aec46cca0ff7930cf82 diff --git a/.config/fish/config.fish b/.config/fish/config.fish index da2abd2..4ae6abc 100644 --- a/.config/fish/config.fish +++ b/.config/fish/config.fish @@ -1,20 +1,11 @@ -############ -# GREETING # -############ function fish_greeting clear neofetch 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 @@ -50,9 +41,6 @@ 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' @@ -76,8 +64,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/kitty.conf b/.config/kitty/kitty.conf index a2d05cc..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 @@ -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 diff --git a/.config/neofetch/config.conf b/.config/neofetch/config.conf index 250ac0b..2f88744 100644 --- a/.config/neofetch/config.conf +++ b/.config/neofetch/config.conf @@ -12,14 +12,14 @@ print_info() { info "Shell" shell # info "Resolution" resolution # info "DE" de - # info "WM" wm + 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 "CPU" cpu + info "GPU" gpu # info "GPU Driver" gpu_driver # Linux/macOS only info "CPU Usage" cpu_usage info "Memory" memory @@ -35,9 +35,6 @@ print_info() { 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 new file mode 100644 index 0000000..70cab8f --- /dev/null +++ b/.config/picom/picom.conf @@ -0,0 +1,502 @@ +# 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; + +# 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 = 'code-oss'", + #"class_g = 'TelegramDesktop'", + # "class_g = 'firefox'", + # "class_g = 'Thunderbird'" +]; +round-borders = 1; +round-borders-exclude = [ + #"class_g = 'TelegramDesktop'", +]; + +# 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 + +# 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 + +# 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'" +]; + +# 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 = 'slop'", + "_GTK_FRAME_EXTENTS@:c" +]; + +# 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 + +# 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 = 0.75; 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; } +}; diff --git a/.config/picom/toggle_picom.sh b/.config/picom/toggle_picom.sh new file mode 100755 index 0000000..41743f5 --- /dev/null +++ b/.config/picom/toggle_picom.sh @@ -0,0 +1,67 @@ +#!/bin/bash +#!/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/rofi/config.rasi b/.config/rofi/config.rasi new file mode 100644 index 0000000..016857b --- /dev/null +++ b/.config/rofi/config.rasi @@ -0,0 +1,152 @@ +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,Shift+BackSpace,Control+h";*/ +/* kb-remove-to-eol: "Control+k";*/ +/* kb-remove-to-sol: "Control+u";*/ +/* kb-accept-entry: "Control+j,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-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-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";*/ +} + +@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..c7c85e9 --- /dev/null +++ b/.config/rofi/themes/centertab-dracula.rasi @@ -0,0 +1,138 @@ +/** + * 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: #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: center; + anchor: center; + height: 75%; + width: 75%; + 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; +} diff --git a/.config/rofi/themes/dmenu-dracula.rasi b/.config/rofi/themes/dmenu-dracula.rasi new file mode 100644 index 0000000..00f1d8a --- /dev/null +++ b/.config/rofi/themes/dmenu-dracula.rasi @@ -0,0 +1,43 @@ +/** + * 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; +} diff --git a/.config/rofi/themes/dracula-blurry-full.rasi b/.config/rofi/themes/dracula-blurry-full.rasi new file mode 100644 index 0000000..aca75ca --- /dev/null +++ b/.config/rofi/themes/dracula-blurry-full.rasi @@ -0,0 +1,138 @@ +/* + * + * 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; +} diff --git a/.config/rofi/themes/dracula.rasi b/.config/rofi/themes/dracula.rasi new file mode 100644 index 0000000..e2eb674 --- /dev/null +++ b/.config/rofi/themes/dracula.rasi @@ -0,0 +1,122 @@ +/*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; +} diff --git a/.config/rofi/themes/sidetab-dracula.rasi b/.config/rofi/themes/sidetab-dracula.rasi new file mode 100644 index 0000000..cb39c60 --- /dev/null +++ b/.config/rofi/themes/sidetab-dracula.rasi @@ -0,0 +1,137 @@ +/** + * 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; +} diff --git a/.config/rofi/themes/slate-dracula.rasi b/.config/rofi/themes/slate-dracula.rasi new file mode 100644 index 0000000..d380a67 --- /dev/null +++ b/.config/rofi/themes/slate-dracula.rasi @@ -0,0 +1,51 @@ +/** + * 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; +} diff --git a/.config/starship.toml b/.config/starship.toml index d76285e..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 diff --git a/.gitconfig b/.gitconfig index f4b6a71..96ad173 100644 --- a/.gitconfig +++ b/.gitconfig @@ -1,13 +1,13 @@ # 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 = true + rebase = true [alias] # List available aliases aliases = !git config --get-regexp alias | sed -re 's/alias\\.(\\S*)\\s(.*)$/\\1 = \\2/g' 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/.vimrc b/.vimrc index c887221..cad1ca8 100644 --- a/.vimrc +++ b/.vimrc @@ -1,5 +1,3 @@ -" Sravan's Vimrc - " Don't try to be vi compatible set nocompatible diff --git a/.xinitrc b/.xinitrc old mode 100644 new mode 100755 index 23281ee..8925fe8 --- a/.xinitrc +++ b/.xinitrc @@ -1,19 +1,11 @@ #!/bin/sh -# -# ~/.xinitrc -# -# Executed by startx (run your window manager from here) -userresources=$HOME/.Xresources -usermodmap=$HOME/.Xmodmap -sysresources=/etc/X11/xinit/.Xresources -sysmodmap=/etc/X11/xinit/.Xmodmap +export TERM=xterm-256color # Sets the terminal type +export SHELL=/usr/bin/fish # Preferred shell +export EDITOR="emacs -nw" # Default editor +export BROWSER=vivaldi-stable # Web Browser +export XDG_CONFIG_HOME=$HOME/.config # Set Config directory +export QT_QPA_PLATFORMTHEME=qt5ct # QGtkStyle -if [ -d /etc/X11/xinit/xinitrc.d ] ; then - for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do - [ -x "$f" ] && . "$f" - done - unset f -fi +xrdb ~/.Xresources -export DESKTOP_SESSION=plasma -exec startplasma-x11 +exec xmonad diff --git a/.xmonad b/.xmonad index b1ec8b9..1bb3509 160000 --- a/.xmonad +++ b/.xmonad @@ -1 +1 @@ -Subproject commit b1ec8b9e6be70058c42793d8059bee33b0677f34 +Subproject commit 1bb350973637d6b4706efd02ccaed084c2eac4ec diff --git a/.zshrc b/.zshrc index c9abe39..13ba1eb 100644 --- a/.zshrc +++ b/.zshrc @@ -185,6 +185,5 @@ alias tb='nc termbin.com 9999' # 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 paleofetch -paleofetch +## Run neofetch +neofetch diff --git a/README.org b/README.org index 3267639..ffbc764 100644 --- a/README.org +++ b/README.org @@ -1,5 +1,6 @@ #+title: Personal Dotfiles #+author: Sravan Balaji +#+auto_tangle: t * Installation @@ -69,6 +70,5598 @@ Pull and update submodules config git submodule update --init --recursive #+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] + # VSCode + editor = code --wait + # 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 + # Use VSCode as default diff tool when running `git diff-tool` + tool = vscode + [difftool "vscode"] + cmd = code --wait --diff $LOCAL $REMOTE + [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 -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 + +*** Launch Script + +#+begin_src shell :shebang #!/bin/bash :tangle .config/dunst/launch_dunst.sh + #!/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" +#+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,Shift+BackSpace,Control+h";*/ + /* kb-remove-to-eol: "Control+k";*/ + /* kb-remove-to-sol: "Control+u";*/ + /* kb-accept-entry: "Control+j,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-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-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: #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: center; + anchor: center; + height: 75%; + width: 75%; + 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 + +**** 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 Effects + +** 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 = '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 = 'slop'", + "_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 + + # 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 = 0.75; 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 + +**** Toggle Script + +#+begin_src shell :shebang #!/bin/bash :tangle .config/picom/toggle_picom.sh + #!/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 $@ +#+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 + +* 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="code -w" + export TERM=xterm-256color + export QT_STYLE_OVERRIDE=kvantum + export XDG_CONFIG_HOME=$HOME/.config + + # Set fish as interactive shell only + exec fish +#+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' + + ## Run neofetch + neofetch +#+end_src + +*** Fish + +**** Greeting + +#+begin_src fish :tangle .config/fish/config.fish + function fish_greeting + clear + neofetch + 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" + + # ssh fix for kitty terminal + alias ssh="kitty +kitten ssh" +#+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 + +* 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 + cpu_stats + cpu_temp + cpu_color=2e97cb + cpu_text=CPU + gpu_stats + gpu_temp + gpu_core_clock + gpu_mem_clock + vulkan_driver + gpu_name + gpu_color=2e9762 + gpu_text=GPU + vram + vram_color=ad64c1 + ram + ram_color=c26693 + io_color=a491d3 + frame_timing=1 + frametime_color=00ff00 + 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_file=/home/sravan/mangohud_log_ + media_player_name=spotify +#+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 -nw" # Default editor + export BROWSER=vivaldi-stable # Web Browser + export XDG_CONFIG_HOME=$HOME/.config # Set Config directory + export QT_QPA_PLATFORMTHEME=qt5ct # QGtkStyle +#+end_src + +*** Load Xresources + +#+begin_src shell :shebang #!/bin/sh :tangle .xinitrc + xrdb ~/.Xresources +#+end_src + +*** Launch Environment + +#+begin_src shell :shebang #!/bin/sh :tangle .xinitrc + exec xmonad +#+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 + +#+begin_src conf :tangle .Xresources + ! 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 +#+end_src + +*NOT IN USE* +#+begin_src conf :tangle no + ! 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 +#+end_src + +*** Application Specific Changes + +**** dwm + +*NOT IN USE* +#+begin_src conf :tangle no + ! DWM + dwm.normbgcolor: BACKGROUND + dwm.normbordercolor: BLACK2 + dwm.normfgcolor: FOREGROUND + dwm.selfgcolor: BACKGROUND + dwm.selbordercolor: PURPLE1 + dwm.selbgcolor: PURPLE1 + dwm.borderpx: BORDER_SIZE + dwm.gappih: INNER_GAPS + dwm.gappiv: INNER_GAPS + dwm.gappoh: OUTER_GAPS + dwm.gappov: OUTER_GAPS +#+end_src + +**** Polybar + +*NOT IN USE* +#+begin_src conf :tangle no + ! 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: OUTER_GAPS + 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: PURPLE1 + dunst.normal-background: BACKGROUND + dunst.normal-foreground: FOREGROUND + dunst.normal-frame: PURPLE1 + dunst.critical-background: RED1 + dunst.critical-foreground: FOREGROUND + dunst.critical-frame: PURPLE1 +#+end_src + +**** Display Scaling + +#+begin_src conf :tangle .Xresources + ! Display Scaling + ,*.dpi: DPI +#+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]].