v2.0-beta
Pre-releaseFeatures Added
- New APIs for application developers to work with (API overview)
- Launcher updated to use Apps API and will no longer use draft configuration files.
- Import Apps menu item added to the launcher to allow you to import configuration from draft.
- Automatic suspend moved to the system service so it will work when any application is running.
- Suspend when the power button is pressed from any application.
- Suspending will now always show your suspend screen, even when done from the command line.
- Wifi Menu added. For now it doesn't fully support connecting to networks you haven't configured in Xochitl.
- True multitasking support. Applications will by default be stopped/resumed when switching, but developers have the option to make backgroundable applications that will not be stopped.
- Added a background application to handle screenshots (fret).
- Added indicator in the launcher when an application is running.
- Added the ability to kill running applications from the launcher screen. Long press on a running application to open the information dialog. There will be a new kill button present there.
- With the new Application API you can change your startup application to be something other than the oxide launcher.
- You can also indicate that a background, or backgroundable application should be automatically started on boot. These applications will be started before the startup application, and then moved into the background.
- You can hide applications from the launcher. There is currently no way to do so in the UI.
- Added ability to automatically start an application on boot from the launcher.
Issues Fixed
#53 Xochitl suspend not properly handled
#45 Touch bleeds through erode to xochitl
Known Issues
#59 Disabling wifi in xochitl will crash the system service.
#69 KOReader will not pause, and will instead cause the display resolution to get wonky. You can work around this by setting onPause/onResume.
onPause=killall -STOP luajit || true && /opt/koreader/fbdepth -d 16 -r 1
onResume=/opt/koreader/fbdepth -d 8 -r 1 || true && killall -CONT luajit
#92 Auto suspend will still happen while plugged in while starting device. All you need to do is interact with the screen once and everything will start working normally.
#100 Auto sleep settings are not saved between reboots.
Warnings
If you change the startup application to something other than the built-in launcher, this application will need to be able to request other applications be launched by the system service. Currently, there are no built-in shortcuts to provide a generic application switching mechanism.
When importing applications from draft, it will fail to import applications that have configured the call=
option to use arguments. This is due to oxide only supporting pointing at a single file for an application without arguments.
As part of implementing #38 users have lost the ability to choose what order applications will display. There is a plan to add this back in a future release as part of #11.
Currently, battery/wifi status will be checked every 3 seconds, but the UI should only change if they have changed. I'm not sure how much this will affect performance. Please let me know on the community Discord if you notice that your battery is draining quicker. It's been quite a few releases and nobody has said anything though, so you are likely fine.
By default the clock will use UTC, if you need to change your timezone you'll need to ssh into the device and use timedatectl set-timezone
to change your timezone (e.g. timedatectl set-timezone America/Denver
). You can see possible timezones by looking in /usr/share/zoneinfo/
(Don't trust the output of timedatectl get-timezones)
).
Manual Upgrade
- Replace the oxide, rot, erode, and tarnish binaries on your device.
- Copy the new fret binary to your device.
- Disable the oxide service:
systemctl disable --now oxide
- Enable the tarnish service:
systemctl enable --now tarnish
Automated Upgrade
- Run
opkg update
- Run
opkg upgrade
- Disable the oxide service:
systemctl disable --now oxide
- Enable the tarnish service:
systemctl enable --now tarnish
Manual Installation
- Copy oxide.tar.xz to your remarkable
- Decompress files into the root of your reMarkable.
- Reload systemd unit files:
systemctl daemon-reload
- Disable xochitl:
systemctl disable --now xochitl
- Reload dbus configuration:
systemctl reload dbus
- Enable and start oxide
systemctl enable --now tarnish
Automated Installation
- Add the toltec repository to your entware install
- Run
opkg update
- Run
opkg install oxide
- Disable the oxide service:
systemctl disable --now oxide
- Enable the tarnish service:
systemctl enable --now tarnish
Configuration
Configuration files can be in one of the following locations:
/etc
/opt/etc
/home/root/.config
The configuration folder contains the following:
oxide.conf
Application configuration file. The launcher will automatically maintain this file.
If you would like to manually add an application entry to oxide you can do so with the following comand:
rot apps call registerApplication 'QVariantMap:{"name": "unique name", "bin": "/path/to/executable", "icon": "/path/to/icon.png"}'
You have the following configuration options available to pass in:
- bin: Path to the executable to run.
- name: Unique name of the application.
- displayName: Name to be displayed for the application to the end user.
- description: Description of the application.
- icon: Path to the icon to display for the application.
- type: Application type, possible values are:
- 0: The application is intended to only run in the foreground. Send a STOP to the application when switching.
- 1: The application is intended to only run in the background. Never send a STOP to the application.
- 2: The application can run in both the foreground and the background. When pausing the application send a USR2 signal to the application. If it fails to respond with a USR2 signal in 1 second send a STOP signal to the application. When resuming the application send a USR1 signal to the application.
- onPause: Command to run right before pausing the application
- onResume: Command to run right before resuming the application
- onStop: Command to run right before killing the application.
- flags: String array (e.g.
["flag1","flag2"]
) of application flags. Possible values are:- autoStart: This background or backgroundable application should be automatically started when the system service is first starting up. Backgroundable applications will be moved to the background immediatly.
- system: This is a system application. System applications cannot be unregistered.
- hidden: This application should not be shown to the user.
You can also manually modify configuration while tarnish is not running by modifying /home/root/.config/Eeems/tarnish.conf
Usage
Oxide consists of five applications: the main launcher, the background service, the process manager, the settings manager, and the screenshot handler.
oxide - Launcher
After you have configured and launched oxide you can access the power menu from the power button on the top right of the screen. This will allow you to put the device to sleep, or to power off the device.
The menu button on the top left side of the screen will open up the tools menu. This allows you to refresh the grid, import applications from draft, or to open up the options dialog. Importing applications will only import applications that contain valid configuration for Oxide. This means that draft configuration that attempts to pass arguments to the call=
setting will not be imported.
Tapping on the wifi icon open up the wifi menu.
The options dialog will allow you to configure various settings in the application. You have the option to reload the settings from the conf
file on disk, or to close the options dialog and save the current settings to disk.
Press on an application to launch, or return to an application. Long press on it to see more information about the application. If the application is running you will also be presented with a button to kill the application. There will be a button to toggle if this application should be launched on startup. This will automatically disable launch on startup from another application.
tarnish - Background service
Press and hold the left button to switch back to the startup application.
Press and hold the middle button to launch the process manager.
Press the power button to suspend the device.
Right button and power button long presses are also recorded, but by default no action is taken.
erode - process manager
- There is a reload button on the top right of the screen that will refresh the list.
- You can click on the column headers to sort the list by that column.
- If you click on a kill button for a process you will be prompted on if you really want to kill the process. In that prompt you will have the option to kill the process (SIGTERM), or to force quit (SIGKILL) the process.
- You can exit the application by pressing the left arrow on the top left of the toolbar.
- If the process list is long enough, you can scroll it by swiping up or down on the list. After you have swiped the list will scroll.
rot - CLI API tool
- Usage from the command line only, run
rot --help
to see possible options. For more information on possible API values see the dbus specification files or the high level API design.
fret - Screenshot daemon
Will automatically start up and wait for right button long presses, at which time it will request a screenshot be taken and stored to /tmp/fb.png
. It will then execute /tmp/.screenshot
if it exists. Due to how the reMarkable preserves colour information in the framebuffer used to generate the screenshot, there may be colour in the screenshots that are not visible on the reMarkable itself.