From 4651a3ce389724f7434887da4b0d42a84ac5288c Mon Sep 17 00:00:00 2001 From: "s0wlz (Matthias Puchstein)" Date: Tue, 30 Dec 2025 07:47:45 +0100 Subject: [PATCH] theme: roll Apex Neon across terminal, bar, and notifications --- dot_config/alacritty/alacritty.toml | 9 +- dot_config/alacritty/themes/apex-neon.toml | 63 + dot_config/kitty/current-theme.conf | 66 - dot_config/kitty/dark-theme.auto.conf | 67 + dot_config/kitty/kitty.conf | 2713 +---------------- dot_config/kitty/kitty.d/10-fonts.conf | 8 + dot_config/kitty/kitty.d/20-appearance.conf | 3 + dot_config/kitty/kitty.d/30-emoji.conf | 2 + dot_config/kitty/kitty.d/90-theme.conf | 4 + dot_config/kitty/themes/apex-neon.conf | 67 + dot_config/nvim/lua/plugins/nerdy.lua | 14 + dot_config/owlry/config.toml | 139 +- dot_config/owlry/themes/apex-neon.css | 290 +- dot_config/swaync/config.json | 139 +- dot_config/swaync/style.css | 345 +-- dot_config/waybar/config.tmpl | 43 +- dot_config/waybar/scripts/executable_alhp.sh | 65 +- .../waybar/scripts/executable_swaync-count.sh | 26 + .../waybar/scripts/executable_temps-cycle.sh | 46 +- dot_config/waybar/style.css | 177 +- dot_config/zed/private_settings.json | 27 + dot_config/zed/themes/apex.json | 629 ++++ dot_gemini/settings.json | 10 + 23 files changed, 1652 insertions(+), 3300 deletions(-) create mode 100644 dot_config/alacritty/themes/apex-neon.toml delete mode 100644 dot_config/kitty/current-theme.conf create mode 100644 dot_config/kitty/dark-theme.auto.conf create mode 100644 dot_config/kitty/kitty.d/10-fonts.conf create mode 100644 dot_config/kitty/kitty.d/20-appearance.conf create mode 100644 dot_config/kitty/kitty.d/30-emoji.conf create mode 100644 dot_config/kitty/kitty.d/90-theme.conf create mode 100644 dot_config/kitty/themes/apex-neon.conf create mode 100644 dot_config/nvim/lua/plugins/nerdy.lua create mode 100644 dot_config/waybar/scripts/executable_swaync-count.sh create mode 100644 dot_config/zed/private_settings.json create mode 100644 dot_config/zed/themes/apex.json create mode 100644 dot_gemini/settings.json diff --git a/dot_config/alacritty/alacritty.toml b/dot_config/alacritty/alacritty.toml index 7a084af..2dc2751 100644 --- a/dot_config/alacritty/alacritty.toml +++ b/dot_config/alacritty/alacritty.toml @@ -1,12 +1,12 @@ [general] -import = [ -"/home/mpuchstein/.config/alacritty/themes/themes/github_dark.toml" -] +import = ["~/.config/alacritty/themes/apex-neon.toml"] + live_config_reload = true ipc_socket = true [window] opacity = 0.7 +padding = { x = 4, y = 4 } [font] normal = { family = "Inconsolata Nerd Font Mono", style = "Regular" } @@ -14,3 +14,6 @@ size = 9 [mouse] hide_when_typing = true + +[cursor] +style = { shape = "Beam", blinking = "Off" } diff --git a/dot_config/alacritty/themes/apex-neon.toml b/dot_config/alacritty/themes/apex-neon.toml new file mode 100644 index 0000000..91f7bef --- /dev/null +++ b/dot_config/alacritty/themes/apex-neon.toml @@ -0,0 +1,63 @@ +# APEX NEON — Alacritty theme (colors only) + +[colors.primary] +background = "#050505" +foreground = "#ededed" +dim_foreground = "#737373" +bright_foreground = "#ffffff" + +[colors.cursor] +text = "#050505" +cursor = "#ff0044" + +[colors.vi_mode_cursor] +text = "#050505" +cursor = "#00eaff" + +[colors.selection] +text = "#050505" +background = "#ff0044" + +[colors.search.matches] +foreground = "#050505" +background = "#ff0044" + +[colors.search.focused_match] +foreground = "#050505" +background = "#ffb700" + +[colors.hints.start] +foreground = "#050505" +background = "#ffb700" + +[colors.hints.end] +foreground = "#050505" +background = "#00eaff" + +[colors.line_indicator] +foreground = "None" +background = "None" + +[colors.footer_bar] +foreground = "#ededed" +background = "#141414" + +[colors.normal] +black = "#050505" +red = "#ff0044" +green = "#00ff99" +yellow = "#ffb700" +blue = "#00eaff" +magenta = "#9d00ff" +cyan = "#00eaff" +white = "#ededed" + +[colors.bright] +black = "#262626" +red = "#ff8899" +green = "#2bffb2" +yellow = "#ffd24d" +blue = "#5af3ff" +magenta = "#c84dff" +cyan = "#5af3ff" +white = "#ffffff" diff --git a/dot_config/kitty/current-theme.conf b/dot_config/kitty/current-theme.conf deleted file mode 100644 index ad7bdc6..0000000 --- a/dot_config/kitty/current-theme.conf +++ /dev/null @@ -1,66 +0,0 @@ -## APEX NEON - KITTY THEME ## - -foreground #ededed -background #050505 -selection_foreground #050505 -selection_background #00eaff - -# Cursor: Still aggressive Razor Red -cursor #ff0044 -cursor_text_color #050505 -cursor_shape beam - -# URL underline: Electric Cyan -url_color #00eaff - -# --- 16-BIT PALETTE --- - -# BLACKS -# Normal: Deep Grey (Background UI elements) -color0 #141414 -# Bright: Lighter Grey (Comments, Line Numbers) -color8 #404040 - -# REDS -# Normal: Razor Red (Aggressive, for errors/borders) -color1 #ff0044 -# Bright: Pale / Laser Red (READABLE text, Highlighting) -color9 #ff6688 - -# GREENS -# Normal: Jungle Green (Standard strings) -color2 #00cc7a -# Bright: Toxic Green (Success messages, glowing elements) -color10 #00ff99 - -# YELLOWS -# Normal: Amber (Standard warnings) -color3 #cc9200 -# Bright: Warning Gold (Critical warnings) -color11 #ffb700 - -# BLUES -# Normal: Deep Azure (Standard functions - we bring blue back for depth) -color4 #0088cc -# Bright: Electric Cyan (The "Digital" look - Pointers, links) -color12 #00eaff - -# MAGENTAS -# Normal: Deep Purple (Keywords) -color5 #7a00cc -# Bright: Void Purple (Constants, Special highlights) -color13 #9d00ff - -# CYANS -# Normal: Teal -color6 #00aaaa -# Bright: Pure Cyan -color14 #00ffff - -# WHITES -# Normal: The Signal (Standard Text) -color7 #ededed -# Bright: Pure White (Bold Text) -color15 #ffffff - -window_padding_width 4 diff --git a/dot_config/kitty/dark-theme.auto.conf b/dot_config/kitty/dark-theme.auto.conf new file mode 100644 index 0000000..8246ce5 --- /dev/null +++ b/dot_config/kitty/dark-theme.auto.conf @@ -0,0 +1,67 @@ +## APEX NEON - KITTY THEME ## +## Spec-accurate: color = state, not decoration + +# --- Core --- +foreground #ededed +background #050505 + +# Selection: "target locked" +selection_background #ff0044 +selection_foreground #050505 + +# Cursor: Razor Red beam +cursor #ff0044 +cursor_text_color #050505 +cursor_shape beam + +# URLs: informational cyan +url_color #00eaff + +# Borders (optional) +active_border_color #ff0044 +inactive_border_color #262626 + +# Optional: subtle UI hint for visual bell +visual_bell_color #ff8899 + +# Spacing +window_padding_width 4 + +# --- 16-COLOR ANSI TABLE (Apex Neon spec) --- + +# Normal bank (0–7) +# color0: Black (Void) +color0 #050505 +# color1: Red (Razor) +color1 #ff0044 +# color2: Green (OK) +color2 #00ff99 +# color3: Yellow (Gold) +color3 #ffb700 +# color4: Blue (Info) +color4 #00eaff +# color5: Magenta (Purple) +color5 #9d00ff +# color6: Cyan (Info mapped) +color6 #00eaff +# color7: White (Stark) +color7 #ededed + +# Bright bank (8–15) +# color8: Bright black (UI separators) +color8 #262626 +# color9: Bright red (Alerts) +color9 #ff8899 +# color10: Bright green (Active success) +color10 #2bffb2 +# color11: Bright yellow (Urgent warning) +color11 #ffd24d +# color12: Bright blue (Active info) +color12 #5af3ff +# color13: Bright magenta (Elevated special) +color13 #c84dff +# color14: Bright cyan (Active tech signal) +color14 #5af3ff +# color15: Bright white (Extreme highlight) +color15 #ffffff + diff --git a/dot_config/kitty/kitty.conf b/dot_config/kitty/kitty.conf index 0a6956c..3d26b53 100644 --- a/dot_config/kitty/kitty.conf +++ b/dot_config/kitty/kitty.conf @@ -1,2712 +1,3 @@ -# vim:fileencoding=utf-8:foldmethod=marker +# vim:fileencoding=utf-8 -#: Fonts {{{ - -#: kitty has very powerful font management. You can configure -#: individual font faces and even specify special fonts for particular -#: characters. -# font_family InconsolataGo Nerd Font Mono -# bold_font auto -# italic_font auto -# bold_italic_font auto - -#: You can specify different fonts for the bold/italic/bold-italic -#: variants. The easiest way to select fonts is to run the `kitten -#: choose-fonts` command which will present a nice UI for you to -#: select the fonts you want with previews and support for selecting -#: variable fonts and font features. If you want to learn to select -#: fonts manually, read the font specification syntax -#: . - -font_size 9.0 - -#: Font size (in pts). - -# force_ltr no - -#: kitty does not support BIDI (bidirectional text), however, for RTL -#: scripts, words are automatically displayed in RTL. That is to say, -#: in an RTL script, the words "HELLO WORLD" display in kitty as -#: "WORLD HELLO", and if you try to select a substring of an RTL- -#: shaped string, you will get the character that would be there had -#: the string been LTR. For example, assuming the Hebrew word ירושלים, -#: selecting the character that on the screen appears to be ם actually -#: writes into the selection buffer the character י. kitty's default -#: behavior is useful in conjunction with a filter to reverse the word -#: order, however, if you wish to manipulate RTL glyphs, it can be -#: very challenging to work with, so this option is provided to turn -#: it off. Furthermore, this option can be used with the command line -#: program GNU FriBidi -#: to get BIDI support, because it will force kitty to always treat -#: the text as LTR, which FriBidi expects for terminals. - -# symbol_map - -#: E.g. symbol_map U+E0A0-U+E0A3,U+E0C0-U+E0C7 PowerlineSymbols - -#: Map the specified Unicode codepoints to a particular font. Useful -#: if you need special rendering for some symbols, such as for -#: Powerline. Avoids the need for patched fonts. Each Unicode code -#: point is specified in the form `U+`. You -#: can specify multiple code points, separated by commas and ranges -#: separated by hyphens. This option can be specified multiple times. -#: The syntax is:: - -#: symbol_map codepoints Font Family Name - -# narrow_symbols - -#: E.g. narrow_symbols U+E0A0-U+E0A3,U+E0C0-U+E0C7 1 - -#: Usually, for Private Use Unicode characters and some symbol/dingbat -#: characters, if the character is followed by one or more spaces, -#: kitty will use those extra cells to render the character larger, if -#: the character in the font has a wide aspect ratio. Using this -#: option you can force kitty to restrict the specified code points to -#: render in the specified number of cells (defaulting to one cell). -#: This option can be specified multiple times. The syntax is:: - -#: narrow_symbols codepoints [optionally the number of cells] - -# disable_ligatures never - -#: Choose how you want to handle multi-character ligatures. The -#: default is to always render them. You can tell kitty to not render -#: them when the cursor is over them by using cursor to make editing -#: easier, or have kitty never render them at all by using always, if -#: you don't like them. The ligature strategy can be set per-window -#: either using the kitty remote control facility or by defining -#: shortcuts for it in kitty.conf, for example:: - -#: map alt+1 disable_ligatures_in active always -#: map alt+2 disable_ligatures_in all never -#: map alt+3 disable_ligatures_in tab cursor - -#: Note that this refers to programming ligatures, typically -#: implemented using the calt OpenType feature. For disabling general -#: ligatures, use the font_features option. - -# font_features -font_features = emoji - -#: E.g. font_features none - -#: Choose exactly which OpenType features to enable or disable. Note -#: that for the main fonts, features can be specified when selecting -#: the font using the choose-fonts kitten. This setting is useful for -#: fallback fonts. - -#: Some fonts might have features worthwhile in a terminal. For -#: example, Fira Code includes a discretionary feature, zero, which in -#: that font changes the appearance of the zero (0), to make it more -#: easily distinguishable from Ø. Fira Code also includes other -#: discretionary features known as Stylistic Sets which have the tags -#: ss01 through ss20. - -#: For the exact syntax to use for individual features, see the -#: HarfBuzz documentation . - -#: Note that this code is indexed by PostScript name, and not the font -#: family. This allows you to define very precise feature settings; -#: e.g. you can disable a feature in the italic font but not in the -#: regular font. - -#: On Linux, font features are first read from the FontConfig database -#: and then this option is applied, so they can be configured in a -#: single, central place. - -#: To get the PostScript name for a font, use the `fc-scan file.ttf` -#: command on Linux or the `Font Book tool on macOS -#: `__. - -#: Enable alternate zero and oldstyle numerals:: - -#: font_features FiraCode-Retina +zero +onum - -#: Enable only alternate zero in the bold font:: - -#: font_features FiraCode-Bold +zero - -#: Disable the normal ligatures, but keep the calt feature which (in -#: this font) breaks up monotony:: - -#: font_features TT2020StyleB-Regular -liga +calt - -#: In conjunction with force_ltr, you may want to disable Arabic -#: shaping entirely, and only look at their isolated forms if they -#: show up in a document. You can do this with e.g.:: - -#: font_features UnifontMedium +isol -medi -fina -init - -# modify_font - -#: Modify font characteristics such as the position or thickness of -#: the underline and strikethrough. The modifications can have the -#: suffix px for pixels or % for percentage of original value. No -#: suffix means use pts. For example:: - -#: modify_font underline_position -2 -#: modify_font underline_thickness 150% -#: modify_font strikethrough_position 2px - -#: Additionally, you can modify the size of the cell in which each -#: font glyph is rendered and the baseline at which the glyph is -#: placed in the cell. For example:: - -#: modify_font cell_width 80% -#: modify_font cell_height -2px -#: modify_font baseline 3 - -#: Note that modifying the baseline will automatically adjust the -#: underline and strikethrough positions by the same amount. -#: Increasing the baseline raises glyphs inside the cell and -#: decreasing it lowers them. Decreasing the cell size might cause -#: rendering artifacts, so use with care. - -# box_drawing_scale 0.001, 1, 1.5, 2 - -#: The sizes of the lines used for the box drawing Unicode characters. -#: These values are in pts. They will be scaled by the monitor DPI to -#: arrive at a pixel value. There must be four values corresponding to -#: thin, normal, thick, and very thick lines. - -# undercurl_style thin-sparse - -#: The style with which undercurls are rendered. This option takes the -#: form (thin|thick)-(sparse|dense). Thin and thick control the -#: thickness of the undercurl. Sparse and dense control how often the -#: curl oscillates. With sparse the curl will peak once per character, -#: with dense twice. Changing this option dynamically via reloading -#: the config or remote control is undefined. - -# underline_exclusion 1 - -#: By default kitty renders gaps in underlines when they overlap with -#: descenders (the parts of letters below the baseline, such as for y, -#: q, p etc.). This option controls the thickness of the gaps. It can -#: be either a unitless number in which case it is a fraction of the -#: underline thickness as specified in the font or it can have a -#: suffix of px for pixels or pt for points. Set to zero to disable -#: the gaps. Changing this option dynamically via reloading the config -#: or remote control is undefined. - -# text_composition_strategy platform - -#: Control how kitty composites text glyphs onto the background color. -#: The default value of platform tries for text rendering as close to -#: "native" for the platform kitty is running on as possible. - -#: A value of legacy uses the old (pre kitty 0.28) strategy for how -#: glyphs are composited. This will make dark text on light -#: backgrounds look thicker and light text on dark backgrounds -#: thinner. It might also make some text appear like the strokes are -#: uneven. - -#: You can fine tune the actual contrast curve used for glyph -#: composition by specifying up to two space-separated numbers for -#: this setting. - -#: The first number is the gamma adjustment, which controls the -#: thickness of dark text on light backgrounds. Increasing the value -#: will make text appear thicker. The default value for this is 1.0 on -#: Linux and 1.7 on macOS. Valid values are 0.01 and above. The result -#: is scaled based on the luminance difference between the background -#: and the foreground. Dark text on light backgrounds receives the -#: full impact of the curve while light text on dark backgrounds is -#: affected very little. - -#: The second number is an additional multiplicative contrast. It is -#: percentage ranging from 0 to 100. The default value is 0 on Linux -#: and 30 on macOS. - -#: If you wish to achieve similar looking thickness in light and dark -#: themes, a good way to experiment is start by setting the value to -#: 1.0 0 and use a dark theme. Then adjust the second parameter until -#: it looks good. Then switch to a light theme and adjust the first -#: parameter until the perceived thickness matches the dark theme. - -# text_fg_override_threshold 0 - -#: The minimum accepted difference in luminance between the foreground -#: and background color, below which kitty will override the -#: foreground color. It is percentage ranging from 0 to 100. If the -#: difference in luminance of the foreground and background is below -#: this threshold, the foreground color will be set to white if the -#: background is dark or black if the background is light. The default -#: value is 0, which means no overriding is performed. Useful when -#: working with applications that use colors that do not contrast well -#: with your preferred color scheme. - -#: WARNING: Some programs use characters (such as block characters) -#: for graphics display and may expect to be able to set the -#: foreground and background to the same color (or similar colors). -#: If you see unexpected stripes, dots, lines, incorrect color, no -#: color where you expect color, or any kind of graphic display -#: problem try setting text_fg_override_threshold to 0 to see if this -#: is the cause of the problem. - -#: }}} - -#: Text cursor customization {{{ - -# cursor #cccccc - -#: Default text cursor color. If set to the special value none the -#: cursor will be rendered with a "reverse video" effect. Its color -#: will be the color of the text in the cell it is over and the text -#: will be rendered with the background color of the cell. Note that -#: if the program running in the terminal sets a cursor color, this -#: takes precedence. Also, the cursor colors are modified if the cell -#: background and foreground colors have very low contrast. Note that -#: some themes set this value, so if you want to override it, place -#: your value after the lines where the theme file is included. - -# cursor_text_color #111111 - -#: The color of text under the cursor. If you want it rendered with -#: the background color of the cell underneath instead, use the -#: special keyword: `background`. Note that if cursor is set to none -#: then this option is ignored. Note that some themes set this value, -#: so if you want to override it, place your value after the lines -#: where the theme file is included. - -# cursor_shape block - -#: The cursor shape can be one of block, beam, underline. Note that -#: when reloading the config this will be changed only if the cursor -#: shape has not been set by the program running in the terminal. This -#: sets the default cursor shape, applications running in the terminal -#: can override it. In particular, shell integration -#: in kitty sets -#: the cursor shape to beam at shell prompts. You can avoid this by -#: setting shell_integration to no-cursor. - -# cursor_shape_unfocused hollow - -#: Defines the text cursor shape when the OS window is not focused. -#: The unfocused cursor shape can be one of block, beam, underline, -#: hollow and unchanged (leave the cursor shape as it is). - -# cursor_beam_thickness 1.5 - -#: The thickness of the beam cursor (in pts). - -# cursor_underline_thickness 2.0 - -#: The thickness of the underline cursor (in pts). - -# cursor_blink_interval -1 - -#: The interval to blink the cursor (in seconds). Set to zero to -#: disable blinking. Negative values mean use system default. Note -#: that the minimum interval will be limited to repaint_delay. You can -#: also animate the cursor blink by specifying an easing function. For -#: example, setting this to option to 0.5 ease-in-out will cause the -#: cursor blink to be animated over a second, in the first half of the -#: second it will go from opaque to transparent and then back again -#: over the next half. You can specify different easing functions for -#: the two halves, for example: -1 linear ease-out. kitty supports all -#: the CSS easing functions . Note that turning on animations -#: uses extra power as it means the screen is redrawn multiple times -#: per blink interval. See also, cursor_stop_blinking_after. - -# cursor_stop_blinking_after 15.0 - -#: Stop blinking cursor after the specified number of seconds of -#: keyboard inactivity. Set to zero to never stop blinking. - -# cursor_trail 0 - -#: Set this to a value larger than zero to enable a "cursor trail" -#: animation. This is an animation that shows a "trail" following the -#: movement of the text cursor. It makes it easy to follow large -#: cursor jumps and makes for a cool visual effect of the cursor -#: zooming around the screen. The actual value of this option controls -#: when the animation is triggered. It is a number of milliseconds. -#: The trail animation only follows cursors that have stayed in their -#: position for longer than the specified number of milliseconds. This -#: prevents trails from appearing for cursors that rapidly change -#: their positions during UI updates in complex applications. See -#: cursor_trail_decay to control the animation speed and -#: cursor_trail_start_threshold to control when a cursor trail is -#: started. - -# cursor_trail_decay 0.1 0.4 - -#: Controls the decay times for the cursor trail effect when the -#: cursor_trail is enabled. This option accepts two positive float -#: values specifying the fastest and slowest decay times in seconds. -#: The first value corresponds to the fastest decay time (minimum), -#: and the second value corresponds to the slowest decay time -#: (maximum). The second value must be equal to or greater than the -#: first value. Smaller values result in a faster decay of the cursor -#: trail. Adjust these values to control how quickly the cursor trail -#: fades away. - -# cursor_trail_start_threshold 2 - -#: Set the distance threshold for starting the cursor trail. This -#: option accepts a positive integer value that represents the minimum -#: number of cells the cursor must move before the trail is started. -#: When the cursor moves less than this threshold, the trail is -#: skipped, reducing unnecessary cursor trail animation. - -#: }}} - -#: Scrollback {{{ - -# scrollback_lines 2000 - -#: Number of lines of history to keep in memory for scrolling back. -#: Memory is allocated on demand. Negative numbers are (effectively) -#: infinite scrollback. Note that using very large scrollback is not -#: recommended as it can slow down performance of the terminal and -#: also use large amounts of RAM. Instead, consider using -#: scrollback_pager_history_size. Note that on config reload if this -#: is changed it will only affect newly created windows, not existing -#: ones. - -# scrollback_indicator_opacity 1.0 - -#: The opacity of the scrollback indicator which is a small colored -#: rectangle that moves along the right hand side of the window as you -#: scroll, indicating what fraction you have scrolled. The default is -#: one which means fully opaque, aka visible. Set to a value between -#: zero and one to make the indicator less visible. - -# scrollback_pager less --chop-long-lines --RAW-CONTROL-CHARS +INPUT_LINE_NUMBER - -#: Program with which to view scrollback in a new window. The -#: scrollback buffer is passed as STDIN to this program. If you change -#: it, make sure the program you use can handle ANSI escape sequences -#: for colors and text formatting. INPUT_LINE_NUMBER in the command -#: line above will be replaced by an integer representing which line -#: should be at the top of the screen. Similarly CURSOR_LINE and -#: CURSOR_COLUMN will be replaced by the current cursor position or -#: set to 0 if there is no cursor, for example, when showing the last -#: command output. - -# scrollback_pager_history_size 0 - -#: Separate scrollback history size (in MB), used only for browsing -#: the scrollback buffer with pager. This separate buffer is not -#: available for interactive scrolling but will be piped to the pager -#: program when viewing scrollback buffer in a separate window. The -#: current implementation stores the data in UTF-8, so approximately -#: 10000 lines per megabyte at 100 chars per line, for pure ASCII, -#: unformatted text. A value of zero or less disables this feature. -#: The maximum allowed size is 4GB. Note that on config reload if this -#: is changed it will only affect newly created windows, not existing -#: ones. - -# scrollback_fill_enlarged_window no - -#: Fill new space with lines from the scrollback buffer after -#: enlarging a window. - -# wheel_scroll_multiplier 5.0 - -#: Multiplier for the number of lines scrolled by the mouse wheel. -#: Note that this is only used for low precision scrolling devices, -#: not for high precision scrolling devices on platforms such as macOS -#: and Wayland. Use negative numbers to change scroll direction. See -#: also wheel_scroll_min_lines. - -# wheel_scroll_min_lines 1 - -#: The minimum number of lines scrolled by the mouse wheel. The scroll -#: multiplier wheel_scroll_multiplier only takes effect after it -#: reaches this number. Note that this is only used for low precision -#: scrolling devices like wheel mice that scroll by very small amounts -#: when using the wheel. With a negative number, the minimum number of -#: lines will always be added. - -# touch_scroll_multiplier 1.0 - -#: Multiplier for the number of lines scrolled by a touchpad. Note -#: that this is only used for high precision scrolling devices on -#: platforms such as macOS and Wayland. Use negative numbers to change -#: scroll direction. - -#: }}} - -#: Mouse {{{ - -# mouse_hide_wait 3.0 - -#: Hide mouse cursor after the specified number of seconds of the -#: mouse not being used. Set to zero to disable mouse cursor hiding. -#: Set to a negative value to hide the mouse cursor immediately when -#: typing text. Disabled by default on macOS as getting it to work -#: robustly with the ever-changing sea of bugs that is Cocoa is too -#: much effort. - -# url_color #0087bd -# url_style curly - -#: The color and style for highlighting URLs on mouse-over. url_style -#: can be one of: none, straight, double, curly, dotted, dashed. - -# open_url_with default - -#: The program to open clicked URLs. The special value default will -#: first look for any URL handlers defined via the open_actions -#: facility and if non -#: are found, it will use the Operating System's default URL handler -#: (open on macOS and xdg-open on Linux). - -# url_prefixes file ftp ftps gemini git gopher http https irc ircs kitty mailto news sftp ssh - -#: The set of URL prefixes to look for when detecting a URL under the -#: mouse cursor. - -# detect_urls yes - -#: Detect URLs under the mouse. Detected URLs are highlighted with an -#: underline and the mouse cursor becomes a hand over them. Even if -#: this option is disabled, URLs are still clickable. See also the -#: underline_hyperlinks option to control how hyperlinks (as opposed -#: to plain text URLs) are displayed. - -# url_excluded_characters - -#: Additional characters to be disallowed from URLs, when detecting -#: URLs under the mouse cursor. By default, all characters that are -#: legal in URLs are allowed. Additionally, newlines are allowed (but -#: stripped). This is to accommodate programs such as mutt that add -#: hard line breaks even for continued lines. \n can be added to this -#: option to disable this behavior. Special characters can be -#: specified using backslash escapes, to specify a backslash use a -#: double backslash. - -# show_hyperlink_targets no - -#: When the mouse hovers over a terminal hyperlink, show the actual -#: URL that will be activated when the hyperlink is clicked. - -# underline_hyperlinks hover - -#: Control how hyperlinks are underlined. They can either be -#: underlined on mouse hover, always (i.e. permanently underlined) or -#: never which means that kitty will not apply any underline styling -#: to hyperlinks. Note that the value of always only applies to real -#: (OSC 8) hyperlinks not text that is detected to be a URL on mouse -#: hover. Uses the url_style and url_color settings for the underline -#: style. Note that reloading the config and changing this value -#: to/from always will only affect text subsequently received by -#: kitty. - -# copy_on_select no - -#: Copy to clipboard or a private buffer on select. With this set to -#: clipboard, selecting text with the mouse will cause the text to be -#: copied to clipboard. Useful on platforms such as macOS that do not -#: have the concept of primary selection. You can instead specify a -#: name such as a1 to copy to a private kitty buffer. Map a shortcut -#: with the paste_from_buffer action to paste from this private -#: buffer. For example:: - -#: copy_on_select a1 -#: map shift+cmd+v paste_from_buffer a1 - -#: Note that copying to the clipboard is a security risk, as all -#: programs, including websites open in your browser can read the -#: contents of the system clipboard. - -# clear_selection_on_clipboard_loss no - -#: When the contents of the clipboard no longer reflect the current -#: selection, clear it. This is primarily useful on platforms such as -#: Linux where selecting text automatically copies it to a special -#: "primary selection" clipboard or if you have copy_on_select set to -#: clipboard. - -#: Note that on macOS the system does not provide notifications when -#: the clipboard owner is changed, so there, copying to clipboard in a -#: non-kitty application will not clear selections even if -#: copy_on_select is enabled. - -# paste_actions quote-urls-at-prompt,confirm - -#: A comma separated list of actions to take when pasting text into -#: the terminal. The supported paste actions are: - -#: quote-urls-at-prompt: -#: If the text being pasted is a URL and the cursor is at a shell prompt, -#: automatically quote the URL (needs shell_integration). -#: replace-dangerous-control-codes -#: Replace dangerous control codes from pasted text, without confirmation. -#: replace-newline -#: Replace the newline character from pasted text, without confirmation. -#: confirm: -#: Confirm the paste if the text to be pasted contains any terminal control codes -#: as this can be dangerous, leading to code execution if the shell/program running -#: in the terminal does not properly handle these. -#: confirm-if-large -#: Confirm the paste if it is very large (larger than 16KB) as pasting -#: large amounts of text into shells can be very slow. -#: filter: -#: Run the filter_paste() function from the file paste-actions.py in -#: the kitty config directory on the pasted text. The text returned by the -#: function will be actually pasted. -#: no-op: -#: Has no effect. - -# strip_trailing_spaces never - -#: Remove spaces at the end of lines when copying to clipboard. A -#: value of smart will do it when using normal selections, but not -#: rectangle selections. A value of always will always do it. - -# select_by_word_characters @-./_~?&=%+# - -#: Characters considered part of a word when double clicking. In -#: addition to these characters any character that is marked as an -#: alphanumeric character in the Unicode database will be matched. - -# select_by_word_characters_forward - -#: Characters considered part of a word when extending the selection -#: forward on double clicking. In addition to these characters any -#: character that is marked as an alphanumeric character in the -#: Unicode database will be matched. - -#: If empty (default) select_by_word_characters will be used for both -#: directions. - -# click_interval -1.0 - -#: The interval between successive clicks to detect double/triple -#: clicks (in seconds). Negative numbers will use the system default -#: instead, if available, or fallback to 0.5. - -# focus_follows_mouse no - -#: Set the active window to the window under the mouse when moving the -#: mouse around. On macOS, this will also cause the OS Window under -#: the mouse to be focused automatically when the mouse enters it. - -# pointer_shape_when_grabbed arrow - -#: The shape of the mouse pointer when the program running in the -#: terminal grabs the mouse. - -# default_pointer_shape beam - -#: The default shape of the mouse pointer. - -# pointer_shape_when_dragging beam crosshair - -#: The default shape of the mouse pointer when dragging across text. -#: The optional second value sets the shape when dragging in -#: rectangular selection mode. - -#: Mouse actions {{{ - -#: Mouse buttons can be mapped to perform arbitrary actions. The -#: syntax is: - -#: .. code-block:: none - -#: mouse_map button-name event-type modes action - -#: Where button-name is one of left, middle, right, b1 ... b8 with -#: added keyboard modifiers. For example: ctrl+shift+left refers to -#: holding the Ctrl+Shift keys while clicking with the left mouse -#: button. The value b1 ... b8 can be used to refer to up to eight -#: buttons on a mouse. - -#: event-type is one of press, release, doublepress, triplepress, -#: click, doubleclick. modes indicates whether the action is performed -#: when the mouse is grabbed by the program running in the terminal, -#: or not. The values are grabbed or ungrabbed or a comma separated -#: combination of them. grabbed refers to when the program running in -#: the terminal has requested mouse events. Note that the click and -#: double click events have a delay of click_interval to disambiguate -#: from double and triple presses. - -#: You can run kitty with the kitty --debug-input command line option -#: to see mouse events. See the builtin actions below to get a sense -#: of what is possible. - -#: If you want to unmap a button, map it to nothing. For example, to -#: disable opening of URLs with a plain click:: - -#: mouse_map left click ungrabbed - -#: See all the mappable actions including mouse actions here -#: . - -#: .. note:: -#: Once a selection is started, releasing the button that started it will -#: automatically end it and no release event will be dispatched. - -# clear_all_mouse_actions no - -#: Remove all mouse action definitions up to this point. Useful, for -#: instance, to remove the default mouse actions. - -#: Click the link under the mouse or move the cursor - -# mouse_map left click ungrabbed mouse_handle_click selection link prompt - -#:: First check for a selection and if one exists do nothing. Then -#:: check for a link under the mouse cursor and if one exists, click -#:: it. Finally check if the click happened at the current shell -#:: prompt and if so, move the cursor to the click location. Note -#:: that this requires shell integration -#:: to work. - -#: Click the link under the mouse or move the cursor even when grabbed - -# mouse_map shift+left click grabbed,ungrabbed mouse_handle_click selection link prompt - -#:: Same as above, except that the action is performed even when the -#:: mouse is grabbed by the program running in the terminal. - -#: Click the link under the mouse cursor - -# mouse_map ctrl+shift+left release grabbed,ungrabbed mouse_handle_click link - -#:: Variant with Ctrl+Shift is present because the simple click based -#:: version has an unavoidable delay of click_interval, to -#:: disambiguate clicks from double clicks. - -#: Discard press event for link click - -# mouse_map ctrl+shift+left press grabbed discard_event - -#:: Prevent this press event from being sent to the program that has -#:: grabbed the mouse, as the corresponding release event is used to -#:: open a URL. - -#: Paste from the primary selection - -# mouse_map middle release ungrabbed paste_from_selection - -#: Start selecting text - -# mouse_map left press ungrabbed mouse_selection normal - -#: Start selecting text in a rectangle - -# mouse_map ctrl+alt+left press ungrabbed mouse_selection rectangle - -#: Select a word - -# mouse_map left doublepress ungrabbed mouse_selection word - -#: Select a line - -# mouse_map left triplepress ungrabbed mouse_selection line - -#: Select line from point - -# mouse_map ctrl+alt+left triplepress ungrabbed mouse_selection line_from_point - -#:: Select from the clicked point to the end of the line. If you -#:: would like to select the word at the point and then extend to the -#:: rest of the line, change `line_from_point` to -#:: `word_and_line_from_point`. - -#: Extend the current selection - -# mouse_map right press ungrabbed mouse_selection extend - -#:: If you want only the end of the selection to be moved instead of -#:: the nearest boundary, use move-end instead of extend. - -#: Paste from the primary selection even when grabbed - -# mouse_map shift+middle release ungrabbed,grabbed paste_selection -# mouse_map shift+middle press grabbed discard_event - -#: Start selecting text even when grabbed - -# mouse_map shift+left press ungrabbed,grabbed mouse_selection normal - -#: Start selecting text in a rectangle even when grabbed - -# mouse_map ctrl+shift+alt+left press ungrabbed,grabbed mouse_selection rectangle - -#: Select a word even when grabbed - -# mouse_map shift+left doublepress ungrabbed,grabbed mouse_selection word - -#: Select a line even when grabbed - -# mouse_map shift+left triplepress ungrabbed,grabbed mouse_selection line - -#: Select line from point even when grabbed - -# mouse_map ctrl+shift+alt+left triplepress ungrabbed,grabbed mouse_selection line_from_point - -#:: Select from the clicked point to the end of the line even when -#:: grabbed. If you would like to select the word at the point and -#:: then extend to the rest of the line, change `line_from_point` to -#:: `word_and_line_from_point`. - -#: Extend the current selection even when grabbed - -# mouse_map shift+right press ungrabbed,grabbed mouse_selection extend - -#: Show clicked command output in pager - -# mouse_map ctrl+shift+right press ungrabbed mouse_show_command_output - -#:: Requires shell integration -#:: to work. - -#: }}} - -#: }}} - -#: Performance tuning {{{ - -# repaint_delay 10 - -#: Delay between screen updates (in milliseconds). Decreasing it, -#: increases frames-per-second (FPS) at the cost of more CPU usage. -#: The default value yields ~100 FPS which is more than sufficient for -#: most uses. Note that to actually achieve 100 FPS, you have to -#: either set sync_to_monitor to no or use a monitor with a high -#: refresh rate. Also, to minimize latency when there is pending input -#: to be processed, this option is ignored. - -# input_delay 3 - -#: Delay before input from the program running in the terminal is -#: processed (in milliseconds). Note that decreasing it will increase -#: responsiveness, but also increase CPU usage and might cause flicker -#: in full screen programs that redraw the entire screen on each loop, -#: because kitty is so fast that partial screen updates will be drawn. -#: This setting is ignored when the input buffer is almost full. - -# sync_to_monitor yes - -#: Sync screen updates to the refresh rate of the monitor. This -#: prevents screen tearing -#: when scrolling. -#: However, it limits the rendering speed to the refresh rate of your -#: monitor. With a very high speed mouse/high keyboard repeat rate, -#: you may notice some slight input latency. If so, set this to no. - -#: }}} - -#: Terminal bell {{{ - -# enable_audio_bell yes - -#: The audio bell. Useful to disable it in environments that require -#: silence. - -# visual_bell_duration 0.0 - -#: The visual bell duration (in seconds). Flash the screen when a bell -#: occurs for the specified number of seconds. Set to zero to disable. -#: The flash is animated, fading in and out over the specified -#: duration. The easing function used for the fading can be -#: controlled. For example, 2.0 linear will casuse the flash to fade -#: in and out linearly. The default if unspecified is to use ease-in- -#: out which fades slowly at the start, middle and end. You can -#: specify different easing functions for the fade-in and fade-out -#: parts, like this: 2.0 ease-in linear. kitty supports all the CSS -#: easing functions . - -# visual_bell_color none - -#: The color used by visual bell. Set to none will fall back to -#: selection background color. If you feel that the visual bell is too -#: bright, you can set it to a darker color. - -# window_alert_on_bell yes - -#: Request window attention on bell. Makes the dock icon bounce on -#: macOS or the taskbar flash on Linux. - -# bell_on_tab "🔔 " - -#: Some text or a Unicode symbol to show on the tab if a window in the -#: tab that does not have focus has a bell. If you want to use leading -#: or trailing spaces, surround the text with quotes. See -#: tab_title_template for how this is rendered. - -#: For backwards compatibility, values of yes, y and true are -#: converted to the default bell symbol and no, n, false and none are -#: converted to the empty string. - -# command_on_bell none - -#: Program to run when a bell occurs. The environment variable -#: KITTY_CHILD_CMDLINE can be used to get the program running in the -#: window in which the bell occurred. - -# bell_path none - -#: Path to a sound file to play as the bell sound. If set to none, the -#: system default bell sound is used. Must be in a format supported by -#: the operating systems sound API, such as WAV or OGA on Linux -#: (libcanberra) or AIFF, MP3 or WAV on macOS (NSSound). - -# linux_bell_theme __custom - -#: The XDG Sound Theme kitty will use to play the bell sound. Defaults -#: to the custom theme name specified in the XDG Sound theme -#: specification , falling back to the default -#: freedesktop theme if it does not exist. To change your sound theme -#: desktop wide, create -#: :file:~/.local/share/sounds/__custom/index.theme` with the -#: contents: - -#: [Sound Theme] - -#: Inherits=name-of-the-sound-theme-you-want-to-use - -#: Replace name-of-the-sound-theme-you-want-to-use with the actual -#: theme name. Now all compliant applications should use sounds from -#: this theme. - -#: }}} - -#: Window layout {{{ - -# remember_window_size yes -# initial_window_width 640 -# initial_window_height 400 - -#: If enabled, the OS Window size will be remembered so that new -#: instances of kitty will have the same size as the previous -#: instance. If disabled, the OS Window will initially have size -#: configured by initial_window_width/height, in pixels. You can use a -#: suffix of "c" on the width/height values to have them interpreted -#: as number of cells instead of pixels. - -# enabled_layouts * - -#: The enabled window layouts. A comma separated list of layout names. -#: The special value all means all layouts. The first listed layout -#: will be used as the startup layout. Default configuration is all -#: layouts in alphabetical order. For a list of available layouts, see -#: the layouts . - -# window_resize_step_cells 2 -# window_resize_step_lines 2 - -#: The step size (in units of cell width/cell height) to use when -#: resizing kitty windows in a layout with the shortcut -#: start_resizing_window. The cells value is used for horizontal -#: resizing, and the lines value is used for vertical resizing. - -# window_border_width 0.5pt - -#: The width of window borders. Can be either in pixels (px) or pts -#: (pt). Values in pts will be rounded to the nearest number of pixels -#: based on screen resolution. If not specified, the unit is assumed -#: to be pts. Note that borders are displayed only when more than one -#: window is visible. They are meant to separate multiple windows. - -# draw_minimal_borders yes - -#: Draw only the minimum borders needed. This means that only the -#: borders that separate the window from a neighbor are drawn. Note -#: that setting a non-zero window_margin_width overrides this and -#: causes all borders to be drawn. - -# window_margin_width 0 - -#: The window margin (in pts) (blank area outside the border). A -#: single value sets all four sides. Two values set the vertical and -#: horizontal sides. Three values set top, horizontal and bottom. Four -#: values set top, right, bottom and left. - -# single_window_margin_width -1 - -#: The window margin to use when only a single window is visible (in -#: pts). Negative values will cause the value of window_margin_width -#: to be used instead. A single value sets all four sides. Two values -#: set the vertical and horizontal sides. Three values set top, -#: horizontal and bottom. Four values set top, right, bottom and left. - -# window_padding_width 0 - -#: The window padding (in pts) (blank area between the text and the -#: window border). A single value sets all four sides. Two values set -#: the vertical and horizontal sides. Three values set top, horizontal -#: and bottom. Four values set top, right, bottom and left. - -# single_window_padding_width -1 - -#: The window padding to use when only a single window is visible (in -#: pts). Negative values will cause the value of window_padding_width -#: to be used instead. A single value sets all four sides. Two values -#: set the vertical and horizontal sides. Three values set top, -#: horizontal and bottom. Four values set top, right, bottom and left. - -# placement_strategy center - -#: When the window size is not an exact multiple of the cell size, the -#: cell area of the terminal window will have some extra padding on -#: the sides. You can control how that padding is distributed with -#: this option. Using a value of center means the cell area will be -#: placed centrally. A value of top-left means the padding will be -#: only at the bottom and right edges. The value can be one of: top- -#: left, top, top-right, left, center, right, bottom-left, bottom, -#: bottom-right. - -# active_border_color #00ff00 - -#: The color for the border of the active window. Set this to none to -#: not draw borders around the active window. - -# inactive_border_color #cccccc - -#: The color for the border of inactive windows. - -# bell_border_color #ff5a00 - -#: The color for the border of inactive windows in which a bell has -#: occurred. - -# inactive_text_alpha 1.0 - -#: Fade the text in inactive windows by the specified amount (a number -#: between zero and one, with zero being fully faded). - -# hide_window_decorations no - -#: Hide the window decorations (title-bar and window borders) with -#: yes. On macOS, titlebar-only and titlebar-and-corners can be used -#: to only hide the titlebar and the rounded corners. Whether this -#: works and exactly what effect it has depends on the window -#: manager/operating system. Note that the effects of changing this -#: option when reloading config are undefined. When using titlebar- -#: only, it is useful to also set window_margin_width and -#: placement_strategy to prevent the rounded corners from clipping -#: text. Or use titlebar-and-corners. - -# window_logo_path none - -#: Path to a logo image. Must be in PNG/JPEG/WEBP/GIF/TIFF/BMP format. -#: Relative paths are interpreted relative to the kitty config -#: directory. The logo is displayed in a corner of every kitty window. -#: The position is controlled by window_logo_position. Individual -#: windows can be configured to have different logos either using the -#: launch action or the remote control -#: facility. - -# window_logo_position bottom-right - -#: Where to position the window logo in the window. The value can be -#: one of: top-left, top, top-right, left, center, right, bottom-left, -#: bottom, bottom-right. - -# window_logo_alpha 0.5 - -#: The amount the logo should be faded into the background. With zero -#: being fully faded and one being fully opaque. - -# window_logo_scale 0 - -#: The percentage (0-100] of the window size to which the logo should -#: scale. Using a single number means the logo is scaled to that -#: percentage of the shortest window dimension, while preserving -#: aspect ratio of the logo image. - -#: Using two numbers means the width and height of the logo are scaled -#: to the respective percentage of the window's width and height. - -#: Using zero as the percentage disables scaling in that dimension. A -#: single zero (the default) disables all scaling of the window logo. - -# resize_debounce_time 0.1 0.5 - -#: The time to wait (in seconds) before asking the program running in -#: kitty to resize and redraw the screen during a live resize of the -#: OS window, when no new resize events have been received, i.e. when -#: resizing is either paused or finished. On platforms such as macOS, -#: where the operating system sends events corresponding to the start -#: and end of a live resize, the second number is used for redraw- -#: after-pause since kitty can distinguish between a pause and end of -#: resizing. On such systems the first number is ignored and redraw is -#: immediate after end of resize. On other systems only the first -#: number is used so that kitty is "ready" quickly after the end of -#: resizing, while not also continuously redrawing, to save energy. - -# resize_in_steps no - -#: Resize the OS window in steps as large as the cells, instead of -#: with the usual pixel accuracy. Combined with initial_window_width -#: and initial_window_height in number of cells, this option can be -#: used to keep the margins as small as possible when resizing the OS -#: window. Note that this does not currently work on Wayland. - -# visual_window_select_characters 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ - -#: The list of characters for visual window selection. For example, -#: for selecting a window to focus on with focus_visible_window. The -#: value should be a series of unique numbers or alphabets, case -#: insensitive, from the set 0-9A-Z\-=[];',./\\`. Specify your -#: preference as a string of characters. - -# confirm_os_window_close -1 - -#: Ask for confirmation when closing an OS window or a tab with at -#: least this number of kitty windows in it by window manager (e.g. -#: clicking the window close button or pressing the operating system -#: shortcut to close windows) or by the close_tab action. A value of -#: zero disables confirmation. This confirmation also applies to -#: requests to quit the entire application (all OS windows, via the -#: quit action). Negative values are converted to positive ones, -#: however, with shell_integration enabled, using negative values -#: means windows sitting at a shell prompt are not counted, only -#: windows where some command is currently running. You can also have -#: backgrounded jobs prevent closing, by adding count-background to -#: the setting, for example: -1 count-background. Note that if you -#: want confirmation when closing individual windows, you can map the -#: close_window_with_confirmation action. - -#: }}} - -#: Tab bar {{{ - -# tab_bar_edge bottom - -#: The edge to show the tab bar on, top or bottom. - -# tab_bar_margin_width 0.0 - -#: The margin to the left and right of the tab bar (in pts). - -# tab_bar_margin_height 0.0 0.0 - -#: The margin above and below the tab bar (in pts). The first number -#: is the margin between the edge of the OS Window and the tab bar. -#: The second number is the margin between the tab bar and the -#: contents of the current tab. - -# tab_bar_style fade - -#: The tab bar style, can be one of: - -#: fade -#: Each tab's edges fade into the background color. (See also tab_fade) -#: slant -#: Tabs look like the tabs in a physical file. -#: separator -#: Tabs are separated by a configurable separator. (See also -#: tab_separator) -#: powerline -#: Tabs are shown as a continuous line with "fancy" separators. -#: (See also tab_powerline_style) -#: custom -#: A user-supplied Python function called draw_tab is loaded from the file -#: tab_bar.py in the kitty config directory. For examples of how to -#: write such a function, see the functions named draw_tab_with_* in -#: kitty's source code: kitty/tab_bar.py. See also -#: this discussion -#: for examples from kitty users. -#: hidden -#: The tab bar is hidden. If you use this, you might want to create -#: a mapping for the select_tab action which presents you with a list of -#: tabs and allows for easy switching to a tab. - -# tab_bar_align left - -#: The horizontal alignment of the tab bar, can be one of: left, -#: center, right. - -# tab_bar_min_tabs 2 - -#: The minimum number of tabs that must exist before the tab bar is -#: shown. - -# tab_switch_strategy previous - -#: The algorithm to use when switching to a tab when the current tab -#: is closed. The default of previous will switch to the last used -#: tab. A value of left will switch to the tab to the left of the -#: closed tab. A value of right will switch to the tab to the right of -#: the closed tab. A value of last will switch to the right-most tab. - -# tab_fade 0.25 0.5 0.75 1 - -#: Control how each tab fades into the background when using fade for -#: the tab_bar_style. Each number is an alpha (between zero and one) -#: that controls how much the corresponding cell fades into the -#: background, with zero being no fade and one being full fade. You -#: can change the number of cells used by adding/removing entries to -#: this list. - -# tab_separator " ┇" - -#: The separator between tabs in the tab bar when using separator as -#: the tab_bar_style. - -# tab_powerline_style angled - -#: The powerline separator style between tabs in the tab bar when -#: using powerline as the tab_bar_style, can be one of: angled, -#: slanted, round. - -# tab_activity_symbol none - -#: Some text or a Unicode symbol to show on the tab if a window in the -#: tab that does not have focus has some activity. If you want to use -#: leading or trailing spaces, surround the text with quotes. See -#: tab_title_template for how this is rendered. - -# tab_title_max_length 0 - -#: The maximum number of cells that can be used to render the text in -#: a tab. A value of zero means that no limit is applied. - -# tab_title_template "{fmt.fg.red}{bell_symbol}{activity_symbol}{fmt.fg.tab}{tab.last_focused_progress_percent}{title}" - -#: A template to render the tab title. The default just renders the -#: title with optional symbols for bell and activity. If you wish to -#: include the tab-index as well, use something like: {index}:{title}. -#: Useful if you have shortcuts mapped for goto_tab N. If you prefer -#: to see the index as a superscript, use {sup.index}. All data -#: available is: - -#: title -#: The current tab title. -#: index -#: The tab index usable with goto_tab N goto_tab shortcuts. -#: layout_name -#: The current layout name. -#: num_windows -#: The number of windows in the tab. -#: num_window_groups -#: The number of window groups (a window group is a window and all of its overlay windows) in the tab. -#: tab.active_wd -#: The working directory of the currently active window in the tab -#: (expensive, requires syscall). Use tab.active_oldest_wd to get -#: the directory of the oldest foreground process rather than the newest. -#: tab.active_exe -#: The name of the executable running in the foreground of the currently -#: active window in the tab (expensive, requires syscall). Use -#: tab.active_oldest_exe for the oldest foreground process. -#: max_title_length -#: The maximum title length available. -#: keyboard_mode -#: The name of the current keyboard mode or the empty string if no keyboard mode is active. -#: tab.last_focused_progress_percent -#: If a command running in a window reports the progress for a task, show this progress as a percentage -#: from the most recently focused window in the tab. Empty string if no progress is reported. -#: tab.progress_percent -#: If a command running in a window reports the progress for a task, show this progress as a percentage -#: from all windows in the tab, averaged. Empty string is no progress is reported. - -#: Note that formatting is done by Python's string formatting -#: machinery, so you can use, for instance, {layout_name[:2].upper()} -#: to show only the first two letters of the layout name, upper-cased. -#: If you want to style the text, you can use styling directives, for -#: example: -#: `{fmt.fg.red}red{fmt.fg.tab}normal{fmt.bg._00FF00}greenbg{fmt.bg.tab}`. -#: Similarly, for bold and italic: -#: `{fmt.bold}bold{fmt.nobold}normal{fmt.italic}italic{fmt.noitalic}`. -#: The 256 eight terminal colors can be used as `fmt.fg.color0` -#: through `fmt.fg.color255`. Note that for backward compatibility, if -#: {bell_symbol} or {activity_symbol} are not present in the template, -#: they are prepended to it. - -# active_tab_title_template none - -#: Template to use for active tabs. If not specified falls back to -#: tab_title_template. - -# active_tab_foreground #000 -# active_tab_background #eee -# active_tab_font_style bold-italic -# inactive_tab_foreground #444 -# inactive_tab_background #999 -# inactive_tab_font_style normal - -#: Tab bar colors and styles. - -# tab_bar_background none - -#: Background color for the tab bar. Defaults to using the terminal -#: background color. - -# tab_bar_margin_color none - -#: Color for the tab bar margin area. Defaults to using the terminal -#: background color for margins above and below the tab bar. For side -#: margins the default color is chosen to match the background color -#: of the neighboring tab. - -#: }}} - -#: Color scheme {{{ - -# foreground #dddddd -# background #000000 - -#: The foreground and background colors. - -background_opacity 0.9 - -#: The opacity of the background. A number between zero and one, where -#: one is opaque and zero is fully transparent. This will only work if -#: supported by the OS (for instance, when using a compositor under -#: X11). Note that it only sets the background color's opacity in -#: cells that have the same background color as the default terminal -#: background, so that things like the status bar in vim, powerline -#: prompts, etc. still look good. But it means that if you use a color -#: theme with a background color in your editor, it will not be -#: rendered as transparent. Instead you should change the default -#: background color in your kitty config and not use a background -#: color in the editor color scheme. Or use the escape codes to set -#: the terminals default colors in a shell script to launch your -#: editor. See also transparent_background_colors. Be aware that using -#: a value less than 1.0 is a (possibly significant) performance hit. -#: When using a low value for this setting, it is desirable that you -#: set the background color to a color the matches the general color -#: of the desktop background, for best text rendering. Note that to -#: workaround window managers not doing gamma-corrected blending kitty -#: makes background_opacity non-linear which means, especially for -#: light backgrounds you might need to make the value much lower than -#: you expect to get good results, see 6218 -#: for details. - -#: If you want to dynamically change transparency of windows, set -#: dynamic_background_opacity to yes (this is off by default as it has -#: a performance cost). Changing this option when reloading the config -#: will only work if dynamic_background_opacity was enabled in the -#: original config. - -background_blur 5 - -#: Set to a positive value to enable background blur (blurring of the -#: visuals behind a transparent window) on platforms that support it. -#: Only takes effect when background_opacity is less than one. On -#: macOS, this will also control the blur radius (amount of blurring). -#: Setting it to too high a value will cause severe performance issues -#: and/or rendering artifacts. Usually, values up to 64 work well. -#: Note that this might cause performance issues, depending on how the -#: platform implements it, so use with care. Currently supported on -#: macOS and KDE. - -# background_image none - -#: Path to a background image. Must be in PNG/JPEG/WEBP/TIFF/GIF/BMP -#: format. - -# background_image_layout tiled - -#: Whether to tile, scale or clamp the background image. The value can -#: be one of tiled, mirror-tiled, scaled, clamped, centered or -#: cscaled. The scaled and cscaled values scale the image to the -#: window size, with cscaled preserving the image aspect ratio. - -# background_image_linear no - -#: When background image is scaled, whether linear interpolation -#: should be used. - -# transparent_background_colors - -#: A space separated list of upto 7 colors, with opacity. When the -#: background color of a cell matches one of these colors, it is -#: rendered semi-transparent using the specified opacity. - -#: Useful in more complex UIs like editors where you could want more -#: than a single background color to be rendered as transparent, for -#: instance, for a cursor highlight line background or a highlighted -#: block. Terminal applications can set this color using The kitty -#: color control escape code. - -#: The syntax for specifying colors is: color@opacity, where the -#: @opacity part is optional. When unspecified, the value of -#: background_opacity is used. For example:: - -#: transparent_background_colors red@0.5 #00ff00@0.3 - -dynamic_background_opacity yes - -#: Allow changing of the background_opacity dynamically, using either -#: keyboard shortcuts (increase_background_opacity and -#: decrease_background_opacity) or the remote control facility. -#: Changing this option by reloading the config is not supported. - -# background_tint 0.0 - -#: How much to tint the background image by the background color. This -#: option makes it easier to read the text. Tinting is done using the -#: current background color for each window. This option applies only -#: if background_opacity is set and transparent windows are supported -#: or background_image is set. - -# background_tint_gaps 1.0 - -#: How much to tint the background image at the window gaps by the -#: background color, after applying background_tint. Since this is -#: multiplicative with background_tint, it can be used to lighten the -#: tint over the window gaps for a *separated* look. - -# dim_opacity 0.4 - -#: How much to dim text that has the DIM/FAINT attribute set. One -#: means no dimming and zero means fully dimmed (i.e. invisible). - -# selection_foreground #000000 -# selection_background #fffacd - -#: The foreground and background colors for text selected with the -#: mouse. Setting both of these to none will cause a "reverse video" -#: effect for selections, where the selection will be the cell text -#: color and the text will become the cell background color. Setting -#: only selection_foreground to none will cause the foreground color -#: to be used unchanged. Note that these colors can be overridden by -#: the program running in the terminal. - -#: The color table {{{ - -#: The 256 terminal colors. There are 8 basic colors, each color has a -#: dull and bright version, for the first 16 colors. You can set the -#: remaining 240 colors as color16 to color255. - -# color0 #000000 -# color8 #767676 - -#: black - -# color1 #cc0403 -# color9 #f2201f - -#: red - -# color2 #19cb00 -# color10 #23fd00 - -#: green - -# color3 #cecb00 -# color11 #fffd00 - -#: yellow - -# color4 #0d73cc -# color12 #1a8fff - -#: blue - -# color5 #cb1ed1 -# color13 #fd28ff - -#: magenta - -# color6 #0dcdcd -# color14 #14ffff - -#: cyan - -# color7 #dddddd -# color15 #ffffff - -#: white - -# mark1_foreground black - -#: Color for marks of type 1 - -# mark1_background #98d3cb - -#: Color for marks of type 1 (light steel blue) - -# mark2_foreground black - -#: Color for marks of type 2 - -# mark2_background #f2dcd3 - -#: Color for marks of type 1 (beige) - -# mark3_foreground black - -#: Color for marks of type 3 - -# mark3_background #f274bc - -#: Color for marks of type 3 (violet) - -#: }}} - -#: }}} - -#: Advanced {{{ - -# shell . - -#: The shell program to execute. The default value of . means to use -#: the value of of the SHELL environment variable or if unset, -#: whatever shell is set as the default shell for the current user. -#: Note that on macOS if you change this, you might need to add -#: --login and --interactive to ensure that the shell starts in -#: interactive mode and reads its startup rc files. Environment -#: variables are expanded in this setting. - -# editor . - -#: The terminal based text editor (such as vim or nano) to use when -#: editing the kitty config file or similar tasks. - -#: The default value of . means to use the environment variables -#: VISUAL and EDITOR in that order. If these variables aren't set, -#: kitty will run your shell ($SHELL -l -i -c env) to see if your -#: shell startup rc files set VISUAL or EDITOR. If that doesn't work, -#: kitty will cycle through various known editors (vim, emacs, etc.) -#: and take the first one that exists on your system. - -# close_on_child_death no - -#: Close the window when the child process (usually the shell) exits. -#: With the default value no, the terminal will remain open when the -#: child exits as long as there are still other processes outputting -#: to the terminal (for example disowned or backgrounded processes). -#: When enabled with yes, the window will close as soon as the child -#: process exits. Note that setting it to yes means that any -#: background processes still using the terminal can fail silently -#: because their stdout/stderr/stdin no longer work. - -# remote_control_password - -#: Allow other programs to control kitty using passwords. This option -#: can be specified multiple times to add multiple passwords. If no -#: passwords are present kitty will ask the user for permission if a -#: program tries to use remote control with a password. A password can -#: also *optionally* be associated with a set of allowed remote -#: control actions. For example:: - -#: remote_control_password "my passphrase" get-colors set-colors focus-window focus-tab - -#: Only the specified actions will be allowed when using this -#: password. Glob patterns can be used too, for example:: - -#: remote_control_password "my passphrase" set-tab-* resize-* - -#: To get a list of available actions, run:: - -#: kitten @ --help - -#: A set of actions to be allowed when no password is sent can be -#: specified by using an empty password. For example:: - -#: remote_control_password "" *-colors - -#: Finally, the path to a python module can be specified that provides -#: a function is_cmd_allowed that is used to check every remote -#: control command. For example:: - -#: remote_control_password "my passphrase" my_rc_command_checker.py - -#: Relative paths are resolved from the kitty configuration directory. -#: See rc_custom_auth for details. - -# allow_remote_control no - -#: Allow other programs to control kitty. If you turn this on, other -#: programs can control all aspects of kitty, including sending text -#: to kitty windows, opening new windows, closing windows, reading the -#: content of windows, etc. Note that this even works over SSH -#: connections. The default setting of no prevents any form of remote -#: control. The meaning of the various values are: - -#: password -#: Remote control requests received over both the TTY device and the socket -#: are confirmed based on passwords, see remote_control_password. - -#: socket-only -#: Remote control requests received over a socket are accepted -#: unconditionally. Requests received over the TTY are denied. -#: See listen_on. - -#: socket -#: Remote control requests received over a socket are accepted -#: unconditionally. Requests received over the TTY are confirmed based on -#: password. - -#: no -#: Remote control is completely disabled. - -#: yes -#: Remote control requests are always accepted. - -# listen_on none - -#: Listen to the specified socket for remote control connections. Note -#: that this will apply to all kitty instances. It can be overridden -#: by the kitty --listen-on command line option. For UNIX sockets, -#: such as unix:${TEMP}/mykitty or unix:@mykitty (on Linux). -#: Environment variables are expanded and relative paths are resolved -#: with respect to the temporary directory. If {kitty_pid} is present, -#: then it is replaced by the PID of the kitty process, otherwise the -#: PID of the kitty process is appended to the value, with a hyphen. -#: For TCP sockets such as tcp:localhost:0 a random port is always -#: used even if a non-zero port number is specified. See the help for -#: kitty --listen-on for more details. Note that this will be ignored -#: unless allow_remote_control is set to either: yes, socket or -#: socket-only. Changing this option by reloading the config is not -#: supported. - -# env - -#: Specify the environment variables to be set in all child processes. -#: Using the name with an equal sign (e.g. env VAR=) will set it to -#: the empty string. Specifying only the name (e.g. env VAR) will -#: remove the variable from the child process' environment. Note that -#: environment variables are expanded recursively, for example:: - -#: env VAR1=a -#: env VAR2=${HOME}/${VAR1}/b - -#: The value of VAR2 will be /a/b. - -# filter_notification - -#: Specify rules to filter out notifications sent by applications -#: running in kitty. Can be specified multiple times to create -#: multiple filter rules. A rule specification is of the form -#: field:regexp. A filter rule can match on any of the fields: title, -#: body, app, type. The special value of all filters out all -#: notifications. Rules can be combined using Boolean operators. Some -#: examples:: - -#: filter_notification title:hello or body:"abc.*def" -#: # filter out notification from vim except for ones about updates, (?i) -#: # makes matching case insensitive. -#: filter_notification app:"[ng]?vim" and not body:"(?i)update" -#: # filter out all notifications -#: filter_notification all - -#: The field app is the name of the application sending the -#: notification and type is the type of the notification. Not all -#: applications will send these fields, so you can also match on the -#: title and body of the notification text. More sophisticated -#: programmatic filtering and custom actions on notifications can be -#: done by creating a notifications.py file in the kitty config -#: directory (~/.config/kitty). An annotated sample is available -#: . - -# watcher - -#: Path to python file which will be loaded for watchers -#: . Can be -#: specified more than once to load multiple watchers. The watchers -#: will be added to every kitty window. Relative paths are resolved -#: relative to the kitty config directory. Note that reloading the -#: config will only affect windows created after the reload. - -# exe_search_path - -#: Control where kitty finds the programs to run. The default search -#: order is: First search the system wide PATH, then ~/.local/bin and -#: ~/bin. If still not found, the PATH defined in the login shell -#: after sourcing all its startup files is tried. Finally, if present, -#: the PATH specified by the env option is tried. - -#: This option allows you to prepend, append, or remove paths from -#: this search order. It can be specified multiple times for multiple -#: paths. A simple path will be prepended to the search order. A path -#: that starts with the + sign will be append to the search order, -#: after ~/bin above. A path that starts with the - sign will be -#: removed from the entire search order. For example:: - -#: exe_search_path /some/prepended/path -#: exe_search_path +/some/appended/path -#: exe_search_path -/some/excluded/path - -# update_check_interval 24 - -#: The interval to periodically check if an update to kitty is -#: available (in hours). If an update is found, a system notification -#: is displayed informing you of the available update. The default is -#: to check every 24 hours, set to zero to disable. Update checking is -#: only done by the official binary builds. Distro packages or source -#: builds do not do update checking. Changing this option by reloading -#: the config is not supported. - -# startup_session none - -#: Path to a session file to use for all kitty instances. Can be -#: overridden by using the kitty --session =none command line option -#: for individual instances. See sessions -#: in the kitty -#: documentation for details. Note that relative paths are interpreted -#: with respect to the kitty config directory. Environment variables -#: in the path are expanded. Changing this option by reloading the -#: config is not supported. Note that if kitty is invoked with command -#: line arguments specifying a command to run, this option is ignored. - -# clipboard_control write-clipboard write-primary read-clipboard-ask read-primary-ask - -#: Allow programs running in kitty to read and write from the -#: clipboard. You can control exactly which actions are allowed. The -#: possible actions are: write-clipboard, read-clipboard, write- -#: primary, read-primary, read-clipboard-ask, read-primary-ask. The -#: default is to allow writing to the clipboard and primary selection -#: and to ask for permission when a program tries to read from the -#: clipboard. Note that disabling the read confirmation is a security -#: risk as it means that any program, even the ones running on a -#: remote server via SSH can read your clipboard. See also -#: clipboard_max_size. - -# clipboard_max_size 512 - -#: The maximum size (in MB) of data from programs running in kitty -#: that will be stored for writing to the system clipboard. A value of -#: zero means no size limit is applied. See also clipboard_control. - -# file_transfer_confirmation_bypass - -#: The password that can be supplied to the file transfer kitten -#: to skip the -#: transfer confirmation prompt. This should only be used when -#: initiating transfers from trusted computers, over trusted networks -#: or encrypted transports, as it allows any programs running on the -#: remote machine to read/write to the local filesystem, without -#: permission. - -# allow_hyperlinks yes - -#: Process hyperlink escape sequences (OSC 8). If disabled OSC 8 -#: escape sequences are ignored. Otherwise they become clickable -#: links, that you can click with the mouse or by using the hints -#: kitten . The -#: special value of ask means that kitty will ask before opening the -#: link when clicked. - -# shell_integration enabled - -#: Enable shell integration on supported shells. This enables features -#: such as jumping to previous prompts, browsing the output of the -#: previous command in a pager, etc. on supported shells. Set to -#: disabled to turn off shell integration, completely. It is also -#: possible to disable individual features, set to a space separated -#: list of these values: no-rc, no-cursor, no-title, no-cwd, no- -#: prompt-mark, no-complete, no-sudo. See Shell integration -#: for details. - -# allow_cloning ask - -#: Control whether programs running in the terminal can request new -#: windows to be created. The canonical example is clone-in-kitty -#: . -#: By default, kitty will ask for permission for each clone request. -#: Allowing cloning unconditionally gives programs running in the -#: terminal (including over SSH) permission to execute arbitrary code, -#: as the user who is running the terminal, on the computer that the -#: terminal is running on. - -# clone_source_strategies venv,conda,env_var,path - -#: Control what shell code is sourced when running clone-in-kitty in -#: the newly cloned window. The supported strategies are: - -#: venv -#: Source the file $VIRTUAL_ENV/bin/activate. This is used by the -#: Python stdlib venv module and allows cloning venvs automatically. -#: conda -#: Run conda activate $CONDA_DEFAULT_ENV. This supports the virtual -#: environments created by conda. -#: env_var -#: Execute the contents of the environment variable -#: KITTY_CLONE_SOURCE_CODE with eval. -#: path -#: Source the file pointed to by the environment variable -#: KITTY_CLONE_SOURCE_PATH. - -#: This option must be a comma separated list of the above values. -#: Only the first valid match, in the order specified, is sourced. - -# notify_on_cmd_finish never - -#: Show a desktop notification when a long-running command finishes -#: (needs shell_integration). The possible values are: - -#: never -#: Never send a notification. - -#: unfocused -#: Only send a notification when the window does not have keyboard focus. - -#: invisible -#: Only send a notification when the window both is unfocused and not visible -#: to the user, for example, because it is in an inactive tab or its OS window -#: is not currently visible (on platforms that support OS window visibility querying -#: this considers an OS Window visible iff it is active). - -#: always -#: Always send a notification, regardless of window state. - -#: There are two optional arguments: - -#: First, the minimum duration for what is considered a long running -#: command. The default is 5 seconds. Specify a second argument to set -#: the duration. For example: invisible 15. Do not set the value too -#: small, otherwise a command that launches a new OS Window and exits -#: will spam a notification. - -#: Second, the action to perform. The default is notify. The possible -#: values are: - -#: notify -#: Send a desktop notification. The subsequent arguments are optional and specify when -#: the notification is automatically cleared. The set of possible events when the notification is -#: cleared are: focus and next. focus means that when the notification -#: policy is unfocused or invisible the notification is automatically cleared -#: when the window regains focus. The value of next means that the previous notification -#: is cleared when the next notification is shown. The default when no arguments are specified -#: is: focus next. - -#: bell -#: Ring the terminal bell. - -#: command -#: Run a custom command. All subsequent arguments are the cmdline to run. - -#: Some more examples:: - -#: # Send a notification when a command takes more than 5 seconds in an unfocused window -#: notify_on_cmd_finish unfocused -#: # Send a notification when a command takes more than 10 seconds in a invisible window -#: notify_on_cmd_finish invisible 10.0 -#: # Ring a bell when a command takes more than 10 seconds in a invisible window -#: notify_on_cmd_finish invisible 10.0 bell -#: # Run 'notify-send' when a command takes more than 10 seconds in a invisible window -#: # Here %c is replaced by the current command line and %s by the job exit code -#: notify_on_cmd_finish invisible 10.0 command notify-send "job finished with status: %s" %c -#: # Do not clear previous notification when next command finishes or window regains focus -#: notify_on_cmd_finish invisible 5.0 notify - -# term xterm-kitty - -#: The value of the TERM environment variable to set. Changing this -#: can break many terminal programs, only change it if you know what -#: you are doing, not because you read some advice on "Stack Overflow" -#: to change it. The TERM variable is used by various programs to get -#: information about the capabilities and behavior of the terminal. If -#: you change it, depending on what programs you run, and how -#: different the terminal you are changing it to is, various things -#: from key-presses, to colors, to various advanced features may not -#: work. Changing this option by reloading the config will only affect -#: newly created windows. - -# terminfo_type path - -#: The value of the TERMINFO environment variable to set. This -#: variable is used by programs running in the terminal to search for -#: terminfo databases. The default value of path causes kitty to set -#: it to a filesystem location containing the kitty terminfo database. -#: A value of direct means put the entire database into the env var -#: directly. This can be useful when connecting to containers, for -#: example. But, note that not all software supports this. A value of -#: none means do not touch the variable. - -# forward_stdio no - -#: Forward STDOUT and STDERR of the kitty process to child processes. -#: This is useful for debugging as it allows child processes to print -#: to kitty's STDOUT directly. For example, echo hello world -#: >&$KITTY_STDIO_FORWARDED in a shell will print to the parent -#: kitty's STDOUT. Sets the KITTY_STDIO_FORWARDED=fdnum environment -#: variable so child processes know about the forwarding. Note that on -#: macOS this prevents the shell from being run via the login utility -#: so getlogin() will not work in programs run in this session. - -# menu_map - -#: Specify entries for various menus in kitty. Currently only the -#: global menubar on macOS is supported. For example:: - -#: menu_map global "Actions::Launch something special" launch --hold --type=os-window sh -c "echo hello world" - -#: This will create a menu entry named "Launch something special" in -#: an "Actions" menu in the macOS global menubar. Sub-menus can be -#: created by adding more levels separated by the :: characters. - -#: }}} - -#: OS specific tweaks {{{ - -# wayland_titlebar_color system - -#: The color of the kitty window's titlebar on Wayland systems with -#: client side window decorations such as GNOME. A value of system -#: means to use the default system colors, a value of background means -#: to use the background color of the currently active kitty window -#: and finally you can use an arbitrary color, such as #12af59 or red. - -# macos_titlebar_color system - -#: The color of the kitty window's titlebar on macOS. A value of -#: system means to use the default system color, light or dark can -#: also be used to set it explicitly. A value of background means to -#: use the background color of the currently active window and finally -#: you can use an arbitrary color, such as #12af59 or red. WARNING: -#: This option works by using a hack when arbitrary color (or -#: background) is configured, as there is no proper Cocoa API for it. -#: It sets the background color of the entire window and makes the -#: titlebar transparent. As such it is incompatible with -#: background_opacity. If you want to use both, you are probably -#: better off just hiding the titlebar with hide_window_decorations. - -# macos_option_as_alt no - -#: Use the Option key as an Alt key on macOS. With this set to no, -#: kitty will use the macOS native Option+Key to enter Unicode -#: character behavior. This will break any Alt+Key keyboard shortcuts -#: in your terminal programs, but you can use the macOS Unicode input -#: technique. You can use the values: left, right or both to use only -#: the left, right or both Option keys as Alt, instead. Note that -#: kitty itself always treats Option the same as Alt. This means you -#: cannot use this option to configure different kitty shortcuts for -#: Option+Key vs. Alt+Key. Also, any kitty shortcuts using -#: Option/Alt+Key will take priority, so that any such key presses -#: will not be passed to terminal programs running inside kitty. -#: Changing this option by reloading the config is not supported. - -# macos_hide_from_tasks no - -#: Hide the kitty window from running tasks on macOS (⌘+Tab and the -#: Dock). Changing this option by reloading the config is not -#: supported. - -# macos_quit_when_last_window_closed no - -#: Have kitty quit when all the top-level windows are closed on macOS. -#: By default, kitty will stay running, even with no open windows, as -#: is the expected behavior on macOS. - -# macos_window_resizable yes - -#: Disable this if you want kitty top-level OS windows to not be -#: resizable on macOS. - -# macos_thicken_font 0 - -#: Draw an extra border around the font with the given width, to -#: increase legibility at small font sizes on macOS. For example, a -#: value of 0.75 will result in rendering that looks similar to sub- -#: pixel antialiasing at common font sizes. Note that in modern kitty, -#: this option is obsolete (although still supported). Consider using -#: text_composition_strategy instead. - -# macos_traditional_fullscreen no - -#: Use the macOS traditional full-screen transition, that is faster, -#: but less pretty. - -# macos_show_window_title_in all - -#: Control where the window title is displayed on macOS. A value of -#: window will show the title of the currently active window at the -#: top of the macOS window. A value of menubar will show the title of -#: the currently active window in the macOS global menu bar, making -#: use of otherwise wasted space. A value of all will show the title -#: in both places, and none hides the title. See -#: macos_menubar_title_max_length for how to control the length of the -#: title in the menu bar. - -# macos_menubar_title_max_length 0 - -#: The maximum number of characters from the window title to show in -#: the macOS global menu bar. Values less than one means that there is -#: no maximum limit. - -# macos_custom_beam_cursor no - -#: Use a custom mouse cursor for macOS that is easier to see on both -#: light and dark backgrounds. Nowadays, the default macOS cursor -#: already comes with a white border. WARNING: this might make your -#: mouse cursor invisible on dual GPU machines. Changing this option -#: by reloading the config is not supported. - -# macos_colorspace srgb - -#: The colorspace in which to interpret terminal colors. The default -#: of srgb will cause colors to match those seen in web browsers. The -#: value of default will use whatever the native colorspace of the -#: display is. The value of displayp3 will use Apple's special -#: snowflake display P3 color space, which will result in over -#: saturated (brighter) colors with some color shift. Reloading -#: configuration will change this value only for newly created OS -#: windows. - -# linux_display_server auto - -#: Choose between Wayland and X11 backends. By default, an appropriate -#: backend based on the system state is chosen automatically. Set it -#: to x11 or wayland to force the choice. Changing this option by -#: reloading the config is not supported. - -# wayland_enable_ime yes - -#: Enable Input Method Extension on Wayland. This is typically used -#: for inputting text in East Asian languages. However, its -#: implementation in Wayland is often buggy and introduces latency -#: into the input loop, so disable this if you know you dont need it. -#: Changing this option by reloading the config is not supported, it -#: will not have any effect. - -#: }}} - -#: Keyboard shortcuts {{{ - -#: Keys are identified simply by their lowercase Unicode characters. -#: For example: a for the A key, [ for the left square bracket key, -#: etc. For functional keys, such as Enter or Escape, the names are -#: present at Functional key definitions -#: . -#: For modifier keys, the names are ctrl (control, ⌃), shift (⇧), alt -#: (opt, option, ⌥), super (cmd, command, ⌘). - -#: Simple shortcut mapping is done with the map directive. For full -#: details on advanced mapping including modal and per application -#: maps, see mapping . Some -#: quick examples to illustrate common tasks:: - -#: # unmap a keyboard shortcut, passing it to the program running in kitty -#: map kitty_mod+space -#: # completely ignore a keyboard event -#: map ctrl+alt+f1 discard_event -#: # combine multiple actions -#: map kitty_mod+e combine : new_window : next_layout -#: # multi-key shortcuts -#: map ctrl+x>ctrl+y>z action - -#: The full list of actions that can be mapped to key presses is -#: available here . - -# kitty_mod ctrl+shift - -#: Special modifier key alias for default shortcuts. You can change -#: the value of this option to alter all default shortcuts that use -#: kitty_mod. - -# clear_all_shortcuts no - -#: Remove all shortcut definitions up to this point. Useful, for -#: instance, to remove the default shortcuts. - -# action_alias - -#: E.g. action_alias launch_tab launch --type=tab --cwd=current - -#: Define action aliases to avoid repeating the same options in -#: multiple mappings. Aliases can be defined for any action and will -#: be expanded recursively. For example, the above alias allows you to -#: create mappings to launch a new tab in the current working -#: directory without duplication:: - -#: map f1 launch_tab vim -#: map f2 launch_tab emacs - -#: Similarly, to alias kitten invocation:: - -#: action_alias hints kitten hints --hints-offset=0 - -# kitten_alias - -#: E.g. kitten_alias hints hints --hints-offset=0 - -#: Like action_alias above, but specifically for kittens. Generally, -#: prefer to use action_alias. This option is a legacy version, -#: present for backwards compatibility. It causes all invocations of -#: the aliased kitten to be substituted. So the example above will -#: cause all invocations of the hints kitten to have the --hints- -#: offset=0 option applied. - -#: Clipboard {{{ - -#: Copy to clipboard - -# map kitty_mod+c copy_to_clipboard -# map cmd+c copy_to_clipboard - -#:: There is also a copy_or_interrupt action that can be optionally -#:: mapped to Ctrl+C. It will copy only if there is a selection and -#:: send an interrupt otherwise. Similarly, -#:: copy_and_clear_or_interrupt will copy and clear the selection or -#:: send an interrupt if there is no selection. - -#: Paste from clipboard - -# map kitty_mod+v paste_from_clipboard -# map cmd+v paste_from_clipboard - -#: Paste from selection - -# map kitty_mod+s paste_from_selection -# map shift+insert paste_from_selection - -#: Pass selection to program - -# map kitty_mod+o pass_selection_to_program - -#:: You can also pass the contents of the current selection to any -#:: program with pass_selection_to_program. By default, the system's -#:: open program is used, but you can specify your own, the selection -#:: will be passed as a command line argument to the program. For -#:: example:: - -#:: map kitty_mod+o pass_selection_to_program firefox - -#:: You can pass the current selection to a terminal program running -#:: in a new kitty window, by using the @selection placeholder:: - -#:: map kitty_mod+y new_window less @selection - -#: }}} - -#: Scrolling {{{ - -#: Scroll line up - -# map kitty_mod+up scroll_line_up -# map kitty_mod+k scroll_line_up -# map opt+cmd+page_up scroll_line_up -# map cmd+up scroll_line_up - -#: Scroll line down - -# map kitty_mod+down scroll_line_down -# map kitty_mod+j scroll_line_down -# map opt+cmd+page_down scroll_line_down -# map cmd+down scroll_line_down - -#: Scroll page up - -# map kitty_mod+page_up scroll_page_up -# map cmd+page_up scroll_page_up - -#: Scroll page down - -# map kitty_mod+page_down scroll_page_down -# map cmd+page_down scroll_page_down - -#: Scroll to top - -# map kitty_mod+home scroll_home -# map cmd+home scroll_home - -#: Scroll to bottom - -# map kitty_mod+end scroll_end -# map cmd+end scroll_end - -#: Scroll to previous shell prompt - -# map kitty_mod+z scroll_to_prompt -1 - -#:: Use a parameter of 0 for scroll_to_prompt to scroll to the last -#:: jumped to or the last clicked position. Requires shell -#:: integration -#:: to work. - -#: Scroll to next shell prompt - -# map kitty_mod+x scroll_to_prompt 1 - -#: Browse scrollback buffer in pager - -# map kitty_mod+h show_scrollback - -#:: You can pipe the contents of the current screen and history -#:: buffer as STDIN to an arbitrary program using launch --stdin- -#:: source. For example, the following opens the scrollback buffer in -#:: less in an overlay window:: - -#:: map f1 launch --stdin-source=@screen_scrollback --stdin-add-formatting --type=overlay less +G -R - -#:: For more details on piping screen and buffer contents to external -#:: programs, see launch . - -#: Browse output of the last shell command in pager - -# map kitty_mod+g show_last_command_output - -#:: You can also define additional shortcuts to get the command -#:: output. For example, to get the first command output on screen:: - -#:: map f1 show_first_command_output_on_screen - -#:: To get the command output that was last accessed by a keyboard -#:: action or mouse action:: - -#:: map f1 show_last_visited_command_output - -#:: You can pipe the output of the last command run in the shell -#:: using the launch action. For example, the following opens the -#:: output in less in an overlay window:: - -#:: map f1 launch --stdin-source=@last_cmd_output --stdin-add-formatting --type=overlay less +G -R - -#:: To get the output of the first command on the screen, use -#:: @first_cmd_output_on_screen. To get the output of the last jumped -#:: to command, use @last_visited_cmd_output. - -#:: Requires shell integration -#:: to work. - -#: }}} - -#: Window management {{{ - -#: New window - -# map kitty_mod+enter new_window -# map cmd+enter new_window - -#:: You can open a new kitty window running an arbitrary program, for -#:: example:: - -#:: map kitty_mod+y launch mutt - -#:: You can open a new window with the current working directory set -#:: to the working directory of the current window using:: - -#:: map ctrl+alt+enter launch --cwd=current - -#:: You can open a new window that is allowed to control kitty via -#:: the kitty remote control facility with launch --allow-remote- -#:: control. Any programs running in that window will be allowed to -#:: control kitty. For example:: - -#:: map ctrl+enter launch --allow-remote-control some_program - -#:: You can open a new window next to the currently active window or -#:: as the first window, with:: - -#:: map ctrl+n launch --location=neighbor -#:: map ctrl+f launch --location=first - -#:: For more details, see launch -#:: . - -#: New OS window - -# map kitty_mod+n new_os_window -# map cmd+n new_os_window - -#:: Works like new_window above, except that it opens a top-level OS -#:: window. In particular you can use new_os_window_with_cwd to open -#:: a window with the current working directory. - -#: Close window - -# map kitty_mod+w close_window -# map shift+cmd+d close_window - -#: Next window - -# map kitty_mod+] next_window - -#: Previous window - -# map kitty_mod+[ previous_window - -#: Move window forward - -# map kitty_mod+f move_window_forward - -#: Move window backward - -# map kitty_mod+b move_window_backward - -#: Move window to top - -# map kitty_mod+` move_window_to_top - -#: Start resizing window - -# map kitty_mod+r start_resizing_window -# map cmd+r start_resizing_window - -#: First window - -# map kitty_mod+1 first_window -# map cmd+1 first_window - -#: Second window - -# map kitty_mod+2 second_window -# map cmd+2 second_window - -#: Third window - -# map kitty_mod+3 third_window -# map cmd+3 third_window - -#: Fourth window - -# map kitty_mod+4 fourth_window -# map cmd+4 fourth_window - -#: Fifth window - -# map kitty_mod+5 fifth_window -# map cmd+5 fifth_window - -#: Sixth window - -# map kitty_mod+6 sixth_window -# map cmd+6 sixth_window - -#: Seventh window - -# map kitty_mod+7 seventh_window -# map cmd+7 seventh_window - -#: Eighth window - -# map kitty_mod+8 eighth_window -# map cmd+8 eighth_window - -#: Ninth window - -# map kitty_mod+9 ninth_window -# map cmd+9 ninth_window - -#: Tenth window - -# map kitty_mod+0 tenth_window - -#: Visually select and focus window - -# map kitty_mod+f7 focus_visible_window - -#:: Display overlay numbers and alphabets on the window, and switch -#:: the focus to the window when you press the key. When there are -#:: only two windows, the focus will be switched directly without -#:: displaying the overlay. You can change the overlay characters and -#:: their order with option visual_window_select_characters. - -#: Visually swap window with another - -# map kitty_mod+f8 swap_with_window - -#:: Works like focus_visible_window above, but swaps the window. - -#: }}} - -#: Tab management {{{ - -#: Next tab - -# map kitty_mod+right next_tab -# map shift+cmd+] next_tab -# map ctrl+tab next_tab - -#: Previous tab - -# map kitty_mod+left previous_tab -# map shift+cmd+[ previous_tab -# map ctrl+shift+tab previous_tab - -#: New tab - -# map kitty_mod+t new_tab -# map cmd+t new_tab - -#: Close tab - -# map kitty_mod+q close_tab -# map cmd+w close_tab - -#: Close OS window - -# map shift+cmd+w close_os_window - -#: Move tab forward - -# map kitty_mod+. move_tab_forward - -#: Move tab backward - -# map kitty_mod+, move_tab_backward - -#: Set tab title - -# map kitty_mod+alt+t set_tab_title -# map shift+cmd+i set_tab_title - - -#: You can also create shortcuts to go to specific tabs, with 1 being -#: the first tab, 2 the second tab and -1 being the previously active -#: tab, -2 being the tab active before the previously active tab and -#: so on. Any number larger than the number of tabs goes to the last -#: tab and any number less than the number of previously used tabs in -#: the history goes to the oldest previously used tab in the history:: - -#: map ctrl+alt+1 goto_tab 1 -#: map ctrl+alt+2 goto_tab 2 - -#: Just as with new_window above, you can also pass the name of -#: arbitrary commands to run when using new_tab and new_tab_with_cwd. -#: Finally, if you want the new tab to open next to the current tab -#: rather than at the end of the tabs list, use:: - -#: map ctrl+t new_tab !neighbor [optional cmd to run] -#: }}} - -#: Layout management {{{ - -#: Next layout - -# map kitty_mod+l next_layout - - -#: You can also create shortcuts to switch to specific layouts:: - -#: map ctrl+alt+t goto_layout tall -#: map ctrl+alt+s goto_layout stack - -#: Similarly, to switch back to the previous layout:: - -#: map ctrl+alt+p last_used_layout - -#: There is also a toggle_layout action that switches to the named -#: layout or back to the previous layout if in the named layout. -#: Useful to temporarily "zoom" the active window by switching to the -#: stack layout:: - -#: map ctrl+alt+z toggle_layout stack -#: }}} - -#: Font sizes {{{ - -#: You can change the font size for all top-level kitty OS windows at -#: a time or only the current one. - -#: Increase font size - -# map kitty_mod+equal change_font_size all +2.0 -# map kitty_mod+plus change_font_size all +2.0 -# map kitty_mod+kp_add change_font_size all +2.0 -# map cmd+plus change_font_size all +2.0 -# map cmd+equal change_font_size all +2.0 -# map shift+cmd+equal change_font_size all +2.0 - -#: Decrease font size - -# map kitty_mod+minus change_font_size all -2.0 -# map kitty_mod+kp_subtract change_font_size all -2.0 -# map cmd+minus change_font_size all -2.0 -# map shift+cmd+minus change_font_size all -2.0 - -#: Reset font size - -# map kitty_mod+backspace change_font_size all 0 -# map cmd+0 change_font_size all 0 - - -#: To setup shortcuts for specific font sizes:: - -#: map kitty_mod+f6 change_font_size all 10.0 - -#: To setup shortcuts to change only the current OS window's font -#: size:: - -#: map kitty_mod+f6 change_font_size current 10.0 -#: }}} - -#: Select and act on visible text {{{ - -#: Use the hints kitten to select text and either pass it to an -#: external program or insert it into the terminal or copy it to the -#: clipboard. - -#: Open URL - -# map kitty_mod+e open_url_with_hints - -#:: Open a currently visible URL using the keyboard. The program used -#:: to open the URL is specified in open_url_with. - -#: Insert selected path - -# map kitty_mod+p>f kitten hints --type path --program - - -#:: Select a path/filename and insert it into the terminal. Useful, -#:: for instance to run git commands on a filename output from a -#:: previous git command. - -#: Open selected path - -# map kitty_mod+p>shift+f kitten hints --type path - -#:: Select a path/filename and open it with the default open program. - -#: Insert selected line - -# map kitty_mod+p>l kitten hints --type line --program - - -#:: Select a line of text and insert it into the terminal. Useful for -#:: the output of things like: `ls -1`. - -#: Insert selected word - -# map kitty_mod+p>w kitten hints --type word --program - - -#:: Select words and insert into terminal. - -#: Insert selected hash - -# map kitty_mod+p>h kitten hints --type hash --program - - -#:: Select something that looks like a hash and insert it into the -#:: terminal. Useful with git, which uses SHA1 hashes to identify -#:: commits. - -#: Open the selected file at the selected line - -# map kitty_mod+p>n kitten hints --type linenum - -#:: Select something that looks like filename:linenum and open it in -#:: your default editor at the specified line number. - -#: Open the selected hyperlink - -# map kitty_mod+p>y kitten hints --type hyperlink - -#:: Select a hyperlink (i.e. a URL that has been marked as such by -#:: the terminal program, for example, by `ls --hyperlink=auto`). - - -#: The hints kitten has many more modes of operation that you can map -#: to different shortcuts. For a full description see hints kitten -#: . -#: }}} - -#: Miscellaneous {{{ - -#: Show documentation - -# map kitty_mod+f1 show_kitty_doc overview - -#: Toggle fullscreen - -# map kitty_mod+f11 toggle_fullscreen -# map ctrl+cmd+f toggle_fullscreen - -#: Toggle maximized - -# map kitty_mod+f10 toggle_maximized - -#: Toggle macOS secure keyboard entry - -# map opt+cmd+s toggle_macos_secure_keyboard_entry - -#: Unicode input - -# map kitty_mod+u kitten unicode_input -# map ctrl+cmd+space kitten unicode_input - -#: Edit config file - -# map kitty_mod+f2 edit_config_file -# map cmd+, edit_config_file - -#: Open the kitty command shell - -# map kitty_mod+escape kitty_shell window - -#:: Open the kitty shell in a new window / tab / overlay / os_window -#:: to control kitty using commands. - -#: Increase background opacity - -# map kitty_mod+a>m set_background_opacity +0.1 - -#: Decrease background opacity - -# map kitty_mod+a>l set_background_opacity -0.1 - -#: Make background fully opaque - -# map kitty_mod+a>1 set_background_opacity 1 - -#: Reset background opacity - -# map kitty_mod+a>d set_background_opacity default - -#: Reset the terminal - -# map kitty_mod+delete clear_terminal reset active -# map opt+cmd+r clear_terminal reset active - -#:: You can create shortcuts to clear/reset the terminal. For -#:: example:: - -#:: # Reset the terminal -#:: map f1 clear_terminal reset active -#:: # Clear the terminal screen by erasing all contents -#:: map f1 clear_terminal clear active -#:: # Clear the terminal scrollback by erasing it -#:: map f1 clear_terminal scrollback active -#:: # Scroll the contents of the screen into the scrollback -#:: map f1 clear_terminal scroll active -#:: # Clear everything on screen up to the line with the cursor or the start of the current prompt (needs shell integration) -#:: map f1 clear_terminal to_cursor active -#:: # Same as above except cleared lines are moved into scrollback -#:: map f1 clear_terminal to_cursor_scroll active - -#:: If you want to operate on all kitty windows instead of just the -#:: current one, use all instead of active. - -#:: Some useful functions that can be defined in the shell rc files -#:: to perform various kinds of clearing of the current window: - -#:: .. code-block:: sh - -#:: clear-only-screen() { -#:: printf "\e[H\e[2J" -#:: } - -#:: clear-screen-and-scrollback() { -#:: printf "\e[H\e[3J" -#:: } - -#:: clear-screen-saving-contents-in-scrollback() { -#:: printf "\e[H\e[22J" -#:: } - -#:: For instance, using these escape codes, it is possible to remap -#:: Ctrl+L to both scroll the current screen contents into the -#:: scrollback buffer and clear the screen, instead of just clearing -#:: the screen. For ZSH, in ~/.zshrc, add: - -#:: .. code-block:: zsh - -#:: ctrl_l() { -#:: builtin print -rn -- $'\r\e[0J\e[H\e[22J' >"$TTY" -#:: builtin zle .reset-prompt -#:: builtin zle -R -#:: } -#:: zle -N ctrl_l -#:: bindkey '^l' ctrl_l - -#:: Alternatively, you can just add map ctrl+l clear_terminal -#:: to_cursor_scroll active to kitty.conf which works with no changes -#:: to the shell rc files, but only clears up to the prompt, it does -#:: not clear any text at the prompt itself. - -#: Clear to start - -# map cmd+k clear_terminal to_cursor active - -#: Clear scrollback - -# map option+cmd+k clear_terminal scrollback active - -#: Clear screen - -# map cmd+ctrl+l clear_terminal to_cursor_scroll active - -#: Reload kitty.conf - -# map kitty_mod+f5 load_config_file -# map ctrl+cmd+, load_config_file - -#:: Reload kitty.conf, applying any changes since the last time it -#:: was loaded. Note that a handful of options cannot be dynamically -#:: changed and require a full restart of kitty. Particularly, when -#:: changing shortcuts for actions located on the macOS global menu -#:: bar, a full restart is needed. You can also map a keybinding to -#:: load a different config file, for example:: - -#:: map f5 load_config /path/to/alternative/kitty.conf - -#:: Note that all options from the original kitty.conf are discarded, -#:: in other words the new configuration *replace* the old ones. - -#: Debug kitty configuration - -# map kitty_mod+f6 debug_config -# map opt+cmd+, debug_config - -#:: Show details about exactly what configuration kitty is running -#:: with and its host environment. Useful for debugging issues. - -#: Send arbitrary text on key presses - -#:: E.g. map ctrl+shift+alt+h send_text all Hello World - -#:: You can tell kitty to send arbitrary (UTF-8) encoded text to the -#:: client program when pressing specified shortcut keys. For -#:: example:: - -#:: map ctrl+alt+a send_text all Special text - -#:: This will send "Special text" when you press the Ctrl+Alt+A key -#:: combination. The text to be sent decodes ANSI C escapes -#:: so you can use escapes like \e to send control -#:: codes or \u21fb to send Unicode characters (or you can just input -#:: the Unicode characters directly as UTF-8 text). You can use -#:: `kitten show-key` to get the key escape codes you want to -#:: emulate. - -#:: The first argument to send_text is the keyboard modes in which to -#:: activate the shortcut. The possible values are normal, -#:: application, kitty or a comma separated combination of them. The -#:: modes normal and application refer to the DECCKM cursor key mode -#:: for terminals, and kitty refers to the kitty extended keyboard -#:: protocol. The special value all means all of them. - -#:: Some more examples:: - -#:: # Output a word and move the cursor to the start of the line (like typing and pressing Home) -#:: map ctrl+alt+a send_text normal Word\e[H -#:: map ctrl+alt+a send_text application Word\eOH -#:: # Run a command at a shell prompt (like typing the command and pressing Enter) -#:: map ctrl+alt+a send_text normal,application some command with arguments\r - -#: Open kitty Website - -# map shift+cmd+/ open_url https://sw.kovidgoyal.net/kitty/ - -#: Hide macOS kitty application - -# map cmd+h hide_macos_app - -#: Hide macOS other applications - -# map opt+cmd+h hide_macos_other_apps - -#: Minimize macOS window - -# map cmd+m minimize_macos_window - -#: Quit kitty - -# map cmd+q quit - -#: }}} - -#: }}} - - -# BEGIN_KITTY_FONTS -font_family family='InconsolataGo Nerd Font Mono' postscript_name=InconsolataGoNFM -bold_font auto -italic_font auto -bold_italic_font auto -# END_KITTY_FONTS - - -# BEGIN_KITTY_THEME -# Rosé Pine -include current-theme.conf -# END_KITTY_THEME +globinclude kitty.d/**/*.conf diff --git a/dot_config/kitty/kitty.d/10-fonts.conf b/dot_config/kitty/kitty.d/10-fonts.conf new file mode 100644 index 0000000..2637706 --- /dev/null +++ b/dot_config/kitty/kitty.d/10-fonts.conf @@ -0,0 +1,8 @@ +# BEGIN_KITTY_FONTS +font_family family='InconsolataGo Nerd Font Mono' postscript_name=InconsolataGoNFM +bold_font auto +italic_font auto +bold_italic_font auto +# END_KITTY_FONTS + +font_size 9.0 diff --git a/dot_config/kitty/kitty.d/20-appearance.conf b/dot_config/kitty/kitty.d/20-appearance.conf new file mode 100644 index 0000000..ca284e0 --- /dev/null +++ b/dot_config/kitty/kitty.d/20-appearance.conf @@ -0,0 +1,3 @@ +background_opacity 0.9 +background_blur 5 +dynamic_background_opacity yes diff --git a/dot_config/kitty/kitty.d/30-emoji.conf b/dot_config/kitty/kitty.d/30-emoji.conf new file mode 100644 index 0000000..d12b4ab --- /dev/null +++ b/dot_config/kitty/kitty.d/30-emoji.conf @@ -0,0 +1,2 @@ +# Force emoji glyphs to a color emoji font (requires the font to be installed). +symbol_map U+2600-U+26FF,U+2700-U+27BF,U+1F000-U+1FAFF Noto Color Emoji diff --git a/dot_config/kitty/kitty.d/90-theme.conf b/dot_config/kitty/kitty.d/90-theme.conf new file mode 100644 index 0000000..472411e --- /dev/null +++ b/dot_config/kitty/kitty.d/90-theme.conf @@ -0,0 +1,4 @@ +# BEGIN_KITTY_THEME +# Rose Pine +include current-theme.conf +# END_KITTY_THEME diff --git a/dot_config/kitty/themes/apex-neon.conf b/dot_config/kitty/themes/apex-neon.conf new file mode 100644 index 0000000..8246ce5 --- /dev/null +++ b/dot_config/kitty/themes/apex-neon.conf @@ -0,0 +1,67 @@ +## APEX NEON - KITTY THEME ## +## Spec-accurate: color = state, not decoration + +# --- Core --- +foreground #ededed +background #050505 + +# Selection: "target locked" +selection_background #ff0044 +selection_foreground #050505 + +# Cursor: Razor Red beam +cursor #ff0044 +cursor_text_color #050505 +cursor_shape beam + +# URLs: informational cyan +url_color #00eaff + +# Borders (optional) +active_border_color #ff0044 +inactive_border_color #262626 + +# Optional: subtle UI hint for visual bell +visual_bell_color #ff8899 + +# Spacing +window_padding_width 4 + +# --- 16-COLOR ANSI TABLE (Apex Neon spec) --- + +# Normal bank (0–7) +# color0: Black (Void) +color0 #050505 +# color1: Red (Razor) +color1 #ff0044 +# color2: Green (OK) +color2 #00ff99 +# color3: Yellow (Gold) +color3 #ffb700 +# color4: Blue (Info) +color4 #00eaff +# color5: Magenta (Purple) +color5 #9d00ff +# color6: Cyan (Info mapped) +color6 #00eaff +# color7: White (Stark) +color7 #ededed + +# Bright bank (8–15) +# color8: Bright black (UI separators) +color8 #262626 +# color9: Bright red (Alerts) +color9 #ff8899 +# color10: Bright green (Active success) +color10 #2bffb2 +# color11: Bright yellow (Urgent warning) +color11 #ffd24d +# color12: Bright blue (Active info) +color12 #5af3ff +# color13: Bright magenta (Elevated special) +color13 #c84dff +# color14: Bright cyan (Active tech signal) +color14 #5af3ff +# color15: Bright white (Extreme highlight) +color15 #ffffff + diff --git a/dot_config/nvim/lua/plugins/nerdy.lua b/dot_config/nvim/lua/plugins/nerdy.lua new file mode 100644 index 0000000..9521837 --- /dev/null +++ b/dot_config/nvim/lua/plugins/nerdy.lua @@ -0,0 +1,14 @@ +---@type LazySpec +return { + "2kabhishek/nerdy.nvim", + cmd = "Nerdy", + dependencies = { + "folke/snacks.nvim", + }, + opts = { + max_recents = 30, + add_default_keybindings = true, + copy_to_clipboard = false, + copy_register = "+", + }, +} diff --git a/dot_config/owlry/config.toml b/dot_config/owlry/config.toml index 44f5d11..58986a4 100644 --- a/dot_config/owlry/config.toml +++ b/dot_config/owlry/config.toml @@ -1,28 +1,60 @@ # Owlry Configuration -# Copy to ~/.config/owlry/config.toml +# Copy to: ~/.config/owlry/config.toml +# +# File Locations (XDG Base Directory compliant): +# ┌─────────────────────────────────────────────────────────────────────┐ +# │ Config: ~/.config/owlry/config.toml Main configuration │ +# │ Themes: ~/.config/owlry/themes/*.css Custom theme files │ +# │ Style: ~/.config/owlry/style.css CSS overrides │ +# │ Plugins: ~/.config/owlry/plugins/ User Lua/Rune plugins │ +# │ Scripts: ~/.local/share/owlry/scripts/ Executable scripts │ +# │ Data: ~/.local/share/owlry/frecency.json Usage history │ +# └─────────────────────────────────────────────────────────────────────┘ +# +# System Plugin Locations: +# ┌─────────────────────────────────────────────────────────────────────┐ +# │ Native: /usr/lib/owlry/plugins/*.so Installed plugins │ +# │ Runtimes: /usr/lib/owlry/runtimes/*.so Lua/Rune runtimes │ +# └─────────────────────────────────────────────────────────────────────┘ + +# ═══════════════════════════════════════════════════════════════════════ +# GENERAL +# ═══════════════════════════════════════════════════════════════════════ [general] show_icons = true -max_results = 10 -terminal_command = "kitty" # Auto-detected if not set +max_results = 100 -# Launch wrapper for app execution (auto-detected if not set) -# Examples: -# "uwsm app --" # For uwsm sessions -# "hyprctl dispatch exec --" # For Hyprland -# "" # Direct execution +# Terminal emulator for SSH, scripts, etc. +# Auto-detection order: $TERMINAL → xdg-terminal-exec → DE-native → Wayland → X11 → xterm +# Uncomment to override: +# terminal_command = "kitty" + +# Launch wrapper for app execution (auto-detected for uwsm/Hyprland) +# Examples: "uwsm app --", "hyprctl dispatch exec --", "" # launch_wrapper = "uwsm app --" +# Header tabs - providers shown as toggle buttons (Ctrl+1, Ctrl+2, etc.) +# Values: app, cmd, uuctl, bookmark, calc, clip, dmenu, emoji, file, script, ssh, sys, web +tabs = ["app", "cmd", "uuctl"] + +# ═══════════════════════════════════════════════════════════════════════ +# APPEARANCE +# ═══════════════════════════════════════════════════════════════════════ + [appearance] -width = 600 -height = 400 +width = 850 +height = 650 font_size = 14 border_radius = 12 -# Theme: "owl" for built-in dark theme, or leave unset for GTK default +# Theme name - loads ~/.config/owlry/themes/{name}.css +# Built-in: owl, catppuccin-mocha, dracula, gruvbox-dark, nord, +# one-dark, rose-pine, solarized-dark, tokyo-night +# Or leave unset for GTK default theme = "apex-neon" -# Individual color overrides (CSS color values) +# Color overrides (applied on top of theme) # [appearance.colors] # background = "#1a1b26" # background_secondary = "#24283b" @@ -31,47 +63,58 @@ theme = "apex-neon" # text_secondary = "#565f89" # accent = "#7aa2f7" # accent_bright = "#89b4fa" -# badge_app = "#9ece6a" -# badge_calc = "#e0af68" -# badge_cmd = "#7aa2f7" -# badge_dmenu = "#bb9af7" -# badge_uuctl = "#f7768e" + +# ═══════════════════════════════════════════════════════════════════════ +# PLUGINS +# ═══════════════════════════════════════════════════════════════════════ +# +# All installed plugins are loaded by default. Use 'disabled' to blacklist. +# Plugin IDs: calculator, system, ssh, clipboard, emoji, scripts, bookmarks, +# websearch, filesearch, systemd, weather, media, pomodoro + +[plugins] +# Plugins to disable (by ID) +disabled = [] + +# Examples: +# disabled = ["emoji", "pomodoro"] # Disable specific plugins +# disabled = ["weather", "media"] # Disable widget plugins + +# ───────────────────────────────────────────────────────────────────────── +# Per-plugin configuration via [plugins.] sections +# ───────────────────────────────────────────────────────────────────────── + +# Weather widget plugin +[plugins.weather] +provider = "open-meteo" # wttr.in (default), openweathermap, open-meteo +location = "" # City name, "lat,lon", or empty for auto-detect +# api_key = "" # Required for OpenWeatherMap + +# Pomodoro timer plugin +[plugins.pomodoro] +work_mins = 25 # Work session duration +break_mins = 5 # Break duration + +# ═══════════════════════════════════════════════════════════════════════ +# CORE PROVIDERS +# ═══════════════════════════════════════════════════════════════════════ +# +# These are built into the core binary, not plugins. [providers] -applications = true -commands = true -uuctl = true +# Core providers (always available) +applications = true # .desktop applications from XDG dirs +commands = true # Executables from $PATH -# Calculator provider (type "= 5+3" or "calc 5+3") -calculator = true - -# Frecency: boost frequently/recently used items in search results +# Frecency - boost frequently/recently used items +# Data stored in: ~/.local/share/owlry/frecency.json frecency = true frecency_weight = 0.3 # 0.0 = disabled, 1.0 = strong boost -# Web search provider (type "? query" or "web query") -websearch = true -# Options: google, duckduckgo, bing, startpage, searxng, brave, ecosia -# Or custom URL with {query} placeholder, e.g. "https://search.example.com/?q={query}" +# Web Search settings search_engine = "duckduckgo" +# Options: google, duckduckgo, bing, startpage, searxng, brave, ecosia -# System commands (shutdown, reboot, lock, suspend, hibernate, logout, BIOS) -system = true - -# SSH connections from ~/.ssh/config -ssh = true - -# Clipboard history (requires cliphist) -clipboard = true - -# Browser bookmarks (Chrome, Chromium, Brave, Edge, Vivaldi) -bookmarks = true - -# Emoji picker (copies to clipboard) -emoji = true - -# Custom scripts from ~/.config/owlry/scripts/ -scripts = true - -# File search (requires fd or locate, trigger with "/ pattern" or "find pattern") -files = true +# File Search settings +file_search_max_results = 50 +# file_search_paths = ["/home", "/etc"] # Custom paths (default: $HOME) diff --git a/dot_config/owlry/themes/apex-neon.css b/dot_config/owlry/themes/apex-neon.css index 3ff8f1a..90505a9 100644 --- a/dot_config/owlry/themes/apex-neon.css +++ b/dot_config/owlry/themes/apex-neon.css @@ -1,39 +1,96 @@ /* * Owlry - Apex Neon Theme - * High-contrast void with razor red and electric cyan accents. + * "State over Decoration." + * + * A high-contrast dark theme built for focus and clinical clarity. + * Color exists to signal STATE, not to decorate space. + * + * Author: S0wlz (Owlibou) + * + * ───────────────────────────────────────────────────────────────── + * APEX DNA - Semantic Color Roles: + * + * RED is the Predator: Active intent, cursor, current location, critical errors + * CYAN is Informational: Technical data, links, neutral highlights + * PURPLE is Sacred: Root access, special modes, exceptional states + * GREEN is Success: Completion, OK states, positive feedback + * YELLOW is Warning: Caution, load states, attention needed + * + * Rule: If a UI element is not important, it does not glow. + * ───────────────────────────────────────────────────────────────── + * + * Core Palette: + * - Void Black: #050505 (absolute background) + * - Dark Surface: #141414 (inputs, inactive elements) + * - Light Surface: #262626 (separators, borders) + * - Stark White: #ededed (primary text) + * - Muted: #737373 (secondary text) + * - Razor Red: #ff0044 (THE accent - focus, cursor, selection) + * - Electric Cyan: #00eaff (info, links, technical) + * - Sacred Purple: #9d00ff (special, root, elevated) + * - Neon Green: #00ff99 (success, OK) + * - Warning Yellow: #ffb700 (warning, caution) + * + * Bright Escalations: + * - Alert Red: #ff8899 (distinguishable from cursor) + * - Active Cyan: #5af3ff (active info) + * - Active Green: #2bffb2 (active success) + * - Urgent Yellow: #ffd24d (urgent warning) + * - Elevated Purple:#c84dff (elevated special) + * + * Usage: Set theme = "apex-neon" in config.toml */ :root { + /* Core surfaces */ --owlry-bg: #050505; --owlry-bg-secondary: #141414; --owlry-border: #262626; --owlry-text: #ededed; --owlry-text-secondary: #737373; + + /* The Predator - primary accent */ --owlry-accent: #ff0044; - --owlry-accent-bright: #00eaff; - --owlry-badge-app: #00eaff; - --owlry-badge-cmd: #9d00ff; - --owlry-badge-dmenu: #00ff99; - --owlry-badge-uuctl: #ffb700; + --owlry-accent-bright: #ff8899; + + /* Provider badges - mapped to Apex semantics */ + --owlry-badge-app: #00eaff; /* Cyan: apps are informational */ + --owlry-badge-bookmark: #ffb700; /* Yellow: bookmarks need attention */ + --owlry-badge-calc: #ffd24d; /* Bright Yellow: calculator results */ + --owlry-badge-clip: #9d00ff; /* Purple: clipboard is special */ + --owlry-badge-cmd: #9d00ff; /* Purple: commands are elevated */ + --owlry-badge-dmenu: #00ff99; /* Green: dmenu is success/pipe */ + --owlry-badge-emoji: #c84dff; /* Bright Purple: emoji is special */ + --owlry-badge-file: #5af3ff; /* Bright Cyan: file search is active info */ + --owlry-badge-script: #2bffb2; /* Bright Green: scripts execute successfully */ + --owlry-badge-ssh: #00eaff; /* Cyan: SSH is technical/info */ + --owlry-badge-sys: #ff0044; /* Red: system actions are critical */ + --owlry-badge-uuctl: #ffb700; /* Yellow: uuctl requires attention */ + --owlry-badge-web: #00eaff; /* Cyan: web is informational */ + + /* Widget badges */ + --owlry-badge-media: #c84dff; /* Bright Purple: media is special */ + --owlry-badge-weather: #5af3ff; /* Bright Cyan: weather is active info */ + --owlry-badge-pomo: #ff8899; /* Alert Red: pomodoro demands attention */ } .owlry-main { background-color: rgba(5, 5, 5, 0.98); border: 1px solid rgba(38, 38, 38, 0.8); - box-shadow: 0 8px 32px rgba(0, 0, 0, 0.85), - 0 0 0 1px rgba(255, 0, 68, 0.25); + box-shadow: 0 8px 32px rgba(0, 0, 0, 0.8), + 0 0 0 1px rgba(255, 0, 68, 0.1); } .owlry-search { - background-color: rgba(20, 20, 20, 0.95); - border: 2px solid rgba(255, 0, 68, 0.7); + background-color: rgba(20, 20, 20, 0.9); + border: 2px solid rgba(38, 38, 38, 0.8); color: var(--owlry-text); caret-color: var(--owlry-accent); } .owlry-search:focus { border-color: var(--owlry-accent); - box-shadow: 0 0 0 2px rgba(255, 0, 68, 0.2); + box-shadow: 0 0 0 2px rgba(255, 0, 68, 0.3); } .owlry-result-row:hover { @@ -41,70 +98,247 @@ } .owlry-result-row:selected { - background-color: rgba(0, 234, 255, 0.2); - border-left: 3px solid var(--owlry-accent-bright); + background-color: rgba(255, 0, 68, 0.15); + border-left: 3px solid var(--owlry-accent); } .owlry-result-row:selected .owlry-result-name { - color: var(--owlry-text); + color: var(--owlry-accent-bright); } .owlry-result-row:selected .owlry-result-icon { - color: var(--owlry-text); + color: var(--owlry-accent); } +/* Provider badges - styled per Apex semantics */ .owlry-badge-app { - background-color: rgba(0, 234, 255, 0.2); + background-color: rgba(0, 234, 255, 0.15); color: var(--owlry-badge-app); } +.owlry-badge-bookmark { + background-color: rgba(255, 183, 0, 0.15); + color: var(--owlry-badge-bookmark); +} + +.owlry-badge-calc { + background-color: rgba(255, 210, 77, 0.15); + color: var(--owlry-badge-calc); +} + +.owlry-badge-clip { + background-color: rgba(157, 0, 255, 0.15); + color: var(--owlry-badge-clip); +} + .owlry-badge-cmd { - background-color: rgba(157, 0, 255, 0.2); + background-color: rgba(157, 0, 255, 0.15); color: var(--owlry-badge-cmd); } .owlry-badge-dmenu { - background-color: rgba(0, 255, 153, 0.2); + background-color: rgba(0, 255, 153, 0.15); color: var(--owlry-badge-dmenu); } +.owlry-badge-emoji { + background-color: rgba(200, 77, 255, 0.15); + color: var(--owlry-badge-emoji); +} + +.owlry-badge-file { + background-color: rgba(90, 243, 255, 0.15); + color: var(--owlry-badge-file); +} + +.owlry-badge-script { + background-color: rgba(43, 255, 178, 0.15); + color: var(--owlry-badge-script); +} + +.owlry-badge-ssh { + background-color: rgba(0, 234, 255, 0.15); + color: var(--owlry-badge-ssh); +} + +.owlry-badge-sys { + background-color: rgba(255, 0, 68, 0.15); + color: var(--owlry-badge-sys); +} + .owlry-badge-uuctl { - background-color: rgba(255, 183, 0, 0.2); + background-color: rgba(255, 183, 0, 0.15); color: var(--owlry-badge-uuctl); } +.owlry-badge-web { + background-color: rgba(0, 234, 255, 0.15); + color: var(--owlry-badge-web); +} + +/* Widget badges */ +.owlry-badge-media { + background-color: rgba(200, 77, 255, 0.15); + color: var(--owlry-badge-media); +} + +.owlry-badge-weather { + background-color: rgba(90, 243, 255, 0.15); + color: var(--owlry-badge-weather); +} + +.owlry-badge-pomo { + background-color: rgba(255, 136, 153, 0.15); + color: var(--owlry-badge-pomo); +} + +/* Filter button - default uses The Predator */ .owlry-filter-button:checked { background-color: rgba(255, 0, 68, 0.2); color: var(--owlry-accent); - border-color: rgba(255, 0, 68, 0.4); + border-color: rgba(255, 0, 68, 0.5); } +/* Provider-specific filter buttons - follow Apex semantics */ .owlry-filter-app:checked { - background-color: rgba(0, 234, 255, 0.2); + background-color: rgba(0, 234, 255, 0.15); color: var(--owlry-badge-app); - border-color: rgba(0, 234, 255, 0.4); + border-color: rgba(0, 234, 255, 0.5); +} + +.owlry-filter-bookmark:checked { + background-color: rgba(255, 183, 0, 0.15); + color: var(--owlry-badge-bookmark); + border-color: rgba(255, 183, 0, 0.5); +} + +.owlry-filter-calc:checked { + background-color: rgba(255, 210, 77, 0.15); + color: var(--owlry-badge-calc); + border-color: rgba(255, 210, 77, 0.5); +} + +.owlry-filter-clip:checked { + background-color: rgba(157, 0, 255, 0.15); + color: var(--owlry-badge-clip); + border-color: rgba(157, 0, 255, 0.5); } .owlry-filter-cmd:checked { - background-color: rgba(157, 0, 255, 0.2); + background-color: rgba(157, 0, 255, 0.15); color: var(--owlry-badge-cmd); - border-color: rgba(157, 0, 255, 0.4); + border-color: rgba(157, 0, 255, 0.5); +} + +.owlry-filter-dmenu:checked { + background-color: rgba(0, 255, 153, 0.15); + color: var(--owlry-badge-dmenu); + border-color: rgba(0, 255, 153, 0.5); +} + +.owlry-filter-emoji:checked { + background-color: rgba(200, 77, 255, 0.15); + color: var(--owlry-badge-emoji); + border-color: rgba(200, 77, 255, 0.5); +} + +.owlry-filter-file:checked { + background-color: rgba(90, 243, 255, 0.15); + color: var(--owlry-badge-file); + border-color: rgba(90, 243, 255, 0.5); +} + +.owlry-filter-script:checked { + background-color: rgba(43, 255, 178, 0.15); + color: var(--owlry-badge-script); + border-color: rgba(43, 255, 178, 0.5); +} + +.owlry-filter-ssh:checked { + background-color: rgba(0, 234, 255, 0.15); + color: var(--owlry-badge-ssh); + border-color: rgba(0, 234, 255, 0.5); +} + +.owlry-filter-sys:checked { + background-color: rgba(255, 0, 68, 0.15); + color: var(--owlry-badge-sys); + border-color: rgba(255, 0, 68, 0.5); } .owlry-filter-uuctl:checked { - background-color: rgba(255, 183, 0, 0.2); + background-color: rgba(255, 183, 0, 0.15); color: var(--owlry-badge-uuctl); - border-color: rgba(255, 183, 0, 0.4); + border-color: rgba(255, 183, 0, 0.5); } +.owlry-filter-web:checked { + background-color: rgba(0, 234, 255, 0.15); + color: var(--owlry-badge-web); + border-color: rgba(0, 234, 255, 0.5); +} + +/* Widget filter buttons */ +.owlry-filter-media:checked { + background-color: rgba(200, 77, 255, 0.15); + color: var(--owlry-badge-media); + border-color: rgba(200, 77, 255, 0.5); +} + +.owlry-filter-weather:checked { + background-color: rgba(90, 243, 255, 0.15); + color: var(--owlry-badge-weather); + border-color: rgba(90, 243, 255, 0.5); +} + +.owlry-filter-pomodoro:checked { + background-color: rgba(255, 136, 153, 0.15); + color: var(--owlry-badge-pomo); + border-color: rgba(255, 136, 153, 0.5); +} + +/* Scrollbar - subtle in Void, The Predator on active */ scrollbar slider { - background-color: rgba(38, 38, 38, 0.6); + background-color: rgba(38, 38, 38, 0.8); } scrollbar slider:hover { - background-color: rgba(115, 115, 115, 0.6); + background-color: rgba(64, 64, 64, 0.9); } scrollbar slider:active { background-color: var(--owlry-accent); } + +/* Text selection - Apex Hard Rule: black text on red (target locked) */ +selection { + background-color: var(--owlry-accent); + color: #050505; +} + +/* Mode indicator - The Predator marks current mode */ +.owlry-mode-indicator { + background-color: rgba(255, 0, 68, 0.2); + color: var(--owlry-accent); + border: 1px solid rgba(255, 0, 68, 0.3); +} + +/* Hints bar */ +.owlry-hints { + border-top: 1px solid rgba(38, 38, 38, 0.8); +} + +.owlry-hints-label { + color: var(--owlry-text-secondary); +} + +/* Tag badges in results */ +.owlry-tag-badge { + background-color: rgba(38, 38, 38, 0.6); + color: var(--owlry-text-secondary); +} + +.owlry-result-row:selected .owlry-tag-badge { + background-color: rgba(255, 136, 153, 0.25); + color: var(--owlry-accent-bright); +} diff --git a/dot_config/swaync/config.json b/dot_config/swaync/config.json index 5cd22e2..c0f9bda 100644 --- a/dot_config/swaync/config.json +++ b/dot_config/swaync/config.json @@ -1,93 +1,50 @@ { - "$schema": "/etc/xdg/swaync/configSchema.json", - "positionX": "right", - "positionY": "top", - "layer": "overlay", - "control-center-margin-top": 10, - "control-center-margin-bottom": 10, - "control-center-margin-right": 10, - "control-center-margin-left": 10, - "notification-icon-size": 64, - "notification-body-image-height": 100, - "notification-body-image-width": 200, - "timeout": 3, - "timeout-low": 2, - "timeout-critical": 0, - "fit-to-screen": false, - "control-center-width": 500, - "control-center-height": 1025, - "notification-window-width": 440, - "keyboard-shortcuts": true, - "image-visibility": "when-available", - "transition-time": 200, - "hide-on-clear": true, - "hide-on-action": true, - "script-fail-notify": true, - "widgets": [ - "title", - "dnd", - "notifications", - "mpris", - "volume", - "buttons-grid" - ], - "widget-config": { - "title": { - "text": "Notification Center", - "clear-all-button": true, - "button-text": "󰆴 Clear All" - }, - "dnd": { - "text": "Do Not Disturb" - }, - "label": { - "max-lines": 1, - "text": "Notification Center" - }, - "mpris": { - "image-size": 96, - "image-radius": 7 - }, - "volume": { - "label": "󰕾", - "show-per-app": true - }, - "buttons-grid": { - "actions": [ - { - "label": "󰐥", - "command": "systemctl poweroff" - }, - { - "label": "󰜉", - "command": "systemctl reboot" - }, - { - "label": "󰌾", - "command": "loginctl lock-session" - }, - { - "label": "󰍃", - "command": "uwsm stop" - }, - { - "label": "󰤄", - "command": "systemctl suspend" - }, - { - "label": "󰕾", - "command": "swayosd-client --output-volume mute-toggle" - }, - { - "label": "󰍬", - "command": "swayosd-client --input-volume mute-toggle" - }, - { - "label": "", - "command": "obs" - } - ] - } - } -} + "$schema": "/etc/xdg/swaync/configSchema.json", + "ignore-gtk-theme": true, + "cssPriority": "user", + + "positionX": "right", + "positionY": "top", + "layer": "overlay", + "layer-shell": true, + + "control-center-width": 480, + "control-center-height": -1, + "control-center-margin-top": 14, + "control-center-margin-right": 14, + "control-center-margin-bottom": 14, + "control-center-margin-left": 14, + "control-center-exclusive-zone": true, + "fit-to-screen": true, + + "notification-window-width": 440, + "notification-window-height": -1, + + "notification-grouping": true, + "relative-timestamps": true, + "hide-on-clear": false, + "hide-on-action": true, + + "widgets": [ + "title#ApexTitle", + "dnd#ApexDnd", + "notifications#ApexNoti" + ], + + "widget-config": { + "title#ApexTitle": { + "text": "Notification Center", + "clear-all-button": true, + "button-text": "Clear All" + }, + + "dnd#ApexDnd": { + "text": "Do Not Disturb" + }, + + "notifications#ApexNoti": { + "vexpand": true + } + } +} diff --git a/dot_config/swaync/style.css b/dot_config/swaync/style.css index dd6aebd..c26c9ec 100644 --- a/dot_config/swaync/style.css +++ b/dot_config/swaync/style.css @@ -1,252 +1,201 @@ -@define-color rp-base #050505; -@define-color rp-surface #141414; -@define-color rp-overlay #262626; -@define-color rp-hl-low #141414; -@define-color rp-hl-med #262626; -@define-color rp-hl-high #404040; +/* Apex Neon for SwayNotificationCenter + State over decoration. If it isn't important, it doesn't glow. */ -@define-color rp-muted #404040; -@define-color rp-subtle #404040; -@define-color rp-text #ededed; +@define-color base #050505; /* Void */ +@define-color surface #141414; /* Panel */ +@define-color overlay #262626; /* Border */ +@define-color text #ededed; /* Foreground */ +@define-color muted #737373; /* Subtext */ -@define-color rp-love #ff0044; -@define-color rp-gold #ffb700; -@define-color rp-rose #ff80bf; -@define-color rp-pine #00ff99; -@define-color rp-foam #00eaff; -@define-color rp-iris #9d00ff; - -/* Apex Neon palette */ - -@define-color cc-bg @rp-surface; -@define-color noti-border-color @rp-hl-high; -@define-color noti-bg @rp-overlay; -@define-color noti-bg-darker @rp-hl-low; -@define-color noti-bg-hover @rp-hl-med; -@define-color noti-bg-focus alpha(@rp-hl-high, 0.6); -@define-color text-color @rp-text; -@define-color text-color-disabled @rp-subtle; -@define-color bg-selected @rp-foam; +@define-color red #ff0044; /* Active intent / destructive */ +@define-color cyan #00eaff; /* Info / hover */ +@define-color green #00ff99; /* Enabled / OK */ +@define-color purple #9d00ff; /* Special mode */ +@define-color alert #ff8899; /* Critical (distinct from "you are here" red) */ * { - font-family: JetBrainsMono NFP; - font-weight: bold; - font-size: 14px; + all: unset; + font-family: "JetBrainsMono Nerd Font", "Inter", sans-serif; + font-size: 12px; + color: @text; } -.control-center .notification-row:focus, -.control-center .notification-row:hover { -opacity: 1; -background: @noti-bg-darker; -} - -.notification-row { -outline: none; -margin: 20px; -padding: 0; -} - -.notification { -background: transparent; -margin: 0px; -} - -.notification-content { -background: @cc-bg; -padding: 7px; -border-radius: 0px; -border: 2px solid @noti-border-color; -margin: 0; -} - -.close-button { -background: @rp-gold; -color: @cc-bg; -text-shadow: none; -padding: 0; -border-radius: 0px; -margin-top: 5px; -margin-right: 5px; -} - -.close-button:hover { -box-shadow: none; -background: @rp-rose; -color: @cc-bg; -transition: all .15s ease-in-out; -border: none; -} - -.notification-action { -color: @text-color; -border: 2px solid @noti-border-color; -border-top: none; -border-radius: 0px; -background: @rp-base; -} - -.notification-default-action:hover, -.notification-action:hover { -color: @text-color; -background: @noti-bg-hover; -} - -.summary { -padding-top: 7px; -font-size: 13px; -color: @text-color; -} - -.time { -font-size: 11px; -color: @rp-gold; -margin-right: 24px; -} - -.body { -font-size: 12px; -color: @text-color; +/* ===== Windows ===== */ +.control-center, +.notification-window { + background-color: rgba(5, 5, 5, 0.92); } .control-center { -background: @cc-bg; -border: 2px solid @noti-border-color; -border-radius: 0px; + border: 2px solid @overlay; + border-radius: 12px; + padding: 10px; + box-shadow: 0 16px 40px rgba(0, 0, 0, 0.70); } -.control-center-list { -background: transparent; -} - -.control-center-list-placeholder { -opacity: .5; -} - -.floating-notifications { -background: transparent; -} - -.blank-window { -background: alpha(@rp-base, 0.1); +.notification-window { + border: 2px solid @overlay; + border-radius: 12px; + padding: 8px; + box-shadow: 0 14px 34px rgba(0, 0, 0, 0.70); } +/* ===== Title row ===== */ .widget-title { -color: @text-color; -background: @noti-bg-darker; -padding: 5px 10px; -margin: 10px 10px 5px 10px; -font-size: 1.5rem; -border-radius: 5px; + margin-bottom: 8px; } -.widget-title > button { -font-size: 1rem; -color: @text-color; -text-shadow: none; -background: @noti-bg; -box-shadow: none; -border-radius: 5px; +.widget-title label { + font-size: 15px; + font-weight: 800; } -.widget-title > button:hover { -background: @rp-gold; -color: @cc-bg; +.widget-title button { + background-color: @surface; + border: 1px solid @overlay; + border-radius: 10px; + padding: 6px 10px; } +.widget-title button:hover { + border-color: @red; +} + +.widget-title button:active { + background-color: @red; + color: @base; /* text turns black on red, non-negotiable */ +} + +/* ===== DND ===== */ .widget-dnd { -background: @noti-bg-darker; -padding: 5px 10px; -margin: 5px 10px 10px 10px; -border-radius: 5px; -font-size: large; -color: @text-color; + background-color: @surface; + border: 1px solid @overlay; + border-radius: 10px; + padding: 8px 10px; + margin-bottom: 10px; } -.widget-dnd > switch { -border-radius: 4px; -background: @rp-muted; +.widget-dnd label { + font-weight: 700; } -.widget-dnd > switch:checked { -background: @rp-gold; -border: 1px solid @rp-gold; +.widget-dnd switch { + background-color: @overlay; + border-radius: 999px; + padding: 3px; } -.widget-dnd > switch slider { -background: @cc-bg; -border-radius: 5px; +.widget-dnd switch slider { + background-color: @text; + border-radius: 999px; + min-width: 18px; + min-height: 18px; } -.widget-dnd > switch:checked slider { -background: @cc-bg; -border-radius: 5px; +.widget-dnd switch:checked { + background-color: @purple; } -.widget-label { -margin: 10px 10px 5px 10px; +.widget-dnd switch:checked slider { + background-color: @base; } -.widget-label > label { -font-size: 1rem; -color: @text-color; +/* ===== Notifications list: remove "giant grey slab" ===== */ +.widget-notifications { + background-color: transparent; } -.widget-mpris { -color: @text-color; -background: @noti-bg-darker; -padding: 5px 10px 0px 0px; -margin: 5px 10px 5px 10px; -border-radius: 0px; +.notification-group, +.notification-group-headers, +.notification-group-icon { + background-color: transparent; } -.widget-mpris > box > button { -border-radius: 5px; +/* ===== Notification card ===== */ +.notification-row { + background-color: transparent; + margin: 0 0 8px 0; + outline: none; } -.widget-mpris-player { -padding: 5px 10px; -margin: 10px; +.notification { + background-color: @surface; + border: 1px solid @overlay; + border-radius: 12px; + padding: 10px; + box-shadow: 0 10px 24px rgba(0, 0, 0, 0.60); } -.widget-mpris-title { -font-weight: 700; -font-size: 1.25rem; +.notification-row:hover .notification { + border-color: @cyan; } -.widget-mpris-subtitle { -font-size: 1.1rem; -color: @text-color-disabled; +.notification-row:focus .notification { + border-color: @red; } -.widget-buttons-grid { -font-size: x-large; -padding: 5px; -margin: 5px 10px 10px 10px; -border-radius: 5px; -background: @noti-bg-darker; +/* Urgency */ +.notification.critical { + border-color: @alert; + box-shadow: 0 0 0 1px @alert; } -.widget-buttons-grid > flowbox > flowboxchild > button { -margin: 3px; -background: @cc-bg; -border-radius: 5px; -color: @text-color; -border: 1px solid @noti-border-color; +.image { + border-radius: 10px; + margin-right: 8px; } -.widget-buttons-grid > flowbox > flowboxchild > button:hover { -background: @rp-gold; -color: @cc-bg; +.summary { + font-weight: 800; + font-size: 13px; } -.widget-menubar > box > .menu-button-bar > button { -border: none; -background: transparent; -color: @text-color; +.body { + color: @muted; + margin-top: 2px; } -.topbar-buttons > button { -border: none; -background: transparent; -color: @text-color; +.time { + color: @cyan; + font-weight: 700; +} + +/* Notification actions */ +.notification-action { + background-color: @overlay; + border-radius: 10px; + padding: 5px 8px; + margin-top: 6px; +} + +.notification-action:hover { + box-shadow: inset 0 0 0 1px @cyan; +} + +.notification-action:active { + background-color: @cyan; + color: @base; +} + +/* Close button */ +.close-button { + background-color: @overlay; + border-radius: 8px; + padding: 3px; +} + +.close-button:hover { + background-color: @red; + color: @base; +} + +.close-button:active { + background-color: @red; + color: @base; +} + +/* ===== Popup notifications container (safe even if class names differ) ===== */ +.floating-notifications.background { + background-color: transparent; + padding: 0; } diff --git a/dot_config/waybar/config.tmpl b/dot_config/waybar/config.tmpl index af7562d..fbd5057 100644 --- a/dot_config/waybar/config.tmpl +++ b/dot_config/waybar/config.tmpl @@ -8,7 +8,7 @@ "layer": "top", "position": "left", "output": "{{ $primary_output }}", - "width": 90, + "width": 54, "spacing": 4, "margin-top": 0, "margin-bottom": 0, @@ -19,7 +19,6 @@ {{- if eq .chezmoi.hostname "owlenpc00" }} "custom/alhp", {{- end }} - "hyprland/window", "hyprland/workspaces" ], @@ -47,14 +46,6 @@ {{- end }} ], - "hyprland/window": { - "format": "{title}", - "max-length": 18, - "icon": true, - "icon-size": 18, - "separate-outputs": false - }, - "hyprland/workspaces": { "format": "{icon} {id}", "all-outputs": true, @@ -72,18 +63,31 @@ "cpu": { "interval": 2, - "format": "{usage}%" + "format": "{usage}%", + "states": { + "warning": 75, + "critical": 90 + } }, "memory": { "interval": 5, - "format": "{used:0.1f}G/{total:0.1f}G\n{swapUsed:0.1f}G/{swapTotal:0.1f}G" + "format": " {percentage}%\n {swapPercentage}%", + "tooltip-format": "RAM: {used:0.1f}G/{total:0.1f}G\nSWAP: {swapUsed:0.1f}G/{swapTotal:0.1f}G", + "states": { + "warning": 75, + "critical": 90 + } }, "disk#root": { "interval": 30, "format": "/ {percentage_used}%", - "path": "/" + "path": "/", + "states": { + "warning": 80, + "critical": 90 + } }, "network": { @@ -92,7 +96,8 @@ "format-ethernet": "", "tooltip-format-wifi": "{signalStrength}\n {bandwidthUpBytes}\n {bandwidthDownBytes}", "tooltip-format-ethernet": " {bandwidthUpBytes}\n {bandwidthDownBytes}", - "format-disconnected": "" + "format-disconnected": "", + "tooltip-format-disconnected": "Disconnected" }, "idle_inhibitor": { @@ -225,6 +230,7 @@ "hwmon-path-abs": "/sys/devices/pci0000:00/0000:00:18.3/hwmon", "input-filename": "temp1_input", "interval": 5, + "warning-threshold": 80, "critical-threshold": 85, "format": " {temperatureC}°C", "format-critical": " {temperatureC}°C ", @@ -235,6 +241,7 @@ "hwmon-path-abs": "/sys/devices/pci0000:00/0000:00:01.1/0000:10:00.0/0000:11:00.0/0000:12:00.0/hwmon", "input-filename": "temp1_input", "interval": 5, + "warning-threshold": 90, "critical-threshold": 100, "format": "GPU {temperatureC}°C", "format-critical": "GPU {temperatureC}°C ", @@ -245,6 +252,7 @@ "hwmon-path-abs": "/sys/devices/pci0000:00/0000:00:01.1/0000:10:00.0/0000:11:00.0/0000:12:00.0/hwmon", "input-filename": "temp2_input", "interval": 5, + "warning-threshold": 100, "critical-threshold": 110, "format": " {temperatureC}°C", "format-critical": " {temperatureC}°C ", @@ -255,6 +263,7 @@ "hwmon-path-abs": "/sys/devices/pci0000:00/0000:00:01.1/0000:10:00.0/0000:11:00.0/0000:12:00.0/hwmon", "input-filename": "temp3_input", "interval": 5, + "warning-threshold": 90, "critical-threshold": 100, "format": " {temperatureC}°C", "format-critical": " {temperatureC}°C ", @@ -265,6 +274,7 @@ "hwmon-path-abs": "/sys/devices/pci0000:00/0000:00:02.2/0000:23:00.0/nvme/nvme0/hwmon", "input-filename": "temp1_input", "interval": 10, + "warning-threshold": 75, "critical-threshold": 85, "format": " {temperatureC}°C", "format-critical": " {temperatureC}°C ", @@ -272,10 +282,11 @@ }, "custom/swaync": { - "format": " {}", "exec-if": "which swaync-client >/dev/null 2>&1 && pgrep -x swaync >/dev/null 2>&1", - "exec": "swaync-client -c", + "exec": "$HOME/.config/waybar/scripts/swaync-count.sh", + "return-type": "json", "interval": 2, + "format": "{text}", "on-click": "swaync-client -t -sw", "on-click-right": "swaync-client -d", "on-click-middle": "swaync-client -C" diff --git a/dot_config/waybar/scripts/executable_alhp.sh b/dot_config/waybar/scripts/executable_alhp.sh index 74f745c..545edd7 100644 --- a/dot_config/waybar/scripts/executable_alhp.sh +++ b/dot_config/waybar/scripts/executable_alhp.sh @@ -2,51 +2,50 @@ set -euo pipefail IFS=$'\n\t' -# defaults text="" -tooltip='All good' -class='good' +tooltip="All good" +class="good" -# Check if alhp.utils command exists, if not consider it as down -if ! command -v alhp.utils &> /dev/null; then - tooltip="Service unavailable" - text="" - class="down" +if ! command -v alhp.utils >/dev/null 2>&1; then + class="down" + tooltip="Service unavailable" else - ALHP_OUTPUT=$(alhp.utils -j) - mirror_stale=$(jq -r '.mirror_out_of_date' <<<"$ALHP_OUTPUT") + if ! ALHP_OUTPUT=$(alhp.utils -j 2>/dev/null); then + class="down" + tooltip="Service error" + else + total=$(jq -r '.total // 0' <<<"$ALHP_OUTPUT" 2>/dev/null || echo 0) + mirror_stale=$(jq -r '.mirror_out_of_date // false' <<<"$ALHP_OUTPUT" 2>/dev/null || echo false) - total=$(jq -r '.total' <<<"$ALHP_OUTPUT") - mirror_stale=$(jq -r '.mirror_out_of_date' <<<"$ALHP_OUTPUT") + readarray -t packages < <(jq -r '.packages // [] | .[]' <<<"$ALHP_OUTPUT" 2>/dev/null || true) - # safe array even if packages is null - readarray -t packages < <( - jq -r '.packages // [] | .[]' <<<"$ALHP_OUTPUT" - ) - - # 1) Mirror stale? highest priority if [[ "$mirror_stale" == "true" ]]; then - class="stale" - tooltip="Mirror is out of date" - # 2) Any pending PKGBUILDs? + class="stale" + tooltip="Mirror is out of date" elif (( total > 0 )); then - class="bad" - text="$total" + class="bad" + text="$total" + if (( ${#packages[@]} > 0 )); then tooltip=$(printf "%s\n" "${packages[@]}") + else + tooltip="Pending: $total" + fi fi + fi fi case "$class" in - good) icon=" ";; - stale) icon="󰏖 ";; - bad) icon="󰏗 ";; - down) icon="x ";; + good) icon="" ;; + stale) icon="󰏖" ;; + bad) icon="󰏗" ;; + down) icon="󰅖" ;; esac -# Emit compact JSON for Statusbar -jq -nc \ - --arg text "$icon $text" \ - --arg class "$class" \ - --arg tooltip "$tooltip" \ - '{text: $text, class: $class, tooltip: $tooltip}' +out="$icon" +[[ -n "$text" ]] && out+=" $text" +jq -nc \ + --arg text "$out" \ + --arg class "$class" \ + --arg tooltip "$tooltip" \ + '{text:$text, class:$class, tooltip:$tooltip}' diff --git a/dot_config/waybar/scripts/executable_swaync-count.sh b/dot_config/waybar/scripts/executable_swaync-count.sh new file mode 100644 index 0000000..e92e1bb --- /dev/null +++ b/dot_config/waybar/scripts/executable_swaync-count.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash +set -euo pipefail +IFS=$'\n\t' + +count_raw=$(swaync-client -c 2>/dev/null || echo "") +if [[ "$count_raw" =~ ^[0-9]+$ ]]; then + count=$count_raw +else + count=0 +fi + +class="clear" +text="" +tooltip="No notifications" + +if (( count > 0 )); then + class="unread" + text=" $count" + tooltip="Unread: $count" +fi + +jq -nc \ + --arg text "$text" \ + --arg class "$class" \ + --arg tooltip "$tooltip" \ + '{text:$text, class:$class, tooltip:$tooltip}' diff --git a/dot_config/waybar/scripts/executable_temps-cycle.sh b/dot_config/waybar/scripts/executable_temps-cycle.sh index 27aff45..2e1a861 100644 --- a/dot_config/waybar/scripts/executable_temps-cycle.sh +++ b/dot_config/waybar/scripts/executable_temps-cycle.sh @@ -3,6 +3,14 @@ set -euo pipefail cycle_seconds=3 +# Critical thresholds (deg C) to match module semantics +cpu_warn=80 +cpu_crit=85 +gpu_warn=100 +gpu_crit=110 +nvme_warn=75 +nvme_crit=85 + resolve_hwmon_file() { local base="$1" file="$2" sub if [[ -r "$base/$file" ]]; then @@ -55,35 +63,61 @@ gpu_path="/sys/devices/pci0000:00/0000:00:01.1/0000:10:00.0/0000:11:00.0/0000:12 nvme_path="/sys/devices/pci0000:00/0000:00:02.2/0000:23:00.0/nvme/nvme0/hwmon" labels=() +keys=() icons=() values=() +warn=() +crit=() if temp=$(read_temp "$cpu_path" "temp1_input" "k10temp"); then labels+=("CPU") + keys+=("cpu") icons+=("") values+=("$temp") + warn+=("$cpu_warn") + crit+=("$cpu_crit") fi if temp=$(read_temp "$gpu_path" "temp2_input" "amdgpu"); then labels+=("GPU") + keys+=("gpu_hotspot") icons+=("") values+=("$temp") + warn+=("$gpu_warn") + crit+=("$gpu_crit") fi if temp=$(read_temp "$nvme_path" "temp1_input" "nvme"); then labels+=("NVMe") + keys+=("nvme") icons+=("") values+=("$temp") + warn+=("$nvme_warn") + crit+=("$nvme_crit") fi count=${#values[@]} if (( count == 0 )); then - printf '{"text":" --","tooltip":"No temp sensors found"}\n' + jq -nc --arg text " --" --arg tooltip "No temp sensors found" \ + '{text:$text, tooltip:$tooltip, class:["down"]}' exit 0 fi idx=$(( ($(date +%s) / cycle_seconds) % count )) -text="${icons[idx]} ${values[idx]}°C" +val=${values[idx]} +key=${keys[idx]} +warn_threshold=${warn[idx]} +critical_threshold=${crit[idx]} + +is_warning=false +is_critical=false +if (( val >= critical_threshold )); then + is_critical=true +elif (( val >= warn_threshold )); then + is_warning=true +fi + +text="${icons[idx]} ${val}°C" tooltip="" for i in "${!values[@]}"; do @@ -93,4 +127,10 @@ for i in "${!values[@]}"; do tooltip+="${labels[i]}: ${values[i]}°C" done -printf '{"text":"%s","tooltip":"%s"}\n' "$text" "$tooltip" +jq -nc \ + --arg text "$text" \ + --arg tooltip "$tooltip" \ + --arg key "$key" \ + --argjson is_warning "$is_warning" \ + --argjson is_critical "$is_critical" \ + '{text:$text, tooltip:$tooltip, class: ([$key] + (if $is_critical then ["critical"] elif $is_warning then ["warning"] else [] end)) }' diff --git a/dot_config/waybar/style.css b/dot_config/waybar/style.css index 696fa70..2daff8f 100644 --- a/dot_config/waybar/style.css +++ b/dot_config/waybar/style.css @@ -9,30 +9,32 @@ @define-color pine #00ff99; /* Toxic Green */ @define-color gold #ffb700; /* Warning Gold */ @define-color iris #9d00ff; /* Void Purple */ +@define-color stealth #404040; /* GEMINI: Stealth */ +@define-color alert #ff8899; /* Apex Neon: BrRed = Alerts */ @define-color hl_low #141414; @define-color hl_med #262626; @define-color hl_high #262626; /* keep borders “light surface”, not random gray */ -@define-color bar_alpha rgba(5, 5, 5, 0.65); -@define-color surface_alpha rgba(20, 20, 20, 0.82); -@define-color overlay_alpha rgba(38, 38, 38, 0.92); +@define-color bar_alpha rgba(5, 5, 5, 0.85); +@define-color surface_alpha rgba(5, 5, 5, 0.9); +@define-color overlay_alpha rgba(20, 20, 20, 0.9); /* Bar */ window#waybar { background: @bar_alpha; color: @text; - border: 0; + border-bottom: 1px solid @overlay; } /* Extra breathing room for the first/last pill in each section */ #left > :first-child, #center > :first-child, -#right > :first-child { margin-top: 8px; } +#right > :first-child { margin-top: 6px; } #left > :last-child, #center > :last-child, -#right > :last-child { margin-bottom: 8px; } +#right > :last-child { margin-bottom: 6px; } /* Typography */ * { @@ -42,8 +44,8 @@ window#waybar { /* Workspaces */ #workspaces { - margin: 1px; - padding: 2px 4px; + margin: 0; + padding: 2px 3px; background: transparent; font-size: 10px; } @@ -53,15 +55,15 @@ window#waybar { background: @surface_alpha; color: @muted; /* inactive should look “off” */ border: 1px solid @overlay; /* light surface border */ - border-radius: 6px; - margin: 2px; - padding: 3px 6px; + border-radius: 5px; + margin: 1px; + padding: 2px 5px; } -/* Hover = cyan tech highlight */ +/* Hover = red target lock */ #workspaces button:hover { background: @overlay_alpha; - border-color: @foam; + border-color: @love; color: @text; } @@ -72,15 +74,15 @@ window#waybar { border-color: @love; } -/* Urgent = still red, but let it glow harder */ +/* Urgent = alert red, not focus red */ #workspaces button.urgent { - background: @love; + background: @alert; color: @base; - box-shadow: 0 0 6px rgba(255, 0, 68, 0.55); + border-color: @alert; + box-shadow: 0 0 6px rgba(255, 136, 153, 0.55); } /* Shared pill look for ALL modules */ -#window, #cpu, #memory, #disk, @@ -102,13 +104,12 @@ window#waybar { background: @surface_alpha; color: @text; border: 1px solid @overlay; - border-radius: 8px; - padding: 3px 6px; - margin: 2px 3px; + border-radius: 6px; + padding: 2px 6px; + margin: 2px 2px; } -/* Universal hover = cyan border "scanline" effect */ -#window:hover, +/* Universal hover = red selection cue */ #cpu:hover, #memory:hover, #disk:hover, @@ -128,80 +129,53 @@ window#waybar { #custom-hyprsunset:hover, #custom-alhp:hover { background: @overlay_alpha; - border-color: @foam; -} - -/* Focus/primary module accents (Apex-Neon logic) */ -#window { border-left: 3px solid @love; } /* focus = Razor Red */ - -/* Metrics: make them "dashboard semantics" */ -#cpu { border-left: 3px solid @pine; } /* success/ok */ -#memory { border-left: 3px solid @iris; } /* special */ -#disk { border-left: 3px solid @foam; } /* info/tech */ -#network{ border-left: 3px solid @foam; } /* network = cyan (tech accent) */ - -/* Temperature modules */ -#temperature.cpu { border-left: 3px solid @pine; } -#temperature.gpu_hotspot { border-left: 3px solid @love; } /* hot = red, not pink */ -#temperature.nvme { border-left: 3px solid @gold; } - -#temperature.critical { - background: @love; - color: @base; /* black on red */ - border-left-color: @love; border-color: @love; } -/* WirePlumber / audio */ -#wireplumber { border-left: 3px solid @gold; } +/* State-driven styling: low urgency = border, high urgency = full pill */ +#cpu.warning, +#memory.warning, +#disk.warning, +#battery.warning, +#temperature.warning, +#custom-temps-cycle.warning { + border-color: @gold; +} + +#custom-alhp.stale, #wireplumber.muted { - color: @muted; - border-left-color: @overlay; + border-color: @gold; } -/* Privacy states */ -#privacy.screencast { border-left: 3px solid @foam; } /* "active tech" */ -#privacy.microphone { border-left: 3px solid @gold; } -#privacy.camera { border-left: 3px solid @iris; } - -/* Idle inhibitor */ -#idle_inhibitor.activated { border-left: 3px solid @foam; } -#idle_inhibitor.deactivated { border-left: 3px solid @overlay; color: @muted; } - -/* Gamemode */ -#gamemode { border-left: 3px solid @gold; } - -/* Clock */ -#clock { border-left: 3px solid @foam; } - -/* Battery */ -#battery { border-left: 3px solid @foam; } -#battery.warning { border-left-color: @gold; } -#battery.critical { border-left-color: @love; color: @love; } - -/* Power profiles */ -#power-profiles-daemon { border-left: 3px solid @gold; } -#power-profiles-daemon.performance { border-left-color: @love; } -#power-profiles-daemon.balanced { border-left-color: @foam; } -#power-profiles-daemon.power-saver { border-left-color: @pine; } - -/* Bluetooth */ -#bluetooth { border-left: 3px solid @iris; } -#bluetooth.off, -#bluetooth.disabled { - color: @muted; - border-left-color: @overlay; +#custom-swaync.unread { + border-color: @foam; } -/* Notifications */ -#custom-swaync { border-left: 3px solid @iris; } -#custom-swaync.dnd { border-left-color: @gold; } +#idle_inhibitor.activated { border-color: @foam; } -/* Night shift */ -#custom-hyprsunset { border-left: 3px solid @foam; } /* tech accent instead of rose */ +#privacy { border-color: @iris; } +#privacy-item, +#privacy-item.screenshare, +#privacy-item.audio-in, +#privacy-item.audio-out { color: @iris; } -/* ALHP custom module */ -#custom-alhp { border-left: 3px solid @pine; } +#cpu.critical, +#memory.critical, +#disk.critical, +#battery.critical, +#network.disconnected, +#network.disabled, +#temperature.critical, +#custom-temps-cycle.critical, +#custom-alhp.bad, +#custom-alhp.down { + background: @alert; + color: @base; + border-color: @alert; +} + +#wireplumber.muted { color: @muted; } +#idle_inhibitor.deactivated { color: @muted; } /* Group wrappers */ #group-temps, @@ -212,36 +186,34 @@ window#waybar { padding: 0; } -#custom-temps-cycle { border-left: 3px solid @foam; } +#custom-temps-cycle.down { color: @muted; } -#group-temps #temperature { margin: 2px 0; } -#group-temps #temperature:hover { background: @overlay_alpha; border-color: @foam; } - -/* Preserve semantics within group */ -#group-temps #temperature.cpu { border-left: 3px solid @pine; } -#group-temps #temperature.gpu_edge { border-left: 3px solid @iris; } -#group-temps #temperature.gpu_hotspot { border-left: 3px solid @love; } -#group-temps #temperature.nvme { border-left: 3px solid @gold; } +#group-temps #temperature { margin: 1px 0; } +#group-temps #temperature:hover { background: @overlay_alpha; border-color: @love; } #group-temps #temperature.critical { - background: @love; + background: @alert; color: @base; + border-color: @alert; } +#group-temps #temperature.warning { border-color: @gold; } + /* Tray */ -#tray { border-left: 3px solid @iris; } #tray > .passive { opacity: 0.7; } #tray > .needs-attention { - border-left: 3px solid @love; - box-shadow: 0 0 6px rgba(255, 0, 68, 0.55); + background: @alert; + color: @base; + border: 1px solid @alert; + box-shadow: 0 0 6px rgba(255, 136, 153, 0.4); } /* Volume group sizing */ #group-volume #wireplumber { margin: 1px 0; - padding: 2px 4px; + padding: 2px 3px; } -#group-volume #wireplumber:hover { background: @overlay_alpha; border-color: @foam; } +#group-volume #wireplumber:hover { background: @overlay_alpha; border-color: @love; } /* Tooltips */ tooltip, @@ -276,7 +248,7 @@ menuitem, menuitem:hover, .menuitem:hover { background: @overlay_alpha; - border: 1px solid @foam; + border: 1px solid @love; } menuitem:disabled, @@ -288,4 +260,3 @@ menu separator, min-height: 1px; margin: 6px 0; } - diff --git a/dot_config/zed/private_settings.json b/dot_config/zed/private_settings.json new file mode 100644 index 0000000..b0e1b5f --- /dev/null +++ b/dot_config/zed/private_settings.json @@ -0,0 +1,27 @@ +// 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) +{ + "ui_font_weight": 400.0, + "ui_font_family": "InconsolataGo Nerd Font Mono", + "buffer_font_family": "InconsolataGo Nerd Font Mono", + "icon_theme": { + "mode": "system", + "light": "Zed (Default)", + "dark": "Zed (Default)" + }, + "vim_mode": true, + "base_keymap": "JetBrains", + "ui_font_size": 16.0, + "buffer_font_size": 12.0, + "theme": { + "mode": "system", + "light": "Apex Aeon", + "dark": "Apex Neon" + } +} diff --git a/dot_config/zed/themes/apex.json b/dot_config/zed/themes/apex.json new file mode 100644 index 0000000..657bf27 --- /dev/null +++ b/dot_config/zed/themes/apex.json @@ -0,0 +1,629 @@ +{ + "$schema": "https://zed.dev/schema/themes/v0.2.0.json", + "name": "Apex", + "author": "S0wlz (Owlibou)", + "themes": [ + { + "name": "Apex Neon", + "appearance": "dark", + "style": { + "background": "#050505", + "background.appearance": "opaque", + "surface.background": "#141414", + "elevated_surface.background": "#141414", + "panel.background": "#141414", + "panel.focused_border": "#ff0044", + "panel.indent_guide": "#26262666", + "panel.indent_guide_active": "#737373aa", + "panel.indent_guide_hover": "#737373cc", + "tab_bar.background": "#141414", + "tab.inactive_background": "#141414", + "tab.active_background": "#050505", + "title_bar.background": "#050505", + "title_bar.inactive_background": "#141414", + "toolbar.background": "#141414", + "status_bar.background": "#141414", + "border": "#262626", + "border.variant": "#141414", + "border.focused": "#ff0044", + "border.selected": "#ff0044", + "border.disabled": "#141414", + "border.transparent": "transparent", + "text": "#ededed", + "text.muted": "#737373", + "text.placeholder": "#737373", + "text.disabled": "#737373", + "text.accent": "#00eaff", + "icon": "#ededed", + "icon.muted": "#737373", + "icon.placeholder": "#737373", + "icon.disabled": "#737373", + "icon.accent": "#00eaff", + "accents": [ + "#ff0044", + "#00eaff", + "#9d00ff", + "#00ff99", + "#ffb700" + ], + "element.background": "#141414", + "element.hover": "#262626", + "element.active": "#262626", + "element.selected": "#262626", + "element.disabled": "#141414", + "ghost_element.background": null, + "ghost_element.hover": "#26262666", + "ghost_element.active": "#26262688", + "ghost_element.selected": "#26262666", + "ghost_element.disabled": null, + "drop_target.background": "#00eaff22", + "editor.background": "#050505", + "editor.foreground": "#ededed", + "editor.gutter.background": "#050505", + "editor.subheader.background": "#141414", + "editor.active_line.background": "#141414", + "editor.highlighted_line.background": "#141414", + "editor.line_number": "#737373", + "editor.active_line_number": "#ff0044", + "editor.wrap_guide": "#262626", + "editor.active_wrap_guide": "#737373", + "editor.indent_guide": "#26262666", + "editor.indent_guide_active": "#737373aa", + "editor.invisible": "#26262688", + "editor.document_highlight.read_background": "#00eaff22", + "editor.document_highlight.write_background": "#ff004422", + "editor.document_highlight.bracket_background": "#26262666", + "search.match_background": "#00eaff33", + "scrollbar.track.background": "#050505", + "scrollbar.track.border": "#050505", + "scrollbar.thumb.background": "#262626aa", + "scrollbar.thumb.hover_background": "#404040", + "scrollbar.thumb.border": "transparent", + "pane.focused_border": "#ff0044", + "pane_group.border": "#262626", + "link_text.hover": "#5af3ff", + "success": "#00ff99", + "success.background": "#00ff991a", + "success.border": "#00ff99", + "warning": "#ffb700", + "warning.background": "#ffb7001a", + "warning.border": "#ffb700", + "error": "#ff8899", + "error.background": "#ff88991a", + "error.border": "#ff8899", + "info": "#00eaff", + "info.background": "#00eaff1a", + "info.border": "#00eaff", + "hint": "#0088cc", + "hint.background": "#0088cc1a", + "hint.border": "#0088cc", + "predictive": "#0088cc", + "predictive.background": "#0088cc1a", + "predictive.border": "#0088cc", + "unreachable": "#9d00ff", + "unreachable.background": "#9d00ff1a", + "unreachable.border": "#9d00ff", + "created": "#00ff99", + "created.background": "#00ff991a", + "created.border": "#00ff99", + "modified": "#ffb700", + "modified.background": "#ffb7001a", + "modified.border": "#ffb700", + "deleted": "#ff8899", + "deleted.background": "#ff88991a", + "deleted.border": "#ff8899", + "renamed": "#00eaff", + "renamed.background": "#00eaff1a", + "renamed.border": "#00eaff", + "conflict": "#ff8899", + "conflict.background": "#ff88991a", + "conflict.border": "#ff8899", + "ignored": "#737373", + "ignored.background": "#7373731a", + "ignored.border": "#262626", + "hidden": "#737373", + "hidden.background": "#7373731a", + "hidden.border": "#262626", + "terminal.background": "#050505", + "terminal.foreground": "#ededed", + "terminal.bright_foreground": "#ffffff", + "terminal.dim_foreground": "#737373", + "terminal.ansi.background": "#050505", + "terminal.ansi.black": "#050505", + "terminal.ansi.red": "#ff0044", + "terminal.ansi.green": "#00ff99", + "terminal.ansi.yellow": "#ffb700", + "terminal.ansi.blue": "#00eaff", + "terminal.ansi.magenta": "#9d00ff", + "terminal.ansi.cyan": "#00eaff", + "terminal.ansi.white": "#ededed", + "terminal.ansi.bright_black": "#262626", + "terminal.ansi.bright_red": "#ff8899", + "terminal.ansi.bright_green": "#2bffb2", + "terminal.ansi.bright_yellow": "#ffd24d", + "terminal.ansi.bright_blue": "#5af3ff", + "terminal.ansi.bright_magenta": "#c84dff", + "terminal.ansi.bright_cyan": "#5af3ff", + "terminal.ansi.bright_white": "#ffffff", + "terminal.ansi.dim_black": "#050505", + "terminal.ansi.dim_red": "#ff0044", + "terminal.ansi.dim_green": "#00ff99", + "terminal.ansi.dim_yellow": "#ffb700", + "terminal.ansi.dim_blue": "#00eaff", + "terminal.ansi.dim_magenta": "#9d00ff", + "terminal.ansi.dim_cyan": "#00eaff", + "terminal.ansi.dim_white": "#ededed", + "players": [ + { + "cursor": "#ff0044", + "background": "#ff0044", + "selection": "#ff004433" + }, + { + "cursor": "#00eaff", + "background": "#00eaff", + "selection": "#00eaff33" + }, + { + "cursor": "#9d00ff", + "background": "#9d00ff", + "selection": "#9d00ff33" + }, + { + "cursor": "#00ff99", + "background": "#00ff99", + "selection": "#00ff9933" + }, + { + "cursor": "#ffb700", + "background": "#ffb700", + "selection": "#ffb70033" + } + ], + "version_control.added": "#00ff99", + "version_control.modified": "#ffb700", + "version_control.deleted": "#ff8899", + "version_control.conflict": "#ff8899", + "version_control.renamed": "#00eaff", + "version_control.ignored": "#737373", + "syntax": { + "comment": { + "color": "#737373", + "font_style": "italic" + }, + "comment.doc": { + "color": "#737373", + "font_style": "italic" + }, + "keyword": { + "color": "#00eaff" + }, + "keyword.import": { + "color": "#00eaff" + }, + "keyword.storage": { + "color": "#00eaff" + }, + "function": { + "color": "#0088cc" + }, + "function.method": { + "color": "#0088cc" + }, + "function.special.definition": { + "color": "#0088cc" + }, + "type": { + "color": "#9d00ff" + }, + "type.builtin": { + "color": "#9d00ff" + }, + "string": { + "color": "#00ff99" + }, + "string.escape": { + "color": "#2bffb2" + }, + "string.regex": { + "color": "#ffb700" + }, + "number": { + "color": "#ffb700" + }, + "boolean": { + "color": "#ffb700" + }, + "constant": { + "color": "#ededed" + }, + "constant.builtin": { + "color": "#9d00ff" + }, + "variable": { + "color": "#ededed" + }, + "variable.special": { + "color": "#9d00ff" + }, + "property": { + "color": "#ededed" + }, + "attribute": { + "color": "#0088cc" + }, + "tag": { + "color": "#00eaff" + }, + "label": { + "color": "#0088cc" + }, + "operator": { + "color": "#ededed" + }, + "punctuation": { + "color": "#737373" + }, + "punctuation.bracket": { + "color": "#737373" + }, + "punctuation.delimiter": { + "color": "#737373" + }, + "punctuation.list_marker": { + "color": "#737373", + "font_weight": 700 + }, + "link_text": { + "color": "#00eaff" + }, + "link_uri": { + "color": "#0088cc" + }, + "emphasis": { + "font_style": "italic" + }, + "emphasis.strong": { + "font_weight": 700 + }, + "title": { + "color": "#ededed", + "font_weight": 700 + }, + "text.literal": { + "color": "#00ff99" + }, + "preproc": { + "color": "#0088cc" + }, + "constructor": { + "color": "#0088cc" + }, + "enum": { + "color": "#9d00ff" + }, + "variant": { + "color": "#9d00ff" + }, + "hint": { + "color": "#0088cc" + }, + "predictive": { + "color": "#737373" + } + } + } + }, + { + "name": "Apex Aeon", + "appearance": "light", + "style": { + "background": "#f5f5f5", + "background.appearance": "opaque", + "surface.background": "#e8e8e8", + "elevated_surface.background": "#ffffff", + "panel.background": "#e8e8e8", + "panel.focused_border": "#ff0044", + "panel.indent_guide": "#a0a0a066", + "panel.indent_guide_active": "#737373aa", + "panel.indent_guide_hover": "#737373cc", + "tab_bar.background": "#e8e8e8", + "tab.inactive_background": "#e8e8e8", + "tab.active_background": "#f5f5f5", + "title_bar.background": "#f5f5f5", + "title_bar.inactive_background": "#e8e8e8", + "toolbar.background": "#e8e8e8", + "status_bar.background": "#e8e8e8", + "border": "#737373", + "border.variant": "#a0a0a0", + "border.focused": "#ff0044", + "border.selected": "#ff0044", + "border.disabled": "#a0a0a0", + "border.transparent": "transparent", + "text": "#0a0a0a", + "text.muted": "#737373", + "text.placeholder": "#737373", + "text.disabled": "#a0a0a0", + "text.accent": "#007a88", + "icon": "#0a0a0a", + "icon.muted": "#737373", + "icon.placeholder": "#737373", + "icon.disabled": "#a0a0a0", + "icon.accent": "#007a88", + "accents": [ + "#ff0044", + "#007a88", + "#7a3cff", + "#00b377", + "#d18f00" + ], + "element.background": "#ffffff", + "element.hover": "#e8e8e8", + "element.active": "#e8e8e8", + "element.selected": "#e8e8e8", + "element.disabled": "#e8e8e8", + "ghost_element.background": null, + "ghost_element.hover": "#a0a0a033", + "ghost_element.active": "#a0a0a044", + "ghost_element.selected": "#a0a0a033", + "ghost_element.disabled": null, + "drop_target.background": "#33bccc22", + "editor.background": "#f5f5f5", + "editor.foreground": "#0a0a0a", + "editor.gutter.background": "#f5f5f5", + "editor.subheader.background": "#e8e8e8", + "editor.active_line.background": "#e8e8e8", + "editor.highlighted_line.background": "#e8e8e8", + "editor.line_number": "#737373", + "editor.active_line_number": "#ff0044", + "editor.wrap_guide": "#e8e8e8", + "editor.active_wrap_guide": "#a0a0a0", + "editor.indent_guide": "#a0a0a066", + "editor.indent_guide_active": "#737373aa", + "editor.invisible": "#a0a0a088", + "editor.document_highlight.read_background": "#007a881a", + "editor.document_highlight.write_background": "#ff00441a", + "editor.document_highlight.bracket_background": "#a0a0a033", + "search.match_background": "#33bccc44", + "scrollbar.track.background": "#f5f5f5", + "scrollbar.track.border": "#f5f5f5", + "scrollbar.thumb.background": "#a0a0a0aa", + "scrollbar.thumb.hover_background": "#737373", + "scrollbar.thumb.border": "transparent", + "pane.focused_border": "#ff0044", + "pane_group.border": "#a0a0a0", + "link_text.hover": "#33bccc", + "success": "#00b377", + "success.background": "#00b3771a", + "success.border": "#00b377", + "warning": "#d18f00", + "warning.background": "#d18f001a", + "warning.border": "#d18f00", + "error": "#ff4d6d", + "error.background": "#ff4d6d1a", + "error.border": "#ff4d6d", + "info": "#007a88", + "info.background": "#007a881a", + "info.border": "#007a88", + "hint": "#005577", + "hint.background": "#0055771a", + "hint.border": "#005577", + "predictive": "#005577", + "predictive.background": "#0055771a", + "predictive.border": "#005577", + "unreachable": "#7a3cff", + "unreachable.background": "#7a3cff1a", + "unreachable.border": "#7a3cff", + "created": "#00b377", + "created.background": "#00b3771a", + "created.border": "#00b377", + "modified": "#d18f00", + "modified.background": "#d18f001a", + "modified.border": "#d18f00", + "deleted": "#ff4d6d", + "deleted.background": "#ff4d6d1a", + "deleted.border": "#ff4d6d", + "renamed": "#007a88", + "renamed.background": "#007a881a", + "renamed.border": "#007a88", + "conflict": "#ff4d6d", + "conflict.background": "#ff4d6d1a", + "conflict.border": "#ff4d6d", + "ignored": "#737373", + "ignored.background": "#7373731a", + "ignored.border": "#a0a0a0", + "hidden": "#737373", + "hidden.background": "#7373731a", + "hidden.border": "#a0a0a0", + "terminal.background": "#f5f5f5", + "terminal.foreground": "#0a0a0a", + "terminal.bright_foreground": "#0a0a0a", + "terminal.dim_foreground": "#737373", + "terminal.ansi.background": "#f5f5f5", + "terminal.ansi.black": "#0a0a0a", + "terminal.ansi.red": "#ff0044", + "terminal.ansi.green": "#00b377", + "terminal.ansi.yellow": "#d18f00", + "terminal.ansi.blue": "#007a88", + "terminal.ansi.magenta": "#7a3cff", + "terminal.ansi.cyan": "#007a88", + "terminal.ansi.white": "#f5f5f5", + "terminal.ansi.bright_black": "#737373", + "terminal.ansi.bright_red": "#ff4d6d", + "terminal.ansi.bright_green": "#33d6a6", + "terminal.ansi.bright_yellow": "#ffbf40", + "terminal.ansi.bright_blue": "#33bccc", + "terminal.ansi.bright_magenta": "#a680ff", + "terminal.ansi.bright_cyan": "#33bccc", + "terminal.ansi.bright_white": "#ffffff", + "terminal.ansi.dim_black": "#0a0a0a", + "terminal.ansi.dim_red": "#ff0044", + "terminal.ansi.dim_green": "#00b377", + "terminal.ansi.dim_yellow": "#d18f00", + "terminal.ansi.dim_blue": "#007a88", + "terminal.ansi.dim_magenta": "#7a3cff", + "terminal.ansi.dim_cyan": "#007a88", + "terminal.ansi.dim_white": "#f5f5f5", + "players": [ + { + "cursor": "#ff0044", + "background": "#ff0044", + "selection": "#ff004433" + }, + { + "cursor": "#007a88", + "background": "#007a88", + "selection": "#007a8833" + }, + { + "cursor": "#7a3cff", + "background": "#7a3cff", + "selection": "#7a3cff33" + }, + { + "cursor": "#00b377", + "background": "#00b377", + "selection": "#00b37733" + }, + { + "cursor": "#d18f00", + "background": "#d18f00", + "selection": "#d18f0033" + } + ], + "version_control.added": "#00b377", + "version_control.modified": "#d18f00", + "version_control.deleted": "#ff4d6d", + "version_control.conflict": "#ff4d6d", + "version_control.renamed": "#007a88", + "version_control.ignored": "#737373", + "syntax": { + "comment": { + "color": "#737373", + "font_style": "italic" + }, + "comment.doc": { + "color": "#737373", + "font_style": "italic" + }, + "keyword": { + "color": "#007a88" + }, + "keyword.import": { + "color": "#007a88" + }, + "keyword.storage": { + "color": "#007a88" + }, + "function": { + "color": "#005577" + }, + "function.method": { + "color": "#005577" + }, + "function.special.definition": { + "color": "#005577" + }, + "type": { + "color": "#7a3cff" + }, + "type.builtin": { + "color": "#7a3cff" + }, + "string": { + "color": "#00b377" + }, + "string.escape": { + "color": "#33d6a6" + }, + "string.regex": { + "color": "#d18f00" + }, + "number": { + "color": "#d18f00" + }, + "boolean": { + "color": "#d18f00" + }, + "constant": { + "color": "#0a0a0a" + }, + "constant.builtin": { + "color": "#7a3cff" + }, + "variable": { + "color": "#0a0a0a" + }, + "variable.special": { + "color": "#7a3cff" + }, + "property": { + "color": "#0a0a0a" + }, + "attribute": { + "color": "#005577" + }, + "tag": { + "color": "#007a88" + }, + "label": { + "color": "#005577" + }, + "operator": { + "color": "#0a0a0a" + }, + "punctuation": { + "color": "#737373" + }, + "punctuation.bracket": { + "color": "#737373" + }, + "punctuation.delimiter": { + "color": "#737373" + }, + "punctuation.list_marker": { + "color": "#737373", + "font_weight": 700 + }, + "link_text": { + "color": "#007a88" + }, + "link_uri": { + "color": "#005577" + }, + "emphasis": { + "font_style": "italic" + }, + "emphasis.strong": { + "font_weight": 700 + }, + "title": { + "color": "#0a0a0a", + "font_weight": 700 + }, + "text.literal": { + "color": "#00b377" + }, + "preproc": { + "color": "#005577" + }, + "constructor": { + "color": "#005577" + }, + "enum": { + "color": "#7a3cff" + }, + "variant": { + "color": "#7a3cff" + }, + "hint": { + "color": "#005577" + }, + "predictive": { + "color": "#737373" + } + } + } + } + ] +} diff --git a/dot_gemini/settings.json b/dot_gemini/settings.json new file mode 100644 index 0000000..d94c4ae --- /dev/null +++ b/dot_gemini/settings.json @@ -0,0 +1,10 @@ +{ + "security": { + "auth": { + "selectedType": "oauth-personal" + } + }, + "ui": { + "theme": "/home/mpuchstein/Dev/Themes/apex/dist/gemini/apex-neon.json" + } +}