Skip to content

openscopeproject/TrguiNG

Repository files navigation

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:

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.