I made a small tool for KDE Plasma (and other freedesktop desktops) that lets you easily customize single app icons:

  • Use your own images or library
  • Copy icon from another app
  • Pick one icon from any installed theme (without switching global theme)
  • Built-in pixel editor to create your own
  • Batch apply, undo, overrides, missing icons overview
  • Import image to turn it into an icon

Completely user-level, safe, and reversible. No manual .desktop editing.

GitHub: https://github.com/rayman1972/kappicon

AUR: kappicon or kappicon-git

Feedback welcome!-

  • HelloRoot@lemy.lol
    link
    fedilink
    English
    arrow-up
    21
    ·
    1 day ago

    in kde plasma this is possible by right clicking the start menu and selecting edit applications.

    • rayman30@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      19
      ·
      1 day ago

      But this does more than that. Not only do you not have to deal with paths, it instantly shows you any icon from any theme installed, You can also opt for creating your own icon on a canvas, or import an image ‘jpg, webm, png’ and have it made into an icon. You can choose the shape of your icon (round, rounded corners, square). Heck, you can even import a picture with multiple icons and zoom/center the one you want. Sure, all of it is possible manually, but this tool makes it very easy, and creates backups where you can easily revert.

  • MonkderVierte@lemmy.zip
    link
    fedilink
    arrow-up
    3
    ·
    23 hours ago

    without root

    That’s a bit superfluous, no? If any menu/launcher editor needs root, then they do it wrong.

    Edit: oh, for Mac?

    • rayman30@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      4
      ·
      22 hours ago

      Mentioning ‘no root’ keeps it simple and welcoming for beginners while still addressing the concern. And no, this is not for Mac.

  • SayCyberOnceMore@feddit.uk
    link
    fedilink
    English
    arrow-up
    7
    ·
    1 day ago

    Why start at version 3.0?

    Which appears to have been only uploaded a few hours ago…

    To a repo created by system-rw which joined github a few days ago…

    Interested in the back story for this.

    • rayman30@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      9
      ·
      1 day ago

      It is a continuation of the work started by system-rw, who was the initiator for creating macosicons-linux. His use was to apply (mac) icon sets in batch, downloaded from some website. His software was on version 2.0, so when I forked it and modified the program to do many other things, it became version 3.0. I liked the idea of easily changing icons in a way that is user friendly, but I found that system-rw’s solution was too narrow and focused for only one specific goal. I broadened it to be a comprehensive icon editor / replacer. I did upload it a few hours ago, indeed, and that is why I am trying to get people to be aware of the app… It’s because I feel it could be a useful tool for opendesktop users.

      • SayCyberOnceMore@feddit.uk
        link
        fedilink
        English
        arrow-up
        7
        ·
        1 day ago

        Ok, thanks.

        Seems system-rw only created v1.0 approx ~5 days ago when their account was created, so these are definitely fast moving projects.

        • rayman30@lemmy.worldOP
          link
          fedilink
          English
          arrow-up
          2
          ·
          1 day ago

          Being on leave does give me the time and mental space to really focus and iterate quickly, I suppose. :)

  • CallMeAl (like Alan)@piefed.zip
    link
    fedilink
    English
    arrow-up
    5
    ·
    1 day ago

    Interesting approach to use a shell script with multiple in-line python calls inside shell functions. What is the intent behind this design vs doing it fully in python?

    • rayman30@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      7
      ·
      1 day ago

      This design is inherited from the original macosicons-linux project by system-rw. The shell script + inline Python approach was already there for handling installation, XDG paths, desktop entry creation, icon cache refresh, and other system-level tasks. I kept the same structure when I forked and expanded it because it works well for a small utility ; shell for the “plumbing”, Python/PyQt6 for the actual GUI and logic. It’s pragmatic rather than pure. I might move more of it to a fully Python app in the future as the project grows, but for now it keeps things simple and close to the original setup.

      • CallMeAl (like Alan)@piefed.zip
        link
        fedilink
        English
        arrow-up
        2
        ·
        1 day ago

        Help me understand, how does it work well (or better than either pure bash or pure python)? From what I know, calling python multiple times in a shell script is very inefficient vs running a single full python script.

        Also, for maintainability I try to avoid in-lining another language in a shell script as it is almost always more confusing code because of escapes. What am I missing that makes this way better?

        • rayman30@lemmy.worldOP
          link
          fedilink
          English
          arrow-up
          1
          ·
          1 day ago

          The shell + inline Python bits are mostly because I forked from the original macosicons-linux project, which already used that pattern. The shell script is convenient for installation tasks (XDG paths, optional deps, desktop entry, cache updates, etc.) ; things that feel natural in bash for small Linux tools. For the CLI: the small Python calls are quick one off things, not performance heavy. The main GUI is pure Python/PyQt6 of course. You’re right though: spawning Python multiple times isn’t the most efficient, and inline code can be messy with escaping. It’s more pragmatic than beautiful. I kept it this way to get things working fast, which is not ideal long-term. If there’s a small user base and the program is actively being used, I’ll probably rewrite the whole thing.

  • ColdWater@lemmy.ca
    link
    fedilink
    arrow-up
    1
    ·
    1 day ago

    Very nice, will this work with wm? I’m not with my computer at the moment so I can’t test it

    • rayman30@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      2
      ·
      23 hours ago

      It should work with most window managers, but with some limitations. kAppIcon edits user-level .desktop files and installs icons into your personal ~/.local/share/icons/hicolor theme. This is the standard freedesktop way, so it works on any desktop/WM that respects the spec (most do).

      However: The GUI is built with PyQt6, so you need a working Qt6 environment (works fine on Wayland too). Some features like automatic icon cache refresh or menu updates depend on the desktop environment (Plasma does it best, but it also runs gtk-update-icon-cache for GTK-based setups).

      On pure minimal WMs (i3, Hyprland, etc.) it will still apply the icons, but you may need to restart your menu/panel or run update-desktop-database manually sometimes. If you test it, let me know how it goes.

    • ferric_carcinization@lemmy.ml
      link
      fedilink
      English
      arrow-up
      1
      ·
      1 day ago

      kAppIcon is a small icon manager for KDE Plasma and other freedesktop desktops.

      According to the Readme, yes.

      I didn’t look too deeply, but I assume it modifies .desktop files stored in $XDG_DATA_HOME/applications/ and/or copies system.desktop files there to override them with modified versions.

      If it works like I assume, it should work with anything that reads .desktop files from the standard locations.

    • rayman30@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      12
      ·
      1 day ago

      The only “AI” involved was occasional use of GitHub Copilot for trivial autocomplete/suggestions, the same way many developers use it for boilerplate. All architecture, features, UI design, and logic are 100% human-made.

      • db2@lemmy.world
        link
        fedilink
        arrow-up
        4
        arrow-down
        1
        ·
        1 day ago

        You are now tagged “AIdiot”. As for performative, you’re the one copy-pasting this ultra low effort reply.

        Quick, how many Rs are in strawberry?

        • ReCursing@feddit.uk
          link
          fedilink
          English
          arrow-up
          1
          arrow-down
          5
          ·
          1 day ago

          ohohohohoho what a funny person you are. Why do you think you deserve anything more than a low effort response?

    • rayman30@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      23 hours ago

      It works partially with Flatpaks on XFCE (or any desktop)

      It can change the icon for the Flatpak launcher that appears in your menu. It edits the user .desktop file that Flatpak generates (usually in ~/.local/share/applications/).

      However, Flatpaks are sandboxed, so changing the icon inside the Flatpak itself (what you see when the app is running) is not possible with this tool — that would require modifying the Flatpak bundle.

      So: menu/panel icon = yes. In-app icon = no.

        • rayman30@lemmy.worldOP
          link
          fedilink
          English
          arrow-up
          1
          ·
          22 hours ago

          Unfortunately that’s not possible with this tool (and not really recommended). Flatpaks are sandboxed and their bundles are read-only by design. Modifying them directly would break the sandbox and cause update problems. What kAppIcon can do is change the launcher icon that appears in your menu and panel for the Flatpak, that works fine. If you want to change the icon inside the running Flatpak app, you’d need a different approach (like runtime overrides or repackaging the Flatpak), which is outside the scope of this tool.