#+title: Personal Dotfiles #+author: Sravan Balaji #+auto_tangle: t * Installation See [[*Acknowledgements]] for tutorial source. Prior to the installation, create alias for config #+begin_src shell alias config="GIT_WORK_TREE=~ GIT_DIR=~/.cfg" #+end_src Add ~.cfg~ to ~.gitignore~ #+begin_src shell echo ".cfg" >> .gitignore #+end_src Clone dotfiles into a bare repository #+begin_src shell git clone --bare $HOME/.cfg #+end_src Define the alias in the current shell scope #+begin_src shell alias config="GIT_WORK_TREE=~ GIT_DIR=~/.cfg" #+end_src Checkout content from bare repository to ~$HOME~ #+begin_src shell config git checkout #+end_src Step above might fail with a message like: #+begin_example error: The following untracked working tree files would be overwritten by checkout: .bashrc .gitignore Please move or remove them before you can switch branches. Aborting #+end_example Delete the untracked files so they can be overwritten with the version from dotfiles #+begin_src shell rm ~/.bashrc ~/.gitignore #+end_src Re-run checkout #+begin_src shell config git checkout #+end_src Set the flag ~showUntrackedFiles~ to ~no~ on this specific (local) repo #+begin_src shell config git config --local status.showUntrackedFiles no #+end_src Pull and update submodules #+begin_src shell config git submodule update --init --recursive #+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]]. He references [[https://www.atlassian.com/git/tutorials/dotfiles][The best way to store your dotfiles: A bare Git repository]] by [[https://www.durdn.com/][Nicola Paolucci]].