Ripcord Dev Logo Ripcord Development — View Ticket Login or Create Account
Ticket UUID: b4986ade33e2ff7b3f4c40da6a3e2f9cc9030e82
Title: Allow better access to GUI layout and theme customization
Status: Closed Type: Feature_Request
Severity: Minor Priority: Low
Subsystem: General Resolution: Rejected
Last Modified: 2018-11-20 18:57:27
Version Found In:
marcose2018-11-20 18:20:37
As stated in the title, I'm requesting a feature for users to build up better themes by providing them access to a sandbox GUI API, allowing to change the layout and its styles, even being able to remove or add widgets based on theme.

Since the application is on top of the Qt framework, perhaps the QtQuick tooling (<http://doc.qt.io/qt-5/qmlapplications.html>) would fit for a modular UI toolset, within a limited sandbox with restricted components and bit of customization on those.

A further discussion about the security implications and their mitigations is required.
cancel2018-11-20 18:43:31
> As stated in the title, I'm requesting a feature for users to build up better
> themes by providing them access to a sandbox GUI API, allowing to change the
> layout and its styles, even being able to remove or add widgets based on
> theme.

The only customization that can be done right now is using custom color
schemes. See here: [https://dev.cancel.fm/wiki?name=Custom_Themes]

> Since the application is on top of the Qt framework, perhaps the QtQuick
> tooling (<http://doc.qt.io/qt-5/qmlapplications.html>) would fit for a
> modular UI toolset, within a limited sandbox with restricted components and
> bit of customization on those.

Ripcord is written entirely in C++ using the QtWidgets module, with rendering
done using a traditional CPU rasterizer. QtQuick is a QML and JavaScript
framework, which uses GPU to render the scene. It is heavier on resource usage
and focused on things like animations, effects, and touch interfaces. I'm not
interested in any of those things for Ripcord. I'm also not interested in using
JavaScript or the DOM-like QML system. I believe most of the people who would
choose to use Ripcord are choosing it because it is much smaller, lighter and
responsive than the web browser-based clients, and moving to QML and JavaScript
would not only require rewriting most of the application (at least two years of
work), but would also lose most of those benefits. Additionally, because
QtQuick is designed for things like car infotainment systems and mobile phone
interfaces, it lacks many important things that Ripcord uses, such as tree
views, rich text editors, multiple windows, and native subpixel font rendering.

The QML system is not any less flexible for allowing customization. Mostly it
is less flexible. The plugin and customization API still has to be implemented
in the application either way.

> A further discussion about the security implications and their mitigations is
> required.

Ripcord will have a native C++ plugin interface for allowing it to be
extended/modified. I'm already using a version of that internally for
implementing the different service systems (Discord, Slack, etc.)
cancel2018-11-20 18:57:27
> The QML system is not any less flexible for allowing customization. Mostly it
is less flexible.

Correction: I meant to write 'The QML system is not any more flexible' here.