Verkenner (app Bestanden)
FAQ › EUZOS Desktop › Verkenner · English
Wat is het?
De verkenner is de app Bestanden van EUZOS Desktop ("USB-sticks, OneDrive en SharePoint: bladeren, openen, kopiëren"). Hij toont vier soorten plekken in één venster:
- Mijn bestanden: je eigen map op deze pc, versleuteld in je profielmap (alleen na het inloggen);
- USB-sticks en externe schijven (FAT32 en exFAT; hot-plug, met Uitwerpen);
- Microsoft 365: OneDrive, Gedeeld met mij en SharePoint, via Microsoft Graph, met dezelfde Microsoft-login als de app E-mail.
Er wordt niets onversleuteld op de pc bewaard: een bestand dat je van een stick of OneDrive opent, staat alleen in het geheugen zolang het venster open is. De verkenner is ook het gedeelde venster Opslaan als voor de browser, downloads van Chromium en bijlagen van de mail.
De code staat in kernel/src/explorer/ (kernelkant) en libs/ui/src/apps/explorer.rs (tekenen en aanwijzen).
Hoe doe ik…?
Hoe open ik de verkenner?
Open Bestanden in het megamenu van het bureaublad. Vanuit de console (of via SSH) opent explorer open het venster ook.
Hoe zie ik mijn USB-sticks?
Steek de stick erin; hij verschijnt links onder USB-sticks met zijn volumenaam en vrije ruimte. In de console toont explorer elke leesbare stick (storage <n> partition at <lba>: <bestandssysteem> <vrij> of <totaal> MB free), en explorer scan laat de verkenner opnieuw kijken. De opstartstick wordt nooit getoond en nooit beschreven.
Hoe haal ik een stick veilig weg?
Klik op Uitwerpen naast de stick (of rechtsklik op de stick › Uitwerpen), of typ explorer eject <storage>. De verkenner schrijft FAT en bitmap weg, zet bij exFAT de vlag VolumeDirty uit en stuurt SYNCHRONIZE CACHE; daarna staat er "<naam> kan eruit". Een uitgeworpen stick komt pas terug als je hem eruit haalt en weer insteekt. Bij herstarten en afmelden worden alle sticks hoe dan ook weggeschreven.
Hoe gebruik ik Mijn bestanden?
Log in; Mijn bestanden staat bovenaan in de zijbalk, met de standaardmappen Documenten, Afbeeldingen, Downloads en Bureaublad (de eerste keer aangemaakt, getoond in jouw taal). Een quotabalk toont "x GB van y GB gebruikt" (rood boven 90 %). Zonder login, of zonder profielmap, ontbreekt de plek gewoon. In de console: explorer mine [pad] toont een map.
Hoe gebruik ik Bedrijfsbestanden?
Op een pc met een apparaatsleutel die de beheerder geregistreerd heeft (pckey create, pc-register), ingelogd met een account van de organisatie, verschijnt Bedrijfsbestanden onder Mijn bestanden. Daar staan de shares van de bestandsservers van de organisatie die het account mag zien; in een share werkt het zoals Mijn bestanden. Shares met alleen leesrecht kun je niet wijzigen; verwijderen verplaatst naar de prullenbak van de share op de server. Zie Bestandsserver.
Hoe log ik in bij OneDrive of SharePoint?
Kies OneDrive (of Gedeeld met mij / SharePoint) in de zijbalk en druk op Inloggen. Het venster toont een code en een adres (de device-code-flow van Microsoft): voer de code in op je telefoon of een andere computer. Het is dezelfde login als in de app E-mail (microsoft::primary(), het eerste account). Ontbreekt \EOS\FW\MSAPP.TXT, dan zegt het venster dat inloggen bij Microsoft op deze pc nog niet is ingesteld. Zie Mail voor de gedeelde Microsoft-sessie.
Hoe kopieer, verplaats, hernoem of verwijder ik iets?
Gebruik de werkbalk (Nieuwe map, Hernoemen, Verwijderen, Kopiëren, Knippen, Plakken, Vernieuwen) of het contextmenu (rechtsklik, of lang drukken met een vinger). Plakken werkt tussen elk paar plekken (stick ↔ stick, stick ↔ OneDrive, Mijn bestanden ↔ alles), ook voor mappen, in stukken, zodat een groot bestand nooit in zijn geheel in het geheugen staat. Een kopie in dezelfde map heet "naam (2).ext"; een bestaande naam geeft de vraag Vervangen?. Slepen met de muis kan (nog) niet.
Hoe open ik een bestand?
Dubbelklik, of selecteer en druk op Enter. Afbeeldingen openen in een viewer, tekstbestanden in een tekstvenster waarin je kunt bewerken en Opslaan, HTML in de browser (about:bestand?<n>, alleen in het geheugen). PDF en andere soorten geven "kan niet geopend worden".
Waarom zie ik mijn externe harde schijf niet?
NTFS (veel externe harde schijven) en FAT16 worden alleen herkend ("kan nog niet gelezen worden"). Schijven met sectoren van 4096 bytes, schijven boven 2 TB en logische partities in een uitgebreide MBR-partitie worden (nog) niet getoond.
Waarom toont explorer ls "…" in plaats van namen?
In een productiebuild drukt de console nooit bestandsnamen af (het log blijft op de stick staan, regel K-11). Namen verschijnen alleen in een testbuild.
Details
Het venster
- Links: de plekken: Mijn bestanden, USB-sticks (naam, vrije ruimte, Uitwerpen), Microsoft 365 (OneDrive, Gedeeld met mij, SharePoint: gevolgde sites en
/sites?search=*, daarna hun documentbibliotheken). - Boven: het pad als kruimelpad met Omhoog, en een zoekveld voor de huidige map (gewoon typen start ook een zoekopdracht; Esc wist).
- Werkbalk: Nieuwe map, Hernoemen, Verwijderen, Kopiëren, Knippen, Plakken, Vernieuwen; rechts Lijst/Tegels.
- Inhoud: lijst (naam, grootte, gewijzigd, soort) of tegels; mappen eerst.
- Statusregel: aantal, bestandssysteem, vrije ruimte, selectie, en een voortgangsbalk tijdens het kopiëren.
- Toetsen: pijltjes selecteren, Enter opent, Backspace gaat een map omhoog, Esc sluit een menu of wist de selectie.
Bestanden openen (grenzen per soort)
| Soort | Opent in | Grootste bestand |
|---|---|---|
| Afbeelding (PNG, JPEG, GIF, WebP, BMP, …) | viewer, geschaald naar het venster | 48 MB (explorer::MAX_OPEN) |
| Tekst (txt, md, csv, json, xml, code) | tekstvenster (lezen, bewerken, Opslaan) | euzos_ui::apps::viewer::MAX_TEXT (docs: 4 MB) |
| HTML | de browser (about:bestand?<n>) | 3 MB |
| PDF en de rest | "kan niet geopend worden" | — |
Een HTML-bestand uit de verkenner mag de browser geen about:-opdrachten geven.
Opslaan als (gedeeld onderdeel)
crate::explorer::save_as(name, content) opent vanuit elke thread een venster Opslaan als: de verkenner met alleen mappen actief, een naamveld, Annuleren/Opslaan. Het begint in Mijn bestanden › Downloads als er een profielmap open is. De inhoud blijft in het geheugen tot hij is opgeslagen. Gebruikt door de downloads van de browser (naam uit Content-Disposition of het pad), downloads van Chromium zonder profielmap, en bijlagen van de mail.
Kopiëren en verplaatsen
In stukken: 1 MB per stuk op een stick, 4 MB per downloadstuk van OneDrive, uploadstukken van 10 × 320 KiB. Verplaatsen op hetzelfde volume of dezelfde drive wijzigt alleen de vermelding (één transactie in Mijn bestanden: Dir::rename); anders kopiëren en daarna de bron verwijderen. Mappen worden hooguit 32 diep gekopieerd en hooguit 64 diep verwijderd.
USB-sticks
Een schijf telt als de opstartstick (nooit getoond) als stick hem zo gebruikt, als een partitie de GUID van de opstartpartitie heeft, als een FAT32-partitie de naam EUZOS heeft, of als er een kernel in \EOS\ staat. Interne schijven (AHCI, NVMe) verschijnen nooit: de verkenner gebruikt alleen USB-schijven. FAT32 en exFAT worden gelezen en beschreven; elke waarde van een stick wordt gecontroleerd voor gebruik (getest met fuzzing), en schrijven gebeurt in de volgorde die stroomuitval het best overleeft (data, dan FAT/bitmap, dan de nieuwe vermelding, dan de oude weg).
Mijn bestanden
bestanden/ in de versleutelde profielmap van de ingelogde gebruiker (crate::profile_dir, zie Opslag). Ernaast blijft apps/ (gegevens van apps zoals Chromium) verborgen. Bij afmelden gaat de map dicht en verdwijnt de plek. Grenzen: een bestand tot 64 MiB, 4.096 namen per map, (nog) geen wijzigingsdatum. Een vol quotum geeft "Er is niet genoeg ruimte"; verwijderen kan altijd.
OneDrive en SharePoint
Graph-verzoeken uit libs/onedrive met de gedeelde Microsoft-sessie (crate::microsoft::graph: token, verversen bij 401, Retry-After). Downloaden in stukken via @microsoft.graph.downloadUrl met Range; uploaden tot 4 MB met één PUT, groter met een uploadsessie (Content-Range); die vooraf ondertekende adressen krijgen geen token. Nieuwe mappen gebruiken conflictBehavior: fail. Tokens staan alleen in het RAM; afmelden wist ze (microsoft::wipe, explorer::logged_out, ook het klembord). Tijden van OneDrive (UTC) worden in Midden-Europese tijd getoond.
Veilige namen
euzos_storage::safe_name vervangt stuurtekens, tekens die de schrijfrichting omdraaien (bv. U+202E), tekens zonder breedte en losse surrogaten door U+FFFD. Een nieuwe naam mag geen / \ : * ? " < > | of stuurtekens bevatten en mag niet op een punt of spatie eindigen.
Naslag
Consoleopdrachten
| Opdracht | Argumenten | Wat het doet |
|---|---|---|
explorer | — | De USB-sticks die de verkenner ziet: opslagnummer, LBA van de partitie, bestandssysteem, vrij/totaal MB, alleen-lezen, onleesbaar |
explorer scan | — | Opnieuw naar sticks zoeken (usb::attached, usb::scan_if_needed) |
explorer ls | <storage> [map/sub] | Een map op stick <storage> tonen (max. 60 items; namen alleen in een testbuild) |
explorer test | <storage> | Zelftest op een stick in de map EUZOS-proef: schrijven, 5 MB teruglezen, hernoemen, kopiëren, verwijderen, wegschrijven. Verborgen aliassen: explorer trial (een oudere help-tekst) en oud explorer proef |
explorer mine | [pad] | Een map in Mijn bestanden tonen (ingelogd, profielmap open). Oude alias: explorer mijn |
explorer mine test | — | Zelftest in Mijn bestanden (schrijven, teruglezen, hernoemen, kopie "(2)", verwijderen, knippen naar een submap, en heen en terug naar de eerste stick als die er is). Verborgen aliassen: trial en oud proef |
explorer open | — | Het venster van de verkenner openen |
explorer save-test | — | Het venster Opslaan als openen met een klein testbestand. Verborgen aliassen: explorer save-trial (een oudere help-tekst) en oud explorer opslaan-proef |
explorer eject | <storage> | Een stick veilig uitwerpen. Oude alias: explorer uitwerpen |
help noemt dezelfde namen als deze tabel (test, mine, save-test; zie kernel/src/explorer/mod.rs::command).
Functies en modules
| Functie / module | Rol |
|---|---|
crate::explorer::command | De consoleopdracht explorer |
crate::explorer::save_as(name, content) | Het gedeelde venster Opslaan als (vanuit elke thread) |
crate::explorer::task / take / tick | Traag werk (stick, netwerk) in een eigen thread; uitkomsten via een wachtrij terug naar crate::screen |
crate::explorer::logged_out | Tokens, klembord en openstaande uitkomsten wissen bij afmelden |
crate::explorer::name_error_text | De melding "mag niet …" voor een ongeldige nieuwe naam |
crate::explorer::Location | Een map: Usb { disk, lba, path }, Graph(Folder), Mine { path } |
crate::explorer::usb::{places, attached, scan_if_needed, eject, flush_all, with_volume} | Sticks: hot-plug, volumes, uitwerpen, wegschrijven |
crate::explorer::source::{list, read_all, write, write_all, new_folder, rename, delete, paste, child} | Dezelfde handelingen voor elke soort plek |
crate::explorer::graph::{account, list, new_folder, rename, delete, move_to, download_address, download_chunk, upload} | OneDrive/SharePoint via Graph |
crate::explorer::viewer::max_for | Grootste bestand per soort om te openen |
euzos_ui::apps::explorer | Tekenen en aanwijzen van het venster, Opslaan als, menu's, dialogen |
libs/exfat, libs/fat (lfn.rs), libs/storage | exFAT, FAT32 met lange namen, partities, veilige namen, downloadnamen |
libs/onedrive | Graph-paden, -bodies en -antwoorden voor OneDrive/SharePoint |
Configuratiebestanden
| Bestand | Sleutel | Waarden | Betekenis |
|---|---|---|---|
\EOS\FW\MSAPP.TXT | (client-id en tenant van de Entra-app) | — | Nodig om bij Microsoft in te loggen (OneDrive, SharePoint, mail); zonder dit bestand is inloggen niet ingesteld. Formaat: zie Mail en kernel/src/microsoft.rs |
Protocolberichten en formaten (Microsoft Graph)
Paden uit libs/onedrive/src/lib.rs (Folder::path, upload_path, …) en de methoden uit kernel/src/explorer/graph.rs:
| Handeling | Graph-verzoek |
|---|---|
| Root van mijn OneDrive | GET /me/drive/root/children?$select=… |
| Root van een andere drive / een map | GET /drives/{drive}/root/children, GET /drives/{drive}/items/{id}/children |
| Gedeeld met mij | GET /me/drive/sharedWithMe (items met remoteItem: het item van de eigenaar) |
| SharePoint-sites | GET /me/followedSites en GET /sites?search=*&$top=100, daarna GET /sites/{id}/drives |
| Downloaden | GET op het item voor @microsoft.graph.downloadUrl, daarna GET op die URL met Range (stukken van 4 MB, zonder token) |
| Uploaden ≤ 4 MB | PUT /me/drive/root:/<naam>:/content?@microsoft.graph.conflictBehavior=fail (of onder een drive-item) |
| Uploaden > 4 MB | POST …:/<naam>:/createUploadSession, daarna PUT van stukken met Content-Range naar de upload-URL (zonder token; bij afbreken DELETE) |
| Hernoemen, verplaatsen (zelfde drive) | PATCH /drives/{drive}/items/{id} met {"name": …} / bovenliggende verwijzing |
| Verwijderen | DELETE /drives/{drive}/items/{id} |
| Nieuwe map | POST …/children met conflictBehavior: fail |
EUZOS