Compare commits

..

4 Commits

Author SHA1 Message Date
√(noham)²
28fe82a3bc Update clock.qmd 2026-07-01 19:05:26 +02:00
√(noham)²
86e43a4d8d Update README.md 2026-07-01 17:54:46 +02:00
√(noham)²
e5ffe1a504 Add Vellum package manager integration 2026-07-01 17:52:23 +02:00
√(noham)²
e20ec7ae29 Add 3.27.3.0 QMD extensions and README 2026-07-01 17:45:23 +02:00
14 changed files with 307 additions and 17 deletions

1
.gitignore vendored
View File

@@ -3,3 +3,4 @@ qmldiff
hashchange
.DS_Store
DOC.md
.opencode/skills/qmd-port/SKILL.md

View File

@@ -0,0 +1,14 @@
AFFECT [[16664384747789373392]]
TRAVERSE [[3819512207256720568]] > [[7081645463424]]#[[14500576802168220354]] > [[254494525842443467]] > [[254501558939456351]]#[[16044303013921817534]]
LOCATE AFTER ALL
INSERT {
~&6503165774&~ {
~&6504315758&~: ~&12464413590283098527&~.~&233722187800420&~.~&8399929542203138183&~ + ~&"180910&~
~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~
~&6503823200&~.~&254543497768871654&~: 24
~&6014474628714890946&~: ~&6503165774&~.~&14019785292674113803&~
~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785292674113803&~
}
}
END TRAVERSE
END AFFECT

62
3.27.3.0/clock.qmd Normal file
View File

@@ -0,0 +1,62 @@
; credit for the original clock implementation: https://github.com/StarNumber12046/xovi-qmd-extensions/blob/main/clock.qmd
AFFECT [[4911547370760691430]]
TRAVERSE [[3819512207256720568]] > [[14125623155555875541]]#[[15885405667098360701]]
LOCATE BEFORE [[16385778650434842232]]#[[7709552963638993992]]
INSERT {
~&16385778650434842232&~ {
~&5972374&~: clockSidebarItem
~&8399878573055752961&~: "clockSidebarObject"
~&214642559243&~: ~&5971598&~.~&6460516198169535423&~(getCestTime(), set_Format_Date)
~&8399601734642709923&~: ~&"4628214070783643584&~
~&7082453764421&~: ~&214625660372&~
~&233726547792244&~: ~&6504329801&~
/* 1000 = 1 second / 60000 = 1 minute */
property ~&197088788&~ set_Timer: 60000
property ~&7083178290016&~ set_Format_Date: "dd/MM hh:mm"
function getCestTime() {
~&7083121450889&~ new ~&6502586279&~();
}
~&254480451320573660&~.~&495334332051582499&~: {
~&214642559243&~ = ~&5971598&~.~&6460516198169535423&~(getCestTime(), set_Format_Date);
}
~&254542236275632405&~: {
~&5972376&~ (clockSidebarItem.set_Timer === 60000) {
clockSidebarItem.set_Timer = 1000;
clockSidebarItem.set_Format_Date = "dd/MM hh:mm:ss";
} ~&6503784146&~ {
clockSidebarItem.set_Timer = 60000;
clockSidebarItem.set_Format_Date = "dd/MM hh:mm";
}
~&214642551402&~.~&7713147298280334&~ = clockSidebarItem.set_Timer
clockSidebarItem.~&214642559243&~ = ~&5971598&~.~&6460516198169535423&~(clockSidebarItem.getCestTime(), clockSidebarItem.set_Format_Date);
}
/* Timer for update time */
~&214604601930&~ {
~&5972374&~: ~&214642551402&~
~&7713147298280334&~: clockSidebarItem.set_Timer
~&7083121289162&~: ~&6504329801&~
~&233743626668842&~: ~&6504329801&~
~&495358363329399331&~: {
clockSidebarItem.~&214642559243&~ = ~&5971598&~.~&6460516198169535423&~(clockSidebarItem.getCestTime(), clockSidebarItem.set_Format_Date);
}
}
~&7081629735527&~.~&17520348323745447649&~: ~&7082020628281&~.~&15061686673205541622&~
~&7081629735527&~.~&7797818826744279624&~: ~&7083038346995&~.~&214646099849&~
~&11921478716705041271&~: ~&6504254477&~
function ~&7712792149454042&~() {
~&7083211098251&~();
}
}
}
END TRAVERSE
END AFFECT

View File

@@ -0,0 +1,11 @@
AFFECT [[3197972396468700595]]
TRAVERSE [[6502786168]]#[[10742505294233322867]]
TRAVERSE [[12395602925408354507]]#[[214642769434]]
REMOVE [[425121728314878811.16765000136167945189.7081261925573]]#[[3012293087768835154]]
END TRAVERSE
END TRAVERSE
END AFFECT
AFFECT [[3513522976947834303]]
REMOVE [[454089850271038938]]
END AFFECT

View File

@@ -0,0 +1,68 @@
; credit for the original clock implementation: https://github.com/StarNumber12046/xovi-qmd-extensions/blob/main/quickSettingsClock.qmd
AFFECT [[12542166428983872557]]
IMPORT [[7082573613689.5972775.6504315758]] [[180922.180921]]
TRAVERSE [[7711468349764991]] > [[6502786168]] > [[8397788359424131273]] > [[14125623155555875541]]#[[233718721544006]]
LOCATE AFTER [[6502786168]] > [[425121728314878811.15389500557572665857]]#[[6026822765657717152]]
INSERT {
~&6502786168&~ {
~&7081629735527&~.~&17520348323745447649&~: ~&7082020628281&~.~&10286380502125731829&~
~&7081629735527&~.~&8399743405844438450&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&7083363878252&~
~&7081629735527&~.~&499747351624466981&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&7083363878252&~
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&14397210151462632996&~ {
~&5972374&~: quickSettingsClock
~&233721384511543&~ {
~&6504027668&~: ~&7083038346995&~.~&6504027668&~
~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~
}
property ~&6503679477&~ showSeconds: ~&214625660372&~
property ~&7083178290016&~ minuteFormat: "dd/MM hh:mm"
property ~&7083178290016&~ secondFormat: "dd/MM hh:mm:ss"
property ~&197088788&~ minuteInterval: 60000
property ~&197088788&~ secondInterval: 1000
~&6504315758&~: ~&5971598&~.~&6460516198169535423&~( new ~&6502586279&~(), minuteFormat)
function updateClock() {
~&6504315758&~ = ~&5971598&~.~&6460516198169535423&~( new ~&6502586279&~(), showSeconds ? secondFormat : minuteFormat);
}
~&254480451320573660&~.~&495334332051582499&~: {
updateClock();
}
onShowSecondsChanged: {
quickSettingsClockTimer.~&233743006639214&~();
updateClock();
}
~&214604601930&~ {
~&5972374&~: quickSettingsClockTimer
~&7713147298280334&~: quickSettingsClock.showSeconds ? quickSettingsClock.secondInterval : quickSettingsClock.minuteInterval
~&7083121289162&~: ~&6504329801&~
~&233743626668842&~: ~&6504329801&~
~&495358363329399331&~: {
quickSettingsClock.updateClock();
}
}
~&254494525842443467&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&477346538929698200&~: ~&5971598&~.PointingHandCursor
~&254542236275632405&~: {
quickSettingsClock.showSeconds = !quickSettingsClock.showSeconds;
}
}
}
}
}
END TRAVERSE
END AFFECT

View File

@@ -0,0 +1,89 @@
; ported from 3.23.0.64
; In 3.22/3.23 the create buttons were emitted by a C++ Repeater (not QML).
; By 3.27 the firmware migrated to a QML Repeater backed by createWidgets model,
; so this QMD was rewritten: it keeps the Repeater (search, calendar, quick-sheet)
; and inserts the notebook, folder and quick-sheet buttons inline after it.
AFFECT [[13636194074538366841]]
TRAVERSE [[6502786168]]#[[6504254477]]
TRAVERSE [[254501108490678590]]#[[16596251247453125840]] > [[254501558939456351]]#[[6391657810197849963]]
LOCATE AFTER ALL
INSERT {
~&254501108490678590&~ {
~&7081629735527&~.~&8399470807760157065&~: ~&6504329801&~
~&7081629735527&~.~&16239278111605497701&~: 2
~&214622605608&~: ~&"214621299494&~
~&233748328658231&~: ~&6504254477&~.~&6504391364&~ === ~&"233737316206498&~ || ~&6504254477&~.~&6504391364&~ === ~&"7834776425552261693&~
}
~&254494525842443467&~ {
~&5972374&~: _notebookBtn
~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~
~&7081629735527&~.~&16239278111605497701&~: 64
~&7081629735527&~.~&8399470807760157065&~: ~&6504329801&~
~&7081629735527&~.~&8399743405844438450&~: 40
~&233748328658231&~: ~&6504254477&~.~&6504391364&~ === ~&"233737316206498&~ || ~&6504254477&~.~&6504391364&~ === ~&"7834776425552261693&~
~&14125623155555875541&~ {
~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
~&233744706647566&~: 0
~&425121728314878811&~.~&6502767986&~ {
~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~
~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&7082925185962&~
~&7083172477658&~: ~&"8609871731041592465&~
}
}
~&254542236275632405&~: {
~&197102514&~ ~&197093806&~ = ~&7083038346995&~.~&7083038346995&~.~&7083038346995&~.~&7083038346995&~;
~&197093806&~.~&11689254259907176254&~();
}
}
~&254494525842443467&~ {
~&5972374&~: _folderBtn
~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~
~&7081629735527&~.~&16239278111605497701&~: 64
~&7081629735527&~.~&8399470807760157065&~: ~&6504329801&~
~&7081629735527&~.~&8399743405844438450&~: 40
~&233748328658231&~: ~&6504254477&~.~&6504391364&~ === ~&"233737316206498&~
~&14125623155555875541&~ {
~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
~&233744706647566&~: 0
~&425121728314878811&~.~&6502767986&~ {
~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~
~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&7082925185962&~
~&7083172477658&~: ~&"1888152859110688812&~
}
}
~&254542236275632405&~: {
~&197102514&~ ~&197093806&~ = ~&7083038346995&~.~&7083038346995&~.~&7083038346995&~.~&7083038346995&~;
~&197093806&~.~&1343967321191992457&~(~&"477188259920763378&~);
}
}
~&254494525842443467&~ {
~&5972374&~: _quickSheetBtn
~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~
~&7081629735527&~.~&16239278111605497701&~: 64
~&7081629735527&~.~&8399470807760157065&~: ~&6504329801&~
~&7081629735527&~.~&8399743405844438450&~: 40
~&7081629735527&~.~&499747351624466981&~: 40
~&233748328658231&~: ~&6504254477&~.~&6504391364&~ !== ~&"214642862219&~
~&14125623155555875541&~ {
~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
~&233744706647566&~: 0
~&425121728314878811&~.~&6502767986&~ {
~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~
~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&7082925185962&~
~&7083172477658&~: ~&"5726907772531472741&~
}
}
~&254542236275632405&~: {
~&197102514&~ doc = ~&2918312801265623842&~.~&498775298796480658&~();
~&5972376&~ (doc && doc.~&6504337259&~ === 1) {
~&197102514&~ ~&197093806&~ = ~&7083038346995&~.~&7083038346995&~.~&7083038346995&~.~&7083038346995&~;
~&197093806&~.~&2766288418351025740&~.~&6504147419&~(~&"80852525132738217&~, {
~&8399386052748489877&~: doc.~&5972374&~,
~&6504167078&~: doc.~&254543134818768527&~ - 1
});
}
}
}
}
END TRAVERSE
END AFFECT

View File

@@ -1,12 +1,18 @@
# Xovi Extensions
This repo consists of multiple xovi (.qmd) extensions that are QoL improvements to the xochitl interface. These require [qt-resource-rebuilder](https://github.com/asivery/rm-xovi-extensions/tree/master/qt-resource-rebuilder) to work.
## Installation
Instructions to install xovi can be found [here](https://github.com/asivery/rmpp-xovi-extensions/blob/master/INSTALL.MD).
Installation via the [Vellum package manager](https://github.com/vellum-dev/vellum) is recommended. Dependencies are handled automatically.
### Manual
All extensions require qt-resource-rebuilder, some will require other xovi extensions. See each extension for details.
Instructions to install xovi can be found [here](https://github.com/asivery/rmpp-xovi-extensions).
Download the extensions from the folder matching your reMarkable software version.
Copy the `.qmd` files to `/home/root/xovi/exthome/qt-resource-rebuilder/` and restart xovi.
Copy the `.qmd` files to `/home/root/xovi/exthome/qt-resource-rebuilder/` and restart xovi.
Some of the QMD files in this repo are my own and some are modifications I've made to extensions created by others in the community. Modifications will link to the original author.
@@ -20,41 +26,80 @@ Beta releases are not tested nor supported.
## Extensions
### Version 3.27.3.0
#### `batteryPercentage.qmd`
<!-- [![vellum](https://img.shields.io/badge/vellum-battery--percentage-purple)](https://vellum.delivery/#/package/battery-percentage/) -->
- Shows the battery percentage next to the battery icon in the main view header.
<img src="images/batteryPercentage.png" width="400">
#### `clock.qmd`
[![vellum](https://img.shields.io/badge/vellum-sidebar--clock-purple)](https://vellum.delivery/#/package/sidebar-clock/)
- Adds a live clock to the library sidebar; tap the entry to toggle seconds display.
<img src="images/clock_1.png" width="400">
<img src="images/clock_2.png" width="400">
Note: You have to set the right timezone on the tablet (you can use [reManager](https://github.com/rmitchellscott/reManager) to set it)
#### `convertToText_remover.qmd`
[![vellum](https://img.shields.io/badge/vellum-convert--to--text--remover-purple)](https://vellum.delivery/#/package/convert-to-text-remover/)
- Removes the `Convert to text` option from selection menus and the toolbar (ported from 3.23.0.64).
<img src="images/convertToText_remover.png" width="400">
#### `uncompressDock.qmd`
[![vellum](https://img.shields.io/badge/vellum-uncompress--dock-purple)](https://vellum.delivery/#/package/uncompress-dock/)
- Replaces the widget-based create menu with dedicated buttons for notebook, folder, and quick sheet creation.
- **Rewritten** for the new `HomeScreen.CreateMenu` — the old `Navigator.CreateMenu` is no longer used in 3.27.
- Note: Notebook and Folder use Navigator methods; Quicksheet uses `LibraryController` (experimental).
<img src="images/uncompressDock.png" width="400">
#### `quickSettingsClock.qmd`
- Injects a tappable clock into the Quick Settings header; tap to toggle between minute and second precision.
Use [quicksettings-clock-serif](https://github.com/rmitchellscott) by rmitchellscott instead.
<img src="images/quickSettingsClock.png" width="400">
### `tagButton.qmd` & `favoriteButton.qmd`
- Those tweaks have been implemented by the reMarkable team in the latest update, so they are no longer needed :)
### Version 3.23.0.64
#### `clock.qmd`
- Adds a live clock to the library sidebar; tap the entry to toggle seconds display.
![Sidebar clock showing minutes](images/clock_1.png)
![Sidebar clock showing seconds](images/clock_2.png)
Note: You can add a timezone by editing the `clock.qmd` file and changing the timezone string in the line:
```
~&197102514&~ utc = now.getTime() + (now.getTimezoneOffset() * 60000);
```
#### `quickSettingsClock.qmd`
- Injects a tappable clock into the Quick Settings header; tap to toggle between minute and second precision.
![Quick settings clock](images/quickSettingsClock.png)
Note: You can add a timezone by editing the `quickSettingsClock.qmd`, see above for details.
#### `forceSync.qmd`
[![vellum](https://img.shields.io/badge/vellum-force--sync-purple)](https://vellum.delivery/#/package/force-sync/)
<img src="images/forceSync.png" width="400">
- Adds a cloud button in Quick Settings that forces a library sync when tapped (need further testing to confirm it works as intended).
![Force sync button in quick settings](images/forceSync.png)
#### `favoriteButton.qmd`
[![vellum](https://img.shields.io/badge/vellum-favorite--button-purple)](https://vellum.delivery/#/package/favorite-button/)
- Restores a `Favorite` action in the document list header for faster pinning.
![Favorite button in action bar](images/favoriteButton.png)
<img src="images/favoriteButton.png" width="400">
#### `tagButton.qmd`
[![vellum](https://img.shields.io/badge/vellum-tag--button-purple)](https://vellum.delivery/#/package/tag-button/)
- Puts a `Tag` action next to other list controls to open the tag editor directly.
![Tag button in action bar](images/tagButton.png)
<img src="images/tagButton.png" width="400">
#### `convertToText_remover.qmd`
- Removes the `Convert to text` option from selection menus and the toolbar.
![Convert to text removed from menu](images/convertToText_remover.png)
#### `uncompressDock.qmd`
- Replaces the condensed `More` menu in the new document dock with dedicated buttons for notebook, folder, and quick sheet creation.
![Expanded create menu buttons](images/uncompressDock.png)
<img src="images/uncompressDock_old.png" width="400">
#### `hideDocumentClose.qmd`
- Hides the close button in the document toolbar to prevent accidental exits.
- Hides the close button in the document toolbar to prevent accidental exits.
Use [hide-document-close](https://github.com/ingatellent) by ingatellent instead.

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB