Copyright (c) 2021-2023, K9spud LLC
This is an application for browsing your local Portage repository files. Easily manage your system's applications from a point and click user interface rather than typing out long command lines for installing, uninstalling, and upgrading apps.
With even more optimization, Reload Database
should be slightly faster.
Because database reloads are fairly fast now, there doesn't seem to be a whole lot of reason to do a 'soft reload' when the user presses the Reload button while viewing an app in the browser. Changed the Reload button so it does a "hard reload" regardless of whether CTRL or SHIFT was pressed.
Fixed a bug where the backend process tried deferencing a nullptr when
passed a -reload
command line option. This probably prevented
'hard reload' from working since v1.1.52, when the backend process
was implemented.
If you like this program, help us reach more people by clicking the button at the top of this Github page. It costs nothing and it helps App Swipe get listed higher up in Github search results when people are looking for this sort of thing.
There is an ebuild for App Swipe in my k9spud-overlay. Alternatively, there is an App Swipe ebuild in the Project GURU repository, although theirs may lag behind since I don't personally maintain their ebuild.
To add the k9spud-overlay to your system, do the following:
sudo su -
cd /var/db/repos
git clone https://www.github.com/k9spud/k9spud-overlay.git k9spud
nano -w /etc/portage/repos.conf/k9spud-overlay.conf
Insert the following text into the k9spud-overlay.conf file:
[k9spud]
location = /var/db/repos/k9spud
sync-type = git
sync-uri = https://www.github.com/k9spud/k9spud-overlay.git
priority = 200
auto-sync = yes
clone-depth = 1
sync-depth = 1
sync-gitclone-extra-opts = --single-branch --branch main
After that, use the following to install App Swipe:
emerge app-portage/appswipe
If all went well, you can now run the appswipe
program.
Do not run App Swipe as 'root.' For searching and browsing your local repository files, App Swipe never uses any elevated privileges. Only when you attempt to make system wide changes (install/upgrade/uninstall/etc) are elevated permissions necessary.
In order to execute emerge
and other tools with elevated permissions,
App Swipe will either use the doas
or sudo
command (whichever is
installed on your system). If you've already got one of these configured to
let you run commands as root, you probably don't need to do any additional
configuration. However, if you want a more fine grained configuration, the
following may be useful:
When using doas, you could add the
following to /etc/doas.conf
(substitute the username you run App Swipe
under for USER):
permit USER cmd /usr/bin/emerge
permit USER cmd /usr/bin/ebuild
permit USER cmd /usr/sbin/dispatch-conf
When using sudo, you could add the
following using the visudo
command (substitute the username you
run App Swipe under for USER):
USER localhost = /usr/bin/emerge
USER localhost = /usr/bin/ebuild
USER localhost = /usr/sbin/dispatch-conf ""
The first thing App Swipe does is scrape up all the scattered data about
installed packages from /var/db/pkg
and packages available in repos
at /var/db/repos
. This data is inserted into a
SQLite database that is stored at
$HOME/.AppSwipe/AppSwipe.db
.
From that point on, you can do searches and browse your portage repos
at blazing speed, thanks to the underlying SQLite database. As you install,
upgrade, etc, App Swipe attempts to keep the SQLite database up-to-date,
but this is currently not always perfect. If an emerge operation pulls in
additional dependencies, for example, App Swipe currently has no way of
knowing about these extra changes, so you may have to manually trigger
a Reload Database
operation from time to time, to bring App Swipe's
internal database back up to matching what's really in your system at
the moment.
The View Updates
page features a list of all potentionally upgradable
packages that are currently installed on your system. The Upgrade
link
on this page lets you emerge all the upgradable packages that App Swipe
shows here. This is similar to Update World
, except App Swipe doesn't burn
a bunch of CPU cycles determining which package dependencies descend from
your @world list like emerge does. Instead, it lists any package
already installed on your system that might be upgradable to a newer version.
The View Updates
URL input box supports filters. Let's say you only want
the subset of upgradable packages that contain the word qt
for example.
The URL update:qt
will let you see only those packages, and the Fetch
or Upgrade
links on this filtered page will be limited to only fetching
or upgrading the qt
subset as well.
Negative filters are supported. If you wanted to upgrade Qt packages,
but want to avoid qtwebengine
for now (because that one is huge and
takes forever), you could simply use the URL
update:qt -qtwebengine
:
App Swipe can automatically keyword unmask packages when you attempt to fetch or install a "testing" or "unsupported" (non-keyworded) release.
To enable this feature, create an accept_keywords file with writable permissions for your username like this:
cd /etc/portage/package.accept_keywords
touch appswipe.tmp
chown USER:USER appswipe.tmp
chmod 0644 appswipe.tmp
This feature may have security implications; it's use is optional.
If you don't provide your user writable permissions to the file
/etc/portage/package.accept_keywords/appswipe.tmp
, App Swipe will
silently skip doing automatic keyword unmasking.
CTRL-T
Opens a new tab.
CTRL-W
Closes the current tab. Middle clicking on a tab's icon is another
way to close a tab.
CTRL-N
Opens a new window.
CTRL-Q
Saves each window's geometry and open tabs, then quits the application.
CTRL-SHIFT-S
Saves each window's geometry and open tabs, without quitting.
F2
Allows you to rename the current window.
CTRL-F4
Permanently discards the current window.
CTRL-TAB
Displays the next tab.
CTRL-SHIFT-TAB
Displays the prior tab.
CTRL-1
through CTRL-9
Displays the first, second, etc tab.
CTRL-0
Displays the very last tab.
CTRL-backtick
Displays the update:
upgradable packages list in a new tab (if not previously opened).
CTRL-L
Sets keyboard input focus on the URL input text box.
SHIFT-Return
Navigates to the first result of an application search.
CTRL-R
or F5
Reloads the SQLite database for the currently viewed app and refreshes view.
ALT-Back Arrow Key
Displays the previous page in browser history.
ALT-Forward Arrow Key
Displays the next page in browser history.
CTRL-F
Searches browser view text.
F3
Repeats last search, moving forward through the text.
SHIFT-F3
Repeats last search, going backwards through the text.
Escape
Cancels reloading page.
ALT-F
Opens the app menu.
Middle clicking a link opens it in a new tab (without immediately switching focus to the new tab).
Middle clicking a tab closes that tab.
Left click and drag in a blank space area of the browser view lets you grab the page and swipe up or down to scroll it.
Left click and hold for >600ms opens the pop up context menu. This allows computers without a right mouse button to open the context menus.
This can be caused by having "FEATURES=${FEATURES} getbinpkg" in your
/etc/portage/make.conf
file. App Swipe can't override FEATURES
from the command line.
The suggested workaround is to remove getbinpkg
from the FEATURES
variable, and instead add --getbinpkg=y
to the EMERGE_DEFAULT_OPTS
variable. This has the same effect, except now App Swipe can override
the use of binary packages when doing a "Reinstall from source"
operation.
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.