diff --git a/plinth/modules/deluge/__init__.py b/plinth/modules/deluge/__init__.py index 55948a055..344ed0dbb 100644 --- a/plinth/modules/deluge/__init__.py +++ b/plinth/modules/deluge/__init__.py @@ -25,6 +25,7 @@ from plinth import actions from plinth import action_utils from plinth import frontpage from plinth import service as service_module +from plinth.client import web_client from plinth.menu import main_menu from plinth.modules.users import add_group @@ -52,11 +53,14 @@ description = [ reserved_usernames = ['debian-deluged'] +web_clients = [web_client(name='Deluge', url='/deluge')] + def init(): """Initialize the Deluge module.""" menu = main_menu.get('apps') - menu.add_urlname(name, 'glyphicon-magnet', 'deluge:index', short_description) + menu.add_urlname(name, 'glyphicon-magnet', + 'deluge:index', short_description) global service setup_helper = globals()['setup_helper'] diff --git a/plinth/modules/ejabberd/__init__.py b/plinth/modules/ejabberd/__init__.py index eea07fc28..d53f7df07 100644 --- a/plinth/modules/ejabberd/__init__.py +++ b/plinth/modules/ejabberd/__init__.py @@ -34,6 +34,7 @@ from plinth import service as service_module from plinth.menu import main_menu from plinth.signals import pre_hostname_change, post_hostname_change from plinth.signals import domainname_change +from plinth.client import web_client version = 1 @@ -59,6 +60,10 @@ description = [ box_name=_(cfg.box_name)) ] +web_clients = [web_client(name='JSXC', url='/plinth/apps/jsxc'), + web_client(name='XMPP client', url='http://xmpp.org/xmpp' + '-software/clients')] + reserved_usernames = ['ejabberd'] service = None diff --git a/plinth/modules/ikiwiki/__init__.py b/plinth/modules/ikiwiki/__init__.py index 3bc806431..2407e0e48 100644 --- a/plinth/modules/ikiwiki/__init__.py +++ b/plinth/modules/ikiwiki/__init__.py @@ -28,6 +28,7 @@ from plinth import cfg from plinth import frontpage from plinth import service as service_module from plinth.menu import main_menu +from plinth.client import web_client version = 1 @@ -57,6 +58,7 @@ description = [ 'permissions or add new users.'), box_name=_(cfg.box_name)) ] +web_clients = [web_client(name='ikiwiki', url='/ikiwiki')] def init(): """Initialize the ikiwiki module.""" diff --git a/plinth/modules/infinoted/__init__.py b/plinth/modules/infinoted/__init__.py index efb9d6549..294c8605e 100644 --- a/plinth/modules/infinoted/__init__.py +++ b/plinth/modules/infinoted/__init__.py @@ -30,6 +30,7 @@ from plinth import service as service_module from plinth.menu import main_menu from plinth.utils import format_lazy from plinth.views import ServiceView +from plinth.client import desktop_client version = 1 @@ -54,6 +55,8 @@ description = [ box_name=_(cfg.box_name)), ] +desktop_clients = [desktop_client(name='Gobby', url='https://gobby.github.io/')] + def init(): """Initialize the infinoted module.""" diff --git a/plinth/modules/matrixsynapse/__init__.py b/plinth/modules/matrixsynapse/__init__.py index 1bd0a0cb8..84d0cc09d 100644 --- a/plinth/modules/matrixsynapse/__init__.py +++ b/plinth/modules/matrixsynapse/__init__.py @@ -30,6 +30,7 @@ from plinth import action_utils from plinth import actions from plinth import frontpage from plinth import service as service_module +from plinth.client import desktop_client, web_client, mobile_client from plinth.menu import main_menu version = 2 @@ -57,6 +58,20 @@ description = [ 'client is recommended.') ] +web_clients = [web_client(name='Riot', url='https://riot.im/app/#/home')] + +desktop_clients = [desktop_client(name='Riot', + url='https://riot.im/desktop.html'), + desktop_client(name='WeeChat CLI', + url='https://weechat.org/')] + +mobile_clients = [mobile_client(name='Riot', + fully_qualified_name='im.vector.alpha', + play_store_url='https://play.google.com/store/apps/' + 'details?id=im.vector.alpha', + fdroid_url='https://f-droid.org/packages/' + 'im.vector.alpha/')] + service = None logger = logging.getLogger(__name__) diff --git a/plinth/modules/minetest/__init__.py b/plinth/modules/minetest/__init__.py index 618361065..74e04de05 100644 --- a/plinth/modules/minetest/__init__.py +++ b/plinth/modules/minetest/__init__.py @@ -31,6 +31,7 @@ from plinth import frontpage from plinth import service as service_module from plinth.menu import main_menu from plinth.utils import format_lazy +from plinth.client import desktop_client, mobile_client version = 2 @@ -58,6 +59,16 @@ description = [ 'is needed.'), box_name=_(cfg.box_name)), ] +desktop_clients = [desktop_client(name='Minetest', + url= 'https://www.minetest.net/downloads/')] + +mobile_clients = [ + mobile_client(name='Minetest', + fully_qualified_name='net.minetest.mintest', + fdroid_url='https://f-droid.org/packages/net.minetest.minetest/', + play_store_url='https://play.google.com/store/apps/details?' + 'id=net.minetest.minetest')] + reserved_usernames = ['Debian-minetest'] CONFIG_FILE = '/etc/minetest/minetest.conf' diff --git a/plinth/modules/mumble/__init__.py b/plinth/modules/mumble/__init__.py index 06ffe6fea..c618f1e30 100644 --- a/plinth/modules/mumble/__init__.py +++ b/plinth/modules/mumble/__init__.py @@ -28,6 +28,7 @@ from plinth import frontpage from plinth import service as service_module from plinth.menu import main_menu from plinth.views import ServiceView +from plinth.client import desktop_client, mobile_client version = 1 @@ -51,6 +52,18 @@ description = [ 'from your desktop and Android devices are available.') ] +desktop_clients = [ + desktop_client(name='Mumble',url= 'https://wiki.mumble.info/wiki/Main_Page')] + +mobile_clients = [ + mobile_client(name='Mumble', + fully_qualified_name='com.morlunk.mumbleclient', + fdroid_url='https://f-droid.org/packages/com.morlunk' + '.mumbleclient/', + play_store_url='https://play.google.com/store/apps/details' + '?id=com.morlunk.mumbleclient.free')] + + reserved_usernames = ['mumble-server'] diff --git a/plinth/modules/quassel/__init__.py b/plinth/modules/quassel/__init__.py index 5a4703b03..5aa3d69f8 100644 --- a/plinth/modules/quassel/__init__.py +++ b/plinth/modules/quassel/__init__.py @@ -30,6 +30,7 @@ from plinth import service as service_module from plinth.menu import main_menu from plinth.utils import format_lazy from plinth.views import ServiceView +from plinth.client import mobile_client, desktop_client version = 1 @@ -60,6 +61,16 @@ description = [ 'are available.'), ] +desktop_clients = [ + desktop_client(name='Quassel', url='http://quassel-irc.org/downloads')] + +mobile_clients = [ + mobile_client(name='QuasselDroid', + fully_qualified_name='com.iskrembilen.quasseldroid', + fdroid_url=None, + play_store_url='https://play.google.com/store/apps/details?' + 'id=com.iskrembilen.quasseldroid')] + reserved_usernames = ['quasselcore'] diff --git a/plinth/modules/radicale/__init__.py b/plinth/modules/radicale/__init__.py index 8b0bbca0c..b7a75d6d2 100644 --- a/plinth/modules/radicale/__init__.py +++ b/plinth/modules/radicale/__init__.py @@ -30,6 +30,7 @@ from plinth import frontpage from plinth import service as service_module from plinth.menu import main_menu from plinth.utils import format_lazy +from plinth.client import desktop_client, mobile_client version = 1 @@ -53,6 +54,20 @@ description = [ 'with a {box_name} login.'), box_name=_(cfg.box_name)), ] +desktop_clients = [desktop_client(name='GNOME Calendar', + url='https://wiki.gnome.org/Apps/Calendar'), + desktop_client(name='Contacts', + url='https://wiki.gnome.org/Apps/Contacts'), + desktop_client(name='Evolution', + url='https://wiki.gnome.org/Apps/Evolution')] + +mobile_clients = [ + mobile_client(name='DAVdroid', + fully_qualified_name='at.bitfire.davdroid', + fdroid_url=None, + play_store_url='https://play.google.com/store/apps/details' + '?id=at.bitfire.davdroid')] + reserved_usernames = ['radicale'] CONFIG_FILE = '/etc/radicale/config' diff --git a/plinth/modules/repro/__init__.py b/plinth/modules/repro/__init__.py index 5d13c7c0f..00adcfa50 100644 --- a/plinth/modules/repro/__init__.py +++ b/plinth/modules/repro/__init__.py @@ -28,6 +28,7 @@ from plinth import frontpage from plinth import service as service_module from plinth.menu import main_menu from plinth.views import ServiceView +from plinth.client import desktop_client, mobile_client version = 2 @@ -60,6 +61,14 @@ description = [ 'service and re-enable it.'), ] +desktop_clients = [desktop_client(name='Jitsi',url='https://jitsi.org/')] + +mobile_clients = [ + mobile_client(name='Csip Simple',fully_qualified_name='com.csipsimple', + fdroid_url=None, + play_store_url='https://play.google.com/store/apps/details' + '?id=com.csipsimple')] + reserved_usernames = ['repro'] service = None diff --git a/plinth/modules/restore/__init__.py b/plinth/modules/restore/__init__.py index 94818b6df..db3e09c32 100644 --- a/plinth/modules/restore/__init__.py +++ b/plinth/modules/restore/__init__.py @@ -25,6 +25,7 @@ from plinth import cfg from plinth import service as service_module from plinth.menu import main_menu from plinth.utils import format_lazy +from plinth.client import web_client version = 1 @@ -50,6 +51,8 @@ description = [ 'reStore web-interface.') ] +web_clients = [web_client(name='reStore web-interface', url='/restore')] + reserved_usernames = ['node-restore'] service = None diff --git a/plinth/modules/roundcube/__init__.py b/plinth/modules/roundcube/__init__.py index 8bd136d18..015ddd7cc 100644 --- a/plinth/modules/roundcube/__init__.py +++ b/plinth/modules/roundcube/__init__.py @@ -26,6 +26,7 @@ from plinth import action_utils from plinth import frontpage from plinth import service as service_module from plinth.menu import main_menu +from plinth.client import web_client version = 1 @@ -58,6 +59,8 @@ description = [ '>https://www.google.com/settings/security/lesssecureapps).'), ] +web_clients = [web_client('Roundcube', '/roundcube')] + service = None diff --git a/plinth/modules/shaarli/__init__.py b/plinth/modules/shaarli/__init__.py index 13d7a5fcf..68de45cfc 100644 --- a/plinth/modules/shaarli/__init__.py +++ b/plinth/modules/shaarli/__init__.py @@ -26,6 +26,7 @@ from plinth import action_utils from plinth import frontpage from plinth import service as service_module from plinth.menu import main_menu +from plinth.client import web_client version = 1 @@ -45,6 +46,8 @@ description = [ 'visit.'), ] +web_clients = [web_client(name='Shaarli', url='/shaarli')] + service = None diff --git a/plinth/modules/syncthing/__init__.py b/plinth/modules/syncthing/__init__.py index c2400d0e8..fcc24c096 100644 --- a/plinth/modules/syncthing/__init__.py +++ b/plinth/modules/syncthing/__init__.py @@ -28,6 +28,7 @@ from plinth import frontpage from plinth import service as service_module from plinth.menu import main_menu from plinth.utils import format_lazy +from plinth.client import desktop_client, mobile_client, web_client version = 1 @@ -58,6 +59,17 @@ description = [ 'also available.'), ] +web_clients = [web_client(name='Syncthing', url='/syncthing')] + +desktop_clients = [desktop_client(name='Syncthing', + url='https://syncthing.net/')] + +mobile_clients = [mobile_client( + name='Syncthing', fully_qualified_name='com.nutomic.syncthingandroid', + fdroid_url='https://f-droid.org/packages/com.nutomic.syncthingandroid/', + play_store_url='https://play.google.com/store/apps/details?id=com.nutomic' + '.syncthingandroid')] + service = None diff --git a/plinth/modules/tor/__init__.py b/plinth/modules/tor/__init__.py index 684eff893..e519763a1 100644 --- a/plinth/modules/tor/__init__.py +++ b/plinth/modules/tor/__init__.py @@ -28,6 +28,7 @@ from plinth import service as service_module from plinth.menu import main_menu from plinth.modules.names import SERVICES from plinth.signals import domain_added, domain_removed +from plinth.client import desktop_client, mobile_client from . import utils @@ -52,6 +53,17 @@ description = [ 'Tor Browser.') ] +desktop_clients = [ + desktop_client(name='Tor Browser', + url='https://www.torproject.org/download/download-easy' + '.html.en')] + +mobile_clients = [ + mobile_client(name='Orbot', fully_qualified_name='org.torproject.android', + fdroid_url='https://guardianproject.info/fdroid/', + play_store_url='https://play.google.com/store/apps/details' + '?id=org.torproject.android')] + reserved_usernames = ['debian-tor'] socks_service = None diff --git a/plinth/modules/transmission/__init__.py b/plinth/modules/transmission/__init__.py index 5d8f5cb7a..67bb8ec3b 100644 --- a/plinth/modules/transmission/__init__.py +++ b/plinth/modules/transmission/__init__.py @@ -27,6 +27,7 @@ from plinth import action_utils from plinth import frontpage from plinth import service as service_module from plinth.menu import main_menu +from plinth.client import web_client version = 1 @@ -46,6 +47,8 @@ description = [ _('Access the web interface at /transmission.') ] +web_clients = [web_client(name='Transmission',url='/transmission')] + reserved_usernames = ['debian-transmission'] service = None diff --git a/plinth/modules/ttrss/__init__.py b/plinth/modules/ttrss/__init__.py index 6f6c2e397..0a664ac51 100644 --- a/plinth/modules/ttrss/__init__.py +++ b/plinth/modules/ttrss/__init__.py @@ -28,6 +28,7 @@ from plinth import cfg from plinth import frontpage from plinth import service as service_module from plinth.menu import main_menu +from plinth.client import web_client, mobile_client version = 2 @@ -57,6 +58,15 @@ description = [ 'the URL /tt-rss-app for connecting.')) ] +web_clients = [web_client(name='TT-RSS', url='/tt-rss')] + +mobile_clients = [ + mobile_client(name='TTRSS-Reader', + fully_qualified_name='org.ttrssreader', + play_store_url='https://play.google.com/store/apps/details' + '?id=org.ttrssreader', + fdroid_url='https://f-droid.org/packages/org.ttrssreader/')] + service = None diff --git a/plinth/templates/clients.html b/plinth/templates/clients.html index 63786dd6c..aedc9d952 100644 --- a/plinth/templates/clients.html +++ b/plinth/templates/clients.html @@ -53,21 +53,20 @@
{% trans "Mobile Clients" %}: