diff --git a/modules/desktop/all.nix b/modules/desktop/all.nix index 7b8cc44..55af293 100644 --- a/modules/desktop/all.nix +++ b/modules/desktop/all.nix @@ -11,7 +11,6 @@ lib.my.makeSwitch { browser.all.enable = true; gaming.all.enable = true; media.all.enable = true; - notify.all.enable = true; screencast.all.enable = true; terminal.all.enable = true; wm.all.enable = true; diff --git a/modules/desktop/notify/all.nix b/modules/desktop/notify/all.nix deleted file mode 100644 index 78eea79..0000000 --- a/modules/desktop/notify/all.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ config, lib, ... }: -lib.my.makeSwitch { - inherit config; - optionName = "all desktop notify tools"; - optionPath = [ - "desktop" - "notify" - "all" - ]; - config' = { - my.desktop.notify = { - dunst.enable = true; - swaync.enable = true; - }; - }; -} diff --git a/modules/desktop/notify/dunst/default.nix b/modules/desktop/notify/dunst/default.nix deleted file mode 100644 index 9cdacb3..0000000 --- a/modules/desktop/notify/dunst/default.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: -lib.my.makeHomePackageConfig { - inherit config pkgs; - packageName = "dunst"; - packagePath = [ "dunst" ]; - optionPath = [ - "desktop" - "notify" - "dunst" - ]; - extraConfig = { - my.hm.xdg.configFile."dunst/dunstrc".source = ./dunstrc; - }; -} diff --git a/modules/desktop/notify/dunst/dunstrc b/modules/desktop/notify/dunst/dunstrc deleted file mode 100644 index 715870e..0000000 --- a/modules/desktop/notify/dunst/dunstrc +++ /dev/null @@ -1,459 +0,0 @@ -# See dunst(5) for all configuration options - -[global] - ### Display ### - - # Which monitor should the notifications be displayed on. - monitor = 0 - - # Display notification on focused monitor. Possible modes are: - # mouse: follow mouse pointer - # keyboard: follow window with keyboard focus - # none: don't follow anything - # - # "keyboard" needs a window manager that exports the - # _NET_ACTIVE_WINDOW property. - # This should be the case for almost all modern window managers. - # - # If this option is set to mouse or keyboard, the monitor option - # will be ignored. - follow = mouse - - ### Geometry ### - - # dynamic width from 0 to 300 - # width = (0, 300) - # constant width of 300 - width = 300 - - # The maximum height of a single notification, excluding the frame. - height = 300 - - # Position the notification in the top right corner - origin = top-right - - # Offset from the origin - offset = 5x15 - - # Scale factor. It is auto-detected if value is 0. - scale = 0 - - # Maximum number of notification (0 means no limit) - notification_limit = 20 - - ### Progress bar ### - - # Turn on the progess bar. It appears when a progress hint is passed with - # for example dunstify -h int:value:12 - progress_bar = true - - # Set the progress bar height. This includes the frame, so make sure - # it's at least twice as big as the frame width. - progress_bar_height = 10 - - # Set the frame width of the progress bar - progress_bar_frame_width = 1 - - # Set the minimum width for the progress bar - progress_bar_min_width = 150 - - # Set the maximum width for the progress bar - progress_bar_max_width = 300 - - # Corner radius for the progress bar. 0 disables rounded corners. - progress_bar_corner_radius = 2 - - # Corner radius for the icon image. - icon_corner_radius = 0 - - # Show how many messages are currently hidden (because of - # notification_limit). - indicate_hidden = yes - - # The transparency of the window. Range: [0; 100]. - # This option will only work if a compositing window manager is - # present (e.g. xcompmgr, compiz, etc.). (X11 only) - transparency = 0 - - # Draw a line of "separator_height" pixel height between two - # notifications. - # Set to 0 to disable. - # If gap_size is greater than 0, this setting will be ignored. - separator_height = 2 - - # Padding between text and separator. - padding = 8 - - # Horizontal padding. - horizontal_padding = 8 - - # Padding between text and icon. - text_icon_padding = 0 - - # Defines width in pixels of frame around the notification window. - # Set to 0 to disable. - frame_width = 3 - - # Defines color of the frame around the notification window. - frame_color = "#2A2C36" - - # Size of gap to display between notifications - requires a compositor. - # If value is greater than 0, separator_height will be ignored and a border - # of size frame_width will be drawn around each notification instead. - # Click events on gaps do not currently propagate to applications below. - gap_size = 4 - - # Define a color for the separator. - # possible values are: - # * auto: dunst tries to find a color fitting to the background; - # * foreground: use the same color as the foreground; - # * frame: use the same color as the frame; - # * anything else will be interpreted as a X color. - separator_color = frame - - # Sort messages by urgency. - sort = yes - - # Don't remove messages, if the user is idle (no mouse or keyboard input) - # for longer than idle_threshold seconds. - # Set to 0 to disable. - # A client can set the 'transient' hint to bypass this. See the rules - # section for how to disable this if necessary - # idle_threshold = 120 - - ### Text ### - - font = JetBrains Mono 11 - - # The spacing between lines. If the height is smaller than the - # font height, it will get raised to the font height. - line_height = 0 - - # Possible values are: - # full: Allow a small subset of html markup in notifications: - # bold - # italic - # strikethrough - # underline - # - # For a complete reference see - # . - # - # strip: This setting is provided for compatibility with some broken - # clients that send markup even though it's not enabled on the - # server. Dunst will try to strip the markup but the parsing is - # simplistic so using this option outside of matching rules for - # specific applications *IS GREATLY DISCOURAGED*. - # - # no: Disable markup parsing, incoming notifications will be treated as - # plain text. Dunst will not advertise that it has the body-markup - # capability if this is set as a global setting. - # - # It's important to note that markup inside the format option will be parsed - # regardless of what this is set to. - markup = full - - # The format of the message. Possible variables are: - # %a appname - # %s summary - # %b body - # %i iconname (including its path) - # %I iconname (without its path) - # %p progress value if set ([ 0%] to [100%]) or nothing - # %n progress value if set without any extra characters - # %% Literal % - # Markup is allowed - format = "%s\n%b" - - # Alignment of message text. - # Possible values are "left", "center" and "right". - alignment = left - - # Vertical alignment of message text and icon. - # Possible values are "top", "center" and "bottom". - vertical_alignment = center - - # Show age of message if message is older than show_age_threshold - # seconds. - # Set to -1 to disable. - show_age_threshold = 60 - - # Specify where to make an ellipsis in long lines. - # Possible values are "start", "middle" and "end". - ellipsize = middle - - # Ignore newlines '\n' in notifications. - ignore_newline = no - - # Stack together notifications with the same content - stack_duplicates = true - - # Hide the count of stacked notifications with the same content - hide_duplicate_count = false - - # Display indicators for URLs (U) and actions (A). - show_indicators = false - - ### Icons ### - - # Recursive icon lookup. You can set a single theme, instead of having to - # define all lookup paths. - enable_recursive_icon_lookup = true - - # Set icon theme (only used for recursive icon lookup) - icon_theme = Win11, breeze - # You can also set multiple icon themes, with the leftmost one being used first. - # icon_theme = "Adwaita, breeze" - - # Align icons left/right/top/off - icon_position = left - - # Scale small icons up to this size, set to 0 to disable. Helpful - # for e.g. small files or high-dpi screens. In case of conflict, - # max_icon_size takes precedence over this. - min_icon_size = 32 - - # Scale larger icons down to this size, set to 0 to disable - max_icon_size = 32 - - # Paths to default icons (only neccesary when not using recursive icon lookup) - icon_path = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/ - - ### History ### - - # Should a notification popped up from history be sticky or timeout - # as if it would normally do. - sticky_history = yes - - # Maximum amount of notifications kept in history - history_length = 20 - - ### Misc/Advanced ### - - # dmenu path. - dmenu = /usr/bin/dmenu -p dunst: - - # Browser for opening urls in context menu. - browser = /usr/bin/microsoft-edge-stable - - # Always run rule-defined scripts, even if the notification is suppressed - always_run_script = true - - # Define the title of the windows spawned by dunst - title = Dunst - - # Define the class of the windows spawned by dunst - class = Dunst - - # Define the corner radius of the notification window - # in pixel size. If the radius is 0, you have no rounded - # corners. - # The radius will be automatically lowered if it exceeds half of the - # notification height to avoid clipping text and/or icons. - corner_radius = 10 - - # Ignore the dbus closeNotification message. - # Useful to enforce the timeout set by dunst configuration. Without this - # parameter, an application may close the notification sent before the - # user defined timeout. - ignore_dbusclose = false - - ### Wayland ### - # These settings are Wayland-specific. They have no effect when using X11 - - # Uncomment this if you want to let notications appear under fullscreen - # applications (default: overlay) - layer = top - - # Set this to true to use X11 output on Wayland. - force_xwayland = false - - ### Legacy - - # Use the Xinerama extension instead of RandR for multi-monitor support. - # This setting is provided for compatibility with older nVidia drivers that - # do not support RandR and using it on systems that support RandR is highly - # discouraged. - # - # By enabling this setting dunst will not be able to detect when a monitor - # is connected or disconnected which might break follow mode if the screen - # layout changes. - force_xinerama = false - - ### mouse - - # Defines list of actions for each mouse event - # Possible values are: - # * none: Don't do anything. - # * do_action: Invoke the action determined by the action_name rule. If there is no - # such action, open the context menu. - # * open_url: If the notification has exactly one url, open it. If there are multiple - # ones, open the context menu. - # * close_current: Close current notification. - # * close_all: Close all notifications. - # * context: Open context menu for the notification. - # * context_all: Open context menu for all notifications. - # These values can be strung together for each mouse event, and - # will be executed in sequence. - mouse_left_click = do_action, close_current - mouse_middle_click = close_all - mouse_right_click = close_current - -# Experimental features that may or may not work correctly. Do not expect them -# to have a consistent behaviour across releases. -[experimental] - # Calculate the dpi to use on a per-monitor basis. - # If this setting is enabled the Xft.dpi value will be ignored and instead - # dunst will attempt to calculate an appropriate dpi value for each monitor - # using the resolution and physical size. This might be useful in setups - # where there are multiple screens with very different dpi values. - per_monitor_dpi = false - - -[urgency_low] - # IMPORTANT: colors have to be defined in quotation marks. - # Otherwise the "#" and following would be interpreted as a comment. - background = "#1E1E2E" - foreground = "#888888" - timeout = 10 - # Icon for notifications with low urgency, uncomment to enable - #default_icon = /path/to/icon - -[urgency_normal] - background = "#1E1E2E" - foreground = "#ffffff" - timeout = 10 - # Icon for notifications with normal urgency, uncomment to enable - default_icon = /home/imxyy/Pictures/icon/notice.png - -[urgency_critical] - background = "#1E1E2E" - foreground = "#CB2027" - #frame_color = "#94393E" - timeout = 0 - # Icon for notifications with critical urgency, uncomment to enable - default_icon = /home/imxyy/Pictures/icon/critical.png - -# Every section that isn't one of the above is interpreted as a rules to -# override settings for certain messages. -# -# Messages can be matched by -# appname (discouraged, see desktop_entry) -# body -# category -# desktop_entry -# icon -# match_transient -# msg_urgency -# stack_tag -# summary -# -# and you can override the -# background -# foreground -# format -# frame_color -# fullscreen -# new_icon -# set_stack_tag -# set_transient -# set_category -# timeout -# urgency -# icon_position -# skip_display -# history_ignore -# action_name -# word_wrap -# ellipsize -# alignment -# hide_text -# -# Shell-like globbing will get expanded. -# -# Instead of the appname filter, it's recommended to use the desktop_entry filter. -# GLib based applications export their desktop-entry name. In comparison to the appname, -# the desktop-entry won't get localized. -# -# SCRIPTING -# You can specify a script that gets run when the rule matches by -# setting the "script" option. -# The script will be called as follows: -# script appname summary body icon urgency -# where urgency can be "LOW", "NORMAL" or "CRITICAL". -# -# NOTE: It might be helpful to run dunst -print in a terminal in order -# to find fitting options for rules. - -# Disable the transient hint so that idle_threshold cannot be bypassed from the -# client -#[transient_disable] -# match_transient = yes -# set_transient = no -# -# Make the handling of transient notifications more strict by making them not -# be placed in history. -#[transient_history_ignore] -# match_transient = yes -# history_ignore = yes - -# fullscreen values -# show: show the notifications, regardless if there is a fullscreen window opened -# delay: displays the new notification, if there is no fullscreen window active -# If the notification is already drawn, it won't get undrawn. -# pushback: same as delay, but when switching into fullscreen, the notification will get -# withdrawn from screen again and will get delayed like a new notification -#[fullscreen_delay_everything] -# fullscreen = delay -#[fullscreen_show_critical] -# msg_urgency = critical -# fullscreen = show - -#[espeak] -# summary = "*" -# script = dunst_espeak.sh - -#[script-test] -# summary = "*script*" -# script = dunst_test.sh - -#[ignore] -# # This notification will not be displayed -# summary = "foobar" -# skip_display = true - -#[history-ignore] -# # This notification will not be saved in history -# summary = "foobar" -# history_ignore = yes - -#[skip-display] -# # This notification will not be displayed, but will be included in the history -# summary = "foobar" -# skip_display = yes - -#[signed_on] -# appname = Pidgin -# summary = "*signed on*" -# urgency = low -# -#[signed_off] -# appname = Pidgin -# summary = *signed off* -# urgency = low -# -#[says] -# appname = Pidgin -# summary = *says* -# urgency = critical -# -#[twitter] -# appname = Pidgin -# summary = *twitter.com* -# urgency = normal -# -#[stack-volumes] -# appname = "some_volume_notifiers" -# set_stack_tag = "volume" -# -# vim: ft=cfg diff --git a/modules/desktop/notify/swaync/config/config.json b/modules/desktop/notify/swaync/config/config.json deleted file mode 100644 index 8bf2251..0000000 --- a/modules/desktop/notify/swaync/config/config.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "$schema": "/etc/xdg/swaync/configSchema.json", - "positionX": "right", - "positionY": "top", - "control-center-positionX": "none", - "control-center-positionY": "none", - "control-center-margin-top": 8, - "control-center-margin-bottom": 8, - "control-center-margin-right": 8, - "control-center-margin-left": 8, - "control-center-height": 600, - "control-center-width": 400, - "fit-to-screen": false, - "layer": "top", - "control-center-layer": "top", - "cssPriority": "user", - "notification-icon-size": 40, - "notification-body-image-height": 100, - "notification-body-image-width": 200, - "notification-inline-replies": true, - "notification-2fa-action": false, - "timeout": 10, - "timeout-low": 5, - "timeout-critical": 0, - "notification-window-width": 317, - "keyboard-shortcuts": true, - "image-visibility": "when-available", - "transition-time": 200, - "hide-on-clear": false, - "hide-on-action": false, - "script-fail-notify": true, - "widgets": [ - "inhibitors", - "title", - "dnd", - "mpris", - "notifications" - ], - "widget-config": { - "inhibitors": { - "text": "Inhibitors", - "button-text": "Clear All", - "clear-all-button": true - }, - "title": { - "text": "Notifications", - "clear-all-button": true, - "button-text": "Clear All" - }, - "dnd": { - "text": "Do Not Disturb" - }, - "label": { - "max-lines": 5, - "text": "Label Text" - }, - "mpris": { - "image-size": 96, - "image-radius": 12 - } - } -} diff --git a/modules/desktop/notify/swaync/config/style.css b/modules/desktop/notify/swaync/config/style.css deleted file mode 100644 index 1e20bba..0000000 --- a/modules/desktop/notify/swaync/config/style.css +++ /dev/null @@ -1,410 +0,0 @@ -/* - * vim: ft=less - */ - -@define-color cc-bg rgba(42, 44, 54, 0.5); - -@define-color noti-border-color rgba(255, 255, 255, 0.15); -@define-color noti-bg rgba(42, 44, 54, 0.6); -@define-color noti-bg-hover rgba(52, 54, 64, 0.6); -@define-color noti-bg-focus rgba(55, 57, 67, 0.4); -@define-color noti-close-bg rgba(255, 255, 255, 0.1); -@define-color noti-close-bg-hover rgba(255, 255, 255, 0.15); - -@define-color text-color rgba(255, 255, 255, 0.6); -@define-color text-color-low rgba(136, 136, 136, 0.6); - -@define-color mpris-album-art-overlay rgba(52, 54, 64, 0.6); -@define-color mpris-button-hover rgba(55, 57, 67, 0.4); - -@define-color bg-selected rgb(0, 128, 255); - -* { - font-family: monospace; -} - -.low { - color: @text-color-low; -} - -.normal { - color: @text-color; -} - -.critical { - color: red; -} - - -.testing { - background-color: red; -} - -.notification-row { - all: unset; - font-size: 11px; - transition: all 200ms ease; - outline: none; - margin-bottom: 4px; - border-radius: 12px; -} - -.notification-row:hover { - background: transparent; -} - -.control-center .notification-row:focus, -.control-center .notification-row:hover { - opacity: 1; - background: transparent; -} - -.notification-row:focus .notification, -.notification-row:hover .notification { - /* box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.5); */ - /* box-shadow: 0px 0px 0px 3px @bg-selected; */ - box-shadow: none; -} - -.control-center .notification { - box-shadow: none; -} - -.control-center .notification-row { - opacity: 0.5; -} - -.notification { - background: @noti-bg; - transition: all 200ms ease; - border-radius: 12px; - margin: 6px 6px; - box-shadow: none; - padding: 0; -} - -.notification-content { - background: transparent; - padding: 6px; - border-radius: 12px; -} - -.close-button { - background: @noti-close-bg; - color: @text-color; - text-shadow: none; - padding: 0; - border-radius: 100%; - margin-top: 10px; - margin-right: 10px; - box-shadow: none; - border: none; - min-width: 24px; - min-height: 24px; -} - -.close-button:hover { - box-shadow: none; - background: @noti-close-bg-hover; - transition: all 0.15s ease-in-out; - border: none; -} - -.notification-default-action, -.notification-action { - padding: 4px; - margin: 0; - box-shadow: none; - background: @noti-bg; - border: 0px; - color: white; - transition: all 200ms ease; -} - -.notification-default-action:hover, -.notification-action:hover { - -gtk-icon-effect: none; - background: @noti-bg-hover; -} - -.notification-default-action { - border-radius: 12px; -} - -/* When alternative actions are visible */ -.notification-default-action:not(:only-child) { - border-bottom-left-radius: 0px; - border-bottom-right-radius: 0px; -} - -.notification-action { - border-radius: 0px; - border-top: none; - border-right: none; -} - -/* add bottom border radius to eliminate clipping */ -.notification-action:first-child { - border-bottom-left-radius: 12px; -} - -.notification-action:last-child { - border-bottom-right-radius: 12px; - border-right: 1px solid @noti-border-color; -} - -.image {} - -.body-image { - margin-top: 6px; - background-color: white; - border-radius: 12px; -} - -.summary { - font-size: 16px; - font-weight: bold; - background: transparent; - color: @text-color; - text-shadow: none; -} - -.time { - font-size: 16px; - font-weight: bold; - background: transparent; - color: @text-color; - text-shadow: none; - margin-right: 18px; -} - -.body { - font-size: 15px; - font-weight: normal; - background: transparent; - color: @text-color; - text-shadow: none; -} - -.control-center { - background: @cc-bg; - border-radius: 12px; - background-clip: border-box; - padding: 4px; - box-shadow: none; -} - -.control-center-list { - background: transparent; -} - -.control-center-list-placeholder { - opacity: 0.5; -} - -.floating-notifications { - background: transparent; -} - -/* Window behind control center and on all other monitors */ -.blank-window { - background: transparent; -} - -/*** Widgets ***/ - -/* Title widget */ -.widget-title { - margin: 8px; - font-size: 1.5rem; - font-weight: bold; - color: @text-color; -} - -.widget-title>button { - font-size: initial; - color: @text-color; - text-shadow: none; - background: @noti-bg; - border: 0px; - box-shadow: none; - border-radius: 12px; -} - -.widget-title>button:hover { - background: @noti-bg-hover; -} - -/* DND widget */ -.widget-dnd { - margin: 8px; - font-size: 1.1rem; - color: @text-color; -} - -.widget-dnd>switch { - font-size: initial; - border-radius: 12px; - background: @noti-bg; - border: 0px; - box-shadow: none; -} - -.widget-dnd>switch:checked { - background: @text-color-low; -} - -.widget-dnd>switch slider { - background: @noti-bg-hover; - border-radius: 12px; -} - -/* Label widget */ -.widget-label { - margin: 8px; -} - -.widget-label>label { - font-size: 1.1rem; -} - -/* Mpris widget */ -.widget-mpris { - color: @text-color -} - -.widget-mpris-player { - padding: 16px; - margin: 16px; - background-color: @mpris-album-art-overlay; - border-radius: 12px; - box-shadow: none; -} - -.widget-mpris-album-art { - border-radius: 12px; - box-shadow: none; -} - -.widget-mpris-player button { - /* The media player buttons (play, pause, next, etc...) */ - color: @text-color; - /*background-color: @mpris-button-hover;*/ -} - -.widget-mpris-player button:disabled { - /* The media player buttons (play, pause, next, etc...) */ - color: @text-color-low; - /*background-color: @mpris-button-hover;*/ -} - -.widget-mpris-player button:hover { - /* The media player buttons (play, pause, next, etc...) */ - background-color: @mpris-button-hover; - /*background-color: @mpris-button-hover;*/ -} - -.widget-mpris>box>button { - color: @text-color; -} - -.widget-mpris>box>button:disabled { - color: @text-color-low; -} - -.widget-mpris-title { - font-weight: bold; - font-size: 1.25rem; -} - -.widget-mpris-subtitle { - font-size: 1.1rem; -} - -/* Buttons widget */ -.widget-buttons-grid { - padding: 8px; - margin: 8px; - border-radius: 12px; - border: 0px; - background-color: @noti-bg; -} - -.widget-buttons-grid>flowbox>flowboxchild>button { - color: @text-color; - background: @noti-bg; - border: 0px; - border-radius: 12px; -} - -.widget-buttons-grid>flowbox>flowboxchild>button:hover { - background: @noti-bg-hover; -} - -/* Menubar widget */ -.widget-menubar>box>.menu-button-bar>button { - border: none; - background: transparent; - background: red; -} - -/* .AnyName { Name defined in config after # - * background-color: @noti-bg; - * padding: 8px; - * margin: 8px; - * border-radius: 12px; - * } - * - * .AnyName>button { - * background: transparent; - * border: none; - * } - * - * .AnyName>button:hover { - * background-color: @noti-bg-hover; - * } - */ - -.topbar-buttons>button { - /* Name defined in config after # */ - border: none; - background: transparent; - background: blue; -} - -/* Volume widget */ - -.widget-volume { - background-color: @noti-bg; - padding: 8px; - margin: 8px; - border-radius: 12px; -} - -/* Backlight widget */ -.widget-backlight { - background-color: @noti-bg; - padding: 8px; - margin: 8px; - border-radius: 12px; -} - -/* Title widget */ -.widget-inhibitors { - margin: 8px; - font-size: 1.5rem; -} - -.widget-inhibitors>button { - font-size: initial; - color: white; - text-shadow: none; - background: @noti-bg; - border: 1px solid @noti-border-color; - box-shadow: none; - border-radius: 12px; -} - -.widget-inhibitors>button:hover { - background: @noti-bg-hover; -} diff --git a/modules/desktop/notify/swaync/default.nix b/modules/desktop/notify/swaync/default.nix deleted file mode 100644 index f678c83..0000000 --- a/modules/desktop/notify/swaync/default.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: -lib.my.makeHomePackageConfig { - inherit config pkgs; - packageName = "swaync"; - packagePath = [ "swaynotificationcenter" ]; - optionPath = [ - "desktop" - "notify" - "swaync" - ]; - extraConfig = { - my.hm = { - programs.niri.settings.binds."Mod+End".action.spawn = [ - "swaync-client" - "-t" - "-sw" - ]; - xdg.configFile."swaync" = { - source = ./config; - recursive = true; - }; - }; - }; -} diff --git a/modules/desktop/wm/niri/config.nix b/modules/desktop/wm/niri/config.nix index 33aed95..f6bad51 100644 --- a/modules/desktop/wm/niri/config.nix +++ b/modules/desktop/wm/niri/config.nix @@ -130,11 +130,20 @@ "cliphist" "store" ] - # [ "${lib.getExe' pkgs.swaynotificationcenter "swaync"}" ] [ "noctalia-shell" ] ]; binds = + let + noctalia = + cmd: + [ + "noctalia-shell" + "ipc" + "call" + ] + ++ (pkgs.lib.splitString " " cmd); + in with config.my.hm.lib.niri.actions; { "Ctrl+Alt+T".action.spawn = [ @@ -148,16 +157,8 @@ ]; "Mod+G".action.spawn = [ config.my.desktop.browser.default.command ]; "Mod+E".action.spawn = [ "nautilus" ]; - "Mod+R".action.spawn = [ - "sh" - "-c" - "pkill wofi || wofi --color ~/.config/wal/colors" - ]; - "Mod+V".action.spawn = [ - "sh" - "-c" - "pkill ${lib.getExe pkgs.wofi} || ${lib.getExe pkgs.cliphist} list | wofi --dmenu --color ~/.config/wal/colors | cliphist decode | wl-copy" - ]; + "Mod+R".action.spawn = noctalia "launcher toggle"; + "Mod+V".action.spawn = noctalia "launcher clipboard"; "XF86AudioRaiseVolume" = { allow-when-locked = true; diff --git a/modules/desktop/wm/niri/default.nix b/modules/desktop/wm/niri/default.nix index 63ed087..efe4c5d 100644 --- a/modules/desktop/wm/niri/default.nix +++ b/modules/desktop/wm/niri/default.nix @@ -1,4 +1,4 @@ -args@{ +{ lib, config, pkgs, @@ -62,28 +62,11 @@ in playerctl brightnessctl - swaynotificationcenter nautilus noctalia-shell + xdg-terminal-exec ]; - programs.wofi.enable = true; - xdg.configFile."wofi" = { - source = ./wofi; - recursive = true; - }; - xdg.configFile."wal" = { - source = ./wal; - recursive = true; - }; - programs.waybar = { - enable = true; - systemd.enable = false; - }; - xdg.configFile."waybar/config.jsonc".text = builtins.toJSON (import ./waybar/config.nix args); - xdg.configFile."waybar/style.css" = { - source = ./waybar/style.css; - }; programs.noctalia-shell = { enable = true; @@ -107,6 +90,11 @@ in mSurfaceVariant = "#24283b"; }; settings = { + appLauncher = { + enableClipboardHistory = true; + useApp2Unit = true; + terminalCommand = "kitty -e"; + }; audio.mprisBlacklist = [ "firefox" "chromium" @@ -121,16 +109,13 @@ in widgets = { left = [ { - customIconPath = ""; - icon = ""; id = "ControlCenter"; useDistroLogo = true; } { - customFont = ""; + id = "Clock"; formatHorizontal = "HH:mm MM月dd日 ddd"; formatVertical = "HH mm - dd MM"; - id = "Clock"; useCustomFont = false; usePrimaryColor = true; } @@ -144,15 +129,15 @@ in showNetworkStats = true; } { - hideUnoccupied = false; id = "Workspace"; + hideUnoccupied = false; labelMode = "none"; } ]; center = [ { - hideMode = "hidden"; id = "MediaMini"; + hideMode = "hidden"; scrollingMode = "hover"; showAlbumArt = true; showVisualizer = true; @@ -161,22 +146,21 @@ in ]; right = [ { - hideWhenZero = true; id = "NotificationHistory"; + hideWhenZero = true; showUnreadBadge = true; } { - blacklist = [ ]; - colorizeIcons = false; id = "Tray"; + colorizeIcons = false; } { - displayMode = "onhover"; id = "Volume"; + displayMode = "onhover"; } { - displayMode = "onhover"; id = "Microphone"; + displayMode = "onhover"; } ]; }; @@ -184,24 +168,24 @@ in controlCenter = { cards = [ { - enabled = true; id = "profile-card"; + enabled = true; } { - enabled = true; id = "shortcuts-card"; + enabled = true; } { - enabled = true; id = "audio-card"; - } - { - enabled = false; - id = "weather-card"; - } - { enabled = true; + } + { + id = "weather-card"; + enabled = false; + } + { id = "media-sysmon-card"; + enabled = true; } ]; shortcuts = { @@ -235,4 +219,4 @@ in }; }; }; -} \ No newline at end of file +} diff --git a/modules/desktop/wm/niri/wal/colors b/modules/desktop/wm/niri/wal/colors deleted file mode 100644 index d0c6888..0000000 --- a/modules/desktop/wm/niri/wal/colors +++ /dev/null @@ -1,6 +0,0 @@ -#1e1e2e -#262636 -#d9e0ee -#89b4fa -#f38ba8 -#cba6f7 diff --git a/modules/desktop/wm/niri/waybar/config.nix b/modules/desktop/wm/niri/waybar/config.nix deleted file mode 100644 index feaa6e0..0000000 --- a/modules/desktop/wm/niri/waybar/config.nix +++ /dev/null @@ -1,99 +0,0 @@ -_: { - layer = "top"; - position = "top"; - exclusive = true; - passthrough = false; - gtk-layer-shell = true; - height = 0; - - modules-left = [ - "clock" - "cpu" - "memory" - "niri/workspaces" - ]; - modules-center = [ - "mpris" - ]; - modules-right = [ - "custom/notification" - "tray" - "wireplumber" - "wireplumber#source" - ]; - - "niri/workspaces" = { - format = "{value}"; - }; - cpu = { - interval = 1; - format = "󰞱 {}%"; - max-length = 10; - on-click = ""; - }; - memory = { - interval = 10; - format = " {used:0.1f}G"; - max-length = 10; - }; - "custom/notification" = { - tooltip = false; - format = "{icon}"; - format-icons = { - notification = ""; - none = ""; - dnd-notification = ""; - dnd-none = ""; - inhibited-notification = ""; - inhibited-none = ""; - dnd-inhibited-notification = ""; - dnd-inhibited-none = ""; - }; - return-type = "json"; - exec-if = "which swaync-client"; - exec = "swaync-client -swb"; - on-double-click = "swaync-client -t -sw"; - on-click-right = "swaync-client -d -sw"; - escape = true; - }; - tray = { - icon-size = 13; - tooltip = false; - spacing = 10; - }; - mpris = { - player = "musicfox"; - interval = 1; - format = "{status_icon} {artist} - {title}"; - max-length = 60; - status-icons = { - paused = ""; - playing = ""; - stopped = ""; - }; - tooltip = false; - on-scroll-up = "playerctl -p musicfox volume 0.05+"; - on-scroll-down = "playerctl -p musicfox volume 0.05-"; - }; - clock = { - format = " {:%H:%M  %m.%d}"; - tooltip = false; - }; - wireplumber = { - format = "󰋋 {volume}%"; - tooltip = false; - format-muted = "󰟎 Muted"; - on-click = "wpctl set-mute @DEFAULT_SINK@ toggle"; - on-click-middle = "pwvucontrol"; - scroll-step = 5; - }; - "wireplumber#source" = { - node-type = "Audio/Source"; - format = "󰍬 {volume}%"; - tooltip = false; - format-muted = "󰍭 Muted"; - on-click = "wpctl set-mute @DEFAULT_SOURCE@ toggle"; - on-click-middle = "pwvucontrol"; - scroll-step = 5; - }; -} diff --git a/modules/desktop/wm/niri/waybar/style.css b/modules/desktop/wm/niri/waybar/style.css deleted file mode 100644 index 729589d..0000000 --- a/modules/desktop/wm/niri/waybar/style.css +++ /dev/null @@ -1,240 +0,0 @@ -* { - border: none; - border-radius: 0; - font-family: monospace; - font-weight: bold; - font-size: 14px; - min-height: 0; -} - -window#waybar { - background: rgba(21, 18, 27, 0); - color: #cdd6f4; -} - -tooltip { - color: #cdd6f4; - font-family: monospace; - background: #1e1e2e; - border-radius: 10px; - border-width: 2px; - border-style: solid; - border-color: #2a2c36; -} - -tooltip label { - color: #cdd6f4; -} - -tooltip.background { - background-clip: padding-box; -} - -tooltip * { - padding: 4px; - background-color: transparent; - color: white; -} - -#workspaces button { - padding: 5px; - color: #313244; - margin-right: 5px; -} - -#workspaces button.focused { - color: #a6adc8; - border-radius: 10px; -} - -#workspaces button.urgent { - color: #11111b; - background: #a6e3a1; - border-radius: 10px; -} - -#workspaces button:hover { - background: #11111b; - color: #cdd6f4; - border-radius: 10px; -} - -#taskbar button { - padding: 5px; - color: #313244; - margin-right: 5px; -} - -#taskbar button.focused { - color: #a6adc8; - background: #eba0ac; - border-radius: 10px; -} - -#taskbar button.urgent { - color: #11111b; - background: #a6e3a1; - border-radius: 10px; -} - -#workspaces button:hover { - background: #11111b; - color: #cdd6f4; - border-radius: 10px; -} - -#tray menu { - color: #cdd6f4; - font-family: monospace; - background: #1e1e2e; - border-radius: 10px; - border-width: 2px; - border-style: solid; - border-color: #2a2c36; -} - -#custom-language, -#custom-updates, -#custom-caffeine, -#custom-weather, -#window, -#clock, -#battery, -#wireplumber, -#network, -#workspaces, -#taskbar, -#tray, -#custom-notification, -#mpd, -#mpris, -#cpu, -#memory, -#backlight { - background: #1e1e2e; - padding: 0px 10px; - margin: 3px 0px; - margin-top: 10px; - border: 1px solid #181825; -} - -#tray { - border-radius: 10px; - margin-right: 10px; -} - -#workspaces { - background: #1e1e2e; - border-radius: 10px; - margin-left: 10px; - padding-right: 0px; - padding-left: 5px; -} - -#taskbar { - background: #1e1e2e; - border-radius: 10px; - margin-left: 10px; - padding-right: 0px; - padding-left: 5px; -} - -#custom-language { - color: #f38ba8; - border-left: 0px; - border-right: 0px; -} - -#custom-updates { - color: #f5c2e7; - border-left: 0px; - border-right: 0px; - border-radius: 10px 0px 0px 10px; -} - -#custom-notification { - color: #cdd6f4; - font-size: 20px; - border-radius: 10px; - margin-right: 10px; -} - -#mpd { - color: rgba(97, 134, 214, 0.973); - background: #1e1e2e; - border-radius: 10px; - border: 1px solid #181825; -} - -#mpris { - color: rgba(97, 134, 214, 0.973); - background: #1e1e2e; - border-radius: 10px; - border: 1px solid #181825; - margin-right: 10px; -} - -#window { - border-radius: 10px; - margin-left: 60px; - margin-right: 60px; -} - -#window.empty { - border-radius: 0px; - background-color: transparent; -} - -window#waybar.empty #window { - padding: 0px; - margin: 0px; - border: 0px; - background-color: transparent; -} - -#clock { - color: #fab387; - border-radius: 10px 0px 0px 10px; - margin-left: 5px; - border-right: 0px; -} - -#network { - color: #f9e2af; - border-left: 0px; - border-right: 0px; -} - -#cpu { - color: #fab387; - border-radius: 0; - border-left: 0; - border-right: 0; -} - -#memory { - color: #fab387; - border-radius: 0px 10px 10px 0px; - border-left: 0; - border-right: 0; -} - -#wireplumber { - color: #89b4fa; - border-right: 0px; - border-radius: 10px 0px 0px 10px; -} - -#wireplumber.source { - color: #cba6f7; - margin-right: 5px; - border-left: 0px; - border-radius: 0 10px 10px 0; -} - -#battery { - color: #a6e3a1; - border-radius: 0 10px 10px 0; - margin-right: 10px; - border-left: 0px; -} diff --git a/modules/desktop/wm/niri/wofi/config b/modules/desktop/wm/niri/wofi/config deleted file mode 100644 index 71f7d6b..0000000 --- a/modules/desktop/wm/niri/wofi/config +++ /dev/null @@ -1,39 +0,0 @@ -## Wofi Config - -## General -show=drun -prompt=Apps -normal_window=true -layer=top -term=kitty - -## Geometry -width=500px -height=305px -location=0 -orientation=vertical -halign=fill -line_wrap=off -dynamic_lines=false - -## Images -allow_markup=true -allow_images=true -image_size=24 - -## Search -exec_search=false -hide_search=false -parse_search=false -insensitive=false - -## Other -hide_scroll=true -no_actions=true -sort_order=default -gtk_dark=true -filter_rate=100 - -## Keys -key_expand=Tab -key_exit=Escape diff --git a/modules/desktop/wm/niri/wofi/style.css b/modules/desktop/wm/niri/wofi/style.css deleted file mode 100644 index 5c07201..0000000 --- a/modules/desktop/wm/niri/wofi/style.css +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (C) 2020-2022 Aditya Shakya -*/ - -/** ********** Fonts ********** **/ -* { - font-family: monospace; - font-size: 12px; -} - -#window { - background-color: --wofi-color0; - color: --wofi-color2; - border: 2px solid --wofi-color1; - border-radius: 0px; -} - -#outer-box { - padding: 20px; -} - -#input { - background-color: --wofi-color1; - border: 0px solid --wofi-color3; - padding: 8px 12px; -} - -#scroll { - margin-top: 20px; -} - -#inner-box { -} - -#img { - padding-right: 8px; -} - -#text { - color: --wofi-color2; -} - -#text:selected { - color: --wofi-color0; -} - -#entry { - padding: 6px; -} - -#entry:selected { - background-color: --wofi-color3; - color: --wofi-color0; -} - -#unselected { -} - -#selected { -} - -#input, #entry:selected { - border-radius: 4px; -}