/Transmissionic

Remote for Transmission Daemon

Primary LanguageVueMIT LicenseMIT

Transmissionic

Transmissionic is a free multi-platform remote for Transmission Daemon built with Ionic and Vue.js.
It can be used as Web Interface, Android/iOS app and Windows/Linux/macOS program.


Version Dev GitHub all releases Build Sonar Quality Gate Maintainability Rating

Get it on Google Play

About

Main features

  • Manage multiple servers
  • Add torrent from local file or magnet link
  • Drag & drop torrent file
  • Magnet protocol support
  • Start/stop/reannounce/verify/delete one or more torrents
  • Modify torrent's options
  • Set the location of a torrent
  • Select and rename torrent's files
  • Edit tracker list
  • View the list of peers with country flags
  • Sort torrents by trackers
  • Open files in explorer
  • Use presets when adding torrents

Screenshots

Translation

Available languages:

  • Czech (Cyril Veverka, Ti)
  • German (Alain Nussbaumer)
  • Austrian German (Alain Nussbaumer, Tobias W)
  • Greek (Dtheofilopoulos)
  • English
  • Chilean Spanish (Sebastian)
  • Costa Rican Spanish (Zenón Monge)
  • French
  • Swiss French (Alain Nussbaumer, ZertyCraft)
  • Hungarian (Daniel)
  • Italian (Emanuele Ruzza)
  • Korean (Mild_Coffee)
  • Dutch (John)
  • Polish (Matthew)
  • Portuguese (Humberto Faria)
  • Brazilian Portuguese (JFSilvaBr)
  • Russian (Alek Depler)
  • Slovak (Tomas)
  • Ukrainian (Oleksandr Popov, stanol)
  • Chinese (simplified) (Cuiweiqiang dlnu, xiatian)
  • Chinese (traditional) (Steven F)

You can help with the translation by joining the project on POEditor. If your language is not availaible, feel free to add it.

Thanks to all contributors.

Compatibility

Web UI

Browser Chrome Firefox Safari Edge IE Chrome for Android Safari on iOS
Version ≥23 ✔ ≥21 ✔ ≥6 ✔ ≥79 ✔ ≥90 ✔ ≥6 ✔

Application

OS Windows Linux macOS Android iOS
Version ≥10 ✔ ≥10.11 ✔ ≥5.0 ✔ ≥12 ✔

Motivations

  • Provide a unified interface for all platforms
  • Improve myself on Vue.js and Ionic
  • Get familiar with GitHub

Inspirations

Interface and features inspired by Transmission Remote and Transmission Remote GUI.

Installation

You must first enable remote access in Transmission settings.

Web UI

Download Transmissionic-webui-[version].zip from the latest release page and unzip it.

Method 1

Set an environment variable named TRANSMISSION_WEB_HOME with the path of the extracted folder as value.

Example:

export TRANSMISSION_WEB_HOME=/path/to/transmissionic/folder

Method 2

Note: On older versions of Transmission, the public_html folder is named web

Copy the content of the extracted folder to the public_html folder of Transmission, whose location varies depending on your operating system:

Windows

C:\Program Files\Transmission\public_html

Linux

/usr/share/transmission/public_html

macOS

/Applications/Transmission.app/Contents/Resources/public_html

Don't forget to save your current public_html folder if you want to switch back.

Linux

Download the AppImage from the latest release page.

It's recommended to use AppImageLauncher to take advantage of the torrent file assosiation and magnet link handling.

macOS

Download the DMG from the latest release page.

When you try to install it, you will get an error. After getting the error, go to System Preferences > Security & Privacy and click on Open Anyway.

iOS

Download the IPA from the latest release page.

Use a tool like AltStore to sideload the app on your device.

Other

Simply download the installer for the desired platform from the latest release page and install it.

Configuration

Web UI

You don't need to specify the server details as they will be automatically detected from the URL of the Web UI.

Default settings

The settings are stored on the client side, but you can overwrite the default settings by creating a file named default.json in the root folder of the Web UI.

The file can contain the following key/value pairs:

Key Type Description Default
colorScheme string Possible values: light or dark System default
language string An ISO 639-1 language code, example: en-US System default
orderBy string Possible values: name, addedDate, sizeWhenDone, uploadRatio, uploadedEver, rateUpload, activityDate, queuePosition addedDate
reverse boolean Reversed ordering true
useBits boolean Display speed in bit/s true
expandMenu boolean Expand side menu on large screen true
searchByName boolean Search torrents by name true
searchByDirectory boolean Search torrents by download directory true
ipFlags boolean Display peer flag false
openMagnetLinks boolean Open magnet links with Transmissionic false
rememberSelectedPreset boolean Remember selected preset when adding torrents false
compactMode boolean Compact torrent list false
showTrackerList boolean Always show the list of trackers in the side menu false
refreshInterval number Refresh interval in seconds 5
timeout number Connection timeout in seconds 10
servers array Default servers []

Server object:

Key Type Description
name string Name to display
host string Hostname or IP address of Transmission RPC
path string Path of Transmission RPC
port number Port of Transmission RPC
https boolean Use HTTPS

Configuration file example:

{
  "colorScheme":"dark",
  "language":"en",
  "orderBy":"name",
  "reverse":false,
  "ipFlags":true,
  "refreshInterval":10,
  "timeout":20,
  "servers":[
    {
      "name":"My server",
      "host":"transmission.myserver.com",
      "path":"/my/transmission/rpc",
      "https":true
    }
  ]
}

Magnet protocol

You can handle magnet links directly with the Web UI, but this feature is only available in secure contexts (HTTPS) or from localhost.

To use the Web UI in HTTPS, you must set up a reverse proxy: [GUIDE] Transmission web in SSL (https) - using nginx as a reverse proxy

List of supported browsers: Browser compatibility

Bookmarklet

When using the Web UI, you can import magnet and torrent links using a bookmarklet. To set up the bookmarklet, open the Web UI settings and simply drag and drop the corresponding button into your bookmarks bar.

You can use the text selection to highlight a magnet link or a hash before cliking on the bookmarklet, otherwise the script will look for a clickable magnet or torrent link in the page.

For mobile users:

  1. Long-press the bookmarklet button and select "Copy link address".
  2. Add the current page to your favorites and edit the bookmark.
  3. Replace the address with the one you previously copied and change the name to "Download with Transmissionic".
  4. Go on a torrent page.
  5. Tap on the address bar, search for "Download with Transmissionic" and select the bookmark. (Screenshot)

Electron

Magnet protocol

To handle magnet links in Windows, you need to set Transmissionic as the default program.

To do so, go to "Choose default apps by protocol" in the Windows settings, scroll down to "MAGNET" then select Transmissionic.

Path mapping

You can configure path mapping on computer, this allow you to match remote paths with local paths to open the file explorer. This parameter works exactly the same way as Transmission Remote GUI.

Example:

/mnt/ssd = \\192.168.1.1\ssd

/mnt/ssd = Remote path on the server where Transmission daemon is running.

\\192.168.1.1\ssd = Local path to access the shared folder.

In this case, the remote server IP is 192.168.1.1, and the folder /mnt/ssd must be shared on the network as ssd.

Keyboard shortcuts

Keys Action
Alt T Open torrent
Alt M Open magnet
Alt U Open URL
Alt S Settings
Alt N New server
Alt I Server information
Alt C Server configuration
Alt A About
Alt 1-9 Select filter
Cmd/Ctrl Alt S Search
Cmd/Ctrl Alt T Toggle side menu
Cmd/Ctrl RightArrow Next tab
Cmd/Ctrl LeftArrow Previous tab
Shift Click Select torrent
Ctrl A Select all
Esc Cancel selection

Build

Requirements

You must have Node.js installed, then you can clone this repo and install dependencies by running this in the root folder of the project:

npm install

If you want to build the APK, you must install Android Studio or JDK.

If you want to build the IPA, you must install Xcode.

Web UI

Simply run the following command:

npm run build:webui

This will build the Web UI inside the dist folder.

Electron

First, synchronize Electron content by running this in the root folder of the project:

npm run sync:electron

Then place your terminal in the electron folder and run this:

npm install

Windows

npm run electron:build-windows

Linux

npm run electron:build-linux

macOS

npm run electron:build-mac

The installer will be located in the electron/dist folder.

Android

Start by running this in the root folder of the project:

npm run sync:android

With Android Studio

Open Android Studio by running:

npx cap open android

Once Android Studio has loaded the project, build the app from Build > Make Project

Without Android Studio

Place your terminal in the android folder and run this:

./gradlew build

The APK will be located in the android/app/build/outputs/apk folder.

iOS

Start by running this in the root folder of the project:

npm run sync:ios

Then open Xcode by running:

npx cap open ios

Development

You can start a local dev server using Ionic, but you need to disable same origin policy in your browser to connect to Transmission RPC from a different host. For example, run a new instance of chrome with these flags : --disable-web-security --disable-gpu --user-data-dir=~/chromeTemp

Then start the dev server by running this in the root folder of the project:

npm run serve

If you want to contribute and pull your changes to this project, please work on the dev branch as it contains all the latest changes.

TODO

  • Add iOS/macOS support
  • Add server configurations modal
  • Add magnet url handling on Windows
  • Use ion-virtual-scroll when availaible for Vue.js