chore: standardize build procedure

This commit is contained in:
2026-01-15 01:32:06 +01:00
parent 1cadf6a873
commit b3d2bec75a
4 changed files with 72 additions and 12 deletions
+4
View File
@@ -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()
+49 -2
View File
@@ -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.
<img src="https://github.com/Uyanide/backgrounds/blob/master/screenshots/desktop-alt.jpg?raw=true"/>
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"]
}
}
```
+14 -9
View File
@@ -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
+5 -1
View File
@@ -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;