How To

Install Deepin Desktop (DDE) on Ubuntu 24.04 and Linux Mint 22

Deepin’s desktop still installs on Linux Mint 22 from a third-party PPA, and it still boots into a real session with the compositor, the wallpaper and the file manager all working. What you do not get is a usable dock or an application launcher. That gap is not a misconfiguration on your side, it comes from four separate defects in the packaging, three of which have a fix and one of which does not.

Original content from computingforgeeks.com - post 8140

This guide covers installing Deepin Desktop Environment (DDE) on Ubuntu and Linux Mint through the UbuntuDDE PPA: which releases the PPA actually publishes for, the exact package set it pulls in, the errors you will hit on a clean machine and what each one means, why the same commands fail outright on Ubuntu 26.04, and how to get the Deepin applications without the desktop session if that is all you wanted. Every command below, including the teardown at the end, was run on Linux Mint 22.3 and Ubuntu 26.04 in August 2026.

What the UbuntuDDE PPA gives you today

The UbuntuDDE project and the UbuntuDDE PPA are in two different states, and conflating them is what makes most guides on this topic wrong. The project’s download page offers exactly two images, a 23.04 remix and a 22.04 remix. The 23.04 build is an interim release that stopped getting security updates in January 2024, so the distribution itself is finished.

The PPA is a different story. It still carries a complete desktop stack, its newest binaries were published in mid-2025, and it covers a release that shipped long after the last ISO did, which is why the packages are worth looking at even though the distribution is not. None of that requires you to install anything to verify. Ask the archive directly for each release codename:

for d in focal jammy lunar noble resolute; do
  printf "%-9s " "$d"
  curl -s -o /dev/null -w '%{http_code}\n' \
    "https://ppa.launchpadcontent.net/ubuntudde-dev/stable/ubuntu/dists/$d/Release"
done

Four suites answer, and the newest LTS does not:

focal     200
jammy     200
lunar     200
noble     200
resolute  404

That single 404 decides everything else in this article. noble is the Ubuntu 24.04 series, and it is also the package base for Linux Mint 22.x, so both of those get a real desktop. resolute is Ubuntu 26.04, and there is nothing published for it at all.

Counting the packages in each suite tells you which one to trust, and it is not the one most guides point at:

for d in focal jammy lunar noble; do
  printf "%-8s " "$d"
  curl -s "https://ppa.launchpadcontent.net/ubuntudde-dev/stable/ubuntu/dists/$d/main/binary-amd64/Packages.gz" \
    | gunzip | grep -c '^Package:'
done

The counts come out as 127, 134, 186 and 168:

focal    127
jammy    134
lunar    186
noble    168

The largest suite is lunar, which is the release the final ISO was built from, and its index has not been touched since August 2023. noble is eighteen packages smaller but is the only one updated in the last two years, which makes it the current one rather than the biggest one. That distinction matters if you go looking for advice: most of what is written about this PPA describes lunar. The upload history is public on the UbuntuDDE stable PPA page if you want to check which packages last changed and when.

Check your release codename before anything else

Mint reports its own codename, not Ubuntu’s, and the PPA is keyed on Ubuntu’s. On Mint the two live in different files, so read both:

grep -E 'VERSION_CODENAME|UBUNTU_CODENAME' /etc/os-release

On a Mint 22.3 desktop that prints its own name first and the Ubuntu base second:

VERSION_CODENAME=zena
UBUNTU_CODENAME=noble

The value that matters is the second one. If UBUNTU_CODENAME says noble, the rest of this guide applies. If it says resolute, skip to the section on Ubuntu 26.04, because the install will fail and it is worth understanding why before you try. Mint users who are not sure which release they are on can confirm from the Linux Mint installation walkthrough, and anyone still weighing the two bases will find the Ubuntu and Linux Mint comparison useful before committing to either.

Add the UbuntuDDE PPA

On Mint, add-apt-repository is not the tool you think it is. It belongs to mintsources, not to software-properties-common, and it is a different implementation with different behaviour. Confirm which one you have:

dpkg -S $(which add-apt-repository)

On Mint the answer is the Mint package, on Ubuntu it is the standard one:

mintsources: /usr/bin/add-apt-repository

This matters because plenty of older guides warn that Mint will write its own codename into the sources file and break the repository. On Mint 22.3 that warning is out of date. Its add-apt-repository resolves the Ubuntu base correctly. Add the repository:

sudo add-apt-repository -y ppa:ubuntudde-dev/stable

Then read back what it actually wrote, because this is the step most likely to leave you with a silently broken repository:

cat /etc/apt/sources.list.d/*ubuntudde*

The filename and the suite both say noble, not zena, which is what you want:

deb [signed-by=/etc/apt/keyrings/ubuntudde-dev-stable-noble.gpg] https://ppa.launchpadcontent.net/ubuntudde-dev/stable/ubuntu noble main

Error: “Cannot add PPA: Failed to download the PPA: HTTPSConnectionPool(host=’launchpad.net’, port=443): Read timed out”

Run the command again. Mint’s add-apt-repository queries the Launchpad web API with a 10 second read timeout before it writes anything, and that call fails intermittently. Three consecutive runs on the same machine and the same connection produced one failure and two successes, so this is flakiness in the API call rather than a problem with your network or with the PPA. Nothing is written when it fails, so a retry is safe and does not leave a half-added repository behind. If you want the general background on how these repositories are wired up, the add-apt-repository guide covers the tooling on both Ubuntu and Debian.

Install the Deepin desktop session

The metapackage that pulls in the session is ubuntudde-dde. Refresh the index and install it:

sudo apt update
sudo apt install ubuntudde-dde

Read the transaction summary before you accept it. This is a large install and it also takes something away:

12 upgraded, 386 newly installed, 1 to remove and 454 not upgraded.
Need to get 927 MB of archives.
After this operation, 2,215 MB of additional disk space will be used.

On the test machine that moved the installed package count from 1,898 to 2,283 and root filesystem usage from 12 GB to 15 GB. Budget three gigabytes of free space rather than the 2.2 GB apt quotes, because the downloaded archives need somewhere to live first.

Two things in that summary deserve attention. The metapackage declares Conflicts: plasma-desktop, which does not mean the install fails on a KDE machine, it means apt resolves the clash by taking one side out, and which side depends on which way you are going. Installing Plasma onto a finished Deepin system offers to remove ubuntudde-dde, leaving Plasma on top of orphaned Deepin packages with no metapackage left to uninstall them by. Going the other way, on Kubuntu or any full Plasma install, apt offers to remove plasma-desktop and whatever depends on it, which is a much more destructive trade and worth reading the prompt carefully before accepting. Install one or the other, not both. The second thing worth understanding is the single removal in that summary.

Why the install removes power-profiles-daemon

The package apt drops is power-profiles-daemon, which is what the Mint and Ubuntu power settings use to switch between balanced and power-saver modes. No Deepin package declares a conflict with it. It goes because of a package Deepin merely recommends, and the relationship type is the whole story here:

apt-cache show dde-daemon | grep -E '^(Depends|Recommends):'
apt-cache show power-profiles-daemon | grep -m1 '^Conflicts'

The package that pulls in the old power stack is only recommended, and the collision is on the other side:

Recommends: iio-sensor-proxy, laptop-mode-tools, proxychains4
Conflicts: laptop-mode-tools, tlp

Apt installs recommended packages by default, so laptop-mode-tools comes in with dde-daemon, and power-profiles-daemon cannot coexist with it. Apt breaks the tie by removing the one nothing is asking for. Worth knowing that apt-cache rdepends --installed laptop-mode-tools prints dde-daemon under a heading that reads “Reverse Depends”, without telling you the relationship is a recommendation, which makes this look like a hard requirement when it is not.

Afterwards the package sits in the rc state and its unit is gone entirely:

dpkg -l power-profiles-daemon | tail -1
systemctl status power-profiles-daemon

Note the leading rc, which means removed with config files left behind, and the missing unit:

rc  power-profiles-daemon 0.21-1ubuntu1 amd64        Makes power profiles handling available over D-Bus.
Unit power-profiles-daemon.service could not be found.

On a laptop that is a real regression, because the power mode selector in your existing Cinnamon or GNOME settings loses its backend. Because the dependency was only a recommendation, you can undo it immediately and keep the whole Deepin stack:

sudo apt install power-profiles-daemon
powerprofilesctl get

That trades laptop-mode-tools back out for power-profiles-daemon and leaves every Deepin package in place, because dropping a recommended package does not break dde-daemon. powerprofilesctl get is the better check of the two, since it answers with the profile actually in force rather than just whether a unit is loaded. To avoid the swap entirely, install the desktop with recommendations turned off:

sudo apt install --no-install-recommends ubuntudde-dde

That keeps your power daemon from the start, at the cost of a thinner install that you may have to fill in by hand later.

Install dde-shell, which the metapackage leaves out

If you log out now and pick the Deepin session, you get a wallpaper and nothing else. The reason is a dependency the metapackage never declares.

The session’s own systemd unit expects a binary that was never installed. Look at what it tries to run:

systemctl --user cat 'dde-shell@DDE' | grep ExecStart
ls -la /usr/bin/dde-shell

The unit points at a path that does not exist:

ExecStart=/usr/bin/dde-shell -C %I
ls: cannot access '/usr/bin/dde-shell': No such file or directory

The unit file ships with dde-session, which ubuntudde-dde does depend on. The binary ships with a separate dde-shell package, which it does not. Only the shared library came along:

apt-cache depends ubuntudde-dde | grep -i shell
apt-cache policy dde-shell | head -3

The only shell-related dependency is the greeter, and the package that holds the dock is available but unselected:

  Depends: dde-session-shell
dde-shell:
  Installed: (none)
  Candidate: 1.0.10-1

Install it explicitly:

sudo apt install dde-shell

Five packages, about 1.3 MB. The effect shows up in the plugin directory, which is where the dock and its components actually live. That count goes from one to nineteen:

ls /usr/lib/x86_64-linux-gnu/dde-shell/ | wc -l
ls /usr/lib/x86_64-linux-gnu/dde-shell/ | grep dock

Every dock component arrives as its own plugin:

19
org.deepin.ds.dock.clipboarditem.so
org.deepin.ds.dock.launcheritem.so
org.deepin.ds.dock.multitaskview.so
org.deepin.ds.dock.searchitem.so
org.deepin.ds.dock.showdesktop.so
org.deepin.ds.dock.so
org.deepin.ds.dock.taskmanager.so

Error: “[email protected]: Main process exited, code=exited, status=203/EXEC”

Exit code 203 is systemd reporting that it could not execute the binary named in ExecStart, almost always because the file is not there. On a fresh UbuntuDDE install that is exactly what happened, and sudo apt install dde-shell is the fix. The service is set to restart, so before you install it the journal fills with the same failure every second until systemd gives up with Start request repeated too quickly.

Create the deepin-daemon user the packages forget

Deepin keeps its desktop settings in a service called DConfig, and every part of the desktop reads from it. On a fresh install that service cannot start, because the system user it runs as does not exist.

Both the systemd unit and the D-Bus activation file name the same account:

grep User= /usr/lib/systemd/system/dde-dconfig-daemon.service
id deepin-daemon

The unit wants a user that was never created:

User=deepin-daemon
id: 'deepin-daemon': no such user

No package in the PPA creates it. There is no sysusers.d entry and no useradd in any maintainer script, so this is not something that got skipped on one machine. Create it yourself. Give it a home directory too, which costs nothing and saves you a second failure mode if you ever run the daemon by hand:

sudo useradd --system --create-home --home-dir /home/deepin-daemon \
  --shell /usr/sbin/nologin deepin-daemon

Creating the account is not enough on its own. The D-Bus daemon read its policy files at boot and has no idea the new user exists, so it will refuse to let the service claim its bus name. Reload it:

sudo systemctl reload dbus

Error: “dde-dconfig-daemon.service: Main process exited, code=exited, status=217/USER”

Exit code 217 means systemd could not resolve the User= named in the unit, and the line above it in the journal says so directly with Failed to determine user credentials: No such process. Creating the deepin-daemon account clears it. This is the first of two problems with this service, and fixing it exposes the second.

Error: “Connection is not allowed to own the service org.desktopspec.ConfigManager due to security policies in the configuration file”

This appears right after you create the user and looks like a permissions problem in the policy file. It is not. The policy at /usr/share/dbus-1/system.d/org.desktopspec.ConfigManager.conf already contains a policy user="deepin-daemon" block granting exactly this, but the running dbus-daemon resolved that name to a numeric ID when it started, and the name did not exist then. Reloading D-Bus, or rebooting, makes the message go away.

Work around the DTK logging crash

With the user created and D-Bus reloaded, the DConfig service still will not run. It now gets further and then dies with a segmentation fault:

sudo systemctl start dde-dconfig-daemon
systemctl is-active dde-dconfig-daemon

The journal records a core dump rather than a clean exit:

dde-dconfig-daemon[4109]: App exited due to receiving signal 11
dde-dconfig-daemon.service: Main process exited, code=dumped, status=11/SEGV
dde-dconfig-daemon.service: Failed with result 'core-dump'.

The stack trace is where this becomes actionable. Mint ships the tooling for that already; on Ubuntu neither piece is present on a default desktop install, so add them first:

sudo apt install systemd-coredump wmctrl

Without systemd-coredump the crash leaves no core behind to read, so install it before you reproduce the failure rather than after. Then pull the trace out:

sudo coredumpctl info /usr/bin/dde-dconfig-daemon

The crash is inside the logging code, four frames deep, and never reaches anything to do with configuration:

#0  _ZN6spdlog6logger9set_levelENS_5level10level_enumE (libspdlog.so.1.12 + 0x37c14)
#1  _ZN3Dtk4Core15ConsoleAppender6appendERK9QDateTime... (libdtk6log.so.0 + 0x176a8)
#2  _ZN3Dtk4Core16AbstractAppender5writeERK9QDateTime... (libdtk6log.so.0 + 0x11a23)
#3  _ZN3Dtk4Core6Logger5writeERK9QDateTime...           (libdtk6log.so.0 + 0x163f6)

Reading that from the bottom up: Deepin’s toolkit logger tries to write a line, hands it to its console appender, and the appender calls into spdlog, which crashes. The logger comes from libdtk6log in the PPA; spdlog is the copy Ubuntu ships in its own archive. The frames show where it dies and which package each library belongs to. They do not show why, so treat the crash as located rather than explained.

Because the crash is in the logging path rather than in the daemon’s actual work, telling Qt to emit nothing avoids it entirely. Create a drop-in for the service:

sudo mkdir -p /etc/systemd/system/dde-dconfig-daemon.service.d
sudo vim /etc/systemd/system/dde-dconfig-daemon.service.d/override.conf

Add two lines:

[Service]
Environment=QT_LOGGING_RULES=*=false

Reload and start it. The reset-failed matters because systemd has already rate-limited the unit after its earlier crash loop:

sudo systemctl daemon-reload
sudo systemctl reset-failed dde-dconfig-daemon
sudo systemctl start dde-dconfig-daemon
systemctl is-active dde-dconfig-daemon

It reports active and stays there. The same crash hits dde-shell, with a stack trace identical down to the frame, so it needs the same treatment. That one runs as your own user, so the drop-in goes in your home directory and does not need sudo:

mkdir -p ~/.config/systemd/user/[email protected]
vim ~/.config/systemd/user/[email protected]/quiet.conf

Same two lines as before:

[Service]
Environment=QT_LOGGING_RULES=*=false

Then reload the user manager and restart the shell:

systemctl --user daemon-reload
systemctl --user reset-failed 'dde-shell@DDE'
systemctl --user restart 'dde-shell@DDE'

One detail worth knowing if you go poking at this yourself: the crash depends on where output is going. Run dde-dconfig-daemon by hand in a terminal and it gets far enough to print Starting dconfig daemon succeeded before dying on something else, because a terminal is a tty and the appender behaves differently. Under systemd, where output goes to the journal, it crashes immediately. That is why the bug looks intermittent and why running the binary manually to debug it tells you the wrong thing.

With both drop-ins in place, a quick check inside the session confirms the versions that are running and that neither service is flapping any more:

Deepin Terminal on Linux Mint 22 showing UbuntuDDE package versions and active dde-shell and dconfig services
Package versions from the PPA, both services reporting active, and the single X11 session file.

Error: “Cannot find dconfigs, name: org.deepin.dde.appearance”

This is what the rest of the desktop reports while DConfig is dead, and it is a symptom rather than a separate fault. dde-appearance asks for the key that holds your wallpaper list, gets nothing, and eventually fails with start operation timed out. Terminating. If you see this, fix the DConfig service first and then check whether the message is still there, rather than chasing the appearance service itself.

Log in to the Deepin session

Log out. At the login screen the session picker sits next to your username, and the entry you want is spelled deepin in lower case, not “Deepin Desktop Environment”. That name comes straight out of the session file, which is also the only session the PPA installs:

cat /usr/share/xsessions/dde-x11.desktop

Four lines, and the name field is what the greeter shows:

[Desktop Entry]
Name=deepin
Comment=Deepin Desktop Environment
Exec=/usr/bin/dde-session
TryExec=/usr/bin/dde-session

The filename tells you the other important thing. It is an X11 session, and there is no Wayland equivalent. That is true even though the install pulls in Deepin’s Wayland compositor packages, which ship no session file at all:

dpkg -L deepin-kwin-wayland | grep -c wayland-sessions
ls /usr/share/wayland-sessions/

Zero session files from the Wayland package, and the only Wayland option on the machine is the one Mint shipped:

0
cinnamon-wayland.desktop

Your display manager is left alone, which is welcome. LightDM stays in place, Mint’s own greeter keeps handling logins, and although the install adds lightdm-deepin-greeter as an option it does not switch to it. There is no display manager conflict to resolve and nothing to reconfigure.

Pick deepin, log in, and you land on the Deepin desktop with its own wallpaper.

Deepin Desktop Environment session running on Linux Mint 22 with the UbuntuDDE wallpaper
The Deepin session on Linux Mint 22.3, running deepin-kwin on X11.

Confirm what is actually running, because a wallpaper alone does not prove much:

ps -u "$USER" -o cmd --no-headers | grep -E '^/usr/bin/(dde|startdde|deepin)' | sort

Twelve Deepin processes, including the compositor, the desktop and the shell:

/usr/bin/dde-appearance
/usr/bin/dde-desktop
/usr/bin/dde-fakewm
/usr/bin/dde-file-manager-server
/usr/bin/dde-lock
/usr/bin/dde-permission-manager
/usr/bin/dde-session
/usr/bin/dde-session --systemd-service
/usr/bin/dde-shell -C DDE
/usr/bin/dde-widgets
/usr/bin/deepin-kwin_x11 --replace
/usr/bin/startdde

The compositor, the desktop, the lock screen, the file manager backend and the appearance service are all up. Right-click works, the wallpaper is Deepin’s, and the Deepin applications launch normally from a terminal.

The dock appears but stays empty

Here is where the honesty has to come in. Everything above gets you a working Deepin session, and it is genuinely Deepin rather than a theme on top of something else. What it does not get you is a dock you can use, and this last problem has no fix from the outside.

The dock is drawn by dde-shell, which by this point is running. Ask the window manager what windows exist, and include geometry:

systemctl --user is-active 'dde-shell@DDE'
wmctrl -lG

The service is up and the dock window is there, full width and 48 pixels tall, sitting at the bottom of an 800 pixel screen:

active
0x03000006 -1 0    0    1280 800  mint-desktop Desktop
0x03e0000c -1 0    752  1280 48   mint-desktop org.deepin.dde-shell

So the geometry is right and the window is real. What lands on screen is a bare grey strip with a single icon at the far left, no theme, no application buttons, no launcher entry. The timing is worth knowing if you are checking this yourself: dde-shell reports active well before the window exists, so run wmctrl straight after logging in and you will see the service up with nothing drawn at all, then the empty strip appears a while later.

Empty unstyled Deepin dock strip at the bottom of the screen on Linux Mint 22
The dock window renders, and stays empty, because Deepin’s application manager never starts.

The dock’s plugins need Deepin’s application manager, which tracks installed and running applications and feeds the dock its contents. That service crashes on startup, and unlike the DConfig crash it is not a logging problem. Check it and then run the binary by hand:

systemctl --user is-active org.desktopspec.ApplicationManager1
QT_LOGGING_RULES='*=false' /usr/bin/dde-application-manager

It aborts immediately, and silencing the logging changes nothing:

failed
terminate called without an active exception

That message is what the C++ runtime prints when std::terminate is reached with no exception in flight, most often a thread destroyed while still joinable. The core dump matches: the stack is a plain abort path with none of the spdlog frames the other two crashes shared. So this is a second, unrelated bug in the same PPA, it sits between you and the dock, and no environment variable or drop-in gets around it. Across the session the same failure shows up as a recurring log line, Can't getId from AM for the <pid>, because AM is unavailable.

The rest of Deepin is unaffected by this. The file manager in particular is complete, and it is one of the better ones on Linux:

Deepin File Manager running on Linux Mint 22 showing My Directories, Disks and File Vault
Deepin File Manager on Mint, with its own disk view and File Vault entry.

Practically, you can still use the session. Applications launch from a terminal, from the file manager, or from keyboard shortcuts, and Deepin’s own file manager and settings panel both work. What you do not get is the part of Deepin most people install it for, which is a dock that lists your applications and a launcher to search them. Decide with that in mind before putting this on a machine you rely on. If you want a polished desktop on Mint today rather than a project to debug, the KDE Plasma desktop on Linux Mint installs cleanly and is a much closer match for what Deepin is trying to be. On Ubuntu proper, Cinnamon is the other easy swap.

Why Ubuntu 26.04 cannot install Deepin Desktop yet

On Ubuntu 26.04 the same first command appears to work, which is the trap. Adding the PPA succeeds and returns zero:

sudo add-apt-repository -y ppa:ubuntudde-dev/stable
ls /etc/apt/sources.list.d/

A sources file is written, in the newer deb822 format with the signing key inlined:

ubuntu.sources
ubuntudde-dev-ubuntu-stable-resolute.sources

Nothing warned you that the suite it just configured does not exist. That only surfaces on the next update:

sudo apt update

The repository has no release file, because there is no resolute directory on the server:

Err:6 https://ppa.launchpadcontent.net/ubuntudde-dev/stable/ubuntu resolute Release
  404  Not Found [IP: 185.125.189.188 443]
E: The repository 'https://ppa.launchpadcontent.net/ubuntudde-dev/stable/ubuntu resolute Release' does not have a Release file.

And the install goes nowhere:

E: Unable to locate package ubuntudde-dde

Remove the file rather than leaving a broken repository behind, since every later apt update will keep printing that error:

sudo rm /etc/apt/sources.list.d/ubuntudde-dev-ubuntu-stable-resolute.sources
sudo apt update

Worth noting that Mint’s tooling behaves better here than Ubuntu’s. mintsources fetches the PPA’s index for your base codename before writing anything and refuses outright with a message that the PPA does not support that release, so on a future Mint built on 26.04 you get a clear refusal rather than a broken sources file. Ubuntu’s add-apt-repository writes the file and lets apt update discover the problem later.

There is no workaround worth recommending here either. Pointing the sources file at noble on a 26.04 system pulls hundreds of packages built against the previous LTS’s Qt and toolchain into your live system, which is how you break a desktop rather than gain one. Wait for the PPA to publish a resolute suite, or use the applications on their own as described next.

Run the Deepin apps without the desktop

This is the option most readers should take. Ubuntu and Debian both package a good number of Deepin’s applications in the normal archive, independently of UbuntuDDE and independently of everything that goes wrong above, so none of the PPA’s problems reach them. There is no third-party repository involved and nothing to undo later. See what your release already has:

apt-cache search --names-only '^(deepin|dde|dtk|startdde)' | sort

On Ubuntu 26.04 that returns 23 packages, all of them applications and libraries. Ten of the twenty-three, being the ones worth installing:

dde-calendar - Deepin Calendar
deepin-album - album application for Deepin Desktop Environment
deepin-calculator - Calculator for DDE (Deepin Desktop Environment)
deepin-deb-installer - Deepin Package Manager
deepin-image-viewer - Image Viewer for Deepin Desktop Environment
deepin-log-viewer - Log Viewer is a useful tool for viewing system logs
deepin-movie - Deepin movie player
deepin-music - music player with brilliant and tweakful UI
deepin-screen-recorder - Simple recorder tools for deepin
deepin-terminal - Deepin terminal emulator application

What is missing from that list is the point. The session itself is not packaged anywhere in the Ubuntu archive:

for p in ubuntudde-dde startdde dde-session dde-shell deepin-kwin-x11; do
  printf '%-18s ' "$p"
  apt-cache show "$p" >/dev/null 2>&1 && echo present || echo 'not in archive'
done

Every component that would give you a desktop is absent:

ubuntudde-dde      not in archive
startdde           not in archive
dde-session        not in archive
dde-shell          not in archive
deepin-kwin-x11    not in archive

So install the applications you want and keep the desktop you already have:

sudo apt install deepin-terminal deepin-image-viewer deepin-calculator \
  deepin-movie deepin-music deepin-screen-recorder

These are ordinary archive packages, so they get security updates through the normal channel and none of the breakage above applies to them. They pull in Deepin’s toolkit libraries and will look slightly out of place against a GTK desktop, which is a cosmetic cost rather than a functional one. For anything not packaged, comparing the Snap, Flatpak and APT options on Ubuntu is usually the faster route than adding a third-party repository.

Remove Deepin and restore your session

Log out of the Deepin session first, log back in to Cinnamon or GNOME, and then take the metapackages out, so that nothing you are removing is in use while you remove it:

sudo apt remove ubuntudde-dde ubuntudde-dde-extras dde-shell
sudo apt autoremove

The first command removes only two packages, because nothing depends on a metapackage. The autoremove that follows is what does the work, taking out another 130 that are now unreferenced. Track progress with a count rather than guessing:

dpkg -l | grep -cE '\s(dde|deepin|libdtk)'

On the test machine that went from 67 before the removal to 31 after those two commands. The remainder are packages whose names apt has no reason to connect to anything you asked for, so sweep them by name. Anchor the patterns with ^, because apt treats these as unanchored regular expressions rather than shell globs, so an unanchored dde-* reaches anything with “dde” buried in the name, startdde and libdde-shell among them:

sudo apt purge '^dde-' '^deepin-' '^libdtk'
sudo apt autoremove --purge

The purge transaction covers 30 packages, though only 20 of those are still installed at that point. The other 10 were already removed by the earlier autoremove and are only now having their config files taken away, which is the difference between the rc state and being gone. The final autoremove --purge is the big one at 198 packages, and it is where the Qt and KDE Frameworks libraries go, roughly forty of them Qt and most of the rest Frameworks and kwin components. Run the count once more and it reaches zero. The four commands together take the machine from 2,291 installed packages to 1,941, and from 15 GB used to 13 GB.

Anchoring costs less than it looks like it should. Names such as startdde, libdde-shell and the libdeepin- group match none of the three patterns, and every one of them still comes out, because the dependency cascade reaches them even when the patterns do not. They just leave at different moments. libdde-shell and libdeepin-pdfium went in the first autoremove, before the purge ran at all. startdde went in the purge itself, which is the clearest illustration: it appears in apt’s removal list with no pattern matching its name. The four remaining libdeepin- packages wait for the final autoremove --purge. Departure order tracks the dependency graph, not the name.

That is also why the count command lags. It greps whole dpkg -l lines, descriptions included, and libdeepin-pw-check is described as a “deepin password check interface”, so it keeps matching on its description long after its name stopped mattering. Expect the count to read 1 after the purge and reach 0 only after the final sweep. If you would rather see the list before committing to any of this, dry-run it:

sudo apt-get --simulate purge '^dde-' '^deepin-' '^libdtk'

Nothing belonging to Cinnamon, Xorg, LightDM, Nemo or Muffin appeared in that list on the test machine, and the desktop it was run from kept working throughout. Your package set is not identical to ours, so read the simulated list rather than trusting ours, and narrow the patterns if anything you recognise as part of your current desktop shows up.

If you have not already put the power daemon back, do it now:

sudo apt install power-profiles-daemon
powerprofilesctl get

It should print the profile currently in force, which is balanced on a fresh install. That puts one package back, so the 1,941 figure above is the count immediately before this step.

Then clean up the pieces apt does not know about, which are the two drop-ins and the system user you created by hand:

sudo rm -rf /etc/systemd/system/dde-dconfig-daemon.service.d
rm -rf ~/.config/systemd/user/[email protected]
sudo userdel --remove deepin-daemon
sudo systemctl daemon-reload

The userdel prints deepin-daemon mail spool (/var/mail/deepin-daemon) not found and exits zero. That warning is harmless, it just means the account never had a mailbox. Two directories outlive the account, though, and end up owned by a numeric ID with no user behind it:

sudo ls -ld /var/lib/dde-dconfig-daemon /var/log/deepin

Both show the orphaned UID where a name should be:

drwx------ 3 997 986 4096 Aug 20 08:06 /var/lib/dde-dconfig-daemon
drwxr-xr-x 3 997 986 4096 Aug 20 07:55 /var/log/deepin

They are systemd’s StateDirectory and LogsDirectory for the service, and nothing removes them. Delete them yourself if you care about a clean system, because the next account created will inherit that UID and silently acquire ownership of both.

Finally drop the repository itself. Pass -y here as well, because without it the command waits for an Enter keypress and does nothing at all if it cannot find a terminal to ask:

sudo add-apt-repository -r -y ppa:ubuntudde-dev/stable
sudo apt update

On Mint that deletes both the sources file and the keyring it installed, leaving only official-package-repositories.list behind. On Ubuntu the same flag is described as disabling the repository and edits the deb822 file instead, so check the result rather than assuming which of the two you got.

Last thing to confirm before you reboot is that you still have a session to log in to:

ls /usr/share/xsessions/

Only Mint’s own entries should be left, with no dde-x11.desktop among them.

How much longer this route has left

Worth thinking about before you build anything on top of this. Three dates bound how long the noble route stays viable, and none of them are under your control.

The PPA’s newest noble binaries were uploaded in June 2025. That is recent enough to call the repository maintained, and old enough that a year has passed without a package changing. The project’s last ISO was built two Ubuntu releases earlier, on a version that lost support in January 2024, so the packaging is now the only living part of UbuntuDDE.

Ubuntu 24.04 has standard support until May 2029, and Mint 22.x rides the same base, so the platform underneath is not the constraint. The constraint is the missing resolute suite. Mint has tracked Ubuntu LTS releases exclusively since Mint 17 in 2014, so its next major release will be built on 26.04 and will go looking for packages that, as of today, nobody has published. If that suite never appears, this install path ends not with a breakage but with a release upgrade that quietly has nowhere to go.

Two concrete things follow from that. Do not put Deepin on a machine you are about to upgrade, because the session will not survive the jump. And if you want Deepin as a daily desktop rather than as something to look at, run deepin’s own distribution, where the desktop is the product and gets tested as one. The same conclusion held when we tested Deepin Desktop on Fedora, where the packaging is in worse shape still and no route produces a usable session at all. Deepin travels badly outside its own distribution, and Ubuntu is currently the best of a weak set of options rather than a good one.

Keep reading

Upgrade Ubuntu 24.04 to Ubuntu 26.04 LTS (Step by Step) Ubuntu Upgrade Ubuntu 24.04 to Ubuntu 26.04 LTS (Step by Step) UFW Firewall Commands with Examples on Ubuntu 24.04 / 22.04 Security UFW Firewall Commands with Examples on Ubuntu 24.04 / 22.04 Things to Do After Installing CachyOS Arch Linux Things to Do After Installing CachyOS 10 Best Desktop Linux Distributions to Try in 2026-2027 Desktop 10 Best Desktop Linux Distributions to Try in 2026-2027 Install Arcane on Ubuntu 26.04 / 24.04: Complete Docker UI Guide Containers Install Arcane on Ubuntu 26.04 / 24.04: Complete Docker UI Guide Build Your Own Music Streamer with Koel Ubuntu Build Your Own Music Streamer with Koel

1 thought on “Install Deepin Desktop (DDE) on Ubuntu 24.04 and Linux Mint 22”

Leave a Comment

Press ESC to close