From 15bd84603d7f42ce5989bebe1db3cd04c4c30bff Mon Sep 17 00:00:00 2001 From: Santo Cariotti Date: Mon, 19 Oct 2026 23:50:03 +0200 Subject: Update --- dot_neomutt/ayu.muttrc | 117 +++++++++++++++++++++ dot_neomuttrc | 11 +- private_dot_config/zellij/config.kdl | 193 ++++++++++++++++++++++++++++++++++- 3 files changed, 316 insertions(+), 5 deletions(-) create mode 100644 dot_neomutt/ayu.muttrc diff --git a/dot_neomutt/ayu.muttrc b/dot_neomutt/ayu.muttrc new file mode 100644 index 0000000..c7c8634 --- /dev/null +++ b/dot_neomutt/ayu.muttrc @@ -0,0 +1,117 @@ +# Ayu Dark Scheme for NeoMutt +# Source : https://github.com/gopi487krishna/neomutt-ayu +# Based on : neovim-ayu +# Source : https://github.com/Shatur/neovim-ayu +# Adapted from :Neonwolf Color Scheme for Neomutt +# Source: https://codeberg.org/h3xx/mutt-colors-neonwolf/raw/branch/main/mutt-colors-neonwolf-256.muttrc + +# custom body highlights ----------------------------------------------- + +# custom index highlights ---------------------------------------------- + + +# for background in 16 color terminal, valid background colors include: +# base03, bg, black, any of the non brights + +# style notes: +# when bg=235, that's a highlighted message +# normal bg=233 + +# basic colors --------------------------------------------------------- +color error color204 color16 # message line error text +color tilde color81 color16 # vi-like tildes marking blank lines +color message color82 color16 +color markers bold color232 color222 # wrapped-line /^\+/ markers +color attachment bold color183 color16 # attachment headers +color search color232 color149 # search patterns in pager +color status bold color215 color234 +color indicator bold color232 color24 # selected email in index +color tree bold color209 color16 # arrow in threads (`-->') + +# basic monochrome screen +mono bold bold +mono underline underline +mono indicator reverse +mono error bold +mono header bold "^(From|Subject|Date|To|Cc|Bcc):" +mono quoted bold + +# index ---------------------------------------------------------------- + +color index color160 color16 "~A" # all messages +color index color166 color16 "~E" # expired messages +color index bold color149 color16 "~N" # new messages +color index color149 color16 "~O" # old messages +color index color244 color16 "~R" # read messages +color index bold color39 color16 "~Q" # messages that have been replied to +color index bold color149 color16 "~U" # unread messages +color index bold color149 color16 "~U~$" # unread, unreferenced messages +color index color222 color16 "~v" # messages part of a collapsed thread +color index color222 color16 "~P" # messages from me +#color index color39 color16 "~p!~F" # messages to me +#color index color39 color16 "~N~p!~F" # new messages to me +#color index color39 color16 "~U~p!~F" # unread messages to me +#color index color244 color16 "~R~p!~F" # messages to me +color index bold color183 color16 "~F" # flagged messages +color index bold color183 color16 "~F~p" # flagged messages to me +color index bold color183 color16 "~N~F" # new flagged messages +color index bold color183 color16 "~N~F~p" # new flagged messages to me +color index bold color183 color16 "~U~F~p" # new flagged messages to me +color index color232 color204 "!~N ~D" # deleted messages +color index color232 color204 "~N ~D" # deleted new messages +color index color244 color16 "~v~(!~N)" # collapsed thread with no unread +color index color81 color16 "~v~(~N)" # collapsed thread with some unread +color index color81 color16 "~N~v~(~N)" # collapsed thread with unread parent +# statusbg used to indicated flagged when foreground color shows other status +# for collapsed thread +color index color160 color16 "~v~(~F)!~N" # collapsed thread with flagged, no unread +color index color81 color16 "~v~(~F~N)" # collapsed thread with some unread & flagged +color index color81 color16 "~N~v~(~F~N)" # collapsed thread with unread parent & flagged +color index color81 color16 "~N~v~(~F)" # collapsed thread with unread parent, no unread inside, but some flagged +color index color39 color16 "~v~(~p)" # collapsed thread with unread parent, no unread inside, some to me directly +color index color81 color160 "~v~(~D)" # thread with deleted (doesn't differentiate between all or partial) +color index color222 color16 "~T" # tagged messages +color index bold color222 color16 "~T~F" # tagged, flagged messages +color index bold color222 color16 "~T~N" # tagged, new messages +color index bold color222 color16 "~T~U" # tagged, unread messages + +# message headers ------------------------------------------------------ + +color hdrdefault bold color222 color16 +color header bold color39 color16 "^(From|To|Cc|Bcc)" +color header bold color183 color16 "^(Subject|Date)" + +# body ----------------------------------------------------------------- + +color quoted color75 color16 +color quoted1 color215 color16 +color quoted2 color149 color16 +color quoted3 color222 color16 +color quoted4 color183 color16 +color signature color81 color16 # everything below /^--\s*$/ + +color bold color255 color16 +color underline color16 color244 +# color normal color209 color16 #UI foreground background +color normal color254 color16 #UI foreground background + +## pgp + +color body color160 color16 "(BAD signature)" +color body color39 color16 "(Good signature)" +color body color16 color16 "^gpg: Good signature .*" +color body color241 color16 "^gpg: " +color body color241 color160 "^gpg: BAD signature from.*" +mono body bold "^gpg: Good signature" +mono body bold "^gpg: BAD signature from.*" + +# yes, an insane URL regex +color body bold color39 color16 "([a-z][a-z0-9+-]*://(((([a-z0-9_.!~*'();:&=+$,-]|%[0-9a-f][0-9a-f])*@)?((([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?|[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)(:[0-9]+)?)|([a-z0-9_.!~*'()$,;:@&=+-]|%[0-9a-f][0-9a-f])+)(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?(#([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?|(www|ftp)\\.(([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?(:[0-9]+)?(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?(#([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?)[^].,:;!)? \t\r\n<>\"]" +# and a heavy handed email regex +color body bold color39 color16 "((@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\]),)*@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\]):)?[0-9a-z_.+%$-]+@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\])" + +# simplified regex for URL & email +#color body magenta default "(ftp|https?|gopher|news|telnet|finger)://[^ \"\t\r\n]+" +#color body magenta default "[-a-z_0-9.]+@[-a-z_0-9.]+" + +# vi: ft=muttrc ts=4 sw=4 sts=4 et diff --git a/dot_neomuttrc b/dot_neomuttrc index 7ca9cde..63de85c 100644 --- a/dot_neomuttrc +++ b/dot_neomuttrc @@ -1,11 +1,11 @@ # Folder hooks -folder-hook '' 'source ~/.neomutt/' +folder-hook '' 'source ~/.neomutt/' # Default account -source ~/.neomutt/ +source ~/.neomutt/ # Macros for switching accounts -macro index 'source ~/.neomutt/!' +macro index 'source ~/.neomutt/!' set editor = "vim" set charset = "utf-8" @@ -38,7 +38,8 @@ bind index,pager J sidebar-next bind index,pager L sidebar-open bind index,pager B sidebar-toggle-visible -source ~/.neomutt/colors.muttrc +# source ~/.neomutt/colors.muttrc +source ~/.neomutt/ayu.muttrc bind index j next-entry bind index k previous-entry @@ -52,6 +53,8 @@ bind pager G bottom bind index gg first-entry bind index G last-entry +bind pager,index R group-chat-reply + bind index,pager V noop macro index,pager V "html" diff --git a/private_dot_config/zellij/config.kdl b/private_dot_config/zellij/config.kdl index 7043ff4..64b5be8 100644 --- a/private_dot_config/zellij/config.kdl +++ b/private_dot_config/zellij/config.kdl @@ -1,5 +1,5 @@ // -// THIS FILE WAS AUTOGENERATED BY ZELLIJ, THE PREVIOUS FILE AT THIS LOCATION WAS COPIED TO: /home/santo/.config/zellij/config.kdl.bak +// THIS FILE WAS AUTOGENERATED BY ZELLIJ, THE PREVIOUS FILE AT THIS LOCATION WAS COPIED TO: /home/santo/.config/zellij/config.kdl.bak.1 // keybinds clear-defaults=true { @@ -11,6 +11,7 @@ keybinds clear-defaults=true { bind "down" { MoveFocus "down"; } bind "up" { MoveFocus "up"; } bind "right" { MoveFocus "right"; } + bind ";" { FocusLastPane; } bind "c" { SwitchToMode "renamepane"; PaneNameInput 0; } bind "d" { NewPane "down"; SwitchToMode "normal"; } bind "e" { TogglePaneEmbedOrFloating; SwitchToMode "normal"; } @@ -88,7 +89,11 @@ keybinds clear-defaults=true { bind "tab" { MovePane; } } scroll { + bind "[" { ScrollToPreviousPrompt; } + bind "]" { ScrollToNextPrompt; } + bind "c" { CopyLastCommandOutput; SwitchToMode "normal"; } bind "e" { EditScrollback; SwitchToMode "normal"; } + bind "m" { SelectCommandAtScrollPosition; } bind "s" { SwitchToMode "entersearch"; SearchInput 0; } } search { @@ -99,6 +104,8 @@ keybinds clear-defaults=true { bind "w" { SearchToggleOption "Wrap"; } } session { + bind "[" { FocusGuestSession; SwitchToMode "normal"; } + bind "]" { FocusHostSession; SwitchToMode "normal"; } bind "a" { LaunchOrFocusPlugin "zellij:about" { floating true @@ -113,6 +120,7 @@ keybinds clear-defaults=true { } SwitchToMode "normal" } + bind "f" { ToggleHostFullscreen; SwitchToMode "normal"; } bind "Ctrl o" { SwitchToMode "normal"; } bind "p" { LaunchOrFocusPlugin "plugin-manager" { @@ -267,6 +275,9 @@ ui { hide_session_name true } } +web_client { + font "monospace" +} // Use a simplified UI without special fonts (arrow glyphs) // Options: @@ -275,11 +286,34 @@ ui { // simplified_ui true +// Enable OSC8 hyperlink output +// Options: +// - true (Default) +// - false +// +// osc8_hyperlinks true + // Choose the theme that is specified in the themes section. // Default: default // theme "default" +// Theme to use when the host terminal reports a dark color palette. +// Requires `theme_light` to also be set; otherwise `theme` is used. +// +// theme_dark "dracula" + +// Theme to use when the host terminal reports a light color palette. +// Requires `theme_dark` to also be set; otherwise `theme` is used. +// +// theme_light "solarized-light" + +// Pin the session to a dark or light appearance, ignoring what the +// host terminal reports. When unset, the host terminal decides. +// Options: dark, light +// +// explicit_theme_hue "dark" + // Choose the base input mode of zellij. // Default: normal // @@ -325,6 +359,13 @@ default_layout "compact" // pane_frames false +// Set the pane frame style when pane_frames is enabled +// Options: +// - full +// - titles (default) +// +// pane_frame_style "titles" + // When attaching to an existing session with other users, // should the session be mirrored (true) // or should each user have their own cursor (false) @@ -445,11 +486,68 @@ scrollback_editor "/usr/local/bin/nvim" // // support_kitty_keyboard_protocol false +// Enable or disable support for the Kitty Graphics Protocol, used to display images (the host terminal must also support it) +// (Requires restart) +// Default: true (if the host terminal supports it) +// +// support_kitty_graphics_protocol false +// Whether to make sure a local web server is running when a new Zellij session starts. +// This web server will allow creating new sessions and attaching to existing ones that have +// opted in to being shared in the browser. +// When enabled, navigate to http://127.0.0.1:8082 +// (Requires restart) +// +// Note: a local web server can still be manually started from within a Zellij session or from the CLI. +// If this is not desired, one can use a version of Zellij compiled without +// `web_server_capability` +// +// Possible values: +// - true +// - false +// Default: false +// +// web_server false +// Whether to allow sessions started in the terminal to be shared through a local web server, assuming one is +// running (see the `web_server` option for more details). +// (Requires restart) +// +// Note: This is an administrative separation and not intended as a security measure. +// +// Possible values: +// - "on" (allow web sharing through the local web server if it +// is online) +// - "off" (do not allow web sharing unless sessions explicitly opt-in to it) +// - "disabled" (do not allow web sharing and do not permit sessions started in the terminal to opt-in to it) +// Default: "off" +// +// web_sharing "off" +// A path to a certificate file to be used when setting up the web client to serve the +// connection over HTTPs +// +// web_server_cert "/path/to/cert.pem" +// A path to a key file to be used when setting up the web client to serve the +// connection over HTTPs +// +// web_server_key "/path/to/key.pem" +/// Whether to enforce https connections to the web server when it is bound to localhost +/// (127.0.0.0/8) +/// +/// Note: https is ALWAYS enforced when bound to non-local interfaces +/// +/// Default: false +// +// enforce_https_for_localhost false + // Whether to stack panes when resizing beyond a certain size // Default: true // // stacked_resize false +// Whether stacked panes display as a list with the expanded pane pinned to the bottom +// Default: true +// +// stacked_pane_list false + // Whether to show tips on startup // Default: true // @@ -459,3 +557,96 @@ show_startup_tips false // Default: true // // show_release_notes false + +// Whether to enable mouse hover effects and pane grouping functionality +// default is true +// advanced_mouse_actions false + +// Whether Ctrl+ScrollWheel resizes panes +// default is true +// mouse_scroll_resize false + +// Whether scrolling a pane implicitly enters and exits Scroll mode +// default is true +// scroll_mode_sync false + +// Whether to enable mouse hover visual effects (frame highlight and help text) +// default is true +// mouse_hover_effects false + +// Whether to show mouse hover help-text tips (resize help and group shortcuts) +// default is true +// mouse_hover_tips false + +// Whether to show visual bell indicators (pane/tab frame flash and [!] suffix) +// default is true +// visual_bell true + +// Whether to focus panes on mouse hover +// default is false +// focus_follows_mouse false + +// Whether clicking a pane to focus it also sends the click into the pane +// default is false +// mouse_click_through false + +// Whether triple-clicking inside command output marked by the shell (OSC 133) selects +// the command and its output instead of the logical line +// default is true +// osc133_command_selection false + +// Characters that terminate a word when double-clicking to select it +// whitespace is always a separator and need not be listed here +// default is "[]{}<>()" +// word_separators "[]{}<>()" + +// The ip address the web server should listen on when it starts +// Default: "127.0.0.1" +// (Requires restart) +// web_server_ip "127.0.0.1" + +// The port the web server should listen on when it starts +// Default: 8082 +// (Requires restart) +// web_server_port 8082 + +// A command to run (will be wrapped with sh -c and provided the RESURRECT_COMMAND env variable) +// after Zellij attempts to discover a command inside a pane when resurrecting sessions, the STDOUT +// of this command will be used instead of the discovered RESURRECT_COMMAND +// can be useful for removing wrappers around commands +// Note: be sure to escape backslashes and similar characters properly +// post_command_discovery_hook "echo $RESURRECT_COMMAND | sed " + +// Number of async worker tasks to spawn per active client. +// +// Allocating few tasks may result in resource contention and lags. Small values (around 4) should +// typically work best. Set to 0 to use the number of (physical) CPU cores. +// Note: This only applies to web clients at the moment. +// client_async_worker_tasks 4 + +// Whether to let programs running inside panes read the paste buffer +// (clipboard) with the OSC 52 escape sequence. When enabled, any program +// in any pane - including one running on a remote machine over SSH - can +// read the clipboard without the user being asked. +// Default: false +// dangerously_enable_paste_buffer_read false + +// How to handle a nested Zellij session detected inside a pane. +// Options: +// - "ask" (Default — prompt with a modal) +// - "fullscreen" (always zoom into the nested session) +// - "descend" (always control the nested session on focus) +// - "never" (never prompt or descend; do it manually) +// +// nested_session_handling "ask" + +// Which escape sequence desktop notifications coming from panes are +// forwarded to the host terminal with. +// Options: +// - "auto" (Default — detect from the host terminal environment) +// - "osc9" (the legacy iTerm2 protocol, understood by most terminals) +// - "osc99" (kitty's notification protocol) +// - "bell" (ring the terminal bell instead) +// - "off" (do not forward notifications to the host terminal) +// +// host_notification_protocol "auto" -- cgit v1.2.3-71-g8e6c