Repository navigation
Releases
v1.4
Import several packs at once
One pack rarely covers every app on a phone. Until now an import took exactly one icon pack or theme, so an app the pack had no artwork for could only fall back to its own icon.
Importing now takes several at a time: icon-pack APKs, .mtz themes, or packs already installed on the phone.
- The first one picked is the main source. Wherever it has an icon for an app, that icon is used. It also supplies the theme's name, author and description, and the icon back, mask, calendar and clock.
- The rest fill the gaps, in the order picked. An app the main source has no artwork for takes its icon from the next pack that has one, before falling back to the app's own icon.
- Any app can be switched by hand. The icon picker under Manual replacement offers every pack's icons, with a filter at the top to show just one pack. Wallpapers from every picked theme are offered too.
- Picking files: select more than one file in the system file picker.
- Installed icon packs: long-press a pack to start selecting, then tap to add or remove others. The number on each row is its order, and 1 is the main source. Tap Import when done, or press Back to clear the selection. A plain tap with nothing selected still imports that one pack straight away.
- Saved tweaks remember every pack, in order, so reopening one brings back icons picked from the extra packs as well. If any of those packs has been moved or uninstalled since, the app names it and asks you to import again.
Fixes
- A user app's preview now matches the build. Where a pack has two drawables for the same activity, the app list previewed the last one while the theme was built with the first, so a tone curve drawn on that cell could miss the icon actually written. Both now use the first.
- No more wrong icons after switching sources. A preview still decoding from the previous pack or theme could land in the new one's cache. MTZ themes reuse the same entry names, so this could show one theme's icon in another's app list.
- Opening several MTZ files no longer crashes. Each one used to unpack into the same temporary file, so opening a second overwrote the first while it was still open.
Also
- The icon picker says how many icons match in total, instead of reporting the first 900 as all there are.
- A manual Test release workflow builds a signed APK from any branch as a downloadable artifact, without tagging or publishing a release.
v1.3.1
A fix release for 1.3.
Picking an icon for Gallery now works
Choosing an icon for Gallery under Manual replacement had no effect: the built theme kept showing the icon pack's own gallery artwork instead of the one picked.
An app can be written into a theme under more than one name — the name ZTE's stock themes use, the name of the activity your phone actually exposes, and the package on its own. Assigning an icon only claimed the first, while the pack's own artwork for the same package filled the other two, so the app answered to three files holding different pictures and the chosen one was not what appeared.
Gallery was the only system app this could affect, because com.android.gallery3d is the only one of these packages that icon packs also ship their own artwork for — which is why every other system app took its manual icon correctly.
Stock themes name a system app with exactly one file, so assigning an icon now reserves that package and the theme carries the single stock-named file, exactly as a stock theme does. Phone and Contacts share com.android.contacts, where one file could only ever show one of the two, so those are left as they were.
System apps with no artwork are no longer blank
A system app the icon pack has no artwork for showed an empty cell, with nothing to preview, select or put a tone curve on — on a nubia Z70 Ultra that was AI Assistant, Compass and Community. Those cells now fall back to the app's own launcher icon and go through the same shape, tint and curve pipeline as everything else, which is what app cells further down the screen already did.
Also
The theme format notes now record why a system app has to answer to exactly one file, including what was tried and did not work, so the reasoning is not lost.
v1.3
Saved tweaks
Getting a pack to look right is rarely one sitting. A shape, a tint, a blend mode, then a pass over the icons that still don't match — and until now, closing the app threw all of it away. Reopening the same pack tomorrow meant starting from the top.
The home screen now has a Saved tweaks gallery. Each card shows the icons as they actually looked when it was saved, so you recognise a set at a glance rather than by file name.
- Building saves automatically. The point at which the work is worth keeping is the point you export it, so no extra step is needed. Save tweaks on the configure screen is there for parking a half-finished set.
- Tap a card to carry on editing. Long-press for Edit, Build and Remove — Build goes straight from the gallery to a finished theme.
- What's kept: the theme's names, author and description, the shape and composition, the tint colour, strength and blend mode, every per-icon tone curve, every manual icon assignment, the wallpaper choice and the output file name.
- The pack or theme itself is not copied. An icon-pack APK or an
.mtzruns to tens of megabytes, and copying one per saved set would cost more storage than the themes they build, so a saved set points at the file it came from. If that file is later moved, deleted or uninstalled, the app says so and asks you to import it again — the tweaks are still there to carry on from. - Removing a saved set removes only the set. The pack it was made from, and any theme already built from it, are left alone.
Normalize keeps the curve you drew
Normalize pulls a group of selected icons to the same average brightness. It used to do that from scratch, which quietly discarded any tone curve you had already drawn over them.
It now measures the icons as they look right now and shifts the curve you drew by that amount instead of replacing it. Draw the shape you want, then even the group out — in either order, and as many times as you like.
v1.2
Tint, reworked
Icon packs are rarely internally consistent. Some glyphs arrive bright, some almost black, and one tint colour lands differently on every one of them. This release turns tinting from a single slider into a system for making a mixed pack look like one set.
Four blend modes now decide how an icon's own grayscale shading meets the tint colour:
- Multiply — the classic. White becomes the tint, black stays black.
- Overlay — punchier. Darkens below mid-grey, lightens above it.
- Soft Light — the same idea without Overlay's hard midpoint, for a subtler recolour.
- Lighten — keeps whichever of the shading or the tint is brighter, which rescues artwork too dark to read once tinted.
Blend mode sets the character of the whole theme; the tone curve from 1.1 is what fixes the icons that still don't match. Select them in the manual-replacement grid, then drag the curve over their combined histogram — or tap Normalize to pull them all to the same average brightness in one step. One global look, one per-icon correction.
Faster
Building a theme is roughly 15× faster. A 161-icon pack with a tint and a fixed shape went from about 56 seconds to under 4 on a nubia NX733J.
Two things were behind it. The tint ran its full floating-point blend for every channel of every pixel, when the result only depends on a 0–255 grey level and one tint channel — 768 possible answers, recomputed millions of times. It is now tabulated once per image. Separately, the shaped background plate was rebuilt from scratch for every icon in the pack, though it is identical for all of them; it is now built once.
The in-app preview got the same treatment: the icon grid no longer re-renders on every tick of a slider drag, the preview tiles share one background plate instead of building one each, and the calendar and clock previews are cached.
Fixed
- Calendar and clock now follow the icon size, background size and composition settings. They only ever followed the shape and tint — their frames were always composed at full size, so a 60% background or a 110% icon silently stopped at the dynamic icons. Both now go through the same rendering path as an ordinary app icon, so the settings can't drift apart again. Generated clock hands scale with the dial.
- Preview icons are a fixed set of five common apps plus the calendar and clock, always visible, rather than one icon you had to pick.
- Icon size and background size moved under a collapsible Icon & background size heading, since they are adjusted far less often than composition and tint.
v1.1
v1.0
Full Changelog: https://github.com/nathanatgit/ThemePorter/commits/v1.0