dotfiles
My PC Dotfiles & Websitegit clone https://github.com/maydayv7/dotfiles
commit 3db25efda737010703942decf1efb3ad1b9d9af3 parent e76d691cd4d7a05bf760cb05eca797016c5f8fc3 Author: maydayv7 <maydayv7@gmail.com> Date: Thu, 1 May 2025 12:45:21 +0530 feat: Many changes - Drop ULauncher (`gui.launcher`), use `hyprshell` for Hyprland - Hyprland: New animations, groupbar changes, `pyprland` zoom and scratchpads - Add `apps.games`
Diffstat:
68 files changed, 513 insertions(+), 1039 deletions(-)
diff --git a/README.md b/README.md @@ -48,9 +48,6 @@ This [repository](https://github.com/maydayv7/dotfiles) contains the configurati - [VS Code Elementary Theme](https://github.com/sixpounder/vscode-elementary-theme): Integrates Visual Studio Code with Pantheon Desktop - Logseg [Nord Theme](https://github.com/Bad3r/Logseq-Nord-Theme): Logseq in an arctic, north-bluish color palette - Logseq [Bonofix Theme][https://github.com/Sansui233/logseq-bonofix-theme]: A clean Logseq theme with focus on long-time writing experience -- ULauncher [Adwaita Theme](https://github.com/gabrbrand/adwaita-dark-ulauncher): ULauncher Theme based on GNOME Desktop's Adwaita Dark Theme -- ULauncher [Arc Theme](https://github.com/tjquillan/Arc-Dark-ULauncher): An Arc Dark Theme for ULauncher -- ULauncher [Elementary Theme](https://github.com/heidefinnischen/ULauncher-elementary): ULauncher Themes for Elementary OS </details> @@ -511,11 +508,16 @@ _Thanks a lot! ;)_ - Remove package `channels` - Update Hyprland to v0.48.0 - - Use `hyprswitch` to switch between windows + - Use `hyprshell` to switch between windows - Use `pcmanfm-qt` to render desktop icons + - Use animations from [end4](https://github.com/end-4/dots-hyprland) + - New `pyprland` scratchpads - Update Shell Configuration - Use `fastfetch` - Use [`starship`](https://starship.rs/) shell prompt theme +- Improve QT Theming +- Add `apps.games` +- Drop ULauncher Configuration (`gui.launcher`) ### v25 @@ -813,7 +815,6 @@ _Thanks a lot! ;)_ - Online accounts have to be manually signed into - [Wine](./packages/wine) Applications have to be manually updated -- ULauncher Plugins have to be manually updated - Logseq Plugins have to be manually installed - GNOME [Pano](https://github.com/oae/gnome-shell-pano) has to be manually updated until upstream stabilises - Cannot automatically hibernate on NVIDIA due to upstream [issue](https://forums.developer.nvidia.com/t/systemds-suspend-then-hibernate-not-working-in-nvidia-optimus-laptop/213690) diff --git a/devices/valkyrie/default.nix b/devices/valkyrie/default.nix @@ -30,6 +30,7 @@ apps = { wine.utilities = true; + games = ["osu"]; list = [ "discord" "firefox" diff --git a/files/flake.nix b/files/flake.nix @@ -21,9 +21,6 @@ cache = "maydayv7-dotfiles"; flake = "github:maydayv7/dotfiles"; repo = "https://github.com/maydayv7/dotfiles"; - - # Set PATH for Services - systemd = ''export PATH="''${XDG_BIN_HOME}:$HOME/.nix-profile/bin:/etc/profiles/per-user/$USER/bin:/nix/var/nix/profiles/default/bin:/run/current-system/sw/bin"''; }; # Interactive Nix Shell @@ -90,6 +87,12 @@ # Greeter Configuration greeter = readFile ./hyprland/greeter.conf; + + # Launcher + hyprshell = { + config = readFile ./hyprland/hyprshell/config.ron; + style = readFile ./hyprland/hyprshell/style.css; + }; } // map.files { directory = ./hyprland/theme; @@ -152,18 +155,6 @@ # Document Templates templates = ./templates; - # ULauncher Application Launcher - ulauncher = - map.files { - directory = ./ulauncher/settings; - apply = readFile; - extension = ".json"; - } - // { - themes = ./ulauncher/themes; - extensions = ./ulauncher/extensions; - }; - # Vesktop Discord Chat vesktop = map.files { directory = ./vesktop; diff --git a/files/hyprland/hyprshell/config.ron b/files/hyprland/hyprshell/config.ron @@ -0,0 +1,48 @@ +( + layerrules: false, + launcher: ( + default_terminal: "kitty", + width: 650, + max_items: 10, + plugins: [ + Applications( + run_cache_weeks: 4, + show_execs: true, + ), + Terminal(), + Shell(), + ], + ), + windows: ( + size_factor: 7, + workspaces_per_row: 3, + strip_html_from_workspace_title: true, + overview: ( + open: ( + modifier: super, + key: "tab", + ), + navigate: ( + forward: "tab", + reverse: Mod(shift), + ), + other: ( + hide_filtered: false, + filter_by: [], + ), + ), + switch: ( + open: ( + modifier: alt, + ), + navigate: ( + forward: "tab", + reverse: Mod(shift), + ), + other: ( + hide_filtered: true, + filter_by: [current_workspace], + ), + ), + ), +) diff --git a/files/hyprland/hyprshell/style.css b/files/hyprland/hyprshell/style.css @@ -0,0 +1,91 @@ +:root { + --text-color: #@white; + --bg-color: alpha(#@base00, 0.5); + --bg-color-active: rgba(255, 255, 255, 0.2); + --bg-color-hover: rgba(255, 255, 255, 0.4); + --border-radius: 10px; + --border-color: #@base04; + --border-color-active: #@base05; + --border-style: solid; + --border-style-secondary: dashed; + --launcher-animation-speed: 0.3s; +} + +/* Overview */ + +.monitor { + background: var(--bg-color); + border-color: var(--border-color-active); +} + +.monitor:hover { + background: var(--bg-color); +} + +.workspace { + background: var(--bg-color); + border-color: var(--bg-color); +} + +.workspace.active { + border-color: var(--border-color-active); +} + +.client:hover { + background-color: var(--bg-color-hover); +} + +.client.active { + background: var(--bg-color-active); + border-color: var(--border-color-active); +} + +/* Launcher */ + +.launcher { + padding: 2px; + border: 2px var(--border-style) var(--border-color-active); +} + +.launcher-input { + color: var(--text-color); + margin: 6px; + padding: 4px 12px; +} + +.launcher-results { + font-size: 1.5rem; + margin: 0; +} + +.launcher-item { + color: var(--text-color); + padding-left: 6px; + padding-right: 6px; +} + +.launcher-exec { + font-size: 0.8rem; + color: var(--border-color); + font-family: @monospace; +} + +.launcher-key { + font-size: 0.8em; + font-weight: bold; + font-family: @monospace; +} + +.launcher-plugins { + padding: 2px; +} + +.launcher-plugin { + padding: 4px; +} + +.launcher-plugin-key { + font-size: 0.8em; + font-weight: bold; + font-family: @monospace; +} diff --git a/files/hyprland/kebihelp.json b/files/hyprland/kebihelp.json @@ -147,6 +147,10 @@ "_hidden": false, "keybindings": [ { + "value": "$mod Tab", + "label": "Application Launcher and Overview" + }, + { "value": "$mod ` (4F Swipe Up)", "label": "Show workspace overview" }, @@ -155,10 +159,6 @@ "label": "Cycle [backwards] through open windows on current workspace" }, { - "value": "$mod [SHIFT] Tab", - "label": "Cycle [backwards] through open windows on all workspaces" - }, - { "value": "ALT [SHIFT] `", "label": "Cycle [backwards] through grouped windows" } @@ -225,6 +225,10 @@ "label": "Zoom in/out" }, { + "value": "$mod SHIFT -", + "label": "Zoom out fully" + }, + { "value": "$mod L or Esc", "label": "Lock screen / System Logoff" }, @@ -290,6 +294,10 @@ "label": "Task Manager" }, { + "value": "$mod +", + "label": "Calculator" + }, + { "value": "$mod SHIFT B", "label": "Bluetooth Settings" }, @@ -306,10 +314,6 @@ "label": "Show received notifications in order" }, { - "value": "$mod /", - "label": "Application Launcher" - }, - { "value": "$mod SHIFT Esc", "label": "Inhibit all keybindings" } diff --git a/files/hyprland/pypr.toml b/files/hyprland/pypr.toml @@ -1,21 +1,40 @@ [pyprland] plugins = [ + "magnify", "scratchpads", "toggle_special" ] -[scratchpads.term] +[scratchpads.top] animation = "fromTop" -command = "kitty --class kitty-dropterm" -class = "kitty-dropterm" lazy = true size = "75% 60%" + +[scratchpads.bottom] +animation = "fromBottom" +size = "75% 60%" +margin = 30 +lazy = true + +[scratchpads.calc] +command = "qalculate-gtk" +class = "qalculate-gtk" +use = "top" +unfocus = "hide" + +[scratchpads.term] +command = "kitty --class kitty-dropterm" +class = "kitty-dropterm" +use = "top" unfocus = "hide" [scratchpads.clip] -animation = "fromBottom" +use = "bottom" command = "kitty --class kitty-clip 'clipse'" class = "kitty-clip" -lazy = true -size = "75% 65%" -margin = 30 + +[scratchpads.emoji] +use = "bottom" +command = "smile" +class = "it.mijorus.smile" +unfocus = "hide" diff --git a/files/hyprland/theme/hyprswitch.css b/files/hyprland/theme/hyprswitch.css @@ -1,45 +0,0 @@ -:root { - --bg-color: alpha(#@base00, 0.5); - --bg-color-active: rgba(255, 255, 255, 0.2); - --bg-color-hover: rgba(255, 255, 255, 0.4); - --border-radius: 10px; - --border-color: #@base04; - --border-color-active: #@base05; -} - -.monitor { - background: var(--bg-color); - border: var(--border-size) solid var(--border-color-active); -} - -.index { - color: #@base01; - background: var(--border-color-active); - border: var(--border-size) solid var(--border-color); -} - -.workspace { - background: var(--bg-color); - border: none; -} - -.workspace_active { - border: var(--border-size) solid var(--border-color-active); -} - -.client { - background: transparent; -} - -.client-image { - background: transparent; -} - -.client:hover { - background-color: var(--bg-color-hover); -} - -.client_active { - background: var(--bg-color-active); - border: var(--border-size) solid var(--border-color-active); -} diff --git a/files/hyprland/theme/waybar.css b/files/hyprland/theme/waybar.css @@ -174,6 +174,7 @@ tooltip { #custom-dropdown, #custom-dunst, #custom-logo, +#custom-minimized, #custom-power, #custom-temperature, #custom-weather, diff --git a/files/pantheon/dconf.nix b/files/pantheon/dconf.nix @@ -247,7 +247,6 @@ in { "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/" "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2/" "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom3/" - "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom4/" ]; }; @@ -277,12 +276,6 @@ in { }; "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom3" = { - name = "Launcher"; - binding = "<Super>slash"; - command = "ulauncher-toggle"; - }; - - "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom4" = { name = "Clipboard"; binding = "<Super>v"; command = "gtk-launch com.github.hezral.clips"; diff --git a/files/ulauncher/extensions/com.github.brpaz.ulauncher-currency.db b/files/ulauncher/extensions/com.github.brpaz.ulauncher-currency.db Binary files differ. diff --git a/files/ulauncher/extensions/com.github.dflock.ulauncher-window-switcher.db b/files/ulauncher/extensions/com.github.dflock.ulauncher-window-switcher.db Binary files differ. diff --git a/files/ulauncher/extensions/com.github.fajtak.ulauncher-weather.db b/files/ulauncher/extensions/com.github.fajtak.ulauncher-weather.db Binary files differ. diff --git a/files/ulauncher/extensions/com.github.frdrk.ulauncher-dead-simple-convert.db b/files/ulauncher/extensions/com.github.frdrk.ulauncher-dead-simple-convert.db Binary files differ. diff --git a/files/ulauncher/extensions/com.github.hillaryychan.ulauncher-fzf.db b/files/ulauncher/extensions/com.github.hillaryychan.ulauncher-fzf.db Binary files differ. diff --git a/files/ulauncher/extensions/com.github.iboyperson.ulauncher-system.db b/files/ulauncher/extensions/com.github.iboyperson.ulauncher-system.db Binary files differ. diff --git a/files/ulauncher/extensions/com.github.ikorjefocur.ulauncher-commandrunner.db b/files/ulauncher/extensions/com.github.ikorjefocur.ulauncher-commandrunner.db Binary files differ. diff --git a/files/ulauncher/extensions/com.github.isacikgoz.ukill.db b/files/ulauncher/extensions/com.github.isacikgoz.ukill.db Binary files differ. diff --git a/files/ulauncher/extensions/com.github.melianmiko.ulauncher-nmcli.db b/files/ulauncher/extensions/com.github.melianmiko.ulauncher-nmcli.db Binary files differ. diff --git a/files/ulauncher/extensions/com.github.nastuzzisamy.ulauncher-custom-scripts.db b/files/ulauncher/extensions/com.github.nastuzzisamy.ulauncher-custom-scripts.db Binary files differ. diff --git a/files/ulauncher/extensions/com.github.tevenfeng.ulauncher-dc.db b/files/ulauncher/extensions/com.github.tevenfeng.ulauncher-dc.db Binary files differ. diff --git a/files/ulauncher/extensions/com.github.ulauncher.ulauncher-emoji.db b/files/ulauncher/extensions/com.github.ulauncher.ulauncher-emoji.db Binary files differ. diff --git a/files/ulauncher/extensions/com.github.ulauncher.ulauncher-timer.db b/files/ulauncher/extensions/com.github.ulauncher.ulauncher-timer.db Binary files differ. diff --git a/files/ulauncher/settings/extension.json b/files/ulauncher/settings/extension.json @@ -1,93 +0,0 @@ -{ - "com.github.ulauncher.ulauncher-emoji": { - "id": "com.github.ulauncher.ulauncher-emoji", - "url": "https://github.com/Ulauncher/ulauncher-emoji", - "updated_at": "2024-01-14T19:38:55.565827", - "last_commit": "827cfe5e1d2f89f742f811f981759787b0654fa9", - "last_commit_time": "2023-11-04T18:37:13" - }, - "com.github.iboyperson.ulauncher-system": { - "id": "com.github.iboyperson.ulauncher-system", - "url": "https://github.com/iboyperson/ulauncher-system", - "updated_at": "2024-01-14T19:40:03.269429", - "last_commit": "7dedd992709fa2297735cddf852404144d4da47c", - "last_commit_time": "2023-11-14T16:53:20" - }, - "com.github.ulauncher.ulauncher-timer": { - "id": "com.github.ulauncher.ulauncher-timer", - "url": "https://github.com/ulauncher/ulauncher-timer", - "updated_at": "2024-01-14T19:40:27.342707", - "last_commit": "2d3fe82fe1e38670e6eb8887cd2a4b4d1c2baa79", - "last_commit_time": "2023-03-25T08:07:41" - }, - "com.github.nastuzzisamy.ulauncher-custom-scripts": { - "id": "com.github.nastuzzisamy.ulauncher-custom-scripts", - "url": "https://github.com/NastuzziSamy/ulauncher-custom-scripts", - "updated_at": "2024-01-14T19:40:48.262263", - "last_commit": "7a68cbafb4acc01fed340d0d2ae99a6701724b31", - "last_commit_time": "2022-11-21T21:19:31" - }, - "com.github.ikorjefocur.ulauncher-commandrunner": { - "id": "com.github.ikorjefocur.ulauncher-commandrunner", - "url": "https://github.com/IkorJefocur/ulauncher-commandrunner", - "updated_at": "2024-01-14T19:58:09.331459", - "last_commit": "c306301468cbaba23625bf0ef0639b7ad6602783", - "last_commit_time": "2022-03-01T19:34:35" - }, - "com.github.melianmiko.ulauncher-nmcli": { - "id": "com.github.melianmiko.ulauncher-nmcli", - "url": "https://github.com/melianmiko/ulauncher-nmcli", - "updated_at": "2024-01-15T11:00:03.423007", - "last_commit": "fe967c947748616df602c9d022fec6d68a6b2cf2", - "last_commit_time": "2022-05-01T12:20:38" - }, - "com.github.tevenfeng.ulauncher-dc": { - "id": "com.github.tevenfeng.ulauncher-dc", - "url": "https://github.com/tevenfeng/ulauncher-dc", - "updated_at": "2024-01-15T11:00:14.588647", - "last_commit": "4cdeb58b1f79b64f2f6e3b4eecc3a38b81c886ea", - "last_commit_time": "2022-06-16T09:10:28" - }, - "com.github.fajtak.ulauncher-weather": { - "id": "com.github.fajtak.ulauncher-weather", - "url": "https://github.com/fajtak/ulauncher-weather", - "updated_at": "2024-01-15T11:03:08.154706", - "last_commit": "996da704e505776753f6340755d20f03075c2be8", - "last_commit_time": "2022-04-05T18:23:30" - }, - "com.github.isacikgoz.ukill": { - "id": "com.github.isacikgoz.ukill", - "url": "https://github.com/isacikgoz/ukill", - "updated_at": "2024-01-15T11:07:55.208352", - "last_commit": "bc50d9f41d46b6813a5aeebddd15734dcdb9d8db", - "last_commit_time": "2019-05-28T18:30:00" - }, - "com.github.frdrk.ulauncher-dead-simple-convert": { - "id": "com.github.frdrk.ulauncher-dead-simple-convert", - "url": "https://github.com/frdrk/ulauncher-dead-simple-convert", - "updated_at": "2024-01-15T11:29:28.766027", - "last_commit": "c0821e83b6c1d5a4984ef72c82e54eb21d0149ac", - "last_commit_time": "2023-10-03T11:40:03" - }, - "com.github.brpaz.ulauncher-currency": { - "id": "com.github.brpaz.ulauncher-currency", - "url": "https://github.com/brpaz/ulauncher-currency", - "updated_at": "2024-01-15T11:29:58.066495", - "last_commit": "262ed206057d38cec97e94297ab94246a43468cd", - "last_commit_time": "2021-12-12T15:45:10" - }, - "com.github.dflock.ulauncher-window-switcher": { - "id": "com.github.dflock.ulauncher-window-switcher", - "url": "https://github.com/dflock/ulauncher-window-switcher", - "updated_at": "2024-01-15T13:58:08.459425", - "last_commit": "54622e353a7d2d0421250a76cab4aafa9ca720c5", - "last_commit_time": "2022-01-16T17:56:00" - }, - "com.github.hillaryychan.ulauncher-fzf": { - "id": "com.github.hillaryychan.ulauncher-fzf", - "url": "https://github.com/hillaryychan/ulauncher-fzf", - "updated_at": "2024-01-28T16:28:14.218521", - "last_commit": "e8137dae6448041fc53ae418263501b068857073", - "last_commit_time": "2023-05-16T12:35:35" - } -} diff --git a/files/ulauncher/settings/scripts.json b/files/ulauncher/settings/scripts.json @@ -1,13 +0,0 @@ -[ - { - "name": "Clear Clipboard", - "icon": "clipboard", - "script": "sh -c 'echo [] | cat > ~/.local/share/clipman.json'" - }, - { - "name": "Documentation", - "description": "ULauncher Documentation", - "icon": "help-about", - "script": "xdg-open https://ulauncher.io/" - } -] diff --git a/files/ulauncher/settings/settings.json b/files/ulauncher/settings/settings.json @@ -1,11 +0,0 @@ -{ - "clear-previous-query": true, - "disable-desktop-filters": false, - "grab-mouse-pointer": false, - "hotkey-show-app": "<Super>slash", - "render-on-screen": "mouse-pointer-monitor", - "show-indicator-icon": false, - "show-recent-apps": "5", - "terminal-command": "@terminal", - "theme-name": "@theme" -} diff --git a/files/ulauncher/themes/adwaita/manifest.json b/files/ulauncher/themes/adwaita/manifest.json @@ -1,12 +0,0 @@ -{ - "manifest_version": "1", - "name": "Adwaita-Dark", - "display_name": "Adwaita Dark", - "extend_theme": "dark", - "css_file": "theme.css", - "css_file_gtk_3.20+": "theme-gtk-3.20.css", - "matched_text_hl_colors": { - "when_selected": "#99ccff", - "when_not_selected": "#99ccff" - } -} diff --git a/files/ulauncher/themes/adwaita/theme-gtk-3.20.css b/files/ulauncher/themes/adwaita/theme-gtk-3.20.css @@ -1,10 +0,0 @@ -@import url("theme.css"); - -.input { - caret-color: @caret_color; -} - -/* Workaround for GTK+ < 3.20 */ -.selected.item-box { - border: none; -} diff --git a/files/ulauncher/themes/adwaita/theme.css b/files/ulauncher/themes/adwaita/theme.css @@ -1,98 +0,0 @@ -/* App Window */ -@define-color bg_color #242424; -@define-color window_bg @bg_color; -@define-color window_border_color #3A3A3A; -@define-color prefs_backgroud #454545; - -/* Input */ -@define-color selected_bg_color #4675ab; -@define-color selected_fg_color #d5eaff; -@define-color input_color #ddd; -@define-color caret_color darker(@input_color); - -/* Result Items */ -@define-color item_name #ffffff; -@define-color item_text #999; -@define-color item_box_selected rgba(255, 255, 255, 0.16); -@define-color item_text_selected #999; -@define-color item_name_selected #eee; -@define-color item_shortcut_color #777; -@define-color item_shortcut_shadow darker(@bg_color); -@define-color item_shortcut_color_sel #78aeed; -@define-color item_shortcut_shadow_sel darker(@item_box_selected); - -.app { - background-color: @window_bg; - border-color: @window_border_color; - border-radius: 15px; -} - -.input { - caret-color: @caret_color; - color: @input_color; - border: solid 2px @blue_1; - border-radius: 5px; -} - -/* Selected Text in Input */ -.input *:selected, -.input *:focus, -*:selected:focus { - background-color: alpha (@selected_bg_color, 0.9); - color: @selected_fg_color; -} - -.item-text { - color: @item_text; -} - -.item-name { - color: @item_name; - font-weight: bold; -} - -.item-box { - background-color: rgba(255, 255, 255, 0.08); -} - -.selected.item-box { - background-color: @item_box_selected; - border: none; -} - -.selected.item-box .item-text { - color: @item_text_selected; -} - -.selected.item-box .item-name { - color: @item_name_selected; -} - -.item-shortcut { - color: @item_shortcut_color; -} - -.selected.item-box .item-shortcut { - color: @item_shortcut_color_sel; -} - -.prefs-btn { - opacity: 0.8; - padding: 13px; - border-radius: 10px; - transition: background-color 0.5s; -} - -.prefs-btn * { - box-shadow: none; -} - -.prefs-btn:hover { - background-color: @prefs_backgroud; - padding: 13px; - transition: background-color 0.5s; -} - -.no-window-shadow { - margin: -20px; -} diff --git a/files/ulauncher/themes/arc/manifest.json b/files/ulauncher/themes/arc/manifest.json @@ -1,12 +0,0 @@ -{ - "manifest_version": "1", - "name": "Arc-Dark", - "display_name": "Arc Dark", - "extend_theme": "dark", - "css_file": "theme.css", - "css_file_gtk_3.20+": "theme-gtk-3.20.css", - "matched_text_hl_colors": { - "when_selected": "#99ccff", - "when_not_selected": "#99ccff" - } -} diff --git a/files/ulauncher/themes/arc/theme-gtk-3.20.css b/files/ulauncher/themes/arc/theme-gtk-3.20.css @@ -1,10 +0,0 @@ -@import url("theme.css"); - -.input { - caret-color: @caret_color; -} - -/* Workaround for GTK+ < 3.20 */ -.selected.item-box { - border: none; -} diff --git a/files/ulauncher/themes/arc/theme.css b/files/ulauncher/themes/arc/theme.css @@ -1,79 +0,0 @@ -/* App Window */ -@define-color bg_color #404552; -@define-color window_bg @bg_color; -@define-color window_border_color #383c4a; -@define-color prefs_backgroud #999; - -/* Input */ -@define-color selected_bg_color #4675ab; -@define-color selected_fg_color #d5eaff; -@define-color input_color #ddd; -@define-color caret_color darker(@input_color); - -/* Result Items */ -@define-color item_name #ddd; -@define-color item_text #999; -@define-color item_box_selected #5294e2; -@define-color item_text_selected #99ccff; -@define-color item_name_selected #eee; -@define-color item_shortcut_color #777; -@define-color item_shortcut_shadow darker(@bg_color); -@define-color item_shortcut_color_sel #99ccff; -@define-color item_shortcut_shadow_sel darker(@item_box_selected); - -.app { - background-color: @window_bg; - border-color: @window_border_color; -} - -.input { - color: @input_color; -} - -/* Selected Text in Input */ -.input *:selected, -.input *:focus, -*:selected:focus { - background-color: alpha (@selected_bg_color, 0.9); - color: @selected_fg_color; -} - -.item-text { - color: @item_text; -} - -.item-name { - color: @item_name; -} - -.selected.item-box { - background-color: @item_box_selected; - border-left: 1px solid @window_border_color; - border-right: 1px solid @window_border_color; -} - -.selected.item-box .item-text { - color: @item_text_selected; -} - -.selected.item-box .item-name { - color: @item_name_selected; -} - -.item-shortcut { - color: @item_shortcut_color; - text-shadow: 1px 1px 1px @item_shortcut_shadow; -} - -.selected.item-box .item-shortcut { - color: @item_shortcut_color_sel; - text-shadow: 1px 1px 1px @item_shortcut_shadow_sel; -} - -.prefs-btn { - opacity: 0.8; -} - -.prefs-btn:hover { - background-color: @prefs_backgroud; -} diff --git a/files/ulauncher/themes/catppuccin/manifest.json b/files/ulauncher/themes/catppuccin/manifest.json @@ -1,12 +0,0 @@ -{ - "manifest_version": "1", - "name": "catppuccin", - "display_name": "Catppuccin Macchiato Blue", - "extend_theme": "light", - "css_file": "theme.css", - "css_file_gtk_3.20+": "theme-gtk-3.20.css", - "matched_text_hl_colors": { - "when_selected": "#8aadf4", - "when_not_selected": "#8aadf4" - } -} diff --git a/files/ulauncher/themes/catppuccin/theme-gtk-3.20.css b/files/ulauncher/themes/catppuccin/theme-gtk-3.20.css @@ -1,10 +0,0 @@ -@import url("theme.css"); - -.input { - caret-color: @caret_color; -} - -/* Workaround for GTK+ < 3.20 */ -.selected.item-box { - border: none; -} diff --git a/files/ulauncher/themes/catppuccin/theme.css b/files/ulauncher/themes/catppuccin/theme.css @@ -1,69 +0,0 @@ -/* Colors */ -@define-color backgroundColor #24273a; -@define-color accentColor #8aadf4; -@define-color textColor #cad3f5; -@define-color subTextColor #b8c0e0; - -/* App Window */ -.app { - background-color: @backgroundColor; - border-color: @accentColor; - border-radius: 14px; -} - -/* Input */ -.input { - color: @accentColor; -} - -/* Selected Text in Input */ -.input *:selected, -.input *:focus, -*:selected:focus { - background-color: alpha (@accentColor, 0.4); - color: @textColor; -} - -.item-text { - color: @textColor; -} - -.item-name { - color: @textColor; - font-size: 1.2rem; -} - -.selected.item-box { - background-color: alpha (@accentColor, 0.3); - border-radius: 14px; -} - -.selected.item-box .item-text { - color: @textColor; -} - -.selected.item-box .item-name { - color: @textColor; - font-size: 1.2rem; -} - -.item-shortcut { - color: @accentColor; -} - -.selected.item-box .item-shortcut { - color: @accentColor; - font-size: 1.1rem; -} - -.selected.item-box { - color: @accentColor; -} - -.prefs-btn { - opacity: 1; -} - -.prefs-btn:hover { - background-color: alpha (@accentColor, 1); -} diff --git a/files/ulauncher/themes/elementary/manifest.json b/files/ulauncher/themes/elementary/manifest.json @@ -1,12 +0,0 @@ -{ - "manifest_version": "1", - "name": "elementary", - "display_name": "Elementary OS Dark", - "extend_theme": "light", - "css_file": "theme.css", - "css_file_gtk_3.20+": "theme-gtk-3.20.css", - "matched_text_hl_colors": { - "when_selected": "#fff", - "when_not_selected": "#fff" - } -} diff --git a/files/ulauncher/themes/elementary/theme-gtk-3.20.css b/files/ulauncher/themes/elementary/theme-gtk-3.20.css @@ -1,10 +0,0 @@ -@import url("theme.css"); - -.input { - caret-color: @caret_color; -} - -/* Workaround for GTK+ < 3.20 */ -.selected.item-box { - border: none; -} diff --git a/files/ulauncher/themes/elementary/theme.css b/files/ulauncher/themes/elementary/theme.css @@ -1,160 +0,0 @@ -/* App Window */ -@define-color bg_color rgba(51,51,51,1); -@define-color window_bg @bg_color; -@define-color prefs_backgroud #aaa; - -/* Input */ -@define-color selected_bg_color #35628d; -@define-color selected_fg_color #fff; -@define-color input_color #fff; -@define-color caret_color darker(@input_color); - -/* Result Items */ -@define-color item_name #fff; -@define-color item_text #fff; -@define-color item_box_selected #4a4a4a; -@define-color item_text_selected #fff; -@define-color item_name_selected #fff; -@define-color item_shortcut_color #afafaf; -@define-color item_shortcut_shadow darker(@bg_color); -@define-color item_shortcut_color_sel #afafaf; -@define-color item_shortcut_shadow_sel darker(@item_box_selected); - -/* Custom */ -@define-color window_inner_border_color rgba(255, 255, 255, .075); -@define-color window_outer_border_color rgba(0,0,0,.8); - -@define-color input_text_box_color #3a3a3a; -@define-color input_text_box_border #262626; -@define-color input_text_box_bottom_extra_border #3f3f3f; -@define-color input_text_box_inset_shadow rgba(0,0,0,.5); - -@define-color item_shortcut_box_color #2f2f2f; -@define-color item_shortcut_box_shadow #2a2a2a; -@define-color item_shortcut_box_color_sel #424242; -@define-color item_shortcut_box_shadow_sel #3c3c3c; - -@define-color item_divider_upper_part #222; -@define-color item_divider_lower_part #444; - -.app { - background-color: @window_bg; - border-radius: 7px; - border: 1px solid @window_inner_border_color; - box-shadow: - 0 8px 10px 0px rgba(0, 0, 0, 0.8), - 0 0 0 1px @window_outer_border_color; - margin: 0px 5px 30px 5px; -} - -.input { - font-size: 34px; - font-weight: 600; - color: @input_color; - margin: -14px -54px -16px -15px; - - /* Fix for selection box cut off */ - padding-left: 15px; - padding-right: 55px; -} - -/* Selected Text in Input */ -.input *:selected, -.input *:focus, -*:selected:focus { - background-color: alpha (@selected_bg_color, 0.9); - color: @selected_fg_color; -} - -.item-text { - color: @item_text; - font-size: 12px; - font-weight: 400; - margin-left: -13px; /* To move text left because of moved icons */ -} -.item-name { - color: @item_name; - margin-top: 2px; /* To center text to icon height */ - font-size: 16px; - font-weight: 500; -} - -.selected.item-box { - background: linear-gradient( - 180deg, - rgba(0, 0, 0, 0) 0%, - rgba(0, 0, 0, 0) 10%, - @item_box_selected 10%, - @item_box_selected 93%, - rgba(0, 0, 0, 0) 93%, - rgba(0, 0, 0, 0) 100% - ); - /* Special fix to make the selection box smaller than the actual item - box so it doesnt overlap with the window corners on the bottom */ -} - -.selected.item-box .item-text { - color: @item_text_selected; -} - -.selected.item-box .item-name { - color: @item_name_selected; -} - -.item-shortcut { - color: @item_shortcut_color; - text-shadow: 0 0; /* Remove shadow from default theme */ - - background-color: @item_shortcut_box_color; - box-shadow: 0 1px 0px @item_shortcut_box_shadow; - - margin: 16px 3px; /* Resizing shortcut box */ - padding-top: 1px; /* Recentering text as font size 10 makes text jump up 1 pixel */ - border-radius: 3px; - font-size: 10px; - font-weight: 300; -} - -.selected.item-box .item-shortcut { - color: @item_shortcut_color_sel; - text-shadow: 0 0; /* Remove shadow from default theme */ - - background-color: @item_shortcut_box_color_sel; - box-shadow: 0 1px 0px @item_shortcut_box_shadow_sel; -} - -.prefs-btn { - opacity: 0; - margin-left: -5px; /* To center button above shortcut boxes */ -} - -.prefs-btn:hover { - background-color: @bg_color; /* To make background only visible when text is behind it */ - opacity: 1; -} - -.no-window-shadow { - margin: -20px; -} - -/* Custom Styling */ -.item-icon { - margin-left: -25px; /* Moving the icons to the left and bringing them in line */ -} - -.item-container { - margin-right: -10px; /* Moving the shortcut boxes to the right */ - margin-top: 3px; /* Making space for the dividers */ - margin-bottom: 1px; /* Same as above but smaller because the dividers are 2px shadows located at the top of the items */ -} - -.result-box { - margin-bottom: -10px; /* Minimizing the distracting bottom bar */ - margin-top: -2px; /* To get rid of the bigger border under the input box when expanded */ -} - -.item-frame { - box-shadow: - inset 0px 2px @item_divider_lower_part, - inset 0px 1px @item_divider_upper_part; /* Dividers between items */ -} diff --git a/files/xfce/settings/xfce4-keyboard-shortcuts.xml b/files/xfce/settings/xfce4-keyboard-shortcuts.xml @@ -64,7 +64,6 @@ <property name="startup-notify" type="bool" value="true"/> </property> <property name="<Super>e" type="string" value="exo-open --launch MailReader"/> - <property name="<Super>slash" type="string" value="ulauncher-toggle"/> <property name="<Super>p" type="string" value="xfce4-panel-toggle"/> </property> </property> diff --git a/flake.lock b/flake.lock @@ -163,26 +163,6 @@ "type": "github" } }, - "darkly": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1744506952, - "narHash": "sha256-u+LNOIPvc1w3rDycpy6Ysg6bJRN7shAhHKpNHuZB5dA=", - "owner": "Bali10050", - "repo": "Darkly", - "rev": "8ece7de1b9efe488f505ddb57bdfa992daca1f6d", - "type": "github" - }, - "original": { - "owner": "Bali10050", - "repo": "Darkly", - "type": "github" - } - }, "filters": { "locked": { "lastModified": 1731533336, @@ -380,11 +360,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1743299372, - "narHash": "sha256-vFuxkHPd+Xpi5Bx1VCyZwYl/BbF83C+KmlbPBNVJvNU=", + "lastModified": 1745545937, + "narHash": "sha256-joiviAxX26H0RFIe8E5iP3gSAV/f3v5Ae4SUZ85IDnE=", "owner": "fufexan", "repo": "nix-gaming", - "rev": "2ab0a37308559926bddb0009dfcf16a2a5b34e2b", + "rev": "8ae51ad90e1c75b8b77102240a02b6dea65fc15a", "type": "github" }, "original": { @@ -826,6 +806,27 @@ "type": "github" } }, + "hyprshell": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1745884815, + "narHash": "sha256-tqkJdi2K4UtBrxh/CN2Og+rfgW56m9UlnWYrG76UnnE=", + "owner": "H3rmt", + "repo": "hyprswitch", + "rev": "058525f9dbb84319010f677f45f34fa007fd61b8", + "type": "github" + }, + "original": { + "owner": "H3rmt", + "ref": "hyprshell", + "repo": "hyprswitch", + "type": "github" + } + }, "hyprsplit": { "inputs": { "hyprland": [ @@ -933,11 +934,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1743076231, - "narHash": "sha256-yQugdVfi316qUfqzN8JMaA2vixl+45GxNm4oUfXlbgw=", + "lastModified": 1744868846, + "narHash": "sha256-5RJTdUHDmj12Qsv7XOhuospjAjATNiTMElplWnJE9Hs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6c5963357f3c1c840201eda129a99d455074db04", + "rev": "ebe4301cbd8f81c4f8d3244b3632338bbeb6d49c", "type": "github" }, "original": { @@ -1061,7 +1062,6 @@ "inputs": { "boot": "boot", "catppuccin": "catppuccin", - "darkly": "darkly", "filters": "filters", "flatpak": "flatpak", "formatter": "formatter", @@ -1073,6 +1073,7 @@ "hyprcursors": "hyprcursors", "hyprland": "hyprland", "hyprplugins": "hyprplugins", + "hyprshell": "hyprshell", "hyprsplit": "hyprsplit", "impermanence": "impermanence", "index": "index", diff --git a/flake.nix b/flake.nix @@ -167,12 +167,6 @@ }; }; - # Darkly QT Style - darkly = { - url = "github:Bali10050/Darkly"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - # Catppuccin Theme catppuccin = { url = "github:catppuccin/nix"; @@ -207,6 +201,12 @@ nixpkgs.follows = "nixpkgs"; }; }; + + # Launcher + hyprshell = { + url = "github:H3rmt/hyprswitch?ref=hyprshell"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; ## Configuration ## diff --git a/modules/README.md b/modules/README.md @@ -6,7 +6,8 @@ Configuration [Builder](./configuration.nix) - [`apps`](./apps): Module that configures various apps and/or environments - - - `list`: List of all enabled applications - `[ "discord" "firefox" "flatpak" "games" "git" "office" "spotify" "wine" ]` + - `list`: List of enabled applications - `[ "discord" "firefox" "flatpak" "games" "git" "office" "spotify" "wine" ]` + - `games`: List of installed games - `[ "osu" ]` - `git` - - `hosting` - - `enable`: Enable Gitea Code Hosting - `true / false` @@ -50,12 +51,6 @@ Configuration [Builder](./configuration.nix) - `theme` - - `name`: QT Application Theme - `package`: QT Theme Package - - `launcher` - - - `enable`: Enable Application Launcher - `true / false` - - `shadow`: Control Launcher Window Shadow - `true / false` - - `server`: Display Server to be used by Launcher - `"x11" / "wayland"` - - `terminal`: Terminal to be used by Launcher - Ex. `[ "xterm" ]` - - `theme`: Theme to be used by Launcher (Taken from `files.ulauncher.themes`) - `wayland` - - `enable`: Enable Wayland Configuration - `true / false` - `xorg` - diff --git a/modules/apps/games.nix b/modules/apps/games.nix @@ -1,59 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: let - inherit (lib) mkIf mkOverride; - enable = builtins.elem "games" config.apps.list; - wine = builtins.elem "wine" config.apps.list; -in { - ## Games Configuration ## - config = mkIf enable { - assertions = [ - { - assertion = wine; - message = '' - Wine support is required - - Add 'wine to 'apps.list' - ''; - } - ]; - - # Packages - apps.wine.package = pkgs.gaming.wine-ge; - environment.systemPackages = with pkgs; [ - bottles - lutris - ]; - - # Steam - programs.steam = { - enable = true; - remotePlay.openFirewall = true; - dedicatedServer.openFirewall = true; - localNetworkGameTransfers.openFirewall = true; - }; - - # Game Mode - # See https://github.com/FeralInteractive/gamemode - hardware.cpu.mode = mkOverride 51 "performance"; - gui.fancy = mkOverride 999 false; - programs.gamemode.enable = true; - - # Directories - user.persist.directories = [ - "Games" - ".cache/lutris" - ".config/lutris" - ".local/share/bottles" - ".local/share/lutris" - - # Steam - ".local/share/applications" - ".local/share/icons/hicolor" - ".steam" - ".local/share/Steam" - ]; - }; -} diff --git a/modules/apps/games/default.nix b/modules/apps/games/default.nix @@ -0,0 +1,75 @@ +{ + config, + lib, + util, + pkgs, + ... +}: let + inherit (lib) mkIf mkOption mkOverride types; + inherit (util.map) modules; + enable = builtins.elem "games" config.apps.list; + wine = builtins.elem "wine" config.apps.list; + wine' = pkgs.gaming.wine-tkg; +in { + imports = modules.list ./.; + + options.apps.games = mkOption { + description = "List of Installed Games"; + type = types.listOf (types.enum (modules.name ./.)); + default = []; + }; + + ## Games Configuration ## + config = mkIf enable { + assertions = [ + { + assertion = wine; + message = '' + Wine support is required + - Add 'wine to 'apps.list' + ''; + } + ]; + + # Packages + environment.systemPackages = with pkgs; [ + bottles + lutris + wine' + ]; + + # Steam + programs.steam = { + enable = true; + remotePlay.openFirewall = true; + dedicatedServer.openFirewall = true; + localNetworkGameTransfers.openFirewall = true; + }; + + # Game Mode + # See https://github.com/FeralInteractive/gamemode + hardware.cpu.mode = mkOverride 51 "performance"; + gui.fancy = mkOverride 999 false; + programs.gamemode.enable = true; + + user = { + # Runner + homeConfig.xdg.dataFile."lutris/runners/wine/wine-tkg".source = wine'; + + # Directories + persist.directories = [ + "Games" + ".cache/lutris" + ".config/lutris" + ".local/share/bottles" + ".local/share/lutris" + + # Steam + ".local/share/applications" + ".local/share/icons/hicolor" + ".steam" + ".local/share/Steam" + ]; + }; + }; +} diff --git a/modules/apps/games/osu.nix b/modules/apps/games/osu.nix @@ -0,0 +1,11 @@ +{ + config, + lib, + pkgs, + ... +}: { + config = lib.mkIf (builtins.elem "osu" config.apps.games) { + environment.systemPackages = [pkgs.osu-lazer-bin]; + user.persist.directories = [".local/share/osu"]; + }; +} diff --git a/modules/apps/office.nix b/modules/apps/office.nix @@ -47,6 +47,7 @@ in { libreoffice # Graphics + drawing gimp handbrake inkscape diff --git a/modules/apps/vscode.nix b/modules/apps/vscode.nix @@ -54,6 +54,7 @@ in { esbenp.prettier-vscode file-icons.file-icons github.vscode-pull-request-github + jgclark.vscode-todo-highlight jnoortheen.nix-ide kamadorueda.alejandra ms-python.python @@ -62,11 +63,11 @@ in { naumovs.color-highlight redhat.java ritwickdey.liveserver + tomoki1207.pdf yzhang.markdown-all-in-one ] ++ (with pkgs.code.vscode-marketplace; [ kisstkondoros.vscode-gutter-preview - wayou.vscode-todo-highlight ]); }; }; diff --git a/modules/gui/desktop/gnome/default.nix b/modules/gui/desktop/gnome/default.nix @@ -201,7 +201,6 @@ in { curtail deja-dup dialect - drawing fractal fragments gnome-decoder diff --git a/modules/gui/desktop/hyprland/apps/files.nix b/modules/gui/desktop/hyprland/apps/files.nix @@ -7,8 +7,8 @@ ... }: let inherit (lib) hm getExe getExe' replaceStrings; - inherit (config.gui) icons launcher; - inherit (launcher) terminal; + inherit (config.gui) icons; + terminal = "kitty"; nemo = pkgs.nemo-with-extensions; in { ## File Manager Configuration diff --git a/modules/gui/desktop/hyprland/apps/misc.nix b/modules/gui/desktop/hyprland/apps/misc.nix @@ -25,7 +25,7 @@ in { extensions = [pkgs.vscode-extensions.catppuccin.catppuccin-vsc-icons]; userSettings = with theme; { "workbench.iconTheme" = "${name}-${variant}"; - "terminal.external.linuxExec" = config.gui.launcher.terminal; + "terminal.external.linuxExec" = "kitty"; }; }; diff --git a/modules/gui/desktop/hyprland/apps/panel.nix b/modules/gui/desktop/hyprland/apps/panel.nix @@ -133,7 +133,6 @@ ignore-list = [ "kitty-clip" "kitty-dropterm" - "ulauncher" ]; }; @@ -287,10 +286,12 @@ "custom/weather" = { format = "{}°"; + return-type = "json"; + exec = "wttrbar --date-format %d/%m --nerd"; tooltip = true; interval = 3600; - exec = "wttrbar --date-format %d/%m --nerd"; - return-type = "json"; + signal = 7; + on-click = "pkill -RTMIN+7 waybar"; }; clock = { diff --git a/modules/gui/desktop/hyprland/apps/settings.nix b/modules/gui/desktop/hyprland/apps/settings.nix @@ -20,7 +20,6 @@ in { gui = with theme; { fonts.enable = true; inherit (theme) icons; - launcher.theme = theme.name; gtk = { enable = true; @@ -84,11 +83,11 @@ in { "$mod, T, exec, kitty" "$mod, W, exec, firefox" "$mod, Return, exec, ${runOnce "resources"}" + "$mod SHIFT, equal, exec, pypr toggle calc" ", XF86Calculator, exec, qalculate-gtk" # Utilities "$mod, A, exec, nwg-drawer" - "$mod, slash, exec, ulauncher-toggle" "$mod SHIFT, slash, exec, ${toggle "kebihelp"} show -a" "$mod SHIFT, C, exec, ${runOnce "hyprpicker"} -arf hex" "$mod SHIFT, B, exec, ${runOnce "overskride"}" @@ -104,18 +103,18 @@ in { "$mod, S, exec, hyprutils toggle shader" "$mod SHIFT, T, exec, pypr toggle term" "$mod, V, exec, pypr show clip" - - # Switcher - "ALT, Tab, exec, hyprswitch simple -w -m" - "ALT SHIFT, Tab, exec, hyprswitch simple -w -m -r" - "$mod, Tab, exec, hyprswitch gui --mod-key super --key tab --close mod-key-release --reverse-key=mod=shift --max-switch-offset 9 -m && hyprswitch dispatch" + "$mod, backslash, exec, pypr toggle emoji" ]; ## Layer Rules layerrule = [ - "blur, ^(hyprswitch)$" + "blur, ^(hyprshell_overview)$" + "dimaround, ^(hyprshell_overview)$" "blur, ^(logout_dialog)$" + "animation fade, ^(logout_dialog)$" "blur, ^(nwg-drawer)$" + "dimaround, ^(nwg-drawer)$" + "animation fade, ^(nwg-drawer)$" "blur, ^(waybar)$" "ignorealpha, ^(waybar)$" "blur, ^(wlclock)$" @@ -128,11 +127,6 @@ in { # Settings "stayfocused, class:^(gnome-control-center)$" - # Application Launcher - "stayfocused, class:^(ulauncher)$" - "opacity 0.8 override, class:^(ulauncher)$" - "move cursor -50% -50%, class:^(ulauncher)$" - # Keybinds Viewer "pin, title:^(Kebihelp)$" "stayfocused, title:^(Kebihelp)$" diff --git a/modules/gui/desktop/hyprland/apps/terminal.nix b/modules/gui/desktop/hyprland/apps/terminal.nix @@ -4,7 +4,6 @@ ... }: { ## Terminal Configuration - gui.launcher.terminal = "kitty"; user.homeConfig = { programs.kitty = { enable = true; diff --git a/modules/gui/desktop/hyprland/apps/utilities.nix b/modules/gui/desktop/hyprland/apps/utilities.nix @@ -7,8 +7,6 @@ ... }: let inherit (lib) getExe; - inherit (builtins) toFile; - inherit (util.build) theme; inherit (config.lib.stylix) colors; in { environment.systemPackages = with pkgs; [ @@ -19,13 +17,14 @@ in { gnome-clocks gnome-disk-utility hyprpicker - hyprswitch + hyprworld.hyprshell nwg-displays nwg-drawer overskride qalculate-gtk remmina resources + smile # Utilities custom.hyprutils @@ -76,7 +75,11 @@ in { hardware.brillo.enable = true; user = { - persist.directories = [".config/nwg-displays"]; + persist.directories = [ + ".config/nwg-displays" + ".local/share/hyprshell" + ]; + homeConfig = { services = { # Wallpaper Daemon @@ -109,21 +112,23 @@ in { }; systemd.user.services = let + target = ["graphical-session.target"]; run = about: command: { - Install.WantedBy = ["graphical-session.target"]; - Unit.Description = about; + Install.WantedBy = target; + Unit = { + Description = about; + After = target; + }; Service = { - Type = "Simple"; + Restart = "always"; + RestartSec = 1; ExecStart = command; }; }; in { + hyprshell = run "Launcher" "${getExe pkgs.hyprworld.hyprshell} run"; waycorner = run "Hot Corners" (getExe pkgs.waycorner); wlclock = with colors; run "Desktop Clock" "${getExe pkgs.wlclock} --layer bottom --exclusive-zone true --position top-right --margin 10 --size 300 --corner-radius 10 --border-size 2 --hand-width 7 --marking-width 3 --background-colour #${base00}4d --clock-colour #${base0D} --border-colour #${base00}"; - hyprswitch = run "Window Switcher" "${getExe pkgs.hyprswitch} init --workspaces-per-row 3 --custom-css ${toFile "style.css" (theme { - inherit colors; - file = files.hyprland.hyprswitch; - })}"; }; # Network Settings @@ -136,28 +141,34 @@ in { terminal = false; }; - home.file = with files.hyprland; { + home.file = with files.hyprland; let + build = file: + util.build.theme { + inherit colors file; + inherit (config.stylix) fonts; + }; + in { # Application Drawer ".config/nwg-drawer/drawer.css".text = drawer; # Pyprland ".config/hypr/pyprland.toml".text = pypr; + # Keybinds Viewer + ".config/kebihelp.json".text = build kebihelp; + # Hot Corners ".config/waycorner/config.toml".text = waycorner; + # Launcher + ".config/hyprshell/config.ron".text = hyprshell.config; + ".config/hyprshell/styles.css".text = build hyprshell.style; + # Shaders ".config/hypr/shaders" = { source = files.proprietary.shaders.path; recursive = true; }; - - # Keybinds Viewer - ".config/kebihelp.json".text = theme { - inherit colors; - inherit (config.stylix) fonts; - file = kebihelp; - }; }; }; }; diff --git a/modules/gui/desktop/hyprland/default.nix b/modules/gui/desktop/hyprland/default.nix @@ -22,10 +22,6 @@ in { gui = { xorg.enable = false; wayland.enable = true; - launcher = { - enable = true; - shadow = false; - }; }; programs = { diff --git a/modules/gui/desktop/hyprland/settings/default.nix b/modules/gui/desktop/hyprland/settings/default.nix @@ -6,7 +6,7 @@ }: let inherit (lib) mkForce mkIf; inherit (sys.gui) display fancy; - inherit (sys.lib.stylix.colors) base03 base07 base0D; + inherit (sys.lib.stylix.colors) base03 base05 base0D; in { ## Hyprland Settings imports = util.map.modules.list ./.; @@ -118,13 +118,10 @@ in { gaps_in = 3; gaps_out = 3; border_size = 2; - "col.active_border" = mkForce "rgb(${base0D}) rgb(${base07}) 90deg"; + "col.active_border" = mkForce "rgb(${base0D}) rgb(${base05}) 90deg"; }; - group = let - active = "rgb(${base07}) rgb(${base0D}) 90deg"; - inactive = "rgb(${base03}) rgb(${base07}) 90deg"; - in { + group = { auto_group = true; insert_after_current = true; drag_into_group = 2; @@ -132,52 +129,45 @@ in { merge_groups_on_groupbar = true; merge_floated_into_tiled_on_groupbar = false; group_on_movetoworkspace = false; - - "col.border_active" = mkForce active; - "col.border_locked_active" = mkForce active; - "col.border_inactive" = mkForce inactive; - "col.border_locked_inactive" = mkForce inactive; + "col.border_active" = mkForce "rgb(${base05}) rgb(${base0D}) 90deg"; + "col.border_inactive" = mkForce "rgb(${base05}) rgb(${base03}) 90deg"; groupbar = { enabled = true; scrolling = true; gradients = true; - height = 10; - render_titles = false; + height = 15; + font_size = 10; + render_titles = true; keep_upper_gap = false; indicator_height = 0; gradient_rounding = 5; gradient_round_only_edges = false; - - "col.active" = mkForce active; - "col.locked_active" = mkForce active; - "col.inactive" = mkForce inactive; - "col.locked_inactive" = mkForce inactive; + "col.active" = mkForce "rgb(${base03}) rgb(${base0D}) 90deg"; + "col.inactive" = mkForce "rgb(${base03})"; }; }; animation = { bezier = [ - "fluentish, 0, 0.2, 0.4, 1" - "easeOutCircle, 0, 0.55, 0.45, 1" - "easeOutCubic, 0.33, 1, 0.68, 1" - "easeInOutSine, 0.37, 0, 0.63, 1" + "accelerate, 0.3, 0, 0.8, 0.15" + "decelerate, 0.05, 0.7, 0.1, 1" + "zoom, 0.38, 0.04, 1, 0.07" + "crash, 0.1, 1, 0, 1" ]; animation = [ - "windowsIn, 1, 1.7, easeOutCubic, slide" - "windowsOut, 1, 1.7, easeOutCubic, slide" - "windowsMove, 1, 2.5, easeInOutSine, slide" - - # Fading - "fadeIn, 1, 3, easeOutCubic" - "fadeOut, 1, 3, easeOutCubic" - "fadeSwitch, 1, 5, easeOutCircle" - "fadeShadow, 1, 5, easeOutCircle" - "fadeDim, 1, 6, fluentish" - "border, 1, 2.7, easeOutCircle" - "workspaces, 1, 2, fluentish, slide" - "specialWorkspace, 1, 3, fluentish, slidevert" + "border, 1, 10, default" + "fade, 1, 3, decelerate" + "fadeLayersIn, 1, 2, crash" + "fadeLayersOut, 1, 0.5, zoom" + "layersIn, 1, 3, crash, slide" + "layersOut, 1, 1.6, zoom" + "specialWorkspace, 1, 3, decelerate, slidevert" + "windows, 1, 3, decelerate, popin 60%" + "windowsIn, 1, 3, decelerate, popin 60%" + "windowsOut, 1, 3, accelerate, popin 60%" + "workspaces, 1, 7, crash, slide" ]; }; diff --git a/modules/gui/desktop/hyprland/settings/keybindings.nix b/modules/gui/desktop/hyprland/settings/keybindings.nix @@ -129,8 +129,9 @@ _: { ", XF86MonBrightnessDown, exec, hyprutils brightness down" # Magnifier - "$mod, equal, exec, hyprutils zoom in" - "$mod, minus, exec, hyprutils zoom out" + "$mod, equal, exec, pypr zoom ++0.5" + "$mod, minus, exec, pypr zoom --0.5" + "$mod SHIFT, minus, exec, pypr zoom" ]; }; diff --git a/modules/gui/desktop/pantheon.nix b/modules/gui/desktop/pantheon.nix @@ -41,12 +41,6 @@ in { package = pkgs.pantheon.elementary-icon-theme; size = 32; }; - - launcher = { - enable = true; - theme = "elementary"; - terminal = "io.elementary.terminal"; - }; }; # Essential Utilities diff --git a/modules/gui/desktop/xfce/compositor.nix b/modules/gui/desktop/xfce/compositor.nix @@ -24,11 +24,7 @@ ]; # Opacity - opacityRules = [ - "95:class_g = 'Code'" - "95:class_g = 'Ulauncher'" - ]; - + opacityRules = ["95:class_g = 'Code'"]; wintypes = { tooltip = {opacity = 0.8;}; popup_menu = {opacity = 0.9;}; @@ -141,7 +137,6 @@ }; # Theme Fixes - gui.launcher.shadow = false; user.homeConfig = { gtk.gtk3.extraCss = lib.mkBefore "decoration { box-shadow: none; }"; programs.firefox.profiles.default.settings."browser.tabs.inTitlebar" = 0; diff --git a/modules/gui/desktop/xfce/default.nix b/modules/gui/desktop/xfce/default.nix @@ -69,12 +69,6 @@ in { package = pkgs.arc-kde-theme; }; }; - - launcher = { - enable = true; - theme = theme.name; - terminal = "xfce4-terminal"; - }; }; # Essential Utilities diff --git a/modules/gui/launcher.nix b/modules/gui/launcher.nix @@ -1,97 +0,0 @@ -{ - config, - lib, - files, - pkgs, - ... -}: let - inherit (lib) getExe mkEnableOption mkIf mkOption replaceStrings types; - cfg = config.gui.launcher; -in { - options.gui.launcher = { - enable = mkEnableOption "Enable Application Launcher"; - shadow = mkOption { - description = "Control Launcher Window Shadow"; - type = types.bool; - default = true; - }; - - server = mkOption { - description = "Display Server to be used by Launcher"; - type = types.enum ["x11" "wayland"]; - default = "x11"; - }; - - terminal = mkOption { - description = "Terminal to be used by Launcher"; - type = types.str; - default = "xterm"; - }; - - theme = mkOption { - description = "Theme to be used by Launcher"; - type = types.str; - default = "adwaita"; - }; - }; - - ## ULauncher Configuration ## - config = mkIf cfg.enable { - # Launcher Package - environment.systemPackages = [pkgs.ulauncher]; - - user = { - persist.directories = [".config/ulauncher" ".local/share/ulauncher"]; - - # Customisation - homeConfig = { - home.file = with files.ulauncher; { - # Themes - ".config/ulauncher/user-themes" = { - source = themes; - recursive = true; - }; - - # Extensions - ".config/ulauncher/ext_preferences" = { - source = extensions; - recursive = true; - force = true; - }; - - # Scripts - ".config/ulauncher/scripts.json".text = scripts; - - # Settings - ".config/ulauncher/extensions.json".text = extension; - ".config/ulauncher/settings.json".text = - replaceStrings ["@terminal" "@theme"] [cfg.terminal cfg.theme] settings; - }; - - # Autostart - systemd.user.services.ulauncher = { - Unit = { - Description = "Start ULauncher"; - After = ["graphical-session.target"]; - }; - - Install.WantedBy = ["graphical-session.target"]; - Service = { - Type = "Simple"; - Restart = "Always"; - RestartSec = 1; - ExecStart = pkgs.writeShellScript "ulauncher-wrapper.sh" '' - ${files.path.systemd} - export GDK_BACKEND=${cfg.server} - exec ${getExe pkgs.ulauncher} --hide-window ${ - if cfg.shadow - then "" - else "--no-window-shadow" - } - ''; - }; - }; - }; - }; - }; -} diff --git a/modules/gui/qt.nix b/modules/gui/qt.nix @@ -1,7 +1,6 @@ { config, lib, - inputs, pkgs, ... }: let @@ -80,9 +79,9 @@ in { }) (mkIf (qt.style == "qtct") (let - pkg = with inputs.darkly.packages.${pkgs.system}; [ + pkg = with pkgs; [ + darkly darkly-qt5 - darkly-qt6 ]; conf = version: diff --git a/modules/gui/wayland.nix b/modules/gui/wayland.nix @@ -17,7 +17,6 @@ }; # Programs Support - gui.launcher.server = "wayland"; xdg.portal.wlr.enable = true; programs.xwayland.enable = true; }; diff --git a/modules/shell/bash.nix b/modules/shell/bash.nix @@ -28,7 +28,6 @@ in { shopt -s extglob shopt -s globstar shopt -s histappend - shopt -s no_empty_cmd_completion # Command History HISTCONTROL=erasedups:ignoredups:ignorespace diff --git a/packages/firefox-elementary/metadata.nix b/packages/firefox-elementary/metadata.nix @@ -1,6 +1,6 @@ { repo = "https://github.com/Zonnev/elementaryos-firefox-theme"; branch = "elementaryos-firefox-theme"; - rev = "2efc46c00a474f2db5ca9b2c18e32839aff7664d"; - sha256 = "sha256-2g2kAVD1nlACFofXZpNFK4T/odl901GjtKMVyLQ/NGQ="; + rev = "63a5c423db5d442117535aff16ecba73f59c5fa8"; + sha256 = "sha256-eVXYrv4U8FC8VnLZoa4rgkfNu46cKqJKYXqGCtt+gLY="; } diff --git a/packages/flake.nix b/packages/flake.nix @@ -53,7 +53,8 @@ in { hyprland.packages."${system}" // hyprplugins.packages."${system}" // hyprsplit.packages."${system}" - // hyprcursors.packages."${system}"; + // hyprcursors.packages."${system}" + // hyprshell.packages."${system}"; }) ]; }; diff --git a/packages/patches/darkly.patch b/packages/patches/darkly.patch @@ -0,0 +1,101 @@ +From ebeba5c57e3d3132cf00c9668fc5257743f5278a Mon Sep 17 00:00:00 2001 +From: Leah Amelia Chen <hi@pluie.me> +Date: Mon, 23 Dec 2024 19:26:30 +0800 +Subject: [PATCH] darkly{-qt5}: init at 0.5.18 + +--- + pkgs/by-name/da/darkly-qt5/package.nix | 5 ++ + pkgs/by-name/da/darkly/package.nix | 72 ++++++++++++++++++++++++++ + 2 files changed, 77 insertions(+) + create mode 100644 pkgs/by-name/da/darkly-qt5/package.nix + create mode 100644 pkgs/by-name/da/darkly/package.nix + +diff --git a/pkgs/by-name/da/darkly-qt5/package.nix b/pkgs/by-name/da/darkly-qt5/package.nix +new file mode 100644 +index 00000000000000..de0113957bd498 +--- /dev/null ++++ b/pkgs/by-name/da/darkly-qt5/package.nix +@@ -0,0 +1,5 @@ ++{ ++ darkly, ++ libsForQt5, ++}: ++darkly.override { qtPackages = libsForQt5; } +diff --git a/pkgs/by-name/da/darkly/package.nix b/pkgs/by-name/da/darkly/package.nix +new file mode 100644 +index 00000000000000..ef6bac0bb9e706 +--- /dev/null ++++ b/pkgs/by-name/da/darkly/package.nix +@@ -0,0 +1,72 @@ ++{ ++ lib, ++ stdenv, ++ fetchFromGitHub, ++ cmake, ++ ninja, ++ kdePackages, ++ qtPackages ? kdePackages, ++ gitUpdater, ++}: ++let ++ qtMajorVersion = lib.versions.major qtPackages.qtbase.version; ++in ++stdenv.mkDerivation (finalAttrs: { ++ pname = "darkly-qt${qtMajorVersion}"; ++ version = "0.5.18"; ++ ++ src = fetchFromGitHub { ++ owner = "Bali10050"; ++ repo = "Darkly"; ++ tag = "v${finalAttrs.version}"; ++ hash = "sha256-IwN6eZusfeGIEtdubpJpp1wrzToi0Umwi9jbXc4AF90="; ++ }; ++ ++ nativeBuildInputs = [ ++ cmake ++ ninja ++ qtPackages.wrapQtAppsHook ++ qtPackages.extra-cmake-modules ++ ]; ++ ++ buildInputs = ++ with qtPackages; ++ [ ++ qtbase ++ kconfig ++ kcoreaddons ++ kcmutils ++ kguiaddons ++ ki18n ++ kiconthemes ++ kwindowsystem ++ ] ++ ++ lib.optionals (qtMajorVersion == "5") [ ++ kirigami2 ++ ] ++ ++ lib.optionals (qtMajorVersion == "6") [ ++ kcolorscheme ++ kdecoration ++ kirigami ++ ]; ++ ++ cmakeFlags = map (v: lib.cmakeBool "BUILD_QT${v}" (v == qtMajorVersion)) [ ++ "5" ++ "6" ++ ]; ++ ++ passthru.updateScript = gitUpdater { rev-prefix = "v"; }; ++ ++ meta = ++ { ++ description = "Modern style for Qt applications (fork of Lightly)"; ++ homepage = "https://github.com/Bali10050/Darkly"; ++ changelog = "https://github.com/Bali10050/Darkly/releases/tag/v${finalAttrs.version}"; ++ platforms = lib.platforms.linux; ++ license = with lib.licenses; [ gpl2Plus ]; ++ maintainers = with lib.maintainers; [ pluiedev ]; ++ } ++ // lib.optionalAttrs (qtMajorVersion == "6") { ++ mainProgram = "darkly-settings6"; ++ }; ++}) diff --git a/scripts/hyprutils.nix b/scripts/hyprutils.nix @@ -17,7 +17,6 @@ backlight [up,down] - Keyboard Backlight Controls volume [up,down,mute] - Volume Controls media [next,previous,toggle] - Media Controls - zoom [in,out] - Screen Zoom toggle fancy - Toggle Compositor Effects float - Toggle window floating in current workspace @@ -92,6 +91,10 @@ in hyprctl notify "$1" 1500 0 " $2 " } + fail() { + error "$1" "Try 'hyprutils help' for more information" + } + get_media_icon() { media_icon="audio-speakers" if $show_album_art @@ -131,8 +134,8 @@ in brillo -u 300000 -U 5 brightness_notification ;; - "") error "Expected an Option" "Try 'hyprutils help' for more information" ;; - *) error "Unexpected Option 'brightness $2'" "Try 'hyprutils help' for more information" ;; + "") fail "Expected an Option" ;; + *) fail "Unexpected Option 'brightness $2'" ;; esac ;; "backlight") @@ -152,8 +155,8 @@ in brightnessctl -d "*::kbd_backlight" set 33%- backlight_notification ;; - "") error "Expected an Option" "Try 'hyprutils help' for more information" ;; - *) error "Unexpected Option 'brightness $2'" "Try 'hyprutils help' for more information" ;; + "") fail "Expected an Option" ;; + *) fail "Unexpected Option 'brightness $2'" ;; esac ;; "temperature") @@ -175,8 +178,8 @@ in hyprctl hyprsunset identity notify temperature -i "display" "🌡 Reset" ;; - "") error "Expected an Option" "Try 'hyprutils help' for more information" ;; - *) error "Unexpected Option 'temperature $2'" "Try 'hyprutils help' for more information" ;; + "") fail "Expected an Option" ;; + *) fail "Unexpected Option 'temperature $2'" ;; esac ;; "volume") @@ -223,8 +226,8 @@ in amixer set Master 1+ toggle volume_notification ;; - "") error "Expected an Option" "Try 'hyprutils help' for more information" ;; - *) error "Unexpected Option 'volume $2'" "Try 'hyprutils help' for more information" ;; + "") fail "Expected an Option" ;; + *) fail "Unexpected Option 'volume $2'" ;; esac ;; "media") @@ -258,30 +261,8 @@ in playerctl play-pause music_notification ;; - "") error "Expected an Option" "Try 'hyprutils help' for more information" ;; - *) error "Unexpected Option 'media $2'" "Try 'hyprutils help' for more information" ;; - esac - ;; - "zoom") - ZOOM=$(hyprctl getoption cursor:zoom_factor | grep float | awk '{print $2}') - case "$2" in - "in") - ZOOM=$(echo "$ZOOM" | awk '{print $1 + 0.2}') - hyprctl keyword cursor:zoom_factor "$ZOOM" - hyprnotify 1 "Zoomed In ($ZOOM""x)" - ;; - "out") - if [ "$ZOOM" = "1.000000" ] - then - hyprnotify 3 "Already zoomed out" - else - ZOOM=$(echo "$ZOOM" | awk '{print $1 - 0.2}') - hyprctl keyword cursor:zoom_factor "$ZOOM" - hyprnotify 1 "Zoomed Out ($ZOOM""x)" - fi - ;; - "") error "Expected an Option" "Try 'hyprutils help' for more information" ;; - *) error "Unexpected Option 'zoom $2'" "Try 'hyprutils help' for more information" ;; + "") fail "Expected an Option" ;; + *) fail "Unexpected Option 'media $2'" ;; esac ;; "toggle") @@ -328,7 +309,7 @@ in "service") if [ -z "$3" ] then - error "Expected service name" "Try 'hyprutils help' for more information" + fail "Expected service name" fi if systemctl --user is-active "$3" @@ -376,8 +357,8 @@ in fi fi ;; - "") error "Expected an Option" "Try 'hyprutils help' for more information" ;; - *) error "Unexpected Option 'toggle $2'" "Try 'hyprutils help' for more information" ;; + "") fail "Expected an Option" ;; + *) fail "Unexpected Option 'toggle $2'" ;; esac ;; esac