Transmission.md
1 --- 2 tags: 3 - bittorrent 4 link: https://transmissionbt.com 5 source: https://github.com/transmission/transmission 6 related-to: 7 --- 8 9 #bittorrent 10 11 | link | https://transmissionbt.com | 12 | ---------- | -------------------------------------------- | 13 | source | https://github.com/transmission/transmission | 14 | related-to | | 15 16 [[Learn BitTorrent]] client. One of the three popular clients, the other are [[Deluge]] and [[qBittorrent]], with the most attractive looking website. Comparing to the other two, Transmission does not depend on [[libtorrent-rasterbar]], but rather has its own implementation of the BitTorrent protocol. 17 18 > As noted in GitHub’s REDME, [Transmission's documentation](https://github.com/transmission/transmission/blob/main/docs/README.md) is currently out-of-date, but the team has recently begun a new project to update it and is looking for volunteers. If you're interested, please feel free to submit pull requests! 19 20 It supports all major OS and has a native macos support. 21 22 The latest release is from 30 May 2024. 23 24 ### How does it look like? 25 26 ![[Pasted image 20241107085814.png]] 27 or in light mode: 28 29 ![[Pasted image 20241107091409.png]] 30 ![[Pasted image 20241107092811.png]] 31 32 Transmission does not seem to support version 2 torrent files and magnet links. 33 34 #### Settings 35 36 - Network 37 ![[Pasted image 20241107094119.png]] 38 - Peers 39 ![[Pasted image 20241107094219.png]] 40 Transmission has the most limited settings that are available to the user. 41 There are also GTK and QT versions, which on a Mac look just terrible... (I did not yet check how they build and look on ubuntu). 42 43 ### Building 44 45 After cloning, building Transmission on macOS went smoothly. Only after adding `gtk` and `qt` dependencies started to brake the build. 46 Their CMake configuration is quite clean, yet, once it detects GTK it goes through some "branches" even when they are not needed for the given build configuration. Thus if you installed GTK deps: 47 48 ``` 49 brew install gtk4 gtkmm4 50 ``` 51 52 You will start getting errors like this: 53 54 ```bash 55 CMake Error in gtk/CMakeLists.txt: 56 Imported target "transmission::gtk_impl" includes non-existent path 57 58 "/Library/Developer/CommandLineTools/SDKs/MacOSX13.sdk/usr/include/ffi" 59 60 in its INTERFACE_INCLUDE_DIRECTORIES. Possible reasons include: 61 62 * The path was deleted, renamed, or moved to another location. 63 64 * An install or uninstall procedure did not complete successfully. 65 66 * The installation package was faulty and references files it does not 67 provide. 68 ``` 69 70 Well, the problem here is wrong macOS version. To fix the build, first check which macOS path is the correct one for your system: 71 72 ```bash 73 xcrun -sdk macosx --show-sdk-path 74 ``` 75 76 and then retrieve the paths currently included by running: 77 78 ```bash 79 pkg-config --cflags gtkmm-4.0 80 pkg-config --cflags gtk4 81 ``` 82 83 Then in `CMakeLists.txt` manually add the combined paths returned by the `pkg-config` commands that you just run. 84 85 In my case, I changed: 86 87 ```CMake 88 if(GTK_FOUND) 89 add_library(transmission::gtk_impl INTERFACE IMPORTED) 90 91 target_compile_options(transmission::gtk_impl 92 INTERFACE 93 ${GTK${GTK_VERSION}_CFLAGS_OTHER}) 94 95 target_include_directories(transmission::gtk_impl 96 INTERFACE 97 ${GTK${GTK_VERSION}_INCLUDE_DIRS}) 98 99 target_link_directories(transmission::gtk_impl 100 INTERFACE 101 ${GTK${GTK_VERSION}_LIBRARY_DIRS}) 102 103 target_link_libraries(transmission::gtk_impl 104 INTERFACE 105 ${GTK${GTK_VERSION}_LIBRARIES}) 106 endif() 107 ``` 108 109 to: 110 111 ```CMake 112 if(GTK_FOUND) 113 add_library(transmission::gtk_impl INTERFACE IMPORTED) 114 115 target_compile_options(transmission::gtk_impl 116 INTERFACE 117 ${GTK${GTK_VERSION}_CFLAGS_OTHER}) 118 119 target_include_directories(transmission::gtk_impl 120 INTERFACE 121 /opt/homebrew/Cellar/gtk4/4.16.3/include/gtk-4.0 122 /opt/homebrew/Cellar/pango/1.54.0/include/pango-1.0 123 /opt/homebrew/Cellar/harfbuzz/10.0.1_1/include/harfbuzz 124 /opt/homebrew/Cellar/fribidi/1.0.16/include/fribidi 125 /opt/homebrew/Cellar/graphite2/1.3.14/include 126 /opt/homebrew/Cellar/gdk-pixbuf/2.42.12/include/gdk-pixbuf-2.0 127 /opt/homebrew/Cellar/libtiff/4.7.0/include 128 /opt/homebrew/opt/zstd/include 129 /opt/homebrew/Cellar/xz/5.6.3/include 130 /opt/homebrew/Cellar/jpeg-turbo/3.0.4/include 131 /opt/homebrew/Cellar/cairo/1.18.2/include/cairo 132 /opt/homebrew/Cellar/fontconfig/2.15.0/include 133 /opt/homebrew/opt/freetype/include/freetype2 134 /opt/homebrew/opt/libpng/include/libpng16 135 /opt/homebrew/Cellar/libxext/1.3.6/include 136 /opt/homebrew/Cellar/libxrender/0.9.11/include 137 /opt/homebrew/Cellar/libx11/1.8.10/include 138 /opt/homebrew/Cellar/libxcb/1.17.0/include 139 /opt/homebrew/Cellar/libxau/1.0.11/include 140 /opt/homebrew/Cellar/libxdmcp/1.1.5/include 141 /opt/homebrew/Cellar/pixman/0.42.2/include/pixman-1 142 /opt/homebrew/Cellar/graphene/1.10.8/include/graphene-1.0 143 /opt/homebrew/Cellar/graphene/1.10.8/lib/graphene-1.0/include 144 /opt/homebrew/Cellar/glib/2.82.2/include 145 /opt/homebrew/Cellar/glib/2.82.2/include/glib-2.0 146 /opt/homebrew/Cellar/glib/2.82.2/lib/glib-2.0/include 147 /opt/homebrew/opt/gettext/include 148 /opt/homebrew/Cellar/pcre2/10.44/include 149 /opt/homebrew/Cellar/xorgproto/2024.1/include 150 /Library/Developer/CommandLineTools/SDKs/MacOSX15.0.sdk/usr/include/ffi 151 /opt/homebrew/Cellar/gtkmm4/4.16.0/include/gtkmm-4.0 152 /opt/homebrew/Cellar/gtkmm4/4.16.0/lib/gtkmm-4.0/include 153 /opt/homebrew/Cellar/pangomm/2.54.0/include/pangomm-2.48 154 /opt/homebrew/Cellar/pangomm/2.54.0/lib/pangomm-2.48/include 155 /opt/homebrew/Cellar/glibmm/2.82.0/include/giomm-2.68 156 /opt/homebrew/Cellar/glibmm/2.82.0/lib/giomm-2.68/include 157 /opt/homebrew/Cellar/glib/2.82.2/include/gio-unix-2.0 158 /opt/homebrew/Cellar/glibmm/2.82.0/include/glibmm-2.68 159 /opt/homebrew/Cellar/glibmm/2.82.0/lib/glibmm-2.68/include 160 /opt/homebrew/Cellar/glib/2.82.2/include 161 /opt/homebrew/Cellar/cairomm/1.18.0/include/cairomm-1.16 162 /opt/homebrew/Cellar/cairomm/1.18.0/lib/cairomm-1.16/include 163 /opt/homebrew/Cellar/libsigc++/3.6.0/include/sigc++-3.0 164 /opt/homebrew/Cellar/libsigc++/3.6.0/lib/sigc++-3.0/include 165 /opt/homebrew/Cellar/gtk4/4.16.3/include/gtk-4.0/unix-print 166 ) 167 168 target_link_directories(transmission::gtk_impl 169 INTERFACE 170 ${GTK${GTK_VERSION}_LIBRARY_DIRS}) 171 172 target_link_libraries(transmission::gtk_impl 173 INTERFACE 174 ${GTK${GTK_VERSION}_LIBRARIES}) 175 endif() 176 ``` 177 178 Just make sure, you use the path returned by `pkg-config` commands on your machine. Above, is just example. 179 180 Remember that after you install GTK dependencies also the QT and native macOS builds will fail if you do not apply the above fix. You can also just remove `gtk4` and `gtkmm4`: 181 182 ```bash 183 brew uninstall gtk4 gtkmm4 184 ``` 185 186 and then use native Xcode project or CMake for macOS.