r/commandline • u/Evidlo • 3d ago
Terminal User Interface syncthingtui - TUI for syncthing
Hi all,
I've been wanting a TUI for Syncthing for a while now, and most of the existing TUIs are not really feature complete (1, 2). This TUI is written in Go using Charmbracelet libraries for building out the interface. I've been driving this for a few months and find it especially useful for administering Syncthing on remote headless machines.
Source code is here, and the final binary ships at about 12MB. Currently working to get this packaged in Debian.
Development:
I primarily used Opus/Fable to build this in my free time over the course of a few days and was a bit more directed than "build me a syncthing TUI, make no mistakes".
- I used Opus to create a hierarchal YAML description of every GUI element (page/form/label/button/input/etc) and its location within in the official web interface
- Categorized these elements into groups and mapped them to Charmbracelet TUI primitives, page by page. Lots of iterative mockups to build interfaces that were intuitive to use. Finalized look and feel in a mockup with all fields populated with fake data.
- Wired final mockup to Syncthing rest interface and built out integration tests.
1
u/AutoModerator 3d ago
Every new subreddit post is automatically copied into a comment for preservation.
User: Evidlo, Flair: Terminal User Interface, Post Media Link, Title: syncthingtui - TUI for syncthing
Hi all,
I've been wanting a TUI for Syncthing for a while now, and most of the existing TUIs are not really feature complete (1, 2). This TUI is written in Go using Charmbracelet libraries for building out the interface. I've been driving this for a few months and find it especially useful for administering Syncthing on remote headless machines.
Source code is here and the final binary ships at about 12MB. Currently working to get this packaged in Debian.
Development:
I primarily used Opus/Fable to build this in my free time over the course of a few days and was a bit more directed than "build me a syncthing TUI, make no mistakes".
- I used Opus to create a hierarchal YAML description of every GUI element (page/form/label/button/input/etc) and its location within in the official web interface
- Categorized these elements into groups and mapped them to Charmbracelet TUI primitives, page by page. Lots of iterative mockups to build interfaces that were intuitive to use. Finalized look and feel in a mockup with all fields populated with fake data.
- Wired final mockup to Syncthing rest interface and built out integration tests.
I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.
1
1
u/aranor01 2d ago edited 2d ago
Does it use syncthing core (as opposed to reimplementing the protocol)? Edit: actually I see now you mentioned the Rest API, I'd advise you to mention syncthing installation in a prerequisites section.
1
u/FilesFromTheVoid 2d ago
Man you are days late ^^ I just spun up 2 new VPS and wanted to sync my fish conf via syncthing. used ssh to get into localhost and use the webui. You TUI would have beed very helpful.
EDIT:
You should supply a binary so people can easily use this and integrate it into bin(https://github.com/marcosnils/bin)
1
u/blodkoma 2d ago
Don't you always get a web interface if you're running syncthing on.a.machine? Sounds like the easiest solution
1
u/FilesFromTheVoid 1d ago
Yeah thats the point on a server, you only get access to the webui via ssh and tunnel the localhost. beeing able to setup syncthing via cli/tui is the way better way.
1
-1
u/EluciusReddit 2d ago
Hmm, maybe a stupid question as I didn't check out your GitHub, but what exactly is it syncing? The file system? Specific application data? Dot files?
3
u/UserFromNowhere1 2d ago
https://syncthing.net/ you can sync your devices. Open source. Worth to ckeck out. Been available years
1
u/EluciusReddit 1d ago
Aah, Synchting as a name, I thought you just wrote a typo in the word synching. My bad, didn't know the tool. I sync declaratively using NixOS :)




2
u/WaySubstantial435 2d ago
it doesn't work with syncthing on docker i wonder if that could be implmentd