init
This commit is contained in:
72
README.md
Normal file
72
README.md
Normal file
@@ -0,0 +1,72 @@
|
||||
# Desktop
|
||||
|
||||
GNOME-Shell-Extension (GNOME 46, Ubuntu 24.04): Kalender, Todos und Notizen direkt auf dem Desktop,
|
||||
unter allen Fenstern, über dem Wallpaper.
|
||||
|
||||
## Bedienung
|
||||
|
||||
- **Termin anlegen:** in der Wochenansicht auf eine Stunde drücken und bis zur Endstunde ziehen,
|
||||
auch über mehrere Tage. Klick ohne Ziehen = eine Stunde. Ziehen in der Zeile „ganz“ = ganztägig.
|
||||
Oder Rechtsklick auf einen Tag (Monat), eine Stunde (Woche) oder die Tagesfläche: „Termin erstellen“.
|
||||
Popover: Titel, Von und Bis je mit Datum und Uhrzeit. Ohne Ende gilt eine Stunde, ohne Uhrzeit ganztägig.
|
||||
- **Todo anlegen:** Rechtsklick ins Todo-Panel oder in den Kalender, „Todo erstellen“. Text plus Datum und Uhrzeit.
|
||||
- **Notiz:** Rechtsklick irgendwo im Notiz-Panel, „Notiz erstellen“ fragt den Namen und öffnet den Editor.
|
||||
Klick in die Notizfläche bearbeitet. Mit Fokus steht der rohe Markdown-Text, ohne Fokus die formatierte Ansicht.
|
||||
Gespeichert wird alle paar Sekunden und beim Klick woanders hin.
|
||||
- **Bearbeiten:** Linksklick auf Termin, Todo oder Notiz.
|
||||
- **Rechtsklick auf freie Fläche:** Erstellen (Todos, Tagesansicht, Notizbaum im Wurzelordner).
|
||||
- **Rechtsklick auf Ordner:** Notiz oder Unterordner darin erstellen, Umbenennen, Löschen.
|
||||
- **Rechtsklick auf Eintrag:** Umbenennen, Löschen.
|
||||
- Popover: Enter speichert, Esc oder Klick daneben bricht ab. Keine Buttons.
|
||||
|
||||
## Aufbau
|
||||
|
||||
- `desktop@marha.de/` – die Extension
|
||||
- `extension.js` – Layout auf dem Arbeitsbereich, Stapelung über Desktop-Icons
|
||||
- `calendar.js` – Monat, Woche (Drag), Tag, Termin-Popover
|
||||
- `todos.js` – Todo-Liste, Todo-Popover
|
||||
- `notes.js` – Ordnerbaum, Markdown-Anzeige, Inline-Editor, Kontextmenü
|
||||
- `widgets.js` – Popover (Grab, Esc, Tab, Klick daneben), Kontextmenü, Datums- und Zeitauswahl
|
||||
- `markdown.js`, `dates.js` – reine Logik, ohne Shell testbar
|
||||
- `store.js` – Ablage
|
||||
- `dev/` – Test-Werkzeuge
|
||||
|
||||
## Daten
|
||||
|
||||
`~/.local/share/desktop-app/`
|
||||
|
||||
- `events.json` – Termine
|
||||
- `todos.json` – Todos
|
||||
- `notes/` – Notizen als `.md`, Ordner beliebig verschachtelt (Obsidian kann den Ordner öffnen)
|
||||
|
||||
## Installation
|
||||
|
||||
```
|
||||
make install # kopiert die Extension nach ~/.local/share/gnome-shell/extensions und aktiviert sie
|
||||
make update # überschreibt eine installierte Extension mit dem Stand aus diesem Ordner
|
||||
```
|
||||
|
||||
Danach ab- und wieder anmelden. Unter Wayland lädt die Shell neuen Code erst nach einem neuen Login.
|
||||
Voraussetzung: GNOME 46 (Ubuntu 24.04).
|
||||
|
||||
## Entwicklung
|
||||
|
||||
```
|
||||
gjs -m dev/tests/run.js # Unit-Tests für dates.js und markdown.js
|
||||
dev/restart.sh # Test-Shell als Fenster starten (zum Selbst-Ausprobieren)
|
||||
dev/restart.sh headless # Test-Shell unsichtbar, für simulierte Eingaben
|
||||
dev/tests/input.sh # Ablauf-Tests mit echter Maus und Tastatur (headless)
|
||||
dev/eval.sh dev/seed.js # Testdaten einspielen
|
||||
dev/eval.sh 'js' # JavaScript in der Test-Shell ausführen (oder Dateipfad)
|
||||
dev/shot.sh [datei.png] # Screenshot der Test-Shell
|
||||
dev/input.sh click X Y # Maus und Tastatur simulieren (nur headless gefahrlos)
|
||||
dev/press.sh "Text" # Button mit diesem Text direkt auslösen
|
||||
dev/stop.sh # Test-Shell beenden
|
||||
```
|
||||
|
||||
Die Test-Shell läuft mit `GSETTINGS_BACKEND=keyfile` und eigenem `XDG_DATA_HOME`
|
||||
unter `/tmp/desktop-app-nested/`. Die echte Session bleibt unberührt.
|
||||
|
||||
Im Fenstermodus (nested, X11-Backend) würden virtuelle Eingabegeräte auf dem echten Desktop
|
||||
landen. Deshalb nutzt `dev/input.sh` nur den headless Modus (natives Backend).
|
||||
`dev/fake-ding.py` startet ein Fenster wie Desktop Icons, um die Stapelung zu prüfen.
|
||||
Reference in New Issue
Block a user