diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..bb1eda8 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,66 @@ +name: Test install scripts + +on: + push: + branches: [develop] + paths: + - 'content/programs/**' + - 'content/distros/**' + - 'content/dependencies/**' + - 'tests/**' + - '.github/workflows/test.yml' + pull_request: + paths: + - 'content/programs/**' + - 'content/distros/**' + - 'content/dependencies/**' + - 'tests/**' + - '.github/workflows/test.yml' + workflow_dispatch: + +permissions: + contents: read + +jobs: + test: + strategy: + matrix: + distro: [alpine, arch, debian, fedora, opensuse, ubuntu, void] + fail-fast: false + runs-on: ubuntu-latest + timeout-minutes: 120 + steps: + - uses: actions/checkout@v4 + + - name: Build Docker image + run: docker build -t lsg-test:${{ matrix.distro }} -f tests/docker/Dockerfile.${{ matrix.distro }} . + + - name: Run tests + run: python3 tests/runner.py --distro ${{ matrix.distro }} + + - name: Generate HTML report + if: always() + run: | + if [ -f report.json ]; then + python3 tests/report.py report.json --html -o report-${{ matrix.distro }}.html + else + echo "⚠️ No report.json — Docker build or test runner failed" + fi + + - name: Generate Markdown summary + if: always() + run: | + if [ -f report.json ]; then + python3 tests/report.py report.json --markdown >> $GITHUB_STEP_SUMMARY + else + echo "## ⚠️ ${{ matrix.distro }} — build or runner failed, no report generated" >> $GITHUB_STEP_SUMMARY + fi + + - name: Upload report (JSON) + if: always() + uses: actions/upload-artifact@v4 + with: + name: report-${{ matrix.distro }} + path: | + report.json + report-${{ matrix.distro }}.html \ No newline at end of file diff --git a/.gitignore b/.gitignore index 929a21e..4f1a3dd 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,7 @@ public/ # macOS .DS_Store +__pycache__/ +test_script.sh +report.json +report-*.html diff --git a/content/programs/alacritty/logo.png b/content/programs/alacritty/logo.png new file mode 100644 index 0000000..bb80516 --- /dev/null +++ b/content/programs/alacritty/logo.png @@ -0,0 +1 @@ +Alacritty \ No newline at end of file diff --git a/content/programs/amfora/logo.png b/content/programs/amfora/logo.png new file mode 100644 index 0000000..8c3b233 Binary files /dev/null and b/content/programs/amfora/logo.png differ diff --git a/content/programs/amfora/program.json b/content/programs/amfora/program.json index a1851bf..262d975 100644 --- a/content/programs/amfora/program.json +++ b/content/programs/amfora/program.json @@ -13,7 +13,13 @@ ], "package_names": { "default": "CUSTOM_INSTALL", - "arch": "amfora" + "arch": "amfora", + "alpine": "CUSTOM_INSTALL", + "debian": "CUSTOM_INSTALL", + "fedora": "CUSTOM_INSTALL", + "opensuse": "CUSTOM_INSTALL", + "ubuntu": "CUSTOM_INSTALL", + "void": "CUSTOM_INSTALL" }, "logo": "/programs/amfora/logo.png" -} \ No newline at end of file +} diff --git a/content/programs/ansiweather/logo.png b/content/programs/ansiweather/logo.png new file mode 100644 index 0000000..c3482fc --- /dev/null +++ b/content/programs/ansiweather/logo.png @@ -0,0 +1 @@ +GNOME Terminal \ No newline at end of file diff --git a/content/programs/ansiweather/program.json b/content/programs/ansiweather/program.json index 9fa5e5a..a8c398c 100644 --- a/content/programs/ansiweather/program.json +++ b/content/programs/ansiweather/program.json @@ -5,7 +5,10 @@ "website": "https://github.com/fcambus/ansiweather", "git_repo": "https://github.com/fcambus/ansiweather", "license": "BSD-2-Clause", - "categories": ["terminal", "internet"], + "categories": [ + "terminal", + "internet" + ], "dependencies": [], "package_names": { "default": "ansiweather", @@ -16,5 +19,6 @@ "opensuse": "ansiweather", "void": "ansiweather", "alpine": "ansiweather" - } + }, + "logo": "/programs/ansiweather/logo.png" } diff --git a/content/programs/appimagelauncher/custom_install/install.sh b/content/programs/appimagelauncher/custom_install/install.sh new file mode 100755 index 0000000..206b6f3 --- /dev/null +++ b/content/programs/appimagelauncher/custom_install/install.sh @@ -0,0 +1,12 @@ +#!/bin/bash +set -e +echo "Installing AppImageLauncher..." +LATEST_DEB=$(curl -s https://api.github.com/repos/TheAssassin/AppImageLauncher/releases/latest 2>/dev/null | grep browser_download_url | grep bionic_amd64.deb | cut -d '"' -f4) +if [ -n "$LATEST_DEB" ]; then + curl -L -o /tmp/appimagelauncher.deb "$LATEST_DEB" + sudo dpkg -i /tmp/appimagelauncher.deb 2>/dev/null || sudo apt install -y /tmp/appimagelauncher.deb + rm /tmp/appimagelauncher.deb +else + echo "Could not download AppImageLauncher." + exit 1 +fi diff --git a/content/programs/appimagelauncher/program.json b/content/programs/appimagelauncher/program.json new file mode 100644 index 0000000..328fe44 --- /dev/null +++ b/content/programs/appimagelauncher/program.json @@ -0,0 +1,24 @@ +{ + "name": "AppImageLauncher", + "slug": "appimagelauncher", + "description": "Integrate AppImages into your application launcher.", + "website": "https://github.com/TheAssassin/AppImageLauncher", + "git_repo": "https://github.com/TheAssassin/AppImageLauncher", + "license": "MIT", + "categories": [ + "system", + "package-manager" + ], + "dependencies": [], + "package_names": { + "default": "CUSTOM_INSTALL", + "arch": "appimagelauncher", + "ubuntu": "CUSTOM_INSTALL", + "debian": "CUSTOM_INSTALL", + "fedora": "CUSTOM_INSTALL", + "opensuse": "CUSTOM_INSTALL", + "void": "CUSTOM_INSTALL", + "alpine": "CUSTOM_INSTALL" + }, + "logo": "/programs/appimagelauncher/logo.png" +} diff --git a/content/programs/ardour/logo.png b/content/programs/ardour/logo.png new file mode 100644 index 0000000..d9a7473 --- /dev/null +++ b/content/programs/ardour/logo.png @@ -0,0 +1 @@ +Ardour \ No newline at end of file diff --git a/content/programs/aria2/program.json b/content/programs/aria2/program.json index 1fa7542..7f02f98 100644 --- a/content/programs/aria2/program.json +++ b/content/programs/aria2/program.json @@ -5,7 +5,10 @@ "website": "https://aria2.github.io/", "git_repo": "https://github.com/aria2/aria2", "license": "GPL-2.0", - "categories": ["internet", "terminal"], + "categories": [ + "internet", + "terminal" + ], "package_names": { "default": "aria2", "arch": "aria2", @@ -15,5 +18,6 @@ "opensuse": "aria2", "void": "aria2", "alpine": "aria2" - } + }, + "logo": "/programs/aria2/logo.png" } diff --git a/content/programs/asciinema/logo.png b/content/programs/asciinema/logo.png new file mode 100644 index 0000000..514b8ee --- /dev/null +++ b/content/programs/asciinema/logo.png @@ -0,0 +1 @@ +asciinema \ No newline at end of file diff --git a/content/programs/atop/logo.png b/content/programs/atop/logo.png new file mode 100644 index 0000000..f1a5e73 --- /dev/null +++ b/content/programs/atop/logo.png @@ -0,0 +1,264 @@ + + + +404 Not Found + +

Not Found

+The requested URL /atop_logo.png was not found on this server. +
+www.atoptool.nl + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/programs/atop/program.json b/content/programs/atop/program.json index 2a56297..bfa146e 100644 --- a/content/programs/atop/program.json +++ b/content/programs/atop/program.json @@ -5,7 +5,10 @@ "website": "https://github.com/Atoptool/atop", "git_repo": "https://github.com/Atoptool/atop", "license": "GPL-2.0", - "categories": ["system-monitor", "terminal"], + "categories": [ + "system-monitor", + "terminal" + ], "dependencies": [], "package_names": { "default": "atop", @@ -16,5 +19,6 @@ "opensuse": "atop", "void": "atop", "alpine": "atop" - } + }, + "logo": "/programs/atop/logo.png" } diff --git a/content/programs/audacious/logo.png b/content/programs/audacious/logo.png new file mode 100644 index 0000000..ac756c6 --- /dev/null +++ b/content/programs/audacious/logo.png @@ -0,0 +1,7 @@ + + + + + + + diff --git a/content/programs/audacious/program.json b/content/programs/audacious/program.json index 1a0c184..172db72 100644 --- a/content/programs/audacious/program.json +++ b/content/programs/audacious/program.json @@ -5,7 +5,10 @@ "website": "https://audacious-media-player.org/", "git_repo": "https://github.com/audacious-media-player/audacious", "license": "BSD-2-Clause", - "categories": ["audio", "media-player"], + "categories": [ + "audio", + "media-player" + ], "package_names": { "default": "audacious", "arch": "audacious", @@ -15,5 +18,6 @@ "opensuse": "audacious", "void": "audacious", "alpine": "audacious" - } + }, + "logo": "/programs/audacious/logo.png" } diff --git a/content/programs/audacity/logo.png b/content/programs/audacity/logo.png new file mode 100644 index 0000000..5513689 --- /dev/null +++ b/content/programs/audacity/logo.png @@ -0,0 +1 @@ +Audacity \ No newline at end of file diff --git a/content/programs/autojump/logo.png b/content/programs/autojump/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/autojump/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/autojump/program.json b/content/programs/autojump/program.json index 633fd0f..6d46a57 100644 --- a/content/programs/autojump/program.json +++ b/content/programs/autojump/program.json @@ -21,5 +21,6 @@ }, "dependencies": [ "pip" - ] -} \ No newline at end of file + ], + "logo": "/programs/autojump/logo.png" +} diff --git a/content/programs/azote/logo.png b/content/programs/azote/logo.png new file mode 100644 index 0000000..b512be6 --- /dev/null +++ b/content/programs/azote/logo.png @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/content/programs/azote/program.json b/content/programs/azote/program.json index fc32c41..9f8eafc 100644 --- a/content/programs/azote/program.json +++ b/content/programs/azote/program.json @@ -5,8 +5,13 @@ "website": "https://github.com/nwg-piotr/azote", "git_repo": "https://github.com/nwg-piotr/azote", "license": "GPL-3.0", - "categories": ["display", "theming"], - "dependencies": ["pip"], + "categories": [ + "display", + "theming" + ], + "dependencies": [ + "pip" + ], "package_names": { "default": "azote", "arch": "azote", @@ -16,5 +21,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/azote/logo.png" } diff --git a/content/programs/backintime/logo.png b/content/programs/backintime/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/backintime/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/backintime/program.json b/content/programs/backintime/program.json index 022cda1..d831d0b 100644 --- a/content/programs/backintime/program.json +++ b/content/programs/backintime/program.json @@ -5,8 +5,12 @@ "website": "https://backintime.readthedocs.io/", "git_repo": "https://github.com/bit-team/backintime", "license": "GPL-2.0", - "categories": ["system"], - "dependencies": ["git"], + "categories": [ + "system" + ], + "dependencies": [ + "git" + ], "package_names": { "default": "backintime", "arch": "backintime", @@ -16,5 +20,6 @@ "opensuse": "backintime", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/backintime/logo.png" } diff --git a/content/programs/bandwhich/logo.png b/content/programs/bandwhich/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/bandwhich/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/bandwhich/program.json b/content/programs/bandwhich/program.json index f7e2420..fe8f27b 100644 --- a/content/programs/bandwhich/program.json +++ b/content/programs/bandwhich/program.json @@ -21,5 +21,6 @@ }, "dependencies": [ "cargo" - ] -} \ No newline at end of file + ], + "logo": "/programs/bandwhich/logo.png" +} diff --git a/content/programs/bat/logo.png b/content/programs/bat/logo.png new file mode 100644 index 0000000..af383f9 --- /dev/null +++ b/content/programs/bat/logo.png @@ -0,0 +1 @@ +bat \ No newline at end of file diff --git a/content/programs/bat/program.json b/content/programs/bat/program.json index 51cad53..2178af4 100644 --- a/content/programs/bat/program.json +++ b/content/programs/bat/program.json @@ -4,7 +4,9 @@ "description": "A cat clone with syntax highlighting and Git integration.", "git_repo": "https://github.com/sharkdp/bat", "license": "MIT/Apache-2.0", - "categories": ["terminal"], + "categories": [ + "terminal" + ], "package_names": { "default": "bat", "arch": "bat", @@ -14,5 +16,6 @@ "opensuse": "bat", "void": "bat", "alpine": "bat" - } + }, + "logo": "/programs/bat/logo.png" } diff --git a/content/programs/beets/program.json b/content/programs/beets/program.json index e80ad21..fadfc4d 100644 --- a/content/programs/beets/program.json +++ b/content/programs/beets/program.json @@ -5,7 +5,10 @@ "website": "https://beets.io/", "git_repo": "https://github.com/beetbox/beets", "license": "MIT", - "categories": ["audio", "terminal"], + "categories": [ + "audio", + "terminal" + ], "package_names": { "default": "beets", "arch": "beets", @@ -15,5 +18,6 @@ "opensuse": "beets", "void": "beets", "alpine": "beets" - } + }, + "logo": "/programs/beets/logo.png" } diff --git a/content/programs/berry/logo.png b/content/programs/berry/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/berry/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/berry/program.json b/content/programs/berry/program.json index e577c57..e6ddf29 100644 --- a/content/programs/berry/program.json +++ b/content/programs/berry/program.json @@ -5,8 +5,12 @@ "website": "https://berrywm.org/", "git_repo": "https://github.com/JLErvin/berry", "license": "MIT", - "categories": ["window-manager"], - "dependencies": ["git-dep"], + "categories": [ + "window-manager" + ], + "dependencies": [ + "git-dep" + ], "package_names": { "default": "berry", "arch": "berry", @@ -16,5 +20,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/berry/logo.png" } diff --git a/content/programs/bitwarden/custom_install/install.sh b/content/programs/bitwarden/custom_install/install.sh new file mode 100755 index 0000000..44318ab --- /dev/null +++ b/content/programs/bitwarden/custom_install/install.sh @@ -0,0 +1,11 @@ +#!/bin/bash +set -e +echo "Installing Bitwarden..." +if command -v flatpak &>/dev/null; then + flatpak install -y flathub com.bitwarden.desktop +elif command -v snap &>/dev/null; then + sudo snap install bitwarden +else + echo "Install flatpak or snap first." + exit 1 +fi diff --git a/content/programs/bitwarden/logo.png b/content/programs/bitwarden/logo.png new file mode 100644 index 0000000..edfde64 --- /dev/null +++ b/content/programs/bitwarden/logo.png @@ -0,0 +1 @@ +Bitwarden \ No newline at end of file diff --git a/content/programs/bitwarden/program.json b/content/programs/bitwarden/program.json new file mode 100644 index 0000000..f23e5e5 --- /dev/null +++ b/content/programs/bitwarden/program.json @@ -0,0 +1,23 @@ +{ + "name": "Bitwarden", + "slug": "bitwarden", + "description": "Open source password management solution.", + "website": "https://bitwarden.com/", + "git_repo": "https://github.com/bitwarden/clients", + "license": "GPL-3.0/AGPL-3.0", + "categories": [ + "security" + ], + "dependencies": [], + "package_names": { + "default": "bitwarden", + "arch": "bitwarden", + "ubuntu": "CUSTOM_INSTALL", + "debian": "CUSTOM_INSTALL", + "fedora": "CUSTOM_INSTALL", + "opensuse": "CUSTOM_INSTALL", + "void": "CUSTOM_INSTALL", + "alpine": "CUSTOM_INSTALL" + }, + "logo": "/programs/bitwarden/logo.png" +} diff --git a/content/programs/bleachbit/program.json b/content/programs/bleachbit/program.json new file mode 100644 index 0000000..ec9f12d --- /dev/null +++ b/content/programs/bleachbit/program.json @@ -0,0 +1,25 @@ +{ + "name": "BleachBit", + "slug": "bleachbit", + "description": "Free system cleaner and privacy manager.", + "website": "https://www.bleachbit.org/", + "git_repo": "https://github.com/bleachbit/bleachbit", + "license": "GPL-3.0", + "categories": [ + "system" + ], + "dependencies": [ + "python3" + ], + "package_names": { + "default": "bleachbit", + "arch": "bleachbit", + "ubuntu": "bleachbit", + "debian": "bleachbit", + "fedora": "bleachbit", + "opensuse": "bleachbit", + "void": "bleachbit", + "alpine": "bleachbit" + }, + "logo": "/programs/bleachbit/logo.png" +} diff --git a/content/programs/blender/logo.png b/content/programs/blender/logo.png new file mode 100644 index 0000000..24fdeea --- /dev/null +++ b/content/programs/blender/logo.png @@ -0,0 +1 @@ +Blender \ No newline at end of file diff --git a/content/programs/blender/program.json b/content/programs/blender/program.json new file mode 100644 index 0000000..5184b25 --- /dev/null +++ b/content/programs/blender/program.json @@ -0,0 +1,25 @@ +{ + "name": "Blender", + "slug": "blender", + "description": "Free and open source 3D creation suite.", + "website": "https://www.blender.org/", + "git_repo": "https://projects.blender.org/blender/blender", + "license": "GPL-3.0", + "categories": [ + "media", + "media-processing", + "development" + ], + "dependencies": [], + "package_names": { + "default": "blender", + "arch": "blender", + "ubuntu": "blender", + "debian": "blender", + "fedora": "blender", + "opensuse": "blender", + "void": "blender", + "alpine": "blender" + }, + "logo": "/programs/blender/logo.png" +} diff --git a/content/programs/bluefish/logo.png b/content/programs/bluefish/logo.png new file mode 100644 index 0000000..33b5a91 --- /dev/null +++ b/content/programs/bluefish/logo.png @@ -0,0 +1,7 @@ + + + + + + + diff --git a/content/programs/bluefish/program.json b/content/programs/bluefish/program.json index ed69676..bed4f2c 100644 --- a/content/programs/bluefish/program.json +++ b/content/programs/bluefish/program.json @@ -4,7 +4,9 @@ "description": "Powerful text editor for web developers and programmers.", "website": "http://bluefish.openoffice.nl/", "license": "GPL-3.0", - "categories": ["editor"], + "categories": [ + "editor" + ], "package_names": { "default": "bluefish", "arch": "bluefish", @@ -14,5 +16,6 @@ "opensuse": "bluefish", "void": "bluefish", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/bluefish/logo.png" } diff --git a/content/programs/bottom/logo.png b/content/programs/bottom/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/bottom/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/bottom/program.json b/content/programs/bottom/program.json index c478894..2105411 100644 --- a/content/programs/bottom/program.json +++ b/content/programs/bottom/program.json @@ -21,5 +21,6 @@ }, "dependencies": [ "cargo" - ] -} \ No newline at end of file + ], + "logo": "/programs/bottom/logo.png" +} diff --git a/content/programs/bpytop/logo.png b/content/programs/bpytop/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/bpytop/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/bpytop/program.json b/content/programs/bpytop/program.json index ba9f353..9c57232 100644 --- a/content/programs/bpytop/program.json +++ b/content/programs/bpytop/program.json @@ -5,8 +5,13 @@ "website": "https://github.com/aristocratos/bpytop", "git_repo": "https://github.com/aristocratos/bpytop", "license": "Apache-2.0", - "categories": ["system-monitor", "terminal"], - "dependencies": ["pip"], + "categories": [ + "system-monitor", + "terminal" + ], + "dependencies": [ + "pip" + ], "package_names": { "default": "bpytop", "arch": "bpytop", @@ -16,5 +21,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "bpytop", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/bpytop/logo.png" } diff --git a/content/programs/brave/logo.png b/content/programs/brave/logo.png new file mode 100644 index 0000000..3c7f468 --- /dev/null +++ b/content/programs/brave/logo.png @@ -0,0 +1 @@ +Brave \ No newline at end of file diff --git a/content/programs/broot/logo.png b/content/programs/broot/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/broot/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/broot/program.json b/content/programs/broot/program.json index 4da5a37..c3ca3d6 100644 --- a/content/programs/broot/program.json +++ b/content/programs/broot/program.json @@ -21,5 +21,6 @@ }, "dependencies": [ "cargo" - ] -} \ No newline at end of file + ], + "logo": "/programs/broot/logo.png" +} diff --git a/content/programs/bspwm/logo.png b/content/programs/bspwm/logo.png new file mode 100644 index 0000000..96e586e --- /dev/null +++ b/content/programs/bspwm/logo.png @@ -0,0 +1 @@ +bspwm \ No newline at end of file diff --git a/content/programs/btop/logo.png b/content/programs/btop/logo.png new file mode 100644 index 0000000..7e9cb7b Binary files /dev/null and b/content/programs/btop/logo.png differ diff --git a/content/programs/btop/program.json b/content/programs/btop/program.json index fb3a197..ecd90d3 100644 --- a/content/programs/btop/program.json +++ b/content/programs/btop/program.json @@ -5,7 +5,10 @@ "website": "https://github.com/aristocratos/btop", "git_repo": "https://github.com/aristocratos/btop", "license": "Apache-2.0", - "categories": ["system", "terminal"], + "categories": [ + "system", + "terminal" + ], "package_names": { "default": "btop", "arch": "btop", @@ -15,5 +18,6 @@ "opensuse": "btop", "void": "btop", "alpine": "btop" - } + }, + "logo": "/programs/btop/logo.png" } diff --git a/content/programs/bumblebee-status/logo.png b/content/programs/bumblebee-status/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/bumblebee-status/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/bumblebee-status/program.json b/content/programs/bumblebee-status/program.json index 238bc09..791a517 100644 --- a/content/programs/bumblebee-status/program.json +++ b/content/programs/bumblebee-status/program.json @@ -5,8 +5,12 @@ "website": "https://github.com/tobi-wan-kenobi/bumblebee-status", "git_repo": "https://github.com/tobi-wan-kenobi/bumblebee-status", "license": "MIT", - "categories": ["status-bar"], - "dependencies": ["pip"], + "categories": [ + "status-bar" + ], + "dependencies": [ + "pip" + ], "package_names": { "default": "bumblebee-status", "arch": "bumblebee-status", @@ -16,5 +20,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/bumblebee-status/logo.png" } diff --git a/content/programs/bup/logo.png b/content/programs/bup/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/bup/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/bup/program.json b/content/programs/bup/program.json index 65d5651..6ae1445 100644 --- a/content/programs/bup/program.json +++ b/content/programs/bup/program.json @@ -5,7 +5,9 @@ "website": "https://github.com/bup/bup", "git_repo": "https://github.com/bup/bup", "license": "LGPL-2.0", - "categories": ["system"], + "categories": [ + "system" + ], "package_names": { "default": "bup", "arch": "bup", @@ -15,5 +17,6 @@ "opensuse": "bup", "void": "bup", "alpine": "bup" - } + }, + "logo": "/programs/bup/logo.png" } diff --git a/content/programs/calcurse/logo.png b/content/programs/calcurse/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/calcurse/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/calcurse/program.json b/content/programs/calcurse/program.json index b506ed7..211ed3f 100644 --- a/content/programs/calcurse/program.json +++ b/content/programs/calcurse/program.json @@ -5,7 +5,10 @@ "website": "https://calcurse.org/", "git_repo": "https://github.com/lfos/calcurse", "license": "BSD-2-Clause", - "categories": ["productivity", "terminal"], + "categories": [ + "productivity", + "terminal" + ], "package_names": { "default": "calcurse", "arch": "calcurse", @@ -15,5 +18,6 @@ "opensuse": "calcurse", "void": "calcurse", "alpine": "calcurse" - } + }, + "logo": "/programs/calcurse/logo.png" } diff --git a/content/programs/cargo/logo.png b/content/programs/cargo/logo.png new file mode 100644 index 0000000..faa8c3a --- /dev/null +++ b/content/programs/cargo/logo.png @@ -0,0 +1 @@ +Rust \ No newline at end of file diff --git a/content/programs/cava/logo.png b/content/programs/cava/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/cava/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/cava/program.json b/content/programs/cava/program.json index 1f03e1d..00b085e 100644 --- a/content/programs/cava/program.json +++ b/content/programs/cava/program.json @@ -5,7 +5,10 @@ "website": "https://github.com/karlstav/cava", "git_repo": "https://github.com/karlstav/cava", "license": "MIT", - "categories": ["audio", "terminal"], + "categories": [ + "audio", + "terminal" + ], "package_names": { "default": "cava", "arch": "cava", @@ -15,5 +18,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "cava", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/cava/logo.png" } diff --git a/content/programs/cbonsai/logo.png b/content/programs/cbonsai/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/cbonsai/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/cbonsai/program.json b/content/programs/cbonsai/program.json index 3c097b9..bae4beb 100644 --- a/content/programs/cbonsai/program.json +++ b/content/programs/cbonsai/program.json @@ -5,8 +5,13 @@ "website": "https://gitlab.com/jallbrit/cbonsai", "git_repo": "https://gitlab.com/jallbrit/cbonsai", "license": "GPL-3.0", - "categories": ["fun", "terminal"], - "dependencies": ["git-dep"], + "categories": [ + "fun", + "terminal" + ], + "dependencies": [ + "git-dep" + ], "package_names": { "default": "cbonsai", "arch": "cbonsai", @@ -16,5 +21,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/cbonsai/logo.png" } diff --git a/content/programs/ccls/program.json b/content/programs/ccls/program.json index 009832c..abddbf7 100644 --- a/content/programs/ccls/program.json +++ b/content/programs/ccls/program.json @@ -4,7 +4,10 @@ "description": "A C/C++/Objective-C language server with clang backend.", "git_repo": "https://github.com/MaskRay/ccls", "license": "Apache-2.0", - "categories": ["development", "lsp"], + "categories": [ + "development", + "lsp" + ], "package_names": { "default": "ccls", "arch": "ccls", @@ -14,5 +17,6 @@ "opensuse": "ccls", "void": "ccls", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/ccls/logo.png" } diff --git a/content/programs/clementine/program.json b/content/programs/clementine/program.json index c1a147b..a6fa174 100644 --- a/content/programs/clementine/program.json +++ b/content/programs/clementine/program.json @@ -5,7 +5,10 @@ "website": "https://www.clementine-player.org/", "git_repo": "https://github.com/clementine-player/Clementine", "license": "GPL-3.0", - "categories": ["audio", "music"], + "categories": [ + "audio", + "music" + ], "package_names": { "default": "clementine", "arch": "clementine", @@ -15,5 +18,6 @@ "opensuse": "clementine", "void": "clementine", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/clementine/logo.png" } diff --git a/content/programs/cli-visualizer/logo.png b/content/programs/cli-visualizer/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/cli-visualizer/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/cli-visualizer/program.json b/content/programs/cli-visualizer/program.json index 074ae1b..ddf2f01 100644 --- a/content/programs/cli-visualizer/program.json +++ b/content/programs/cli-visualizer/program.json @@ -5,8 +5,13 @@ "website": "https://github.com/dpayne/cli-visualizer", "git_repo": "https://github.com/dpayne/cli-visualizer", "license": "MIT", - "categories": ["audio", "terminal"], - "dependencies": ["git-dep"], + "categories": [ + "audio", + "terminal" + ], + "dependencies": [ + "git-dep" + ], "package_names": { "default": "cli-visualizer", "arch": "cli-visualizer", @@ -16,5 +21,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/cli-visualizer/logo.png" } diff --git a/content/programs/clifm/logo.png b/content/programs/clifm/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/clifm/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/clifm/program.json b/content/programs/clifm/program.json index a753429..74f21a3 100644 --- a/content/programs/clifm/program.json +++ b/content/programs/clifm/program.json @@ -5,8 +5,13 @@ "website": "https://github.com/leo-arch/clifm", "git_repo": "https://github.com/leo-arch/clifm", "license": "GPL-2.0", - "categories": ["file-manager", "terminal"], - "dependencies": ["git-dep"], + "categories": [ + "file-manager", + "terminal" + ], + "dependencies": [ + "git-dep" + ], "package_names": { "default": "clifm", "arch": "clifm", @@ -16,5 +21,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/clifm/logo.png" } diff --git a/content/programs/clipmenu/logo.png b/content/programs/clipmenu/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/clipmenu/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/clipmenu/program.json b/content/programs/clipmenu/program.json index 612efd4..d230e65 100644 --- a/content/programs/clipmenu/program.json +++ b/content/programs/clipmenu/program.json @@ -20,5 +20,6 @@ }, "dependencies": [ "git" - ] -} \ No newline at end of file + ], + "logo": "/programs/clipmenu/logo.png" +} diff --git a/content/programs/clipmenud/logo.png b/content/programs/clipmenud/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/clipmenud/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/clipmenud/program.json b/content/programs/clipmenud/program.json index c311fa1..091bf66 100644 --- a/content/programs/clipmenud/program.json +++ b/content/programs/clipmenud/program.json @@ -20,5 +20,6 @@ }, "dependencies": [ "git" - ] -} \ No newline at end of file + ], + "logo": "/programs/clipmenud/logo.png" +} diff --git a/content/programs/cmatrix/logo.png b/content/programs/cmatrix/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/cmatrix/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/cmatrix/program.json b/content/programs/cmatrix/program.json index f98e6cb..e48edf6 100644 --- a/content/programs/cmatrix/program.json +++ b/content/programs/cmatrix/program.json @@ -5,7 +5,10 @@ "website": "https://github.com/abishekvashok/cmatrix", "git_repo": "https://github.com/abishekvashok/cmatrix", "license": "GPL-2.0", - "categories": ["fun", "terminal"], + "categories": [ + "fun", + "terminal" + ], "package_names": { "default": "cmatrix", "arch": "cmatrix", @@ -15,5 +18,6 @@ "opensuse": "cmatrix", "void": "cmatrix", "alpine": "cmatrix" - } + }, + "logo": "/programs/cmatrix/logo.png" } diff --git a/content/programs/cmus/program.json b/content/programs/cmus/program.json index 1afd05f..d18fd19 100644 --- a/content/programs/cmus/program.json +++ b/content/programs/cmus/program.json @@ -5,7 +5,10 @@ "website": "https://cmus.github.io/", "git_repo": "https://github.com/cmus/cmus", "license": "GPL-2.0", - "categories": ["audio", "terminal"], + "categories": [ + "audio", + "terminal" + ], "package_names": { "default": "cmus", "arch": "cmus", @@ -15,5 +18,6 @@ "opensuse": "cmus", "void": "cmus", "alpine": "cmus" - } + }, + "logo": "/programs/cmus/logo.png" } diff --git a/content/programs/code/program.json b/content/programs/code/program.json index 3951f04..b60224f 100644 --- a/content/programs/code/program.json +++ b/content/programs/code/program.json @@ -5,8 +5,13 @@ "website": "https://code.visualstudio.com/", "git_repo": "https://github.com/microsoft/vscode", "license": "MIT", - "categories": ["editor", "development"], - "dependencies": ["curl"], + "categories": [ + "editor", + "development" + ], + "dependencies": [ + "curl" + ], "package_names": { "default": "code", "arch": "code", @@ -16,5 +21,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/code/logo.png" } diff --git a/content/programs/conda/logo.png b/content/programs/conda/logo.png new file mode 100644 index 0000000..45f7bd1 --- /dev/null +++ b/content/programs/conda/logo.png @@ -0,0 +1 @@ +Anaconda \ No newline at end of file diff --git a/content/programs/conda/program.json b/content/programs/conda/program.json index b4c81cf..dc0a0a9 100644 --- a/content/programs/conda/program.json +++ b/content/programs/conda/program.json @@ -12,7 +12,13 @@ ], "package_names": { "default": "CUSTOM_INSTALL", - "arch": "conda" + "arch": "conda", + "alpine": "CUSTOM_INSTALL", + "debian": "CUSTOM_INSTALL", + "fedora": "CUSTOM_INSTALL", + "opensuse": "CUSTOM_INSTALL", + "ubuntu": "CUSTOM_INSTALL", + "void": "CUSTOM_INSTALL" }, "logo": "/programs/conda/logo.png" -} \ No newline at end of file +} diff --git a/content/programs/conky/logo.png b/content/programs/conky/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/conky/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/conky/program.json b/content/programs/conky/program.json index 992ea04..cad654b 100644 --- a/content/programs/conky/program.json +++ b/content/programs/conky/program.json @@ -4,7 +4,10 @@ "description": "A lightweight, highly configurable system monitor.", "git_repo": "https://github.com/brndnmtthws/conky", "license": "GPL-3.0", - "categories": ["system", "x11"], + "categories": [ + "system", + "x11" + ], "package_names": { "default": "conky", "arch": "conky", @@ -14,5 +17,6 @@ "opensuse": "conky", "void": "conky", "alpine": "conky" - } + }, + "logo": "/programs/conky/logo.png" } diff --git a/content/programs/cool-retro-term/custom_install/install.sh b/content/programs/cool-retro-term/custom_install/install.sh new file mode 100644 index 0000000..f77d860 --- /dev/null +++ b/content/programs/cool-retro-term/custom_install/install.sh @@ -0,0 +1,11 @@ +#!/bin/bash +set -e +# cool-retro-term requires Qt5 +# On Void: xbps-install -S qt5-devel qt5-declarative-devel +# On Alpine: apk add qt5-qtbase-dev qt5-qtdeclarative-dev qt5-qtquickcontrols2-dev +git clone --depth=1 https://github.com/Swordfish90/cool-retro-term /tmp/cool-retro-term +cd /tmp/cool-retro-term +qmake +make -j$(nproc) +make install +rm -rf /tmp/cool-retro-term diff --git a/content/programs/cool-retro-term/logo.png b/content/programs/cool-retro-term/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/cool-retro-term/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/cool-retro-term/program.json b/content/programs/cool-retro-term/program.json index 519d532..1d046f8 100644 --- a/content/programs/cool-retro-term/program.json +++ b/content/programs/cool-retro-term/program.json @@ -5,7 +5,10 @@ "website": "https://github.com/Swordfish90/cool-retro-term", "git_repo": "https://github.com/Swordfish90/cool-retro-term", "license": "GPL-3.0", - "categories": ["terminal", "fun"], + "categories": [ + "terminal", + "fun" + ], "dependencies": [], "package_names": { "default": "cool-retro-term", @@ -16,5 +19,6 @@ "opensuse": "cool-retro-term", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/cool-retro-term/logo.png" } diff --git a/content/programs/cowsay/logo.png b/content/programs/cowsay/logo.png new file mode 100644 index 0000000..254e862 --- /dev/null +++ b/content/programs/cowsay/logo.png @@ -0,0 +1,41 @@ + + + +Wikimedia Error + + +
+ + +
+

Error

+ +

Use thumbnail sizes listed on https://w.wiki/GHai

+
+
+ + diff --git a/content/programs/cowsay/program.json b/content/programs/cowsay/program.json index 4a9900e..bfe70d1 100644 --- a/content/programs/cowsay/program.json +++ b/content/programs/cowsay/program.json @@ -5,7 +5,10 @@ "website": "https://github.com/piuccio/cowsay", "git_repo": "https://github.com/piuccio/cowsay", "license": "GPL-3.0", - "categories": ["fun", "terminal"], + "categories": [ + "fun", + "terminal" + ], "package_names": { "default": "cowsay", "arch": "cowsay", @@ -15,5 +18,6 @@ "opensuse": "cowsay", "void": "cowsay", "alpine": "cowsay" - } + }, + "logo": "/programs/cowsay/logo.png" } diff --git a/content/programs/cpu-x/custom_install/install.sh b/content/programs/cpu-x/custom_install/install.sh new file mode 100755 index 0000000..1267992 --- /dev/null +++ b/content/programs/cpu-x/custom_install/install.sh @@ -0,0 +1,9 @@ +#!/bin/bash +set -e +echo "Installing CPU-X via Flatpak..." +if command -v flatpak &>/dev/null; then + flatpak install -y flathub io.github.thetumultuousunicornofdarkness.cpu-x +else + echo "Install flatpak first." + exit 1 +fi diff --git a/content/programs/cpu-x/program.json b/content/programs/cpu-x/program.json new file mode 100644 index 0000000..2ab039c --- /dev/null +++ b/content/programs/cpu-x/program.json @@ -0,0 +1,24 @@ +{ + "name": "CPU-X", + "slug": "cpu-x", + "description": "Free software for gathering detailed CPU and system information.", + "website": "https://thetumultuousunicornofdarkness.github.io/CPU-X/", + "git_repo": "https://github.com/TheTumultuousUnicornOfDarkness/CPU-X", + "license": "GPL-3.0", + "categories": [ + "system", + "system-monitor" + ], + "dependencies": [], + "package_names": { + "default": "cpu-x", + "arch": "cpu-x", + "ubuntu": "CUSTOM_INSTALL", + "debian": "CUSTOM_INSTALL", + "fedora": "CUSTOM_INSTALL", + "opensuse": "CUSTOM_INSTALL", + "void": "CUSTOM_INSTALL", + "alpine": "CUSTOM_INSTALL" + }, + "logo": "/programs/cpu-x/logo.png" +} diff --git a/content/programs/ctop/logo.png b/content/programs/ctop/logo.png new file mode 100644 index 0000000..e68a661 --- /dev/null +++ b/content/programs/ctop/logo.png @@ -0,0 +1 @@ +Docker \ No newline at end of file diff --git a/content/programs/ctop/program.json b/content/programs/ctop/program.json index e0f7e74..cd08ddb 100644 --- a/content/programs/ctop/program.json +++ b/content/programs/ctop/program.json @@ -21,5 +21,6 @@ }, "dependencies": [ "golang" - ] -} \ No newline at end of file + ], + "logo": "/programs/ctop/logo.png" +} diff --git a/content/programs/curl/logo.png b/content/programs/curl/logo.png new file mode 100644 index 0000000..5788acc --- /dev/null +++ b/content/programs/curl/logo.png @@ -0,0 +1 @@ +curl \ No newline at end of file diff --git a/content/programs/darktable/program.json b/content/programs/darktable/program.json new file mode 100644 index 0000000..f4c6c6c --- /dev/null +++ b/content/programs/darktable/program.json @@ -0,0 +1,24 @@ +{ + "name": "darktable", + "slug": "darktable", + "description": "Open source photography workflow and RAW developer.", + "website": "https://www.darktable.org/", + "git_repo": "https://github.com/darktable-org/darktable", + "license": "GPL-3.0+", + "categories": [ + "media", + "image-processing" + ], + "dependencies": [], + "package_names": { + "default": "darktable", + "arch": "darktable", + "ubuntu": "darktable", + "debian": "darktable", + "fedora": "darktable", + "opensuse": "darktable", + "void": "darktable", + "alpine": "darktable" + }, + "logo": "/programs/darktable/logo.png" +} diff --git a/content/programs/dbeaver/logo.png b/content/programs/dbeaver/logo.png new file mode 100644 index 0000000..03f175b --- /dev/null +++ b/content/programs/dbeaver/logo.png @@ -0,0 +1 @@ +DBeaver \ No newline at end of file diff --git a/content/programs/dbus/logo.png b/content/programs/dbus/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/dbus/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/dbus/program.json b/content/programs/dbus/program.json index 87d472f..f8cf415 100644 --- a/content/programs/dbus/program.json +++ b/content/programs/dbus/program.json @@ -4,7 +4,9 @@ "description": "A message bus system for inter-process communication.", "website": "https://www.freedesktop.org/wiki/Software/dbus/", "license": "GPL-2.0", - "categories": ["system"], + "categories": [ + "system" + ], "package_names": { "default": "dbus", "arch": "dbus", @@ -14,5 +16,6 @@ "opensuse": "dbus-1", "void": "dbus", "alpine": "dbus" - } + }, + "logo": "/programs/dbus/logo.png" } diff --git a/content/programs/delta/logo.png b/content/programs/delta/logo.png new file mode 100644 index 0000000..20aecad --- /dev/null +++ b/content/programs/delta/logo.png @@ -0,0 +1 @@ +Delta \ No newline at end of file diff --git a/content/programs/delta/program.json b/content/programs/delta/program.json index fc794f9..e2292cd 100644 --- a/content/programs/delta/program.json +++ b/content/programs/delta/program.json @@ -21,5 +21,6 @@ }, "dependencies": [ "cargo" - ] -} \ No newline at end of file + ], + "logo": "/programs/delta/logo.png" +} diff --git a/content/programs/digikam/logo.png b/content/programs/digikam/logo.png new file mode 100644 index 0000000..91a46b8 --- /dev/null +++ b/content/programs/digikam/logo.png @@ -0,0 +1 @@ +KDE \ No newline at end of file diff --git a/content/programs/digikam/program.json b/content/programs/digikam/program.json index 282c681..b38e495 100644 --- a/content/programs/digikam/program.json +++ b/content/programs/digikam/program.json @@ -4,7 +4,9 @@ "description": "Free and open source digital photo management application.", "website": "https://www.digikam.org/", "license": "GPL-2.0", - "categories": ["image-processing"], + "categories": [ + "image-processing" + ], "package_names": { "default": "digikam", "arch": "digikam", @@ -14,5 +16,6 @@ "opensuse": "digikam", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/digikam/logo.png" } diff --git a/content/programs/direnv/program.json b/content/programs/direnv/program.json index 1bba93a..58eeedf 100644 --- a/content/programs/direnv/program.json +++ b/content/programs/direnv/program.json @@ -5,7 +5,10 @@ "website": "https://direnv.net/", "git_repo": "https://github.com/direnv/direnv", "license": "MIT", - "categories": ["terminal", "system"], + "categories": [ + "terminal", + "system" + ], "package_names": { "default": "direnv", "arch": "direnv", @@ -15,5 +18,6 @@ "opensuse": "direnv", "void": "direnv", "alpine": "direnv" - } + }, + "logo": "/programs/direnv/logo.png" } diff --git a/content/programs/discord/logo.png b/content/programs/discord/logo.png new file mode 100644 index 0000000..ef25142 --- /dev/null +++ b/content/programs/discord/logo.png @@ -0,0 +1 @@ +Discord \ No newline at end of file diff --git a/content/programs/distrobox/logo.png b/content/programs/distrobox/logo.png new file mode 100644 index 0000000..5721634 --- /dev/null +++ b/content/programs/distrobox/logo.png @@ -0,0 +1 @@ +Distrobox \ No newline at end of file diff --git a/content/programs/distrobox/program.json b/content/programs/distrobox/program.json new file mode 100644 index 0000000..1f27776 --- /dev/null +++ b/content/programs/distrobox/program.json @@ -0,0 +1,26 @@ +{ + "name": "Distrobox", + "slug": "distrobox", + "description": "Use any Linux distribution inside your terminal.", + "website": "https://distrobox.it/", + "git_repo": "https://github.com/89luca89/distrobox", + "license": "GPL-3.0", + "categories": [ + "devops", + "development" + ], + "dependencies": [ + "podman" + ], + "package_names": { + "default": "distrobox", + "arch": "distrobox", + "ubuntu": "distrobox", + "debian": "distrobox", + "fedora": "distrobox", + "opensuse": "distrobox", + "void": "distrobox", + "alpine": "distrobox" + }, + "logo": "/programs/distrobox/logo.png" +} diff --git a/content/programs/dmenu/logo.png b/content/programs/dmenu/logo.png new file mode 100644 index 0000000..d6f1dc9 --- /dev/null +++ b/content/programs/dmenu/logo.png @@ -0,0 +1 @@ +suckless \ No newline at end of file diff --git a/content/programs/dmenu/program.json b/content/programs/dmenu/program.json index ef5a22c..d4a3009 100644 --- a/content/programs/dmenu/program.json +++ b/content/programs/dmenu/program.json @@ -4,7 +4,10 @@ "description": "A fast and lightweight dynamic menu for X.", "website": "https://tools.suckless.org/dmenu/", "license": "MIT", - "categories": ["launcher", "x11"], + "categories": [ + "launcher", + "x11" + ], "package_names": { "default": "dmenu", "arch": "dmenu", @@ -14,5 +17,6 @@ "opensuse": "dmenu", "void": "dmenu", "alpine": "dmenu" - } + }, + "logo": "/programs/dmenu/logo.png" } diff --git a/content/programs/doas/logo.png b/content/programs/doas/logo.png new file mode 100644 index 0000000..01ebf31 --- /dev/null +++ b/content/programs/doas/logo.png @@ -0,0 +1 @@ +OpenBSD \ No newline at end of file diff --git a/content/programs/doas/program.json b/content/programs/doas/program.json index 13bf796..5531563 100644 --- a/content/programs/doas/program.json +++ b/content/programs/doas/program.json @@ -4,7 +4,10 @@ "description": "A minimal alternative to sudo from OpenBSD.", "git_repo": "https://github.com/Duncaen/OpenDoas", "license": "ISC", - "categories": ["system", "security"], + "categories": [ + "system", + "security" + ], "package_names": { "default": "opendoas", "arch": "opendoas", @@ -14,5 +17,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "opendoas", "alpine": "doas" - } + }, + "logo": "/programs/doas/logo.png" } diff --git a/content/programs/docker/logo.png b/content/programs/docker/logo.png new file mode 100644 index 0000000..e68a661 --- /dev/null +++ b/content/programs/docker/logo.png @@ -0,0 +1 @@ +Docker \ No newline at end of file diff --git a/content/programs/dolphin/logo.png b/content/programs/dolphin/logo.png new file mode 100644 index 0000000..3ac68f0 --- /dev/null +++ b/content/programs/dolphin/logo.png @@ -0,0 +1 @@ +Dolphin \ No newline at end of file diff --git a/content/programs/dolphin/program.json b/content/programs/dolphin/program.json new file mode 100644 index 0000000..64b8716 --- /dev/null +++ b/content/programs/dolphin/program.json @@ -0,0 +1,23 @@ +{ + "name": "Dolphin", + "slug": "dolphin", + "description": "KDE's powerful and user-friendly file manager.", + "website": "https://apps.kde.org/dolphin/", + "git_repo": "https://invent.kde.org/system/dolphin", + "license": "GPL-2.0+", + "categories": [ + "file-manager" + ], + "dependencies": [], + "package_names": { + "default": "dolphin", + "arch": "dolphin", + "ubuntu": "dolphin", + "debian": "dolphin", + "fedora": "dolphin", + "opensuse": "dolphin", + "void": "dolphin", + "alpine": "dolphin" + }, + "logo": "/programs/dolphin/logo.png" +} diff --git a/content/programs/doom-emacs/program.json b/content/programs/doom-emacs/program.json index f697aa5..47cc741 100644 --- a/content/programs/doom-emacs/program.json +++ b/content/programs/doom-emacs/program.json @@ -14,7 +14,14 @@ "fd" ], "package_names": { - "default": "CUSTOM_INSTALL" + "default": "CUSTOM_INSTALL", + "alpine": "CUSTOM_INSTALL", + "arch": "CUSTOM_INSTALL", + "debian": "CUSTOM_INSTALL", + "fedora": "CUSTOM_INSTALL", + "opensuse": "CUSTOM_INSTALL", + "ubuntu": "CUSTOM_INSTALL", + "void": "CUSTOM_INSTALL" }, "logo": "/programs/doom-emacs/logo.png" -} \ No newline at end of file +} diff --git a/content/programs/dropbox/logo.png b/content/programs/dropbox/logo.png new file mode 100644 index 0000000..2fc2686 --- /dev/null +++ b/content/programs/dropbox/logo.png @@ -0,0 +1 @@ +Dropbox \ No newline at end of file diff --git a/content/programs/duf/logo.png b/content/programs/duf/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/duf/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/duf/program.json b/content/programs/duf/program.json index 295f4c0..336e26a 100644 --- a/content/programs/duf/program.json +++ b/content/programs/duf/program.json @@ -5,7 +5,10 @@ "website": "https://github.com/muesli/duf", "git_repo": "https://github.com/muesli/duf", "license": "MIT", - "categories": ["system", "terminal"], + "categories": [ + "system", + "terminal" + ], "package_names": { "default": "duf", "arch": "duf", @@ -15,5 +18,6 @@ "opensuse": "duf", "void": "duf", "alpine": "duf" - } + }, + "logo": "/programs/duf/logo.png" } diff --git a/content/programs/dunst/logo.png b/content/programs/dunst/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/dunst/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/dunst/program.json b/content/programs/dunst/program.json index 9443690..cac819c 100644 --- a/content/programs/dunst/program.json +++ b/content/programs/dunst/program.json @@ -5,7 +5,10 @@ "website": "https://dunst-project.org/", "git_repo": "https://github.com/dunst-project/dunst", "license": "BSD-3-Clause", - "categories": ["x11", "system"], + "categories": [ + "x11", + "system" + ], "package_names": { "default": "dunst", "arch": "dunst", @@ -15,5 +18,6 @@ "opensuse": "dunst", "void": "dunst", "alpine": "dunst" - } + }, + "logo": "/programs/dunst/logo.png" } diff --git a/content/programs/duplicity/logo.png b/content/programs/duplicity/logo.png new file mode 100644 index 0000000..e8664b6 --- /dev/null +++ b/content/programs/duplicity/logo.png @@ -0,0 +1,88 @@ + + + + +Not Found + + + + + + + +
+
+404 +

+404: Page not found +

+

+Make sure the address is correct and the page has not moved. +Please contact your GitLab administrator if you think this is a mistake. +

+
+
+ +
+
+ + +
+ +
+ + diff --git a/content/programs/duplicity/program.json b/content/programs/duplicity/program.json index 957d2b0..9ad814d 100644 --- a/content/programs/duplicity/program.json +++ b/content/programs/duplicity/program.json @@ -5,7 +5,9 @@ "website": "http://duplicity.nongnu.org/", "git_repo": "https://gitlab.com/duplicity/duplicity", "license": "GPL-2.0", - "categories": ["system"], + "categories": [ + "system" + ], "package_names": { "default": "duplicity", "arch": "duplicity", @@ -15,5 +17,6 @@ "opensuse": "duplicity", "void": "duplicity", "alpine": "duplicity" - } + }, + "logo": "/programs/duplicity/logo.png" } diff --git a/content/programs/dust/logo.png b/content/programs/dust/logo.png new file mode 100644 index 0000000..faa8c3a --- /dev/null +++ b/content/programs/dust/logo.png @@ -0,0 +1 @@ +Rust \ No newline at end of file diff --git a/content/programs/dust/program.json b/content/programs/dust/program.json index 376dd15..a573033 100644 --- a/content/programs/dust/program.json +++ b/content/programs/dust/program.json @@ -21,5 +21,6 @@ }, "dependencies": [ "cargo" - ] -} \ No newline at end of file + ], + "logo": "/programs/dust/logo.png" +} diff --git a/content/programs/dwm/logo.png b/content/programs/dwm/logo.png new file mode 100644 index 0000000..f77d1a8 --- /dev/null +++ b/content/programs/dwm/logo.png @@ -0,0 +1 @@ +dwm \ No newline at end of file diff --git a/content/programs/dwm/program.json b/content/programs/dwm/program.json index fd9d0f2..9fba9cc 100644 --- a/content/programs/dwm/program.json +++ b/content/programs/dwm/program.json @@ -4,8 +4,12 @@ "description": "Dynamic window manager for X, extremely small and fast.", "website": "https://dwm.suckless.org/", "license": "MIT", - "categories": ["window-manager"], - "dependencies": ["git-dep"], + "categories": [ + "window-manager" + ], + "dependencies": [ + "git-dep" + ], "package_names": { "default": "dwm", "arch": "dwm", @@ -15,5 +19,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "dwm", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/dwm/logo.png" } diff --git a/content/programs/eclipse/logo.png b/content/programs/eclipse/logo.png new file mode 100644 index 0000000..f4bfb81 --- /dev/null +++ b/content/programs/eclipse/logo.png @@ -0,0 +1 @@ +Eclipse IDE \ No newline at end of file diff --git a/content/programs/eclipse/program.json b/content/programs/eclipse/program.json index 2685203..1a6fe17 100644 --- a/content/programs/eclipse/program.json +++ b/content/programs/eclipse/program.json @@ -14,7 +14,7 @@ ], "package_names": { "default": "eclipse-java", - "arch": "eclipse-java", + "arch": "CUSTOM_INSTALL", "ubuntu": "CUSTOM_INSTALL", "debian": "CUSTOM_INSTALL", "fedora": "eclipse", @@ -23,4 +23,4 @@ "alpine": "CUSTOM_INSTALL" }, "logo": "/programs/eclipse/logo.png" -} \ No newline at end of file +} diff --git a/content/programs/elfeed/program.json b/content/programs/elfeed/program.json index 6a727ff..f5735d7 100644 --- a/content/programs/elfeed/program.json +++ b/content/programs/elfeed/program.json @@ -11,7 +11,14 @@ "emacs" ], "package_names": { - "default": "CUSTOM_INSTALL" + "default": "CUSTOM_INSTALL", + "alpine": "CUSTOM_INSTALL", + "arch": "CUSTOM_INSTALL", + "debian": "CUSTOM_INSTALL", + "fedora": "CUSTOM_INSTALL", + "opensuse": "CUSTOM_INSTALL", + "ubuntu": "CUSTOM_INSTALL", + "void": "CUSTOM_INSTALL" }, "logo": "/programs/elfeed/logo.png" -} \ No newline at end of file +} diff --git a/content/programs/elinks/program.json b/content/programs/elinks/program.json index 77fd68e..6754b1c 100644 --- a/content/programs/elinks/program.json +++ b/content/programs/elinks/program.json @@ -4,7 +4,10 @@ "description": "An advanced text-mode web browser.", "git_repo": "https://github.com/rkd77/elinks", "license": "GPL-2.0", - "categories": ["browser", "terminal"], + "categories": [ + "browser", + "terminal" + ], "package_names": { "default": "elinks", "arch": "elinks", @@ -14,5 +17,6 @@ "opensuse": "elinks", "void": "elinks", "alpine": "elinks" - } + }, + "logo": "/programs/elinks/logo.png" } diff --git a/content/programs/entr/logo.png b/content/programs/entr/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/entr/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/entr/program.json b/content/programs/entr/program.json index 575e0e1..f7808f7 100644 --- a/content/programs/entr/program.json +++ b/content/programs/entr/program.json @@ -5,7 +5,10 @@ "website": "https://eradman.com/entrproject/", "git_repo": "https://github.com/eradman/entr", "license": "ISC", - "categories": ["terminal", "system"], + "categories": [ + "terminal", + "system" + ], "package_names": { "default": "entr", "arch": "entr", @@ -15,5 +18,6 @@ "opensuse": "entr", "void": "entr", "alpine": "entr" - } + }, + "logo": "/programs/entr/logo.png" } diff --git a/content/programs/etcher/custom_install/install.sh b/content/programs/etcher/custom_install/install.sh new file mode 100755 index 0000000..b67a044 --- /dev/null +++ b/content/programs/etcher/custom_install/install.sh @@ -0,0 +1,12 @@ +#!/bin/bash +set -e +echo "Installing balenaEtcher via AppImage..." +LATEST_URL=$(curl -s https://api.github.com/repos/balena-io/etcher/releases/latest 2>/dev/null | grep browser_download_url | grep AppImage | grep x64 | cut -d '"' -f4 | head -1) +if [ -z "$LATEST_URL" ]; then + echo "Could not find latest AppImage. Install via flatpak: flatpak install flathub io.balena.etcher" + exit 1 +fi +mkdir -p ~/Applications +curl -L -o ~/Applications/balenaEtcher.AppImage "$LATEST_URL" +chmod +x ~/Applications/balenaEtcher.AppImage +echo "balenaEtcher installed to ~/Applications/" diff --git a/content/programs/etcher/logo.png b/content/programs/etcher/logo.png new file mode 100644 index 0000000..7d0e612 Binary files /dev/null and b/content/programs/etcher/logo.png differ diff --git a/content/programs/etcher/program.json b/content/programs/etcher/program.json new file mode 100644 index 0000000..285b8a8 --- /dev/null +++ b/content/programs/etcher/program.json @@ -0,0 +1,24 @@ +{ + "name": "balenaEtcher", + "slug": "etcher", + "description": "Flash OS images to SD cards & USB drives, safely.", + "website": "https://etcher.balena.io/", + "git_repo": "https://github.com/balena-io/etcher", + "license": "Apache-2.0", + "categories": [ + "devops", + "system" + ], + "dependencies": [], + "package_names": { + "default": "etcher", + "arch": "etcher-bin", + "ubuntu": "CUSTOM_INSTALL", + "debian": "CUSTOM_INSTALL", + "fedora": "CUSTOM_INSTALL", + "opensuse": "CUSTOM_INSTALL", + "void": "CUSTOM_INSTALL", + "alpine": "CUSTOM_INSTALL" + }, + "logo": "/programs/etcher/logo.png" +} diff --git a/content/programs/evince/program.json b/content/programs/evince/program.json new file mode 100644 index 0000000..93d54a4 --- /dev/null +++ b/content/programs/evince/program.json @@ -0,0 +1,24 @@ +{ + "name": "Evince", + "slug": "evince", + "description": "GNOME document viewer for PDF, PostScript, and more.", + "website": "https://wiki.gnome.org/Apps/Evince", + "git_repo": "https://gitlab.gnome.org/GNOME/evince", + "license": "GPL-2.0+", + "categories": [ + "document-viewer", + "office" + ], + "dependencies": [], + "package_names": { + "default": "evince", + "arch": "evince", + "ubuntu": "evince", + "debian": "evince", + "fedora": "evince", + "opensuse": "evince", + "void": "evince", + "alpine": "evince" + }, + "logo": "/programs/evince/logo.png" +} diff --git a/content/programs/eww/logo.png b/content/programs/eww/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/eww/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/eww/program.json b/content/programs/eww/program.json index 18101cf..94b0552 100644 --- a/content/programs/eww/program.json +++ b/content/programs/eww/program.json @@ -1,12 +1,16 @@ { "name": "eww", "slug": "eww", - "description": "ElKowar's wacky widgets — desktop widget system.", + "description": "ElKowar's wacky widgets \u2014 desktop widget system.", "website": "https://elkowar.github.io/eww/", "git_repo": "https://github.com/elkowar/eww", "license": "MIT", - "categories": ["status-bar"], - "dependencies": ["cargo"], + "categories": [ + "status-bar" + ], + "dependencies": [ + "cargo" + ], "package_names": { "default": "eww", "arch": "eww", @@ -16,5 +20,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/eww/logo.png" } diff --git a/content/programs/exa/program.json b/content/programs/exa/program.json index 39f58ba..7b4e0e7 100644 --- a/content/programs/exa/program.json +++ b/content/programs/exa/program.json @@ -4,7 +4,9 @@ "description": "A modern replacement for ls with colors and extra features.", "git_repo": "https://github.com/ogham/exa", "license": "MIT", - "categories": ["terminal"], + "categories": [ + "terminal" + ], "package_names": { "default": "exa", "arch": "exa", @@ -14,5 +16,6 @@ "opensuse": "exa", "void": "exa", "alpine": "exa" - } + }, + "logo": "/programs/exa/logo.png" } diff --git a/content/programs/eza/program.json b/content/programs/eza/program.json new file mode 100644 index 0000000..af0ee70 --- /dev/null +++ b/content/programs/eza/program.json @@ -0,0 +1,24 @@ +{ + "name": "eza", + "slug": "eza", + "description": "Modern replacement for ls, written in Rust (exa successor).", + "website": "https://eza.rocks/", + "git_repo": "https://github.com/eza-community/eza", + "license": "MIT", + "categories": [ + "cli", + "file-management" + ], + "dependencies": [], + "package_names": { + "default": "eza", + "arch": "eza", + "ubuntu": "eza", + "debian": "eza", + "fedora": "eza", + "opensuse": "eza", + "void": "eza", + "alpine": "eza" + }, + "logo": "/programs/eza/logo.png" +} diff --git a/content/programs/fastfetch/logo.png b/content/programs/fastfetch/logo.png new file mode 100644 index 0000000..1becba2 --- /dev/null +++ b/content/programs/fastfetch/logo.png @@ -0,0 +1 @@ +404: Not Found \ No newline at end of file diff --git a/content/programs/fastfetch/program.json b/content/programs/fastfetch/program.json index a3a3bed..7a0c34a 100644 --- a/content/programs/fastfetch/program.json +++ b/content/programs/fastfetch/program.json @@ -22,5 +22,6 @@ "dependencies": [ "git-dep", "cmake" - ] -} \ No newline at end of file + ], + "logo": "/programs/fastfetch/logo.png" +} diff --git a/content/programs/fd/program.json b/content/programs/fd/program.json index d6c6d83..c23020d 100644 --- a/content/programs/fd/program.json +++ b/content/programs/fd/program.json @@ -4,7 +4,9 @@ "description": "A simple, fast and user-friendly alternative to find.", "git_repo": "https://github.com/sharkdp/fd", "license": "MIT/Apache-2.0", - "categories": ["terminal"], + "categories": [ + "terminal" + ], "package_names": { "default": "fd-find", "arch": "fd", @@ -14,5 +16,6 @@ "opensuse": "fd", "void": "fd", "alpine": "fd" - } + }, + "logo": "/programs/fd/logo.png" } diff --git a/content/programs/feh/logo.png b/content/programs/feh/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/feh/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/feh/program.json b/content/programs/feh/program.json index 073920f..2229c5e 100644 --- a/content/programs/feh/program.json +++ b/content/programs/feh/program.json @@ -4,7 +4,10 @@ "description": "A fast, lightweight image viewer for the terminal and X.", "git_repo": "https://github.com/derf/feh", "license": "MIT", - "categories": ["viewer", "x11"], + "categories": [ + "viewer", + "x11" + ], "package_names": { "default": "feh", "arch": "feh", @@ -14,5 +17,6 @@ "opensuse": "feh", "void": "feh", "alpine": "feh" - } + }, + "logo": "/programs/feh/logo.png" } diff --git a/content/programs/fff/logo.png b/content/programs/fff/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/fff/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/fff/program.json b/content/programs/fff/program.json index b506cd9..fd0b0e2 100644 --- a/content/programs/fff/program.json +++ b/content/programs/fff/program.json @@ -5,8 +5,13 @@ "website": "https://github.com/dylanaraps/fff", "git_repo": "https://github.com/dylanaraps/fff", "license": "MIT", - "categories": ["file-manager", "terminal"], - "dependencies": ["curl"], + "categories": [ + "file-manager", + "terminal" + ], + "dependencies": [ + "curl" + ], "package_names": { "default": "fff", "arch": "fff", @@ -16,5 +21,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/fff/logo.png" } diff --git a/content/programs/ffmpeg/logo.png b/content/programs/ffmpeg/logo.png new file mode 100644 index 0000000..01392ce --- /dev/null +++ b/content/programs/ffmpeg/logo.png @@ -0,0 +1 @@ +FFmpeg \ No newline at end of file diff --git a/content/programs/figlet/logo.png b/content/programs/figlet/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/figlet/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/figlet/program.json b/content/programs/figlet/program.json index 6f8a7be..b9944d8 100644 --- a/content/programs/figlet/program.json +++ b/content/programs/figlet/program.json @@ -4,7 +4,10 @@ "description": "Program for making large letters out of ordinary text.", "website": "http://www.figlet.org/", "license": "Artistic", - "categories": ["fun", "terminal"], + "categories": [ + "fun", + "terminal" + ], "package_names": { "default": "figlet", "arch": "figlet", @@ -14,5 +17,6 @@ "opensuse": "figlet", "void": "figlet", "alpine": "figlet" - } + }, + "logo": "/programs/figlet/logo.png" } diff --git a/content/programs/firefox/logo.png b/content/programs/firefox/logo.png new file mode 100644 index 0000000..b32c6a4 --- /dev/null +++ b/content/programs/firefox/logo.png @@ -0,0 +1 @@ +Firefox \ No newline at end of file diff --git a/content/programs/fish/logo.png b/content/programs/fish/logo.png new file mode 100644 index 0000000..5de4d52 --- /dev/null +++ b/content/programs/fish/logo.png @@ -0,0 +1 @@ +fish shell \ No newline at end of file diff --git a/content/programs/flameshot/program.json b/content/programs/flameshot/program.json new file mode 100644 index 0000000..0abc1c1 --- /dev/null +++ b/content/programs/flameshot/program.json @@ -0,0 +1,23 @@ +{ + "name": "Flameshot", + "slug": "flameshot", + "description": "Powerful yet simple to use screenshot software.", + "website": "https://flameshot.org/", + "git_repo": "https://github.com/flameshot-org/flameshot", + "license": "GPL-3.0", + "categories": [ + "screenshot" + ], + "dependencies": [], + "package_names": { + "default": "flameshot", + "arch": "flameshot", + "ubuntu": "flameshot", + "debian": "flameshot", + "fedora": "flameshot", + "opensuse": "flameshot", + "void": "flameshot", + "alpine": "flameshot" + }, + "logo": "/programs/flameshot/logo.png" +} diff --git a/content/programs/flatpak/logo.png b/content/programs/flatpak/logo.png new file mode 100644 index 0000000..a73cba0 --- /dev/null +++ b/content/programs/flatpak/logo.png @@ -0,0 +1 @@ +Flatpak \ No newline at end of file diff --git a/content/programs/flatpak/program.json b/content/programs/flatpak/program.json new file mode 100644 index 0000000..ac2c73b --- /dev/null +++ b/content/programs/flatpak/program.json @@ -0,0 +1,23 @@ +{ + "name": "Flatpak", + "slug": "flatpak", + "description": "Next-generation app distribution and sandboxing for Linux.", + "website": "https://flatpak.org/", + "git_repo": "https://github.com/flatpak/flatpak", + "license": "LGPL-2.1+", + "categories": [ + "package-manager" + ], + "dependencies": [], + "package_names": { + "default": "flatpak", + "arch": "flatpak", + "ubuntu": "flatpak", + "debian": "flatpak", + "fedora": "flatpak", + "opensuse": "flatpak", + "void": "flatpak", + "alpine": "flatpak" + }, + "logo": "/programs/flatpak/logo.png" +} diff --git a/content/programs/fluxbox/logo.png b/content/programs/fluxbox/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/fluxbox/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/fluxbox/program.json b/content/programs/fluxbox/program.json index f8eec34..c2ff5c6 100644 --- a/content/programs/fluxbox/program.json +++ b/content/programs/fluxbox/program.json @@ -5,7 +5,9 @@ "website": "http://fluxbox.org/", "git_repo": "https://github.com/fluxbox/fluxbox", "license": "MIT", - "categories": ["window-manager"], + "categories": [ + "window-manager" + ], "dependencies": [], "package_names": { "default": "fluxbox", @@ -16,5 +18,6 @@ "opensuse": "fluxbox", "void": "fluxbox", "alpine": "fluxbox" - } + }, + "logo": "/programs/fluxbox/logo.png" } diff --git a/content/programs/font-manager/logo.png b/content/programs/font-manager/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/font-manager/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/font-manager/program.json b/content/programs/font-manager/program.json new file mode 100644 index 0000000..b61c348 --- /dev/null +++ b/content/programs/font-manager/program.json @@ -0,0 +1,23 @@ +{ + "name": "Font Manager", + "slug": "font-manager", + "description": "Simple font management application for GTK desktop environments.", + "website": "https://fontmanager.github.io/", + "git_repo": "https://github.com/FontManager/font-manager", + "license": "GPL-3.0", + "categories": [ + "system" + ], + "dependencies": [], + "package_names": { + "default": "font-manager", + "arch": "font-manager", + "ubuntu": "font-manager", + "debian": "font-manager", + "fedora": "font-manager", + "opensuse": "font-manager", + "void": "CUSTOM_INSTALL", + "alpine": "CUSTOM_INSTALL" + }, + "logo": "/programs/font-manager/logo.png" +} diff --git a/content/programs/foot/logo.png b/content/programs/foot/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/foot/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/foot/program.json b/content/programs/foot/program.json new file mode 100644 index 0000000..a515043 --- /dev/null +++ b/content/programs/foot/program.json @@ -0,0 +1,23 @@ +{ + "name": "foot", + "slug": "foot", + "description": "Fast, lightweight Wayland terminal emulator.", + "website": "https://codeberg.org/dnkl/foot", + "git_repo": "https://codeberg.org/dnkl/foot", + "license": "MIT", + "categories": [ + "terminal" + ], + "dependencies": [], + "package_names": { + "default": "foot", + "arch": "foot", + "ubuntu": "foot", + "debian": "foot", + "fedora": "foot", + "opensuse": "foot", + "void": "foot", + "alpine": "foot" + }, + "logo": "/programs/foot/logo.png" +} diff --git a/content/programs/fortune/logo.png b/content/programs/fortune/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/fortune/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/fortune/program.json b/content/programs/fortune/program.json index 02fd08c..f9d27ac 100644 --- a/content/programs/fortune/program.json +++ b/content/programs/fortune/program.json @@ -5,7 +5,10 @@ "website": "https://github.com/shlomif/fortune-mod", "git_repo": "https://github.com/shlomif/fortune-mod", "license": "MIT", - "categories": ["fun", "terminal"], + "categories": [ + "fun", + "terminal" + ], "package_names": { "default": "fortune", "arch": "fortune-mod", @@ -15,5 +18,6 @@ "opensuse": "fortune", "void": "fortune-mod", "alpine": "fortune" - } + }, + "logo": "/programs/fortune/logo.png" } diff --git a/content/programs/fsearch/custom_install/install.sh b/content/programs/fsearch/custom_install/install.sh new file mode 100755 index 0000000..1e624ae --- /dev/null +++ b/content/programs/fsearch/custom_install/install.sh @@ -0,0 +1,9 @@ +#!/bin/bash +set -e +echo "Installing FSearch via Flatpak..." +if command -v flatpak &>/dev/null; then + flatpak install -y flathub io.github.cboxdoerfer.FSearch +else + echo "Flatpak not found. Install flatpak first." + exit 1 +fi diff --git a/content/programs/fsearch/logo.png b/content/programs/fsearch/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/fsearch/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/fsearch/program.json b/content/programs/fsearch/program.json new file mode 100644 index 0000000..c74544f --- /dev/null +++ b/content/programs/fsearch/program.json @@ -0,0 +1,24 @@ +{ + "name": "FSearch", + "slug": "fsearch", + "description": "Fast file search utility for Unix-like systems, inspired by Everything.", + "website": "https://github.com/cboxdoerfer/fsearch", + "git_repo": "https://github.com/cboxdoerfer/fsearch", + "license": "GPL-2.0+", + "categories": [ + "search", + "file-management" + ], + "dependencies": [], + "package_names": { + "default": "fsearch", + "arch": "fsearch", + "ubuntu": "CUSTOM_INSTALL", + "debian": "CUSTOM_INSTALL", + "fedora": "CUSTOM_INSTALL", + "opensuse": "CUSTOM_INSTALL", + "void": "CUSTOM_INSTALL", + "alpine": "CUSTOM_INSTALL" + }, + "logo": "/programs/fsearch/logo.png" +} diff --git a/content/programs/fzf/program.json b/content/programs/fzf/program.json index e12cbbd..039179e 100644 --- a/content/programs/fzf/program.json +++ b/content/programs/fzf/program.json @@ -4,7 +4,9 @@ "description": "A command-line fuzzy finder for files, history, and more.", "git_repo": "https://github.com/junegunn/fzf", "license": "MIT", - "categories": ["terminal"], + "categories": [ + "terminal" + ], "package_names": { "default": "fzf", "arch": "fzf", @@ -14,5 +16,6 @@ "opensuse": "fzf", "void": "fzf", "alpine": "fzf" - } + }, + "logo": "/programs/fzf/logo.png" } diff --git a/content/programs/gamemode/logo.png b/content/programs/gamemode/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/gamemode/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/gamemode/program.json b/content/programs/gamemode/program.json new file mode 100644 index 0000000..a63c034 --- /dev/null +++ b/content/programs/gamemode/program.json @@ -0,0 +1,24 @@ +{ + "name": "GameMode", + "slug": "gamemode", + "description": "Daemon/lib combo to optimize Linux system performance for gaming.", + "website": "https://github.com/FeralInteractive/gamemode", + "git_repo": "https://github.com/FeralInteractive/gamemode", + "license": "BSD-3-Clause", + "categories": [ + "game", + "system" + ], + "dependencies": [], + "package_names": { + "default": "gamemode", + "arch": "gamemode", + "ubuntu": "gamemode", + "debian": "gamemode", + "fedora": "gamemode", + "opensuse": "gamemode", + "void": "gamemode", + "alpine": "gamemode" + }, + "logo": "/programs/gamemode/logo.png" +} diff --git a/content/programs/gcc/logo.png b/content/programs/gcc/logo.png new file mode 100644 index 0000000..edfb29b --- /dev/null +++ b/content/programs/gcc/logo.png @@ -0,0 +1 @@ +GNU \ No newline at end of file diff --git a/content/programs/genact/logo.png b/content/programs/genact/logo.png new file mode 100644 index 0000000..faa8c3a --- /dev/null +++ b/content/programs/genact/logo.png @@ -0,0 +1 @@ +Rust \ No newline at end of file diff --git a/content/programs/genact/program.json b/content/programs/genact/program.json index 40d473e..0a3e111 100644 --- a/content/programs/genact/program.json +++ b/content/programs/genact/program.json @@ -5,8 +5,13 @@ "website": "https://github.com/svenstaro/genact", "git_repo": "https://github.com/svenstaro/genact", "license": "MIT", - "categories": ["fun", "terminal"], - "dependencies": ["cargo"], + "categories": [ + "fun", + "terminal" + ], + "dependencies": [ + "cargo" + ], "package_names": { "default": "genact", "arch": "genact", @@ -16,5 +21,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/genact/logo.png" } diff --git a/content/programs/gh/logo.png b/content/programs/gh/logo.png new file mode 100644 index 0000000..81920ca --- /dev/null +++ b/content/programs/gh/logo.png @@ -0,0 +1 @@ +GitHub \ No newline at end of file diff --git a/content/programs/gh/program.json b/content/programs/gh/program.json index 5625448..5fee4d1 100644 --- a/content/programs/gh/program.json +++ b/content/programs/gh/program.json @@ -21,5 +21,6 @@ }, "dependencies": [ "golang" - ] -} \ No newline at end of file + ], + "logo": "/programs/gh/logo.png" +} diff --git a/content/programs/ghostwriter/program.json b/content/programs/ghostwriter/program.json index 0281698..e1172cc 100644 --- a/content/programs/ghostwriter/program.json +++ b/content/programs/ghostwriter/program.json @@ -5,7 +5,10 @@ "website": "https://ghostwriter.kde.org/", "git_repo": "https://github.com/KDE/ghostwriter", "license": "GPL-3.0", - "categories": ["editor", "markdown"], + "categories": [ + "editor", + "markdown" + ], "package_names": { "default": "ghostwriter", "arch": "ghostwriter", @@ -15,5 +18,6 @@ "opensuse": "ghostwriter", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/ghostwriter/logo.png" } diff --git a/content/programs/gimp/logo.png b/content/programs/gimp/logo.png new file mode 100644 index 0000000..784c8fd --- /dev/null +++ b/content/programs/gimp/logo.png @@ -0,0 +1 @@ +GIMP \ No newline at end of file diff --git a/content/programs/git-cola/logo.png b/content/programs/git-cola/logo.png new file mode 100644 index 0000000..5f19a87 --- /dev/null +++ b/content/programs/git-cola/logo.png @@ -0,0 +1 @@ +Git \ No newline at end of file diff --git a/content/programs/git-cola/program.json b/content/programs/git-cola/program.json index 2b321d2..9ce3ce3 100644 --- a/content/programs/git-cola/program.json +++ b/content/programs/git-cola/program.json @@ -5,8 +5,13 @@ "website": "https://git-cola.github.io/", "git_repo": "https://github.com/git-cola/git-cola", "license": "GPL-2.0", - "categories": ["development", "version-control"], - "dependencies": ["pip"], + "categories": [ + "development", + "version-control" + ], + "dependencies": [ + "pip" + ], "package_names": { "default": "git-cola", "arch": "git-cola", @@ -16,5 +21,6 @@ "opensuse": "git-cola", "void": "git-cola", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/git-cola/logo.png" } diff --git a/content/programs/git/logo.png b/content/programs/git/logo.png new file mode 100644 index 0000000..5f19a87 --- /dev/null +++ b/content/programs/git/logo.png @@ -0,0 +1 @@ +Git \ No newline at end of file diff --git a/content/programs/gitkraken/logo.png b/content/programs/gitkraken/logo.png new file mode 100644 index 0000000..709189c --- /dev/null +++ b/content/programs/gitkraken/logo.png @@ -0,0 +1 @@ +GitKraken \ No newline at end of file diff --git a/content/programs/gitui/logo.png b/content/programs/gitui/logo.png new file mode 100644 index 0000000..5f19a87 --- /dev/null +++ b/content/programs/gitui/logo.png @@ -0,0 +1 @@ +Git \ No newline at end of file diff --git a/content/programs/gitui/program.json b/content/programs/gitui/program.json index 92ff727..151c98e 100644 --- a/content/programs/gitui/program.json +++ b/content/programs/gitui/program.json @@ -21,5 +21,6 @@ }, "dependencies": [ "cargo" - ] -} \ No newline at end of file + ], + "logo": "/programs/gitui/logo.png" +} diff --git a/content/programs/glances/logo.png b/content/programs/glances/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/glances/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/glances/program.json b/content/programs/glances/program.json index 7f80427..10e7568 100644 --- a/content/programs/glances/program.json +++ b/content/programs/glances/program.json @@ -5,7 +5,10 @@ "website": "https://nicolargo.github.io/glances/", "git_repo": "https://github.com/nicolargo/glances", "license": "LGPL-3.0", - "categories": ["system", "terminal"], + "categories": [ + "system", + "terminal" + ], "package_names": { "default": "glances", "arch": "glances", @@ -15,5 +18,6 @@ "opensuse": "glances", "void": "glances", "alpine": "glances" - } + }, + "logo": "/programs/glances/logo.png" } diff --git a/content/programs/glava/logo.png b/content/programs/glava/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/glava/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/glava/program.json b/content/programs/glava/program.json index 1c7b547..75438d8 100644 --- a/content/programs/glava/program.json +++ b/content/programs/glava/program.json @@ -5,8 +5,12 @@ "website": "https://github.com/jarcode-foss/glava", "git_repo": "https://github.com/jarcode-foss/glava", "license": "GPL-3.0", - "categories": ["audio"], - "dependencies": ["git-dep"], + "categories": [ + "audio" + ], + "dependencies": [ + "git-dep" + ], "package_names": { "default": "glava", "arch": "glava", @@ -16,5 +20,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/glava/logo.png" } diff --git a/content/programs/glow/program.json b/content/programs/glow/program.json index 65aa4e7..f68c386 100644 --- a/content/programs/glow/program.json +++ b/content/programs/glow/program.json @@ -14,7 +14,11 @@ "default": "CUSTOM_INSTALL", "arch": "glow", "ubuntu": "glow", - "void": "glow" + "void": "glow", + "alpine": "CUSTOM_INSTALL", + "debian": "CUSTOM_INSTALL", + "fedora": "CUSTOM_INSTALL", + "opensuse": "CUSTOM_INSTALL" }, "logo": "/programs/glow/logo.png" -} \ No newline at end of file +} diff --git a/content/programs/gnome-boxes/logo.png b/content/programs/gnome-boxes/logo.png new file mode 100644 index 0000000..4d9150f --- /dev/null +++ b/content/programs/gnome-boxes/logo.png @@ -0,0 +1 @@ +GNOME \ No newline at end of file diff --git a/content/programs/gnome-boxes/program.json b/content/programs/gnome-boxes/program.json index 2e55a37..e05445c 100644 --- a/content/programs/gnome-boxes/program.json +++ b/content/programs/gnome-boxes/program.json @@ -5,7 +5,9 @@ "website": "https://apps.gnome.org/Boxes/", "git_repo": "https://gitlab.gnome.org/GNOME/gnome-boxes", "license": "GPL-2.0", - "categories": ["system"], + "categories": [ + "system" + ], "package_names": { "default": "gnome-boxes", "arch": "gnome-boxes", @@ -15,5 +17,6 @@ "opensuse": "gnome-boxes", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/gnome-boxes/logo.png" } diff --git a/content/programs/go/logo.png b/content/programs/go/logo.png new file mode 100644 index 0000000..51990bd --- /dev/null +++ b/content/programs/go/logo.png @@ -0,0 +1 @@ +Go \ No newline at end of file diff --git a/content/programs/go/program.json b/content/programs/go/program.json new file mode 100644 index 0000000..1f4a248 --- /dev/null +++ b/content/programs/go/program.json @@ -0,0 +1,24 @@ +{ + "name": "Go", + "slug": "go", + "description": "Open source programming language by Google.", + "website": "https://go.dev/", + "git_repo": "https://github.com/golang/go", + "license": "BSD-3-Clause", + "categories": [ + "language", + "development" + ], + "dependencies": [], + "package_names": { + "default": "golang", + "arch": "go", + "ubuntu": "golang-go", + "debian": "golang-go", + "fedora": "golang", + "opensuse": "go", + "void": "go", + "alpine": "go" + }, + "logo": "/programs/go/logo.png" +} diff --git a/content/programs/gopass/program.json b/content/programs/gopass/program.json index 905bbaa..11ed8db 100644 --- a/content/programs/gopass/program.json +++ b/content/programs/gopass/program.json @@ -21,5 +21,6 @@ }, "dependencies": [ "golang" - ] -} \ No newline at end of file + ], + "logo": "/programs/gopass/logo.png" +} diff --git a/content/programs/gotop/logo.png b/content/programs/gotop/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/gotop/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/gotop/program.json b/content/programs/gotop/program.json index 9c826c6..b93eebf 100644 --- a/content/programs/gotop/program.json +++ b/content/programs/gotop/program.json @@ -5,8 +5,13 @@ "website": "https://github.com/cjbassi/gotop", "git_repo": "https://github.com/cjbassi/gotop", "license": "MIT", - "categories": ["system-monitor", "terminal"], - "dependencies": ["golang"], + "categories": [ + "system-monitor", + "terminal" + ], + "dependencies": [ + "golang" + ], "package_names": { "default": "gotop", "arch": "gotop", @@ -16,5 +21,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/gotop/logo.png" } diff --git a/content/programs/gparted/logo.png b/content/programs/gparted/logo.png new file mode 100644 index 0000000..4d9150f --- /dev/null +++ b/content/programs/gparted/logo.png @@ -0,0 +1 @@ +GNOME \ No newline at end of file diff --git a/content/programs/gparted/program.json b/content/programs/gparted/program.json new file mode 100644 index 0000000..5132707 --- /dev/null +++ b/content/programs/gparted/program.json @@ -0,0 +1,23 @@ +{ + "name": "GParted", + "slug": "gparted", + "description": "GNOME Partition Editor for managing disk partitions.", + "website": "https://gparted.org/", + "git_repo": "https://gitlab.gnome.org/GNOME/gparted", + "license": "GPL-2.0+", + "categories": [ + "system" + ], + "dependencies": [], + "package_names": { + "default": "gparted", + "arch": "gparted", + "ubuntu": "gparted", + "debian": "gparted", + "fedora": "gparted", + "opensuse": "gparted", + "void": "gparted", + "alpine": "gparted" + }, + "logo": "/programs/gparted/logo.png" +} diff --git a/content/programs/gpick/logo.png b/content/programs/gpick/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/gpick/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/gpick/program.json b/content/programs/gpick/program.json new file mode 100644 index 0000000..9a58da4 --- /dev/null +++ b/content/programs/gpick/program.json @@ -0,0 +1,24 @@ +{ + "name": "Gpick", + "slug": "gpick", + "description": "Advanced color picker and palette editor.", + "website": "http://www.gpick.org/", + "git_repo": "https://github.com/thezbyg/gpick", + "license": "BSD-3-Clause", + "categories": [ + "image-processing", + "development" + ], + "dependencies": [], + "package_names": { + "default": "gpick", + "arch": "gpick", + "ubuntu": "gpick", + "debian": "gpick", + "fedora": "gpick", + "opensuse": "gpick", + "void": "CUSTOM_INSTALL", + "alpine": "CUSTOM_INSTALL" + }, + "logo": "/programs/gpick/logo.png" +} diff --git a/content/programs/gping/logo.png b/content/programs/gping/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/gping/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/gping/program.json b/content/programs/gping/program.json index dbb801f..1016618 100644 --- a/content/programs/gping/program.json +++ b/content/programs/gping/program.json @@ -21,5 +21,6 @@ }, "dependencies": [ "cargo" - ] -} \ No newline at end of file + ], + "logo": "/programs/gping/logo.png" +} diff --git a/content/programs/guake/logo.png b/content/programs/guake/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/guake/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/guake/program.json b/content/programs/guake/program.json index d891d5f..749aaec 100644 --- a/content/programs/guake/program.json +++ b/content/programs/guake/program.json @@ -5,8 +5,12 @@ "website": "http://guake-project.org/", "git_repo": "https://github.com/Guake/guake", "license": "GPL-2.0", - "categories": ["terminal"], - "dependencies": ["pip"], + "categories": [ + "terminal" + ], + "dependencies": [ + "pip" + ], "package_names": { "default": "guake", "arch": "guake", @@ -16,5 +20,6 @@ "opensuse": "guake", "void": "guake", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/guake/logo.png" } diff --git a/content/programs/handbrake/program.json b/content/programs/handbrake/program.json new file mode 100644 index 0000000..614e4a0 --- /dev/null +++ b/content/programs/handbrake/program.json @@ -0,0 +1,24 @@ +{ + "name": "HandBrake", + "slug": "handbrake", + "description": "Open-source video transcoder.", + "website": "https://handbrake.fr/", + "git_repo": "https://github.com/HandBrake/HandBrake", + "license": "GPL-2.0", + "categories": [ + "media", + "media-processing" + ], + "dependencies": [], + "package_names": { + "default": "handbrake", + "arch": "handbrake", + "ubuntu": "handbrake", + "debian": "handbrake", + "fedora": "handbrake", + "opensuse": "handbrake", + "void": "handbrake", + "alpine": "handbrake" + }, + "logo": "/programs/handbrake/logo.png" +} diff --git a/content/programs/helix/logo.png b/content/programs/helix/logo.png new file mode 100644 index 0000000..059667e --- /dev/null +++ b/content/programs/helix/logo.png @@ -0,0 +1 @@ +Helix \ No newline at end of file diff --git a/content/programs/herbstluftwm/logo.png b/content/programs/herbstluftwm/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/herbstluftwm/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/herbstluftwm/program.json b/content/programs/herbstluftwm/program.json index c5e3723..16fa186 100644 --- a/content/programs/herbstluftwm/program.json +++ b/content/programs/herbstluftwm/program.json @@ -5,7 +5,9 @@ "website": "https://herbstluftwm.org/", "git_repo": "https://github.com/herbstluftwm/herbstluftwm", "license": "BSD-2-Clause", - "categories": ["window-manager"], + "categories": [ + "window-manager" + ], "dependencies": [], "package_names": { "default": "herbstluftwm", @@ -16,5 +18,6 @@ "opensuse": "herbstluftwm", "void": "herbstluftwm", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/herbstluftwm/logo.png" } diff --git a/content/programs/heroic-games-launcher/custom_install/install.sh b/content/programs/heroic-games-launcher/custom_install/install.sh new file mode 100755 index 0000000..a4506d9 --- /dev/null +++ b/content/programs/heroic-games-launcher/custom_install/install.sh @@ -0,0 +1,9 @@ +#!/bin/bash +set -e +echo "Installing Heroic Games Launcher via Flatpak..." +if command -v flatpak &>/dev/null; then + flatpak install -y flathub com.heroicgameslauncher.hgl +else + echo "Flatpak not found. Install flatpak first." + exit 1 +fi diff --git a/content/programs/heroic-games-launcher/logo.png b/content/programs/heroic-games-launcher/logo.png new file mode 100644 index 0000000..079d315 --- /dev/null +++ b/content/programs/heroic-games-launcher/logo.png @@ -0,0 +1 @@ +Epic Games \ No newline at end of file diff --git a/content/programs/heroic-games-launcher/program.json b/content/programs/heroic-games-launcher/program.json new file mode 100644 index 0000000..68b8a3e --- /dev/null +++ b/content/programs/heroic-games-launcher/program.json @@ -0,0 +1,23 @@ +{ + "name": "Heroic Games Launcher", + "slug": "heroic-games-launcher", + "description": "Open-source Epic Games and GOG launcher.", + "website": "https://heroicgameslauncher.com/", + "git_repo": "https://github.com/Heroic-Games-Launcher/HeroicGamesLauncher", + "license": "GPL-3.0", + "categories": [ + "game" + ], + "dependencies": [], + "package_names": { + "default": "heroic-games-launcher", + "arch": "heroic-games-launcher-bin", + "ubuntu": "CUSTOM_INSTALL", + "debian": "CUSTOM_INSTALL", + "fedora": "CUSTOM_INSTALL", + "opensuse": "CUSTOM_INSTALL", + "void": "CUSTOM_INSTALL", + "alpine": "CUSTOM_INSTALL" + }, + "logo": "/programs/heroic-games-launcher/logo.png" +} diff --git a/content/programs/hexyl/logo.png b/content/programs/hexyl/logo.png new file mode 100644 index 0000000..faa8c3a --- /dev/null +++ b/content/programs/hexyl/logo.png @@ -0,0 +1 @@ +Rust \ No newline at end of file diff --git a/content/programs/hexyl/program.json b/content/programs/hexyl/program.json index b537729..c94f9ec 100644 --- a/content/programs/hexyl/program.json +++ b/content/programs/hexyl/program.json @@ -21,5 +21,6 @@ }, "dependencies": [ "cargo" - ] -} \ No newline at end of file + ], + "logo": "/programs/hexyl/logo.png" +} diff --git a/content/programs/htop/logo.png b/content/programs/htop/logo.png new file mode 100644 index 0000000..60baf85 --- /dev/null +++ b/content/programs/htop/logo.png @@ -0,0 +1 @@ +htop \ No newline at end of file diff --git a/content/programs/httpie/logo.png b/content/programs/httpie/logo.png new file mode 100644 index 0000000..ac38a64 --- /dev/null +++ b/content/programs/httpie/logo.png @@ -0,0 +1 @@ +HTTPie \ No newline at end of file diff --git a/content/programs/httpie/program.json b/content/programs/httpie/program.json index 9ef6b9f..2ed19fe 100644 --- a/content/programs/httpie/program.json +++ b/content/programs/httpie/program.json @@ -11,7 +11,7 @@ ], "package_names": { "default": "httpie", - "arch": "python-httpie", + "arch": "httpie", "ubuntu": "httpie", "debian": "httpie", "fedora": "httpie", @@ -23,4 +23,4 @@ "pip" ], "logo": "/programs/httpie/logo.png" -} \ No newline at end of file +} diff --git a/content/programs/hyper/logo.png b/content/programs/hyper/logo.png new file mode 100644 index 0000000..d939f0b --- /dev/null +++ b/content/programs/hyper/logo.png @@ -0,0 +1 @@ +Hyper \ No newline at end of file diff --git a/content/programs/hyper/program.json b/content/programs/hyper/program.json index 3bb6f1f..e596117 100644 --- a/content/programs/hyper/program.json +++ b/content/programs/hyper/program.json @@ -5,8 +5,12 @@ "website": "https://hyper.is/", "git_repo": "https://github.com/vercel/hyper", "license": "MIT", - "categories": ["terminal"], - "dependencies": ["curl"], + "categories": [ + "terminal" + ], + "dependencies": [ + "curl" + ], "package_names": { "default": "hyper", "arch": "hyper", @@ -16,5 +20,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/hyper/logo.png" } diff --git a/content/programs/hyperfine/logo.png b/content/programs/hyperfine/logo.png new file mode 100644 index 0000000..faa8c3a --- /dev/null +++ b/content/programs/hyperfine/logo.png @@ -0,0 +1 @@ +Rust \ No newline at end of file diff --git a/content/programs/hyperfine/program.json b/content/programs/hyperfine/program.json index d88a556..96727b5 100644 --- a/content/programs/hyperfine/program.json +++ b/content/programs/hyperfine/program.json @@ -21,5 +21,6 @@ }, "dependencies": [ "cargo" - ] -} \ No newline at end of file + ], + "logo": "/programs/hyperfine/logo.png" +} diff --git a/content/programs/hyprland/logo.png b/content/programs/hyprland/logo.png new file mode 100644 index 0000000..89c1656 --- /dev/null +++ b/content/programs/hyprland/logo.png @@ -0,0 +1 @@ +Hyprland \ No newline at end of file diff --git a/content/programs/i3-gaps/logo.png b/content/programs/i3-gaps/logo.png new file mode 100644 index 0000000..63efb6b --- /dev/null +++ b/content/programs/i3-gaps/logo.png @@ -0,0 +1 @@ +i3 \ No newline at end of file diff --git a/content/programs/i3-gaps/program.json b/content/programs/i3-gaps/program.json index 3b4fec3..58f668f 100644 --- a/content/programs/i3-gaps/program.json +++ b/content/programs/i3-gaps/program.json @@ -4,15 +4,19 @@ "description": "A fork of i3 with gaps between windows (gap support merged into i3 4.22+).", "git_repo": "https://github.com/Airblader/i3", "license": "BSD-3-Clause", - "categories": ["wm", "x11"], + "categories": [ + "wm", + "x11" + ], "package_names": { "default": "i3", - "arch": "i3-gaps", + "arch": "i3-wm", "ubuntu": "i3-gaps", "debian": "i3", "fedora": "i3", "opensuse": "i3", "void": "i3-gaps", "alpine": "i3wm" - } + }, + "logo": "/programs/i3-gaps/logo.png" } diff --git a/content/programs/i3/logo.png b/content/programs/i3/logo.png new file mode 100644 index 0000000..63efb6b --- /dev/null +++ b/content/programs/i3/logo.png @@ -0,0 +1 @@ +i3 \ No newline at end of file diff --git a/content/programs/i3/program.json b/content/programs/i3/program.json index 9f63dd9..9c14da4 100644 --- a/content/programs/i3/program.json +++ b/content/programs/i3/program.json @@ -5,7 +5,10 @@ "website": "https://i3wm.org/", "git_repo": "https://github.com/i3/i3", "license": "BSD-3-Clause", - "categories": ["wm", "x11"], + "categories": [ + "wm", + "x11" + ], "package_names": { "default": "i3", "arch": "i3-wm", @@ -15,5 +18,6 @@ "opensuse": "i3", "void": "i3", "alpine": "i3wm" - } + }, + "logo": "/programs/i3/logo.png" } diff --git a/content/programs/i3bar/logo.png b/content/programs/i3bar/logo.png new file mode 100644 index 0000000..63efb6b --- /dev/null +++ b/content/programs/i3bar/logo.png @@ -0,0 +1 @@ +i3 \ No newline at end of file diff --git a/content/programs/i3bar/program.json b/content/programs/i3bar/program.json index 39e0367..50159da 100644 --- a/content/programs/i3bar/program.json +++ b/content/programs/i3bar/program.json @@ -4,7 +4,10 @@ "description": "The status bar included with the i3 window manager.", "website": "https://i3wm.org/", "license": "BSD-3-Clause", - "categories": ["x11", "desktop"], + "categories": [ + "x11", + "desktop" + ], "package_names": { "default": "i3", "arch": "i3-wm", @@ -14,5 +17,6 @@ "opensuse": "i3", "void": "i3", "alpine": "i3wm" - } + }, + "logo": "/programs/i3bar/logo.png" } diff --git a/content/programs/i3blocks/logo.png b/content/programs/i3blocks/logo.png new file mode 100644 index 0000000..63efb6b --- /dev/null +++ b/content/programs/i3blocks/logo.png @@ -0,0 +1 @@ +i3 \ No newline at end of file diff --git a/content/programs/i3blocks/program.json b/content/programs/i3blocks/program.json index 20c3bae..c057884 100644 --- a/content/programs/i3blocks/program.json +++ b/content/programs/i3blocks/program.json @@ -4,7 +4,10 @@ "description": "A feed generator for the i3bar status bar.", "git_repo": "https://github.com/vivien/i3blocks", "license": "GPL-3.0", - "categories": ["x11", "desktop"], + "categories": [ + "x11", + "desktop" + ], "package_names": { "default": "i3blocks", "arch": "i3blocks", @@ -14,5 +17,6 @@ "opensuse": "i3blocks", "void": "i3blocks", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/i3blocks/logo.png" } diff --git a/content/programs/i3lock/logo.png b/content/programs/i3lock/logo.png new file mode 100644 index 0000000..63efb6b --- /dev/null +++ b/content/programs/i3lock/logo.png @@ -0,0 +1 @@ +i3 \ No newline at end of file diff --git a/content/programs/i3lock/program.json b/content/programs/i3lock/program.json index 9a2ad95..3ace7da 100644 --- a/content/programs/i3lock/program.json +++ b/content/programs/i3lock/program.json @@ -4,7 +4,10 @@ "description": "A simple screen locker for X.", "git_repo": "https://github.com/i3/i3lock", "license": "BSD-3-Clause", - "categories": ["x11", "security"], + "categories": [ + "x11", + "security" + ], "package_names": { "default": "i3lock", "arch": "i3lock", @@ -14,5 +17,6 @@ "opensuse": "i3lock", "void": "i3lock", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/i3lock/logo.png" } diff --git a/content/programs/i3status-rust/logo.png b/content/programs/i3status-rust/logo.png new file mode 100644 index 0000000..faa8c3a --- /dev/null +++ b/content/programs/i3status-rust/logo.png @@ -0,0 +1 @@ +Rust \ No newline at end of file diff --git a/content/programs/i3status-rust/program.json b/content/programs/i3status-rust/program.json index 3f542cd..8cd0ff3 100644 --- a/content/programs/i3status-rust/program.json +++ b/content/programs/i3status-rust/program.json @@ -5,8 +5,12 @@ "website": "https://github.com/greshake/i3status-rust", "git_repo": "https://github.com/greshake/i3status-rust", "license": "GPL-3.0", - "categories": ["status-bar"], - "dependencies": ["cargo"], + "categories": [ + "status-bar" + ], + "dependencies": [ + "cargo" + ], "package_names": { "default": "i3status-rust", "arch": "i3status-rust", @@ -16,5 +20,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/i3status-rust/logo.png" } diff --git a/content/programs/i3status/logo.png b/content/programs/i3status/logo.png new file mode 100644 index 0000000..63efb6b --- /dev/null +++ b/content/programs/i3status/logo.png @@ -0,0 +1 @@ +i3 \ No newline at end of file diff --git a/content/programs/i3status/program.json b/content/programs/i3status/program.json index 0b66200..2a16772 100644 --- a/content/programs/i3status/program.json +++ b/content/programs/i3status/program.json @@ -4,7 +4,10 @@ "description": "A small program for generating a status bar for i3bar.", "git_repo": "https://github.com/i3/i3status", "license": "BSD-3-Clause", - "categories": ["x11", "desktop"], + "categories": [ + "x11", + "desktop" + ], "package_names": { "default": "i3status", "arch": "i3status", @@ -14,5 +17,6 @@ "opensuse": "i3status", "void": "i3status", "alpine": "i3status" - } + }, + "logo": "/programs/i3status/logo.png" } diff --git a/content/programs/icewm/logo.png b/content/programs/icewm/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/icewm/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/icewm/program.json b/content/programs/icewm/program.json index 294b069..39c6adb 100644 --- a/content/programs/icewm/program.json +++ b/content/programs/icewm/program.json @@ -5,7 +5,9 @@ "website": "https://ice-wm.org/", "git_repo": "https://github.com/bbidulock/icewm", "license": "LGPL-2.0", - "categories": ["window-manager"], + "categories": [ + "window-manager" + ], "dependencies": [], "package_names": { "default": "icewm", @@ -16,5 +18,6 @@ "opensuse": "icewm", "void": "icewm", "alpine": "icewm" - } + }, + "logo": "/programs/icewm/logo.png" } diff --git a/content/programs/imagemagick/logo.png b/content/programs/imagemagick/logo.png new file mode 100644 index 0000000..f1514d7 Binary files /dev/null and b/content/programs/imagemagick/logo.png differ diff --git a/content/programs/imagemagick/program.json b/content/programs/imagemagick/program.json index fe6c44c..9de87dc 100644 --- a/content/programs/imagemagick/program.json +++ b/content/programs/imagemagick/program.json @@ -5,7 +5,10 @@ "website": "https://imagemagick.org/", "git_repo": "https://github.com/ImageMagick/ImageMagick", "license": "ImageMagick", - "categories": ["utility", "multimedia"], + "categories": [ + "utility", + "multimedia" + ], "package_names": { "default": "imagemagick", "arch": "imagemagick", @@ -15,5 +18,6 @@ "opensuse": "ImageMagick", "void": "ImageMagick", "alpine": "imagemagick" - } + }, + "logo": "/programs/imagemagick/logo.png" } diff --git a/content/programs/inkscape/logo.png b/content/programs/inkscape/logo.png new file mode 100644 index 0000000..12d38c2 --- /dev/null +++ b/content/programs/inkscape/logo.png @@ -0,0 +1 @@ +Inkscape \ No newline at end of file diff --git a/content/programs/intellij-idea/logo.png b/content/programs/intellij-idea/logo.png new file mode 100644 index 0000000..d6ed4af --- /dev/null +++ b/content/programs/intellij-idea/logo.png @@ -0,0 +1 @@ +IntelliJ IDEA \ No newline at end of file diff --git a/content/programs/irssi/logo.png b/content/programs/irssi/logo.png new file mode 100644 index 0000000..9f602b3 --- /dev/null +++ b/content/programs/irssi/logo.png @@ -0,0 +1,456 @@ + + + + + + + + + <no title> - Irssi + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + +
+ Skip to content +
+ + + + + + + + +
+
+
+ +
+
+
Irssi
+
+
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

Error

+

This page could not be found.

+
+ +
+
+
+ + +
+
+ Made with Sphinx and + Furo + +
+
+
+ +
+
+
+ +
+
+ +
+
+ + + + + + + + + \ No newline at end of file diff --git a/content/programs/irssi/program.json b/content/programs/irssi/program.json index 8c90fa8..720a5bb 100644 --- a/content/programs/irssi/program.json +++ b/content/programs/irssi/program.json @@ -5,7 +5,10 @@ "website": "https://irssi.org/", "git_repo": "https://github.com/irssi/irssi", "license": "GPL-2.0", - "categories": ["communication", "terminal"], + "categories": [ + "communication", + "terminal" + ], "package_names": { "default": "irssi", "arch": "irssi", @@ -15,5 +18,6 @@ "opensuse": "irssi", "void": "irssi", "alpine": "irssi" - } + }, + "logo": "/programs/irssi/logo.png" } diff --git a/content/programs/java/logo.png b/content/programs/java/logo.png new file mode 100644 index 0000000..d946516 --- /dev/null +++ b/content/programs/java/logo.png @@ -0,0 +1 @@ +OpenJDK \ No newline at end of file diff --git a/content/programs/joplin/custom_install/install.sh b/content/programs/joplin/custom_install/install.sh new file mode 100755 index 0000000..4399f5e --- /dev/null +++ b/content/programs/joplin/custom_install/install.sh @@ -0,0 +1,10 @@ +#!/bin/bash +set -e +echo "Installing Joplin..." +if command -v flatpak &>/dev/null; then + flatpak install -y flathub net.cozic.joplin_desktop +elif command -v snap &>/dev/null; then + sudo snap install joplin-desktop +else + wget -O - https://raw.githubusercontent.com/laurent22/joplin/dev/Joplin_install_and_update.sh | bash +fi diff --git a/content/programs/joplin/logo.png b/content/programs/joplin/logo.png new file mode 100644 index 0000000..e1f27f3 --- /dev/null +++ b/content/programs/joplin/logo.png @@ -0,0 +1 @@ +Joplin \ No newline at end of file diff --git a/content/programs/joplin/program.json b/content/programs/joplin/program.json new file mode 100644 index 0000000..0ec42e8 --- /dev/null +++ b/content/programs/joplin/program.json @@ -0,0 +1,24 @@ +{ + "name": "Joplin", + "slug": "joplin", + "description": "Open-source note taking and to-do app with sync.", + "website": "https://joplinapp.org/", + "git_repo": "https://github.com/laurent22/joplin", + "license": "AGPL-3.0", + "categories": [ + "productivity", + "markdown" + ], + "dependencies": [], + "package_names": { + "default": "joplin", + "arch": "joplin", + "ubuntu": "CUSTOM_INSTALL", + "debian": "CUSTOM_INSTALL", + "fedora": "CUSTOM_INSTALL", + "opensuse": "CUSTOM_INSTALL", + "void": "CUSTOM_INSTALL", + "alpine": "CUSTOM_INSTALL" + }, + "logo": "/programs/joplin/logo.png" +} diff --git a/content/programs/joshuto/logo.png b/content/programs/joshuto/logo.png new file mode 100644 index 0000000..faa8c3a --- /dev/null +++ b/content/programs/joshuto/logo.png @@ -0,0 +1 @@ +Rust \ No newline at end of file diff --git a/content/programs/joshuto/program.json b/content/programs/joshuto/program.json index e7eb5d1..b0295ff 100644 --- a/content/programs/joshuto/program.json +++ b/content/programs/joshuto/program.json @@ -5,8 +5,13 @@ "website": "https://github.com/kamiyaa/joshuto", "git_repo": "https://github.com/kamiyaa/joshuto", "license": "MIT", - "categories": ["file-manager", "terminal"], - "dependencies": ["cargo"], + "categories": [ + "file-manager", + "terminal" + ], + "dependencies": [ + "cargo" + ], "package_names": { "default": "joshuto", "arch": "joshuto", @@ -16,5 +21,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "joshuto", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/joshuto/logo.png" } diff --git a/content/programs/jq/program.json b/content/programs/jq/program.json index d15edca..f6386b1 100644 --- a/content/programs/jq/program.json +++ b/content/programs/jq/program.json @@ -5,7 +5,10 @@ "website": "https://jqlang.github.io/jq/", "git_repo": "https://github.com/jqlang/jq", "license": "MIT", - "categories": ["terminal", "system"], + "categories": [ + "terminal", + "system" + ], "package_names": { "default": "jq", "arch": "jq", @@ -15,5 +18,6 @@ "opensuse": "jq", "void": "jq", "alpine": "jq" - } + }, + "logo": "/programs/jq/logo.png" } diff --git a/content/programs/just/logo.png b/content/programs/just/logo.png new file mode 100644 index 0000000..7dc0672 --- /dev/null +++ b/content/programs/just/logo.png @@ -0,0 +1 @@ +Just \ No newline at end of file diff --git a/content/programs/jwm/logo.png b/content/programs/jwm/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/jwm/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/jwm/program.json b/content/programs/jwm/program.json index faf97e9..7862e36 100644 --- a/content/programs/jwm/program.json +++ b/content/programs/jwm/program.json @@ -5,8 +5,12 @@ "website": "https://joewing.net/projects/jwm/", "git_repo": "https://github.com/joewing/jwm", "license": "GPL-2.0", - "categories": ["window-manager"], - "dependencies": ["git-dep"], + "categories": [ + "window-manager" + ], + "dependencies": [ + "git-dep" + ], "package_names": { "default": "jwm", "arch": "jwm", @@ -16,5 +20,6 @@ "opensuse": "jwm", "void": "jwm", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/jwm/logo.png" } diff --git a/content/programs/k9s/logo.png b/content/programs/k9s/logo.png new file mode 100644 index 0000000..b2dded3 --- /dev/null +++ b/content/programs/k9s/logo.png @@ -0,0 +1 @@ +Kubernetes \ No newline at end of file diff --git a/content/programs/k9s/program.json b/content/programs/k9s/program.json index 189e66b..b9ba962 100644 --- a/content/programs/k9s/program.json +++ b/content/programs/k9s/program.json @@ -21,5 +21,6 @@ }, "dependencies": [ "golang" - ] -} \ No newline at end of file + ], + "logo": "/programs/k9s/logo.png" +} diff --git a/content/programs/kakoune/program.json b/content/programs/kakoune/program.json index 056b597..af7e06a 100644 --- a/content/programs/kakoune/program.json +++ b/content/programs/kakoune/program.json @@ -5,7 +5,10 @@ "website": "https://kakoune.org/", "git_repo": "https://github.com/mawww/kakoune", "license": "Unlicense", - "categories": ["editor", "terminal"], + "categories": [ + "editor", + "terminal" + ], "package_names": { "default": "kakoune", "arch": "kakoune", @@ -15,5 +18,6 @@ "opensuse": "kakoune", "void": "kakoune", "alpine": "kakoune" - } + }, + "logo": "/programs/kakoune/logo.png" } diff --git a/content/programs/kde-plasma/custom_install/install.sh b/content/programs/kde-plasma/custom_install/install.sh new file mode 100755 index 0000000..f0ff369 --- /dev/null +++ b/content/programs/kde-plasma/custom_install/install.sh @@ -0,0 +1,11 @@ +#!/bin/bash +set -e +echo "Installing KDE Plasma..." +if [ -f /etc/os-release ]; then + . /etc/os-release + case "$ID" in + opensuse*|suse*) sudo zypper install -y -t pattern kde kde_plasma ;; + alpine) echo "Alpine: KDE Plasma is available via 'setup-desktop plasma'" && exit 0 ;; + *) echo "Unknown distro for KDE Plasma. Try your package manager." && exit 1 ;; + esac +fi diff --git a/content/programs/kde-plasma/logo.png b/content/programs/kde-plasma/logo.png new file mode 100644 index 0000000..91a46b8 --- /dev/null +++ b/content/programs/kde-plasma/logo.png @@ -0,0 +1 @@ +KDE \ No newline at end of file diff --git a/content/programs/kde-plasma/program.json b/content/programs/kde-plasma/program.json new file mode 100644 index 0000000..47fbc01 --- /dev/null +++ b/content/programs/kde-plasma/program.json @@ -0,0 +1,24 @@ +{ + "name": "KDE Plasma", + "slug": "kde-plasma", + "description": "Full-featured, modern desktop environment by KDE.", + "website": "https://kde.org/plasma-desktop/", + "git_repo": "https://invent.kde.org/plasma", + "license": "GPL-2.0+", + "categories": [ + "window-manager", + "compositor" + ], + "dependencies": [], + "package_names": { + "default": "plasma-desktop", + "arch": "plasma-meta", + "ubuntu": "kde-plasma-desktop", + "debian": "kde-plasma-desktop", + "fedora": "@kde-desktop", + "opensuse": "CUSTOM_INSTALL", + "void": "kde5", + "alpine": "CUSTOM_INSTALL" + }, + "logo": "/programs/kde-plasma/logo.png" +} diff --git a/content/programs/kdenlive/logo.png b/content/programs/kdenlive/logo.png new file mode 100644 index 0000000..5fd84b2 --- /dev/null +++ b/content/programs/kdenlive/logo.png @@ -0,0 +1 @@ +Kdenlive \ No newline at end of file diff --git a/content/programs/kdenlive/program.json b/content/programs/kdenlive/program.json new file mode 100644 index 0000000..e2f7451 --- /dev/null +++ b/content/programs/kdenlive/program.json @@ -0,0 +1,24 @@ +{ + "name": "Kdenlive", + "slug": "kdenlive", + "description": "Professional open-source video editor by KDE.", + "website": "https://kdenlive.org/", + "git_repo": "https://invent.kde.org/multimedia/kdenlive", + "license": "GPL-2.0+", + "categories": [ + "media", + "media-processing" + ], + "dependencies": [], + "package_names": { + "default": "kdenlive", + "arch": "kdenlive", + "ubuntu": "kdenlive", + "debian": "kdenlive", + "fedora": "kdenlive", + "opensuse": "kdenlive", + "void": "kdenlive", + "alpine": "kdenlive" + }, + "logo": "/programs/kdenlive/logo.png" +} diff --git a/content/programs/keepassxc/logo.png b/content/programs/keepassxc/logo.png new file mode 100644 index 0000000..b4a59eb --- /dev/null +++ b/content/programs/keepassxc/logo.png @@ -0,0 +1 @@ +KeePassXC \ No newline at end of file diff --git a/content/programs/keepassxc/program.json b/content/programs/keepassxc/program.json new file mode 100644 index 0000000..e0f5f23 --- /dev/null +++ b/content/programs/keepassxc/program.json @@ -0,0 +1,23 @@ +{ + "name": "KeePassXC", + "slug": "keepassxc", + "description": "Cross-platform password manager with strong encryption.", + "website": "https://keepassxc.org/", + "git_repo": "https://github.com/keepassxreboot/keepassxc", + "license": "GPL-2.0/3.0", + "categories": [ + "security" + ], + "dependencies": [], + "package_names": { + "default": "keepassxc", + "arch": "keepassxc", + "ubuntu": "keepassxc", + "debian": "keepassxc", + "fedora": "keepassxc", + "opensuse": "keepassxc", + "void": "keepassxc", + "alpine": "keepassxc" + }, + "logo": "/programs/keepassxc/logo.png" +} diff --git a/content/programs/kitty/program.json b/content/programs/kitty/program.json index 8d9d922..9b368d8 100644 --- a/content/programs/kitty/program.json +++ b/content/programs/kitty/program.json @@ -5,7 +5,9 @@ "website": "https://sw.kovidgoyal.net/kitty/", "git_repo": "https://github.com/kovidgoyal/kitty", "license": "GPL-3.0", - "categories": ["terminal"], + "categories": [ + "terminal" + ], "package_names": { "default": "kitty", "arch": "kitty", @@ -15,5 +17,6 @@ "opensuse": "kitty", "void": "kitty", "alpine": "kitty" - } + }, + "logo": "/programs/kitty/logo.png" } diff --git a/content/programs/kodi/logo.png b/content/programs/kodi/logo.png new file mode 100644 index 0000000..74d03d2 --- /dev/null +++ b/content/programs/kodi/logo.png @@ -0,0 +1 @@ +Kodi \ No newline at end of file diff --git a/content/programs/konsole/logo.png b/content/programs/konsole/logo.png new file mode 100644 index 0000000..91a46b8 --- /dev/null +++ b/content/programs/konsole/logo.png @@ -0,0 +1 @@ +KDE \ No newline at end of file diff --git a/content/programs/konsole/program.json b/content/programs/konsole/program.json index 07597c1..5cbdc97 100644 --- a/content/programs/konsole/program.json +++ b/content/programs/konsole/program.json @@ -5,7 +5,9 @@ "website": "https://konsole.kde.org/", "git_repo": "https://github.com/KDE/konsole", "license": "GPL-2.0", - "categories": ["terminal"], + "categories": [ + "terminal" + ], "package_names": { "default": "konsole", "arch": "konsole", @@ -15,5 +17,6 @@ "opensuse": "konsole", "void": "konsole", "alpine": "konsole" - } + }, + "logo": "/programs/konsole/logo.png" } diff --git a/content/programs/krita/logo.png b/content/programs/krita/logo.png new file mode 100644 index 0000000..6f9f500 --- /dev/null +++ b/content/programs/krita/logo.png @@ -0,0 +1 @@ +Krita \ No newline at end of file diff --git a/content/programs/lapce/custom_install/install.sh b/content/programs/lapce/custom_install/install.sh new file mode 100755 index 0000000..c5132dd --- /dev/null +++ b/content/programs/lapce/custom_install/install.sh @@ -0,0 +1,11 @@ +#!/bin/bash +set -e +echo "Installing Lapce..." +if command -v cargo &>/dev/null && command -v cargo-binstall &>/dev/null; then + cargo binstall lapce -y +elif command -v flatpak &>/dev/null; then + flatpak install -y flathub dev.lapce.lapce +else + echo "Install cargo-binstall or flatpak first." + exit 1 +fi diff --git a/content/programs/lapce/logo.png b/content/programs/lapce/logo.png new file mode 100644 index 0000000..3ce20e5 --- /dev/null +++ b/content/programs/lapce/logo.png @@ -0,0 +1 @@ +Lapce \ No newline at end of file diff --git a/content/programs/lapce/program.json b/content/programs/lapce/program.json new file mode 100644 index 0000000..15755b7 --- /dev/null +++ b/content/programs/lapce/program.json @@ -0,0 +1,24 @@ +{ + "name": "Lapce", + "slug": "lapce", + "description": "Lightning-fast and powerful code editor written in Rust.", + "website": "https://lapce.dev/", + "git_repo": "https://github.com/lapce/lapce", + "license": "Apache-2.0", + "categories": [ + "editor", + "development" + ], + "dependencies": [], + "package_names": { + "default": "lapce", + "arch": "lapce", + "ubuntu": "CUSTOM_INSTALL", + "debian": "CUSTOM_INSTALL", + "fedora": "CUSTOM_INSTALL", + "opensuse": "CUSTOM_INSTALL", + "void": "CUSTOM_INSTALL", + "alpine": "CUSTOM_INSTALL" + }, + "logo": "/programs/lapce/logo.png" +} diff --git a/content/programs/lazydocker/logo.png b/content/programs/lazydocker/logo.png new file mode 100644 index 0000000..e68a661 --- /dev/null +++ b/content/programs/lazydocker/logo.png @@ -0,0 +1 @@ +Docker \ No newline at end of file diff --git a/content/programs/lazydocker/program.json b/content/programs/lazydocker/program.json index ef9d416..f46607a 100644 --- a/content/programs/lazydocker/program.json +++ b/content/programs/lazydocker/program.json @@ -21,5 +21,6 @@ }, "dependencies": [ "golang" - ] -} \ No newline at end of file + ], + "logo": "/programs/lazydocker/logo.png" +} diff --git a/content/programs/lazygit/logo.png b/content/programs/lazygit/logo.png new file mode 100644 index 0000000..5f19a87 --- /dev/null +++ b/content/programs/lazygit/logo.png @@ -0,0 +1 @@ +Git \ No newline at end of file diff --git a/content/programs/lazygit/program.json b/content/programs/lazygit/program.json index 1fda062..5d5e05f 100644 --- a/content/programs/lazygit/program.json +++ b/content/programs/lazygit/program.json @@ -21,5 +21,6 @@ }, "dependencies": [ "golang" - ] -} \ No newline at end of file + ], + "logo": "/programs/lazygit/logo.png" +} diff --git a/content/programs/ledger/program.json b/content/programs/ledger/program.json index 640fb89..613355d 100644 --- a/content/programs/ledger/program.json +++ b/content/programs/ledger/program.json @@ -5,7 +5,10 @@ "website": "https://ledger-cli.org/", "git_repo": "https://github.com/ledger/ledger", "license": "BSD-3-Clause", - "categories": ["productivity", "terminal"], + "categories": [ + "productivity", + "terminal" + ], "package_names": { "default": "ledger", "arch": "ledger", @@ -15,5 +18,6 @@ "opensuse": "ledger", "void": "ledger", "alpine": "ledger" - } + }, + "logo": "/programs/ledger/logo.png" } diff --git a/content/programs/leftwm/logo.png b/content/programs/leftwm/logo.png new file mode 100644 index 0000000..faa8c3a --- /dev/null +++ b/content/programs/leftwm/logo.png @@ -0,0 +1 @@ +Rust \ No newline at end of file diff --git a/content/programs/leftwm/program.json b/content/programs/leftwm/program.json index b41667b..6dc8d20 100644 --- a/content/programs/leftwm/program.json +++ b/content/programs/leftwm/program.json @@ -5,8 +5,12 @@ "website": "https://leftwm.org/", "git_repo": "https://github.com/leftwm/leftwm", "license": "MIT", - "categories": ["window-manager"], - "dependencies": ["cargo"], + "categories": [ + "window-manager" + ], + "dependencies": [ + "cargo" + ], "package_names": { "default": "leftwm", "arch": "leftwm", @@ -16,5 +20,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/leftwm/logo.png" } diff --git a/content/programs/lemonbar/logo.png b/content/programs/lemonbar/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/lemonbar/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/lemonbar/program.json b/content/programs/lemonbar/program.json index 837e53d..40d2923 100644 --- a/content/programs/lemonbar/program.json +++ b/content/programs/lemonbar/program.json @@ -5,8 +5,12 @@ "website": "https://github.com/LemonBoy/bar", "git_repo": "https://github.com/LemonBoy/bar", "license": "MIT", - "categories": ["status-bar"], - "dependencies": ["git-dep"], + "categories": [ + "status-bar" + ], + "dependencies": [ + "git-dep" + ], "package_names": { "default": "lemonbar", "arch": "lemonbar", @@ -16,5 +20,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "lemonbar", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/lemonbar/logo.png" } diff --git a/content/programs/less/logo.png b/content/programs/less/logo.png new file mode 100644 index 0000000..4d5ccba --- /dev/null +++ b/content/programs/less/logo.png @@ -0,0 +1 @@ +Less \ No newline at end of file diff --git a/content/programs/less/program.json b/content/programs/less/program.json index b77269b..f4c1c1e 100644 --- a/content/programs/less/program.json +++ b/content/programs/less/program.json @@ -3,7 +3,9 @@ "slug": "less", "description": "A terminal pager that allows backward movement in a file.", "license": "GPL-3.0", - "categories": ["terminal"], + "categories": [ + "terminal" + ], "package_names": { "default": "less", "arch": "less", @@ -13,5 +15,6 @@ "opensuse": "less", "void": "less", "alpine": "less" - } + }, + "logo": "/programs/less/logo.png" } diff --git a/content/programs/lf/logo.png b/content/programs/lf/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/lf/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/lf/program.json b/content/programs/lf/program.json index c04576d..37ee263 100644 --- a/content/programs/lf/program.json +++ b/content/programs/lf/program.json @@ -21,5 +21,6 @@ }, "dependencies": [ "golang" - ] -} \ No newline at end of file + ], + "logo": "/programs/lf/logo.png" +} diff --git a/content/programs/libreoffice/logo.png b/content/programs/libreoffice/logo.png new file mode 100644 index 0000000..71688d5 --- /dev/null +++ b/content/programs/libreoffice/logo.png @@ -0,0 +1 @@ +LibreOffice \ No newline at end of file diff --git a/content/programs/liquidprompt/logo.png b/content/programs/liquidprompt/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/liquidprompt/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/liquidprompt/program.json b/content/programs/liquidprompt/program.json index bd19fa0..401864e 100644 --- a/content/programs/liquidprompt/program.json +++ b/content/programs/liquidprompt/program.json @@ -5,8 +5,13 @@ "website": "https://github.com/nojhan/liquidprompt", "git_repo": "https://github.com/nojhan/liquidprompt", "license": "AGPL-3.0", - "categories": ["shell", "terminal"], - "dependencies": ["git-dep"], + "categories": [ + "shell", + "terminal" + ], + "dependencies": [ + "git-dep" + ], "package_names": { "default": "liquidprompt", "arch": "liquidprompt", @@ -16,5 +21,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/liquidprompt/logo.png" } diff --git a/content/programs/lmms/logo.png b/content/programs/lmms/logo.png new file mode 100644 index 0000000..ddce78b --- /dev/null +++ b/content/programs/lmms/logo.png @@ -0,0 +1 @@ +LMMS \ No newline at end of file diff --git a/content/programs/localsend/custom_install/install.sh b/content/programs/localsend/custom_install/install.sh new file mode 100755 index 0000000..5075f77 --- /dev/null +++ b/content/programs/localsend/custom_install/install.sh @@ -0,0 +1,9 @@ +#!/bin/bash +set -e +echo "Installing LocalSend via Flatpak..." +if command -v flatpak &>/dev/null; then + flatpak install -y flathub org.localsend.localsend_app +else + echo "Flatpak not found. Install flatpak first." + exit 1 +fi diff --git a/content/programs/localsend/logo.png b/content/programs/localsend/logo.png new file mode 100644 index 0000000..d9dbacb --- /dev/null +++ b/content/programs/localsend/logo.png @@ -0,0 +1 @@ +LocalSend \ No newline at end of file diff --git a/content/programs/localsend/program.json b/content/programs/localsend/program.json new file mode 100644 index 0000000..b34d8d3 --- /dev/null +++ b/content/programs/localsend/program.json @@ -0,0 +1,24 @@ +{ + "name": "LocalSend", + "slug": "localsend", + "description": "Open-source AirDrop alternative for cross-platform file sharing.", + "website": "https://localsend.org/", + "git_repo": "https://github.com/localsend/localsend", + "license": "MIT", + "categories": [ + "network", + "file-management" + ], + "dependencies": [], + "package_names": { + "default": "CUSTOM_INSTALL", + "arch": "localsend", + "ubuntu": "CUSTOM_INSTALL", + "debian": "CUSTOM_INSTALL", + "fedora": "CUSTOM_INSTALL", + "opensuse": "CUSTOM_INSTALL", + "void": "CUSTOM_INSTALL", + "alpine": "CUSTOM_INSTALL" + }, + "logo": "/programs/localsend/logo.png" +} diff --git a/content/programs/logseq/logo.png b/content/programs/logseq/logo.png new file mode 100644 index 0000000..a9649ac --- /dev/null +++ b/content/programs/logseq/logo.png @@ -0,0 +1 @@ +Logseq \ No newline at end of file diff --git a/content/programs/lolcat/logo.png b/content/programs/lolcat/logo.png new file mode 100644 index 0000000..6acadc0 --- /dev/null +++ b/content/programs/lolcat/logo.png @@ -0,0 +1 @@ +Ruby \ No newline at end of file diff --git a/content/programs/lolcat/program.json b/content/programs/lolcat/program.json index cea966c..23dfe13 100644 --- a/content/programs/lolcat/program.json +++ b/content/programs/lolcat/program.json @@ -5,7 +5,10 @@ "website": "https://github.com/busyloop/lolcat", "git_repo": "https://github.com/busyloop/lolcat", "license": "WTFPL", - "categories": ["fun", "terminal"], + "categories": [ + "fun", + "terminal" + ], "package_names": { "default": "lolcat", "arch": "lolcat", @@ -15,5 +18,6 @@ "opensuse": "lolcat", "void": "lolcat", "alpine": "lolcat" - } + }, + "logo": "/programs/lolcat/logo.png" } diff --git a/content/programs/lollypop/logo.png b/content/programs/lollypop/logo.png new file mode 100644 index 0000000..4d9150f --- /dev/null +++ b/content/programs/lollypop/logo.png @@ -0,0 +1 @@ +GNOME \ No newline at end of file diff --git a/content/programs/lollypop/program.json b/content/programs/lollypop/program.json index 9b68c77..a785076 100644 --- a/content/programs/lollypop/program.json +++ b/content/programs/lollypop/program.json @@ -5,7 +5,10 @@ "website": "https://wiki.gnome.org/Apps/Lollypop", "git_repo": "https://gitlab.gnome.org/World/lollypop", "license": "GPL-3.0", - "categories": ["audio", "music"], + "categories": [ + "audio", + "music" + ], "package_names": { "default": "lollypop", "arch": "lollypop", @@ -15,5 +18,6 @@ "opensuse": "lollypop", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/lollypop/logo.png" } diff --git a/content/programs/lsp-java/program.json b/content/programs/lsp-java/program.json index 58d9a9a..982af1e 100644 --- a/content/programs/lsp-java/program.json +++ b/content/programs/lsp-java/program.json @@ -13,7 +13,14 @@ "curl" ], "package_names": { - "default": "CUSTOM_INSTALL" + "default": "CUSTOM_INSTALL", + "alpine": "CUSTOM_INSTALL", + "arch": "CUSTOM_INSTALL", + "debian": "CUSTOM_INSTALL", + "fedora": "CUSTOM_INSTALL", + "opensuse": "CUSTOM_INSTALL", + "ubuntu": "CUSTOM_INSTALL", + "void": "CUSTOM_INSTALL" }, "logo": "/programs/lsp-java/logo.png" -} \ No newline at end of file +} diff --git a/content/programs/lua/logo.png b/content/programs/lua/logo.png new file mode 100644 index 0000000..5f4c652 --- /dev/null +++ b/content/programs/lua/logo.png @@ -0,0 +1 @@ +Lua \ No newline at end of file diff --git a/content/programs/lua/program.json b/content/programs/lua/program.json new file mode 100644 index 0000000..278229c --- /dev/null +++ b/content/programs/lua/program.json @@ -0,0 +1,24 @@ +{ + "name": "Lua", + "slug": "lua", + "description": "Lightweight embeddable scripting language.", + "website": "https://www.lua.org/", + "git_repo": "https://github.com/lua/lua", + "license": "MIT", + "categories": [ + "language", + "development" + ], + "dependencies": [], + "package_names": { + "default": "lua", + "arch": "lua", + "ubuntu": "lua5.4", + "debian": "lua5.4", + "fedora": "lua", + "opensuse": "lua", + "void": "lua54", + "alpine": "lua5.4" + }, + "logo": "/programs/lua/logo.png" +} diff --git a/content/programs/lutris/logo.png b/content/programs/lutris/logo.png new file mode 100644 index 0000000..322e405 --- /dev/null +++ b/content/programs/lutris/logo.png @@ -0,0 +1 @@ +Lutris \ No newline at end of file diff --git a/content/programs/lynx/logo.png b/content/programs/lynx/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/lynx/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/lynx/program.json b/content/programs/lynx/program.json index 4d3ecaa..a3ce250 100644 --- a/content/programs/lynx/program.json +++ b/content/programs/lynx/program.json @@ -3,7 +3,10 @@ "slug": "lynx", "description": "A classic text-based web browser.", "license": "GPL-2.0", - "categories": ["browser", "terminal"], + "categories": [ + "browser", + "terminal" + ], "package_names": { "default": "lynx", "arch": "lynx", @@ -13,5 +16,6 @@ "opensuse": "lynx", "void": "lynx", "alpine": "lynx" - } + }, + "logo": "/programs/lynx/logo.png" } diff --git a/content/programs/magic-wormhole/logo.png b/content/programs/magic-wormhole/logo.png new file mode 100644 index 0000000..e1b14ec --- /dev/null +++ b/content/programs/magic-wormhole/logo.png @@ -0,0 +1 @@ +Python \ No newline at end of file diff --git a/content/programs/magic-wormhole/program.json b/content/programs/magic-wormhole/program.json index 8e5fa5e..749cdb9 100644 --- a/content/programs/magic-wormhole/program.json +++ b/content/programs/magic-wormhole/program.json @@ -21,5 +21,6 @@ }, "dependencies": [ "pip" - ] -} \ No newline at end of file + ], + "logo": "/programs/magic-wormhole/logo.png" +} diff --git a/content/programs/mailspring/program.json b/content/programs/mailspring/program.json index 6836d8d..20374a9 100644 --- a/content/programs/mailspring/program.json +++ b/content/programs/mailspring/program.json @@ -5,8 +5,12 @@ "website": "https://getmailspring.com/", "git_repo": "https://github.com/Foundry376/Mailspring", "license": "GPL-3.0", - "categories": ["email"], - "dependencies": ["curl"], + "categories": [ + "email" + ], + "dependencies": [ + "curl" + ], "package_names": { "default": "mailspring", "arch": "mailspring", @@ -16,5 +20,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/mailspring/logo.png" } diff --git a/content/programs/maim/logo.png b/content/programs/maim/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/maim/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/maim/program.json b/content/programs/maim/program.json index eaf7dd3..9c8c061 100644 --- a/content/programs/maim/program.json +++ b/content/programs/maim/program.json @@ -4,7 +4,10 @@ "description": "A simple screenshot utility for X.", "git_repo": "https://github.com/naelstrof/maim", "license": "GPL-3.0", - "categories": ["x11", "utility"], + "categories": [ + "x11", + "utility" + ], "package_names": { "default": "maim", "arch": "maim", @@ -14,5 +17,6 @@ "opensuse": "maim", "void": "maim", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/maim/logo.png" } diff --git a/content/programs/make/logo.png b/content/programs/make/logo.png new file mode 100644 index 0000000..1bc46c5 --- /dev/null +++ b/content/programs/make/logo.png @@ -0,0 +1 @@ +Make \ No newline at end of file diff --git a/content/programs/mangohud/logo.png b/content/programs/mangohud/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/mangohud/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/mangohud/program.json b/content/programs/mangohud/program.json new file mode 100644 index 0000000..a431821 --- /dev/null +++ b/content/programs/mangohud/program.json @@ -0,0 +1,24 @@ +{ + "name": "MangoHud", + "slug": "mangohud", + "description": "Vulkan/OpenGL overlay for monitoring FPS, temperatures, and more.", + "website": "https://github.com/flightlessmango/MangoHud", + "git_repo": "https://github.com/flightlessmango/MangoHud", + "license": "MIT", + "categories": [ + "game", + "system-monitor" + ], + "dependencies": [], + "package_names": { + "default": "mangohud", + "arch": "mangohud", + "ubuntu": "mangohud", + "debian": "mangohud", + "fedora": "mangohud", + "opensuse": "mangohud", + "void": "mangohud", + "alpine": "mangohud" + }, + "logo": "/programs/mangohud/logo.png" +} diff --git a/content/programs/marktext/logo.png b/content/programs/marktext/logo.png new file mode 100644 index 0000000..74c121d --- /dev/null +++ b/content/programs/marktext/logo.png @@ -0,0 +1 @@ +Markdown \ No newline at end of file diff --git a/content/programs/marktext/program.json b/content/programs/marktext/program.json index 4af398d..de77d30 100644 --- a/content/programs/marktext/program.json +++ b/content/programs/marktext/program.json @@ -5,8 +5,13 @@ "website": "https://www.marktext.cc/", "git_repo": "https://github.com/marktext/marktext", "license": "MIT", - "categories": ["editor", "markdown"], - "dependencies": ["curl"], + "categories": [ + "editor", + "markdown" + ], + "dependencies": [ + "curl" + ], "package_names": { "default": "marktext", "arch": "marktext", @@ -16,5 +21,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/marktext/logo.png" } diff --git a/content/programs/mc/logo.png b/content/programs/mc/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/mc/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/mc/program.json b/content/programs/mc/program.json index 752daf2..a500fd8 100644 --- a/content/programs/mc/program.json +++ b/content/programs/mc/program.json @@ -5,7 +5,10 @@ "website": "https://midnight-commander.org/", "git_repo": "https://github.com/MidnightCommander/mc", "license": "GPL-3.0", - "categories": ["file-manager", "terminal"], + "categories": [ + "file-manager", + "terminal" + ], "dependencies": [], "package_names": { "default": "mc", @@ -16,5 +19,6 @@ "opensuse": "mc", "void": "mc", "alpine": "mc" - } + }, + "logo": "/programs/mc/logo.png" } diff --git a/content/programs/micro/logo.png b/content/programs/micro/logo.png new file mode 100644 index 0000000..2cf3531 --- /dev/null +++ b/content/programs/micro/logo.png @@ -0,0 +1 @@ +Micro Editor \ No newline at end of file diff --git a/content/programs/micro/program.json b/content/programs/micro/program.json index ee3f930..2fb372d 100644 --- a/content/programs/micro/program.json +++ b/content/programs/micro/program.json @@ -5,7 +5,10 @@ "website": "https://micro-editor.github.io/", "git_repo": "https://github.com/zyedidia/micro", "license": "MIT", - "categories": ["editor", "terminal"], + "categories": [ + "editor", + "terminal" + ], "package_names": { "default": "micro", "arch": "micro", @@ -15,5 +18,6 @@ "opensuse": "micro", "void": "micro", "alpine": "micro" - } + }, + "logo": "/programs/micro/logo.png" } diff --git a/content/programs/midori/program.json b/content/programs/midori/program.json index 5952afe..40398d9 100644 --- a/content/programs/midori/program.json +++ b/content/programs/midori/program.json @@ -4,7 +4,9 @@ "description": "Lightweight, fast and free web browser.", "website": "https://www.midori-browser.org/", "license": "LGPL-2.1", - "categories": ["browser"], + "categories": [ + "browser" + ], "package_names": { "default": "midori", "arch": "midori", @@ -14,5 +16,6 @@ "opensuse": "midori", "void": "midori", "alpine": "midori" - } + }, + "logo": "/programs/midori/logo.png" } diff --git a/content/programs/mosh/program.json b/content/programs/mosh/program.json index 9ba2cb5..fed83a5 100644 --- a/content/programs/mosh/program.json +++ b/content/programs/mosh/program.json @@ -5,7 +5,10 @@ "website": "https://mosh.org/", "git_repo": "https://github.com/mobile-shell/mosh", "license": "GPL-3.0", - "categories": ["network", "terminal"], + "categories": [ + "network", + "terminal" + ], "package_names": { "default": "mosh", "arch": "mosh", @@ -15,5 +18,6 @@ "opensuse": "mosh", "void": "mosh", "alpine": "mosh" - } + }, + "logo": "/programs/mosh/logo.png" } diff --git a/content/programs/mpc/logo.png b/content/programs/mpc/logo.png new file mode 100644 index 0000000..bd9118b --- /dev/null +++ b/content/programs/mpc/logo.png @@ -0,0 +1 @@ +MusicBrainz \ No newline at end of file diff --git a/content/programs/mpc/program.json b/content/programs/mpc/program.json index f50ba40..dfc1239 100644 --- a/content/programs/mpc/program.json +++ b/content/programs/mpc/program.json @@ -4,7 +4,10 @@ "description": "A command-line client for the Music Player Daemon.", "website": "https://www.musicpd.org/clients/mpc/", "license": "GPL-2.0", - "categories": ["audio", "terminal"], + "categories": [ + "audio", + "terminal" + ], "package_names": { "default": "mpc", "arch": "mpc", @@ -14,5 +17,6 @@ "opensuse": "mpc", "void": "mpc", "alpine": "mpc" - } + }, + "logo": "/programs/mpc/logo.png" } diff --git a/content/programs/mpd/logo.png b/content/programs/mpd/logo.png new file mode 100644 index 0000000..bd9118b --- /dev/null +++ b/content/programs/mpd/logo.png @@ -0,0 +1 @@ +MusicBrainz \ No newline at end of file diff --git a/content/programs/mpd/program.json b/content/programs/mpd/program.json index 316f1a4..62fc0b5 100644 --- a/content/programs/mpd/program.json +++ b/content/programs/mpd/program.json @@ -1,11 +1,13 @@ { "name": "MPD", "slug": "mpd", - "description": "Music Player Daemon — a flexible server-side music player.", + "description": "Music Player Daemon \u2014 a flexible server-side music player.", "website": "https://www.musicpd.org/", "git_repo": "https://github.com/MusicPlayerDaemon/MPD", "license": "GPL-2.0", - "categories": ["audio"], + "categories": [ + "audio" + ], "package_names": { "default": "mpd", "arch": "mpd", @@ -15,5 +17,6 @@ "opensuse": "mpd", "void": "mpd", "alpine": "mpd" - } + }, + "logo": "/programs/mpd/logo.png" } diff --git a/content/programs/mpv/logo.png b/content/programs/mpv/logo.png new file mode 100644 index 0000000..55708a0 --- /dev/null +++ b/content/programs/mpv/logo.png @@ -0,0 +1 @@ +mpv \ No newline at end of file diff --git a/content/programs/mtr/logo.png b/content/programs/mtr/logo.png new file mode 100644 index 0000000..da5cc6d --- /dev/null +++ b/content/programs/mtr/logo.png @@ -0,0 +1 @@ +MTR \ No newline at end of file diff --git a/content/programs/mtr/program.json b/content/programs/mtr/program.json index f1bd24d..0593fcd 100644 --- a/content/programs/mtr/program.json +++ b/content/programs/mtr/program.json @@ -5,7 +5,10 @@ "website": "https://www.bitwizard.nl/mtr/", "git_repo": "https://github.com/traviscross/mtr", "license": "GPL-2.0", - "categories": ["network", "terminal"], + "categories": [ + "network", + "terminal" + ], "package_names": { "default": "mtr", "arch": "mtr", @@ -15,5 +18,6 @@ "opensuse": "mtr", "void": "mtr", "alpine": "mtr" - } + }, + "logo": "/programs/mtr/logo.png" } diff --git a/content/programs/mu4e/custom_install/install.sh b/content/programs/mu4e/custom_install/install.sh new file mode 100644 index 0000000..ddf7794 --- /dev/null +++ b/content/programs/mu4e/custom_install/install.sh @@ -0,0 +1,8 @@ +#!/bin/bash +set -e +# mu/mu4e — build from source (Arch AUR fallback) +git clone --depth=1 https://github.com/djcb/mu /tmp/mu +cd /tmp/mu +meson setup build && ninja -C build +ninja -C build install +rm -rf /tmp/mu diff --git a/content/programs/mu4e/program.json b/content/programs/mu4e/program.json index 4f4e9a0..64975dd 100644 --- a/content/programs/mu4e/program.json +++ b/content/programs/mu4e/program.json @@ -10,7 +10,7 @@ ], "package_names": { "default": "mu", - "arch": "mu", + "arch": "CUSTOM_INSTALL", "ubuntu": "maildir-utils", "debian": "maildir-utils", "fedora": "maildir-utils", @@ -18,5 +18,10 @@ "void": "mu", "alpine": "mu" }, - "logo": "/programs/mu4e/logo.png" -} \ No newline at end of file + "logo": "/programs/mu4e/logo.png", + "dependencies": [ + "git-dep", + "cmake", + "emacs" + ] +} diff --git a/content/programs/musikcube/logo.png b/content/programs/musikcube/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/musikcube/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/musikcube/program.json b/content/programs/musikcube/program.json index 5684b14..bdf84d3 100644 --- a/content/programs/musikcube/program.json +++ b/content/programs/musikcube/program.json @@ -5,8 +5,14 @@ "website": "https://musikcube.com/", "git_repo": "https://github.com/clangen/musikcube", "license": "BSD-3-Clause", - "categories": ["audio", "terminal"], - "dependencies": ["git-dep", "cmake"], + "categories": [ + "audio", + "terminal" + ], + "dependencies": [ + "git-dep", + "cmake" + ], "package_names": { "default": "musikcube", "arch": "musikcube", @@ -16,5 +22,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "musikcube", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/musikcube/logo.png" } diff --git a/content/programs/mypaint/program.json b/content/programs/mypaint/program.json index a362151..f0bf39c 100644 --- a/content/programs/mypaint/program.json +++ b/content/programs/mypaint/program.json @@ -5,7 +5,9 @@ "website": "http://mypaint.org/", "git_repo": "https://github.com/mypaint/mypaint", "license": "GPL-2.0", - "categories": ["image-processing"], + "categories": [ + "image-processing" + ], "package_names": { "default": "mypaint", "arch": "mypaint", @@ -15,5 +17,6 @@ "opensuse": "mypaint", "void": "mypaint", "alpine": "mypaint" - } + }, + "logo": "/programs/mypaint/logo.png" } diff --git a/content/programs/nautilus/logo.png b/content/programs/nautilus/logo.png new file mode 100644 index 0000000..4d9150f --- /dev/null +++ b/content/programs/nautilus/logo.png @@ -0,0 +1 @@ +GNOME \ No newline at end of file diff --git a/content/programs/nautilus/program.json b/content/programs/nautilus/program.json new file mode 100644 index 0000000..a5befb3 --- /dev/null +++ b/content/programs/nautilus/program.json @@ -0,0 +1,23 @@ +{ + "name": "Nautilus (Files)", + "slug": "nautilus", + "description": "GNOME's file manager, simple and integrated.", + "website": "https://apps.gnome.org/Nautilus/", + "git_repo": "https://gitlab.gnome.org/GNOME/nautilus", + "license": "GPL-3.0+", + "categories": [ + "file-manager" + ], + "dependencies": [], + "package_names": { + "default": "nautilus", + "arch": "nautilus", + "ubuntu": "nautilus", + "debian": "nautilus", + "fedora": "nautilus", + "opensuse": "nautilus", + "void": "nautilus", + "alpine": "nautilus" + }, + "logo": "/programs/nautilus/logo.png" +} diff --git a/content/programs/navi/logo.png b/content/programs/navi/logo.png new file mode 100644 index 0000000..faa8c3a --- /dev/null +++ b/content/programs/navi/logo.png @@ -0,0 +1 @@ +Rust \ No newline at end of file diff --git a/content/programs/navi/program.json b/content/programs/navi/program.json index 77f5f6e..bd38864 100644 --- a/content/programs/navi/program.json +++ b/content/programs/navi/program.json @@ -21,5 +21,6 @@ }, "dependencies": [ "cargo" - ] -} \ No newline at end of file + ], + "logo": "/programs/navi/logo.png" +} diff --git a/content/programs/nb/logo.png b/content/programs/nb/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/nb/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/nb/program.json b/content/programs/nb/program.json index a0f0048..bcc5c0f 100644 --- a/content/programs/nb/program.json +++ b/content/programs/nb/program.json @@ -21,5 +21,6 @@ }, "dependencies": [ "curl" - ] -} \ No newline at end of file + ], + "logo": "/programs/nb/logo.png" +} diff --git a/content/programs/ncdu/logo.png b/content/programs/ncdu/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/ncdu/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/ncdu/program.json b/content/programs/ncdu/program.json index 7a1c859..bf0ae7e 100644 --- a/content/programs/ncdu/program.json +++ b/content/programs/ncdu/program.json @@ -5,7 +5,10 @@ "website": "https://dev.yorhel.nl/ncdu", "git_repo": "https://code.blicky.net/yorhel/ncdu", "license": "MIT", - "categories": ["system", "terminal"], + "categories": [ + "system", + "terminal" + ], "package_names": { "default": "ncdu", "arch": "ncdu", @@ -15,5 +18,6 @@ "opensuse": "ncdu", "void": "ncdu", "alpine": "ncdu" - } + }, + "logo": "/programs/ncdu/logo.png" } diff --git a/content/programs/ncmpcpp/logo.png b/content/programs/ncmpcpp/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/ncmpcpp/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/ncmpcpp/program.json b/content/programs/ncmpcpp/program.json index 3ff1c6b..cb8375b 100644 --- a/content/programs/ncmpcpp/program.json +++ b/content/programs/ncmpcpp/program.json @@ -4,7 +4,10 @@ "description": "A fully featured ncurses-based MPD client.", "git_repo": "https://github.com/ncmpcpp/ncmpcpp", "license": "GPL-2.0", - "categories": ["audio", "terminal"], + "categories": [ + "audio", + "terminal" + ], "package_names": { "default": "ncmpcpp", "arch": "ncmpcpp", @@ -14,5 +17,6 @@ "opensuse": "ncmpcpp", "void": "ncmpcpp", "alpine": "ncmpcpp" - } + }, + "logo": "/programs/ncmpcpp/logo.png" } diff --git a/content/programs/neofetch/logo.png b/content/programs/neofetch/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/neofetch/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/neofetch/program.json b/content/programs/neofetch/program.json index d18fab9..b53982b 100644 --- a/content/programs/neofetch/program.json +++ b/content/programs/neofetch/program.json @@ -5,7 +5,10 @@ "website": "https://github.com/dylanaraps/neofetch", "git_repo": "https://github.com/dylanaraps/neofetch", "license": "MIT", - "categories": ["system", "terminal"], + "categories": [ + "system", + "terminal" + ], "package_names": { "default": "neofetch", "arch": "neofetch", @@ -15,5 +18,6 @@ "opensuse": "neofetch", "void": "neofetch", "alpine": "neofetch" - } + }, + "logo": "/programs/neofetch/logo.png" } diff --git a/content/programs/neomutt/program.json b/content/programs/neomutt/program.json index d44b335..c702d51 100644 --- a/content/programs/neomutt/program.json +++ b/content/programs/neomutt/program.json @@ -5,7 +5,10 @@ "website": "https://neomutt.org/", "git_repo": "https://github.com/neomutt/neomutt", "license": "GPL-2.0", - "categories": ["communication", "terminal"], + "categories": [ + "communication", + "terminal" + ], "package_names": { "default": "neomutt", "arch": "neomutt", @@ -15,5 +18,6 @@ "opensuse": "neomutt", "void": "neomutt", "alpine": "neomutt" - } + }, + "logo": "/programs/neomutt/logo.png" } diff --git a/content/programs/neovim/logo.png b/content/programs/neovim/logo.png new file mode 100644 index 0000000..8ca60a2 --- /dev/null +++ b/content/programs/neovim/logo.png @@ -0,0 +1 @@ +Neovim \ No newline at end of file diff --git a/content/programs/nerd-fonts/custom_install/install.sh b/content/programs/nerd-fonts/custom_install/install.sh new file mode 100755 index 0000000..4557a85 --- /dev/null +++ b/content/programs/nerd-fonts/custom_install/install.sh @@ -0,0 +1,11 @@ +#!/bin/bash +set -e +echo "Installing Nerd Fonts (FiraCode)..." +mkdir -p ~/.local/share/fonts +cd /tmp +FONT="FiraCode" +curl -L -o "${FONT}.zip" "https://github.com/ryanoasis/nerd-fonts/releases/latest/download/${FONT}.zip" +unzip -o "${FONT}.zip" -d ~/.local/share/fonts/ +rm "${FONT}.zip" +fc-cache -fv +echo "FiraCode Nerd Font installed!" diff --git a/content/programs/nerd-fonts/logo.png b/content/programs/nerd-fonts/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/nerd-fonts/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/nerd-fonts/program.json b/content/programs/nerd-fonts/program.json new file mode 100644 index 0000000..e66675a --- /dev/null +++ b/content/programs/nerd-fonts/program.json @@ -0,0 +1,26 @@ +{ + "name": "Nerd Fonts", + "slug": "nerd-fonts", + "description": "Patched fonts with extra glyphs/icons for development.", + "website": "https://www.nerdfonts.com/", + "git_repo": "https://github.com/ryanoasis/nerd-fonts", + "license": "MIT", + "categories": [ + "system", + "development" + ], + "dependencies": [ + "curl" + ], + "package_names": { + "default": "CUSTOM_INSTALL", + "arch": "nerd-fonts-complete", + "ubuntu": "CUSTOM_INSTALL", + "debian": "CUSTOM_INSTALL", + "fedora": "CUSTOM_INSTALL", + "opensuse": "CUSTOM_INSTALL", + "void": "CUSTOM_INSTALL", + "alpine": "CUSTOM_INSTALL" + }, + "logo": "/programs/nerd-fonts/logo.png" +} diff --git a/content/programs/netbeans/logo.png b/content/programs/netbeans/logo.png new file mode 100644 index 0000000..074b4bb --- /dev/null +++ b/content/programs/netbeans/logo.png @@ -0,0 +1 @@ +Apache Maven \ No newline at end of file diff --git a/content/programs/netbeans/program.json b/content/programs/netbeans/program.json index 0948f89..7b9c06e 100644 --- a/content/programs/netbeans/program.json +++ b/content/programs/netbeans/program.json @@ -4,8 +4,14 @@ "description": "Free, open source IDE for Java, HTML5, PHP and C/C++ development.", "website": "https://netbeans.apache.org/", "license": "Apache-2.0", - "categories": ["ide", "development"], - "dependencies": ["curl", "java"], + "categories": [ + "ide", + "development" + ], + "dependencies": [ + "curl", + "java" + ], "package_names": { "default": "netbeans", "arch": "netbeans", @@ -15,5 +21,6 @@ "opensuse": "netbeans", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/netbeans/logo.png" } diff --git a/content/programs/networkmanager/logo.png b/content/programs/networkmanager/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/networkmanager/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/networkmanager/program.json b/content/programs/networkmanager/program.json index b70bf96..874c678 100644 --- a/content/programs/networkmanager/program.json +++ b/content/programs/networkmanager/program.json @@ -4,7 +4,10 @@ "description": "A network management tool that makes network configuration automatic.", "website": "https://networkmanager.dev/", "license": "GPL-2.0", - "categories": ["network", "system"], + "categories": [ + "network", + "system" + ], "package_names": { "default": "networkmanager", "arch": "networkmanager", @@ -14,5 +17,6 @@ "opensuse": "NetworkManager", "void": "NetworkManager", "alpine": "networkmanager" - } + }, + "logo": "/programs/networkmanager/logo.png" } diff --git a/content/programs/newsboat/logo.png b/content/programs/newsboat/logo.png new file mode 100644 index 0000000..6c21250 --- /dev/null +++ b/content/programs/newsboat/logo.png @@ -0,0 +1,7 @@ + +404 Not Found + +

404 Not Found

+
nginx/1.24.0 (Ubuntu)
+ + diff --git a/content/programs/newsboat/program.json b/content/programs/newsboat/program.json index a3c4c0d..bfbaff7 100644 --- a/content/programs/newsboat/program.json +++ b/content/programs/newsboat/program.json @@ -5,7 +5,10 @@ "website": "https://newsboat.org/", "git_repo": "https://github.com/newsboat/newsboat", "license": "MIT", - "categories": ["rss", "terminal"], + "categories": [ + "rss", + "terminal" + ], "package_names": { "default": "newsboat", "arch": "newsboat", @@ -15,5 +18,6 @@ "opensuse": "newsboat", "void": "newsboat", "alpine": "newsboat" - } + }, + "logo": "/programs/newsboat/logo.png" } diff --git a/content/programs/nextcloud/logo.png b/content/programs/nextcloud/logo.png new file mode 100644 index 0000000..52463bf --- /dev/null +++ b/content/programs/nextcloud/logo.png @@ -0,0 +1 @@ +Nextcloud \ No newline at end of file diff --git a/content/programs/nitrogen/logo.png b/content/programs/nitrogen/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/nitrogen/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/nitrogen/program.json b/content/programs/nitrogen/program.json index 9ae8165..8d3dd0b 100644 --- a/content/programs/nitrogen/program.json +++ b/content/programs/nitrogen/program.json @@ -5,7 +5,10 @@ "website": "https://github.com/l3ib/nitrogen", "git_repo": "https://github.com/l3ib/nitrogen", "license": "GPL-2.0", - "categories": ["display", "theming"], + "categories": [ + "display", + "theming" + ], "dependencies": [], "package_names": { "default": "nitrogen", @@ -16,5 +19,6 @@ "opensuse": "nitrogen", "void": "nitrogen", "alpine": "nitrogen" - } + }, + "logo": "/programs/nitrogen/logo.png" } diff --git a/content/programs/nix/custom_install/install.sh b/content/programs/nix/custom_install/install.sh new file mode 100755 index 0000000..0d02fd7 --- /dev/null +++ b/content/programs/nix/custom_install/install.sh @@ -0,0 +1,5 @@ +#!/bin/bash +set -e +echo "Installing Nix package manager..." +curl -L https://nixos.org/nix/install | sh +echo "Nix installed. Restart your shell or run: . ~/.nix-profile/etc/profile.d/nix.sh" diff --git a/content/programs/nix/logo.png b/content/programs/nix/logo.png new file mode 100644 index 0000000..e5b6c39 --- /dev/null +++ b/content/programs/nix/logo.png @@ -0,0 +1 @@ +NixOS \ No newline at end of file diff --git a/content/programs/nix/program.json b/content/programs/nix/program.json new file mode 100644 index 0000000..94a6ef1 --- /dev/null +++ b/content/programs/nix/program.json @@ -0,0 +1,26 @@ +{ + "name": "Nix", + "slug": "nix", + "description": "Purely functional package manager and build system.", + "website": "https://nixos.org/", + "git_repo": "https://github.com/NixOS/nix", + "license": "LGPL-2.1", + "categories": [ + "package-manager", + "development" + ], + "dependencies": [ + "curl" + ], + "package_names": { + "default": "CUSTOM_INSTALL", + "arch": "CUSTOM_INSTALL", + "ubuntu": "CUSTOM_INSTALL", + "debian": "CUSTOM_INSTALL", + "fedora": "CUSTOM_INSTALL", + "opensuse": "CUSTOM_INSTALL", + "void": "CUSTOM_INSTALL", + "alpine": "CUSTOM_INSTALL" + }, + "logo": "/programs/nix/logo.png" +} diff --git a/content/programs/nmap/program.json b/content/programs/nmap/program.json index 31430c6..4c96d25 100644 --- a/content/programs/nmap/program.json +++ b/content/programs/nmap/program.json @@ -5,7 +5,10 @@ "website": "https://nmap.org/", "git_repo": "https://github.com/nmap/nmap", "license": "GPL-2.0+", - "categories": ["network", "security"], + "categories": [ + "network", + "security" + ], "package_names": { "default": "nmap", "arch": "nmap", @@ -15,5 +18,6 @@ "opensuse": "nmap", "void": "nmap", "alpine": "nmap" - } + }, + "logo": "/programs/nmap/logo.png" } diff --git a/content/programs/nnn/logo.png b/content/programs/nnn/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/nnn/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/nnn/program.json b/content/programs/nnn/program.json index 8c3b3d5..afaa74b 100644 --- a/content/programs/nnn/program.json +++ b/content/programs/nnn/program.json @@ -4,7 +4,10 @@ "description": "A full-featured terminal file manager.", "git_repo": "https://github.com/jarun/nnn", "license": "BSD-2-Clause", - "categories": ["file-manager", "terminal"], + "categories": [ + "file-manager", + "terminal" + ], "package_names": { "default": "nnn", "arch": "nnn", @@ -14,5 +17,6 @@ "opensuse": "nnn", "void": "nnn", "alpine": "nnn" - } + }, + "logo": "/programs/nnn/logo.png" } diff --git a/content/programs/no-more-secrets/logo.png b/content/programs/no-more-secrets/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/no-more-secrets/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/no-more-secrets/program.json b/content/programs/no-more-secrets/program.json index ea71181..ffe7f08 100644 --- a/content/programs/no-more-secrets/program.json +++ b/content/programs/no-more-secrets/program.json @@ -5,8 +5,13 @@ "website": "https://github.com/bartobri/no-more-secrets", "git_repo": "https://github.com/bartobri/no-more-secrets", "license": "MIT", - "categories": ["fun", "terminal"], - "dependencies": ["git-dep"], + "categories": [ + "fun", + "terminal" + ], + "dependencies": [ + "git-dep" + ], "package_names": { "default": "no-more-secrets", "arch": "no-more-secrets", @@ -16,5 +21,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/no-more-secrets/logo.png" } diff --git a/content/programs/notify-send/logo.png b/content/programs/notify-send/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/notify-send/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/notify-send/program.json b/content/programs/notify-send/program.json index 83bcfa0..2b2e766 100644 --- a/content/programs/notify-send/program.json +++ b/content/programs/notify-send/program.json @@ -3,7 +3,10 @@ "slug": "notify-send", "description": "A command-line tool to send desktop notifications.", "license": "LGPL-2.1", - "categories": ["utility", "x11"], + "categories": [ + "utility", + "x11" + ], "package_names": { "default": "libnotify", "arch": "libnotify", @@ -13,5 +16,6 @@ "opensuse": "libnotify-tools", "void": "libnotify", "alpine": "libnotify" - } + }, + "logo": "/programs/notify-send/logo.png" } diff --git a/content/programs/npm/logo.png b/content/programs/npm/logo.png new file mode 100644 index 0000000..2bc7cfc --- /dev/null +++ b/content/programs/npm/logo.png @@ -0,0 +1 @@ +npm \ No newline at end of file diff --git a/content/programs/nushell/logo.png b/content/programs/nushell/logo.png new file mode 100644 index 0000000..232ea91 --- /dev/null +++ b/content/programs/nushell/logo.png @@ -0,0 +1 @@ +Nushell \ No newline at end of file diff --git a/content/programs/nvtop/logo.png b/content/programs/nvtop/logo.png new file mode 100644 index 0000000..e427e2c --- /dev/null +++ b/content/programs/nvtop/logo.png @@ -0,0 +1 @@ +NVIDIA \ No newline at end of file diff --git a/content/programs/nvtop/program.json b/content/programs/nvtop/program.json index 284fb25..cded1bf 100644 --- a/content/programs/nvtop/program.json +++ b/content/programs/nvtop/program.json @@ -5,7 +5,10 @@ "website": "https://github.com/Syllo/nvtop", "git_repo": "https://github.com/Syllo/nvtop", "license": "GPL-3.0", - "categories": ["system-monitor", "terminal"], + "categories": [ + "system-monitor", + "terminal" + ], "dependencies": [], "package_names": { "default": "nvtop", @@ -16,5 +19,6 @@ "opensuse": "nvtop", "void": "nvtop", "alpine": "nvtop" - } + }, + "logo": "/programs/nvtop/logo.png" } diff --git a/content/programs/obs-studio/logo.png b/content/programs/obs-studio/logo.png new file mode 100644 index 0000000..090e856 --- /dev/null +++ b/content/programs/obs-studio/logo.png @@ -0,0 +1 @@ +OBS Studio \ No newline at end of file diff --git a/content/programs/obsidian/logo.png b/content/programs/obsidian/logo.png new file mode 100644 index 0000000..8b30067 --- /dev/null +++ b/content/programs/obsidian/logo.png @@ -0,0 +1 @@ +Obsidian \ No newline at end of file diff --git a/content/programs/onlyoffice/custom_install/install.sh b/content/programs/onlyoffice/custom_install/install.sh new file mode 100755 index 0000000..ad3312c --- /dev/null +++ b/content/programs/onlyoffice/custom_install/install.sh @@ -0,0 +1,9 @@ +#!/bin/bash +set -e +echo "Installing OnlyOffice via Flatpak..." +if command -v flatpak &>/dev/null; then + flatpak install -y flathub org.onlyoffice.desktopeditors +else + echo "Flatpak not found. Install flatpak first." + exit 1 +fi diff --git a/content/programs/onlyoffice/logo.png b/content/programs/onlyoffice/logo.png new file mode 100644 index 0000000..4cea618 --- /dev/null +++ b/content/programs/onlyoffice/logo.png @@ -0,0 +1 @@ +ONLYOFFICE \ No newline at end of file diff --git a/content/programs/onlyoffice/program.json b/content/programs/onlyoffice/program.json new file mode 100644 index 0000000..eab3213 --- /dev/null +++ b/content/programs/onlyoffice/program.json @@ -0,0 +1,24 @@ +{ + "name": "OnlyOffice", + "slug": "onlyoffice", + "description": "Powerful online and offline office suite.", + "website": "https://www.onlyoffice.com/", + "git_repo": "https://github.com/ONLYOFFICE/DesktopEditors", + "license": "AGPL-3.0", + "categories": [ + "office", + "productivity" + ], + "dependencies": [], + "package_names": { + "default": "CUSTOM_INSTALL", + "arch": "onlyoffice-bin", + "ubuntu": "CUSTOM_INSTALL", + "debian": "CUSTOM_INSTALL", + "fedora": "CUSTOM_INSTALL", + "opensuse": "CUSTOM_INSTALL", + "void": "CUSTOM_INSTALL", + "alpine": "CUSTOM_INSTALL" + }, + "logo": "/programs/onlyoffice/logo.png" +} diff --git a/content/programs/oomox/logo.png b/content/programs/oomox/logo.png new file mode 100644 index 0000000..4d9150f --- /dev/null +++ b/content/programs/oomox/logo.png @@ -0,0 +1 @@ +GNOME \ No newline at end of file diff --git a/content/programs/oomox/program.json b/content/programs/oomox/program.json index f55f64b..1e0e8a7 100644 --- a/content/programs/oomox/program.json +++ b/content/programs/oomox/program.json @@ -5,8 +5,12 @@ "website": "https://github.com/themix-project/oomox", "git_repo": "https://github.com/themix-project/oomox", "license": "GPL-3.0", - "categories": ["theming"], - "dependencies": ["pip"], + "categories": [ + "theming" + ], + "dependencies": [ + "pip" + ], "package_names": { "default": "oomox", "arch": "oomox", @@ -16,5 +20,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/oomox/logo.png" } diff --git a/content/programs/openbox/logo.png b/content/programs/openbox/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/openbox/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/openbox/program.json b/content/programs/openbox/program.json index aab308b..deca3bc 100644 --- a/content/programs/openbox/program.json +++ b/content/programs/openbox/program.json @@ -5,7 +5,9 @@ "website": "http://openbox.org/", "git_repo": "https://github.com/danakj/openbox", "license": "GPL-2.0", - "categories": ["window-manager"], + "categories": [ + "window-manager" + ], "dependencies": [], "package_names": { "default": "openbox", @@ -16,5 +18,6 @@ "opensuse": "openbox", "void": "openbox", "alpine": "openbox" - } + }, + "logo": "/programs/openbox/logo.png" } diff --git a/content/programs/opera/logo.png b/content/programs/opera/logo.png new file mode 100644 index 0000000..3549b1c --- /dev/null +++ b/content/programs/opera/logo.png @@ -0,0 +1 @@ +Opera \ No newline at end of file diff --git a/content/programs/pacman/logo.png b/content/programs/pacman/logo.png new file mode 100644 index 0000000..763843e --- /dev/null +++ b/content/programs/pacman/logo.png @@ -0,0 +1 @@ +Arch Linux \ No newline at end of file diff --git a/content/programs/pactl/logo.png b/content/programs/pactl/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/pactl/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/pactl/program.json b/content/programs/pactl/program.json index bc670b9..0a963c2 100644 --- a/content/programs/pactl/program.json +++ b/content/programs/pactl/program.json @@ -3,7 +3,10 @@ "slug": "pactl", "description": "Command-line control for PulseAudio sound server.", "license": "LGPL-2.1", - "categories": ["audio", "terminal"], + "categories": [ + "audio", + "terminal" + ], "package_names": { "default": "pulseaudio-utils", "arch": "libpulse", @@ -13,5 +16,6 @@ "opensuse": "pulseaudio-utils", "void": "pulseaudio-utils", "alpine": "pulseaudio-utils" - } + }, + "logo": "/programs/pactl/logo.png" } diff --git a/content/programs/pass/logo.png b/content/programs/pass/logo.png new file mode 100644 index 0000000..edfb29b --- /dev/null +++ b/content/programs/pass/logo.png @@ -0,0 +1 @@ +GNU \ No newline at end of file diff --git a/content/programs/pass/program.json b/content/programs/pass/program.json index 507915b..4c8f87a 100644 --- a/content/programs/pass/program.json +++ b/content/programs/pass/program.json @@ -5,7 +5,10 @@ "website": "https://www.passwordstore.org/", "git_repo": "https://git.zx2c4.com/password-store/", "license": "GPL-2.0", - "categories": ["security", "terminal"], + "categories": [ + "security", + "terminal" + ], "package_names": { "default": "pass", "arch": "pass", @@ -15,5 +18,6 @@ "opensuse": "password-store", "void": "pass", "alpine": "pass" - } + }, + "logo": "/programs/pass/logo.png" } diff --git a/content/programs/pavucontrol/logo.png b/content/programs/pavucontrol/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/pavucontrol/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/pavucontrol/program.json b/content/programs/pavucontrol/program.json new file mode 100644 index 0000000..20b15e8 --- /dev/null +++ b/content/programs/pavucontrol/program.json @@ -0,0 +1,24 @@ +{ + "name": "Pavucontrol", + "slug": "pavucontrol", + "description": "PulseAudio Volume Control \u2014 simple GTK mixer.", + "website": "https://freedesktop.org/software/pulseaudio/pavucontrol/", + "git_repo": "https://gitlab.freedesktop.org/pulseaudio/pavucontrol", + "license": "GPL-2.0+", + "categories": [ + "audio", + "system" + ], + "dependencies": [], + "package_names": { + "default": "pavucontrol", + "arch": "pavucontrol", + "ubuntu": "pavucontrol", + "debian": "pavucontrol", + "fedora": "pavucontrol", + "opensuse": "pavucontrol", + "void": "pavucontrol", + "alpine": "pavucontrol" + }, + "logo": "/programs/pavucontrol/logo.png" +} diff --git a/content/programs/pcmanfm/logo.png b/content/programs/pcmanfm/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/pcmanfm/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/pcmanfm/program.json b/content/programs/pcmanfm/program.json index 55ac3a1..3277936 100644 --- a/content/programs/pcmanfm/program.json +++ b/content/programs/pcmanfm/program.json @@ -4,7 +4,9 @@ "description": "A fast and lightweight file manager.", "git_repo": "https://github.com/lxde/pcmanfm", "license": "GPL-2.0", - "categories": ["file-manager"], + "categories": [ + "file-manager" + ], "package_names": { "default": "pcmanfm", "arch": "pcmanfm", @@ -14,5 +16,6 @@ "opensuse": "pcmanfm", "void": "pcmanfm", "alpine": "pcmanfm" - } + }, + "logo": "/programs/pcmanfm/logo.png" } diff --git a/content/programs/pdftoppm/logo.png b/content/programs/pdftoppm/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/pdftoppm/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/pdftoppm/program.json b/content/programs/pdftoppm/program.json index bffb48c..103369f 100644 --- a/content/programs/pdftoppm/program.json +++ b/content/programs/pdftoppm/program.json @@ -1,10 +1,12 @@ { "name": "pdftoppm", "slug": "pdftoppm", - "description": "Converts PDF pages to images — part of the poppler utilities.", + "description": "Converts PDF pages to images \u2014 part of the poppler utilities.", "website": "https://poppler.freedesktop.org/", "license": "GPL-2.0", - "categories": ["utility"], + "categories": [ + "utility" + ], "package_names": { "default": "poppler-utils", "arch": "poppler", @@ -14,5 +16,6 @@ "opensuse": "poppler-tools", "void": "poppler-utils", "alpine": "poppler-utils" - } + }, + "logo": "/programs/pdftoppm/logo.png" } diff --git a/content/programs/peek/logo.png b/content/programs/peek/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/peek/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/peek/program.json b/content/programs/peek/program.json new file mode 100644 index 0000000..26d8d44 --- /dev/null +++ b/content/programs/peek/program.json @@ -0,0 +1,24 @@ +{ + "name": "Peek", + "slug": "peek", + "description": "Simple animated GIF screen recorder with an easy to use interface.", + "website": "https://github.com/phw/peek", + "git_repo": "https://github.com/phw/peek", + "license": "GPL-3.0+", + "categories": [ + "screenshot", + "media" + ], + "dependencies": [], + "package_names": { + "default": "peek", + "arch": "peek", + "ubuntu": "peek", + "debian": "peek", + "fedora": "peek", + "opensuse": "peek", + "void": "peek", + "alpine": "CUSTOM_INSTALL" + }, + "logo": "/programs/peek/logo.png" +} diff --git a/content/programs/picom/logo.png b/content/programs/picom/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/picom/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/picom/program.json b/content/programs/picom/program.json index 025923e..787bbf5 100644 --- a/content/programs/picom/program.json +++ b/content/programs/picom/program.json @@ -1,10 +1,13 @@ { "name": "picom", "slug": "picom", - "description": "A compositor for X11 — adds transparency, shadows, and smooth transitions.", + "description": "A compositor for X11 \u2014 adds transparency, shadows, and smooth transitions.", "git_repo": "https://github.com/yshui/picom", "license": "MIT", - "categories": ["x11", "desktop"], + "categories": [ + "x11", + "desktop" + ], "package_names": { "default": "picom", "arch": "picom", @@ -14,5 +17,6 @@ "opensuse": "picom", "void": "picom", "alpine": "picom" - } + }, + "logo": "/programs/picom/logo.png" } diff --git a/content/programs/pidgin/program.json b/content/programs/pidgin/program.json index 6749c39..e8bbc03 100644 --- a/content/programs/pidgin/program.json +++ b/content/programs/pidgin/program.json @@ -4,7 +4,9 @@ "description": "Chat program that lets you log into multiple chat networks simultaneously.", "website": "https://www.pidgin.im/", "license": "GPL-2.0", - "categories": ["communication"], + "categories": [ + "communication" + ], "package_names": { "default": "pidgin", "arch": "pidgin", @@ -14,5 +16,6 @@ "opensuse": "pidgin", "void": "pidgin", "alpine": "pidgin" - } + }, + "logo": "/programs/pidgin/logo.png" } diff --git a/content/programs/pinta/logo.png b/content/programs/pinta/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/pinta/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/pinta/program.json b/content/programs/pinta/program.json index c8065d1..4e615df 100644 --- a/content/programs/pinta/program.json +++ b/content/programs/pinta/program.json @@ -5,7 +5,9 @@ "website": "https://www.pinta-project.com/", "git_repo": "https://github.com/PintaProject/Pinta", "license": "MIT", - "categories": ["image-processing"], + "categories": [ + "image-processing" + ], "package_names": { "default": "pinta", "arch": "pinta", @@ -15,5 +17,6 @@ "opensuse": "pinta", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/pinta/logo.png" } diff --git a/content/programs/pip/logo.png b/content/programs/pip/logo.png new file mode 100644 index 0000000..ac69a89 --- /dev/null +++ b/content/programs/pip/logo.png @@ -0,0 +1 @@ +PyPI \ No newline at end of file diff --git a/content/programs/pipes-sh/logo.png b/content/programs/pipes-sh/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/pipes-sh/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/pipes-sh/program.json b/content/programs/pipes-sh/program.json index af9befb..89f7566 100644 --- a/content/programs/pipes-sh/program.json +++ b/content/programs/pipes-sh/program.json @@ -5,8 +5,13 @@ "website": "https://github.com/pipeseroni/pipes.sh", "git_repo": "https://github.com/pipeseroni/pipes.sh", "license": "MIT", - "categories": ["fun", "terminal"], - "dependencies": ["curl"], + "categories": [ + "fun", + "terminal" + ], + "dependencies": [ + "curl" + ], "package_names": { "default": "pipes.sh", "arch": "pipes.sh", @@ -16,5 +21,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/pipes-sh/logo.png" } diff --git a/content/programs/playonlinux/logo.png b/content/programs/playonlinux/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/playonlinux/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/playonlinux/program.json b/content/programs/playonlinux/program.json index 8f2620f..8e8fe04 100644 --- a/content/programs/playonlinux/program.json +++ b/content/programs/playonlinux/program.json @@ -4,7 +4,9 @@ "description": "Frontend for Wine that simplifies installing Windows applications on Linux.", "website": "https://www.playonlinux.com/", "license": "GPL-3.0", - "categories": ["game"], + "categories": [ + "game" + ], "package_names": { "default": "playonlinux", "arch": "playonlinux", @@ -14,5 +16,6 @@ "opensuse": "playonlinux", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/playonlinux/logo.png" } diff --git a/content/programs/podman/logo.png b/content/programs/podman/logo.png new file mode 100644 index 0000000..9bf7593 --- /dev/null +++ b/content/programs/podman/logo.png @@ -0,0 +1 @@ +Podman \ No newline at end of file diff --git a/content/programs/podman/program.json b/content/programs/podman/program.json new file mode 100644 index 0000000..21409ee --- /dev/null +++ b/content/programs/podman/program.json @@ -0,0 +1,24 @@ +{ + "name": "Podman", + "slug": "podman", + "description": "Daemonless container engine for developing, managing, and running OCI containers.", + "website": "https://podman.io/", + "git_repo": "https://github.com/containers/podman", + "license": "Apache-2.0", + "categories": [ + "devops", + "development" + ], + "dependencies": [], + "package_names": { + "default": "podman", + "arch": "podman", + "ubuntu": "podman", + "debian": "podman", + "fedora": "podman", + "opensuse": "podman", + "void": "podman", + "alpine": "podman" + }, + "logo": "/programs/podman/logo.png" +} diff --git a/content/programs/polybar/program.json b/content/programs/polybar/program.json index 423367b..8d0b43b 100644 --- a/content/programs/polybar/program.json +++ b/content/programs/polybar/program.json @@ -5,8 +5,13 @@ "website": "https://polybar.github.io/", "git_repo": "https://github.com/polybar/polybar", "license": "MIT", - "categories": ["status-bar"], - "dependencies": ["git-dep", "cmake"], + "categories": [ + "status-bar" + ], + "dependencies": [ + "git-dep", + "cmake" + ], "package_names": { "default": "polybar", "arch": "polybar", @@ -16,5 +21,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "polybar", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/polybar/logo.png" } diff --git a/content/programs/powerlevel10k/logo.png b/content/programs/powerlevel10k/logo.png new file mode 100644 index 0000000..1398048 --- /dev/null +++ b/content/programs/powerlevel10k/logo.png @@ -0,0 +1 @@ +Zsh \ No newline at end of file diff --git a/content/programs/powerlevel10k/program.json b/content/programs/powerlevel10k/program.json index 29de8ef..8aa2814 100644 --- a/content/programs/powerlevel10k/program.json +++ b/content/programs/powerlevel10k/program.json @@ -5,8 +5,14 @@ "website": "https://github.com/romkatv/powerlevel10k", "git_repo": "https://github.com/romkatv/powerlevel10k", "license": "MIT", - "categories": ["shell", "terminal"], - "dependencies": ["git-dep", "zsh"], + "categories": [ + "shell", + "terminal" + ], + "dependencies": [ + "git-dep", + "zsh" + ], "package_names": { "default": "zsh-theme-powerlevel10k", "arch": "zsh-theme-powerlevel10k", @@ -16,5 +22,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/powerlevel10k/logo.png" } diff --git a/content/programs/procs/logo.png b/content/programs/procs/logo.png new file mode 100644 index 0000000..faa8c3a --- /dev/null +++ b/content/programs/procs/logo.png @@ -0,0 +1 @@ +Rust \ No newline at end of file diff --git a/content/programs/procs/program.json b/content/programs/procs/program.json index 6bf439c..ad98c04 100644 --- a/content/programs/procs/program.json +++ b/content/programs/procs/program.json @@ -21,5 +21,6 @@ }, "dependencies": [ "cargo" - ] -} \ No newline at end of file + ], + "logo": "/programs/procs/logo.png" +} diff --git a/content/programs/pulsemixer/logo.png b/content/programs/pulsemixer/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/pulsemixer/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/pulsemixer/program.json b/content/programs/pulsemixer/program.json index a4f69e4..c9f8873 100644 --- a/content/programs/pulsemixer/program.json +++ b/content/programs/pulsemixer/program.json @@ -4,7 +4,10 @@ "description": "A CLI and curses mixer for PulseAudio.", "git_repo": "https://github.com/GeorgeFilipkin/pulsemixer", "license": "MIT", - "categories": ["audio", "terminal"], + "categories": [ + "audio", + "terminal" + ], "package_names": { "default": "pulsemixer", "arch": "pulsemixer", @@ -14,5 +17,6 @@ "opensuse": "pulsemixer", "void": "pulsemixer", "alpine": "pulsemixer" - } + }, + "logo": "/programs/pulsemixer/logo.png" } diff --git a/content/programs/pyright/logo.png b/content/programs/pyright/logo.png new file mode 100644 index 0000000..e1b14ec --- /dev/null +++ b/content/programs/pyright/logo.png @@ -0,0 +1 @@ +Python \ No newline at end of file diff --git a/content/programs/pyright/program.json b/content/programs/pyright/program.json index 8d797be..55e24ed 100644 --- a/content/programs/pyright/program.json +++ b/content/programs/pyright/program.json @@ -15,7 +15,11 @@ "default": "CUSTOM_INSTALL", "arch": "pyright", "ubuntu": "pyright", - "void": "pyright" + "void": "pyright", + "alpine": "CUSTOM_INSTALL", + "debian": "CUSTOM_INSTALL", + "fedora": "CUSTOM_INSTALL", + "opensuse": "CUSTOM_INSTALL" }, "logo": "/programs/pyright/logo.png" -} \ No newline at end of file +} diff --git a/content/programs/pywal/logo.png b/content/programs/pywal/logo.png new file mode 100644 index 0000000..e1b14ec --- /dev/null +++ b/content/programs/pywal/logo.png @@ -0,0 +1 @@ +Python \ No newline at end of file diff --git a/content/programs/pywal/program.json b/content/programs/pywal/program.json index 97ba1e0..0e3fa67 100644 --- a/content/programs/pywal/program.json +++ b/content/programs/pywal/program.json @@ -5,8 +5,13 @@ "website": "https://github.com/dylanaraps/pywal", "git_repo": "https://github.com/dylanaraps/pywal", "license": "MIT", - "categories": ["theming", "terminal"], - "dependencies": ["pip"], + "categories": [ + "theming", + "terminal" + ], + "dependencies": [ + "pip" + ], "package_names": { "default": "python-pywal", "arch": "python-pywal", @@ -16,5 +21,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/pywal/logo.png" } diff --git a/content/programs/qemu/logo.png b/content/programs/qemu/logo.png new file mode 100644 index 0000000..ea0df42 --- /dev/null +++ b/content/programs/qemu/logo.png @@ -0,0 +1 @@ +QEMU \ No newline at end of file diff --git a/content/programs/qterminal/logo.png b/content/programs/qterminal/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/qterminal/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/qterminal/program.json b/content/programs/qterminal/program.json index 5bd5414..1777695 100644 --- a/content/programs/qterminal/program.json +++ b/content/programs/qterminal/program.json @@ -5,7 +5,9 @@ "website": "https://github.com/lxqt/qterminal", "git_repo": "https://github.com/lxqt/qterminal", "license": "GPL-2.0", - "categories": ["terminal"], + "categories": [ + "terminal" + ], "dependencies": [], "package_names": { "default": "qterminal", @@ -16,5 +18,6 @@ "opensuse": "qterminal", "void": "qterminal", "alpine": "qterminal" - } + }, + "logo": "/programs/qterminal/logo.png" } diff --git a/content/programs/qtile/logo.png b/content/programs/qtile/logo.png new file mode 100644 index 0000000..e1b14ec --- /dev/null +++ b/content/programs/qtile/logo.png @@ -0,0 +1 @@ +Python \ No newline at end of file diff --git a/content/programs/qtile/program.json b/content/programs/qtile/program.json index e3a55cd..c49843e 100644 --- a/content/programs/qtile/program.json +++ b/content/programs/qtile/program.json @@ -5,8 +5,12 @@ "website": "http://www.qtile.org/", "git_repo": "https://github.com/qtile/qtile", "license": "MIT", - "categories": ["window-manager"], - "dependencies": ["pip"], + "categories": [ + "window-manager" + ], + "dependencies": [ + "pip" + ], "package_names": { "default": "qtile", "arch": "qtile", @@ -16,5 +20,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/qtile/logo.png" } diff --git a/content/programs/ranger/logo.png b/content/programs/ranger/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/ranger/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/ranger/program.json b/content/programs/ranger/program.json index 061218e..86f91ab 100644 --- a/content/programs/ranger/program.json +++ b/content/programs/ranger/program.json @@ -5,7 +5,10 @@ "website": "https://ranger.github.io/", "git_repo": "https://github.com/ranger/ranger", "license": "GPL-3.0", - "categories": ["file-manager", "terminal"], + "categories": [ + "file-manager", + "terminal" + ], "package_names": { "default": "ranger", "arch": "ranger", @@ -15,5 +18,6 @@ "opensuse": "ranger", "void": "ranger", "alpine": "ranger" - } + }, + "logo": "/programs/ranger/logo.png" } diff --git a/content/programs/rawtherapee/logo.png b/content/programs/rawtherapee/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/rawtherapee/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/rawtherapee/program.json b/content/programs/rawtherapee/program.json new file mode 100644 index 0000000..12f7f10 --- /dev/null +++ b/content/programs/rawtherapee/program.json @@ -0,0 +1,24 @@ +{ + "name": "RawTherapee", + "slug": "rawtherapee", + "description": "Powerful cross-platform RAW photo processing software.", + "website": "https://rawtherapee.com/", + "git_repo": "https://github.com/Beep6581/RawTherapee", + "license": "GPL-3.0+", + "categories": [ + "media", + "image-processing" + ], + "dependencies": [], + "package_names": { + "default": "rawtherapee", + "arch": "rawtherapee", + "ubuntu": "rawtherapee", + "debian": "rawtherapee", + "fedora": "rawtherapee", + "opensuse": "rawtherapee", + "void": "rawtherapee", + "alpine": "rawtherapee" + }, + "logo": "/programs/rawtherapee/logo.png" +} diff --git a/content/programs/rclone/logo.png b/content/programs/rclone/logo.png new file mode 100644 index 0000000..e35f1d5 --- /dev/null +++ b/content/programs/rclone/logo.png @@ -0,0 +1 @@ +Rclone \ No newline at end of file diff --git a/content/programs/redshift/program.json b/content/programs/redshift/program.json index 936c4ce..ba0585e 100644 --- a/content/programs/redshift/program.json +++ b/content/programs/redshift/program.json @@ -5,7 +5,10 @@ "website": "http://jonls.dk/redshift/", "git_repo": "https://github.com/jonls/redshift", "license": "GPL-3.0", - "categories": ["x11", "utility"], + "categories": [ + "x11", + "utility" + ], "package_names": { "default": "redshift", "arch": "redshift", @@ -15,5 +18,6 @@ "opensuse": "redshift", "void": "redshift", "alpine": "redshift" - } + }, + "logo": "/programs/redshift/logo.png" } diff --git a/content/programs/restic/program.json b/content/programs/restic/program.json index c3dbe84..9ce1761 100644 --- a/content/programs/restic/program.json +++ b/content/programs/restic/program.json @@ -5,7 +5,9 @@ "website": "https://restic.net/", "git_repo": "https://github.com/restic/restic", "license": "BSD-2-Clause", - "categories": ["system"], + "categories": [ + "system" + ], "package_names": { "default": "restic", "arch": "restic", @@ -15,5 +17,6 @@ "opensuse": "restic", "void": "restic", "alpine": "restic" - } + }, + "logo": "/programs/restic/logo.png" } diff --git a/content/programs/retext/logo.png b/content/programs/retext/logo.png new file mode 100644 index 0000000..74c121d --- /dev/null +++ b/content/programs/retext/logo.png @@ -0,0 +1 @@ +Markdown \ No newline at end of file diff --git a/content/programs/retext/program.json b/content/programs/retext/program.json index ed82566..35075c4 100644 --- a/content/programs/retext/program.json +++ b/content/programs/retext/program.json @@ -5,8 +5,13 @@ "website": "https://github.com/retext-project/retext", "git_repo": "https://github.com/retext-project/retext", "license": "GPL-3.0", - "categories": ["editor", "markdown"], - "dependencies": ["pip"], + "categories": [ + "editor", + "markdown" + ], + "dependencies": [ + "pip" + ], "package_names": { "default": "retext", "arch": "retext", @@ -16,5 +21,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/retext/logo.png" } diff --git a/content/programs/rhythmbox/logo.png b/content/programs/rhythmbox/logo.png new file mode 100644 index 0000000..4d9150f --- /dev/null +++ b/content/programs/rhythmbox/logo.png @@ -0,0 +1 @@ +GNOME \ No newline at end of file diff --git a/content/programs/rhythmbox/program.json b/content/programs/rhythmbox/program.json index 6b184fd..8c05d61 100644 --- a/content/programs/rhythmbox/program.json +++ b/content/programs/rhythmbox/program.json @@ -5,7 +5,10 @@ "website": "https://wiki.gnome.org/Apps/Rhythmbox", "git_repo": "https://github.com/GNOME/rhythmbox", "license": "GPL-2.0", - "categories": ["audio", "music"], + "categories": [ + "audio", + "music" + ], "package_names": { "default": "rhythmbox", "arch": "rhythmbox", @@ -15,5 +18,6 @@ "opensuse": "rhythmbox", "void": "rhythmbox", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/rhythmbox/logo.png" } diff --git a/content/programs/ripgrep/program.json b/content/programs/ripgrep/program.json index f4c7c86..1aa9299 100644 --- a/content/programs/ripgrep/program.json +++ b/content/programs/ripgrep/program.json @@ -4,7 +4,9 @@ "description": "A line-oriented search tool that recursively searches directories.", "git_repo": "https://github.com/BurntSushi/ripgrep", "license": "MIT/Unlicense", - "categories": ["terminal"], + "categories": [ + "terminal" + ], "package_names": { "default": "ripgrep", "arch": "ripgrep", @@ -14,5 +16,6 @@ "opensuse": "ripgrep", "void": "ripgrep", "alpine": "ripgrep" - } + }, + "logo": "/programs/ripgrep/logo.png" } diff --git a/content/programs/river/logo.png b/content/programs/river/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/river/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/river/program.json b/content/programs/river/program.json index 2a47fa7..03f630b 100644 --- a/content/programs/river/program.json +++ b/content/programs/river/program.json @@ -5,7 +5,9 @@ "website": "https://github.com/riverwm/river", "git_repo": "https://github.com/riverwm/river", "license": "GPL-3.0", - "categories": ["window-manager"], + "categories": [ + "window-manager" + ], "dependencies": [], "package_names": { "default": "river", @@ -16,5 +18,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "river", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/river/logo.png" } diff --git a/content/programs/rofi/logo.png b/content/programs/rofi/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/rofi/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/rofi/program.json b/content/programs/rofi/program.json new file mode 100644 index 0000000..c895fc1 --- /dev/null +++ b/content/programs/rofi/program.json @@ -0,0 +1,24 @@ +{ + "name": "Rofi", + "slug": "rofi", + "description": "Window switcher, application launcher, and dmenu replacement.", + "website": "https://github.com/davatorium/rofi", + "git_repo": "https://github.com/davatorium/rofi", + "license": "MIT", + "categories": [ + "launcher", + "cli" + ], + "dependencies": [], + "package_names": { + "default": "rofi", + "arch": "rofi", + "ubuntu": "rofi", + "debian": "rofi", + "fedora": "rofi", + "opensuse": "rofi", + "void": "rofi", + "alpine": "rofi" + }, + "logo": "/programs/rofi/logo.png" +} diff --git a/content/programs/rust/custom_install/install.sh b/content/programs/rust/custom_install/install.sh new file mode 100755 index 0000000..21de6cc --- /dev/null +++ b/content/programs/rust/custom_install/install.sh @@ -0,0 +1,5 @@ +#!/bin/bash +set -e +echo "Installing Rust via rustup..." +curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y +echo "Rust installed. Restart your shell or run: source ~/.cargo/env" diff --git a/content/programs/rust/logo.png b/content/programs/rust/logo.png new file mode 100644 index 0000000..faa8c3a --- /dev/null +++ b/content/programs/rust/logo.png @@ -0,0 +1 @@ +Rust \ No newline at end of file diff --git a/content/programs/rust/program.json b/content/programs/rust/program.json new file mode 100644 index 0000000..ece6235 --- /dev/null +++ b/content/programs/rust/program.json @@ -0,0 +1,26 @@ +{ + "name": "Rust", + "slug": "rust", + "description": "Systems programming language focused on safety and performance.", + "website": "https://www.rust-lang.org/", + "git_repo": "https://github.com/rust-lang/rust", + "license": "MIT/Apache-2.0", + "categories": [ + "language", + "development" + ], + "dependencies": [ + "curl" + ], + "package_names": { + "default": "CUSTOM_INSTALL", + "arch": "rust", + "ubuntu": "CUSTOM_INSTALL", + "debian": "CUSTOM_INSTALL", + "fedora": "rust", + "opensuse": "rust", + "void": "rust", + "alpine": "rust" + }, + "logo": "/programs/rust/logo.png" +} diff --git a/content/programs/rxvt-unicode/logo.png b/content/programs/rxvt-unicode/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/rxvt-unicode/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/rxvt-unicode/program.json b/content/programs/rxvt-unicode/program.json index 3fc73f5..7591d06 100644 --- a/content/programs/rxvt-unicode/program.json +++ b/content/programs/rxvt-unicode/program.json @@ -4,7 +4,9 @@ "description": "Fork of rxvt terminal emulator with Unicode support.", "website": "http://software.schmorp.de/pkg/rxvt-unicode.html", "license": "GPL-2.0", - "categories": ["terminal"], + "categories": [ + "terminal" + ], "dependencies": [], "package_names": { "default": "rxvt-unicode", @@ -15,5 +17,6 @@ "opensuse": "rxvt-unicode", "void": "rxvt-unicode", "alpine": "rxvt-unicode" - } + }, + "logo": "/programs/rxvt-unicode/logo.png" } diff --git a/content/programs/s-tui/logo.png b/content/programs/s-tui/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/s-tui/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/s-tui/program.json b/content/programs/s-tui/program.json index 0c04eab..e981146 100644 --- a/content/programs/s-tui/program.json +++ b/content/programs/s-tui/program.json @@ -5,8 +5,13 @@ "website": "https://github.com/amanusk/s-tui", "git_repo": "https://github.com/amanusk/s-tui", "license": "GPL-2.0", - "categories": ["system-monitor", "terminal"], - "dependencies": ["pip"], + "categories": [ + "system-monitor", + "terminal" + ], + "dependencies": [ + "pip" + ], "package_names": { "default": "s-tui", "arch": "s-tui", @@ -16,5 +21,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/s-tui/logo.png" } diff --git a/content/programs/sampler/logo.png b/content/programs/sampler/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/sampler/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/sampler/program.json b/content/programs/sampler/program.json index 5f3cdfd..8e5f70e 100644 --- a/content/programs/sampler/program.json +++ b/content/programs/sampler/program.json @@ -5,8 +5,13 @@ "website": "https://sampler.dev/", "git_repo": "https://github.com/sqshq/sampler", "license": "Apache-2.0", - "categories": ["system-monitor", "terminal"], - "dependencies": ["golang"], + "categories": [ + "system-monitor", + "terminal" + ], + "dependencies": [ + "golang" + ], "package_names": { "default": "sampler", "arch": "sampler", @@ -16,5 +21,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/sampler/logo.png" } diff --git a/content/programs/shotcut/program.json b/content/programs/shotcut/program.json index d9e8433..de5cf24 100644 --- a/content/programs/shotcut/program.json +++ b/content/programs/shotcut/program.json @@ -5,7 +5,9 @@ "website": "https://www.shotcut.org/", "git_repo": "https://github.com/mltframework/shotcut", "license": "GPL-3.0", - "categories": ["media-processing"], + "categories": [ + "media-processing" + ], "package_names": { "default": "shotcut", "arch": "shotcut", @@ -15,5 +17,6 @@ "opensuse": "shotcut", "void": "shotcut", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/shotcut/logo.png" } diff --git a/content/programs/signal-desktop/logo.png b/content/programs/signal-desktop/logo.png new file mode 100644 index 0000000..81bc449 --- /dev/null +++ b/content/programs/signal-desktop/logo.png @@ -0,0 +1 @@ +Signal \ No newline at end of file diff --git a/content/programs/simplenote/logo.png b/content/programs/simplenote/logo.png new file mode 100644 index 0000000..dfa6bfe --- /dev/null +++ b/content/programs/simplenote/logo.png @@ -0,0 +1 @@ +Simplenote \ No newline at end of file diff --git a/content/programs/simplescreenrecorder/logo.png b/content/programs/simplescreenrecorder/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/simplescreenrecorder/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/simplescreenrecorder/program.json b/content/programs/simplescreenrecorder/program.json index 5fad624..c0d6dd5 100644 --- a/content/programs/simplescreenrecorder/program.json +++ b/content/programs/simplescreenrecorder/program.json @@ -5,8 +5,13 @@ "website": "https://www.maartenbaert.be/simplescreenrecorder/", "git_repo": "https://github.com/MaartenBaert/ssr", "license": "GPL-3.0", - "categories": ["screenshot", "media-processing"], - "dependencies": ["git"], + "categories": [ + "screenshot", + "media-processing" + ], + "dependencies": [ + "git" + ], "package_names": { "default": "simplescreenrecorder", "arch": "simplescreenrecorder", @@ -16,5 +21,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/simplescreenrecorder/logo.png" } diff --git a/content/programs/skim/logo.png b/content/programs/skim/logo.png new file mode 100644 index 0000000..faa8c3a --- /dev/null +++ b/content/programs/skim/logo.png @@ -0,0 +1 @@ +Rust \ No newline at end of file diff --git a/content/programs/skim/program.json b/content/programs/skim/program.json index 5963023..28d073c 100644 --- a/content/programs/skim/program.json +++ b/content/programs/skim/program.json @@ -21,5 +21,6 @@ }, "dependencies": [ "cargo" - ] -} \ No newline at end of file + ], + "logo": "/programs/skim/logo.png" +} diff --git a/content/programs/slack/custom_install/install.sh b/content/programs/slack/custom_install/install.sh new file mode 100755 index 0000000..527e296 --- /dev/null +++ b/content/programs/slack/custom_install/install.sh @@ -0,0 +1,11 @@ +#!/bin/bash +set -e +echo "Installing Slack via Snap..." +if command -v snap &>/dev/null; then + sudo snap install slack --classic +elif command -v flatpak &>/dev/null; then + flatpak install -y flathub com.slack.Slack +else + echo "No snap or flatpak found. Install one first." + exit 1 +fi diff --git a/content/programs/slack/program.json b/content/programs/slack/program.json new file mode 100644 index 0000000..8de42fa --- /dev/null +++ b/content/programs/slack/program.json @@ -0,0 +1,26 @@ +{ + "name": "Slack", + "slug": "slack", + "description": "Team collaboration and communication platform.", + "website": "https://slack.com/", + "git_repo": "https://github.com/slackapi", + "license": "Proprietary", + "categories": [ + "communication", + "messaging" + ], + "dependencies": [ + "curl" + ], + "package_names": { + "default": "CUSTOM_INSTALL", + "arch": "CUSTOM_INSTALL", + "ubuntu": "CUSTOM_INSTALL", + "debian": "CUSTOM_INSTALL", + "fedora": "CUSTOM_INSTALL", + "opensuse": "CUSTOM_INSTALL", + "void": "CUSTOM_INSTALL", + "alpine": "CUSTOM_INSTALL" + }, + "logo": "/programs/slack/logo.png" +} diff --git a/content/programs/smplayer/logo.png b/content/programs/smplayer/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/smplayer/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/smplayer/program.json b/content/programs/smplayer/program.json index ed09ca5..17e60e4 100644 --- a/content/programs/smplayer/program.json +++ b/content/programs/smplayer/program.json @@ -5,7 +5,9 @@ "website": "https://www.smplayer.info/", "git_repo": "https://github.com/smplayer-dev/smplayer", "license": "GPL-2.0", - "categories": ["media-player"], + "categories": [ + "media-player" + ], "package_names": { "default": "smplayer", "arch": "smplayer", @@ -15,5 +17,6 @@ "opensuse": "smplayer", "void": "smplayer", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/smplayer/logo.png" } diff --git a/content/programs/snapd/custom_install/install.sh b/content/programs/snapd/custom_install/install.sh new file mode 100755 index 0000000..4053cbe --- /dev/null +++ b/content/programs/snapd/custom_install/install.sh @@ -0,0 +1,5 @@ +#!/bin/bash +set -e +echo "Snapd is not available via package manager on this distribution." +echo "Consider using Flatpak as an alternative: flatpak install flatpak" +exit 0 diff --git a/content/programs/snapd/logo.png b/content/programs/snapd/logo.png new file mode 100644 index 0000000..cb5536e --- /dev/null +++ b/content/programs/snapd/logo.png @@ -0,0 +1 @@ +Snapcraft \ No newline at end of file diff --git a/content/programs/snapd/program.json b/content/programs/snapd/program.json new file mode 100644 index 0000000..5601def --- /dev/null +++ b/content/programs/snapd/program.json @@ -0,0 +1,23 @@ +{ + "name": "Snapd", + "slug": "snapd", + "description": "Snap package manager daemon by Canonical.", + "website": "https://snapcraft.io/", + "git_repo": "https://github.com/snapcore/snapd", + "license": "GPL-3.0", + "categories": [ + "package-manager" + ], + "dependencies": [], + "package_names": { + "default": "snapd", + "arch": "snapd", + "ubuntu": "snapd", + "debian": "snapd", + "fedora": "snapd", + "opensuse": "snapd", + "void": "CUSTOM_INSTALL", + "alpine": "CUSTOM_INSTALL" + }, + "logo": "/programs/snapd/logo.png" +} diff --git a/content/programs/spaceship-prompt/logo.png b/content/programs/spaceship-prompt/logo.png new file mode 100644 index 0000000..1398048 --- /dev/null +++ b/content/programs/spaceship-prompt/logo.png @@ -0,0 +1 @@ +Zsh \ No newline at end of file diff --git a/content/programs/spaceship-prompt/program.json b/content/programs/spaceship-prompt/program.json index 0ecdd54..70971e1 100644 --- a/content/programs/spaceship-prompt/program.json +++ b/content/programs/spaceship-prompt/program.json @@ -5,8 +5,13 @@ "website": "https://spaceship-prompt.sh/", "git_repo": "https://github.com/spaceship-prompt/spaceship-prompt", "license": "MIT", - "categories": ["shell", "terminal"], - "dependencies": ["git-dep"], + "categories": [ + "shell", + "terminal" + ], + "dependencies": [ + "git-dep" + ], "package_names": { "default": "spaceship-prompt", "arch": "spaceship-prompt", @@ -16,5 +21,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/spaceship-prompt/logo.png" } diff --git a/content/programs/spectrwm/logo.png b/content/programs/spectrwm/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/spectrwm/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/spectrwm/program.json b/content/programs/spectrwm/program.json index e161138..d927ee6 100644 --- a/content/programs/spectrwm/program.json +++ b/content/programs/spectrwm/program.json @@ -5,8 +5,12 @@ "website": "https://github.com/conformal/spectrwm", "git_repo": "https://github.com/conformal/spectrwm", "license": "ISC", - "categories": ["window-manager"], - "dependencies": ["git-dep"], + "categories": [ + "window-manager" + ], + "dependencies": [ + "git-dep" + ], "package_names": { "default": "spectrwm", "arch": "spectrwm", @@ -16,5 +20,6 @@ "opensuse": "spectrwm", "void": "spectrwm", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/spectrwm/logo.png" } diff --git a/content/programs/sqlitebrowser/logo.png b/content/programs/sqlitebrowser/logo.png new file mode 100644 index 0000000..3bfccb8 --- /dev/null +++ b/content/programs/sqlitebrowser/logo.png @@ -0,0 +1 @@ +SQLite \ No newline at end of file diff --git a/content/programs/sqlitebrowser/program.json b/content/programs/sqlitebrowser/program.json index 55c48ab..719d396 100644 --- a/content/programs/sqlitebrowser/program.json +++ b/content/programs/sqlitebrowser/program.json @@ -5,7 +5,9 @@ "website": "https://sqlitebrowser.org/", "git_repo": "https://github.com/sqlitebrowser/sqlitebrowser", "license": "GPL-3.0", - "categories": ["development"], + "categories": [ + "development" + ], "package_names": { "default": "sqlitebrowser", "arch": "sqlitebrowser", @@ -15,5 +17,6 @@ "opensuse": "sqlitebrowser", "void": "sqlitebrowser", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/sqlitebrowser/logo.png" } diff --git a/content/programs/st/logo.png b/content/programs/st/logo.png new file mode 100644 index 0000000..d6f1dc9 --- /dev/null +++ b/content/programs/st/logo.png @@ -0,0 +1 @@ +suckless \ No newline at end of file diff --git a/content/programs/st/program.json b/content/programs/st/program.json index 5b79cad..c90634b 100644 --- a/content/programs/st/program.json +++ b/content/programs/st/program.json @@ -21,5 +21,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "st", "alpine": "CUSTOM_INSTALL" - } -} \ No newline at end of file + }, + "logo": "/programs/st/logo.png" +} diff --git a/content/programs/stacer/custom_install/install.sh b/content/programs/stacer/custom_install/install.sh new file mode 100755 index 0000000..e653fbe --- /dev/null +++ b/content/programs/stacer/custom_install/install.sh @@ -0,0 +1,12 @@ +#!/bin/bash +set -e +echo "Installing Stacer..." +LATEST_DEB=$(curl -s https://api.github.com/repos/oguzhaninan/Stacer/releases/latest 2>/dev/null | grep browser_download_url | grep amd64.deb | cut -d '"' -f4) +if [ -n "$LATEST_DEB" ]; then + curl -L -o /tmp/stacer.deb "$LATEST_DEB" + sudo apt install -y /tmp/stacer.deb 2>/dev/null || sudo dpkg -i /tmp/stacer.deb + rm /tmp/stacer.deb +else + echo "Could not download Stacer. Try AppImage instead." + exit 1 +fi diff --git a/content/programs/stacer/logo.png b/content/programs/stacer/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/stacer/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/stacer/program.json b/content/programs/stacer/program.json new file mode 100644 index 0000000..092e5bb --- /dev/null +++ b/content/programs/stacer/program.json @@ -0,0 +1,24 @@ +{ + "name": "Stacer", + "slug": "stacer", + "description": "Linux system optimizer and application monitor.", + "website": "https://oguzhaninan.github.io/Stacer-Web/", + "git_repo": "https://github.com/oguzhaninan/Stacer", + "license": "GPL-3.0", + "categories": [ + "system", + "system-monitor" + ], + "dependencies": [], + "package_names": { + "default": "stacer", + "arch": "stacer", + "ubuntu": "CUSTOM_INSTALL", + "debian": "CUSTOM_INSTALL", + "fedora": "CUSTOM_INSTALL", + "opensuse": "CUSTOM_INSTALL", + "void": "CUSTOM_INSTALL", + "alpine": "CUSTOM_INSTALL" + }, + "logo": "/programs/stacer/logo.png" +} diff --git a/content/programs/starship/logo.png b/content/programs/starship/logo.png new file mode 100644 index 0000000..3fe38e6 --- /dev/null +++ b/content/programs/starship/logo.png @@ -0,0 +1 @@ +Starship \ No newline at end of file diff --git a/content/programs/steam/logo.png b/content/programs/steam/logo.png new file mode 100644 index 0000000..94ca3ff --- /dev/null +++ b/content/programs/steam/logo.png @@ -0,0 +1 @@ +Steam \ No newline at end of file diff --git a/content/programs/streamlink/logo.png b/content/programs/streamlink/logo.png new file mode 100644 index 0000000..4520135 --- /dev/null +++ b/content/programs/streamlink/logo.png @@ -0,0 +1,22 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/content/programs/streamlink/program.json b/content/programs/streamlink/program.json index 13b8d04..33b70f0 100644 --- a/content/programs/streamlink/program.json +++ b/content/programs/streamlink/program.json @@ -5,7 +5,10 @@ "website": "https://streamlink.github.io/", "git_repo": "https://github.com/streamlink/streamlink", "license": "BSD-2-Clause", - "categories": ["media", "terminal"], + "categories": [ + "media", + "terminal" + ], "package_names": { "default": "streamlink", "arch": "streamlink", @@ -15,5 +18,6 @@ "opensuse": "streamlink", "void": "streamlink", "alpine": "streamlink" - } + }, + "logo": "/programs/streamlink/logo.png" } diff --git a/content/programs/surf/logo.png b/content/programs/surf/logo.png new file mode 100644 index 0000000..d6f1dc9 --- /dev/null +++ b/content/programs/surf/logo.png @@ -0,0 +1 @@ +suckless \ No newline at end of file diff --git a/content/programs/surf/program.json b/content/programs/surf/program.json index 5ce23e5..ee8feb5 100644 --- a/content/programs/surf/program.json +++ b/content/programs/surf/program.json @@ -21,5 +21,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "surf", "alpine": "CUSTOM_INSTALL" - } -} \ No newline at end of file + }, + "logo": "/programs/surf/logo.png" +} diff --git a/content/programs/sway/logo.png b/content/programs/sway/logo.png new file mode 100644 index 0000000..0fd4ff5 --- /dev/null +++ b/content/programs/sway/logo.png @@ -0,0 +1 @@ +Sway \ No newline at end of file diff --git a/content/programs/sxhkd/logo.png b/content/programs/sxhkd/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/sxhkd/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/sxhkd/program.json b/content/programs/sxhkd/program.json index 9b611c6..a7456cc 100644 --- a/content/programs/sxhkd/program.json +++ b/content/programs/sxhkd/program.json @@ -20,5 +20,6 @@ }, "dependencies": [ "git" - ] -} \ No newline at end of file + ], + "logo": "/programs/sxhkd/logo.png" +} diff --git a/content/programs/syncthing/logo.png b/content/programs/syncthing/logo.png new file mode 100644 index 0000000..e9059e6 --- /dev/null +++ b/content/programs/syncthing/logo.png @@ -0,0 +1 @@ +Syncthing \ No newline at end of file diff --git a/content/programs/syncthing/program.json b/content/programs/syncthing/program.json new file mode 100644 index 0000000..2a29050 --- /dev/null +++ b/content/programs/syncthing/program.json @@ -0,0 +1,24 @@ +{ + "name": "Syncthing", + "slug": "syncthing", + "description": "Continuous, decentralized file synchronization.", + "website": "https://syncthing.net/", + "git_repo": "https://github.com/syncthing/syncthing", + "license": "MPL-2.0", + "categories": [ + "backup", + "network" + ], + "dependencies": [], + "package_names": { + "default": "syncthing", + "arch": "syncthing", + "ubuntu": "syncthing", + "debian": "syncthing", + "fedora": "syncthing", + "opensuse": "syncthing", + "void": "syncthing", + "alpine": "syncthing" + }, + "logo": "/programs/syncthing/logo.png" +} diff --git a/content/programs/systemctl/program.json b/content/programs/systemctl/program.json index af7cca3..003013c 100644 --- a/content/programs/systemctl/program.json +++ b/content/programs/systemctl/program.json @@ -1,10 +1,12 @@ { "name": "systemctl", "slug": "systemctl", - "description": "The systemd service manager — controls system services.", + "description": "The systemd service manager \u2014 controls system services.", "website": "https://systemd.io/", "license": "LGPL-2.1", - "categories": ["system"], + "categories": [ + "system" + ], "package_names": { "default": "systemd", "arch": "systemd", @@ -14,5 +16,6 @@ "opensuse": "systemd", "void": null, "alpine": null - } + }, + "logo": "/programs/systemctl/logo.png" } diff --git a/content/programs/tabby/program.json b/content/programs/tabby/program.json index ba3498b..79b5b56 100644 --- a/content/programs/tabby/program.json +++ b/content/programs/tabby/program.json @@ -5,8 +5,12 @@ "website": "https://tabby.sh/", "git_repo": "https://github.com/Eugeny/tabby", "license": "MIT", - "categories": ["terminal"], - "dependencies": ["curl"], + "categories": [ + "terminal" + ], + "dependencies": [ + "curl" + ], "package_names": { "default": "tabby", "arch": "tabby", @@ -16,5 +20,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/tabby/logo.png" } diff --git a/content/programs/taskwarrior/program.json b/content/programs/taskwarrior/program.json index fcbacb6..48a48a4 100644 --- a/content/programs/taskwarrior/program.json +++ b/content/programs/taskwarrior/program.json @@ -5,7 +5,10 @@ "website": "https://taskwarrior.org/", "git_repo": "https://github.com/GothenburgBitFactory/taskwarrior", "license": "MIT", - "categories": ["productivity", "terminal"], + "categories": [ + "productivity", + "terminal" + ], "package_names": { "default": "task", "arch": "task", @@ -15,5 +18,6 @@ "opensuse": "taskwarrior", "void": "task", "alpine": "task" - } + }, + "logo": "/programs/taskwarrior/logo.png" } diff --git a/content/programs/tdrop/logo.png b/content/programs/tdrop/logo.png new file mode 100644 index 0000000..63efb6b --- /dev/null +++ b/content/programs/tdrop/logo.png @@ -0,0 +1 @@ +i3 \ No newline at end of file diff --git a/content/programs/tdrop/program.json b/content/programs/tdrop/program.json index 73ca381..3c4badf 100644 --- a/content/programs/tdrop/program.json +++ b/content/programs/tdrop/program.json @@ -5,8 +5,13 @@ "website": "https://github.com/noctuid/tdrop", "git_repo": "https://github.com/noctuid/tdrop", "license": "GPL-3.0", - "categories": ["terminal", "window-management"], - "dependencies": ["curl"], + "categories": [ + "terminal", + "window-management" + ], + "dependencies": [ + "curl" + ], "package_names": { "default": "tdrop", "arch": "tdrop", @@ -16,5 +21,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/tdrop/logo.png" } diff --git a/content/programs/telega/program.json b/content/programs/telega/program.json index 1058ac2..f7c7d51 100644 --- a/content/programs/telega/program.json +++ b/content/programs/telega/program.json @@ -12,7 +12,13 @@ ], "package_names": { "default": "CUSTOM_INSTALL", - "arch": "emacs-telega" + "arch": "emacs-telega", + "alpine": "CUSTOM_INSTALL", + "debian": "CUSTOM_INSTALL", + "fedora": "CUSTOM_INSTALL", + "opensuse": "CUSTOM_INSTALL", + "ubuntu": "CUSTOM_INSTALL", + "void": "CUSTOM_INSTALL" }, "logo": "/programs/telega/logo.png" -} \ No newline at end of file +} diff --git a/content/programs/telegram-desktop/logo.png b/content/programs/telegram-desktop/logo.png new file mode 100644 index 0000000..b637cb5 --- /dev/null +++ b/content/programs/telegram-desktop/logo.png @@ -0,0 +1 @@ +Telegram \ No newline at end of file diff --git a/content/programs/terminator/logo.png b/content/programs/terminator/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/terminator/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/terminator/program.json b/content/programs/terminator/program.json index 13e964e..d610e32 100644 --- a/content/programs/terminator/program.json +++ b/content/programs/terminator/program.json @@ -5,7 +5,9 @@ "website": "https://gnome-terminator.org/", "git_repo": "https://github.com/gnome-terminator/terminator", "license": "GPL-2.0", - "categories": ["terminal"], + "categories": [ + "terminal" + ], "package_names": { "default": "terminator", "arch": "terminator", @@ -15,5 +17,6 @@ "opensuse": "terminator", "void": "terminator", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/terminator/logo.png" } diff --git a/content/programs/thefuck/logo.png b/content/programs/thefuck/logo.png new file mode 100644 index 0000000..e1b14ec --- /dev/null +++ b/content/programs/thefuck/logo.png @@ -0,0 +1 @@ +Python \ No newline at end of file diff --git a/content/programs/thefuck/program.json b/content/programs/thefuck/program.json index 8678092..12b0091 100644 --- a/content/programs/thefuck/program.json +++ b/content/programs/thefuck/program.json @@ -21,5 +21,6 @@ }, "dependencies": [ "pip" - ] -} \ No newline at end of file + ], + "logo": "/programs/thefuck/logo.png" +} diff --git a/content/programs/thunar/logo.png b/content/programs/thunar/logo.png new file mode 100644 index 0000000..b11d40e --- /dev/null +++ b/content/programs/thunar/logo.png @@ -0,0 +1 @@ +XFCE \ No newline at end of file diff --git a/content/programs/thunar/program.json b/content/programs/thunar/program.json new file mode 100644 index 0000000..1bf6124 --- /dev/null +++ b/content/programs/thunar/program.json @@ -0,0 +1,23 @@ +{ + "name": "Thunar", + "slug": "thunar", + "description": "Fast and lightweight file manager for Xfce.", + "website": "https://docs.xfce.org/xfce/thunar/start", + "git_repo": "https://gitlab.xfce.org/xfce/thunar", + "license": "GPL-2.0+", + "categories": [ + "file-manager" + ], + "dependencies": [], + "package_names": { + "default": "thunar", + "arch": "thunar", + "ubuntu": "thunar", + "debian": "thunar", + "fedora": "thunar", + "opensuse": "thunar", + "void": "thunar", + "alpine": "thunar" + }, + "logo": "/programs/thunar/logo.png" +} diff --git a/content/programs/thunderbird/logo.png b/content/programs/thunderbird/logo.png new file mode 100644 index 0000000..1aa8bcf --- /dev/null +++ b/content/programs/thunderbird/logo.png @@ -0,0 +1 @@ +Thunderbird \ No newline at end of file diff --git a/content/programs/tig/logo.png b/content/programs/tig/logo.png new file mode 100644 index 0000000..5f19a87 --- /dev/null +++ b/content/programs/tig/logo.png @@ -0,0 +1 @@ +Git \ No newline at end of file diff --git a/content/programs/tig/program.json b/content/programs/tig/program.json index 97c0132..021f1e9 100644 --- a/content/programs/tig/program.json +++ b/content/programs/tig/program.json @@ -5,7 +5,10 @@ "website": "https://jonas.github.io/tig/", "git_repo": "https://github.com/jonas/tig", "license": "GPL-2.0", - "categories": ["development", "terminal"], + "categories": [ + "development", + "terminal" + ], "package_names": { "default": "tig", "arch": "tig", @@ -15,5 +18,6 @@ "opensuse": "tig", "void": "tig", "alpine": "tig" - } + }, + "logo": "/programs/tig/logo.png" } diff --git a/content/programs/tilix/logo.png b/content/programs/tilix/logo.png new file mode 100644 index 0000000..641dc42 --- /dev/null +++ b/content/programs/tilix/logo.png @@ -0,0 +1,161 @@ + + diff --git a/content/programs/tilix/program.json b/content/programs/tilix/program.json index 8439eb5..3645346 100644 --- a/content/programs/tilix/program.json +++ b/content/programs/tilix/program.json @@ -5,7 +5,9 @@ "website": "https://gnunn1.github.io/tilix-web/", "git_repo": "https://github.com/gnunn1/tilix", "license": "MPL-2.0", - "categories": ["terminal"], + "categories": [ + "terminal" + ], "package_names": { "default": "tilix", "arch": "tilix", @@ -15,5 +17,6 @@ "opensuse": "tilix", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/tilix/logo.png" } diff --git a/content/programs/timeshift/logo.png b/content/programs/timeshift/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/timeshift/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/timeshift/program.json b/content/programs/timeshift/program.json index da0740b..b36d348 100644 --- a/content/programs/timeshift/program.json +++ b/content/programs/timeshift/program.json @@ -5,8 +5,12 @@ "website": "https://github.com/linuxmint/timeshift", "git_repo": "https://github.com/linuxmint/timeshift", "license": "GPL-3.0", - "categories": ["system"], - "dependencies": ["git"], + "categories": [ + "system" + ], + "dependencies": [ + "git" + ], "package_names": { "default": "timeshift", "arch": "timeshift", @@ -16,5 +20,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/timeshift/logo.png" } diff --git a/content/programs/tint2/logo.png b/content/programs/tint2/logo.png new file mode 100644 index 0000000..b8cfedc --- /dev/null +++ b/content/programs/tint2/logo.png @@ -0,0 +1,88 @@ + + + + +Not Found + + + + + + + +
+
+404 +

+404: Page not found +

+

+Make sure the address is correct and the page has not moved. +Please contact your GitLab administrator if you think this is a mistake. +

+
+
+ +
+
+ + +
+ +
+ + diff --git a/content/programs/tint2/program.json b/content/programs/tint2/program.json index 728c3d3..3305fc7 100644 --- a/content/programs/tint2/program.json +++ b/content/programs/tint2/program.json @@ -5,7 +5,9 @@ "website": "https://gitlab.com/o9000/tint2", "git_repo": "https://gitlab.com/o9000/tint2", "license": "GPL-2.0", - "categories": ["status-bar"], + "categories": [ + "status-bar" + ], "dependencies": [], "package_names": { "default": "tint2", @@ -16,5 +18,6 @@ "opensuse": "tint2", "void": "tint2", "alpine": "tint2" - } + }, + "logo": "/programs/tint2/logo.png" } diff --git a/content/programs/tldr/program.json b/content/programs/tldr/program.json index 1bf1543..4123c55 100644 --- a/content/programs/tldr/program.json +++ b/content/programs/tldr/program.json @@ -21,5 +21,6 @@ }, "dependencies": [ "pip" - ] -} \ No newline at end of file + ], + "logo": "/programs/tldr/logo.png" +} diff --git a/content/programs/tlp/logo.png b/content/programs/tlp/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/tlp/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/tlp/program.json b/content/programs/tlp/program.json new file mode 100644 index 0000000..e7eaf50 --- /dev/null +++ b/content/programs/tlp/program.json @@ -0,0 +1,23 @@ +{ + "name": "TLP", + "slug": "tlp", + "description": "Advanced power management for Linux \u2014 save battery life.", + "website": "https://linrunner.de/tlp/", + "git_repo": "https://github.com/linrunner/TLP", + "license": "GPL-2.0+", + "categories": [ + "system" + ], + "dependencies": [], + "package_names": { + "default": "tlp", + "arch": "tlp", + "ubuntu": "tlp", + "debian": "tlp", + "fedora": "tlp", + "opensuse": "tlp", + "void": "tlp", + "alpine": "CUSTOM_INSTALL" + }, + "logo": "/programs/tlp/logo.png" +} diff --git a/content/programs/tmux/logo.png b/content/programs/tmux/logo.png new file mode 100644 index 0000000..a7e200f --- /dev/null +++ b/content/programs/tmux/logo.png @@ -0,0 +1 @@ +tmux \ No newline at end of file diff --git a/content/programs/tor-browser/logo.png b/content/programs/tor-browser/logo.png new file mode 100644 index 0000000..e99c349 --- /dev/null +++ b/content/programs/tor-browser/logo.png @@ -0,0 +1 @@ +Tor Project \ No newline at end of file diff --git a/content/programs/tpm/logo.png b/content/programs/tpm/logo.png new file mode 100644 index 0000000..a7e200f --- /dev/null +++ b/content/programs/tpm/logo.png @@ -0,0 +1 @@ +tmux \ No newline at end of file diff --git a/content/programs/tpm/program.json b/content/programs/tpm/program.json index f1cb7df..39a1617 100644 --- a/content/programs/tpm/program.json +++ b/content/programs/tpm/program.json @@ -1,12 +1,25 @@ { "name": "tpm", "slug": "tpm", - "description": "Tmux Plugin Manager — installs and manages tmux plugins.", + "description": "Tmux Plugin Manager \u2014 installs and manages tmux plugins.", "git_repo": "https://github.com/tmux-plugins/tpm", "license": "MIT", - "categories": ["terminal"], - "dependencies": ["git", "tmux"], + "categories": [ + "terminal" + ], + "dependencies": [ + "git", + "tmux" + ], "package_names": { - "default": "CUSTOM_INSTALL" - } + "default": "CUSTOM_INSTALL", + "alpine": "CUSTOM_INSTALL", + "arch": "CUSTOM_INSTALL", + "debian": "CUSTOM_INSTALL", + "fedora": "CUSTOM_INSTALL", + "opensuse": "CUSTOM_INSTALL", + "ubuntu": "CUSTOM_INSTALL", + "void": "CUSTOM_INSTALL" + }, + "logo": "/programs/tpm/logo.png" } diff --git a/content/programs/trash-cli/logo.png b/content/programs/trash-cli/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/trash-cli/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/trash-cli/program.json b/content/programs/trash-cli/program.json index 7a98f3d..4d002d6 100644 --- a/content/programs/trash-cli/program.json +++ b/content/programs/trash-cli/program.json @@ -4,7 +4,10 @@ "description": "A command-line interface to the FreeDesktop.org trash can.", "git_repo": "https://github.com/andreafrancia/trash-cli", "license": "GPL-2.0", - "categories": ["terminal", "system"], + "categories": [ + "terminal", + "system" + ], "package_names": { "default": "trash-cli", "arch": "trash-cli", @@ -14,5 +17,6 @@ "opensuse": "python3-trash-cli", "void": "trash-cli", "alpine": "trash-cli" - } + }, + "logo": "/programs/trash-cli/logo.png" } diff --git a/content/programs/tree/logo.png b/content/programs/tree/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/tree/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/tree/program.json b/content/programs/tree/program.json index fd4fe43..09ed3fd 100644 --- a/content/programs/tree/program.json +++ b/content/programs/tree/program.json @@ -3,7 +3,9 @@ "slug": "tree", "description": "Recursively displays directory contents as a tree structure.", "license": "GPL-2.0", - "categories": ["terminal"], + "categories": [ + "terminal" + ], "package_names": { "default": "tree", "arch": "tree", @@ -13,5 +15,6 @@ "opensuse": "tree", "void": "tree", "alpine": "tree" - } + }, + "logo": "/programs/tree/logo.png" } diff --git a/content/programs/tsserver/logo.png b/content/programs/tsserver/logo.png new file mode 100644 index 0000000..688ddcc --- /dev/null +++ b/content/programs/tsserver/logo.png @@ -0,0 +1 @@ +TypeScript \ No newline at end of file diff --git a/content/programs/tty-clock/logo.png b/content/programs/tty-clock/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/tty-clock/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/tty-clock/program.json b/content/programs/tty-clock/program.json index 2675927..ee6f23e 100644 --- a/content/programs/tty-clock/program.json +++ b/content/programs/tty-clock/program.json @@ -5,8 +5,13 @@ "website": "https://github.com/xorg62/tty-clock", "git_repo": "https://github.com/xorg62/tty-clock", "license": "BSD-2-Clause", - "categories": ["fun", "terminal"], - "dependencies": ["git-dep"], + "categories": [ + "fun", + "terminal" + ], + "dependencies": [ + "git-dep" + ], "package_names": { "default": "tty-clock", "arch": "tty-clock", @@ -16,5 +21,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/tty-clock/logo.png" } diff --git a/content/programs/typora/logo.png b/content/programs/typora/logo.png new file mode 100644 index 0000000..9d2f517 Binary files /dev/null and b/content/programs/typora/logo.png differ diff --git a/content/programs/typora/program.json b/content/programs/typora/program.json index ee969df..5462d05 100644 --- a/content/programs/typora/program.json +++ b/content/programs/typora/program.json @@ -4,8 +4,13 @@ "description": "Minimal Markdown editor with seamless live preview.", "website": "https://typora.io/", "license": "proprietary", - "categories": ["editor", "markdown"], - "dependencies": ["curl"], + "categories": [ + "editor", + "markdown" + ], + "dependencies": [ + "curl" + ], "package_names": { "default": "typora", "arch": "typora", @@ -15,5 +20,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/typora/logo.png" } diff --git a/content/programs/ulauncher/custom_install/install.sh b/content/programs/ulauncher/custom_install/install.sh new file mode 100755 index 0000000..019d2f8 --- /dev/null +++ b/content/programs/ulauncher/custom_install/install.sh @@ -0,0 +1,12 @@ +#!/bin/bash +set -e +echo "Installing Ulauncher..." +LATEST_DEB=$(curl -s https://api.github.com/repos/Ulauncher/Ulauncher/releases/latest 2>/dev/null | grep browser_download_url | grep .deb | head -1 | cut -d '"' -f4) +if [ -n "$LATEST_DEB" ]; then + curl -L -o /tmp/ulauncher.deb "$LATEST_DEB" + sudo dpkg -i /tmp/ulauncher.deb 2>/dev/null || sudo apt install -y /tmp/ulauncher.deb + rm /tmp/ulauncher.deb +else + echo "Could not download Ulauncher." + exit 1 +fi diff --git a/content/programs/ulauncher/program.json b/content/programs/ulauncher/program.json new file mode 100644 index 0000000..47aed66 --- /dev/null +++ b/content/programs/ulauncher/program.json @@ -0,0 +1,26 @@ +{ + "name": "Ulauncher", + "slug": "ulauncher", + "description": "Fast application launcher for Linux, inspired by Spotlight.", + "website": "https://ulauncher.io/", + "git_repo": "https://github.com/Ulauncher/Ulauncher", + "license": "MIT", + "categories": [ + "launcher" + ], + "dependencies": [ + "python3", + "pip" + ], + "package_names": { + "default": "ulauncher", + "arch": "ulauncher", + "ubuntu": "CUSTOM_INSTALL", + "debian": "CUSTOM_INSTALL", + "fedora": "CUSTOM_INSTALL", + "opensuse": "CUSTOM_INSTALL", + "void": "CUSTOM_INSTALL", + "alpine": "CUSTOM_INSTALL" + }, + "logo": "/programs/ulauncher/logo.png" +} diff --git a/content/programs/ungit/logo.png b/content/programs/ungit/logo.png new file mode 100644 index 0000000..5f19a87 --- /dev/null +++ b/content/programs/ungit/logo.png @@ -0,0 +1 @@ +Git \ No newline at end of file diff --git a/content/programs/ungit/program.json b/content/programs/ungit/program.json index e1ffa3e..6fbde20 100644 --- a/content/programs/ungit/program.json +++ b/content/programs/ungit/program.json @@ -5,8 +5,13 @@ "website": "https://github.com/FredrikNoren/ungit", "git_repo": "https://github.com/FredrikNoren/ungit", "license": "MIT", - "categories": ["development", "version-control"], - "dependencies": ["npm"], + "categories": [ + "development", + "version-control" + ], + "dependencies": [ + "npm" + ], "package_names": { "default": "CUSTOM_INSTALL", "arch": "CUSTOM_INSTALL", @@ -16,5 +21,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/ungit/logo.png" } diff --git a/content/programs/vagrant/logo.png b/content/programs/vagrant/logo.png new file mode 100644 index 0000000..0598ca5 --- /dev/null +++ b/content/programs/vagrant/logo.png @@ -0,0 +1 @@ +Vagrant \ No newline at end of file diff --git a/content/programs/ventoy/custom_install/install.sh b/content/programs/ventoy/custom_install/install.sh new file mode 100755 index 0000000..cf3d025 --- /dev/null +++ b/content/programs/ventoy/custom_install/install.sh @@ -0,0 +1,13 @@ +#!/bin/bash +set -e +echo "Installing Ventoy..." +LATEST=$(curl -s https://api.github.com/repos/ventoy/Ventoy/releases/latest 2>/dev/null | grep tag_name | cut -d '"' -f4) +VERSION=${LATEST:-v1.0.99} +TARBALL="ventoy-${VERSION}-linux.tar.gz" +URL="https://github.com/ventoy/Ventoy/releases/download/${VERSION}/${TARBALL}" + +cd /tmp +curl -L -o "$TARBALL" "$URL" +tar xzf "$TARBALL" +echo "Ventoy extracted to /tmp/ventoy-${VERSION}/" +echo "Run: cd /tmp/ventoy-${VERSION} && sudo ./Ventoy2Disk.sh -i /dev/sdX" diff --git a/content/programs/ventoy/logo.png b/content/programs/ventoy/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/ventoy/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/ventoy/program.json b/content/programs/ventoy/program.json new file mode 100644 index 0000000..109cd9a --- /dev/null +++ b/content/programs/ventoy/program.json @@ -0,0 +1,26 @@ +{ + "name": "Ventoy", + "slug": "ventoy", + "description": "Multiboot USB creator \u2014 just copy ISO files and boot.", + "website": "https://www.ventoy.net/", + "git_repo": "https://github.com/ventoy/Ventoy", + "license": "GPL-3.0", + "categories": [ + "devops", + "system" + ], + "dependencies": [ + "curl" + ], + "package_names": { + "default": "CUSTOM_INSTALL", + "arch": "ventoy-bin", + "ubuntu": "CUSTOM_INSTALL", + "debian": "CUSTOM_INSTALL", + "fedora": "CUSTOM_INSTALL", + "opensuse": "CUSTOM_INSTALL", + "void": "CUSTOM_INSTALL", + "alpine": "CUSTOM_INSTALL" + }, + "logo": "/programs/ventoy/logo.png" +} diff --git a/content/programs/vifm/logo.png b/content/programs/vifm/logo.png new file mode 100644 index 0000000..63d1512 --- /dev/null +++ b/content/programs/vifm/logo.png @@ -0,0 +1 @@ +Vim \ No newline at end of file diff --git a/content/programs/vifm/program.json b/content/programs/vifm/program.json index ddf314e..2325658 100644 --- a/content/programs/vifm/program.json +++ b/content/programs/vifm/program.json @@ -5,7 +5,10 @@ "website": "https://vifm.info/", "git_repo": "https://github.com/vifm/vifm", "license": "GPL-2.0", - "categories": ["file-manager", "terminal"], + "categories": [ + "file-manager", + "terminal" + ], "dependencies": [], "package_names": { "default": "vifm", @@ -16,5 +19,6 @@ "opensuse": "vifm", "void": "vifm", "alpine": "vifm" - } + }, + "logo": "/programs/vifm/logo.png" } diff --git a/content/programs/vim/logo.png b/content/programs/vim/logo.png new file mode 100644 index 0000000..63d1512 --- /dev/null +++ b/content/programs/vim/logo.png @@ -0,0 +1 @@ +Vim \ No newline at end of file diff --git a/content/programs/virt-manager/logo.png b/content/programs/virt-manager/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/virt-manager/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/virt-manager/program.json b/content/programs/virt-manager/program.json index 614b9f3..b0bc7aa 100644 --- a/content/programs/virt-manager/program.json +++ b/content/programs/virt-manager/program.json @@ -5,7 +5,9 @@ "website": "https://virt-manager.org/", "git_repo": "https://github.com/virt-manager/virt-manager", "license": "GPL-2.0", - "categories": ["system"], + "categories": [ + "system" + ], "package_names": { "default": "virt-manager", "arch": "virt-manager", @@ -15,5 +17,6 @@ "opensuse": "virt-manager", "void": "virt-manager", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/virt-manager/logo.png" } diff --git a/content/programs/virtualbox/logo.png b/content/programs/virtualbox/logo.png new file mode 100644 index 0000000..a2f1ac7 --- /dev/null +++ b/content/programs/virtualbox/logo.png @@ -0,0 +1 @@ +VirtualBox \ No newline at end of file diff --git a/content/programs/virtualenv/logo.png b/content/programs/virtualenv/logo.png new file mode 100644 index 0000000..e1b14ec --- /dev/null +++ b/content/programs/virtualenv/logo.png @@ -0,0 +1 @@ +Python \ No newline at end of file diff --git a/content/programs/visidata/logo.png b/content/programs/visidata/logo.png new file mode 100644 index 0000000..e1b14ec --- /dev/null +++ b/content/programs/visidata/logo.png @@ -0,0 +1 @@ +Python \ No newline at end of file diff --git a/content/programs/visidata/program.json b/content/programs/visidata/program.json index b02bd76..dd9b467 100644 --- a/content/programs/visidata/program.json +++ b/content/programs/visidata/program.json @@ -21,5 +21,6 @@ }, "dependencies": [ "pip" - ] -} \ No newline at end of file + ], + "logo": "/programs/visidata/logo.png" +} diff --git a/content/programs/vivaldi/logo.png b/content/programs/vivaldi/logo.png new file mode 100644 index 0000000..bda0cbf --- /dev/null +++ b/content/programs/vivaldi/logo.png @@ -0,0 +1 @@ +Vivaldi \ No newline at end of file diff --git a/content/programs/w3m/logo.png b/content/programs/w3m/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/w3m/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/w3m/program.json b/content/programs/w3m/program.json index 31e3a85..88e91fe 100644 --- a/content/programs/w3m/program.json +++ b/content/programs/w3m/program.json @@ -3,7 +3,10 @@ "slug": "w3m", "description": "A text-based web browser and pager.", "license": "MIT", - "categories": ["browser", "terminal"], + "categories": [ + "browser", + "terminal" + ], "package_names": { "default": "w3m", "arch": "w3m", @@ -13,5 +16,6 @@ "opensuse": "w3m", "void": "w3m", "alpine": "w3m" - } + }, + "logo": "/programs/w3m/logo.png" } diff --git a/content/programs/waybar/logo.png b/content/programs/waybar/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/waybar/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/waybar/program.json b/content/programs/waybar/program.json index 053b044..c9c9ff4 100644 --- a/content/programs/waybar/program.json +++ b/content/programs/waybar/program.json @@ -5,8 +5,12 @@ "website": "https://github.com/Alexays/Waybar", "git_repo": "https://github.com/Alexays/Waybar", "license": "MIT", - "categories": ["status-bar"], - "dependencies": ["git-dep"], + "categories": [ + "status-bar" + ], + "dependencies": [ + "git-dep" + ], "package_names": { "default": "waybar", "arch": "waybar", @@ -16,5 +20,6 @@ "opensuse": "waybar", "void": "waybar", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/waybar/logo.png" } diff --git a/content/programs/weechat/program.json b/content/programs/weechat/program.json index 73748c9..86edb83 100644 --- a/content/programs/weechat/program.json +++ b/content/programs/weechat/program.json @@ -5,7 +5,10 @@ "website": "https://weechat.org/", "git_repo": "https://github.com/weechat/weechat", "license": "GPL-3.0", - "categories": ["communication", "terminal"], + "categories": [ + "communication", + "terminal" + ], "package_names": { "default": "weechat", "arch": "weechat", @@ -15,5 +18,6 @@ "opensuse": "weechat", "void": "weechat", "alpine": "weechat" - } + }, + "logo": "/programs/weechat/logo.png" } diff --git a/content/programs/wego/logo.png b/content/programs/wego/logo.png new file mode 100644 index 0000000..51990bd --- /dev/null +++ b/content/programs/wego/logo.png @@ -0,0 +1 @@ +Go \ No newline at end of file diff --git a/content/programs/wego/program.json b/content/programs/wego/program.json index 93fb51e..57c6a50 100644 --- a/content/programs/wego/program.json +++ b/content/programs/wego/program.json @@ -5,8 +5,13 @@ "website": "https://github.com/schachmat/wego", "git_repo": "https://github.com/schachmat/wego", "license": "MIT", - "categories": ["terminal", "internet"], - "dependencies": ["golang"], + "categories": [ + "terminal", + "internet" + ], + "dependencies": [ + "golang" + ], "package_names": { "default": "wego", "arch": "wego", @@ -16,5 +21,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/wego/logo.png" } diff --git a/content/programs/wezterm/logo.png b/content/programs/wezterm/logo.png new file mode 100644 index 0000000..fd38d40 --- /dev/null +++ b/content/programs/wezterm/logo.png @@ -0,0 +1 @@ +WezTerm \ No newline at end of file diff --git a/content/programs/wget/logo.png b/content/programs/wget/logo.png new file mode 100644 index 0000000..edfb29b --- /dev/null +++ b/content/programs/wget/logo.png @@ -0,0 +1 @@ +GNU \ No newline at end of file diff --git a/content/programs/wget/program.json b/content/programs/wget/program.json index 2e9f165..fd4e5c1 100644 --- a/content/programs/wget/program.json +++ b/content/programs/wget/program.json @@ -4,7 +4,10 @@ "description": "Non-interactive download tool.", "website": "https://www.gnu.org/software/wget/", "license": "GPL-3.0", - "categories": ["internet", "terminal"], + "categories": [ + "internet", + "terminal" + ], "package_names": { "default": "wget", "arch": "wget", @@ -14,5 +17,6 @@ "opensuse": "wget", "void": "wget", "alpine": "wget" - } + }, + "logo": "/programs/wget/logo.png" } diff --git a/content/programs/wireshark/logo.png b/content/programs/wireshark/logo.png new file mode 100644 index 0000000..938a962 --- /dev/null +++ b/content/programs/wireshark/logo.png @@ -0,0 +1 @@ +Wireshark \ No newline at end of file diff --git a/content/programs/wireshark/program.json b/content/programs/wireshark/program.json new file mode 100644 index 0000000..5c17259 --- /dev/null +++ b/content/programs/wireshark/program.json @@ -0,0 +1,24 @@ +{ + "name": "Wireshark", + "slug": "wireshark", + "description": "World's foremost network protocol analyzer.", + "website": "https://www.wireshark.org/", + "git_repo": "https://gitlab.com/wireshark/wireshark", + "license": "GPL-2.0", + "categories": [ + "network", + "security" + ], + "dependencies": [], + "package_names": { + "default": "wireshark", + "arch": "wireshark-qt", + "ubuntu": "wireshark", + "debian": "wireshark", + "fedora": "wireshark", + "opensuse": "wireshark", + "void": "wireshark", + "alpine": "wireshark" + }, + "logo": "/programs/wireshark/logo.png" +} diff --git a/content/programs/wmctrl/logo.png b/content/programs/wmctrl/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/wmctrl/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/wmctrl/program.json b/content/programs/wmctrl/program.json index 216d9fc..01d2aad 100644 --- a/content/programs/wmctrl/program.json +++ b/content/programs/wmctrl/program.json @@ -3,7 +3,10 @@ "slug": "wmctrl", "description": "A command-line tool to interact with an EWMH/NetWM compatible X Window Manager.", "license": "GPL-2.0", - "categories": ["x11", "terminal"], + "categories": [ + "x11", + "terminal" + ], "package_names": { "default": "wmctrl", "arch": "wmctrl", @@ -13,5 +16,6 @@ "opensuse": "wmctrl", "void": "wmctrl", "alpine": "wmctrl" - } + }, + "logo": "/programs/wmctrl/logo.png" } diff --git a/content/programs/wofi/logo.png b/content/programs/wofi/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/wofi/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/wofi/program.json b/content/programs/wofi/program.json new file mode 100644 index 0000000..17a8407 --- /dev/null +++ b/content/programs/wofi/program.json @@ -0,0 +1,23 @@ +{ + "name": "Wofi", + "slug": "wofi", + "description": "Native Wayland launcher, inspired by rofi.", + "website": "https://hg.sr.ht/~scoopta/wofi", + "git_repo": "https://hg.sr.ht/~scoopta/wofi", + "license": "GPL-3.0+", + "categories": [ + "launcher" + ], + "dependencies": [], + "package_names": { + "default": "wofi", + "arch": "wofi", + "ubuntu": "wofi", + "debian": "wofi", + "fedora": "wofi", + "opensuse": "wofi", + "void": "wofi", + "alpine": "wofi" + }, + "logo": "/programs/wofi/logo.png" +} diff --git a/content/programs/wpgtk/logo.png b/content/programs/wpgtk/logo.png new file mode 100644 index 0000000..e1b14ec --- /dev/null +++ b/content/programs/wpgtk/logo.png @@ -0,0 +1 @@ +Python \ No newline at end of file diff --git a/content/programs/wpgtk/program.json b/content/programs/wpgtk/program.json index 621a0ce..fa4c510 100644 --- a/content/programs/wpgtk/program.json +++ b/content/programs/wpgtk/program.json @@ -5,8 +5,12 @@ "website": "https://github.com/deviantfero/wpgtk", "git_repo": "https://github.com/deviantfero/wpgtk", "license": "GPL-3.0", - "categories": ["theming"], - "dependencies": ["pip"], + "categories": [ + "theming" + ], + "dependencies": [ + "pip" + ], "package_names": { "default": "python-wpgtk", "arch": "python-wpgtk", @@ -16,5 +20,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/wpgtk/logo.png" } diff --git a/content/programs/xfce4-terminal/logo.png b/content/programs/xfce4-terminal/logo.png new file mode 100644 index 0000000..b11d40e --- /dev/null +++ b/content/programs/xfce4-terminal/logo.png @@ -0,0 +1 @@ +XFCE \ No newline at end of file diff --git a/content/programs/xfce4-terminal/program.json b/content/programs/xfce4-terminal/program.json index 15e4508..69ce817 100644 --- a/content/programs/xfce4-terminal/program.json +++ b/content/programs/xfce4-terminal/program.json @@ -5,7 +5,9 @@ "website": "https://docs.xfce.org/apps/xfce4-terminal/start", "git_repo": "https://github.com/xfce-mirror/xfce4-terminal", "license": "GPL-2.0", - "categories": ["terminal"], + "categories": [ + "terminal" + ], "dependencies": [], "package_names": { "default": "xfce4-terminal", @@ -16,5 +18,6 @@ "opensuse": "xfce4-terminal", "void": "xfce4-terminal", "alpine": "xfce4-terminal" - } + }, + "logo": "/programs/xfce4-terminal/logo.png" } diff --git a/content/programs/xmobar/logo.png b/content/programs/xmobar/logo.png new file mode 100644 index 0000000..8bd8e24 --- /dev/null +++ b/content/programs/xmobar/logo.png @@ -0,0 +1 @@ +Haskell \ No newline at end of file diff --git a/content/programs/xmobar/program.json b/content/programs/xmobar/program.json index 18d83df..bd31b44 100644 --- a/content/programs/xmobar/program.json +++ b/content/programs/xmobar/program.json @@ -5,7 +5,9 @@ "website": "https://xmobar.org/", "git_repo": "https://codeberg.org/xmobar/xmobar", "license": "BSD-3-Clause", - "categories": ["status-bar"], + "categories": [ + "status-bar" + ], "dependencies": [], "package_names": { "default": "xmobar", @@ -16,5 +18,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "xmobar", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/xmobar/logo.png" } diff --git a/content/programs/xmonad/logo.png b/content/programs/xmonad/logo.png new file mode 100644 index 0000000..8bd8e24 --- /dev/null +++ b/content/programs/xmonad/logo.png @@ -0,0 +1 @@ +Haskell \ No newline at end of file diff --git a/content/programs/xmonad/program.json b/content/programs/xmonad/program.json index 82aefeb..b109d4a 100644 --- a/content/programs/xmonad/program.json +++ b/content/programs/xmonad/program.json @@ -5,7 +5,9 @@ "website": "https://xmonad.org/", "git_repo": "https://github.com/xmonad/xmonad", "license": "BSD-3-Clause", - "categories": ["window-manager"], + "categories": [ + "window-manager" + ], "dependencies": [], "package_names": { "default": "xmonad", @@ -16,5 +18,6 @@ "opensuse": "xmonad", "void": "xmonad", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/xmonad/logo.png" } diff --git a/content/programs/xonsh/logo.png b/content/programs/xonsh/logo.png new file mode 100644 index 0000000..e1b14ec --- /dev/null +++ b/content/programs/xonsh/logo.png @@ -0,0 +1 @@ +Python \ No newline at end of file diff --git a/content/programs/xonsh/program.json b/content/programs/xonsh/program.json index 53acbfe..601ecec 100644 --- a/content/programs/xonsh/program.json +++ b/content/programs/xonsh/program.json @@ -5,8 +5,13 @@ "website": "https://xon.sh/", "git_repo": "https://github.com/xonsh/xonsh", "license": "BSD-2-Clause", - "categories": ["shell", "terminal"], - "dependencies": ["pip"], + "categories": [ + "shell", + "terminal" + ], + "dependencies": [ + "pip" + ], "package_names": { "default": "xonsh", "arch": "xonsh", @@ -16,5 +21,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/xonsh/logo.png" } diff --git a/content/programs/xorg/logo.png b/content/programs/xorg/logo.png new file mode 100644 index 0000000..45531e7 --- /dev/null +++ b/content/programs/xorg/logo.png @@ -0,0 +1 @@ +X.Org \ No newline at end of file diff --git a/content/programs/xorg/program.json b/content/programs/xorg/program.json index 8cdb9a3..64eeef6 100644 --- a/content/programs/xorg/program.json +++ b/content/programs/xorg/program.json @@ -4,7 +4,10 @@ "description": "The X Window System display server.", "website": "https://www.x.org/", "license": "MIT", - "categories": ["x11", "system"], + "categories": [ + "x11", + "system" + ], "package_names": { "default": "xorg", "arch": "xorg", @@ -14,5 +17,6 @@ "opensuse": "xorg-x11-server", "void": "xorg", "alpine": "xorg-server" - } + }, + "logo": "/programs/xorg/logo.png" } diff --git a/content/programs/xplr/logo.png b/content/programs/xplr/logo.png new file mode 100644 index 0000000..faa8c3a --- /dev/null +++ b/content/programs/xplr/logo.png @@ -0,0 +1 @@ +Rust \ No newline at end of file diff --git a/content/programs/xplr/program.json b/content/programs/xplr/program.json index 323b4d3..7c802cc 100644 --- a/content/programs/xplr/program.json +++ b/content/programs/xplr/program.json @@ -5,8 +5,13 @@ "website": "https://xplr.dev/", "git_repo": "https://github.com/sayanarijit/xplr", "license": "MIT", - "categories": ["file-manager", "terminal"], - "dependencies": ["cargo"], + "categories": [ + "file-manager", + "terminal" + ], + "dependencies": [ + "cargo" + ], "package_names": { "default": "xplr", "arch": "xplr", @@ -16,5 +21,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "xplr", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/xplr/logo.png" } diff --git a/content/programs/xwallpaper/logo.png b/content/programs/xwallpaper/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/xwallpaper/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/xwallpaper/program.json b/content/programs/xwallpaper/program.json index b74860a..3e912eb 100644 --- a/content/programs/xwallpaper/program.json +++ b/content/programs/xwallpaper/program.json @@ -5,8 +5,13 @@ "website": "https://github.com/stoeckmann/xwallpaper", "git_repo": "https://github.com/stoeckmann/xwallpaper", "license": "ISC", - "categories": ["display", "theming"], - "dependencies": ["git-dep"], + "categories": [ + "display", + "theming" + ], + "dependencies": [ + "git-dep" + ], "package_names": { "default": "xwallpaper", "arch": "xwallpaper", @@ -16,5 +21,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "xwallpaper", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/xwallpaper/logo.png" } diff --git a/content/programs/yakuake/custom_install/install.sh b/content/programs/yakuake/custom_install/install.sh new file mode 100644 index 0000000..1f7432d --- /dev/null +++ b/content/programs/yakuake/custom_install/install.sh @@ -0,0 +1,14 @@ +#!/bin/bash +set -e +# Yakuake is available on most distros via package manager +# Alpine: needs KDE frameworks +apk add yakuake 2>/dev/null || { + echo "Yakuake not in Alpine repos — installing from source" + apk add extra-cmake-modules qt5-qtbase-dev kconfig-dev karchive-dev + git clone --depth=1 https://invent.kde.org/system/yakuake /tmp/yakuake + cd /tmp/yakuake + cmake -B build -DCMAKE_INSTALL_PREFIX=/usr + cmake --build build -j$(nproc) + cmake --install build + rm -rf /tmp/yakuake +} diff --git a/content/programs/yakuake/logo.png b/content/programs/yakuake/logo.png new file mode 100644 index 0000000..91a46b8 --- /dev/null +++ b/content/programs/yakuake/logo.png @@ -0,0 +1 @@ +KDE \ No newline at end of file diff --git a/content/programs/yakuake/program.json b/content/programs/yakuake/program.json index bb98b90..82c840c 100644 --- a/content/programs/yakuake/program.json +++ b/content/programs/yakuake/program.json @@ -4,7 +4,9 @@ "description": "Drop-down terminal emulator based on KDE Konsole technology.", "website": "https://apps.kde.org/yakuake/", "license": "GPL-2.0", - "categories": ["terminal"], + "categories": [ + "terminal" + ], "dependencies": [], "package_names": { "default": "yakuake", @@ -15,5 +17,6 @@ "opensuse": "yakuake", "void": "yakuake", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/yakuake/logo.png" } diff --git a/content/programs/yazi/logo.png b/content/programs/yazi/logo.png new file mode 100644 index 0000000..09875ae Binary files /dev/null and b/content/programs/yazi/logo.png differ diff --git a/content/programs/yazi/program.json b/content/programs/yazi/program.json index 7b73681..bb01b1b 100644 --- a/content/programs/yazi/program.json +++ b/content/programs/yazi/program.json @@ -21,5 +21,6 @@ }, "dependencies": [ "cargo" - ] -} \ No newline at end of file + ], + "logo": "/programs/yazi/logo.png" +} diff --git a/content/programs/youtube-dl/logo.png b/content/programs/youtube-dl/logo.png new file mode 100644 index 0000000..9306b8e --- /dev/null +++ b/content/programs/youtube-dl/logo.png @@ -0,0 +1 @@ +YouTube \ No newline at end of file diff --git a/content/programs/yq/logo.png b/content/programs/yq/logo.png new file mode 100644 index 0000000..38afc19 --- /dev/null +++ b/content/programs/yq/logo.png @@ -0,0 +1 @@ +YAML \ No newline at end of file diff --git a/content/programs/yq/program.json b/content/programs/yq/program.json index 01ab9df..63778b7 100644 --- a/content/programs/yq/program.json +++ b/content/programs/yq/program.json @@ -21,5 +21,6 @@ }, "dependencies": [ "golang" - ] -} \ No newline at end of file + ], + "logo": "/programs/yq/logo.png" +} diff --git a/content/programs/yt-dlp/logo.png b/content/programs/yt-dlp/logo.png new file mode 100644 index 0000000..9306b8e --- /dev/null +++ b/content/programs/yt-dlp/logo.png @@ -0,0 +1 @@ +YouTube \ No newline at end of file diff --git a/content/programs/yt-dlp/program.json b/content/programs/yt-dlp/program.json index a1904a7..1080cbe 100644 --- a/content/programs/yt-dlp/program.json +++ b/content/programs/yt-dlp/program.json @@ -5,7 +5,10 @@ "website": "https://github.com/yt-dlp/yt-dlp", "git_repo": "https://github.com/yt-dlp/yt-dlp", "license": "Unlicense", - "categories": ["media", "terminal"], + "categories": [ + "media", + "terminal" + ], "package_names": { "default": "yt-dlp", "arch": "yt-dlp", @@ -15,5 +18,6 @@ "opensuse": "yt-dlp", "void": "yt-dlp", "alpine": "yt-dlp" - } + }, + "logo": "/programs/yt-dlp/logo.png" } diff --git a/content/programs/ytfzf/logo.png b/content/programs/ytfzf/logo.png new file mode 100644 index 0000000..9306b8e --- /dev/null +++ b/content/programs/ytfzf/logo.png @@ -0,0 +1 @@ +YouTube \ No newline at end of file diff --git a/content/programs/ytfzf/program.json b/content/programs/ytfzf/program.json index 39fd734..595bf09 100644 --- a/content/programs/ytfzf/program.json +++ b/content/programs/ytfzf/program.json @@ -16,7 +16,13 @@ ], "package_names": { "default": "CUSTOM_INSTALL", - "arch": "ytfzf" + "arch": "ytfzf", + "alpine": "CUSTOM_INSTALL", + "debian": "CUSTOM_INSTALL", + "fedora": "CUSTOM_INSTALL", + "opensuse": "CUSTOM_INSTALL", + "ubuntu": "CUSTOM_INSTALL", + "void": "CUSTOM_INSTALL" }, "logo": "/programs/ytfzf/logo.png" -} \ No newline at end of file +} diff --git a/content/programs/zathura/logo.png b/content/programs/zathura/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/zathura/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/zathura/program.json b/content/programs/zathura/program.json index be3a4ad..01e1ae5 100644 --- a/content/programs/zathura/program.json +++ b/content/programs/zathura/program.json @@ -5,7 +5,9 @@ "website": "https://pwmt.org/projects/zathura/", "git_repo": "https://github.com/pwmt/zathura", "license": "Zlib", - "categories": ["viewer"], + "categories": [ + "viewer" + ], "package_names": { "default": "zathura", "arch": "zathura", @@ -15,5 +17,6 @@ "opensuse": "zathura", "void": "zathura", "alpine": "zathura" - } + }, + "logo": "/programs/zathura/logo.png" } diff --git a/content/programs/zellij/logo.png b/content/programs/zellij/logo.png new file mode 100644 index 0000000..faa8c3a --- /dev/null +++ b/content/programs/zellij/logo.png @@ -0,0 +1 @@ +Rust \ No newline at end of file diff --git a/content/programs/zellij/program.json b/content/programs/zellij/program.json index d1b2dd8..64808c2 100644 --- a/content/programs/zellij/program.json +++ b/content/programs/zellij/program.json @@ -21,5 +21,6 @@ }, "dependencies": [ "cargo" - ] -} \ No newline at end of file + ], + "logo": "/programs/zellij/logo.png" +} diff --git a/content/programs/zenith/logo.png b/content/programs/zenith/logo.png new file mode 100644 index 0000000..247d47d Binary files /dev/null and b/content/programs/zenith/logo.png differ diff --git a/content/programs/zenith/program.json b/content/programs/zenith/program.json index f4e4dec..c6f68b4 100644 --- a/content/programs/zenith/program.json +++ b/content/programs/zenith/program.json @@ -5,8 +5,13 @@ "website": "https://github.com/bvaisvil/zenith", "git_repo": "https://github.com/bvaisvil/zenith", "license": "MIT", - "categories": ["system-monitor", "terminal"], - "dependencies": ["cargo"], + "categories": [ + "system-monitor", + "terminal" + ], + "dependencies": [ + "cargo" + ], "package_names": { "default": "zenith", "arch": "zenith", @@ -16,5 +21,6 @@ "opensuse": "CUSTOM_INSTALL", "void": "CUSTOM_INSTALL", "alpine": "CUSTOM_INSTALL" - } + }, + "logo": "/programs/zenith/logo.png" } diff --git a/content/programs/zettlr/custom_install/install.sh b/content/programs/zettlr/custom_install/install.sh new file mode 100755 index 0000000..c0be58e --- /dev/null +++ b/content/programs/zettlr/custom_install/install.sh @@ -0,0 +1,9 @@ +#!/bin/bash +set -e +echo "Installing Zettlr via Flatpak..." +if command -v flatpak &>/dev/null; then + flatpak install -y flathub com.zettlr.Zettlr +else + echo "Flatpak not found. Install flatpak first." + exit 1 +fi diff --git a/content/programs/zettlr/logo.png b/content/programs/zettlr/logo.png new file mode 100644 index 0000000..a55dd80 --- /dev/null +++ b/content/programs/zettlr/logo.png @@ -0,0 +1 @@ +Zettlr \ No newline at end of file diff --git a/content/programs/zettlr/program.json b/content/programs/zettlr/program.json new file mode 100644 index 0000000..860fc77 --- /dev/null +++ b/content/programs/zettlr/program.json @@ -0,0 +1,25 @@ +{ + "name": "Zettlr", + "slug": "zettlr", + "description": "Markdown editor for the 21st century, aimed at academic writing.", + "website": "https://www.zettlr.com/", + "git_repo": "https://github.com/Zettlr/Zettlr", + "license": "GPL-3.0", + "categories": [ + "editor", + "markdown", + "productivity" + ], + "dependencies": [], + "package_names": { + "default": "zettlr", + "arch": "zettlr", + "ubuntu": "CUSTOM_INSTALL", + "debian": "CUSTOM_INSTALL", + "fedora": "CUSTOM_INSTALL", + "opensuse": "CUSTOM_INSTALL", + "void": "CUSTOM_INSTALL", + "alpine": "CUSTOM_INSTALL" + }, + "logo": "/programs/zettlr/logo.png" +} diff --git a/content/programs/zoom/custom_install/install.sh b/content/programs/zoom/custom_install/install.sh new file mode 100755 index 0000000..76d3d99 --- /dev/null +++ b/content/programs/zoom/custom_install/install.sh @@ -0,0 +1,9 @@ +#!/bin/bash +set -e +echo "Installing Zoom via Flatpak..." +if command -v flatpak &>/dev/null; then + flatpak install -y flathub us.zoom.Zoom +else + echo "Flatpak not found. Install flatpak first." + exit 1 +fi diff --git a/content/programs/zoom/logo.png b/content/programs/zoom/logo.png new file mode 100644 index 0000000..28828a3 --- /dev/null +++ b/content/programs/zoom/logo.png @@ -0,0 +1 @@ +Zoom \ No newline at end of file diff --git a/content/programs/zoom/program.json b/content/programs/zoom/program.json new file mode 100644 index 0000000..1528879 --- /dev/null +++ b/content/programs/zoom/program.json @@ -0,0 +1,26 @@ +{ + "name": "Zoom", + "slug": "zoom", + "description": "Video conferencing and online meetings.", + "website": "https://zoom.us/", + "git_repo": "https://github.com/zoom", + "license": "Proprietary", + "categories": [ + "communication", + "messaging" + ], + "dependencies": [ + "curl" + ], + "package_names": { + "default": "CUSTOM_INSTALL", + "arch": "CUSTOM_INSTALL", + "ubuntu": "CUSTOM_INSTALL", + "debian": "CUSTOM_INSTALL", + "fedora": "CUSTOM_INSTALL", + "opensuse": "CUSTOM_INSTALL", + "void": "CUSTOM_INSTALL", + "alpine": "CUSTOM_INSTALL" + }, + "logo": "/programs/zoom/logo.png" +} diff --git a/content/programs/zoxide/logo.png b/content/programs/zoxide/logo.png new file mode 100644 index 0000000..faa8c3a --- /dev/null +++ b/content/programs/zoxide/logo.png @@ -0,0 +1 @@ +Rust \ No newline at end of file diff --git a/content/programs/zoxide/program.json b/content/programs/zoxide/program.json index d1ee9dc..a9dcef4 100644 --- a/content/programs/zoxide/program.json +++ b/content/programs/zoxide/program.json @@ -21,5 +21,6 @@ }, "dependencies": [ "cargo" - ] -} \ No newline at end of file + ], + "logo": "/programs/zoxide/logo.png" +} diff --git a/content/programs/zram-generator/logo.png b/content/programs/zram-generator/logo.png new file mode 100644 index 0000000..58be2b6 --- /dev/null +++ b/content/programs/zram-generator/logo.png @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/content/programs/zram-generator/program.json b/content/programs/zram-generator/program.json new file mode 100644 index 0000000..472a376 --- /dev/null +++ b/content/programs/zram-generator/program.json @@ -0,0 +1,23 @@ +{ + "name": "zram-generator", + "slug": "zram-generator", + "description": "Systemd generator to set up zram swap devices.", + "website": "https://github.com/systemd/zram-generator", + "git_repo": "https://github.com/systemd/zram-generator", + "license": "MIT", + "categories": [ + "system" + ], + "dependencies": [], + "package_names": { + "default": "zram-generator", + "arch": "zram-generator", + "ubuntu": "zram-generator", + "debian": "zram-generator", + "fedora": "zram-generator", + "opensuse": "zram-generator", + "void": "CUSTOM_INSTALL", + "alpine": "CUSTOM_INSTALL" + }, + "logo": "/programs/zram-generator/logo.png" +} diff --git a/content/programs/zsh/logo.png b/content/programs/zsh/logo.png new file mode 100644 index 0000000..1398048 --- /dev/null +++ b/content/programs/zsh/logo.png @@ -0,0 +1 @@ +Zsh \ No newline at end of file diff --git a/docs/testing-spec.md b/docs/testing-spec.md new file mode 100644 index 0000000..118b0ce --- /dev/null +++ b/docs/testing-spec.md @@ -0,0 +1,332 @@ +# Testing Spec — Linux Setup Generator + +Test automatisé de tous les scripts d'installation sur toutes les distributions, via conteneurs Docker isolés. + +## Objectif + +Valider que chaque `program.json` + `custom_install/install.sh` produit un script fonctionnel sur chaque distribution. Un programme est considéré **valide** si son installation réussit dans un conteneur Docker frais de la distribution cible. + +## Architecture + +``` +┌─────────────────────────────────────────────────┐ +│ test.yml (CI) │ +│ matrix: [alpine, arch, debian, fedora, │ +│ opensuse, ubuntu, void] │ +│ │ +│ Pour chaque distro (7 jobs parallèles) : │ +│ 1. docker build -f Dockerfile. │ +│ 2. python runner.py --distro │ +│ 3. Upload rapport JSON → artifacts │ +└─────────────────────────────────────────────────┘ +``` + +## Fichiers + +``` +tests/ +├── docker/ +│ ├── Dockerfile.alpine # FROM alpine:latest +│ ├── Dockerfile.arch # FROM archlinux:latest +│ ├── Dockerfile.debian # FROM debian:stable +│ ├── Dockerfile.fedora # FROM fedora:latest +│ ├── Dockerfile.opensuse # FROM opensuse/leap:latest +│ ├── Dockerfile.ubuntu # FROM ubuntu:latest +│ └── Dockerfile.void # FROM voidlinux/voidlinux:latest +├── script_generator.py # Port Python du ScriptGenerator JS +├── runner.py # Orchestrateur de test +└── report.py # Formattage du rapport +``` + +## `script_generator.py` + +Port Python de [`static/js/script-generator.js`](../static/js/script-generator.js). Même algorithme, même comportement. Pourquoi Python plutôt que Node.js ? Pas de dépendance supplémentaire, et le reste de l'infra de test est en Python. + +### Classe `ScriptGenerator` + +```python +class ScriptGenerator: + def __init__(self, distro: dict, programs: list, dependencies: list): + self.distro = distro + self.programs = programs + self.dependencies = dependencies + self.privilege_escalation = "" # root dans Docker → pas de sudo + + def _find_item(self, slug: str) -> dict | None: + """Cherche un slug dans programs puis dependencies.""" + + def _retrieve_package_names(self) -> tuple[list, list]: + """Retourne (package_names, custom_slugs).""" + + def _build_package_install_cmd(self, package_names: list) -> str: + """sudo pacman -S pkg1 pkg2 pkg3""" + + def _resolve_dependencies(self, slug: str, visited: set, result: dict): + """DFS récursif post-order. Remplit result.order et result.packages.""" + + def _get_custom_install(self, slug: str, visited: set) -> str: + """Résout dépendances + lit install.sh depuis le filesystem.""" + + def _custom_installs(self, custom_slugs: list) -> str: + """Itère sur tous les CUSTOM_INSTALL avec visited partagé.""" + + def _script_header(self) -> str: + """Shebang + commentaire distro.""" + + def build_script(self) -> str: + """Assemble le script final.""" +``` + +### Différences avec la version JS + +| JS (navigateur) | Python (test) | +|---|---| +| `fetch(/programs//custom_install/install.sh)` | `open(content/programs//custom_install/install.sh).read()` | +| `sudo` prefixé aux commandes | Pas de `sudo` (root dans Docker) | +| Script retourné comme string | Script sauvegardé dans `/tmp/test_script.sh` | + +## `runner.py` + +### Flux + +``` +1. Charger la distro (content/distros/.json) +2. Charger tous les programmes (content/programs/*/program.json) +3. Charger toutes les dépendances (content/dependencies/*/program.json) +4. Instancier ScriptGenerator(distro, all_programs, all_deps) +5. Générer le script → test_script.sh +6. docker build -t lsg-test: -f Dockerfile. . +7. docker run --rm -v $(pwd)/test_script.sh:/test_script.sh:ro lsg-test: bash /test_script.sh 2>&1 | tee test_output.txt +8. Parser test_output.txt pour identifier les échecs +9. Générer report.json +``` + +### Parsing des erreurs + +Le script bash doit être généré avec un wrapper qui loggue chaque programme : + +```bash +#!/bin/bash +# Wrapper qui teste chaque programme individuellement + +install_program() { + local name="$1" + shift + echo "▶️ [$name] Starting..." + if "$@" 2>&1; then + echo "✅ [$name] PASSED" + else + echo "❌ [$name] FAILED (exit code: $?)" + return 1 + fi +} +``` + +Le runner parse les lignes `❌ [nom] FAILED` pour construire le rapport. + +### Mode batch + +Pour éviter des runs de 8 heures, le runner supporte un mode batch : + +```bash +# Teste les programmes par lot de 50 +python runner.py --distro void --batch 1/6 # programmes 1-50 +python runner.py --distro void --batch 2/6 # programmes 51-100 +... +``` + +## `Dockerfile.` — spécifications par distro + +Chaque Dockerfile doit : +1. Partir de l'image officielle minimale +2. Installer les outils de build de base +3. Être root (pas de sudo) +4. Désactiver les prompts interactifs + +### Dockerfile.alpine +```dockerfile +FROM alpine:latest +RUN apk add --no-cache bash curl git build-base cmake nodejs npm python3 cargo rust +``` + +### Dockerfile.arch +```dockerfile +FROM archlinux:latest +RUN pacman -Syu --noconfirm && pacman -S --noconfirm base-devel git curl nodejs npm python cargo +``` + +### Dockerfile.debian +```dockerfile +FROM debian:stable +RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \ + build-essential curl git cmake nodejs npm python3 python3-pip cargo bash +``` + +### Dockerfile.fedora +```dockerfile +FROM fedora:latest +RUN dnf install -y make automake gcc gcc-c++ kernel-devel curl git cmake nodejs npm python3 cargo +``` + +### Dockerfile.opensuse +```dockerfile +FROM opensuse/leap:latest +RUN zypper install -y -t pattern devel_basis && zypper install -y curl git cmake nodejs npm python3 cargo +``` + +### Dockerfile.ubuntu +```dockerfile +FROM ubuntu:latest +RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \ + build-essential curl git cmake nodejs npm python3 python3-pip cargo +``` + +### Dockerfile.void +```dockerfile +FROM voidlinux/voidlinux:latest +RUN xbps-install -Syu && xbps-install -y base-devel curl git cmake nodejs npm python3 cargo +``` + +## Rapport de test + +### Format (`report.json`) + +```json +{ + "distro": "void", + "distro_slug": "void", + "timestamp": "2026-06-10T12:00:00Z", + "total": 291, + "passed": 273, + "failed": 18, + "skipped": 0, + "duration_seconds": 1847, + "failures": [ + { + "slug": "virtualbox", + "name": "VirtualBox", + "error_message": "package 'virtualbox' not found in repository", + "exit_code": 1, + "install_method": "native", + "attempted_command": "xbps-install -S virtualbox", + "suggestion": "Pas dans les repos Void. Utiliser CUSTOM_INSTALL avec curl vers le .run Oracle." + } + ] +} +``` + +### Génération du rapport HTML (optionnel) + +```bash +python report.py report.json --html → report.html +``` + +## CI/CD Integration (`.github/workflows/test.yml`) + +```yaml +name: Test install scripts +on: + push: + branches: [develop] + paths: + - 'content/programs/**' + - 'content/distros/**' + - 'tests/**' + pull_request: + paths: + - 'content/programs/**' + - 'content/distros/**' + workflow_dispatch: + +jobs: + test: + strategy: + matrix: + distro: [alpine, arch, debian, fedora, opensuse, ubuntu, void] + fail-fast: false # un échec sur Alpine n'arrête pas Arch + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Build Docker image + run: docker build -t lsg-test:${{ matrix.distro }} -f tests/docker/Dockerfile.${{ matrix.distro }} . + - name: Run tests + run: python3 tests/runner.py --distro ${{ matrix.distro }} + - name: Upload report + uses: actions/upload-artifact@v4 + with: + name: report-${{ matrix.distro }} + path: report.json +``` + +## Workflow humain + +``` +1. PR modifie ou ajoute un program.json / install.sh + │ +2. CI déclenchée → 7 jobs Docker parallèles + │ +3. Chaque job génère un rapport + │ +4. Reviewer regarde les ❌ dans le rapport + │ +5. Corrige le program.json / install.sh + │ +6. Repush → CI relancée → ✅ +``` + +## Règles de priorité d'installation + +Rappel : ces règles guident le choix de la méthode d'installation quand on corrige un échec. + +| Priorité | Méthode | Exemple | Quand l'utiliser | +|---|---|---|---| +| **1** | Package manager natif | `xbps-install -S firefox` | Le package existe dans les repos officiels | +| **2** | Dépôt tiers (apt repo, copr, AUR) | `add-apt-repository ... && apt install` | Package non-officiel mais packagé pour la distro | +| **3** | curl/wget binaire | `curl -L url | bash` ou téléchargement d'un .deb/.rpm | Binary release officielle dispo | +| **4** | Flatpak / Snap / AppImage | `flatpak install flathub org.app.Nom` | Package isolé, dispo cross-distro | +| **5** | Gestionnaire de langage (pip, cargo, npm, gem) | `cargo install starship` | Outil écrit dans un langage spécifique, pas packagé | +| **6** | Compilation from source | `git clone && make && make install` | Dernier recours — dépendances de build doivent être installées AVANT | + +### Règle compile : dépendances d'abord + +Quand on compile, le `custom_install/install.sh` doit **toujours** installer les dépendances de build avant la compilation : + +```bash +#!/bin/bash +# Exemple : installation de dwm depuis les sources +set -e + +# 1. Dépendances de build +sudo apt-get install -y build-essential libx11-dev libxft-dev libxinerama-dev + +# 2. Clone + compile +git clone https://git.suckless.org/dwm /tmp/dwm +cd /tmp/dwm +make +sudo make install +``` + +Les dépendances de build doivent être déclarées dans `dependencies` du `program.json` pour que le `ScriptGenerator` les résolve automatiquement. + +## Notes d'implémentation + +### Pourquoi Docker plutôt que des VMs ? + +- **Vitesse** : un conteneur se lance en < 1s, une VM en 30s+ +- **CI-native** : GitHub Actions a Docker préinstallé +- **Reproductible** : le Dockerfile est la spec exacte de l'environnement +- **Isolation** : chaque distro dans son conteneur, pas de conflits + +### Pourquoi `script_generator.py` plutôt que réutiliser le JS ? + +- La CI n'a pas de navigateur +- Node.js serait une dépendance supplémentaire pour 136 lignes de logique +- Python est déjà présent dans l'environnement de CI +- La logique est suffisamment simple pour un port fidèle + +### Gestion du temps + +291 programmes × ~10s par installation (moyenne) = ~50 minutes par distro en série. +Avec 7 runners parallèles : ~50 minutes total. + +Les compilations from source (dwm, st, etc.) prennent plus longtemps mais sont rares. diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..7002460 --- /dev/null +++ b/tests/__init__.py @@ -0,0 +1 @@ +# Test package — Linux Setup Generator diff --git a/tests/docker/Dockerfile.alpine b/tests/docker/Dockerfile.alpine new file mode 100644 index 0000000..0bd6f97 --- /dev/null +++ b/tests/docker/Dockerfile.alpine @@ -0,0 +1,3 @@ +FROM alpine:latest +RUN apk add --no-cache bash curl git build-base cmake nodejs npm python3 py3-pip cargo rust cargo +CMD ["/bin/bash"] diff --git a/tests/docker/Dockerfile.arch b/tests/docker/Dockerfile.arch new file mode 100644 index 0000000..08d6712 --- /dev/null +++ b/tests/docker/Dockerfile.arch @@ -0,0 +1,3 @@ +FROM archlinux:latest +RUN pacman -Syu --noconfirm && pacman -S --noconfirm base-devel git curl nodejs npm python python-pip cargo rust +CMD ["/bin/bash"] diff --git a/tests/docker/Dockerfile.debian b/tests/docker/Dockerfile.debian new file mode 100644 index 0000000..e3e2502 --- /dev/null +++ b/tests/docker/Dockerfile.debian @@ -0,0 +1,5 @@ +FROM debian:stable +RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \ + build-essential curl git cmake nodejs npm python3 python3-pip cargo rustc bash \ + && rm -rf /var/lib/apt/lists/* +CMD ["/bin/bash"] diff --git a/tests/docker/Dockerfile.fedora b/tests/docker/Dockerfile.fedora new file mode 100644 index 0000000..ae73ddd --- /dev/null +++ b/tests/docker/Dockerfile.fedora @@ -0,0 +1,4 @@ +FROM fedora:latest +RUN dnf install -y make automake gcc gcc-c++ kernel-devel curl git cmake nodejs npm python3 python3-pip cargo rust bash \ + && dnf clean all +CMD ["/bin/bash"] diff --git a/tests/docker/Dockerfile.opensuse b/tests/docker/Dockerfile.opensuse new file mode 100644 index 0000000..2d136cf --- /dev/null +++ b/tests/docker/Dockerfile.opensuse @@ -0,0 +1,6 @@ +FROM opensuse/leap:latest +# devel_basis pattern is broken on Leap 15.6 — install packages individually +# Only install what's needed to run the test runner (python3 + build essentials) +RUN zypper --non-interactive install gcc gcc-c++ make automake curl git cmake python3 python3-pip bash \ + && zypper clean +CMD ["/bin/bash"] diff --git a/tests/docker/Dockerfile.ubuntu b/tests/docker/Dockerfile.ubuntu new file mode 100644 index 0000000..88c605d --- /dev/null +++ b/tests/docker/Dockerfile.ubuntu @@ -0,0 +1,5 @@ +FROM ubuntu:latest +RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \ + build-essential curl git cmake nodejs npm python3 python3-pip cargo rustc bash \ + && rm -rf /var/lib/apt/lists/* +CMD ["/bin/bash"] diff --git a/tests/docker/Dockerfile.void b/tests/docker/Dockerfile.void new file mode 100644 index 0000000..f977b8c --- /dev/null +++ b/tests/docker/Dockerfile.void @@ -0,0 +1,13 @@ +FROM voidlinux/voidlinux:latest + +# GitHub Actions: image's xbps may be outdated vs the repo. +# Update xbps first, then install build deps. +RUN rm -rf /usr/share/xbps.d \ + && mkdir -p /usr/share/xbps.d \ + && echo 'repository=https://repo-default.voidlinux.org/current' > /usr/share/xbps.d/00-repository-main.conf \ + && xbps-install -S \ + && xbps-install -yu xbps \ + && xbps-install -y base-devel curl git cmake nodejs python3 cargo bash \ + && rm -rf /var/cache/xbps/* + +CMD ["/bin/bash"] \ No newline at end of file diff --git a/tests/report.py b/tests/report.py new file mode 100644 index 0000000..9f636e9 --- /dev/null +++ b/tests/report.py @@ -0,0 +1,175 @@ +""" +Formate un rapport de test JSON en sortie lisible. + +Usage: + python report.py report.json # Résumé texte + python report.py report.json --html # Génère report.html + python report.py report.json --markdown # Format markdown (pour PR comments) +""" + +import argparse +import json +import sys +from pathlib import Path + + +def load_report(path): + with open(path) as f: + return json.load(f) + + +def format_text(report): + """Format texte coloré pour le terminal.""" + lines = [] + lines.append("=" * 60) + lines.append(f"📊 Test Report — {report['distro']} ({report['distro_slug']})") + lines.append(f" Date: {report['timestamp']}") + lines.append(f" Total: {report['total']}") + lines.append(f" Passed: {report['passed']} ✅") + lines.append(f" Failed: {report['failed']} ❌") + lines.append(f" Skipped: {report['skipped']}") + lines.append(f" Duration: {report['duration_seconds']}s") + + if report["failures"]: + lines.append(f"\n❌ Failures ({len(report['failures'])}):") + for f in report["failures"]: + lines.append(f" [{f['install_method']}] {f['name']}") + lines.append(f" Error: {f['error_message']}") + if f.get("attempted_command"): + lines.append(f" Cmd: {f['attempted_command']}") + else: + lines.append("\n✅ All programs passed!") + + return "\n".join(lines) + + +def format_markdown(report): + """Format markdown pour commentaires GitHub PR.""" + lines = [] + lines.append(f"## 🧪 Test Results — {report['distro']} (`{report['distro_slug']}`)") + lines.append("") + lines.append(f"| Metric | Value |") + lines.append(f"|--------|-------|") + lines.append(f"| Total | {report['total']} |") + lines.append(f"| Passed | {report['passed']} ✅ |") + lines.append(f"| Failed | {report['failed']} ❌ |") + lines.append(f"| Skipped | {report['skipped']} |") + lines.append(f"| Duration | {report['duration_seconds']}s |") + + if report["failures"]: + lines.append("") + lines.append("### ❌ Failures") + lines.append("") + lines.append("| Program | Method | Error | Suggested Command |") + lines.append("|---------|--------|-------|-------------------|") + for f in report["failures"]: + error = f["error_message"].replace("|", "\\|")[:80] + cmd = f.get("attempted_command", "").replace("|", "\\|")[:60] + lines.append( + f"| {f['name']} | {f['install_method']} | {error} | `{cmd}` |" + ) + else: + lines.append("") + lines.append("✅ **All programs passed!**") + + lines.append("") + lines.append(f"_Report generated at {report['timestamp']}_") + return "\n".join(lines) + + +def format_html(report): + """Génère une page HTML autonome avec le rapport.""" + passed_pct = ( + round(report["passed"] / report["total"] * 100, 1) if report["total"] else 0 + ) + bar_color = "#22c55e" if passed_pct > 90 else "#f59e0b" if passed_pct > 70 else "#ef4444" + + failures_html = "" + if report["failures"]: + rows = [] + for f in report["failures"]: + rows.append( + f"" + f"{f['name']}" + f"{f['install_method']}" + f"{f['error_message'][:100]}" + f"{f.get('attempted_command', '')[:80]}" + f"" + ) + failures_html = f""" +

❌ Failures ({len(report['failures'])})

+ + + {"".join(rows)} +
ProgramMethodErrorCommand
+ """ + + return f""" + + + + Test Report — {report['distro']} + + + +

🧪 Test Report — {report['distro']}

+

{report['timestamp']} · {report['distro_slug']} · {report['duration_seconds']}s

+ +
+
{report['total']}
Total
+
{report['passed']}
Passed ✅
+
{report['failed']}
Failed ❌
+
{passed_pct}%
Success rate
+
+ +
+ + {failures_html} + +""" + + +def main(): + parser = argparse.ArgumentParser(description="Formate un rapport de test") + parser.add_argument("report", help="Fichier report.json") + parser.add_argument("--html", action="store_true", help="Génère un fichier HTML") + parser.add_argument("--markdown", action="store_true", help="Format markdown") + parser.add_argument("--output", "-o", help="Fichier de sortie (défaut: stdout)") + args = parser.parse_args() + + report = load_report(args.report) + + if args.markdown: + output = format_markdown(report) + elif args.html: + output = format_html(report) + out_path = args.output or args.report.replace(".json", ".html") + Path(out_path).write_text(output) + print(f"HTML report written to {out_path}") + return + else: + output = format_text(report) + + if args.output: + Path(args.output).write_text(output) + else: + print(output) + + +if __name__ == "__main__": + main() diff --git a/tests/runner.py b/tests/runner.py new file mode 100644 index 0000000..21e0488 --- /dev/null +++ b/tests/runner.py @@ -0,0 +1,316 @@ +""" +Test runner — orchestre le test d'installation pour une distribution. + +Usage: + python runner.py --distro void # Tous les programmes + python runner.py --distro arch --batch 1/5 # 1er lot sur 5 + python runner.py --distro ubuntu --slug neovim,tmux # Programmes spécifiques + +Flow: + 1. Charge la distro + tous les programmes + dépendances + 2. Génère le script via ScriptGenerator + 3. Build l'image Docker + 4. Exécute le script dans le conteneur + 5. Parse la sortie → rapport JSON +""" + +import argparse +import json +import subprocess +import sys +import time +from pathlib import Path + +from script_generator import ScriptGenerator + + +# Racine du projet (où se trouve content/) +PROJECT_ROOT = Path(__file__).resolve().parent.parent + + +def load_json(path): + """Charge un fichier JSON, retourne un dict.""" + with open(path) as f: + return json.load(f) + + +def load_distro(slug): + """Charge la définition d'une distribution.""" + path = PROJECT_ROOT / "content" / "distros" / f"{slug}.json" + if not path.exists(): + raise FileNotFoundError(f"Distro not found: {path}") + return load_json(path) + + +def load_all_programs(): + """Charge tous les programs.json du catalogue.""" + programs = [] + programs_dir = PROJECT_ROOT / "content" / "programs" + for folder in sorted(programs_dir.iterdir()): + if folder.is_dir(): + program_json = folder / "program.json" + if program_json.exists(): + programs.append(load_json(program_json)) + return programs + + +def load_all_dependencies(): + """Charge toutes les dépendances build-time.""" + deps = [] + deps_dir = PROJECT_ROOT / "content" / "dependencies" + if deps_dir.exists(): + for folder in sorted(deps_dir.iterdir()): + if folder.is_dir(): + dep_json = folder / "program.json" + if dep_json.exists(): + deps.append(load_json(dep_json)) + return deps + + +def filter_programs(all_programs, slugs=None, batch=None): + """ + Filtre les programmes par slugs ou par batch. + + Args: + all_programs: Liste complète des programmes + slugs: Liste de slugs spécifiques (optionnel) + batch: Tuple (numéro, total) pour le mode batch (optionnel) + + Returns: + Liste filtrée de programmes + """ + if slugs: + slug_set = set(slugs.split(",")) + return [p for p in all_programs if p["slug"] in slug_set] + + if batch: + batch_num, total = batch + batch_size = len(all_programs) // total + 1 + start = (batch_num - 1) * batch_size + end = start + batch_size + return all_programs[start:end] + + return all_programs + + +def build_docker_image(distro_slug): + """Build l'image Docker pour la distro.""" + dockerfile = PROJECT_ROOT / "tests" / "docker" / f"Dockerfile.{distro_slug}" + tag = f"lsg-test:{distro_slug}" + + print(f"🔨 Building Docker image: {tag}") + result = subprocess.run( + ["docker", "build", "-t", tag, "-f", str(dockerfile), "."], + cwd=PROJECT_ROOT, + capture_output=True, + text=True, + ) + if result.returncode != 0: + print(f"❌ Docker build failed:\n{result.stderr}") + sys.exit(1) + print(f"✅ Image built: {tag}") + return tag + + +def run_test_script(image_tag, script_path): + """Exécute le script de test dans le conteneur Docker.""" + print(f"🚀 Running test in {image_tag}...") + + result = subprocess.run( + [ + "docker", "run", "--rm", + "-v", f"{script_path}:/test_script.sh:ro", + image_tag, + "bash", "/test_script.sh", + ], + cwd=PROJECT_ROOT, + capture_output=True, + text=True, + ) + + return result.stdout + result.stderr, result.returncode + + +def parse_output(output): + """ + Parse la sortie du script pour extraire les succès et échecs. + + Format attendu (généré par le wrapper dans script_generator.py): + ▶️ [nom] Installing... + ✅ [nom] PASSED + ❌ [nom] FAILED (exit code: N) + Command: ... + """ + failures = [] + passed = [] + current_program = None + current_install_type = None + + for line in output.split("\n"): + # Détecter le début d'une installation + if "▶️ " in line and "Installing..." in line: + # Extraire le nom entre crochets + if "[" in line and "]" in line: + current_program = line[line.index("[") + 1 : line.index("]")] + current_install_type = ( + "custom" if "(custom)" in line else "native" + ) + + # Détecter un succès + elif "✅" in line and "PASSED" in line and current_program: + if "[" in line and "]" in line: + name = line[line.index("[") + 1 : line.index("]")] + passed.append(name) + current_program = None + + # Détecter un échec + elif "❌" in line and "FAILED" in line and current_program: + exit_code = "1" + if "exit code:" in line: + exit_code = line.split("exit code:")[1].split(")")[0].strip() + + failure = { + "slug": current_program.lower().replace(" ", "-"), + "name": current_program, + "exit_code": int(exit_code), + "install_method": current_install_type or "unknown", + "error_message": line.strip(), + "attempted_command": "", + } + current_program = None + + # Récupérer la commande qui a échoué (ligne suivante) + elif "Command:" in line and failures: + failures[-1]["attempted_command"] = line.split("Command:")[1].strip() + + return passed, failures + + +def generate_report(distro, all_programs, passed, failures, duration, output_file): + """Génère le rapport JSON.""" + report = { + "distro": distro["name"], + "distro_slug": distro["slug"], + "timestamp": time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime()), + "total": len(all_programs), + "passed": len(passed), + "failed": len(failures), + "skipped": len(all_programs) - len(passed) - len(failures), + "duration_seconds": round(duration, 1), + "failures": failures, + } + + with open(output_file, "w") as f: + json.dump(report, f, indent=2) + + return report + + +def main(): + parser = argparse.ArgumentParser( + description="Test d'installation pour une distribution Linux" + ) + parser.add_argument( + "--distro", required=True, + choices=["alpine", "arch", "debian", "fedora", "opensuse", "ubuntu", "void"], + help="Distribution à tester" + ) + parser.add_argument( + "--batch", + help="Mode batch: 'N/TOTAL' (ex: '1/5' pour le 1er lot sur 5)" + ) + parser.add_argument( + "--slugs", + help="Slugs spécifiques à tester, séparés par des virgules" + ) + parser.add_argument( + "--output", default="report.json", + help="Fichier de sortie du rapport (défaut: report.json)" + ) + parser.add_argument( + "--no-docker", action="store_true", + help="Génère le script sans l'exécuter dans Docker" + ) + args = parser.parse_args() + + # 1. Charger les données + print(f"📦 Loading distro: {args.distro}") + distro = load_distro(args.distro) + + print("📦 Loading programs...") + all_programs = load_all_programs() + print(f" → {len(all_programs)} programs loaded") + + print("📦 Loading dependencies...") + dependencies = load_all_dependencies() + print(f" → {len(dependencies)} dependencies loaded") + + # 2. Filtrer les programmes + batch = None + if args.batch: + try: + num, total = args.batch.split("/") + batch = (int(num), int(total)) + except ValueError: + print("❌ Invalid batch format. Use 'N/TOTAL' (ex: '1/5')") + sys.exit(1) + + programs = filter_programs(all_programs, args.slugs, batch) + print(f"🎯 Testing {len(programs)} programs") + + # 3. Générer le script + print("📝 Generating install script...") + gen = ScriptGenerator( + distro, + programs, + dependencies, + content_root=str(PROJECT_ROOT / "content"), + ) + script = gen.build_script() + + script_path = PROJECT_ROOT / "test_script.sh" + script_path.write_text(script) + script_path.chmod(0o755) + print(f" → Script written to {script_path} ({len(script)} bytes)") + + if args.no_docker: + print("⏭️ Skipping Docker execution (--no-docker)") + print(f" Script: {script_path}") + return + + # 4. Build Docker + image_tag = build_docker_image(args.distro) + + # 5. Run + start_time = time.time() + raw_output, exit_code = run_test_script(str(image_tag), str(script_path)) + duration = time.time() - start_time + + # 6. Parse + passed, failures = parse_output(raw_output) + + # 7. Report + report = generate_report( + distro, programs, passed, failures, duration, args.output + ) + + # 8. Résumé + print(f"\n{'='*60}") + print(f"📊 Results for {distro['name']} ({distro['slug']})") + print(f" Total: {report['total']}") + print(f" Passed: {report['passed']} ✅") + print(f" Failed: {report['failed']} ❌") + print(f" Skipped: {report['skipped']}") + print(f" Duration: {report['duration_seconds']}s") + print(f" Report: {args.output}") + + if failures: + print(f"\n❌ Failures ({len(failures)}):") + for f in failures: + print(f" - {f['name']} ({f['install_method']}): {f['error_message'][:80]}") + + sys.exit(1 if failures else 0) + + +if __name__ == "__main__": + main() diff --git a/tests/script_generator.py b/tests/script_generator.py new file mode 100644 index 0000000..5e55e24 --- /dev/null +++ b/tests/script_generator.py @@ -0,0 +1,243 @@ +""" +Port Python du ScriptGenerator JavaScript (static/js/script-generator.js). + +Même algorithme, même comportement. Utilisé par le test runner pour générer +des scripts d'installation sans passer par le navigateur. + +Usage: + from script_generator import ScriptGenerator + + gen = ScriptGenerator(distro, programs, dependencies) + script = gen.build_script() +""" + +import json +from pathlib import Path + + +class ScriptGenerator: + """ + Génère un script bash d'installation pour une distribution donnée. + + Attributs: + distro (dict): Distribution cible (slug, name, install_package_command) + programs (list): Liste des programmes sélectionnés (format program.json) + dependencies (list): Liste des dépendances build-time (format program.json) + content_root (Path): Racine du dossier content/ pour lire les install.sh + """ + + def __init__(self, distro, programs, dependencies, content_root="content"): + self.distro = distro + self.programs = programs + self.dependencies = dependencies + self.content_root = Path(content_root) + # Pas de sudo dans Docker (root) + self.privilege_escalation = "" + + def _find_item(self, slug): + """ + Cherche un slug dans programs puis dans dependencies. + Retourne (item, folder) ou None. + """ + for prog in self.programs: + if prog.get("slug") == slug: + return prog, "programs" + for dep in self.dependencies: + if dep.get("slug") == slug: + return dep, "dependencies" + return None + + def _retrieve_package_names(self): + """ + Sépare les programmes en deux catégories : + - package_names : installations via package manager natif + - custom_slugs : installations via CUSTOM_INSTALL + """ + package_names = [] + custom_slugs = [] + + for program in self.programs: + names = program.get("package_names", {}) + pkg_name = names.get(self.distro["slug"], names.get("default")) + if pkg_name == "CUSTOM_INSTALL": + custom_slugs.append(program["slug"]) + elif pkg_name: + package_names.append(pkg_name) + + return package_names, custom_slugs + + def _build_package_install_cmd(self, package_names): + """Construit la commande d'installation groupée pour les packages natifs.""" + if not package_names: + return "" + cmd = f"{self.distro['install_package_command']} {' '.join(package_names)}" + if self.privilege_escalation: + cmd = f"{self.privilege_escalation} {cmd}" + return cmd + + def _resolve_dependencies(self, slug, visited, result): + """ + DFS récursif post-order (topological sort). + + Args: + slug: Slug du programme à résoudre + visited: Set partagé des slugs déjà traités + result: dict avec 'order' (list) et 'packages' (list) + """ + if slug in visited: + return + visited.add(slug) + + found = self._find_item(slug) + deps = found[0].get("dependencies", []) if found else [] + + for dep in deps: + dep_found = self._find_item(dep) + + if not dep_found: + # Pas un slug connu → nom de paquet raw + if dep not in result["packages"]: + result["packages"].append(dep) + continue + + pkg_name = ( + dep_found[0].get("package_names", {}).get(self.distro["slug"]) + or dep_found[0].get("package_names", {}).get("default") + ) + + if pkg_name == "CUSTOM_INSTALL": + # Récurse dans la dépendance avant de continuer (post-order) + self._resolve_dependencies(dep, visited, result) + elif pkg_name and pkg_name not in result["packages"]: + result["packages"].append(pkg_name) + + # Post-order : ajouter le slug APRÈS ses dépendances + result["order"].append({ + "slug": slug, + "folder": found[1] if found else "programs", + }) + + def _get_custom_install(self, slug, visited): + """ + Résout les dépendances d'un CUSTOM_INSTALL puis lit son install.sh + depuis le filesystem. Le visited set est partagé entre tous les + CUSTOM_INSTALL pour éviter les doublons. + """ + result = {"order": [], "packages": []} + self._resolve_dependencies(slug, visited, result) + + parts = [] + + if result["packages"]: + for pkg in result["packages"]: + cmd = f"{self.distro['install_package_command']} {pkg}" + if self.privilege_escalation: + cmd = f"{self.privilege_escalation} {cmd}" + parts.append(f'install_native "{pkg}" {cmd}') + + for entry in result["order"]: + s = entry["slug"] + folder = entry["folder"] + install_path = ( + self.content_root / folder / s / "custom_install" / "install.sh" + ) + if install_path.exists(): + content = install_path.read_text() + # Strip shebang and set -e (already in header) + lines = content.strip().split("\n") + clean_lines = [ + l for l in lines + if not l.startswith("#!") and l.strip() != "set -e" + ] + parts.append("\n".join(clean_lines)) + + return "\n".join(p for p in parts if p) + + def _custom_installs(self, custom_slugs): + """ + Itère sur tous les slugs CUSTOM_INSTALL avec un visited set partagé. + Chaque programme est wrappé dans une fonction de logging pour le runner. + """ + visited = set() + parts = [] + + for slug in custom_slugs: + # Trouver le nom du programme pour le log + prog = next((p for p in self.programs if p.get("slug") == slug), None) + name = prog["name"] if prog else slug + + script = self._get_custom_install(slug, visited) + if script: + parts.append(f'echo "▶️ [{name}] Installing..."') + parts.append(script) + parts.append(f'echo "✅ [{name}] PASSED"') + + return "\n".join(parts) + + def _script_header(self): + """Génère le shebang et les helpers de logging.""" + return """#!/bin/bash +# Run all programs, collect all failures (don't stop on first error) +set +e + +# Wrapper de logging pour les packages natifs +install_native() { + local name="$1" + shift + echo "▶️ [$name] Installing..." + if "$@" 2>&1; then + echo "✅ [$name] PASSED" + else + local rc=$? + echo "❌ [$name] FAILED (exit code: $rc)" + echo " Command: $*" + return $rc + fi +} + +# Wrapper de logging pour les scripts custom +install_custom() { + local name="$1" + shift + echo "▶️ [$name] Installing (custom)..." + if bash -c "$*" 2>&1; then + echo "✅ [$name] PASSED" + else + local rc=$? + echo "❌ [$name] FAILED (exit code: $rc)" + return $rc + fi +} +""" + + def build_script(self): + """ + Assemble le script final : header + packages natifs + customs. + + Returns: + str: Le script bash complet + """ + package_names, custom_slugs = self._retrieve_package_names() + + # Packages natifs — installés en groupe, mais loggés individuellement + native_section = "" + if package_names: + # On génère une commande d'install par package pour le logging individuel + native_cmds = [] + for pkg in package_names: + cmd = f"{self.distro['install_package_command']} {pkg}" + if self.privilege_escalation: + cmd = f"{self.privilege_escalation} {cmd}" + native_cmds.append(f'install_native "{pkg}" {cmd}') + native_section = "\n".join(native_cmds) + + # Customs — chaque CUSTOM_INSTALL est déjà wrappé dans _custom_installs() + custom_section = self._custom_installs(custom_slugs) if custom_slugs else "" + + parts = [self._script_header()] + if native_section: + parts.append(f"# === Native packages ({len(package_names)}) ===\n{native_section}") + if custom_section: + parts.append(f"\n# === Custom installs ({len(custom_slugs)}) ===\n{custom_section}") + + return "\n".join(parts) + "\n"