MCV-Software / TWBlue

TWBlue, an accessible, open source and multiplatform twitter application.
GNU General Public License v2.0
59 stars 36 forks source link

[feature request] linux support? #636

Open albertotirla opened 6 months ago

albertotirla commented 6 months ago

If I remember correctly, the readme says this is cross platform, however only windows binaries are provided.

Is support for linux planned eventually? since there are more and more people expressing interest in at least trying it, I believe this could be an advantage for twblue, because currently there's no really good, fully accessible non-web client for linux users.

I'm gonna be expanding on that though, to not give the wrong impression here. We do have afew other mastodon clients, for example tooba on the gnome side(though not made by gnome, just using their UI stiles), and tokodon on the kde side. The problem is, none of those are particularly nice to use with screenreaders, and both of them are relatively convoluted.

Work on rectifying this could be undergone soon, but still, this is a gap twblue could fill quite nicely.

What are the biggest blockers for this? what dependencies don't work currently?

are there other considerations at play here?

Besides the ones which I can't anticipate, I can probably forsee one arrising, as it always does, so I'll answer it below

Q: I took a cursory look at what would be required, and I stumbled upon this notion of packages. Since each distro has its own packaging format, which one to release? the most popular distro, ubuntu/debian?

A: None of those, just use flatpaks, because this is a GUI application. Here's a guide about how to package an application as a flatpak. You can either use your own repository, which would be easier for nightly/beta releases, where the user just downloads a .flatpakref file from your releases page and that's that, updates are afterwards automatic, or you can release to flathub, the central repository for flatpaks, where there are already lots of packages, both free and proprietary software.

Arfs6 commented 6 months ago

Hi. I am also interested in getting TWBlue to work on linux as I am planning to migrate some of my dev stuffs to linux. I think the biggest blocker is time (at least for me). Although I'll be finishing exams very soon, so I'll have some time at hand. Some part of the code base is cross platform aware, while others are not. I think there was a point where gtk was added, but it doesn't seem to be complete. I am curious why wxpython wasn't use, because if I can remember correctly, wxpython uses gtk when running on linux. As I said, there doesn't seem to be a big "blocker" apart from time. And we need to get our priorities straight.

manuelcortez commented 6 months ago

Hi, I think the main blocker here is WX Widgets itself. WX, although uses GTK for Linux, does not provide full accessible widgets. Wx.ListCtrl, for example, is the widget we do use for the lists of posts (we call buffers to those lists btw) and as far as I have tried this was not very accessible on Linux. I have been preparing TWBlue for having the GUI separated from the rest of the code, but we definitely would need to have a native GTK compatible version as opposed to just using WX. If you have experience with this or know someone who could give a hand that would help the project, I am not very experienced in GTK/GObject and stuff like that in Python, at least not since Gnome 3.4 and so :).

Arfs6 commented 6 months ago

Oh ok. I think separating the UI won't be an easy work. We will need to abstract the UI or decouple it completely. Have you tried reporting the issue to wxwidget? Does wxpython and wxwidget allow accessing the underlying toolkit? I am asking too many questions 😂 I trust your judgement, I just want to make sure we're going the right way including another GUI toolkit.

manuelcortez commented 6 months ago

I don't remember when was the last time I have tried to use WX under Linux. I think it was like 5 years ago or so. But when I did that i have noticed that certain controls (I can especially remember wx.ListCtrl, which we use a lot, wx.TextCtrl with certain styles and some others) were partially accessible. In particular, the screen reader couldn't read the header for the lists or the label that was placed near the widgets to be announced by accessibility services. During that time when asked, people at WXWidgets told me that this was having issues because they use native widgets but at that time some of those were laking accessibility support in the Linux world. I don't know if this has changed during the last years, as I have not used Linux lately. We could give it a go with a stub interface with some of the most used widgets for us and see how it goes.

albertotirla commented 6 months ago

I'm not sure how recent wxwidgets works with linux because people don't tend to use that UI library anymore in active software, but as long as it uses a relatively recent version of gtk for its rendering, that would work relatively normally. In general though, writing a gtk ui just for linux, when you got wxwidgets there, is in my opinion losing time which could be better spent elsewhere. But yes, it all depends if the wx library itself changed somewhat since last time, and if so, how much the native widgets progressed accessibility wise, if at all that is. Clearly, more testing is required to know for sure. I'm both a linux user and a developer, although my python knowledge isn't that up to date, but once we can establish what needs work in terms of dependencies which are incompatible with linux if any, inaccessible widgets, etc, I can help, both when it comes to testing builds and helping with dependency issues, packaging as a flatpak, etc.