GithubHelp home page GithubHelp logo

cosmic-epoch's Introduction

COSMIC Desktop

Currently an incomplete pre-alpha. Testing instructions below for various distributions.

Components of COSMIC Desktop

COSMIC libraries/crates

Setup on distributions without packaging of cosmic components

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
  • rustc
  • libwayland
  • mesa (or third-party libEGL/libGL implementations, though interfacing with mesa's libglvnd is generally recommended).
  • libseat
  • libxkbcommon
  • libinput
  • libgtk
  • udev
  • dbus

optionally (though the build-system might currently require these libraries):

  • libsystem
  • libpulse
  • pop-launcher
  • libexpat1
  • libfontconfig
  • libfreetype
  • lld
  • cargo
  • libgbm-dev
  • libclang-dev
  • libpipewire-0.3-dev

Note: libfontconfig, libfreetype, and lld are packages specific to Linux distributions. You may need to find the equivalent version for your distribution if you are not using Pop!_OS.

The required ones can be installed with:

sudo apt install just rustc libglvnd-dev libwayland-dev libseat-dev libxkbcommon-dev libinput-dev libgtk-4-1 udev dbus libdbus-1-dev libpam0g-dev -y

and the optional ones with:

sudo apt install libsystemd-dev libpulse-dev pop-launcher libexpat1-dev libfontconfig-dev libfreetype-dev lld cargo libgbm-dev libclang-dev libpipewire-0.3-dev -y

They can be installed all at once with:

sudo apt install just rustc libglvnd-dev libwayland-dev libseat-dev libxkbcommon-dev libinput-dev libgtk-4-1 udev dbus libdbus-1-dev libsystemd-dev libpulse-dev pop-launcher libexpat1-dev libfontconfig-dev libfreetype-dev lld cargo libgbm-dev libclang-dev libpipewire-0.3-dev libpam0g-dev -y

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 called 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).

Read-Only Filesystem: If you're not on an immutable distro you may notice that /usr/ and /opt/ are read-only. this is caused by systemd-sysext being enabled, when you are done testing you can disable systemd-sysext (sudo systemctl disable --now systemd-sysext)

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.

Installing on Pop!_OS

COSMIC DE is in heavy development and not ready for issue reports. Currently, GUIs are incomplete and don't match designs, desktop settings aren't available and bugs are obvious and known. You're seeing the sausage be made. Most configuration is currently in text files and would be familiar to i3/Sway users. A call for testing will be announced when the project is ready for reports. With that out of the way, feel free to jump in and have fun.

Enable Wayland

sudo nano /etc/gdm3/custom.conf

Change to true WaylandEnable=true

Reboot for this change to take effect.

Disable SELinux

If you have SELinux enabled (e.g. on Fedora), the installed extension won't have the correct labels applied. To test COSMIC, you can temporarily disable it and restart gdm (note that this will close your running programs).

sudo setenforce 0
sudo systemctl restart gdm

Update udev rules for NVIDIA users

sudo nano /usr/lib/udev/rules.d/61-gdm.rules

Looks for LABEL="gdm_prefer_xorg" and LABEL="gdm_disable_wayland", add # to the RUN statement so it will look like this

LABEL="gdm_prefer_xorg"
#RUN+="/usr/libexec/gdm-runtime-config set daemon PreferredDisplayServer xorg"
GOTO="gdm_end"

LABEL="gdm_disable_wayland"
#RUN+="/usr/libexec/gdm-runtime-config set daemon WaylandEnable false"
GOTO="gdm_end"

Restart gdm

sudo systemctl restart gdm

Install COSMIC

sudo apt install cosmic-*

After logging out, click on your user and there will be a sprocket at the bottom right. Change the setting to COSMIC. Proceed to log in.

Installing on Arch Linux

Installing via the preferred AUR helper is possible the usual way, e.g.: paru -S cosmic-epoch-git

Then log out, click on your user, and a sprocket at the bottom right shows an additional entry alongside your desktop environments. Change to COSMIC and proceed with log in. For a more detailled discussion consider the relevant section in the Arch wiki.

Installing on Fedora Linux

Cosmic may be installed via a Fedora COPR repository.

dnf copr enable ryanabx/cosmic-epoch
dnf install cosmic-desktop

Then log out, click on your user, and a sprocket at the bottom right shows an additional entry alongside your desktop environments. Change to COSMIC and proceed with log in. For further information, you may check the COPR page.

Configuring COSMIC DE

This is basic configuration to get you started. See individual projects repos above for details.

Access cosmic-launcher with Super and cosmic-applibrary with Super+a.

COSMIC COMP

COSMIC Comp is the compositor for COSMIC DE. Its config file is located at /etc/cosmic-comp/config.ron. You can enable tiling by default by setting tiling_enabled: true, at the bottom of the file. Super+y will toggle tiling per workspace.

sudo mkdir /etc/cosmic-comp
sudo cp cosmic-comp/config.ron /etc/cosmic-comp
sudo -e /etc/cosmic-comp/config.ron
Scaling

Changing the scaling of the DE can be done in this file:

nano ~/.local/state/cosmic-comp/outputs.ron
Screenshots

Screenshots can now be taken with the COSMIC Screenshot tool, either with Print Screen key or by opening the COSMIC Screenshot utility from the launcher.

Panel Configuration

Panels can now be configured in the COSMIC Settings app under Desktop > Desktop and Panel > Panel/Dock

Desktop Wallpaper

Wallpaper can now be configured in the COSMIC Settings app under Desktop > Wallpapers

WebGL on NVIDIA

WebGL on NVIDIA is currently broken but will work in Google Chrome using software rendering.

flatpak install com.google.Chrome

Contact

cosmic-epoch's People

Contributors

drakulix avatar jokeyrhyme avatar wash2 avatar ids1024 avatar watchmkr avatar jackpot51 avatar soloturn avatar vixea avatar ahoneybun avatar wiiznokes avatar user8395 avatar pixeldoted avatar aleph-complex avatar al12gamer avatar rexhent avatar edfloreshz avatar jacobgkau avatar lnicola avatar marcinjahn avatar dygear avatar mmstick avatar nazar-pc avatar pebor avatar tuananh avatar asahi-m avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.