From 265045c3118829a60423c7dfe1c2f9302caeda0a Mon Sep 17 00:00:00 2001 From: retrozinndev Date: Sun, 17 Aug 2025 12:38:04 -0300 Subject: [PATCH] :sparkles: feat: add support for desktop entry --- resources/colorshell.desktop | 7 +++++++ scripts/release.sh | 25 ++++++++++++++++++------- 2 files changed, 25 insertions(+), 7 deletions(-) create mode 100644 resources/colorshell.desktop diff --git a/resources/colorshell.desktop b/resources/colorshell.desktop new file mode 100644 index 0000000..8a00697 --- /dev/null +++ b/resources/colorshell.desktop @@ -0,0 +1,7 @@ +[Desktop Entry] +Name=colorshell +Type=Application +Comment=A Desktop Shell for Hyprland that has colors from your wallpaper! +Exec=sh -c '$COLORSHELL_BINARY' +NoDisplay=true +StartupWMClass=io.github.retrozinndev.colorshell diff --git a/scripts/release.sh b/scripts/release.sh index 0ddc680..1e638af 100644 --- a/scripts/release.sh +++ b/scripts/release.sh @@ -2,7 +2,7 @@ set -e socket_support=true -while getopts o:r:hn args; do +while getopts o:r:e:hn args; do case "$args" in o) outdir=${OPTARG} @@ -10,6 +10,9 @@ while getopts o:r:hn args; do r) gresource_file=${OPTARG} ;; + e) + bin_target=${OPTARG} + ;; n) unset socket_support ;; @@ -17,26 +20,30 @@ while getopts o:r:hn args; do echo "\ colorshell's automated release-build script. +help: + 'literal': the argument should have environment variables sent as a literal string, + they're replaced at runtime. + 'default': argument's default value, they're used if none are provided. + options: - -r \$file: gresource's target path (shell-only, file is kept in \$output. default: \$XDG_DATA_HOME/colorshell/resources.gresource) + -r \$file: gresource's target path (literal; kept in \$output; default: \$XDG_DATA_HOME/colorshell/resources.gresource) -n: disable socket communication support(use the slower remote instance communication) -o \$path: build output path (default: \`./build/release\`) + -e: set desktop entry's executable target (literal; default: \$HOME/.local/bin/colorshell) -h: show this help message" exit 0 ;; esac done -# send literal variable name, so it's interpreted in the shell rather than in the build +# send literal variable name, so it's interpreted at runtime sh ./scripts/build.sh -o "${outdir:-./build/release}" -b -r "${gresource_file:-\$XDG_DATA_HOME/colorshell/resources.gresource}" # add socket-communication support on executable if [[ $socket_support ]]; then echo "[info] adding socket communication support" script="\ -#!/usr/bin/env bash - -set -e +#!/usr/bin/bash if gdbus introspect --session \\ --dest io.github.retrozinndev.colorshell \\ @@ -46,9 +53,13 @@ if gdbus introspect --session \\ exit 0 fi - `cat "${outdir:-./build/release}/colorshell" | sed -e 's/^#.*//'`" # remove shebang echo -en "$script" > "${outdir:-./build/release}/colorshell" chmod +x "${outdir:-./build/release}/colorshell" fi + +echo "[info] making desktop entry" +entry=`cat ./resources/colorshell.desktop` +entry=${entry/\$COLORSHELL_BINARY/${bin_target:-\$HOME/.local/bin/colorshell}} +echo -n "$entry" > ${outdir:-./build/release}/colorshell.desktop