Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
60fd32f
build script for alg-app-store
demonkillerr Nov 9, 2025
19a52bb
initialise qt6 app
demonkillerr Nov 10, 2025
e978587
project cmake
demonkillerr Nov 10, 2025
244a930
ignore build files
demonkillerr Nov 10, 2025
c08c24a
add verbose logger
demonkillerr Nov 10, 2025
d8c81bd
create mainwindow
demonkillerr Nov 10, 2025
4d8cd1b
wrapper around alpm
demonkillerr Nov 10, 2025
5d78f92
key backend operations
demonkillerr Nov 10, 2025
1925b37
create app store homepage
demonkillerr Nov 10, 2025
ae7902b
style app
demonkillerr Nov 10, 2025
4cbe082
manage aur packages
demonkillerr Nov 10, 2025
9bdf29c
remove go files
demonkillerr Nov 10, 2025
fb1acbc
remove old wails scripts
demonkillerr Nov 10, 2025
69afc2d
remove wails.json
demonkillerr Nov 10, 2025
11786e8
remove wails build folder
demonkillerr Nov 10, 2025
2fbe908
implement search tab
demonkillerr Nov 10, 2025
82a584d
package card on home tab
demonkillerr Nov 10, 2025
c7daf11
show detailed information for any package and install/uninstall that …
demonkillerr Nov 10, 2025
52d85fe
update all system apps
demonkillerr Nov 10, 2025
b113152
show installed packages tab
demonkillerr Nov 10, 2025
a36288e
data types for packages
demonkillerr Nov 10, 2025
8be5b1f
rewrite readme for qt6 version
demonkillerr Nov 10, 2025
4b6c5a8
clang format
demonkillerr Nov 10, 2025
9d88f1c
remove dir-struct from readme
demonkillerr Nov 10, 2025
ba5de3b
add settings tab
demonkillerr Nov 10, 2025
4207065
show logs regardless of operation success
demonkillerr Nov 10, 2025
3f4cdb1
show logs and progress bar in updates page
demonkillerr Nov 10, 2025
577e2ec
refresh updates list after successful update
demonkillerr Nov 10, 2025
86b1fb5
add search bar in updates tab
demonkillerr Nov 10, 2025
a29f5e4
remove pacman lock file
demonkillerr Nov 10, 2025
a2ad535
add clear button to the search bar of installed and search tabs
demonkillerr Nov 10, 2025
f449ba6
add chaotic aur options in settings tab
demonkillerr Nov 10, 2025
7e21ad3
make sure AUR packages do not run as root
demonkillerr Nov 10, 2025
4bd32d0
show chaotic-aur in search tab dropdown filter if enabled
demonkillerr Nov 11, 2025
f5d02e9
add launch button for apps with a .desktop file
demonkillerr Nov 11, 2025
8797b1e
add version number
demonkillerr Nov 11, 2025
0f5a045
README: alpm as dependency
demonkillerr Nov 11, 2025
894afab
add contributing document
demonkillerr Nov 11, 2025
7ad1f1e
clean up readme
demonkillerr Nov 11, 2025
9f42cb3
add LICENSE
demonkillerr Nov 11, 2025
22ae227
update todo
demonkillerr Nov 11, 2025
a783730
add CI
demonkillerr Nov 11, 2025
d805859
directory structure in contributing
demonkillerr Nov 11, 2025
ef0258d
redo home tab featured packages
demonkillerr Nov 12, 2025
eaf7639
regex for searching unsual .desktop files
demonkillerr Nov 12, 2025
fc39e10
improve regex for searching desktop files for packages
demonkillerr Nov 12, 2025
35b6b8d
bump version -> 0.2.16
demonkillerr Nov 12, 2025
64eb058
Merge pull request #10 from arch-linux-gui/qt6/c++
demonkillerr Nov 12, 2025
c7239d4
use pacman is chaotic is enabled
demonkillerr Nov 12, 2025
d150dd5
sync repositories manually in settings
demonkillerr Nov 12, 2025
c39795b
pull from chaotic on home tab
demonkillerr Nov 12, 2025
467e396
alpm init before ui setup
demonkillerr Nov 12, 2025
5b4481f
Merge pull request #11 from arch-linux-gui/qt6/c++
demonkillerr Nov 12, 2025
b29c52b
bump version -> 0.2.21
demonkillerr Nov 12, 2025
460f85f
update todo
demonkillerr Nov 12, 2025
b197cfd
show correct version information for all apps
demonkillerr Nov 12, 2025
4b0727e
remove paru support and default to yay
demonkillerr Nov 12, 2025
c1a5383
add cancel operation button; remove revert button
demonkillerr Nov 12, 2025
63befdd
bump version -> 0.2.25
demonkillerr Nov 12, 2025
ff12131
home_tab should default to yay if chaotic is disabled
demonkillerr Nov 12, 2025
890d35b
ensure chaotic is not added multiple times in pacman.conf
demonkillerr Nov 12, 2025
02f3cf4
add postinstall stylesheet path
demonkillerr Nov 12, 2025
948a2c9
update desktop entry
demonkillerr Nov 12, 2025
acc639a
fixed chaotic-setup button
demonkillerr Nov 14, 2025
d9731e6
cancel button now kills processes
demonkillerr Nov 14, 2025
0f1b6f9
bump version -> 0.2.26
demonkillerr Nov 14, 2025
3e258a0
[refactor] strictly follow RAII, standardize ownership & cleanup redu…
demonkillerr Dec 17, 2025
3374140
update TODO
demonkillerr Dec 17, 2025
4ed6c99
update todo
demonkillerr Dec 21, 2025
280ab20
Merge pull request #13 from arch-linux-gui/qt6/c++
demonkillerr Dec 21, 2025
701e0f5
[CI] extract version info from cmake and publish only on main branch;…
demonkillerr Dec 21, 2025
1c56ebf
bump version
demonkillerr Dec 21, 2025
1381be3
ci: use Arch Linux container for native libalpm support
demonkillerr Dec 21, 2025
1c157fe
ci: fix artifact name for PR refs by replacing slashes with dashes
demonkillerr Dec 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
BasedOnStyle: WebKit

AlignAfterOpenBracket: Align
AlignEscapedNewlines: DontAlign
AllowAllParametersOfDeclarationOnNextLine: "false"
AllowShortFunctionsOnASingleLine: Inline
AllowShortIfStatementsOnASingleLine: "false"
AllowShortLambdasOnASingleLine: All
AllowShortLoopsOnASingleLine: "false"
AlwaysBreakAfterReturnType: TopLevelDefinitions
AlwaysBreakTemplateDeclarations: Yes
BinPackArguments: "false"
BinPackParameters: "false"
BreakBeforeBraces: Allman
BreakBeforeTernaryOperators: "true"
BreakConstructorInitializers: BeforeComma
ColumnLimit: 120
Cpp11BracedListStyle: "false"
FixNamespaceComments: "true"
IncludeBlocks: Preserve
IndentWidth: "4"
InsertBraces: "true"
MaxEmptyLinesToKeep: "2"
NamespaceIndentation: None
PointerAlignment: Left
ReflowComments: "false"
SortIncludes: "true"
SpaceAfterCStyleCast: "false"
SpaceInEmptyBlock: "false"
SpacesBeforeTrailingComments: "2"
SpacesInAngles: "true"
SpacesInParentheses: "true"
SpacesInSquareBrackets: "true"
Standard: c++17
152 changes: 152 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
name: Build and Release ALG App Store

on:
push:
branches: [ "main", "devel", "qt6" ]
paths:
- '**.cpp'
- '**.h'
- 'CMakeLists.txt'
- '.github/workflows/**'
pull_request:
branches: [ "main", "devel", "qt6" ]
workflow_dispatch:

jobs:
build:
runs-on: ubuntu-latest
container:
image: archlinux:latest
outputs:
version: ${{ steps.get_version.outputs.version }}
should_release: ${{ steps.check_release.outputs.should_release }}
artifact_name: ${{ steps.artifact.outputs.name }}

steps:
- name: Install base dependencies
run: |
pacman -Syu --noconfirm
pacman -S --noconfirm --needed \
base-devel \
git \
cmake \
qt6-base \
qt6-tools \
pacman \
libarchive \
curl \
pkgconf

- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 2 # Need history to check changed files

- name: Mark git directory as safe
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"

- name: Extract version from CMakeLists.txt
id: get_version
run: |
VERSION=$(grep -oP 'project\(alg-app-store VERSION \K[0-9]+\.[0-9]+\.[0-9]+' CMakeLists.txt)
echo "version=$VERSION" >> $GITHUB_OUTPUT
echo "Detected version: $VERSION"

- name: Check if this should trigger a release
id: check_release
run: |
# Only release on main branch when CMakeLists.txt was modified
if [[ "${{ github.ref }}" == "refs/heads/main" && "${{ github.event_name }}" == "push" ]]; then
# Check if CMakeLists.txt was changed in this push
if git diff --name-only HEAD~1 HEAD | grep -q "CMakeLists.txt"; then
echo "should_release=true" >> $GITHUB_OUTPUT
echo "Release triggered: CMakeLists.txt changed on main branch"
else
echo "should_release=false" >> $GITHUB_OUTPUT
echo "No release: CMakeLists.txt not changed"
fi
else
echo "should_release=false" >> $GITHUB_OUTPUT
echo "No release: not on main branch or not a push event"
fi

- name: Configure CMake
run: |
mkdir -p build
cd build
cmake ..

- name: Build
run: |
cd build
make -j$(nproc)

- name: Check build artifacts
run: |
ls -lh build/alg-app-store
file build/alg-app-store

- name: Set artifact name
id: artifact
run: |
# Replace forward slashes with dashes to handle PR refs like "12/merge"
ARTIFACT_NAME="alg-app-store-${{ github.ref_name }}-${{ steps.get_version.outputs.version }}"
ARTIFACT_NAME="${ARTIFACT_NAME//\//-}"
echo "name=$ARTIFACT_NAME" >> $GITHUB_OUTPUT
echo "Artifact name: $ARTIFACT_NAME"

- name: Upload build artifact
uses: actions/upload-artifact@v4
with:
name: ${{ steps.artifact.outputs.name }}
path: build/alg-app-store
retention-days: 30

release:
needs: build
runs-on: ubuntu-latest
if: needs.build.outputs.should_release == 'true'
permissions:
contents: write

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Download build artifact
uses: actions/download-artifact@v4
with:
name: ${{ needs.build.outputs.artifact_name }}
path: ./release

- name: Prepare release assets
run: |
chmod +x ./release/alg-app-store
tar -czvf alg-app-store-${{ needs.build.outputs.version }}-linux-x86_64.tar.gz -C ./release alg-app-store

- name: Create GitHub Release
uses: softprops/action-gh-release@v1
with:
tag_name: v${{ needs.build.outputs.version }}
name: ALG App Store v${{ needs.build.outputs.version }}
body: |
## ALG App Store v${{ needs.build.outputs.version }}

A modern package manager GUI for Arch Linux.

### Installation
```bash
tar -xzvf alg-app-store-${{ needs.build.outputs.version }}-linux-x86_64.tar.gz
sudo mv alg-app-store /usr/local/bin/
```

### Requirements
- Qt6 (Core, Gui, Widgets, Network, Concurrent)
- libalpm (pacman library)
- yay or paru (for AUR support)
files: |
alg-app-store-${{ needs.build.outputs.version }}-linux-x86_64.tar.gz
draft: false
prerelease: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
52 changes: 52 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# Qt/C++ Build artifacts
build/
*.o
*.so
*.a
*.user
*.autosave
moc_*.cpp
qrc_*.cpp
ui_*.h

# CMake
CMakeCache.txt
CMakeFiles/
cmake_install.cmake
Makefile

# Qt Creator
*.pro.user
*.pro.user.*

# Executable
alg-app-store

# IDE
.vscode/
.idea/
*.swp
*.swo
*~

# Compiled Object files
*.obj

# Precompiled Headers
*.gch
*.pch

# Debug files
*.dSYM/
*.su
*.idb
*.pdb

# OS specific
.DS_Store
Thumbs.db

# Backup files
*~
*.bak
*.backup
117 changes: 117 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
cmake_minimum_required(VERSION 3.16)

project(alg-app-store VERSION 0.2.28 LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)

# Find Qt6 packages
find_package(Qt6 REQUIRED COMPONENTS
Core
Gui
Widgets
Network
Concurrent
)

# Find libalpm
find_package(PkgConfig REQUIRED)
pkg_check_modules(ALPM REQUIRED libalpm)

# Include directories
include_directories(
${CMAKE_SOURCE_DIR}/src
${ALPM_INCLUDE_DIRS}
)

# Source files
set(SOURCES
src/main.cpp

# Core
src/core/alpm_wrapper.cpp
src/core/aur_helper.cpp
src/core/package_manager.cpp

# GUI
src/gui/mainwindow.cpp
src/gui/home_widget.cpp
src/gui/search_widget.cpp
src/gui/installed_widget.cpp
src/gui/updates_widget.cpp
src/gui/settings_widget.cpp
src/gui/package_card.cpp
src/gui/package_details_dialog.cpp
)

# Header files
set(HEADERS
src/utils/logger.h
src/utils/types.h

# Core
src/core/alpm_wrapper.h
src/core/aur_helper.h
src/core/package_manager.h

# GUI
src/gui/mainwindow.h
src/gui/home_widget.h
src/gui/search_widget.h
src/gui/installed_widget.h
src/gui/updates_widget.h
src/gui/settings_widget.h
src/gui/package_card.h
src/gui/package_details_dialog.h
)

# Create executable
add_executable(${PROJECT_NAME}
${SOURCES}
${HEADERS}
)

# Link libraries
target_link_libraries(${PROJECT_NAME} PRIVATE
Qt6::Core
Qt6::Gui
Qt6::Widgets
Qt6::Network
Qt6::Concurrent
${ALPM_LIBRARIES}
)

# Link directories
link_directories(${ALPM_LIBRARY_DIRS})

# Compiler flags
target_compile_options(${PROJECT_NAME} PRIVATE
-Wall
-Wextra
-Wpedantic
)

# Install target
install(TARGETS ${PROJECT_NAME}
RUNTIME DESTINATION bin
)

# Install desktop file
install(FILES assets/alg-app-store.desktop
DESTINATION share/applications
)

# Copy stylesheet to build directory
configure_file(
${CMAKE_SOURCE_DIR}/stylesheet.qss
${CMAKE_BINARY_DIR}/stylesheet.qss
COPYONLY
)

# Install stylesheet
install(FILES stylesheet.qss
DESTINATION share/alg-app-store
)
Loading