Giter VIP home page Giter VIP logo

hb-appstore's Introduction

Homebrew App Store

GPLv3 License gh actions gitlab ci discord PRs Welcome

The Homebrew App Store is a GUI that can be used to access an online repository of open-source homebrew apps. It's written in SDL2 with Chesto and uses the get package manager to download and manage open-source apps.

Supported Platforms

Web Browsers

A web interface to download files from the Homebrew App Store directly is available at apps.fortheusers.org. Source code: hbas-frontend.

Wii U

The ability to run homebrew apps is required. Download and extract the latest hb-appstore to sd:/wiiu/apps/appstore/, and run "HB App Store" either from the home menu or the Homebrew Launcher.

Switch

Access to the Homebrew Menu is required. Download and extract the latest hb-appstore to sd:/switch/appstore/, and run "HB App Store" from within hbmenu.

Linux, Mac, Windows

Standalone PC executables are available here. These PC clients download and extract files to an sdroot folder relative to the app's path.

In the future, direct support for selecting an SD card different repos is planned.

Wii and 3DS

There are work-in-progress ports to Wii and 3DS, with varying degrees of feature support. These platforms are not yet ready to be used by most users.

Note: The Wii/3DS ports will utilize existing community repos (such as Wii/OSC and 3ds/universal-db).

Configuration

Custom Music

Place a mp3 file named background.mp3 in one of the following locations:

  • PC: ./background.mp3 (in the current directory)
  • Wii U: sd:/wiiu/apps/appstore/background.mp3
  • Switch: sd:/switch/appstore/background.mp3

Submitting an App

See hb-app.store/submit-or-request for App Store guidelines and instructions on how to submit or request homebrew apps for to the main repositories.

Maintaining a repo

See get's instructions for setting up a repository. All repo JSON data and package zips are designed to be statically hosted as files, with no explicit backend logic.

For more information on the API and self-hosting, see: hb-app.store/api-info

Compiling

This program is written using Chesto and has dependencies on libcurl, libget, and zlib. The chesto and libget libraries are included in this repo as submodules.

Pre-compiled builds off the main branch can be downloaded here without signing in.

Instructions

Detailed build instructions for specific platforms can be found in Compiling.md.

In general, clone the repository recursively (with git clone --recursive) and run make, after installing the required platform dependencies.

License

This software is licensed under the GPLv3.

Credits

For an up-to-date list of repo maintainers, app authors, and special thanks, see hb-app.store/about!

Contributing

If you have some functionality that you'd like to see feel free to discuss it on an issues page, or if you already have an implementation or desire that you'd like to see, please send in a pull request!

hb-appstore's People

Contributors

annsanns avatar compsciorbust avatar compucat avatar crc-32 avatar gewoonleonyt avatar helafaye avatar jacquescedric avatar maschell avatar monkeywithacupcake avatar rw-r-r-0644 avatar sskyns avatar thatnerdypikachu avatar vgmoose avatar whovian9369 avatar xortroll avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hb-appstore's Issues

Cant download apps

I started the homebrew channel 1.4 via Browser and opened the Homebrew Appstore and tried to download Mocha CFW SD by dimok. A white bar, comes up and starts filling up with blue, after the bar is completely filled it throws me back to the Homebrew Appstore
Please help

Add network api

I'd like for there to be a way to schedule package installs and get a list of installed packages and their version over either a usb or network api on the Switch so that third-party apps can ensure consistent compatible installations, this would enable other tools to automate package updates, configure presets, etc.

Wii support?

I was wondering if there is a Wii version of the HB App Store in the works, or if it in the pipeline at all. It would be nice to have something that could replace the archaic Homebrew Browser (or even the Open Shop Channel project that is based on it).

I'm asking because I'm a moderator on r/WiiHacks, and if one is released we can help feature it to get the news out about it.

Download and extract packages in a separate thread + installation queue

Upon initiating a download for a package, the download/extraction progress status and bar should appear in a bar along the bottom, and allow the store to continue to be used to queue up more packages to be added to the bottom bar. Would also need #24 to be done properly (should display 1/2 Downloading, 2/2 Extracting)

Crashes while installing certain packages

Some packages seem to crash upon install--

For me, hbmenu, fruity, and libtransistor-examples seemed to all crash after the downloading screen. On a second run, appstore thinks they're installed but the .nros are nowhere to be found on my system.

When compiled for PC, even with the -DNOCURL flag, this crash does not occur. This leads me to believe that it has to do with the existing structure on the SD card.

FW 9.0 Compatibility

Please, update the app with FW 9.0 compatibility so we can use the buttons of the controller.

Apps with lots of files are sloooow to install

For example, downloading Pynx's zip from the server works, but when it tries to install it takes about 3-5 minutes on the switch to extract all of the files to the SD card.

I don't think that this is a limitation of the switch, something in the zip extraction / manifest parsing code may be at fault. Pynx is also the only app that seems to have such a dramatic slowdown (it has 1417 files to extract to different folders).

This issue is twofold:

  1. The extraction/installation time of creating the folders and copying those files should be cut down, if possible
  2. A progress bar should be shown specifically for installing, rather than just downloading

For (2), the number of lines in the manifest file can be counted to get the total number of files, and then the progress bar can be updated using the callback in a similar fashion to how downloading does it.

EDIT: HCL-switch also has this issue, it has 658 files

Support for nightlies e.g. RetroArch

Is your feature request related to a problem? Please describe.
I'm always frustrated when there is afix in the nightlies of retroarch and i have to manually install them.

Describe the solution you'd like
The option to opt-in to the latest nightly build

Platform:
For the Switch

Wii U | App not popping up on homebrew.

Describe the bug
when i try to load up homebrew with it in the apps folder, it doesnt show up.

Platform:
Wii U

To Reproduce
What I have done was,
i made a folder name "appstore" in the apps folder of the sd card.
i put all of the files into the folder.
and i put my sd card in
and then i loaded homebrew, and it wasnt there please fix this!

Custom Source

Is your feature request related to a problem? Please describe.
No

Describe the solution you'd like
Please add the possibility to add custom source (like GDrive, DropBox, etc).
Example: I add a .nro file on GDrive, I add the GDrive link on HB AppStore and it easily install the nro

Platform:
Nintendo Switch - WiiU

Install guide?

Are you able to install this like Hombrew Menu? If no what is the proper way to install this? Or can you point me in the right direction. And what firmware is this compatible with? Thanks in advance.

Outdated apps can't be removed

When opening the details for an app that is outdated, HBAS shows "(A) Update)" and "(B) Cancel", but nothing to remove it. Removing an outdated app should be an option.

Tested on Wii U version launched from HBL.

Add search UI

get now has support for searching-- this functionality should be reflected in the UI.

Checkpoint has a nice keyboard for switch and is also GPLv3, which may be a good candidate.

Cannot compile Wii U version: Packages not found

I downloaded the devkitPro devkitpro-pacman.deb and installed it with dpkg -i devkitpro-pacman.deb.

ubuntu@ubuntu:/opt/devkitpro/pacman/bin$ sudo ./pacman -S wut-linux wiiu-sdl2 devkitPPC wiiu-libromfs wiiu-sdl2_gfx wiiu-sdl2_image wiiu-sdl2_ttf wiiu-sdl2_mixer ppc-zlib ppc-bzip2 ppc-freetype ppc-libpng ppc-mpg123 wiiu-curl-headers ppc-pkg-config wiiu-pkg-config
error: target not found: wut-linux
error: target not found: wiiu-sdl2
warning: devkitPPC-r35-1 is up to date -- reinstalling
error: target not found: wiiu-libromfs
error: target not found: wiiu-sdl2_gfx
error: target not found: wiiu-sdl2_image
error: target not found: wiiu-sdl2_ttf
error: target not found: wiiu-sdl2_mixer
error: target not found: wiiu-curl-headers
warning: wiiu-pkg-config-0.28-2 is up to date -- reinstalling

Can't Control Appstore

My controllers and touchscreen work fine, but they stop working when I am in the Appstore. The only thing I can do is press A to download the default selected item, or hit the Home button. Please help!

Remove instances of manual manifest parsing

There are a few occasions now where hb-appstore consults libget's store of manifests files to go through the files and perform some checks. It would be better if libget had something like a Manifest object and a way to retrieve a list of all files, with a certain status, matching a certain regex.

One instance of this is theme installing, where we need to fetch all paths of `.nxtheme files from the installed manifest.

Do something about long initial load

The initial load takes a while because it has to fetch all icon/banner images for every app, and as more apps are added to the store this load becomes slower and slower.

Some possible solutions:

  • try to download images in parallel instead of sequentially
  • download a zip of all the images if a significant portion of the images are missing (would need #24 and #5 fixed though)
  • download images "on demand" when they are viewed in the list/detailes view instead of during the first load (and in another thread)
  • "just" have networking in general faster be faster on the switch (pretty sure homebrew network speed isn't as fast as nintendo's speeds, but have no proof to back up this claim)

As of 2.0, it does re-use the http socket, which has helped a bit, but it's still too slow for the first load

Crash!

My Wii U (Running 5.5.3) crashes when I try to update HBA
IMG_0698

Recovery mode

the old "console" GUI has a lot less moving parts than the new GUI and would make for a nice recovery mode. Currently this code is completely separate in the console directory, but should be integrated to run when holding a certain key sequence, or a crash is detected.

We can detect crash animal crossing style, by writing a file when the app launches and removing it when the app exits. If this file already exists at launch (meaning wasn't cleaned up properly), we can display a recovery prompt a la mr. resetti.

This recovery mode might also want to include an even lower-check before the GUI even initializes that directly downloads an appstore binary from a URL, just in case even the GUI is borked.

Image of the older console mode:
image

Repo selector

There should be a way to manage the repos.json file from within the GUI, including editing existing repos, adding new ones, and adjusting the order/prority.

Related issues:
#11 - search GUI (for keyboard)
fortheusers/libget#7 - proper merging of multiple remotes

Help needed: How to add my own repo?

Many thanks for the appstore. I read the documentation of appstore and libget several times, but where do I find repos.json to include my own repo?

Hint files for uninstalled packages that might already be installed

If a user already has a package installed (like they already have /hbmenu.nro on their switch, or /switch/someotherapp.nro), then it's possible to guess whether or not the package is installed based on the presence and contents of that file.

This could be done by populating the info.jsons for each package with a hint_file path and a hint_file_hash field. If the hint file exists, but doesn't match the known hash, then it can be presented as "update available"

This wouldn't catch every case, but should be more useful for the user than ignoring potentially installed packages altogether

Better indicator when offline

While offline, the progress bar just never loads on the loading screen. Ideally this would display a message instructing the user to connect to the internet.

Additionally. if it disconnects while at the app listing screen, the Download button just dismisses the popup. A similar check should be placed there.

Update credits/about screen

This screen should be thanking a lot more people about more specific things, so this issue is to track making that view scrollable and adding a small blurb about why people are being credited as well as possibly buttons/links out where to find them around the Internet.

[Switch] Download count on packages is always zero

This has been going for some months: before that I used to see non-zero download counts when I selected a package I wanted to download. But now for every homebrew app, the download count shown is zero

Sometimes crashes on "Adjust Sort" button

If you spam the "Adjust Sort" button (on any platform– PC, Switch, or Wii U) it will eventually crash.

It stops at the following line with a segfault: https://github.com/vgmoose/hb-appstore/blob/master/gui/Element.cpp#L20 (at x=0)

In the debugger, this->elements[x] is not NULL (so it makes sense that it makes it through the above if condition, and probably isn't a race condition), but it still appears to be erroring when trying to invoke process.

It's also worth noting that every time the "Adjust Sort" button is pressed, about 0.2 MB of memory leaks, so some other assumption when sorting is probably also bugged.

Loading stuck, cache fail

When loading the appstore-nx on switch 5.0.2 (AppStore 1.0.0). It gets stuck on the loading.
Deleting the tmp directory made the appstore work again, but before I backed-up the offending cache.

Please find the backup here:
https://ufile.io/neck6

Hopefully you can use this to re-create the issue.

I've also been having issues downloading/booting apps on the appstore, where the app fails to boot. But when when I download via the website on Chrome and unpack manually to the device the app works.

Perhaps it might be my dodgy SD card too.

Key repeat fires too quickly for gamepad controls

If a button is held for too long after pushing it, it will fire more than once. I tried to swap this out for a keyup event, but the same problem continues. On the PC version it can be resolved by setting the event.key.keysym.sym to another symbol but that doesn't work on Switch.

It could also have to do with the SDL1.2 port, and might be resolved when transitioning to SDL2

[WII U] WIIMote support

WiiMote support for Wii U was in earlier versions of app store so why it isn't there now?

[switch repo] Large packages like Retroarch take a few days before update is available

For the Switch NRO: The issue I am having is that sometimes updates for apps such as Atmosphere and Retroarch take too long to be reported. I will wait a couple days after a new release of Atmosphere, and see that the Homebrew Apps Store has yet to report on it... so I will update manually. Then after another couple days, the Homebrew App Store will tell me that I need to update it even though I am at the current version.

The most frustrating example I have is the most recent. Retroach was updated to 1.8.6. Then it was updated to 1.8.7. Even after 1.8.7 had been released for a few days, there was no change in the HB App store. So I went ahead and updated manually. So, when I open the app store, now it tells me that I need to update to 1.8.6 when I am already sitting on 1.8.7. The idea of updating would be so useful through the App Store if it weren't so counterproductive. I have to remember what versions I have and check it off manually, and as much as I would like to have an App like this, it seems like it is more work keeping track of what it falls short in doing.

Hb App store Wii U | Cant enter app

downlaoded it and put it in to the right folders.
wiiu - apps - appstore
i put it at the root of the sd card.
when i enter homebrew it shows like its there, but when i enter it, gives me 2 sec of black screen and then just goes back to the hb menu

Scan for Existing HB Apps

Is your feature request related to a problem? Please describe.
When launching HB Appstore it does not scan the directory or sdcard to see if there's any pre-existing homebrew apps, like if you download a HB bundle such as Kosmos etc.

Describe the solution you'd like
A clear and concise description of what you want to happen. --- when you launch HB Appstore it should scan the director for any pre-existing homebrew applications

Platform:
Is this for the Switch, Wii U, or both versions? Both I guess...

Cant install apps

Hey, whenever I try to install and app it says its installing but it never installs and still shows the download icon and never shows up in a homebrew launcher. Does anyone know why this is happening? My write lock is not enabled on my sd card

Error while compiling

I am trying to compile the app store and get always the error

/opt/devkitpro/libnx/include/switch/services/audren.h: In function 'constexpr size_t audrenGetOutputParamSize(const AudioRendererConfig*)':
/opt/devkitpro/libnx/include/switch/services/audren.h:318:1: error: body of 'constexpr' function 'constexpr size_t audrenGetOutputParamSize(const AudioRendererConfig*)' not a return-statement

I am new with libnx 🙈

Add GUI

Concept screens by Roman!

update1
main
popup1

installed apps not opening

when I download and install apps and then try to open them I will be returned to the hb launcher instead of the chosen application.

Wii U version (5.5.4 EU)

[wiiu] can't exit with home button

On PC and Wii U, the +/start/enter button can be used to exit the app, but on switch this is ignored, as if the button never fires. It could be a misalignment between the SDL2 gamepad controls between Switch and Wii U.

If it's really just the start button behavior is different, maybe it should be moved to a different button

[switch] Can crash while downloading some apps

Some users are reporting crashing while downloading "large-ish" packages, like Retroarch (20MB). I haven't been able to reproduce it at that scale, but I do crash trying to download DDLC (200MB).

Both issues might stem from the fact that while downloading, everything is written to RAM and only writes to disk after the download is done, causing out of memory errors if there isn't enough free memory available (which may change from setup to setup, such as which cfw, system version, or the way the app store is launched (NSP or otherwise)).

It would be nice to workaround this in a way that doesn't make us have to wait for SD card I/O (which tends to be slow-ish). Potentially detecting free memory available in the curl write callback, and if it's running low, write everything so far to disk and free memory before continuing.

hbas.elf not loading in hbl1.4

Package:
Which app or package on the Store is giving you trouble?

Describe the problem
A clear and concise description of what the problem is.

Platform:
Is this for the Switch, Wii U, or both versions?

Crashing when downloading hb

Describe the bug
HB Appstore crashes when downloading homebrew

Platform:
Nintendo Switch
Latest AMS & Hekate
EmuMMC

To Reproduce
1.Use FW 9.0.1 EmuMMC
2.Use Latest AMS & Hekate
3.Launch HB Appstore via Applet mode(I don't have any games on system to launch other way)
4.Attempt to download a homebrew(In my case NXThemes)

AMS Error: 2168-0002(0x4a8)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.