Compare commits
1 commit
main
...
ostree/riv
| Author | SHA1 | Date | |
|---|---|---|---|
| 576311545e |
66 changed files with 2201 additions and 118 deletions
|
|
@ -65,7 +65,7 @@ jobs:
|
||||||
- name: Build and push
|
- name: Build and push
|
||||||
uses: docker/build-push-action@v6
|
uses: docker/build-push-action@v6
|
||||||
with:
|
with:
|
||||||
platforms: linux/amd64
|
platforms: linux/amd64,linux/arm64
|
||||||
push: true
|
push: true
|
||||||
context: "{{defaultContext}}:${{ matrix.box.path }}"
|
context: "{{defaultContext}}:${{ matrix.box.path }}"
|
||||||
tags: |
|
tags: |
|
||||||
|
|
|
||||||
|
|
@ -1,21 +0,0 @@
|
||||||
clean := "false"
|
|
||||||
box_name := file_stem(invocation_directory())
|
|
||||||
|
|
||||||
unexport GOBIN
|
|
||||||
unexport GOPATH
|
|
||||||
unexport GOROOT
|
|
||||||
|
|
||||||
|
|
||||||
# Create a new box from current directory
|
|
||||||
[no-cd]
|
|
||||||
build box_name:
|
|
||||||
[[ "{{clean}}" == "true" ]] && sudo rm -rf ${HOME}/chroots/{{ box_name }} || true
|
|
||||||
|
|
||||||
podman build -t {{box_name}}:latest .
|
|
||||||
|
|
||||||
distrobox assemble create
|
|
||||||
|
|
||||||
# Enter the box
|
|
||||||
enter box_name:
|
|
||||||
clear
|
|
||||||
@distrobox enter --clean-path --no-workdir {{box_name}}
|
|
||||||
|
|
@ -1,50 +1,22 @@
|
||||||
FROM rust:latest AS rust-builder
|
FROM quay.io/toolbx-images/alpine-toolbox:edge
|
||||||
|
|
||||||
# setup cargo packages, prefer to use apk packages
|
# Update system and install packages
|
||||||
# to reduce build time and space
|
RUN apk update && apk upgrade && \
|
||||||
RUN --mount=type=cache,target=/app/target/ \
|
apk add --no-cache \
|
||||||
--mount=type=cache,target=/usr/local/cargo/git/db \
|
neovim \
|
||||||
--mount=type=cache,target=/usr/local/cargo/registry/ \
|
git \
|
||||||
curl -L --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash \
|
lazygit \
|
||||||
&& cargo binstall --no-confirm \
|
zsh \
|
||||||
dotter
|
|
||||||
|
|
||||||
FROM ghcr.io/void-linux/void-glibc-full:latest
|
|
||||||
|
|
||||||
# Setup void packages
|
|
||||||
RUN --mount=type=cache,target=/var/cache/xbps/ \
|
|
||||||
xbps-install -Syu \
|
|
||||||
&& xbps-install -Sy \
|
|
||||||
bash \
|
|
||||||
bat \
|
|
||||||
cocogitto \
|
|
||||||
curl \
|
curl \
|
||||||
eza \
|
wget \
|
||||||
|
ripgrep \
|
||||||
fd \
|
fd \
|
||||||
fzf \
|
fzf \
|
||||||
gcc \
|
alpine-sdk \
|
||||||
git \
|
build-base \
|
||||||
just \
|
python3 \
|
||||||
lazygit \
|
py3-pip \
|
||||||
neovim \
|
openssh
|
||||||
nodejs \
|
|
||||||
ripgrep \
|
|
||||||
sd \
|
|
||||||
starship \
|
|
||||||
tealdeer \
|
|
||||||
tmux \
|
|
||||||
tree-sitter \
|
|
||||||
void-repo-multilib \
|
|
||||||
void-repo-multilib-nonfree \
|
|
||||||
void-repo-nonfree \
|
|
||||||
yazi \
|
|
||||||
zoxide \
|
|
||||||
zsh
|
|
||||||
|
|
||||||
# Import cargo packages
|
|
||||||
COPY --from=rust-builder /usr/local/cargo/bin/* /usr/local/bin/
|
|
||||||
|
|
||||||
COPY ./scripts/* /usr/local/bin/
|
|
||||||
|
|
||||||
# Set environment variables
|
# Set environment variables
|
||||||
ENV EDITOR=nvim \
|
ENV EDITOR=nvim \
|
||||||
|
|
@ -52,14 +24,18 @@ ENV EDITOR=nvim \
|
||||||
TERM=xterm-256color \
|
TERM=xterm-256color \
|
||||||
LANG=en_US.UTF-8 \
|
LANG=en_US.UTF-8 \
|
||||||
LC_ALL=en_US.UTF-8 \
|
LC_ALL=en_US.UTF-8 \
|
||||||
SHELL=/usr/bin/zsh
|
SHELL=/bin/zsh
|
||||||
|
|
||||||
# Basic setup
|
# Install and initialize chezmoi
|
||||||
RUN \
|
RUN sh -c "$(curl -fsLS get.chezmoi.io)" -- -b /usr/local/bin && \
|
||||||
# chsh -s /usr/bin/nu \
|
mkdir -p ~/.local/share/chezmoi
|
||||||
chsh -s /usr/bin/zsh \
|
|
||||||
&& chmod +x /usr/local/bin/*
|
RUN chsh -s /bin/zsh
|
||||||
|
|
||||||
|
RUN mkdir -p /workspace
|
||||||
|
|
||||||
|
WORKDIR /workspace
|
||||||
|
|
||||||
# Build commands:
|
# Build commands:
|
||||||
# Docker: docker build -t devbox .
|
# Docker: docker build -t dev-env .
|
||||||
# Podman: podman build -t devbox .
|
# Podman: podman build -t dev-env .
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,13 @@
|
||||||
[devbox]
|
[devbox]
|
||||||
image=git.alecodes.page/alecodes/devbox:latest
|
image=devbox:latest
|
||||||
|
|
||||||
replace=true
|
replace=true
|
||||||
pull=false
|
pull=false
|
||||||
init=true
|
init=true
|
||||||
|
unshare_all=true
|
||||||
root=false
|
root=false
|
||||||
start_now=true
|
start_now=true
|
||||||
|
|
||||||
|
additional_packages="git neovim"
|
||||||
|
|
||||||
home="${HOME}/chroots/devbox"
|
home="${HOME}/chroots/devbox"
|
||||||
volume="${HOME}/.ssh:${HOME}/chroots/devbox/.ssh"
|
|
||||||
|
|
||||||
additional_packages=""
|
|
||||||
additional_flags="--hostname devbox"
|
|
||||||
|
|
||||||
init_hooks=if [ -e /usr/local/bin/fetch_dots ]; then sudo -u aleidk sh -c "/usr/local/bin/fetch_dots" && rm /usr/local/bin/fetch_dots; fi
|
|
||||||
|
|
|
||||||
|
|
@ -1,28 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -e pipefail
|
|
||||||
|
|
||||||
base_dir="$HOME/Repos/Private/"
|
|
||||||
|
|
||||||
mkdir -p "$base_dir"
|
|
||||||
|
|
||||||
cd "$base_dir" || exit
|
|
||||||
|
|
||||||
if [ -d dots ]; then
|
|
||||||
echo "Dots already exists, updating..."
|
|
||||||
cd dots || exit
|
|
||||||
git pull --rebase --autostash
|
|
||||||
|
|
||||||
else
|
|
||||||
git clone ssh://git@git.alecodes.page:24062/alecodes/dots.git
|
|
||||||
|
|
||||||
cd dots || exit
|
|
||||||
|
|
||||||
git checkout dotter-migration
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Fixing permissions..."
|
|
||||||
chown -R 1000:1000 "$base_dir"
|
|
||||||
|
|
||||||
echo "Deploying dots..."
|
|
||||||
dotter deploy
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -e pipefail
|
|
||||||
|
|
||||||
sudo xbps-install -Sy go
|
|
||||||
|
|
||||||
go install mvdan.cc/gofumpt@latest
|
|
||||||
go install -v github.com/incu6us/goimports-reviser/v3@latest
|
|
||||||
go install github.com/segmentio/golines@latest
|
|
||||||
go install golang.org/x/tools/gopls@latest
|
|
||||||
206
ostree-images/river/Dockerfile
Normal file
206
ostree-images/river/Dockerfile
Normal file
|
|
@ -0,0 +1,206 @@
|
||||||
|
# Originally generated from https://github.com/wayblueorg/wayblue
|
||||||
|
|
||||||
|
|
||||||
|
# This stage is responsible for holding onto
|
||||||
|
# your config without copying it directly into
|
||||||
|
# the final image
|
||||||
|
FROM scratch AS stage-files
|
||||||
|
COPY ./files /files
|
||||||
|
|
||||||
|
# Copy modules
|
||||||
|
# The default modules are inside blue-build/modules
|
||||||
|
# Custom modules overwrite defaults
|
||||||
|
FROM scratch AS stage-modules
|
||||||
|
COPY --from=ghcr.io/blue-build/modules:latest /modules /modules
|
||||||
|
COPY ./modules /modules
|
||||||
|
|
||||||
|
# Bins to install
|
||||||
|
# These are basic tools that are added to all images.
|
||||||
|
# Generally used for the build process. We use a multi
|
||||||
|
# stage process so that adding the bins into the image
|
||||||
|
# can be added to the ostree commits.
|
||||||
|
FROM scratch AS stage-bins
|
||||||
|
COPY --from=gcr.io/projectsigstore/cosign /ko-app/cosign /bins/cosign
|
||||||
|
COPY --from=docker.io/mikefarah/yq /usr/bin/yq /bins/yq
|
||||||
|
COPY --from=ghcr.io/blue-build/cli:latest-installer /out/bluebuild /bins/bluebuild
|
||||||
|
|
||||||
|
# Keys for pre-verified images
|
||||||
|
# Used to copy the keys into the final image
|
||||||
|
# and perform an ostree commit.
|
||||||
|
#
|
||||||
|
# Currently only holds the current image's
|
||||||
|
# public key.
|
||||||
|
FROM scratch AS stage-keys
|
||||||
|
COPY cosign.pub /keys/river.pub
|
||||||
|
|
||||||
|
|
||||||
|
# Main image
|
||||||
|
FROM quay.io/fedora-ostree-desktops/base:41 AS river
|
||||||
|
ARG RECIPE=./recipes/recipe-river.yml
|
||||||
|
ARG IMAGE_REGISTRY=localhost
|
||||||
|
ARG CONFIG_DIRECTORY="/tmp/files"
|
||||||
|
ARG MODULE_DIRECTORY="/tmp/modules"
|
||||||
|
ARG IMAGE_NAME="river"
|
||||||
|
ARG BASE_IMAGE="quay.io/fedora-ostree-desktops/base"
|
||||||
|
ARG FORCE_COLOR=1
|
||||||
|
ARG CLICOLOR_FORCE=1
|
||||||
|
ARG RUST_LOG_STYLE=always
|
||||||
|
# Key RUN
|
||||||
|
RUN --mount=type=bind,from=stage-keys,src=/keys,dst=/tmp/keys \
|
||||||
|
mkdir -p /etc/pki/containers/ \
|
||||||
|
mkdir -p /usr/etc/pki/containers/ \
|
||||||
|
&& cp /tmp/keys/* /etc/pki/containers/ \
|
||||||
|
&& cp /tmp/keys/* /usr/etc/pki/containers/ \
|
||||||
|
&& ostree container commit
|
||||||
|
|
||||||
|
# Bin RUN
|
||||||
|
RUN --mount=type=bind,from=stage-bins,src=/bins,dst=/tmp/bins \
|
||||||
|
mkdir -p /usr/bin/ \
|
||||||
|
&& cp /tmp/bins/* /usr/bin/ \
|
||||||
|
&& ostree container commit
|
||||||
|
|
||||||
|
# Module RUNs
|
||||||
|
RUN \
|
||||||
|
--mount=type=bind,from=stage-files,src=/files,dst=/tmp/files,rw \
|
||||||
|
--mount=type=bind,from=stage-modules,src=/modules,dst=/tmp/modules,rw \
|
||||||
|
--mount=type=bind,from=ghcr.io/blue-build/cli:7c5578994e79d13d8780406600dc796422e22c8c-build-scripts,src=/scripts/,dst=/tmp/scripts/ \
|
||||||
|
--mount=type=cache,dst=/var/cache/rpm-ostree,id=rpm-ostree-cache-river-41,sharing=locked \
|
||||||
|
/tmp/scripts/run_module.sh 'rpm-ostree' '{"type":"rpm-ostree","install":["sddm","sddm-themes","qt5-qtgraphicaleffects","qt5-qtquickcontrols2","qt5-qtsvg","kwallet","pam-kwallet"]}' \
|
||||||
|
&& ostree container commit
|
||||||
|
RUN \
|
||||||
|
--mount=type=bind,from=stage-files,src=/files,dst=/tmp/files,rw \
|
||||||
|
--mount=type=bind,from=stage-modules,src=/modules,dst=/tmp/modules,rw \
|
||||||
|
--mount=type=bind,from=ghcr.io/blue-build/cli:7c5578994e79d13d8780406600dc796422e22c8c-build-scripts,src=/scripts/,dst=/tmp/scripts/ \
|
||||||
|
--mount=type=cache,dst=/var/cache/rpm-ostree,id=rpm-ostree-cache-river-41,sharing=locked \
|
||||||
|
/tmp/scripts/run_module.sh 'script' '{"type":"script","scripts":["setsddmtheming.sh"]}' \
|
||||||
|
&& ostree container commit
|
||||||
|
RUN \
|
||||||
|
--mount=type=bind,from=stage-files,src=/files,dst=/tmp/files,rw \
|
||||||
|
--mount=type=bind,from=stage-modules,src=/modules,dst=/tmp/modules,rw \
|
||||||
|
--mount=type=bind,from=ghcr.io/blue-build/cli:7c5578994e79d13d8780406600dc796422e22c8c-build-scripts,src=/scripts/,dst=/tmp/scripts/ \
|
||||||
|
--mount=type=cache,dst=/var/cache/rpm-ostree,id=rpm-ostree-cache-river-41,sharing=locked \
|
||||||
|
/tmp/scripts/run_module.sh 'systemd' '{"type":"systemd","system":{"enabled":["sddm-boot.service"]}}' \
|
||||||
|
&& ostree container commit
|
||||||
|
COPY --from=ghcr.io/ublue-os/akmods:main-41 /rpms /tmp/rpms
|
||||||
|
RUN find /tmp/rpms
|
||||||
|
RUN rpm -q ublue-os-akmods-addons || rpm-ostree install /tmp/rpms/ublue-os/ublue-os-akmods-addons*.rpm
|
||||||
|
COPY --from=ghcr.io/ublue-os/main-kernel:41 /tmp/rpms /tmp/rpms/kernel
|
||||||
|
RUN \
|
||||||
|
--mount=type=bind,from=stage-files,src=/files,dst=/tmp/files,rw \
|
||||||
|
--mount=type=bind,from=stage-modules,src=/modules,dst=/tmp/modules,rw \
|
||||||
|
--mount=type=bind,from=ghcr.io/blue-build/cli:7c5578994e79d13d8780406600dc796422e22c8c-build-scripts,src=/scripts/,dst=/tmp/scripts/ \
|
||||||
|
--mount=type=cache,dst=/var/cache/rpm-ostree,id=rpm-ostree-cache-river-41,sharing=locked \
|
||||||
|
/tmp/scripts/run_module.sh 'script' '{"type":"script","scripts":["installsignedkernel.sh"]}' \
|
||||||
|
&& ostree container commit
|
||||||
|
RUN rpm-ostree install just powerstat
|
||||||
|
COPY --from=ghcr.io/ublue-os/config:latest /rpms/ublue-os-udev-rules.noarch.rpm /
|
||||||
|
COPY --from=ghcr.io/ublue-os/config:latest /rpms/ublue-os-update-services.noarch.rpm /
|
||||||
|
COPY --from=ghcr.io/ublue-os/config:latest /rpms/ublue-os-signing.noarch.rpm /
|
||||||
|
COPY --from=ghcr.io/ublue-os/config:latest /rpms/ublue-os-luks.noarch.rpm /
|
||||||
|
COPY --from=ghcr.io/ublue-os/config:latest /rpms/ublue-os-just.noarch.rpm /
|
||||||
|
RUN rpm -ivh /ublue-os-udev-rules.noarch.rpm
|
||||||
|
RUN rpm -ivh /ublue-os-update-services.noarch.rpm
|
||||||
|
RUN rpm -ivh /ublue-os-signing.noarch.rpm
|
||||||
|
RUN rpm -ivh /ublue-os-luks.noarch.rpm
|
||||||
|
RUN rpm -ivh /ublue-os-just.noarch.rpm
|
||||||
|
RUN \
|
||||||
|
--mount=type=bind,from=stage-files,src=/files,dst=/tmp/files,rw \
|
||||||
|
--mount=type=bind,from=stage-modules,src=/modules,dst=/tmp/modules,rw \
|
||||||
|
--mount=type=bind,from=ghcr.io/blue-build/cli:7c5578994e79d13d8780406600dc796422e22c8c-build-scripts,src=/scripts/,dst=/tmp/scripts/ \
|
||||||
|
--mount=type=cache,dst=/var/cache/rpm-ostree,id=rpm-ostree-cache-river-41,sharing=locked \
|
||||||
|
/tmp/scripts/run_module.sh 'script' '{"type":"script","scripts":["installandroidudev.sh","installrpmfusion.sh"]}' \
|
||||||
|
&& ostree container commit
|
||||||
|
RUN \
|
||||||
|
--mount=type=bind,from=stage-files,src=/files,dst=/tmp/files,rw \
|
||||||
|
--mount=type=bind,from=stage-modules,src=/modules,dst=/tmp/modules,rw \
|
||||||
|
--mount=type=bind,from=ghcr.io/blue-build/cli:7c5578994e79d13d8780406600dc796422e22c8c-build-scripts,src=/scripts/,dst=/tmp/scripts/ \
|
||||||
|
--mount=type=cache,dst=/var/cache/rpm-ostree,id=rpm-ostree-cache-river-41,sharing=locked \
|
||||||
|
/tmp/scripts/run_module.sh 'rpm-ostree' '{"type":"rpm-ostree","install":["rofi-wayland","power-profiles-daemon","xorg-x11-server-Xwayland","headsetcontrol","mediainfo","polkit","xfce-polkit","fprintd-pam","xdg-user-dirs","dbus-tools","dbus-daemon","wl-clipboard","pavucontrol","playerctl","qt5-qtwayland","qt6-qtwayland","vulkan-validation-layers","vulkan-tools","google-noto-emoji-fonts","gnome-disk-utility","ddcutil","openssl","vim","just","alsa-firmware","p7zip","unrar","wireplumber","pipewire","pamixer","pulseaudio-utils","network-manager-applet","NetworkManager-openvpn","NetworkManager-openconnect","bluez","bluez-tools","blueman","firewall-config","thunar","thunar-archive-plugin","thunar-volman","xarchiver","imv","p7zip","gvfs-mtp","gvfs-gphoto2","gvfs-smb","gvfs-nfs","gvfs-fuse","gvfs-archive","android-tools","slurp","grim","wlr-randr","wlsunset","brightnessctl","kanshi","dunst","adwaita-qt5","fontawesome-fonts-all","gnome-themes-extra","gnome-icon-theme","paper-icon-theme","breeze-icon-theme","papirus-icon-theme"]}' \
|
||||||
|
&& ostree container commit
|
||||||
|
RUN \
|
||||||
|
--mount=type=bind,from=stage-files,src=/files,dst=/tmp/files,rw \
|
||||||
|
--mount=type=bind,from=stage-modules,src=/modules,dst=/tmp/modules,rw \
|
||||||
|
--mount=type=bind,from=ghcr.io/blue-build/cli:7c5578994e79d13d8780406600dc796422e22c8c-build-scripts,src=/scripts/,dst=/tmp/scripts/ \
|
||||||
|
--mount=type=cache,dst=/var/cache/rpm-ostree,id=rpm-ostree-cache-river-41,sharing=locked \
|
||||||
|
/tmp/scripts/run_module.sh 'script' '{"type":"script","scripts":["installproprietarypackages.sh"]}' \
|
||||||
|
&& ostree container commit
|
||||||
|
RUN \
|
||||||
|
--mount=type=bind,from=stage-files,src=/files,dst=/tmp/files,rw \
|
||||||
|
--mount=type=bind,from=stage-modules,src=/modules,dst=/tmp/modules,rw \
|
||||||
|
--mount=type=bind,from=ghcr.io/blue-build/cli:7c5578994e79d13d8780406600dc796422e22c8c-build-scripts,src=/scripts/,dst=/tmp/scripts/ \
|
||||||
|
--mount=type=cache,dst=/var/cache/rpm-ostree,id=rpm-ostree-cache-river-41,sharing=locked \
|
||||||
|
/tmp/scripts/run_module.sh 'rpm-ostree' '{"type":"rpm-ostree","install":["heif-pixbuf-loader","ffmpeg","ffmpeg-libs","ffmpegthumbnailer","pipewire-libs-extra","libfdk-aac","gstreamer1-plugins-bad","gstreamer1-plugins-ugly"],"remove":["gstreamer1-plugins-bad-free","gstreamer1-plugins-bad-free-libs","gstreamer1-plugins-ugly-free","fdk-aac-free","ffmpeg-free","libavcodec-free","libavdevice-free","libavfilter-free","libavformat-free","libavutil-free","libpostproc-free","libswresample-free","libswscale-free"]}' \
|
||||||
|
&& ostree container commit
|
||||||
|
RUN \
|
||||||
|
--mount=type=bind,from=stage-files,src=/files,dst=/tmp/files,rw \
|
||||||
|
--mount=type=bind,from=stage-modules,src=/modules,dst=/tmp/modules,rw \
|
||||||
|
--mount=type=bind,from=ghcr.io/blue-build/cli:7c5578994e79d13d8780406600dc796422e22c8c-build-scripts,src=/scripts/,dst=/tmp/scripts/ \
|
||||||
|
--mount=type=cache,dst=/var/cache/rpm-ostree,id=rpm-ostree-cache-river-41,sharing=locked \
|
||||||
|
/tmp/scripts/run_module.sh 'script' '{"type":"script","scripts":["removeunusedrepos.sh"]}' \
|
||||||
|
&& ostree container commit
|
||||||
|
RUN \
|
||||||
|
--mount=type=bind,from=stage-files,src=/files,dst=/tmp/files,rw \
|
||||||
|
--mount=type=bind,from=stage-modules,src=/modules,dst=/tmp/modules,rw \
|
||||||
|
--mount=type=bind,from=ghcr.io/blue-build/cli:7c5578994e79d13d8780406600dc796422e22c8c-build-scripts,src=/scripts/,dst=/tmp/scripts/ \
|
||||||
|
--mount=type=cache,dst=/var/cache/rpm-ostree,id=rpm-ostree-cache-river-41,sharing=locked \
|
||||||
|
/tmp/scripts/run_module.sh 'files' '{"type":"files","files":[{"source":"system/usr","destination":"/usr"},{"source":"system/etc","destination":"/etc"}]}' \
|
||||||
|
&& ostree container commit
|
||||||
|
RUN \
|
||||||
|
--mount=type=bind,from=stage-files,src=/files,dst=/tmp/files,rw \
|
||||||
|
--mount=type=bind,from=stage-modules,src=/modules,dst=/tmp/modules,rw \
|
||||||
|
--mount=type=bind,from=ghcr.io/blue-build/cli:7c5578994e79d13d8780406600dc796422e22c8c-build-scripts,src=/scripts/,dst=/tmp/scripts/ \
|
||||||
|
--mount=type=cache,dst=/var/cache/rpm-ostree,id=rpm-ostree-cache-river-41,sharing=locked \
|
||||||
|
/tmp/scripts/run_module.sh 'gschema-overrides' '{"type":"gschema-overrides","include":["zz1-secureblue-theming.gschema.override"]}' \
|
||||||
|
&& ostree container commit
|
||||||
|
RUN \
|
||||||
|
--mount=type=bind,from=stage-files,src=/files,dst=/tmp/files,rw \
|
||||||
|
--mount=type=bind,from=stage-modules,src=/modules,dst=/tmp/modules,rw \
|
||||||
|
--mount=type=bind,from=ghcr.io/blue-build/cli:7c5578994e79d13d8780406600dc796422e22c8c-build-scripts,src=/scripts/,dst=/tmp/scripts/ \
|
||||||
|
--mount=type=cache,dst=/var/cache/rpm-ostree,id=rpm-ostree-cache-river-41,sharing=locked \
|
||||||
|
/tmp/scripts/run_module.sh 'script' '{"type":"script","scripts":["settheming.sh","addbrewjustimport.sh"]}' \
|
||||||
|
&& ostree container commit
|
||||||
|
RUN \
|
||||||
|
--mount=type=bind,from=stage-files,src=/files,dst=/tmp/files,rw \
|
||||||
|
--mount=type=bind,from=stage-modules,src=/modules,dst=/tmp/modules,rw \
|
||||||
|
--mount=type=bind,from=ghcr.io/blue-build/cli:7c5578994e79d13d8780406600dc796422e22c8c-build-scripts,src=/scripts/,dst=/tmp/scripts/ \
|
||||||
|
--mount=type=cache,dst=/var/cache/rpm-ostree,id=rpm-ostree-cache-river-41,sharing=locked \
|
||||||
|
/tmp/scripts/run_module.sh 'wayblue-signing' '{"type":"wayblue-signing"}' \
|
||||||
|
&& ostree container commit
|
||||||
|
RUN \
|
||||||
|
--mount=type=bind,from=stage-files,src=/files,dst=/tmp/files,rw \
|
||||||
|
--mount=type=bind,from=stage-modules,src=/modules,dst=/tmp/modules,rw \
|
||||||
|
--mount=type=bind,from=ghcr.io/blue-build/cli:7c5578994e79d13d8780406600dc796422e22c8c-build-scripts,src=/scripts/,dst=/tmp/scripts/ \
|
||||||
|
--mount=type=cache,dst=/var/cache/rpm-ostree,id=rpm-ostree-cache-river-41,sharing=locked \
|
||||||
|
/tmp/scripts/run_module.sh 'rpm-ostree' '{"type":"rpm-ostree","install":["river","waybar","xdg-desktop-portal-wlr","xdg-desktop-portal-gtk","foot","swaylock","swayidle"]}' \
|
||||||
|
&& ostree container commit
|
||||||
|
RUN \
|
||||||
|
--mount=type=bind,from=stage-files,src=/files,dst=/tmp/files,rw \
|
||||||
|
--mount=type=bind,from=stage-modules,src=/modules,dst=/tmp/modules,rw \
|
||||||
|
--mount=type=bind,from=ghcr.io/blue-build/cli:7c5578994e79d13d8780406600dc796422e22c8c-build-scripts,src=/scripts/,dst=/tmp/scripts/ \
|
||||||
|
--mount=type=cache,dst=/var/cache/rpm-ostree,id=rpm-ostree-cache-river-41,sharing=locked \
|
||||||
|
/tmp/scripts/run_module.sh 'files' '{"type":"files","files":[{"source":"system/river","destination":"/"}]}' \
|
||||||
|
&& ostree container commit
|
||||||
|
RUN \
|
||||||
|
--mount=type=bind,from=stage-files,src=/files,dst=/tmp/files,rw \
|
||||||
|
--mount=type=bind,from=stage-modules,src=/modules,dst=/tmp/modules,rw \
|
||||||
|
--mount=type=bind,from=ghcr.io/blue-build/cli:7c5578994e79d13d8780406600dc796422e22c8c-build-scripts,src=/scripts/,dst=/tmp/scripts/ \
|
||||||
|
--mount=type=cache,dst=/var/cache/rpm-ostree,id=rpm-ostree-cache-river-41,sharing=locked \
|
||||||
|
/tmp/scripts/run_module.sh 'script' '{"type":"script","scripts":["setriverwaybarmodules.sh"]}' \
|
||||||
|
&& ostree container commit
|
||||||
|
RUN \
|
||||||
|
--mount=type=bind,from=stage-files,src=/files,dst=/tmp/files,rw \
|
||||||
|
--mount=type=bind,from=stage-modules,src=/modules,dst=/tmp/modules,rw \
|
||||||
|
--mount=type=bind,from=ghcr.io/blue-build/cli:7c5578994e79d13d8780406600dc796422e22c8c-build-scripts,src=/scripts/,dst=/tmp/scripts/ \
|
||||||
|
--mount=type=cache,dst=/var/cache/rpm-ostree,id=rpm-ostree-cache-river-41,sharing=locked \
|
||||||
|
/tmp/scripts/run_module.sh 'script' '{"type":"script","scripts":["removeunusedrepos.sh","regenerateinitramfs.sh"]}' \
|
||||||
|
&& ostree container commit
|
||||||
|
|
||||||
|
RUN --mount=type=bind,from=ghcr.io/blue-build/cli:7c5578994e79d13d8780406600dc796422e22c8c-build-scripts,src=/scripts/,dst=/scripts/ \
|
||||||
|
/scripts/post_build.sh
|
||||||
|
|
||||||
|
# Labels are added last since they cause cache misses with buildah
|
||||||
|
LABEL org.blue-build.build-id="a3459c17-7a25-4df6-9c32-5578138f7870"
|
||||||
|
LABEL org.opencontainers.image.title="river"
|
||||||
|
LABEL org.opencontainers.image.description="ublue images for wayland compositors"
|
||||||
|
LABEL org.opencontainers.image.source=""
|
||||||
|
LABEL io.artifacthub.package.readme-url=https://raw.githubusercontent.com/blue-build/cli/main/README.md
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
[org.gnome.desktop.interface]
|
||||||
|
gtk-theme='Adwaita-dark'
|
||||||
|
color-scheme='prefer-dark'
|
||||||
|
icon-theme='Papirus'
|
||||||
9
ostree-images/river/files/scripts/addbrewjustimport.sh
Normal file
9
ostree-images/river/files/scripts/addbrewjustimport.sh
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Tell build process to exit if there are any errors.
|
||||||
|
set -oue pipefail
|
||||||
|
echo '
|
||||||
|
|
||||||
|
import "/usr/share/ublue-os/just/50-brew.just"
|
||||||
|
|
||||||
|
' >> /usr/share/ublue-os/justfile
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Tell build process to exit if there are any errors.
|
||||||
|
set -oue pipefail
|
||||||
|
|
||||||
|
sed -i 's/launcher_thunar = thunar.desktop/launcher_chromium = org.mozilla.firefox.desktop\nlauncher_thunar = thunar.desktop/' /usr/share/wayfire/wf-shell.ini
|
||||||
8
ostree-images/river/files/scripts/installandroidudev.sh
Normal file
8
ostree-images/river/files/scripts/installandroidudev.sh
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Tell build process to exit if there are any errors.
|
||||||
|
set -oue pipefail
|
||||||
|
|
||||||
|
curl -Lo /etc/yum.repos.d/_copr_ublue-os_staging.repo https://copr.fedorainfracloud.org/coprs/ublue-os/staging/repo/fedora-"${OS_VERSION}"/ublue-os-staging-fedora-"${OS_VERSION}".repo
|
||||||
|
rpm-ostree install android-udev-rules
|
||||||
|
rm /etc/yum.repos.d/_copr_ublue-os_staging.repo
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Tell build process to exit if there are any errors.
|
||||||
|
set -oue pipefail
|
||||||
|
|
||||||
|
semodule --verbose --install /usr/share/selinux/packages/nvidia-container.pp
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Tell build process to exit if there are any errors.
|
||||||
|
set -oue pipefail
|
||||||
|
|
||||||
|
curl -Lo /etc/yum.repos.d/negativo17-fedora-multimedia.repo https://negativo17.org/repos/fedora-multimedia.repo
|
||||||
|
sed -i '0,/enabled=1/{s/enabled=1/enabled=1\npriority=90/}' /etc/yum.repos.d/negativo17-fedora-multimedia.repo
|
||||||
|
|
||||||
|
rpm-ostree override replace \
|
||||||
|
--experimental \
|
||||||
|
--from repo='fedora-multimedia' \
|
||||||
|
libheif \
|
||||||
|
libva \
|
||||||
|
libva-intel-media-driver \
|
||||||
|
mesa-dri-drivers \
|
||||||
|
mesa-filesystem \
|
||||||
|
mesa-libEGL \
|
||||||
|
mesa-libGL \
|
||||||
|
mesa-libgbm \
|
||||||
|
mesa-libglapi \
|
||||||
|
mesa-libxatracker \
|
||||||
|
mesa-va-drivers \
|
||||||
|
mesa-vulkan-drivers \
|
||||||
|
gstreamer1-plugin-libav \
|
||||||
|
gstreamer1-plugin-vaapi
|
||||||
3
ostree-images/river/files/scripts/installrpmfusion.sh
Normal file
3
ostree-images/river/files/scripts/installrpmfusion.sh
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
rpm-ostree install \
|
||||||
|
https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-${OS_VERSION}.noarch.rpm \
|
||||||
|
https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-${OS_VERSION}.noarch.rpm
|
||||||
31
ostree-images/river/files/scripts/installsignedkernel.sh
Normal file
31
ostree-images/river/files/scripts/installsignedkernel.sh
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Tell build process to exit if there are any errors.
|
||||||
|
set -oue pipefail
|
||||||
|
|
||||||
|
find /tmp/rpms
|
||||||
|
|
||||||
|
rpm-ostree cliwrap install-to-root /
|
||||||
|
|
||||||
|
QUALIFIED_KERNEL="$(rpm -qa | grep -P 'kernel-(\d+\.\d+\.\d+)' | sed -E 's/kernel-//')"
|
||||||
|
INCOMING_KERNEL_VERSION="$(basename -s .rpm $(ls /tmp/rpms/kernel/kernel-[0-9]*.rpm 2>/dev/null | grep -P 'kernel-(\d+\.\d+\.\d+)' | sed -E 's/kernel-//'))"
|
||||||
|
|
||||||
|
echo "Qualified kernel: $QUALIFIED_KERNEL"
|
||||||
|
echo "Incoming kernel version: $INCOMING_KERNEL_VERSION"
|
||||||
|
|
||||||
|
|
||||||
|
if [[ "$INCOMING_KERNEL_VERSION" != "$QUALIFIED_KERNEL" ]]; then
|
||||||
|
echo "Installing kernel rpm from kernel-cache."
|
||||||
|
rpm-ostree override replace \
|
||||||
|
--experimental \
|
||||||
|
--install=zstd \
|
||||||
|
/tmp/rpms/kernel/kernel-[0-9]*.rpm \
|
||||||
|
/tmp/rpms/kernel/kernel-core-*.rpm \
|
||||||
|
/tmp/rpms/kernel/kernel-modules-*.rpm
|
||||||
|
else
|
||||||
|
echo "Installing kernel files from kernel-cache."
|
||||||
|
cd /tmp
|
||||||
|
rpm2cpio /tmp/rpms/kernel/kernel-core-*.rpm | cpio -idmv
|
||||||
|
cp ./lib/modules/*/vmlinuz /usr/lib/modules/*/vmlinuz
|
||||||
|
cd /
|
||||||
|
fi
|
||||||
11
ostree-images/river/files/scripts/regenerateinitramfs.sh
Normal file
11
ostree-images/river/files/scripts/regenerateinitramfs.sh
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Tell build process to exit if there are any errors.
|
||||||
|
set -oue pipefail
|
||||||
|
|
||||||
|
|
||||||
|
rpm-ostree cliwrap install-to-root /
|
||||||
|
|
||||||
|
QUALIFIED_KERNEL="$(rpm -qa | grep -P 'kernel-(\d+\.\d+\.\d+)' | sed -E 's/kernel-//')"
|
||||||
|
/usr/libexec/rpm-ostree/wrapped/dracut --no-hostonly --kver "$QUALIFIED_KERNEL" --reproducible -v --add ostree -f "/lib/modules/$QUALIFIED_KERNEL/initramfs.img"
|
||||||
|
chmod 0600 "/lib/modules/$QUALIFIED_KERNEL/initramfs.img"
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Tell build process to exit if there are any errors.
|
||||||
|
set -oue pipefail
|
||||||
|
|
||||||
|
rm /usr/share/applications/org.gnome.ColorProfileViewer.desktop
|
||||||
|
rm /usr/share/applications/org.gnome.Settings.desktop
|
||||||
|
rm /usr/share/applications/org.gnome.Tecla.desktop
|
||||||
|
rm /usr/share/applications/org.gnome.Tour.desktop
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Tell build process to exit if there are any errors.
|
||||||
|
set -oue pipefail
|
||||||
|
|
||||||
|
for file in /usr/share/hyprland/*.png; do
|
||||||
|
if [[ $file == *anime*.png || $file == wall2.png ]]; then
|
||||||
|
rm "$file"
|
||||||
|
echo "Removed: $file"
|
||||||
|
fi
|
||||||
|
done
|
||||||
10
ostree-images/river/files/scripts/removeunusedrepos.sh
Normal file
10
ostree-images/river/files/scripts/removeunusedrepos.sh
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Tell build process to exit if there are any errors.
|
||||||
|
set -oue pipefail
|
||||||
|
|
||||||
|
rm -f /etc/yum.repos.d/negativo17-fedora-nvidia.repo
|
||||||
|
rm -f /etc/yum.repos.d/negativo17-fedora-multimedia.repo
|
||||||
|
rm -f /etc/yum.repos.d/eyecantcu-supergfxctl.repo
|
||||||
|
rm -f /etc/yum.repos.d/_copr_ublue-os-akmods.repo
|
||||||
|
rm -f /etc/yum.repos.d/nvidia-container-toolkit.repo
|
||||||
16
ostree-images/river/files/scripts/setdrmvariables.sh
Normal file
16
ostree-images/river/files/scripts/setdrmvariables.sh
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Tell build process to exit if there are any errors.
|
||||||
|
set -oue pipefail
|
||||||
|
|
||||||
|
|
||||||
|
echo '
|
||||||
|
|
||||||
|
# Nvidia modesetting support. Set to 0 or comment to disable kernel modesetting
|
||||||
|
# support. This must be disabled in case of SLI Mosaic.
|
||||||
|
|
||||||
|
options nvidia-drm modeset=1 fbdev=1
|
||||||
|
|
||||||
|
' > /usr/lib/modprobe.d/nvidia-modeset.conf
|
||||||
|
|
||||||
|
cp /usr/lib/modprobe.d/nvidia-modeset.conf /etc/modprobe.d/nvidia-modeset.conf
|
||||||
7
ostree-images/river/files/scripts/setearlyloading.sh
Normal file
7
ostree-images/river/files/scripts/setearlyloading.sh
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Tell build process to exit if there are any errors.
|
||||||
|
set -oue pipefail
|
||||||
|
|
||||||
|
sed -i 's@omit_drivers@force_drivers@g' /usr/lib/dracut/dracut.conf.d/99-nvidia.conf
|
||||||
|
sed -i 's@ nvidia @ i915 amdgpu nvidia @g' /usr/lib/dracut/dracut.conf.d/99-nvidia.conf
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Tell build process to exit if there are any errors.
|
||||||
|
set -oue pipefail
|
||||||
|
|
||||||
|
sed -i 's/sway\/workspaces/hyprland\/workspaces/' /etc/xdg/waybar/config.jsonc
|
||||||
|
sed -i 's/sway\/mode/hyprland\/submap/' /etc/xdg/waybar/config.jsonc
|
||||||
|
sed -i 's/sway\/window/hyprland\/window/' /etc/xdg/waybar/config.jsonc
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Tell build process to exit if there are any errors.
|
||||||
|
set -oue pipefail
|
||||||
|
|
||||||
|
sed -i 's/sway\/workspaces/river\/tags/' /etc/xdg/waybar/config.jsonc
|
||||||
|
sed -i 's/sway\/mode/river\/mode/' /etc/xdg/waybar/config.jsonc
|
||||||
|
sed -i 's/sway\/window/river\/window/' /etc/xdg/waybar/config.jsonc
|
||||||
11
ostree-images/river/files/scripts/setsddmtheming.sh
Normal file
11
ostree-images/river/files/scripts/setsddmtheming.sh
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Tell build process to exit if there are any errors.
|
||||||
|
set -oue pipefail
|
||||||
|
|
||||||
|
sed -i 's/color: "black"/color: "white"/' /usr/share/sddm/themes/maldives/Main.qml
|
||||||
|
sed -i 's/id: lblPassword/id: lblPassword\ncolor: "white"/' /usr/share/sddm/themes/maldives/Main.qml
|
||||||
|
sed -i 's/id: lblName/id: lblName\ncolor: "white"/' /usr/share/sddm/themes/maldives/Main.qml
|
||||||
|
sed -i 's/id: lblSession/id: lblSession\ncolor: "white"/' /usr/share/sddm/themes/maldives/Main.qml
|
||||||
|
sed -i 's/id: lblLayout/id: lblLayout\ncolor: "white"/' /usr/share/sddm/themes/maldives/Main.qml
|
||||||
|
sed -i 's/id: errorMessage/id: errorMessage\ncolor: "white"/' /usr/share/sddm/themes/maldives/Main.qml
|
||||||
|
|
@ -0,0 +1,38 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Tell build process to exit if there are any errors.
|
||||||
|
set -oue pipefail
|
||||||
|
|
||||||
|
rm /etc/sway/environment
|
||||||
|
|
||||||
|
echo '
|
||||||
|
|
||||||
|
# This file is a part of Fedora configuration for Sway and will be sourced
|
||||||
|
# from /usr/bin/start-sway script for all users of the system.
|
||||||
|
# User-specific variables should be placed in $XDG_CONFIG_HOME/sway/environment
|
||||||
|
#
|
||||||
|
# vim: set ft=sh:
|
||||||
|
|
||||||
|
## Pass extra arguments to the /usr/bin/sway executable
|
||||||
|
|
||||||
|
#SWAY_EXTRA_ARGS="$SWAY_EXTRA_ARGS --unsupported-gpu"
|
||||||
|
SWAY_EXTRA_ARGS="$SWAY_EXTRA_ARGS --unsupported-gpu -D noscanout"
|
||||||
|
#SWAY_EXTRA_ARGS="$SWAY_EXTRA_ARGS --debug"
|
||||||
|
|
||||||
|
## Set environment variables
|
||||||
|
|
||||||
|
# Useful variables for wlroots:
|
||||||
|
# https://gitlab.freedesktop.org/wlroots/wlroots/-/blob/master/docs/env_vars.md
|
||||||
|
WLR_NO_HARDWARE_CURSORS=1
|
||||||
|
# Setting renderer to Vulkan may fix flickering but needs the following extensions:
|
||||||
|
# - VK_EXT_image_drm_format_modifier
|
||||||
|
# - VK_EXT_physical_device_drm
|
||||||
|
#
|
||||||
|
# Source: https://gitlab.freedesktop.org/wlroots/wlroots/-/commit/8e346922508aa3eaccd6e12f2917f6574f349843
|
||||||
|
WLR_RENDERER=vulkan
|
||||||
|
|
||||||
|
# Java Application compatibility
|
||||||
|
# Source: https://github.com/swaywm/wlroots/issues/1464
|
||||||
|
_JAVA_AWT_WM_NONREPARENTING=1
|
||||||
|
|
||||||
|
' > /etc/sway/environment
|
||||||
8
ostree-images/river/files/scripts/settheming.sh
Normal file
8
ostree-images/river/files/scripts/settheming.sh
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Tell build process to exit if there are any errors.
|
||||||
|
set -oue pipefail
|
||||||
|
|
||||||
|
# Removing this for now since it breaks steam layering.
|
||||||
|
# https://github.com/ublue-os/bluefin/issues/1258
|
||||||
|
# sed -i 's/Inherits=Adwaita/Inherits=Papirus/' /usr/share/icons/default/index.theme
|
||||||
6
ostree-images/river/files/scripts/setthunaricon.sh
Normal file
6
ostree-images/river/files/scripts/setthunaricon.sh
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Tell build process to exit if there are any errors.
|
||||||
|
set -oue pipefail
|
||||||
|
|
||||||
|
sed -i 's/Icon=org.xfce.thunar/Icon=system-file-manager/' /usr/share/applications/thunar.desktop
|
||||||
4
ostree-images/river/files/system/etc/gdm/gdm-useradd
Executable file
4
ostree-images/river/files/system/etc/gdm/gdm-useradd
Executable file
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/usr/bin/sh
|
||||||
|
|
||||||
|
getent group gdm > /dev/null || groupadd -r gdm
|
||||||
|
getent passwd gdm > /dev/null || useradd -r -g gdm -c "GDM Greeter Account" -d /var/lib/gdm -s /usr/sbin/nologin gdm
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
polkit.addRule(function(action, subject) {
|
||||||
|
if ((action.id == "org.freedesktop.udisks2.filesystem-mount-system" ||
|
||||||
|
action.id == "org.freedesktop.udisks2.filesystem-mount" ||
|
||||||
|
action.id == "org.freedesktop.udisks2.encrypted-unlock-system") &&
|
||||||
|
subject.isInGroup("wheel")) {
|
||||||
|
return polkit.Result.YES;
|
||||||
|
}
|
||||||
|
});
|
||||||
133
ostree-images/river/files/system/etc/rofi.rasi
Normal file
133
ostree-images/river/files/system/etc/rofi.rasi
Normal file
|
|
@ -0,0 +1,133 @@
|
||||||
|
/*Dracula theme based on the Purple official rofi theme*/
|
||||||
|
|
||||||
|
configuration {
|
||||||
|
show-icons: true;
|
||||||
|
display-drun: "";
|
||||||
|
disable-history: false;
|
||||||
|
}
|
||||||
|
|
||||||
|
* {
|
||||||
|
font: "Jetbrains Mono 12";
|
||||||
|
foreground: #f8f8f2;
|
||||||
|
background-color: #282a36;
|
||||||
|
active-background: #6272a4;
|
||||||
|
urgent-background: #ff5555;
|
||||||
|
urgent-foreground: #282a36;
|
||||||
|
selected-background: @active-background;
|
||||||
|
selected-urgent-background: @urgent-background;
|
||||||
|
selected-active-background: @active-background;
|
||||||
|
separatorcolor: @active-background;
|
||||||
|
bordercolor: @active-background;
|
||||||
|
}
|
||||||
|
|
||||||
|
#window {
|
||||||
|
background-color: @background-color;
|
||||||
|
border: 3;
|
||||||
|
border-radius: 6;
|
||||||
|
border-color: @bordercolor;
|
||||||
|
padding: 15;
|
||||||
|
}
|
||||||
|
#mainbox {
|
||||||
|
border: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
#message {
|
||||||
|
border: 0px;
|
||||||
|
border-color: @separatorcolor;
|
||||||
|
padding: 1px;
|
||||||
|
}
|
||||||
|
#textbox {
|
||||||
|
text-color: @foreground;
|
||||||
|
}
|
||||||
|
#listview {
|
||||||
|
fixed-height: 0;
|
||||||
|
border: 0px;
|
||||||
|
border-color: @bordercolor;
|
||||||
|
spacing: 2px ;
|
||||||
|
scrollbar: false;
|
||||||
|
padding: 2px 0px 0px ;
|
||||||
|
}
|
||||||
|
#element {
|
||||||
|
border: 0;
|
||||||
|
padding: 3px ;
|
||||||
|
}
|
||||||
|
#element.normal.normal {
|
||||||
|
background-color: @background-color;
|
||||||
|
text-color: @foreground;
|
||||||
|
}
|
||||||
|
#element.normal.urgent {
|
||||||
|
background-color: @urgent-background;
|
||||||
|
text-color: @urgent-foreground;
|
||||||
|
}
|
||||||
|
#element.normal.active {
|
||||||
|
background-color: @active-background;
|
||||||
|
text-color: @foreground;
|
||||||
|
}
|
||||||
|
#element.selected.normal {
|
||||||
|
background-color: @selected-background;
|
||||||
|
text-color: @foreground;
|
||||||
|
}
|
||||||
|
#element.selected.urgent {
|
||||||
|
background-color: @selected-urgent-background;
|
||||||
|
text-color: @foreground;
|
||||||
|
}
|
||||||
|
#element.selected.active {
|
||||||
|
background-color: @selected-active-background;
|
||||||
|
text-color: @foreground;
|
||||||
|
}
|
||||||
|
#element.alternate.normal {
|
||||||
|
background-color: @background-color;
|
||||||
|
text-color: @foreground;
|
||||||
|
}
|
||||||
|
#element.alternate.urgent {
|
||||||
|
background-color: @urgent-background;
|
||||||
|
text-color: @foreground;
|
||||||
|
}
|
||||||
|
#element.alternate.active {
|
||||||
|
background-color: @active-background;
|
||||||
|
text-color: @foreground;
|
||||||
|
}
|
||||||
|
#scrollbar {
|
||||||
|
width: 2px ;
|
||||||
|
border: 0;
|
||||||
|
handle-width: 8px ;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
#sidebar {
|
||||||
|
border: 2px dash 0px 0px ;
|
||||||
|
border-color: @separatorcolor;
|
||||||
|
}
|
||||||
|
#button.selected {
|
||||||
|
background-color: @selected-background;
|
||||||
|
text-color: @foreground;
|
||||||
|
}
|
||||||
|
#inputbar {
|
||||||
|
spacing: 0;
|
||||||
|
text-color: @foreground;
|
||||||
|
padding: 1px ;
|
||||||
|
}
|
||||||
|
#case-indicator {
|
||||||
|
spacing: 0;
|
||||||
|
text-color: @foreground;
|
||||||
|
}
|
||||||
|
#entry {
|
||||||
|
spacing: 0;
|
||||||
|
text-color: @foreground;
|
||||||
|
}
|
||||||
|
#prompt {
|
||||||
|
spacing: 0;
|
||||||
|
text-color: @foreground;
|
||||||
|
}
|
||||||
|
#inputbar {
|
||||||
|
children: [ prompt,textbox-prompt-colon,entry,case-indicator ];
|
||||||
|
}
|
||||||
|
#textbox-prompt-colon {
|
||||||
|
expand: false;
|
||||||
|
str: ">";
|
||||||
|
margin: 0px 0.3em 0em 0em ;
|
||||||
|
text-color: @foreground;
|
||||||
|
}
|
||||||
|
element-text, element-icon {
|
||||||
|
background-color: inherit;
|
||||||
|
text-color: inherit;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
[Theme]
|
||||||
|
Current=maldives
|
||||||
4
ostree-images/river/files/system/etc/sddm/sddm-useradd
Executable file
4
ostree-images/river/files/system/etc/sddm/sddm-useradd
Executable file
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/usr/bin/sh
|
||||||
|
|
||||||
|
getent group sddm > /dev/null || groupadd -r sddm
|
||||||
|
getent passwd sddm > /dev/null || useradd -r -g sddm -c "SDDM Greeter Account" -d /var/lib/sddm -s /usr/sbin/nologin sddm
|
||||||
7
ostree-images/river/files/system/etc/swaylock/config
Normal file
7
ostree-images/river/files/system/etc/swaylock/config
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
# The defaults below could be overridden in $XDG_CONFIG_HOME/swaylock/config
|
||||||
|
# (~/.config/swaylock/config).
|
||||||
|
#
|
||||||
|
# Image path supports environment variables and shell expansions,
|
||||||
|
# e.g. image=$HOME/Pictures/default.png
|
||||||
|
image=/usr/share/backgrounds/default.png
|
||||||
|
scaling=fill
|
||||||
134
ostree-images/river/files/system/etc/xdg/waybar/config.jsonc
Normal file
134
ostree-images/river/files/system/etc/xdg/waybar/config.jsonc
Normal file
|
|
@ -0,0 +1,134 @@
|
||||||
|
// -*- mode: jsonc -*-
|
||||||
|
{
|
||||||
|
"layer": "top", // Waybar at top layer
|
||||||
|
// "position": "bottom", // Waybar position (top|bottom|left|right)
|
||||||
|
"height": 30, // Waybar height (to be removed for auto height)
|
||||||
|
// "width": 1280, // Waybar width
|
||||||
|
"spacing": 4, // Gaps between modules (4px)
|
||||||
|
// Choose the order of the modules
|
||||||
|
"modules-left": [
|
||||||
|
"sway/workspaces",
|
||||||
|
"sway/mode",
|
||||||
|
"sway/scratchpad"
|
||||||
|
],
|
||||||
|
"modules-center": [
|
||||||
|
"sway/window"
|
||||||
|
],
|
||||||
|
"modules-right": [
|
||||||
|
"idle_inhibitor",
|
||||||
|
"pulseaudio",
|
||||||
|
"network",
|
||||||
|
"power-profiles-daemon",
|
||||||
|
"cpu",
|
||||||
|
"memory",
|
||||||
|
"temperature",
|
||||||
|
"backlight",
|
||||||
|
"battery",
|
||||||
|
"clock",
|
||||||
|
"tray"
|
||||||
|
],
|
||||||
|
// Modules configuration
|
||||||
|
"sway/mode": {
|
||||||
|
"format": "<span style=\"italic\">{}</span>"
|
||||||
|
},
|
||||||
|
"sway/scratchpad": {
|
||||||
|
"format": "{icon} {count}",
|
||||||
|
"show-empty": false,
|
||||||
|
"format-icons": ["", ""],
|
||||||
|
"tooltip": true,
|
||||||
|
"tooltip-format": "{app}: {title}"
|
||||||
|
},
|
||||||
|
"idle_inhibitor": {
|
||||||
|
"format": "{icon}",
|
||||||
|
"format-icons": {
|
||||||
|
"activated": "",
|
||||||
|
"deactivated": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tray": {
|
||||||
|
// "icon-size": 21,
|
||||||
|
"spacing": 5
|
||||||
|
},
|
||||||
|
"clock": {
|
||||||
|
// "timezone": "America/New_York",
|
||||||
|
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
|
||||||
|
"format-alt": "{:%Y-%m-%d}"
|
||||||
|
},
|
||||||
|
"cpu": {
|
||||||
|
"format": "{usage}% ",
|
||||||
|
"tooltip": false
|
||||||
|
},
|
||||||
|
"memory": {
|
||||||
|
"format": "{}% "
|
||||||
|
},
|
||||||
|
"temperature": {
|
||||||
|
// "thermal-zone": 2,
|
||||||
|
// "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
|
||||||
|
"critical-threshold": 80,
|
||||||
|
// "format-critical": "{temperatureC}°C {icon}",
|
||||||
|
"format": "{temperatureC}°C {icon}",
|
||||||
|
"format-icons": ["", "", ""]
|
||||||
|
},
|
||||||
|
"backlight": {
|
||||||
|
// "device": "acpi_video1",
|
||||||
|
"format": "{percent}% {icon}",
|
||||||
|
"format-icons": ["🌑", "🌘", "🌗", "🌖", "🌕"]
|
||||||
|
},
|
||||||
|
"battery": {
|
||||||
|
"states": {
|
||||||
|
// "good": 95,
|
||||||
|
"warning": 30,
|
||||||
|
"critical": 15
|
||||||
|
},
|
||||||
|
"format": "{capacity}% {icon}",
|
||||||
|
"format-full": "{capacity}% {icon}",
|
||||||
|
"format-charging": "{capacity}% ",
|
||||||
|
"format-plugged": "{capacity}% ",
|
||||||
|
"format-alt": "{time} {icon}",
|
||||||
|
// "format-good": "", // An empty format will hide the module
|
||||||
|
// "format-full": "",
|
||||||
|
"format-icons": ["", "", "", "", ""]
|
||||||
|
},
|
||||||
|
"battery#bat2": {
|
||||||
|
"bat": "BAT2"
|
||||||
|
},
|
||||||
|
"power-profiles-daemon": {
|
||||||
|
"format": "{icon}",
|
||||||
|
"tooltip-format": "Power profile: {profile}\nDriver: {driver}",
|
||||||
|
"tooltip": true,
|
||||||
|
"format-icons": {
|
||||||
|
"default": "",
|
||||||
|
"performance": "",
|
||||||
|
"balanced": "",
|
||||||
|
"power-saver": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"network": {
|
||||||
|
// "interface": "wlp2*", // (Optional) To force the use of this interface
|
||||||
|
"format-wifi": "{essid} ({signalStrength}%) ",
|
||||||
|
"format-ethernet": "{ipaddr}/{cidr} ",
|
||||||
|
"tooltip-format": "{ifname} via {gwaddr} ",
|
||||||
|
"format-linked": "{ifname} (No IP) ",
|
||||||
|
"format-disconnected": "Disconnected ⚠",
|
||||||
|
"format-alt": "{ifname}: {ipaddr}/{cidr}"
|
||||||
|
},
|
||||||
|
"pulseaudio": {
|
||||||
|
// "scroll-step": 1, // %, can be a float
|
||||||
|
"format": "{volume}% {icon} {format_source}",
|
||||||
|
"format-bluetooth": "{volume}% {icon} {format_source}",
|
||||||
|
"format-bluetooth-muted": " {icon} {format_source}",
|
||||||
|
"format-muted": " {format_source}",
|
||||||
|
"format-source": "{volume}% ",
|
||||||
|
"format-source-muted": "",
|
||||||
|
"format-icons": {
|
||||||
|
"headphone": "",
|
||||||
|
"hands-free": "",
|
||||||
|
"headset": "",
|
||||||
|
"phone": "",
|
||||||
|
"portable": "",
|
||||||
|
"car": "",
|
||||||
|
"default": ["", "", ""]
|
||||||
|
},
|
||||||
|
"on-click": "pavucontrol"
|
||||||
|
}
|
||||||
|
}
|
||||||
286
ostree-images/river/files/system/etc/xdg/waybar/style.css
Normal file
286
ostree-images/river/files/system/etc/xdg/waybar/style.css
Normal file
|
|
@ -0,0 +1,286 @@
|
||||||
|
* {
|
||||||
|
font-family: 'Noto Sans Mono', 'Font Awesome 6 Free', 'Font Awesome 6 Brands', monospace;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@define-color inactive_module_color #a9a9a9;
|
||||||
|
|
||||||
|
window#waybar {
|
||||||
|
background-color: rgba(43, 48, 59, 0.8);
|
||||||
|
border-color: rgba(100, 114, 125, 0.5);
|
||||||
|
border-style: solid;
|
||||||
|
color: #ffffff;
|
||||||
|
transition-property: background-color;
|
||||||
|
transition-duration: .5s;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar:not(.bottom):not(.left):not(.right) {
|
||||||
|
border-bottom-width: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar.bottom {
|
||||||
|
border-top-width: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar.hidden {
|
||||||
|
opacity: 0.2;
|
||||||
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
/* reset all builtin/theme styles */
|
||||||
|
all: unset;
|
||||||
|
/* Restore some properties */
|
||||||
|
min-height: 24px;
|
||||||
|
min-width: 16px;
|
||||||
|
padding: 0 10px;
|
||||||
|
transition: all 200ms ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
|
||||||
|
button:hover {
|
||||||
|
background: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar:not(.bottom):not(.left):not(.right) button:hover{
|
||||||
|
box-shadow: inset 0 -2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar.bottom button:hover {
|
||||||
|
box-shadow: inset 0 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Common module rules
|
||||||
|
*/
|
||||||
|
|
||||||
|
.modules-left > widget > label,
|
||||||
|
.modules-center > widget > label,
|
||||||
|
.modules-right > widget > label {
|
||||||
|
color: inherit;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modules-left > widget > box,
|
||||||
|
.modules-center > widget > box,
|
||||||
|
.modules-right > widget > box {
|
||||||
|
color: inherit;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If the leftmost module is a box, omit left margin and padding */
|
||||||
|
.modules-left > widget:first-child > box {
|
||||||
|
margin-left: 0;
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If the rightmost module is a box, omit right margin and padding */
|
||||||
|
.modules-right > widget:last-child > box {
|
||||||
|
margin-right: 0;
|
||||||
|
padding-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Draw module underlines
|
||||||
|
*/
|
||||||
|
window#waybar:not(.bottom):not(.left):not(.right) .modules-left > widget > label,
|
||||||
|
window#waybar:not(.bottom):not(.left):not(.right) .modules-center > widget > label,
|
||||||
|
window#waybar:not(.bottom):not(.left):not(.right) .modules-right > widget > label {
|
||||||
|
box-shadow: inset 0 -2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar.bottom .modules-left > widget > label,
|
||||||
|
window#waybar.bottom .modules-center > widget > label,
|
||||||
|
window#waybar.bottom .modules-right > widget > label {
|
||||||
|
box-shadow: inset 0 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar #window {
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button {
|
||||||
|
background-color: transparent;
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button:hover {
|
||||||
|
background: rgba(0, 0, 0, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.focused {
|
||||||
|
background-color: #64727D;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar:not(.bottom):not(.left):not(.right) #workspaces button.focused {
|
||||||
|
box-shadow: inset 0 -2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar.bottom #workspaces button.focused {
|
||||||
|
box-shadow: inset 0 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.urgent {
|
||||||
|
background-color: #eb4d4b;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mode {
|
||||||
|
background-color: #64727D;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar:not(.bottom):not(.left):not(.right) #mode {
|
||||||
|
box-shadow: inset 0 -2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar.bottom #mode {
|
||||||
|
box-shadow: inset 0 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#image {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery.charging, #battery.plugged {
|
||||||
|
color: #32cd32;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes blink {
|
||||||
|
to {
|
||||||
|
background-color: #ffffff;
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery.critical:not(.charging) {
|
||||||
|
color: #f53c3c;
|
||||||
|
animation-name: blink;
|
||||||
|
animation-duration: 0.5s;
|
||||||
|
animation-timing-function: linear;
|
||||||
|
animation-iteration-count: infinite;
|
||||||
|
animation-direction: alternate;
|
||||||
|
}
|
||||||
|
|
||||||
|
#network.disconnected,
|
||||||
|
#pulseaudio.muted,
|
||||||
|
#wireplumber.muted {
|
||||||
|
color: @inactive_module_color;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tray {
|
||||||
|
padding: 0 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tray > .passive {
|
||||||
|
-gtk-icon-effect: dim;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes needs-attention {
|
||||||
|
to {
|
||||||
|
background-color: rgba(235, 77, 75, 0.5);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#tray > .needs-attention {
|
||||||
|
-gtk-icon-effect: highlight;
|
||||||
|
animation-name: needs-attention;
|
||||||
|
animation-duration: 1s;
|
||||||
|
animation-timing-function: linear;
|
||||||
|
animation-iteration-count: infinite;
|
||||||
|
animation-direction: alternate;
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
#idle_inhibitor {
|
||||||
|
color: @inactive_module_color;
|
||||||
|
}
|
||||||
|
|
||||||
|
#idle_inhibitor.activated {
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mpd.disconnected,
|
||||||
|
#mpd.paused,
|
||||||
|
#mpd.stopped {
|
||||||
|
color: @inactive_module_color;
|
||||||
|
}
|
||||||
|
|
||||||
|
#cpu.high,
|
||||||
|
#temperature.critical {
|
||||||
|
color: #eb4d4b;
|
||||||
|
}
|
||||||
|
|
||||||
|
#language {
|
||||||
|
min-width: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#keyboard-state {
|
||||||
|
min-width: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#keyboard-state > label {
|
||||||
|
padding: 0 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#keyboard-state > label.locked {
|
||||||
|
background: rgba(0, 0, 0, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
#scratchpad {
|
||||||
|
background: rgba(0, 0, 0, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
#scratchpad.empty {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Module colors
|
||||||
|
*/
|
||||||
|
#cpu {
|
||||||
|
color: #2ecc71;
|
||||||
|
}
|
||||||
|
|
||||||
|
#memory {
|
||||||
|
color: #ba55d3;
|
||||||
|
}
|
||||||
|
|
||||||
|
#disk {
|
||||||
|
color: #964B00;
|
||||||
|
}
|
||||||
|
|
||||||
|
#backlight {
|
||||||
|
color: #90b1b1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#network {
|
||||||
|
color: #00bfff;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pulseaudio,
|
||||||
|
#wireplumber {
|
||||||
|
color: #f1c40f;
|
||||||
|
}
|
||||||
|
|
||||||
|
#temperature {
|
||||||
|
color: #f0932b;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mpd {
|
||||||
|
color: #66cc99;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mpd.paused {
|
||||||
|
color: #51a37a;
|
||||||
|
}
|
||||||
|
|
||||||
|
#language {
|
||||||
|
color: #00b093;
|
||||||
|
}
|
||||||
|
|
||||||
|
#keyboard-state {
|
||||||
|
color: #97e1ad;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
https://gitlab.com/fedora/sigs/sway/sway-config-fedora/-/merge_requests/25
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
GTK_THEME=Adwaita:dark
|
||||||
|
QT_STYLE_OVERRIDE=adwaita-dark
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
TerminalEmulator=kitty
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
general {
|
||||||
|
lock_cmd = pidof hyprlock || hyprlock # avoid starting multiple hyprlock instances.
|
||||||
|
before_sleep_cmd = loginctl lock-session # lock before suspend.
|
||||||
|
after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display.
|
||||||
|
}
|
||||||
|
|
||||||
|
listener {
|
||||||
|
timeout = 150 # 2.5min.
|
||||||
|
on-timeout = brightnessctl -s set 10 # set monitor backlight to minimum, avoid 0 on OLED monitor.
|
||||||
|
on-resume = brightnessctl -r # monitor backlight restore.
|
||||||
|
}
|
||||||
|
|
||||||
|
# turn off keyboard backlight, comment out this section if you dont have a keyboard backlight.
|
||||||
|
listener {
|
||||||
|
timeout = 150 # 2.5min.
|
||||||
|
on-timeout = brightnessctl -sd rgb:kbd_backlight set 0 # turn off keyboard backlight.
|
||||||
|
on-resume = brightnessctl -rd rgb:kbd_backlight # turn on keyboard backlight.
|
||||||
|
}
|
||||||
|
|
||||||
|
listener {
|
||||||
|
timeout = 300 # 5min
|
||||||
|
on-timeout = loginctl lock-session # lock screen when timeout has passed
|
||||||
|
}
|
||||||
|
|
||||||
|
listener {
|
||||||
|
timeout = 330 # 5.5min
|
||||||
|
on-timeout = hyprctl dispatch dpms off # screen off when timeout has passed
|
||||||
|
on-resume = hyprctl dispatch dpms on # screen on when activity is detected after timeout has fired.
|
||||||
|
}
|
||||||
|
|
||||||
|
listener {
|
||||||
|
timeout = 1800 # 30min
|
||||||
|
on-timeout = systemctl suspend # suspend pc
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
widget_name {
|
||||||
|
monitor =
|
||||||
|
}
|
||||||
|
|
||||||
|
background {
|
||||||
|
monitor =
|
||||||
|
path = /usr/share/backgrounds/default.png
|
||||||
|
}
|
||||||
|
|
||||||
|
input-field {
|
||||||
|
monitor =
|
||||||
|
}
|
||||||
16
ostree-images/river/files/system/hyprland/usr/bin/starthyprland
Executable file
16
ostree-images/river/files/system/hyprland/usr/bin/starthyprland
Executable file
|
|
@ -0,0 +1,16 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Tell this script to exit if there are any errors.
|
||||||
|
# You should have this in every custom script, to ensure that your completed
|
||||||
|
# builds actually ran successfully without any errors!
|
||||||
|
set -oue pipefail
|
||||||
|
|
||||||
|
|
||||||
|
hyprland_conf="$HOME/.config/hypr/hyprland.conf"
|
||||||
|
default_conf="/usr/share/hyprland/hyprland.conf"
|
||||||
|
|
||||||
|
if [ -f "$hyprland_conf" ]; then
|
||||||
|
Hyprland -c "$hyprland_conf"
|
||||||
|
else
|
||||||
|
Hyprland -c "$default_conf"
|
||||||
|
fi
|
||||||
|
|
@ -0,0 +1,195 @@
|
||||||
|
|
||||||
|
autogenerated = 0
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Monitors/
|
||||||
|
monitor=,preferred,auto,1
|
||||||
|
|
||||||
|
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
||||||
|
|
||||||
|
# Source a file (multi-file configs)
|
||||||
|
# source = ~/.config/hypr/myColors.conf
|
||||||
|
|
||||||
|
# Some default env vars.
|
||||||
|
env = XCURSOR_SIZE,24
|
||||||
|
env = GTK_THEME,Adwaita:dark
|
||||||
|
env = QT_STYLE_OVERRIDE,adwaita-dark
|
||||||
|
|
||||||
|
cursor {
|
||||||
|
no_hardware_cursors = true
|
||||||
|
}
|
||||||
|
|
||||||
|
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
|
||||||
|
input {
|
||||||
|
kb_layout = us
|
||||||
|
kb_variant =
|
||||||
|
kb_model =
|
||||||
|
kb_options =
|
||||||
|
kb_rules =
|
||||||
|
|
||||||
|
follow_mouse = 1
|
||||||
|
|
||||||
|
touchpad {
|
||||||
|
natural_scroll = no
|
||||||
|
}
|
||||||
|
|
||||||
|
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
|
||||||
|
}
|
||||||
|
|
||||||
|
general {
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||||
|
|
||||||
|
gaps_in = 4
|
||||||
|
gaps_out = 4
|
||||||
|
border_size = 2
|
||||||
|
col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
|
||||||
|
col.inactive_border = rgba(595959aa)
|
||||||
|
|
||||||
|
layout = dwindle
|
||||||
|
|
||||||
|
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
|
||||||
|
allow_tearing = false
|
||||||
|
}
|
||||||
|
|
||||||
|
decoration {
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||||
|
|
||||||
|
rounding = 10
|
||||||
|
|
||||||
|
blur {
|
||||||
|
enabled = true
|
||||||
|
size = 3
|
||||||
|
passes = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
drop_shadow = yes
|
||||||
|
shadow_range = 4
|
||||||
|
shadow_render_power = 3
|
||||||
|
col.shadow = rgba(1a1a1aee)
|
||||||
|
}
|
||||||
|
|
||||||
|
animations {
|
||||||
|
enabled = yes
|
||||||
|
|
||||||
|
# Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
|
||||||
|
|
||||||
|
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
|
||||||
|
|
||||||
|
animation = windows, 1, 7, myBezier
|
||||||
|
animation = windowsOut, 1, 7, default, popin 80%
|
||||||
|
animation = border, 1, 10, default
|
||||||
|
animation = borderangle, 1, 8, default
|
||||||
|
animation = fade, 1, 7, default
|
||||||
|
animation = workspaces, 1, 6, default
|
||||||
|
}
|
||||||
|
|
||||||
|
dwindle {
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
|
||||||
|
pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
||||||
|
preserve_split = yes # you probably want this
|
||||||
|
}
|
||||||
|
|
||||||
|
master {
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
||||||
|
new_status = master
|
||||||
|
}
|
||||||
|
|
||||||
|
gestures {
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||||
|
workspace_swipe = off
|
||||||
|
}
|
||||||
|
|
||||||
|
misc {
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||||
|
force_default_wallpaper = 0 # Set to 0 to disable the anime mascot wallpapers
|
||||||
|
disable_splash_rendering = true
|
||||||
|
}
|
||||||
|
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
||||||
|
$mainMod = SUPER
|
||||||
|
|
||||||
|
$lockCommand = hyprlock
|
||||||
|
|
||||||
|
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
|
||||||
|
bind = $mainMod, Q, exec, kitty
|
||||||
|
bind = $mainMod, C, killactive,
|
||||||
|
bind = $mainMod, M, exit,
|
||||||
|
bind = $mainMod, E, exec, thunar
|
||||||
|
bind = $mainMod, V, togglefloating,
|
||||||
|
bind = $mainMod, R, exec, rofi -show drun
|
||||||
|
bind = $mainMod, P, pseudo, # dwindle
|
||||||
|
bind = $mainMod, J, togglesplit, # dwindle
|
||||||
|
bind = $mainMod, L, exec, $lockCommand
|
||||||
|
bind = $mainMod, F, fullscreen
|
||||||
|
|
||||||
|
# Move focus with mainMod + arrow keys
|
||||||
|
bind = $mainMod, left, movefocus, l
|
||||||
|
bind = $mainMod, right, movefocus, r
|
||||||
|
bind = $mainMod, up, movefocus, u
|
||||||
|
bind = $mainMod, down, movefocus, d
|
||||||
|
|
||||||
|
# Switch workspaces with mainMod + [0-9]
|
||||||
|
bind = $mainMod, 1, workspace, 1
|
||||||
|
bind = $mainMod, 2, workspace, 2
|
||||||
|
bind = $mainMod, 3, workspace, 3
|
||||||
|
bind = $mainMod, 4, workspace, 4
|
||||||
|
bind = $mainMod, 5, workspace, 5
|
||||||
|
bind = $mainMod, 6, workspace, 6
|
||||||
|
bind = $mainMod, 7, workspace, 7
|
||||||
|
bind = $mainMod, 8, workspace, 8
|
||||||
|
bind = $mainMod, 9, workspace, 9
|
||||||
|
bind = $mainMod, 0, workspace, 10
|
||||||
|
|
||||||
|
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||||
|
bind = $mainMod SHIFT, 1, movetoworkspace, 1
|
||||||
|
bind = $mainMod SHIFT, 2, movetoworkspace, 2
|
||||||
|
bind = $mainMod SHIFT, 3, movetoworkspace, 3
|
||||||
|
bind = $mainMod SHIFT, 4, movetoworkspace, 4
|
||||||
|
bind = $mainMod SHIFT, 5, movetoworkspace, 5
|
||||||
|
bind = $mainMod SHIFT, 6, movetoworkspace, 6
|
||||||
|
bind = $mainMod SHIFT, 7, movetoworkspace, 7
|
||||||
|
bind = $mainMod SHIFT, 8, movetoworkspace, 8
|
||||||
|
bind = $mainMod SHIFT, 9, movetoworkspace, 9
|
||||||
|
bind = $mainMod SHIFT, 0, movetoworkspace, 10
|
||||||
|
|
||||||
|
# screenshot
|
||||||
|
bind = , Print, exec, grim -g "$(slurp -d)" - | wl-copy
|
||||||
|
|
||||||
|
# Volume and Media Control
|
||||||
|
bind = , XF86AudioRaiseVolume, exec, pamixer -i 5
|
||||||
|
bind = , XF86AudioLowerVolume, exec, pamixer -d 5
|
||||||
|
bind = , XF86AudioMicMute, exec, pamixer --default-source -m
|
||||||
|
bind = , XF86AudioMute, exec, pamixer -t
|
||||||
|
bind = , XF86AudioPlay, exec, playerctl play-pause
|
||||||
|
bind = , XF86AudioPause, exec, playerctl play-pause
|
||||||
|
bind = , XF86AudioNext, exec, playerctl next
|
||||||
|
bind = , XF86AudioPrev, exec, playerctl previous
|
||||||
|
|
||||||
|
# Screen brightness
|
||||||
|
bind = , XF86MonBrightnessUp, exec, brightnessctl s +5%
|
||||||
|
bind = , XF86MonBrightnessDown, exec, brightnessctl s 5%-
|
||||||
|
|
||||||
|
# Keyboard backlight
|
||||||
|
bind = , xf86KbdBrightnessUp, exec, brightnessctl -d *::kbd_backlight set +33%
|
||||||
|
bind = , xf86KbdBrightnessDown, exec, brightnessctl -d *::kbd_backlight set 33%-
|
||||||
|
|
||||||
|
# Example special workspace (scratchpad)
|
||||||
|
bind = $mainMod, S, togglespecialworkspace, magic
|
||||||
|
bind = $mainMod SHIFT, S, movetoworkspace, special:magic
|
||||||
|
|
||||||
|
# Scroll through existing workspaces with mainMod + scroll
|
||||||
|
bind = $mainMod, mouse_down, workspace, e+1
|
||||||
|
bind = $mainMod, mouse_up, workspace, e-1
|
||||||
|
|
||||||
|
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||||
|
bindm = $mainMod, mouse:272, movewindow
|
||||||
|
bindm = $mainMod, mouse:273, resizewindow
|
||||||
|
|
||||||
|
|
||||||
|
exec-once = /usr/libexec/xdg-desktop-portal-hyprland
|
||||||
|
exec-once = /usr/libexec/xdg-desktop-portal-gtk
|
||||||
|
exec-once = /usr/libexec/xdg-desktop-portal
|
||||||
|
exec-once = dbus-update-activation-environment --all
|
||||||
|
exec-once = /usr/bin/gnome-keyring-daemon --start --components=secrets
|
||||||
|
exec-once = exec /usr/libexec/pam_kwallet_init
|
||||||
|
exec-once = waybar & /usr/libexec/xfce-polkit & dunst & nm-applet
|
||||||
|
exec-once = hypridle -c /etc/xdg/hypr/hypridle.conf
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
[Desktop Entry]
|
||||||
|
Name=Hyprland
|
||||||
|
Comment=An intelligent dynamic tiling Wayland compositor
|
||||||
|
Exec=/usr/bin/starthyprland
|
||||||
|
Type=Application
|
||||||
2
ostree-images/river/files/system/river/etc/environment
Normal file
2
ostree-images/river/files/system/river/etc/environment
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
GTK_THEME=Adwaita:dark
|
||||||
|
QT_STYLE_OVERRIDE=adwaita-dark
|
||||||
184
ostree-images/river/files/system/river/etc/river/init
Executable file
184
ostree-images/river/files/system/river/etc/river/init
Executable file
|
|
@ -0,0 +1,184 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# This is the example configuration file for river.
|
||||||
|
#
|
||||||
|
# If you wish to edit this, you will probably want to copy it to
|
||||||
|
# $XDG_CONFIG_HOME/river/init or $HOME/.config/river/init first.
|
||||||
|
#
|
||||||
|
# See the river(1), riverctl(1), and rivertile(1) man pages for complete
|
||||||
|
# documentation.
|
||||||
|
|
||||||
|
# Note: the "Super" modifier is also known as Logo, GUI, Windows, Mod4, etc.
|
||||||
|
|
||||||
|
# Super+Shift+Return to start an instance of foot
|
||||||
|
riverctl map normal Super+Shift Return spawn foot
|
||||||
|
|
||||||
|
# launcher
|
||||||
|
riverctl map normal Super D spawn "rofi -show drun"
|
||||||
|
|
||||||
|
# Super+Q to close the focused view
|
||||||
|
riverctl map normal Super Q close
|
||||||
|
|
||||||
|
# Super+Shift+E to exit river
|
||||||
|
riverctl map normal Super+Shift E exit
|
||||||
|
|
||||||
|
# Super+J and Super+K to focus the next/previous view in the layout stack
|
||||||
|
riverctl map normal Super J focus-view next
|
||||||
|
riverctl map normal Super K focus-view previous
|
||||||
|
|
||||||
|
# Super+Shift+J and Super+Shift+K to swap the focused view with the next/previous
|
||||||
|
# view in the layout stack
|
||||||
|
riverctl map normal Super+Shift J swap next
|
||||||
|
riverctl map normal Super+Shift K swap previous
|
||||||
|
|
||||||
|
# Super+Period and Super+Comma to focus the next/previous output
|
||||||
|
riverctl map normal Super Period focus-output next
|
||||||
|
riverctl map normal Super Comma focus-output previous
|
||||||
|
|
||||||
|
# Super+Shift+{Period,Comma} to send the focused view to the next/previous output
|
||||||
|
riverctl map normal Super+Shift Period send-to-output next
|
||||||
|
riverctl map normal Super+Shift Comma send-to-output previous
|
||||||
|
|
||||||
|
# Super+Return to bump the focused view to the top of the layout stack
|
||||||
|
riverctl map normal Super Return zoom
|
||||||
|
|
||||||
|
# Super+H and Super+L to decrease/increase the main ratio of rivertile(1)
|
||||||
|
riverctl map normal Super H send-layout-cmd rivertile "main-ratio -0.05"
|
||||||
|
riverctl map normal Super L send-layout-cmd rivertile "main-ratio +0.05"
|
||||||
|
|
||||||
|
# Super+Shift+H and Super+Shift+L to increment/decrement the main count of rivertile(1)
|
||||||
|
riverctl map normal Super+Shift H send-layout-cmd rivertile "main-count +1"
|
||||||
|
riverctl map normal Super+Shift L send-layout-cmd rivertile "main-count -1"
|
||||||
|
|
||||||
|
# Super+Alt+{H,J,K,L} to move views
|
||||||
|
riverctl map normal Super+Alt H move left 100
|
||||||
|
riverctl map normal Super+Alt J move down 100
|
||||||
|
riverctl map normal Super+Alt K move up 100
|
||||||
|
riverctl map normal Super+Alt L move right 100
|
||||||
|
|
||||||
|
# Super+Alt+Control+{H,J,K,L} to snap views to screen edges
|
||||||
|
riverctl map normal Super+Alt+Control H snap left
|
||||||
|
riverctl map normal Super+Alt+Control J snap down
|
||||||
|
riverctl map normal Super+Alt+Control K snap up
|
||||||
|
riverctl map normal Super+Alt+Control L snap right
|
||||||
|
|
||||||
|
# Super+Alt+Shift+{H,J,K,L} to resize views
|
||||||
|
riverctl map normal Super+Alt+Shift H resize horizontal -100
|
||||||
|
riverctl map normal Super+Alt+Shift J resize vertical 100
|
||||||
|
riverctl map normal Super+Alt+Shift K resize vertical -100
|
||||||
|
riverctl map normal Super+Alt+Shift L resize horizontal 100
|
||||||
|
|
||||||
|
# Super + Left Mouse Button to move views
|
||||||
|
riverctl map-pointer normal Super BTN_LEFT move-view
|
||||||
|
|
||||||
|
# Super + Right Mouse Button to resize views
|
||||||
|
riverctl map-pointer normal Super BTN_RIGHT resize-view
|
||||||
|
|
||||||
|
# Super + Middle Mouse Button to toggle float
|
||||||
|
riverctl map-pointer normal Super BTN_MIDDLE toggle-float
|
||||||
|
|
||||||
|
for i in $(seq 1 9)
|
||||||
|
do
|
||||||
|
tags=$((1 << ($i - 1)))
|
||||||
|
|
||||||
|
# Super+[1-9] to focus tag [0-8]
|
||||||
|
riverctl map normal Super $i set-focused-tags $tags
|
||||||
|
|
||||||
|
# Super+Shift+[1-9] to tag focused view with tag [0-8]
|
||||||
|
riverctl map normal Super+Shift $i set-view-tags $tags
|
||||||
|
|
||||||
|
# Super+Control+[1-9] to toggle focus of tag [0-8]
|
||||||
|
riverctl map normal Super+Control $i toggle-focused-tags $tags
|
||||||
|
|
||||||
|
# Super+Shift+Control+[1-9] to toggle tag [0-8] of focused view
|
||||||
|
riverctl map normal Super+Shift+Control $i toggle-view-tags $tags
|
||||||
|
done
|
||||||
|
|
||||||
|
# Super+0 to focus all tags
|
||||||
|
# Super+Shift+0 to tag focused view with all tags
|
||||||
|
all_tags=$(((1 << 32) - 1))
|
||||||
|
riverctl map normal Super 0 set-focused-tags $all_tags
|
||||||
|
riverctl map normal Super+Shift 0 set-view-tags $all_tags
|
||||||
|
|
||||||
|
# Super+Space to toggle float
|
||||||
|
riverctl map normal Super Space toggle-float
|
||||||
|
|
||||||
|
# Super+F to toggle fullscreen
|
||||||
|
riverctl map normal Super F toggle-fullscreen
|
||||||
|
|
||||||
|
# Super+{Up,Right,Down,Left} to change layout orientation
|
||||||
|
riverctl map normal Super Up send-layout-cmd rivertile "main-location top"
|
||||||
|
riverctl map normal Super Right send-layout-cmd rivertile "main-location right"
|
||||||
|
riverctl map normal Super Down send-layout-cmd rivertile "main-location bottom"
|
||||||
|
riverctl map normal Super Left send-layout-cmd rivertile "main-location left"
|
||||||
|
|
||||||
|
# Declare a passthrough mode. This mode has only a single mapping to return to
|
||||||
|
# normal mode. This makes it useful for testing a nested wayland compositor
|
||||||
|
riverctl declare-mode passthrough
|
||||||
|
|
||||||
|
# Super+F11 to enter passthrough mode
|
||||||
|
riverctl map normal Super F11 enter-mode passthrough
|
||||||
|
|
||||||
|
# Super+F11 to return to normal mode
|
||||||
|
riverctl map passthrough Super F11 enter-mode normal
|
||||||
|
|
||||||
|
# Various media key mapping examples for both normal and locked mode which do
|
||||||
|
# not have a modifier
|
||||||
|
for mode in normal locked
|
||||||
|
do
|
||||||
|
# Eject the optical drive (well if you still have one that is)
|
||||||
|
riverctl map $mode None XF86Eject spawn 'eject -T'
|
||||||
|
|
||||||
|
# Control pulse audio volume with pamixer (https://github.com/cdemoulins/pamixer)
|
||||||
|
riverctl map $mode None XF86AudioRaiseVolume spawn 'pamixer -i 5'
|
||||||
|
riverctl map $mode None XF86AudioLowerVolume spawn 'pamixer -d 5'
|
||||||
|
riverctl map $mode None XF86AudioMute spawn 'pamixer --toggle-mute'
|
||||||
|
|
||||||
|
# Control MPRIS aware media players with playerctl (https://github.com/altdesktop/playerctl)
|
||||||
|
riverctl map $mode None XF86AudioMedia spawn 'playerctl play-pause'
|
||||||
|
riverctl map $mode None XF86AudioPlay spawn 'playerctl play-pause'
|
||||||
|
riverctl map $mode None XF86AudioPrev spawn 'playerctl previous'
|
||||||
|
riverctl map $mode None XF86AudioNext spawn 'playerctl next'
|
||||||
|
|
||||||
|
riverctl map $mode None XF86MonBrightnessUp spawn 'brightnessctl s +5%'
|
||||||
|
riverctl map $mode None XF86MonBrightnessDown spawn 'brightnessctl s 5%-'
|
||||||
|
done
|
||||||
|
|
||||||
|
# Set background and border color
|
||||||
|
riverctl background-color 0x002b36
|
||||||
|
riverctl border-color-focused 0x93a1a1
|
||||||
|
riverctl border-color-unfocused 0x586e75
|
||||||
|
|
||||||
|
# Set keyboard repeat rate
|
||||||
|
riverctl set-repeat 50 300
|
||||||
|
|
||||||
|
# Make all views with an app-id that starts with "float" and title "foo" start floating.
|
||||||
|
riverctl rule-add -app-id 'float*' -title 'foo' float
|
||||||
|
|
||||||
|
# Make all views with app-id "bar" and any title use client-side decorations
|
||||||
|
riverctl rule-add -app-id "bar" csd
|
||||||
|
|
||||||
|
# Set the default layout generator to be rivertile and start it.
|
||||||
|
# River will send the process group of the init executable SIGTERM on exit.
|
||||||
|
riverctl default-layout rivertile
|
||||||
|
rivertile -view-padding 2 -outer-padding 2 &
|
||||||
|
|
||||||
|
riverctl focus-follows-cursor always
|
||||||
|
|
||||||
|
riverctl map normal Super Escape spawn "swaylock -f"
|
||||||
|
|
||||||
|
riverctl map normal None Print spawn 'grim -g "$(slurp -d)" - | wl-copy'
|
||||||
|
|
||||||
|
riverctl spawn dunst
|
||||||
|
riverctl spawn pipewire
|
||||||
|
riverctl spawn pipewire-pulse
|
||||||
|
riverctl spawn wireplumber
|
||||||
|
riverctl spawn "/usr/libexec/xfce-polkit"
|
||||||
|
riverctl spawn waybar
|
||||||
|
riverctl spawn kanshi
|
||||||
|
riverctl spawn nm-applet
|
||||||
|
|
||||||
|
exec dbus-update-activation-environment --all
|
||||||
|
exec gnome-keyring-daemon --start --components=secrets
|
||||||
|
exec /usr/libexec/pam_kwallet_init
|
||||||
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
TerminalEmulator=foot
|
||||||
15
ostree-images/river/files/system/river/usr/bin/startriver
Executable file
15
ostree-images/river/files/system/river/usr/bin/startriver
Executable file
|
|
@ -0,0 +1,15 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Tell this script to exit if there are any errors.
|
||||||
|
# You should have this in every custom script, to ensure that your completed
|
||||||
|
# builds actually ran successfully without any errors!
|
||||||
|
set -oue pipefail
|
||||||
|
|
||||||
|
|
||||||
|
river_conf="$HOME/.config/river/init"
|
||||||
|
|
||||||
|
if [ -f "$river_conf" ]; then
|
||||||
|
river
|
||||||
|
else
|
||||||
|
XDG_CONFIG_HOME=/usr/etc/ river
|
||||||
|
fi
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
[Desktop Entry]
|
||||||
|
Name=River
|
||||||
|
Comment=A dynamic tiling wayland compositor
|
||||||
|
DesktopNames=river
|
||||||
|
Exec=/usr/bin/startriver
|
||||||
|
Type=Application
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
TerminalEmulator=foot
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
exec dbus-update-activation-environment --all
|
||||||
|
exec /usr/bin/gnome-keyring-daemon --start --components=secrets
|
||||||
|
exec /usr/libexec/pam_kwallet_init
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
input * {
|
||||||
|
tap enabled
|
||||||
|
}
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 1.5 MiB |
Binary file not shown.
|
After Width: | Height: | Size: 23 KiB |
|
|
@ -0,0 +1,24 @@
|
||||||
|
alias brew := install-brew
|
||||||
|
|
||||||
|
# Install Homebrew | https://brew.sh
|
||||||
|
install-brew:
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
source /usr/lib/ujust/ujust.sh
|
||||||
|
if [[ ! -f "/var/home/linuxbrew/.linuxbrew/bin" || ! -x "/var/home/linuxbrew/.linuxbrew/bin/brew" ]]; then
|
||||||
|
echo "${b}Brew Installation${n}"
|
||||||
|
echo "Please ${b}IGNORE${n} everything the installer tells you to do at the end"
|
||||||
|
echo "We have already done it for you! You just need to close and re-open the terminal after installation"
|
||||||
|
echo "Do you understand?"
|
||||||
|
echo "Please type in \"YES I UNDERSTAND\" and press enter"
|
||||||
|
read ACCEPT
|
||||||
|
if [ "$ACCEPT" == "YES I UNDERSTAND" ]; then
|
||||||
|
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||||||
|
else
|
||||||
|
echo "Capitalization matters when you type \"YES I UNDERSTAND\""
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Removes homebrew from system
|
||||||
|
remove-brew:
|
||||||
|
echo "Removing homebrew ..."
|
||||||
|
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"
|
||||||
3
ostree-images/river/files/system/wayfire/etc/environment
Normal file
3
ostree-images/river/files/system/wayfire/etc/environment
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
WAYFIRE_CONFIG_FILE=/usr/share/wayfire/wayfire.ini
|
||||||
|
GTK_THEME=Adwaita:dark
|
||||||
|
QT_STYLE_OVERRIDE=adwaita-dark
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
TerminalEmulator=foot
|
||||||
16
ostree-images/river/files/system/wayfire/usr/bin/startwayfire
Executable file
16
ostree-images/river/files/system/wayfire/usr/bin/startwayfire
Executable file
|
|
@ -0,0 +1,16 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Tell this script to exit if there are any errors.
|
||||||
|
# You should have this in every custom script, to ensure that your completed
|
||||||
|
# builds actually ran successfully without any errors!
|
||||||
|
set -oue pipefail
|
||||||
|
|
||||||
|
|
||||||
|
wayfire_conf="$HOME/.config/wayfire.ini"
|
||||||
|
default_conf="/usr/share/wayfire/wayfire.ini"
|
||||||
|
|
||||||
|
if [ -f "$wayfire_conf" ]; then
|
||||||
|
wayfire -c "$wayfire_conf"
|
||||||
|
else
|
||||||
|
wayfire -c "$default_conf"
|
||||||
|
fi
|
||||||
|
|
@ -0,0 +1,332 @@
|
||||||
|
# Default config for Wayfire
|
||||||
|
#
|
||||||
|
# Copy this to ~/.config/wayfire.ini and edit it to your liking.
|
||||||
|
#
|
||||||
|
# Take the tutorial to get started.
|
||||||
|
# https://github.com/WayfireWM/wayfire/wiki/Tutorial
|
||||||
|
#
|
||||||
|
# Read the Configuration document for a complete reference.
|
||||||
|
# https://github.com/WayfireWM/wayfire/wiki/Configuration
|
||||||
|
|
||||||
|
# Input configuration ──────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
# Example configuration:
|
||||||
|
#
|
||||||
|
# [input]
|
||||||
|
# xkb_layout = us,fr
|
||||||
|
# xkb_variant = dvorak,bepo
|
||||||
|
# xkb_options = grp:win_space_toggle
|
||||||
|
#
|
||||||
|
# See Input options for a complete reference.
|
||||||
|
# https://github.com/WayfireWM/wayfire/wiki/Configuration#input
|
||||||
|
|
||||||
|
# Output configuration ─────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
# Example configuration:
|
||||||
|
#
|
||||||
|
# [output:eDP-1]
|
||||||
|
# mode = 1920x1080@60000
|
||||||
|
# position = 0,0
|
||||||
|
# transform = normal
|
||||||
|
# scale = 1.000000
|
||||||
|
#
|
||||||
|
# You can get the names of your outputs with wlr-randr.
|
||||||
|
# https://github.com/emersion/wlr-randr
|
||||||
|
#
|
||||||
|
# See also kanshi for configuring your outputs automatically.
|
||||||
|
# https://wayland.emersion.fr/kanshi/
|
||||||
|
#
|
||||||
|
# See Output options for a complete reference.
|
||||||
|
# https://github.com/WayfireWM/wayfire/wiki/Configuration#output
|
||||||
|
|
||||||
|
# Core options ─────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
[core]
|
||||||
|
|
||||||
|
# List of plugins to be enabled.
|
||||||
|
# See the Configuration document for a complete list.
|
||||||
|
plugins = \
|
||||||
|
alpha \
|
||||||
|
animate \
|
||||||
|
autostart \
|
||||||
|
command \
|
||||||
|
cube \
|
||||||
|
decoration \
|
||||||
|
expo \
|
||||||
|
fast-switcher \
|
||||||
|
fisheye \
|
||||||
|
foreign-toplevel \
|
||||||
|
grid \
|
||||||
|
gtk-shell \
|
||||||
|
idle \
|
||||||
|
invert \
|
||||||
|
move \
|
||||||
|
oswitch \
|
||||||
|
place \
|
||||||
|
resize \
|
||||||
|
shortcuts-inhibit \
|
||||||
|
switcher \
|
||||||
|
vswitch \
|
||||||
|
wayfire-shell \
|
||||||
|
window-rules \
|
||||||
|
wm-actions \
|
||||||
|
wobbly \
|
||||||
|
wrot \
|
||||||
|
zoom
|
||||||
|
|
||||||
|
# Note: [blur] is not enabled by default, because it can be resource-intensive.
|
||||||
|
# Feel free to add it to the list if you want it.
|
||||||
|
# You can find its documentation here:
|
||||||
|
# https://github.com/WayfireWM/wayfire/wiki/Configuration#blur
|
||||||
|
|
||||||
|
# Close focused window.
|
||||||
|
close_top_view = <super> KEY_Q | <alt> KEY_F4
|
||||||
|
|
||||||
|
# Workspaces arranged into a grid: 3 × 3.
|
||||||
|
vwidth = 3
|
||||||
|
vheight = 3
|
||||||
|
|
||||||
|
# Prefer client-side decoration or server-side decoration
|
||||||
|
preferred_decoration_mode = client
|
||||||
|
|
||||||
|
# Mouse bindings ───────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
# Drag windows by holding down Super and left mouse button.
|
||||||
|
[move]
|
||||||
|
activate = <super> BTN_LEFT
|
||||||
|
|
||||||
|
# Resize them with right mouse button + Super.
|
||||||
|
[resize]
|
||||||
|
activate = <super> BTN_RIGHT
|
||||||
|
|
||||||
|
# Zoom in the desktop by scrolling + Super.
|
||||||
|
[zoom]
|
||||||
|
modifier = <super>
|
||||||
|
|
||||||
|
# Change opacity by scrolling with Super + Alt.
|
||||||
|
[alpha]
|
||||||
|
modifier = <super> <alt>
|
||||||
|
|
||||||
|
# Rotate windows with the mouse.
|
||||||
|
[wrot]
|
||||||
|
activate = <super> <ctrl> BTN_RIGHT
|
||||||
|
|
||||||
|
# Fisheye effect.
|
||||||
|
[fisheye]
|
||||||
|
toggle = <super> <ctrl> KEY_F
|
||||||
|
|
||||||
|
# Startup commands ─────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
[autostart]
|
||||||
|
|
||||||
|
# Automatically start background and panel.
|
||||||
|
# Set to false if you want to override the default clients.
|
||||||
|
autostart_wf_shell = false
|
||||||
|
background = wf-background -c /usr/share/wayfire/wf-shell.ini
|
||||||
|
panel = wf-panel -c /usr/share/wayfire/wf-shell.ini
|
||||||
|
|
||||||
|
# Set the wallpaper, start a panel and dock if you want one.
|
||||||
|
# https://github.com/WayfireWM/wf-shell
|
||||||
|
#
|
||||||
|
# These are started by the autostart_wf_shell option above.
|
||||||
|
#
|
||||||
|
# background = wf-background
|
||||||
|
# panel = wf-panel
|
||||||
|
# dock = wf-dock
|
||||||
|
|
||||||
|
# Output configuration
|
||||||
|
# https://wayland.emersion.fr/kanshi/
|
||||||
|
outputs = kanshi
|
||||||
|
|
||||||
|
# Notifications
|
||||||
|
notifications = dunst
|
||||||
|
|
||||||
|
# Screen color temperature
|
||||||
|
# https://sr.ht/~kennylevinsen/wlsunset/
|
||||||
|
gamma = wlsunset
|
||||||
|
|
||||||
|
# Idle configuration
|
||||||
|
# https://github.com/swaywm/swayidle
|
||||||
|
# https://github.com/swaywm/swaylock
|
||||||
|
idle = swayidle before-sleep 'swaylock'
|
||||||
|
|
||||||
|
# XDG desktop portal
|
||||||
|
# Needed by some GTK applications
|
||||||
|
portal = /usr/libexec/xdg-desktop-portal-gtk
|
||||||
|
|
||||||
|
polkit = /usr/libexec/xfce-polkit
|
||||||
|
|
||||||
|
GTK_Theme=adw-gtk3-dark
|
||||||
|
GDK_BACKEND=wayland
|
||||||
|
|
||||||
|
nm_applet = nm-applet --indicator
|
||||||
|
bt_applet = blueman-applet
|
||||||
|
|
||||||
|
0_environment = dbus-update-activation-environment --systemd WAYLAND_DISPLAY DISPLAY XAUTHORITY
|
||||||
|
keyring = /usr/bin/gnome-keyring-daemon --start --components=secrets
|
||||||
|
kwallet = exec /usr/libexec/pam_kwallet_init
|
||||||
|
|
||||||
|
# Example configuration:
|
||||||
|
#
|
||||||
|
# [idle]
|
||||||
|
# toggle = <super> KEY_Z
|
||||||
|
# screensaver_timeout = 300
|
||||||
|
# dpms_timeout = 600
|
||||||
|
#
|
||||||
|
# Disables the compositor going idle with Super + z.
|
||||||
|
# This will lock your screen after 300 seconds of inactivity, then turn off
|
||||||
|
# your displays after another 300 seconds.
|
||||||
|
|
||||||
|
# Applications ─────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
[command]
|
||||||
|
|
||||||
|
# Start a terminal
|
||||||
|
# https://github.com/alacritty/alacritty
|
||||||
|
binding_terminal = <super> KEY_ENTER
|
||||||
|
command_terminal = foot
|
||||||
|
|
||||||
|
# Start your launcher
|
||||||
|
binding_launcher = <super> <shift> KEY_ENTER
|
||||||
|
command_launcher = rofi -show drun
|
||||||
|
|
||||||
|
# Screen locker
|
||||||
|
# https://github.com/swaywm/swaylock
|
||||||
|
binding_lock = <super> <shift> KEY_ESC
|
||||||
|
command_lock = swaylock
|
||||||
|
|
||||||
|
# Logout
|
||||||
|
# https://github.com/ArtsyMacaw/wlogout
|
||||||
|
binding_logout = <super> KEY_ESC
|
||||||
|
command_logout = wlogout
|
||||||
|
|
||||||
|
# Screenshots
|
||||||
|
# https://wayland.emersion.fr/grim/
|
||||||
|
# https://wayland.emersion.fr/slurp/
|
||||||
|
binding_screenshot = KEY_PRINT
|
||||||
|
command_screenshot = grim $(date '+%F_%T').webp
|
||||||
|
binding_screenshot_interactive = <shift> KEY_PRINT
|
||||||
|
command_screenshot_interactive = slurp | grim -g - $(date '+%F_%T').webp
|
||||||
|
|
||||||
|
# Volume controls
|
||||||
|
# https://alsa-project.org
|
||||||
|
repeatable_binding_volume_up = KEY_VOLUMEUP
|
||||||
|
command_volume_up = amixer set Master 5%+
|
||||||
|
repeatable_binding_volume_down = KEY_VOLUMEDOWN
|
||||||
|
command_volume_down = amixer set Master 5%-
|
||||||
|
binding_mute = KEY_MUTE
|
||||||
|
command_mute = amixer set Master toggle
|
||||||
|
|
||||||
|
# Screen brightness
|
||||||
|
repeatable_binding_light_up = KEY_BRIGHTNESSUP
|
||||||
|
command_light_up = brightnessctl s +5%
|
||||||
|
repeatable_binding_light_down = KEY_BRIGHTNESSDOWN
|
||||||
|
command_light_down = brightnessctl s 5%-
|
||||||
|
|
||||||
|
# Windows ──────────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
# Actions related to window management functionalities.
|
||||||
|
#
|
||||||
|
# Example configuration:
|
||||||
|
#
|
||||||
|
# [wm-actions]
|
||||||
|
# toggle_fullscreen = <super> KEY_F
|
||||||
|
# toggle_always_on_top = <super> KEY_X
|
||||||
|
# toggle_sticky = <super> <shift> KEY_X
|
||||||
|
|
||||||
|
# Position the windows in certain regions of the output.
|
||||||
|
[grid]
|
||||||
|
#
|
||||||
|
# ⇱ ↑ ⇲ │ 7 8 9
|
||||||
|
# ← f → │ 4 5 6
|
||||||
|
# ⇱ ↓ ⇲ d │ 1 2 3 0
|
||||||
|
# ‾ ‾
|
||||||
|
slot_bl = <super> KEY_KP1
|
||||||
|
slot_b = <super> KEY_KP2
|
||||||
|
slot_br = <super> KEY_KP3
|
||||||
|
slot_l = <super> KEY_LEFT | <super> KEY_KP4
|
||||||
|
slot_c = <super> KEY_UP | <super> KEY_KP5
|
||||||
|
slot_r = <super> KEY_RIGHT | <super> KEY_KP6
|
||||||
|
slot_tl = <super> KEY_KP7
|
||||||
|
slot_t = <super> KEY_KP8
|
||||||
|
slot_tr = <super> KEY_KP9
|
||||||
|
# Restore default.
|
||||||
|
restore = <super> KEY_DOWN | <super> KEY_KP0
|
||||||
|
|
||||||
|
# Change active window with an animation.
|
||||||
|
[switcher]
|
||||||
|
next_view = <alt> KEY_TAB
|
||||||
|
prev_view = <alt> <shift> KEY_TAB
|
||||||
|
|
||||||
|
# Simple active window switcher.
|
||||||
|
[fast-switcher]
|
||||||
|
activate = <alt> KEY_ESC
|
||||||
|
|
||||||
|
# Workspaces ───────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
# Switch to workspace.
|
||||||
|
[vswitch]
|
||||||
|
binding_left = <ctrl> <super> KEY_LEFT
|
||||||
|
binding_down = <ctrl> <super> KEY_DOWN
|
||||||
|
binding_up = <ctrl> <super> KEY_UP
|
||||||
|
binding_right = <ctrl> <super> KEY_RIGHT
|
||||||
|
# Move the focused window with the same key-bindings, but add Shift.
|
||||||
|
with_win_left = <ctrl> <super> <shift> KEY_LEFT
|
||||||
|
with_win_down = <ctrl> <super> <shift> KEY_DOWN
|
||||||
|
with_win_up = <ctrl> <super> <shift> KEY_UP
|
||||||
|
with_win_right = <ctrl> <super> <shift> KEY_RIGHT
|
||||||
|
|
||||||
|
# Show the current workspace row as a cube.
|
||||||
|
[cube]
|
||||||
|
activate = <ctrl> <alt> BTN_LEFT
|
||||||
|
# Switch to the next or previous workspace.
|
||||||
|
#rotate_left = <super> <ctrl> KEY_H
|
||||||
|
#rotate_right = <super> <ctrl> KEY_L
|
||||||
|
|
||||||
|
# Show an overview of all workspaces.
|
||||||
|
[expo]
|
||||||
|
toggle = <super>
|
||||||
|
# Select a workspace.
|
||||||
|
# Workspaces are arranged into a grid of 3 × 3.
|
||||||
|
# The numbering is left to right, line by line.
|
||||||
|
#
|
||||||
|
# ⇱ k ⇲
|
||||||
|
# h ⏎ l
|
||||||
|
# ⇱ j ⇲
|
||||||
|
# ‾ ‾
|
||||||
|
# See core.vwidth and core.vheight for configuring the grid.
|
||||||
|
select_workspace_1 = KEY_1
|
||||||
|
select_workspace_2 = KEY_2
|
||||||
|
select_workspace_3 = KEY_3
|
||||||
|
select_workspace_4 = KEY_4
|
||||||
|
select_workspace_5 = KEY_5
|
||||||
|
select_workspace_6 = KEY_6
|
||||||
|
select_workspace_7 = KEY_7
|
||||||
|
select_workspace_8 = KEY_8
|
||||||
|
select_workspace_9 = KEY_9
|
||||||
|
|
||||||
|
# Outputs ──────────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
# Change focused output.
|
||||||
|
[oswitch]
|
||||||
|
# Switch to the next output.
|
||||||
|
next_output = <super> KEY_O
|
||||||
|
# Same with the window.
|
||||||
|
next_output_with_win = <super> <shift> KEY_O
|
||||||
|
|
||||||
|
# Invert the colors of the whole output.
|
||||||
|
[invert]
|
||||||
|
toggle = <super> KEY_I
|
||||||
|
|
||||||
|
# Rules ────────────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
# Example configuration:
|
||||||
|
#
|
||||||
|
# [window-rules]
|
||||||
|
# maximize_alacritty = on created if app_id is "Alacritty" then maximize
|
||||||
|
#
|
||||||
|
# You can get the properties of your applications with the following command:
|
||||||
|
# $ WAYLAND_DEBUG=1 alacritty 2>&1 | kak
|
||||||
|
#
|
||||||
|
# See Window rules for a complete reference.
|
||||||
|
# https://github.com/WayfireWM/wayfire/wiki/Configuration#window-rules
|
||||||
|
|
@ -0,0 +1,175 @@
|
||||||
|
[background]
|
||||||
|
# Full path to image or directory of images
|
||||||
|
# image = /usr/share/wayfire/wallpaper.jpg
|
||||||
|
# Whether to scale images or preserve background ratio
|
||||||
|
preserve_aspect = 0
|
||||||
|
# In the case of directory, timeout between changing backgrounds, in seconds
|
||||||
|
cycle_timeout = 150
|
||||||
|
# In the case of directory, whether or not to randomize images
|
||||||
|
randomize = 0
|
||||||
|
|
||||||
|
[panel]
|
||||||
|
# widgets_* is a space-separated list of widgets to be displayed
|
||||||
|
# at the corresponding part of the panel
|
||||||
|
# Supported widgets are: launchers clock network battery window-list volume menu notifications tray command-output
|
||||||
|
# A special widgets is spacing widgets, it can be used to add padding everywhere on the panel
|
||||||
|
# To use it, just append the amount of pixels you want as a padding
|
||||||
|
# to the word "spacing" and use it as a plugin
|
||||||
|
widgets_left = menu window-list
|
||||||
|
widgets_center = launchers
|
||||||
|
widgets_right = notifications volume battery tray clock
|
||||||
|
|
||||||
|
# The minimal size of the panel. Note that some widgets might force panel bigger than this size.
|
||||||
|
# All widgets also have individual settings for size
|
||||||
|
# Changing this requires a panel restart
|
||||||
|
minimal_height = 24
|
||||||
|
|
||||||
|
# automatically hide when pointer isn't over the panel
|
||||||
|
autohide = false
|
||||||
|
|
||||||
|
# time in milliseconds to wait before hiding
|
||||||
|
autohide_duration = 300
|
||||||
|
|
||||||
|
# layer can be top, bottom, overlay or background
|
||||||
|
layer = top
|
||||||
|
|
||||||
|
# where to position panel
|
||||||
|
# Possible values are only "top" and "bottom"
|
||||||
|
position = bottom
|
||||||
|
|
||||||
|
# set the background color.
|
||||||
|
background_color = gtk_headerbar # match the color of a GtkHeaderbar
|
||||||
|
#background_color = $555555 # Hex color, for example $FFFFFF for white
|
||||||
|
#background_color = 0.033 0.041 0.047 0.9 # RGBA color, 1.0 0.0 0.0 0.5 for semi-transparent red
|
||||||
|
|
||||||
|
|
||||||
|
# Configuration for the launchers widget
|
||||||
|
# can be a desktop file
|
||||||
|
launcher_terminal1 = foot.desktop
|
||||||
|
|
||||||
|
# or a combination of bash command + icon
|
||||||
|
# launcher_cmd_1 = env XDG_CURRENT_DESKTOP=GNOME gnome-control-center
|
||||||
|
# launcher_icon_1 = /usr/share/icons/gnome/48x48/categories/preferences-system.png
|
||||||
|
|
||||||
|
launcher_thunar = thunar.desktop
|
||||||
|
launcher_wcm = wayfire-config-manager.desktop
|
||||||
|
|
||||||
|
# spacing between widgets, can be negative
|
||||||
|
launchers_spacing = 4
|
||||||
|
|
||||||
|
# size of the launcher icon
|
||||||
|
launchers_size = 42
|
||||||
|
|
||||||
|
|
||||||
|
# Configuration for the clock widget
|
||||||
|
# clock format, uses the Glib Time formatting
|
||||||
|
clock_format = %e %a %H:%M
|
||||||
|
# clock font
|
||||||
|
clock_font = DejaVu Sans:style=Book 12
|
||||||
|
|
||||||
|
|
||||||
|
# Configuration for the battery widget
|
||||||
|
# How much info to display:
|
||||||
|
# 0 -> only icon, 1 -> icon + percentage, 2 -> full info
|
||||||
|
battery_status = 1
|
||||||
|
battery_icon_size = 32
|
||||||
|
|
||||||
|
# invert the colors of the icon, needs to be adjusted according to the size of the icons,
|
||||||
|
# because some icon sizes are white, and others are black
|
||||||
|
battery_icon_invert = 1
|
||||||
|
|
||||||
|
# Font to use in the battery percentage indicator
|
||||||
|
battery_font = default
|
||||||
|
|
||||||
|
|
||||||
|
# Configuration for the network widget
|
||||||
|
# Whether to display connection details, for ex. Wifi AP name
|
||||||
|
network_status = 1
|
||||||
|
|
||||||
|
network_status_font = DejaVu Sans:style=Book 10
|
||||||
|
# network_icon_size = 30
|
||||||
|
network_icon_invert_color = 1
|
||||||
|
|
||||||
|
# whether to colour the wifi signal strength
|
||||||
|
network_status_use_color = yes
|
||||||
|
|
||||||
|
|
||||||
|
# Configuration for the menu widget
|
||||||
|
# whether to enable fuzzy search in the menu
|
||||||
|
menu_fuzzy_search = 1
|
||||||
|
|
||||||
|
# Minimum width and height for the contents of the menu.
|
||||||
|
# Can be useful for small screens and/or high DPI scaling.
|
||||||
|
menu_min_content_width = 500
|
||||||
|
menu_min_content_height = 500
|
||||||
|
|
||||||
|
# image file to use as the menu icon
|
||||||
|
menu_icon = /usr/share/icons/Paper/32x32/places/fedora.png
|
||||||
|
|
||||||
|
# command run when the logout button is clicked
|
||||||
|
menu_logout_command =
|
||||||
|
|
||||||
|
|
||||||
|
# Configuration for the volume widget
|
||||||
|
# Number of seconds volume popover will display
|
||||||
|
# after scrolling on the volume icon
|
||||||
|
volume_display_timeout = 2.5
|
||||||
|
|
||||||
|
|
||||||
|
# Configuration for the tray widget
|
||||||
|
# Amount of smooth scrolling needed to trigger one scroll wheel step
|
||||||
|
tray_smooth_scrolling_threshold = 5
|
||||||
|
|
||||||
|
# The icon size to use for tray icons
|
||||||
|
tray_icon_size = 32
|
||||||
|
|
||||||
|
# Enable showing of the tray menu when using middle-click, otherwise, right-click is used
|
||||||
|
tray_menu_on_middle_click = false
|
||||||
|
|
||||||
|
|
||||||
|
# Configuration for the notifications widget
|
||||||
|
notifications_autohide_timeout = 2.5
|
||||||
|
|
||||||
|
# Show criticial notifications in do-not-disturb mode, which is triggered by middle-clicking the DND button.
|
||||||
|
notifications_critical_in_dnd = true
|
||||||
|
notifications_icon_size = 32
|
||||||
|
|
||||||
|
|
||||||
|
# Configuration for the command output widget, there may be multiple commands.
|
||||||
|
# The command output widget is used to display the output of a shell command, which can be periodically refreshed.
|
||||||
|
# For example, showing the current CPU temperature by parsing `sensors` output (command may need adjustment for your particular sensor name!)
|
||||||
|
|
||||||
|
# Maximum amount of characters to show in the panel, if the command's output is too long
|
||||||
|
commands_output_max_chars = 10
|
||||||
|
|
||||||
|
# A list of commands + attributes, multiple commands can be declared after one another. The commands are numbered 1, 2, 3, etc.
|
||||||
|
|
||||||
|
# The command to be run, uncomment and adapt according to the output of sensors on your system
|
||||||
|
#command_output_1 = sensors | grep Package | cut -d ' ' -f 5
|
||||||
|
|
||||||
|
# A command which is run and whose output is displayed in a tooltip when hovering the widget
|
||||||
|
#command_output_tooltip_1 = sensors
|
||||||
|
|
||||||
|
# Refresh the output of the command ever 1s. Can be set to -1 for manual updates with the mouse, or 0 for a single update at startup.
|
||||||
|
# command_output_period_1 = 1
|
||||||
|
|
||||||
|
# Optionally, an icon can be displayed next to the text. Leave empty (first option) for no icon.
|
||||||
|
# command_output_icon_1 =
|
||||||
|
# command_output_icon_1 = text-x-script
|
||||||
|
|
||||||
|
# Position and size for the icon, if it is not empty
|
||||||
|
#command_output_icon_size_1 = 32
|
||||||
|
#command_output_icon_position_1 = left # or right, top, bottom
|
||||||
|
|
||||||
|
[dock]
|
||||||
|
# time in milliseconds to wait before hiding
|
||||||
|
autohide_duration = 300
|
||||||
|
|
||||||
|
# vertical alignment on the desktop
|
||||||
|
# the only possible values are "top" and "bottom"
|
||||||
|
position = bottom
|
||||||
|
|
||||||
|
# For applications that aren't installed/configured properly, you can manually
|
||||||
|
# set icons for given app_id's. Below is an example for IntelliJ IDEA
|
||||||
|
# icon_mapping_jetbrains-idea-ce = /<path to intellij>/idea.png
|
||||||
|
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
[Desktop Entry]
|
||||||
|
Name=Wayfire
|
||||||
|
Exec=/usr/bin/startwayfire
|
||||||
|
Icon=
|
||||||
|
Type=Application
|
||||||
|
DesktopNames=Wayfire
|
||||||
16
ostree-images/river/files/systemd/system/gdm-boot.service
Normal file
16
ostree-images/river/files/systemd/system/gdm-boot.service
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
# Creates an GDM user before GDM runs.
|
||||||
|
# See:
|
||||||
|
# - https://github.com/ublue-os/cinnamon/blob/bf44562ddbed670cdd0d03a45ea08bdb8a6e96a7/system_files/usr/lib/systemd/system/ublue-lightdm-workaround.service#L4
|
||||||
|
# - https://github.com/ublue-os/main/issues/224#issuecomment-1987851271
|
||||||
|
|
||||||
|
[Unit]
|
||||||
|
Description=Create GDM user on system boot
|
||||||
|
Before=gdm.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart=/usr/etc/gdm/gdm-useradd
|
||||||
|
RemainAfterExit=yes
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
16
ostree-images/river/files/systemd/system/sddm-boot.service
Normal file
16
ostree-images/river/files/systemd/system/sddm-boot.service
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
# Creates an SDDM user before SDDM runs.
|
||||||
|
# See:
|
||||||
|
# - https://github.com/ublue-os/cinnamon/blob/bf44562ddbed670cdd0d03a45ea08bdb8a6e96a7/system_files/usr/lib/systemd/system/ublue-lightdm-workaround.service#L4
|
||||||
|
# - https://github.com/ublue-os/main/issues/224#issuecomment-1987851271
|
||||||
|
|
||||||
|
[Unit]
|
||||||
|
Description=Create SDDM user on system boot
|
||||||
|
Before=sddm.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart=/usr/etc/sddm/sddm-useradd
|
||||||
|
RemainAfterExit=yes
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
4
ostree-images/river/modules/wayblue-signing/module.yml
Normal file
4
ostree-images/river/modules/wayblue-signing/module.yml
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
name: wayblue-signing
|
||||||
|
shortdesc: The signing module is used to install the required signing policies for cosign image verification with rpm-ostree and bootc.
|
||||||
|
example: |
|
||||||
|
type: wayblue-signing # this sets up the proper policy & signing files for signed images to work fully
|
||||||
25
ostree-images/river/modules/wayblue-signing/policy.json
Normal file
25
ostree-images/river/modules/wayblue-signing/policy.json
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
{
|
||||||
|
"default": [
|
||||||
|
{
|
||||||
|
"type": "reject"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"transports": {
|
||||||
|
"docker": {
|
||||||
|
"registry.access.redhat.com": [
|
||||||
|
{
|
||||||
|
"type": "signedBy",
|
||||||
|
"keyType": "GPGKeys",
|
||||||
|
"keyPath": "/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"registry.redhat.io": [
|
||||||
|
{
|
||||||
|
"type": "signedBy",
|
||||||
|
"keyType": "GPGKeys",
|
||||||
|
"keyPath": "/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
docker:
|
||||||
|
ghcr.io/IMAGENAME:
|
||||||
|
use-sigstore-attachments: true
|
||||||
|
|
@ -0,0 +1,48 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Tell build process to exit if there are any errors.
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
CONTAINER_DIR="/usr/etc/containers"
|
||||||
|
MODULE_DIRECTORY="${MODULE_DIRECTORY:-"/tmp/modules"}"
|
||||||
|
IMAGE_NAME_FILE="${IMAGE_NAME//\//_}"
|
||||||
|
IMAGE_REGISTRY_TITLE=$(echo "$IMAGE_REGISTRY" | cut -d'/' -f2-)
|
||||||
|
|
||||||
|
echo "Setting up container signing in policy.json and cosign.yaml for $IMAGE_NAME"
|
||||||
|
echo "Registry to write: $IMAGE_REGISTRY"
|
||||||
|
|
||||||
|
if ! [ -d "$CONTAINER_DIR" ]; then
|
||||||
|
mkdir -p "$CONTAINER_DIR"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! [ -d $CONTAINER_DIR/registries.d ]; then
|
||||||
|
mkdir -p "$CONTAINER_DIR/registries.d"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! [ -d "/usr/etc/pki/containers" ]; then
|
||||||
|
mkdir -p "/usr/etc/pki/containers"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! [ -f "$CONTAINER_DIR/policy.json" ]; then
|
||||||
|
cp "$MODULE_DIRECTORY/signing/policy.json" "$CONTAINER_DIR/policy.json"
|
||||||
|
fi
|
||||||
|
|
||||||
|
mv "/usr/etc/pki/containers/$IMAGE_NAME.pub" "/usr/etc/pki/containers/$IMAGE_REGISTRY_TITLE.pub"
|
||||||
|
|
||||||
|
POLICY_FILE="$CONTAINER_DIR/policy.json"
|
||||||
|
|
||||||
|
yq -i -o=j '.transports.docker |=
|
||||||
|
{"'"$IMAGE_REGISTRY"'": [
|
||||||
|
{
|
||||||
|
"type": "sigstoreSigned",
|
||||||
|
"keyPath": "/usr/etc/pki/containers/'"$IMAGE_REGISTRY_TITLE"'.pub",
|
||||||
|
"signedIdentity": {
|
||||||
|
"type": "matchRepository"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
+ .' "$POLICY_FILE"
|
||||||
|
|
||||||
|
mv "$MODULE_DIRECTORY/signing/registry-config.yaml" "$CONTAINER_DIR/registries.d/$IMAGE_REGISTRY_TITLE.yaml"
|
||||||
|
sed -i "s ghcr.io/IMAGENAME $IMAGE_REGISTRY g" "$CONTAINER_DIR/registries.d/$IMAGE_REGISTRY_TITLE.yaml"
|
||||||
Loading…
Add table
Add a link
Reference in a new issue