UBports Robot Logo UBports Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Register
    • Login

    Signal UT: Signal-Desktop for Ubuntu Touch

    Scheduled Pinned Locked Moved App Development
    65 Posts 13 Posters 3.8k Views 4 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
      Reply
      • Reply as topic
      Log in to reply
      This topic has been deleted. Only users with topic management privileges can see it.
      • MoemM Offline
        Moem @pparent
        last edited by

        @pparent Amazing improvements, thank you very much!

        Is currently using an Op5t
        Also owns an Op1, a BQ E4.5 and an Xperia X, as well as a BQ tablet and a Pinetab2. Please, someone... make it stop.

        1 Reply Last reply Reply Quote 1
        • klhK Offline
          klh
          last edited by

          @pparent your store description is a bit misleading

          • The application is somewhat slugish because it is not GPU-accelerated (because apparmor prevents the app from accessing the GPU)

          It's sluggish because you run it under Xorg - which is your choice, not a system limitation.

          • It is not possible to copy and paste text from other applications (should be solved with Mir 2.0)

          It won't be solved by Mir 2 because you are running it under Xorg, and the difference with Mir 2 is that it supports the Wayland clipboard protocol.

          If you are going to support ContentHub at some point, clipboard is easy and handled by the same service.

          pparentP 1 Reply Last reply Reply Quote 0
          • pparentP Offline
            pparent @klh
            last edited by pparent

            @klh said in Signal UT: Signal-Desktop for Ubuntu Touch:

            It's sluggish because you run it under Xorg - which is your choice, not a system limitation.

            Please if you have a better way to do things, show us how to improve the app, I'm more that open to contributions and help, and it's clear that the app is 3 weeks old, and is currently not in it's optimal state, far from it, and it is supposed to evolve rapidly.

            The only "choice" of my part, is trying to make it work, as soon as possible, and as good as possible, with the infos that I have at hand, and in that regard I just copied the way uWolf is working (And by the way the snap version of signal-desktop also starts with X11). In the code of uWolf ( that is the most famous port of a desktop app in the store and one of the only one), it says explicitly "# Explicitly force X11 backend for GTK applications like LibreWolf (will remove when mir2.x comes out)". Which led me to belive it's not possible to have a GTK app working properly with Wayland until the release of Mir2.x, and I did plan to switch to Wayland then, so I don't see why copy and paste would not work then. If you have any example of a GTK app working properly (including keyboard) in Wayland mode with Mir1.2, please share!

            What I can say is that in my initial tests, if I run the app unconfined I can get it hardware accelerated even with X, so it seems the apparmor does prevents the app from accessing the GPU at least in an X11 context and without specific configuration. You can try it I do publish the unconfined version in github releases. So my statement is just a mere observation. Maybe if the app can be started with wayland the GPU would be accessible even in a confined context, but I still haven't found how to do it, despite my attempts.

            Please if you have solutions to make it work better than it currently does, then show them to make things go forward! It's not helping to suggest that I make on purpose bad choices so that it does not work properly, while I'm spending a lot of my time contributing an app that somehow nobody has made until now, despite being an important need for many Ubuntu Touch users.

            Ps: by the way I've also asked general questions about electron apps with Wayland In Ubuntu Touch, in the context of upcoming Mir2.0 realease, more than one month ago, before starting this app, without seemingly a consensus about what was possible or not, so I'm just experimenting. https://forums.ubports.com/topic/4507/electron-apps-on-ubuntu-touch/4

            1 Reply Last reply Reply Quote 3
            • pparentP Offline
              pparent
              last edited by

              Anyway I can tell that there will be significant performance improvement in next release!

              D fredldotmeF 2 Replies Last reply Reply Quote 2
              • D Offline
                domubpkm @pparent
                last edited by

                @pparent Personally, I don't use signal (only telegram) but congratulations for your investment in porting this desktop app for UT, which will be of great service to many.

                1 Reply Last reply Reply Quote 2
                • fredldotmeF Offline
                  fredldotme @pparent
                  last edited by

                  @pparent a technical explanation as to why this app will always be slow with Xwayland:

                  X11 historically uses GLX for passing buffers from the client to the server, and GLX inherently is tied to Desktop OpenGL. Desktop OpenGL and OpenGL ES as used on Ubuntu Touch devices are different. The only way forward would be EGL and that would require changes to Xwayland to handle the Android driver's/libhybris EGL implementation.

                  I tried bringing hardware acceleration to Xwayland once and it resulted in only one device (the JingPad) being remotely capable of doing it, with render artifacts. Since then we run Xwayland in shm mode which guarantees software rendering in all cases. So whatever you perceived as hardware accelerated before must have been a placebo.

                  For a list of my contributions to Ubuntu Touch visit: https://fredl.me

                  If you have enjoyed my work on Ubuntu Touch over the years, please donate to my causes:

                  • PayPal: https://paypal.me/beidl
                  • Liberapay: https://liberapay.com/fredldotme
                  pparentP 1 Reply Last reply Reply Quote 2
                  • pparentP Offline
                    pparent @fredldotme
                    last edited by pparent

                    @fredldotme

                    Ok thank you!

                    But maybe chromium engine can make use of GPU for tasks that are not directly related to compositing? Because here it's an electron app with a chromium engine.

                    Just to make things clear I would like to switch to wayland if/when it is feasible. If someone has informations about how to run a GTK wayland app, with keyboard support, either with Mir1.2 or Mir2.0, please share as it would be extremely usefull!

                    For now, if I start with wayland: the window does not display correctly ( wrong scaling or wring size, as --force-device-scale-factor=2.75 make the window very big, it's like it zooms on it but does not reduce its size), it is more slugish than with X11, and it has no keyboard.

                    1 Reply Last reply Reply Quote 1
                    • pparentP Offline
                      pparent
                      last edited by pparent

                      Here would be my current starting script for wayland is there a way to do better to solve some of the problems?
                      @fredldotme @klh

                      #!/bin/sh
                      
                      # Input method (probably does nothing as it is for X11 normaly)
                       export GTK_IM_MODULE=Maliit 
                       export GTK_IM_MODULE_FILE=lib/aarch64-linux-gnu/gtk-3.0/3.0.0/immodules/immodules.cache 
                      
                      # Prefer Wayland
                      export GDK_BACKEND=wayland
                      export DISABLE_WAYLAND=0
                      export OZONE_PLATFORM=wayland
                      export QT_QPA_PLATFORM=wayland
                      export XDG_SESSION_TYPE=wayland
                      export WAYLAND_DISPLAY=${WAYLAND_DISPLAY:-wayland-0}
                      
                      export GTK_USE_PORTAL=1
                      export DCONF_PROFILE=/nonexistent
                      export XDG_CONFIG_HOME=/home/phablet/.config/signalut.pparent/
                      export PATH=$PWD/bin:$PATH
                      
                      dpioptions="--high-dpi-support=1 --force-device-scale-factor=2.75"
                      gpuoptions="--use-gl=egl --enable-gpu-rasterization --enable-zero-copy --ignore-gpu-blocklist --enable-features=UseSkiaRenderer,VaapiVideoDecoder,ThreadedAnimation --disable-frame-rate-limit --disable-gpu-vsync --enable-oop-rasterization --enable-threaded-compositing"
                      sandboxoptions="--no-sandbox --disable-features=WaylandWindowDecorations " 
                      waylandoptions="--ozone-platform=wayland --enable-features=UseOzonePlatform"
                      
                      exec ./opt/Signal/Signal $dpioptions $gpuoptions $sandboxoptions $waylandoptions
                      

                      The main thing for any hope of a usable option with wayland, would be to enable the keyboard for gtk over wayland. (And this I'm a bit afraid of the feasibility in Mir1.2). The other thing is to have a decent scaling factor while keeping the window of the right size, but if it is the only thing it can always be patched within Signal code, which is certainly not ideal but most probably doable.

                      klhK 1 Reply Last reply Reply Quote 0
                      • klhK Offline
                        klh @pparent
                        last edited by

                        @pparent iirc my immodules hack won't work for Wayland, and you won't get an onscreen keyboard in Mir 1.8 because it's missing all the IME protocols.

                        I haven't looked at what electron-only features the signal-desktop app uses, but you could look into packaging Node.js and running the back-end parts there with a shim in WebEngine to communicate with that. Not trivial, but would give you near-perfect integration with the OS.

                        pparentP 1 Reply Last reply Reply Quote 0
                        • pparentP Offline
                          pparent @klh
                          last edited by pparent

                          @klh said in Signal UT: Signal-Desktop for Ubuntu Touch:

                          @pparent iirc my immodules hack won't work for Wayland, and you won't get an onscreen keyboard in Mir 1.8 because it's missing all the IME protocols.

                          I haven't looked at what electron-only features the signal-desktop app uses, but you could look into packaging Node.js and running the back-end parts there with a shim in WebEngine to communicate with that. Not trivial, but would give you near-perfect integration with the OS.

                          Yes I had thought about this option, but in reality I want to remain as close as possible from original client, and keep a small set of patches. For these reasons:

                          • 1°) Because Signal-Desktop needs regular updates, as old versions get outdated fast and are not anymore compatible with the protocol. A version of Signal-Desktop is valid for 3 months. So I don't want heavy hacks that will not port easily from one version to another. I need to be able to recompile newer versions without headaches.

                          • 2°) Because I want to minimize the risk of security breach coming from Signal-Desktop customization.

                          • 3°) I want to avoid that Signal project may not be happy about our client because of messing too much with their protocol/client.

                          So If nothing is possible while keeping the binaries as is, I will stay with X until Mir2.x release.

                          Can you confirm, that the keyboard with Wayland should be better with Mir2.x?

                          Ps: I'm currently debuging and trying to patch the code of maliit-inputcontext-gtk, to try and solve the bugs we currently have with the keyboard with X.

                          1 Reply Last reply Reply Quote 2
                          • pparentP Offline
                            pparent
                            last edited by pparent

                            Ok I've found a way to solve keyboard bugs (in X, in a very hacky way) 🎊 . I will make a new release soon, Alongside optimizations to make the app less sluggish.

                            With those, it will reach the stage of good client for text-only notification-less chat!

                            (Other features will come later)

                            S 1 Reply Last reply Reply Quote 5
                            • R Offline
                              rund_europa
                              last edited by

                              Hello!
                              First of all, a big thank you for the great work: Signal works well on my Volla tablet (UT).
                              However, I have a problem—on my Volla phone X23, the QR code is displayed so large after startup that I cannot scan it, or rather, it is not recognized.
                              What can I do? I have already tried to make it smaller with the UT tweak tool, but without success.

                              pparentP 2 Replies Last reply Reply Quote 0
                              • pparentP Offline
                                pparent @rund_europa
                                last edited by

                                @rund_europa

                                I see, I did not think of that.

                                I should find a way to adapt to different phone displays. in the mean time a hack would be to do from terminal:

                                sudo nano /opt/click.ubuntu.com/signalut.pparent/current/launcher.sh
                                

                                and replace the follwing line by a smaller value:

                                dpioptions="--high-dpi-support=1 --force-device-scale-factor=2.75"
                                

                                You can replace "2.75" by "2" or "1.5" , try what's best for you.

                                R 1 Reply Last reply Reply Quote 0
                                • danfroD Offline
                                  danfro
                                  last edited by danfro

                                  Joining in to report my findings. The app is working quite well on my OP5T. I can't use the very top menu entries (Files, Edit, View, ...). But most other things seem to work fine so far. I don't need to lock/unlock to send, just as described above the action with the small arrow is needed.

                                  I could receive a call, but only one way voice and no video. Calling out didn't work, after a while the other end got a timeout message, but it didn't ring there. Only on my phone it was ringing. Not sure if that is already supposed to work better. Just pointing that out.

                                  The search doesn't seem to work in chats, it works in chat list. Reactions work, reply works. So all in all not bad at all. Thanks a lot for your work. 👍

                                  danfroD 1 Reply Last reply Reply Quote 0
                                  • danfroD Offline
                                    danfro @danfro
                                    last edited by

                                    Ah, for search we need to go back to the chat list page.

                                    So press search in a chat, the go back to chat list page. Then the chat is selected as search filter. When entering a string now, the search is performed within that chat.

                                    pparentP 1 Reply Last reply Reply Quote 0
                                    • pparentP Offline
                                      pparent @rund_europa
                                      last edited by pparent

                                      @rund_europa
                                      Would you be willing to test a dev version, suposed to auto-detect the screen resolution, to see if the scaling works better on your phone?

                                      1 Reply Last reply Reply Quote 0
                                      • pparentP Offline
                                        pparent @danfro
                                        last edited by

                                        @danfro

                                        Thank you for your feedback!

                                        Yes all features are not working currently or in a hacky way. So as long as I've not worked on them (like calls or search messages) I suppose they are not working. Now I'm focusing on core features about chat and keyboard.

                                        danfroD 1 Reply Last reply Reply Quote 1
                                        • danfroD Offline
                                          danfro @pparent
                                          last edited by

                                          @pparent I am fine with that. I am actually quite impressed with everything that does work. The app is good and usable. 👍

                                          1 Reply Last reply Reply Quote 2
                                          • danfroD Offline
                                            danfro
                                            last edited by

                                            Hacking my way through it... ;-).

                                            If you wish to use dark mode, close the app and edit this file:
                                            ~/.config/signalut.pparent/Signal/ephemeral.json
                                            You can do that with seabass2 for instance.
                                            Or use terminal with nano ~/.config/signalut.pparent/Signal/ephemeral.json. (no sudo needed)

                                            Replace "theme-setting": "system", with "theme-setting": "dark",, save changes and start the app.

                                            1 Reply Last reply Reply Quote 0
                                            • R Offline
                                              rund_europa @pparent
                                              last edited by

                                              @pparent I would be happy to test a dev version.
                                              With the above change to the factor, how do I save the change?

                                              pparentP 1 Reply Last reply Reply Quote 0
                                              • First post
                                                Last post