Skip to content
Snippets Groups Projects

Draft: GTK4_refactor

Starting the process of upgrading to use GTK4. This will be a large refactor with breaking changes across the whole application, so I am keeping the development isolated on this separate branch and will pull in changes made to master as needed.

I'm opening this draft merge request to provide both an easy way to see the changes made on this branch and master, and as a convenient place to allow discussions involving the refactor. Due to the scope of the changes needed, this will likely take a long time to complete.

At the time of the creation of this merge request, the cmake process has been updated to work with GTK4, but Remmina will still not compile.

Merge request reports

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
    • Awesome!!!

      Keep an eye on the Python API when you will update the code (and whoever can help)

    • Thanks for the tip! Are you expecting any special difficulties with the Python API?

    • I cannot say at the moment, for sure, if you will rename any public functions or their behavior, the Python API have to be updated as well.

      About this point, you mentioned you work quite a lot with Python, and I was wondering if you know anybody would be interested in developing a Python plugin for Remmina. Maybe, the same person, can assure that the API stay aligned with your refactoring.

      The idea behind the Python API was to allow people to develop their plugins easily, so that they can be installed with a simple pip install remmina-flaming-plugin... Sort of

    • Hi! I am a Remmina user and I am good with Python. Maybe I can help with this?

    • Hi @bhatman1441. Help is always welcome, thank you for your offer :). As you can probably see from the other comments here, as of right now in the GTK4 refactor branch Remmina is a bit of a mess and is not yet functioning (Hopefully that changes quickly though).

      If you are seriously interested in helping, I recommend starting by trying to build Remmina yourself (instructions can be found here) and looking over the code to try to get a good idea of how everything fits together and works as a whole. If all goes well, once you have a good understanding of the project we can work together to discuss the future of the Python plugin.

      Please feel free to ask any questions you might have. I myself am still learning new things about Remmina every day :)

    • Hi @myheroyuki, thank you for the advice. I have looked at the code, made it build successfully, and have done some testing.

      @antenore, did you have anything specific in mind for the Remmina python plugin you were talking about?

      Also, I am most proficient in python, but I have experience in C as well, and I would love to help out in other ways. Are there any good issues I could help with that might be easy for someone just getting started?

    • Great! And thank you again for offering to help. There's plenty that can be done to help out, especially as I've recently been working more on this separate GTK refactoring branch than working on other open issues the past few weeks. It's hard to say for sure what issues you might find the easiest as a good starting point without knowing your background skills (I think I took all the easiest issues to work on myself when I first joined the project last year :)), but I can list a few that I think might be good to take a look at.

      #2854 (closed) is one I've been looking at recently, so I could provide assistance and help you if you run into any questions. Also, there is a model of what a possible solution should look like if you look at how the RDP plugin handles reconnection attempts. (this is also talked about it #2509 (closed))

      #1875 is one that has been open for a while and is tagged as a good first issue

      #2843 (closed) already has most of the Remmina side code written and just removed for now, but an improved server (without libsoup) could be written (perhaps in python?)

      #1987 (closed) is another that I have looked at recently. It seems like most of the code needed to make the improvement is included in comments in the issue, but we just needed to wait until libvnc released a new version to really implement it.

      On top of these, please take a look at any other open issues and see if one seems interesting to you or implements a feature you would like. I find interesting issues are the easiest to work on. Also, there's plenty that can be done on the GTK refactor if you would like to help with that 😄

      Don't hesitate to ask any questions

    • Thank you for the list of good starting issues. I am looking through them and learning more about the code. I am also working on the python plugin for x2go.

      I have had some trouble with the protocol settings. I noticed that the label does not always match the settings name in the connections file. I am wondering how these are getting set and if the documentation can be updated to make this more clear.

    • Thanks, it is exciting to hear work on the Python plugin is progressing. Documentation can always be updated, but I don't have the answer to your question right now. I will look and see what I can find.

      Also, this thread is growing a bit long on a merge request that is not really related. Perhaps it would be good for you to open a new issue discussing the Python development?

    • @bhatman1441 You are working on a X2Go Python plugin? That's awesome! Can the code be found somewhere?

    • @dzatoah Yes! Please see this pull request !2475 (closed). This is definitely a work in progress and I would welcome any feedback. Let's move any additional discussions about this to that PR.

    • Please register or sign in to reply
  • added 1 commit

    • 2fc98372 - removed unused reparenting function containing deprecated GtkContainer parameter

    Compare with previous version

    • Some notes on dependencies affected by the switch to GTK4.

      • The www plugin relies on webkit, which will be switching from webkit2gtk-5.0 to webkitgtk-5.0. Based on this post, there are plans for this to be released in March next year alongside GNOME44

      • libvte provides headers allowing for gtk4 support, but they are not enabled by default yet. Changing the gtk4 option in its meson_options.txt and building it from source does seem to work fine though.

      • libappindicator has had discussion about adding gtk4 support, but nothing seems to have come from it yet

    • Regarding libappindicator IMHO is better to think seriously to remove the Remmina icon, or remove at least the functionalities tied to libappindicator. Part of those can be moved in the Remmina toolbar (I've added the connection menu for instance). Some can be removed completely without pity.

      Many users won't be happy, but it will remove a lot of work for something that is broken by design.

      For the www plugin I'd like to help, but I'm not sure I'll have time.

      Duct be afraid to remove functionalities, just do it, to me the point is to:

      1. Make Remmina works with gtk4
      2. Cleaning up the code

      Afterwards there'll be time and space to improve things

    • I think that might be for the best regarding libappindicator, at least for the short term. In my mind it is a nice feature, but not one that is essential for Remmina. Removing some functionality, or at least changing how it is implemented, will be unavoidable.

      Currently I am working to rip out all deprecated functions so that Remmina will compile and run with GTK4. Even though I am working to remove old GTK functions while breaking as little as possible, since so much needs to change a lot of functionality has already been broken in the process, and I'm sure even more will as I continue.

      Once my local branch is stable enough that is compiles without errors using only GTK4 compatible code I will update this branch. At that point I can work on fixing the broken features, starting with the most important and moving down one at a time to less important features. Eventually it would be nice to have all features working perfectly, but getting the essential features working is the priority.

    • Hello @myheroyuki. Based on this post webkitgtk is now available and stable for gtk-4.

      Edited by Yasin Bakhtiar
    • Please register or sign in to reply
  • added 1 commit

    • ef1a152c - Made large-scale changes to remove deprecated GTK functions and replace with...

    Compare with previous version

  • Commit ef1a152c updated branch with a ton of changes removing a large number of deprecated GTK functions and adding in some replacements. Remmina can now be compiled using GTK4, but is still completely broken (currently crashes immediately with (remmina:17401): Gtk-ERROR **: 22:49:41.144: GTK 2/3 symbols detected. Using GTK 2/3 and GTK 4 in the same process is not supported)

    Next steps are getting Remmina to actually run without immediately crashing due to GTK issues, and then moving on to fixing broken functionalities.

  • This is probably GTK WebKit or spice, or both :⁠-⁠P So you could, simply, try to remove www and/or spice plugins

  • added 1 commit

    • 588c2f00 - Remove dependencies that bring in GTK3 functions to prevent immediate crash when starting Remmina

    Compare with previous version

  • Updated again to remove parts of the CMake files that were causing GTK3 functions to be link in. Remmina now runs without crashing immediately using GTK4, but still does not function properly.

  • added 1 commit

    • 7c774cf9 - More GTK4 updates, mainly changes glade files. Remmina main window now opens...

    Compare with previous version

    • Made another update that involved changing a lot of data in glade files. Since it seems there are no plans for Glade to support GTK4, eventually it is probably best to move away from using glade files. For now though, I think it is probably faster to keep them and tweak them as needed to get them and Remmina working with GTK4.

    • Hello @myheroyuki.
      I found an app called Cambalache which can support gtk4.
      Another way I found, is using this commands to change glade file to gtk4 supported file.
      sudo apt install gtk-4*
      sudo apt install libgtk-4*
      gtk4-builder-tool simplify --3to4 gtk3.glade > gtk4.glade

      Edited by Yasin Bakhtiar
    • Cambalache is a great effort, and I played around with it for a while several months ago, but it is still very much a work in progress. Good progress has been made on it recently though, which is a good sign for it becoming incredibly useful in the future.

      gtk4-builder-tool is also a great resource for the porting effort. I've used it several times to greatly simplify the work needed to get our old glade files working with GTK4. It is not perfect, but using it can save a lot of time.

    • Please register or sign in to reply
  • added 1 commit

    • b74a1b8c - Remmina Debugging window now displays text and logs messages

    Compare with previous version

  • added 1 commit

    • a6a9fc4d - Debug window can now paste system info when the button is clicked

    Compare with previous version

  • added 1 commit

    • 8ae05251 - The add a new connection profile window now loads and can be navigated without...

    Compare with previous version

  • added 1 commit

    • ebdbd811 - fix some error messages and let connection list fill the window

    Compare with previous version

  • Hiroyuki Tanaka added 49 commits

    added 49 commits

    • ebdbd811...f4f4db2d - 47 commits from branch master
    • 6692f1a2 - Merge branch 'master' of gitlab.com:Remmina/Remmina into GTK4_refactor
    • ab24801b - Re-implement import and export features to work with GTK4, and have plugins menu show correctly

    Compare with previous version

  • added 1 commit

    • fb903bd8 - Improvements to popover menu usage

    Compare with previous version

  • added 1 commit

    • e9f137dd - Improvements to mpchanger page

    Compare with previous version

  • added 1 commit

    • ae347f81 - Began work on porting rcw to GTK4

    Compare with previous version

  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
Please register or sign in to reply
Loading