commit 37393d023aa21ab9131798bcbf31869bcc3bcc29 Author: Ted Pier Date: Fri Aug 1 16:24:26 2025 -0700 Initial commit diff --git a/.bashrc b/.bashrc new file mode 100644 index 0000000..110285f --- /dev/null +++ b/.bashrc @@ -0,0 +1,43 @@ +# +# ~/.bashrc +# + +# If not running interactively, don't do anything +[[ $- != *i* ]] && return + +alias mkdir="mkdir -p" +alias cp="cp -r" +alias rm="rm -rf" +alias ls="ls -a --color" +alias bat="bat -f" +alias grep="grep --color=auto" +alias shutdown="shutdown now" +alias l="ls" +alias nvim="hx" +alias vim="hx" +alias vi="hx" +alias nano="hx" + +alias q="hyprland" +alias reload="source ~/.bashrc" +alias update="paru -Syu --noconfirm && flatpak update --noninteractive" +alias paru="paru --bottomup --assume-installed ttf-font" +alias lah='ls -lah' +alias fd='fd -H' + +clear +tfetch + +PS1='\n[ \e[35;1m\u \e[34m\w\e[0m ]\n\e[1m\$ \e[0m' +complete -cf sudo + +export GDK_SCALE=1 +export EDITOR=helix +export VISUAL=helix +export INPUTRC=~/.inputrc + +eval "$(starship init bash)" +eval "$(fzf --bash)" +eval "$(zoxide init --cmd cd bash)" + +bind 'set mark-symlinked-directories on' diff --git a/.config/btop/btop.conf b/.config/btop/btop.conf new file mode 100644 index 0000000..d3ebef9 --- /dev/null +++ b/.config/btop/btop.conf @@ -0,0 +1,254 @@ +#? Config file for btop v. 1.4.4 + +#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes. +#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes" +color_theme = "/usr/share/btop/themes/matcha-dark-sea.theme" + +#* If the theme set background should be shown, set to False if you want terminal background transparency. +theme_background = False + +#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false. +truecolor = True + +#* Set to true to force tty mode regardless if a real tty has been detected or not. +#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols. +force_tty = False + +#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets. +#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box. +#* Use whitespace " " as separator between different presets. +#* Example: "cpu:0:default,mem:0:tty,proc:1:default cpu:0:braille,proc:0:tty" +presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty" + +#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists. +#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift. +vim_keys = False + +#* Rounded corners on boxes, is ignored if TTY mode is ON. +rounded_corners = True + +#* Default symbols to use for graph creation, "braille", "block" or "tty". +#* "braille" offers the highest resolution but might not be included in all fonts. +#* "block" has half the resolution of braille but uses more common characters. +#* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY. +#* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view. +graph_symbol = "braille" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_cpu = "default" + +# Graph symbol to use for graphs in gpu box, "default", "braille", "block" or "tty". +graph_symbol_gpu = "default" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_mem = "default" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_net = "default" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_proc = "default" + +#* Manually set which boxes to show. Available values are "cpu mem net proc" and "gpu0" through "gpu5", separate values with whitespace. +shown_boxes = "cpu mem net proc" + +#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs. +update_ms = 100 + +#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct", +#* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly. +proc_sorting = "memory" + +#* Reverse sorting order, True or False. +proc_reversed = False + +#* Show processes as a tree. +proc_tree = True + +#* Use the cpu graph colors in the process list. +proc_colors = True + +#* Use a darkening gradient in the process list. +proc_gradient = True + +#* If process cpu usage should be of the core it's running on or usage of the total available cpu power. +proc_per_core = False + +#* Show process memory as bytes instead of percent. +proc_mem_bytes = True + +#* Show cpu graph for each process. +proc_cpu_graphs = True + +#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate) +proc_info_smaps = False + +#* Show proc box on left side of screen instead of right. +proc_left = False + +#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop). +proc_filter_kernel = False + +#* In tree-view, always accumulate child process resources in the parent process. +proc_aggregate = False + +#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available. +#* Select from a list of detected attributes from the options menu. +cpu_graph_upper = "Auto" + +#* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available. +#* Select from a list of detected attributes from the options menu. +cpu_graph_lower = "Auto" + +#* If gpu info should be shown in the cpu box. Available values = "Auto", "On" and "Off". +show_gpu_info = "Auto" + +#* Toggles if the lower CPU graph should be inverted. +cpu_invert_lower = True + +#* Set to True to completely disable the lower CPU graph. +cpu_single_graph = False + +#* Show cpu box at bottom of screen instead of top. +cpu_bottom = False + +#* Shows the system uptime in the CPU box. +show_uptime = True + +#* Show cpu temperature. +check_temp = True + +#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors. +cpu_sensor = "Auto" + +#* Show temperatures for cpu cores also if check_temp is True and sensors has been found. +show_coretemp = True + +#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core. +#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine. +#* Format "x:y" x=core with wrong temp, y=core with correct temp, use space as separator between multiple entries. +#* Example: "4:0 5:1 6:3" +cpu_core_map = "" + +#* Which temperature scale to use, available values: "celsius", "fahrenheit", "kelvin" and "rankine". +temp_scale = "celsius" + +#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024. +base_10_sizes = False + +#* Show CPU frequency. +show_cpu_freq = True + +#* Draw a clock at top of screen, formatting according to strftime, empty string to disable. +#* Special formatting: /host = hostname | /user = username | /uptime = system uptime +clock_format = "%X" + +#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort. +background_update = True + +#* Custom cpu model name, empty string to disable. +custom_cpu_name = "" + +#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ". +#* Only disks matching the filter will be shown. Prepend exclude= to only show disks not matching the filter. Examples: disk_filter="/boot /home/user", disks_filter="exclude=/boot /home/user" +disks_filter = "" + +#* Show graphs instead of meters for memory values. +mem_graphs = True + +#* Show mem box below net box instead of above. +mem_below_net = False + +#* Count ZFS ARC in cached and available memory. +zfs_arc_cached = True + +#* If swap memory should be shown in memory box. +show_swap = True + +#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk. +swap_disk = True + +#* If mem box should be split to also show disks info. +show_disks = True + +#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar. +only_physical = True + +#* Read disks list from /etc/fstab. This also disables only_physical. +use_fstab = True + +#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool) +zfs_hide_datasets = False + +#* Set to true to show available disk space for privileged users. +disk_free_priv = False + +#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view. +show_io_stat = True + +#* Toggles io mode for disks, showing big graphs for disk read/write speeds. +io_mode = False + +#* Set to True to show combined read/write io graphs in io mode. +io_graph_combined = False + +#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ". +#* Example: "/mnt/media:100 /:20 /boot:1". +io_graph_speeds = "" + +#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False. +net_download = 100 + +net_upload = 100 + +#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest. +net_auto = True + +#* Sync the auto scaling for download and upload to whichever currently has the highest scale. +net_sync = True + +#* Starts with the Network Interface specified here. +net_iface = "" + +#* "True" shows bitrates in base 10 (Kbps, Mbps). "False" shows bitrates in binary sizes (Kibps, Mibps, etc.). "Auto" uses base_10_sizes. +base_10_bitrate = "Auto" + +#* Show battery stats in top right if battery is present. +show_battery = True + +#* Which battery to use if multiple are present. "Auto" for auto detection. +selected_battery = "Auto" + +#* Show power stats of battery next to charge indicator. +show_battery_watts = True + +#* Set loglevel for "~/.config/btop/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG". +#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info. +log_level = "WARNING" + +#* Measure PCIe throughput on NVIDIA cards, may impact performance on certain cards. +nvml_measure_pcie_speeds = False + +#* Measure PCIe throughput on AMD cards, may impact performance on certain cards. +rsmi_measure_pcie_speeds = True + +#* Horizontally mirror the GPU graph. +gpu_mirror_graph = True + +#* Custom gpu0 model name, empty string to disable. +custom_gpu_name0 = "NVIDIA GeForce RTX 3050 6GB Laptop GPU" + +#* Custom gpu1 model name, empty string to disable. +custom_gpu_name1 = "Intel Raptor Lake-P (UHD Graphics)" + +#* Custom gpu2 model name, empty string to disable. +custom_gpu_name2 = "" + +#* Custom gpu3 model name, empty string to disable. +custom_gpu_name3 = "" + +#* Custom gpu4 model name, empty string to disable. +custom_gpu_name4 = "" + +#* Custom gpu5 model name, empty string to disable. +custom_gpu_name5 = "" diff --git a/.config/foot/config.md b/.config/foot/config.md new file mode 100644 index 0000000..74b3f35 --- /dev/null +++ b/.config/foot/config.md @@ -0,0 +1,2061 @@ +foot.ini(5) + +# NAME + +foot.ini - configuration file for *foot*(1) + +# DESCRIPTION + +*foot* uses the standard _unix configuration format_, with section based +key/value pairs. The default section is usually unnamed, i.e. not prefixed +with a _[section]_. However it can also be explicitly named _[main]_, +say if it needs to be reopened after any of the other sections. + +foot will search for a configuration file in the following locations, +in this order: + + - *XDG_CONFIG_HOME/foot/foot.ini* (defaulting to + *$HOME/.config/foot/foot.ini* if unset) + - *XDG_CONFIG_DIRS/foot/foot.ini* (defaulting to + */etc/xdg/foot/foot.ini* if unset) + +An example configuration file containing all options with their default value +commented out will usually be installed to */etc/xdg/foot/foot.ini*. + +Options are set using KEY=VALUE pairs: + + *\[colors\]*++ +*background=000000*++ +*foreground=ffffff* + +Empty values (*KEY=*) are not supported. String options do allow the +empty string to be set, but it must be quoted: *KEY=""*) + +# SECTION: main + +*shell* + Executable to launch. Typically a shell. Default: _$SHELL_ if set, + otherwise the user's default shell (as specified in + _/etc/passwd_). You can also pass arguments. For example + */bin/bash --norc*. + +*login-shell* + Boolean. If enabled, the shell will be launched as a login shell, + by prepending a '-' to argv[0]. Default: _no_. + +*term* + Value to set the environment variable *TERM* to. Default: + _@default_terminfo@_ + +*font*, *font-bold*, *font-italic*, *font-bold-italic* + Comma separated list of fonts to use, in fontconfig format. That + is, a font name followed by a list of colon-separated + options. Most noteworthy is *:size=n* (or *:pixelsize=n*), which + is used to set the font size. Note that the font size is also + affected by the *dpi-aware* option. + + Examples: + - Dina:weight=bold:slant=italic + - Courier New:size=12 + - Fantasque Sans Mono:fontfeatures=ss01 + - Iosevka:fontfeatures=cv01=1:fontfeatures=cv06=1 + - Meslo LG S:size=12, Noto Color Emoji:size=12 + - Courier New:pixelsize=8 + + Be aware that, depending on your setup, there may be global + FontConfig options that overrides options set here. If an option + appears to have no effect, ensure there is no global configuration + file that sets the same option with *assign* or *assign_replace*; + use one of the many *append* or possibly *prepend* modes. + + For each option, the first font is the primary font. The remaining + fonts are fallback fonts that will be used whenever a glyph cannot + be found in the primary font. + + The fallback fonts are searched in the order they appear. If a + glyph cannot be found in any of the fallback fonts, the dynamic + fallback list from fontconfig (for the primary font) is + searched. + + *font-bold*, *font-italic* and *font-bold-italic* allow custom + fonts to be used for bold/italic/bold+italic fonts. If left + unconfigured, the bold/italic variants of the regular font(s) + specified in *font* are used. *Note*: you _may_ have to tweak the + size(s) of the custom bold/italic fonts to match the regular font. + + To disable bold and/or italic fonts, set e.g. *font-bold* to + _exactly_ the same value as *font*. + + **size** is in _points_ (as defined by the FontConfig format). To + set a _pixel_ size, use **pixelsize** instead. Note that pixel + sizes are unaffected by DPI aware rendering (see *dpi-aware*), but + are affected by desktop scaling. + + Default: _monospace:size=8_ (*font*), _not set_ (*font-bold*, + *font-italic*, *font-bold-italic*). + +*font-size-adjustment* + Amount, in _points_, _pixels_ or _percent_, to increment/decrement + the font size when zooming in our out. + + Examples: + ``` + font-size-adjustment=0.5 # Adjust by 0.5 points + font-size-adjustment=10px # Adjust by 10 pixels + font-size-adjustment=7.5% # Adjust by 7.5 percent + ``` + + Default: _0.5_ + +*include* + Absolute path to configuration file to import. + + The import file has its own section scope. I.e. the including + configuration is still in the default section after the include, + regardless of which section the included file ends in. + + - The path must be an absolute path, or start with *~/*. + - Multiple include directives are allowed, but only one path per + directive. + - Nested imports are allowed. + + Default: _not set_. + +*line-height* + An absolute value, in _points_, that override line height from the + font metrics. + + You can specify a height in _pixels_ by using the *px* suffix: + e.g. *line-height=12px*. + + *Warning*: when changing the font size at runtime (i.e. zooming in + our out), foot will change the line height by the same + percentage. However, due to rounding, it is possible the line + height will be "too small" for some font sizes, causing + e.g. underscores to "disappear". + + See also: *vertical-letter-offset*. + + Default: _not set_. + +*letter-spacing* + Spacing between letters, in _points_. A positive value will + increase the cell size, and a negative value shrinks it. + + You can specify a letter spacing in _pixels_ by using the *px* + suffix: e.g. *letter-spacing=2px*. + + See also: *horizontal-letter-offset*. + + Default: _0_. + +*horizontal-letter-offset*, *vertical-letter-offset* + Configure the horizontal and vertical offsets used when + positioning glyphs within cells, in _points_, relative to the top + left corner. + + To specify an offset in _pixels_, append *px*: + e.g. *horizontal-letter-offset=2px*. + + Default: _0_. + +*underline-offset* + Use a custom offset for underlines. The offset is, by default, in + _points_ and relative the font's baseline. A positive value + positions the underline under the baseline, while a negative value + positions it above the baseline. + + To specify an offset in _pixels_, append *px*: + *underline-offset=2px*. + + If left unset (the default), the offset specified in the font is + used, or estimated by foot if the font lacks underline positioning + information. + + Default: _unset_. + +*underline-thickness* + Use a custom thickness (height) for underlines. The thickness is, by + default, in _points_. + + To specify a thickness in _pixels_, append *px*: + *underline-thickness=1px*. + + If left unset (the default), the thickness specified in the font is + used. + + Default: _unset_ + +*strikeout-thickness* + Use a custom thickness (height) for strikeouts. The thickness is, by + default, in _points_. + + To specify a thickness in _pixels_, append *px*: + *strikeout-thickness=1px*. + + If left unset (the default), the thickness specified in the font is + used. + + Default: _unset_ + +*gamma-correct-blending* + Boolean. When enabled, foot will do gamma-correct blending in + linear color space. This is how font glyphs are supposed to be + rendered, but since nearly no applications or toolkits are doing + it on Linux, the result may not look like you are used to. + + Compared to the default (disabled), bright glyphs on a dark + background will appear thicker, and dark glyphs on a light + background will appear thinner. + + FreeType can limit the effect of the latter, with a technique + called stem darkening. It is only available for CFF fonts + (OpenType, .otf) and disabled by default (in FreeType). You can + enable it by setting the environment variable + *FREETYPE_PROPERTIES="cff:no-stem-darkening=0"* before starting + foot. + + Also be aware that many fonts have been developed on systems that + do not do gamma-correct blending, and may therefore look thicker + than intended when rendered with gamma-correct blending, since the + font designer set the font weight based on incorrect rendering. + + In order to represent colors faithfully, higher precision image + buffers are required. By default, foot will use either 16-bit, or + 10-bit color channels, depending on availability, when + gamma-correct blending is enabled. However, the high precision + buffers are slow; if you want to use gamma-correct blending, but + prefer speed (throughput and input latency) over accurate colors, + you can force 8-bit color channels by setting + *tweak.surface-bit-depth=8-bit*. + + Default: _no_. + +*box-drawings-uses-font-glyphs* + Boolean. When disabled, foot generates box/line drawing characters + itself. The are several advantages to doing this instead of using + font glyphs: + + - No antialiasing effects where e.g. line endpoints appear + dimmed down, or blurred. + - Line- and box characters are guaranteed to span the entire cell, + resulting in a gap-less appearance. + - No alignment issues, i.e. lines are centered when they should be. + - Many fonts lack some, or all, of the line- and box drawing + characters, causing fallback fonts to be used, which results + in out-of-place looking glyphs (for example, badly sized). + + When enabled, box/line drawing characters are rendered using font + glyphs. This may result in a more uniform look, in some use cases. + + When disabled, foot will render the following Unicode codepoints + by itself: + + - U+02500 - U+0259F + - U+02800 - U+028FF + - U+1CD00 - U+1CDE5 + - U+1Fb00 - U+1FB9B + + Default: _no_. + +*dpi-aware* + Boolean. + + When set to *yes*, fonts are sized using the monitor's DPI, making + a font of a given size have the same physical size, regardless of + monitor. In other words, if you drag a foot window between + different monitors, the font size remains the same. + + In this mode, the monitor's scaling factor is ignored; doubling + the scaling factor will *not* double the font size. + + When set to *no*, the monitor's DPI is ignored. The font is + instead sized using the monitor's scaling factor; doubling the + scaling factor *does* double the font size. + + Note that this option typically does not work with bitmap fonts, + which only contains a pre-defined set of sizes, and cannot be + dynamically scaled. Whichever size (of the available ones) that + best matches the DPI or scaling factor, will be used. + + Also note that if the font size has been specified in pixels + (*:pixelsize=*_N_, instead of *:size=*_N_), DPI scaling + (*dpi-aware=yes*) will have no effect (the specified pixel size + will be used as is). But, if the monitor's scaling factor is used + to size the font (*dpi-aware=no*), the font's pixel size will be + multiplied with the scaling factor. + + Default: _no_ + +*pad* + Padding between border and glyphs, in pixels (subject to output + scaling), in the form + + ``` + _XxY_ [center | center-when-fullscreen | center-when-maximized-and-fullscreen] + ``` + + This will add _at least_ X pixels on both the left and right + sides, and Y pixels on the top and bottom sides. + + When no centering is specified, the grid content is anchored to + the top left corner. I.e. if the window manager forces an odd + window size on foot, the additional pixels will be added to the + right and bottom sides. + + If *center* is specified, the grid content is instead + centered. This may cause "jumpiness" when resizing the window. + + With *center-when-fullscreen* and + *center-when-maximized-and-fullscreen*, the grid is anchored to + the top left corner, unless the window is maximized, or + fullscreened. + + Default: _0x0_ center-when-maximized-and-fullscreen. + +*resize-delay-ms* + + Time, in milliseconds, of "idle time" before foot performs text + reflow, and sends the new window dimensions to the client + application while doing an interactive resize of a foot + window. Idle time in this context is a period of time where the + window size is not changing. + + In other words, while you are fiddling with the window size, foot + does not send the updated dimensions to the client. It also does a + fast "truncating" resize of the grid, instead of actually + reflowing the contents. Only when you pause the fiddling for + *resize-delay-ms* milliseconds is the client updated, and the + contents properly reflowed. + + Emphasis is on _while_ here; as soon as the interactive resize + ends (i.e. when you let go of the window border), the final + dimensions is sent to the client, without any delays. + + Setting it to 0 disables the delay completely. + + Default: _100_. + +*resize-by-cells* + Boolean. + + When set to *yes*, the window size will be constrained to multiples + of the cell size (plus any configured padding). When set to *no*, + the window size will be unconstrained, and padding may be adjusted + as necessary to accommodate window sizes that are not multiples of + the cell size. + + This option only applies to floating windows. Sizes of maxmized, tiled + or fullscreen windows will not be constrained to multiples of the cell + size. + + Default: _yes_ + +*resize-keep-grid* + Boolean. + + When set to *yes*, the window size will be adjusted with changes in font + size to preserve the dimensions of the text grid. When set to *no*, the + window size will remain constant and the text grid will be adjusted as + necessary to fit the window. + + This option only applies to floating windows. + + Default: _yes_ + +*initial-color-theme* + Selects which color theme to use, *1*, or *2*. + + *1* uses the colors defined in the *colors* section, while *2* + uses the colors from the *colors2* section. + + Use the *color-theme-switch-1*, *color-theme-switch-2* and + *color-theme-toggle* key bindings to switch between the two themes + at runtime. + + Default: _1_ + +*initial-window-size-pixels* + Initial window width and height in _pixels_ (subject to output + scaling), in the form _WIDTHxHEIGHT_. The height _includes_ the + titlebar when using CSDs. Mutually exclusive to + *initial-window-size-chars*. + + Note that this option may not work as expected if fractional + scaling is being used, due to the fact that many compositors do + not report the correct scaling factor until after a window has + been mapped. + + Default: _700x500_. + +*initial-window-size-chars* + Initial window width and height in _characters_, in the form + _WIDTHxHEIGHT_. Mutually exclusive to + *initial-window-size-pixels*.' + + Note that if you have a multi-monitor setup, with different + scaling factors, there is a possibility the window size will not + be set correctly. If that is the case, use + *initial-window-size-pixels* instead. + + And, just like *initial-window-size-pixels*, this option may not + work as expected if fractional scaling is being used (see + *initial-window-size-pixels* for details). + + Default: _not set_. + +*initial-window-mode* + Initial window mode for each newly spawned window: *windowed*, + *maximized* or *fullscreen*. Default: _windowed_. + +*title* + Initial window title. Default: _foot_. + +*locked-title* + Boolean. If enabled, applications are not allowed to change the + title at run-time. Default: _no_. + +*app-id* + Value to set the *app-id* property on the Wayland window to. The + compositor can use this value to e.g. group multiple windows, or + apply window management rules. Default: _foot_ (normal mode), or + _footclient_ (server mode). + +*bold-text-in-bright* + Semi-boolean. When enabled, bold text is rendered in a brighter + color (in addition to using a bold font). The color is brightened + by blending it with white. + + If set to *palette-based*, rather than a simple *yes|true*, colors + matching one of the 8 regular palette colors will be brightened + using the corresponding bright palette color. Other colors will + not be brightened. + + Default: _no_. + +*word-delimiters* + String of characters that act as word delimiters when selecting + text. Note that whitespace characters are _always_ word + delimiters, regardless of this setting. Default: _,│`|:"'()[]{}<>_ + +*selection-target* + Clipboard target to automatically copy selected text to. One of + *none*, *primary*, *clipboard* or *both*. Default: _primary_. + +*workers* + Number of threads to use for rendering. Set to 0 to disable + multithreading. Default: the number of available logical CPUs + (including SMT). Note that this is not always the best value. In + some cases, the number of physical _cores_ is better. + + In case you have a ridiculous amount of cores and/or threads, + consider limiting the number of *workers*, since foot cannot + parallelize more than the number of visible rows. + +*utmp-helper* + Path to utmp logging helper binary. + + When starting foot, an utmp record is created by launching the + helper binary with the following arguments: + + ``` + @utmp_add_args@ + ``` + + When foot is closed, the utmp record is removed by launching the + helper binary with the following arguments: + + ``` + @utmp_del_args@ + ``` + + Set to *none* to disable utmp records. Default: _@utmp_helper_path@_. + +# SECTION: environment + +This section is used to define environment variables that will be set +in the client application, in addition to the variables inherited from +the terminal process itself. + +The format is simply: + +*name*=_value_ + +Note: do not set *TERM* here; use the *term* option in the main +(default) section instead. + +# SECTION: security + +*osc52* + + Whether OSC-52 (clipboard access) is enabled or disabled. One of + *disabled*, *copy-enabled*, *paste-enabled* or *enabled*. + + OSC-52 gives terminal application access to the host clipboard + (i.e. the Wayland clipboard). This is normally not a security + issue, since all applications can access the clipboard directly + over the Wayland socket. + + However, when SSH:ing into a remote system, or accessing a + container etc, the terminal applications may be untrusted, and you + might consider disabling the host clipboard access. + + - *disabled*: disables all clipboard access + - *copy-enabled*: applications can write to the clipboard, but not + read from it. + - *paste-enabled*: applications can read from the clipboard, but + not write to it. + - *enabled*: all applications have full access to the host + clipboard. This is the default. + + Default: _enabled_ + + +# SECTION: bell + +*system* + Boolean, when set to _yes_, ring the system bell. The bell is rung + independent of whether the foot window has keyboard focus or + not. Exact behavior is compositor dependent. + + Default: _yes_ + +*urgent* + Boolean, when set to _yes_, foot will signal urgency to the + compositor through the XDG activation protocol whenever *BEL* is + received, and the window does NOT have keyboard focus. + + If the compositor does not implement this protocol, the margins + will be painted in red instead. + + Applications can enable/disable this feature programmatically with + the *CSI ? 1042 h* and *CSI ? 1042 l* escape sequences. + + Default: _no_ + +*notify* + Boolean, when set to _yes_, foot will emit a desktop notification + using the command specified in the *notify* option whenever *BEL* + is received. By default, bell notifications are shown only when + the window does *not* have keyboard focus. See + _desktop-notifications.inhibit-when-focused_. + + Default: _no_ + +*visual* + Boolean, when set to _yes_, foot will flash the terminal + window. Default: _no_ + +*command* + When set, foot will execute this command when *BEL* is received. + Default: none + +*command-focused* + Boolean, whether to run the command on *BEL* even while + focused. Default: _no_ + +# SECTION: desktop-notifications + +*command* + Command to execute to display a notification. + + Template arguments + _${title}_ and _${body}_ will be replaced with the + notification's actual _title_ and _body_ (message content). + + _${app-id}_ is replaced with the value of the command line + option _--app-id_, and defaults to *foot* (normal mode), or + *footclient* (server mode). + + _${window-title}_ is replaced with the current window title. + + _${icon}_ is replaced by the icon specified in the + notification request, or the empty string if no icon was + specified. Can be used with e.g. notify-send's *--icon* + option, or preferably, by setting the *image-path* hint (with + e.g. notify-send's *--hint* option). + + _${category}_ is replaced by the notification's catogory. Can + be used together with e.g. notify-send's *--category* option. + + _${urgency}_ is replaced with the notifications urgency; + *low*, *normal* or *critical*. Can be used together with + e.g. notify-send's *--urgency* option. + + _${expire-time}_ is replaced with the notification specified + notification timeout. Can be used together with + e.g. notify-send's *--expire-time* option. + + _${replace-id}_ is replaced by the notification daemon + assigned ID that the notification replaces/updates. For this + to work, foot needs to know the externally assigned IDs of + previously emitted notifications, see the 'stdout' section + below. Can be used together with e.g. notify-send's + *--replace-id* option. + + _${muted}_ is replaced by either *true* or *false*, depending + on whether the notification has requested all notification + sounds be muted. It is intended to set the *suppress-sound* + hint (with e.g. notify-send's *--hint* option). + + _${sound-name}_ is replaced by sound-name requested by the + notification. This should be a name from the freedesktop sound + naming specification, but this is not something that foot + enforces. It is intended to set the *sound-name* hint (with + e.g. notify-send's *--hint* option). + + _${action-argument}_ will be expanded to the + *command-action-argument* option, for each notification + action. There will always be at least one action, the + "default" action. Foot uses this to enable window focusing, + and reporting notification activation to applications that + requested such events. + + Applications can also define their own custom notification + actions. See the *command-action-argument* option for details. + + Ways to trigger notifications + Applications can trigger notifications in the following ways: + + - OSC 777: *\\e]777;notify;;<body>\\e\\\\* + - OSC 99: *\\e]99;;<title>\\e\\\\* (this is just a bare bones + example; this protocol has lots of features, see + https://sw.kovidgoyal.net/kitty/desktop-notifications) + + By default, notifications are *inhibited* if the foot window + has keyboard focus. See + _desktop-notifications.inhibit-when-focused_. + + Window activation (focusing) + Foot can focus the window when the notification is + 'activated'. It can also send an event back to the client + application, notifying it that the notification has been + 'activated', This typically happens when the default action is + invoked, and/or when the notification is clicked, but exact + behavior depends on the notification daemon in use, and how it + has been configured. + + For this to work, foot needs to know when the notification was + activated (as opposed to just dismissed), and it needs an XDG + activation token. + + There are two parts to handle this. First, the notification + must define an action. For this purpose, foot will add a + "default" action to the notification (see the + *command-action-argument* option). + + Second, foot needs to know when the notification is activated, + and it needs to get hold of the XDG activation token. + + Both are expected to be printed on stdout. + + Foot expects the action name (not label) to be printed on a + single line. No prefix, no postfix. + + Foot expects the activation token to be printed on a single + line, prefixed with *xdgtoken=*. + + Example: + default++ +xdgtoken=18179adf579a7a904ce73754964b1ec3 + + The expected format of stdout may change at any time. Please + read the changelog when upgrading foot. + + *Note*: notify-send does not, out of the box, support + reporting the XDG activation token in any way. This means + window activation will not work by default. + + Stdout + Foot recognizes the following things from the notification + helper's stdout: + + - _id_: integer in base 10, daemon assigned notification ID + - *id=*_id_: same as plain _nnn_. + - *default*: the 'default' action was triggered + - *action=*_default_: same as _default_ + - *action=*_n_: application custom action _n_ triggered + - _n_: integer in base 10, appearing after the ID; application + custom action _n_ triggered + - *xdgtoken=*_xyz_: XDG activation token. + + Example #1: + 17++ +action=default++ +xdgtoken=95ebdfe56e4f47ddb5bba9d7dc3a2c35 + + Foot recognizes this as: + - notification has the daemon assigned ID 17 + - the user triggered the default action + - the notification send an XDG activation token + + Example #2: + 17++ +1 + + Foot recognizes this as: + - notification has the daemon assigned ID 17 + - the user triggered the first custom action, "1" + + Example #3: + id=17++ +1 + + Foot recognizes this as: + - notification has the daemon assigned ID 17 + - the user triggered the first custom action, "1 + + Default: _notify-send++ + --wait++ + --app-name ${app-id}++ + --icon ${app-id}++ + --category ${category}++ + --urgency ${urgency}++ + --expire-time ${expire-time}++ + --hint STRING:image-path:${icon}++ + --hint BOOLEAN:suppress-sound:${muted}++ + --hint STRING:sound-name:${sound-name}++ + --replace-id ${replace-id}++ + ${action-argument}++ + --print-id++ + -- ${title} ${body}_. + +*command-action-argument* + String to use with *command* to enable passing action/button names + to the notification helper. + + Foot will always configure a "default" action that can be used to + "activate" the notification, which in turn can cause the foot + window to be focused, or an escape to be sent to the terminal + application (depending on how the application generated the + notification). + + Furthermore, the OSC-99 notifications protocol allows applications + to define their own actions. Foot uses a combination of the + *command* option, and the *command-action-argument* option to pass + the names of the actions to the notification helper. + + This option has the following template arguments: + + - _${action-name}_: the name of the action; *default* for the + default action configured by foot, and _n_, where _n_ is an + integer >= 1, for application defined actions. + - _${action-label}_: *Activate* for the default action, and a + free-form string for application defined actions. + + For each notification action (remember, there will always be at + least one), *command-action-argument* will be expanded with the + action's name and label. + + Then, _${action-argument}_ is expanded *command* to the full list + of actions. + + If *command-action-argument* is set to the empty string, no + actions will be passed to *command*. That is, _${action-argument}_ + will be replaced with the empty string. + + Example: + + *command-action-argument=--action ${action-name}=${action-label}*++ +*command=notify-send ${action-argument} ...* + + Assume the application defined two custom actions: *OK* and + *Cancel*. + + Given the above, foot will execute: + + notify-send++ + --action default='Click to activate'++ + --action 1=OK++ + --action 2=Cancel++ + ... + + Default: _--action ${action-name}=${action-label}_ + +*close* + Command to execute to close an existing notification. + + _${id}_ is expanded to the ID of the notification that should be + closed. For example: + + fyi --close ${id} + + Closing a notification is only supported by the Kitty Desktop + Notification protocol, OSC-99. + + If set to the empty string (the default), foot will instead try to + close the notification by sending SIGINT to the notification + helper process. For example, *notify-send --wait* (libnotify >= + 0.8.0) responds to SIGINT by closing the notification. + + Default: _not set_ + +*inhibit-when-focused* + Boolean. If enabled, foot will not display notifications if the + terminal window has keyboard focus. + + Default: _yes_ + +# SECTION: scrollback + +*lines* + Number of scrollback lines. The maximum number of allocated lines + will be this value plus the number of visible lines, rounded up to + the nearest power of 2. Default: _1000_. + +*multiplier* + Amount to multiply mouse scrolling with. It is a decimal number, + i.e. fractions are allowed. Default: _3.0_. + +*indicator-position* + Configures the style of the scrollback position indicator. One of + *none*, *fixed* or *relative*. *none* disables the indicator + completely. *fixed* always renders the indicator near the top of + the window, and *relative* renders the indicator at the position + corresponding to the current scrollback position. Default: + _relative_. + +*indicator-format* + Which format to use when displaying the scrollback position + indicator. Either _percentage_, _line_, or a custom fixed + string. This option is ignored if + *indicator-position=none*. Default: _empty string_. + +# SECTION: url + +Note that you can also add custom regular expressions, see the 'regex' +section. + +*launch* + Command to execute when opening URLs. _${url}_ will be replaced + with the actual URL. Default: _xdg-open ${url}_. + +*osc8-underline* + When to underline OSC-8 URLs. Possible values are *url-mode* and + *always*. + + When set to *url-mode*, OSC-8 URLs are only highlighted in URL + mode, just like auto-detected URLs. + + When set to *always*, OSC-8 URLs are always highlighted, + regardless of their other attributes (bold, italic etc). Note that + this does _not_ make them clickable. + + Default: _url-mode_ + +*label-letters* + String of characters to use when generating key sequences for URL + jump labels. + + If you change this option to include the letter *t*, you should + also change the default *[url-bindings].toggle-url-visible* key + binding to avoid a clash. + + Default: _sadfjklewcmpgh_. + +*regex* + Regular expression to use when auto-detecting URLs. The format is + "POSIX-Extended Regular Expressions". Note that the first marked + subexpression is used as the URL. In other words, if you want the + whole regex match to be used as an URL, surround all of it with + parenthesis: *(regex-pattern)*. + + Default: _(((https?://|mailto:|ftp://|file:|ssh:|ssh://|git://|tel:|magnet:|ipfs://|ipns://|gemini://|gopher://|news:)|www\.)([0-9a-zA-Z:/?#@!$&\*+,;=.~\_%^\-]+|\([]\["0-9a-zA-Z:/?#@!$&'\*+,;=.~\_%^\-]\*\)|\[[\(\)"0-9a-zA-Z:/?#@!$&'\*+,;=.~\_%^\-]\*\]|"[]\[\(\)0-9a-zA-Z:/?#@!$&'\*+,;=.~\_%^\-]\*"|'[]\[\(\)0-9a-zA-Z:/?#@!$&\*+,;=.~\_%^\-]\*')+([0-9a-zA-Z/#@$&\*+=~\_%^\-]|\([]\["0-9a-zA-Z:/?#@!$&'\*+,;=.~\_%^\-]\*\)|\[[\(\)"0-9a-zA-Z:/?#@!$&'\*+,;=.~\_%^\-]\*\]|"[]\[\(\)0-9a-zA-Z:/?#@!$&'\*+,;=.~\_%^\-]\*"|'[]\[\(\)0-9a-zA-Z:/?#@!$&\*+,;=.~\_%^\-]\*'))_ + +# SECTION: regex + +Similar to the 'url' mode, but with custom defined regular expressions +(and launchers). + +To use a custom defined regular expression, you also need to add a key +binding for it. This is done in the *key-binding* section, see below +for details. For example, a regex to detect hash digests (e.g. git +commit hashes) could look like: + +``` +[regex:hashes] +regex=([a-fA-F0-9]{7,128}) +launch=path-to-script-or-application ${match} + +[key-bindings] +regex-launch=[hashes] Control+Shift+q +regex-copy=[hashes] Control+Mod1+Shift+q +``` + +*launch* + Command to execute when "launching" a regex match. _${match}_ will + be replaced with the actual URL. Default: _not set_. + +*regex* + Regular expression to use when matching text. The format is + "POSIX-Extended Regular Expressions". Note that the first marked + subexpression is used as the match. In other words, if you want + the whole regex match to be used, surround all of it with + parenthesis: *(regex-pattern)*. + + Default: _not set_. + + +# SECTION: cursor + +This section controls the cursor style and color. Note that +applications can change these at runtime. + +*style* + Configures the default cursor style, and is one of: *block*, + *beam*, *underline* or *hollow*. Note that this can be overridden + by applications. Default: _block_. + +*unfocused-style* + Configures how the cursor is rendered when the terminal window is + unfocused. Possible values are: + + - unchanged: render cursor in exactly the same way as when the + window has focus. + - hollow: render a block cursor, but hollowed out. + - none: do not display any cursor at all. + +*blink* + Boolean. Enables blinking cursor. Note that this can be overridden + by applications. Related option: *blink-rate*. Default: _no_. + +*blink-rate* + The rate at which the cursor blink, when cursor blinking has been + enabled. Expressed in milliseconds between each blink. Default: + _500_. + +*beam-thickness* + Thickness (width) of the beam styled cursor. The value is in + points, and its exact value thus depends on the monitor's DPI. To + instead specify a thickness in pixels, use the *px* suffix: + e.g. *beam-thickness=2px*. Default: _1.5_ + +*underline-thickness* + Thickness (height) of the underline styled cursor. The value is in + points, and its exact value thus depends on the monitor's DPI. + + To instead specify a thickness in pixels, use the *px* suffix: + e.g. *underline-thickness=2px*. + + Note that if left unset, the cursor's thickness will scale with + the font size, while if set, the size is fixed. + + Default: _font underline thickness_. + +# SECTION: mouse + +*hide-when-typing* + Boolean. When enabled, the mouse cursor is hidden while + typing. Default: _no_. + +*alternate-scroll-mode* + Boolean. This option controls the initial value for the _alternate + scroll mode_. When this mode is enabled, mouse scroll events are + translated to _up_/_down_ key events when displaying the alternate + screen. + + This lets you scroll with the mouse in e.g. pagers (like _less_) + without enabling native mouse support in them. + + Alternate scrolling is *not* used if the application enables + native mouse support. + + This option can be modified by applications at run-time using the + escape sequences *CSI ? 1007 h* (enable) and *CSI ? 1007 l* + (disable). + + Default: _yes_. + +# SECTION: touch + +*long-press-delay* + Number of milliseconds to distinguish between a short press and + a long press on the touchscreen. + + Default: _400_. + +# SECTION: colors + +This section controls the 16 ANSI colors, the default foreground and +background colors, and the extended 256 color palette. Note that +applications can change these at runtime. + +The colors are in RRGGBB format (i.e. plain old 6-digit hex values, +without prefix). That is, they do *not* have an alpha component. You +can configure the background transparency with the _alpha_ option. + +In the context of private mode 2031 (Dark and Light Mode detection), +the primary theme (i.e. the *colors* section) is considered to be the +dark theme (since the default theme is dark). + +*cursor* + Two space separated RRGGBB values (i.e. plain old 6-digit hex + values, without prefix) specifying the foreground (text) and + background (cursor) colors for the cursor. + + Example: *ff0000 00ff00* (green cursor, red text) + + Default: the regular foreground and background colors, reversed. + +*foreground* + Default foreground color. This is the color used when no ANSI + color is being used. Default: _839496_. + +*background* + Default background color. This is the color used when no ANSI + color is being used. Default: _002b36_. + +*regular0*, *regular1* *..* *regular7* + The eight basic ANSI colors (Black, Red, Green, Yellow, Blue, + Magenta, Cyan, White). Default: _242424_, _f62b5a_, _47b413_, + _e3c401_, _24acd4_, _f2affd_, _13c299_, _e6e6e6_ (starlight + theme, V4). + +*bright0*, *bright1* *..* *bright7* + The eight bright ANSI colors (Black, Red, Green, Yellow, Blue, + Magenta, Cyan, White). Default: _616161_, _ff4d51_, _35d450_, + _e9e836_, _5dc5f8_, _feabf2_, _24dfc4_, _ffffff_ (starlight + theme, V4). + +*dim0*, *dim1* *..* *dim7* + Custom colors to use with dimmed colors. Dimmed colors do not have + an entry in the color palette. Applications emit them by combining + a color value, and a "dim" attribute. + + By default, foot implements this by blending the current color + with black. This is a generic approach that applies to both + colors from the 256-color palette, as well as 24-bit RGB colors. + + You can change this behavior by setting the *dimN* options. When + set, foot will match the current color against the color palette, + and if it matches one of the *regularN* colors, the corresponding + *dimN* color will be used. + + If instead the current color matches one of the *brightN* colors, + the corresponding *regularN* color will be used. + + If the current color does not match any known color, it is dimmed + by blending with black (i.e. the same behavior as if the *dimN* + options are unconfigured). 24-bit RGB colors will typically fall + into this category. + + Note that applications can change the *regularN* and *brightN* + colors at runtime. However, they have no way of changing the + *dimN* colors. If an application has changed the *regularN* + colors, foot will still use the corresponding *dimN* color, as + configured in foot.ini. + + Default: _not set_. + +*0* *..* *255* + Arbitrary colors in the 256-color palette. Default: for *0* *..* + *15*, see regular and bright defaults above; see + https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit for an + explanation of the remainder. + +*sixel0* *..* *sixel15* + The default sixel color palette. Default: _000000_, _3333cc_, + _cc2121_, _33cc33_, _cc33cc_, _33cccc_, _cccc33_, _878787_, + _424242_, _545499_, _994242_, _549954_, _995499_, _549999_, + _999954_, _cccccc_. + +*alpha* + Background translucency. A value in the range 0.0-1.0, where 0.0 + means completely transparent, and 1.0 is opaque. Default: _1.0_. + +*alpha-mode* + Specifies when *alpha* is applied. One of *default*, *matching* or + *all*. + + *default* applies *alpha* to cells with the default background + color, excluding cells with the same RGB value as the default + background color. + + *matching* is the same as *default*, but also applies *alpha* to + cells with the same RGB value as the default background color. + + *all* applies *alpha* to all cells, regardless of background color. + + Default: _default_ + +*selection-foreground*, *selection-background* + Foreground (text) and background color to use in selected + text. Default: _inverse foreground/background_. + +*jump-labels* + Two color values specifying the foreground (text) and background + colors to use when rendering jump labels in URL mode. Default: + _regular0 regular3_. + +*scrollback-indicator* + Two color values specifying the foreground (text) and background + (indicator itself) colors for the scrollback indicator. Default: + _regular0 bright4_. + +*search-box-no-match* + Two color values specifying the foreground (text) and background + colors for the scrollback search box, when there are no + matches. Default: _regular0 regular1_. + +*search-box-match* + Two color values specifying the foreground (text) and background + colors for the scrollback search box, when the search box is + either empty, or there are matches. Default: _regular0 regular3_. + +*urls* + Color to use for the underline used to highlight URLs in URL + mode. Default: _regular3_. + +*flash* + Color to use for the terminal window flash. Default: _7f7f00_. + +*flash-alpha* + Flash translucency. A value in the range 0.0-1.0, where 0.0 means + completely transparent, and 1.0 is opaque. Default: _0.5_. + +# SECTION: colors2 + +This section defines an alternative color theme. It has the exact same +keys as the *colors* section. The default values are the same. + +Note that values are not inherited. That is, if you set a value in +*colors*, but not in *colors2*, the value from *colors* is not +inherited by *colors2*. + +In the context of private mode 2031 (Dark and Light Mode detection), +the alternative theme (i.e. the *colors2* section) is considered to be +the light theme (since the default, the primary theme, is dark). + +# SECTION: csd + +This section controls the look of the _CSDs_ (Client Side +Decorations). Note that the default is to *not* use CSDs, but instead +to use _SSDs_ (Server Side Decorations) when the compositor supports +it. + +Note that unlike the colors defined in the _colors_ section, the color +values here are in AARRGGBB (i.e. plain old 8-digit hex values) +format. I.e. they contain an alpha component - 00 means completely +transparent, and ff fully opaque. + +Examples: + +- ffffffff: white, fully opaque +- ff000000: black, fully opaque +- 7fffffff: white, semi-transparent +- ff00ff00: green, fully opaque + +*preferred* + Which type of window decorations to prefer: *client* (CSD), + *server* (SSD) or *none*. + + Note that this is only a hint to the compositor. Depending on + compositor support, and how it has been configured, it may + instruct foot to use CSDs even though this option has been set to + *server*, or render SSDs despite *client* or *none* being set. + + Default: _server_. + +*size* + Height, in pixels (subject to output scaling), of the + titlebar. Setting it to 0 will hide the titlebar, while still + showing the border (if *border-width* is set to a non-zero + value). Default: _26_. + +*color* + Titlebar color. Default: use the default _foreground_ color. + +*font* + Font to use for the title bar. This is a list of fonts, similar to + the main *font* option. Note that the font will be sized using the + title bar size. That is, all *:size* and *:pixelsize* attributes + will be ignored. Default: _primary font_. + +*hide-when-maximized* + Boolean. When enabled, the CSD titlebar is hidden when the window + is maximized. The completely disable the titlebar, set *size* to 0 + instead. Default: _no_. + +*double-click-to-maximize* + Boolean. When enabled, double-clicking the CSD titlebar will + (un)maximize the window. Default: _yes_. + +*border-width* + Width of the border, in pixels (subject to output scaling). Note + that the border encompasses the entire window, including the title + bar. Default: _0_. + +*border-color* + Color of border. By default, the title bar color is used. If the + title bar color has not been set, the default foreground color + (from the color scheme) is used. Default: _titlebar color_. + +*button-width* + Width, in pixels (subject to output scaling), of the + minimize/maximize/close buttons. Default: _26_. + +*button-color* + Foreground color on the minimize/maximize/close buttons. Default: + use the default _background_ color. + +*button-minimize-color* + Minimize button's background color. Default: use the default + _regular4_ color (blue). + +*button-maximize-color* + Maximize button's background color. Default: use the default + _regular2_ color (green). + +*button-close-color* + Close button's background color. Default: use the default + _regular1_ color (red). + +# SECTION: key-bindings + +This section lets you override the default key bindings. + +The general format is _action=combo1...comboN_. That is, each action +may have one or more key combinations, space separated. Each +combination is in the form _mod1+mod2+key_. The names of the modifiers +and the key *must* be valid XKB key names. + +Note that if *Shift* is one of the modifiers, the _key_ *must not* be +in upper case. For example, *Control+Shift+V* will never trigger, but +*Control+Shift+v* will. + +The default key bindings all use "real" modifiers (*Mod1*, *Mod4* +etc), but "virtual" modifiers (*Alt*, *Super* etc) are allowed. + +*xkbcli interactive-wayland* can be useful for finding keysym names. + +When matching key presses to key bindings, foot uses a couple of +different approaches. + +As an example, let's say you press ctrl+shift+c (assume plain us ASCII +layout). XKB will tell foot *Control+C* was pressed. Note the lack of +the shift modifier, and the upper case 'C'. Internally, this is called +the "translated" form. + +The "untranslated" form (*Control+Shift+c*) is derived from the +translated form, and is what foot tries to match first. + +If no "untranslated" key bindings can be found, foot proceeds to +checking the "translated" variant. + +This means you can use either form in your foot configuration, and +that *Control+Shift+c* (and similar) has higher priority than +*Control+C*. Also note that while foot normally detects when the same +combination is assigned to multiple actions, it will not detect +*Control+C* vs. *Control+Shift+c* collisions. Call it a known bug... + +Finally, foot tries to match the raw key code. Here, the primary +layout is queried for all key codes that generate a particular XKB +symbol, and the pressed key's code is matched against this. For +example, if you use the layouts *"us,de(neo)"*, the 'r' key generates +the symbol 'c' in the neo layout. I.e. to get a 'c', you press +'r'. The match logic described above will only match 'c' key bindings +(e.g. *Control+Shift+c*). The raw mode however, will match 'r' key +bindings (e.g. *Control+Shift+r*). This is useful for non-latin +layouts, where you would otherwise have to customize all key bindings. + +A key combination can only be mapped to *one* action. Let's say you +want to bind *Control+Shift+R* to *fullscreen*. Since this is the +default shortcut for *search-start*, you first need to unmap the +default binding. This can be done by setting _action=none_; +e.g. *search-start=none*. + +*noop* + All key combinations listed here will not be sent to the + application. Default: _none_. + +*scrollback-up-page* + Scrolls up/back one page in history. Default: _Shift+Page\_Up + Shift+KP\_Page\_Up_. + +*scrollback-up-half-page* + Scrolls up/back half of a page in history. Default: _none_. + +*scrollback-up-line* + Scrolls up/back a single line in history. Default: _none_. + +*scrollback-down-page* + Scroll down/forward one page in history. Default: + _Shift+Page\_Down Shift+KP\_Page\_Down_. + +*scrollback-down-half-page* + Scroll down/forward half of a page in history. Default: _none_. + +*scrollback-down-line* + Scroll down/forward a single line in history. Default: _none_. + +*scrollback-home* + Scroll to the beginning of the scrollback. Default: _none_. + +*scrollback-end* + Scroll to the end (bottom) of the scrollback. Default: _none_. + +*clipboard-copy* + Copies the current selection into the _clipboard_. Default: _Control+Shift+c_ + _XF86Copy_. + +*clipboard-paste* + Pastes from the _clipboard_. Default: _Control+Shift+v_ _XF86Paste_. + +*primary-paste* + Pastes from the _primary selection_. Default: _Shift+Insert_ (also + defined in *mouse-bindings*). + +*search-start* + Starts a scrollback/history search. Default: _Control+Shift+r_. + +*font-increase* + Increases the font size by 0.5pt. Default: _Control+plus + Control+equal Control+KP\_Add_ (also defined in *mouse-bindings*). + +*font-decrease* + Decreases the font size by 0.5pt. Default: _Control+minus + Control+KP\_Subtract_ (also defined in *mouse-bindings*). + +*font-reset* + Resets the font size to the default. Default: _Control+0 Control+KP\_0_. + +*spawn-terminal* + Spawns a new terminal. If the shell has been configured to emit + the OSC 7 escape sequence, the new terminal will start in the + current working directory. Default: _Control+Shift+n_. + +*minimize* + Minimizes the window. Default: _none_. + +*maximize* + Toggle the maximized state. Default: _none_. + +*fullscreen* + Toggles the fullscreen state. Default: _none_. + +*pipe-visible*, *pipe-scrollback*, *pipe-selected*, *pipe-command-output* + Pipes the currently visible text, the entire scrollback, the + currently selected text, or the last command's output to an + external tool. The syntax for this option is a bit special; the + first part of the value is the command to execute enclosed in + "[]", followed by the binding(s). + + You can configure multiple pipes as long as the command strings + are different and the key bindings are unique. + + Note that the command is *not* automatically run inside a shell; + use *sh -c "command line"* if you need that. + + Example #1: + # Extract currently visible URLs, let user choose one (via + fuzzel), then launch firefox with the selected URL++ +*pipe-visible=[sh -c "xurls | uniq | tac | fuzzel | xargs -r firefox"] Control+Print* + + Example #2: + # Open scrollback contents in Emacs running in a new foot instance++ +*pipe-scrollback=[sh -c "f=$(mktemp) && cat - > $f && foot emacsclient -t $f; rm $f"] Control+Shift+Print* + + Default: _none_ + +*show-urls-launch* + Enter URL mode, where all currently visible URLs are tagged with a + jump label with a key sequence that will open the URL (and exit + URL mode). Default: _Control+Shift+o_. + +*show-urls-persistent* + Similar to *show-urls-launch*, but does not automatically exit URL + mode after activating an URL. Default: _none_. + +*show-urls-copy* + Enter URL mode, where all currently visible URLs are tagged with a + jump label with a key sequence that will place the URL in the + clipboard. If the hint is completed with an uppercase character, + the match will also be pasted. Default: _none_. + +*regex-launch* + Enter regex mode. This works exactly the same as URL mode; all + regex matches are tagged with a jump label with a key sequence + that will "launch" to match (and exit regex mode). + + The name of the regex section must be specified in the key + binding: + + ``` + [regex:hashes] + regex=([a-fA-F0-9]{7,128}) + launch=path-to-script-or-application ${match} + + [key-bindings] + regex-launch=[hashes] Control+Shift+q + regex-copy=[hashes] Control+Mod1+Shift+q + ``` + + Default: _none_. + +*regex-copy* + Same as *regex-launch*, but the match is placed in the clipboard, + instead of "launched", upon activation. If the hint is completed + with an uppercase character, the match will also be pasted. + Default: _none_. + +*prompt-prev* + Jump to the previous, currently not visible, prompt (requires + shell integration, see *foot*(1)). Default: _Control+Shift+z_. + +*prompt-next* + Jump the next prompt (requires shell integration, see + *foot*(1)). Default: _Control+Shift+x_. + +*unicode-input* + Input a Unicode character by typing its codepoint in hexadecimal, + followed by *Enter* or *Space*. + + For example, to input the character _ö_ (LATIN SMALL LETTER O WITH + DIAERESIS, Unicode codepoint 0xf6), you would first activate this + key binding, then type: *f*, *6*, *Enter*. + + Another example: to input 😍 (SMILING FACE WITH HEART-SHAPED EYES, + Unicode codepoint 0x1f60d), activate this key binding, then type: + *1*, *f*, *6*, *0*, *d*, *Enter*. + + Recognized key bindings in Unicode input mode: + + - Enter, Space: commit the Unicode character, then exit this mode. + - Escape, q, Ctrl+c, Ctrl+d, Ctrl+g: abort input, then exit this mode. + - 0-9, a-f: append next digit to the Unicode's codepoint. + - Backspace: undo the last digit. + + Note that there is no visual feedback while in this mode. This is + by design; foot's Unicode input mode is considered to be a + fallback. The preferred way of entering Unicode characters, emojis + etc is by using an IME. + + Default: _Control+Shift+u_. + +*color-theme-switch-1*, *color-theme-switch-2*, *color-theme-toggle* + Switch between the primary color theme (defined in the *colors* + section), and the alternative color theme (defined in the + *colors2* section). + + *color-theme-switch-1* applies the primary color theme regardless + of which color theme is currently active. + + *color-theme-switch-2* applies the alternative color theme regardless + of which color theme is currently active. + + *color-theme-toggle* toggles between the primary and alternative + color themes. + + Default: _none_ + +*quit* + Quit foot. Default: _none_. + +# SECTION: search-bindings + +This section lets you override the default key bindings used in +scrollback search mode. The syntax is exactly the same as the regular +**key-bindings**. + +*cancel* + Aborts the search. The viewport is restored and the _primary + selection_ is **not** updated. Default: _Control+g Control+c + Escape_. + +*commit* + Exit search mode and copy current selection into the _primary + selection_. Viewport is **not** restored. To copy the selection to + the regular _clipboard_, use *Control+Shift+c*. Default: _Return + KP_Enter_. + +*find-prev* + Search **backwards** in the scrollback history for the next + match. Default: _Control+r_. + +*find-next* + Searches **forwards** in the scrollback history for the next + match. Default: _Control+s_. + +*cursor-left* + Moves the cursor in the search box one **character** to the + left. Default: _Left Control+b_. + +*cursor-left-word* + Moves the cursor in the search box one **word** to the + left. Default: _Control+Left Mod1+b_. + +*cursor-right* + Moves the cursor in the search box one **character** to the + right. Default: _Right Control+f_. + +*cursor-right-word* + Moves the cursor in the search box one **word** to the + right. Default: _Control+Right Mod1+f_. + +*cursor-home* + Moves the cursor in the search box to the beginning of the + input. Default: _Home Control+a_. + +*cursor-end* + Moves the cursor in the search box to the end of the + input. Default: _End Control+e_. + +*delete-prev* + Deletes the **character before** the cursor. Default: _BackSpace_. + +*delete-prev-word* + Deletes the **word before** the cursor. Default: _Mod1+BackSpace + Control+BackSpace_. + +*delete-next* + Deletes the **character after** the cursor. Default: _Delete_. + +*delete-next-word* + Deletes the **word after** the cursor. Default: _Mod1+d + Control+Delete_. + +*delete-to-start* + Deletes search input before the cursor. Default: _Ctrl+u_. + +*delete-to-end* + Deletes search input after the cursor. Default: _Ctrl+k_. + +*extend-char* + Extend current selection to the right, by one character. Default: + _Shift+Right_. + +*extend-to-word-boundary* + Extend current selection to the right, to the next word + boundary. Default: _Control+w Control+Shift+Right_. + +*extend-to-next-whitespace* + Extend the current selection to the right, to the next + whitespace. Default: _Control+Shift+w_. + +*extend-line-down* + Extend current selection down one line. Default: _Shift+Down_. + +*extend-backward-char* + Extend current selection to the left, by one character. Default: + _Shift+Left_. + +*extend-backward-to-word-boundary* + Extend current selection to the left, to the next word + boundary. Default: _Control+Shift+Left_. + +*extend-backward-to-next-whitespace* + Extend the current selection to the left, to the next + whitespace. Default: _none_. + +*extend-line-up* + Extend current selection up one line. Default: _Shift+Up_. + +*clipboard-paste* + Paste from the _clipboard_ into the search buffer. Default: + _Control+v Control+y Control+Shift+v XF86Paste_. + +*primary-paste* + Paste from the _primary selection_ into the search + buffer. Default: _Shift+Insert_. + +*unicode-input* + Unicode input mode. See _key-bindings.unicode-input_ for + details. Default: _none_. + +*scrollback-up-page* + Scrolls up/back one page in history. Default: _Shift+Page\_Up + Shift+KP\_Page\_Up_. + +*scrollback-up-half-page* + Scrolls up/back half of a page in history. Default: _none_. + +*scrollback-up-line* + Scrolls up/back a single line in history. Default: _none_. + +*scrollback-down-page* + Scroll down/forward one page in history. Default: + _Shift+Page\_Down Shift+KP\_Page\_Down_. + +*scrollback-down-half-page* + Scroll down/forward half of a page in history. Default: _none_. + +*scrollback-down-line* + Scroll down/forward a single line in history. Default: _none_. + +*scrollback-home* + Scroll to the beginning of the scrollback. Default: _none_. + +*scrollback-end* + Scroll to the end (bottom) of the scrollback. Default: _none_. + +# SECTION: url-bindings + +This section lets you override the default key bindings used in URL +mode. The syntax is exactly the same as the regular **key-bindings**. + +Be careful; do not use single-letter keys that are also used in +*[url].label-letters*, as doing so will make some URLs inaccessible. + +*cancel* + Exits URL mode without opening a URL. Default: _Control+g + Control+c Control+d Escape_. + +*toggle-url-visible* + By default, the jump label only shows the key sequence required to + activate it. This is fine as long as the URL is visible in the + original text. + + But with e.g. OSC-8 URLs (the terminal version of HTML anchors, + i.e. "links"), the text on the screen can be something completely + different than the URL. + + This action toggles between showing and hiding the URL on the jump + label. + + Default: _t_. + +# SECTION: text-bindings + +This section lets you remap key combinations to custom escape +sequences. + +The format is _text=combo1...comboN_. That is, the string to emit may +have one or more key combinations, space separated. Each combination +is in the form _mod1+mod2+key_. The names of the modifiers and the key +*must* be valid XKB key names. + +The text string specifies the characters, or bytes, to emit when the +associated key combination(s) are pressed. There are two ways to +specify a character: + +- Normal, printable characters are written as-is: *abcdef*. +- Bytes (e.g. ESC) are written as two-digit hexadecimal numbers, with + a *\\x* prefix: *\\x1b*. + +Example: you would like to remap _Super+k_ to the _Up_ key. + +The escape sequence for the Up key is _ESC [ A_ (without the +spaces). Thus, we need to specify this in foot.ini (*Mod4* is the XKB +name for the Super/logo key): + +*\\x1b[A = Mod4+k* + +Another example: to remap _Super+c_ to _Control+c_: + +*\\x03 = Mod4+c* + +# SECTION: mouse-bindings + +This section lets you override the default mouse bindings. + +The general format is _action=combo1...comboN_. That is, each action +may have one or more key combinations, space separated. Each +combination is in the form _mod1+mod2+BTN\_<name>[-COUNT]_. The names +of the modifiers *must* be valid XKB key names, and the button name +*must* be a valid libinput name. You can find the button names using +*libinput debug-events*. + +The trailing *COUNT* (number of times the button has to be clicked) is +optional and specifies the click count required to trigger the +binding. The default if *COUNT* is omitted is _1_. + +To map wheel events (i.e. scrolling), use the button names +*BTN_WHEEL_BACK* (up) and *BTN_WHEEL_FORWARD* (down). Note that these +events never generate a *COUNT* larger than 1. That is, +*BTN_WHEEL_BACK+2*, for example, will never trigger. + +Foot also recognizes tiltable wheels; to map these, use +*BTN_WHEEL_LEFT* and *BTN_WHEEL_RIGHT*. + +A modifier+button combination can only be mapped to *one* action. Let's +say you want to bind *BTN\_MIDDLE* to *fullscreen*. Since +*BTN\_MIDDLE* is the default binding for *primary-paste*, you first +need to unmap the default binding. This can be done by setting +_action=none_; e.g. *primary-paste=none*. + +*selection-override-modifiers* + The modifiers set in this set (which may be set to any combination + of modifiers, e.g. _mod1+mod2+mod3_, as well as _none_) are used + to enable selecting text with the mouse irrespective of whether a + client application currently has the mouse grabbed. + These modifiers cannot be used as modifiers in mouse bindings. + Because the order of bindings is significant, it is best to set + this prior to any other mouse bindings that might use modifiers in + the default set. + Default: _Shift_ + +The actions to which mouse combos can be bound are listed below. All +actions listed under *key-bindings* can be used here as well. + +*scrollback-up-mouse* + Normal screen: scrolls up the contents. + + Alt screen: send fake _KeyUP_ events to the client application, if + alternate scroll mode is enabled. + + Default: _BTN\_WHEEL\_BACK_ + +*scrollback-down-mouse* + Normal screen: scrolls down the contents. + + Alt screen: send fake _KeyDOWN_ events to the client application, if + alternate scroll mode is enabled. + + Default: _BTN\_WHEEL\_FORWARD_ + +*select-begin* + Begin an interactive selection. The selection is finalized, and + copied to the _primary selection_, when the button is + released. Default: _BTN\_LEFT_. + +*select-begin-block* + Begin an interactive block selection. The selection is finalized, + and copied to the _primary selection_, when the button is + released. Default: _Control+BTN\_LEFT_. + +*select-word* + Begin an interactive word-wise selection, where words are + separated by whitespace and all characters defined by the + *word-delimiters* option. The selection is finalized, and copied + to the _primary selection_, when the button is released. Default: + _BTN\_LEFT-2_. + +*select-word-whitespace* + Same as *select-word*, but the characters in the *word-delimiters* + option are ignored. I.e only whitespace characters act as + delimiters. The selection is finalized, and copied to the _primary + selection_, when the button is released. Default: + _Control+BTN\_LEFT-2_. + +*select-quote* + Begin an interactive "quote" selection. This is similar to + *select-word*, except an entire quote is selected (that is, + everything inside the quote, excluding the quote + characters). Recognized quote characters are: *"* and *'*. + + If a complete quote cannot be found on the current logical row + (only one quote character, or none are found), the entire row is + selected. + + The selection is finalized, and copied to the _primary selection_, + when the button is released. + + After the initial selection has been made, it behaves like a + normal word, or row selection, depending on whether a quote was + found or not. This affects what happens when, for example, + extending the selection. + + Notes: + - Escaped quote characters are not supported (*"foo \\"bar"* will + match *'foo \\'*, not *'foo "bar'*). + - Foot does not try to handle mismatched quote characters; they + will simply not match. + - Nested quotes (using different quote characters) are supported. + + Default: _BTN\_LEFT-3_. + +*select-row* + Begin an interactive row-wise selection. The selection is + finalized, and copied to the _primary selection_, when the button + is released. Default: _BTN\_LEFT-4_. + +*select-extend* + Interactively extend an existing selection, using the original + selection mode (normal, block, word-wise or row-wise). The + selection is finalized, and copied to the _primary selection_, + when the button is released. Default: _BTN\_RIGHT_. + +*select-extend-character-wise* + Same as *select-extend*, but forces the selection mode to _normal_ + (i.e. character wise). Note that this causes subsequent + *select-extend* operations to be character wise. This action is + ignored for block selections. Default: _Control+BTN\_RIGHT_. + +*primary-paste* + Pastes from the _primary selection_. Default: _BTN\_MIDDLE_. + +*font-increase* + Increases the font size by 0.5pt. Default: + _Control+BTN\_WHEEL\_BACK_ (also defined in *key-bindings*). + +*font-decrease* + Decreases the font size by 0.5pt. Default: + _Control+BTN\_WHEEL\_FORWARD_ (also defined in *key-bindings*). + + +# TWEAK + +This section is for advanced users and describes configuration options +that can be used to tweak foot's low-level behavior. + +These options are *not* included in the example configuration. You +should not change these unless you understand what they do. + +Note that these options may change, or be removed at any time, without +prior notice. + +When reporting bugs, please mention if, and to what, you have changed +any of these options. + +*scaling-filter* + Overrides the default scaling filter used when down-scaling bitmap + fonts (e.g. emoji fonts). Possible values are *none*, *nearest*, + *bilinear*, *impulse*, *box*, *linear*, *cubic* *gaussian*, + *lanczos2*, *lanczos3* or *lanczos3-stretched*. + + Default: _lanczos3_. + +*overflowing-glyphs* + Boolean. When enabled, glyphs wider than their cell(s) are allowed + to render into one additional neighbouring cell. + + One use case for this are fonts with wide italic characters that + "bend" into the next cell. Without this option, such glyphs will + appear "cut off". + + Another use case are fonts with "icon" characters in the Unicode + private usage area, e.g. Nerd Fonts, or Powerline Fonts and legacy + emoji characters like *WHITE FROWNING FACE*. + + Note: might impact performance depending on the font used. + Especially small font sizes can cause many overflowing glyphs + because of subpixel rendering. + + Default: _yes_. + +*render-timer* + Enables a frame rendering timer, that prints the time it takes to + render each frame, in microseconds, either on-screen, to stderr, + or both. Valid values are *none*, *osd*, *log* and + *both*. Default: _none_. + +*box-drawing-base-thickness* + Line thickness to use for *LIGHT* box drawing line characters, in + points. This value is converted to pixels using the monitor's DPI, + and then multiplied with the cell size. The end result is that a + larger font (and thus larger cells) result in thicker + lines. Default: _0.04_. + +*box-drawing-solid-shades* + Boolean. When enabled, box drawing "shades" (e.g. LIGHT SHADE, + MEDIUM SHADE and DARK SHADE) are rendered as solid blocks using a + darker variant of the current foreground color. + + When disabled, they are instead rendered as checker box pattern, + using the current foreground color as is. + + Default: _yes_. + +*delayed-render-lower*, *delayed-render-upper* + These two values control the timeouts (in nanoseconds) that are + used to mitigate screen flicker caused by clients writing large, + non-atomic screen updates. + + If a client splits up a screen update over multiple *write*(3) + calls, we may end up rendering an intermediate frame, quickly + followed by another frame with the final screen content. For + example, the client may erase part of the screen (or scroll) in + one write, and then write new content in one or more subsequent + writes. Rendering the frame when the screen has been erased, but + not yet filled with new content will be perceived as screen + flicker. + + The *real* solution to this is _Application Synchronized Updates_ + (https://gitlab.freedesktop.org/terminal-wg/specifications/-/merge_requests/2). + + The problem with this is twofold - first, it has not yet been + standardized, and thus there are not many terminal emulators that + implement it (foot *does* implement it), and second, applications + must be patched to use it. + + Until this has happened, foot offers an interim workaround; an + attempt to mitigate the screen flicker *without* affecting neither + performance nor latency. + + It is based on the fact that the screen is updated at a fixed + interval (typically 60Hz). For us, this means it does not matter + if we render a new frame at the *beginning* of a frame interval, + or at the *end*. Thus, the goal is to introduce a delay between + receiving client data and rendering the resulting state, but + without causing a frame skip. + + While it should be possible to estimate the amount of time left + until the next frame, foot's algorithm is currently not that + advanced, but is based on statistics I guess you could say - the + delay we introduce is so small that the risk of pushing the frame + over to the next frame interval is also very small. + + Now, that was a lot of text. But what is it foot actually does? + + When receiving client data, it schedules a timer, the + *delayed-render-lower*. If we do not receive any more client data + before the timer has run out, we render the frame. If however, we + do receive more data, the timer is re-scheduled. That is, each + time we receive client data, frame rendering is delayed another + *delayed-render-lower* nanoseconds. + + Now, while this works very well with most clients, it would be + possible to construct a malicious client that keeps writing data + at a slow pace. To the user, this would look like foot has frozen + as we never get to render a new frame. To prevent this, an upper + limit is set - *delayed-render-upper*. If this timer runs out, we + render the frame regardless of what the client is doing. + + If changing these values, note that the lower timeout *must* be + set lower than the upper timeout, but that this is not verified by + foot. Furthermore, both values must be less than 16ms (that is, + 16000000 nanoseconds). + + You can disable the feature altogether by setting either value to + 0. In this case, frames are rendered "as soon as possible". + + Default: lower=_500000_ (0.5ms), upper=_8333333_ (8.3ms - half a + frame interval). + +*damage-whole-window* + Boolean. When enabled, foot will 'damage' the entire window each + time a frame has been rendered. This forces the compositor to + redraw the entire window. If disabled, foot will only 'damage' + updated rows. + + There is normally *no* reason to enable this. However, it has been + seen to workaround an issue with _fractional scaling_ in _Gnome_. + + Note that enabling this option is likely to increase CPU and/or + GPU usage (by the compositor, not by foot), and may have a + negative impact on battery life. + + Default: _no_. + +*grapheme-shaping* + Boolean. When enabled, foot will use _utf8proc_ to do grapheme + cluster segmentation while parsing "printed" text. Then, when + rendering, it will use _fcft_ (if compiled with _HarfBuzz_ + support) to shape the grapheme clusters. + + This is required to render e.g. flag (emoji) sequences, keycap + sequences, modifier sequences, zero-width-joiner (ZWJ) sequences + and emoji tag sequences. It might also improve rendering of + composed characters, depending on font. + + - foot must have been compiled with utf8proc support + - fcft must have been compiled with HarfBuzz support + + This option can also be set runtime with DECSET/DECRST 2027. + + See also: *grapheme-width-method*. + + Default: _yes_ + +*grapheme-width-method* + Selects which method to use when calculating the width + (i.e. number of columns) of a grapheme cluster. One of + *wcswidth*, *double-width* and *max*. + + *wcswidth* simply adds together the individual width of all + codepoints making up the cluster. + + *double-width* does the same, but limits the maximum number of + columns to 2. This is more correct, but may break some + applications since applications typically use *wcswidth*(3) + internally to calculate the width. This results in cursor + de-synchronization issues. + + *max* uses the width of the largest codepoint in the cluster. + + Default: _double-width_ + +*font-monospace-warn* + Boolean. When enabled, foot will use heuristics to try to verify + the primary font is a monospace font, and warn if it is not. + + Disable this if you still want to use the font, even if foot + thinks it is not monospaced. + + You may also want to disable it to get slightly faster startup times. + + Default: _yes_ + +*max-shm-pool-size-mb* + This option controls the amount of virtual address space used by + the pixmap memory to which the terminal screen content is + rendered. + + It does not change how much physical memory foot uses. + + Foot uses a memory mapping trick to implement fast rendering of + interactive scrolling (typically, but applies to "slow" scrolling + in general). Example: holding down the 'up' or 'down' arrow key to + scroll in a text editor. + + For this to work, it needs a large amount of virtual address + space. Again, note that this is not physical memory. + + On a normal x64 based computer, each process has 128TB of virtual + address space, and newer ones have 64PB. This is an insane amount + and most applications do not use anywhere near that amount. + + Each foot terminal window can allocate up to 2GB of virtual + address space. With 128TB of address space, that means a maximum + of 65536 windows in server/daemon mode (for 2GB). That should be + enough, yes? + + However, the Wayland compositor also needs to allocate the same + amount of virtual address space. Thus, it has a slightly higher + chance of running out of address space since it needs to host + all running Wayland clients in the same way, at the same time. + + In the off chance that this becomes a problem for you, you can + reduce the amount used with this option. + + Or, for optimal performance, you can increase it to the maximum + allowed value, 2GB (but note that you most likely will not notice + any difference compared to the default value). + + Setting it to 0 disables the feature. + + Limitations: + - only supported on 64-bit architectures + - only supported on Linux + + Default: _512_. Maximum allowed: _2048_ (2GB). + +*sixel* + Boolean. When enabled, foot will process sixel images. Default: + _yes_ + +*dim-amount* + Amount by which dimmed text is darkened. Default: _1.5_. + +*bold-text-in-bright-amount* + Amount by which bold fonts are brightened when + *bold-text-in-bright* is set to *yes* (the *palette-based* variant + is not affected by this option). Default: _1.3_. + +*surface-bit-depth* + Selects which RGB bit depth to use for image buffers. One of + *auto*, *8-bit*, *10-bit* or *16-bit*. + + *auto* chooses bit depth depending on other settings, and + availability. + + *8-bit*, uses 8 bits for each color channel, alpha included. This + is the default when *gamma-correct-blending=no*. + + *10-bit* uses 10 bits for each RGB channel, and 2 bits for the + alpha channel. Thus, it provides higher precision color channels, + but a lower precision alpha channel. + + *16-bit* 16 bits for each color channel, alpha included. If + available, this is the default when *gamma-correct-blending=yes*. + + Note that both *10-bit* and *16-bit* are much slower than *8-bit*; + if you want to use gamma-correct blending, and if you prefer speed + (throughput and input latency) over accurate colors, you can set + *surface-bit-depth=8-bit* explicitly. + + Default: _auto_ + +# SEE ALSO + +*foot*(1), *footclient*(1) diff --git a/.config/foot/foot.ini b/.config/foot/foot.ini new file mode 100644 index 0000000..b14134e --- /dev/null +++ b/.config/foot/foot.ini @@ -0,0 +1,284 @@ +# -*- conf -*- + +# shell=$SHELL (if set, otherwise user's default shell from /etc/passwd) +term=foot # (or xterm-256color if built with -Dterminfo=disabled) +# login-shell=no + +# app-id=foot # globally set wayland app-id. Default values are "foot" and "footclient" for desktop and server mode +# title=foot +# locked-title=no + +font=IosevkaTerm Nerd Font:size=11 +# font-bold=<bold variant of regular font> +# font-italic=<italic variant of regular font> +# font-bold-italic=<bold+italic variant of regular font> +# font-size-adjustment=0.5 +# line-height=<font metrics> +# letter-spacing=0 +# horizontal-letter-offset=0 +# vertical-letter-offset=0 +# underline-offset=<font metrics> +# underline-thickness=<font underline thickness> +# strikeout-thickness=<font strikeout thickness> +# box-drawings-uses-font-glyphs=no +# dpi-aware=no +# gamma-correct-blending=no + +# initial-color-theme=1 +# initial-window-size-pixels=700x500 # Or, +# initial-window-size-chars=<COLSxROWS> +# initial-window-mode=windowed +pad=16x16 center +# resize-by-cells=yes +# resize-keep-grid=yes +resize-delay-ms=1 + +# bold-text-in-bright=no +# word-delimiters=,│`|:"'()[]{}<> +# selection-target=primary +# workers=<number of logical CPUs> +# utmp-helper=/usr/lib/utempter/utempter # When utmp backend is ‘libutempter’ (Linux) +# utmp-helper=/usr/libexec/ulog-helper # When utmp backend is ‘ulog’ (FreeBSD) + +[environment] +# name=value + +[security] +# osc52=enabled # disabled|copy-enabled|paste-enabled|enabled + +[bell] +# system=yes +# urgent=no +# notify=no +# visual=no +# command= +# command-focused=no + +[desktop-notifications] +# command=notify-send --wait --app-name ${app-id} --icon ${app-id} --category ${category} --urgency ${urgency} --expire-time ${expire-time} --hint STRING:image-path:${icon} --hint BOOLEAN:suppress-sound:${muted} --hint STRING:sound-name:${sound-name} --replace-id ${replace-id} ${action-argument} --print-id -- ${title} ${body} +# command-action-argument=--action ${action-name}=${action-label} +# close="" +# inhibit-when-focused=yes + + +[scrollback] +# lines=1000 +# multiplier=3.0 +# indicator-position=relative +# indicator-format="" + +[url] +# launch=xdg-open ${url} +# label-letters=sadfjklewcmpgh +# osc8-underline=url-mode +# regex=(((https?://|mailto:|ftp://|file:|ssh:|ssh://|git://|tel:|magnet:|ipfs://|ipns://|gemini://|gopher://|news:)|www\.)([0-9a-zA-Z:/?#@!$&*+,;=.~_%^\-]+|\([]\["0-9a-zA-Z:/?#@!$&'*+,;=.~_%^\-]*\)|\[[\(\)"0-9a-zA-Z:/?#@!$&'*+,;=.~_%^\-]*\]|"[]\[\(\)0-9a-zA-Z:/?#@!$&'*+,;=.~_%^\-]*"|'[]\[\(\)0-9a-zA-Z:/?#@!$&*+,;=.~_%^\-]*')+([0-9a-zA-Z/#@$&*+=~_%^\-]|\([]\["0-9a-zA-Z:/?#@!$&'*+,;=.~_%^\-]*\)|\[[\(\)"0-9a-zA-Z:/?#@!$&'*+,;=.~_%^\-]*\]|"[]\[\(\)0-9a-zA-Z:/?#@!$&'*+,;=.~_%^\-]*"|'[]\[\(\)0-9a-zA-Z:/?#@!$&*+,;=.~_%^\-]*')) + +# You can define your own regex's, by adding a section called +# 'regex:<ID>' with a 'regex' and 'launch' key. These can then be tied +# to a key-binding. See foot.ini(5) for details + +# [regex:your-fancy-name] +# regex=<a POSIX-Extended Regular Expression> +# launch=<path to script or application> ${match} +# +# [key-bindings] +# regex-launch=[your-fancy-name] Control+Shift+q +# regex-copy=[your-fancy-name] Control+Alt+Shift+q + +[cursor] +style=beam +blink=yes +# blink-rate=500 +# beam-thickness=1.5 +# underline-thickness=<font underline thickness> + +[mouse] +hide-when-typing=yes +# alternate-scroll-mode=yes + +[touch] +# long-press-delay=400 + +[colors] +alpha=0.8 +# alpha-mode=default # Can be `default`, `matching` or `all` +background=000000 +# foreground=ffffff +# flash=7f7f00 +# flash-alpha=0.5 + +# cursor=<inverse foreground/background> + +## Normal/regular colors (color palette 0-7) +# regular0=242424 # black +# regular1=f62b5a # red +# regular2=47b413 # green +# regular3=e3c401 # yellow +# regular4=24acd4 # blue +# regular5=f2affd # magenta +# regular6=13c299 # cyan +# regular7=e6e6e6 # white + +## Bright colors (color palette 8-15) +# bright0=616161 # bright black +# bright1=ff4d51 # bright red +# bright2=35d450 # bright green +# bright3=e9e836 # bright yellow +# bright4=5dc5f8 # bright blue +# bright5=feabf2 # bright magenta +# bright6=24dfc4 # bright cyan +# bright7=ffffff # bright white + +## dimmed colors (see foot.ini(5) man page) +# dim0=<not set> +# ... +# dim7=<not-set> + +## The remaining 256-color palette +# 16 = <256-color palette #16> +# ... +# 255 = <256-color palette #255> + +## Sixel colors +# sixel0 = 000000 +# sixel1 = 3333cc +# sixel2 = cc2121 +# sixel3 = 33cc33 +# sixel4 = cc33cc +# sixel5 = 33cccc +# sixel6 = cccc33 +# sixel7 = 878787 +# sixel8 = 424242 +# sixel9 = 545499 +# sixel10 = 994242 +# sixel11 = 549954 +# sixel12 = 995499 +# sixel13 = 549999 +# sixel14 = 999954 +# sixel15 = cccccc + +## Misc colors +# selection-foreground=<inverse foreground/background> +# selection-background=<inverse foreground/background> +# jump-labels=<regular0> <regular3> # black-on-yellow +# scrollback-indicator=<regular0> <bright4> # black-on-bright-blue +# search-box-no-match=<regular0> <regular1> # black-on-red +# search-box-match=<regular0> <regular3> # black-on-yellow +# urls=<regular3> + +[colors2] +# Alternative color theme, see man page foot.ini(5) + +[csd] +# preferred=server +# size=26 +# font=<primary font> +# color=<foreground color> +# hide-when-maximized=no +# double-click-to-maximize=yes +# border-width=0 +# border-color=<csd.color> +# button-width=26 +# button-color=<background color> +# button-minimize-color=<regular4> +# button-maximize-color=<regular2> +# button-close-color=<regular1> + +[key-bindings] +# scrollback-up-page=Shift+Page_Up Shift+KP_Page_Up +# scrollback-up-half-page=none +# scrollback-up-line=none +# scrollback-down-page=Shift+Page_Down Shift+KP_Page_Down +# scrollback-down-half-page=none +# scrollback-down-line=none +# scrollback-home=none +# scrollback-end=none +# clipboard-copy=Control+Shift+c XF86Copy +# clipboard-paste=Control+Shift+v XF86Paste +# primary-paste=Shift+Insert +# search-start=Control+Shift+r +# font-increase=Control+plus Control+equal Control+KP_Add +# font-decrease=Control+minus Control+KP_Subtract +# font-reset=Control+0 Control+KP_0 +# spawn-terminal=Control+Shift+n +# minimize=none +# maximize=none +# fullscreen=none +# pipe-visible=[sh -c "xurls | fuzzel | xargs -r firefox"] none +# pipe-scrollback=[sh -c "xurls | fuzzel | xargs -r firefox"] none +# pipe-selected=[xargs -r firefox] none +# pipe-command-output=[wl-copy] none # Copy last command's output to the clipboard +# show-urls-launch=Control+Shift+o +# show-urls-copy=none +# show-urls-persistent=none +# prompt-prev=Control+Shift+z +# prompt-next=Control+Shift+x +# unicode-input=Control+Shift+u +# color-theme-switch-1=none +# color-theme-switch-2=none +# color-theme-toggle=none +# noop=none +# quit=none + +[search-bindings] +# cancel=Control+g Control+c Escape +# commit=Return KP_Enter +# find-prev=Control+r +# find-next=Control+s +# cursor-left=Left Control+b +# cursor-left-word=Control+Left Mod1+b +# cursor-right=Right Control+f +# cursor-right-word=Control+Right Mod1+f +# cursor-home=Home Control+a +# cursor-end=End Control+e +# delete-prev=BackSpace +# delete-prev-word=Mod1+BackSpace Control+BackSpace +# delete-next=Delete +# delete-next-word=Mod1+d Control+Delete +# delete-to-start=Control+u +# delete-to-end=Control+k +# extend-char=Shift+Right +# extend-to-word-boundary=Control+w Control+Shift+Right +# extend-to-next-whitespace=Control+Shift+w +# extend-line-down=Shift+Down +# extend-backward-char=Shift+Left +# extend-backward-to-word-boundary=Control+Shift+Left +# extend-backward-to-next-whitespace=none +# extend-line-up=Shift+Up +# clipboard-paste=Control+v Control+Shift+v Control+y XF86Paste +# primary-paste=Shift+Insert +# unicode-input=none +# scrollback-up-page=Shift+Page_Up Shift+KP_Page_Up +# scrollback-up-half-page=none +# scrollback-up-line=none +# scrollback-down-page=Shift+Page_Down Shift+KP_Page_Down +# scrollback-down-half-page=none +# scrollback-down-line=none +# scrollback-home=none +# scrollback-end=none + +[url-bindings] +# cancel=Control+g Control+c Control+d Escape +# toggle-url-visible=t + +[text-bindings] +# \x03=Mod4+c # Map Super+c -> Ctrl+c + +[mouse-bindings] +# scrollback-up-mouse=BTN_WHEEL_BACK +# scrollback-down-mouse=BTN_WHEEL_FORWARD +# font-increase=Control+BTN_WHEEL_BACK +# font-decrease=Control+BTN_WHEEL_FORWARD +# selection-override-modifiers=Shift +# primary-paste=BTN_MIDDLE +# select-begin=BTN_LEFT +# select-begin-block=Control+BTN_LEFT +# select-extend=BTN_RIGHT +# select-extend-character-wise=Control+BTN_RIGHT +# select-word=BTN_LEFT-2 +# select-word-whitespace=Control+BTN_LEFT-2 +# select-quote = BTN_LEFT-3 +# select-row=BTN_LEFT-4 + +# vim: ft=dosini + diff --git a/.config/helix/config.toml b/.config/helix/config.toml new file mode 100644 index 0000000..57be557 --- /dev/null +++ b/.config/helix/config.toml @@ -0,0 +1,12 @@ +editor.bufferline = "multiple" +theme = "onedark" + +[editor.soft-wrap] +enable = true +max-wrap = 25 # increase value to reduce forced mid-word wrapping +max-indent-retain = 0 +wrap-indicator = "" # set wrap-indicator to "" to hide it + +[editor.auto-save] +after-delay.enable = true +after-delay.timeout = 100 diff --git a/.config/helix/runtime/themes/onedark.toml b/.config/helix/runtime/themes/onedark.toml new file mode 100644 index 0000000..31a9213 --- /dev/null +++ b/.config/helix/runtime/themes/onedark.toml @@ -0,0 +1,117 @@ +# Author : Gokul Soumya <gokulps15@gmail.com> + +"tag" = { fg = "red" } +"attribute" = { fg = "yellow" } +"comment" = { fg = "light-gray", modifiers = ["italic"] } +"constant" = { fg = "cyan" } +"constant.numeric" = { fg = "gold" } +"constant.builtin" = { fg = "gold" } +"constant.character.escape" = { fg = "gold" } +"constructor" = { fg = "blue" } +"function" = { fg = "blue" } +"function.builtin" = { fg = "blue" } +"function.macro" = { fg = "purple" } +"keyword" = { fg = "red" } +"keyword.control" = { fg = "purple" } +"keyword.control.import" = { fg = "red" } +"keyword.directive" = { fg = "purple" } +"keyword.storage" = { fg = "purple" } +"label" = { fg = "purple" } +"namespace" = { fg = "blue" } +"operator" = { fg = "purple" } +"keyword.operator" = { fg = "purple" } +"special" = { fg = "blue" } +"string" = { fg = "green" } +"type" = { fg = "yellow" } +# "variable" = { fg = "blue" } +"variable.builtin" = { fg = "blue" } +"variable.parameter" = { fg = "red" } +"variable.other.member" = { fg = "red" } + +"markup.heading" = { fg = "red" } +"markup.raw.inline" = { fg = "green" } +"markup.bold" = { fg = "gold", modifiers = ["bold"] } +"markup.italic" = { fg = "purple", modifiers = ["italic"] } +"markup.strikethrough" = { modifiers = ["crossed_out"] } +"markup.list" = { fg = "red" } +"markup.quote" = { fg = "yellow" } +"markup.link.url" = { fg = "cyan", modifiers = ["underlined"]} +"markup.link.text" = { fg = "purple" } + +"diff.plus" = "green" +"diff.delta" = "gold" +"diff.minus" = "red" + +"diagnostic.info".underline = { color = "blue", style = "curl" } +"diagnostic.hint".underline = { color = "green", style = "curl" } +"diagnostic.warning".underline = { color = "yellow", style = "curl" } +"diagnostic.error".underline = { color = "red", style = "curl" } +"diagnostic.unnecessary" = { modifiers = ["dim"] } +"diagnostic.deprecated" = { modifiers = ["crossed_out"] } +"info" = { fg = "blue", modifiers = ["bold"] } +"hint" = { fg = "green", modifiers = ["bold"] } +"warning" = { fg = "yellow", modifiers = ["bold"] } +"error" = { fg = "red", modifiers = ["bold"] } + +# "ui.background" = { bg = "black" } +"ui.background" = { bg = "transparent" } +"ui.virtual" = { fg = "faint-gray" } +"ui.virtual.indent-guide" = { fg = "faint-gray" } +"ui.virtual.whitespace" = { fg = "light-gray" } +"ui.virtual.ruler" = { bg = "gray" } +"ui.virtual.inlay-hint" = { fg = "light-gray" } +"ui.virtual.jump-label" = { fg = "light-gray", modifiers = ["bold"] } + +"ui.cursor" = { fg = "white", modifiers = ["reversed"] } +"ui.cursor.primary" = { fg = "white", modifiers = ["reversed"] } +"ui.cursor.match" = { fg = "blue", modifiers = ["underlined"]} + +"ui.selection" = { bg = "faint-gray" } +"ui.selection.primary" = { bg = "gray" } +"ui.cursorline.primary" = { bg = "light-black" } + +"ui.highlight" = { bg = "gray" } +"ui.highlight.frameline" = { bg = "#97202a" } + +"ui.linenr" = { fg = "linenr" } +"ui.linenr.selected" = { fg = "white" } + +"ui.statusline" = { fg = "white", bg = "light-black" } +"ui.statusline.inactive" = { fg = "light-gray", bg = "light-black" } +"ui.statusline.normal" = { fg = "light-black", bg = "blue", modifiers = ["bold"] } +"ui.statusline.insert" = { fg = "light-black", bg = "green", modifiers = ["bold"] } +"ui.statusline.select" = { fg = "light-black", bg = "purple", modifiers = ["bold"] } + +"ui.bufferline" = { fg = "light-gray", bg = "light-black" } +"ui.bufferline.active" = { fg = "light-black", bg = "blue", underline = { color = "light-black", style = "line" } } +"ui.bufferline.background" = { bg = "light-black" } + +"ui.text" = { fg = "white" } +"ui.text.directory" = { fg = "blue" } +"ui.text.focus" = { fg = "white", bg = "light-black", modifiers = ["bold"] } + +"ui.help" = { fg = "white", bg = "gray" } +"ui.popup" = { bg = "gray" } +"ui.window" = { fg = "gray" } +"ui.menu" = { fg = "white", bg = "gray" } +"ui.menu.selected" = { fg = "black", bg = "blue" } +"ui.menu.scroll" = { fg = "white", bg = "light-gray" } + +"ui.debug" = { fg = "red" } + +[palette] + +yellow = "#E5C07B" +blue = "#61AFEF" +red = "#E06C75" +purple = "#C678DD" +green = "#98C379" +gold = "#D19A66" +cyan = "#56B6C2" +white = "#ABB2BF" +black = "#282C34" +light-black = "#2C323C" +gray = "#3E4452" +faint-gray = "#3B4048" +light-gray = "#5C6370" +linenr = "#4B5263" diff --git a/.config/hypr/hypridle.conf b/.config/hypr/hypridle.conf new file mode 100644 index 0000000..bd71375 --- /dev/null +++ b/.config/hypr/hypridle.conf @@ -0,0 +1,22 @@ +general { + lock_cmd = pidof hyprlock || hyprlock # avoid starting multiple hyprlock instances. + before_sleep_cmd = loginctl lock-session # lock before suspend. + after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display. +} + +listener { + timeout = 60 # 2.5min. + on-timeout = brightnessctl -s set 10 # set monitor backlight to minimum, avoid 0 on OLED monitor. + on-resume = brightnessctl -r # monitor backlight restore. +} + +listener { + timeout = 70 # 5min + on-timeout = loginctl lock-session # lock screen when timeout has passed +} + +listener { + timeout = 80 # 5.5min + on-timeout = hyprctl dispatch dpms off # screen off when timeout has passed + on-resume = hyprctl dispatch dpms on # screen on when activity is detected after timeout has fired. +} diff --git a/.config/hypr/hyprland.conf b/.config/hypr/hyprland.conf new file mode 100644 index 0000000..6f27426 --- /dev/null +++ b/.config/hypr/hyprland.conf @@ -0,0 +1,371 @@ +# Refer to the wiki for more information. +# https://wiki.hyprland.org/Configuring/Configuring-Hyprland/ + +# Please note not all available settings / options are set here. +# For a full list, see the wiki + +# You can split this configuration into multiple files +# Create your files separately and then link them to this file like this: +# source = ~/.config/hypr/myColors.conf + + +################ +### MONITORS ### +################ + +# See https://wiki.hyprland.org/Configuring/Monitors/ +monitor=eDP-1, 1920x1080@144, auto, 1 +# monitor=HDMI-A-1, 1920x1080@60.02Hz, auto, 1, mirror, eDP-1 +# monitor=HDMI-A-1, 1920x1080@60, auto, 1, mirror, eDP-1 +# monitor=HDMI-A-1, 2560x1080@60.00, auto, 1 + + +################### +### MY PROGRAMS ### +################### + +# See https://wiki.hyprland.org/Configuring/Keywords/ + +# Set programs that you use +$terminal = foot +$fileManager = dolphin +$menu = tofi-drun +$browser = brave +$lock = loginctl lock-session +$screenshot_part = grimblast copysave area ~/Screenshots/$(date +'%s.png') +$screenshot_full = grimblast copysave screen ~/Screenshots/$(date +'%s.png') +$color_pick = hyprpicker --autocopy +$messaging = vesktop +$calculator = flatpak run org.gnome.Calculator +$refresh = random-paper && hyprctl hyprpaper reload ,"~/wallpapers/active.png" + + +################# +### AUTOSTART ### +################# + +# Autostart necessary processes (like notifications daemons, status bars, etc.) +# Or execute your favorite apps at launch like this: + +execr-once = random-paper && hyprpaper +execr-once = hyprctl setcursor phinger-cursors-light 24 +execr-once = hypridle +execr-once = systemctl --user start hyprpolkitagent +execr-once = eval $(/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh) +exec-once = [workspace 1 silent] $browser +exec-once = [workspace 11 silent] $messaging +exec-once = [workspace 12 silent] foot bluetui +exec-once = [workspace 13 silent] foot nmtuii +exec-once = [workspace 14 silent] foot btop + + +############################# +### ENVIRONMENT VARIABLES ### +############################# + +# See https://wiki.hyprland.org/Configuring/Environment-variables/ +# XDG Specifications +env = XDG_CURRENT_DESKTOP,Hyprland +env = XDG_SESSION_TYPE,wayland +env = XDG_SESSION_DESKTOP,Hyprland +# QT Variables +env = QT_AUTO_SCREEN_SCALE_FACTOR,1 +env = QT_QPA_PLATFORM,wayland;xcb +env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1 +env = QT_QPA_PLATFORMTHEME,qt5ct +# NVIDIA Specific +env = GBM_BACKEND,nvidia-drm +env = __GLX_VENDOR_LIBRARY_NAME,nvidia +env = LIBVA_DRIVER_NAME,nvidia # Hardware acceleration on NVIDIA GPUs +env = NVD_BACKEND,direct # https://wiki.hypr.land/Nvidia/#va-api-hardware-video-acceleration +# Theming Related Variables +env = XCURSOR_SIZE,24 + +cursor:no_hardware_cursors = true + +##################### +### LOOK AND FEEL ### +##################### + +# Refer to https://wiki.hyprland.org/Configuring/Variables/ + +# https://wiki.hyprland.org/Configuring/Variables/#general +general { + gaps_in = 4 + gaps_out = 8 + + border_size = 2 + + # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors + col.active_border = rgba(e6003aff) rgba(3c3ce6ff) 45deg + col.inactive_border = rgba(000000dd) + + # Set to true enable resizing windows by clicking and dragging on borders and gaps + resize_on_border = true + + # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on + allow_tearing = false + + layout = dwindle +} + +# https://wiki.hyprland.org/Configuring/Variables/#decoration +decoration { + rounding = 0 + + # Change transparency of focused and unfocused windows + active_opacity = 1.0 + inactive_opacity = 1.0 + + # https://wiki.hyprland.org/Configuring/Variables/#blur + blur { + enabled = true + size = 2 + passes = 2 + } + + shadow:enabled = false +} + +# https://wiki.hyprland.org/Configuring/Variables/#animations +animations { + enabled = true + + # Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more + + animation = windows, 1, 2, default, slide + animation = fade, 0 + animation = workspaces, 1, 2, default +} + +# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more +dwindle { + pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below + preserve_split = true # You probably want this +} + +# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more +master { + new_status = master +} + +# https://wiki.hyprland.org/Configuring/Variables/#misc +misc { + force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers + disable_hyprland_logo = true # If true disables the random hyprland logo / anime girl background. :( +} + + +############# +### INPUT ### +############# + +# https://wiki.hyprland.org/Configuring/Variables/#input +input { + kb_layout = nus # Custom xkb layout + kb_variant = + kb_model = + kb_options = + kb_rules = + + numlock_by_default = true + + repeat_delay = 250 + repeat_rate = 50 + + follow_mouse = 1 + sensitivity = 0 # -1.0 - 1.0, 0 means no modification. + + touchpad { + natural_scroll = false + } +} + +# https://wiki.hyprland.org/Configuring/Variables/#gestures +gestures { + workspace_swipe = false +} + +# Example per-device config +# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more +# device { +# name = epic-mouse-v1 +# sensitivity = -0.5 +# } + + +################### +### KEYBINDINGS ### +################### + +# See https://wiki.hyprland.org/Configuring/Keywords/ +$mainMod = SUPER # Sets "Windows" key as main modifier + +# See https://wiki.hyprland.org/Configuring/Binds/ for more +bind = $mainMod SHIFT, RETURN, exec, $terminal +bind = $mainMod, Y, exec, $browser +bind = $mainMod, C, killactive, +bind = $mainMod SHIFT, Q, exit, +bind = $mainMod, E, exec, $fileManager +bind = $mainMod, O, togglefloating, +bind = $mainMod, SPACE, exec, $menu +bind = $mainMod, P, pseudo, # dwindle +bind = $mainMod, J, togglesplit, # dwindle +bind = $mainMod, F, fullscreen +bind = $mainMod, S, exec, $screenshot_part +bind = $mainMod SHIFT, S, exec, $screenshot_full +bind = $mainMod, G, swapnext +bind = $mainMod, BACKSLASH, exec, $color_pick +bind = $mainMod CTRL SHIFT, A, exec, shutdown now +bind = ,F12, exec, $lock +bind = ,code:157, exec, $refresh +bind = ,code:148, exec, $calculator + +# Move focus with mainMod + arrow keys +bind = $mainMod, left, movefocus, l +bind = $mainMod, right, movefocus, r +bind = $mainMod, up, movefocus, u +bind = $mainMod, down, movefocus, d + +# Special workspaces +# Messaging +bind = $mainMod, V, workspace, 11 +bind = $mainMod, V, exec, $messaging +# Bluetooth control (bluetui) +bind = $mainMod, B, workspace, 12 +bind = $mainMod, B, exec, ps aux | grep "foot bluetui" | grep -v grep || foot bluetui +# Network control (nmtui) +bind = $mainMod, N, workspace, 13 +bind = $mainMod, N, exec, ps aux | grep "foot nmtuii" | grep -v grep || foot nmtuii +# Memory and system control (BTOP) +bind = $mainMod, M, workspace, 14 +bind = $mainMod, M, exec, ps aux | grep "foot btop" | grep -v grep || foot btop + +# Switch workspaces with mainMod + [0-9] +bind = $mainMod, 1, workspace, 1 +bind = $mainMod, 2, workspace, 2 +bind = $mainMod, 3, workspace, 3 +bind = $mainMod, 4, workspace, 4 +bind = $mainMod, 5, workspace, 5 +bind = $mainMod, 6, workspace, 6 +bind = $mainMod, 7, workspace, 7 +bind = $mainMod, 8, workspace, 8 +bind = $mainMod, 9, workspace, 9 +bind = $mainMod, 0, workspace, 10 + +# Move active window and switch to a workspace with mainMod + SHIFT + [0-9] +bind = $mainMod SHIFT, 1, movetoworkspace, 1 +bind = $mainMod SHIFT, 2, movetoworkspace, 2 +bind = $mainMod SHIFT, 3, movetoworkspace, 3 +bind = $mainMod SHIFT, 4, movetoworkspace, 4 +bind = $mainMod SHIFT, 5, movetoworkspace, 5 +bind = $mainMod SHIFT, 6, movetoworkspace, 6 +bind = $mainMod SHIFT, 7, movetoworkspace, 7 +bind = $mainMod SHIFT, 8, movetoworkspace, 8 +bind = $mainMod SHIFT, 9, movetoworkspace, 9 +bind = $mainMod SHIFT, 0, movetoworkspace, 10 + +# Move active window to a workspace with mainMod + CTRL + [0-9] +bind = $mainMod CTRL, 1, movetoworkspacesilent, 1 +bind = $mainMod CTRL, 2, movetoworkspacesilent, 2 +bind = $mainMod CTRL, 3, movetoworkspacesilent, 3 +bind = $mainMod CTRL, 4, movetoworkspacesilent, 4 +bind = $mainMod CTRL, 5, movetoworkspacesilent, 5 +bind = $mainMod CTRL, 6, movetoworkspacesilent, 6 +bind = $mainMod CTRL, 7, movetoworkspacesilent, 7 +bind = $mainMod CTRL, 8, movetoworkspacesilent, 8 +bind = $mainMod CTRL, 9, movetoworkspacesilent, 9 +bind = $mainMod CTRL, 0, movetoworkspacesilent, 10 + +# Example special workspace (scratchpad) +# bind = $mainMod, S, togglespecialworkspace, magic +# bind = $mainMod SHIFT, S, movetoworkspace, special:magic + +# Scroll through existing workspaces with mainMod + scroll +bind = $mainMod, mouse_down, workspace, e+1 +bind = $mainMod, mouse_up, workspace, e-1 + +# Move/resize windows with mainMod + LMB/RMB and dragging +# Flag "m" means it uses the mouse +bindm = $mainMod, mouse:272, movewindow +bindm = $mainMod, mouse:273, resizewindow + +# Multimedia keys for volume and brightness +# Flag "l" means you can use it on the lockscreen +# Requires playerctl +bindl = , XF86AudioNext, exec, playerctl next +bindl = , XF86AudioPause, exec, playerctl play-pause +bindl = , XF86AudioPlay, exec, playerctl play-pause +bindl = , XF86AudioPrev, exec, playerctl previous + +# Flag "e" means it will repeat when held down +bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ +bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- +bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle +bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle +# Requires brightnessctl +bindel = ,XF86MonBrightnessUp, exec, brightnessctl s 10%+ +bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 10%- + +############################## +### WINDOWS AND WORKSPACES ### +############################## + +# See https://wiki.hypr.land/Configuring/Window-Rules/ for more +# See https://wiki.hypr.land/Configuring/Workspace-Rules/ for workspace rules + +# Example windowrule v1 +# windowrule = float, ^(kitty)$ + +# Example windowrule v2 +# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ + +# Ignore maximize requests from apps. You'll probably like this. +windowrule = suppressevent maximize, class:.* + +# Fix some dragging issues with XWayland +windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0 + +# Float some windows +windowrule = float,class:^(confirm)$ +windowrule = float,class:^(dialog)$ +windowrule = float,class:^(download)$ +windowrule = float,class:^(notification)$ +windowrule = float,class:^(error)$ +windowrule = float,class:^(confirmreset)$ +windowrule = float,title:^(Open File)$ +windowrule = float,title:^(branchdialog)$ +windowrule = float,title:^(Confirm to replace files) +windowrule = float,title:^(File Operation Progress) +windowrule = float,title:^(Picture-in-Picture)$ +windowrule = float,class:^(gpick)$ +windowrule = float,class:^(com.github.hluk.copyq) +windowrule = float,class:^(org.keepassxc.KeePassXC) +windowrule = float,title:^(Save)$ +windowrule = float,title:^(All Files)$ +windowrule = float,title:^(Calculator)$ + +# Vesktop always opens fullscreen on workspace 6 +windowrule = workspace 11 silent, class:^(vesktop)$ + +# Control panel windows have no animations +windowrule = noanim, workspace:11 +windowrule = noanim, workspace:12 +windowrule = noanim, workspace:13 +windowrule = noanim, workspace:14 +# Control panel workspaces have no borders +workspace = r[11-14], border:false, gapsin:0, gapsout:0 + +# Idleinhibit when fullscreen +windowrule = idleinhibit fullscreen, focus:1 + +# Fix Chromium context menus +windowrule = noblur,class:^()$,title:^()$ + +# Fix JetBrains IDEs +windowrule = noinitialfocus,class:^jetbrains-.*$,floating:1,title:^$|^\s$|^win\d+$ + +# No gaps when only (https://wiki.hypr.land/Configuring/Workspace-Rules/#smart-gaps) +workspace = w[tv1], gapsout:0, gapsin:0 +workspace = f[1], gapsout:0, gapsin:0 + diff --git a/.config/hypr/hyprlock.conf b/.config/hypr/hyprlock.conf new file mode 100644 index 0000000..6ab74be --- /dev/null +++ b/.config/hypr/hyprlock.conf @@ -0,0 +1,109 @@ +general { + grace = 4 + hide_cursor = true +} + +background { + monitor = + path = ~/wallpapers/active.png + + blur_size = 2 + blur_passes = 2 + noise = 0.05 + contrast = 1 + brightness = 0.8 + vibrancy = 1 + vibrancy_darkness = 0 +} + +input-field { + monitor = + size = 250, 50 + outline_thickness = 4 + dots_size = 0.33 + dots_spacing = 0.5 + dots_center = true + + fade_on_empty = true + hide_input = false + placeholder_text = + + position = 0, 200 + halign = center + valign = bottom + + fail_text = $ATTEMPTS + check_color = rgba(00000000) + fail_color = rgba(ff0000ff) + font_family = JetBrains Mono Nerd Font + rounding = 10 + + inner_color = rgba(00000000) + outer_color = rgba(00000000) + font_color = rgb(ffffff) +} + +# Date +label { + monitor = + text = cmd[update:18000000] echo "<b>"$(date +'%A, %B %-d')"</b>" + color = rgba(ffffffff) + font_size = 34 + font_family = JetBrains Mono Nerd Font 10 + + position = 0, 0 + halign = center + valign = center +} + +# Time +label { + monitor = + text = cmd[update:1000] echo "<b><big>$(date +"%H:%M:%S")</big></b>" + color = rgba(ffffffff) + font_size = 94 + font_family = JetBrains Mono Nerd Font 10 + + position = 0, 100 + halign = center + valign = center +} + +# User +label { + monitor = + text = <b>$USER</b> + color = rgba(ffffffff) + font_size = 18 + font_family = JetBrains Mono Nerd Font 10 + + position = 0, 100 + halign = center + valign = bottom +} + +# Contact info +label { + monitor = + text = <b>Ted Pier<br/>Email ted@miningtcup.me<br/>Call or text 650-512-9635</b> + color = rgba(ffffffff) + font_size = 11 + font_family = JetBrains Mono Nerd Font 10 + + position = 8, 8 + halign = left + valign = bottom +} + +# Battery info +label { + monitor = + text = cmd[update:1000] echo "<b>$(cat /sys/class/power_supply/BAT0/status) $(cat /sys/class/power_supply/BAT0/capacity)%</b>" + color = rgba(ffffffff) + font_size = 11 + font_family = JetBrains Mono Nerd Font 10 + + position = -8, -8 + halign = right + valign = top +} diff --git a/.config/hypr/hyprpaper.conf b/.config/hypr/hyprpaper.conf new file mode 100644 index 0000000..e2353fa --- /dev/null +++ b/.config/hypr/hyprpaper.conf @@ -0,0 +1,2 @@ +reload = ~/wallpapers/active.png +wallpaper = , ~/wallpapers/active.png diff --git a/.config/starship.toml b/.config/starship.toml new file mode 100644 index 0000000..c7c69c5 --- /dev/null +++ b/.config/starship.toml @@ -0,0 +1,25 @@ +"$schema" = 'https://starship.rs/config-schema.json' + +add_newline = true + +format = ''' +\[ $username $directory \] +$character ''' + +[username] +style_user = 'cyan bold' +style_root = 'bg:white fg:black bold' +format = '[$user]($style)' +disabled = false +show_always = true + +[directory] +style = 'blue bold' +truncation_length = 8 +truncation_symbol = '…/' +format = '[$path]($style)' + +[character] +format = '[$symbol]($style)' +success_symbol = '[\$](bold green)' +error_symbol = '[\$](bold red)' diff --git a/.config/tofi/config b/.config/tofi/config new file mode 100644 index 0000000..968e4c5 --- /dev/null +++ b/.config/tofi/config @@ -0,0 +1,320 @@ +# Default config for tofi +# +# Copy this file to ~/.config/tofi/config and get customising! +# +# A complete reference of available options can be found in `man 5 tofi`. + +# +### Fonts +# + # Font to use, either a path to a font file or a name. + # + # If a path is given, tofi will startup much quicker, but any + # characters not in the chosen font will fail to render. + # + # Otherwise, fonts are interpreted in Pango format. + font = "/usr/share/fonts/TTF/IosevkaTermNerdFont-Regular.ttf" + + # Point size of text. + font-size = 11 + + # Comma separated list of OpenType font feature settings to apply, + # if supported by the chosen font. The format is similar to the CSS + # "font-feature-settings" property. + # + # Examples: + # + # font-features = "smcp, c2sc" (all small caps) + # font-features = "liga 0" (disable ligatures) + font-features = "" + + # Comma separated list of OpenType font variation settings to apply + # to variable fonts. The format is similar to the CSS + # "font-variation-settings" property. + # + # Examples: + # + # font-variations = "wght 900" (Extra bold) + # font-variations = "wdth 25, slnt -10" (Narrow and slanted) + font-variations = "" + + # Perform font hinting. Only applies when a path to a font has been + # specified via `font`. Disabling font hinting speeds up text + # rendering appreciably, but will likely look poor at small font pixel + # sizes. + hint-font = true + +# +### Text theming +# + # Default text color + # + # All text defaults to this color if not otherwise specified. + text-color = #FFFFFF + + # All pieces of text have the same theming attributes available: + # + # *-color + # Foreground color + # + # *-background + # Background color + # + # *-background-padding + # Background padding in pixels (comma-delimited, CSS-style list). + # See "DIRECTIONAL VALUES" under `man 5 tofi` for more info. + # + # *-background-corner-radius + # Radius of background box corners in pixels + + # Prompt text theme + # prompt-color = #FFFFFF + prompt-background = #00000000 + prompt-background-padding = 0 + prompt-background-corner-radius = 0 + + # Placeholder text theme + placeholder-color = #FFFFFFA8 + placeholder-background = #00000000 + placeholder-background-padding = 0 + placeholder-background-corner-radius = 0 + + # Input text theme + # input-color = #FFFFFF + input-background = #00000000 + input-background-padding = 0 + input-background-corner-radius = 0 + + # Default result text theme + # default-result-color = #FFFFFF + default-result-background = #00000000 + default-result-background-padding = 0 + default-result-background-corner-radius = 0 + + # Alternate (even-numbered) result text theme + # + # If unspecified, these all default to the corresponding + # default-result-* attribute. + # + # alternate-result-color = #FFFFFF + # alternate-result-background = #00000000 + # alternate-result-background-padding = 0 + # alternate-result-background-corner-radius = 0 + + # Selection text + selection-color = #F92672 + selection-background = #00000000 + selection-background-padding = 0 + selection-background-corner-radius = 0 + + # Matching portion of selection text + selection-match-color = #00000000 + + +# +### Text cursor theme +# + # Style of the optional text cursor. + # + # Supported values: bar, block, underscore + text-cursor-style = bar + + # Color of the text cursor + # + # If unspecified, defaults to the same as input-color + # text-cursor-color = #FFFFFF + + # Color of text behind the text cursor when text-cursor-style = block + # + # If unspecified, defaults to the same as background-color + # text-cursor-background = #000000 + + # Corner radius of the text cursor + text-cursor-corner-radius = 0 + + # Thickness of the bar and underscore text cursors. + # + # If unspecified, defaults to a font-dependent value when + # text-cursor-style = underscore, or to 2 otherwise. + # text-cursor-thickness = 2 + +# +### Text layout +# + # Prompt to display. + prompt-text = "run: " + + # Extra horizontal padding between prompt and input. + prompt-padding = 0 + + # Placeholder input text. + placeholder-text = "" + + # Maximum number of results to display. + # If 0, tofi will draw as many results as it can fit in the window. + num-results = 0 + + # Spacing between results in pixels. Can be negative. + result-spacing = 0 + + # List results horizontally. + horizontal = false + + # Minimum width of input in horizontal mode. + min-input-width = 0 + +# +### Window theming +# + # Width and height of the window. Can be pixels or a percentage. + width = 640 + height = 360 + + # Window background color + background-color = #000000CC + + # Width of the border outlines in pixels. + outline-width = 1 + + # Border outline color + outline-color = #fcbfff + + # Width of the border in pixels. + border-width = 0 + + # Border color + border-color = #000000CC + + # Radius of window corners in pixels. + corner-radius = 0 + + # Padding between borders and text. Can be pixels or a percentage. + padding-top = 16 + padding-bottom = 16 + padding-left = 16 + padding-right = 16 + + # Whether to clip text drawing to be within the specified padding. This + # is mostly important for allowing text to be inset from the border, + # while still allowing text backgrounds to reach right to the edge. + clip-to-padding = true + + # Whether to scale the window by the output's scale factor. + scale = true + +# +### Window positioning +# + # The name of the output to appear on. An empty string will use the + # default output chosen by the compositor. + output = "" + + # Location on screen to anchor the window to. + # + # Supported values: top-left, top, top-right, right, bottom-right, + # bottom, bottom-left, left, center. + anchor = center + + # Set the size of the exclusive zone. + # + # A value of -1 means ignore exclusive zones completely. + # A value of 0 will move tofi out of the way of other windows' zones. + # A value greater than 0 will set that much space as an exclusive zone. + # + # Values greater than 0 are only meaningful when tofi is anchored to a + # single edge. + exclusive-zone = -1 + + # Window offset from edge of screen. Only has an effect when anchored + # to the relevant edge. Can be pixels or a percentage. + margin-top = 0 + margin-bottom = 0 + margin-left = 0 + margin-right = 0 + +# +### Behaviour +# + # Hide the mouse cursor. + hide-cursor = true + + # Show a text cursor in the input field. + text-cursor = false + + # Sort results by number of usages in run and drun modes. + history = true + + # Specify an alternate file to read and store history information + # from / to. This shouldn't normally be needed, and is intended to + # facilitate the creation of custom modes. + # history-file = /path/to/histfile + + # Select the matching algorithm used. If normal, substring matching is + # used, weighted to favour matches closer to the beginning of the + # string. If prefix, only substrings at the beginning of the string are + # matched. If fuzzy, searching is performed via a simple fuzzy matching + # algorithm. + # + # Supported values: normal, prefix, fuzzy + # matching-algorithm = normal + + # If true, require a match to allow a selection to be made. If false, + # making a selection with no matches will print input to stdout. + # In drun mode, this is always true. + require-match = true + + # If true, automatically accept a result if it is the only one + # remaining. If there's only one result on startup, window creation is + # skipped altogether. + auto-accept-single = false + + # If true, typed input will be hidden, and what is displayed (if + # anything) is determined by the hidden-character option. + hide-input = false + + # Replace displayed input characters with a character. If the empty + # string is given, input will be completely hidden. + # This option only has an effect when hide-input is set to true. + hidden-character = "*" + + # If true, use physical keys for shortcuts, regardless of the current + # keyboard layout. If false, use the current layout's keys. + # physical-keybindings = true + + # Instead of printing the selected entry, print the 1-based index of + # the selection. This option has no effect in run or drun mode. If + # require-match is set to false, non-matching input will still result + # in the input being printed. + # print-index = false + + # If true, directly launch applications on selection when in drun mode. + # Otherwise, just print the command line to stdout. + drun-launch = true + + # The terminal to run terminal programs in when in drun mode. + # This option has no effect if drun-launch is set to true. + # Defaults to the value of the TERMINAL environment variable. + terminal = foot + + # Delay keyboard initialisation until after the first draw to screen. + # This option is experimental, and will cause tofi to miss keypresses + # for a short time after launch. The only reason to use this option is + # performance on slow systems. + late-keyboard-init = false + + # If true, allow multiple simultaneous processes. + # If false, create a lock file on startup to prevent multiple instances + # from running simultaneously. + multi-instance = false + + # Assume input is plain ASCII, and disable some Unicode handling + # functions. This is faster, but means e.g. a search for "e" will not + # match "é". + ascii-input = true + +# +### Inclusion +# + # Configs can be split between multiple files, and then included + # within each other. + # include = /path/to/config diff --git a/.config/vesktop/settings/quickCss.css b/.config/vesktop/settings/quickCss.css new file mode 100644 index 0000000..30318ba --- /dev/null +++ b/.config/vesktop/settings/quickCss.css @@ -0,0 +1,21 @@ +.bar_c38106, +#app-mount>div.appAsidePanelWrapper_a3002d>div.notAppAsidePanel_a3002d>div.app_a3002d>div>div.layers__960e4.layers__160d8>div>div>div>div.content_c48ade>div.sidebar_c48ade.theme-dark.theme-darker.images-dark>div.sidebarList_c48ade.sidebarListRounded_c48ade>nav>div.scroller__99e7c.thin__99f8c.scrollerBase__99f8c.fade__99f8c>ul>li:nth-child(3) +{ + display: none; +} + +.base_c48ade { + grid-template-rows: [top] 0 [titleBarEnd] min-content [noticeEnd] 1fr [end]; +} + +.tutorialContainer__1f388 { + margin-top: 16px; +} + +.sidebarListRounded_c48ade { + border-top-left-radius: 0; +} + +#app-mount > div.appAsidePanelWrapper_a3002d > div.notAppAsidePanel_a3002d > div.app_a3002d > div > div.layers__960e4.layers__160d8 > div > div > div > div.content_c48ade > div.sidebar_c48ade.theme-dark.theme-darker.images-dark > div.sidebarList_c48ade.sidebarListRounded_c48ade > nav > div.scroller__99e7c.thin__99f8c.scrollerBase__99f8c.fade__99f8c > ul > div.sectionDivider__35e86 { + margin-top: 8px; +} \ No newline at end of file diff --git a/.config/vesktop/settings/settings.json b/.config/vesktop/settings/settings.json new file mode 100644 index 0000000..a276a73 --- /dev/null +++ b/.config/vesktop/settings/settings.json @@ -0,0 +1,671 @@ +{ + "autoUpdate": true, + "autoUpdateNotification": true, + "useQuickCss": true, + "themeLinks": [], + "enabledThemes": [], + "enableReactDevtools": false, + "frameless": false, + "transparent": false, + "winCtrlQ": false, + "disableMinSize": false, + "winNativeTitleBar": false, + "plugins": { + "ChatInputButtonAPI": { + "enabled": true + }, + "CommandsAPI": { + "enabled": true + }, + "DynamicImageModalAPI": { + "enabled": true + }, + "MemberListDecoratorsAPI": { + "enabled": false + }, + "MessageAccessoriesAPI": { + "enabled": true + }, + "MessageDecorationsAPI": { + "enabled": false + }, + "MessageEventsAPI": { + "enabled": true + }, + "MessagePopoverAPI": { + "enabled": true + }, + "MessageUpdaterAPI": { + "enabled": true + }, + "ServerListAPI": { + "enabled": false + }, + "UserSettingsAPI": { + "enabled": true + }, + "AccountPanelServerProfile": { + "enabled": false + }, + "AlwaysAnimate": { + "enabled": true + }, + "AlwaysExpandRoles": { + "enabled": true + }, + "AlwaysTrust": { + "enabled": true, + "domain": true, + "file": true + }, + "AnonymiseFileNames": { + "enabled": false + }, + "AppleMusicRichPresence": { + "enabled": false + }, + "WebRichPresence (arRPC)": { + "enabled": false + }, + "BANger": { + "enabled": false + }, + "BetterFolders": { + "enabled": false + }, + "BetterGifAltText": { + "enabled": false + }, + "BetterGifPicker": { + "enabled": false + }, + "BetterNotesBox": { + "enabled": false + }, + "BetterRoleContext": { + "enabled": false + }, + "BetterRoleDot": { + "enabled": true, + "bothStyles": false, + "copyRoleColorInProfilePopout": false + }, + "BetterSessions": { + "enabled": false, + "backgroundCheck": false + }, + "BetterSettings": { + "enabled": true, + "disableFade": true, + "eagerLoad": true + }, + "BetterUploadButton": { + "enabled": false + }, + "BiggerStreamPreview": { + "enabled": false + }, + "BlurNSFW": { + "enabled": false + }, + "CallTimer": { + "enabled": true + }, + "ClearURLs": { + "enabled": true + }, + "ClientTheme": { + "enabled": false + }, + "ColorSighted": { + "enabled": false + }, + "ConsoleJanitor": { + "enabled": false + }, + "ConsoleShortcuts": { + "enabled": false + }, + "CopyEmojiMarkdown": { + "enabled": false + }, + "CopyFileContents": { + "enabled": false + }, + "CopyUserURLs": { + "enabled": true + }, + "CrashHandler": { + "enabled": true + }, + "CtrlEnterSend": { + "enabled": false + }, + "CustomRPC": { + "enabled": true, + "type": 3, + "timestampMode": 1, + "appID": "1399864028825915413", + "appName": "PornHub", + "details": "Watching PornHub", + "endTime": 9999988, + "imageBig": "https://miningtcup.me/orange-square-logo.png", + "imageBigTooltip": "PornHub :3", + "imageSmall": "", + "imageSmallTooltip": "", + "buttonOneText": "Join Session", + "buttonOneURL": "https://miningtcup.me/slippery.webp", + "state": "im about to cuuuuuuu-", + "buttonTwoText": "Add Friend", + "buttonTwoURL": "https://miningtcup.me/slippery.webp" + }, + "CustomIdle": { + "enabled": false + }, + "Dearrow": { + "enabled": false + }, + "Decor": { + "enabled": false + }, + "DisableCallIdle": { + "enabled": false + }, + "DontRoundMyTimestamps": { + "enabled": false + }, + "Experiments": { + "enabled": false + }, + "F8Break": { + "enabled": false + }, + "FakeNitro": { + "enabled": true, + "enableStickerBypass": false, + "enableStreamQualityBypass": true, + "enableEmojiBypass": false, + "transformEmojis": true, + "transformStickers": true, + "transformCompoundSentence": false, + "emojiSize": 48, + "hyperLinkText": "{{NAME}}", + "useHyperLinks": true, + "disableEmbedPermissionCheck": false, + "stickerSize": 160 + }, + "FakeProfileThemes": { + "enabled": false + }, + "FavoriteEmojiFirst": { + "enabled": false + }, + "FavoriteGifSearch": { + "enabled": false + }, + "FixCodeblockGap": { + "enabled": false + }, + "FixImagesQuality": { + "enabled": false + }, + "FixSpotifyEmbeds": { + "enabled": false + }, + "FixYoutubeEmbeds": { + "enabled": true + }, + "ForceOwnerCrown": { + "enabled": true + }, + "FriendInvites": { + "enabled": false + }, + "FriendsSince": { + "enabled": true + }, + "FullSearchContext": { + "enabled": false + }, + "GameActivityToggle": { + "enabled": false + }, + "GifPaste": { + "enabled": false + }, + "GreetStickerPicker": { + "enabled": false + }, + "iLoveSpam": { + "enabled": true + }, + "IgnoreActivities": { + "enabled": false + }, + "ImageLink": { + "enabled": false + }, + "ImageZoom": { + "enabled": true, + "size": 100, + "zoom": 1, + "saveZoomValues": true, + "nearestNeighbour": true, + "square": true, + "zoomSpeed": 0.5 + }, + "ImplicitRelationships": { + "enabled": true, + "sortByAffinity": true + }, + "InvisibleChat": { + "enabled": false, + "savedPasswords": "password, Password" + }, + "KeepCurrentChannel": { + "enabled": false + }, + "LastFMRichPresence": { + "enabled": false + }, + "LoadingQuotes": { + "enabled": false + }, + "MemberCount": { + "enabled": false + }, + "MentionAvatars": { + "enabled": false + }, + "MessageClickActions": { + "enabled": false + }, + "MessageLatency": { + "enabled": false, + "latency": 2, + "detectDiscordKotlin": true, + "showMillis": false + }, + "MessageLinkEmbeds": { + "enabled": false + }, + "MessageLogger": { + "enabled": true, + "collapseDeleted": false, + "deleteStyle": "text", + "ignoreBots": false, + "ignoreSelf": true, + "ignoreUsers": "", + "ignoreChannels": "", + "ignoreGuilds": "", + "logEdits": true, + "logDeletes": true, + "inlineEdits": true + }, + "MessageTags": { + "enabled": false + }, + "MoreCommands": { + "enabled": false + }, + "MoreKaomoji": { + "enabled": false + }, + "MoreUserTags": { + "enabled": false + }, + "Moyai": { + "enabled": false + }, + "MutualGroupDMs": { + "enabled": false + }, + "NewGuildSettings": { + "enabled": false + }, + "NoBlockedMessages": { + "enabled": false + }, + "NoDevtoolsWarning": { + "enabled": false + }, + "NoF1": { + "enabled": false + }, + "NoMaskedUrlPaste": { + "enabled": false + }, + "NoMosaic": { + "enabled": false, + "inlineVideo": true + }, + "NoOnboardingDelay": { + "enabled": false + }, + "NoPendingCount": { + "enabled": false + }, + "NoProfileThemes": { + "enabled": false + }, + "NoReplyMention": { + "enabled": false + }, + "NoScreensharePreview": { + "enabled": false + }, + "NoServerEmojis": { + "enabled": false + }, + "NoTypingAnimation": { + "enabled": false + }, + "NoUnblockToJump": { + "enabled": true + }, + "NormalizeMessageLinks": { + "enabled": false + }, + "NotificationVolume": { + "enabled": false + }, + "NSFWGateBypass": { + "enabled": false + }, + "OnePingPerDM": { + "enabled": false + }, + "oneko": { + "enabled": false + }, + "OpenInApp": { + "enabled": false + }, + "OverrideForumDefaults": { + "enabled": false + }, + "PartyMode": { + "enabled": false + }, + "PauseInvitesForever": { + "enabled": false + }, + "PermissionFreeWill": { + "enabled": true, + "lockout": true, + "onboarding": true + }, + "PermissionsViewer": { + "enabled": false + }, + "petpet": { + "enabled": false + }, + "PictureInPicture": { + "enabled": false + }, + "PinDMs": { + "enabled": false + }, + "PlainFolderIcon": { + "enabled": false + }, + "PlatformIndicators": { + "enabled": false + }, + "PreviewMessage": { + "enabled": true + }, + "QuickMention": { + "enabled": false + }, + "QuickReply": { + "enabled": false + }, + "ReactErrorDecoder": { + "enabled": false + }, + "ReadAllNotificationsButton": { + "enabled": false + }, + "RelationshipNotifier": { + "enabled": false + }, + "ReplaceGoogleSearch": { + "enabled": false + }, + "ReplyTimestamp": { + "enabled": false + }, + "RevealAllSpoilers": { + "enabled": false + }, + "ReverseImageSearch": { + "enabled": true + }, + "ReviewDB": { + "enabled": true, + "notifyReviews": true, + "showWarning": true, + "hideBlockedUsers": true, + "hideTimestamps": false + }, + "RoleColorEverywhere": { + "enabled": true, + "chatMentions": true, + "memberList": true, + "voiceUsers": true, + "reactorsList": true, + "pollResults": true, + "colorChatMessages": false + }, + "SecretRingToneEnabler": { + "enabled": false + }, + "Summaries": { + "enabled": false + }, + "SendTimestamps": { + "enabled": false + }, + "ServerInfo": { + "enabled": true + }, + "ServerListIndicators": { + "enabled": false + }, + "ShikiCodeblocks": { + "enabled": false + }, + "ShowAllMessageButtons": { + "enabled": false + }, + "ShowConnections": { + "enabled": true, + "iconSpacing": 1, + "iconSize": 32 + }, + "ShowHiddenChannels": { + "enabled": false + }, + "ShowHiddenThings": { + "enabled": false + }, + "ShowMeYourName": { + "enabled": true, + "displayNames": false, + "mode": "user-nick", + "inReplies": false + }, + "ShowTimeoutDuration": { + "enabled": false + }, + "SilentMessageToggle": { + "enabled": true, + "persistState": false, + "autoDisable": true + }, + "SilentTyping": { + "enabled": true, + "isEnabled": true, + "showIcon": false, + "contextMenu": true + }, + "SortFriendRequests": { + "enabled": false + }, + "SpotifyControls": { + "enabled": false + }, + "SpotifyCrack": { + "enabled": false + }, + "SpotifyShareCommands": { + "enabled": false + }, + "StartupTimings": { + "enabled": false + }, + "StickerPaste": { + "enabled": false + }, + "StreamerModeOnStream": { + "enabled": false + }, + "SuperReactionTweaks": { + "enabled": false + }, + "TextReplace": { + "enabled": false + }, + "ThemeAttributes": { + "enabled": false + }, + "Translate": { + "enabled": true, + "autoTranslate": false, + "showChatBarButton": true, + "service": "google", + "receivedInput": "auto", + "receivedOutput": "en" + }, + "TypingIndicator": { + "enabled": false + }, + "TypingTweaks": { + "enabled": false + }, + "Unindent": { + "enabled": false + }, + "UnlockedAvatarZoom": { + "enabled": false + }, + "UnsuppressEmbeds": { + "enabled": false + }, + "UserMessagesPronouns": { + "enabled": false + }, + "UserVoiceShow": { + "enabled": false + }, + "USRBG": { + "enabled": true, + "voiceBackground": true, + "nitroFirst": true + }, + "ValidReply": { + "enabled": false + }, + "ValidUser": { + "enabled": false + }, + "VoiceChatDoubleClick": { + "enabled": false + }, + "VcNarrator": { + "enabled": false + }, + "VencordToolbox": { + "enabled": false + }, + "ViewIcons": { + "enabled": false + }, + "ViewRaw": { + "enabled": false + }, + "VoiceDownload": { + "enabled": true + }, + "VoiceMessages": { + "enabled": false + }, + "VolumeBooster": { + "enabled": true, + "multiplier": 2 + }, + "WebKeybinds": { + "enabled": true + }, + "WebScreenShareFixes": { + "enabled": true + }, + "WhoReacted": { + "enabled": false + }, + "XSOverlay": { + "enabled": false + }, + "YoutubeAdblock": { + "enabled": true + }, + "NoTrack": { + "enabled": true, + "disableAnalytics": true + }, + "WebContextMenus": { + "enabled": true, + "addBack": true + }, + "Settings": { + "enabled": true, + "settingsLocation": "aboveNitro" + }, + "SupportHelper": { + "enabled": true + }, + "HideMedia": { + "enabled": false + }, + "ExpressionCloner": { + "enabled": false + }, + "FullUserInChatbox": { + "enabled": false + }, + "IrcColors": { + "enabled": false + }, + "BadgeAPI": { + "enabled": true + }, + "DisableDeepLinks": { + "enabled": true + } + }, + "notifications": { + "timeout": 5000, + "position": "bottom-right", + "useNative": "not-focused", + "logLimit": 50 + }, + "cloud": { + "authenticated": false, + "url": "https://api.vencord.dev/", + "settingsSync": false, + "settingsSyncVersion": 1753905075755 + }, + "eagerPatches": false +} \ No newline at end of file diff --git a/.config/zed/settings.json b/.config/zed/settings.json new file mode 100644 index 0000000..c0d01e4 --- /dev/null +++ b/.config/zed/settings.json @@ -0,0 +1,22 @@ +// Zed settings +// +// For information on how to configure Zed, see the Zed +// documentation: https://zed.dev/docs/configuring-zed +// +// To see all of Zed's default settings without changing your +// custom settings, run `zed: open default settings` from the +// command palette (cmd-shift-p / ctrl-shift-p) +{ + "icon_theme": "Material Icon Theme", + "telemetry": { + "metrics": false, + "diagnostics": false + }, + "ui_font_size": 12, + "buffer_font_size": 12, + "theme": { + "mode": "system", + "light": "One Dark", + "dark": "One Dark" + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e14160d --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.config/vesktop/sessionData +.ssh +wallpapers/active.png diff --git a/.inputrc b/.inputrc new file mode 100644 index 0000000..1b620e7 --- /dev/null +++ b/.inputrc @@ -0,0 +1,3 @@ +$include /etc/inputrc +set mark-symlinked-directories on + diff --git a/README.md b/README.md new file mode 100644 index 0000000..a653f46 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# MiningTcup's dotfiles for Arch Linux / Hyprland +uh yea steal em if u want idc diff --git a/wallpapers/1.png b/wallpapers/1.png new file mode 100644 index 0000000..28fc78a Binary files /dev/null and b/wallpapers/1.png differ diff --git a/wallpapers/10.png b/wallpapers/10.png new file mode 100644 index 0000000..3837898 Binary files /dev/null and b/wallpapers/10.png differ diff --git a/wallpapers/11.png b/wallpapers/11.png new file mode 100644 index 0000000..b6e1cce Binary files /dev/null and b/wallpapers/11.png differ diff --git a/wallpapers/12.png b/wallpapers/12.png new file mode 100644 index 0000000..b5ce4f0 Binary files /dev/null and b/wallpapers/12.png differ diff --git a/wallpapers/13.png b/wallpapers/13.png new file mode 100644 index 0000000..fe94abe Binary files /dev/null and b/wallpapers/13.png differ diff --git a/wallpapers/14.png b/wallpapers/14.png new file mode 100644 index 0000000..74e81c7 Binary files /dev/null and b/wallpapers/14.png differ diff --git a/wallpapers/2.png b/wallpapers/2.png new file mode 100644 index 0000000..56c77d1 Binary files /dev/null and b/wallpapers/2.png differ diff --git a/wallpapers/3.png b/wallpapers/3.png new file mode 100644 index 0000000..7db62dd Binary files /dev/null and b/wallpapers/3.png differ diff --git a/wallpapers/4.png b/wallpapers/4.png new file mode 100644 index 0000000..7086e88 Binary files /dev/null and b/wallpapers/4.png differ diff --git a/wallpapers/5.png b/wallpapers/5.png new file mode 100644 index 0000000..8fac4d3 Binary files /dev/null and b/wallpapers/5.png differ diff --git a/wallpapers/6.png b/wallpapers/6.png new file mode 100644 index 0000000..668e2d0 Binary files /dev/null and b/wallpapers/6.png differ diff --git a/wallpapers/7.png b/wallpapers/7.png new file mode 100644 index 0000000..c297de9 Binary files /dev/null and b/wallpapers/7.png differ diff --git a/wallpapers/8.png b/wallpapers/8.png new file mode 100644 index 0000000..8c2076e Binary files /dev/null and b/wallpapers/8.png differ diff --git a/wallpapers/9.png b/wallpapers/9.png new file mode 100644 index 0000000..78cf56b Binary files /dev/null and b/wallpapers/9.png differ