From 8675f295e62bfb49377137408d5fb4f901d3a340 Mon Sep 17 00:00:00 2001 From: "Schimon Jehudah, Adv." Date: Sat, 26 Oct 2024 20:14:45 +0300 Subject: [PATCH] CSS : Modify the design of download page; Python: Add instructions for operating systems and for featured clients; SVG : Add new icons and optimize existing icons; TOML : Add a file for operating systems; XHTML : Add a page for operating systems. --- clients.toml | 413 ++++++++++++++++++++++++-------------- css/stylesheet.css | 144 ++++++++++---- fasi.py | 51 ++++- img/android.svg | 1 + img/apple.svg | 1 + img/browser.svg | 8 + img/conversations.svg | 431 +--------------------------------------- img/freetalk.svg | 1 + img/kaidan-qml.svg | 1 + img/kaios.svg | 1 + img/kopete.svg | 23 +++ img/linux.svg | 1 + img/profanity.svg | 1 + img/tux.svg | 438 ----------------------------------------- img/windows.svg | 1 + systems.toml | 11 ++ xhtml/conference.xhtml | 75 +++---- xhtml/disco.xhtml | 2 +- xhtml/download.xhtml | 103 +++++----- xhtml/jid.xhtml | 2 +- xhtml/main.xhtml | 2 +- xhtml/node.xhtml | 2 +- xhtml/result.xhtml | 2 +- xhtml/software.xhtml | 52 +++++ 24 files changed, 608 insertions(+), 1159 deletions(-) create mode 100644 img/android.svg create mode 100644 img/apple.svg create mode 100644 img/browser.svg create mode 100644 img/freetalk.svg create mode 100644 img/kaidan-qml.svg create mode 100644 img/kaios.svg create mode 100644 img/kopete.svg create mode 100644 img/linux.svg create mode 100644 img/profanity.svg delete mode 100644 img/tux.svg create mode 100644 img/windows.svg create mode 100644 systems.toml create mode 100644 xhtml/software.xhtml diff --git a/clients.toml b/clients.toml index f1a0c31..0744774 100644 --- a/clients.toml +++ b/clients.toml @@ -1,27 +1,3 @@ -#[atalk] -#title = "aTalk" -#about = """ -#XMPP/Jabber client with encrypted instant messaging and video calls. -## -#An encrypted instant messaging with video call and GPS features for Divest OS. -#""" -#android = "https://f-droid.org/packages/org.atalk.android/" -#features = ["chat", "fdroid", "graphical", "mobile", "omemo", "otr", "zrtp"] -#resources = [ -# { url = "https://atalk.sytes.net/atalk/", txt = "Homepage" }, -#] - -[aparte] -title = "Aparté" -about = """ -Simple XMPP console client written in Rust and inspired by Profanity. -""" -posix = "https://github.com/paulfariello/aparte/releases" -features = ["chat", "console", "desktop"] -resources = [ - { url = "https://github.com/paulfariello/aparte", txt = "Homepage" }, -] - #[adium] #title = "Adium" #about = """ @@ -30,9 +6,34 @@ resources = [ #chatting with friends on XMPP and sitting in an IRC channel at the same time. #""" #apple = "https://adium.im" -#features = ["chat", "desktop", "openpgp", "otr"] +#properties = ["chat", "desktop", "openpgp", "otr"] #resources = [ -# { url = "https://adium.im", txt = "Homepage" }, +# { url = "https://adium.im", txt = "Project homepage" }, +#] + +[aparte] +title = "Aparté" +about = """ +Simple XMPP console client written in Rust and inspired by Profanity. +""" +posix = "https://github.com/paulfariello/aparte/releases" +properties = ["chat", "console", "desktop", "featured"] +resources = [ + { url = "https://github.com/paulfariello/aparte", txt = "Project repository" }, +] + +#[atalk] +#title = "aTalk" +#about = """ +#XMPP/Jabber client with encrypted instant messaging and video calls. +## +#An encrypted instant messaging with video call and GPS features for Divest OS. +#""" +#android = "https://f-droid.org/packages/org.atalk.android/" +#properties = ["chat", "fdroid", "graphical", "mobile", "omemo", "otr", "zrtp"] +#resources = [ +# { url = "https://f-droid.org/en/packages/org.atalk.android", txt = "F-Droid package" }, +# { url = "https://atalk.sytes.net/atalk/", txt = "Project homepage" }, #] #[beagle] @@ -47,9 +48,9 @@ resources = [ #and a few enhancements. #""" #apple = "https://beagle.im/#about" -#features = ["chat", "desktop", "graphical", "omemo"] +#properties = ["chat", "desktop", "graphical", "omemo"] #resources = [ -# { url = "https://beagle.im", txt = "Homepage" }, +# { url = "https://beagle.im", txt = "Project homepage" }, #] [blabber] @@ -59,9 +60,12 @@ blabber.im is a fork of Conversations. The changes aim to improve usability \ and ease transition from pre-installed and other widespread messengers. """ android = "https://blabber.im" -features = ["adhoc", "chat", "graphical", "mobile", "omemo", "openpgp"] +properties = ["adhoc", "chat", "graphical", "mobile", "omemo", "openpgp"] resources = [ - { url = "https://blabber.im", txt = "Homepage" }, + { url = "https://www.kanoa.de/@blabber/108289026302640506", txt = "Warum gibt es die App nicht mehr im Play Store?" }, + { url = "https://codeberg.org/kriztan/blabber.im", txt = "Project repository" }, + { url = "xmpp:support@room.pix-art.de?join", txt = "Support group chat" }, + { url = "https://blabber.im", txt = "Project homepage" }, ] #[bruno] @@ -73,9 +77,9 @@ resources = [ #You can use Bruno if the other IM apps are just not stylish enough. #""" #android = "https://yaxim.org/download/" -#features = ["chat", "graphical", "mobile"] +#properties = ["chat", "graphical", "mobile"] #resources = [ -# { url = "https://yaxim.org/bruno/", txt = "Homepage" }, +# { url = "https://yaxim.org/bruno/", txt = "Project homepage" }, #] #[candy] @@ -91,9 +95,9 @@ resources = [ #Candy is different. It is built for your community. #""" #browser = "http://candy-chat.github.io/candy/" -#features = ["chat", "desktop", "graphical", "mobile"] +#properties = ["chat", "desktop", "graphical", "mobile"] #resources = [ -# { url = "http://candy-chat.github.io/candy/", txt = "Homepage" }, +# { url = "http://candy-chat.github.io/candy/", txt = "Project homepage" }, #] #[chat-o-matic] @@ -104,9 +108,9 @@ resources = [ #Protocols natively supported include IRC and XMPP. #""" #haiku = "https://github.com/JadedCtrl/Chat-O-Matic/releases" -#features = ["chat", "desktop", "graphical"] +#properties = ["chat", "desktop", "graphical"] #resources = [ -# { url = "https://github.com/JadedCtrl/Chat-O-Matic", txt = "Homepage" }, +# { url = "https://github.com/JadedCtrl/Chat-O-Matic", txt = "Project homepage" }, #] [chatsecure] @@ -119,9 +123,10 @@ Unlike other apps that keep you stuck in their walled garden, ChatSecure is \ fully interoperable with other clients that support OMEMO or OTR and XMPP. """ apple = "https://chatsecure.org" -features = ["chat", "fdroid", "graphical", "mobile", "omemo", "otr"] +properties = ["chat", "fdroid", "graphical", "mobile", "omemo", "otr"] resources = [ - { url = "https://chatsecure.org", txt = "Homepage" }, + { url = "https://itunes.apple.com/us/app/chatsecure/id464200063", txt = "iOS package" }, + { url = "https://chatsecure.org", txt = "Project homepage" }, ] [cheogram] @@ -133,38 +138,34 @@ It especially focuses on features useful to people who want to contact those \ on other networks as well, such as SMS-enabled phone numbers. """ android = "https://f-droid.org/packages/com.cheogram.android" -features = ["adhoc", "chat", "fdroid", "graphical", "mobile", "omemo", "openpgp"] +properties = ["adhoc", "chat", "fdroid", "featured", "graphical", "mobile", "omemo", "openpgp"] resources = [ - { url = "https://cheogram.com", txt = "Homepage" }, + { url = "https://lemmy.ml/post/20435540", txt = "Cheogram temporarily removed from Play Store" }, + { url = "https://cheogram.en.aptoide.com/app?app_id=68849981", txt = "Aptoide package" }, + { url = "https://f-droid.org/en/packages/com.cheogram.android", txt = "F-Droid package" }, + { url = "https://git.singpolyma.net/cheogram", txt = "Project repository" }, + { url = "xmpp:discuss@conference.soprani.ca?join", txt = "Support group chat" }, + { url = "https://cheogram.com", txt = "Project homepage" }, ] [conversations] title = "Conversations" about = """ -Conversations is an encrypted, easy-to-use XMPP instant messenger for your \ -mobile device. +The very last word in instant messaging. Conversations is an encrypted, easy-\ +to use XMPP instant messenger for your mobile device. -It is easy to use, reliable, battery friendly. With built-in support for \ -images, group chats and e2e encryption. +It is compatible with Android 5.0+ smartphones and has been optimized to \ +provide a unique mobile experience. It is easy to use, reliable, battery \ +friendly, with built-in support for images, group chats and e2e encryption. """ android = "https://f-droid.org/packages/eu.siacs.conversations" -features = ["chat", "fdroid", "graphical", "mobile", "omemo", "openpgp"] +properties = ["chat", "fdroid", "featured", "graphical", "mobile", "omemo", "openpgp"] resources = [ - { url = "https://conversations.im", txt = "Homepage" }, -] - -[conversations-classic] -title = "Conversations Classic" -about = """ -The very last word in instant messaging. - -Conversations is a Jabber/XMPP client for Android 5.0+ smartphones that has \ -been optimized to provide a unique mobile experience. -""" -android = "https://f-droid.org/packages/eu.siacs.conversations.classic" -features = ["chat", "fdroid", "graphical", "mobile", "omemo", "openpgp"] -resources = [ - { url = "https://conversations.im", txt = "Homepage" }, + { url = "https://f-droid.org/en/packages/eu.siacs.conversations", txt = "F-Droid package" }, + { url = "https://play.google.com/store/apps/details?id=eu.siacs.conversations", txt = "Play package" }, + { url = "https://codeberg.org/iNPUTmice/Conversations", txt = "Project repository" }, + { url = "xmpp:conversations@conference.siacs.eu?join", txt = "Support group chat" }, + { url = "https://conversations.im", txt = "Project homepage" }, ] [conversejs] @@ -182,11 +183,15 @@ is a modern XMPP server. browser = "https://conversejs.org" apple = "https://github.com/conversejs/converse-desktop/releases" linux = "https://github.com/conversejs/converse-desktop/releases" -ubports = "https://open-store.io/app/conversejs.luigi311" # openstore://conversejs.luigi311 +ubports = "openstore://conversejs.luigi311" windows = "https://github.com/conversejs/converse-desktop/releases" -features = ["adhoc", "chat", "desktop", "graphical", "mobile", "omemo", "pwa"] +properties = ["adhoc", "chat", "desktop", "featured", "graphical", "mobile", "omemo", "pwa"] resources = [ - { url = "https://conversejs.org", txt = "Homepage" }, + { url = "https://open-store.io/app/conversejs.luigi311", txt = "OpenStore package" }, + { url = "https://github.com/luigi311/ConverseJS-ubports", txt = "ConverseJS-ubports project repository" }, + { url = "https://github.com/conversejs/converse.js", txt = "ConverseJS project repository" }, + { url = "xmpp:discuss@conference.conversejs.org?join", txt = "Support group chat" }, + { url = "https://conversejs.org", txt = "Project homepage" }, ] #[coyim] @@ -211,9 +216,10 @@ resources = [ #apple = "https://coy.im/#download-section" #linux = "https://coy.im/#download-section" #windows = "https://coy.im/#download-section" -#features = ["chat", "desktop", "graphical", "otr"] +#properties = ["chat", "desktop", "graphical", "otr"] #resources = [ -# { url = "https://coy.im", txt = "Homepage" }, +# { url = "https://github.com/coyim/coyim", txt = "Project repository" }, +# { url = "https://coy.im", txt = "Project homepage" }, #] [dino] @@ -231,9 +237,11 @@ Dino fetches history from the server and synchronizes messages with other \ services. """ linux = "https://dino.im/#download" -features = ["chat", "desktop", "graphical", "mobile", "omemo", "openpgp"] +properties = ["chat", "desktop", "featured", "graphical", "mobile", "omemo", "openpgp"] resources = [ - { url = "https://dino.im", txt = "Homepage" }, + { url = "https://flathub.org/apps/im.dino.Dino", txt = "Flathub package" }, + { url = "xmpp:chat@dino.im?join", txt = "Support group chat" }, + { url = "https://dino.im", txt = "Project homepage" }, ] [gajim] @@ -250,9 +258,29 @@ on your mobile device. apple = "https://gajim.org/download/#macos" linux = "https://gajim.org/download/#linux" windows = "https://gajim.org/download/#windows" -features = ["adhoc", "admin", "chat", "desktop", "graphical", "omemo", "openpgp"] +properties = ["adhoc", "admin", "chat", "desktop", "featured", "graphical", "omemo", "openpgp"] resources = [ - { url = "https://gajim.org", txt = "Homepage" }, + { url = "https://flathub.org/apps/org.gajim.Gajim", txt = "Flathub package" }, + { url = "https://apps.microsoft.com/detail/9pggf6hd43f9?hl=en-us&gl=US", txt = "Windows package" }, + { url = "xmpp:gajim@conference.gajim.org?join", txt = "Support group chat" }, + { url = "https://gajim.org", txt = "Project homepage" }, +] + +[freetalk] +title = "GNU Freetalk" +about = """ +GNU Freetalk is a console based chat client for Jabber and other XMPP servers. + +It has context sensitive auto-completion for buddy names, commands, and even \ +ordinary English words. Similar to GNU Emacs, + +You can customize and extend GNU Freetalk with Scheme language. +""" +posix = "https://www.gnu.org/software/freetalk/" +properties = ["chat", "console", "desktop"] +resources = [ + { url = "https://lists.gnu.org/mailman/listinfo/freetalk-dev", txt = "Mailing list" }, + { url = "https://www.gnu.org/software/freetalk/", txt = "Project homepage" }, ] [irssi] @@ -264,9 +292,9 @@ irssi-xmpp is an Irssi plugin to connect to the XMPP network (jabber). """ haiku = "https://depot.haiku-os.org/irssi" posix = "https://cybione.org/~irssi-xmpp/" -features = ["chat", "console", "desktop", "haikudepot"] +properties = ["chat", "console", "desktop", "haikudepot"] resources = [ - { url = "https://cybione.org/~irssi-xmpp/", txt = "irssi-xmpp homepage" }, + { url = "https://cybione.org/~irssi-xmpp/", txt = "irssi-xmpp project repository" }, { url = "https://irssi.org", txt = "Irssi homepage" }, ] @@ -278,13 +306,10 @@ An XMPP client for Emacs jabber.el is an XMPP client for Emacs. XMPP (also known as 'Jabber') is an \ IETF-standard federated instant messaging protocol. """ -apple = "https://codeberg.org/emacs-jabber/emacs-jabber#how-to-install" -android = "https://codeberg.org/emacs-jabber/emacs-jabber#how-to-install" posix = "https://codeberg.org/emacs-jabber/emacs-jabber#how-to-install" -windows = "https://codeberg.org/emacs-jabber/emacs-jabber#how-to-install" -features = ["admin", "chat", "console", "desktop"] +properties = ["admin", "chat", "console", "desktop"] resources = [ - { url = "https://codeberg.org/emacs-jabber/emacs-jabber", txt = "Homepage" }, + { url = "https://codeberg.org/emacs-jabber/emacs-jabber", txt = "Project repository" }, ] [jsxc] @@ -295,10 +320,13 @@ JavaScript XMPP Client. Real-time XMPP chat application with video calls, file transfer and encrypted \ communication. """ -browser = "https://github.com/narutogo/jsxc-na" -features = ["chat", "desktop", "graphical", "mobile", "omemo"] +browser = "https://jsxc.org/installation.html#downloads" +properties = ["chat", "desktop", "graphical", "mobile", "omemo"] resources = [ - { url = "https://jsxc.org", txt = "Homepage" }, + { url = "https://apps.nextcloud.com/apps/ojsxc", txt = "Nextcloud package" }, + { url = "https://github.com/narutogo/jsxc-na", txt = "jsxc-na project repository" }, + { url = "https://github.com/jsxc/jsxc", txt = "jsxc project repository" }, + { url = "https://jsxc.org", txt = "Project homepage" }, ] [kaidan] @@ -313,10 +341,54 @@ provider, and your privacy is gauranteed more than ever before. """ android = "https://kaidan.im/download/#android-experimental" linux = "https://kaidan.im/download/#linux" -ubports = "https://open-store.io/app/im.kaidan.kaidan" # openstore://im.kaidan.kaidan -features = ["chat", "desktop", "graphical", "mobile", "omemo"] +properties = ["chat", "desktop", "graphical", "mobile", "omemo"] resources = [ - { url = "https://kaidan.im", txt = "Homepage" }, + { url = "appstream://im.kaidan.kaidan", txt = "Discover package" }, + { url = "https://flathub.org/apps/im.kaidan.kaidan", txt = "Flathub package" }, + { url = "https://invent.kde.org/network/kaidan", txt = "Project repository" }, + { url = "xmpp:kaidan@muc.kaidan.im?join", txt = "Support group chat" }, + { url = "https://kaidan.im", txt = "Project homepage" }, +] + +[kaidan-qml] +title = "Kaidan" +about = """ +Kaidan is a user-friendly and modern chat app for every device. + +It uses the open communication protocol XMPP (Jabber). + +Unlike other chat apps, you are not dependent on one specific service \ +provider, and your privacy is gauranteed more than ever before. +""" +ubports = "openstore://im.kaidan.kaidan" +properties = ["chat", "desktop", "featured", "graphical", "mobile", "omemo"] +resources = [ + { url = "https://open-store.io/app/im.kaidan.kaidan", txt = "OpenStore package" }, + { url = "https://invent.kde.org/network/kaidan", txt = "Project repository" }, + { url = "xmpp:kaidan@muc.kaidan.im?join", txt = "Support group chat" }, + { url = "https://kaidan.im", txt = "Project homepage" }, +] + +[kopete] +title = "Kopete" +about = """ +Kopete is an instant messenger supporting IRC, Jabber, Gadu-Gadu, Novell \ +GroupWise Messenger, and more. It is designed to be a flexible and extensible \ +multi-protocol system suitable for personal and enterprise use. + +The goal of Kopete is to provide users with a single easy-to-use way to access \ +all of their instant messaging systems. The interface puts people first, and \ +is integrated with the system address book to let you access your contacts \ +from other KDE applications. +""" +linux = "https://apps.kde.org/kopete/" +properties = ["chat", "desktop", "graphical", "otr"] +resources = [ + { url = "appstream://org.kde.kopete", txt = "Discover package" }, + { url = "https://flathub.org/apps/details/org.kde.kopete", txt = "Flathub package" }, + { url = "https://invent.kde.org/network/kopete", txt = "Project repository" }, + { url = "irc://irc.libera.chat/kopete", txt = "Support group chat" }, + { url = "https://userbase.kde.org/Kopete", txt = "Project homepage" }, ] #[mcabber] @@ -329,9 +401,10 @@ resources = [ #Record Messaging) support, dynamic modules and external action triggers. #""" #posix = "https://mcabber.com" -#features = ["admin", "chat", "console", "desktop", "openpgp", "otr"] +#properties = ["admin", "chat", "console", "desktop", "openpgp", "otr"] #resources = [ -# { url = "https://mcabber.com", txt = "Homepage" }, +# { url = "https://mcabber.com/hg/", txt = "Project repository" }, +# { url = "https://mcabber.com", txt = "Project homepage" }, #] [miranda] @@ -345,9 +418,10 @@ client Miranda IM. It is very light on system resources and extremely fast. """ windows = "https://miranda-ng.org/downloads/" -features = ["adhoc", "chat", "desktop", "graphical", "omemo", "openpgp", "otr"] +properties = ["adhoc", "chat", "desktop", "featured", "graphical", "omemo", "openpgp", "otr"] resources = [ - { url = "https://miranda-ng.org", txt = "Homepage" }, + { url = "https://github.com/miranda-ng/miranda-ng", txt = "Project repository" }, + { url = "https://miranda-ng.org", txt = "Project homepage" }, ] [monal] @@ -360,9 +434,13 @@ be the go-to client for these platforms just like the app Conversations is for \ Divest OS. """ apple = "https://monal-im.org" -features = ["chat", "desktop", "graphical", "mobile", "omemo"] +properties = ["chat", "desktop", "featured", "graphical", "mobile", "omemo"] resources = [ - { url = "https://monal-im.org", txt = "Homepage" }, + { url = "https://apps.apple.com/app/id317711500", txt = "iOS package" }, + { url = "https://apps.apple.com/app/id1637078500", txt = "macOS package" }, + { url = "https://github.com/monal-im/Monal", txt = "Project repository" }, + { url = "xmpp:monal@chat.yax.im?join", txt = "Support group chat" }, + { url = "https://monal-im.org", txt = "Project homepage" }, ] [monocles] @@ -374,9 +452,13 @@ It is based on blabber.im and Conversations, yet has a lot of changes and \ offers additional features to improve usability and security. """ android = "https://f-droid.org/packages/de.monocles.chat" -features = ["adhoc", "chat", "fdroid", "graphical", "mobile", "omemo", "openpgp", "otr"] +properties = ["adhoc", "chat", "fdroid", "featured", "graphical", "mobile", "omemo", "openpgp", "otr"] resources = [ - { url = "https://monocles.de/more/", txt = "Homepage" }, + { url = "https://f-droid.org/en/packages/de.monocles.chat", txt = "F-Droid package" }, + { url = "https://play.google.com/store/apps/details?id=eu.monocles.chat", txt = "Play package" }, + { url = "https://codeberg.org/monocles/monocles_chat", txt = "Project repository" }, + { url = "xmpp:support@conference.monocles.de?join", txt = "Support group chat" }, + { url = "https://monocles.de/more/", txt = "Project homepage" }, ] [movim] @@ -397,10 +479,14 @@ desktop computer. apple = "https://join.movim.eu" browser = "https://join.movim.eu" android = "https://join.movim.eu" -ubports = "https://open-store.io/app/eu.movim.ut.movim" # openstore://eu.movim.ut.movim -features = ["adhoc", "chat", "desktop", "graphical", "mobile", "omemo", "pubsub", "pwa"] +ubports = "openstore://eu.movim.ut.movim" +properties = ["adhoc", "chat", "desktop", "featured", "graphical", "mobile", "omemo", "pubsub", "pwa"] resources = [ - { url = "https://movim.eu", txt = "Homepage" }, + { url = "https://open-store.io/app/eu.movim.ut.movim", txt = "OpenStore package" }, + { url = "https://gitlab.com/ChristianPauly/ubuntu-movim", txt = "ubuntu-movim project repository" }, + { url = "https://github.com/movim/movim", txt = "Movim project repository" }, + { url = "xmpp:movim@conference.movim.eu?join", txt = "Support group chat" }, + { url = "https://movim.eu", txt = "Project homepage" }, ] [moxxy] @@ -412,9 +498,11 @@ It is currently alpha software. This means that there will be issues with some \ functionalities. Please do not use Moxxy for anything important at this moment. """ android = "https://apt.izzysoft.de/fdroid/index/apk/org.moxxy.moxxyv2" -features = ["chat", "graphical", "izzyondroid", "mobile", "omemo"] +properties = ["chat", "graphical", "izzyondroid", "mobile", "omemo"] resources = [ - { url = "https://moxxy.org", txt = "Homepage" }, + { url = "https://codeberg.org/moxxy/moxxy", txt = "Project repository" }, + { url = "xmpp:moxxy@muc.moxxy.org?join", txt = "Support group chat" }, + { url = "https://moxxy.org", txt = "Project homepage" }, ] [pade] @@ -427,9 +515,9 @@ client optimized for business and organizations implemented as a cross-\ platform browser extension. """ browser = "https://igniterealtime.org/projects/pade/" -features = ["chat", "desktop", "extension", "graphical", "mobile", "omemo"] +properties = ["chat", "desktop", "extension", "graphical", "mobile", "omemo"] resources = [ - { url = "https://igniterealtime.org/projects/pade/", txt = "Homepage" }, + { url = "https://igniterealtime.org/projects/pade/", txt = "Project homepage" }, ] [pidgin] @@ -445,14 +533,14 @@ Sametime, SILC, SIMPLE, and Zephyr. It can support many more with plugins. Pidgin supports many features of these chat networks, such as file transfers, \ away messages, buddy icons, custom smileys, and typing notifications. Numerous \ -plugins also extend Pidgin’s functionality above and beyond the standard \ -features. +plugins also extend functionality above and beyond the standard features. """ linux = "https://pidgin.im/install/" windows = "https://pidgin.im/install/" -features = ["chat", "desktop", "openpgp", "otr"] +properties = ["chat", "desktop", "openpgp", "otr"] resources = [ - { url = "https://pidgin.im", txt = "Homepage" }, + { url = "https://flathub.org/apps/im.pidgin.Pidgin", txt = "Flathub package" }, + { url = "https://pidgin.im", txt = "Project homepage" }, ] [poezio] @@ -472,22 +560,36 @@ anonymous spirit of IRC while using a powerful, standard and open protocol. """ haiku = "https://depot.haiku-os.org/poezio" posix = "https://poez.io/en/#download" -features = ["adhoc", "chat", "console", "desktop", "haikudepot", "omemo", "openpgp", "otr"] +properties = ["adhoc", "chat", "console", "desktop", "featured", "haikudepot", "omemo", "openpgp", "otr"] resources = [ - { url = "https://poez.io", txt = "Homepage" }, + { url = "https://flathub.org/apps/io.poez.Poezio", txt = "Flathub package" }, + { url = "https://codeberg.org/poezio/poezio", txt = "Project repository" }, + { url = "https://codeberg.org/poezio/poezio/src/branch/main/plugins", txt = "Plugins list" }, + { url = "xmpp:poezio@muc.poez.io?join", txt = "Support group chat" }, + { url = "https://poez.io", txt = "Project homepage" }, ] -#[profanity] -#title = "Profanity" -#about = """ -#Profanity is a console based XMPP client written in C using ncurses and \ -#libstrophe, inspired by Irssi. -#""" -#posix = "https://profanity-im.github.io" -#features = ["chat", "console", "desktop", "omemo", "openpgp", "otr"] -#resources = [ -# { url = "https://profanity-im.github.io", txt = "Homepage" }, -#] +[profanity] +title = "Profanity" +about = """ +A console based XMPP client. + +Profanity is a console based XMPP client written in C using ncurses and \ +libstrophe, inspired by Irssi. + +It supports XMPP chat services, MUC chat room, OTR, PGP and OMEMO encryption, \ +roster management, including flexible resource and priority settings, desktop \ +notifications, and it has a plugins system in Python and C. +""" +posix = "https://profanity-im.github.io" +properties = ["adhoc", "chat", "console", "desktop", "featured", "omemo", "openpgp", "otr"] +resources = [ + { url = "https://github.com/profanity-im/profanity", txt = "Project repository" }, + { url = "https://profanity-im.github.io/plugins.html", txt = "Plugins list" }, + { url = "https://lists.posteo.de/listinfo/profanity", txt = "Mailing list" }, + { url = "xmpp:profanity@rooms.dismail.de?join", txt = "Support group chat" }, + { url = "https://profanity-im.github.io", txt = "Project homepage" }, +] [prose] title = "Prose" @@ -499,9 +601,9 @@ Decentralized Team Messaging in an Era of Centralized SaaS. """ apple = "https://prose.org/downloads/" browser = "https://prose.org/downloads/" -features = ["chat", "desktop", "graphical", "mobile"] +properties = ["chat", "desktop", "graphical", "mobile"] resources = [ - { url = "https://prose.org", txt = "Homepage" }, + { url = "https://prose.org", txt = "Project homepage" }, ] [psi] @@ -515,9 +617,11 @@ supported operating system. apple = "https://psi-im.org" linux = "https://psi-im.org" windows = "https://psi-im.org" -features = ["adhoc", "admin", "chat", "desktop", "graphical", "omemo", "openpgp", "otr"] +properties = ["adhoc", "admin", "chat", "desktop", "graphical", "omemo", "openpgp", "otr"] resources = [ - { url = "https://psi-im.org", txt = "Homepage" }, + { url = "https://github.com/psi-im/psi", txt = "Project repository" }, + { url = "xmpp:psi-dev@conference.jabber.ru?join", txt = "Support group chat" }, + { url = "https://psi-im.org", txt = "Project homepage" }, ] [psi-plus] @@ -533,9 +637,11 @@ apple = "https://psi-plus.com/wiki/en:downloads#macos" haiku = "https://depot.haiku-os.org/psi_plus" linux = "https://psi-plus.com/wiki/en:downloads#linux" windows = "https://psi-plus.com/wiki/en:downloads#ms_windows" -features = ["adhoc", "admin", "chat", "desktop", "graphical", "haikudepot", "omemo", "openpgp", "otr"] +properties = ["adhoc", "admin", "chat", "desktop", "featured", "graphical", "haikudepot", "omemo", "openpgp", "otr"] resources = [ - { url = "https://psi-im.org", txt = "Homepage" }, + { url = "https://github.com/psi-plus/main", txt = "Project repository" }, + { url = "xmpp:psi-dev@conference.jabber.ru?join", txt = "Support group chat" }, + { url = "https://psi-plus.com", txt = "Project homepage" }, ] [reeder] @@ -547,9 +653,9 @@ Reeder fetches, does not come from typical HTTP feed sources but rather from \ XMPP PubSub services. """ browser = "https://github.com/SeveFP/Reeder" -features = ["desktop", "graphical", "pubsub"] +properties = ["desktop", "graphical", "pubsub"] resources = [ - { url = "https://github.com/SeveFP/Reeder", txt = "Homepage" }, + { url = "https://github.com/SeveFP/Reeder", txt = "Project repository" }, ] [renga] @@ -561,9 +667,10 @@ Renga supports personal one-to-one chat, group chat, transports, etc. and it \ provides a clean and easy to use interface. """ haiku = "https://depot.haiku-os.org/renga" -features = ["chat", "desktop", "graphical", "haikudepot"] +properties = ["chat", "desktop", "featured", "graphical", "haikudepot"] resources = [ - { url = "https://pulkomandy.tk/projects/renga", txt = "Homepage" }, + { url = "xmpp:renga@chat.jabberfr.org?join", txt = "Support group chat" }, + { url = "https://pulkomandy.tk/projects/renga", txt = "Project homepage" }, ] #[siskin] @@ -573,9 +680,10 @@ resources = [ #and iPad. It provides an easy way to talk and share moments with your friends. #""" #apple = "https://siskin.im/#about" -#features = ["chat", "graphical", "mobile", "omemo"] +#properties = ["chat", "graphical", "mobile", "omemo"] #resources = [ -# { url = "https://siskin.im", txt = "Homepage" }, +# { url = "https://itunes.apple.com/us/app/tigase-messenger/id1153516838", txt = "iOS package" }, +# { url = "https://siskin.im", txt = "Project homepage" }, #] #[spark] @@ -593,9 +701,9 @@ resources = [ #apple = "https://igniterealtime.org/projects/spark/" #linux = "https://igniterealtime.org/projects/spark/" #windows = "https://igniterealtime.org/projects/spark/" -#features = ["chat", "desktop", "graphical", "omemo"] +#properties = ["chat", "desktop", "graphical", "omemo"] #resources = [ -# { url = "https://igniterealtime.org/projects/spark/", txt = "Homepage" }, +# { url = "https://igniterealtime.org/projects/spark/", txt = "Project homepage" }, #] #[speeqe] @@ -616,9 +724,9 @@ resources = [ #based servers. To tie it all together there is a small amount of django. #""" #browser = "https://github.com/thepug/Speeqe" -#features = ["chat", "desktop", "graphical"] +#properties = ["chat", "desktop", "graphical"] #resources = [ -# { url = "https://github.com/thepug/Speeqe", txt = "Homepage" }, +# { url = "https://github.com/thepug/Speeqe", txt = "Project repository" }, #] [squawk] @@ -627,15 +735,17 @@ about = """ Squawk is a lightweight XMPP desktop messenger. The primary objective of this project is to offer you a fast and user-friendly \ -messaging experience that closely aligns with your system’s style, while also \ +messaging experience that closely aligns with your system style, while also \ minimizing resource consumption. Squawk is still at a very early stage and might not suit everyone but you are welcome to try it out. """ linux = "https://macaw.me/projects/squawk/" -features = ["chat", "desktop", "graphical"] +properties = ["chat", "desktop", "graphical"] resources = [ - { url = "https://macaw.me/projects/squawk/", txt = "Homepage" }, + { url = "xmpp:squawk@conference.macaw.me?join", txt = "Support group chat" }, + { url = "https://git.macaw.me/blue/squawk", txt = "Project repository" }, + { url = "https://macaw.me/projects/squawk/", txt = "Project homepage" }, ] [stork] @@ -646,9 +756,9 @@ Stork IM by Tigase, Inc. is a lightweight and powerful XMPP client for Android. It provides an easy way to talk and share moments with your friends. """ android = "https://stork.im/#about" -features = ["chat", "graphical", "mobile", "omemo"] +properties = ["chat", "graphical", "mobile", "omemo"] resources = [ - { url = "https://stork.im", txt = "Homepage" }, + { url = "https://stork.im", txt = "Project homepage" }, ] [swift] @@ -665,9 +775,10 @@ from Isode. apple = "https://swift.im/downloads.html" linux = "https://swift.im/downloads.html" windows = "https://swift.im/downloads.html" -features = ["chat", "desktop", "graphical"] +properties = ["chat", "desktop", "graphical"] resources = [ - { url = "https://swift.im", txt = "Homepage" }, + { url = "xmpp:swift@rooms.swift.im?join", txt = "Support group chat" }, + { url = "https://swift.im", txt = "Project homepage" }, ] [uwpx] @@ -683,10 +794,12 @@ There is support for a wide range of features link bookmarks, user avatars, \ chat markers and experimental OMEMO support. """ windows = "https://uwpx.org" -features = ["chat", "desktop", "graphical", "mobile", "omemo"] +properties = ["chat", "desktop", "featured", "graphical", "mobile", "omemo"] resources = [ { url = "https://github.com/UWPX/UWPX-Client?tab=readme-ov-file#features", txt = "A complete list of features" }, - { url = "https://uwpx.org", txt = "Homepage" }, + { url = "https://apps.microsoft.com/detail/9n2s5v8hmvlm?hl=en-us&gl=US", txt = "Windows package" }, + { url = "https://github.com/UWPX/UWPX-Client", txt = "Project repository" }, + { url = "https://uwpx.org", txt = "Project homepage" }, ] [weechat] @@ -698,12 +811,11 @@ XMPP for power users and digital masochists. weechat-xmpp is a WeeChat plugin that extends WeeChat to support XMPP, and it \ currently has a minimal but ideally maximal set of XEPs. """ -android = "https://github.com/bqv/weechat-xmpp" haiku = "https://depot.haiku-os.org/weechat" posix = "https://github.com/bqv/weechat-xmpp" -features = ["chat", "console", "desktop", "omemo", "openpgp"] +properties = ["chat", "console", "desktop", "omemo", "openpgp"] resources = [ - { url = "https://github.com/bqv/weechat-xmpp", txt = "weechat-xmpp homepage" }, + { url = "https://github.com/bqv/weechat-xmpp", txt = "weechat-xmpp project repository" }, { url = "https://weechat.org", txt = "WeeChat homepage" }, ] @@ -719,9 +831,12 @@ interoperable open standards. """ browser = "https://xabber.com" android = "https://xabber.com" -features = ["chat", "desktop", "graphical", "omemo", "mobile"] +properties = ["chat", "desktop", "featured", "graphical", "omemo", "mobile"] resources = [ - { url = "https://xabber.com", txt = "Homepage" }, + { url = "https://f-droid.org/packages/com.xabber.android", txt = "F-Droid package" }, + { url = "https://play.google.com/store/apps/details?id=com.xabber.android", txt = "Play package" }, + { url = "https://web.xabber.com", txt = "Xabber Web" }, + { url = "https://xabber.com", txt = "Project homepage" }, ] #[xmpp-web] @@ -730,9 +845,9 @@ resources = [ #Lightweight HTML chat client for XMPP servers. #""" #browser = "https://github.com/nioc/xmpp-web/releases" -#features = ["chat", "desktop", "graphical", "mobile", "pwa"] +#properties = ["chat", "desktop", "graphical", "mobile", "pwa"] #resources = [ -# { url = "https://github.com/nioc/xmpp-web", txt = "Homepage" }, +# { url = "https://github.com/nioc/xmpp-web", txt = "Project homepage" }, #] [yaxim] @@ -745,7 +860,9 @@ It aims at usability, low overhead and security, and works on low-end Android \ devices starting with Android 4.0. """ android = "https://yaxim.org/download/" -features = ["chat", "graphical", "mobile"] +properties = ["chat", "graphical", "mobile"] resources = [ - { url = "https://yaxim.org", txt = "Homepage" }, + { url = "https://play.google.com/store/apps/details?id=org.yaxim.androidclient", txt = "Play package" }, + { url = "xmpp:yaxim@chat.yax.im?join", txt = "Support group chat" }, + { url = "https://yaxim.org", txt = "Project homepage" }, ] diff --git a/css/stylesheet.css b/css/stylesheet.css index caa939d..10a7d6b 100644 --- a/css/stylesheet.css +++ b/css/stylesheet.css @@ -33,6 +33,7 @@ body { rgba(130, 130, 130, 0.5) ), url(/img/background.svg); + background-attachment: fixed; background-repeat: repeat; /* height: 100vh; */ /* @@ -295,11 +296,37 @@ h1 { } #selection { + margin-left: 10%; + margin-right: 10%; padding-left: 1em; padding-right: 2em; padding-top: 2em; } +#container-of-selection { + border-radius: 30px; + margin-top: 2.5em; + margin-bottom: 2.5em; + margin-left: auto; + margin-right: auto; + filter: drop-shadow(2px 4px 6px grey); + max-width: 55em; + /* FIXME + Elements of element #profile overflow upon decreasing height, once property + min-width has been added. + */ + min-width: 35em; + /* NOTE + The problem is not with elements within element #profile. + Issue has been fixed, once property max-height was commented. + If you would, add @media (max-height: 300px) for lower height. + */ + /* max-height: 75vh; */ + padding-top: 1em; + padding-bottom: 2em; + width: 80%; +} + #selection > dt { margin-bottom: 1.5em; margin-left: 0.5em; @@ -363,6 +390,7 @@ h1 { #selection .features { font-size: 80%; + line-height: 40px; margin: 1em; } @@ -393,6 +421,65 @@ h1 { display: block; /* Show details upon checked checkbox */ } +.plain-note { + display: block; + justify-content: center; + margin-bottom: 2em; + margin-top: 1.5em; + text-align: center; +} + +#software, +#software-menu { + display: flex; + flex-wrap: wrap; + justify-content: center; +} + +#software-menu .system { + /* background: #e9e9e9; */ + border-radius: 10px; + color: #5c5c5c; + /* display: table; */ + margin: 1em; + overflow-wrap: break-word; + padding: 1em; + text-align: center; + text-decoration: none; + width: 12.2%; +} + +#software-menu img { + border-radius: 10px; + height: 5em; + width: 5em; +} + +#software > .system:hover, +#software-menu .system:hover { + background: #e5e5e5; + /* text-decoration: overline; */ +} + +#software > .system { + /* background: #e9e9e9; */ + border-radius: 10px; + color: #5c5c5c; + height: 15%; + margin: 1em; + padding: 1.5em; + text-decoration: none; + width: 20%; +} +/* +#software > .system:hover { + outline-style: solid; +} +*/ +#software > .system img { + width: 5em; +} + #security-notices { display: flex; justify-content: center; @@ -403,7 +490,7 @@ h1 { background: #ebebbe; border-radius: 10px; display: flex; - font-size: 1.2em; + /* font-size: 1.2em; */ margin: 1em; /* margin-right: 20%; @@ -414,18 +501,25 @@ h1 { } #security-notices img { - height: 80px; + height: 60px; margin-left: 0.5em; margin-right: 1em; - width: 80px; + width: 60px; } +/* +#security-notices span { + align-self: center; + place-self: center; +} +*/ + #titles { padding-left: 0.5em; padding-right: 0.5em; } -#container-of-profile { +#overlay { /* margin: auto; */ padding-bottom: 0.5em; } @@ -463,11 +557,6 @@ h1 { filter: drop-shadow(2px 4px 6px grey); } -#container-of-content { - /* margin-left: 8em; */ - /* overflow: auto; */ -} - #profile { border-radius: 30px; filter: drop-shadow(2px 4px 6px grey); @@ -654,22 +743,6 @@ h1 { } */ -@media (max-width: 820px) { - - #action-bar > #windows { - display: none; - } - - #selection img.wide { - display: none; - } - - #selection img.narrow { - display: unset; - } - -} - @media (max-width: 950px) { #action-bar > #view, @@ -683,6 +756,14 @@ h1 { justify-content: center; } + #selection img.narrow { + display: unset; + } + + #selection img.wide { + display: none; + } + } @media (max-width: 885px) { @@ -743,8 +824,7 @@ h1 { } #action > #add, - #action-bar > #add, - #action-bar > #haiku { + #action-bar > #add { display: none; } @@ -766,7 +846,7 @@ h1 { display: unset; } - #container-of-profile { + #overlay { padding-bottom: unset; } @@ -822,14 +902,6 @@ h1 { } -@media (max-width: 670px) { - - #action-bar > #linux { - display: none; - } - -} - @media (max-width: 572px) { #action > a, diff --git a/fasi.py b/fasi.py index 490f03d..da26245 100644 --- a/fasi.py +++ b/fasi.py @@ -667,13 +667,44 @@ class HttpInstance: response.headers['Content-Type'] = 'application/xhtml+xml' return response - @self.app.get('/download') - @self.app.get('/download/{software}') - @self.app.get('/download/{software}/{kind}') - async def download_get(request: Request, software=None, kind=None): + @self.app.get('/selection') + async def selection_get(request: Request): + filename = 'systems.toml' + software = Data.open_file_toml(filename)['systems'] + template_file = 'software.xhtml' + template_dict = { + 'brand_name' : brand_name, + 'brand_site' : brand_site, + 'chat_client' : chat_client, + 'request' : request, + 'software' : software, + 'url' : request.url._url} + response = templates.TemplateResponse(template_file, template_dict) + response.headers['Content-Type'] = 'application/xhtml+xml' + return response - # TODO admin, advanced, console, desktop, graphical, mobile - if not kind: kind = 'graphical' + #@self.app.get('/download/select') + #async def download_select_get(request, software=None): + + @self.app.get('/download/{software}') + async def download_software_get(request: Request, software): + response = await download_get(request, featured=True, software=software) + return response + + @self.app.get('/download/{software}/all') + async def download_software_all_get(request: Request, software): + response = await download_get(request, featured=False, software=software) + return response + + @self.app.get('/download') + async def download_get(request: Request, featured=True, software=None): + + # TODO + # Fearured clients '/download/{software}' + # All clients '/download/{software}/all' + # Select software '/download/select' + + skipped = False if not software: user_agent = request.headers.get("user-agent") @@ -699,12 +730,15 @@ class HttpInstance: client_selection = [] for client in clients: if software in clients[client]: + if featured and 'featured' not in clients[client]['properties']: + skipped = True + continue client_selected = { 'name' : clients[client]['title'], 'about' : clients[client]['about'], - 'features' : clients[client]['features'], - 'iden' : client, 'href' : clients[client][software], + 'iden' : client, + 'properties' : clients[client]['properties'], 'resources' : clients[client]['resources'] if 'resources' in clients[client] else ''} client_selection.append(client_selected) @@ -714,6 +748,7 @@ class HttpInstance: 'brand_site' : brand_site, 'chat_client' : chat_client, 'client_selection' : client_selection, + 'skipped' : skipped, 'request' : request, 'software' : software, 'title' : name, diff --git a/img/android.svg b/img/android.svg new file mode 100644 index 0000000..54e13a2 --- /dev/null +++ b/img/android.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/apple.svg b/img/apple.svg new file mode 100644 index 0000000..eadd592 --- /dev/null +++ b/img/apple.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/browser.svg b/img/browser.svg new file mode 100644 index 0000000..b8b075f --- /dev/null +++ b/img/browser.svg @@ -0,0 +1,8 @@ + + HTML5 Logo + + + + + + \ No newline at end of file diff --git a/img/conversations.svg b/img/conversations.svg index 9397c2b..c184dfb 100644 --- a/img/conversations.svg +++ b/img/conversations.svg @@ -1,430 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - +  \ No newline at end of file diff --git a/img/freetalk.svg b/img/freetalk.svg new file mode 100644 index 0000000..e496027 --- /dev/null +++ b/img/freetalk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/kaidan-qml.svg b/img/kaidan-qml.svg new file mode 100644 index 0000000..3cc8332 --- /dev/null +++ b/img/kaidan-qml.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/kaios.svg b/img/kaios.svg new file mode 100644 index 0000000..063e92a --- /dev/null +++ b/img/kaios.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/kopete.svg b/img/kopete.svg new file mode 100644 index 0000000..2dd991e --- /dev/null +++ b/img/kopete.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/linux.svg b/img/linux.svg new file mode 100644 index 0000000..3d29b6e --- /dev/null +++ b/img/linux.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/profanity.svg b/img/profanity.svg new file mode 100644 index 0000000..3e2aaa9 --- /dev/null +++ b/img/profanity.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/tux.svg b/img/tux.svg deleted file mode 100644 index 6b558e7..0000000 --- a/img/tux.svg +++ /dev/null @@ -1,438 +0,0 @@ - - - Tux - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/img/windows.svg b/img/windows.svg new file mode 100644 index 0000000..fd5a795 --- /dev/null +++ b/img/windows.svg @@ -0,0 +1 @@ + diff --git a/systems.toml b/systems.toml new file mode 100644 index 0000000..f9d5dd0 --- /dev/null +++ b/systems.toml @@ -0,0 +1,11 @@ +systems = [ + { name = "Android", id = "android" }, + { name = "Apple", id = "apple" }, + { name = "Browser", id = "browser" }, + { name = "Haiku", id = "haiku" }, + { name = "KaiOS", id = "kaios" }, + { name = "Linux", id = "linux" }, + { name = "POSIX", id = "posix" }, + { name = "UBports", id = "ubports" }, + { name = "Windows", id = "windows" }, +] diff --git a/xhtml/conference.xhtml b/xhtml/conference.xhtml index fe93adf..20a7826 100644 --- a/xhtml/conference.xhtml +++ b/xhtml/conference.xhtml @@ -31,7 +31,7 @@ Download -
+
{% if links %}
@@ -85,51 +85,38 @@ {{exception}}
{% endif %} - {% if number_of_pages %} -
- {% if number_of_pages > 3 %} - {% if page_number < 2 %} - First - Back - {% else %} - First - Back - {% endif %} - {{page_number}} - {% if page_number == number_of_pages %} - Proceed - Last - {% else %} - Proceed - Last - {% endif %} - {% else %} - {% for number in range(number_of_pages) %} - {{number+1}} - {% endfor %} - {% endif %} -
- {% endif %} - {% if previous %} -
- Previous -
- {% endif %} - - -
+ {% if number_of_pages %} +
+ {% if number_of_pages > 3 %} + {% if page_number < 2 %} + First + Back + {% else %} + First + Back + {% endif %} + {{page_number}} + {% if page_number == number_of_pages %} + Proceed + Last + {% else %} + Proceed + Last + {% endif %} + {% else %} + {% for number in range(number_of_pages) %} + {{number+1}} + {% endfor %} + {% endif %} +
+ {% endif %} + {% if previous %} +
+ Previous +
+ {% endif %} {% if message %}
{{message}}
{% endif %} diff --git a/xhtml/disco.xhtml b/xhtml/disco.xhtml index 4302cf7..36779a6 100644 --- a/xhtml/disco.xhtml +++ b/xhtml/disco.xhtml @@ -31,7 +31,7 @@ Download
-
+
diff --git a/xhtml/download.xhtml b/xhtml/download.xhtml index 0d7bd54..e221edc 100644 --- a/xhtml/download.xhtml +++ b/xhtml/download.xhtml @@ -26,33 +26,21 @@ - - {{title}} + + Download
-
{% if client_selection %} -

XMPP Clients For {{title}}

+

{{title}}

+
+ {% for client in client_selection %} + + +
{{client['name']}}
+
+ {% endfor %} +
{% if title == 'Apple' %}
@@ -60,9 +48,9 @@ - Please refer to the section XMPP - Clients For Haiku, if you are using the Haiku operating - system. + Please refer to the section + Haiku for a selection of + clients for the Haiku operating system.
@@ -103,8 +91,9 @@ - Most of the software that are listed here should be available - for you to install from desktop directly with HaikuDepot. + Most of the software that are listed herein should be + available for you to install from desktop directly with + HaikuDepot.
@@ -112,7 +101,7 @@ {% if title == 'Linux' %}
- + The listed XMPP clients, herein, are also usable with Linux systems that are designed for mobile devices, such as @@ -126,19 +115,20 @@ - Please refer to section XMPP - Clients For POSIX, if you prefer console software with - text based interface. + Please refer to section POSIX + for a selection of console software with text-based interface. +
+ {% endif %} + {% if title == 'POSIX' %} +
- - - + - Please refer to section XMPP - Clients For UBports, if you are using the UBports - mobile system (also Ubuntu Touch). + The software that are listed herein are intended for people + who either want to use console interface, or remotely + control their chat client.
@@ -148,8 +138,8 @@ - Most of the software that are listed here should be available - for you to install from device directly with OpenStore. + The software that are listed herein are available for you to + install directly with OpenStore.
@@ -161,12 +151,25 @@ - The listed XMPP clients, herein, are compatible with the - ReactOS operating system. + The listed XMPP clients, herein, are also compatible with + the ReactOS operating + system. {% endif %} +
+ XMPP clients of other devices and systems can be found at the + main selection page. +
+ {% if skipped %} +
+ Display the + complete list of XMPP clients for {{title}}. +
+ {% endif %} +
+
{% for client in client_selection %}
@@ -179,26 +182,26 @@ {{client['about']}}
- {% if 'adhoc' in client['features'] %} + {% if 'adhoc' in client['properties'] %} 🪄️ Ad-Hoc Commands {% endif %} - {% if 'desktop' in client['features'] %} + {% if 'desktop' in client['properties'] %} 🖥️ Desktop {% endif %} - {% if 'mobile' in client['features'] %} + {% if 'mobile' in client['properties'] %} 📱 Mobile {% endif %} - {% if 'omemo' in client['features'] %} + {% if 'omemo' in client['properties'] %} 🐟 OMEMO {% endif %} - {% if 'openpgp' in client['features'] %} + {% if 'openpgp' in client['properties'] %} 🔐️ OpenPGP {% endif %} - {% if 'otr' in client['features'] %} + {% if 'otr' in client['properties'] %} 🔏️ OTR {% endif %} - {% if 'pubsub' in client['features'] %} + {% if 'pubsub' in client['properties'] %} 📡️ PubSub {% endif %} {% if 'resources' in client %} @@ -217,8 +220,8 @@ {% endfor %} -

+
diff --git a/xhtml/jid.xhtml b/xhtml/jid.xhtml index 2d65a62..a484745 100644 --- a/xhtml/jid.xhtml +++ b/xhtml/jid.xhtml @@ -66,7 +66,7 @@ Download -
+

{{title}}

{% if filename %} diff --git a/xhtml/main.xhtml b/xhtml/main.xhtml index 2ee3613..0368aed 100644 --- a/xhtml/main.xhtml +++ b/xhtml/main.xhtml @@ -32,7 +32,7 @@ Download
-
+

FASI

Fast And Sleek Invite

diff --git a/xhtml/node.xhtml b/xhtml/node.xhtml index 4fabfca..43f612a 100644 --- a/xhtml/node.xhtml +++ b/xhtml/node.xhtml @@ -31,7 +31,7 @@ Download
-
+
{% if links %}
diff --git a/xhtml/result.xhtml b/xhtml/result.xhtml index 07abd29..185b09f 100644 --- a/xhtml/result.xhtml +++ b/xhtml/result.xhtml @@ -29,7 +29,7 @@ Download
-
+

{{title}}

{% if note %} diff --git a/xhtml/software.xhtml b/xhtml/software.xhtml new file mode 100644 index 0000000..0a45fbe --- /dev/null +++ b/xhtml/software.xhtml @@ -0,0 +1,52 @@ + + + + + + + + + {{brand_name}}: System + + + + + + + + + + + + + + + +
+ +
+
+

Choose Your System

+
+ And find the XMPP clients that are best for you. +
+
+ {% for system in software %} + + +
{{system['name']}}
+
+ {% endfor %} +
+
+
+
+ +