90
submitted 6 days ago by rayman30@lemmy.world to c/linux@lemmy.ml

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!-

top 31 comments
sorted by: hot top new old
[-] HelloRoot@lemy.lol 22 points 6 days ago* (last edited 6 days ago)

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

[-] rayman30@lemmy.world 19 points 6 days 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.

[-] Cyber@feddit.uk 7 points 6 days 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.world 9 points 6 days 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.

[-] Cyber@feddit.uk 7 points 6 days 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.world 2 points 6 days ago

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

[-] CallMeAl@piefed.zip 5 points 6 days 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.world 7 points 6 days 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@piefed.zip 2 points 6 days 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.world 1 points 6 days 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.

[-] MonkderVierte@lemmy.zip 3 points 6 days ago* (last edited 6 days 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.world 4 points 6 days ago

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

[-] db2@lemmy.world 2 points 6 days ago

What, if any, part did or does "AI" play in this app?

[-] rayman30@lemmy.world 12 points 6 days 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.

[-] ColdWater@lemmy.ca 1 points 6 days 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.world 2 points 6 days 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 1 points 6 days ago* (last edited 6 days 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.

[-] reader@lemmy.zip 1 points 6 days ago* (last edited 6 days ago)

does it work on xfce flatpaks?

[-] rayman30@lemmy.world 1 points 6 days 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.

[-] reader@lemmy.zip 1 points 6 days ago

can you update this app so it can modify the flatpak bundle?

[-] rayman30@lemmy.world 1 points 6 days 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.

[-] reader@lemmy.zip 1 points 6 days ago
this post was submitted on 19 Jul 2026
90 points (96.9% liked)

Linux

66604 readers
575 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 7 years ago
MODERATORS