Skip to content

Commit

Permalink
Big README update, removed Framework build since we're not using TLP …
Browse files Browse the repository at this point in the history
…anyways, some other small changes
  • Loading branch information
m0ngr31 committed Mar 19, 2024
1 parent c6968f8 commit b7fb4ec
Show file tree
Hide file tree
Showing 7 changed files with 193 additions and 106 deletions.
1 change: 0 additions & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ jobs:
# !! Add your recipes here
- base.yml
- nvidia.yml
- framework.yml
- asus.yml
- asus-nvidia.yml
- surface.yml
Expand Down
246 changes: 191 additions & 55 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,36 +6,192 @@
<img src="https://github.com/jitcos/cabos/actions/workflows/build.yml/badge.svg">
</p>

## Getting started
# About & Inspirations

My spin based on [Fedora Silverblue](https://fedoraproject.org/atomic-desktops/silverblue/), which is derived from the amazing [Universal Blue](https://universal-blue.org/images/main/) project. This image is created with [BlueBuild](https://blue-build.org/) tooling for making & maintaining container-based Linux desktop images.

cabos is inspired and borrows heavily from [Bluefin-DX](https://projectbluefin.io) and [gidro-os](https://github.com/fiftydinar/gidro-os).

The main idea is to have an up-to-date, stable, and pre-configured base OS, and to use customized containers with Distrobox to do development work within it. You can see an example of a base Ubuntu container to get started with [here](https://github.com/jitcos/jetskis).

# Modifications

Removed packages (RPMs):
* Firefox
* htop
* nvtop (Except for Nvidia images)
* Gnome Software rpm-ostree package (not needed since we use rpm-ostree auto-updater)
* Gnome classic session
* Gnome Tour
* Gnome Initial Setup
* Gnome System Monitor
* Gnome system extensions
* Gnome Tweaks
* Gnome Terminal

Installed packages (RPMs):
* [System76 Scheduler](https://github.com/pop-os/system76-scheduler)
* [System76 Power Management](https://github.com/pop-os/system76-power)
* Android Tools (adb & fastboot)
* Zsh
* Mosh
* Micro
* [Gnome Boxes](https://apps.gnome.org/Boxes/)
* [VS Code](https://code.visualstudio.com/)
* p7zip & p7zip-plugins
* Podman
* Docker CE
* playerctl
* Samba
* Qemu

Installed akmods:
* [V4L2-loopback](https://github.com/umlaeute/v4l2loopback) (for allowing change of behavior for universal screensharing)
* [XOne](https://github.com/medusalix/xone) (Xbox One RF driver)
* [XPadNeo](https://github.com/atar-axis/xpadneo) (Xbox One Bluetooth driver)
* [WineSync](https://github.com/Cat-Lady/winesync-dkms/blob/main/README.md) (for possibly improving Windows apps performance)

Installed extensions:
* [Blur My Shell](https://github.com/aunetx/blur-my-shell)
* [Caffeine](https://github.com/eonpatapon/gnome-shell-extension-caffeine)
* [Hide Universal Access](https://extensions.gnome.org/extension/2398/hide-universal-access/)
* [Dash to Panel](https://extensions.gnome.org/extension/1160/dash-to-panel/)
* [GSConnect](https://extensions.gnome.org/extension/1319/gsconnect/)
* [AppIndicator Support](https://extensions.gnome.org/extension/615/appindicator-support/)
* [s76-scheduler](https://github.com/mjakeman/s76-scheduler-plugin)
* [Start Overlay in Application View](https://github.com/Hexcz/Start-Overlay-in-Application-View-for-Gnome-40-)
* [WorkspaceSwitcherWrapAround](https://github.com/theychx/WorkspaceSwitcherWrapAround)
* [disable-workspace-animation](https://github.com/ethnarque/gnome-disable-workspace-animation)
* [disable-workspace-switcher](https://github.com/cleardevice/gnome-disable-workspace-switcher)
* [Hibernate Status Button](https://extensions.gnome.org/extension/755/hibernate-status-button/)

Installed flatpaks:
* [Firefox](https://flathub.org/apps/org.mozilla.firefox) from Flathub instead of the system package
* [Mission Center](https://flathub.org/apps/io.missioncenter.MissionCenter) from Flathub instead of Gnome System Monitor
* [Calculator](https://apps.gnome.org/en/Calculator/)
* [Calendar](https://apps.gnome.org/en/Calendar/)
* [Camera](https://apps.gnome.org/en/Snapshot/)
* [Contacts](https://apps.gnome.org/en/Contacts/)
* [Clocks](https://apps.gnome.org/en/Clocks/)
* [Document Viewer](https://apps.gnome.org/en/Evince/)
* [Text Editor](https://apps.gnome.org/en/TextEditor/)
* [G4Music](https://flathub.org/apps/com.github.neithern.g4music)
* [Clapper](https://flathub.org/apps/com.github.rafostar.Clapper)
* [Image Viewer](https://apps.gnome.org/en/Loupe/)
* [Sticky Notes](https://flathub.org/apps/com.vixalien.sticky)
* [Flatseal](https://flathub.org/apps/com.github.tchx84.Flatseal)
* [Warehouse](https://flathub.org/apps/io.github.flattool.Warehouse)
* [PinApp](https://flathub.org/apps/io.github.fabrialberio.pinapp)
* [Extension Manager](https://flathub.org/apps/com.mattjakeman.ExtensionManager)
* [Blue Recorder](https://flathub.org/apps/sa.sy.bluerecorder)

Optional flatpaks at first login:
* [Characters](https://flathub.org/apps/org.gnome.Characters)
* [Disk Usage Analyzer](https://flathub.org/apps/org.gnome.baobab)
* [Font Viewer](https://flathub.org/apps/org.gnome.font-viewer)
* [Logs](https://flathub.org/apps/org.gnome.Logs)
* [Maps](https://flathub.org/apps/org.gnome.Maps)
* [Photos (Organizer)](https://flathub.org/apps/org.gnome.Photos)
* [Sushi (Nautilus Previewer)](https://flathub.org/apps/org.gnome.NautilusPreviewer)
* [Weather](https://flathub.org/apps/org.gnome.Weather)
* [Fedora Media Writer](https://flathub.org/apps/org.fedoraproject.MediaWriter)
* [Font Downloader](https://flathub.org/apps/org.gustavoperedo.FontDownloader)
* [Brave Browser](https://flathub.org/apps/com.brave.Browser)
* [GNOME Web](https://flathub.org/apps/org.gnome.Epiphany)
* [Google Chrome](https://flathub.org/apps/com.google.Chrome)
* [Microsoft Edge](https://flathub.org/apps/com.microsoft.Edge)
* [Opera](https://flathub.org/apps/com.opera.Opera)
* [GNOME Builder](https://flathub.org/apps/org.gnome.Builder)
* [PyCharm (Community)](https://flathub.org/apps/com.jetbrains.PyCharm-Community)
* [PyCharm (Professional)](https://flathub.org/apps/com.jetbrains.PyCharm-Professional)
* [IntelliJ IDEA (Community)](https://flathub.org/apps/com.jetbrains.IntelliJ-IDEA-Community)
* [IntelliJ IDEA (Ultimate)](https://flathub.org/apps/com.jetbrains.IntelliJ-IDEA-Ultimate)
* [Webstorm](https://flathub.org/apps/com.jetbrains.WebStorm)
* [PhpStorm](https://flathub.org/apps/com.jetbrains.PhpStorm)
* [Rider](https://flathub.org/apps/com.jetbrains.Rider)
* [CLion](https://flathub.org/apps/com.jetbrains.CLion)
* [GoLand](https://flathub.org/apps/com.jetbrains.GoLand)
* [Android Studio](https://flathub.org/apps/com.google.AndroidStudio)
* [Sublime Text 3](https://flathub.org/apps/com.sublimetext.three)
* [Bruno](https://flathub.org/apps/com.usebruno.Bruno)
* [Insomnia](https://flathub.org/apps/rest.insomnia.Insomnia)
* [Postman](https://flathub.org/apps/com.getpostman.Postman)
* [Podman Desktop](https://flathub.org/apps/io.podman_desktop.PodmanDesktop)
* [Meld](https://flathub.org/apps/org.gnome.meld)
* [Spotify](https://flathub.org/apps/com.spotify.Client)
* [Pithos (Pandora)](https://flathub.org/apps/io.github.Pithos)
* [VLC](https://flathub.org/apps/org.videolan.VLC)
* [Kdenlive](https://flathub.org/apps/org.kde.kdenlive)
* [Shotcut](https://flathub.org/apps/org.shotcut.Shotcut)
* [Flowblade](https://flathub.org/apps/io.github.jliljebl.Flowblade)
* [OpenShot](https://flathub.org/apps/org.openshot.OpenShot)
* [Audacity](https://flathub.org/apps/org.audacityteam.Audacity)
* [GIMP](https://flathub.org/apps/org.gimp.GIMP)
* [Krita](https://flathub.org/apps/org.kde.krita)
* [Inkscape](https://flathub.org/apps/org.inkscape.Inkscape)
* [Figma](https://flathub.org/apps/io.github.Figma_Linux.figma_linux)
* [PrusaSlicer](https://flathub.org/apps/com.prusa3d.PrusaSlicer)
* [Cura](https://flathub.org/apps/com.ultimaker.cura)
* [FreeCAD](https://flathub.org/apps/org.freecadweb.FreeCAD)
* [OpenSCAD](https://flathub.org/apps/org.openscad.OpenSCAD)
* [Discord](https://flathub.org/apps/com.discordapp.Discord)
* [Telegram](https://flathub.org/apps/org.telegram.desktop)
* [WhatsApp](https://flathub.org/apps/io.github.mimbrero.WhatsAppDesktop)
* [Signal](https://flathub.org/apps/org.signal.Signal)
* [Slack](https://flathub.org/apps/com.slack.Slack)
* [Microsoft Teams](https://flathub.org/apps/com.github.IsmaelMartinez.teams_for_linux)
* [Bottles](https://flathub.org/apps/com.usebottles.bottles)
* [Lutris](https://flathub.org/apps/net.lutris.Lutris)
* [Heroic Launcher](https://flathub.org/apps/com.heroicgameslauncher.hgl)
* [Steam](https://flathub.org/apps/com.valvesoftware.Steam)
* [Gamescope](https://flathub.org/apps/org.freedesktop.Platform.VulkanLayer.gamescope)
* [MangoHUD](https://flathub.org/apps/org.freedesktop.Platform.VulkanLayer.MangoHud//22.08)
* [SteamTinkerLaunch](https://flathub.org/apps/com.valvesoftware.Steam.Utility.steamtinkerlaunch)
* [Proton Updater](https://flathub.org/apps/net.davidotek.pupgui2)
* [OnlyOffice](https://flathub.org/apps/org.onlyoffice.desktopeditors)
* [LibreOffice](https://flathub.org/apps/org.libreoffice.LibreOffice)
* [Obsidian](https://flathub.org/apps/md.obsidian.Obsidian)
* [Standard Notes](https://flathub.org/apps/org.standardnotes.standardnotes)
* [Thunderbird](https://flathub.org/apps/org.mozilla.Thunderbird)
* [OBS Studio](https://flathub.org/apps/com.obsproject.Studio)
* [Boatswain](https://flathub.org/apps/com.feaneron.Boatswain)

Settings applied by default:
* 4 static workspaces (dynamical workspaces disabled)
* Disabled workspaces only on primary monitor
* Disabled "hot corners"
* Disable middle-click paste
* Enable normal "Minimize, Maximize, and Close" buttons on application windows
* Use Alt+Left & Alt-Right to navigate workspaces
* Use Alt+, for Previous Track
* Use Alt+. for Next Track
* Use Alt+/ for Play/Pause
* Enabled two-finger scrolling
* Disabled "natural" scrolling direction
* Enabled tap-to-click
* Not using UI scaling - but set 1.5x font scaling
* Default to "dark" theme
* Enabled Night Light
* Enabled GSConnect
* [Increased inotify limits](https://www.suse.com/support/kb/doc/?id=000020048) (for preventing errors like "too many open files" when installing/using some huge applications & games)

# Installation

## ISO (Recommended)

ISOs are online-based & are constantly upgraded. There is no need to worry about the version & the date of the ISO.

ISO is available for download [here.](https://github.com/jitcos/cabos/releases/tag/auto-iso)

Just download & proceed with installation.

After you get into the OS, type this command into Terminal & reboot:

See the [Make Your Own-page in the documentation](https://universal-blue.org/tinker/make-your-own/) for quick setup instructions for setting up your own repository based on this template.

Don't worry, it only requires some basic knowledge about using the terminal and git.

After setup, it is recommended you update this README to describe your custom image.

> **Note**
> Everywhere in this repository, make sure to replace `jitcos/cabos` with the details of your own repository. Unless you used one of the automatic repository setup tools in which case the previous repo identifier should already be your repo's details.
> **Warning**
> To start, you *must* create a branch called `live` which is exclusively for your customizations. That is the **only** branch the GitHub workflow will deploy to your container registry. Don't make any changes to the original "template" branch. It should remain untouched. By using this branch structure, you ensure a clear separation between your own "published image" branch, your development branches, and the original upstream "template" branch. Periodically sync and fast-forward the upstream "template" branch to the most recent revision. Then, simply rebase your `live` branch onto the updated template to effortlessly incorporate the latest improvements into your own repository, without the need for any messy, manual "merge commits".
## Customization

The easiest way to start customizing is by looking at and modifying `config/recipe.yml`. It's documented using comments and should be pretty easy to understand.

If you want to add custom configuration files, you can just add them in the `/usr/etc/` directory, which is the official OSTree "configuration template" directory and will be applied to `/etc/` on boot. `config/files/usr` is copied into your image's `/usr` by default. If you need to add other directories in the root of your image, that can be done using the `files` module. Writing to `/var/` in the image builds of OSTree-based distros isn't supported and will not work, as that is a local user-managed directory!

For more information about customization, see [the README in the config directory](config/README.md)

Documentation around making custom images exists / should be written in two separate places:
* [The Tinkerer's Guide on the website](https://universal-blue.org/tinker/make-your-own/) for general documentation around making custom images, best practices, tutorials, and so on.
* Inside this repository for documentation specific to the ins and outs of the template (like module documentation), and just some essential guidance on how to make custom images.

## Installation
```
rpm-ostree rebase ostree-image-signed:docker://ghcr.io/jitcos/cabos:latest
```

> **Warning**
> [This is an experimental feature](https://www.fedoraproject.org/wiki/Changes/OstreeNativeContainerStable) and should not be used in production, try it in a VM for a while!
## Rebase from Silverblue

To rebase an existing Silverblue/Kinoite installation to the latest build:

Expand All @@ -62,32 +218,12 @@ This repository builds date tags as well, so if you want to rebase to a particul
rpm-ostree rebase ostree-image-signed:docker://ghcr.io/jitcos/cabos:20230403
```

This repository by default also supports signing.

The `latest` tag will automatically point to the latest build. That build will still always use the Fedora version specified in `recipe.yml`, so you won't get accidentally updated to the next major version.

## ISO

This template includes a simple Github Action to build and release an ISO of your image.

To run the action, simply edit the `boot_menu.yml` by changing all the references to startingpoint to your repository. This should trigger the action automatically.

The Action uses [isogenerator](https://github.com/ublue-os/isogenerator) and works in a similar manner to the official Universal Blue ISO. If you have any issues, you should first check [the documentation page on installation](https://universal-blue.org/installation/). The ISO is a netinstaller and should always pull the latest version of your image.

Note that this release-iso action is not a replacement for a full-blown release automation like [release-please](https://github.com/googleapis/release-please).

## `just`

The [`just`](https://just.systems/) command runner is included in all `ublue-os/main`-derived images.

You need to have a `~/.justfile` with the following contents and `just` aliased to `just --unstable` (default in posix-compatible shells on ublue) to get started with just locally.
```
!include /usr/share/ublue-os/just/main.just
!include /usr/share/ublue-os/just/nvidia.just
!include /usr/share/ublue-os/just/custom.just
```
Then type `just` to list the just recipes available.
# Modifications

The file `/usr/share/ublue-os/just/custom.just` is intended for the custom just commands (recipes) you wish to include in your image. By default, it includes the justfiles from [`ublue-os/bling`](https://github.com/ublue-os/bling), if you wish to disable that, you need to just remove the line that includes bling.just.
Optional config:
* `ujust configure-grub`: Hide GRUB text output on boot (if you want to make boot process faster [press Shift on boot if you need to see boot menu])
* `ujust enable-hibernation`: Setup new swapfile and change configurations to allow your computer to hibernate or suspend-to-hibernate

See [the just-page in the Universal Blue documentation](https://universal-blue.org/guide/just/) for more information.
# Recommended Extensions
* [Grand Theft Focus](https://extensions.gnome.org/extension/5410/grand-theft-focus/) - Just be sure to configure Telegram/WhatsApp properly
* [System76 Power](https://github.com/LFd3v/gnome-shell-extension-system76-power) Manually install this for support with the System76 Power service
5 changes: 0 additions & 5 deletions boot_menu.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,6 @@ ublue_variants:
flavors:
- label: cabos-nvidia
info: cabos (For NVIDIA GPUs)
- label: jitcos/cabos-framework
ks: /kickstart/ublue-os.ks
flavors:
- label: cabos-framework
info: cabos (Framework Edition)
- label: jitcos/cabos-asus
ks: /kickstart/ublue-os.ks
flavors:
Expand Down
1 change: 1 addition & 0 deletions config/common_modules/default-flatpaks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ system:
- com.github.tchx84.Flatseal
- io.github.fabrialberio.pinapp
- com.mattjakeman.ExtensionManager
- io.github.flattool.Warehouse
- sa.sy.bluerecorder
- org.mozilla.firefox
- it.mijorus.gearlever
Expand Down
1 change: 1 addition & 0 deletions config/files/usr/share/ublue-os/firstboot/yafti.yml
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ screens:
- GoLand: com.jetbrains.GoLand
- Android Studio: com.google.AndroidStudio
- Sublime Text: com.sublimetext.three
- Bruno: com.usebruno.Bruno
- Insomnia: rest.insomnia.Insomnia
- Postman: com.getpostman.Postman
- Podman Desktop: io.podman_desktop.PodmanDesktop
Expand Down
22 changes: 0 additions & 22 deletions config/files/usr/share/ublue-os/just/60-custom.just
Original file line number Diff line number Diff line change
Expand Up @@ -42,28 +42,6 @@ configure-grub ACTION="prompt":
fi
fi
configure-scaling ACTION="prompt":
#!/usr/bin/env bash
bold=$(tput bold)
normal=$(tput sgr0)
OPTION={{ ACTION }}
if [ "$OPTION" == "prompt" ]; then
echo "${bold}Configuring Fractional Display Scaling${normal}"
echo 'Enable or disable fractional display scaling? Press ESC to exit.'
OPTION=$(ugum choose "Enable (Default)" Disable)
elif [ "$OPTION" == "help" ]; then
echo "Usage: ujust configure-scaling <option>"
echo " <option>: Specify the quick option - 'enable' or 'disable'"
echo " Use 'disable' to disable fractional scaling for your user."
echo " Use 'enable' to enable fractional scaling for your user."
exit 0
fi
if [ "$OPTION" == "Disable" ] || [ "${OPTION,,}" == "disable" ]; then
gsettings set org.gnome.mutter experimental-features "[]"
elif [ "$OPTION" == "Enable (Default)" ] || [ "${OPTION,,}" == "enable" ]; then
gsettings set org.gnome.mutter experimental-features "['scale-monitor-framebuffer']"
fi
enable-hibernation:
#!/usr/bin/env bash
Expand Down
23 changes: 0 additions & 23 deletions config/framework.yml

This file was deleted.

0 comments on commit b7fb4ec

Please sign in to comment.