Cargo - ein moderner FTP/SFTP Client

  • Ich habe nun eine sehr frühe Version - aber bereits funktionierende Version - einer neuen App veröffentlicht.

    Die App hört auf den Namen "Cargo". Mit Boot Mate bin ich etwas tiefer in den Entwicklung von Rust eingetaucht. Und bin nun ein Ärgernis angegangen, dass ich seit langer Zeit habe. FileZilla!

    Seit ich denken kann nutze ich für FTP und SFTP Verbindungen FileZilla. Aber die App wird zunehmend mühsamer. Sie passt sich nicht in den Desktop ein. Beim Wechsel zwischen Dark- und Lightmode muss man die App neustarten weil sie Darstellungsfehler aufweist. Die Flatpak Version von FileZilla kann viele Dinge nicht weil sie absolut nicht auf Flatpak angepasst wurde, usw

    Daher ich spiele schon länger mit dem Gedanken ein eigene FTP/SFTP Client zu schreiben. Und habe nun damit angefangen. Die App befindet sich noch in einem sehr frühen Entwicklungsstand (Version 0.1). Und kann einige Dinge wie z.B. Drag & Drop noch nicht. Aber dennoch sind die Grundfunktionalitäten schon da. Es gibt wie bei FileZilla einen "Verbindungsmanager" wo man alle seine Verbindungen hinterlegen kann:

    The content cannot be displayed because you do not have authorisation to view this content.

    The content cannot be displayed because you do not have authorisation to view this content.

    Und man kann bereits Dateien hoch- und runterladen. Vom Layout her - funktioniert das ganze ein bisschen wie FileZilla mit dem zwei-spaltigen Fenster. Wobei links dein Computer und Rechts die FTP/SFTP Verbdingung ist.

    The content cannot be displayed because you do not have authorisation to view this content.

    Zurzeit kann das Tool FTP, FTPs und SFTP Verbindungen. Sowohl mit Passwort-Authentifizierung, mit SSH-Key Authentifizierung und auch mit SSH-Agent Integration.

    Was die nächsten dringenden Steps sind:

    • Drag & Drop
    • Übersetzung finalisieren
    • Kontextmenü
    • Rechte von Dateien bearbeiten

    Dennoch kann man die App bereits testen. Sie ist als Flatpak verfügbar und kann über diese zwei Befehle installiert werden.

    Erstens mein eigenes Flatpak Repository hinzufügen:

    Code
    flatpak remote-add --if-not-exists rueegger-dev https://flatpak.rueegger.dev/rueegger-dev.flatpakrepo

    Danach Cargo installieren:

    Code
    flatpak install rueegger-dev me.rueegger.cargo

    Danach erhält ihr mit "flatpak update" automatisch Updates von Cargo sofern ich welche Veröffentlicht habe.

    Mehr zu meinem Flatpak Repo: https://flatpak.rueegger.dev/

    Code von Cargo (GPLv2): https://github.com/srueegger/me.rueegger.cargo

    Linux Nutzer seit über 20 Jahren. I ❤️ Freedom!

    Praxisnahe Einblicke in Self Hosting, Linux und eigene Infrastruktur. Für Entwickler:innen und Macher:innen, die ihre digitale Souveränität selbst in die Hand nehmen. https://rueegger.me

  • kim88 February 24, 2026 at 9:24 AM

    Approved the thread.
  • Kurzes Update - und ich hab Vergessen die Versionsnummer zu aktualisieren - ist immer noch 0.1 - macht aber nichts.

    Im Seitenmanager kann man nun optional definieren auf welche Pfade man gehen möchte wenn eine Verbindung mit dem Server hergestellt wurde. Und auch direkt die automatische Ordnersynchronisierung aktivieren.

    Zusätzlich müsste nun alles korrekt übersetzt sein, die App war vorher noch eine Mischung aus Deutsch und Englisch und sollte nun vollständig Deutsch sein (sofern euer System eine Deutsche Sprache benutzt).

    The content cannot be displayed because you do not have authorisation to view this content.

    Das Update bekommt ihr normal über:

    Code
    flatpak update

    Für alle die die App noch nicht installiert haben, ihr könnt sie mit folgenden Befehlen installieren:

    Code
    flatpak remote-add --if-not-exists rueegger-dev https://flatpak.rueegger.dev/rueegger-dev.flatpakrepo
    flatpak install rueegger-dev me.rueegger.cargo

    Happy Testing

    Linux Nutzer seit über 20 Jahren. I ❤️ Freedom!

    Praxisnahe Einblicke in Self Hosting, Linux und eigene Infrastruktur. Für Entwickler:innen und Macher:innen, die ihre digitale Souveränität selbst in die Hand nehmen. https://rueegger.me

  • Haha nein. Unterbewusst vielleicht. Ich habe mir bevor ich über Technologie Gedanken gemacht habe an einem Namen herumstudiert. Und wollte hier auch die Guidelines von Gnome und Flathub berücksichtigen (falls die App mal nach Flathub geht).

    Ich habe Cargo genommen, weil ich den Namen auch bei der SBB (Schweizerischen Bundesbahn) spannend finde. SBB Cargo kümmert sich halt um den Transport von Fracht. Und technisch gesehen sind die Daten die man per FTP/SFTP hin und her transferiert ja auch einfach Fracht. Daher habe ich mich für Cargo entschieden.

    In der engeren Auswahl standen auch "Ferry", "Shift" und "Shelf". Shelf flog schnell raus, da ich keine Verwechslung mit der App DistroShelf wollte.

    Wie man hier (direkt auf Zeile 1) und überall im Code sieht heisst die App innerhalb vom Code und im Dateisystem auch "cargo-app". und nicht "cargo". Ursprünglich war es nur "cargo" das führte aber immer wieder zu Syntax Problemen mit "cargo" selber. ;) Daher ich hab mir mit dem Namen selber ein kleines Bein gestellt bin aber dabei geblieben.

    Linux Nutzer seit über 20 Jahren. I ❤️ Freedom!

    Praxisnahe Einblicke in Self Hosting, Linux und eigene Infrastruktur. Für Entwickler:innen und Macher:innen, die ihre digitale Souveränität selbst in die Hand nehmen. https://rueegger.me

  • Vielen Dank! Ich konnte FileZilla nie wirklich leiden, daher freue mich sehr über eine deutlich bessere Alternative.

    Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert, der letzte Netzknoten kommerzialisert ist, werdet Ihr merken, dass Manager nicht programmieren können.

  • Noch ist sie nicht besser, Es fehlt noch einiges - aber es kommt mit der Zeit :)

    Linux Nutzer seit über 20 Jahren. I ❤️ Freedom!

    Praxisnahe Einblicke in Self Hosting, Linux und eigene Infrastruktur. Für Entwickler:innen und Macher:innen, die ihre digitale Souveränität selbst in die Hand nehmen. https://rueegger.me

  • Noch ist sie nicht besser, Es fehlt noch einiges - aber es kommt mit der Zeit :)

    Sieht aber recht vielversprechend aus...;)

    Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert, der letzte Netzknoten kommerzialisert ist, werdet Ihr merken, dass Manager nicht programmieren können.

  • Haha nein. Unterbewusst vielleicht. Ich habe mir bevor ich über Technologie Gedanken gemacht habe an einem Namen herumstudiert. Und wollte hier auch die Guidelines von Gnome und Flathub berücksichtigen (falls die App mal nach Flathub geht).

    Ich habe Cargo genommen, weil ich den Namen auch bei der SBB (Schweizerischen Bundesbahn) spannend finde. SBB Cargo kümmert sich halt um den Transport von Fracht. Und technisch gesehen sind die Daten die man per FTP/SFTP hin und her transferiert ja auch einfach Fracht. Daher habe ich mich für Cargo entschieden.

    In der engeren Auswahl standen auch "Ferry", "Shift" und "Shelf". Shelf flog schnell raus, da ich keine Verwechslung mit der App DistroShelf wollte.

    Wie man hier (direkt auf Zeile 1) und überall im Code sieht heisst die App innerhalb vom Code und im Dateisystem auch "cargo-app". und nicht "cargo". Ursprünglich war es nur "cargo" das führte aber immer wieder zu Syntax Problemen mit "cargo" selber. ;) Daher ich hab mir mit dem Namen selber ein kleines Bein gestellt bin aber dabei geblieben.

    Mega!

    Technik Frage: Rust ist klar aber was nimmst du für das GUI. Kenn mich bei Gnome ja nicht so aus

    Arch%20Linux-1793D1?logo=arch-linux&logoColor=fff&style=for-the-badge NIXOS-5277C3.svg?style=for-the-badge&logo=NixOS&logoColor=white ansible-%231A1918.svg?style=for-the-badge&logo=ansible&logoColor=white github-%23121011.svg?style=for-the-badge&logo=github&logoColor=white

    Arch Linux isn't unstable

  • Ja sieht nach was aus, ich werde es bei Gelegenheit mal testen in der VM. Ich nutze ja auch FileZilla seit vielen Jahren, bin hier aber ganz zufrieden, es macht was es soll.

    Vor etlichen Jahren hab ich PSFTP Professionell genutzt, wurde dann aber nicht mehr weiterentwickelt.

    Was mir fehlt seit PSFTP ist eine automatische Synchronisierung im Hintergrund, war hier und da recht hilfreich ...

  • Technik Frage: Rust ist klar aber was nimmst du für das GUI. Kenn mich bei Gnome ja nicht so aus

    Ich nutze "libadwaita" das ist ein GTK4 Framework vom Gnome Projekt. Gnome entwickelt alle ihre eigenen Apps damit. Daher folgt "Cargo" 1:1 den Gnome Interface Guidelines.

    -------------------------------------------------------------------------------------------

    Update: 0.2 Version ist erschienen

    Per flatpak update erhaltet ihr nun Version 0.2 von Cargo. Die neue Version bringt 2 Neuigkeiten mit sich.

    Die grosse Neuigkeit ist nun der Drag and Drop Support. Ihr könnt nun eine Datei oder Ordner von der linken Spalte in die rechte Spalte ziehen um den hochzuladen. Oder eine Datei / Ordner von der rechten Spalte in die linke Spalte ziehen um die Auswahl herunterzuladen. Damit ist nun eine wichtige Core-Funktionalitätin der App verfügar.

    Die zweite Neuerung ist nur minimal. Die Dateitypen (z.b. PDF, Bilddateien, etc) zeigen ja ein kleines Icon an, bisher wurden da nur 4 verschiedene Icons angezeigt - mehr als Test. Nun nutze ich die komplette Palette der "Gnome Symbolic Icons" und zeigen für verschiedene Dateitypen jeweils das richtige Gnome Icon an.

    Linux Nutzer seit über 20 Jahren. I ❤️ Freedom!

    Praxisnahe Einblicke in Self Hosting, Linux und eigene Infrastruktur. Für Entwickler:innen und Macher:innen, die ihre digitale Souveränität selbst in die Hand nehmen. https://rueegger.me

  • Hallo.

    Ich habe die neue Funktion bereits getestet, und es hat bisher immer gklappt, bei Ordnern, und Dateien, in beide Richtungen.

    Ein paar kleine visuelle Vorschläge für künftige Versionen hätte ich auch:

    1. Ein Button, um die Verzeichnisse zu aktualisieren / neu einzulesen
    2. das Icon der "Syncronisierten Ansicht" beim Wechseln vielleicht ändern. Ich habe gedacht, das wäre das Aktualisieren-Icon ; )
    Man könnte vielleicht zwei parallele Pfeile nach oben gerichtet machen, als "Sync-Ansicht"
    3. Die Icons der Download und Upload Buttons vielleicht mir ändern, z.B. in eine Wolke / ein PC-Icon, wo ein Pfeil hoch, oder runter geht, also Up oder Down zum / vom Server
    4. Ein Drop Down mit allen eingerichteten Servern oben links, für schnelles Wechseln
    5. Rechtsklick auf die Ordner und Dateien für Eigenschaften etc.

    Falls Fragen bestehen zu den Hinweisen oder Anmerkungen gerne melden. Bisher schon eine minimalistische, aber entspannte Benutzung.

    Gruß

    Boba

  • BobaFett ich habe deine Anmerkungen in die To-Do-Liste aufgenommen. Danke für das testen.

    -------------------------------------------------------------------------------------------------

    Ich habe heute Version 0.3.0 veröffentlicht. Ihr erhaltet sie über flatpak update

    Bisher hat Cargo beim Up- und Download bereits bestehende Dateien mit dem gleichen Namen ohne Rückfrage überschrieben. Das ist nun vorbei. Wenn man eine Datei hochlädt die bereits existiert kommt nun ein Dialog der einem diverse Auswahlmöglichkeiten gibt:

    • Man kann die Datei überschreiben
    • Nur überschreiben wenn die Dateigrösse unterschiedlich ist
    • Nur überschrieben, wenn die Quelldatei neuer ist (Geändert Datum)
    • Man kann die Datei überspringen (wichtig wenn man z.b. einen Ordner hochlädt und nur neue Dateien in dem Ordner hochladen möchte)
    • Man kann die Datei automatisch umbenennen (es wird einfach eine Zahl an den Dateinamen angeängt)
    • Ebenfalls kann man auswählen ob die Auswahl nur für die eine Datei oder für alle ausgewählten Dateien ausgeführt werden soll
    • Ebenfalls habe ich bereits den Dialog komplett auf Deutsch übersetzt.

    The content cannot be displayed because you do not have authorisation to view this content.

    Das nächste was ich angehen möchte, ist das Kontextmenü.

    Linux Nutzer seit über 20 Jahren. I ❤️ Freedom!

    Praxisnahe Einblicke in Self Hosting, Linux und eigene Infrastruktur. Für Entwickler:innen und Macher:innen, die ihre digitale Souveränität selbst in die Hand nehmen. https://rueegger.me

  • Ich hätte auch noch den ein oder anderen Punkt:

    1. Dateien oder Ordner löschen.

    2. Log Daten

    3. Zugansdaten inkl. PW speichern


    The content cannot be displayed because you do not have authorisation to view this content.

    The content cannot be displayed because you do not have authorisation to view this content.

    ________________________________________________________________________________

    PC | AMD Ryzen 7 3700X - NVIDIA GeForce RTX 2070 Super - 32 GB RAM - 1 TB NVME - 1 TB HDD - ArchLinux

    Lappi | Intel i3 - 16 GB RAM - 128 GB SSD - ArchLinux

    Homi | Intel i3 - 8 GB RAM - 1x 128 GB SSD - 2x 4 TB Seagate IronWolf HDD im RAID1 - Debian 13 mit OMV8 und Docker

  • Zugansdaten inkl. PW speichern

    Werden die bei dir im Seitenmanager nicht gespeichert?

    Linux Nutzer seit über 20 Jahren. I ❤️ Freedom!

    Praxisnahe Einblicke in Self Hosting, Linux und eigene Infrastruktur. Für Entwickler:innen und Macher:innen, die ihre digitale Souveränität selbst in die Hand nehmen. https://rueegger.me

  • Moin,
    hab's mir auch angeschaut, auf meinem Void Linux / KDE Plasma. ;)

    Alles was cargo bis jetzt schon kann, funktionierte Einwandfrei.
    Ich habe das Flatpak extra mit flatpak run me.rueegger.cargo auf dem Terminal gestartet,
    um zu sehen ob dort Meldungen erscheinen wenn ich die Anwendung teste.
    Dort ist nichts angezeigt worden. Hut ab!

    :thumbup:

  • Heute ist ein Sonntag und ich war gerade in Stimmung. Daher habe ich fleissig weiterentwickelt. Es gibt nun ein Kontextmenü mit folgenden Funktionen:

    • Dateien/Ordner hoch- oder herunterladen
    • Datei/Ordner umbenennen (Option ist ausgegraut wenn mehrere Dateien oder Ordner markiert sind)
    • Dateien/Ordner löschen (mit zusätzlicher Abfrage)
    • Dateiberechtigungen

    Damit wäre zumindest ein Wunsch von KTT73 und BobaFett erfüllt.

    The content cannot be displayed because you do not have authorisation to view this content.

    Das Umbenennen und Löschen erklärt sich wohl von selber. Die Dateiberechtigungen waren hier der komplexeste Punkt sollten nun aber fehlerlos funktionieren.

    Wenn man die Berechtigungen einer Datei öffnet sieht das so aus:

    The content cannot be displayed because you do not have authorisation to view this content.

    Man kann die Berechtigungen entweder über die Checkboxen setzen oder direkt den Zahlenwert eingeben. Wenn man die Berechtigungen von einem Ordner öffnet, kann man zusätzlich optional wählen, dass die Berechtigungen rekursiv für alle Dateien/Ordner in diesem Ordner angepasst werden:

    The content cannot be displayed because you do not have authorisation to view this content.

    Zusätzlich findet man den Seitenmanager nun auch im Hamburgermenü. Er ist ebenfalls über die Tastenkombination "STRG + S" direkt aufrufbar.

    Zusätzlich habe ich ein paar Altlasten bereinigt, für alle die die App nicht über Flatpak beziehen sondern selber kompilieren. Als Build-Tool nutzen wir Meson, da wurde die Mindestversion die von Meson verfügbar sein muss auf 1.1.0 aktualisiert (darf auch neuer sein, der Build schlägt mit älteren Meson Versionen aber fehl) Auch wurden die Mindestabhängigkeiten beim Build von GTK 4 und libadwaita auf neuere Versionen gesetzt (weil sonst das Berechtigungsmenü etwas scheisse aussieht).

    Die einfachste und auch bevorzugte Art die App zu beziehen bleibt aber das Flatpak.

    Linux Nutzer seit über 20 Jahren. I ❤️ Freedom!

    Praxisnahe Einblicke in Self Hosting, Linux und eigene Infrastruktur. Für Entwickler:innen und Macher:innen, die ihre digitale Souveränität selbst in die Hand nehmen. https://rueegger.me

  • So für heute ist definitiv Schluss aber nun gibt es die Version 0.5

    Diese Version hat hauptsächlich UI Anpassungen daher musste ich nun auch alle Screenshots für das README.md bei GitHub und App Webseite anpassen.

    Die grösste Änderung ist das generelle "Layout" der App. Sie hat nun eine Sidebar. In der Sidebar seht ihr alle gespeicherten Verbindungen und könnt sie mit einem Klickt aktivieren.

    4. Ein Drop Down mit allen eingerichteten Servern oben links, für schnelles Wechseln

    Das entspricht zwar nicht ganz einem DropDown erbringt aber der selbe Zweck und ist so 1:1 kompatibel mit den Gnome HIG (Human Interface Guidelines).

    So sieht die App nun aus: Die Sidebar ist neu:

    The content cannot be displayed because you do not have authorisation to view this content.

    The content cannot be displayed because you do not have authorisation to view this content.

    Ich habe hier im Screenshot bereits 3 Verbindungen gespeichert und kann nun mit Klick auf eine Verbindung in der Sidebar diese direkt öffnen. Der grüne Punkt neben einer Verbindung zeigt an welche gerade offen ist.

    Oben Links gibt es nun ein "+"-Icon. Mit diesem Icon öffnet man den Servermanager (das bisherige Servermnaager Icon habe ich entfernt). Dort kann man eine neue Verbindung hinzufügen oder bestehende Verbindungen bearbeiten und löschen.

    Ein Button, um die Verzeichnisse zu aktualisieren / neu einzulesen

    das Icon der "Syncronisierten Ansicht" beim Wechseln vielleicht ändern. Ich habe gedacht, das wäre das Aktualisieren-Icon ; )
    Man könnte vielleicht zwei parallele Pfeile nach oben gerichtet machen, als "Sync-Ansicht"

    Das Icon für das aktivieren des synchronisierten Verzeichniswechsel habe ich nun geändert. Es ist nicht ganz das was BobaFett empfohlen hat, es sind zwei Pfeile die nach rechts zeigen. Ich finde das Icon noch nicht 100% optimal - möchte aber ich in der "Gnome-Designsprache" bleiben und nur Icons verwenden die Gnome per Standard mitliefert. Evtl kommen mit zukünftigen Gnome Versionen neue oder passendere Icons raus dann können wir das noch anpassen.

    Ebenfalls gibt es nun einen "Aktualisieren" Button der sowohl das lokale wie auch das serverseitige Verzeichnis aktualisiert. Danke für Empfehlung BobaFett .

    Ansonsten ist das Hamburger Menü nun auf die rechte Seite der Sidebar gewechselt.

    Die Sidebar blendet sich automatisch aus, wenn das Fenster schmaler gemacht wird - dann erscheint ein zusätzliches Icon, dass die Sidebar als Overlay wieder einblenden lässt.

    Das Update ist per flatpak update verfügbar.

    Linux Nutzer seit über 20 Jahren. I ❤️ Freedom!

    Praxisnahe Einblicke in Self Hosting, Linux und eigene Infrastruktur. Für Entwickler:innen und Macher:innen, die ihre digitale Souveränität selbst in die Hand nehmen. https://rueegger.me

  • Freut mich, dass ich bei der Entwicklung helfen kann!

    Die neuen Funktionen eben auch getestet, keine Probleme aufgekommen.

    Was mir sonst vielleicht noch einfallen würde, was aber sehr speziell ist und drauf ankommt ob es andere auch nutzen: die Definition eines Standard Ordners, der sich mit einer Schaltfläche (z.B. links oder rechts der Pfad-Leiste) aufrufen lässt. Idee: man ist in den Untiefen des Verzeichnisbaums gelandet und will nochmal komplett zum Anfang. Gute Idee wäre einfach das Home Verzeichnis des angemeldeten SSH Users.

    Gruß und frohes Schaffen

    Boba

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!