TrguiNG icon indicating copy to clipboard operation
TrguiNG copied to clipboard

Remote GUI for Transmission torrent daemon

TrguiNG

Remote GUI for Transmission torrent daemon

GitHub release Downloads Lint status

logo

TrguiNG is a rewrite of transgui project using tauri. Frontend is written in typescript with react.js and mantine library. Backend for the app is written in rust.

You can use this program in 2 ways: as a native Windows/Linux/Mac app and as a web gui served by transmission itself by setting $TRANSMISSION_WEB_HOME environment variable to point to TrguiNG web assets.

There are screenshots of the app available on the project wiki.

Some differentiating features:

  • Multi tabbed interface for concurrent server connections (native app only)
  • Torrent creation with fast multi threaded hashing (native app only)
  • Powerful torrent filtering options
  • Latest transmission features support: labels, bandwidth groups, sequential download
  • Dark and white theme

Planned:

  • Better bandwidth groups support when API is ready (https://github.com/transmission/transmission/issues/5455)

Transmission v2.40 or later is required.

Compiling

Prerequisites:

  • Node.js 16 or later
  • rust 1.69 or later
  • Geoip lookup database in mmdb format, put it in src-tauri
    wget -nv -O src-tauri/dbip.mmdb "https://github.com/openscopeproject/TrguiNG/releases/latest/download/dbip.mmdb"
    
    You can get latest db from db-ip.com.

To compile simply run

$ npm install
$ npm run build

This will generate optimized bundle in dist and a release binary in src-tauri/target/release folder. Also installer package will be available in src-tauri/target/release/bundle/....

The binary is statically linked and embeds all necessary assets except for the geoip database. It is completely self sufficient and can be used as a portable executable but for geoip lookup to work you need to install the app with provided installer.

For development run in parallel

$ npm run webpack-serve
$ npm run tauri-dev

Webpack will automatically watch changes in src/ and refresh the app view, tauri will watch changes in src-tauri/ and rebuild/restart the app as needed.

How to use TrguiNG as a web interface

Transmission supports custom web interfaces, all you have to do is run the daemon with $TRANSMISSION_WEB_HOME variable pointing to the web assets that transmissinon will serve over it's .../transmission/web/ endpoint.

Example steps for debian:

  1. Download latest trguing-web-xxxx.zip zip from releases page.
  2. Unpack it anywhere, make sure that the user transmission runs under (by default debian-transmission) has read permissions.
  3. Edit transmission daemon systemd unit file /etc/systemd/system/multi-user.target.wants/transmission-daemon.service and add following to [Service] section:
    Environment=TRANSMISSION_WEB_HOME=/path/to/extracted/trguing/zip
    
  4. Reload the unit file with sudo systemctl daemon-reload and restart the service sudo systemctl restart transmission-daemon

License

Project is distributed under GNU Affero General Public License v3, see LICENSE.txt for details.