diff --git a/SETUP.md b/SETUP.md new file mode 100644 index 0000000..c5be917 --- /dev/null +++ b/SETUP.md @@ -0,0 +1,101 @@ +# Setup after pulling (Arch) + +Everything needed to bring the Cursor Dark theme up on a machine that has just +pulled these changes. + +## 1. Packages + +```sh +sudo pacman -S --needed papirus-icon-theme ttf-nerd-fonts-symbols-mono +``` + +| Package | Why | +| --- | --- | +| `papirus-icon-theme` | rofi, dunst and the GTK configs all reference `Papirus-Dark` | +| `ttf-nerd-fonts-symbols-mono` | the tmux status bar uses powerline separators (U+E0B0–E0B3), and `kitty.conf` maps that range to `Symbols Nerd Font Mono` | + +Not in the repos: **Berkeley Mono** (`kitty.conf`) and **Hack JBM Ligatured** +(waybar, rofi, hyprlock) are installed by hand. + +## 2. Deploy + +```sh +cd ~/.dotfiles +stow fish kitty tmux nvim hypr waybar rofi dunst gtktheme +``` + +> The README suggests `stow *`, which now also picks up `SETUP.md`. +> Use `stow */` or an explicit list. + +## 3. Reload + +```sh +# fish - close every running fish session BEFORE pulling (see notes) +exec fish + +# tmux - plugins now bootstrap themselves, no prefix+I needed +tmux kill-server && tmux + +# nvim - installs vscode.nvim, drops everforest +nvim --headless "+Lazy! sync" +qa + +# desktop +hyprctl reload +killall -SIGUSR2 waybar +killall dunst # respawns via dbus +``` + +kitty: `ctrl+shift+F5` to reload, or restart it. rofi has no daemon. + +## 4. GTK theme + +The configs are set to `Orchis-Dark-Compact` (Material Design, accent `#1A73E8`). + +```sh +sudo pacman -S orchis-theme xdg-desktop-portal-gtk +``` + +libadwaita ignores `gtk-theme-name`, so GTK4 apps also need the portal settings +and Orchis' own GTK4 stylesheet linked in: + +```sh +gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark' +gsettings set org.gnome.desktop.interface icon-theme 'Papirus-Dark' +gsettings set org.gnome.desktop.interface gtk-theme 'Orchis-Dark-Compact' + +mkdir -p ~/.config/gtk-4.0 +ln -sf /usr/share/themes/Orchis-Dark-Compact/gtk-4.0/gtk.css ~/.config/gtk-4.0/gtk.css +ln -sf /usr/share/themes/Orchis-Dark-Compact/gtk-4.0/assets ~/.config/gtk-4.0/assets +``` + +`nwg-look` can do the symlink step for you — `nwg/.config/nwg-look/config` already +has `export-gtk4-symlinks: true`. Set the gsettings values above first, then run +`nwg-look` and hit Apply; it writes `.gtkrc-2.0`, both `settings.ini` files and the +GTK4 symlinks from those values. + +### Window buttons + +Both `settings.ini` files set `gtk-decoration-layout=close,minimize,maximize:` +— everything left of the `:` sits on the **left**, which is macOS placement and +order. That is client-side decoration, so it is all Hyprland apps use. + +Orchis' `--tweaks macos` is **not** useful here: it only replaces `xfwm4` and +`metacity-1` assets (Xfce / Marco window managers) and touches no GTK CSS, so it +would change nothing under Hyprland — and it requires building from source, +giving up the packaged theme. Circular red/yellow/green buttons are not +available from Orchis for GTK client-side decorations. + +## Notes + +- **fish universal variables.** The colours live in `fish/.config/fish/fish_variables`, + which fish rewrites from memory whenever any universal variable changes. Close + running fish sessions before pulling so an old session can't write the previous + palette back over it. +- **`cat` is broken on Arch.** `config.fish` defines `cat` as `batcat …`, which is + the Debian binary name. Arch's `bat` package installs `/usr/bin/bat`. Either + `sudo pacman -S bat` and rename the call, or add an alias. +- **nwg-look overwrites GTK config.** It regenerates `.gtkrc-2.0` and the + `settings.ini` files. Run it *before* editing these by hand, or re-apply after. +- **`gtktheme/.gtkrc-2.0` line 4** includes `/home/n0x/.gtkrc-2.0.mine`, a stale + path from a previous username. Harmless, but dead. +- **`~/.tmux/plugins/nord-tmux`** is no longer used or tracked. Safe to delete. diff --git a/dwm/.dwm/autostart.sh b/archive/dwm/.dwm/autostart.sh similarity index 100% rename from dwm/.dwm/autostart.sh rename to archive/dwm/.dwm/autostart.sh diff --git a/dunst/.config/dunst/dunstrc b/dunst/.config/dunst/dunstrc index 3e7232a..5477c47 100644 --- a/dunst/.config/dunst/dunstrc +++ b/dunst/.config/dunst/dunstrc @@ -95,7 +95,8 @@ frame_width = 2 # Defines color of the frame around the notification window. - frame_color = "#A7C080" + # Cursor Dark: neutral by default, overridden per urgency below. + frame_color = "#2b2b2b" # Size of gap to display between notifications - requires a compositor. # If value is greater than 0, separator_height will be ignored and a border @@ -201,7 +202,7 @@ enable_recursive_icon_lookup = true # Set icon theme (only used for recursive icon lookup) - icon_theme = Nordzy-green-dark + icon_theme = Papirus-Dark # You can also set multiple icon themes, with the leftmost one being used first. # icon_theme = "Adwaita, breeze" @@ -313,23 +314,27 @@ [urgency_low] # IMPORTANT: colors have to be defined in quotation marks. # Otherwise the "#" and following would be interpreted as a comment. - background = "#2E383C" - foreground = "#D3C6AA" + background = "#181818" + foreground = "#9d9d9d" + frame_color = "#2b2b2b" timeout = 10 # Icon for notifications with low urgency, uncomment to enable #icon = /path/to/icon [urgency_normal] - background = "#2E383C" - foreground = "#D3C6AA" + background = "#181818" + foreground = "#cccccc" + frame_color = "#2472c8" timeout = 10 # Icon for notifications with normal urgency, uncomment to enable #icon = /path/to/icon [urgency_critical] - background = "#900000" + # #5a1d1d is VS Code's error-validation background, so it stays in-family + # while still reading as alarming. + background = "#5a1d1d" foreground = "#ffffff" - frame_color = "#ff0000" + frame_color = "#f14c4c" timeout = 0 # Icon for notifications with critical urgency, uncomment to enable #icon = /path/to/icon diff --git a/fish/.config/fish/fish_variables b/fish/.config/fish/fish_variables index 9807e17..6eb46f9 100644 --- a/fish/.config/fish/fish_variables +++ b/fish/.config/fish/fish_variables @@ -1,36 +1,38 @@ # This file contains fish universal variable definitions. # VERSION: 3.0 +SETUVAR --export COMPOSE_BAKE:true +SETUVAR --export DISPLAY:\x3a0 SETUVAR --export EDITOR:nvim SETUVAR --export VISUAL:nvim SETUVAR --export _JAVA_AWT_WM_NONREPARENTING:1 -SETUVAR __fish_initialized:3800 -SETUVAR fish_color_autosuggestion:4c566a +SETUVAR fish_color_autosuggestion:666666 SETUVAR fish_color_cancel:\x2dr -SETUVAR fish_color_command:green -SETUVAR fish_color_comment:434c5e -SETUVAR fish_color_cwd:green -SETUVAR fish_color_cwd_root:red -SETUVAR fish_color_end:88c0d0 -SETUVAR fish_color_error:ebcb8b -SETUVAR fish_color_escape:00a6b2 +SETUVAR fish_color_command:569CD6 +SETUVAR fish_color_comment:6A9955 +SETUVAR fish_color_cwd:4EC9B0 +SETUVAR fish_color_cwd_root:F14C4C +SETUVAR fish_color_end:C586C0 +SETUVAR fish_color_error:F14C4C +SETUVAR fish_color_escape:D7BA7D SETUVAR fish_color_history_current:\x2d\x2dbold -SETUVAR fish_color_host:normal -SETUVAR fish_color_host_remote:yellow -SETUVAR fish_color_match:\x2d\x2dbackground\x3dbrblue +SETUVAR fish_color_host:569CD6 +SETUVAR fish_color_host_remote:DCDCAA +SETUVAR fish_color_keyword:C586C0 +SETUVAR fish_color_match:\x2d\x2dbackground\x3d264F78 SETUVAR fish_color_normal:normal -SETUVAR fish_color_operator:00a6b2 +SETUVAR fish_color_operator:D4D4D4 +SETUVAR fish_color_option:9CDCFE SETUVAR fish_color_param:normal -SETUVAR fish_color_quote:999900 -SETUVAR fish_color_redirection:00afff -SETUVAR fish_color_search_match:white\x1e\x2d\x2dbackground\x3dbrblack -SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack -SETUVAR fish_color_status:red -SETUVAR fish_color_user:brgreen +SETUVAR fish_color_quote:CE9178 +SETUVAR fish_color_redirection:9CDCFE +SETUVAR fish_color_search_match:\x2d\x2dbackground\x3d264F78 +SETUVAR fish_color_selection:E5E5E5\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3d264F78 +SETUVAR fish_color_status:F14C4C +SETUVAR fish_color_user:9CDCFE SETUVAR fish_color_valid_path:\x2d\x2dunderline -SETUVAR fish_key_bindings:fish_default_key_bindings SETUVAR fish_pager_color_completion:normal -SETUVAR fish_pager_color_description:B3A06D\x1eyellow -SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline -SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan -SETUVAR fish_pager_color_selected_background:\x2dr +SETUVAR fish_pager_color_description:9D9D9D +SETUVAR fish_pager_color_prefix:569CD6\x1e\x2d\x2dbold\x1e\x2d\x2dunderline +SETUVAR fish_pager_color_progress:E5E5E5\x1e\x2d\x2dbackground\x3d264F78 +SETUVAR fish_pager_color_selected_background:\x2d\x2dbackground\x3d264F78 SETUVAR fish_user_paths:/home/n0x/\x2ecargo/bin\x1e/home/n0x/\x2elocal/bin diff --git a/fish/.config/fish/functions/fish_prompt.fish b/fish/.config/fish/functions/fish_prompt.fish index 526d740..5b934dd 100644 --- a/fish/.config/fish/functions/fish_prompt.fish +++ b/fish/.config/fish/functions/fish_prompt.fish @@ -1,20 +1,19 @@ set fish_prompt_pwd_dir_length 0 set __fish_git_prompt_show_informative_status 1 -# Fish command and parameter colors -set fish_color_command green -set fish_color_param $fish_color_normal +# Command and parameter colors come from fish_variables (Cursor Dark) # Git prompt set __fish_git_prompt_showdirtystate 'yes' set __fish_git_prompt_showupstream 'yes' -set __fish_git_prompt_color_branch brown -set __fish_git_prompt_color_dirtystate FCBC47 -set __fish_git_prompt_color_stagedstate yellow -set __fish_git_prompt_color_upstream cyan -set __fish_git_prompt_color_cleanstate green -set __fish_git_prompt_color_invalidstate red +# Colors mirror Cursor's git decorations +set __fish_git_prompt_color_branch 569CD6 +set __fish_git_prompt_color_dirtystate E2C08D +set __fish_git_prompt_color_stagedstate 73C991 +set __fish_git_prompt_color_upstream 4EC9B0 +set __fish_git_prompt_color_cleanstate 73C991 +set __fish_git_prompt_color_invalidstate E4676B # Git Characters set __fish_git_prompt_char_dirtystate '*' @@ -41,9 +40,9 @@ end function _prompt_color_for_status if test $argv[1] -eq 0 - echo magenta + echo C586C0 else - echo red + echo F14C4C end end @@ -51,7 +50,7 @@ function fish_prompt set -l last_status $status # username and hostname - _print_in_color "┏["$USER"@"(prompt_hostname)"]" blue + _print_in_color "┏["$USER"@"(prompt_hostname)"]" 569CD6 # current working dir _print_in_color " "(prompt_pwd) $fish_color_cwd @@ -59,10 +58,10 @@ function fish_prompt __fish_git_prompt " (%s)" # beginning of new line - _print_in_color "\n┗" blue + _print_in_color "\n┗" 569CD6 # time information - _print_in_color " "(date "+%H:%M:%S") green + _print_in_color " "(date "+%H:%M:%S") 73C991 # little error that indicates the status of the previous command _print_in_color " ❯ " (_prompt_color_for_status $last_status) diff --git a/git/.gitconfig b/git/.gitconfig index de3a117..8bd478b 100644 --- a/git/.gitconfig +++ b/git/.gitconfig @@ -48,3 +48,5 @@ ll = !git log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(auto)%d%C(reset)' --all s = status unstage = reset HEAD -- +[advice] + addIgnoredFile = false diff --git a/gtktheme/.config/gtk-3.0/settings.ini b/gtktheme/.config/gtk-3.0/settings.ini index 8f7f85d..cca6ce5 100644 --- a/gtktheme/.config/gtk-3.0/settings.ini +++ b/gtktheme/.config/gtk-3.0/settings.ini @@ -1,6 +1,6 @@ [Settings] -gtk-theme-name=Everforest-Teal-Dark -gtk-icon-theme-name=Everforest-Light +gtk-theme-name=Orchis-Dark-Compact +gtk-icon-theme-name=Papirus-Dark gtk-font-name=Noto Sans 11 gtk-cursor-theme-name=default gtk-cursor-theme-size=24 diff --git a/gtktheme/.config/gtk-4.0/settings.ini b/gtktheme/.config/gtk-4.0/settings.ini index 1d0c83f..eb36bc3 100644 --- a/gtktheme/.config/gtk-4.0/settings.ini +++ b/gtktheme/.config/gtk-4.0/settings.ini @@ -1,6 +1,6 @@ [Settings] -gtk-theme-name=Everforest-Teal-Dark -gtk-icon-theme-name=Everforest-Light +gtk-theme-name=Orchis-Dark-Compact +gtk-icon-theme-name=Papirus-Dark gtk-font-name=Noto Sans 11 gtk-cursor-theme-name=default gtk-cursor-theme-size=24 diff --git a/gtktheme/.gtkrc-2.0 b/gtktheme/.gtkrc-2.0 index 8dddf1e..c5a5e3a 100644 --- a/gtktheme/.gtkrc-2.0 +++ b/gtktheme/.gtkrc-2.0 @@ -2,8 +2,8 @@ # Any customization should be done in ~/.gtkrc-2.0.mine instead. include "/home/n0x/.gtkrc-2.0.mine" -gtk-theme-name="Everforest-Teal-Dark" -gtk-icon-theme-name="Everforest-Light" +gtk-theme-name="Orchis-Dark-Compact" +gtk-icon-theme-name="Papirus-Dark" gtk-font-name="Noto Sans 11" gtk-cursor-theme-name="default" gtk-cursor-theme-size=24 diff --git a/hypr/.config/hypr/hyprconf/base.lua b/hypr/.config/hypr/hyprconf/base.lua index c983b1c..94007d0 100644 --- a/hypr/.config/hypr/hyprconf/base.lua +++ b/hypr/.config/hypr/hyprconf/base.lua @@ -7,8 +7,9 @@ hl.config({ gaps_out = 10, border_size = 2, col = { - active_border = { colors = { "rgba(7fbbb3ee)", "rgba(a7c080ee)" }, angle = 45 }, - inactive_border = "rgba(384b55aa)", + -- Cursor Dark: accent blue gradient, neutral dark inactive + active_border = { colors = { "rgba(2472c8ee)", "rgba(3b8eeaee)" }, angle = 45 }, + inactive_border = "rgba(2b2b2baa)", }, resize_on_border = false, allow_tearing = false, diff --git a/hypr/.config/hypr/hyprlock.conf b/hypr/.config/hypr/hyprlock.conf index dacc519..e7bcc21 100644 --- a/hypr/.config/hypr/hyprlock.conf +++ b/hypr/.config/hypr/hyprlock.conf @@ -1,7 +1,7 @@ background { monitor = path = $HOME/.config/hypr/wp.png - color = rgba(59,66,82,1) + color = rgba(24,24,24,1) # all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations blur_size = 5 @@ -20,9 +20,9 @@ input-field { dots_size = 0.2 # Scale of input-field height, 0.2 - 0.8 dots_spacing = 1.00 # Scale of dots' absolute size, 0.0 - 1.0 dots_center = true - outer_color = rgba(59,66,82,1) - inner_color = rgba(59,66,82,1) - font_color = rgba(235,203,139,1) + outer_color = rgba(36,114,200,1) + inner_color = rgba(43,43,43,1) + font_color = rgba(204,204,204,1) fade_on_empty = true placeholder_text = Password... # Text rendered in the input box when it's empty. hide_input = false @@ -56,7 +56,7 @@ label { label { monitor = text = cmd[update:1000] echo " $(date +"%d %b") " - color =rgb(163,190,140) + color =rgb(59,142,234) font_size = 16 font_family = HackJBMLigatured-Regular 10 position = 0, -160 @@ -66,7 +66,7 @@ label { label { monitor = text = cmd[update:1000] echo " $(date +"%A") " - color =rgb(163,190,140) + color =rgb(59,142,234) font_size = 16 font_family = HackJBMLigatured-Regular 10 position = 0, -180 diff --git a/hypr/.config/hypr/wp.png b/hypr/.config/hypr/wp.png index 0870472..bbbdde1 100644 Binary files a/hypr/.config/hypr/wp.png and b/hypr/.config/hypr/wp.png differ diff --git a/kitty/.config/kitty/kitty.conf b/kitty/.config/kitty/kitty.conf index 3a31235..6b14927 100644 --- a/kitty/.config/kitty/kitty.conf +++ b/kitty/.config/kitty/kitty.conf @@ -13,64 +13,64 @@ symbol_map U+e000-U+e00a,U+ea60-U+ebeb,U+e0a0-U+e0c8,U+e0ca,U+e0cc-U+e0d7,U+e200 # Transparency background_opacity 0.85 -foreground #d3c6aa -background #2b3339 -selection_foreground #9da9a0 -selection_background #503946 +foreground #cccccc +background #181818 +selection_foreground none +selection_background #264f78 -cursor #d3c6aa -cursor_text_color #323c41 +cursor #aeafad +cursor_text_color #181818 -url_color #7fbbb3 +url_color #3b8eea -active_border_color #a7c080 -inactive_border_color #53605c -bell_border_color #e69875 +active_border_color #2472c8 +inactive_border_color #2b2b2b +bell_border_color #e5e510 visual_bell_color none wayland_titlebar_color system macos_titlebar_color system -active_tab_background #2b3339 -active_tab_foreground #d3c6aa -inactive_tab_background #3a454a -inactive_tab_foreground #9da9a0 -tab_bar_background #323c41 +active_tab_background #1f1f1f +active_tab_foreground #ffffff +inactive_tab_background #181818 +inactive_tab_foreground #9d9d9d +tab_bar_background #181818 tab_bar_margin_color none -# Set up term-colors (Nord Theme) +# Set up term-colors (Cursor Dark) #: black -color0 #374247 -color8 #404c51 +color0 #000000 +color8 #666666 #: red -color1 #e67e80 -color9 #e67e80 +color1 #cd3131 +color9 #f14c4c #: green -color2 #a7c080 -color10 #a7c080 +color2 #0dbc79 +color10 #23d18b #: yellow -color3 #dbbc7f -color11 #dbbc7f +color3 #e5e510 +color11 #f5f543 #: blue -color4 #7fbbb3 -color12 #7fbbb3 +color4 #2472c8 +color12 #3b8eea #: magenta -color5 #d699b6 -color13 #d699b6 +color5 #bc3fbc +color13 #d670d6 #: cyan -color6 #83c092 -color14 #83c092 +color6 #11a8cd +color14 #29b8db #: white -color7 #859289 -color15 #9da9a0 +color7 #e5e5e5 +color15 #e5e5e5 # The cursor shape can be one of (block, beam, underline) @@ -89,13 +89,6 @@ window_border_width 0 window_margin_width 20 -# The color for the border of the active window -active_border_color #ffffff - -# The color for the border of inactive windows -inactive_border_color #cccccc - - # Manage font size map ctrl+shift+up increase_font_size map ctrl+shift+down decrease_font_size diff --git a/nvim/.config/nvim/lazy-lock.json b/nvim/.config/nvim/lazy-lock.json index 7da2ddb..3beecd9 100644 --- a/nvim/.config/nvim/lazy-lock.json +++ b/nvim/.config/nvim/lazy-lock.json @@ -7,16 +7,15 @@ "cmp-path": { "branch": "main", "commit": "c642487086dbd9a93160e1679a1327be111cbc25" }, "cmp-vsnip": { "branch": "main", "commit": "989a8a73c44e926199bfd05fa7a516d51f2d2752" }, "dashboard-nvim": { "branch": "master", "commit": "f787e3462c2ee2b6117b17c1aa4ddf66cb6f57fe" }, - "everforest-nvim": { "branch": "main", "commit": "d235ca0aa6a29546e661a020e2618612acbbffbe" }, - "gitsigns.nvim": { "branch": "main", "commit": "dd3f588bacbeb041be6facf1742e42097f62165d" }, + "gitsigns.nvim": { "branch": "main", "commit": "31d6fb2d618bca1482b9f274751ead5f03461408" }, "lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" }, - "lualine.nvim": { "branch": "master", "commit": "131a558e13f9f28b15cd235557150ccb23f89286" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "7b01e2974a47d489bb92f47a41e4c0088ea8f86e" }, - "mason.nvim": { "branch": "main", "commit": "8e921c2b68571e978db5d4d3fef9c9a7f8755473" }, - "nvim-cmp": { "branch": "main", "commit": "a1d504892f2bc56c2e79b65c6faded2fd21f3eca" }, - "nvim-tree.lua": { "branch": "master", "commit": "07f541fcaa4a5ae019598240362449ab7e9812b3" }, - "nvim-treesitter": { "branch": "main", "commit": "4916d6592ede8c07973490d9322f187e07dfefac" }, - "nvim-web-devicons": { "branch": "master", "commit": "2795c26c916bb3c57dde308b82be51971fa92747" }, + "lualine.nvim": { "branch": "master", "commit": "221ce6b2d999187044529f49da6554a92f740a96" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "67029ccdac1ef8941e13b826417bc0ffac24cc86" }, + "mason.nvim": { "branch": "main", "commit": "2a6940af80375532e5e9e7c1f2fc6319a1b7a69d" }, + "nvim-cmp": { "branch": "main", "commit": "2ffe79f1f021def8dd1fcd81deb16f1bb0d989f3" }, + "nvim-tree.lua": { "branch": "master", "commit": "b2aadda94b107480c48e548d6db51c6840b7b33c" }, + "nvim-treesitter": { "branch": "main", "commit": "7b6cc8949f9999c5ed91436cbe24aa5f99c42025" }, + "nvim-web-devicons": { "branch": "master", "commit": "2ae6958df7ced50baac5035cec0c15799eedfbf7" }, "plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" }, "presence.nvim": { "branch": "main", "commit": "87c857a56b7703f976d3a5ef15967d80508df6e6" }, "rustaceanvim": { "branch": "master", "commit": "e9c5aaba16fead831379d5f44617547a90b913c7" }, @@ -24,7 +23,8 @@ "vim-bbye": { "branch": "master", "commit": "25ef93ac5a87526111f43e5110675032dbcacf56" }, "vim-floaterm": { "branch": "master", "commit": "bb4ba7952e906408e1f83b215f55ffe57efcade6" }, "vim-vsnip": { "branch": "master", "commit": "9bcfabea653abdcdac584283b5097c3f8760abaa" }, - "vimtex": { "branch": "master", "commit": "182ad387e3f3107699483606c9a2b6648f8437b2" }, + "vimtex": { "branch": "master", "commit": "154eca8f68a5ad54eb12308bb378e88bdd0dfb3e" }, "vimwiki": { "branch": "dev", "commit": "a54a3002e229c4b43d69ced170ff77663a5b2c40" }, + "vscode.nvim": { "branch": "main", "commit": "aa1102a7e15195c9cca22730b09224a7f7745ba8" }, "which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" } } diff --git a/nvim/.config/nvim/lua/lazy-setup.lua b/nvim/.config/nvim/lua/lazy-setup.lua index c888190..98ec3b3 100644 --- a/nvim/.config/nvim/lua/lazy-setup.lua +++ b/nvim/.config/nvim/lua/lazy-setup.lua @@ -22,7 +22,7 @@ require("lazy").setup({ { import = "plugins" }, }, install = { - colorscheme = { "everforest" }, + colorscheme = { "vscode" }, }, checker = { enabled = true, diff --git a/nvim/.config/nvim/lua/plugins/colorscheme.lua b/nvim/.config/nvim/lua/plugins/colorscheme.lua index 47d88b0..1810f45 100644 --- a/nvim/.config/nvim/lua/plugins/colorscheme.lua +++ b/nvim/.config/nvim/lua/plugins/colorscheme.lua @@ -1,10 +1,44 @@ +-- Cursor Dark. +-- +-- Cursor's default theme is VS Code Dark Modern lineage, so vscode.nvim already +-- ships the exact token colors (#569CD6 keywords, #CE9178 strings, #6A9955 +-- comments, #4EC9B0 types). Only the chrome and the :terminal palette need +-- pinning so Neovim matches kitty/tmux/fish. return { { - "neanias/everforest-nvim", + "Mofiqul/vscode.nvim", + lazy = false, priority = 1000, config = function() - require("everforest").setup({}) - vim.cmd([[colorscheme everforest]]) + vim.o.background = "dark" + + require("vscode").setup({ + -- The editor background is pinned to kitty's #181818 instead of Cursor's + -- #1F1F1F: kitty only leaves a cell transparent when it uses the default + -- background, so matching it keeps background_opacity working in nvim. + color_overrides = { + vscBack = "#181818", + vscTabCurrent = "#1F1F1F", + vscTabOther = "#181818", + vscTabOutside = "#181818", + vscLeftDark = "#181818", + }, + }) + + vim.cmd.colorscheme("vscode") + + -- :terminal gets the same 16 colors as kitty and tmux. vscode.nvim would + -- otherwise map them onto the syntax palette, which makes green the + -- comment green (#6A9955) and looks nothing like the shell. + local palette = { + [0] = "#000000", "#cd3131", "#0dbc79", "#e5e510", + "#2472c8", "#bc3fbc", "#11a8cd", "#e5e5e5", + "#666666", "#f14c4c", "#23d18b", "#f5f543", + "#3b8eea", "#d670d6", "#29b8db", "#e5e5e5", + } + for i, color in pairs(palette) do + vim.g["terminal_color_" .. i] = color + end end, }, } diff --git a/nvim/.config/nvim/lua/plugins/treesitter.lua b/nvim/.config/nvim/lua/plugins/treesitter.lua index dd2cb45..a83d2de 100644 --- a/nvim/.config/nvim/lua/plugins/treesitter.lua +++ b/nvim/.config/nvim/lua/plugins/treesitter.lua @@ -1,17 +1,31 @@ return { { "nvim-treesitter/nvim-treesitter", + branch = "main", + lazy = false, build = ":TSUpdate", config = function() - require("nvim-treesitter").setup { - ensure_installed = { "bash", "c", "cpp", "javascript", "json", "python", "css", "rust", "lua", "markdown", "markdown_inline" }, - auto_install = true, - highlight = { - enable = true, - additional_vim_regex_highlighting = false, - }, - indent = { enable = true }, + local ts = require("nvim-treesitter") + ts.setup() + + local ensure = { + "bash", "c", "cpp", "javascript", "json", "python", + "css", "rust", "lua", "markdown", "markdown_inline", + "php", "html", "terraform", } + ts.install(ensure) + + vim.api.nvim_create_autocmd("FileType", { + pattern = { + "bash", "sh", "c", "cpp", "javascript", "json", "python", + "css", "rust", "lua", "markdown", + "php", "html", "terraform", + }, + callback = function() + pcall(vim.treesitter.start) + vim.bo.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()" + end, + }) end, }, } diff --git a/nvim/.config/nvim/lua/plugins/ui.lua b/nvim/.config/nvim/lua/plugins/ui.lua index ef4743a..4165bf8 100644 --- a/nvim/.config/nvim/lua/plugins/ui.lua +++ b/nvim/.config/nvim/lua/plugins/ui.lua @@ -111,11 +111,37 @@ return { -- Status line { "nvim-lualine/lualine.nvim", - dependencies = { "nvim-tree/nvim-web-devicons", "neanias/everforest-nvim" }, + dependencies = { "nvim-tree/nvim-web-devicons", "Mofiqul/vscode.nvim" }, config = function() + -- Cursor Dark, deliberately mirroring the tmux status bar: same #181818 + -- bar, same #2b2b2b raised segments, mode colour from the shared palette. + local bar, raised, text, dim = "#181818", "#2b2b2b", "#cccccc", "#9d9d9d" + + local function mode(bg, fg) + return { + a = { bg = bg, fg = fg or "#ffffff", gui = "bold" }, + b = { bg = raised, fg = text }, + c = { bg = bar, fg = dim }, + } + end + + local cursor_dark = { + normal = mode("#2472c8"), + insert = mode("#0dbc79"), + visual = mode("#bc3fbc"), + replace = mode("#cd3131"), + -- dark text on yellow; white would be unreadable here + command = mode("#e5e510", "#181818"), + inactive = { + a = { bg = bar, fg = "#666666" }, + b = { bg = bar, fg = "#666666" }, + c = { bg = bar, fg = "#666666" }, + }, + } + require('lualine').setup { options = { - theme = 'everforest', + theme = cursor_dark, component_separators = { left = '', right = '' }, section_separators = { left = '', right = '' }, } diff --git a/nwg/.config/nwg-bar/style.css b/nwg/.config/nwg-bar/style.css index b677ac1..d9bab0c 100644 --- a/nwg/.config/nwg-bar/style.css +++ b/nwg/.config/nwg-bar/style.css @@ -8,12 +8,13 @@ window { } /* Inner bar container, surrounds buttons */ +/* Cursor Dark: #181818 panel, #cccccc outline */ #inner-box { - background-color: rgba (59, 66, 82, 1); + background-color: rgba (24, 24, 24, 1); border-radius: 10px; border-style: solid; border-width: 2px; - border-color: rgba (216, 222, 233, 0.7); + border-color: rgba (204, 204, 204, 0.7); padding: 10px; margin: 10px } @@ -31,5 +32,5 @@ button { } button:hover { - background-color: rgba (216, 222, 233, 0.1) + background-color: rgba (204, 204, 204, 0.1) } diff --git a/nwg/.config/nwg-look/config b/nwg/.config/nwg-look/config index 3f49ae5..50cd4cf 100644 --- a/nwg/.config/nwg-look/config +++ b/nwg/.config/nwg-look/config @@ -3,5 +3,8 @@ "export-gtkrc-20": true, "export-index-theme": true, "export-xsettingsd": true, - "export-gtk4-symlinks": true + "export-gtk4-symlinks": true, + "flatpak-export-gtk-theme-override": false, + "flatpak-export-icon-theme-override": false, + "flatpak-install-current-gtk-theme": false } \ No newline at end of file diff --git a/rofi/.config/rofi/config.rasi b/rofi/.config/rofi/config.rasi index 0a25808..93539c1 100644 --- a/rofi/.config/rofi/config.rasi +++ b/rofi/.config/rofi/config.rasi @@ -6,20 +6,21 @@ configuration { modi: "combi,run,drun"; show-icons: true; - icon-theme: "Nordzy-green-dark"; + icon-theme: "Papirus-Dark"; } @theme "/dev/null" +/* Cursor Dark */ * { - bgdark: #272E33; - bgalt: #3C4841; - bggreen: #56635F; - fg0: #A7C080; - fgalt: #4f5b58; + bgdark: #181818; + bgalt: #2b2b2b; + bgraised: #313131; + fg0: #cccccc; + fgalt: #6e6e6e; - accent-color: #A7C080; - urgent-color: #DBBC7F; + accent-color: #2472c8; + urgent-color: #e2c08d; font: "Roboto 12"; @@ -32,7 +33,7 @@ configuration { } element selected { - text-color: @bgalt; + text-color: #ffffff; } window { @@ -49,7 +50,7 @@ mainbox { inputbar { background-color: @bgalt; - border-color: @bggreen; + border-color: @bgraised; border: 2px; border-radius: 8px; @@ -60,7 +61,7 @@ inputbar { } prompt { - text-color: @fg0; + text-color: @accent-color; } entry { @@ -71,8 +72,8 @@ entry { message { margin: 12px 0 0; border-radius: 8px; - border-color: @bggreen; - background-color: @bggreen; + border-color: @bgraised; + background-color: @bgraised; } textbox { @@ -96,15 +97,15 @@ element { } element normal active { - text-color: @fg0; + text-color: @accent-color; } element alternate active { - text-color: @fg0; + text-color: @accent-color; } element selected normal, element selected active { - background-color: @fg0; + background-color: @accent-color; } element-icon { diff --git a/tmux/.tmux.conf b/tmux/.tmux.conf index 4e9871c..64bdee9 100644 --- a/tmux/.tmux.conf +++ b/tmux/.tmux.conf @@ -22,6 +22,48 @@ set -g mouse on set-option -g status-position bottom set-option -g renumber-windows on +# ========================== +# === Cursor Dark theme === +# ========================== +# Powerline status bar, ported from nordtheme/tmux with Cursor Dark colors. +# Requires a patched (Nerd) font for the U+E0B0-E0B3 separators. +# +# bar bg #181818 raised segment #2b2b2b text #cccccc +# session #2472c8 current window / host #11a8cd + +set -g status on +set -g status-interval 1 +set -g status-justify left +set -g status-style "bg=#181818,fg=#cccccc" +set -g status-left-length 40 +set -g status-right-length 80 + +#+--- Bars ---+ +set -g status-left "#[fg=#ffffff,bg=#2472c8,bold] #S #[fg=#2472c8,bg=#181818,nobold,noitalics,nounderscore]" +set -g status-right "#[fg=#2b2b2b,bg=#181818,nobold,noitalics,nounderscore]#[fg=#cccccc,bg=#2b2b2b] %Y-%m-%d #[fg=#cccccc,bg=#2b2b2b,nobold,noitalics,nounderscore]#[fg=#cccccc,bg=#2b2b2b] %H:%M #[fg=#11a8cd,bg=#2b2b2b,nobold,noitalics,nounderscore]#[fg=#181818,bg=#11a8cd,bold] #H " + +#+--- Windows ---+ +set -g window-status-format "#[fg=#181818,bg=#2b2b2b,nobold,noitalics,nounderscore] #[fg=#cccccc,bg=#2b2b2b]#I #[fg=#cccccc,bg=#2b2b2b,nobold,noitalics,nounderscore] #[fg=#cccccc,bg=#2b2b2b]#W #F #[fg=#2b2b2b,bg=#181818,nobold,noitalics,nounderscore]" +set -g window-status-current-format "#[fg=#181818,bg=#11a8cd,nobold,noitalics,nounderscore] #[fg=#181818,bg=#11a8cd]#I #[fg=#181818,bg=#11a8cd,nobold,noitalics,nounderscore] #[fg=#181818,bg=#11a8cd]#W #F #[fg=#11a8cd,bg=#181818,nobold,noitalics,nounderscore]" +set -g window-status-separator "" +# Let the formats above own the colors; activity/bell still show via the #F flag +setw -g window-status-activity-style "none" +setw -g window-status-bell-style "none" + +#+--- Panes ---+ +set -g pane-border-style "bg=default,fg=#2b2b2b" +set -g pane-active-border-style "bg=default,fg=#2472c8" +set -g display-panes-colour "#666666" +set -g display-panes-active-colour "#2472c8" + +#+--- Messages ---+ +set -g message-style "bg=#2b2b2b,fg=#11a8cd" +set -g message-command-style "bg=#2b2b2b,fg=#11a8cd" +setw -g mode-style "bg=#264f78,fg=#e5e5e5" + +#+--- Clock ---+ +setw -g clock-mode-colour "#11a8cd" + # ================================================ # === Copy mode, scroll and clipboard === # ================================================ @@ -92,12 +134,29 @@ bind -T copy-mode-vi MouseDown1Pane select-pane \;\ # tmux show-options -g -s set-clipboard # set-clipboard on|external -# List of plugins -set -g @plugin 'tmux-plugins/tpm' +# ========================== +# === Plugins === +# ========================== +# Nothing under ~/.tmux/plugins is tracked in git - tpm owns that directory and +# clones everything listed below itself. Do not commit the plugin folders: they +# would be checked out as empty dirs, and tpm would then skip installing them. +set -g @plugin 'tmux-plugins/tpm' set -g @plugin 'tmux-plugins/tmux-sensible' set -g @plugin 'tmux-plugins/tmux-yank' -set -g @plugin "arcticicestudio/nord-tmux" + +# tpm and its installer both resolve the plugin dir from this tmux environment +# variable, and only the tpm script itself sets it. Pin it up-front so the +# installer below already works on the very first run. +run 'tmux set-environment -g TMUX_PLUGIN_MANAGER_PATH "$HOME/.tmux/plugins/"' + +# Bootstrap tpm itself on a machine that has never run it +if "test ! -d ~/.tmux/plugins/tpm" \ + "run 'git clone -q --single-branch https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm'" + +# Clone any declared plugin that is missing. Deliberately in the foreground, so +# plugins installed here are already on disk when tpm sources them below. +run '~/.tmux/plugins/tpm/bin/install_plugins' # Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf) run '~/.tmux/plugins/tpm/tpm' diff --git a/tmux/.tmux/plugins/nord-tmux b/tmux/.tmux/plugins/nord-tmux deleted file mode 160000 index f7b6da0..0000000 --- a/tmux/.tmux/plugins/nord-tmux +++ /dev/null @@ -1 +0,0 @@ -Subproject commit f7b6da07ab55fe32ee5f7d62da56d8e5ac691a92 diff --git a/tmux/.tmux/plugins/tmux-sensible b/tmux/.tmux/plugins/tmux-sensible deleted file mode 160000 index 25cb91f..0000000 --- a/tmux/.tmux/plugins/tmux-sensible +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 25cb91f42d020f675bb0a2ce3fbd3a5d96119efa diff --git a/tmux/.tmux/plugins/tmux-yank b/tmux/.tmux/plugins/tmux-yank deleted file mode 160000 index acfd36e..0000000 --- a/tmux/.tmux/plugins/tmux-yank +++ /dev/null @@ -1 +0,0 @@ -Subproject commit acfd36e4fcba99f8310a7dfb432111c242fe7392 diff --git a/tmux/.tmux/plugins/tpm b/tmux/.tmux/plugins/tpm deleted file mode 160000 index 99469c4..0000000 --- a/tmux/.tmux/plugins/tpm +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 99469c4a9b1ccf77fade25842dc7bafbc8ce9946 diff --git a/waybar/.config/waybar/config b/waybar/.config/waybar/config index 10ad4d6..34d717e 100644 --- a/waybar/.config/waybar/config +++ b/waybar/.config/waybar/config @@ -10,36 +10,36 @@ // Choose the order of the modules "modules-left": ["hyprland/workspaces","hyprland/window"], "modules-center": ["clock"], - "modules-right": ["pulseaudio", "backlight", "network", "battery", "cpu", "memory", "tray"], + "modules-right": ["pulseaudio", "network", "cpu", "memory", "tray"], // Modules configuration -// "hyprland/workspaces": { -// "disable-scroll": true, -// //"all-outputs": true, -// "on-click": "activate", -// "format": "{icon}", -// "format-icons": { -// "empty": "", -// //"default": "", -// "default": "", -// "active": "", -// } -// }, - "hyprland/workspaces": { - "format": "{name}", - "persistent_workspaces": { - "1": [], - "2": [], - "3": [], - "4": [], - "5": [] - }, - "all-outputs": true, - "active-only": false, - "sort-by-number": true + "disable-scroll": true, + //"all-outputs": true, + "on-click": "activate", + "format": "{icon}", + "format-icons": { + "empty": "", + //"default": "", + "default": "", + "active": "", + } }, + +// "hyprland/workspaces": { +// "format": "{name}", +// "persistent_workspaces": { +// "1": [], +// "2": [], +// "3": [], +// "4": [], +// "5": [] +// }, +// "all-outputs": true, +// "active-only": false, +// "sort-by-number": true +// }, "keyboard-state": { "numlock": false, "capslock": false, @@ -93,7 +93,6 @@ "bat": "BAT2" }, "network": { - "interface": "wlo1", // (Optional) To force the use of this interface "format-wifi": "{essid} ", "format-ethernet": "{ipaddr}/{cidr} ", "tooltip-format": "{ifname} via {gwaddr} ", @@ -124,13 +123,13 @@ "tooltip": false, "format": "{} {icon}", "format-icons": { - "notification": " ", + "notification": " ", "none": "", - "dnd-notification": " ", + "dnd-notification": " ", "dnd-none": "", - "inhibited-notification": " ", + "inhibited-notification": " ", "inhibited-none": "", - "dnd-inhibited-notification": " ", + "dnd-inhibited-notification": " ", "dnd-inhibited-none": "" }, "return-type": "json", @@ -149,6 +148,13 @@ }, "exec-if": "which waybar-updates", "exec": "waybar-updates --interval-seconds 5 --network-interval-seconds 300" + }, + "idle_inhibitor": { + "format": "{icon}", + "format-icons": { + "activated": "", + "deactivated": "" + } } } diff --git a/waybar/.config/waybar/style.css b/waybar/.config/waybar/style.css index d17fd3f..2b8dd71 100644 --- a/waybar/.config/waybar/style.css +++ b/waybar/.config/waybar/style.css @@ -1,11 +1,12 @@ -@define-color bg_dim #1e2326; -@define-color bg0 #272e33; -@define-color bg2 #374145; -@define-color fg #D3C6AA; -@define-color red #E67E80; -@define-color blue #7fbbb3; -@define-color orange #e69875; -@define-color bg4 #495156; +/* Cursor Dark */ +@define-color bg_dim #141414; +@define-color bg0 #181818; +@define-color bg2 #2b2b2b; +@define-color fg #cccccc; +@define-color red #f14c4c; +@define-color blue #3b8eea; +@define-color orange #e2c08d; +@define-color bg4 #2472c8; * { transition: none; @@ -37,6 +38,8 @@ #workspaces button.active { border-radius: 10px; background-color: @bg4; + /* @fg on the accent blue is too low-contrast to read */ + color: #ffffff; } #workspaces button.urgent { diff --git a/zathura/.config/zathura/zathurarc b/zathura/.config/zathura/zathurarc index 452e116..24ce927 100644 --- a/zathura/.config/zathura/zathurarc +++ b/zathura/.config/zathura/zathurarc @@ -13,3 +13,53 @@ map J zoom out map i recolor map p print map g goto top + +# ========================== +# === Cursor Dark === +# ========================== +# bg #181818 | raised #2b2b2b | popup #202020 | text #cccccc +# accent #2472c8 | selection #264f78 + +# Chrome +set default-bg "#181818" +set default-fg "#cccccc" +set statusbar-bg "#2b2b2b" +set statusbar-fg "#cccccc" +set inputbar-bg "#181818" +set inputbar-fg "#cccccc" +set render-loading-bg "#181818" +set render-loading-fg "#9d9d9d" + +# Notifications. Error/warning backgrounds are VS Code's input-validation +# colors, so the error tint matches dunst's critical notifications. +set notification-bg "#2b2b2b" +set notification-fg "#cccccc" +set notification-error-bg "#5a1d1d" +set notification-error-fg "#ffffff" +set notification-warning-bg "#352a05" +set notification-warning-fg "#ffffff" + +# Completion and index reuse the popup/selection colors from nvim +set completion-bg "#202020" +set completion-fg "#cccccc" +set completion-group-bg "#181818" +set completion-group-fg "#9d9d9d" +set completion-highlight-bg "#264f78" +set completion-highlight-fg "#ffffff" +set index-bg "#181818" +set index-fg "#cccccc" +set index-active-bg "#264f78" +set index-active-fg "#ffffff" + +# Search: every match subtle, the current one in the accent blue +set highlight-color "#264f78" +set highlight-active-color "#2472c8" + +# Render the document itself dark; 'i' (mapped above) toggles it back off. +# Despite the names, lightcolor is what LIGHT areas become (the page +# background) and darkcolor is what DARK areas become (the text). +set recolor true +set recolor-lightcolor "#181818" +set recolor-darkcolor "#cccccc" +# Keep colored figures and links recognisable instead of crushing them to mono +set recolor-keephue true