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

    Ubuntu touch as PC?

    Scheduled Pinned Locked Moved General
    19 Posts 8 Posters 2.8k Views 3 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.
      • Y Offline
        Yumi
        last edited by

        Am using Linux Mint since many years. Now the idea grows to purchase an advanced mobile phone, load Ubuntu touch and use it as a mobile PC. My usage is not too heavy!
        Any recommendations to hard-/software combinations that might work?

        K DJacD O 3 Replies Last reply Reply Quote 2
        • K Offline
          kugiigi @Yumi
          last edited by

          @Yumi It can be done but unfortunately there are still issues that would make it not a good experience. One of it is mouse scrolling. It doesn't work properly in all browser tabs in the default browser. It's also a bit too fast in native apps. It's just finicky in general which ruins the experience.

          Also, support for traditional desktop apps is not complete yet. They mostly run in Xwayland which isn't hardware accelerated and has a few things not working properly.

          But if you just want to try it and maybe one day use it when it's actually usable, Fairphone 4 and Fairphone 5 are the popular ones that support external diaplay via the type-c port.

          1 Reply Last reply Reply Quote 2
          • DJacD Online
            DJac @Yumi
            last edited by DJac

            @Yumi I understand what you mean.
            But actualy, i found lomiri is not ready to be used as a PC (no desktop...). And UT don't already have some basics computers apps (libre office, vlc, firefox, scribus, gimp...). But in fact, phosh or kde mobile are not realy better.
            i made a try with kde desktop (on postmarketOS) : more customizable, but pmOS is unstable on oneplus6.
            So, the quest continue ! (why not mobian + kde desktop if possible?)

            1 Reply Last reply Reply Quote 0
            • developerbaymanD Offline
              developerbayman
              last edited by

              this is good news regarding lomri https://linuxiac.com/rhino-linux-2025-4-brings-lomiri-packages-and-updated-kernels/

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

                Based on current state, Ubuntu Touch works better as a tech experiment than a daily PC replacement, mainly due to app support and desktop limitations. If you want to try anyway, Fairphone with external display support seems the least frustrating option for now.

                Slope Game

                1 Reply Last reply Reply Quote 1
                • O Offline
                  oldbutndy @Yumi
                  last edited by oldbutndy

                  @Yumi
                  installed UT 2 days ago on 1+ Nord N10 (BE2026). [Note VoLTE worked, but NOT WiFi calling].
                  UT mentions 'Desktop Convergence', so I tried to see if my phone could reproduce my Linux Mint LibreOffice 'desktop experience'.
                  Easy to connect to WIRELESS external display (limited to 1080P), as long as that display runs Miracast (my LG TV's do).
                  Then I connected Acasis multiport USB-C hub, with PD charging, a wired keyboard, wired mouse, Gigabit ethernet adapter and USB-A Flash drive.
                  I installed LibreOffice via snap. (direct, no libertine required).
                  I opened a spreadsheet that had been created on main PC.
                  not as quick as main PC, but workable.
                  Image on TV was a bit 'wavy', moving top to bottom, as it refreshed, or something. (maybe 2.4Ghz WiFi interference also)
                  A phone model with WIRED external display capability probably fixes the 'wavy'.
                  I did NOT exhaustively test this (meaning the usability for lengthy spreadsheet changes).
                  It was just to see if it would work.
                  If you have a specific thing to try, let me know. I might be able to give a quick test.

                  1 Reply Last reply Reply Quote 1
                  • M Offline
                    mango
                    last edited by mango

                    @oldbutndy and anyone:

                    • Email, such as Thunderbird, with GPG-encryption, anyone tried that?
                    • Firefox with addons? Anyone tried it?
                    • Brave browser?
                    • Linphone?
                    O 1 Reply Last reply Reply Quote 0
                    • O Offline
                      oldbutndy @mango
                      last edited by oldbutndy

                      @mango
                      I did find & install snap for Thunderbird a couple days ago. Installs, but not open (actually, a 'fuzzy box with a text bar at top appears, but nothing in fuzzy box). Then tried series of questions on Google AI 'reasoning model' via browser. It had a series of troubleshooting commands to type in to terminal. I did not follow through yet due to sharing the same display between UT phone and main PC doing the AI thread. Summary was AI estimate of required spending approximately 10 hours on configuration, IF using UT on a phone that had WIRED external monitor, USB Keyboard, mouse, etc. AI thought MANY more hours required if using a wireless external display.
                      I gave up on Thunderbird at that point.

                      Searched for snap for Linphone. found none.

                      Found snap for Signal. Installed. No account so it shows "failed to connect to server". So, it might work.

                      Firefox snap install process gave error: bad plugs or slots: kerberos-tickets (unknown interface "kerberos-tickets"). No icon installed on main screen.

                      Just installed Brave browser via snap. Installed with no errors, opens on wireless external display, and performs a web search, & display correctly. (5 second test. NOT comprehensive. but it opened & looked OK)

                      arubislanderA 1 Reply Last reply Reply Quote 1
                      • arubislanderA Offline
                        arubislander @oldbutndy
                        last edited by

                        @oldbutndy said in Ubuntu touch as PC?:

                        I did find & install snap for Thunderbird a couple days ago. Installs, but not open (actually, a 'fuzzy box with a text bar at top appears, but nothing in fuzzy box). Then tried series of questions on Google AI 'reasoning model' via browser. It had a series of troubleshooting commands to type in to terminal. I did not follow through yet due to sharing the same display between UT phone and main PC doing the AI thread. Summary was AI estimate of required spending approximately 10 hours on configuration, IF using UT on a phone that had WIRED external monitor, USB Keyboard, mouse, etc. AI thought MANY more hours required if using a wireless external display.
                        I gave up on Thunderbird at that point.

                        Please don't ask any AI how to get software to work on UT. Their training data does not contain the required info, and the correct steps cannot be extrapolated from whatever they were trained on, since sometimes the correct steps are either unknown, unfeasible for an end user, or simply don't exist yet.

                        Regarding the snaps from Mozilla (Firefox and Thunderbird, both) they are known not to work on UT as they are trying to use Wayland. They could be forced to use XWayland, but by then one might as well just install the click or the deb.

                        🇦🇼 🇳🇱 🇺🇸 🇪🇸
                        Happily running Ubuntu Touch
                        JingPad (24.04-1.x daily)
                        OnePlus Nord N10 5G (24.04-2.x daily)
                        PinePhone OG (20.04)
                        Meizu Pro 5 (16.04 DEV)

                        1 Reply Last reply Reply Quote 1
                        • M Offline
                          mango
                          last edited by mango

                          Out of curiosity, I tried to get Thunderbird to behave properly on a Fairphone 4. Maybe it would be an idea to make a one-click-install that does all this for a newbie. openSUSE software catalogue has a one-click yaml installer script which sets everything up. Just an idea to make it user friendlier to get common software working out of the box so to say for a newbie to make it easier to adopt Ubuntu Touch.

                          Step 1: Installing Thunderbird inside a Libertine container

                          For those of you newbies wondering how to get Thunderbird Mail client working in desktop mode on Ubuntu Touch, this is one way that seems to work well. Thunderbird has so far not crashed a single time. However the Ubuntu Terminal app and nano crashed several times during this test. This markup was written in nano and copied to this forum spot to test the interoperability between different windows in desktop mode. Copy-paste functionality between windows seems to be a bit glitchy at the time of writing.

                          I messed around with settings until I got something that would work in desktop mode for Fairphone 4 running channel 24.04/daily.

                          Installing Thunderbird as DEB

                          Install Libertine Tweak Tool from Openstore.

                          Activate lirsh command with Libertine Tweak Tool.

                          Open a terminal window and type:

                          lirsh                                                                                  
                          fakeroot                                                                               
                          

                          We need command add-apt-repository command from package software-properties-common.

                          apt-get update                                                                         
                          apt-get upgrade                                                                        
                          apt-get install software-properties-common                                             
                          

                          On my Fairphone 4 I was also obliged to install package apt-utils that for some reason did not install correctly by itself.

                          apt-get install apt-utils
                          

                          At this point it was possible to issue terminal command:

                          add-apt-repository ppa:mozillateam/ppa
                          
                          cat <<EOF | tee /etc/apt/preferences.d/thunderbird-ppa
                          Package: thunderbird
                          Pin: release o=LP-PPA-mozillateam
                          Pin-Priority: 1001
                          Package: thunderbird
                          Pin: release o=Ubuntu
                          Pin-Priority: -1
                          EOF
                          
                          apt-get update
                          
                          apt-cache policy thunderbird
                          
                          # apt install thunderbird
                          DEBIAN_FRONTEND="noninteractive" apt install thunderbird
                          
                          exit # jump out of fakeroot
                          
                          thunderbird --version
                          

                          Now you can test if terminal command thunderbird launches something.

                          On my Fairphone 4, I saw a shaddow window but nothing more. I remembered reading that you have to force Xwayland in some way.

                          # lirsh
                          GDK_BACKEND=x11 thunderbird
                          

                          On my Fairphone 4, the zoom factor is quite big. Let's try to lower the zoom.

                          One way to lower the zoom is to edit Libertine container noble file ~/.Xdefaults and adjust Xft.dpi: 120 from default value Xft.dpi: 197.

                          Exiting lirsh and re-entering lirsh should activate the new DPI setting.

                          Then re-launch thunderbird from command line and see if the zoom factor is better.

                          # lirsh
                          GDK_BACKEND=x11 thunderbird
                          

                          Now the window looks a bit better with not such a large zoom factor in desktop mode.

                          The other way is to use a scaling factor directly before launching thunderbird.

                          Try this and see if the zoom factor is lower with standard setting Xft.dpi: 197.

                          # lirsh
                          GDK_DPI_SCALE=0.6 GDK_BACKEND=x11 thunderbird
                          

                          Once the scaling is okay for your eyes you can create a thunderbird-launcher.

                          # lirsh
                          mkdir -p ~/.local/bin
                          echo "GDK_DPI_SCALE=0.6 GDK_BACKEND=x11 thunderbird" > ~/.local/bin/thunderbird-launcher
                          chmod +x ~/.local/bin/thunderbird-launcher
                          

                          On my Fairphone 4, Libertine container noble folder ~/.local/bin
                          was not in my Libertine container variable $PATH:

                          # lirsh
                          echo $PATH
                          

                          Editing Libertine container noble file .bashrc should do the trick.

                          Added the following lines at the end of .bashrc:

                          if [ -d ~/.local/bin ]; then
                            export PATH="$HOME/.local/bin:$PATH"
                          fi
                          
                          if [ -d ~/bin ]; then
                            export PATH="$HOME/bin:$PATH"
                          fi
                          

                          Exiting lirsh and re-entering lirsh should activate the new setting.

                          exit # jump out of lirsh
                          lirsh
                          echo $PATH
                          
                          thunderbird-launcher
                          

                          This command should open thunderbird inside lirsh with desired zoom.

                          Step 2: Making a Thunderbird Mail main menu item shortcut

                          Poking around with the settings, you may discover that there are actually two ways to launch Thunderbird Mail once it is installed.

                          • Launching Thunderbird Mail from outside the Libertine container. This would require a separate launcher put in ~/.local/share/applications/thunderbird.desktop. User settings will be stored outside the Libertine container.
                          • Launching from inside the Libertine container. This would require to edit the Libertine container's thunderbird.desktop file, which will sooner or later appear in Ubuntu Touch main menu. User settings will be stored inside the Libertine container.

                          For the purpose of illustration, I will do both approaches.

                          2a: Making a thunderbird.desktop outside Libertine container

                          It is not entierly clear to me what you have to do in order to trigger a main menu update after you have installed something in a Libertine container. Debian has a command update-menus which Ubuntu Touch does not have. Ususally, a reboot is the easiest way to update Ubuntu Touch main menu items. However, there should in theory be another way to refresh the main menu that is at this time unknown to me.

                          Now that this is working, let's try to create an Ubuntu Touch shortcut in the main menu. This can be done manually of course. In this example, I will piggy-back on what is already available.

                          Open another terminal tab (without lirsh environment).

                          mkdir -p ~/.local/share/applications
                          
                          mkdir -p ~/.local/share/icons/hicolor/scalable/apps
                          
                          wget -O ~/.local/share/icons/hicolor/scalable/apps/thunderbird.svg https://upload.wikimedia.org/wikipedia/commons/2/2f/Thunderbird_2023_icon.svg                                                                  
                          
                          wget -O ~/.local/share/icons/hicolor/index.theme https://raw.githubusercontent.com/spk121/hicolor-icon-theme/refs/heads/master/index.theme 
                          
                          sed -i "s|^Comment=.*$|Comment=Ubuntu Touch Icon Theme|g" ~/.local/share/icons/hicolor/index.theme
                          
                          echo "Update icon caches (maybe obsolete)"
                          
                          touch ~/.local/share/icons/hicolor
                          
                          update-icon-caches ~/.local/share/icons/hicolor
                          
                          # or
                          
                          touch ~/.local/share/icons/hicolor
                          
                          gtk-update-icon-cache ~/.local/share/icons/hicolor
                          
                          echo
                          echo "We can re-use the thunderbird.desktop file that is in the Libertine container"
                          
                          cp -v /userdata/user-data/phablet/.cache/libertine-container/noble/rootfs/usr/share/applications/thunderbird.desktop ~/.local/share/applications/thunderbird.desktop
                          
                          echo
                          echo "Using scaling factor GDK_DPI_SCALE=1.2"
                          echo "to achieve similar scaling as with"
                          echo "Libertine container 'noble' GDK_DPI_SCALE=0.6"
                          
                          sed -i "s|^Exec=.*$|Exec=bash -c \'GDK_DPI_SCALE=1.2 GDK_BACKEND=x11 /userdata/user-data/phablet/.cache/libertine-container/noble/rootfs/usr/bin/thunderbird\' %u|g" ~/.local/share/applications/thunderbird.desktop
                          
                          echo
                          echo "Ubuntu Touch does not seem to find the thunderbird icon"
                          echo "by itself."
                          echo "    Icon=thunderbird"
                          echo "Icon has to be specified exactly with path to show in main menu."
                          echo "    Icon=/path/to/scalable/svg"
                          
                          sed -i "s|^Icon=.*$|Icon=/home/phablet/.local/share/icons/hicolor/scalable/apps/thunderbird.svg|g" ~/.local/share/applications/thunderbird.desktop
                          
                          echo
                          echo "Trigger main menu update"
                          
                          mv ~/.local/share/applications/thunderbird.desktop ~/.local/share/applications/tmp.desktop
                          
                          mv ~/.local/share/applications/tmp.desktop ~/.local/share/applications/thunderbird.desktop
                          
                          echo
                          echo "You should now see Thunderbird Mail"
                          echo "in Ubuntu Touch main menu."
                          echo
                          echo "Done."
                          

                          Now there should be a visible "Thunderbird Mail" launcher in Ubuntu Touch main menu.

                          Try hitting the "Super-key" (sometimes this key has four windows left of the space bar, sometimes it can have an apple design or command key) on your external wired PS-2 keyboard (or wireless keyboard)
                          and type thund which should be enough to make Thunderbird Mail laucher visible.

                          2b: Adjusting thunderbird.desktop inside Libertine container

                          Adjusting Libertine container thunderbird.desktop located at
                          ~/.cache/libertine-container/noble/rootfs/usr/share/applications/thunderbird.desktop
                          could be done manually with terminal command:
                          nano ~/.cache/libertine-container/noble/rootfs/usr/share/applications/thunderbird.desktop

                          You may also install mousepad in the Libertine container to get a graphical editor. However, copy-paste does not seem to work between windows.

                          There are three lines starting with Exec= which needs to be adjusted to something like:

                          # Exec=thunderbird %u (original)
                          Exec=bash -c "GDK_DPI_SCALE=0.6 GDK_BACKEND=x11 thunderbird %u"
                          
                          # Exec=thunderbird -compose (original)
                          Exec=bash -c 'GDK_DPI_SCALE=0.6 GDK_BACKEND=x11 thunderbird -compose'
                          
                          # Exec=thunderbird -addressbook (original)
                          Exec=bash -c 'GDK_DPI_SCALE=0.6 GDK_BACKEND=x11 thunderbird -addressbook'
                          

                          This could be accomplished with using terminal command sed:

                          sed -i "s|^Exec=thunderbird %u$|Exec=bash -c \"GDK_DPI_SCALE=0.6 GDK_BACKEND=x11 thunderbird %u\"|g" /home/phablet/.cache/libertine-container/noble/rootfs/usr/share/applications/thunderbird.desktop
                          
                          sed -i "s|^Exec=thunderbird -compose$|Exec=bash -c 'GDK_DPI_SCALE=0.6 GDK_BACKEND=x11 thunderbird -compose'|g" /home/phablet/.cache/libertine-container/noble/rootfs/usr/share/applications/thunderbird.desktop
                          
                          sed -i "s|^Exec=thunderbird -addressbook$|Exec=bash -c 'GDK_DPI_SCALE=0.6 GDK_BACKEND=x11 thunderbird -addressbook'|g" /home/phablet/.cache/libertine-container/noble/rootfs/usr/share/applications/thunderbird.desktop
                          

                          Change the scaling factor GDK_DPI_SCALE to suit your eyes. Note that on my Fairphone 4 on channel 24.04/daily it seems to require a scaling factor less than 1.0 inside the Libertine container to scale things down. From outside the container, a scaling factor
                          larger than 1.0 had to be used to scale things up.

                          I am not sure about how to write the first launcher which has %u at the end. The %u in a .desktop file is a placeholder that allows the launcher to accept a single URL as an argument. A mailto link example is: <a href="mailto:someone@example.com">Send Email</a>. Ideally, such a link should be able to configure to open in Thunderbird Mail. Unfortunately I have not been able to discover how to configure it in Ubuntu Touch. There should be a mailto child in:

                          gsettings list-children org.gnome.desktop.default-applications

                          but it does not exist. If it would exist, maybe a command like:

                          gsettings set org.gnome.desktop.default-applications.mailto exec 'GDK_DPI_SCALE=0.6 GDK_BACKEND=x11 thunderbird -compose'

                          would make it possible to open e-mail links in Thunderbird Mail.

                          Concluding thoughts

                          If all went well, you should now be able to set up any mail account and optionally create an OpenPGP encryption key to be used when sending encrypted email to somebody else whatever email provider they use, given that the recipient has a mail reader that can use your public OpenPGP key to decrypt the email message you sent them. If they also use Thunderbird Mail client, OpenPGP encryption will work in the same way on their system. Several other mail clients, such as Evolution Mail client support OpenPGP encryption in a similar way but it might require more to configure it than in Thunderbird, which is more user friendly in this particular aspect. Of course, the email meta data will most probably not be encrypted. If you wish to avoid email metadata you might want to use tuta-mail or proton-mail or any other mail that never leaves the email provider. If somebody knows how to get a mail reader for tuta-mail or proton-mail to Ubuntu Touch, I am sure some users would appreciate that.

                          Having Morph browser open with several tabs and Thunderbird Mail open at the same time uses 3.1-5.9Gi RAM memory, reports terminal command free -h.

                          O 1 Reply Last reply Reply Quote 2
                          • O Offline
                            oldbutndy @mango
                            last edited by

                            @mango
                            Wow !
                            Thank you for that effort !
                            I like your one-click-install idea ...
                            Now, to access Proton mail via Thunderbird, just need to install Proton Mail Bridge on host Linux PC, and configure phone to access that ?
                            or
                            compile Proton Mail Bridge for ARM ?

                            1 Reply Last reply Reply Quote 1
                            • M Offline
                              mango
                              last edited by mango

                              Out of curiosity, since I managed to get Thunderbird to behave properly on a Fairphone 4... maybe it would be an idea to make a similar guide for Firefox web browser.

                              Step 1: Installing Firefox inside a Libertine container

                              For those of you newbies wondering how to get Firefox web browser working in desktop mode on Ubuntu Touch, this is one way that seems to work well. Firefox has so far crashed one time only.

                              This markup was written in nano and mousepad. Copy-paste functionality between windows seems to be non-existent between Firefox and other windows at the time of writing. The only way to copy this markup was to cat markdown-text.md in a terminal and manually copy the lines from terminal with right-click copy, and paste it in this forum.

                              I messed around with settings until I got something that would work in desktop mode for Fairphone 4 running channel 24.04/daily.

                              Installing Firefox as DEB

                              Install Libertine Tweak Tool from Openstore.

                              Activate lirsh command with Libertine Tweak Tool.

                              Open a terminal window and type:

                              lirsh                                                                                  
                              fakeroot                                                                               
                              

                              At this point it is possible to issue terminal commands:

                              install -d -m 0755 /etc/apt/keyrings
                              
                              wget -q https://packages.mozilla.org/apt/repo-signing-key.gpg -O- | tee /etc/apt/keyrings/packages.mozilla.org.asc > /dev/null
                              
                              echo "deb [signed-by=/etc/apt/keyrings/packages.mozilla.org.asc] https://packages.mozilla.org/apt mozilla main" | tee -a /etc/apt/sources.list.d/mozilla.list > /dev/null
                              
                              echo '
                              Package: *
                              Pin: origin packages.mozilla.org
                              Pin-Priority: 1000
                              ' | tee /etc/apt/preferences.d/mozilla
                              
                              apt-get update 
                              
                              # If you want to update the whole Libertine container
                              apt-get upgrade --fix-missing
                              
                              apt-cache policy firefox
                              
                              apt-get install firefox
                              
                              exit # jump out of fakeroot
                              
                              firefox --version
                              
                              # To install a different language pack, execute:
                              # lirsh
                              
                              apt-cache search firefox-l10n
                              
                              # to get the list of all available language packages.
                              #
                              # Install the language pack of your choice like:
                              
                              fakeroot
                              
                              apt-get install firefox-l10n-es-es # Spanish
                              
                              # or
                              
                              apt-get install firefox-l10n-de # German
                              
                              # or
                              
                              apt-get install firefox-l10n-fr # French
                              
                              exit # jump out of fakeroot
                              
                              

                              You may now see Firefox in Ubuntu Touch main menu, or not. One way to trigger a main menu update is to create an update or a .desktop file in one of the catalogues that Ubuntu Touch is monitoring. Try these lines one at a time, to see if the launcher appears, in a fresh terminal tab:

                              if [ -d /home/phablet/.local/share/icons/hicolor ]; then
                                touch /home/phablet/.local/share/icons/hicolor
                              else
                                mkdir -p /home/phablet/.local/share/icons/hicolor/scalable/apps
                                wget -O /home/phablet/.local/share/icons/hicolor/index.theme https://github.com/matthewbauer/appstream-generator/raw/refs/heads/master/data/hicolor-theme-index.theme
                              fi
                              

                              A minimal index.theme can also be made like this:

                              cat <<EOF > /home/phablet/.local/share/icons/hicolor/index.theme
                              [Icon Theme]
                              Name=Hicolor
                              Comment=Ubuntu Touch fallback icon theme
                              Hidden=true
                              Directories=scalable/apps
                              
                              [scalable/apps]
                              MinSize=1
                              Size=128
                              MaxSize=256                                                                            
                              Context=Applications                                                                   
                              Type=Scalable
                              EOF
                              

                              If Firefox still does not show up in Ubuntu Touch main menu, you can try to make a change in folder /home/phablet/.local/share/applications:

                              cp -v /home/phablet/.cache/libertine-container/noble/rootfs/usr/share/applications/firefox.desktop /home/phablet/.local/share/applications/.
                              
                              sleep 3
                              
                              rm -v /home/phablet/.local/share/applications/firefox.desktop
                              

                              Try hitting the "Super-key" (sometimes this key has four windows left of the space bar) and type firef which should be enough to make Firefox launcher visible.

                              Now you can test if terminal command launches something.

                              # lirsh
                              GDK_BACKEND=x11 firefox
                              

                              On my Fairphone 4, the zoom factor is quite big. Let's try to lower the zoom.

                              One way to lower the zoom is to edit Libertine container noble file ~/.Xdefaults and adjust Xft.dpi: 120 from default value Xft.dpi: 197.

                              Exiting lirsh and re-entering lirsh should activate the new DPI setting.

                              Then re-launch firefox from command line and see if the zoom factor is better.

                              # lirsh
                              GDK_BACKEND=x11 firefox
                              

                              Now the window looks a bit better with not such a large zoom factor in desktop mode.

                              The other way is to use a scaling factor directly before launching firefox.

                              Try this and see if the zoom factor is lower with standard setting Xft.dpi: 197.

                              # lirsh
                              GDK_DPI_SCALE=0.6 GDK_BACKEND=x11 firefox
                              

                              Once the scaling is okay for your eyes you can create a firefox-launcher.

                              # lirsh
                              mkdir -p ~/.local/bin
                              echo "GDK_DPI_SCALE=0.6 GDK_BACKEND=x11 firefox" > ~/.local/bin/firefox-launcher
                              chmod +x ~/.local/bin/firefox-launcher
                              

                              On my Fairphone 4, Libertine container noble folder ~/.local/bin
                              was not in my Libertine container variable $PATH:

                              # lirsh
                              echo $PATH
                              

                              Editing Libertine container noble file ~/.bashrc should do the trick. The full path is:

                              /home/phablet/.cache/libertine-container/noble/rootfs/home/phablet/.bashrc

                              You can edit this file both from outside the Libertine container noble as well as from inside the Libertine container.

                              Added the following lines at the end of the Libertine container ~/.bashrc:

                              if [ -d ~/.local/bin ]; then
                                export PATH="$HOME/.local/bin:$PATH"
                              fi
                              
                              if [ -d ~/bin ]; then
                                export PATH="$HOME/bin:$PATH"
                              fi
                              

                              Exiting lirsh and re-entering lirsh should activate the new setting.

                              exit # jump out of lirsh
                              lirsh
                              echo $PATH
                              
                              firefox-launcher
                              

                              This command should open firefox inside lirsh with desired zoom.

                              Step 2: Making a Firefox main menu item shortcut

                              Poking around with the settings, you may discover that there are actually two ways to launch Firefox once it is installed.

                              • Launching Firefox from outside the Libertine container. This would require a separate launcher put in ~/.local/share/applications/firefox.desktop. User settings will be stored outside the Libertine container.
                              • Launching from inside the Libertine container. This would require to edit the Libertine container's firefox.desktop file, which will sooner or later appear in Ubuntu Touch main menu. User settings will be stored inside the Libertine container.

                              For the purpose of illustration, I will do both approaches.

                              2a: Making a firefox.desktop outside Libertine container

                              It is not entierly clear to me what you have to do in order to trigger a main menu update after you have installed something in a Libertine container. Debian has a command update-menus which Ubuntu Touch does not have. Ususally, a reboot is the easiest way to update Ubuntu Touch main menu items. However, there should in theory be another way to refresh the main menu that is at this time unknown to me.

                              Now that this is working, let's try to create an Ubuntu Touch shortcut in the main menu. This can be done manually of course. In this example, I will piggy-back on what is already available.

                              Open another terminal tab (without lirsh environment).

                              mkdir -p ~/.local/share/applications
                              
                              mkdir -p ~/.local/share/icons/hicolor/scalable/apps
                              
                              wget -O ~/.local/share/icons/hicolor/scalable/apps/firefox.svg https://upload.wikimedia.org/wikipedia/commons/a/a0/Firefox_logo%2C_2019.svg
                              
                              wget -O ~/.local/share/icons/hicolor/index.theme https://raw.githubusercontent.com/spk121/hicolor-icon-theme/refs/heads/master/index.theme 
                              
                              sed -i "s|^Comment=.*$|Comment=Ubuntu Touch Icon Theme|g" ~/.local/share/icons/hicolor/index.theme
                              
                              echo "Update icon caches (maybe obsolete)"
                              
                              touch ~/.local/share/icons/hicolor
                              
                              update-icon-caches ~/.local/share/icons/hicolor
                              
                              # or
                              
                              touch ~/.local/share/icons/hicolor
                              
                              gtk-update-icon-cache ~/.local/share/icons/hicolor
                              
                              echo
                              echo "We can re-use the firefox.desktop file that is in the Libertine container"
                              
                              cp -v /userdata/user-data/phablet/.cache/libertine-container/noble/rootfs/usr/share/applications/firefox.desktop ~/.local/share/applications/firefox.desktop
                              
                              echo
                              echo "Using scaling factor GDK_DPI_SCALE=1.2"
                              echo "to achieve similar scaling as with"
                              echo "Libertine container 'noble' GDK_DPI_SCALE=0.6"
                              
                              sed -i "s|^Exec=.*$|Exec=bash -c \'GDK_DPI_SCALE=1.2 GDK_BACKEND=x11 /userdata/user-data/phablet/.cache/libertine-container/noble/rootfs/usr/bin/firefox\' %u|g" ~/.local/share/applications/firefox.desktop
                              
                              echo
                              echo "Ubuntu Touch does not seem to find the firefox icon"
                              echo "by itself."
                              echo "    Icon=firefox"
                              echo "Icon has to be specified exactly with path to show in main menu."
                              echo "    Icon=/path/to/scalable/svg"
                              
                              sed -i "s|^Icon=.*$|Icon=/home/phablet/.local/share/icons/hicolor/scalable/apps/firefox.svg|g" ~/.local/share/applications/firefox.desktop
                              
                              echo
                              echo "Trigger main menu update"
                              
                              mv ~/.local/share/applications/firefox.desktop ~/.local/share/applications/tmp.desktop
                              
                              mv ~/.local/share/applications/tmp.desktop ~/.local/share/applications/firefox.desktop
                              
                              echo
                              echo "You should now see Firefox"
                              echo "in Ubuntu Touch main menu."
                              echo
                              echo "Done."
                              

                              Now there should be a visible "Firefox" launcher in Ubuntu Touch main menu.

                              Try hitting the "Super-key" (sometimes this key has four windows left of the space bar, sometimes it can have an apple design or command key) on your external wired PS-2 keyboard (or wireless keyboard) and type firef which should be enough to make Firefox launcher visible.

                              2b: Adjusting firefox.desktop inside Libertine container

                              Adjusting Libertine container firefox.desktop located at
                              /home/phablet/.cache/libertine-container/noble/rootfs/usr/share/applications/firefox.desktop
                              could be done manually with terminal command:
                              nano ~/.cache/libertine-container/noble/rootfs/usr/share/applications/firefox.desktop

                              You may also install mousepad in the Libertine container to get a graphical editor. However, copy-paste does not seem to work between windows.

                              There are four lines starting with Exec=:

                              Exec=firefox %u
                              Exec=firefox --new-window %u
                              Exec=firefox --private-window %u
                              Exec=firefox --ProfileManager
                              

                              These four lines starting with Exec= need to be adjusted to something like:

                              Exec=bash -c "GDK_DPI_SCALE=0.6 GDK_BACKEND=x11 firefox %u"
                              Exec=bash -c "GDK_DPI_SCALE=0.6 GDK_BACKEND=x11 firefox --new-window %u"
                              Exec=bash -c "GDK_DPI_SCALE=0.6 GDK_BACKEND=x11 firefox --private-window %u"
                              Exec=bash -c 'GDK_DPI_SCALE=0.6 GDK_BACKEND=x11 firefox --ProfileManager'
                              

                              This could be accomplished with using terminal command sed:

                              sed -i "s|^Exec=firefox %u$|Exec=bash -c \"GDK_DPI_SCALE=0.6 GDK_BACKEND=x11 firefox %u\"|g" /home/phablet/.cache/libertine-container/noble/rootfs/usr/share/applications/firefox.desktop
                              
                              sed -i "s|^Exec=firefox --new-window %u$|Exec=bash -c \"GDK_DPI_SCALE=0.6 GDK_BACKEND=x11 firefox --new-window %u\"|g" /home/phablet/.cache/libertine-container/noble/rootfs/usr/share/applications/firefox.desktop
                              
                              sed -i "s|^Exec=firefox --private-window %u$|Exec=bash -c \"GDK_DPI_SCALE=0.6 GDK_BACKEND=x11 firefox --private-window %u\"|g" /home/phablet/.cache/libertine-container/noble/rootfs/usr/share/applications/firefox.desktop
                              
                              sed -i "s|^Exec=firefox --ProfileManager$|Exec=bash -c 'GDK_DPI_SCALE=0.6 GDK_BACKEND=x11 firefox --ProfileManager'|g" /home/phablet/.cache/libertine-container/noble/rootfs/usr/share/applications/firefox.desktop
                              

                              Change the scaling factor GDK_DPI_SCALE to suit your eyes. Note that on my Fairphone 4 on channel 24.04/daily it seems to require a scaling factor less than 1.0 inside the Libertine container to scale things down. From outside the container, a scaling factor larger than 1.0 had to be used to scale things up.

                              Testing

                              If all went well, you should now be able to set up Firefox with any extensions you prefer.

                              Sample of extensions that seem to do what they are supposed to do to a great extent:

                              • uBlock Origin
                              • NoScript
                              • Privacy Badger
                              • Cookie Autodelete
                              • I still don't care about cookies
                              • Video DownloadHelper (not possible to select other video format than default). Remark: When opening a downloaded media clip with Thunar file manager, Lomiri crashed and closed all open apps.

                              Observations

                              • The mouse pointer becomes huge when hovering Firefox. There should be a way to make the mouse pointer smaller.
                              • Copy-paste does not work well. Not possible to copy and paste from Firefox to mousepad nor into nano. Clipboard looks full at the beginning and clicking on paste greys out clipboard while nothing is pasted.
                              • https://duck.ai works (does not seem to work properly in Morph browser). However, you cannot copy-paste the answers.

                              Having Firefox browser open with several tabs at the same time uses 3.7Gi RAM memory, reports terminal command free -h.

                              1 Reply Last reply Reply Quote 0
                              • M Offline
                                mango
                                last edited by mango

                                Out of curiosity, I tried to get Brave web browser to function properly in desktop mode on my Fairphone 4 channel 24.04/daily.

                                Brave browser (stable version) exists as snap as well as DEB and can be installed both ways. For comparison I installed both types to compare which one worked better on my Fairphone 4.

                                From my testing I concluded that there is no difference in functionality. Both versions do not show the hamburger menu when clicked at the top right corner. The easiest installation was via snap, which took quite some time to complete. The DEB install was quicker and required tinkering with scaling.

                                Brave installation via snap

                                Open a terminal and type:

                                sudo snap install brave

                                Update all snaps with:

                                sudo snap refresh

                                When installation has finished, open Brave browser through Ubuntu Touch main menu or command line: brave

                                To access the settings when hamburger menu is not working, type this in the address field: brave://settings

                                Search for the setting exit and modify a keyboard shortcut (example: Ctrl + Q) to be able to quit the application the same way as you would be able to do using the hamburger menu if it was functional.

                                Brave browser installation in Libertine

                                Install Libertine Tweak Tool from Openstore.

                                Activate lirsh command with Libertine Tweak Tool.

                                On my Fairphone 4, the default container (look at the top of the tweak tool) is set to container name focal. I had to manually change focal to noble. Maybe the Libertine Tweak Tool could do this automatically as an improvement.

                                Open a terminal window and type:

                                lirsh
                                
                                fakeroot
                                
                                curl -fsS https://dl.brave.com/install.sh | sh
                                
                                exit # jump out of fakeroot
                                

                                The brave-browser.desktop did not automatically show up in Ubuntu Touch main menu. After touching folder ~/.local/share/icons/hicolor outside of the Libertine container, it appeared in the Ubuntu Touch main menu.

                                Brave browser in Libertine only seem to honor the Xft.dpi setting in Libertine container ~/.Xdefaults. A one-line-command which sets the scaling would look like (here I use the value 120, you may want another value):

                                # lirsh
                                xrdb -merge <<< "Xft.dpi: 120"; GDK_BACKEND=x11 brave-browser
                                

                                Testing

                                • Chrome web store extension Dark Reader works as intended.
                                • Cookie popup windows do not show.
                                • Unwanted ads are blocked.
                                • duck.ai working.
                                • Copy-paste (actually: Ctrl+C, Ctrl+V) seem to work from Brave browser to emacs (Libertine), firefox (Libertine), but not to mousepad (Libertine), not to Morph browser (qt6). Right-click copy option does not seem to exist.

                                Observations

                                • Copy-paste between different windows is glitchy. Some apps work to paste into, some don't. It seems the clipboard functionality needs an improvement to be solid.
                                • Hamburger menu in top right corner does not open.
                                • The Quit browser function has to be accessed via a custom new keyboard shortcut (I created shortcut: Ctrl + Q). This can be tied to a privacy cleanup to delete browser data in brave://settings on Brave exit. Killing the app with clicking the windows handler x maybe does not trigger the cleanup functionality by Quit at all times.
                                • Having all sorts of windows open with several tabs at the same time uses 3.9Gi RAM memory, reports terminal command free -h.
                                1 Reply Last reply Reply Quote 0
                                • M Offline
                                  mango
                                  last edited by mango

                                  Out of curiosity, I tried to get Linphone-Desktop to function properly in desktop mode on my Fairphone 4 channel 24.04/daily.

                                  Linphone-Desktop

                                  Linphone-Desktop exists in many versions:

                                  • AppImage(s) 4.x.y to 6.x.y, alphas, betas, nightly
                                  • qt5 version(s) 5.x.y
                                  • DEB version(s) 5.x.y to 6.x.y
                                  • qt6 version(s) 6.x.y

                                  The ugliest install is probably the qt6 version straight from the main branch available on gitlab or github. I went for the main branch version in the trial to see if it would work.

                                  Compiling Linphone-Desktop is probably worth an essay by itself, but it is pretty straight forward to set CMAKE options where necessary.

                                  Packaging Linphone-Desktop into an installable DEB is probably worth another essay.

                                  It is also possible to unpack the AppImage version into a Libertine container somewhere like /opt/linphone and adjust LD_LIBRARY_PATH variable to give the executable a chance to find all libraries inside /opt.

                                  When launching from command line, there was a complaint about a missing qt6 module named Suru, but I kept re-launching the same command 3-5 times until Linphone-Desktop launched anyway without Suru module. The successfull Libertine container noble launch command was entered five times like this:

                                  QT_USE_PHYSICAL_DPI=1 QT_SCALE_FACTOR=0.8 GDK_BACKEND=x11 LD_LIBRARY_PATH="/opt/Qt6.10.2/lib:/opt/linphone/lib:$LD_LIBRARY_PATH" /opt/linphone/bin/linphone -V

                                  Remark: Sometimes Linphone-Desktop launches at first or third attempt. Linphone-Desktop should compile with any qt bigger or equal to version 6.10.0 (I used qt6.10.2). The initial launch showed such a tiny text in desktop mode that it was not readable at all. Some tinkering with variables in command line launch made the text bigger and the app more useful.

                                  Testing

                                  • Linphone-Desktop offers encryption of different types, such as PostQuantum ZRTP, which worked.
                                  • Several different sound card options appeared in the settings, of which the Droid soundcard worked.
                                  • Tested encrypted chat message delivery which worked.
                                  • Tested encrypted voice call (SIPS-protocol) with opus codec which worked.
                                  • Video camera did not work. Only static picture could be selected in the settings, which worked and was shown.

                                  Observations

                                  • Earlier versions of Ubuntu Touch have a native Linphone, which I think would be nice to have in noble as well. It may not offer the advanced encryption available in version 6, but still good enough performance compatible with other SIP-softphones.
                                  • Ubuntu Touch noble (24.04) does not have a native Linphone or any other SIP-softphone as far as I am aware.
                                  • On devices that do not meet operator's VoLTE requirements, a SIPS-softphone is an alternative for calls. Signal-Desktop, SignalUT is another voice calling option. Matrix.org yet another calling option.
                                  • I was not expecting Linphone-Desktop version 6 to work on Ubuntu Touch noble as well as it performed. Sound quality was good and chats were delivered as expected. Some icons were too large, but visible.
                                  • Wired external display functionality (USB3.0 display out) seems to be a more than neccessary feature of a device that for the moment requires desktop mode to show windows which are too large for a mobile screen dimension.
                                  • It should in theory be possible to port the Android version of Linphone to Ubuntu Touch, given that Linphone-Desktop works out of the box more or less. Maybe the developers of Linphone would be interested in helping out with that.
                                  • Since apps scale differently in Ubuntu Touch and Libertine, it is probably necessary to start off by selecting a Xft.dpi setting that suits most apps that do not honour any other gtk scaling variables. Linphone-Desktop and Brave are two such apps that are difficult to scale properly and should indicate proper value of Xft.dpi. I have come to an understanding that for Fairphone 4, Xft.dpi: 120 could be a good starting point for experimentation. The default Xft.dpi: 197 is probably too high scaling for Fairphone 4 in most of the test cases available on this page. If this has to do with the resolution and size of the screen itself, I do not know at this stage.
                                  • Having all kinds of windows open together with Linphone-Desktop uses 4.2 GiB RAM memory reports free -h.
                                  1 Reply Last reply Reply Quote 0
                                  • M Offline
                                    mango
                                    last edited by mango

                                    Emacs

                                    Emacs: an editor for text and code with infinite adaptation possibilities

                                    I have been using Emacs extensively on Ubuntu Touch as text and code editor.

                                    I only got Emacs to work inside a Libertine container, since Emacs cannot find its libraries otherwise.

                                    Emacs can be adapted in the same way as Firefox inside Libertine container to scale well.

                                    The only issues I have seen with Emacs so far is that the menus do not show one out of three times.

                                    Keyboard shortcuts, Ctrl, Meta (usually the Alt key left from space bar) and Lisp functions cover all the needs of reformating text. MELPA is a repository with lots of add-ons to deal with things like beautifying html and css code, viewing EPUBs and playing games. When using linux, Emacs is probably one of the tools which is good to know about and use. Of course there are other tools which are equally good. I invite readers to share their view on which tools that are best to use as editors in Ubuntu Touch.

                                    Install Emacs in Libertine

                                    lirsh
                                    
                                    fakeroot
                                    
                                    apt-get update
                                    
                                    apt-get install emacs
                                    

                                    Adjust the emacs.desktop line that starts with Exec= to suit your eyes. I currently use these lines with default Xft.dpi: 197 setting:

                                    # TryExec=/usr/bin/emacs
                                    TryExec=bash -c 'GDK_DPI_SCALE=0.6 GDK_BACKEND=x11 /usr/bin/emacs'
                                    # Exec=/usr/bin/emacs %F
                                    Exec=bash -c "GDK_DPI_SCALE=0.6 GDK_BACKEND=x11 /usr/bin/emacs %F"
                                    
                                    1 Reply Last reply Reply Quote 0
                                    • M Offline
                                      mango
                                      last edited by mango

                                      Since testing out core software is exciting, let's look at how LibreOffice can be installed.

                                      Installing LibreOffice in Libertine

                                      LibreOffice can be installed with terminal command: sudo snap install libreoffice .

                                      Let's do a PPA install of LibreOffice-fresh inside Libertine for a change. Chances that someone working with LibreOffice development is also using Ubuntu Touch is probably greater than zero. Any adaptations are likely to be seen on the fresh PPA, rather than the stable PPA.

                                      We need command add-apt-repository command from package software-properties-common. We also need Libertine Tweak Tool from Openstore where we need to activate lirsh in our Libertine noble container. Once that is done, open terminal and enter these commands:

                                      lirsh # to enter the Libertine noble container
                                      
                                      fakeroot
                                      
                                      apt-get update                                                                         
                                      
                                      apt-get upgrade                                                                        
                                      
                                      apt-get install software-properties-common
                                      

                                      Check that there are no missing packages and that everything is installed before you continue. If needed, install the missing packages manually or use:

                                      apt-get upgrade --fix-missing

                                      The LibreOffice-fresh PPA is installed as follows:

                                      add-apt-repository ppa:libreoffice/ppa
                                      
                                      apt-get update
                                      
                                      apt-get install libreoffice
                                      
                                      exit # jump out of fakeroot
                                      
                                      exit # jump out of lirsh
                                      

                                      Since I came to the conclusion that Xft.dpi: 120 is a good starting point for experimentation in Libertine container noble on a Fairphone 4, let's edit file .Xdefaults located here (it is the same file):

                                      # outside of lirsh
                                      find / -name .Xdefaults 2>/dev/null
                                      Output:
                                      /userdata/user-data/phablet/.local/share/libertine-container/user-data/noble/.Xdefaults
                                      /home/phablet/.local/share/libertine-container/user-data/noble/.Xdefaults
                                      
                                      
                                      cat /home/phablet/.local/share/libertine-container/user-data/noble/.Xdefaults
                                      Output:
                                      # default: Xft.dpi:197
                                      Xft.dpi: 120
                                      xterm*faceName: DejaVu Sans Mono
                                      xterm*faceSize: 10
                                      
                                      
                                      # Inside Libertine container
                                      lirsh
                                      cat ~/.Xdefaults
                                      

                                      Setting Xft.dpi: 120 means that we will need to change the scaling of all the other apps in Libertine container that we set up earlier with the help of command sed. Here I put the scaling to 1.0 to remove any extra scaling but you may want another value for some apps.

                                      sed -i "s|GDK_DPI_SCALE=0.6|GDK_DPI_SCALE=1.0|g" /usr/share/applications/emacs.desktop
                                      
                                      sed -i "s|GDK_DPI_SCALE=0.6|GDK_DPI_SCALE=1.0|g" /usr/share/applications/thunderbird.desktop 
                                      
                                      sed -i "s|GDK_DPI_SCALE=0.6|GDK_DPI_SCALE=1.0|g" /usr/share/applications/firefox.desktop 
                                      
                                      sed -i "s|GDK_DPI_SCALE=0.6|GDK_DPI_SCALE=1.0|g" /usr/share/applications/brave-browser.desktop
                                      
                                      exit # jump out of lirsh
                                      
                                      if [ -d /home/phablet/.local/share/icons/hicolor ]; then
                                        touch /home/phablet/.local/share/icons/hicolor
                                      else
                                        mkdir -p /home/phablet/.local/share/icons/hicolor/scalable/apps
                                        wget -O /home/phablet/.local/share/icons/hicolor/index.theme https://github.com/matthewbauer/appstream-generator/raw/refs/heads/master/data/hicolor-theme-index.theme
                                      fi
                                      

                                      Now LibreOffice-fresh icons should be visible in Ubuntu Touch main menu.

                                      The amazing part is that this fresh version of LibreOffice works flawlessly in Ubuntu Touch Libertine container, apart from the well known issue of copy paste not working between browswer(s) and other windows.

                                      To illustrate that it works also with python3 scripting using uno, the following python3 test script makes libreoffice produce a sample document with a square paper size 10x10cm with some text on it, saves it as ODT and as PDF in the same directory as the script itself. The pdf document can be opened with atril document viewer. Another option would be to install evince document viewer.

                                      lirsh
                                      
                                      fakeroot
                                      
                                      apt-get update
                                      
                                      apt-get install atril # or: evince
                                      
                                      exit # jump out of fakeroot
                                      

                                      Testing

                                      #!/usr/bin/env python3
                                      """
                                      File name: create10x10.py
                                      Create a 10 × 10 cm LibreOffice Writer document, add a heading and Lorem Ipsum,
                                      save as ODT and PDF. The script starts LibreOffice head‑less automatically.
                                      """
                                      
                                      import os, sys, time, subprocess, socket, uno
                                      from com.sun.star.beans import PropertyValue
                                      from com.sun.star.text.ControlCharacter import PARAGRAPH_BREAK
                                      
                                      HOST = "127.0.0.1"
                                      PORT = 2002
                                      SOCKET_URL = f"uno:socket,host={HOST},port={PORT};urp;StarOffice.ComponentContext"
                                      LIBREOFFICE_CMD = [
                                          "soffice",
                                          "--headless",
                                          f'--accept=socket,host={HOST},port={PORT};urp;StarOffice.ComponentContext',
                                      ]
                                      
                                      def _props(**kw):
                                          return tuple(PropertyValue(Name=k, Value=v) for k, v in kw.items())
                                      
                                      def _socket_open(host, port):
                                          with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
                                              s.settimeout(0.5)
                                              try:
                                                  s.connect((host, port))
                                                  return True
                                              except (ConnectionRefusedError, socket.timeout):
                                                  return False
                                      
                                      def _start_lo():
                                          print("Starting LibreOffice head‑less...")
                                          proc = subprocess.Popen(
                                              LIBREOFFICE_CMD,
                                              stdout=subprocess.DEVNULL,
                                              stderr=subprocess.DEVNULL,
                                          )
                                          for _ in range(10):
                                              if _socket_open(HOST, PORT):
                                                  break
                                              time.sleep(0.5)
                                          else:
                                              proc.terminate()
                                              raise RuntimeError("LibreOffice did not open the UNO socket in time.")
                                          print("LibreOffice ready.")
                                          return proc
                                      
                                      def main(out_dir="."):
                                          lo_proc = None
                                          if not _socket_open(HOST, PORT):
                                              lo_proc = _start_lo()
                                          else:
                                              print("Found existing LibreOffice UNO socket.")
                                      
                                          # Connect to UNO
                                          local_ctx = uno.getComponentContext()
                                          resolver = local_ctx.ServiceManager.createInstanceWithContext(
                                              "com.sun.star.bridge.UnoUrlResolver", local_ctx
                                          )
                                          ctx = resolver.resolve(SOCKET_URL)
                                          smgr = ctx.ServiceManager
                                      
                                          desktop = smgr.createInstanceWithContext("com.sun.star.frame.Desktop", ctx)
                                          doc = desktop.loadComponentFromURL("private:factory/swriter", "_blank", 0, ())
                                      
                                          # ---- Page size (language‑independent) ----
                                          page_styles = doc.getStyleFamilies().getByName("PageStyles")
                                          page_style = page_styles.getByIndex(0)          # first page style = default
                                          cm_to_hundredths = lambda cm: int(cm * 1000)    # 1 cm = 10 mm = 100 hundredths of mm
                                          page_style.Width  = cm_to_hundredths(10)
                                          page_style.Height = cm_to_hundredths(10)
                                      
                                          # ---- Insert heading (Heading 1 style) ----
                                          cursor = doc.Text.createTextCursor()
                                          cursor.ParaStyleName = "Heading 1"
                                          doc.Text.insertString(cursor, "Sample Heading", False)
                                          doc.Text.insertControlCharacter(cursor, PARAGRAPH_BREAK, False)
                                      
                                          # ---- Insert Lorem Ipsum as body text ----
                                          cursor.ParaStyleName = "Standard"
                                          lorem = (
                                              "Lorem ipsum dolor sit amet, consectetur adipiscing elit. "
                                              "Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. "
                                              "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris "
                                              "nisi ut aliquip ex ea commodo consequat."
                                          )
                                          doc.Text.insertString(cursor, lorem, False)
                                      
                                          # ---- Save ODT ----
                                          odt_path = os.path.abspath(os.path.join(out_dir, "sample.odt"))
                                          doc.storeToURL(uno.systemPathToFileUrl(odt_path), _props(FilterName="writer8"))
                                      
                                          # ---- Export PDF ----
                                          pdf_path = os.path.abspath(os.path.join(out_dir, "sample.pdf"))
                                          doc.storeToURL(uno.systemPathToFileUrl(pdf_path), _props(FilterName="writer_pdf_Export"))
                                      
                                          doc.close(True)
                                          print(f"Created: {odt_path}")
                                          print(f"Exported: {pdf_path}")
                                      
                                          if lo_proc:
                                              lo_proc.terminate()
                                              lo_proc.wait()
                                      
                                      if __name__ == "__main__":
                                          main(sys.argv[1] if len(sys.argv) > 1 else ".")
                                      

                                      To run the test, you can do it in two ways:

                                      a. Either run the script with python3: python3 create10x10.py
                                      or
                                      b. Make the script executable: chmod +x create10x10.py; ./create10x10.py

                                      Observations

                                      • Copy-paste functionality is glitchy. I haven't figured out how to copy selected text from a web browser (Morph qt6, firefox, brave) into LibreOffice (snap, PPA).
                                      • I noticed fewer issues with LibreOffice-fresh from PPA than with snap.
                                      • It is possible to use LibreOffice scripting functionality.
                                      1 Reply Last reply Reply Quote 0
                                      • M Offline
                                        mango
                                        last edited by

                                        There is a PPA for the new gimp3 which you can test in Libertine container.

                                        gimp3

                                        gimp is a great image manipulation tool. gimp version 3 seems to only exist in PPA for noble (24.04) and you may want to compare it with the snap version which is installed with sudo snap install gimp.

                                        lirsh
                                        
                                        fakeroot
                                        
                                        add-apt-repository ppa:ubuntuhandbook1/gimp-3
                                        
                                        apt install gimp libgegl-0.4-0t64 libbabl-0.1-0
                                        
                                        exit # jump out of fakeroot
                                        
                                        exit # jump out of lirsh
                                        
                                        if [ -d /home/phablet/.local/share/icons/hicolor ]; then
                                          touch /home/phablet/.local/share/icons/hicolor
                                        else
                                          mkdir -p /home/phablet/.local/share/icons/hicolor/scalable/apps
                                          wget -O /home/phablet/.local/share/icons/hicolor/index.theme https://github.com/matthewbauer/appstream-generator/raw/refs/heads/master/data/hicolor-theme-index.theme
                                        fi
                                        

                                        Now gimp3 icon should be visible in Ubuntu Touch main menu.

                                        1 Reply Last reply Reply Quote 0
                                        • M Offline
                                          mango
                                          last edited by

                                          Scribus in Libertine

                                          Scribus is written in qt, which means we can reuse the knowledge above from installing Linphone-Desktop.

                                          To install scribus in libertine container, do the following:

                                          lirsh
                                          
                                          fakeroot
                                          
                                          apt-get update
                                          
                                          apt-get install scribus
                                          
                                          exit # jump out of fakeroot
                                          
                                          # Adjust scaling
                                          sed -i "s|^Exec=scribus %f$|Exec=bash -c \"QT_USE_PHYSICAL_DPI=1 QT_SCALE_FACTOR=1.5 GDK_BACKEND=x11 scribus %f\"|g" /usr/share/applications/scribus.desktop
                                          
                                          exit # jump out of lirsh
                                          
                                          if [ -d /home/phablet/.local/share/icons/hicolor ]; then
                                            touch /home/phablet/.local/share/icons/hicolor
                                          else
                                            mkdir -p /home/phablet/.local/share/icons/hicolor/scalable/apps
                                            wget -O /home/phablet/.local/share/icons/hicolor/index.theme https://github.com/matthewbauer/appstream-generator/raw/refs/heads/master/data/hicolor-theme-index.theme
                                          fi
                                          

                                          Now, scribus should be visible in Ubuntu Touch main menu.

                                          Testing

                                          • I created a pdf from the layout, which worked and showed in atril document viewer.
                                          1 Reply Last reply Reply Quote 0
                                          • M Offline
                                            mango
                                            last edited by mango

                                            vlc

                                            vlc is a good media player that can show subtitles.

                                            To install vlc, there is nothing more needed than:

                                            lirsh
                                            
                                            fakeroot
                                            
                                            apt-get update
                                            
                                            apt-get install vlc
                                            
                                            exit # jump out of fakeroot
                                            
                                            exit # jump out of lirsh
                                            
                                            if [ -d /home/phablet/.local/share/icons/hicolor ]; then
                                              touch /home/phablet/.local/share/icons/hicolor
                                            else
                                              mkdir -p /home/phablet/.local/share/icons/hicolor/scalable/apps
                                              wget -O /home/phablet/.local/share/icons/hicolor/index.theme https://github.com/matthewbauer/appstream-generator/raw/refs/heads/master/data/hicolor-theme-index.theme
                                            fi
                                            

                                            Observations

                                            • You may need to resize the window to show the whole video.
                                            1 Reply Last reply Reply Quote 0

                                            Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                            Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                            With your input, this post could be even better 💗

                                            Register Login
                                            • First post
                                              Last post