From 89115e2fd99176f0a9942c1cdbb1ea18c684a152 Mon Sep 17 00:00:00 2001 From: Arpit Chakladar Date: Sat, 10 Oct 2026 05:13:35 +0530 Subject: fix(eww): resolve terminal app icons --- modules/desktop/eww/bar/bar.nix | 11 ++++++++++- modules/desktop/eww/bar/niri-status.lua | 18 ++++++++++++++++-- modules/file-management/yazi/default.nix | 3 ++- modules/networking/bluetui/default.nix | 2 +- modules/networking/impala/default.nix | 2 +- 5 files changed, 30 insertions(+), 6 deletions(-) diff --git a/modules/desktop/eww/bar/bar.nix b/modules/desktop/eww/bar/bar.nix index 009b28c..98b4003 100644 --- a/modules/desktop/eww/bar/bar.nix +++ b/modules/desktop/eww/bar/bar.nix @@ -78,7 +78,16 @@ niri-status = mkLuaScript { name = "niri-status"; - path = ./niri-status.lua; + path = pkgs.writeText "eww-niri-status.lua" ( + builtins.replaceStrings + [ "@@impala-icon@@" "@@bluetui-icon@@" "@@yazi-icon@@" ] + [ + config.desktop.icons.apps.impala + config.desktop.icons.apps.bluetui + config.desktop.icons.apps.yazi + ] + (builtins.readFile ./niri-status.lua) + ); description = "Emit workspace and active window information list."; luaPackages = ps: [ ps.lgi diff --git a/modules/desktop/eww/bar/niri-status.lua b/modules/desktop/eww/bar/niri-status.lua index cdeb89b..c54aa9b 100644 --- a/modules/desktop/eww/bar/niri-status.lua +++ b/modules/desktop/eww/bar/niri-status.lua @@ -74,6 +74,11 @@ do end local icon_cache = {} +local icon_aliases = { + impala = "@@impala-icon@@", + bluetui = "@@bluetui-icon@@", + ["file-explorer"] = "@@yazi-icon@@", +} local function g_list_to_table(gl) if gl == nil then @@ -125,15 +130,24 @@ local function resolve_icon_path(app_id) end end + local alias = icon_aliases[string.lower(app_id)] + if alias then + local ok_alias, lookup = pcall(icon_theme.lookup_icon, icon_theme, alias, 24, Gtk.IconLookupFlags.FORCE_SIZE) + if ok_alias and lookup then + icon_path = lookup:get_filename() or "" + end + end + local gicon = app_info and app_info:get_icon() - if gicon then + if icon_path == "" and gicon then local ok2, lookup = pcall(icon_theme.lookup_by_gicon, icon_theme, gicon, 24, Gtk.IconLookupFlags.FORCE_SIZE) if ok2 and lookup then icon_path = lookup:get_filename() or "" end end if icon_path == "" then - local ok2, lookup = pcall(icon_theme.lookup_icon, icon_theme, app_id, 24, Gtk.IconLookupFlags.FORCE_SIZE) + local icon_name = icon_aliases[string.lower(app_id)] or app_id + local ok2, lookup = pcall(icon_theme.lookup_icon, icon_theme, icon_name, 24, Gtk.IconLookupFlags.FORCE_SIZE) if ok2 and lookup then icon_path = lookup:get_filename() or "" end diff --git a/modules/file-management/yazi/default.nix b/modules/file-management/yazi/default.nix index b56c816..54c740e 100644 --- a/modules/file-management/yazi/default.nix +++ b/modules/file-management/yazi/default.nix @@ -7,6 +7,7 @@ }: let cfg = config.file-management.yazi; + icons = config.desktop.icons.apps; yaziFileChooserScript = pkgs.writeShellApplication { name = "yazi-file-chooser"; @@ -76,7 +77,7 @@ in xdg.desktopEntries."yazi" = { name = "Yazi"; exec = "${lib.getExe config.terminal.kitty.package} --class yazi -e ${lib.getExe cfg.package}"; - icon = "yazi"; + icon = icons.yazi; categories = [ "Utility" ]; comment = "Terminal file manager"; terminal = false; diff --git a/modules/networking/bluetui/default.nix b/modules/networking/bluetui/default.nix index 782b653..8f5efe2 100644 --- a/modules/networking/bluetui/default.nix +++ b/modules/networking/bluetui/default.nix @@ -27,7 +27,7 @@ in config = lib.mkIf cfg.enable { xdg.desktopEntries."bluetui" = { name = "bluetui"; - exec = "${lib.getExe config.terminal.kitty.package} -e ${lib.getExe cfg.package}"; + exec = "${lib.getExe config.terminal.kitty.package} --class bluetui -e ${lib.getExe cfg.package}"; icon = icons.bluetui; categories = [ "Network" ]; comment = "Bluetooth TUI client"; diff --git a/modules/networking/impala/default.nix b/modules/networking/impala/default.nix index 28ab8be..f054571 100644 --- a/modules/networking/impala/default.nix +++ b/modules/networking/impala/default.nix @@ -27,7 +27,7 @@ in config = lib.mkIf cfg.enable { xdg.desktopEntries."impala" = { name = "impala"; - exec = "${lib.getExe config.terminal.kitty.package} -e ${lib.getExe cfg.package}"; + exec = "${lib.getExe config.terminal.kitty.package} --class impala -e ${lib.getExe cfg.package}"; icon = icons.impala; categories = [ "Network" ]; comment = "TUI for managing wifi on Linux"; -- cgit v1.2.3