nitrux / nx-software-center Goto Github PK
View Code? Open in Web Editor NEWNX Software Center. A GUI to install and manage AppImages.
License: GNU Lesser General Public License v3.0
NX Software Center. A GUI to install and manage AppImages.
License: GNU Lesser General Public License v3.0
Allow to configure the following features:
Show snaps details in an independent view. The following details will be show:
Unlike Snaps, Appimages don't require setting up a store [1], so by supporting this format the software center would just have to keep track of what Appimages are "installed" for instance: Using an XML formatted list.
Installing/Uninstalling meaning that the user moves files to/out of a common location for example: ~/.local/share/appimages or /usr/share/appimages (note these aren't xdg paths just an example).
In this sense managing Appimages would be like sideloading an APK on an Android device.
1.(We can't set up an "official" Snap store of our own because the server code to create it is proprietary so we have to rely on Ubuntu to provide an official store).
Log:
usr@LINUX:~$ git clone https://github.com/Nitrux/nx-software-center.git
Cloning into 'nx-software-center'...
remote: Enumerating objects: 6, done.
remote: Counting objects: 100% (6/6), done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 3573 (delta 1), reused 3 (delta 1), pack-reused 3567
Receiving objects: 100% (3573/3573), 21.58 MiB | 8.14 MiB/s, done.
Resolving deltas: 100% (2559/2559), done.
usr@LINUX:~$ mkdir build
usr@LINUX:~$ cd build
usr@LINUX:~/build$ cmake ../nx-software-center -DCMAKE_BUILD_PREFIX=Release -DCMAKE_INSTALL_PREFIX=/usr
-- The C compiler identification is GNU 6.3.0
-- The CXX compiler identification is GNU 6.3.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at CMakeLists.txt:21 (find_package):
Could not find a package configuration file provided by "ECM" (requested
version 0.0.11) with any of the following names:
ECMConfig.cmake
ecm-config.cmake
Add the installation prefix of "ECM" to CMAKE_PREFIX_PATH or set "ECM_DIR"
to a directory containing one of the above files. If "ECM" provides a
separate development package or SDK, be sure it has been installed.
-- Configuring incomplete, errors occurred!
See also "/home/usr/build/CMakeFiles/CMakeOutput.log".
usr@LINUX:~/build$ make
make: *** No targets specified and no makefile found. Stop.
usr@LINUX:~/build$ sudo make
make: *** No targets specified and no makefile found. Stop.
usr@LINUX:~/build$
When an internet connection is unavailable, the user should be notified. ATM, when a connection is unavailable, a spinner turns endless, but no error is displayed.
Feature: Version/Port that only shows/lists libre software.
Why? Mainly for hard core free software fans as well as distros like Trisquel.
Many people trust package managers to install software that is fully free'd and won't violate privacy.
Want to support this issue? Post a bounty on it! We accept bounties via BountySource.
Allow to explore the store contents by departments.
From opendesktop.org
OCS-Install
To install items via the "Install" button, you can either use OCS-URL (see below) or the OCS-Store:https://www.linux-apps.com/p/1175480/.
OCS-Store works out-of-the-box with OCS, so clicking on any "OCS-Install" button will download, extracts and copy a file or archive to the appropriate theme location of most well-known Linux Distros and Desktop Environments.
OCS-URL - Browser Protocol Extension
OCS-URL allows easy distro-independent installation of themes, wallpapers, etc. under most desktop environments by simply clicking on the "Install" button. (Note: You can use the Opendesktop.org-App if you don't want to install this extra).Video Installation Guide
Here is a video how to install ocs-url program: https://www.youtube.com/watch?v=R2qgkPrHutEInstallation Guide
To install ocs-url program, get the package from here: https://www.linux-apps.com/p/1136805/After ocs-url program is installed, you can click any "Install" button on openDesktop.org. Only supported filetypes have an "Install" button.
Browser Setup
If you use Firefox, a program selection window opens the first time you click on an Install button: Choose "ocs-url" as custom URL handler and tick "remember the file association".If you don't get the program selection window or you are using another browser, please set the ocs-url program as custom URL handler for ocs:// scheme in the browser's settings.
=====
ocs-url
https://github.com/opendesktop/ocs-url
An install helper program for items served on OpenCollaborationServices (OCS).
====
The case being that this is used to install AppImages, so when the user browses the OpenDesktop web store the download is done using the software center.
Show a slug with the best ranked snaps.
Removing Nomad from the window title makes it more agnostic.
The latest AppImage exits with segfault when the details view is opened.
Feature: Create .deb package for easy install for apt
supported OSes.
Port the UI from using Plasma components to Kirigami ones and use the Nomad HIG
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
I expect that exception handling is usually supported by a C++ program. I wonder why your function “main” does not contain corresponding try and catch instructions so far.
How do you think about recommendations by Matthew Wilson in an article?
Would you like to adjust the implementation if you consider effects for uncaught/unhandled exceptions?
Provide an space at the bottom of the window to show:
https://github.com/ximion/appstream
https://www.freedesktop.org/software/appstream/docs/
What I dont understand:
Is there already a centralized place where appstream information is submitted and stored?
As it mentiones such a thing here: https://en.wikipedia.org/wiki/AppStream
"...which aims at creating an unified software metadata database, and also a centralized [...] user-contributed content database".
Currently to perform system updates users have to use Konsole, while it isn't rocket science it'd be understandable that users wouldn't want to use it so since we have a software center it should handle system updates.
the software center must deploy the appimage desktop and icon files into the system instead of the appimaged
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
As discussed in #12 the $HOME/bin doesn´t mean anithing to a non linux user so we instead should use $HOME/Applications as default storage dir for newly downloaded appimages.
Error FODC0002 in https://www.appimagehub.com/ocs/v1/content/data?package_types=1&page=0: Error creating SSL context ()
Error XPDY0002 in file:///tmp/.mount_softwa2finJs/usr/bin/nx_software_center, at line 1, column 1: The focus is undefined.
This causes the application to say "Unable to fetch applications list, please check your internet connection"
Depending on plasma qml components is being a drawback for the portability of our Appimage.
In order to achieve a major compatibility whit older systems we must build the appimage in a very old system. But the latest kde plasma binaries are not available in such systems.
As the usage of those components is limited to the UI and there are native replacements for them we can replace them cleanly.
As drawback we will lose the chameleonic behavior on plasma based desktops.
@UriHerrera Any toughs on this ?
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
When a task is started, completed or failed show an small dialog a the top center of the application with the tasks description as text.
Currently the nx-software-center fetch the whole applications listings at the start of the application which is too slow (varies depending on the internet connection) because in the case of the AppImages coming from https://appimage.github.io/ there are no direct download links but the link to the official developer download page (most of cases github releases) so we must scrap those pages also.
Luckily this doesn't happen with https://www.appimagehub.com/ for two reasons because the download links are included and because the listing are still small.
I'm considering the following options to reduce the download times:
Create a cache and do the cache updates in the background. It will only take longer the first time the app is opened, but all the listings will be fetched every time. Once the listings grow (as big as the current Debian or Ubuntu repositories) they will consume more then 50mb the equivalent of downloading a whole AppImage file.
Only fetch the "featured" applications and the ones matching the user queries. This method implies making an HTTP request every time the user introduces a new query but as the response will be small (no more than 30 apps or ~3KiB) it will be fast even in slow connections. This method will require a dynamic response from listings servers which is not currently supported by https://appimage.github.io/.
I prefer option two because it scales better when the number of AppImages available grows. But the static design of appimage.github.io is a limitation. As an alternative I was considering to create a new web service to store and provide an unified listing from both sources.
But I before doing anything I would like to hear your thoughts about it @probonopd @star-buck
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
This is the redesign of the NX Software Center. Last month we made the decision to remove support for Snaps from the software center which meant that the UI that was in use was scrapped. This presented an opportunity to redesign the software center.
Here are the UI mockups:
This is where the user manages the AppImages that are present ("installed") in the system. On the left pane there's a list of categories where AppImages are organized. Selecting each category filters the AppImages that match the criteria. To the right of the category label there's a counter that lists how many AppImages fall under that category. And below that there's a dropdown that sorts AppImages by: Size, Date of installation and Name.
1- This is what the user would see when there are no AppImages present ("installed") in the system. At the top there's a message box notifying the user that no AppImages were found.
2- This is what the user would see after downloading some AppImages but not using any category filter. The software center would default to display all AppImages.
3- This is how the filtering of the AppImages works. Only the AppImages that correspond to the "Development" category are visible with other AppImages hidden from the view.
4- This detailed view is what the user would see upon clicking on an AppImage that is present ("installed") in the system. At the top there's a non-interactive breadcrumb-like navigation title, a banner (that pulls an image related to the software from Google) with an overlay the same color as the window background at 90% opacity, the icon (pulled from the system-wide icon theme), the real name of the app and the developer. Below a button to "remove" the AppImage or "open/run" the AppImage. If it's not possible to fetch the developer name/handle use the source from where the AppImage was downloaded from as a replacement. Below is the information of the software providing: website URL, version and size and finally the software description (pulled from Wikipedia if available otherwise pulled from the AppImage source or the AppImage description). Next to this a carousel gallery with images pulled from Google. And at the bottom-left of the window a "go back" button to return to the previous view, whether that's the Search or the category listing.
This is where the user searches for new and /or existing AppImages. Search is global, results appear from local and/or available AppImages from the selected source.
1- This is what the user would see when no results are found.
2- This is what the user would see when the search returns a result but the are no AppImages present ("installed") in the system that match the criteria.
3- This is what the user would see when the search returns a result and there are AppImages present ("installed") in the system that match the criteria.
4- Clicking on an AppImage from the search results would take the user to a different detailed view depending on whether the AppImage is present ("installed") in the system or not.
The main Store component.
1- This is what the user would see as the main Store. At the top is a banner that features a randomized carousel of 5 applications (that pulls an image related to the software from Google), the icon (pulled from the system-wide icon theme), the real name of the app and version with a "Get it now!" call-to-action message. Clicking this banner would take the user to the AppImage detailed view. Below are the categories as made available by the selected source from where the software center is fetching the AppImages. Below this are AppImages that are listed as "Popular", these are AppImages with the larger download numbers in descending order. And below are "New" AppImages which are AppImages that were recently added to the source from where the software centers is fetching the AppImages.
2- This detailed view is what the user would see upon clicking on an AppImage that isn't present ("installed") in the system. At the top there's a non-interactive breadcrumb-like navigation title, a banner (that pulls an image related to the software from Google) with an overlay the same color as the window background at 90% opacity, the icon (pulled from the system-wide icon theme), the real name of the app and the developer. Below a button to "download" the AppImage. If it's not possible to fetch the developer name/handle use the source from where the AppImage was downloaded from as a replacement. Below is the information of the software providing: website URL, version and size and finally the software description (pulled from Wikipedia if available otherwise pulled from the AppImage source or the AppImage description). Next to this a carousel gallery with images pulled from Google. And at the bottom-left of the window a "go back" button to return to the previous view, whether that's the main Store or the category listing.
3- This is what the user would see when clicking on a category from the main Store and no AppImages are present ("installed") in the system. AppImages are not displayed in any particular order.
4- This is what the user would see when clicking on a category from the main Store and AppImages are present ("installed") in the system and the apps come match the Store category.
5- This is what the user would see as the main Store if the selected source doesn't provide AppImages that match the criteria of the categories, in other words if the source from where the software center is fetching the AppImages doesn't have files under the category "Development" the category is greyed-out and can't be clicked. Below this are AppImages that are listed as "Popular", these are AppImages with the larger download numbers in descending order. And below are "New" AppImages which are AppImages that were recently added to the source from where the software centers is fetching the AppImages.
6- This is what the user would see when clicking on "New" or "Popular" and there are not apps present ("installed") in the system.
7- This is what the user would see when clicking on "New" or "Popular" and there are apps present ("installed") in the system.
This is where the AppImages are added to be downloaded by the user. Clicking download from the Store adds the AppImage to this list and are downloaded.
1- This is what the user would see after adding AppImages to the queue. The list displays the file name, download size, version and progress. At the bottom a status bar tells the user the status of the download and at the rightmost side of the window there's a button to initiate the download, this button changes from "Download" to "Downloading" once the user starts the process. The process would trigger a notification that it's begun downloading the file(s).
2- This what the user would see if the download presents a problem. The software center would be displaying an error message. In this case the button changes to "Retry" to restart the download process. An unsuccessful download would trigger a notification.
3- This is what the user would see once the download was successful. The button changes from "Downloading" to "Clear" to clear up the list. A successful download would trigger a notification.
The settings of the software center.
1- This is what the user would see when clicking the settings button. The settings list is minimal: First is the option to choose what source does the software center uses to fetch AppImages. AppImage Hub is set by default and opendesktop.org is available as an option. Additionally the user could type a specific URL if there are other AppImage sources available. Below that the is option to set a proxy. And then is the option to specify where the AppImages are downloaded to.
appimaged
supports is an alternative. The drop down could also replace both the radio button and the text edit.===
I don't know why imgur keeps deleting the previews so here's the album where they are: https://imgur.com/a/Ltfkd
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
The code that is in this repository makes use of Plasma UI components to draw the interface of the application. At the time, this was the right solution as it provided an easy way to integrate the program with the system.
MauiKit now exists, and with it, we can create a new program that works in the desktop and mobile.
The Software Center was initially conceived to serve Snap applications and consequently AppImages. AppImages weren't downloaded from a central repository, but the user managed them with the SC merely listing them. Additionally, the SC was not designed to handle system updates.
Eventually, it was observed that linuxapps.com provided an API that we could use to serve Appimages from a central source, and as such, this was used as the backend of the SC.
linuxapps.com was deprecated, and its lack of AppImages was a problem, we figured that we needed a way to obtain AppImages directly from their GitHub release pages as this was a more straightforward and more accessible way always to have the latest available.
AppImagehub.com provided a new central repository for AppImage files and a revised API by openDesktop that offers more modern functionality too. Therefore, in this redesign, it's proposed to make use of it.
The way that these new design works are made to be simple — both in how the user interacts with it and how the program delivers the requests to the user.
The following issues already cover many of the core concepts, to not go all over them again; I'll refer them here.
The redesign of the SC also takes into account more than just Software, for instance, artwork such as themes, wallpapers, and icons. Ergo, the SC can be viewed as more of a Content storefront than just a software manager.
/home/$USER/Applications
. The SC can perform the queries to the site by using AppImage CLI Tool as its backend instead of building this feature in the main program.~/.themes/
" For GTK2 | GTK3 themes."~/.icons/
"Icon themes."~/.local/share/color-schemes/
"Color-schemes."~/.local/share/icons/
"Icon themes."~/.local/share/plasma/desktoptheme/
"Plasma themes."~/.local/share/plasma/plasmoids/
"Plasmoids."~/.local/share/aurorae/themes/
"Aurorae window decorations."~/.local/share/kwin/effects/
"KWin effects."~/.local/share/kwin/scripts/
"KWin scripts."~/.icons/
"Cursor themes."The workflow is the following:
The user clicks the SC icon on the application menu.
The user is shown the SC window, by default the "Store" view is displayed.
Switching to the "Apps" view allows the user to see the AppImages that are currently in the system.
Pressing the queue button takes the user to the "Queue" view.
.
Clicking the hamburger menu displays the "Account" menu. This menu allows the user to manage the addition or deletion of accounts, the settings of the program, and an about dialog — See fig.2.
Available AppImages are ordered in categories — See fig.2 and 3.
Clicking on the content icon (application or artwork) displays more information about the item, we'll call this view "Item" view — See fig.2 and 3.
#fafafa
with 70% opacity.As mentioned at the beginning, the SC will serve as the main GUI for znx. We're currently using znx-gui for this purpose, which while it works, it's not particularly informative and gives the impression that znx is a complicated tool to utilize, which it isn't.
The functions of znx can be displayed in one unified view which denotes the simplicity of the program, and the workflow is the following:
For znx to start using a device, it must initialize it — See fig.17.
To deploy a new image, the user will click the button labeled "Deploy" which will open a file dialog, after selecting the image the user will proceed to input a name in a window similar to this.
The deployed images are listed in the same other content is listed in the SC window — See fig.19 and 20.
In the same fashion that AppimageUpdate, appimaged, and AppImage CLI Tool provide the necessary functionality, znx offers all the required functions which the SC only needs to call.
The mobile iteration works the same way, with the difference that the sidebar is always in compact mode. — See fig.21 and 22.
Nitrux Desktop Store, a digital distribution platform for computer software.
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
I'm opening this ticket to open a discussion that helps improve the software center UI and UX design :)
cc @nomad-desktop/ui-team
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
The software center is not displaying applications and simply shows a no applications were found message.
I have confirmed this bug is also present in the live session so it might not be a problem with the software center itself.
Running it from the terminal only outputs this:
uri@600t:~$ nomad_software_center
Both point size and pixel size set. Using pixel size.
Both point size and pixel size set. Using pixel size.
uri@600t:~$
The v2.1.2 AppImage seems to be a little broken.
mark@Ares-Linux ~/Applications % ./NX\ Software\ Center-2.1.2.AppImage
/tmp/.mount_NX Sofy1AHDX/AppRun: line 5: /tmp/.mount_NX: No such file or directory
If there are more than 2 revisions of a Snap installed show them so the user can manage them from the GUI. in other words, a nicer way to show the output of snap list --all
.
Fedora 26
Currently the icon used for the tasks view toolbar button is appimage-store
however this icon is meant to be used for the Store component which currently is not ready yet. The correct icon to use for the tasks view where the download indicator and the download history are should be document-download
.
https://github.com/Nitrux/nx-software-center/releases is very outdated. It would be nice to have the latest continuous builds of the AppImage there. Check out linuxdeployqt or https://github.com/linuxdeploy/linuxdeploy-plugin-qt
Since Snappy and AppImage are distribution-agnostic, it would probably be possible to make nx-software-center run on various distributions, hence increasing its reach significantly, especially in the testing stage.
Please consider to provide nx-software-center as an AppImage, so that people without nxos can try it out. It should be pretty straightforward to do by using https://github.com/probonopd/linuxdeployqt with Travis CI as shown in the examples on https://github.com/probonopd/linuxdeployqt#projects-using-linuxdeployqt.
Providing an AppImage would have, among others, these advantages:
appimaged
Here is an overview of projects that are already distributing upstream-provided, official AppImages.
I noticed a rather long startup time - probably because you are currently getting a lot of details (e.g., version numbers) upfront. Maybe it would be sufficient to grab version numbers when the user enters the product detail page to minimize network accesses and speed up the initial launch.
@UriHerrera any thoughts ?
It's still a work in progress
So for the software center we have the following:
The 4 views are:
Download progress indicator is missing.
It used to be there:
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
These look sooo much better ;-)
So one could display the icons from the thumbnailer... after the AppImage has been downloaded. Would also give a immediate visual distinction between apps that still need to be downloaded and those that are already downloaded.
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
Esto es en una instalación nueva, lo único agregado al sistema es un archivo rtl8723be.conf en /etc/modprobe.d/
para aumentar la potencia de señal wifi.
posterior a eso quise actualizar el sistema o instalar paquetes adicionales desde el centro de software y me encontré con esto.
Dejo la salida de la terminal y unas capturas.
richardl@nitlap:~$ nx_software_center
Both point size and pixel size set. Using pixel size.
Error FODC0002 in https://www.appimagehub.com/ocs/v1/content/data?package_types=1&page=0: Error transferring https://www.appimagehub.com/ocs/v1/content/data?package_types=1&page=0 - server replied: Forbidden
Error XPDY0002 in file:///usr/bin/nx_software_center, at line 1, column 1: The focus is undefined.
Parser error: "Download Error"
I'd appreciate if there was a "Run" button (at least directly following the installation) - should be very easy to do. I assume most people want to run the app they just installed immediately.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.