Unity Operating System

bunchberry
11 min readMay 14, 2024

--

Recently, I have been playing around with the UnionTech Unity Operating System (UOS), an operating system that, in the western world, is largely unknown. It is based on the Deepin operating system and comes in four flavors: the “server” edition, the “home” edition, the “professional” edition, and the “education” edition. Only the home edition is meant for regular individual users, and sadly this seems to have stopped receiving major updates since last year, however the last version is still available from this link. This post is mainly just for people who want to tinker around with it.

Change System Language

By default, it is in Chinese, but you can change it to English in the section of the settings menu shown below. You have to press the circular plus button and add the language, and then it will take a bit for it to complete. When you receive the notification that it completed, you can just reboot.

Activation

By default, the system won’t be activated and will be in a free trial mode. Activating requires both a UOS account which you can make on the ChinaUOS.com website, and a WeChat account. You will need to connect your UOS account to your machine in the “UOS ID” section of the settings menu which first requires you to scan a QR code with WeChat, and then you can sign in using your email and username you signed up for on the ChinaUOS website.

Once you link the accounts, you can activate it in the “System Info” section of the settings menu. I don’t recommend doing this in a virtual machine. Just use the free trial in a virtual machine. A linked account gets a free activation, I wouldn’t waste that on a virtual machine. If you run out of free activations you will have to pay.

Rooting

By default, UOS is not rooted. The “sudo” command will not work. To root it, you have to first connect your UOS account as described in the previous section, and then go to “General Settings” then “Developer Mode” in the settings. Enabling developer mode will require a reboot, but afterwards you will have a rooted operating system.

Kernel Upgrade

The kernel that ships with UOS is pretty outdated, only version 5.10. Interestingly, the professional edition has an even more outdated kernel, 4.19. This makes it difficult to use with modern hardware as, in my experience, a lot of modern motherboards require at least 5.15 for things like WiFi and Bluetooth to work.

Since UOS is Deepin based, it is possible to install the Deepin 5.17 kernel from the link here. The two files you need are the ones listed below. You can install them by using “sudo apt install ./package-name”. In my experience, you do get some errors installing these, but if you reboot it will indeed boot with the 5.17 kernel, which I found was necessary to get UOS to work on my more modern PC.

  • linux-headers-5.17.3-amd64-desktop_5.17.3-amd64-desktop-1_amd64.deb
  • linux-image-5.17.3-amd64-desktop_5.17.3-amd64-desktop-1_amd64.deb

Android Apps

It is possible to install Android apps using UEngine. This will convert the apps to a “.deb” package which you can install using the “sudo apt install ./package-name” method mentioned before. I find this works decently well, but doesn’t seem to support Google account integration, meaning a lot of apps that connect to your Google account won’t work. Other software that either doesn’t require an account or lets you use a non-Google account (such as HelloChinese that lets you create an account with them with whatever personal email you want) tend to work better.

Grand Search

I would highly recommend going to the Shortcuts menu and changing the “Grand Search” keyboard shortcut. By default, it is Shift+Space, and I find myself constantly hitting this on accident while typing and getting a search bar appearing. I changed it to Ctrl+PgDown.

Annoyingly, the Android apps are kinda small, so I also installed VMG and mapped it to Shift+PgDown so that you can easily open a magnifying glass to look at the small apps, but that’s not a great solution as the moment you click something the magnifying glass goes away. If anyone knows a better solution that can magnify something and also allow you to interact with it through the magnified window, please let me know.

Steam

I had given up trying to get Steam from the UOS app store to actually work. If you have an NVIDIA graphics card, it will fail to install the libGL:i386 library. If you try to install it manually, it breaks the NVIDIA drives and the machine will only boot to a black screen. There is a comment saying this has been fixed in later versions, but I find these versions are only accessible in the latest beta of Deepin, and even then, when you successfully install the library and run Steam, the moment you actually try to run a game the game will crash.

However, I have had success getting Steam games to work, even with Proton. To do this, I installed the Flatpak version of Steam. UOS does not have a high enough version of Flatpak to actually install Steam, so you have to compile Flatpak from source. I actually managed to compile the very latest version at the time of writing. Compiling it requires also compiling and running this version of libostree. Below are the packages I needed to install to get them to build.

sudo apt update && sudo apt upgrade
sudo apt install \
steam-devices \
libglib2.0-dev \
liblzma-dev \
libext2fs-dev \
libcurl4-gnutls-dev \
libsoup2.4-dev \
libgpgme-dev \
libfuse-dev \
libcap-dev \
libarchive-dev \
libpolkit-agent-1-dev \
libjson-glib-dev \
libappstream-dev \
libgdk-pixbuf2.0-dev \
libseccomp-dev \
libdconf-dev \
libsystemd-dev \
libzstd-dev \
xsltproc
sudo apt autoremove

It’s very important to run the “autoremove” because otherwise you will get conflicting packages that will prevent Flatpak from starting. Below are also the configuration commands I used for libostree and flatpak.

#libostree
./configure --with-curl --with-soup
#flatpak
./configure --disable-documentation

When you install the “steam-devices” with the commands shown above, it will also add Steam to your system, but this version of Steam is the one from app store. If you run it, it will not work. You have to install Steam using flatpak then run it with the command below.

flatpak run com.valvesoftware.Steam

Note that after you “make install” Flatpak, it is important to reboot the computer. If you do not reboot the computer after installing Flatpak, it will not launch a service necessary for it to actually work, and thus Steam will not work. This is fixed merely by rebooting the computer.

Sadly, the “nvidia-settings” panel is not installable without also breaking the drivers. However, you can adjust settings manually just by creating a “20-nvidia.conf” file inside of the “/etc/X11/xorg.conf.d/” directory. You can enable TripleBuffer which seems to help a bit with screen tearing issues (I think?).

Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "NVIDIA GeForce RTX 3080 Ti"
Option "TripleBuffer" "true"
#Option "ForceFullCompositionPipeline" "1"
EndSection

Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
EndSection

You will notice I also commented out the option to ForceFullCompositionPipeline. This is a well-known setting for fixing screen tearing issues on Linux if you encounter them, however, it comes at the cost of GPU performance, and on my system seems to slow down games to be unplayably slow. For that reason, I commented it out, but you can uncomment it to give it a try if the first option isn’t working for you.

Desktop Icons

Given the Steam in the search bar will be the wrong Steam, you might want to create a desktop icon for the “correct” Steam. The same is true for Firefox. I don’t like to use Firefox from repositories because they tend to be out of date. It is better to just download it from Firefox’s website and extract it to /opt folder and create a desktop icon to launch it.

These desktop icons are just “.desktop” files in the “~/Desktop” folder. Below are two of them, the first one being the one I use for Steam, and the second one being the one I use for Firefox. You can just name these files “steam.desktop” and “firefox.desktop” respectively. If for some reason the icon names don’t work for you, you can also just set the icon to be an absolute path to a PNG file and it will also work.

[Desktop Entry]
Categories=System;
Comment=Open Steam.
Exec=flatpak run com.valvesoftware.Steam
GenericName=Open Steam.
Icon=steam
Name=Steam
OnlyShowIn=Deepin;
Terminal=false
Type=Application
[Desktop Entry]
Categories=System;
Comment=Open Firefox.
Exec=/opt/firefox/firefox
GenericName=Open Firefox.
Icon=firefox
Name=Firefox
OnlyShowIn=Deepin;
Terminal=false
Type=Application

Steam desktop icons don’t work by default with Flatpak Steam, however, below is a script I made that will export all the Steam icons for your games to whatever folder you run it in. For example, if you change the current directory to the desktop and run it, it will add all your Flatpak Steam icons to the desktop. For it to work, apps must either have a 128x128 PNG desktop icon, or a 32x32 PNG desktop icon where if the latter is found but not the former, it will resize the latter to the former.

#!/bin/sh
iconpath="$HOME/.var/app/com.valvesoftware.Steam/.local/share/icons/hicolor/128x128/apps"
shctpath="$HOME/.var/app/com.valvesoftware.Steam/Desktop"
iconpath=$(echo "$iconpath" | sed 's/\//\\\//g')
tmpdir=$(mktemp -d)
cp $shctpath/* $tmpdir

for i in $tmpdir/*
do
bn=$(basename "$i")
cat "$i" | \
sed -E 's/Icon\=steam\_icon\_([0-9]*)/Icon\='$iconpath'\/steam_icon_\1\.png/' | \
sed -E 's/Exec\=steam/Exec\=flatpak run com\.valvesoftware\.Steam/' \
> "$bn"
fn=$(cat "$bn" | grep -E 'Icon.*steam_icon' | sed 's/Icon\=//')
fn32=$(echo "$fn" | sed 's/128x128/32x32/')
if [ "$fn" != "" ]
then
if [ ! -f "$fn" ]
then
if [ ! -f "$fn32" ]
then
echo "Warning: Icon not found."
echo '> '"$fn"
else
convert "$fn32" -filter point -resize 128x128 "$fn"
fi
fi
fi
done
rm -r $tmpdir

echo '
[Desktop Entry]
Categories=System;
Comment=Open Steam.
Exec=flatpak run com.valvesoftware.Steam
GenericName=Open Steam.
Icon=steam
Name=Steam
OnlyShowIn=Deepin;
Terminal=false
Type=Application
' > steam.desktop

Smartphone Integration

There is a UOS app which you can use to integrate your smartphone with your PC. All this really does is allow you to scan a QR code which will connect your PC and your phone together with a file manager so you can easily transfer files between them. It is found in the file manage by clicking “My Phone” at the bottom. Personally, I do find this rather useful and a neat feature in the operating system.

Deepin Album Bug

There seemed to be a weird issue in my install that the Deepin Album would always say it needed an update but would fail to update. The reasoning seems to be an issue with it needing a new version of a library but the repositories not providing that library, and I cannot find anywhere to get a later version of said library.

A simple solution I found is that, well, even though it says it needs a new version of that library, it doesn’t really need it. Something I learned on Debian awhile ago when trying to get XFCE4 working on the WiiU is that it is possible to trick the operating system into thinking packages are different versions than they actually are, allowing you to bypass certain checks preventing you from installing things.

This is generally bad practice as if an application does make use of a later feature of a package, you will end up with an unstable system where things just crash at runtime. However, in my experience, quite often packages will say they need a later version of a library yet if I force them to install with an older version, I get no issues at all. Sometimes the minimum version is just set to whatever the developers built with and they did not even bother to check if it ran with older versions of the library.

Usually, to do this on Debian, rather than using “app install,” you use “app download.” This will download the package as a “.deb” file you can then modify to change its version. However, for some reason, it tries to pull in the source code with it, which you don’t need, and in this case they don’t even offer the source code in the repositories. While this usually works, in this very specific instance, it will give an error.

Instead, what you have to do is uninstall the package (libimageeditor) and keep note of anything else on your system it also removes, as you will want to reinstall that later. Then, you want to cache the package using “apt -d install” which will download the package to a cache rather than installing to the system. You can then find the “.deb” package inside of “/var/cache/apt/archives” and then can move it out of there to your working directory.

Then, you will want to extract the package to a temporary folder, modify the “DEBIAN/conf” file to change the version, and then repackage it to the new package with a higher version and install that package using “apt install ./packagename”. Since this is a lot of steps, below is a single script that will create the updated package for you. You must use “sudo bash” before running the script as all the commands expect elevated privileges. Also, again, remember that you need to uninstall libimageeditor first.

#run this program in a sudo terminal
echo y | apt -d install libimageeditor
mv /var/cache/apt/archives/libimageeditor_1.0.21-1_amd64.deb .
rm -rf tmp/ && mkdir -p tmp/
dpkg-deb -R libimageeditor_1.0.21-1_amd64.deb tmp/
cat tmp/DEBIAN/control | sed 's/1\.0\.21-1/1\.0\.29-1/' > .tmp
mv .tmp tmp/DEBIAN/control
dpkg-deb -b tmp/ libimageeditor_1.0.29-1_amd64.deb
rm -rf tmp/ libimageeditor_1.0.21-1_amd64.deb

Now, if you install this package, you will be able to upgrade to the latest version of deepin-album without errors. It may be possible, for a more “proper” solution, to get libimageeditor v1.0.39 working from the Deepin pool here. This will fail to install, however, because of several outdated packages, so you would need to also update those packages, and I currently cannot find where to locate them.

Other Apps

Private Internet Access for a VPN worked fine for me, no issues. My software I use for work, VMWare Horizon Client, also worked nicely without issues. The app store has a lot of other useful apps I use a lot such as OBS, GIMP, Shotcut, VirtualBox, and VSCode. While UOS AI is not supported as this is only available on the latest versions of UOS through the Professional edition, this is really just a tool to integrate an AI. You can use other apps for AI integration, such as VSCode+AI-Genie for ChatGPT integration.

Since it is a Chinese operating system, there are some nice convenient apps for that. There is a WeChat app and a Bilibili app. There’s also various other apps for Chinese services, but most Chinese software is locked down behind a Chinese phone number which is not possible to acquire overseas, so I cannot try them to test them out. It also has built-in the ability to switch between typing Chinese with Pinyin and typing English characters as normal just by using Ctrl+Space to switch between them.

--

--

bunchberry

Professional software developer (B.S CompSci), quantum computing enthusiast.