<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://blog.muntashir.dev/feed.xml" rel="self" type="application/atom+xml" /><link href="https://blog.muntashir.dev/" rel="alternate" type="text/html" /><updated>2026-06-01T04:50:05+00:00</updated><id>https://blog.muntashir.dev/feed.xml</id><title type="html">Muntashir’s Blog</title><subtitle>The blog of a computer engineer from a third-world country</subtitle><author><name>Muntashir Al-Islam</name></author><entry><title type="html">Six Years of App Manager</title><link href="https://blog.muntashir.dev/2026/06/01/six-years-of-app-manager/" rel="alternate" type="text/html" title="Six Years of App Manager" /><published>2026-06-01T04:42:00+00:00</published><updated>2026-06-01T04:42:00+00:00</updated><id>https://blog.muntashir.dev/2026/06/01/six-years-of-app-manager</id><content type="html" xml:base="https://blog.muntashir.dev/2026/06/01/six-years-of-app-manager/"><![CDATA[<p>Today marks the sixth anniversary of App Manager. Over the years, I have made significant effort to develop an app that offers some level of control over the digital life in the Android ecosystem.</p>

<p>As of today, I wrote almost 250k lines of code (LOC) with over one million addition and removal in the version control system via 3,650 commits (that’s 1.6 commit/day or 11.7 commits/week on average). I have closed almost 1,900 issues and handled over 2,000 private emails. We have over 200 translators translating App Manager in 39 languages.</p>

<p>My efforts has largely been a success. Since I do not track users, and we do not have exact figures from F-Droid, I can only give you GitHub download statistics. From GitHub alone, App Manager has been downloaded over 681,170 times (the latest version alone was downloaded 225,321 times. It also reports over 13k biweekly unique active visitors and over 28k biweekly user engagement. This easily makes it one of the most engaging and active personal open source projects ever developed (which is also completely absent from the mainstream app stores).</p>

<p>I stopped the fundraising campaign in 2024, almost two years ago due to personal reasons. In 2021-24, we hold four fundraising campaign each spanning three months and were able to secure almost $5,000, which was largely a success considering the amount of users at the time.</p>

<p>App Manager project is not just an app, rather it is a front-end. It relies on at least five other projects for various features, such as Android Debloat List, Android Libraries, LibADB. Some of the projects have also helped other people in the long run. LibADB, in particular, has made adaptation of ADB-based features mainstream among the developers who build utility software alongside Shizuku (which is still non-free and as such many FLOSS lovers still ignore).</p>

<p>App Manager is also one of the first material designed utility software on Android. In fact, one motivation for developing App Manager was the lack of well-designed software. Back then, there used to be a lot of utility software on F-Droid (most of them are now in F-Droid Archive), but none of them had modern design, because those applications were developed at a time when many developers actively rejected the Lollipop-era design and stuck with the pre-Lollipop design. Another issue was that the tools largely offered just one particular feature. So, we had to install several applications to achieve something that could’ve been just a single standalone tool. This was the second motivation.</p>

<p>App Manager is developed for my personal use. If you are a software engineer or work in a tech company, you know how difficult it is to come up with a good design. This is partly because most of the people involved in the production never really use the product. So, they fail to think from the perspective of the user. App Manager is different. It’s developed for my personal use, and I use various features several times everyday. So, I have a good understanding of the issues and how to solve them from an user’s perspective. This is what made it so powerful. But be aware that App Manager is a very sophisticated and advanced utility software. It takes a lot of effort to keep it scalable, and unless you are a tech savy individual, you will probably never be able to appreciate its true depth. Although I wrote a 85 page documentation for App Manager (which is also very rare for a tool like this), it is very much incomplete.</p>

<p>What lies ahead? The future, as I see it, is very much uncertain. We are in a situation where things can go really bad at any moment. We can finally see a mutual agreement among the leaders of the world regarding mass surveillance (whatever they say out loud regarding privacy and security are just a sham), and I do not see anybody doing anything against this alliance. As Saruman put it, they “are to remove only those who oppose” them. But as Captain Nemo has said, “There is hope for the future. When the world is ready for a new and better life, all this will someday come to pass, in God’s good time.”</p>]]></content><author><name>Muntashir Al-Islam</name></author><category term="app_manager" /><summary type="html"><![CDATA[App Manager has come a long way since it was introduced to the world six years ago. Let's talk about it.]]></summary></entry><entry><title type="html">Linux Apps that I Frequently Use</title><link href="https://blog.muntashir.dev/2026/04/15/frequently-used-linux-apps/" rel="alternate" type="text/html" title="Linux Apps that I Frequently Use" /><published>2026-04-15T04:30:00+00:00</published><updated>2026-04-15T04:30:00+00:00</updated><id>https://blog.muntashir.dev/2026/04/15/frequently-used-linux-apps</id><content type="html" xml:base="https://blog.muntashir.dev/2026/04/15/frequently-used-linux-apps/"><![CDATA[<p>Linux is not particularly known for having good and usable (GUI) applications. This is the #2 complain that you hear from people (#1 being the difficulty of installation which, unfortunately, still exists today) who do not use a Linux distro. I think this is largely invalid now. With the introduction of GTK 4, the development of GUI applications have been accelerated, and we see a lot of young and student developers building applications for Linux. In addition, with WINE and Proton, Linux is becoming a popular platform for gaming too. If you are interested in old games that have 8-bit components, WINE is basically the only option right now since they no longer work on Windows. Anyway, let’s talk about the applications I have been using quite frequently on Fedora. Unlike <a href="/2022/12/30/android-apps-that-i-frequently-use/">my previous post for Android</a>, I shall talk about the applications in a little bit more detail since unlike Android, Linux is still a growing platform and most applications have a certain level of instability.</p>

<h2 id="gnome-extensions">GNOME Extensions</h2>

<p>Since I am using GNOME Shell 49, I thought I should list the GNOME extensions first since they the one of the most frequently used applications. The list is sorted alphabetically.</p>
<ol>
  <li><a href="https://extensions.gnome.org/extension/9204/battery-power-mode-indicator/">Battery Power Indicator</a>: Changes battery icon color based on active power profile. Very useful extension if you’re on a laptop.</li>
  <li><a href="https://extensions.gnome.org/extension/6670/bluetooth-battery-meter/">Bluetooth Battery Meter</a>: Displays battery levels for the connected devices. Very useful extension if you use a lot of wireless devices, such as wireless mouse, keyboard, or headsets.</li>
  <li><a href="https://extensions.gnome.org/extension/3740/compiz-alike-magic-lamp-effect/">Compiz alike Magic lamp effect</a>: Magic lamp effect inspired by the Compiz ones from macOS, works good with Dash to Dock.</li>
  <li><a href="https://extensions.gnome.org/extension/307/dash-to-dock/">Dash to Dock</a>: Moves the dash out of the overview transforming it in a dock for an easier launching of applications and a faster switching between windows and desktops. Surprised that it’s not built-in in GNOME. For better UX, set “Click action” to “Minimize or show previews”. It may look like macOS, but it has more useful features than macOS’ dock.</li>
  <li><a href="https://extensions.gnome.org/extension/5979/dim-completed-calendar-events/">Dim Completed Calendar Events</a>: Dims completed events in the top panel menu to easily distinguish between upcoming and past events. Again, surprised that GNOME doesn’t do this by default. It’s the most basic feature in most calendar applications.</li>
  <li><a href="https://extensions.gnome.org/extension/8692/in-picture/">In Picture</a>: To fix broken Picture-in-Picture in Wayland that is taking GNOME ages to fix.</li>
  <li><a href="https://extensions.gnome.org/extension/8276/kiwi-is-not-apple/">Kiwi is not Apple</a>: Brings macOS-inspired features for GNOME. Actually, I dislike many features that macOS has. For example, I have disabled the following features among others: transparent move, panel transparency, macOS window buttons. But the rests are useful in the sense that I had to install a few more extensions that would allow me to achieve the same.</li>
  <li><a href="https://extensions.gnome.org/extension/6198/light-style/">Light style</a>: Enables light mode in GNOME. I used to be a big fan of dark mode, but nowadays, I prefer light mode since it looks more natural.</li>
  <li><a href="https://extensions.gnome.org/extension/6048/peek-top-bar-on-fullscreen/">Peek Top Bar On Fullscreen</a>: Shows the top panel on demand while displaying full screen content on (like watching a video in full screen mode). A very useful feature not just for watching videos but also when delivering a presentation.</li>
  <li><a href="https://extensions.gnome.org/extension/7048/rounded-window-corners-reborn/">Rounded Window Corners Reborn</a>: It’s 2026, and GNOME still doesn’t offer rounded corners for windows by default when even Windows is trying to do the same.</li>
  <li><a href="https://extensions.gnome.org/extension/8764/screencast-extra-feature/">Screencast extra feature</a>: Again, it’s 2026, and GNOME is still struggling with recording audio with the built-in screen recorder. Alternative is to use OBS Studio, of course.</li>
  <li><a href="https://github.com/MuntashirAkon/SlobDict">Slob Dictionary Quick Lookup</a>: Launches Slob Dictionary to display defition of the selected text. This is one of my own applications, and also the first ever GUI application I have built for Linux.</li>
  <li><a href="https://extensions.gnome.org/extension/9167/smart-pause-resume/">Smart Pause &amp; Resume</a>: Automatically pauses previously playing media to prevent overlapping sound. Surprised that GNOME doesn’t provide this by default. Pretty much every other operating system offers similar features.</li>
  <li><a href="https://extensions.gnome.org/extension/6385/steal-my-focus-window/">Steal my focus window</a>: Removes the “window is ready” message and focus the window instead. When a window is already running and you open something that triggers the window, instead of bringing the window to the top of the window stack, GNOME chooses to display a popup notification instead. Never understood the reason for this weird behavior.</li>
  <li><a href="https://extensions.gnome.org/extension/3010/system-monitor-next/">system-monitor-next</a>: Displays system information in the status bar, such as memory, CPU, disk and battery usages, network rates. I’m only interested in the network monitor, but there is not a good extension for displaying network monitor only.</li>
  <li><a href="https://extensions.gnome.org/extension/1723/wintile-windows-10-window-tiling-for-gnome/">WinTile</a>: a hotkey driven window tiling system that imitates the standard Win-Arrow keys of Windows 10. GNOME’s default tiling behavior is too simple. WinTile is one of the basic ones. There are a couple of advanced ones too, such as <a href="https://extensions.gnome.org/extension/7065/tiling-shell/">Tiling Shell</a>.</li>
  <li><a href="https://extensions.gnome.org/extension/9120/worknavigator/">WorkNavigator</a>: A simple workspace navigator. I like it’s simplicity and design.</li>
</ol>

<p>It might seem a lot, but many of the features should have already been in GNOME itself, or fix those long standing bugs.</p>

<h2 id="firefox-a-web-browser">Firefox, a Web Browser</h2>

<p>I used to use <a href="https://github.com/ungoogled-software/ungoogled-chromium">Ungoogled Chromium (UGC)</a> on Windows and macOS. But since Firefox comes default in Fedora, I decided to give it a try, and it looks very decent albeit not as good as Chromium-based browsers in terms of UX. I use a multi-profile setup like I used to on UGC. I know Firefox support compartmentalization in a single profile, but in my threat model, a multi-profile setup is better. Nothing to complain here. As usual, extensions such as <a href="https://github.com/gorhill/uBlock">uBlock Origin</a>, <a href="https://docs.clearurls.xyz/">Clear URLs</a>, and <a href="https://decentraleyes.org/">Decentraleyes</a> are a must for Firefox too. To match GNOME theme, I use a theming application called <a href="https://addwater.qwery.dev/">Add Water</a>.</p>

<h2 id="vscodium-a-code-editor">VSCodium, a Code Editor</h2>

<p>As a developer, <a href="https://vscodium.com/">VSCodium</a> (the open source version of VSCode) is a must. Good thing is that most Microsoft-signed proprietary extensions do not work here. I mostly use the open source extensions, such as clangd, Kylin Python, and Open Remote - SSH.</p>

<h2 id="terminal">Terminal</h2>

<p>I use <a href="https://gitlab.gnome.org/chergert/ptyxis">the built-in terminal</a> in GNOME Shell. It’s a pretty decent terminal emulator and works as expected.</p>

<h2 id="betterbird-an-email-client">Betterbird, an Email Client</h2>

<p><a href="https://www.betterbird.eu/">Betterbird</a> is a better version of <a href="https://www.thunderbird.net/">Thunderbird</a> that has a wider set of features, including an option to add it in the status bar, which is useful in GNOME since the email client doesn’t run in the background if it is closed. The UI still looks very old, but there is a way to fix this via <a href="https://github.com/rafaelmardojai/thunderbird-gnome-theme">this theme</a>.</p>

<h2 id="calendar">Calendar</h2>

<p>I use <a href="https://apps.gnome.org/Calendar/">the built-in calendar</a> in GNOME Shell. The calendar mostly works well except for two issues: first, if you set an event with <em>from</em> and <em>to</em> dates, the <em>to</em> date appears exclusive, which is highly unusual. Second, it doesn’t allow arbitrary days of the week selection in <em>Weekly</em> mode which is a big problem. Fortunately, ALL the other calendar applications I have tried has both features, so I can just use them instead on my other devices. There are also a few other annoyance, but it <em>mostly</em> works. For synchronization, I use a <a href="https://nextcloud.com">NextCloud</a> instance.</p>

<h2 id="libreoffice-a-document-processor">LibreOffice, a Document Processor</h2>

<p>For document processor (as well as spreadsheet and presentation), I use <a href="https://www.libreoffice.org/">LibreOffice</a>. It comes built-in with Fedora 43. So, I didn’t have to do anything.</p>

<h2 id="bitwarden-a-password-manager">BitWarden, a Password Manager</h2>

<p>For password manager, I use <a href="https://bitwarden.com/">BitWarden</a>. It looks more like a wrapper around the web UI instead of an actual desktop application though. It seems UI/UX is not particularly a strong suit for BitWarden team.</p>

<h2 id="recordbox-a-music-player">Recordbox, a Music Player</h2>

<p><a href="https://codeberg.org/edestcroix/Recordbox/">Recordbox</a> is a music player written in Rust and GTK 4 framework and still under heavy development, and it is the only music player that balances the features and the look (trust me, I’ve tried over 20 music players). Unfortunately, it doesn’t offer a tag editor (only offers a lyrics editor). But it can play a lot of different music formats. In the past it had some weird bugs which prompted me to use <a href="https://apps.kde.org/elisa/">Elisa</a> instead (which doesn’t have a good UI but has a fully featured tag editor), but they seem to have been addressed, and it works pretty well now.</p>

<figure>
  <img loading="lazy" src="https://blog.muntashir.dev/images/Screenshot%20From%202026-04-14%2019-29-23.png" alt="Playing Beethoven's Piano Concerto No. 5 in Recordbox" />
  <span class="marginnote">Playing Beethoven's Piano Concerto No. 5 in Recordbox</span>
</figure>

<h2 id="nheko-a-matrix-client">nheko, a Matrix-client</h2>

<p><a href="https://nheko-reborn.github.io/">nheko</a> is a Matrix client developed using Qt 6. It is one of the first fully-featured Matrix clients that doesn’t use Electron. So, it looks native to the platform and has less memory footprint. The user interface is similar to Telegram albeit a little low on the style part. It also supports running on the system tray and offers desktop notifications. If you want a GTK 4 client, <a href="https://gitlab.gnome.org/World/fractal/">Fractal</a> is one of the emerging clients. However, as of writing this post, it doesn’t support running in the background and neither does it support running it in the system tray. So, there is no way to receive notifications without keeping it in the foreground. It is also very slow to scroll in room with a lot of messages, and most importantly, no option to filter messages. So, I wouldn’t recommend it.</p>

<figure>
  <img loading="lazy" src="https://blog.muntashir.dev/images/nheko-chat.png" alt="The chat window of nheko" />
  <span class="marginnote">The chat window of nheko (taken from their website)</span>
</figure>

<h2 id="localsend-a-local-file-sharing-application">LocalSend, a Local File-sharing Application</h2>

<p><a href="https://localsend.org/">LocalSend</a> is a cross-platform local file sharing service that I use in all platforms. I use a bunch of different operating systems (Android, Fedora, iPadOS), and LocalSend is the only file sharing service that supports all of them. So, it’s very useful, and one of the first applications that I install in any platform.</p>

<figure>
  <img loading="lazy" src="https://blog.muntashir.dev/images/Screenshot%20From%202026-04-14%2019-58-25.png" alt="The main window of LocalSend" />
  <span class="marginnote">The main window of LocalSend</span>
</figure>

<h2 id="cine-a-video-player">Cine, a Video Player</h2>

<p><a href="https://github.com/diegopvlk/Cine">Cine</a> is a MPV-based video player developed with GTK 4 and libadwaita. So, it has a native look-and-feel in GNOME. It is actually far better than the default video player which sometimes fails to play certain video formats. It is comparable to <a href="https://iina.io/">IINA</a>, my all-time favorite video player from macOS, except a dedicated Picture-in-Picture (PiP) mode. Since it doesn’t offer a PiP mode, I simply move it to one side and enable “Always on Top” and “Always on Visible Workspace” to achieve something similar.</p>

<figure>
  <img loading="lazy" src="https://blog.muntashir.dev/images/Screenshot%20From%202026-04-14%2020-14-53.png" alt="Playing a random video in Cine" />
  <span class="marginnote">Playing a random video in Cine</span>
</figure>

<h2 id="foliate-an-ebook-reader">Foliate, an eBook Reader</h2>

<p><a href="https://github.com/johnfactotum/foliate">Foliate</a> is a GTK 4-based eBook reader. It automatically adds all the opened books to its library, and also allows downloading books from OPDS catalogs (with Internet Archive, Project Gutenberg, etc. provided by default). It also support adding annotations to eBooks as well as exporting them. It has a look-and-feel similar to Apple Books, which is one of my favorite eBook readers.</p>

<figure>
  <img loading="lazy" src="https://blog.muntashir.dev/images/Screenshot%20From%202026-04-14%2020-19-13.png" alt="First pages of “Pride and Prejudice” opened on Foliate" />
  <span class="marginnote">First pages of “Pride and Prejudice” opened on Foliate</span>
</figure>

<h2 id="tuba-a-fediverse-client">Tuba, a Fediverse Client</h2>

<p><a href="https://tuba.geopjr.dev/">Tuba</a> is a GTK 4 and libadwaita-based Fediverse client that supports Mastodon, GoToSocial, Akkoma, and a few others. It fully supports GNOME with background notification (disabled by default for some reason). I didn’t find any other alternatives to this application.</p>

<figure>
  <img loading="lazy" src="https://blog.muntashir.dev/images/Screenshot%20From%202026-04-14%2020-35-24.png" alt="Mastodon on Tuba" />
  <span class="marginnote">Mastodon on Tuba</span>
</figure>

<h2 id="switchyard-a-browser-launcher">Switchyard, a Browser Launcher</h2>

<p><a href="https://switchyard.aly.codes/">Switchyard</a> is a GTK 4-based browser launcher. I have been looking for a <a href="https://f-droid.org/packages/com.trianguloy.urlchecker/">URLCheck</a>-like alternative for Linux, and Switchyard is as far as I could go. It offers browser rules, link redirections, and a custom configuration, all good. Unfortunately, it doesn’t support the ClearURL format, which I was looking for. But at least, there is an app like this.</p>

<figure>
  <img loading="lazy" src="https://blog.muntashir.dev/images/Screenshot%20From%202026-04-14%2020-44-54.png" alt="Switchyard UI" />
  <span class="marginnote">Switchyard UI</span>
</figure>

<h2 id="flatseal-permission-manager-for-flatpak">Flatseal, Permission Manager for Flatpak</h2>

<p><a href="https://github.com/tchx84/flatseal">Flatseal</a> is a permission manager for Flatpak, basically a GUI wrapper over the flatpak command, but it is very useful in managing permissions of Flatpak applications.</p>

<h2 id="ignition-a-startup-manager">Ignition, a Startup Manager</h2>

<p><a href="https://github.com/flattool/ignition/">Ignition</a> is a GTK 4 and libadwaita-based application that allows managing startup applications and scripts. Although not really a frequently-used application, it is highly recommended since GNOME Tweaks is no longer in the picture.</p>

<h2 id="obs-studio">OBS Studio</h2>

<p>Unfortunately, GNOME has troubles with projectors. Many projectors have lower resolution than a modern laptop, and as a result, when connected to a projector in the mirror mode, it calculates the lowest resolution among the two and falls back to the lowest resolution, which is a problem if the projector has a really low resolution. As an workaround, OBS Studio can be used to stream the laptop screen to the projector and use the full resolution.</p>]]></content><author><name>Muntashir Al-Islam</name></author><category term="linux" /><summary type="html"><![CDATA[About four months ago, I had migrated to Fedora 43 (GNOME 49). After four months, I think I can share the frequently used apps like I did for Android.]]></summary></entry><entry><title type="html">My New Favorite Desktop Operating System</title><link href="https://blog.muntashir.dev/2025/12/18/fedora-workstation/" rel="alternate" type="text/html" title="My New Favorite Desktop Operating System" /><published>2025-12-18T21:33:00+00:00</published><updated>2025-12-18T21:33:00+00:00</updated><id>https://blog.muntashir.dev/2025/12/18/fedora-workstation</id><content type="html" xml:base="https://blog.muntashir.dev/2025/12/18/fedora-workstation/"><![CDATA[<p>Last year, during the Black Friday sale, I bought a Lenovo Thinkpad P14s laptop replacing my old Dell laptop that I bought in 2017. The new laptop is somewhat powerful with its Core Ultra 7 CPU with 32 GB RAM and RTX 500 Ada discrete graphics along with Intel Iris Xe graphics, which is thought to be the first proper iGPU built by Intel. It came with Windows 11 Pro installed by default, which is disappointing considering all the CPU and memory are effectively wasted on running useless Windows background processes. However, a year later, the laptop no longer has a warranty (I do have extended warranty, but the provider doesn’t care about the OS installed), and I’ve also managed to get some time during the holidays to experiment with my laptop.</p>

<p>When I was running the Windows, I set up Windows Subsystem for Linux version 2 with Arch Linux to get the benefits of a Unix system which I am more familiar with for historical reasons. The very first laptop that I owned was passed onto me by one of my elder brothers back in 2014. It was a HP laptop running Pentium III processor, not a laptop you should own in 2014. It used to be a work laptop and had 512 MB upgraded RAM, but the workplace decided to take back the RAM and it only had 256 MB RAM. It came with Windows XP installed, but it no longer performed well with the reduced available memory. In fact, I couldn’t run any sane applications on the laptop. So, after a brief investigation, I found out that Lubuntu (a lightweight version of Ubuntu that comes with LXDE desktop by default) is a suitable candidate for this laptop. This was effectively my very first experience with a Unix desktop. A year later, I got a more capable laptop from a government scholarship program. This was a Dell laptop with Haswell processor (much better than Pentium III!). The first thing I did was replaced Windows 8.1 (I think) with Ubuntu 14.04 LTS as I was more familiar with Unix systems than Windows (not to mention the ugly look of Windows 8.1). But before that I’ve also tried to install Windows 7 (the last good Windows), but it refused to install because it says the hardware is too new! Then, I was into all sorts of things like Hackintosh and Croissant projects and ended up having Hackintosh (OS X El Capitan, I think) as my main setup. Hackintosh continued to be my main set up until I bought the Thinkpad last year. I also had Artix Linux as my secondary set up, too, but never Windows.</p>

<p>After getting the new laptop, I’ve felt that Windows is not really a worthy operating system, and Microsoft knows it themselves: they offer a set of tools (basically an official collection of third-party tools) collectively known as PowerToys. Even then, PowerToys cannot fix all the problems of Windows, especially, Windows 11. The very first annoyance was the HUGE taskbar it has which absolutely no customizabilty. So, the first thing I did was installed ExplorerPatcher to revert back to the Window 10 version of the taskbar. Of course, for a computer programmer (and now a researcher) like me, good support for workspace is required which is virtually absent in Windows by default. PowerToys helped a little, but there are limits on what kind of shortcuts it can create or handle. Just think about it: I came from macOS which offers one of the best workspace experiences to Windows 11 where even basic window switching is absent and requires a third-party tool. I wonder how Microsoft is surviving in the desktop operating system business with this historic worse operating system!</p>

<p>Last week, I was looking for a good Unix alternative to Windows that is stable (sorry, Arch Linux!) enough to be used as an everyday operating system. There were several candidates: Ubuntu 24.04 LTS, Fedora Workstation 43, Pop!_OS 24.04. I was particularly looking for options with great support for Thinkpad laptops (you know, power management is a big issue) and NVIDIA graphics (especially the latter since I work in a field where I frequently need to utilize the graphics card) as well as disk encryption and secure boot. I personally hate Ubuntu (I have it in my lab computer already), so I basically had two choices: Fedora Workstation and Pop!_OS. I choose Fedora Workstation because it is more mature and time-tested (and also because <a href="https://www.youtube.com/watch?v=mfv0V1SxbNA">Linus himself has promoted it</a>).</p>

<p>Fedora Workstation comes with GNOME Shell by default which is suitable for me for many reasons. For example, it has concepts of workspace very similar to (or even better than) macOS, its keybindings and gestures are usable and very similar to macOS’, offers a distraction-free mission control experience, and offers plenty of extensions to extend those. KDE Plasma is nice, but it’s way too bloated in my experience. GNOME does have its problems, but I think over the years the team has done a very good job in improving usability of the desktop. You might think window managers like dwm and bspwm might be good for handling workspace, but they are only good if you have a desktop computer. You’ll run into all sorts of issues because these window managers are not really scalable and good luck connecting to a projector in presentation mode!</p>

<p>Atomic desktops have also become increasing popular, but they are not mainstream yet and therefore, not something I wanted to install as my daily driver.</p>

<h2 id="installing-fedora-workstation">Installing Fedora Workstation</h2>

<p>[Obviously, I’m not writing a guide to install an operating system, rather I’m writing my impressions on installing an operating system.]</p>

<p>I went to the official website and followed instructions to download the ISO file, verify integrity and so on. But it lacked any information on how to make it bootable. So, I installed Rufus and used their <code class="language-plaintext highlighter-rouge">dd</code> method in UEFI mode. But it failed to boot with a message “Secure boot violation”. Then I realized that I needed to enable “Microsoft 3rd-party UEFI CA” in BIOS to boot the live desktop. After that it worked!</p>

<p>Then I ran into another issue: the installer itself doesn’t offer any option to format your partitions in the installer window nor does it watch for changes in partition table. So, I needed to use the <strong>Disks</strong> app to create partitions as I was dual booting (I wanted to make sure I can still use Windows if something goes wrong). So, I created a LUKS encrypted Btrfs partition (to allow snapshots, useful for a parition where you are installing your operating system) and used the default EFI partition for <code class="language-plaintext highlighter-rouge">/boot/efi</code>. But the problem didn’t end here. Since the root partition was encrypted, the installer was complaining that it required another partition for <code class="language-plaintext highlighter-rouge">/boot</code>. So, I created another small unecrypted parition (~2GB) for <code class="language-plaintext highlighter-rouge">/boot</code>, and it proceeded to the actual installation.</p>

<p>Then it failed with the following message:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>'NoneType' object has no attribute 'path'
</code></pre></div></div>

<p>Disappointing! But I tried rebooting anyway (you know after years of experience with installing operating systems), and it worked! I was successfully able to boot into my brand new operating system!</p>

<figure>
  <img loading="lazy" src="https://blog.muntashir.dev/images/Screenshot%20From%202025-12-18%2013-39-22.png" alt="Fedora Workstation" />
</figure>

<h2 id="post-installation">Post-installation</h2>

<p>The very first thing I did was <a href="https://github.com/Comprehensive-Wall28/Nvidia-Fedora-Guide?tab=readme-ov-file#installing-nvidia-drivers-on-fedora-workstation-and-its-spins">installing the NVIDIA drivers</a> (after all, all efforts will be null and void if it doesn’t have proper support for NVIDIA). The set up was trivial (basically installing some non-free software and kernel extensions). However, since I have <strong>Secure boot</strong> enabled, I needed some extra steps to generate a MOK signing key to sign the kernel extensions.</p>

<p>After that, I set up the powermanagement for my laptop which means simply installing and setting up <code class="language-plaintext highlighter-rouge">tlp</code> and <code class="language-plaintext highlighter-rouge">tlp-rdw</code>.</p>

<p>That’s it. Post-installation is complete!</p>

<h2 id="migrating-away-from-windows">Migrating Away from Windows</h2>

<p>As my Fedora set up is complete. Now, it’s time to move away from the vicious Windows. The partion consumed almost 450 GB for no reason. So, it’s a big gain for me as well and wanted to do this strategically: I wanted to remap the parition to <code class="language-plaintext highlighter-rouge">/home</code>. To do this, I needed to complete the migration first, and I wanted to do this without booting into Windows (I have tolerated that operating system far too long!).</p>

<p>The quickest way to achieve this is to see what software I installed there and which once I need to migrate. This is a little bit complicated for some software but easy for the most part.</p>

<p>The most problematic was migrating away from the browsers. I used <a href="https://github.com/ungoogled-software/ungoogled-chromium">Ungoogled Chromium (UGC)</a> as my primary browser and Mullvad as a secondary. Both browsers have a lot of bookmarks that needs to be migrated. So, I looked online for guides on how to do this, and it appears to be fairly simple. But I had four profiles in UGC, it it took sometime to migrate them using <a href="https://rongjiecomputer.github.io/chrome/bookmark-recovery/#windows">this excellent tool</a>.</p>

<p>Then, I had a few files stored in Documents, Downloads which I needed to copy to some place for later migration. I also had some configurations at <code class="language-plaintext highlighter-rouge">~/.ssh</code> which I needed to migrate. Finally, I also had several projects stored in WSL2 Arch distro. For this, I needed to copy the VDIX file to mount it later for copying the essential files.</p>

<p>Once the migration is complete. I formatted the partition in ext4 with LUKS (since this is a data partition, I didn’t bother with Btrfs), copied contents of <code class="language-plaintext highlighter-rouge">/home</code> to the root of the parition, set up <code class="language-plaintext highlighter-rouge">/etc/fstab</code> to use this parition as <code class="language-plaintext highlighter-rouge">/home</code> and renamed <code class="language-plaintext highlighter-rouge">/home</code> to <code class="language-plaintext highlighter-rouge">/home.bk</code> in case something goes wrong. (I still had my pen drive bootable for this reason.)</p>

<p>I rebooted and the migration was a sucess!</p>

<p>I copied all data back to their respective folders in my Fedroa installation and cleaned up those files including the VDIX file.</p>

<h2 id="getting-the-most-out-of-fedora-workstation">Getting the Most Out of Fedora Workstation</h2>

<p>Now that the setup is finished. I wanted to actually look into the GNOME Shell desktop to see how it compares with my requirements and expectations, and I have to say I’m very satisfied even with the default interface! GNOME team, it seems, have finally done a good job with their desktop!</p>

<p>As some of you know, I use <a href="https://disroot.org">disroot.org</a>’s NextCloud for CalDAV and CardDAV syncing, and I was surprised to discover that GNOME desktop supports NextCloud specifically by default (including WebDAV, but it doesn’t have proper caching, needed to use <code class="language-plaintext highlighter-rouge">rclone</code> instead). Windows doesn’t even have support for CalDAV or CardDAV (actually they do not even have a calendar in first place).</p>

<p>Other essential software, such as Firefox, LibreOffice, Calendar, Calculator, Contacts, were already installed in the system. I only needed to install a few more that I use, such as <a href="https://bitwarden.com/">BitWarden</a>, <a href="https://freetubeapp.io/">FreeTube</a>, Inkscape, <a href="https://github.com/Nheko-Reborn/nheko">nheko</a> (Matrix client), Oracle VirtualBox (needed as an instructor for Computer Security course), Telegram, Thunderbird, UGC, <a href="https://vscodium.com/">VSCodium</a>, Android Studio, and Ghidra.</p>

<p>Unfortunately, I didn’t find a single offline music player for my taste. So, I ended up installing <a href="https://apps.kde.org/elisa/">Elisa</a> and <a href="https://codeberg.org/edestcroix/Recordbox/">Recordbox</a>. And I did all this using GNOME’s Software application. I’ve never thought this could be done in Linux (other than Ubuntu’s Snap, of course, which I detest). Somebody <a href="https://andreyor.st/posts/2023-11-19-linux-music-players/">wrote a whole article</a> on the usability of music players in Linux (TL;DR; not good).</p>

<p>The GNOME Shell desktop is good, but some extensions were required to make it more productive, especially, if you’re using a keyboard and a mouse or touchpad. I used <a href="https://github.com/domferr/tilingshell">Tiling Shell</a> as a tiling manager instead of GNOME’s default (which is not very powerful), Window List for listing the windows at the bottom of the screen, and Auto Move Windows that allows assigning specific workspace for each application. There are a few other interesting extensions for window/workspace management that I have installed: <a href="https://github.com/ihpled/deja-window">Deja Window</a> which is useful for restoring window states and <a href="https://github.com/kyledross/MaximizeWindowIntoNewWorkspace">Maximize Window Into New Workspace</a> which creates a new workspace when you maximize a window (a very useful feature found in macOS).</p>

<p>I also wanted display the network speed in the status bar. So, I installed <a href="https://github.com/mgalgs/gnome-shell-system-monitor-next-applet">system-monitor-next</a> extension and only enabled the network portion.</p>

<p>Finally, since I own an Android phone and mostly work on my laptop. I wanted to display the notifications to my laptop. For this, I used <a href="https://github.com/GSConnect/gnome-shell-extension-gsconnect/">GSConnect</a> with <a href="https://f-droid.org/packages/org.kde.kdeconnect_tp/">KDE Connect</a>.</p>

<p>So, here at last, I found an operating system that balances features, customization, and usability together, in certain areas far better than macOS, and fully free and open source (well, mostly, since I still needed to install the NVIDIA drivers)! This is definitely my favorite operating system!</p>]]></content><author><name>Muntashir Al-Islam</name></author><category term="linux" /><summary type="html"><![CDATA[I spent the past three days setting up my new favorite operating system, which, in my opinion, is a great replacement for both Windows and macOS from my years of experience of using, especially, the latter.]]></summary></entry><entry><title type="html">September’25 Updates</title><link href="https://blog.muntashir.dev/2025/10/18/september-updates/" rel="alternate" type="text/html" title="September’25 Updates" /><published>2025-10-18T19:53:00+00:00</published><updated>2025-10-18T19:53:00+00:00</updated><id>https://blog.muntashir.dev/2025/10/18/september-updates</id><content type="html" xml:base="https://blog.muntashir.dev/2025/10/18/september-updates/"><![CDATA[<p>This month (October) has been a busy month for me (I mean more than usual). I’ve had certain timeline set up for the next release, but due to my busy-ness, I don’t think I will be able to meet my goals for the next release any time soon.</p>

<p>Last time I’ve announced that I was working on ADB-based backups, and last month, I was able to integrate it fully into the existing backup model. This required a major rewrite of the backup/restore feature, but I think it would be beneficial to the large number of ADB users that App Manager has.</p>

<p>Recently, somebody has created <a href="https://github.com/MuntashirAkon/AppManager/issues/1754">a feature request on GitHub</a> regarding a ADB-based network firewall implementation. From Android 13, it is possible to utilize the Berkeley Packet Filter (BPF) to cut network connections from an application. You can also do this using ADB shell or terminal with root:</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>cmd connectivity set-package-networking-enabled <span class="o">[</span><span class="nb">true</span>|false] <span class="o">[</span>package-name]
</code></pre></div></div>

<p>The underlying implementation fetches the UID of the package name and then add the UID and rule to a BPF map for filtering the packets for the UID (for shared applications, multiple applications packages may be blocked as they share the same UID). But the issue with BPF rules is that the rules do not persist across reboot. This means you’d need to reapply the rules after restarting your device which is inconvenient. A possible solution to the problem, of course, is reapplying the rules on reboot, which again, is not convenient since ADB mode is also lost after a reboot. So, to effectively implement this feature, we need to find a way to monitor Wi-Fi connections on reboot and connect to wireless debugging automatically once the device is connected to Wi-Fi. I’ve already implemented a prototype last night, and it’s working correctly on my test device (Pixel 9). On Android TV, ADB over TCP persists across reboots, so we may also able to do something similar on Android TVs too. After the feature becomes stable enough, I think it would be possible to implement BPF-based firewall for devices that support it that would persist across reboots.</p>

<p>IP tables based blocking and VPN-based packet filtering remain the most used filtering technology in Android due to the availability of many open source firewall tools (and closed source ones most of which are just clones of the former). However, these sort of blocking, as I’ve argued before, are not very effective, and from Android 12, their effectiveness has been further reduced. This has happened because Android 12 has integrated eBPF (extended BPF), and since then the internals of the AOSP has been modified to use eBPF instead of the traditional IP tables approach. If you don’t know about BPF, let me explain it in simple words: BPF is a kernel-level packet filtering mechanism that has the ability to decide which packet (any data transmitted from or to the internet has to go through a few layers, packet is one of them) goes to where or which packets it needs to drop. This allows a system whitelisted program in Android to directly send/receive packets without going through the typical route used by ip tables or VPNs. This means that the vendor can arbitrarily allow their vendor (and system) apps to bypass ip tables and VPNs which is not good thing for user privacy since for these applications, all the protections (for example, anti-censorship protections) become useless. This is where the BPF rules may help. The underlying implementation of the above mentioned command modifies the BFP map albeit temporarily overriding the existing UID rules if already present. This effectively allows us to temporarily override the rules even for the whitelisted apps. But in some cases, the rules may be refreshed even without a reboot. I’m still currently investing the implementation, so I don’t have the exact details.</p>

<p>Finally, for the APK updater, I’ve already created a backend for it. But there are still a lot of challenges, such as effective handling of extensions and errors, what to display to the user, implementing the update policies, and so on. This will take some time and probably available for testing at the first quarter of 2026.</p>

<blockquote>
  <p><strong>Note:</strong> You may have to enable the <strong>chain3</strong> first before you can block networking for an app. To enable chain3, run this command:</p>
  <div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>cmd connectivity set-chain3-enabled <span class="nb">true</span>
</code></pre></div>  </div>
  <p>This is only an on/off switch. The configurations are in the BPF map regardless of this option. Therefore, they are applied immediately when you enable chain3.</p>
</blockquote>]]></content><author><name>Muntashir Al-Islam</name></author><category term="app_manager" /><summary type="html"><![CDATA[App Manager development update: delayed release for v4.1.0, ADB backup integration, and a new kind of firewall for Android]]></summary></entry><entry><title type="html">August’25 Updates</title><link href="https://blog.muntashir.dev/2025/09/04/august-updates/" rel="alternate" type="text/html" title="August’25 Updates" /><published>2025-09-04T22:14:00+00:00</published><updated>2025-09-04T22:14:00+00:00</updated><id>https://blog.muntashir.dev/2025/09/04/august-updates</id><content type="html" xml:base="https://blog.muntashir.dev/2025/09/04/august-updates/"><![CDATA[<p>The next release of App Manager (that is, v4.0.6) is delayed because I was very busy with work last week. I’ll try to release it in the next week as I need to take care of a few more things.</p>

<p>At first, I’d like to talk about one of my concerns that has been in mind for a while. Despite what many politicians want you to believe, the world is in a grave financial crisis, and there is no easy way out of it. What we’re seeing at present seems to be a replay of the financial crises in the 1970s, except the world is more connected than before, thanks to the Internet, and this has its own set of disadvantages like we saw during the Covid period when the world ran into an absolute chaos. However, unlike the Covid period, people’s ability and motivation to continue hobbies are going to be challenged, especially if they are not financially productive, and this can have an adverse effect in the open source community where many projects (including App Manager and the related projects) are developed and maintained by hobbyists like me. Notice that App Manager costs me nothing other than time (which is still quite costly in the developed world), but there are many projects that are quite costly in terms of money and resources. Most concerning of all: some of them play a significant role in areas of utmost importance (like the Internet itself or defense, compared to App Manager which is not that important as a project) and are being developed by maintainers quite thanklessly without any form of compensation. This is going to be an acid test for the open source community, and I believe the landscape will see a significant alteration in the future.</p>

<p>Of late, I’ve been working on the backup/restore feature of App Manager. As some of you know, I’ve already created the framework for converting a App Manager backup to and from a regular ADB backup a long time ago, but handling ADB backup and restore itself is not that straightforward using the Android APIs, but it’s not impossible, and since a lot of the users are now using App Manager in ADB mode, I think I’ll give it one more shot. If I can implement this correctly, the feature will be available v4.1.0, otherwise we’ll continue to test it in the debug versions.</p>

<p>Lastly, I’m still looking for contributors for the ADL project. If you’re interested, please send me an email with your Matrix username. Thanks.</p>]]></content><author><name>Muntashir Al-Islam</name></author><category term="app_manager" /><summary type="html"><![CDATA[App Manager development update: delayed release, acid test for open source community, and integrating ADB backups in App Manager.]]></summary></entry><entry><title type="html">July’25 Updates</title><link href="https://blog.muntashir.dev/2025/08/03/july-updates/" rel="alternate" type="text/html" title="July’25 Updates" /><published>2025-08-03T23:18:00+00:00</published><updated>2025-08-03T23:18:00+00:00</updated><id>https://blog.muntashir.dev/2025/08/03/july-updates</id><content type="html" xml:base="https://blog.muntashir.dev/2025/08/03/july-updates/"><![CDATA[<blockquote>
  <p>In order to provide a convenient option for non-Telegram users to follow the updates, they will also be posted on my personal blog. Past updates will also be gradually added there. You can subscribe to my blog posts via RSS or follow my personal Mastodon/X account. Transparency reports will also be posted to App Manager’s official Mastodon/X accounts. An archive of the reports will be maintained in a GitHub gist for now.</p>
</blockquote>

<p>I think many testers already know this: I’ve implemented a new type of profile that allows filtering apps by the set of filters offered by the Finder feature. This feature is going to be very useful for recurrent activities like force-stopping all the user apps that are currently running. Again, the possibilities are endless. Although the regular apps-based profile is kind of a subset of this profile, I decided to implement them separately to keep the apps-based profile very simple and fast to execute (since filter-based profiles are inherently slower than apps-based profile). The feature will be available to stable users from v4.1.0 (release date not fixed yet). The filters in the main page are also being migrated to use the Finder-style filters so that the users can generate and use their own set of filters instead of the predefined ones. Finder itself along with this exclusive filtering options will be available to stable users in a future release.</p>

<p>I have done some progress on the updater implementation and can share some of the ideas to the readers for both transparency and scrutiny. But at first, let’s take a look at the issues that we need to handle in order to implement a unified updater:</p>
<ol>
  <li>App Manager app itself has limited internet features, and we intend to keep it this way</li>
  <li>It’s necessary to enforce a static single source assignment, that is, once an installed app is assigned to a source, subsequent updates should also be sourced from that source</li>
  <li>It’s also necessary to establish the levels of trust and the priority of sources should be assigned based on the trust</li>
  <li>It’s crucial that the users can amend 2-3 depending on their threat model.</li>
</ol>

<p>These are very challenging issues, and addressing them completely is nearly impossible. But I’ve designed a protocol and a framework to address those issues in an optimal way. In this protocol, App Manager effectively acts as an updater client that retrieves updates from the sources which are basically extensions to App Manager. The update process itself works in two independent steps. In the first step, App Manager queries the sources for new updates (based on the source assignment). Upon receiving such a query, the sources check for updates and return a list of updates to App Manager. In the second step, App Manager ask the sources to download some (or all) of those updates which the sources download (or retrieve from caches) and return a list of URIs that App Manager has access to. App Manager later retrieves those updates and installs them. This design has several advantages:</p>
<ol>
  <li>Each source remains separate and can be installed or removed independently</li>
  <li>For each source, it’s possible to assign a trust level and handle per source security (HPKP, GPG, etc.)</li>
  <li>Each source only uses the minimum number of permissions to function which reduces the attack surface even if some of the security mechanisms are bypassed</li>
  <li>It’s easy to provide per extension updates compared to the monolithic approach where any simple changes to any sources requires a new update</li>
  <li>Using modern Android platform features, it’s easy to persist single source assignments beyond App Manager.</li>
</ol>

<p>To clarify the level of trust a bit more, it’s necessary to support only the legitimate sources instead of arbitrary source and assign each a priority which are actually more challenging than the rests, because the definition of legitimate sources remains unclear to me, and without an exact definition, it’s almost impossible to assign priorities as well. I initially came up with a priority list for the app stores, but I didn’t explain why they were prioritized this way. Therefore, it is necessary to define leigitimate sources and factors that are needed to be taken into account to assign priorities. Again, this is a challenging problem, and for now, I’ll rely on my own instinct for it. For the same reason, App Manager will not support any third-party updater extensions. The updater will rely on a signature permission to interact with the sources, and therefore, the extensions must be signed using the same key used to sign App Manager.</p>]]></content><author><name>Muntashir Al-Islam</name></author><category term="app_manager" /><summary type="html"><![CDATA[App Manager update: Introducing a new filter-based profile type leveraging Finder features in upcoming v4.1.0; ongoing migration of main page filters to this flexible system; progress on a unified updater framework designed to securely manage app updates from trusted sources with strict source assignment and customizable trust levels.]]></summary></entry><entry><title type="html">June’25 Updates</title><link href="https://blog.muntashir.dev/2025/07/06/june-updates/" rel="alternate" type="text/html" title="June’25 Updates" /><published>2025-07-06T20:49:00+00:00</published><updated>2025-07-06T20:49:00+00:00</updated><id>https://blog.muntashir.dev/2025/07/06/june-updates</id><content type="html" xml:base="https://blog.muntashir.dev/2025/07/06/june-updates/"><![CDATA[<p>There hasn’t been a release last month because there were no significant changes to the project that requires a new release. Last month, I along with IzzySoft have tried to make App Manager reproducible and has largely been successful. All the debug releases are now reproducible, and the stable releases too shall be reproducible from the next release (v4.0.5).</p>

<p>The highly anticipated “Finder” feature is nearing completion, and I think, I can launch it at the end of this month or the next. This feature required some thorough planning in order to make it future-proof and usable for most users (and much more usable for advanced users). Initially, only a handful of features will be enabled for the stable releases, and gradually all the anticipated features will be released. The reason for this kind of rolling release is because we no longer have the beta testing system that we used to have, yet a certain level of confidence is required in order to release a feature like this. Similar to profiles, the possibilities with this feature is endless, some of which may remain unknown for some time. There are also a few small but exciting improvements that are coming up (which shall be revealed in due time) in the upcoming releases.</p>

<p>Regarding the app store functionality, I’ve given it a thought and concluded that rolling out an entire app store is time consuming and largely unnecessary for the time being. Instead, we can launch an update functionality instead. The update functionality, unlike F-Droid or Obtainium, will adhere to the Android principles at the same time offering a level of privacy and security that will be suitable for a wide range of individuals (as always, in developing App Manager, I’ve always focused on offering a diversified threat model so that it can accommodate most users). You can find some information regarding the design at this link: <a href="https://github.com/MuntashirAkon/AppManager/issues/464">https://github.com/MuntashirAkon/AppManager/issues/464</a>. However, there are a few changes to the original design which will be revealed as I begin working on it.</p>

<p>That’s all. Thanks for reading.</p>]]></content><author><name>Muntashir Al-Islam</name></author><category term="app_manager" /><summary type="html"><![CDATA[App Manager development update: No release last month due to lack of significant changes; successful collaboration with IzzySoft made debug releases reproducible, with stable releases to follow from v4.0.5; highly anticipated 'Finder' feature nearing launch with phased rollout to ensure reliability without beta testing; plans shifted from building a full app store to implementing a privacy-focused update functionality aligned with Android principles, designed to suit diverse user threat models.]]></summary></entry><entry><title type="html">May’25 Updates</title><link href="https://blog.muntashir.dev/2025/06/01/may-updates/" rel="alternate" type="text/html" title="May’25 Updates" /><published>2025-06-01T05:39:00+00:00</published><updated>2025-06-01T05:39:00+00:00</updated><id>https://blog.muntashir.dev/2025/06/01/may-updates</id><content type="html" xml:base="https://blog.muntashir.dev/2025/06/01/may-updates/"><![CDATA[<p>It’s been five years since I’ve started developing App Manager, and it’s been an interesting experience. I’ve been part of a lot of communities before this, but Android community is probably the most diverse community so far. In Hackintosh community, for example, most people were highly technical, because you needed to know a lot about the hardware in order to build a hackintosh. It was particularly challenging for laptops since most of the hardware (e.g., PCI(e) devices) cannot be replaced unlike, say a desktop. With the introduction of Clover, and then <a href="https://github.com/acidanthera/OpenCorePkg">OpenCore</a>, the complexity has been greatly reduced, but it’s still challenging to work with a laptop, especially with the newer graphics cards which aren’t even support by the recent version of macOS (but some people are trying to find workaround). Anyway, the amount of dedication displayed by the hackintosh community is really impressive, and it’s also a showcase of how resilient software engineers can be when they encounter challenges. Then there was also the Croissant project (which has been renamed to something else that I have forgotten about) where I have made some initial contributions, but Chrome OS itself is a dead end, and Google knows it very well. The experiences I’ve gathered from these two communities, in particular, have largely enhanced my ability to sustain an open source project. My inspiration for documentation, for example, is the OpenCore project.</p>

<p>App Manager v4.0.3 had a terrible bug that caused App Manager to crash or freeze (depending on device/OS) if certain keywords are used during searching/filtering. The issue has been addressed in v4.0.4. Interestingly, this has resulted in the creation of <a href="https://github.com/MuntashirAkon/AppManager/issues/1605">29 duplicate issues</a> (so far). This demonstrates how important it is to look for similar issues before opening a new issue, or GitHub suggesting similar issue based on the title or issue content while the user is creating a new issue (similar to what we already have in many other websites). GitHub also has a terrible search option that tends to ignore older issues.</p>

<p>Shizuku has recently <a href="https://github.com/RikkaApps/Shizuku/commit/7bd50a24189446114d2fd669842bbdc720411142">altered its license terms</a> to make the project completely open source (as opposed to source available that it previously was). I absolutely welcome this change and thank <a href="https://github.com/vvb2060">vvb2060</a> for making this change. Some of you may now ask whether I’ve got any plan on supporting Shizuku. Let me explain this a bit.</p>

<p>Since v4.0.0, much of the compatibility layers in App Manager have been rewritten to allow a certain level of flexibility in terms of the mode of operations. From v4.0.1, it is also possible to alter the mode of operation to any UID of your choice provided they support reading and executing the start command. It is even possible albeit with certain modifications to run App Manager as a system app with permission whitelists or as a system level UID (latter is too risky). So, in a way, it is now possible to add Shizuku support in App Manager. At this point, I may need to spend some time with their API to understand how it works. My expectation would be a generic API (similar to <a href="https://github.com/open-keychain/openpgp-api">Open KeyChain</a>’s) that would allow connecting to any Shizuku-style applications, including any future Shizuku forks (since it is open source now) instead of Shizuku “official” app alone.</p>

<p>Lastly, Eid Mubarak to those who celebrate Eid-ul Adha.</p>]]></content><author><name>Muntashir Al-Islam</name></author><category term="app_manager" /><summary type="html"><![CDATA[Reflect on years of experience across diverse communities including Hackintosh and Chrome OS on App Manager's fifth anniversary; fixing critical search/filter bug in v4.0.4; welcoming Shizuku’s recent shift to full open source and exploring potential integration.]]></summary></entry><entry><title type="html">April’25 Updates</title><link href="https://blog.muntashir.dev/2025/05/03/april-updates/" rel="alternate" type="text/html" title="April’25 Updates" /><published>2025-05-03T22:44:00+00:00</published><updated>2025-05-03T22:44:00+00:00</updated><id>https://blog.muntashir.dev/2025/05/03/april-updates</id><content type="html" xml:base="https://blog.muntashir.dev/2025/05/03/april-updates/"><![CDATA[<p>So, I’ve started teaching as a Teaching Assistant. It is a new and interesting experience after spending over a decade in software and open source development. Also, in a foreign language that I’ve never spoken until 2021 when I got my first job abroad. This is yet another bad news for you, however. Because I now need to spend time on preparing for lectures, taking classes, grading along with my regular research and course work. I think many users have already noticed the seemingly “unstable” nature of the stable releases. This is because we now release all the changes made to the repository (well, except a few experimental features) without going through any kind of testing that we used to do. (This, in a way, makes the debug releases more “stable” than the stable release since they may get immediate fixes than the stable which is released last Friday of each month provided there are things to release.) Unfortunately, I cannot do any thing about it right now. My life is currently in a very difficult position where work-life balance does not exist: all work and no life.</p>

<p>A good news, though, is that the small amount of time I can manage for App Manager is largely spent on improving the user experience. This you may have already noticed if you have installed the latest version of App Manager.</p>

<p>Now and then, I receive requests for adding translations for docs in [placeholder] language. Please understand that translating docs is a very difficult task, and we do not approve such requests unless the existing translations for the language are very good and are backed by at least two person.</p>]]></content><author><name>Muntashir Al-Islam</name></author><category term="app_manager" /><summary type="html"><![CDATA[App Manager update: stable releases appear less tested due to direct repository changes and limited testing capacity; focus remains on improving user experience despite challenging work-life balance; translation requests for documentation require strong, multi-person support to ensure quality.]]></summary></entry><entry><title type="html">March’25 Updates</title><link href="https://blog.muntashir.dev/2025/03/31/march-updates/" rel="alternate" type="text/html" title="March’25 Updates" /><published>2025-03-31T22:37:00+00:00</published><updated>2025-03-31T22:37:00+00:00</updated><id>https://blog.muntashir.dev/2025/03/31/march-updates</id><content type="html" xml:base="https://blog.muntashir.dev/2025/03/31/march-updates/"><![CDATA[<p><em>Eid Mubarak to those who celebrate Eid Al Fitr!</em></p>

<ul>
  <li>Some of you are still sending email related to App Manager in the old email address. Those emails will be ignored, because those messages aren’t filtered. Also, please try to add a sane subject line (e.g., App Manager Crash Report, etc.) to your email. Otherwise, they will also not be filtered. I received thousands of emails per month from various sources (not just App Manager). So, unless the subject line looks important, most of them are ignored and deleted after some time. Finally, please use a sane email address as well. If you use lots of <code class="language-plaintext highlighter-rouge">x</code>s, for example, most spam filters will put it in the Spam folder ;)</li>
  <li>I have been making plans to improve the ADL project (which more-or-less follows UAD-NG project for now). Hopefully, the project will be more reliable in the future with verified and enhanced documentation. Android libraries project, on the other hand, still requires a lot of work on my end which I may be able to finish by this year.</li>
</ul>]]></content><author><name>Muntashir Al-Islam</name></author><category term="app_manager" /><summary type="html"><![CDATA[App Manager update: Reminder to use the correct email address; ongoing plans to improve the Android Debloat List (ADL) project with verified documentation, aiming for enhanced reliability.]]></summary></entry></feed>