- QML 68.9%
- C++ 25.6%
- Shell 2.1%
- CMake 1.5%
- Python 1.1%
- Other 0.8%
Retiled
An attempt at creating a "desktop" environment mainly for Linux phones and tablets that's similar in function to some parts of Microsoft's Windows Phone 8.x, primarily these features and behaviors:
- Start screen
- Search app
- Navigation bar
- Action Center
- Status bar
- And more, with an entire list that was too long for the readme, though some of this list is outdated
Retiled is not to be confused with (one of?) the Windows Phone/Windows 8.x application and Live Tile restoration project, also called Retiled which I'm not associated with. That project seems to have started recently as of August 2025, because I never heard about it before.
Note: As of September 12, 2023, this is the canonical repo for Retiled and I'll add a note to the GitHub repo with a link here.
Development is mainly being done using the PinePhone for testing, so that'll be the main supported device (with support for other devices planned, but not as the main focus because I want to ensure it runs reasonably well on the PinePhone, thereby ensuring it should run way better on devices with better specs; proper support for other devices like hardware stuff and notch support will be added, though). It's still in early development as I don't really know what I'm doing with C++ and Qt/QML which means development goes a little slowly, but I'm learning.
Guess you could say it's "Something to fill the Live Tile-shaped hole in your heart", but it's not anywhere near ready yet. Here's a tagline (?) I figured out, in addition to what's in the last sentence: "Together, we resolved to forge a new way of life here on *nix, come what may. This was our beautiful lie to ourselves... (orchestral music goes dooo da dooo in the background)" Or alternatively, "Our beautiful lie to ourselves..."
So far, it's been tested on Manjaro Plasma Mobile and postmarketOS (with Plasma Mobile), but I also want to support more distros like NixOS/Aux, Mobian, and openSUSE, as a few examples (but not limited to these). I'd also like to support operating systems besides Linux such as FreeBSD if possible. Officially as of January 2, 2024 (technically earlier, but I don't know when it was), postmarketOS is my main target platform/OS due to its wide hardware support so I have to be able to use musl libc-based libraries, but I won't purposefully prevent it from running on glibc distros like DanctNIX (I also use EndeavourOS which is Arch, so I couldn't do that anyway because that would break testing easily).
Update March 6, 2025: my main goal is now an environment that works well in compositors like LabWC rather than the Plasma Mobile thing. I'll still keep the RetiledStart QML files separate in case a custom homescreen for Plasma Mobile is desired, but it won't be officially supported. If something breaks and it would be useful to upstream to my code, I'll accept it to make maintenance easier.
Required extra packages
You may need to install packages through your distro's package manager, and those are as follows; their names may vary by distro, but most of these are what Arch Linux ARM (and Manjaro ARM, by extension I guess) use (actually I'm mainly targeting postmarketOS now, so they may be different). Each package will say what it is in which distro if they're different.
Note: I'll have to probably update some items as they may be unclear.
Note 2: I'm rewriting my stuff in C++ so the only Python stuff I'll require when it's done is python, pybind11, and pyxdg since it's easy to get icons with those (couldn't find a simple equivalent for that in C++ that would just return icon paths). Eventually I'll drop the Python stuff except for a maybe or maybe not planned template project to make it easier to make programs that use Retiled settings and theming but isn't C++.
python: Used for getting icons in RetiledStart; should be Python 3, but I can't remember if the package itself ispython3, so I'll need to checkpython3-dev: Required for building if doing that on postmarketOS since the dev files aren't in the main Python package.pybind11(py3-pybind11for runtime andpy3-pybind11-devfor building, both on postmarketOS): Allows using Python libraries from C++, such as pyxdg which I use for getting icons.- NOTE: If you install
pybind11and/orpython3-devafter trying to compile everything and try to compile again, you will probably get a message saying Python can't find libraries or something. In this case, delete thebuilddirectory and runcmake -S . -B buildagain
- NOTE: If you install
qt6-declarative(previouslyqt6-quickcontrols2; you will needqt6-qtdeclarativeandqt6-qtdeclarative-devon postmarketOS, but those should be installed when installingqt6-qtwayland-dev): Provides Qt6 QtQuick controls that are used in each componentqt6-qtdeclarative-private-dev: You will need this for building if you're doing it on postmarketOS or Alpine; other operating systems may require it, too. I don't know why it's required now.- Breeze icon theme: this is the default icon theme RetiledStart currently uses as of March 2025. Forgot to put this in the v0.1-DP3 package but whatever.
qt6-wayland(qt6-qtwaylandon postmarketOS and Alpine, and maybe Fedora; you will also needqt6-qtwayland-devto build the programs on Alpine and postmarketOS): Allows Qt6 apps like the ones included in Retiled to run under WaylandInter Display: the default font I use; there needs to be a way to choose a different one at runtime but I haven't done that yetyaml-cpp(yaml-cpp-devon postmarketOS is also required for building) (required to build and maybe use some of the C++-based programs like RetiledStart and GitRepoManager; this is also a runtime dependency)inicpp.hpp: Included in the repo as a fork that allows read-only INI-like files to be opened and INI-like files in read-write locations to be written to by programs in read-only locations; original repo here: https://github.com/dujingning/inicpp and my fork is here: https://codeberg.org/DrewNaylor/inicpp-extendedpyxdg(on postmarketOS, this appears to bepy3-xdg, and it appears to bepython-pyxdgon Arch Linux [ARM] and probably also Manjaro [ARM]): Used for getting app icons at the moment as of April 13, 2023, but it's planned to be replaced by a port of it to C++ that I'll do. Note: This is the only thing that needs to be installed on top of a recent (March 2025) Plasma Mobile image of postmarketOS for RetiledStart to work; every other program featured with Retiled should work just fine with everything else that gets installed with Plasma Mobile.qt6-svg(qt6-qtsvgon postmarketOS and thus Alpine): You'll need to install this so that SVG images will work. Without it, SVG images won't show up anywhere.layer-shell-qt(runtime) andlayer-shell-qt-dev(building); both package names are what they are on postmarketOS: using and building Layer Shell components like the navbar and status bar.(削除)LabWC isn't currently the main focus, that's switched to Sway, see here: #443labwc: the Wayland compositor I'm trying to build everything around/for; I don't have a full config file yet (but you can put this in yourrc.xmland it kinda works: #318 (comment) ; however, the scale needs to be set as does the keyboard layout [if you don't use LabWC's default keyboard layout] and the touch matrix, so it's not really usable with just the link above) and the navbar and status bar don't resize yet on output size change (will need to be fixed by me; LXQt has a way to do it correctly that I'll base stuff off of) (削除ここまで)sway: the Wayland compositor I'm currently focused on making everything around. See here for example configuration options to get Retiled to work somewhat smoothly in it: https://codeberg.org/DrewNaylor/Retiled/src/branch/main/docs/running-retiled-in-sway.md as of August 27, 2025, requires being built from git with foreign-toplevel-image-capture protocol support(削除)wlrctl(削除ここまで)swaymsg: switching windows in the navbar's (mostly-finished as of February 2026) window switcher; as of August 27, 2025, requires being built from git with foreign-toplevel-image-capture protocol supportgrim: getting window thumbnail screenshots; requires version 1.5.0 or above with foreign-toplevel-image-capture protocol support.wvkbd: Virtual keyboard for wlroots environments. This is used when you press the "toggle keyboard" button in the Action Center. The specific command iswvkbd-mobintl. Your accent color will be applied to the key presses.wlroots: this is mainly for Sway itself; as of August 27, 2025, requires version 1.20 or higher, which can be built from git with foreign-toplevel-image-capture protocol support; you can build it as part of the Sway build as a subproject- KDE's Extra Cmake Modules (ECM) (
extra-cmake-moduleson Arch and Alpine/postmarketOS): (unsure if this is necessary, I could probably just not use it if it's just for the git commit hook I turned off because it was annoying) (for building only) - KDE Frameworks 6's Solid (
solidandsolid-devon postmarketOS and Alpine, andsolidon Arch Linux): Displaying battery percentage in the status bar; eventually more stuff will rely on this. qt6-qtbase-dev(on postmarketOS and Alpine; Arch is supposed to have the-devpackages in the main package so it should just be inqt6-base): Needed to runqtpathsto find Qt's paths; see: https://github.com/trialuser02/qt6ct/issues/8 (for building only)WaylandScanner: for building stuff that uses Wayland protocols, like the navbar and status bar (they use Layer Shell) (for building only I think)WaylandProtocols: (wayland-protocolson postmarketOS and Alpine) to be scanned by WaylandScanner. (for building only I think)cmake: for configuring build stuff for make and the compilermake: compiling C++ stuff- either
g++(fromgccI'm pretty sure) orllvm(fromclang) for compiling with cmake (these are the C++ compilers, either should work, and if they don't, it needs to be fixed) (for building only) - either
gcc's C compiler or LLVM's C compiler (for building only) libopengl0: Required if you want to run stuff on something like Linux Mint Cinnamon; not sure if this is installed by default on other distros, or if it's something that GTK ones lack; also not sure of the package name on non-Ubuntu distros.
License stuff
This project (Retiled) is Copyright (C) 2021-2026 Drew Naylor and is mostly licensed under the Gnu GPLv3 for almost everything but RetiledStart, which is GPLv2+; and RetiledStyles, which are mostly under LGPLv3 or GPLv2+ while a few files are LGPLv3 only, GPLv2 only, or GPLv3 only. Refer to each file for details. Relicensing was done because it's just easier to have it all under one or two main licenses. It could be GPLv2+ since some stuff is GPLv3(+) or sometimes (L)GPLv(2|3) only, but I don't know how to deal with that. This should be specified in all the code boilerplate areas though.
More license info: Licensed under mainly the Gnu GPLv3 but some stuff is under (L)GPLv3 and/or maybe GPLv2+ and/or LGPLv2+. Some files have a BSD license, some are MIT, and some are OFL. See source files for details. You can find a copy of the GPLv3, GPLv2, and LGPLv3 in./LICENSES, along with all the other licenses used for stuff in this project with the project name added to the filename if needed. The Sway example config license is next to the example config.
Retiled uses the RetiledStyles project, which falls under the LGPLv3 or GPLv2+ for most files (some are modified versions of Qt's styles, so they can fall under the licenses those files fell under; a few files are LGPLv3 only, GPLv2 only, or GPLv3 only). See the files under./RetiledStylesto be certain of their licenses and copyrights. Qt's license requires me to host my own copy of the code, and you can find that here: https://github.com/DrewNaylor/qtdeclarative
Code relating to qtwayland, which is the module used for the project in the RetiledCompositor folder, can be found here: https://github.com/DrewNaylor/qtwayland
RetiledCompositor is the old compositor used for Retiled for such things as the multitasking area and giving a place for the navigation bar, etc., and is sadly licensed under the Gnu GPLv3 due to qtwayland also being under the GPLv3 (I think it's GPLv3+ with the "+" being for any version that's ok'd by the KDE Free Qt Foundation, according to some source files in the repo) now. Any files that do not use GPL'd libraries directly will be licensed under one of these three licenses for as much flexibility as possible: the MIT License; the BSD License according to what Qt uses in the QML files or what any other source file uses; or the LGPLv3, which is what the RetiledStyles project's files are mainly under (most are available under GPLv2+ as well as LGPLv3, while some are only available under LGPLv3 only, GPLv2 only, or GPLv3 only due to what Qt had them licensed as; check each file for details). I'm not going to use RetiledCompositor anymore and instead will be making Layer Shell components to work with mainly Sway.
layer-shell-qt seems to be licensed under the LGPLv2.1 only or LGPLv3 only or LicenseRef-KDE-Accepted-LGPL.
Windows Phone and all other related copyrights and trademarks are property of Microsoft Corporation. All rights reserved.
Retiled is not associated with Microsoft in any way, and Microsoft does not endorse Retiled.
Qt (and I assume PySide6, since The Qt Company owns it) is Copyright (C) The Qt Company Ltd.
Inter (specifically, Inter Display, and v4.0 beta 8 was used for testing) is used for most of the text in the UI if installed, designed by and trademark Rasmus Andersson and Copyright (c) 2016-2020 The Inter Project Authors, licensed under the SIL Open Font License, Version 1.1 (http://scripts.sil.org/OFL).
Some glyphs are from the wp-metro font, which was made by AJ Troxell and is available under the SIL OFL 1.1; you can find a copy of this license in./fonts/wp-metro/OFL.txt, as well as here:
http://scripts.sil.org/OFL.
You can find links to these fonts in the components list at the end of this "license stuff" block.
libdotdesktop-cpp is Copyright (C) Drew Naylor and is licensed under the MIT License. This library is from the DotDesktop4Win project.
yaml-cpp is licensed under the MIT License and Copyright (c) 2008-2015 Jesse Beder
inicpp-extended is my fork of inicpp, licensed under the MIT License and Copyright (C) 2023 dujingning and additionally for my fork Copyright (C) 2025 Drew Naylor.
pybind11 is licensed under a BSD-style license and Copyright (c) 2016 Wenzel Jakob wenzel.jakob@epfl.ch, All rights reserved.
pyxdg is used for the app icons in RetiledStart and licensed under the LGPLv2, and the copyright field in "docs/conf.py" states "2012, Sergey Kuleshov, Heinrich Wendel, Thomas Kluyver". I have my own fork for it that you can download from if needed, though: https://github.com/DrewNaylor/pyxdg Please see the project's homepage at the end of this quote block.
Python 3.9 copyrights start:
Copyright (c) 2001-2021 Python Software Foundation.
All Rights Reserved.
Copyright (c) 2000 BeOpen.com.
All Rights Reserved.
Copyright (c) 1995-2001 Corporation for National Research Initiatives.
All Rights Reserved.
Copyright (c) 1991-1995 Stichting Mathematisch Centrum, Amsterdam.
All Rights Reserved.
Python 3.9 copyrights end.
Python is licensed under the PSF License Agreement, which you can find a copy of here:
https://docs.python.org/3.9/license.html#psf-license
Any other copyrights and trademarks belong to their respective people and companies/organizations.
Components used by the Retiled project include libdotdesktop-cpp from DotDesktop4Win, Python, Qt, QML, C++, wp-metro, Inter, pyxdg, yaml-cpp, my fork of inicpp.hpp, inicpp-extended, layer-shell-qt, pybind11. Anything else that's used in the future will be added to this list.
Installation, Uninstallation, Building, and Running
Please note: You'll have to install the dependencies manually, as they're not integrated into the script yet.
Important: It might not fully build the first time as that happened on my PinePhone once and I don't know why, but doing it again should work.
One thing I do need to say to comply with the (L)GPL is that you can replace the files in the RetiledStyles directory if you want to use different files than what I provide, either by switching them out of the package then running the install script, or by replacing them as root when installed by changing the files in /opt/Retiled/RetiledStyles.
- Installation
- Install the packages in the Required Extra Packages section. These packages should be what they're named in Arch Linux and postmarketOS. I assume that you'll already have Python 3 installed, but if not, you'll also have to install it.
- Install
gitif you haven't, and clone the repo usinggit clone https://codeberg.org/DrewNaylor/Retiled cdintoRetiled/Scripts- Run
sh build-install-retiled.sh. The C++ code will be compiled, then you'll be prompted withsudoasking your password to install (if you haven't entered it recently). If you're using a binary package, just usesh install-retiled.sh - You should find the items for RetiledStart and RetiledSearch in your app list. If not (can happen with Plasma Mobile, which is the UI that this is recommended to be run using until the layer shell components are ready for use with LabWC), you'll need to restart your phone.
- Uninstallation
cdback intoretiled/Scriptsin the repo you cloned earlier, or clone it again if you deleted it.- Run
sh uninstall-retiled.sh. You'll be prompted for your password bysudoso that it can delete the files and folders used by Retiled, mainly these:
/opt/Retiled/*/usr/share/applications/retiledstart.desktop/usr/share/applications/retiledsearch.desktop/usr/share/applications/retiledsettings.desktop/usr/bin/retiledstart/usr/bin/retiledsearch/usr/bin/retiledsettings
- Building
-
cdintoScripts, then runsh build-retiled.sh, or manually run the commands from the root folder of the repo (note that these manual commands may be outdated so maybe check that script yourself):cmake -S . -B buildcd ./buildmakecp -rv ../RetiledThemes ./bincp -rv ../RetiledStyles ./bincp -rv ../RetiledSettings/configs ./bin/RetiledSettingscp -rv ../icons ./bincp -rv ../fonts ./bincp -v ../RetiledStart/RetiledStart/pages/wallpaper.jpg ./bin/wallpaper.jpgcp -v ../RetiledStart/RetiledStart/pages/startlayout.yaml ./bin/startlayout.yaml- All in one command (hopefully it works):
cmake -S . -B build && cd ./build && make && cp -rv ../RetiledThemes ./bin && cp -rv ../RetiledStyles ./bin && cp -rv ../RetiledSettings/configs ./bin/RetiledSettings && cp -rv ../icons ./bin && cp -rv ../fonts ./bin && cp -v ../RetiledStart/RetiledStart/pages/wallpaper.jpg ./bin/wallpaper.jpg && cp -v ../RetiledStart/RetiledStart/pages/startlayout.yaml ./bin/startlayout.yaml -
Please ensure all the dependencies listed above are installed first, or building (and running) won't work. Note that Sway, grim, and swaymsg are optional and only required if you want to try out Retiled in Sway until Retiled is its own environment (but you'll be able to run the apps anywhere), and Inter Display is recommended.
-
Building is only intended for Linux or another OS with
shscripting capability. As a result, there's no.batscript, nor is there support for building on Windows. This may change in the future if there's something that ends up using it on Windows or a Windows-compatible system.
-
- Running
- Linux
- After building,
cdinto./build/binfrom the root of the repo and run something with, for example,./retiledstart. Note that you'll need to have stuff likeRetiledStylesin thebinfolder for this to work. - I don't know if this is still a problem for the C++-based apps, but I'm keeping it anyway for troubleshooting:
- If you run the Python/QML-based apps on Phosh without first rebooting after installing the required extra packages, the keyboard may not display the letters properly, and instead show boxes. This doesn't seem to be permanent, as rebooting fixes the issue. However, running the Python/QML-based apps after a reboot may have Qt say that it's ignoring Wayland on Gnome, so it'll use Xwayland instead. You'll have to run
QT_QPA_PLATFORM=wayland python main.pyto make it use Wayland. This command will be integrated into a launcher script to make things easy (actually, not sure about that now, as that could make things more difficult and my goal is to focus on running the apps on Wayland even on Plasma Mobile...). Additionally, there's a titlebar when running with Wayland under Phosh. I'd like to have it only appear when in docked mode, although some apps may be better to have no window borders in docked mode and instead appear next to the panel, like RetiledStart.
- If you run the Python/QML-based apps on Phosh without first rebooting after installing the required extra packages, the keyboard may not display the letters properly, and instead show boxes. This doesn't seem to be permanent, as rebooting fixes the issue. However, running the Python/QML-based apps after a reboot may have Qt say that it's ignoring Wayland on Gnome, so it'll use Xwayland instead. You'll have to run
- After building,
- Linux
Video demos
- RetiledStart prototype running on the PinePhone (demo #1)
- RetiledStart demo #2: All Apps list prototype + improved tiles
- RetiledStart demo #3: Launching Apps from the All Apps List in Portrait Mode
- RetiledStart demo #4: Landscape All Apps List
- RetiledSearch demo #1: Doing a search on the PinePhone
- RetiledStart demo #5: Pinning, Unpinning, and Resizing Tiles
- RetiledCompositor demo #1: Early Compositor Demo
- RetiledActionCenter demo #1: Flashlight Toggle Showcase
Screenshots
Below are some screenshots in case you want to see how things are going so far. Some may be updated separately from the rest so recent changes might not show up in every screenshot. I might not update the screenshots here very often either, so I'd recommend following me on Mastodon as I'll occasionally post screenshots for the feature I'm working on at the moment. It's not always Retiled screenshots, though. There may also be more screenshots under docs/images that I haven't linked here.
RetiledStart showing a set of tiles (with icons) of various sizes while running in Plasma Mobile on the PinePhone:
Tiles with tile wallpaper:
Semi-transparent tiles with standard wallpaper:
Tiles in edit mode:
"Manually move tile" dialog since drag and drop isn't implemented yet:
Three-column layout; note that it's not perfect yet as shown by the tile text being a little too big and the margins on the sides of the page being slightly off:
All Apps list item context menu showing the "pin to start" button and that the other apps get faded out and smaller like they're supposed to, plus icons are visible:
All Apps list:
RetiledSearch running on the PinePhone:
Appbar menu in the search app showing the "about" button:
"about" page in the search app:
RetiledSettings showing the start+theme page with editable textboxes and a toggle switch for various theme and Start screen-related settings:
RetiledSettings showing the ease of access page with some toggle switches for turning on and off tilting, parallax scrolling, and the tile sliding around animation when in edit mode: