diff --git a/README.md b/README.md index 0e84a4b..ce864c1 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,59 @@ Currently an incomplete **pre-alpha**. * [cosmic-launcher](https://github.com/pop-os/cosmic-launcher) * [comsic-panel](https://github.com/pop-os/cosmic-panel) * [cosmic-settings](https://github.com/pop-os/cosmic-settings) +* [cosmic-session](https://github.com/pop-os/cosmic-session) * [cosmic-theme](https://github.com/pop-os/cosmic-theme) * [cosmic-theme-editor](https://github.com/pop-os/cosmic-theme-editor) * [libcosmic](https://github.com/pop-os/libcosmic) +* [simple-wrapper](https://github.com/pop-os/simple-wrapper) + +## Setup + +The Cosmic desktop environment requires a few dependencies: +(This list does not try to be exhaustive, but rather tries to provide a decent starting point. For detailed instructions check out the individual projects): + +- [just](https://github.com/casey/just) +- rust +- libwayland +- mesa (or third-party libEGL/libGL implementations, though interfacing with mesa's libglvnd is generally recommended). +- libseat +- libxkbcommon +- libinput +- udev +- gtk4 +- dbus + +optionally (though the build-system might currently require these libraries): +- libsystemd +- libpulse +- pop-launcher + +### Testing + +The easiest way to test Cosmic DE currently is by building a systemd system extension (see `man systemd-sysext`). +``` +git clone --recurse-submodules https://github.com/pop-os/cosmic-epoch +cd cosmic-epoch +just sysext +``` + +This will create a system-extension inside `cosmic-sysext`, that you can move (without renaming!) into e.g. `/var/lib/extensions`. +After starting systemd-sysext.service (`sudo systemctl enable --now systemd-sysext`) and refreshing (`sudo systemd-sysext --refresh`) or rebooting +*COSMIC* will be an available option in your favorite display manager. + +**Note**: An extension created this way will be linked against specific libraries on your system and will not work on other distributions. +It also requires the previously mentioned libraries/dependencies at runtime to be installed in your system (the system extension does not carry these libraries). + +It is thus no proper method for long term deployment. + +### Packaging + +Cosmic DE is packaged for Pop!_OS for reference look at the `debian` folders in the projects repositories. +These and the `justfile` inside this repository may be used as references on how to package Cosmic DE, though no backwards-compatibility guarantees are provided at this stage. + +### Versioning + +Cosmic DE is very much still work-in-progress and thus does not follow a versioning scheme so far. +We do our best to keep the referenced submodule commits in this repository building and working together, as a consequence they might not contain the latest updates and features from these repositories (yet). + +Notes on versioning and packaging all these components together properly will be added at a later stage once Cosmic DE gets its first release. diff --git a/justfile b/justfile new file mode 100644 index 0000000..ff93f58 --- /dev/null +++ b/justfile @@ -0,0 +1,40 @@ +just := just_executable() +make := `which make` + +build: + {{ just }} cosmic-applets/all + {{ just }} cosmic-applibrary/all + {{ make }} -C cosmic-comp all + {{ just }} cosmic-launcher/all + {{ make }} -C cosmic-panel all + {{ just }} cosmic-session/all + {{ make }} -C simple-wrapper all + +sysext dir=`echo $(pwd)/cosmic-sysext` version=("nightly-" + `git rev-parse --short HEAD`): build && (_extension_release dir version) + @mkdir -p {{dir}}/usr/lib/extension-release.d/ + {{ just }} rootdir={{dir}} cosmic-applets/install + {{ just }} rootdir={{dir}} cosmic-applibrary/install + {{ make }} -C cosmic-comp install DESTDIR={{dir}} + {{ just }} rootdir={{dir}} cosmic-launcher/install + {{ make }} -C cosmic-panel install DESTDIR={{dir}} prefix=/usr + {{ just }} rootdir={{dir}} cosmic-session/install + {{ make }} -C simple-wrapper install DESTDIR={{dir}} prefix=/usr + +_extension_release dir version: + #!/usr/bin/env sh + cat >{{dir}}/usr/lib/extension-release.d/extension-release.cosmic-sysext <