# Hyprpanel is the bar on top of the screen # Display informations like workspaces, battery, wifi, ... { pkgs, config, inputs, ... }: let transparentButtons = config.var.theme.bar.transparentButtons; accent = "#${config.lib.stylix.colors.base0D}"; accent-alt = "#${config.lib.stylix.colors.base03}"; background = "#${config.lib.stylix.colors.base00}"; background-alt = "#${config.lib.stylix.colors.base01}"; foreground = "#${config.lib.stylix.colors.base05}"; font = "${config.stylix.fonts.serif.name}"; fontSize = "${toString config.stylix.fonts.sizes.desktop}px"; rounding = config.var.theme.rounding; border-size = config.var.theme.border-size; gaps-out = config.var.theme.gaps-out; gaps-in = config.var.theme.gaps-in; floating = config.var.theme.bar.floating; transparent = config.var.theme.bar.transparent; position = config.var.theme.bar.position; location = config.var.location; username = config.var.username; weatherapikey = config.var.weatherapikey; in { imports = [ inputs.hyprpanel.homeManagerModules.hyprpanel ]; programs.hyprpanel = { enable = true; systemd.enable = true; hyprland.enable = true; overwrite.enable = true; layout = { "bar.layouts" = { "0" = { left = [ "dashboard" "workspaces" ]; middle = [ "media" ]; right = [ "volume" "network" "bluetooth" "battery" "cputemp" "systray" "clock" "notifications" ]; }; "*" = { left = [ "dashboard" "workspaces" ]; middle = [ "clock" ]; right = [ "volume" "notifications" ]; }; }; }; override = { theme.bar.buttons.workspaces.hover = accent-alt; theme.bar.buttons.workspaces.active = accent; theme.bar.buttons.workspaces.available = accent-alt; theme.bar.buttons.workspaces.occupied = accent; theme.bar.menus.background = background; theme.bar.menus.card = background-alt; theme.bar.menus.label = foreground; theme.bar.menus.text = foreground; theme.bar.menus.popover.text = foreground; theme.bar.menus.popover.background = background-alt; theme.bar.menus.card_radius = "${toString rounding}px"; theme.bar.menus.border.size = "${toString border-size}px"; theme.bar.menus.border.color = "${accent}"; theme.bar.menus.border.radius = "${toString rounding}px"; theme.bar.menus.listitems.active = "${accent}"; theme.bar.menus.icons.active = "${accent}"; theme.bar.menus.switch.enabled = "${accent}"; theme.bar.menus.check_radio_button.active = "${accent}"; theme.bar.menus.buttons.default = "${accent}"; theme.bar.menus.buttons.active = "${accent}"; theme.bar.menus.iconbuttons.active = "${accent}"; theme.bar.menus.progressbar.foreground = "${accent}"; theme.bar.menus.slider.primary = "${accent}"; theme.bar.menus.tooltip.background = "${background-alt}"; theme.bar.menus.tooltip.text = "${foreground}"; theme.bar.menus.dropdownmenu.background = "${background-alt}"; theme.bar.menus.dropdownmenu.text = "${foreground}"; theme.bar.margin_top = "${if position == "top" then toString (gaps-in * 2) else "0"}px"; theme.bar.margin_bottom = "${if position == "top" then "0" else toString (gaps-in * 2)}px"; theme.bar.margin_sides = "${toString gaps-out}px"; theme.bar.border_radius = "${toString rounding}px"; theme.bar.menus.monochrome = true; theme.bar.buttons.monochrome = true; theme.bar.outer_spacing = if floating && transparent then "0" else "8"; theme.bar.buttons.y_margins = if floating && transparent then "0" else "8"; theme.bar.background = "${background + (if transparentButtons then "00" else "")}"; theme.bar.buttons.background = "${(if transparent then background else background-alt) + (if transparentButtons then "00" else "")}"; theme.bar.buttons.icon = "${accent}"; theme.bar.buttons.notifications.background = "${background-alt}"; theme.bar.buttons.hover = "${background}"; theme.bar.buttons.notifications.hover = "${background}"; theme.bar.buttons.notifications.total = "${accent}"; theme.bar.buttons.notifications.icon = "${accent}"; theme.notification.background = "${background-alt}"; theme.notification.actions.background = "${accent}"; theme.notification.actions.text = "${foreground}"; theme.notification.label = "${accent}"; theme.notification.border = "${background-alt}"; theme.notification.text = "${foreground}"; theme.notification.labelicon = "${accent}"; theme.osd.bar_color = "${accent}"; theme.osd.bar_overflow_color = "${accent-alt}"; theme.osd.icon = "${background}"; theme.osd.icon_container = "${accent}"; theme.osd.label = "${accent}"; theme.osd.bar_container = "${background-alt}"; theme.bar.menus.menu.media.background.color = "${background-alt}"; theme.bar.menus.menu.media.card.color = "${background-alt}"; theme.bar.menus.menu.media.card.tint = 90; theme.bar.floating = if floating then "true" else "false"; theme.bar.buttons.padding_x = "0.6rem"; theme.bar.buttons.padding_y = "0.3rem"; theme.bar.buttons.spacing = "0.1em"; theme.bar.buttons.text = foreground; theme.bar.location = position; theme.bar.transparent = transparent; theme.font.name = font; theme.font.size = fontSize; theme.bar.buttons.dashboard.spacing = "0.2em"; }; settings = { bar.battery.hideLabelWhenFull = true; bar.launcher.icon = ""; bar.clock.format = "%a, %d %b %H:%M"; menus.clock.time.military = true; menus.clock.time.hideSeconds = true; menus.clock.weather.unit = "metric"; menus.clock.weather.key = weatherapikey; menus.clock.weather.location = location; theme.osd.orientation = "vertical"; theme.osd.location = "left"; theme.osd.radius = "${toString rounding}px"; theme.osd.margins = "0px 0px 0px 10px"; theme.osd.muted_zero = true; wallpaper.enable = false; bar.media.show_active_only = true; bar.workspaces.monitorSpecific = true; bar.workspaces.hideUnoccupied = false; bar.windowtitle.label = true; bar.volume.label = false; bar.network.truncation_size = 12; bar.bluetooth.label = false; menus.dashboard.powermenu.avatar.image = "/home/${username}/.profile_picture.png"; menus.dashboard.powermenu.confirmation = false; menus.dashboard.shortcuts.left.shortcut1.icon = ""; menus.dashboard.shortcuts.left.shortcut1.command = "firefox"; menus.dashboard.shortcuts.left.shortcut1.tooltip = "Firefox"; menus.dashboard.shortcuts.left.shortcut2.icon = "󰅶"; menus.dashboard.shortcuts.left.shortcut2.command = "caffeine"; menus.dashboard.shortcuts.left.shortcut2.tooltip = "Caffeine"; menus.dashboard.shortcuts.left.shortcut3.icon = "󰖔"; menus.dashboard.shortcuts.left.shortcut3.command = "night-shift"; menus.dashboard.shortcuts.left.shortcut3.tooltip = "Night-shift"; menus.dashboard.shortcuts.left.shortcut4.icon = ""; menus.dashboard.shortcuts.left.shortcut4.command = "menu"; menus.dashboard.shortcuts.left.shortcut4.tooltip = "Search Apps"; menus.dashboard.shortcuts.right.shortcut1.icon = ""; menus.dashboard.shortcuts.right.shortcut1.command = "hyprpicker -a"; menus.dashboard.shortcuts.right.shortcut1.tooltip = "Color Picker"; menus.dashboard.shortcuts.right.shortcut3.icon = "󰄀"; menus.dashboard.shortcuts.right.shortcut3.command = "screenshot region swappy"; menus.dashboard.shortcuts.right.shortcut3.tooltip = "Screenshot"; menus.dashboard.stats.enabled = false; bar.customModules.cpuTemp.sensor = "/sys/devices/platform/thinkpad_hwmon/hwmon/hwmon5/temp1_input"; }; }; }