COSMIC-Store-Omarchy/cosmic.sh
28allday 384cb33506 Initial commit: COSMIC Store installer for Omarchy
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-28 11:51:09 +00:00

112 lines
3.9 KiB
Bash
Executable file

#!/usr/bin/env bash
set -euo pipefail
echo "== COSMIC Store + Hyprland one-shot setup for Omarchy (Arch) =="
have(){ command -v "$1" >/dev/null 2>&1; }
need(){ pacman -Q "$1" >/dev/null 2>&1 || sudo pacman -S --needed --noconfirm "$1"; }
append_if_missing(){
local line="$1" file="$2"
mkdir -p "$(dirname "$file")"; touch "$file"
grep -qxF "$line" "$file" || echo "$line" >> "$file"
}
# 0) sanity
if ! have pacman; then echo "This script is for Arch/Arch-based systems."; exit 1; fi
# 1) deps
sudo pacman -Sy --noconfirm
need base-devel
need git
need flatpak
need xdg-desktop-portal
need xdg-desktop-portal-gtk
need xdg-desktop-portal-hyprland
need desktop-file-utils
# 2) flathub (system + user)
sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo || true
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo || true
# 3) install COSMIC Store (AUR)
if have yay; then
yay -S --noconfirm cosmic-store-git
elif have paru; then
paru -S --noconfirm cosmic-store-git
else
tmp="$(mktemp -d)"; trap 'rm -rf "$tmp"' EXIT
git -C "$tmp" clone https://aur.archlinux.org/cosmic-store-git.git
cd "$tmp/cosmic-store-git"
makepkg -si --noconfirm
fi
# 4) wrapper so COSMIC Store uses Hyprland portal for launching apps
sudo install -Dm755 /dev/stdin /usr/local/bin/cosmic-store-hypr <<'EOF'
#!/usr/bin/env bash
export XDG_CURRENT_DESKTOP=Hyprland
exec cosmic-store "$@"
EOF
# 5) user desktop override to use our wrapper
USR_DESKTOP="$HOME/.local/share/applications/com.system76.CosmicStore.desktop"
install -Dm644 /dev/stdin "$USR_DESKTOP" <<'EOF'
[Desktop Entry]
Name=COSMIC Store
Comment=Browse and install Flatpak apps
Exec=/usr/local/bin/cosmic-store-hypr
Icon=com.system76.CosmicStore
Terminal=false
Type=Application
Categories=System;PackageManager;
StartupNotify=true
EOF
# 6) Omarchy launcher visibility: export env via systemd user + Hyprland config
mkdir -p "$HOME/.config/environment.d"
cat > "$HOME/.config/environment.d/flatpak.conf" <<'EOF'
XDG_DATA_DIRS=%h/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share
XDG_CURRENT_DESKTOP=Hyprland
EOF
HYPR_CFG="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/hyprland.conf"
append_if_missing "env = XDG_CURRENT_DESKTOP,Hyprland" "$HYPR_CFG"
append_if_missing "env = XDG_DATA_DIRS,$HOME/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share" "$HYPR_CFG"
# 7) belt & suspenders: symlink Flatpak .desktop files into user's applications dir
mkdir -p "$HOME/.local/share/applications"
for d in "$HOME/.local/share/flatpak/exports/share/applications" "/var/lib/flatpak/exports/share/applications"; do
[ -d "$d" ] && find "$d" -maxdepth 1 -name '*.desktop' -exec ln -sf {} "$HOME/.local/share/applications/" \;
done
# 8) update appstream + refresh desktop DB
flatpak update --appstream -y || true
update-desktop-database "$HOME/.local/share/applications" >/dev/null || true
sudo update-desktop-database /usr/share/applications >/dev/null || true
# 9) restart portals so launches go through Hyprland
systemctl --user daemon-reload || true
systemctl --user restart xdg-desktop-portal-hyprland xdg-desktop-portal || true
# 10) quick test app (optional)
flatpak install -y flathub org.gnome.Calculator || true
cat <<'EONOTE'
✅ Done.
Next:
1) Log out of Hyprland and back in (applies environment.d so Omarchy launcher sees Flatpaks).
2) Open "COSMIC Store" from your apps menu (it uses Hyprland portal via wrapper).
3) Verify Flatpak apps appear in the launcher. Test:
flatpak run org.gnome.Calculator
If COSMIC can't "Open" an app, you can also launch the store directly with:
env XDG_CURRENT_DESKTOP=Hyprland cosmic-store
To remove everything later:
yay -Rns cosmic-store-git # or: sudo pacman -Rns cosmic-store-git
rm -f ~/.local/share/applications/com.system76.CosmicStore.desktop
sudo rm -f /usr/local/bin/cosmic-store-hypr
rm -f ~/.config/environment.d/flatpak.conf
# (then log out/in)
EONOTE