Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/openscopeproject/TrguiNG

Remote GUI for Transmission torrent daemon
https://github.com/openscopeproject/TrguiNG

mantine-ui rust-application tauri-app torrents transmission-daemon typescript-react

Last synced: 3 months ago
JSON representation

Remote GUI for Transmission torrent daemon

Awesome Lists containing this project

README

        

# TrguiNG
**Remote GUI for Transmission torrent daemon**

![GitHub release](https://img.shields.io/github/v/release/OpenScopeProject/TrguiNG)
![Downloads](https://img.shields.io/github/downloads/OpenScopeProject/TrguiNG/total)
![Lint status](https://img.shields.io/github/actions/workflow/status/OpenScopeProject/TrguiNG/lint.yml?label=Lint&event=push)

![logo](https://i.imgur.com/QdgMWwW.png)

`TrguiNG` is a rewrite of [transgui](https://github.com/transmission-remote-gui/transgui)
project using [tauri](https://tauri.studio/).
Frontend is written in typescript with [react.js](https://react.dev/) and
[mantine](https://mantine.dev/) library. Backend for the app is written in
[rust](https://www.rust-lang.org/).

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](https://github.com/openscopeproject/TrguiNG/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](https://nodejs.org/) or later
- [rust 1.69](https://www.rust-lang.org/) 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](https://db-ip.com/db/download/ip-to-country-lite).

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](https://github.com/openscopeproject/TrguiNG/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.