diff --git a/CMakeLists.txt b/CMakeLists.txt index eb87566..c896950 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -89,6 +89,10 @@ install(TARGETS wallpaper-carousel RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) +install(FILES ${CMAKE_CURRENT_LIST_DIR}/app/wallpaper-carousel.desktop + DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/applications +) + if(QT_VERSION_MAJOR EQUAL 6) qt_finalize_executable(wallpaper-carousel) endif() diff --git a/README.md b/README.md index 107ba2e..b6b7dee 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,52 @@ -It might not be that worthy to write a Qt application for such a small feature, but why not? +## What is this + +It might not be that worthy to write a QtWidget application for such a small feature, but I kind of enjoy the pain... So here it is. -The config file should be placed in `~/.config/wallpaper-carousel/config.json`. Refer to [config.example.json](https://github.com/Uyanide/Wallpaper_Chooser/blob/master/config.example.json) and [config.h](https://github.com/Uyanide/Wallpaper_Chooser/blob/master/src/config.h) for specific entries. +## How to build + +1. Make sure you have Qt6 libraries, CMake and a C++ compiler installed. + + e.g. On Arch-based systems: + + ```bash + sudo pacman -S --needed qt6-base cmake gcc + ``` + +2. Clone the repository: + + ```bash + git clone https://github.com/Uyanide/Wallpaper_Carousel.git --depth 1 + cd Wallpaper_Carousel + ``` + +3. Run build script: + + ```bash + app/install.sh + ``` + + or if you prefer a prefix other than `/usr/local`, e.g. `$HOME/.local`: + + ```bash + PREFIX=$HOME/.local ./app/install.sh + ``` + +> [!NOTE] +> +> This script will ask for `sudo` permission if the prefix is set to a system directory like `/usr/local`. Please make sure you have read and trust the script before proceeding. + +## How to use + +The config file should be placed in `~/.config/wallpaper-carousel/config.json`. Refer to [config.example.json](config.example.json) and [config.h](src/config.h) for specific entries. + +A minimum config should at least contain the path(s) to wallpapers, e.g. + +```json +{ + "wallpaper": { + "dirs": ["/path/to/your/wallpapers"] + } +} +``` diff --git a/app/install.sh b/app/install.sh index 119c669..5a1e3a8 100755 --- a/app/install.sh +++ b/app/install.sh @@ -1,18 +1,23 @@ #!/bin/env bash +set -euo pipefail + +prefix=${PREFIX:-/usr/local} + path="$(dirname "$(readlink -f "$0")")" cmake -S "$path/.." -B "$path/../build" \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_INSTALL_PREFIX="$HOME"/.local || exit 1 + -DCMAKE_INSTALL_PREFIX="$prefix" -cmake --build "$path/../build" --target install || exit 1 +cmake --build "$path/../build" -cp "$path/wallpaper-carousel.desktop" "$HOME"/.local/share/applications/wallpaper-carousel.desktop - -echo "Exec=$HOME/.local/bin/wallpaper-carousel" >>"$HOME"/.local/share/applications/wallpaper-carousel.desktop - -if command -v update-desktop-database &>/dev/null; then - update-desktop-database "$HOME"/.local/share/applications/ +if [ ! -w "$prefix" ] && [ "$(id -u)" -ne 0 ]; then + sudo cmake --install "$path/../build" +else + cmake --install "$path/../build" fi +if command -v update-desktop-database &>/dev/null; then + echo "Updating desktop database..." + update-desktop-database "$prefix"/share/applications/ || true +fi diff --git a/app/wallpaper-carousel.desktop b/app/wallpaper-carousel.desktop index a82c838..60c326d 100644 --- a/app/wallpaper-carousel.desktop +++ b/app/wallpaper-carousel.desktop @@ -2,7 +2,11 @@ Version=1.0 Type=Application Name=Wallpaper Carousel +GenericName=Animated wallpaper selector +TryExec=wallpaper-carousel +Exec=wallpaper-carousel Comment=A small wallpaper utility made with Qt Terminal=false -Categories=Application;Utility; +Categories=Application;Utility;DesktopSettings; StartupNotify=true +Keywords=wallpapers;