oxide
oxide copied to clipboard
Applications with no longer valid bin files are not removed without restart
Describe the bug
Oxide launcher still list uninstalled application. rot apps get applications also list the uninstalled application
To Reproduce Steps to reproduce the behavior:
- Install calculator (did it via nao)
- In Oxide launcher, hit "import apps"
- Uninstall calculator (did it via nao)
- In Oxide launcher, hit "import apps" again, but "Calculator" still stay here.
Expected behavior A uninstalled application shouldn't be listed in the launcher. We need a way to remove the application cleanly and definitively
Version Information:
- Device: reMarkable 2
- OS: 2.12.1.527
- Version: No idea, where is it shown ?
Have you tried the reload button instead?
Yes, it wasn't working either.
Rebooting the tablet worked.
Very odd, a reload should have done it. Are you able to access the logs from that run? journalctl -au tarnish would let you explore the logs.
Here's an extract:
Mar 08 12:53:47 reMarkable tarnish[220]: QMap(("bin", QVariant(QString, "/opt/bin/tilem"))("description", QVariant(QString, "TI-84+ emulator"))("directories", QVariant(QStringList, ()))("displayName", QVariant(QString, "TilEm"))("environment", QVariant(QVa
riantMap, QMap()))("flags", QVariant(QStringList, ()))("icon", QVariant(QString, "/opt/etc/draft/icons/tilem.png"))("name", QVariant(QString, "TilEm"))("onPause", QVariant(QString, ""))("onResume", QVariant(QString, ""))("onStop", QVariant(QString, ""))("p
ermissions", QVariant(QStringList, ()))("splash", QVariant(QString, ""))("type", QVariant(int, 0))("workingDirectory", QVariant(QString, "")))
Mar 08 12:53:47 reMarkable tarnish[220]: Registered "/codes/eeems/oxide1/apps/dfa3eb5eaf245fb2b51557be80b86029" codes.eeems.oxide1.Application
Mar 08 12:53:47 reMarkable tarnish[220]: "calculator"
Mar 08 12:53:47 reMarkable tarnish[220]: QMap(("bin", QVariant(QString, "/opt/bin/calculator"))("description", QVariant(QString, "Touch-based calculator"))("directories", QVariant(QStringList, ()))("displayName", QVariant(QString, "calculator"))("environme
nt", QVariant(QVariantMap, QMap()))("flags", QVariant(QStringList, ()))("icon", QVariant(QString, "/opt/etc/draft/icons/calculator.png"))("name", QVariant(QString, "calculator"))("onPause", QVariant(QString, ""))("onResume", QVariant(QString, ""))("onStop"
, QVariant(QString, ""))("permissions", QVariant(QStringList, ()))("splash", QVariant(QString, ""))("type", QVariant(int, 0))("workingDirectory", QVariant(QString, "")))
Mar 08 12:53:47 reMarkable tarnish[220]: Invalid configuration: "calculator" has invalid bin "/opt/bin/calculator"
[...]
Mar 08 12:53:54 reMarkable tarnish[220]: [[0;1;31m[[0;1;39m[[0;1;31m[codes.eeems.oxide 293] "TilEm"[[0m
Mar 08 12:53:54 reMarkable tarnish[220]: [[0;1;31m[[0;1;39m[[0;1;31m[codes.eeems.oxide 293] "codes.eeems.erode"[[0m
Mar 08 12:53:54 reMarkable tarnish[220]: [[0;1;31m[[0;1;39m[[0;1;31m[codes.eeems.oxide 293] "nao package manager"[[0m
Mar 08 12:53:54 reMarkable tarnish[220]: [[0;1;31m[[0;1;39m[[0;1;31m[codes.eeems.oxide 293] "xochitl"[[0m
Mar 08 12:53:54 reMarkable tarnish[220]: [[0;1;31m[[0;1;39m[[0;1;31m[codes.eeems.oxide 293] "yaft"[[0m
Mar 08 12:53:55 reMarkable tarnish[220]: [[0;1;31m[[0;1;39m[[0;1;31m[codes.eeems.oxide 293] QQmlExpression: Expression qrc:/widgets/SettingsPopup.qml:225:21 depends on non-NOTIFYable properties:[[0m
Mar 08 12:53:55 reMarkable tarnish[220]: [[0;1;31m[[0;1;39m[[0;1;31m[codes.eeems.oxide 293] Controller::maxTouchHeight[[0m
Mar 08 12:53:55 reMarkable tarnish[220]: [[0;1;31m[[0;1;39m[[0;1;31m[codes.eeems.oxide 293] qrc:/widgets/SettingsPopup.qml:221:17: QML BetterSpinBox: Binding loop detected for property "value"[[0m
Mar 08 12:53:55 reMarkable tarnish[220]: [[0;1;31m[[0;1;39m[[0;1;31m[codes.eeems.oxide 293] QQmlExpression: Expression qrc:/widgets/SettingsPopup.qml:207:21 depends on non-NOTIFYable properties:[[0m
Mar 08 12:53:55 reMarkable tarnish[220]: [[0;1;31m[[0;1;39m[[0;1;31m[codes.eeems.oxide 293] Controller::maxTouchHeight[[0m
Mar 08 12:53:55 reMarkable tarnish[220]: [[0;1;31m[[0;1;39m[[0;1;31m[codes.eeems.oxide 293] qrc:/widgets/SettingsPopup.qml:203:17: QML BetterSpinBox: Binding loop detected for property "value"[[0m
Mar 08 12:53:55 reMarkable tarnish[220]: [[0;1;31m[[0;1;39m[[0;1;31m[codes.eeems.oxide 293] QQmlExpression: Expression qrc:/widgets/SettingsPopup.qml:189:21 depends on non-NOTIFYable properties:[[0m
Mar 08 12:53:55 reMarkable tarnish[220]: [[0;1;31m[[0;1;39m[[0;1;31m[codes.eeems.oxide 293] Controller::maxTouchWidth[[0m
Mar 08 12:53:55 reMarkable tarnish[220]: [[0;1;31m[[0;1;39m[[0;1;31m[codes.eeems.oxide 293] qrc:/widgets/SettingsPopup.qml:185:17: QML BetterSpinBox: Binding loop detected for property "value"[[0m
Mar 08 12:53:55 reMarkable tarnish[220]: [[0;1;31m[[0;1;39m[[0;1;31m[codes.eeems.oxide 293] QQmlExpression: Expression qrc:/widgets/SettingsPopup.qml:171:21 depends on non-NOTIFYable properties:[[0m
Mar 08 12:53:55 reMarkable tarnish[220]: [[0;1;31m[[0;1;39m[[0;1;31m[codes.eeems.oxide 293] Controller::maxTouchWidth[[0m
Mar 08 12:53:55 reMarkable tarnish[220]: [[0;1;31m[[0;1;39m[[0;1;31m[codes.eeems.oxide 293] qrc:/widgets/SettingsPopup.qml:167:17: QML BetterSpinBox: Binding loop detected for property "value"[[0m
Mar 08 12:53:55 reMarkable tarnish[220]: [[0;1;31m[[0;1;39m[[0;1;31mSleep After: 1 minutes Sleep After: 1 minutes[[0m
Mar 08 12:53:55 reMarkable tarnish[220]: [[0;1;31m[[0;1;39m[[0;1;31mSleep After: 1 minutes qrc:/widgets/SettingsPopup.qml:47:17: QML BetterSpinBox: Binding loop detected for property "value"[[0m
Mar 08 12:53:55 reMarkable tarnish[220]: [[0;1;31m[[0;1;39m[[0;1;31m[codes.eeems.oxide 293] qrc:/main.qml:22:5: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo(<arguments>) { ... }
[[0m
Mar 08 12:53:55 reMarkable tarnish[220]: [[0;1;31m[[0;1;39m[[0;1;31m[codes.eeems.oxide 293] Creating window[[0m
Mar 08 12:53:55 reMarkable tarnish[220]: [[0;1;31m[[0;1;39m[[0;1;31m[codes.eeems.oxide 293] Battery level: 67[[0m
Mar 08 12:53:55 reMarkable tarnish[220]: [[0;1;31m[[0;1;39m[[0;1;31mBattery state: Charging Battery state: Charging[[0m
Mar 08 12:53:55 reMarkable tarnish[220]: [[0;1;31m[[0;1;39m[[0;1;31mBattery temperature: 24 Battery temperature: 24[[0mMar 08 12:53:55 reMarkable tarnish[220]: [[0;1;31m[[0;1;39m[[0;1;31mCharger state: Connected Charger state: Connected[[0mMar 08 12:53:55 reMarkable tarnish[220]: [[0;1;31m[[0;1;39m[[0;1;31m[codes.eeems.oxide 293] Wifi state: On+Connected+Offline[[0m
Mar 08 12:53:55 reMarkable tarnish[220]: [[0;1;31m[[0;1;39m[[0;1;31mF Framebuffer has wrong id: "mxcfb"[[0m
Mar 08 12:53:55 reMarkable tarnish[220]: [[0;1;31m[[0;1;39m[[0;1;31m[codes.eeems.oxide 293] Framebuffer initialized: QImage(QSize(1404, 1872),format=QImage::Format_RGB16,depth=16,devicePixelRatio=1,bytesPerLine=2808,sizeInBytes=5256576) 5256576[[0m
Mar 08 12:53:55 reMarkable tarnish[220]: [[0;1;31m[[0;1;39m[[0;1;31m[codes.eeems.oxide 293] qml: Main display[[0m
Mar 08 12:53:55 reMarkable tarnish[220]: [[0;1;31m[[0;1;39m[[0;1;31m[codes.eeems.oxide 293] parsing config file...[[0m
Mar 08 12:53:55 reMarkable tarnish[220]: [[0;1;31m[[0;1;39m[[0;1;31m[codes.eeems.oxide 293] Columns: 6[[0m
[...]
Not much in fact. Where's the rot's db about application is stored ?
There's no calculator.oxide in /opt/usr/share/applications or /opt/etc/draft either after uninstall.
Rot is just a command line tool for interfacing with the system service: tarinish. It's live data is stored in /home/root/.config/Eeems/tarnish.conf.
The calculator package doesn't include a calculator.oxide file, so automatic removal doesn't happen until restarting tarnish, even with a reload. It looks like there is a slight gap in the logic on reload that doesn't remove entries that no longer have a valid binary.
If you'd like to manually remove the application quicker you can use rot to remove it: rot apps call unregisterApplication <path>
You can find the documentation on the apps api here.
But there's a draft file in the package. Maybe tarnish should check for the draft file presence instead of the binary file, with inotify ?
But there's a draft file in the package. Maybe tarnish should check for the draft file presence instead of the binary file, with inotify ?
Tarnish doesn't speak draft. The launcher has code to allow you to import on demand from draft files. Oxide has it's own application registration format that it uses instead, and it expects anything that adds/removes/modifies those files to call the reload method in the apps API.
@X-Ryl669 is this still an issue in 2.5?
I made a mistake while trying to install the 3.1 firmware. Since Remarkable changed the FB's code, it doesn't work anymore with remarkable fb server/client's hack and now Oxide/Tarnish doesn't work either.
I'm waiting for a solution that's working with latest firmware so I can reinstall Tarnish, I'll be able to tell by then. Right now, I can't tell.
I made a mistake while trying to install the 3.1 firmware. Since Remarkable changed the FB's code, it doesn't work anymore with remarkable fb server/client's hack and now Oxide/Tarnish doesn't work either.
I'm waiting for a solution that's working with latest firmware so I can reinstall Tarnish, I'll be able to tell by then. Right now, I can't tell.
rm2fb in toltec now supports up to 3.2.3.1595, so you should be able to get it working again and test.
@X-Ryl669 have you had a chance to test?
Well, yes and no. When using 3.2 I got everything working, but xochitl had a nasty bug causing corruption of notebook when you delete any text in the sheet (not related here). I've updated to 3.3, then 3.4 hoping it was solved. Then I realized that rm2fb doesn't work with these versions.
Recently, my tablet was updated to 3.5.2.1807 (I forgot to disable the automatic update switch) and rm2fb doesn't work with it either. It seems the format of the wave table has changed in 3.4 and later so something needs to be updated in rm2fb.
In the end, I don't know if the bug still happens here. I hope not. Let's close the issue since I can't check anymore until rm2fb is updated so I can install tarnish and oxide back to test.
Thanks for getting back to me. I'll close it for now like you suggested