diff --git a/config/mako/config b/config/mako/config index 54b1655..9be017e 100644 --- a/config/mako/config +++ b/config/mako/config @@ -1,11 +1,11 @@ default-timeout=5000 ignore-timeout=1 -background-color=#1e1e2e -text-color=#cdd6f4 -border-color=#b4befe -progress-color=over #313244 +background-color=#282828 +text-color=#ebdbb2 +border-color=#3c3836 +progress-color=over #3c3836 [urgency=low] -border-color=#0b0b22 +border-color=#458588 [urgency=high] -border-color=#fab387 +border-color=#fb4934 diff --git a/config/niri/config.kdl b/config/niri/config.kdl index f0dff86..d71cd0e 100644 --- a/config/niri/config.kdl +++ b/config/niri/config.kdl @@ -10,13 +10,18 @@ input { natural-scroll } - mouse { - } + focus-follows-mouse trackpoint { } } +gestures { + hot-corners { + off + } +} + cursor { xcursor-theme "Adwaita" xcursor-size 24 @@ -45,11 +50,13 @@ layout { proportion 0.66667 } - default-column-width { proportion 0.5; } + default-column-width { + proportion 0.5; + } focus-ring { width 4 - active-color "#313244" + active-color "#3c3836" inactive-color "#505050" } @@ -76,11 +83,9 @@ prefer-no-csd screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png" -animations { -} - spawn-at-startup "waybar" -spawn-at-startup "swaybg -i /home/coast/Downloads/wall1.png/ -m fill" +spawn-at-startup "swww-daemon" +spawn-at-startup "swww img --outputs HDMI-A-1 ~/Downloads/wall4.png" window-rule { match app-id=r#"^org\.wezfurlong\.wezterm$"# @@ -92,6 +97,11 @@ window-rule { open-floating true } +window-rule { + match app-id=r#"waydroid$"# + open-fullscreen true +} + window-rule { geometry-corner-radius 7 clip-to-geometry true @@ -100,7 +110,7 @@ window-rule { binds { Mod+Shift+Slash { show-hotkey-overlay; } Mod+Return hotkey-overlay-title="Open a Terminal: wezterm" { spawn "wezterm"; } - Mod+R hotkey-overlay-title="Run an Application: rofi" { spawn-sh "rofi -show drun"; } + Mod+R hotkey-overlay-title="Run an Application: rofi" { spawn-sh "rofi -show drun -config ~/.config/rofi/gruvbox.rasi"; } Super+Alt+L hotkey-overlay-title="Lock the Screen: swaylock" { spawn "swaylock"; } Super+Alt+S allow-when-locked=true hotkey-overlay-title=null { spawn-sh "pkill orca || exec orca"; } @@ -158,8 +168,8 @@ binds { Mod+Page_Down { focus-workspace-down; } Mod+Page_Up { focus-workspace-up; } - Mod+U { focus-workspace-down; } - Mod+I { focus-workspace-up; } + Mod+N { focus-workspace-down; } + Mod+M { focus-workspace-up; } Mod+Ctrl+Page_Down { move-column-to-workspace-down; } Mod+Ctrl+Page_Up { move-column-to-workspace-up; } Mod+Ctrl+U { move-column-to-workspace-down; } @@ -167,8 +177,8 @@ binds { Mod+Shift+Page_Down { move-workspace-down; } Mod+Shift+Page_Up { move-workspace-up; } - Mod+Shift+U { move-workspace-down; } - Mod+Shift+I { move-workspace-up; } + Mod+Shift+M { move-workspace-down; } + Mod+Shift+N { move-workspace-up; } Mod+1 { focus-workspace 1; } Mod+2 { focus-workspace 2; } @@ -226,8 +236,6 @@ binds { Mod+Shift+E { quit; } Ctrl+Alt+Delete { quit; } - Mod+Shift+P { power-off-monitors; } - Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; } Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; } Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; } @@ -244,8 +252,4 @@ binds { Mod+Ctrl+Shift+WheelScrollUp { move-column-left; } } -gestures { - hot-corners { - off - } -} + diff --git a/config/nvim/init.lua b/config/nvim/init.lua index 3cad5fc..6407906 100644 --- a/config/nvim/init.lua +++ b/config/nvim/init.lua @@ -7,3 +7,4 @@ require("plugins/telescope") require("plugins/treesitter") --require("plugins/whichkey") require("config") +require("plugins/render-markdown") diff --git a/config/nvim/lazy-lock.json b/config/nvim/lazy-lock.json index bad3067..de9d811 100644 --- a/config/nvim/lazy-lock.json +++ b/config/nvim/lazy-lock.json @@ -6,13 +6,14 @@ "cmp-path": { "branch": "main", "commit": "c6635aae33a50d6010bf1aa756ac2398a2d54c32" }, "cmp-spell": { "branch": "master", "commit": "694a4e50809d6d645c1ea29015dad0c293f019d6" }, "cmp-vsnip": { "branch": "main", "commit": "989a8a73c44e926199bfd05fa7a516d51f2d2752" }, + "gruvbox.nvim": { "branch": "main", "commit": "5e0a460d8e0f7f669c158dedd5f9ae2bcac31437" }, "lazy.nvim": { "branch": "main", "commit": "db067881fff0fd4be8c00e5bde7492e0e1c77a2f" }, "lsp_signature.nvim": { "branch": "master", "commit": "d50e40b3bf9324128e71b0b7e589765ce89466d2" }, "lualine.nvim": { "branch": "master", "commit": "a94fc68960665e54408fe37dcf573193c4ce82c9" }, "mason.nvim": { "branch": "main", "commit": "8024d64e1330b86044fed4c8494ef3dcd483a67c" }, + "mini.nvim": { "branch": "main", "commit": "429e5f9dc9cd59bf76cd98b687300f0a384a7f52" }, "none-ls-extras.nvim": { "branch": "main", "commit": "924fe88a9983c7d90dbb31fc4e3129a583ea0a90" }, "none-ls.nvim": { "branch": "main", "commit": "db2a48b79cfcdab8baa5d3f37f21c78b6705c62e" }, - "nvim": { "branch": "main", "commit": "fa42eb5e26819ef58884257d5ae95dd0552b9a66" }, "nvim-autopairs": { "branch": "master", "commit": "4d74e75913832866aa7de35e4202463ddf6efd1b" }, "nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" }, "nvim-cursorline": { "branch": "main", "commit": "804f0023692653b2b2368462d67d2a87056947f9" }, @@ -22,6 +23,7 @@ "nvim-web-devicons": { "branch": "master", "commit": "1fb58cca9aebbc4fd32b086cb413548ce132c127" }, "plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" }, "presence.nvim": { "branch": "main", "commit": "87c857a56b7703f976d3a5ef15967d80508df6e6" }, + "render-markdown.nvim": { "branch": "main", "commit": "10126effbafb74541b69219711dfb2c631e7ebf8" }, "telescope-undo.nvim": { "branch": "main", "commit": "928d0c2dc9606e01e2cc547196f48d2eaecf58e5" }, "telescope.nvim": { "branch": "master", "commit": "d90956833d7c27e73c621a61f20b29fdb7122709" }, "todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" }, diff --git a/config/nvim/lua/config.lua b/config/nvim/lua/config.lua index 422aa2c..a3f813f 100644 --- a/config/nvim/lua/config.lua +++ b/config/nvim/lua/config.lua @@ -13,9 +13,9 @@ cfg.smartindent = true cfg.number = true cfg.relativenumber = true -cfg.fillchars = "eob: " +cfg.conceallevel = 2 -cfg.clipboard = "unnamedplus" +cfg.fillchars = "eob: " g.loaded_netrw = 1 g.loaded_netrwPlugin = 1 @@ -31,7 +31,7 @@ else cfg.shell = "/run/current-system/sw/bin/zsh" end -vim.cmd([[colorscheme catppuccin-mocha]]) +vim.cmd([[colorscheme gruvbox]]) vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { border = "single", diff --git a/config/nvim/lua/plugins/lazy/plugins.lua b/config/nvim/lua/plugins/lazy/plugins.lua index 05dc86b..822a6c2 100644 --- a/config/nvim/lua/plugins/lazy/plugins.lua +++ b/config/nvim/lua/plugins/lazy/plugins.lua @@ -1,7 +1,7 @@ return { { "andweeb/presence.nvim", - "catppuccin/nvim", + "ellisonleao/gruvbox.nvim", "neovim/nvim-lspconfig", "williamboman/mason.nvim", { @@ -67,5 +67,13 @@ return { version = "1.*", opts = {}, }, + { + "MeanderingProgrammer/render-markdown.nvim", + dependencies = { + "nvim-treesitter/nvim-treesitter", + "nvim-mini/mini.nvim", + }, + opts = {}, + }, }, } diff --git a/config/nvim/lua/plugins/render-markdown/init.lua b/config/nvim/lua/plugins/render-markdown/init.lua new file mode 100644 index 0000000..1b69c14 --- /dev/null +++ b/config/nvim/lua/plugins/render-markdown/init.lua @@ -0,0 +1,141 @@ +-- Credits to https://raw.githubusercontent.com/BreadOnPenguins/nvim/refs/heads/master/lua/plugins/render-markdown.lua + +require("render-markdown").setup({ + link = { + -- Turn on / off inline link icon rendering. + enabled = true, + -- Additional modes to render links. + render_modes = false, + -- How to handle footnote links, start with a '^'. + footnote = { + -- Turn on / off footnote rendering. + enabled = true, + -- Replace value with superscript equivalent. + superscript = true, + -- Added before link content. + prefix = "", + -- Added after link content. + suffix = "", + }, + -- Inlined with 'image' elements. + image = "󰥶 ", + -- Inlined with 'email_autolink' elements. + email = "󰀓 ", + -- Fallback icon for 'inline_link' and 'uri_autolink' elements. + hyperlink = "󰌹 ", + -- Applies to the inlined icon as a fallback. + highlight = "RenderMarkdownLink", + -- Applies to WikiLink elements. + wiki = { + icon = "󱗖 ", + body = function() + return nil + end, + highlight = "RenderMarkdownWikiLink", + }, + -- Define custom destination patterns so icons can quickly inform you of what a link + -- contains. Applies to 'inline_link', 'uri_autolink', and wikilink nodes. When multiple + -- patterns match a link the one with the longer pattern is used. + -- The key is for healthcheck and to allow users to change its values, value type below. + -- | pattern | matched against the destination text | + -- | icon | gets inlined before the link text | + -- | kind | optional determines how pattern is checked | + -- | | pattern | @see :h lua-patterns, is the default if not set | + -- | | suffix | @see :h vim.endswith() | + -- | priority | optional used when multiple match, uses pattern length if empty | + -- | highlight | optional highlight for 'icon', uses fallback highlight if empty | + custom = { + web = { pattern = "^http", icon = "󰖟 " }, + github = { pattern = "github%.com", icon = "󰊤 " }, + gitlab = { pattern = "gitlab%.com", icon = "󰮠 " }, + stackoverflow = { pattern = "stackoverflow%.com", icon = "󰓌 " }, + wikipedia = { pattern = "wikipedia%.org", icon = "󰖬 " }, + youtube = { pattern = "youtube%.com", icon = "󰗃 " }, + }, + }, + callout = { + -- Callouts are a special instance of a 'block_quote' that start with a 'shortcut_link'. + -- The key is for healthcheck and to allow users to change its values, value type below. + -- | raw | matched against the raw text of a 'shortcut_link', case insensitive | + -- | rendered | replaces the 'raw' value when rendering | + -- | highlight | highlight for the 'rendered' text and quote markers | + -- | quote_icon | optional override for quote.icon value for individual callout | + -- | category | optional metadata useful for filtering | + + note = { raw = "[!NOTE]", rendered = "󰋽 Note", highlight = "RenderMarkdownInfo" }, + tip = { raw = "[!TIP]", rendered = "󰌶 Tip", highlight = "RenderMarkdownSuccess" }, + important = { raw = "[!IMPORTANT]", rendered = "󰅾 Important", highlight = "RenderMarkdownHint" }, + warning = { raw = "[!WARNING]", rendered = "󰀪 Warning", highlight = "RenderMarkdownWarn" }, + caution = { raw = "[!CAUTION]", rendered = "󰳦 Caution", highlight = "RenderMarkdownError" }, + abstract = { raw = "[!ABSTRACT]", rendered = "󰨸 Abstract", highlight = "RenderMarkdownInfo" }, + summary = { raw = "[!SUMMARY]", rendered = "󰨸 Summary", highlight = "RenderMarkdownInfo" }, + tldr = { raw = "[!TLDR]", rendered = "󰨸 Tldr", highlight = "RenderMarkdownInfo" }, + info = { raw = "[!INFO]", rendered = "󰋽 Info", highlight = "RenderMarkdownInfo" }, + todo = { raw = "[!TODO]", rendered = "󰗡 Todo", highlight = "RenderMarkdownInfo" }, + hint = { raw = "[!HINT]", rendered = "󰌶 Hint", highlight = "RenderMarkdownSuccess" }, + success = { raw = "[!SUCCESS]", rendered = "󰄬 Success", highlight = "RenderMarkdownSuccess" }, + check = { raw = "[!CHECK]", rendered = "󰄬 Check", highlight = "RenderMarkdownSuccess" }, + done = { raw = "[!DONE]", rendered = "󰄬 Done", highlight = "RenderMarkdownSuccess" }, + question = { raw = "[!QUESTION]", rendered = "󰘥 Question", highlight = "RenderMarkdownWarn" }, + help = { raw = "[!HELP]", rendered = "󰘥 Help", highlight = "RenderMarkdownWarn" }, + faq = { raw = "[!FAQ]", rendered = "󰘥 Faq", highlight = "RenderMarkdownWarn" }, + attention = { raw = "[!ATTENTION]", rendered = "󰀪 Attention", highlight = "RenderMarkdownWarn" }, + failure = { raw = "[!FAILURE]", rendered = "󰅖 Failure", highlight = "RenderMarkdownError" }, + fail = { raw = "[!FAIL]", rendered = "󰅖 Fail", highlight = "RenderMarkdownError" }, + missing = { raw = "[!MISSING]", rendered = "󰅖 Missing", highlight = "RenderMarkdownError" }, + danger = { raw = "[!DANGER]", rendered = "󱐌 Danger", highlight = "RenderMarkdownError" }, + error = { raw = "[!ERROR]", rendered = "󱐌 Error", highlight = "RenderMarkdownError" }, + bug = { raw = "[!BUG]", rendered = "󰨰 Bug", highlight = "RenderMarkdownError" }, + example = { raw = "[!EXAMPLE]", rendered = "󰉹 Example", highlight = "RenderMarkdownHint" }, + quote = { raw = "[!QUOTE]", rendered = "󱆨 Quote", highlight = "RenderMarkdownQuote" }, + cite = { raw = "[!CITE]", rendered = "󱆨 Cite", highlight = "RenderMarkdownQuote" }, + }, + checkbox = { + enabled = true, + render_modes = false, + bullet = false, + right_pad = 1, + unchecked = { + icon = "󰄱 ", + highlight = "RenderMarkdownUnchecked", + scope_highlight = nil, + }, + checked = { + icon = "󰱒 ", + highlight = "RenderMarkdownChecked", + scope_highlight = nil, + }, + custom = { + todo = { raw = "[-]", rendered = "󰥔 ", highlight = "RenderMarkdownTodo", scope_highlight = nil }, + }, + }, + bullet = { + enabled = true, + render_modes = false, + icons = { "●", "○", "◆", "◇" }, + ordered_icons = function(ctx) + local value = vim.trim(ctx.value) + local index = tonumber(value:sub(1, #value - 1)) + return ("%d."):format(index > 1 and index or ctx.index) + end, + left_pad = 0, + right_pad = 0, + highlight = "RenderMarkdownBullet", + scope_highlight = {}, + }, + quote = { icon = "▋" }, + anti_conceal = { + enabled = true, + -- Which elements to always show, ignoring anti conceal behavior. Values can either be + -- booleans to fix the behavior or string lists representing modes where anti conceal + -- behavior will be ignored. Valid values are: + -- head_icon, head_background, head_border, code_language, code_background, code_border, + -- dash, bullet, check_icon, check_scope, quote, table_border, callout, link, sign + ignore = { + code_background = true, + sign = true, + }, + above = 0, + below = 0, + }, +}) diff --git a/config/nvim/nvim b/config/nvim/nvim index a367c00..cc731bb 120000 --- a/config/nvim/nvim +++ b/config/nvim/nvim @@ -1 +1 @@ -/nix/store/88wrm111ys2gr576swa3isl80y217gaq-home-manager-files/.config/nvim \ No newline at end of file +/nix/store/jpb55c1pi5jlxhsgrvakbq4abf1pcldl-home-manager-files/.config/nvim \ No newline at end of file diff --git a/config/rofi/config.rasi b/config/rofi/config.rasi new file mode 100644 index 0000000..057153b --- /dev/null +++ b/config/rofi/config.rasi @@ -0,0 +1,5 @@ + +//@theme "/nix/store/r6by463p9aqp6rk0rd23ljzwjrxs1dzd-rofi-2.0.0/share/rofi/themes/dmenu.rasi" + +//@theme "/nix/store/r6by463p9aqp6rk0rd23ljzwjrxs1dzd-rofi-2.0.0/share/rofi/themes/gruvbox-dark.rasi" +@theme "/home/coast/.config/rofi/gruvbox.rasi" diff --git a/config/rofi/gruvbox.rasi b/config/rofi/gruvbox.rasi new file mode 100644 index 0000000..68a20b5 --- /dev/null +++ b/config/rofi/gruvbox.rasi @@ -0,0 +1,58 @@ +/* Custom Gruvbox Dark theme */ + +* { + highlight: bold italic; + scrollbar: true; + + /* Base palette (Gruvbox Dark) */ + base-bg: #1d2021; /* background */ + base-bg-soft: #32302f; /* dark gray */ + base-bg-alt: #3c3836; /* medium gray */ + base-fg: #ebdbb2; /* foreground */ + base-fg-dim: #a89984; /* gray */ + + accent: #fabd2f; /* yellow */ + accent-light: #fe8019; /* orange */ + accent-dark: #ebdbb2; /* red */ + + border-gray: #504945; /* dark gray border */ + + background: @base-bg; + background-color: @background; + foreground: @base-fg; + border-color: @border-gray; + separatorcolor: @border-color; + scrollbar-handle: @border-color; + + normal-background: @background; + normal-foreground: @foreground; + alternate-normal-background: @base-bg-soft; + alternate-normal-foreground: @foreground; + selected-normal-background: @accent-dark; + selected-normal-foreground: @base-bg; + + active-background: @accent; + active-foreground: @base-bg; + alternate-active-background: @accent; + alternate-active-foreground: @active-foreground; + selected-active-background: @accent-light; + selected-active-foreground: @active-foreground; + + urgent-background: @accent-dark; + urgent-foreground: @base-bg; + alternate-urgent-background: @accent-dark; + alternate-urgent-foreground: @urgent-foreground; + selected-urgent-background: @accent-light; + selected-urgent-foreground: @urgent-foreground; + + padding: 6px 6px; +} + +configuration { + font: "MapleMono 13"; + show-icons: true; +} + +element-icon { + size: 20px; +} diff --git a/config/waybar/style.css b/config/waybar/style.css index 661765c..1f8c4ca 100644 --- a/config/waybar/style.css +++ b/config/waybar/style.css @@ -1,18 +1,18 @@ -@define-color border #0b0b22; -@define-color background #1e1e2e; -@define-color surface0 #302d41; -@define-color overlay0 #393552; -@define-color text #cdd6f4; -@define-color text_dim #a6adc8; -@define-color blue #89b4fa; -@define-color green #a6e3a1; -@define-color yellow #f9e2af; -@define-color peach #fab387; -@define-color maroon #eba0ac; -@define-color lavender #b4befe; -@define-color pink #f5c2e7; -@define-color teal #94e2d5; -@define-color grey #454545; +@define-color border #3c3836; +@define-color background #282828; +@define-color surface0 #3c3836; +@define-color overlay0 #504945; +@define-color text #ebdbb2; +@define-color text_dim #a89984; +@define-color blue #458588; +@define-color green #b8bb26; +@define-color yellow #d79921; +@define-color peach #fe8019; +@define-color maroon #fb4934; +@define-color lavender #b16286; +@define-color pink #d3869b; +@define-color teal #689d6a; +@define-color grey #928374; * { border: none; @@ -60,28 +60,28 @@ window#waybar.empty #window { #network { margin: 8px 12px 8px 12px; - color: @lavender; + color: @text; } #pulseaudio, #clock { - color: @lavender; + color: @text; } #workspaces { margin-left: 12px; - color: @lavender; + color: @text; } #workspaces button { margin: 0; padding: 1px 3px; - color: @lavender; + color: @text; transition: none; } #workspaces button.empty { - color: @lavender; + color: @text; } #workspaces button.active { diff --git a/local/bin/uwuify.awk b/local/bin/uwuify.awk new file mode 100755 index 0000000..f161648 --- /dev/null +++ b/local/bin/uwuify.awk @@ -0,0 +1,75 @@ +#!/run/current-system/sw/bin/awk -f + +function uwuify(s, o) { + o = s + + # r/l -> w/W + o = gensub(/[rl]/, "w", "g", o) + o = gensub(/[RL]/, "W", "g", o) + + # n + vowel -> ny + o = gensub(/N([AEIOU])/, "NY\\1", "g", o) + o = gensub(/([nN])([aeiouAEIOU])/, "\\1y\\2", "g", o) + + # soft c before e/i + o = gensub(/c([ie])/, "sh\\1", "g", o) + o = gensub(/C([ie])/, "Sh\\1", "g", o) + o = gensub(/C([IE])/, "SH\\1", "g", o) + + # th -> d + o = gensub(/th/, "d", "g", o) + o = gensub(/Th/, "D", "g", o) + o = gensub(/TH/, "D", "g", o) + + # ove -> uv + o = gensub(/ove/, "uv", "g", o) + o = gensub(/OVE/, "UV", "g", o) + + # ing -> in’ + o = gensub(/ing\b/, "in’", "g", o) + o = gensub(/ING\b/, "IN’", "g", o) + + # punctuation uwuifier + o = gensub(/!+/, " owo~ ", "g", o) + o = gensub(/\?+/, " uwu?", "g", o) + o = gensub(/\.{3}/, "… >w< ", "g", o) + + return o +} + +function uwuify_line(line, pre, post, uw_pre, diff, fullseq, num, newnum, newseq) { + if (match(line, /^(.*:)/)) { + pre = substr(line, 1, RLENGTH) + post = substr(line, RLENGTH + 1) + + uw_pre = uwuify(pre) + diff = length(uw_pre) - length(pre) + + if (match(uw_pre, /\033\[[0-9]+C/)) { + fullseq = substr(uw_pre, RSTART, RLENGTH) + if (match(fullseq, /\033\[([0-9]+)C/, m)) { + num = m[1] + newnum = num - diff + if (newnum < 0) newnum = 0 + newseq = "\033[" newnum "C" + uw_pre = substr(uw_pre, 1, RSTART - 1) newseq substr(uw_pre, RSTART + RLENGTH) + } + } + + return uw_pre uwuify(post) + } + return uwuify(line) +} + +{ + # Kitty image protocol lines stay raw + if ($0 ~ /\033_G/) { + print $0 + } else if ($0 ~ /\033\[[0-9]+C/) { + out = uwuify_line($0) + print out + } else { + out = uwuify($0) + print out + } +}