New app: SysReadout Monitor
SysReadout Monitor (SR Monitor) is a system monitor drawn as a KDE Konsole terminal. It has twelve pages you swipe between: sys, cpu, mem, power, net, scan, apps, sensors, storage, journal, shell and conf. Only the page on screen is sampled. Apart from the optional DNS monitor and notification log, nothing runs while the app is hidden. The scan page lists Wi-Fi access points and Bluetooth devices with their signal, to pick the strongest network or find a misplaced device. Shizuku is optional; with it the app also shows processes, connections, temperatures, battery use per app and logcat, and the shell page can run commands. GPL-3.0-only, Kotlin + Jetpack Compose.
It's a companion to SysReadout Launcher (!50444), by the same author, and shares its data layer.
- Source: https://github.com/AndSni/SysReadout-Monitor
- Release: https://github.com/AndSni/SysReadout-Monitor/releases/tag/v0.1.3
- I am the author.
Checklist
Policy
- The app complies with the inclusion criteria.
- The original app author has been notified (and does not oppose the inclusion). If you are not the author, please paste the link of the reply from the author.
- The upstream app source code repo contains the app metadata in a Fastlane or Triple-T folder structure. The summary and description must be included and images, icon, and changelog should also be provided for better user experience. The
en-USlocale must be included.
Docs
- Please read the guide first if this is your first contribution.
- Please make sure your metadata follows the best practice in our templates.
- Please read the Build Metadata Reference and make sure your metadata is valid.
- Please read the Quick Start Guide.
Merge Request Setup
- The title of this merge request should follow "New app: app name" format.
- Please make sure your fdroiddata fork is public and your branch is not protected. See https://docs.gitlab.com/user/project/repository/branches/protected/.
- Please read our Git guide if you don't know how to rebase your branch. Don't rebase your branch if there is no conflict.
- All related fdroiddata and RFP issues have been referenced in this merge request (there are none)
- Please only submit one app in one MR.
Metadata
- Metadata must be put in
metadata/<applicationId>.yml. - Metadata must be a valid YAML file.
- Metadata must use LF as line ending.
- Don't add summary/description/changelog/images or anything that should be provided in upstream repo. Please check the Changes tab to make sure there is no other unrelated files added in the MR.
- Releases are tagged and auto update is enabled unless there is a special reason.
- There is an issue tracker and contact info of the author so that we can report bugs and contact the author.
- An AuthorName must be added. It doesn't need to be the real name.
- External repos are added as git submodules instead of srclibs. You can update git submodules without opening an MR in this repo and the submodule is covered by our scanner. (none are used)
- Enable Reproducible Builds. We'll use your signature for improved security/reliability, also allowing users to switch between different channels. Do note that if you don't enable reproducible build then the apk will be signed with our key so you can't enable it later. If you can't enable this, please add the reasons here.
- Setup abi split if the APK is large and the splitted ones can be much smaller. (not needed: the APK is 1.7 MB and its only native code is about 60 KB of AndroidX libraries across four ABIs, so per-ABI APKs would be barely smaller)
- Only the latest versions should be kept in the metadata before it's merged. If you update the metadata, please replace the old versions with the new ones.
- Don't add any disabled versions in the metadata.
- The
commitfield should be the full hash. Please don't use tag or branch in commit.
Pipeline
- All pipelines should pass.
- All warnings and errors in the Reports tab should be fixed or explained.
- F-Droid CI runners are under GitLab's FOSS program, so there's no need for you to pay for any CI time. If Gitlab starts asking for phone numbers or credit cards don't submit anything, just leave a note in the MR so we know we need to trigger the CI.
Notes for reviewers
Reproducible build. Binaries points at the APK that the upstream CI attaches to each version tag, and AllowedAPKSigningKeys is its certificate. Checked for v0.1.3 (built with R8, names not obfuscated):
- The upstream CI build (JDK 17) and a local clean build (JDK 21) of
7a0fec8930963e86dc96728c06e090eb898b46c5are byte-identical. - A keystore-free build of that commit from a fresh clone gives
app-release-unsigned.apk. With the released APK's signature copied onto it (apksigcopier), it is byte-identical to the released APK. - The APK signing block holds only the v2 signature and padding, with no dependency-info block. VCS info is disabled, so the APK doesn't depend on how the source was checked out.
- I ran
fdroid lint,rewritemetaandcheckupdateslocally.checkupdatesfinds 0.1.3 (4) atv0.1.3and ignores the rollinglatestpre-release tag. The longChangelogandBinariesURLs are wrapped the way fdroiddata's CI asked for in !50444.
Permissions and anti-features. No ads, analytics, tracking or accounts. No Google libraries: only AndroidX, Jetpack Compose and the Shizuku API. Runtime permissions are requested only when the user taps the feature that needs them.
QUERY_ALL_PACKAGES: real app names for processes, connections, traffic, battery use and app counts.INTERNET: only for the optional DNS monitor, which is off by default. It is a localVpnServicethat routes nothing but DNS and relays apps' own lookups to the network's own DNS servers, with no public fallback resolver. Nothing else in the app connects anywhere. EmojiCompat is left out, so Google Play services doesn't download an emoji font for the app at first start. On a fresh emulator, the app's uid had no traffic at all.- With Shizuku connected, the net page names connection addresses through reverse DNS lookups. The Shizuku helper (shell uid) makes them through the phone's resolver, and
conf › reverse_dnsswitches them off. - Location, nearby devices (
BLUETOOTH_SCANwithneverForLocation), Bluetooth connect, phone state and activity recognition are used for GPS and satellites, Wi-Fi names and the scan page, connected Bluetooth devices and their battery, 5G/LTE details, and steps.CHANGE_WIFI_STATEstarts Wi-Fi scans for the scan page. - The user grants usage access and notification access in Android's settings. Notification events are kept in memory only.
- Shizuku (app Apache-2.0, API library MIT) is optional. With it the app reads
top,/proc/netand a fewdumpsysoutputs, and the shell page runs the commands the user types, as the shell user.
I don't think any anti-feature applies; happy to add one if you see it differently.