3.22 update

This commit is contained in:
√(noham)² 2025-10-22 11:38:17 +02:00
commit 6219d5b960
20 changed files with 376 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
hashtab_3.22
qmldiff

BIN
3.22/.DS_Store vendored Normal file

Binary file not shown.

66
3.22/clock.qmd Normal file
View File

@ -0,0 +1,66 @@
; 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() {
~&197102514&~ now = new ~&6502586279&~();
~&197102514&~ utc = now.getTime() + (now.getTimezoneOffset() * 60000);
~&197102514&~ cestTime = new ~&6502586279&~(utc + (2 * 3600000)); /* UTC + 2 hours
*/
~&7083121450889&~ cestTime;
}
~&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&~.preferredHeight: ~&7082020628281&~.~&15061686673205541622&~
~&7081629735527&~.~&7797818826744279624&~: ~&7083038346995&~.~&214646099849&~
~&11921478716705041271&~: ~&233744436321411&~
function ~&7712792149454042&~() {
~&7083211098251&~();
}
}
}
END TRAVERSE
END AFFECT

View File

@ -0,0 +1,11 @@
AFFECT [[3197972396468700595]]
TRAVERSE [[6502786168]]#[[10742505294233322867]]
TRAVERSE [[11969557448369804645]]#[[214642769434]]
REMOVE [[2329322817130602767]]#[[3012293087768835154]]
END TRAVERSE
END TRAVERSE
END AFFECT
AFFECT [[3888036476130402266]]
REMOVE [[454089850271038938]]
END AFFECT

26
3.22/favoriteButton.qmd Normal file
View File

@ -0,0 +1,26 @@
AFFECT [[5376273845699449139]]
TRAVERSE [[4656948266548654837]]#[[15623861903200516464]]
TRAVERSE [[254480451320573660]]#[[6102115889703265601]] > [[1046376476496319351]]
REDEFINE [[17525352808359626518]]
LOCATE BEFORE STREAM / ~&425121728314878811&~.~&254477135848310940&~.~&14006514494546121251&~ { ~&5972374&~: ~&12179665760735428534&~ /
INSERT {
~&425121728314878811&~.~&254477135848310940&~.~&14006514494546121251&~ {
~&5972374&~: favoriteActionButton
property ~&197102514&~ ~&11921478716705041271&~: ~&15623861903200516464&~
function ~&7712792149454042&~() {
~&254540341572282132&~.~&6036465494905709935&~.~&10766985859136561867&~(~&"7713002743984265&~);
~&15623861903200516464&~.~&1211463668584179656&~();
}
~&254547663413443306&~: !!~&11921478716705041271&~ && ~&11921478716705041271&~.~&233724259532396&~ === favoriteActionButton
~&6504315758&~: ~&6504222003&~(~&"7711638953809001&~)
~&8399601734642709923&~: ~&15623861903200516464&~.~&254547531013851119&~.~&4526712843927276830&~ ? ~&"4876731380093562698&~ : ~&"15094524446772117066&~
~&233748328658231&~: !~&15623861903200516464&~.~&254547531013851119&~.~&233729934123842&~
~&254542236275632405&~: ~&7712792149454042&~()
},
}
END REDEFINE
END TRAVERSE
END TRAVERSE
END AFFECT

40
3.22/forceSync.qmd Normal file
View File

@ -0,0 +1,40 @@
AFFECT [[12542166428983872557]]
IMPORT [[9024234502391964376]] 1.0
TRAVERSE [[7711468349764991]] > [[6502786168]] > [[8397788359424131273]] > [[14125623155555875541]]#[[7082882068103]]
LOCATE AFTER [[254501108490678590]]#[[254547536040299418]]
INSERT {
function triggerSyncCheck() {
~&5972376&~ (~&14175747548438553957&~.~&502031083907209467&~.~&233743626668842&~) {
~&7083121450889&~;
}
~&214622607920&~ topLevelIds = ["", ~&"214642862219&~];
~&197085552&~ (~&214622607920&~ collectionId ~&5972574&~ topLevelIds) {
~&214622607920&~ topLevelCollection = ~&233694067165438&~.~&8399431778896295215&~(collectionId);
~&5972376&~ (topLevelCollection.~&7083177691309&~ === ~&214587000859&~.~&254503380775952400&~) {
topLevelCollection.~&6025662252395059196&~(~&214587000859&~.~&214602094399&~);
}
}
~&14175747548438553957&~.~&502031083907209467&~.startCheck();
}
~&254501558939456351&~ {
~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&8397757669215083186&~ | ~&5971598&~.~&7711439549327527&~
~&233744706647566&~: ~&425121728314878811&~.~&7082020628281&~.~&233744706647566&~.~&214641496386&~
~&8398116566483627918&~ {
~&7081629735527&~.preferredHeight: ~&7082020628281&~.~&5533764238088913777&~
~&7081629735527&~.~&7797818826744279624&~: ~&7082020628281&~.~&5533764238088913777&~
~&8399601734642709923&~: ~&"5525520263628201950&~
~&481641799955318521&~: ~&5971598&~.~&233696851602406&~
~&254542236275632405&~: ~&7082882068103&~.triggerSyncCheck()
}
}
}
END TRAVERSE
END AFFECT

View File

@ -0,0 +1,8 @@
; credit: https://github.com/StarNumber12046/xovi-qmd-extensions/blob/main/hideShowToolbar.qmd
AFFECT [[2857280009207495592]]
TRAVERSE [[8397993708429497603]] > [[16948093199847579651]]#[[476924601591820571]]
REPLACE [[233748328658231]] WITH {
~&233748328658231&~: ~&214625660372&~
}
END TRAVERSE
END AFFECT

View File

@ -0,0 +1,63 @@
; credit for the original clock implementation: https://github.com/StarNumber12046/xovi-qmd-extensions/blob/main/quickSettingsClock.qmd
AFFECT [[12542166428983872557]]
IMPORT [[9024234502391964376]] 1.0
TRAVERSE [[7711468349764991]] > [[6502786168]] > [[8397788359424131273]] > [[14125623155555875541]] > [[6502786168]] > [[254501558939456351]]#[[254548156692664613]]
LOCATE BEFORE [[3875623948647577544]]#[[6090168079272128033]]
INSERT {
~&14397210151462632996&~ {
~&5972374&~: quickSettingsClock
property bool 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
property ~&197088788&~ cestOffset: 2 * 3600000
~&6504315758&~: ~&5971598&~.~&6460516198169535423&~(getCestTime(), minuteFormat)
function getCestTime() {
~&197102514&~ now = new ~&6502586279&~();
~&197102514&~ utc = now.getTime() + (now.getTimezoneOffset() * 60000);
~&7083121450889&~ new ~&6502586279&~(utc + cestOffset);
}
function updateClock() {
~&6504315758&~ = ~&5971598&~.~&6460516198169535423&~(getCestTime(), 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

27
3.22/tagButton.qmd Normal file
View File

@ -0,0 +1,27 @@
AFFECT [[5376273845699449139]]
TRAVERSE [[4656948266548654837]]#[[15623861903200516464]]
TRAVERSE [[254480451320573660]]#[[6102115889703265601]] > [[1046376476496319351]]
REDEFINE [[17525352808359626518]]
LOCATE BEFORE STREAM / ~&425121728314878811&~.~&254477135848310940&~.~&14006514494546121251&~ { ~&5972374&~: ~&12179665760735428534&~ /
INSERT {
~&425121728314878811&~.~&254477135848310940&~.~&14006514494546121251&~ {
~&5972374&~: tagActionButton
property ~&197102514&~ ~&11921478716705041271&~: ~&15623861903200516464&~
function ~&7712792149454042&~() {
~&254540341572282132&~.~&6036465494905709935&~.~&10766985859136561867&~(~&"197100325&~);
~&15623861903200516464&~.~&214641748202&~ = ~&"233704090302484&~;
~&15623861903200516464&~.~&12140756533706751453&~();
}
~&254547663413443306&~: !!~&11921478716705041271&~ && ~&11921478716705041271&~.~&233724259532396&~ === tagActionButton
~&6504315758&~: ~&6504222003&~(~&"197065477&~)
~&8399601734642709923&~: ~&"13873223703509132460&~
~&233748328658231&~: !~&15623861903200516464&~.~&254547531013851119&~.~&233729934123842&~
~&254542236275632405&~: ~&7712792149454042&~()
},
}
END REDEFINE
END TRAVERSE
END TRAVERSE
END AFFECT

48
3.22/uncompressDock.qmd Normal file
View File

@ -0,0 +1,48 @@
; credit: https://github.com/StarNumber12046/xovi-qmd-extensions/blob/main/uncompressCreate.qmd
AFFECT [[9238134294692494357]]
IMPORT [[11386068989125244955]] 1.0
TRAVERSE [[6502786168]]#[[6504254477]]
TRAVERSE [[254501108490678590]]#[[16596251247453125840]] > [[254501558939456351]]#[[6391657810197849963]]
LOCATE AFTER [[7081201431623]]#[[6504074876]]
INSERT {
~&254501108490678590&~ {
~&233748328658231&~: ~&6504254477&~.~&233720974218682&~.~&7713146641368448&~(~&8397858752669353458&~.~&233679647243674&~.~&7711997891205770&~)
~&7082729686082&~: 64
~&214646099849&~: 2
~&214622605608&~: ~&"214621299494&~
}
~&7081201431623&~ {
~&5972374&~: notebookButton
~&233748328658231&~: ~&6504254477&~.~&233720974218682&~.~&7713146641368448&~(~&8397858752669353458&~.~&233679647243674&~.~&7711997891205770&~)
~&8399601734642709923&~: ~&"8609871731041592465&~
~&254542236275632405&~: ~&6504254477&~.~&7834776454199036121&~();
}
~&254501108490678590&~ {
~&233748328658231&~: ~&6504254477&~.~&233720974218682&~.~&7713146641368448&~(~&8397858752669353458&~.~&233679647243674&~.~&8397854845390750421&~)
~&7082729686082&~: 64
~&214646099849&~: 2
~&214622605608&~: ~&"214621299494&~
}
~&7081201431623&~ {
~&5972374&~: folderButton
~&233748328658231&~: ~&6504254477&~.~&233720974218682&~.~&7713146641368448&~(~&8397858752669353458&~.~&233679647243674&~.~&8397854845390750421&~)
~&8399601734642709923&~: ~&"1888152859110688812&~
~&254542236275632405&~: ~&6504254477&~.~&4100702871256454852&~();
}
~&254501108490678590&~ {
~&233748328658231&~: ~&6504254477&~.~&233720974218682&~.~&7713146641368448&~(~&8397858752669353458&~.~&233679647243674&~.~&8398512905398897727&~)
~&7082729686082&~: 64
~&214646099849&~: 2
~&214622605608&~: ~&"214621299494&~
}
~&7081201431623&~ {
~&5972374&~: quickSheetsButton
~&233748328658231&~: ~&6504254477&~.~&233720974218682&~.~&7713146641368448&~(~&8397858752669353458&~.~&233679647243674&~.~&8398512905398897727&~)
~&8399601734642709923&~: ~&"5726907772531472741&~
~&254542236275632405&~: ~&6504254477&~.~&8127652744343790830&~();
}
}
REMOVE [[7081201431623]]#[[6504074876]]
END TRAVERSE
END TRAVERSE
END AFFECT

51
README.md Normal file
View File

@ -0,0 +1,51 @@
# 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.
Instructions to install xovi can be found [here](https://github.com/asivery/rmpp-xovi-extensions/blob/master/INSTALL.MD).
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.
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.
Extensions have been tested only for the latest reMarkable OS version, though they may work on newer versions.
Beta releases are not tested nor supported.
## Extensions
### Version 3.22
#### `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)
#### `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)
#### `forceSync.qmd`
- 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`
- Restores a `Favorite` action in the document list header for faster pinning.
![Favorite button in action bar](images/favoriteButton.png)
#### `tagButton.qmd`
- Puts a `Tag` action next to other list controls to open the tag editor directly.
![Tag button in action bar](images/tagButton.png)
#### `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)
#### `hideDocumentClose.qmd`
- Hides the close button in the document toolbar to prevent accidental exits.

34
hash.sh Executable file
View File

@ -0,0 +1,34 @@
#!/bin/bash
# Configuration
QMLDIFF="./qmldiff"
HASHTAB="hashtab_3.22"
# Usage
if [ $# -lt 1 ]; then
echo "Usage: $0 <folder> [-r]"
echo "Example: $0 /path/to/folder"
echo " $0 /path/to/folder -r"
exit 1
fi
FOLDER="$1"
REVERSE_FLAG="$2"
# Check if folder exists
if [ ! -d "$FOLDER" ]; then
echo "Error: Folder not found → $FOLDER"
exit 1
fi
# Process each .qmd file in the folder
for file in "$FOLDER"/*.qmd; do
if [ -f "$file" ]; then
echo "Processing: $file"
"$QMLDIFF" hash-diffs "$HASHTAB" "$file" $REVERSE_FLAG
echo "✅ Done: $file"
echo
fi
done
echo "All files processed successfully."

BIN
images/clock_1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
images/clock_2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 188 KiB

BIN
images/favoriteButton.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
images/forceSync.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
images/tagButton.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
images/uncompressDock.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB