#+TITLE: Transmission layer

#+TAGS: layer|tool

[[file:img/transmission.png]]

* Table of Contents                     :TOC_5_gh:noexport:
- [[#description][Description]]
  - [[#features][Features:]]
- [[#install][Install]]
- [[#faq][FAQ]]
  - [[#how-to-enable-status-auto-refresh][How to enable status auto refresh?]]
- [[#key-bindings][Key bindings]]
  - [[#global][Global]]
  - [[#transmission-mode][=transmission-mode=]]
  - [[#transmission-info-mode][=transmission-info-mode=]]
  - [[#transmission-files-mode][=transmission-files-mode=]]
  - [[#transmission-peers-mode][=transmission-peers-mode=]]
  - [[#transmission-turtle-mode][=transmission-turtle-mode=]]

* Description
This layer integrates a BitTorrent client into Spacemacs.

** Features:
- Integration of [[https://transmissionbt.com/][Transmission]] into Emacs.

* Install
To use this configuration layer, add it to your =~/.spacemacs=. You will need to
install and configure =transmission-daemon=. Debian example:

#+BEGIN_SRC sh
  sudo apt-get -y install transmission-daemon
  sudo service transmission-daemon stop
#+END_SRC

Set =rpc-authentication-required= to false (or 0 if it is numeric)
in /etc/transmission-daemon/settings.json or
configure authorization.
See transmission.el [[https://github.com/holomorph/transmission][README.org]] for details.
Start the daemon:

#+BEGIN_SRC sh
  sudo service transmission-daemon start
#+END_SRC

* FAQ
** How to enable status auto refresh?
Add =(transmission :variables transmission-auto-refresh-all t)= to
=dotspacemacs-configuration-layers= or pick modes manually:

#+BEGIN_SRC emacs-lisp
  (setq transmission-refresh-modes '(transmission-mode
                                     transmission-files-mode
                                     transmission-info-mode
                                     transmission-peers-mode))
#+END_SRC

* Key bindings
** Global

| Key binding | Description        |
|-------------+--------------------|
| ~SPC a t t~ | start transmission |

** =transmission-mode=

| Key binding  | Description                                                       |
|--------------+-------------------------------------------------------------------|
| ~J/K~        | Move torrent down/up the queue by one.                            |
| ~H/L~        | Move torrent to the top/bottom of the queue.                      |
| ~SPC m D~    | Delete from disk and remove torrent(s) at point or in region.     |
| ~SPC m m~    | Toggle mark on torrent(s) at point or in region.                  |
| ~SPC m q~    | Quit and bury the buffer.                                         |
| ~SPC m r~    | Relocate torrent save directory at point or in region.            |
| ~SPC m R~    | Remove torrent(s) at point or in region.                          |
| ~SPC m S~    | Sort torrents according to the column at point.                   |
| ~SPC m v~    | Verify torrent at point or in region.                             |
|--------------+-------------------------------------------------------------------|
| Add          |                                                                   |
|--------------+-------------------------------------------------------------------|
| ~SPC m a a~  | Add torrent by filename, URL, magnet link, or info hash.          |
| ~SPC m a t~  | Add announce URLs to marked torrent(s) or torrent at point.       |
|--------------+-------------------------------------------------------------------|
| Go to mode   |                                                                   |
|--------------+-------------------------------------------------------------------|
| ~SPC m g i~  | Open a =transmission-info-mode= buffer for torrent at point.      |
| ~SPC m g f~  | Open a =transmission-files-mode= buffer for torrent at point.     |
| ~SPC m g p~  | Open a =transmission-peers-mode= buffer for torrent at point.     |
|--------------+-------------------------------------------------------------------|
| Set property |                                                                   |
|--------------+-------------------------------------------------------------------|
| ~SPC m s d~  | Set global download speed limit in kB/s.                          |
| ~SPC m s l~  | Set label(s) for marked torrent(s) or torrent at point.           |
| ~SPC m s p~  | Set bandwidth priority of torrent(s) at point or in region.       |
| ~SPC m s r~  | Set global seed ratio limit.                                      |
| ~SPC m s u~  | Set global upload speed limit in kB/s.                            |
|--------------+-------------------------------------------------------------------|
| Toggle       |                                                                   |
|--------------+-------------------------------------------------------------------|
| ~SPC m t s~  | Toggle torrent(s) at point or region between started and stopped. |
| ~SPC m t t~  | Toggle =transmission-turtle-mode=.                                |

** =transmission-info-mode=

| Key binding  | Description                                                  |
|--------------+--------------------------------------------------------------|
| ~SPC m a~    | Add announce URLs to current torrent.                        |
| ~SPC m c~    | Copy magnet link of current torrent.                         |
| ~SPC m r~    | Relocate current torrent save directory.                     |
| ~SPC m T~    | Remove trackers from current torrent by ID or announce URL.  |
|--------------+--------------------------------------------------------------|
| Go to mode   |                                                              |
|--------------+--------------------------------------------------------------|
| ~SPC m g f~  | Open a =transmission-files-mode= buffer for current torrent. |
| ~SPC m g p~  | Open a =transmission-peers-mode= buffer for current torrent. |
|--------------+--------------------------------------------------------------|
| Set property |                                                              |
|--------------+--------------------------------------------------------------|
| ~SPC m s d~  | Set download limit of current torrent in kB/s.               |
| ~SPC m s l~  | Set label(s) of current torrent.                             |
| ~SPC m s p~  | Set bandwidth priority of current torrent.                   |
| ~SPC m s r~  | Set seed ratio limit of current torrent.                     |
| ~SPC m s u~  | Set upload limit of current torrent in kB/s.                 |

** =transmission-files-mode=

| Key binding  | Description                                                  |
|--------------+--------------------------------------------------------------|
| ~SPC m m~    | Toggle mark on the file at point.                            |
| ~SPC m X~    | Run a command on the file at point.                          |
|--------------+--------------------------------------------------------------|
| Go to mode   |                                                              |
|--------------+--------------------------------------------------------------|
| ~SPC m g f~  | Visit the file at point with =find-file-read-only=.          |
| ~SPC m g i~  | Open a =transmission-info-mode= buffer for current torrent.  |
| ~SPC m g p~  | Open a =transmission-peers-mode= buffer for current torrent. |
|--------------+--------------------------------------------------------------|
| Set property |                                                              |
|--------------+--------------------------------------------------------------|
| ~SPC m s p~  | Set bandwidth priority on file(s) at point or in region.     |
|--------------+--------------------------------------------------------------|
| Toggle       |                                                              |
|--------------+--------------------------------------------------------------|
| ~SPC m m u~  | Mark file(s) at point or in region as unwanted.              |
| ~SPC m m w~  | Mark file(s) at point or in region as wanted.                |

** =transmission-peers-mode=

| Key binding | Description                                                  |
|-------------+--------------------------------------------------------------|
| Go to mode  |                                                              |
|-------------+--------------------------------------------------------------|
| ~SPC m g i~ | Open a =transmission-info-mode= buffer for torrent at point. |

** =transmission-turtle-mode=
| Key binding  | Description                                                 |
|--------------+-------------------------------------------------------------|
| Set property |                                                             |
|--------------+-------------------------------------------------------------|
| ~SPC m s D~  | Set days for =transmission-turtle-mode= to be active.       |
| ~SPC m s S~  | Set global speed limits for =transmission-turtle-mode=.     |
| ~SPC m s T~  | Set time range for =transmission-turtle-mode= to be active. |
