Compare commits

...

11 Commits
0.80b ... dev

Author SHA1 Message Date
zenobit 8b499b744f moved while true; do 2023-12-14 04:55:00 +01:00
zenobit 6e7fa260b6 added quicktui 2023-12-14 04:55:00 +01:00
zenobit 5b42eebffe wrong function name 2023-12-14 04:55:00 +01:00
zenobit c3bd9eb195 merge upstream and other changes
added sparky linux
added bazzite
2023-11-17 14:35:57 +01:00
zenobit 52182514ec
Delete CNAME 2023-10-05 11:03:18 +02:00
zenobit e9ce6d4f58 portable mode: ./ instead of pwd for paths
Portable mode: not full path in desktop files
2023-10-05 02:35:12 +02:00
zenobit f67d896b23 prepare icons for whonix and guix 2023-10-05 02:07:13 +02:00
zenobit 971938f1e6 Add Trisquel GNU Linux 2023-10-05 02:07:13 +02:00
zenobit c9adf8c8fa
bug: dh not work under wayland properly 2023-10-04 21:48:40 +02:00
zenobit 3187b15c33
Update README.md 2023-10-04 05:12:00 +02:00
zenobit 08c7a93276
New SimpleX chat group link 2023-10-04 04:09:00 +02:00
106 changed files with 5401 additions and 492 deletions

View File

@ -16,6 +16,12 @@
# **DistroHopper**
Quickly download, create and run VM of any#TODO operating system.
# For now yad not work under wayland correctly
Until this will be solved upstream use just quickfzf TUI under wayland!
It's even quicker and easier to use.
But don't have that nice distro icons you never heard about.. (or no?)
Linux![Tux](docs/tux23.png) required...
---
@ -278,7 +284,7 @@ Also with posible planned: [in discusion](https://github.com/oSoWoSo/DistroHoppe
#### [discuss](https://github.com/oSoWoSo/DistroHopper/discussions) on github
# Join DistroHopper chat group:
[![SimpleX](docs/simplex.svg)](https://simplex.chat/contact#/?v=1-2&smp=smp%3A%2F%2FSkIkI6EPd2D63F4xFKfHk7I1UGZVNn6k1QWZ5rcyr6w%3D%40smp9.simplex.im%2FzmtsZwfTjwyynibt0bF6bb_xLWS9ce5A%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAkMtz66wGfWb6VDn-_t_mVm3RFiFfOC3Hxye8Hm5tmVo%253D%26srv%3Djssqzccmrcws6bhmn77vgmhfjmhwlyr3u7puw4erkyoosywgl67slqqd.onion&data=%7B%22type%22%3A%22group%22%2C%22groupLinkId%22%3A%22o8KR0TOM0f2j33nO9goMRQ%3D%3D%22%7D) (click SimpleX logo)
[![SimpleX](docs/simplex.svg)](https://simplex.chat/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FnTkG5MBnhRsRTb4heK-8J9jo0Vqc43q2%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEA-Go_Cwwzp419dls_-cmYvePuTyKdZ6bsrXAy8K1Sizc%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion&data=%7B%22type%22%3A%22group%22%2C%22groupLinkId%22%3A%228L5-Gq789MCV_wUQuNtTLg%3D%3D%22%7D) (click SimpleX logo)
(check the software! even if you don't want chat about DistroHopper)
[Simplex website](https://simplex.chat)

13
dh
View File

@ -16,8 +16,6 @@ trap 'exit' SIGINT SIGTERM SIGQUIT
set -e
echo "$MSG_RUNNING"
while true
do
function variables_set() {
# DEBUG mod
#bash -x ./dh 2>&1 | tee output.log
@ -89,9 +87,9 @@ do
}
function work_in_current_dir() {
VMS_DIR="$(pwd)"
DH_CONFIG_DIR="$(pwd)"
DH_ICON_DIR="$(pwd)/icons"
VMS_DIR="./"
DH_CONFIG_DIR="./"
DH_ICON_DIR="./icons"
portable_prefix='./'
#export "VMS_DIR" "DH_CONFIG_DIR" "DH_ICON_DIR" "terminal" "replace" "portable_prefix"
}
@ -413,7 +411,7 @@ EOF
if [ "$os" = windows ]; then
tui_windows
else
tui_get_releases_and_editions
quickget_get_releases_and_editions
fzf_choose_release
if [ "$(echo "$choices" | wc -l)" = 1 ]; then
quickget_download_os_release
@ -687,7 +685,8 @@ EOF
# run ------------------------------------------------------------------
while true
do
variables_set
if [[ $# -eq 0 ]]; then

View File

@ -1 +0,0 @@
dh.osowoso.xyz

42
docs/Makefile Normal file
View File

@ -0,0 +1,42 @@
include pandoc-man.mk
ifeq ($(PREFIX),)
PREFIX := /usr/local
endif
datarootdir := $(PREFIX)/share
datadir := $(datarootdir)
mandir := $(datarootdir)/man
bindir := $(PREFIX)/bin
all: quickget.1 quickemu.1 quickemu_conf.1
clean:
rm *.1
install_docs: all
install -d $(DESTDIR)$(mandir)/man1
install -m 644 quickget.1 $(DESTDIR)$(mandir)/man1
install -m 644 quickemu.1 $(DESTDIR)$(mandir)/man1
install -m 644 quickemu_conf.1 $(DESTDIR)$(mandir)/man1
# install -m 644 quickgui.1 $(DESTDIR)$(mandir)/man1
install_bins:
install -d $(DESTDIR)$(bindir)
install -m 755 ../quickget $(DESTDIR)$(bindir)
install -m 755 ../quickemu $(DESTDIR)$(bindir)
install -m 755 ../macrecovery $(DESTDIR)$(bindir)
install: install_bins install_docs
uninstall::
rm -f $(DESTDIR)$(mandir)/man1/quickget.1
rm -f $(DESTDIR)$(mandir)/man1/quickemu.1
rm -f $(DESTDIR)$(mandir)/man1/quickemu_conf.1
rm -f $(DESTDIR)$(bindir)/quickget
rm -f $(DESTDIR)$(bindir)/quickemu
rm -f $(DESTDIR)$(bindir)/macrecovery
.PHONY: all

8
docs/pandoc-man.mk Normal file
View File

@ -0,0 +1,8 @@
PANDOC ?= pandoc
MANSECTION ?= 1
MANPAGE.md = $(PANDOC) --standalone $(PANDOCFLAGS) --to man
%.$(MANSECTION): %.$(MANSECTION).md
$(MANPAGE.md) $< -o $@

1037
docs/quickemu.1 Normal file

File diff suppressed because it is too large Load Diff

735
docs/quickemu.1.md Normal file
View File

@ -0,0 +1,735 @@
---
author: Martin Wimpress
date: November 17, 2023
footer: quickemu
header: Quickemu User Manual
section: 1
title: QUICKEMU
---
# NAME
quickemu - A quick VM builder and manager
# SYNOPSIS
**quickemu** \[*OPTION*\]...
# DESCRIPTION
**quickemu** will create and run highly optimised desktop virtual
machines for Linux, macOS and Windows
# OPTIONS
**--vm**
: vm configuration file
You can also pass optional parameters
**--braille**
: Enable braille support. Requires SDL.
**--delete-disk**
: Delete the disk image.
**--display**
: Select display backend. 'sdl' (default), 'gtk', 'none', 'spice' or
'spice-app'
**--sound-card**
: Select virtual audio emulation. 'intel-hda' (default), 'ac97'
(solaris default), 'es1370', 'sb16' (freedos default) or 'none'
**--fullscreen**
: Starts VM in full screen mode (Ctl+Alt+f to exit)
**--ignore-msrs-always**
: Configure KVM to always ignore unhandled machine-specific registers
**--screen \<screen\>**
: Use specified screen to determine the window size.
**--shortcut**
: Create a desktop shortcut
**--snapshot apply \<tag\>**
: Apply/restore a snapshot.
**--snapshot create \<tag\>**
: Create a snapshot.
**--snapshot delete \<tag\>**
: Delete a snapshot.
**--snapshot info**
: Show disk/snapshot info.
**--status-quo**
: Do not commit any changes to disk/snapshot.
**--version**
: Print version
# EXAMPLES
**quickemu --vm ubuntu-mate-22.04.conf**
: Launches the VM specified in the file *ubuntu-mate-22.04.conf*
## Introduction
Quickly create and run highly optimised desktop virtual machines for
Linux, macOS and Windows; with just two commands. You decide what
operating system you want to run and Quickemu will figure out the best
way to do it for you. For example:
``` bash
quickget ubuntu-mate 22.04
quickemu --vm ubuntu-mate-22.04.conf
```
The original objective of the project was to enable quick testing of
Linux distributions where the virtual machine configurations can be
stored anywhere, such as external USB storage or your home directory,
and no elevated permissions are required to run the virtual machines.
**Quickemu now also includes comprehensive support for macOS and
Windows**.
## Features
- **macOS** Monterey, Big Sur, Catalina, Mojave & High Sierra
- **Windows** 10 and 11 including TPM 2.0
- [Ubuntu](https://ubuntu.com/desktop) and all the **[official Ubuntu
flavours](https://ubuntu.com/download/flavours)**
- **Over 360 operating system editions are supported!**
- Full SPICE support including host/guest clipboard sharing
- VirtIO-webdavd file sharing for Linux and Windows guests
- VirtIO-9p file sharing for Linux and macOS guests
- [QEMU Guest Agent
support](https://wiki.qemu.org/Features/GuestAgent); provides access
to a system-level agent via standard QMP commands
- Samba file sharing for Linux, macOS and Windows guests (*if `smbd`
is installed on the host*)
- VirGL acceleration
- USB device pass-through
- Smartcard pass-through
- Automatic SSH port forwarding to guests
- Network port forwarding
- Full duplex audio
- Braille support
- EFI (with or without SecureBoot) and Legacy BIOS boot
- Graphical user interfaces available
Quickemu is a wrapper for the excellent [QEMU](https://www.qemu.org/)
that attempts to automatically *"do the right thing"*, rather than
expose exhaustive configuration options.
We have a Discord for this project:
[![Discord](https://img.shields.io/discord/712850672223125565?color=0C306A&label=WimpysWorld%20Discord&logo=Discord&logoColor=ffffff&style=flat-square)](https://discord.gg/sNmz3uw)
See this (old) video where I explain some of my motivations for creating
Quickemu.
[![Replace VirtualBox with Bash &
QEMU](https://img.youtube.com/vi/AOTYWEgw0hI/0.jpg)](https://www.youtube.com/watch?v=AOTYWEgw0hI)
## Requirements
- [QEMU](https://www.qemu.org/) (*6.0.0 or newer*) **with GTK, SDL,
SPICE & VirtFS support**
- [bash](https://www.gnu.org/software/bash/) (*4.0 or newer*)
- [Coreutils](https://www.gnu.org/software/coreutils/)
- [EDK II](https://github.com/tianocore/edk2)
- [grep](https://www.gnu.org/software/grep/)
- [jq](https://stedolan.github.io/jq/)
- [LSB](https://wiki.linuxfoundation.org/lsb/start)
- [procps](https://gitlab.com/procps-ng/procps)
- [python3](https://www.python.org/)
- [macrecovery](https://github.com/acidanthera/OpenCorePkg/tree/master/Utilities/macrecovery)
- [mkisofs](http://cdrtools.sourceforge.net/private/cdrecord.html)
- [usbutils](https://github.com/gregkh/usbutils)
- [util-linux](https://github.com/karelzak/util-linux)
- [sed](https://www.gnu.org/software/sed/)
- [socat](http://www.dest-unreach.org/socat/)
- [spicy](https://gitlab.freedesktop.org/spice/spice-gtk)
- [swtpm](https://github.com/stefanberger/swtpm)
- [Wget](https://www.gnu.org/software/wget/)
- [xdg-user-dirs](https://www.freedesktop.org/wiki/Software/xdg-user-dirs/)
- [xrandr](https://gitlab.freedesktop.org/xorg/app/xrandr)
- [zsync](http://zsync.moria.org.uk/)
- [unzip](http://www.info-zip.org/UnZip.html)
### Installing Requirements
For Ubuntu, Arch and nixos systems the
[ppa](https://launchpad.net/~flexiondotorg/+archive/ubuntu/quickemu),
[AUR](https://aur.archlinux.org/packages/quickemu) or
[nix](https://github.com/NixOS/nixpkgs/tree/master/pkgs/development/quickemu)
packaging will take care of the dependencies. For other host
distributions or operating systems it will be necessary to install the
above requirements or their equivalents.
These examples may save a little typing
Debian (and direct derivatives such as MX Linux):
sudo apt install qemu bash coreutils ovmf grep jq lsb-base procps python3 genisoimage usbutils util-linux sed spice-client-gtk libtss2-tcti-swtpm0 wget xdg-user-dirs zsync unzip
Fedora:
sudo dnf install qemu bash coreutils edk2-tools grep jq lsb procps python3 genisoimage usbutils util-linux sed spice-gtk-tools swtpm wget xdg-user-dirs xrandr unzip
MacOS:
This is a work in progress (see [issue
248](https://github.com/quickemu-project/quickemu/issues/248) for other
steps and changes that may enable running on MacOS)
brew install qemu bash coreutils grep jq python@3.10 cdrtools gnu-sed spice-gtk wget zsync
# Usage
## Graphical User Interfaces
While `quickemu` and `quickget` are designed for the terminal, a
graphical user interface is also available:
- **[Quickgui](https://github.com/quickgui/quickgui)** by [Mark
Johnson](https://github.com/marxjohnson) and [Yannick
Mauray](https://github.com/ymauray).
Many thanks to [Luke Wesley-Holley](https://github.com/Lukewh) and
[Philipp Kiemle](https://github.com/daPhipz) for creating the
**[Quickemu icons](https://github.com/Lukewh/quickemu-icons)** 🎨
### Quickgui for Ubuntu
``` bash
sudo add-apt-repository ppa:yannick-mauray/quickgui
sudo apt update
sudo apt install quickgui
```
## Ubuntu Guest
`quickget` will automatically download an Ubuntu release and create the
virtual machine configuration.
``` bash
quickget ubuntu 22.04
quickemu --vm ubuntu-22.04.conf
```
- Complete the installation as normal.
- Post-install:
- Install the SPICE agent (`spice-vdagent`) in the guest to enable
copy/paste and USB redirection
- `sudo apt install spice-vdagent`
- Install the SPICE WebDAV agent (`spice-webdavd`) in the guest to
enable file sharing.
- `sudo apt install spice-webdavd`
### Ubuntu devel (daily-live) images
`quickget` can also download/refresh devel images via `zsync` for Ubuntu
developers and testers.
``` bash
quickget ubuntu devel
quickemu --vm ubuntu-devel.conf
```
You can run `quickget ubuntu devel` to refresh your daily development
image as often as you like, it will even automatically switch to a new
series.
### Ubuntu Flavours
All the official Ubuntu flavours are supported, just replace `ubuntu`
with your preferred flavour.
- `edubuntu` (Edubuntu)
- `kubuntu` (Kubuntu)
- `lubuntu` (Lubuntu)
- `ubuntu-budgie` (Ubuntu Budgie)
- `ubuntucinnamon` (Ubuntu Cinnamon)
- `ubuntukylin` (Ubuntu Kylin)
- `ubuntu-mate` (Ubuntu MATE)
- `ubuntustudio` (Ubuntu Studio)
- `ubuntu` (Ubuntu)
- `ubuntu-unity` (Ubuntu Unity)
- `xubuntu` (Xubuntu)
You can also use `quickget` with options to:
``` shell
# show an OS ISO download URL for {os} {release} [edition]
quickget --show-iso-url fedora 38 Silverblue
# test if and OS ISO is available for {os} {release} [edition]
quickget --test-iso-url nixos 23.05 plasma5
# open an OS distribution homepage in a browser
quickget --open-distro-homepage ubuntu-mate
```
The `--show-iso-url` and `--test-iso-url` options **do not** work for
`Windows` (`quickget` will begin downloading the requested release and
edition of windows)
## Other Operating Systems
`quickget` also supports:
- `agarimos` (AgarimOS)
- `alma` (Alma Linux)
- `alpine` (Alpine Linux)
- `android` (Android x86)
- `antix` (Antix)
- `archcraft` (Archcraft)
- `archlinux` (Arch Linux)
- `arcolinux` (Arco Linux)
- `artixlinux` (Artix Linux)
- `athenaos` (Athenaos)
- `batocera` (Batocera)
- `bazzite` (Bazzite)
- `biglinux` (BigLinux)
- `blendos` (BlendOS)
- `bodhi` (Bodhi Linux)
- `bunsenlabs` (Bunsenlabs)
- `cachyos` (CachyOS)
- `centos-stream` (CentOS Stream)
- `cereus` (Cereus Linux)
- `chimera` (Chimera Linux)
- `debian` (Debian)
- `deepin` (Deepin)
- `devuan` (Devuan)
- `dietpi` (DietPi)
- `dragonflybsd` (DragonFlyBSD)
- `elementary` (elementary OS)
- `endeavouros` (EndeavourOS)
- `endless` (Endless OS)
- `fedora` (Fedora)
- `freebsd` (FreeBSD)
- `freedos` (FreeDOS)
- `fvoid` (F-Void)
- `gabeeos` (gabeeOS Linux)
- `garuda` (Garuda Linux)
- `gentoo` (Gentoo)
- `ghostbsd` (GhostBSD)
- `haiku` (Haiku)
- `holoiso` (Steam OS HoloISO)
- `kali` (Kali)
- `kdeneon` (KDE Neon)
- `kolibrios` (KolibriOS)
- `linuxlite` (Linux Lite)
- `linuxmint` (Linux Mint)
- `lmde` (Linux Mint Debian Edition)
- `mageia` (Mageia)
- `manjaro` (Manjaro)
- `miyolinux` (Miyo Linux)
- `mxlinux` (MX Linux)
- `netboot` (netboot.xyz)
- `netbsd` (NetBSD)
- `nixos` (NixOS)
- `openbsd` (OpenBSD)
- `openindiana` (OpenIndiana)
- `opensuse` (openSUSE)
- `oraclelinux` (Oracle Linux)
- `peppermint` (PeppermintOS)
- `popos` (Pop!\_OS)
- `porteus` (Porteus)
- `pureos` (PureOS)
- `reactos` (ReactOS)
- `rebornos` (RebornOS)
- `rockylinux` (Rocky Linux)
- `siduction` (Siduction)
- `slackware` (Slackware)
- `slax` (Slax)
- `slitaz` (SliTaz GNU/Linux)
- `solus` (Solus)
- `sparkylinux` (SparkyLinux)
- `spiral` (SpiralLinux)
- `tails` (Tails)
- `tinycore` (Tiny Core Linux)
- `trisquel` (Trisquel)
- `truenas-core` (TrueNAS Core)
- `truenas-scale` (TrueNAS Scale)
- `tuxedoos` (TuxedoOS)
- `vanillaos` (Vanilla OS)
- `ventoy` (Ventoy)
- `voidpup` (Void Puppy)
- `void` (Void Linux)
- `vxlinux` (VX Linux)
- `xerolinux` (XeroLinux)
- `zorin` (Zorin OS)
Or you can download a Linux image and manually create a VM
configuration.
- Download a .iso image of a Linux distribution
- Create a VM configuration file; for example `debian-bullseye.conf`
``` bash
guest_os="linux"
disk_img="debian-bullseye/disk.qcow2"
iso="debian-bullseye/firmware-11.0.0-amd64-DVD-1.iso"
```
- Use `quickemu` to start the virtual machine:
``` bash
quickemu --vm debian-bullseye.conf
```
- Complete the installation as normal.
- Post-install:
- Install the SPICE agent (`spice-vdagent`) in the guest to enable
copy/paste and USB redirection.
- Install the SPICE WebDAV agent (`spice-webdavd`) in the guest to
enable file sharing.
## macOS Guest
`quickget` automatically downloads a macOS recovery image and creates a
virtual machine configuration.
``` bash
quickget macos catalina
quickemu --vm macos-catalina.conf
```
macOS `high-sierra`, `mojave`, `catalina`, `big-sur`, `monterey` and
`ventura` are supported.
- Use cursor keys and enter key to select the **macOS Base System**
- From **macOS Utilities**
- Click **Disk Utility** and **Continue**
- Select `QEMU HARDDISK Media` (\~103.08GB) from the list (on
Big Sur and above use `Apple Inc. VirtIO Block Device`) and
click **Erase**.
- Enter a `Name:` for the disk
- If you are installing macOS Mojave or later (Catalina, Big
Sur, Monterey and Ventura), choose any of the APFS options
as the filesystem. MacOS Extended may not work.
- Click **Erase**.
- Click **Done**.
- Close Disk Utility
- From **macOS Utilities**
- Click **Reinstall macOS** and **Continue**
- Complete the installation as you normally would.
- On the first reboot use cursor keys and enter key to select
**macOS Installer**
- On the subsequent reboots use cursor keys and enter key to
select the disk you named
- Once you have finished installing macOS you will be presented with
an the out-of-the-box first-start wizard to configure various
options and set up your username and password
- OPTIONAL: After you have concluded the out-of-the-box wizard, you
may want to enable the TRIM feature that the computer industry
created for SSD disks. This feature in our macOS installation will
allow QuickEmu to compact (shrink) your macOS disk image whenever
you delete files inside the Virtual Machine. Without this step your
macOS disk image will only ever get larger and will not shrink even
when you delete lots of data inside macOS.
- To enable TRIM, open the Terminal application and type the
following command followed by pressing
`<kbd>`{=html}enter`</kbd>`{=html} to tell macos to use the TRIM
command on the hard disk when files are deleted:
``` bash
sudo trimforce enable
```
You will be prompted to enter your account's password to gain the
privilege needed. Once you've entered your password and pressed
`<kbd>`{=html}enter`</kbd>`{=html} the command will request confirmation
in the form of two questions that require you to type
`<kbd>`{=html}y`</kbd>`{=html} (for a "yes" response) followed by
`<kbd>`{=html}enter`</kbd>`{=html} to confirm. If you press
`<kbd>`{=html}enter`</kbd>`{=html} without first typing
`<kbd>`{=html}y`</kbd>`{=html} the system will consider that a negative
response as though you said "no":
``` plain
IMPORTANT NOTICE: This tool force-enables TRIM for all relevant attached devices, even though such devices may not have been validated for data integrity while using TRIM. Use of this tool to enable TRIM may result in unintended data loss or data corruption. It should not be used in a commercial operating environment or with important data. Before using this tool, you should back up all of your data and regularly back up data while TRIM is enabled. This tool is provided on an "as is" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THIS TOOL OR ITS USE ALONE OR IN COMBINATION WITH YOUR DEVICES, SYSTEMS, OR SERVICES. BY USING THIS TOOL TO ENABLE TRIM, YOU AGREE THAT, TO THE EXTENT PERMITTED BY APPLICABLE LAW, USE OF THE TOOL IS AT YOUR SOLE RISK AND THAT THE ENTIRE RISK AS TO SATISFACTORY QUALITY, PERFORMANCE, ACCURACY AND EFFORT IS WITH YOU.
Are you sure you with to proceed (y/N)?
```
And a second confirmation once you've confirmed the previous one:
``` plain
Your system will immediately reboot when this is complete.
Is this OK (y/N)?
```
As the last message states, your system will automatically reboot as
soon as the command completes.
The default macOS configuration looks like this:
``` bash
guest_os="macos"
img="macos-catalina/RecoveryImage.img"
disk_img="macos-catalina/disk.qcow2"
macos_release="catalina"
```
- `guest_os="macos"` instructs Quickemu to optimise for macOS.
- `macos_release="catalina"` instructs Quickemu to optimise for a
particular macOS release.
- For example VirtIO Network and Memory Ballooning are available
in Big Sur and newer, but not previous releases.
- And VirtIO Block Media (disks) are supported/stable in Catalina
and newer.
### macOS compatibility
There are some considerations when running macOS via Quickemu.
- Supported macOS releases:
- High Sierra
- Mojave
- Catalina **(Recommended)**
- Big Sur
- Monterey
- Ventura
- `quickemu` will automatically download the required
[OpenCore](https://github.com/acidanthera/OpenCorePkg) bootloader
and OVMF firmware from [OSX-KVM](https://github.com/kholia/OSX-KVM).
- Optimised by default, but no GPU acceleration is available.
- Host CPU vendor is detected and guest CPU is optimised
accordingly.
- [VirtIO Block
Media](https://www.kraxel.org/blog/2019/06/macos-qemu-guest/) is
used for the system disk where supported.
- [VirtIO `usb-tablet`](http://philjordan.eu/osx-virt/) is used
for the mouse.
- VirtIO Network (`virtio-net`) is supported and enabled on macOS
Big Sur and newer but previous releases use `vmxnet3`.
- VirtIO Memory Ballooning is supported and enabled on macOS Big
Sur and newer but disabled for other support macOS releases.
- USB host and SPICE pass-through is:
- UHCI (USB 2.0) on macOS Catalina and earlier.
- XHCI (USB 3.0) on macOS Big Sur and newer.
- Display resolution can only be changed via macOS System Preferences.
- **Full Duplex audio requires [VoodooHDA
OC](https://github.com/chris1111/VoodooHDA-OC) or pass-through a USB
audio-device to the macOS guest VM**.
- NOTE! [Gatekeeper](https://disable-gatekeeper.github.io/) and
[System Integrity Protection
(SIP)](https://developer.apple.com/documentation/security/disabling_and_enabling_system_integrity_protection)
need to be disabled to install VoodooHDA OC
- File sharing between guest and host is available via
[virtio-9p](https://wiki.qemu.org/Documentation/9psetup) and [SPICE
webdavd](https://gitlab.gnome.org/GNOME/phodav/-/merge_requests/24).
- Copy/paste via SPICE agent is **not available on macOS**.
### macOS App Store
If you see *"Your device or computer could not be verified"* when you
try to login to the App Store, make sure that your wired ethernet device
is `en0`. Use `ifconfig` in a terminal to verify this.
If the wired ethernet device is not `en0`, then then go to *System
Preferences* -\> *Network*, delete all the network devices and apply the
changes. Next, open a terminal and run the following:
``` bash
sudo rm /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist
```
Now reboot, and the App Store should work.
## Windows 8, 10 & 11 Guests
`quickget` can download
[Windows10](https://www.microsoft.com/software-download/windows10) and
[Windows 11](https://www.microsoft.com/software-download/windows11)
automatically and create an optimised virtual machine configuration.
This configuration also includes the [VirtIO drivers for
Windows](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/).
Windows 8.1 is also supported but doesn't feature any automated
installation or driver optimisation.
``` bash
quickget windows 11
quickemu --vm windows-11.conf
```
- Complete the installation as you normally would.
- All relevant drivers and services should be installed automatically.
- A local administrator user account is automatically created, with
these credentials:
- Username: `Quickemu`
- Password: `quickemu`
The default Windows 11 configuration looks like this:
``` bash
guest_os="windows"
disk_img="windows-11/disk.qcow2"
iso="windows-11/windows-11.iso"
fixed_iso="windows-11/virtio-win.iso"
tpm="on"
secureboot="off"
```
- `guest_os="windows"` instructs `quickemu` to optimise for Windows.
- `fixed_iso=` specifies the ISO image that provides VirtIO drivers.
- `tpm="on"` instructs `quickemu` to create a software emulated TPM
device using `swtpm`.
# All the options
Here are the usage instructions:
Usage
quickemu --vm ubuntu.conf
You can also pass optional parameters
--access : Enable remote spice access support. 'local' (default), 'remote', 'clientipaddress'
--braille : Enable braille support. Requires SDL.
--delete-disk : Delete the disk image and EFI variables
--delete-vm : Delete the entire VM and it's configuration
--display : Select display backend. 'sdl' (default), 'gtk', 'none', 'spice' or 'spice-app'
--fullscreen : Starts VM in full screen mode (Ctl+Alt+f to exit)
--ignore-msrs-always : Configure KVM to always ignore unhandled machine-specific registers
--screen <screen> : Use specified screen to determine the window size.
--screenpct <percent> : Percent of fullscreen for VM if --fullscreen is not specified.
--shortcut : Create a desktop shortcut
--snapshot apply <tag> : Apply/restore a snapshot.
--snapshot create <tag> : Create a snapshot.
--snapshot delete <tag> : Delete a snapshot.
--snapshot info : Show disk/snapshot info.
--status-quo : Do not commit any changes to disk/snapshot.
--viewer <viewer> : Choose an alternative viewer. @Options: 'spicy' (default), 'remote-viewer', 'none'
--ssh-port <port> : Set ssh-port manually
--spice-port <port> : Set spice-port manually
--public-dir <path> : Expose share directory. @Options: '' (default: xdg-user-dir PUBLICSHARE), '<directory>', 'none'
--monitor <type> : Set monitor connection type. @Options: 'socket' (default), 'telnet', 'none'
--monitor-telnet-host <ip/host> : Set telnet host for monitor. (default: 'localhost')
--monitor-telnet-port <port> : Set telnet port for monitor. (default: '4440')
--monitor-cmd <cmd> : Send command to monitor if available. (Example: system_powerdown)
--serial <type> : Set serial connection type. @Options: 'socket' (default), 'telnet', 'none'
--serial-telnet-host <ip/host> : Set telnet host for serial. (default: 'localhost')
--serial-telnet-port <port> : Set telnet port for serial. (default: '6660')
--keyboard <type> : Set keyboard. @Options: 'usb' (default), 'ps2', 'virtio'
--keyboard_layout <layout> : Set keyboard layout.
--mouse <type> : Set mouse. @Options: 'tablet' (default), 'ps2', 'usb', 'virtio'
--usb-controller <type> : Set usb-controller. @Options: 'ehci' (default), 'xhci', 'none'
--sound-card <type> : Set sound card. @Options: 'intel-hda' (default), 'ac97', 'es1370', 'sb16', 'none'
--extra_args <arguments> : Pass additional arguments to qemu
--version : Print version
## Desktop shortcuts
Desktop shortcuts can be created for a VM, the shortcuts are saved in
`~/.local/share/applications`. Here is an example of how to create a
shortcut.
``` bash
quickemu --vm ubuntu-22.04-desktop.conf --shortcut
```
## Screen and window size (Linux guests only)
`qemu` will always default to the primary monitor to display the VM's
window.
Without the `--screen` option, `quickemu` will look for the size of the
smallest monitor, and use a size that fits on said monitor.
The `--screen` option forces `quickemu` to use the size of the given
monitor to compute the size of the window. **It won't use that monitor
to display the VM's window if it's not the primary monitor**. This is
useful if the primary monitor if not the smallest one, and if the VM's
window doesn't need to be moved around.
The `--screen` option is also useful with the `--fullscreen` option,
again because `qemu` will always use the primary monitor. In order for
the fullscreen mode to work properly, the resolution of the VM's window
must match the resolution of the screen.
To know which screen to use, type:
``` bash
xrandr --listmonitors | grep -v Monitors
```
The command will output something like this:
``` bash
0: +*HDMI-0 2560/597x1440/336+1920+0 HDMI-0
1: +DVI-D-0 1920/527x1080/296+0+0 DVI-D-0
```
The first number is what needs to be passed to the `--screen` option.
For example:
``` bash
quickemu --vm vm.conf --screen 0
```
The above uses the 2560x1440 screen to compute the size of the window,
which Quickemu sizes to 2048x1152. Without the `--screen` option,
Quickemu would have used the 1920x1080 monitor which results in a window
size of 1664x936.
The '--screenpct' is an optional integer value between 25 \<= pct \< 100
which will override system default screen sizes. The VM size will be
'pct' of the chosen screen. **If --fullscreen is chosen screen will be
fullsize instead of being scaled down by --screenpct value.**
# References
Useful reference that assisted the development of Quickemu.
- General
- [QEMU's documentation!](https://qemu.readthedocs.io/en/latest/)
- <https://pve.proxmox.com/wiki/Qemu/KVM_Virtual_Machines>
- <https://www.kraxel.org/blog/2020/01/qemu-sound-audiodev/>
- macOS
- <https://www.nicksherlock.com/2020/06/installing-macos-big-sur-on-proxmox/>
- <https://passthroughpo.st/mac-os-adds-early-support-for-virtio-qemu/>
- <https://github.com/kholia/OSX-KVM>
- <https://github.com/thenickdude/KVM-Opencore>
- <https://github.com/acidanthera/OpenCorePkg/tree/master/Utilities/macrecovery>
- <https://www.kraxel.org/blog/2017/09/running-macos-as-guest-in-kvm/>
- <https://www.nicksherlock.com/2017/10/passthrough-of-advanced-cpu-features-for-macos-high-sierra-guests/>
- <http://philjordan.eu/osx-virt/>
- <https://github.com/Dids/clover-builder>
- [OpenCore
Configurator](https://mackie100projects.altervista.org)
- Windows
- <https://www.heiko-sieger.info/running-windows-10-on-linux-using-kvm-with-vga-passthrough/>
- <https://leduccc.medium.com/improving-the-performance-of-a-windows-10-guest-on-qemu-a5b3f54d9cf5>
- <https://frontpagelinux.com/tutorials/how-to-use-linux-kvm-to-optimize-your-windows-10-virtual-machine/>
- <https://turlucode.com/qemu-command-line-args/>
- <https://github.com/pbatard/Fido>
- <https://www.catapultsystems.com/blogs/create-zero-touch-windows-10-iso/>
- TPM
- <https://qemu-project.gitlab.io/qemu/specs/tpm.html>
- <https://www.tecklyfe.com/how-to-create-a-windows-11-virtual-machine-in-qemu/>
- 9p & virtiofs
- <https://wiki.qemu.org/Documentation/9p>
- <https://wiki.qemu.org/Documentation/9psetup>
- <https://www.kraxel.org/blog/2019/06/macos-qemu-guest/>
- <https://superuser.com/questions/628169/how-to-share-a-directory-with-the-host-without-networking-in-qemu>
- <https://virtio-fs.gitlab.io/>
# AUTHORS
Written by Martin Wimpress.
# BUGS
Submit bug reports online at:
<https://github.com/quickemu-project/quickemu/issues>
# SEE ALSO
Full sources at: <https://github.com/quickemu-project/quickemu>
quickemu_conf(1), quickget(1), quickgui(1)

327
docs/quickemu_conf.1 Normal file
View File

@ -0,0 +1,327 @@
.\" Automatically generated by Pandoc 2.17.1.1
.\"
.\" Define V font for inline verbatim, using C font in formats
.\" that render this, and otherwise B font.
.ie "\f[CB]x\f[]"x" \{\
. ftr V B
. ftr VI BI
. ftr VB B
. ftr VBI BI
.\}
.el \{\
. ftr V CR
. ftr VI CI
. ftr VB CB
. ftr VBI CBI
.\}
.TH "QUICKEMU_CONF" "1" "November 17, 2023" "quickemu_conf" "Quickemu Configuration Manual"
.hy
.SH NAME
.PP
quickemu_conf - Options and parameters in the quickemu <vm>.conf
.SH DESCRIPTION
.PP
\f[B]quickemu\f[R] will create and run highly optimised desktop virtual
machines for Linux, macOS and Windows.
It uses sensible defaults, but many configuration options can be
overridden in the required configuration file, which will as a minimum
specify the path to the installation ISO and QEMU disk for the installed
VM
.SH OPTIONS
.PP
These are the options and defaults for the <vm>.conf file
.IP
.nf
\f[C]
# Lowercase variables are used in the VM config file only
boot=\[dq]efi\[dq]
cpu_cores=\[dq]\[dq]
disk_img=\[dq]\[dq]
disk_size=\[dq]\[dq]
display=\[dq]\[dq]
extra_args=\[dq]\[dq]
fixed_iso=\[dq]\[dq]
floppy=\[dq]\[dq]
guest_os=\[dq]linux\[dq]
img=\[dq]\[dq]
iso=\[dq]\[dq]
macaddr=\[dq]\[dq]
macos_release=\[dq]\[dq]
network=\[dq]\[dq]
port_forwards=()
preallocation=\[dq]off\[dq]
ram=\[dq]\[dq]
secureboot=\[dq]off\[dq]
tpm=\[dq]off\[dq]
usb_devices=()
viewer=\[dq]spicy\[dq]
ssh_port=\[dq]\[dq]
spice_port=\[dq]\[dq]
public_dir=\[dq]\[dq]
monitor=\[dq]socket\[dq]
monitor_telnet_port=\[dq]4440\[dq]
monitor_telnet_host=\[dq]localhost\[dq]
monitor_cmd=\[dq]\[dq]
serial=\[dq]socket\[dq]
serial_telnet_port=\[dq]6660\[dq]
serial_telnet_host=\[dq]localhost\[dq]
# options: ehci(USB2.0), xhci(USB3.0)
usb_controller=\[dq]ehci\[dq]
# options: ps2, usb, virtio
keyboard=\[dq]usb\[dq]
keyboard_layout=\[dq]en-us\[dq]
# options: ps2, usb, tablet, virtio
mouse=\[dq]tablet\[dq]
\f[R]
.fi
.SH EXAMPLES
.IP
.nf
\f[C]
guest_os=\[dq]linux\[dq]
disk_img=\[dq]debian-bullseye/disk.qcow2\[dq]
iso=\[dq]debian-bullseye/firmware-11.0.0-amd64-DVD-1.iso\[dq]
\f[R]
.fi
.PP
The default macOS configuration looks like this:
.IP
.nf
\f[C]
guest_os=\[dq]macos\[dq]
img=\[dq]macos-catalina/RecoveryImage.img\[dq]
disk_img=\[dq]macos-catalina/disk.qcow2\[dq]
macos_release=\[dq]catalina\[dq]
\f[R]
.fi
.IP \[bu] 2
\f[V]guest_os=\[dq]macos\[dq]\f[R] instructs Quickemu to optimise for
macOS.
.IP \[bu] 2
\f[V]macos_release=\[dq]catalina\[dq]\f[R] instructs Quickemu to
optimise for a particular macOS release.
.RS 2
.IP \[bu] 2
For example VirtIO Network and Memory Ballooning are available in Big
Sur and newer, but not previous releases.
.IP \[bu] 2
And VirtIO Block Media (disks) are supported/stable in Catalina and
newer.
.RE
.PP
The default Windows 11 configuration looks like this:
.IP
.nf
\f[C]
guest_os=\[dq]windows\[dq]
disk_img=\[dq]windows-11/disk.qcow2\[dq]
iso=\[dq]windows-11/Win11_EnglishInternational_x64.iso\[dq]
fixed_iso=\[dq]windows-11/virtio-win.iso\[dq]
tpm=\[dq]on\[dq]
secureboot=\[dq]on\[dq]
\f[R]
.fi
.IP \[bu] 2
\f[V]guest_os=\[dq]windows\[dq]\f[R] instructs \f[V]quickemu\f[R] to
optimise for Windows.
.IP \[bu] 2
\f[V]fixed_iso=\f[R] specifies the ISO image that provides VirtIO
drivers.
.IP \[bu] 2
\f[V]tpm=\[dq]on\[dq]\f[R] instructs \f[V]quickemu\f[R] to create a
software emulated TPM device using \f[V]swtpm\f[R].
.SH BIOS and EFI
.PP
Since Quickemu 2.1.0 \f[V]efi\f[R] is the default boot option.
If you want to override this behaviour then add the following line to
you VM configuration to enable legacy BIOS.
.IP \[bu] 2
\f[V]boot=\[dq]legacy\[dq]\f[R] - Enable Legacy BIOS boot
.SH Tuning CPU cores, RAM & disks
.PP
By default, Quickemu will calculate the number of CPUs cores and RAM to
allocate to a VM based on the specifications of your host computer.
You can override this default behaviour and tune the VM configuration to
your liking.
.PP
Add additional lines to your virtual machine configuration:
.IP \[bu] 2
\f[V]cpu_cores=\[dq]4\[dq]\f[R] - Specify the number of CPU cores
allocated to the VM
.IP \[bu] 2
\f[V]ram=\[dq]4G\[dq]\f[R] - Specify the amount of RAM to allocate to
the VM
.IP \[bu] 2
\f[V]disk_size=\[dq]16G\[dq]\f[R] - Specify the size of the virtual disk
allocated to the VM
.SS Disk preallocation
.PP
Preallocation mode (allowed values: \f[V]off\f[R] (default),
\f[V]metadata\f[R], \f[V]falloc\f[R], \f[V]full\f[R]).
An image with preallocated metadata is initially larger but can improve
performance when the image needs to grow.
.PP
Specify what disk preallocation should be used, if any, when creating
the system disk image by adding a line like this to your VM
configuration.
.IP \[bu] 2
\f[V]preallocation=\[dq]metadata\[dq]\f[R]
.SS CD-ROM disks
.PP
If you want to expose an ISO image from the host to guest add the
following line to the VM configuration:
.IP \[bu] 2
\f[V]fixed_iso=\[dq]/path/to/image.iso\[dq]\f[R]
.SS Floppy disks
.PP
If you\[cq]re like Alan Pope (https://popey.com) you\[cq]ll probably
want to mount a floppy disk image in the guest.
To do so add the following line to the VM configuration:
.IP \[bu] 2
\f[V]floppy=\[dq]/path/to/floppy.img\[dq]\f[R]
.SH File Sharing
.PP
All File Sharing options will only expose \f[V]\[ti]/Public\f[R] (or
localised variations) for the current user to the guest VMs.
.SS Samba \[u1F427] \[u1F34F] \[u1FA9F]
.PP
If \f[V]smbd\f[R] is available on the host, Quickemu will automatically
enable the built-in QEMU support for exposing a Samba share from the
host to the guest.
.PP
You can install the minimal Samba components on Ubuntu using:
.IP
.nf
\f[C]
sudo apt install --no-install-recommends samba
\f[R]
.fi
.PP
If everything is set up correctly, the \f[V]smbd\f[R] address will be
printed when the virtual machine is started.
For example:
.IP
.nf
\f[C]
- smbd: On guest: smb://10.0.2.4/qemu
\f[R]
.fi
.PP
If using a Windows guest, right-click on \[lq]This PC\[rq], click
\[lq]Add a network location\[rq], and paste this address, removing
\f[V]smb:\f[R] and replacing forward slashes with backslashes (in this
example \f[V]\[rs]\[rs]10.0.2.4\[rs]qemu\f[R]).
.SS SPICE WebDAV \[u1F427] \[u1FA9F]
.IP \[bu] 2
TBD
.SS VirtIO-9P \[u1F427] \[u1F34F]
.IP \[bu] 2
TBD
.SH Network port forwarding
.PP
Add an additional line to your virtual machine configuration.
For example:
.IP \[bu] 2
\f[V]port_forwards=(\[dq]8123:8123\[dq] \[dq]8888:80\[dq])\f[R]
.PP
In the example above:
.IP \[bu] 2
Port 8123 on the host is forwarded to port 8123 on the guest.
.IP \[bu] 2
Port 8888 on the host is forwarded to port 80 on the guest.
.SH Disable networking
.PP
To completely disable all network interfaces in a guest VM add this
additional line to your virtual machine configuration:
.IP \[bu] 2
\f[V]network=\[dq]none\[dq]\f[R]
.SH Restricted networking
.PP
You can isolate the guest from the host (and broader network) using the
restrict option, which will restrict networking to just the guest and
any virtual devices.
.PP
This can be used to prevent software running inside the guest from
phoning home while still providing a network inside the guest.
Add this additional line to your virtual machine configuration:
.IP \[bu] 2
\f[V]network=\[dq]restrict\[dq]\f[R]
.SH Bridged networking
.PP
Connect your virtual machine to a preconfigured network bridge.
Add an additional line to your virtual machine configuration:
.IP \[bu] 2
\f[V]network=\[dq]br0\[dq]\f[R]
.PP
If you want to have a persistent MAC address for your bridged network
interface in the guest VM you can add \f[V]macaddr\f[R] to the virtual
machine configuration.
QEMU requires that the MAC address is in the range:
\f[B]52:54:00:AB:00:00 - 52:54:00:AB:FF:FF\f[R]
.PP
So you can generate your own MAC addresses with:
.IP \[bu] 2
\f[V]macaddr=\[dq]52:54:00:AB:51:AE\[dq]\f[R]
.SH USB redirection
.PP
Quickemu supports USB redirection via SPICE pass-through and host
pass-through.
.SS SPICE redirection (recommended)
.PP
Using SPICE for USB pass-through is easiest as it doesn\[cq]t require
any elevated permission, start Quickemu with \f[V]--display spice\f[R]
and then select \f[V]Input\f[R] ->
\f[V]Select USB Device for redirection\f[R] from the menu to choose
which device(s) you want to attach to the guest.
.SS Host redirection \f[B]NOT Recommended\f[R]
.PP
\f[B]USB host redirection is not recommended\f[R], it is provided purely
for backwards compatibility to older versions of Quickemu.
Using SPICE is preferred, see above.
.PP
Add an additional line to your virtual machine configuration.
For example:
.IP \[bu] 2
\f[V]usb_devices=(\[dq]046d:082d\[dq] \[dq]046d:085e\[dq])\f[R]
.PP
In the example above:
.IP \[bu] 2
The USB device with vendor_id 046d and product_id 082d will be exposed
to the guest.
.IP \[bu] 2
The USB device with vendor_id 046d and product_id 085e will be exposed
to the guest.
.PP
If the USB devices are not writable, \f[V]quickemu\f[R] will display the
appropriate commands to modify the USB device(s) access permissions,
like this:
.IP
.nf
\f[C]
- USB: Host pass-through requested:
- Sennheiser Communications EPOS GTW 270 on bus 001 device 005 needs permission changes:
sudo chown -v root:user /dev/bus/usb/001/005
ERROR! USB permission changes are required \[u1F446]
\f[R]
.fi
.SH TPM
.PP
Since Quickemu 2.2.0 a software emulated TPM device can be added to
guest virtual machines.
Just add \f[V]tpm=\[dq]on\[dq]\f[R] to your VM configuration.
\f[V]quickget\f[R] will automatically add this line to Windows 11
virtual machines.
.SH AUTHORS
.PP
Written by Martin Wimpress.
.SH BUGS
.PP
Submit bug reports online at:
<https://github.com/quickemu-project/quickemu/issues>
.SH SEE ALSO
.PP
Full sources at: <https://github.com/quickemu-project/quickemu>
.PP
quickget(1), quickemu(1), quickgui(1)
.SH AUTHORS
Martin Wimpress.

299
docs/quickemu_conf.1.md Normal file
View File

@ -0,0 +1,299 @@
---
author: Martin Wimpress
date: November 17, 2023
footer: quickemu_conf
header: Quickemu Configuration Manual
section: 1
title: QUICKEMU_CONF
---
# NAME
quickemu_conf - Options and parameters in the quickemu \<vm\>.conf
# DESCRIPTION
**quickemu** will create and run highly optimised desktop virtual
machines for Linux, macOS and Windows. It uses sensible defaults, but
many configuration options can be overridden in the required
configuration file, which will as a minimum specify the path to the
installation ISO and QEMU disk for the installed VM
# OPTIONS
These are the options and defaults for the \<vm\>.conf file
``` bash
# Lowercase variables are used in the VM config file only
boot="efi"
cpu_cores=""
disk_img=""
disk_size=""
display=""
extra_args=""
fixed_iso=""
floppy=""
guest_os="linux"
img=""
iso=""
macaddr=""
macos_release=""
network=""
port_forwards=()
preallocation="off"
ram=""
secureboot="off"
tpm="off"
usb_devices=()
viewer="spicy"
ssh_port=""
spice_port=""
public_dir=""
monitor="socket"
monitor_telnet_port="4440"
monitor_telnet_host="localhost"
monitor_cmd=""
serial="socket"
serial_telnet_port="6660"
serial_telnet_host="localhost"
# options: ehci(USB2.0), xhci(USB3.0)
usb_controller="ehci"
# options: ps2, usb, virtio
keyboard="usb"
keyboard_layout="en-us"
# options: ps2, usb, tablet, virtio
mouse="tablet"
```
# EXAMPLES
``` bash
guest_os="linux"
disk_img="debian-bullseye/disk.qcow2"
iso="debian-bullseye/firmware-11.0.0-amd64-DVD-1.iso"
```
The default macOS configuration looks like this:
``` bash
guest_os="macos"
img="macos-catalina/RecoveryImage.img"
disk_img="macos-catalina/disk.qcow2"
macos_release="catalina"
```
- `guest_os="macos"` instructs Quickemu to optimise for macOS.
- `macos_release="catalina"` instructs Quickemu to optimise for a
particular macOS release.
- For example VirtIO Network and Memory Ballooning are available
in Big Sur and newer, but not previous releases.
- And VirtIO Block Media (disks) are supported/stable in Catalina
and newer.
The default Windows 11 configuration looks like this:
``` bash
guest_os="windows"
disk_img="windows-11/disk.qcow2"
iso="windows-11/Win11_EnglishInternational_x64.iso"
fixed_iso="windows-11/virtio-win.iso"
tpm="on"
secureboot="on"
```
- `guest_os="windows"` instructs `quickemu` to optimise for Windows.
- `fixed_iso=` specifies the ISO image that provides VirtIO drivers.
- `tpm="on"` instructs `quickemu` to create a software emulated TPM
device using `swtpm`.
# BIOS and EFI
Since Quickemu 2.1.0 `efi` is the default boot option. If you want to
override this behaviour then add the following line to you VM
configuration to enable legacy BIOS.
- `boot="legacy"` - Enable Legacy BIOS boot
# Tuning CPU cores, RAM & disks
By default, Quickemu will calculate the number of CPUs cores and RAM to
allocate to a VM based on the specifications of your host computer. You
can override this default behaviour and tune the VM configuration to
your liking.
Add additional lines to your virtual machine configuration:
- `cpu_cores="4"` - Specify the number of CPU cores allocated to the
VM
- `ram="4G"` - Specify the amount of RAM to allocate to the VM
- `disk_size="16G"` - Specify the size of the virtual disk allocated
to the VM
## Disk preallocation
Preallocation mode (allowed values: `off` (default), `metadata`,
`falloc`, `full`). An image with preallocated metadata is initially
larger but can improve performance when the image needs to grow.
Specify what disk preallocation should be used, if any, when creating
the system disk image by adding a line like this to your VM
configuration.
- `preallocation="metadata"`
## CD-ROM disks
If you want to expose an ISO image from the host to guest add the
following line to the VM configuration:
- `fixed_iso="/path/to/image.iso"`
## Floppy disks
If you're like [Alan Pope](https://popey.com) you'll probably want to
mount a floppy disk image in the guest. To do so add the following line
to the VM configuration:
- `floppy="/path/to/floppy.img"`
# File Sharing
All File Sharing options will only expose `~/Public` (or localised
variations) for the current user to the guest VMs.
## Samba 🐧 🍏 🪟
If `smbd` is available on the host, Quickemu will automatically enable
the built-in QEMU support for exposing a Samba share from the host to
the guest.
You can install the minimal Samba components on Ubuntu using:
``` bash
sudo apt install --no-install-recommends samba
```
If everything is set up correctly, the `smbd` address will be printed
when the virtual machine is started. For example:
- smbd: On guest: smb://10.0.2.4/qemu
If using a Windows guest, right-click on "This PC", click "Add a network
location", and paste this address, removing `smb:` and replacing forward
slashes with backslashes (in this example `\\10.0.2.4\qemu`).
## SPICE WebDAV 🐧 🪟
- TBD
## VirtIO-9P 🐧 🍏
- TBD
# Network port forwarding
Add an additional line to your virtual machine configuration. For
example:
- `port_forwards=("8123:8123" "8888:80")`
In the example above:
- Port 8123 on the host is forwarded to port 8123 on the guest.
- Port 8888 on the host is forwarded to port 80 on the guest.
# Disable networking
To completely disable all network interfaces in a guest VM add this
additional line to your virtual machine configuration:
- `network="none"`
# Restricted networking
You can isolate the guest from the host (and broader network) using the
restrict option, which will restrict networking to just the guest and
any virtual devices.
This can be used to prevent software running inside the guest from
phoning home while still providing a network inside the guest. Add this
additional line to your virtual machine configuration:
- `network="restrict"`
# Bridged networking
Connect your virtual machine to a preconfigured network bridge. Add an
additional line to your virtual machine configuration:
- `network="br0"`
If you want to have a persistent MAC address for your bridged network
interface in the guest VM you can add `macaddr` to the virtual machine
configuration. QEMU requires that the MAC address is in the range:
**52:54:00:AB:00:00 - 52:54:00:AB:FF:FF**
So you can generate your own MAC addresses with:
- `macaddr="52:54:00:AB:51:AE"`
# USB redirection
Quickemu supports USB redirection via SPICE pass-through and host
pass-through.
## SPICE redirection (recommended)
Using SPICE for USB pass-through is easiest as it doesn't require any
elevated permission, start Quickemu with `--display spice` and then
select `Input` -\> `Select USB Device for redirection` from the menu to
choose which device(s) you want to attach to the guest.
## Host redirection **NOT Recommended**
**USB host redirection is not recommended**, it is provided purely for
backwards compatibility to older versions of Quickemu. Using SPICE is
preferred, see above.
Add an additional line to your virtual machine configuration. For
example:
- `usb_devices=("046d:082d" "046d:085e")`
In the example above:
- The USB device with vendor_id 046d and product_id 082d will be
exposed to the guest.
- The USB device with vendor_id 046d and product_id 085e will be
exposed to the guest.
If the USB devices are not writable, `quickemu` will display the
appropriate commands to modify the USB device(s) access permissions,
like this:
- USB: Host pass-through requested:
- Sennheiser Communications EPOS GTW 270 on bus 001 device 005 needs permission changes:
sudo chown -v root:user /dev/bus/usb/001/005
ERROR! USB permission changes are required 👆
# TPM
Since Quickemu 2.2.0 a software emulated TPM device can be added to
guest virtual machines. Just add `tpm="on"` to your VM configuration.
`quickget` will automatically add this line to Windows 11 virtual
machines.
# AUTHORS
Written by Martin Wimpress.
# BUGS
Submit bug reports online at:
<https://github.com/quickemu-project/quickemu/issues>
# SEE ALSO
Full sources at: <https://github.com/quickemu-project/quickemu>
quickget(1), quickemu(1), quickgui(1)

632
docs/quickget.1 Normal file
View File

@ -0,0 +1,632 @@
.\" Automatically generated by Pandoc 2.17.1.1
.\"
.\" Define V font for inline verbatim, using C font in formats
.\" that render this, and otherwise B font.
.ie "\f[CB]x\f[]"x" \{\
. ftr V B
. ftr VI BI
. ftr VB B
. ftr VBI BI
.\}
.el \{\
. ftr V CR
. ftr VI CI
. ftr VB CB
. ftr VBI CBI
.\}
.TH "QUICKGET" "1" "November 17, 2023" "quickget" "Quickget User Manual"
.hy
.SH NAME
.PP
quickget - download and prepare materials for building a quickemu VM
.SH SYNOPSIS
.PP
\f[B]quickget\f[R] [\f[I]os\f[R]] [\f[I]release\f[R]]
[\f[I]edition\f[R]] | [\f[I]OPTION\f[R]]*
.SH DESCRIPTION
.PP
\f[B]quickget\f[R] will download the requisite materials and prepare a
configuration for \f[V]quickemu\f[R] to use to build and run
.SH OPTIONS
.TP
\f[B]version | -version | \[en]version\f[R]
show version (from Quickemu)
.TP
\f[B]list | list_csv | list_json\f[R]
provide a csv list of all supported guest OSes, versions and variants.
.TP
\f[B]\f[VB]--show-iso-url\f[B] | -s\f[R] {\f[B]os\f[R]} {\f[B]release\f[R]} [\f[B]edition\f[R]]
show ISO download URL
.TP
\f[B]\f[VB]--test-iso-url\f[B] | -t\f[R] {\f[B]os\f[R]} {\f[B]release\f[R]} [\f[B]edition\f[R]]
test if ISO is available
.TP
\f[B]\f[VB]--open-distro-homepage\f[B] | -o\f[R] {\f[B]os\f[R]}
open OS homepage in browser
.TP
\f[B][OS] [Release] [Edition]\f[R]
specify the OS and release (and optional edition) if insufficient input
is provided a list of missing options will be reported and the script
will exit.
Editions may not apply and will be defaulted if not provided.
.SH NOTES
.SS Ubuntu Guest
.PP
\f[V]quickget\f[R] will automatically download an Ubuntu release and
create the virtual machine configuration.
.IP
.nf
\f[C]
quickget ubuntu 22.04
quickemu --vm ubuntu-22.04.conf
\f[R]
.fi
.IP \[bu] 2
Complete the installation as normal.
.IP \[bu] 2
Post-install:
.RS 2
.IP \[bu] 2
Install the SPICE agent (\f[V]spice-vdagent\f[R]) in the guest to enable
copy/paste and USB redirection
.RS 2
.IP \[bu] 2
\f[V]sudo apt install spice-vdagent\f[R]
.RE
.IP \[bu] 2
Install the SPICE WebDAV agent (\f[V]spice-webdavd\f[R]) in the guest to
enable file sharing.
.RS 2
.IP \[bu] 2
\f[V]sudo apt install spice-webdavd\f[R]
.RE
.RE
.SS Ubuntu devel (daily-live) images
.PP
\f[V]quickget\f[R] can also download/refresh devel images via
\f[V]zsync\f[R] for Ubuntu developers and testers.
.IP
.nf
\f[C]
quickget ubuntu devel
quickemu --vm ubuntu-devel.conf
\f[R]
.fi
.PP
You can run \f[V]quickget ubuntu devel\f[R] to refresh your daily
development image as often as you like, it will even automatically
switch to a new series.
.SS Ubuntu Flavours
.PP
All the official Ubuntu flavours are supported, just replace
\f[V]ubuntu\f[R] with your preferred flavour.
.IP \[bu] 2
\f[V]edubuntu\f[R] (Edubuntu)
.IP \[bu] 2
\f[V]kubuntu\f[R] (Kubuntu)
.IP \[bu] 2
\f[V]lubuntu\f[R] (Lubuntu)
.IP \[bu] 2
\f[V]ubuntu-budgie\f[R] (Ubuntu Budgie)
.IP \[bu] 2
\f[V]ubuntucinnamon\f[R] (Ubuntu Cinnamon)
.IP \[bu] 2
\f[V]ubuntukylin\f[R] (Ubuntu Kylin)
.IP \[bu] 2
\f[V]ubuntu-mate\f[R] (Ubuntu MATE)
.IP \[bu] 2
\f[V]ubuntustudio\f[R] (Ubuntu Studio)
.IP \[bu] 2
\f[V]ubuntu\f[R] (Ubuntu)
.IP \[bu] 2
\f[V]ubuntu-unity\f[R] (Ubuntu Unity)
.IP \[bu] 2
\f[V]xubuntu\f[R] (Xubuntu)
.PP
You can also use \f[V]quickget\f[R] with options to:
.IP
.nf
\f[C]
# show an OS ISO download URL for {os} {release} [edition]
quickget --show-iso-url fedora 38 Silverblue
# test if and OS ISO is available for {os} {release} [edition]
quickget --test-iso-url nixos 23.05 plasma5
# open an OS distribution homepage in a browser
quickget --open-distro-homepage ubuntu-mate
\f[R]
.fi
.PP
The \f[V]--show-iso-url\f[R] and \f[V]--test-iso-url\f[R] options
\f[B]do not\f[R] work for \f[V]Windows\f[R] (\f[V]quickget\f[R] will
begin downloading the requested release and edition of windows)
.SS Other Operating Systems
.PP
\f[V]quickget\f[R] also supports:
.IP \[bu] 2
\f[V]agarimos\f[R] (AgarimOS)
.IP \[bu] 2
\f[V]alma\f[R] (Alma Linux)
.IP \[bu] 2
\f[V]alpine\f[R] (Alpine Linux)
.IP \[bu] 2
\f[V]android\f[R] (Android x86)
.IP \[bu] 2
\f[V]antix\f[R] (Antix)
.IP \[bu] 2
\f[V]archcraft\f[R] (Archcraft)
.IP \[bu] 2
\f[V]archlinux\f[R] (Arch Linux)
.IP \[bu] 2
\f[V]arcolinux\f[R] (Arco Linux)
.IP \[bu] 2
\f[V]artixlinux\f[R] (Artix Linux)
.IP \[bu] 2
\f[V]athenaos\f[R] (Athenaos)
.IP \[bu] 2
\f[V]batocera\f[R] (Batocera)
.IP \[bu] 2
\f[V]bazzite\f[R] (Bazzite)
.IP \[bu] 2
\f[V]biglinux\f[R] (BigLinux)
.IP \[bu] 2
\f[V]blendos\f[R] (BlendOS)
.IP \[bu] 2
\f[V]bodhi\f[R] (Bodhi Linux)
.IP \[bu] 2
\f[V]bunsenlabs\f[R] (Bunsenlabs)
.IP \[bu] 2
\f[V]cachyos\f[R] (CachyOS)
.IP \[bu] 2
\f[V]centos-stream\f[R] (CentOS Stream)
.IP \[bu] 2
\f[V]cereus\f[R] (Cereus Linux)
.IP \[bu] 2
\f[V]chimera\f[R] (Chimera Linux)
.IP \[bu] 2
\f[V]debian\f[R] (Debian)
.IP \[bu] 2
\f[V]deepin\f[R] (Deepin)
.IP \[bu] 2
\f[V]devuan\f[R] (Devuan)
.IP \[bu] 2
\f[V]dietpi\f[R] (DietPi)
.IP \[bu] 2
\f[V]dragonflybsd\f[R] (DragonFlyBSD)
.IP \[bu] 2
\f[V]elementary\f[R] (elementary OS)
.IP \[bu] 2
\f[V]endeavouros\f[R] (EndeavourOS)
.IP \[bu] 2
\f[V]endless\f[R] (Endless OS)
.IP \[bu] 2
\f[V]fedora\f[R] (Fedora)
.IP \[bu] 2
\f[V]freebsd\f[R] (FreeBSD)
.IP \[bu] 2
\f[V]freedos\f[R] (FreeDOS)
.IP \[bu] 2
\f[V]fvoid\f[R] (F-Void)
.IP \[bu] 2
\f[V]gabeeos\f[R] (gabeeOS Linux)
.IP \[bu] 2
\f[V]garuda\f[R] (Garuda Linux)
.IP \[bu] 2
\f[V]gentoo\f[R] (Gentoo)
.IP \[bu] 2
\f[V]ghostbsd\f[R] (GhostBSD)
.IP \[bu] 2
\f[V]haiku\f[R] (Haiku)
.IP \[bu] 2
\f[V]holoiso\f[R] (Steam OS HoloISO)
.IP \[bu] 2
\f[V]kali\f[R] (Kali)
.IP \[bu] 2
\f[V]kdeneon\f[R] (KDE Neon)
.IP \[bu] 2
\f[V]kolibrios\f[R] (KolibriOS)
.IP \[bu] 2
\f[V]linuxlite\f[R] (Linux Lite)
.IP \[bu] 2
\f[V]linuxmint\f[R] (Linux Mint)
.IP \[bu] 2
\f[V]lmde\f[R] (Linux Mint Debian Edition)
.IP \[bu] 2
\f[V]mageia\f[R] (Mageia)
.IP \[bu] 2
\f[V]manjaro\f[R] (Manjaro)
.IP \[bu] 2
\f[V]miyolinux\f[R] (Miyo Linux)
.IP \[bu] 2
\f[V]mxlinux\f[R] (MX Linux)
.IP \[bu] 2
\f[V]netboot\f[R] (netboot.xyz)
.IP \[bu] 2
\f[V]netbsd\f[R] (NetBSD)
.IP \[bu] 2
\f[V]nixos\f[R] (NixOS)
.IP \[bu] 2
\f[V]openbsd\f[R] (OpenBSD)
.IP \[bu] 2
\f[V]openindiana\f[R] (OpenIndiana)
.IP \[bu] 2
\f[V]opensuse\f[R] (openSUSE)
.IP \[bu] 2
\f[V]oraclelinux\f[R] (Oracle Linux)
.IP \[bu] 2
\f[V]peppermint\f[R] (PeppermintOS)
.IP \[bu] 2
\f[V]popos\f[R] (Pop!_OS)
.IP \[bu] 2
\f[V]porteus\f[R] (Porteus)
.IP \[bu] 2
\f[V]pureos\f[R] (PureOS)
.IP \[bu] 2
\f[V]reactos\f[R] (ReactOS)
.IP \[bu] 2
\f[V]rebornos\f[R] (RebornOS)
.IP \[bu] 2
\f[V]rockylinux\f[R] (Rocky Linux)
.IP \[bu] 2
\f[V]siduction\f[R] (Siduction)
.IP \[bu] 2
\f[V]slackware\f[R] (Slackware)
.IP \[bu] 2
\f[V]slax\f[R] (Slax)
.IP \[bu] 2
\f[V]slitaz\f[R] (SliTaz GNU/Linux)
.IP \[bu] 2
\f[V]solus\f[R] (Solus)
.IP \[bu] 2
\f[V]sparkylinux\f[R] (SparkyLinux)
.IP \[bu] 2
\f[V]spiral\f[R] (SpiralLinux)
.IP \[bu] 2
\f[V]tails\f[R] (Tails)
.IP \[bu] 2
\f[V]tinycore\f[R] (Tiny Core Linux)
.IP \[bu] 2
\f[V]trisquel\f[R] (Trisquel)
.IP \[bu] 2
\f[V]truenas-core\f[R] (TrueNAS Core)
.IP \[bu] 2
\f[V]truenas-scale\f[R] (TrueNAS Scale)
.IP \[bu] 2
\f[V]tuxedoos\f[R] (TuxedoOS)
.IP \[bu] 2
\f[V]vanillaos\f[R] (Vanilla OS)
.IP \[bu] 2
\f[V]ventoy\f[R] (Ventoy)
.IP \[bu] 2
\f[V]voidpup\f[R] (Void Puppy)
.IP \[bu] 2
\f[V]void\f[R] (Void Linux)
.IP \[bu] 2
\f[V]vxlinux\f[R] (VX Linux)
.IP \[bu] 2
\f[V]xerolinux\f[R] (XeroLinux)
.IP \[bu] 2
\f[V]zorin\f[R] (Zorin OS)
.PP
Or you can download a Linux image and manually create a VM
configuration.
.IP \[bu] 2
Download a .iso image of a Linux distribution
.IP \[bu] 2
Create a VM configuration file; for example
\f[V]debian-bullseye.conf\f[R]
.IP
.nf
\f[C]
guest_os=\[dq]linux\[dq]
disk_img=\[dq]debian-bullseye/disk.qcow2\[dq]
iso=\[dq]debian-bullseye/firmware-11.0.0-amd64-DVD-1.iso\[dq]
\f[R]
.fi
.IP \[bu] 2
Use \f[V]quickemu\f[R] to start the virtual machine:
.IP
.nf
\f[C]
quickemu --vm debian-bullseye.conf
\f[R]
.fi
.IP \[bu] 2
Complete the installation as normal.
.IP \[bu] 2
Post-install:
.RS 2
.IP \[bu] 2
Install the SPICE agent (\f[V]spice-vdagent\f[R]) in the guest to enable
copy/paste and USB redirection.
.IP \[bu] 2
Install the SPICE WebDAV agent (\f[V]spice-webdavd\f[R]) in the guest to
enable file sharing.
.RE
.SS macOS Guest
.PP
\f[V]quickget\f[R] automatically downloads a macOS recovery image and
creates a virtual machine configuration.
.IP
.nf
\f[C]
quickget macos catalina
quickemu --vm macos-catalina.conf
\f[R]
.fi
.PP
macOS \f[V]high-sierra\f[R], \f[V]mojave\f[R], \f[V]catalina\f[R],
\f[V]big-sur\f[R], \f[V]monterey\f[R] and \f[V]ventura\f[R] are
supported.
.IP \[bu] 2
Use cursor keys and enter key to select the \f[B]macOS Base System\f[R]
.IP \[bu] 2
From \f[B]macOS Utilities\f[R]
.RS 2
.IP \[bu] 2
Click \f[B]Disk Utility\f[R] and \f[B]Continue\f[R]
.RS 2
.IP \[bu] 2
Select \f[V]QEMU HARDDISK Media\f[R] (\[ti]103.08GB) from the list (on
Big Sur and above use \f[V]Apple Inc. VirtIO Block Device\f[R]) and
click \f[B]Erase\f[R].
.IP \[bu] 2
Enter a \f[V]Name:\f[R] for the disk
.IP \[bu] 2
If you are installing macOS Mojave or later (Catalina, Big Sur, Monterey
and Ventura), choose any of the APFS options as the filesystem.
MacOS Extended may not work.
.RE
.IP \[bu] 2
Click \f[B]Erase\f[R].
.IP \[bu] 2
Click \f[B]Done\f[R].
.IP \[bu] 2
Close Disk Utility
.RE
.IP \[bu] 2
From \f[B]macOS Utilities\f[R]
.RS 2
.IP \[bu] 2
Click \f[B]Reinstall macOS\f[R] and \f[B]Continue\f[R]
.RE
.IP \[bu] 2
Complete the installation as you normally would.
.RS 2
.IP \[bu] 2
On the first reboot use cursor keys and enter key to select \f[B]macOS
Installer\f[R]
.IP \[bu] 2
On the subsequent reboots use cursor keys and enter key to select the
disk you named
.RE
.IP \[bu] 2
Once you have finished installing macOS you will be presented with an
the out-of-the-box first-start wizard to configure various options and
set up your username and password
.IP \[bu] 2
OPTIONAL: After you have concluded the out-of-the-box wizard, you may
want to enable the TRIM feature that the computer industry created for
SSD disks.
This feature in our macOS installation will allow QuickEmu to compact
(shrink) your macOS disk image whenever you delete files inside the
Virtual Machine.
Without this step your macOS disk image will only ever get larger and
will not shrink even when you delete lots of data inside macOS.
.RS 2
.IP \[bu] 2
To enable TRIM, open the Terminal application and type the following
command followed by pressing enter to tell macos to use the TRIM command
on the hard disk when files are deleted:
.RE
.IP
.nf
\f[C]
sudo trimforce enable
\f[R]
.fi
.PP
You will be prompted to enter your account\[cq]s password to gain the
privilege needed.
Once you\[cq]ve entered your password and pressed enter the command will
request confirmation in the form of two questions that require you to
type y (for a \[lq]yes\[rq] response) followed by enter to confirm.
If you press enter without first typing y the system will consider that
a negative response as though you said \[lq]no\[rq]:
.IP
.nf
\f[C]
IMPORTANT NOTICE: This tool force-enables TRIM for all relevant attached devices, even though such devices may not have been validated for data integrity while using TRIM. Use of this tool to enable TRIM may result in unintended data loss or data corruption. It should not be used in a commercial operating environment or with important data. Before using this tool, you should back up all of your data and regularly back up data while TRIM is enabled. This tool is provided on an \[dq]as is\[dq] basis. APPLE MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THIS TOOL OR ITS USE ALONE OR IN COMBINATION WITH YOUR DEVICES, SYSTEMS, OR SERVICES. BY USING THIS TOOL TO ENABLE TRIM, YOU AGREE THAT, TO THE EXTENT PERMITTED BY APPLICABLE LAW, USE OF THE TOOL IS AT YOUR SOLE RISK AND THAT THE ENTIRE RISK AS TO SATISFACTORY QUALITY, PERFORMANCE, ACCURACY AND EFFORT IS WITH YOU.
Are you sure you with to proceed (y/N)?
\f[R]
.fi
.PP
And a second confirmation once you\[cq]ve confirmed the previous one:
.IP
.nf
\f[C]
Your system will immediately reboot when this is complete.
Is this OK (y/N)?
\f[R]
.fi
.PP
As the last message states, your system will automatically reboot as
soon as the command completes.
.PP
The default macOS configuration looks like this:
.IP
.nf
\f[C]
guest_os=\[dq]macos\[dq]
img=\[dq]macos-catalina/RecoveryImage.img\[dq]
disk_img=\[dq]macos-catalina/disk.qcow2\[dq]
macos_release=\[dq]catalina\[dq]
\f[R]
.fi
.IP \[bu] 2
\f[V]guest_os=\[dq]macos\[dq]\f[R] instructs Quickemu to optimise for
macOS.
.IP \[bu] 2
\f[V]macos_release=\[dq]catalina\[dq]\f[R] instructs Quickemu to
optimise for a particular macOS release.
.RS 2
.IP \[bu] 2
For example VirtIO Network and Memory Ballooning are available in Big
Sur and newer, but not previous releases.
.IP \[bu] 2
And VirtIO Block Media (disks) are supported/stable in Catalina and
newer.
.RE
.SS macOS compatibility
.PP
There are some considerations when running macOS via Quickemu.
.IP \[bu] 2
Supported macOS releases:
.RS 2
.IP \[bu] 2
High Sierra
.IP \[bu] 2
Mojave
.IP \[bu] 2
Catalina \f[B](Recommended)\f[R]
.IP \[bu] 2
Big Sur
.IP \[bu] 2
Monterey
.IP \[bu] 2
Ventura
.RE
.IP \[bu] 2
\f[V]quickemu\f[R] will automatically download the required
OpenCore (https://github.com/acidanthera/OpenCorePkg) bootloader and
OVMF firmware from OSX-KVM (https://github.com/kholia/OSX-KVM).
.IP \[bu] 2
Optimised by default, but no GPU acceleration is available.
.RS 2
.IP \[bu] 2
Host CPU vendor is detected and guest CPU is optimised accordingly.
.IP \[bu] 2
VirtIO Block
Media (https://www.kraxel.org/blog/2019/06/macos-qemu-guest/) is used
for the system disk where supported.
.IP \[bu] 2
VirtIO \f[V]usb-tablet\f[R] (http://philjordan.eu/osx-virt/) is used for
the mouse.
.IP \[bu] 2
VirtIO Network (\f[V]virtio-net\f[R]) is supported and enabled on macOS
Big Sur and newer but previous releases use \f[V]vmxnet3\f[R].
.IP \[bu] 2
VirtIO Memory Ballooning is supported and enabled on macOS Big Sur and
newer but disabled for other support macOS releases.
.RE
.IP \[bu] 2
USB host and SPICE pass-through is:
.RS 2
.IP \[bu] 2
UHCI (USB 2.0) on macOS Catalina and earlier.
.IP \[bu] 2
XHCI (USB 3.0) on macOS Big Sur and newer.
.RE
.IP \[bu] 2
Display resolution can only be changed via macOS System Preferences.
.IP \[bu] 2
\f[B]Full Duplex audio requires VoodooHDA
OC (https://github.com/chris1111/VoodooHDA-OC) or pass-through a USB
audio-device to the macOS guest VM\f[R].
.IP \[bu] 2
NOTE!
Gatekeeper (https://disable-gatekeeper.github.io/) and System Integrity
Protection
(SIP) (https://developer.apple.com/documentation/security/disabling_and_enabling_system_integrity_protection)
need to be disabled to install VoodooHDA OC
.IP \[bu] 2
File sharing between guest and host is available via
virtio-9p (https://wiki.qemu.org/Documentation/9psetup) and SPICE
webdavd (https://gitlab.gnome.org/GNOME/phodav/-/merge_requests/24).
.IP \[bu] 2
Copy/paste via SPICE agent is \f[B]not available on macOS\f[R].
.SS macOS App Store
.PP
If you see \f[I]\[lq]Your device or computer could not be
verified\[rq]\f[R] when you try to login to the App Store, make sure
that your wired ethernet device is \f[V]en0\f[R].
Use \f[V]ifconfig\f[R] in a terminal to verify this.
.PP
If the wired ethernet device is not \f[V]en0\f[R], then then go to
\f[I]System Preferences\f[R] -> \f[I]Network\f[R], delete all the
network devices and apply the changes.
Next, open a terminal and run the following:
.IP
.nf
\f[C]
sudo rm /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist
\f[R]
.fi
.PP
Now reboot, and the App Store should work.
.SS Windows 8, 10 & 11 Guests
.PP
\f[V]quickget\f[R] can download
Windows10 (https://www.microsoft.com/software-download/windows10) and
Windows 11 (https://www.microsoft.com/software-download/windows11)
automatically and create an optimised virtual machine configuration.
This configuration also includes the VirtIO drivers for
Windows (https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/).
.PP
Windows 8.1 is also supported but doesn\[cq]t feature any automated
installation or driver optimisation.
.IP
.nf
\f[C]
quickget windows 11
quickemu --vm windows-11.conf
\f[R]
.fi
.IP \[bu] 2
Complete the installation as you normally would.
.IP \[bu] 2
All relevant drivers and services should be installed automatically.
.IP \[bu] 2
A local administrator user account is automatically created, with these
credentials:
.RS 2
.IP \[bu] 2
Username: \f[V]Quickemu\f[R]
.IP \[bu] 2
Password: \f[V]quickemu\f[R]
.RE
.PP
The default Windows 11 configuration looks like this:
.IP
.nf
\f[C]
guest_os=\[dq]windows\[dq]
disk_img=\[dq]windows-11/disk.qcow2\[dq]
iso=\[dq]windows-11/windows-11.iso\[dq]
fixed_iso=\[dq]windows-11/virtio-win.iso\[dq]
tpm=\[dq]on\[dq]
secureboot=\[dq]off\[dq]
\f[R]
.fi
.IP \[bu] 2
\f[V]guest_os=\[dq]windows\[dq]\f[R] instructs \f[V]quickemu\f[R] to
optimise for Windows.
.IP \[bu] 2
\f[V]fixed_iso=\f[R] specifies the ISO image that provides VirtIO
drivers.
.IP \[bu] 2
\f[V]tpm=\[dq]on\[dq]\f[R] instructs \f[V]quickemu\f[R] to create a
software emulated TPM device using \f[V]swtpm\f[R].
.SH AUTHORS
.PP
Written by Martin Wimpress.
.SH BUGS
.PP
Submit bug reports online at:
<https://github.com/quickemu-project/quickemu/issues>
.SH SEE ALSO
.PP
Full sources at: <https://github.com/quickemu-project/quickemu>
.PP
quickemu(1), quickemu_conf(1), quickgui(1)
.SH AUTHORS
Martin Wimpress.

431
docs/quickget.1.md Normal file
View File

@ -0,0 +1,431 @@
---
author: Martin Wimpress
date: November 17, 2023
footer: quickget
header: Quickget User Manual
section: 1
title: QUICKGET
---
# NAME
quickget - download and prepare materials for building a quickemu VM
# SYNOPSIS
**quickget** \[*os*\] \[*release*\] \[*edition*\] \| \[*OPTION*\]\*
# DESCRIPTION
**quickget** will download the requisite materials and prepare a
configuration for `quickemu` to use to build and run
# OPTIONS
**version \| -version \| --version**
: show version (from Quickemu)
**list \| list_csv \| list_json**
: provide a csv list of all supported guest OSes, versions and
variants.
**`--show-iso-url` \| -s** {**os**} {**release**} \[**edition**\]
: show ISO download URL
**`--test-iso-url` \| -t** {**os**} {**release**} \[**edition**\]
: test if ISO is available
**`--open-distro-homepage` \| -o** {**os**}
: open OS homepage in browser
**\[OS\] \[Release\] \[Edition\]**
: specify the OS and release (and optional edition) if insufficient
input is provided a list of missing options will be reported and the
script will exit. Editions may not apply and will be defaulted if
not provided.
# NOTES
## Ubuntu Guest
`quickget` will automatically download an Ubuntu release and create the
virtual machine configuration.
``` bash
quickget ubuntu 22.04
quickemu --vm ubuntu-22.04.conf
```
- Complete the installation as normal.
- Post-install:
- Install the SPICE agent (`spice-vdagent`) in the guest to enable
copy/paste and USB redirection
- `sudo apt install spice-vdagent`
- Install the SPICE WebDAV agent (`spice-webdavd`) in the guest to
enable file sharing.
- `sudo apt install spice-webdavd`
### Ubuntu devel (daily-live) images
`quickget` can also download/refresh devel images via `zsync` for Ubuntu
developers and testers.
``` bash
quickget ubuntu devel
quickemu --vm ubuntu-devel.conf
```
You can run `quickget ubuntu devel` to refresh your daily development
image as often as you like, it will even automatically switch to a new
series.
### Ubuntu Flavours
All the official Ubuntu flavours are supported, just replace `ubuntu`
with your preferred flavour.
- `edubuntu` (Edubuntu)
- `kubuntu` (Kubuntu)
- `lubuntu` (Lubuntu)
- `ubuntu-budgie` (Ubuntu Budgie)
- `ubuntucinnamon` (Ubuntu Cinnamon)
- `ubuntukylin` (Ubuntu Kylin)
- `ubuntu-mate` (Ubuntu MATE)
- `ubuntustudio` (Ubuntu Studio)
- `ubuntu` (Ubuntu)
- `ubuntu-unity` (Ubuntu Unity)
- `xubuntu` (Xubuntu)
You can also use `quickget` with options to:
``` shell
# show an OS ISO download URL for {os} {release} [edition]
quickget --show-iso-url fedora 38 Silverblue
# test if and OS ISO is available for {os} {release} [edition]
quickget --test-iso-url nixos 23.05 plasma5
# open an OS distribution homepage in a browser
quickget --open-distro-homepage ubuntu-mate
```
The `--show-iso-url` and `--test-iso-url` options **do not** work for
`Windows` (`quickget` will begin downloading the requested release and
edition of windows)
## Other Operating Systems
`quickget` also supports:
- `agarimos` (AgarimOS)
- `alma` (Alma Linux)
- `alpine` (Alpine Linux)
- `android` (Android x86)
- `antix` (Antix)
- `archcraft` (Archcraft)
- `archlinux` (Arch Linux)
- `arcolinux` (Arco Linux)
- `artixlinux` (Artix Linux)
- `athenaos` (Athenaos)
- `batocera` (Batocera)
- `bazzite` (Bazzite)
- `biglinux` (BigLinux)
- `blendos` (BlendOS)
- `bodhi` (Bodhi Linux)
- `bunsenlabs` (Bunsenlabs)
- `cachyos` (CachyOS)
- `centos-stream` (CentOS Stream)
- `cereus` (Cereus Linux)
- `chimera` (Chimera Linux)
- `debian` (Debian)
- `deepin` (Deepin)
- `devuan` (Devuan)
- `dietpi` (DietPi)
- `dragonflybsd` (DragonFlyBSD)
- `elementary` (elementary OS)
- `endeavouros` (EndeavourOS)
- `endless` (Endless OS)
- `fedora` (Fedora)
- `freebsd` (FreeBSD)
- `freedos` (FreeDOS)
- `fvoid` (F-Void)
- `gabeeos` (gabeeOS Linux)
- `garuda` (Garuda Linux)
- `gentoo` (Gentoo)
- `ghostbsd` (GhostBSD)
- `haiku` (Haiku)
- `holoiso` (Steam OS HoloISO)
- `kali` (Kali)
- `kdeneon` (KDE Neon)
- `kolibrios` (KolibriOS)
- `linuxlite` (Linux Lite)
- `linuxmint` (Linux Mint)
- `lmde` (Linux Mint Debian Edition)
- `mageia` (Mageia)
- `manjaro` (Manjaro)
- `miyolinux` (Miyo Linux)
- `mxlinux` (MX Linux)
- `netboot` (netboot.xyz)
- `netbsd` (NetBSD)
- `nixos` (NixOS)
- `openbsd` (OpenBSD)
- `openindiana` (OpenIndiana)
- `opensuse` (openSUSE)
- `oraclelinux` (Oracle Linux)
- `peppermint` (PeppermintOS)
- `popos` (Pop!\_OS)
- `porteus` (Porteus)
- `pureos` (PureOS)
- `reactos` (ReactOS)
- `rebornos` (RebornOS)
- `rockylinux` (Rocky Linux)
- `siduction` (Siduction)
- `slackware` (Slackware)
- `slax` (Slax)
- `slitaz` (SliTaz GNU/Linux)
- `solus` (Solus)
- `sparkylinux` (SparkyLinux)
- `spiral` (SpiralLinux)
- `tails` (Tails)
- `tinycore` (Tiny Core Linux)
- `trisquel` (Trisquel)
- `truenas-core` (TrueNAS Core)
- `truenas-scale` (TrueNAS Scale)
- `tuxedoos` (TuxedoOS)
- `vanillaos` (Vanilla OS)
- `ventoy` (Ventoy)
- `voidpup` (Void Puppy)
- `void` (Void Linux)
- `vxlinux` (VX Linux)
- `xerolinux` (XeroLinux)
- `zorin` (Zorin OS)
Or you can download a Linux image and manually create a VM
configuration.
- Download a .iso image of a Linux distribution
- Create a VM configuration file; for example `debian-bullseye.conf`
``` bash
guest_os="linux"
disk_img="debian-bullseye/disk.qcow2"
iso="debian-bullseye/firmware-11.0.0-amd64-DVD-1.iso"
```
- Use `quickemu` to start the virtual machine:
``` bash
quickemu --vm debian-bullseye.conf
```
- Complete the installation as normal.
- Post-install:
- Install the SPICE agent (`spice-vdagent`) in the guest to enable
copy/paste and USB redirection.
- Install the SPICE WebDAV agent (`spice-webdavd`) in the guest to
enable file sharing.
## macOS Guest
`quickget` automatically downloads a macOS recovery image and creates a
virtual machine configuration.
``` bash
quickget macos catalina
quickemu --vm macos-catalina.conf
```
macOS `high-sierra`, `mojave`, `catalina`, `big-sur`, `monterey` and
`ventura` are supported.
- Use cursor keys and enter key to select the **macOS Base System**
- From **macOS Utilities**
- Click **Disk Utility** and **Continue**
- Select `QEMU HARDDISK Media` (\~103.08GB) from the list (on
Big Sur and above use `Apple Inc. VirtIO Block Device`) and
click **Erase**.
- Enter a `Name:` for the disk
- If you are installing macOS Mojave or later (Catalina, Big
Sur, Monterey and Ventura), choose any of the APFS options
as the filesystem. MacOS Extended may not work.
- Click **Erase**.
- Click **Done**.
- Close Disk Utility
- From **macOS Utilities**
- Click **Reinstall macOS** and **Continue**
- Complete the installation as you normally would.
- On the first reboot use cursor keys and enter key to select
**macOS Installer**
- On the subsequent reboots use cursor keys and enter key to
select the disk you named
- Once you have finished installing macOS you will be presented with
an the out-of-the-box first-start wizard to configure various
options and set up your username and password
- OPTIONAL: After you have concluded the out-of-the-box wizard, you
may want to enable the TRIM feature that the computer industry
created for SSD disks. This feature in our macOS installation will
allow QuickEmu to compact (shrink) your macOS disk image whenever
you delete files inside the Virtual Machine. Without this step your
macOS disk image will only ever get larger and will not shrink even
when you delete lots of data inside macOS.
- To enable TRIM, open the Terminal application and type the
following command followed by pressing
`<kbd>`{=html}enter`</kbd>`{=html} to tell macos to use the TRIM
command on the hard disk when files are deleted:
``` bash
sudo trimforce enable
```
You will be prompted to enter your account's password to gain the
privilege needed. Once you've entered your password and pressed
`<kbd>`{=html}enter`</kbd>`{=html} the command will request confirmation
in the form of two questions that require you to type
`<kbd>`{=html}y`</kbd>`{=html} (for a "yes" response) followed by
`<kbd>`{=html}enter`</kbd>`{=html} to confirm. If you press
`<kbd>`{=html}enter`</kbd>`{=html} without first typing
`<kbd>`{=html}y`</kbd>`{=html} the system will consider that a negative
response as though you said "no":
``` plain
IMPORTANT NOTICE: This tool force-enables TRIM for all relevant attached devices, even though such devices may not have been validated for data integrity while using TRIM. Use of this tool to enable TRIM may result in unintended data loss or data corruption. It should not be used in a commercial operating environment or with important data. Before using this tool, you should back up all of your data and regularly back up data while TRIM is enabled. This tool is provided on an "as is" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THIS TOOL OR ITS USE ALONE OR IN COMBINATION WITH YOUR DEVICES, SYSTEMS, OR SERVICES. BY USING THIS TOOL TO ENABLE TRIM, YOU AGREE THAT, TO THE EXTENT PERMITTED BY APPLICABLE LAW, USE OF THE TOOL IS AT YOUR SOLE RISK AND THAT THE ENTIRE RISK AS TO SATISFACTORY QUALITY, PERFORMANCE, ACCURACY AND EFFORT IS WITH YOU.
Are you sure you with to proceed (y/N)?
```
And a second confirmation once you've confirmed the previous one:
``` plain
Your system will immediately reboot when this is complete.
Is this OK (y/N)?
```
As the last message states, your system will automatically reboot as
soon as the command completes.
The default macOS configuration looks like this:
``` bash
guest_os="macos"
img="macos-catalina/RecoveryImage.img"
disk_img="macos-catalina/disk.qcow2"
macos_release="catalina"
```
- `guest_os="macos"` instructs Quickemu to optimise for macOS.
- `macos_release="catalina"` instructs Quickemu to optimise for a
particular macOS release.
- For example VirtIO Network and Memory Ballooning are available
in Big Sur and newer, but not previous releases.
- And VirtIO Block Media (disks) are supported/stable in Catalina
and newer.
### macOS compatibility
There are some considerations when running macOS via Quickemu.
- Supported macOS releases:
- High Sierra
- Mojave
- Catalina **(Recommended)**
- Big Sur
- Monterey
- Ventura
- `quickemu` will automatically download the required
[OpenCore](https://github.com/acidanthera/OpenCorePkg) bootloader
and OVMF firmware from [OSX-KVM](https://github.com/kholia/OSX-KVM).
- Optimised by default, but no GPU acceleration is available.
- Host CPU vendor is detected and guest CPU is optimised
accordingly.
- [VirtIO Block
Media](https://www.kraxel.org/blog/2019/06/macos-qemu-guest/) is
used for the system disk where supported.
- [VirtIO `usb-tablet`](http://philjordan.eu/osx-virt/) is used
for the mouse.
- VirtIO Network (`virtio-net`) is supported and enabled on macOS
Big Sur and newer but previous releases use `vmxnet3`.
- VirtIO Memory Ballooning is supported and enabled on macOS Big
Sur and newer but disabled for other support macOS releases.
- USB host and SPICE pass-through is:
- UHCI (USB 2.0) on macOS Catalina and earlier.
- XHCI (USB 3.0) on macOS Big Sur and newer.
- Display resolution can only be changed via macOS System Preferences.
- **Full Duplex audio requires [VoodooHDA
OC](https://github.com/chris1111/VoodooHDA-OC) or pass-through a USB
audio-device to the macOS guest VM**.
- NOTE! [Gatekeeper](https://disable-gatekeeper.github.io/) and
[System Integrity Protection
(SIP)](https://developer.apple.com/documentation/security/disabling_and_enabling_system_integrity_protection)
need to be disabled to install VoodooHDA OC
- File sharing between guest and host is available via
[virtio-9p](https://wiki.qemu.org/Documentation/9psetup) and [SPICE
webdavd](https://gitlab.gnome.org/GNOME/phodav/-/merge_requests/24).
- Copy/paste via SPICE agent is **not available on macOS**.
### macOS App Store
If you see *"Your device or computer could not be verified"* when you
try to login to the App Store, make sure that your wired ethernet device
is `en0`. Use `ifconfig` in a terminal to verify this.
If the wired ethernet device is not `en0`, then then go to *System
Preferences* -\> *Network*, delete all the network devices and apply the
changes. Next, open a terminal and run the following:
``` bash
sudo rm /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist
```
Now reboot, and the App Store should work.
## Windows 8, 10 & 11 Guests
`quickget` can download
[Windows10](https://www.microsoft.com/software-download/windows10) and
[Windows 11](https://www.microsoft.com/software-download/windows11)
automatically and create an optimised virtual machine configuration.
This configuration also includes the [VirtIO drivers for
Windows](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/).
Windows 8.1 is also supported but doesn't feature any automated
installation or driver optimisation.
``` bash
quickget windows 11
quickemu --vm windows-11.conf
```
- Complete the installation as you normally would.
- All relevant drivers and services should be installed automatically.
- A local administrator user account is automatically created, with
these credentials:
- Username: `Quickemu`
- Password: `quickemu`
The default Windows 11 configuration looks like this:
``` bash
guest_os="windows"
disk_img="windows-11/disk.qcow2"
iso="windows-11/windows-11.iso"
fixed_iso="windows-11/virtio-win.iso"
tpm="on"
secureboot="off"
```
- `guest_os="windows"` instructs `quickemu` to optimise for Windows.
- `fixed_iso=` specifies the ISO image that provides VirtIO drivers.
- `tpm="on"` instructs `quickemu` to create a software emulated TPM
device using `swtpm`.
# AUTHORS
Written by Martin Wimpress.
# BUGS
Submit bug reports online at:
<https://github.com/quickemu-project/quickemu/issues>
# SEE ALSO
Full sources at: <https://github.com/quickemu-project/quickemu>
quickemu(1), quickemu_conf(1), quickgui(1)

177
icons/guix.svg Normal file
View File

@ -0,0 +1,177 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
height="70mm"
width="77mm"
viewBox="0 0 272.83464 248.0315"
id="svg3338"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="Guix-logo.svg">
<defs
id="defs3344">
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4702-3"
id="linearGradient3936"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.4874381,0,0,1.4874381,1284.8057,-24.050665)"
x1="142.96875"
y1="63.65625"
x2="176.60477"
y2="70.667412" />
<linearGradient
id="linearGradient4702-3">
<stop
style="stop-color:#ff0000;stop-opacity:0.58431375;"
offset="0"
id="stop4704-1" />
<stop
style="stop-color:#ffcc00;stop-opacity:1;"
offset="1"
id="stop4706-8" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4702-3"
id="linearGradient3932"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.4874381,0,0,1.4874381,1284.7576,-1291.8882)"
x1="113.5146"
y1="1004.8033"
x2="78.000107"
y2="922.07178" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4696-5"
id="linearGradient3929"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-0.83291399,0,0,0.83291399,1519.4606,-667.62588)"
x1="108.08774"
y1="1025.709"
x2="80.655251"
y2="1043.709" />
<linearGradient
id="linearGradient4696-5">
<stop
style="stop-color:#ffb638;stop-opacity:1;"
offset="0"
id="stop4698-6" />
<stop
style="stop-color:#f0ae26;stop-opacity:1;"
offset="1"
id="stop4700-2" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4702-3"
id="linearGradient3926"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-1.4874381,0,0,1.4874381,1586.895,-24.051145)"
x1="142.96875"
y1="63.65625"
x2="177.04297"
y2="69.791016" />
</defs>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1366"
inkscape:window-height="704"
id="namedview3342"
showgrid="false"
inkscape:zoom="1.8132778"
inkscape:cx="141.73228"
inkscape:cy="141.73228"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg3338" />
<metadata
id="metadata3340">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="g3398"
transform="translate(-1299.1761,-41.051394)">
<g
id="g3122"
transform="translate(1285.8501,-737.48576)">
<path
inkscape:connector-curvature="0"
id="path3240"
style="font-style:normal;font-weight:bold;font-size:67.20256042px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#333333;fill-opacity:1;stroke:none"
d="m 114.29864,1016.2686 c -3.15017,1.5313 -6.4206,2.6798 -9.81131,3.4454 -3.39079,0.7657 -6.89092,1.1485 -10.500399,1.1485 -8.159708,0 -14.62401,-2.2751 -19.392927,-6.8253 -4.768937,-4.572 -7.153401,-10.7629 -7.153397,-18.57256 -4e-6,-7.89714 2.428211,-14.10987 7.284652,-18.63821 4.85642,-4.52825 11.506666,-6.79239 19.95076,-6.79244 3.259466,5e-5 6.376771,0.30631 9.351921,0.91878 2.99694,0.61258 5.81892,1.52042 8.46595,2.72354 l 0,10.13945 c -2.73453,-1.55314 -5.45807,-2.71256 -8.17063,-3.47825 -2.69076,-0.76562 -5.392426,-1.14844 -8.104994,-1.14849 -5.031469,5e-5 -8.914426,1.41104 -11.648882,4.23298 -2.712621,2.80014 -4.068921,6.81435 -4.068905,12.04264 -1.6e-5,5.18456 1.312533,9.18786 3.93765,12.00986 2.625077,2.822 6.354903,4.233 11.189489,4.233 1.312517,0 2.526625,-0.077 3.642326,-0.2297 1.137506,-0.175 2.154736,-0.4376 3.051676,-0.7876 l 0,-9.516 -7.711228,0 0,-8.46591 19.688248,0 0,23.56031" />
<path
inkscape:connector-curvature="0"
id="path3242"
style="font-style:normal;font-weight:bold;font-size:67.20256042px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#333333;fill-opacity:1;stroke:none"
d="m 124.47091,1005.6041 0,-22.44461 11.81295,0 0,3.67514 c -2e-5,1.99073 -0.011,4.49551 -0.0328,7.51435 -0.0219,2.99701 -0.0328,4.99865 -0.0328,6.00492 -2e-5,2.9532 0.0765,5.0861 0.22969,6.3987 0.15311,1.2907 0.41563,2.2313 0.78753,2.822 0.48125,0.7656 1.10471,1.3563 1.87039,1.7719 0.78751,0.4156 1.68441,0.6235 2.69072,0.6235 2.45007,0 4.37514,-0.9407 5.77522,-2.822 1.40003,-1.8813 2.10005,-4.4955 2.10008,-7.8425 l 0,-18.14601 11.74732,0 0,36.75141 -11.74732,0 0,-5.3158 c -1.77197,2.1438 -3.65329,3.7298 -5.64396,4.758 -1.96885,1.0062 -4.14549,1.5094 -6.52994,1.5094 -4.24392,0 -7.48154,-1.3016 -9.71287,-3.9048 -2.20946,-2.6033 -3.31419,-6.3878 -3.31419,-11.3536" />
<path
inkscape:connector-curvature="0"
id="path3244"
style="font-style:normal;font-weight:bold;font-size:67.20256042px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#333333;fill-opacity:1;stroke:none"
d="m 172.77274,983.15949 11.74732,0 0,36.75141 -11.74732,0 0,-36.75141 m 0,-14.3068 11.74732,0 0,9.58162 -11.74732,0 0,-9.58162" />
<path
inkscape:connector-curvature="0"
id="path3246"
style="font-style:normal;font-weight:bold;font-size:67.20256042px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#333333;fill-opacity:1;stroke:none"
d="m 205.15991,1001.1086 -13.25675,-17.94911 12.43641,0 7.51435,10.89416 7.61279,-10.89416 12.43641,0 -13.25676,17.88351 13.91303,18.8679 -12.43641,0 -8.26906,-11.6161 -8.17063,11.6161 -12.43641,0 13.91303,-18.8023" />
</g>
<path
inkscape:connector-curvature="0"
style="font-style:normal;font-weight:bold;font-size:144px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#ffcc00;fill-opacity:1;stroke:none"
d="m 1557.9367,46.602435 c -2.6825,4.90263 -5.4059,8.89401 -8.1809,12.03897 -2.6825,3.05258 -5.6406,5.49427 -8.8781,7.34422 -3.1451,1.75757 -6.7135,3.02514 -10.691,3.76506 -3.885,0.64751 -8.3459,0.97629 -13.4334,0.9761 -3.7529,0 -7.1256,-0.1922 -10.0867,-0.55773 -0.012,0 -0.034,0 -0.047,0 -0.3754,-0.0273 -1.1508,-0.15334 -1.9523,-0.27891 -0.8442,-0.13218 -1.7071,-0.25955 -3.0678,-0.5113 -24.9421,-4.61489 -33.2141,12.7003 -35.0013,17.47744 -0.2797,0.74767 -0.4183,1.20845 -0.4183,1.20845 l -30.3066,84.505085 -18.593,31.60821 37.1395,0 c 15.2535,-33.96261 29.9183,-104.875515 45.5993,-111.139545 3.3988,0.47537 7.6118,0.69713 12.6897,0.69713 6.6601,0 12.6232,-0.79843 17.8957,-2.46349 5.2726,-1.66502 10.0151,-4.24757 14.2702,-7.76263 4.255,-3.60748 8.1051,-8.20868 11.5276,-13.75881 3.515,-5.54998 6.8486,-12.21732 9.9937,-19.98743 l -8.4597,-3.16082 z"
id="path3143" />
<path
style="font-style:normal;font-weight:bold;font-size:144px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans Bold';letter-spacing:0px;word-spacing:0px;fill:url(#linearGradient3936);fill-opacity:1;stroke:none"
d="m 1557.9358,46.605905 c -2.6826,4.90263 -5.4057,8.8885 -8.1808,12.03346 -2.6824,3.05259 -5.6417,5.49543 -8.8792,7.34538 -0.7789,0.43527 -1.5819,0.83524 -2.4125,1.20983 -0.01,0.003 -0.014,0.0109 -0.022,0.0144 -1.0455,0.73525 -2.3902,1.36643 -4.2128,1.80033 -21.0208,5.00504 -35.3388,23.73821 -36.6837,25.5504 0.6098,-0.50134 1.2236,-0.91065 1.8364,-1.22422 0.092,-0.0488 0.1814,-0.093 0.2736,-0.13683 0.015,-0.007 0.029,-0.0148 0.043,-0.0216 0.1068,-0.0498 0.2172,-0.0941 0.3241,-0.13682 3.3988,0.47537 7.6109,0.69853 12.6888,0.69853 6.6601,0 12.6228,-0.805 17.8954,-2.47007 5.2725,-1.66501 10.0108,-4.2408 14.2658,-7.75586 4.2551,-3.60747 8.1069,-8.21164 11.5294,-13.76177 3.515,-5.55 6.8504,-12.22084 9.9955,-19.99096 l -8.4616,-3.1542 z"
id="path3145"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
style="font-style:normal;font-weight:bold;font-size:144px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#ffcc00;fill-opacity:1;stroke:none"
d="m 1313.7642,46.602455 c 2.6826,4.90263 5.4059,8.89399 8.1809,12.03895 2.6825,3.05258 5.6407,5.49427 8.8782,7.34422 3.145,1.75757 6.7134,3.02514 10.6909,3.76506 3.8851,0.6477 8.3459,0.97629 13.4334,0.9761 3.7529,0 7.1256,-0.1922 10.0867,-0.55773 0.012,0 0.035,0 0.047,0 0.3754,-0.0269 1.1508,-0.15333 1.9523,-0.27891 0.8442,-0.13218 1.7071,-0.25955 3.0678,-0.5113 24.9421,-4.61489 33.2141,12.7003 35.0013,17.47744 0.2797,0.74767 0.4183,1.20845 0.4183,1.20845 l 30.3066,84.505085 18.593,31.60821 -37.1395,0 c -15.2535,-33.96261 -29.9183,-104.875515 -45.5993,-111.139545 -3.3988,0.47537 -7.6118,0.69713 -12.6897,0.69713 -6.6601,0 -12.6232,-0.79843 -17.8957,-2.46349 -5.2726,-1.66502 -10.0151,-4.24757 -14.2702,-7.76263 -4.255,-3.60748 -8.105,-8.20867 -11.5276,-13.75881 -3.515,-5.54993 -6.8486,-12.21728 -9.9937,-19.98743 l 8.4598,-3.1608 z"
id="path3147" />
<path
sodipodi:nodetypes="ccccccccsscccccccccccc"
id="path3149"
d="m 1313.7627,46.601235 c 2.6826,4.90262 5.4059,8.89399 8.1809,12.03894 2.6825,3.05259 5.6407,5.49427 8.8781,7.34422 3.1451,1.75757 6.7135,3.02514 10.691,3.76507 3.8851,0.64768 8.3459,0.97628 13.4334,0.97609 3.7529,0 7.1256,-0.19221 10.0867,-0.55772 0.012,0 0.035,0 0.047,0 0.3754,-0.027 1.1508,-0.15335 1.9523,-0.27892 0.8442,-0.13218 1.7071,-0.25955 3.0678,-0.5113 24.9421,-4.61489 33.2141,12.70029 35.0013,17.47744 0.2797,0.74767 0.4183,1.20845 0.4183,1.20845 l 30.3066,84.505095 15.6181,31.60819 -34.1646,0 c -15.2535,-33.9626 -29.9183,-104.875505 -45.5993,-111.139535 -3.3988,0.47537 -7.6118,0.69713 -12.6897,0.69713 -6.6601,0 -12.6232,-0.79843 -17.8957,-2.46349 -5.2726,-1.66502 -10.0151,-4.24758 -14.2701,-7.76263 -4.2551,-3.60748 -8.1051,-8.20867 -11.5277,-13.7588 -3.515,-5.54995 -6.8486,-12.21728 -9.9937,-19.98743 l 8.4598,-3.1608 z"
style="font-style:normal;font-weight:bold;font-size:144px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans Bold';letter-spacing:0px;word-spacing:0px;fill:url(#linearGradient3932);fill-opacity:1;stroke:none"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path3151"
style="font-style:normal;font-weight:bold;font-size:144px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans Bold';letter-spacing:0px;word-spacing:0px;fill:url(#linearGradient3929);fill-opacity:1;stroke:none"
d="m 1435.8193,172.5566 -18.52,31.62143 37.1209,0"
sodipodi:nodetypes="ccc" />
<path
style="font-style:normal;font-weight:bold;font-size:144px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans Bold';letter-spacing:0px;word-spacing:0px;fill:url(#linearGradient3926);fill-opacity:1;stroke:none"
d="m 1313.7667,46.605905 -8.4616,3.1542 c 0.9829,2.42817 1.9835,4.75137 3.003,6.96371 0.2039,0.44246 0.4068,0.87683 0.6121,1.31064 8e-4,0.002 -8e-4,0.006 0,0.007 0.2044,0.4318 0.4135,0.85862 0.6193,1.28184 0.069,0.14106 0.1401,0.27758 0.2089,0.41768 0.3452,0.70349 0.6877,1.40177 1.037,2.08119 0,0.003 0.01,0.004 0.01,0.007 0.2082,0.40484 0.4169,0.80634 0.6265,1.20263 0.8454,1.59852 1.7025,3.12828 2.5709,4.58726 0.2168,0.36432 0.4298,0.7174 0.6481,1.073 0.085,0.13784 0.1672,0.27395 0.252,0.41048 0.1351,0.21746 0.2749,0.43399 0.4105,0.64812 0.2139,0.34687 0.4237,0.69034 0.6409,1.0298 0.3462,0.54084 0.7041,1.06956 1.0586,1.59149 0.09,0.13178 0.1764,0.26551 0.2665,0.39607 0.225,0.32622 0.4486,0.64634 0.6769,0.96499 0.4544,0.6341 0.9152,1.25393 1.3827,1.85795 0.2337,0.302 0.4687,0.59851 0.7057,0.89296 0.474,0.58892 0.9532,1.16257 1.4403,1.72113 0.3692,0.42348 0.7467,0.83988 1.1234,1.24584 0.119,0.12822 0.2403,0.2552 0.36,0.38166 0.5012,0.52939 1.0055,1.04257 1.5195,1.54109 0.2564,0.24866 0.511,0.49359 0.7706,0.73454 0.2608,0.24217 0.5209,0.47857 0.7849,0.71294 0.2628,0.23322 0.5262,0.45866 0.7922,0.68413 0.7978,0.65907 1.6161,1.28595 2.4484,1.87955 2.2197,1.58292 4.563,2.93443 7.0357,4.05436 0.3091,0.14 0.6159,0.27768 0.929,0.41048 0.6283,0.26652 1.2637,0.51855 1.9084,0.75614 0.3213,0.11842 0.6396,0.22723 0.965,0.33846 0.3254,0.11123 0.657,0.22 0.9866,0.32406 0.3295,0.10407 0.6588,0.20515 0.9937,0.30246 0.6699,0.19463 1.3538,0.37949 2.0452,0.5473 0.3458,0.0839 0.6931,0.16039 1.0442,0.23765 0.3512,0.0773 0.7021,0.15261 1.0586,0.22324 0.3588,0.0711 0.7159,0.13718 1.0802,0.20164 0.7239,0.12808 1.458,0.24373 2.2036,0.34566 1.1184,0.15292 2.2607,0.27964 3.4279,0.37447 0.7781,0.0633 1.5694,0.1135 2.3692,0.15123 0.7999,0.0377 1.6125,0.0595 2.4341,0.072 0.4108,0.006 0.8224,0.007 1.2386,0.007 0.6348,0 1.2574,-2.1e-4 1.8652,-0.007 1.2156,-0.014 2.3763,-0.0437 3.4854,-0.0864 0.5521,-0.0213 1.0943,-0.0435 1.6203,-0.072 0.5282,-0.0287 1.0462,-0.0646 1.5483,-0.10083 1.5062,-0.10864 2.895,-0.24661 4.1696,-0.42487 0.1069,0.0427 0.2173,0.087 0.3241,0.13682 0.015,0.006 0.028,0.0148 0.043,0.0216 0.092,0.0439 0.1815,0.088 0.2736,0.13682 0.6131,0.31376 1.2262,0.72249 1.8364,1.22423 -1.3421,-1.80851 -15.6604,-20.54497 -36.6837,-25.5504 -1.8226,-0.43396 -3.1673,-1.06505 -4.2128,-1.80034 -0.01,-0.003 -0.014,-0.0108 -0.022,-0.0144 -0.8287,-0.37374 -1.6352,-0.77569 -2.4125,-1.20983 0,-8e-4 -0.01,7.9e-4 -0.01,0 -0.2005,-0.11459 -0.3993,-0.23372 -0.5977,-0.35287 0,-8e-4 -0.01,8e-4 -0.01,0 -0.2001,-0.12025 -0.3925,-0.24238 -0.5905,-0.36726 -0.3976,-0.25081 -0.7922,-0.50819 -1.181,-0.77775 -0.1936,-0.13419 -0.3847,-0.27162 -0.5761,-0.41048 -0.3856,-0.27966 -0.7611,-0.56553 -1.1378,-0.86416 -0.1871,-0.14821 -0.3696,-0.29358 -0.5545,-0.44649 -0.1864,-0.15403 -0.3704,-0.30928 -0.5545,-0.46808 -0.1828,-0.15761 -0.3595,-0.32017 -0.5401,-0.4825 -0.9031,-0.81159 -1.7795,-1.67679 -2.6285,-2.60688 -0.1699,-0.18602 -0.3437,-0.37813 -0.5113,-0.56891 -0.6171,-0.6993 -1.2315,-1.4415 -1.8436,-2.22522 -0.076,-0.0976 -0.1471,-0.19638 -0.2232,-0.29525 -0.1719,-0.22327 -0.347,-0.44692 -0.5185,-0.67693 -0.8574,-1.15011 -1.7082,-2.38737 -2.5565,-3.70871 -0.3393,-0.52854 -0.6774,-1.07112 -1.0154,-1.62751 -0.169,-0.27819 -0.3354,-0.55736 -0.5041,-0.84255 -0.5043,-0.85289 -1.0109,-1.74117 -1.5123,-2.6573 z"
id="path3154"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 15 KiB

18
icons/trisquel.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 20 KiB

1
icons/whonix.svg Normal file
View File

@ -0,0 +1 @@
<svg viewBox="0 0 377 500" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><defs><radialGradient id="a" cx="250.34" cy="1008" r="26.421" gradientTransform="matrix(6.0417 -.0697 .08299 7.194 -1406.7 -6918.2)" gradientUnits="userSpaceOnUse"><stop stop-color="#7ecff3" stop-opacity=".98" offset="0"/><stop stop-color="#87d0ef" stop-opacity=".988" offset=".669"/><stop stop-color="#0c84ce" offset="1"/></radialGradient></defs><path d="M183.99 8.81C118.48 8.81 63.6 61.054 63.6 126.58v57.67a179.48 179.48 0 0 0-54.305 128.6 179.48 179.48 0 0 0 179.49 179.48 179.48 179.48 0 0 0 179.48-179.48 179.48 179.48 0 0 0-56.8-130.7v-55.575c0-65.52-52.062-117.77-117.57-117.77zm-.772 42.363h3.31c40.335 0 71.982 33.026 71.982 73.362v22.946a179.48 179.48 0 0 0-69.722-14.107 179.48 179.48 0 0 0-78.575 18.257v-27.097c0-40.336 32.668-73.362 73.004-73.362z" fill="url(#a)" stroke="#000" stroke-width="14.121"/><path d="M105.05 287.47c1.022-53.659 17.886-91.986 31.173-91.986 16.353 0 39.86 22.485 56.213 22.485 10.22 0 33.217-16.352 51.103-16.352 9.198 0 23.973 29.135 24.484 78.195-64.485 3.695-107.33 28.814-162.97 7.659zm63.45 55.32c9.909-6.07 26.091-5.668 34.864-.692l.143 7.226c-9.226-5.057-25.394-4.736-34.863.692z" fill-rule="evenodd"/><path d="M217.19 408.59s-2.97 11.154-27.846 12.031c-27.605 1.295-31.039-9.302-31.039-9.302" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="14.121"/><path d="M56.37 294.52c.489-19.557 81.344 14.867 106.31 11.618 38.92-2.814 145.96-36.063 151.34-11.129 3.911 22.001-30.062 4.72-93.272 14.339 0 0-164.38 17.93-164.38-14.828zm44.85 49.57c8.077-11.738 44.703-15.355 71.287-3.71 0 0 3.99 11.867-1.035 19.455-4.134 12.52-42.206 25.333-64.285 10.987-8.382-6.976-9.594-16.368-5.967-26.732zm168.96-8.16c-9.473-10.643-46.265-9.68-71.195 5.179 0 0-2.484 12.27 3.445 19.174 5.657 11.91 45.027 19.892 65.152 2.913 7.45-7.964 7.485-17.434 2.598-27.266z" fill-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -687,7 +687,7 @@ function vm_boot() {
if [ "${guest_os}" == "linux" ]; then
local X_RES=1152
local Y_RES=648
if [ "${XDG_SESSION_TYPE}" == "x11" ]; then
if [ "${XDG_SESSION_TYPE}" == "x11" ] || [ "${XDG_SESSION_TYPE}" == "wayland" ]; then
if [ -z "${SCREEN}" ]; then
X_RES=$(xrandr --listmonitors | grep -v Monitors | cut -d' ' -f4 | cut -d'/' -f1 | sort | head -n1)
Y_RES=$(xrandr --listmonitors | grep -v Monitors | cut -d' ' -f4 | cut -d'/' -f2 | cut -d'x' -f2 | sort | head -n1)
@ -848,6 +848,19 @@ function vm_boot() {
SPICE_PORT=$(get_port 5930 9)
fi
# ALLOW REMOTE ACCESS TO SPICE OVER LAN RATHER THAN JUST LOCALHOST
if [ -z "${ACCESS}" ]; then
SPICE_ADDR="127.0.0.1"
else
if [ "${ACCESS}" == "remote" ]; then
SPICE_ADDR=""
elif [ "${ACCESS}" == "local" ]; then
SPICE_ADDR="127.0.0.1"
else
SPICE_ADDR="${ACCESS}"
fi
fi
if [ -z "${SPICE_PORT}" ]; then
echo " - SPICE: All SPICE ports have been exhausted."
if [ "${OUTPUT}" == "none" ] || [ "${OUTPUT}" == "spice" ] || [ "${OUTPUT}" == "spice-app" ]; then
@ -864,7 +877,7 @@ function vm_boot() {
echo -n " --spice-shared-dir ${PUBLIC}"
fi
echo "${FULLSPICY}"
SPICE="${SPICE},port=${SPICE_PORT},addr=127.0.0.1"
SPICE="${SPICE},port=${SPICE_PORT},addr=${SPICE_ADDR}"
fi
fi
fi
@ -899,7 +912,7 @@ function vm_boot() {
fi
# If smbd is available and ~/Public is present export it to the guest via samba
if [[ -e "/usr/sbin/smbd" && -n ${PUBLIC} ]]; then
if [[ -x "$(command -v smbd)" && -n ${PUBLIC} ]]; then
NET="${NET},smb=${PUBLIC}"
echo " - smbd: On guest: smb://10.0.2.4/qemu"
fi
@ -1326,6 +1339,7 @@ function usage() {
echo " ${LAUNCHER} --vm ubuntu.conf"
echo
echo "You can also pass optional parameters"
echo " --access : Enable remote spice access support. 'local' (default), 'remote', 'clientipaddress'"
echo " --braille : Enable braille support. Requires SDL."
echo " --delete-disk : Delete the disk image and EFI variables"
echo " --delete-vm : Delete the entire VM and it's configuration"
@ -1498,6 +1512,7 @@ mouse="tablet"
# options: intel-hda, ac97, es1370, sb16, none
sound_card="intel-hda"
ACCESS=""
BRAILLE=""
DELETE_DISK=0
DELETE_VM=0
@ -1540,7 +1555,7 @@ SOUND_CARD=""
# shellcheck disable=SC2155
readonly LAUNCHER=$(basename "${0}")
readonly DISK_MIN_SIZE=$((197632 * 8))
readonly VERSION="4.8"
readonly VERSION="4.9.1"
# TODO: Make this run the native architecture binary
QEMU=$(command -v qemu-system-x86_64)
@ -1564,6 +1579,10 @@ if [ $# -lt 1 ]; then
else
while [ $# -gt 0 ]; do
case "${1}" in
-access|--access)
ACCESS="${2}"
shift
shift;;
-braille|--braille)
BRAILLE="on"
shift;;

1089
quickget

File diff suppressed because it is too large Load Diff

683
quicktui Executable file
View File

@ -0,0 +1,683 @@
#!/usr/bin/bash
# Author: zenobit
# Description: Uses gum to provide a simple TUI for quickemu and quickget
# License MIT
define_variables() {
progname="${progname:="${0##*/}"}"
version='0.33'
configdir="$HOME/.config/$progname"
path=$(pwd)
vms=(*.conf)
# Set traps to catch the signals and exit gracefully
trap 'exit' INT
trap 'exit' EXIT
if ! command -v quickemu >/dev/null 2>&1; then
echo 'You are missing quickemu...!'
fi
QUICKGET=$(command -v quickget)
if ! command -v gum >/dev/null 2>&1; then
echo 'You are missing gum...!'
fi
# use configdir
if [ -f "${configdir}/border" ]; then
BORDER="$(cat "${configdir}"/border)"
else
BORDER="rounded"
fi
if [ -f "${configdir}/color" ]; then
BORDERS_FOREGROUND="$(cat "${configdir}"/color)"
else
BORDERS_FOREGROUND="$(( RANDOM % 255 + 1 ))"
fi
if [ -f "${configdir}/indicator" ]; then
GUM_FILTER_INDICATOR_FOREGROUND="$(cat "${configdir}"/indicator)"
else
GUM_FILTER_INDICATOR_FOREGROUND="$(( RANDOM % 255 + 1 ))"
fi
if [ -f "${configdir}/spinner-color" ]; then
GUM_SPIN_SPINNER_FOREGROUND="$(cat "${configdir}"/spinner-color)"
else
GUM_SPIN_SPINNER_FOREGROUND="$(( RANDOM % 255 + 1 ))"
fi
if [ -f "${configdir}/spinner" ]; then
spinner="$(cat "${configdir}"/spinner)"
else
spinner="globe"
fi
}
check_updates() {
show_version_quickemu
https://github.com/quickemu-project/quickemu/releases/latest
show_version_qemu
https://download.qemu.org
show_version_gum
https://github.com/charmbracelet/gum/releases/latest
$version
https://github.com/oSoWoSo/quickemu/tags
}
show_editor() {
if [ -z "$EDITOR" ]; then
echo ' editor Not set!'
else
echo " editor $EDITOR"
fi
}
show_vms() {
if [ ${#vms[@]} -eq 0 ]; then
echo 'No VMs found.'
else
echo "${vms[@]%.*}" | tr " " "\n"
fi
}
show_custom() {
if [ -f "${configdir}/command" ]; then
printf '\n command:\nquickemu %s' "$(cat "${configdir}/command")"
fi
if [ -f "${configdir}/default_vm_config" ]; then
printf '\n VMs default config:\n%s' "$(cat "${configdir}/default_vm_config")"
fi
if [ -f "${configdir}/border" ]; then
printf '\n border: %s' "$(cat "${configdir}/border")"
fi
if [ -f "${configdir}/color" ]; then
printf '\n borders color: %s' "$(cat "${configdir}/color")"
fi
if [ -f "${configdir}/indicator" ]; then
printf '\n indicator color: %s' "$(cat "${configdir}/indicator")"
fi
if [ -f "${configdir}/spinner" ]; then
printf '\n spinner: %s' "$(cat "${configdir}/spinner")"
fi
}
show_version_quickemu() {
quickemu --version | grep "ERROR! QEMU not found" && echo "QEMU is missing!" || quickemu --version
}
show_version_qemu() {
qemu-x86_64 -version | sed 2d | cut -d' ' -f3
}
show_header() {
gum style --padding "0 1" --border="$BORDER" --border-foreground="$BORDERS_FOREGROUND" "$header"
}
show_headers_small() {
header1=$(header="$(gum style --bold "$progname") $version"; show_header)
header2=$(header=" ready VMs:
$(echo "${vms[@]%.*}" | tr " " "\n")"; show_header)
header3=$(header=" workdir:
$(pwd)$(show_custom)"; show_header)
header1_2=$(gum join --vertical "$header1" "$header2")
gum join --align top "$header1_2" "$header3"
}
show_headers_full() {
header1=$(header=" $(gum style --bold "$progname") $version
Simple TUI for quickemu"; show_header)
header2=$(header=" qemu $(show_version_qemu)
quickemu $(show_version_quickemu)
$(show_editor)"; show_header)
header3=$(header=" ready VMs:
$(show_vms)"; show_header)
header4=$(header=" workdir:
$(pwd)$(show_custom)"; show_header)
header1_2=$(gum join "$header1" "$header2")
header3_4=$(gum join "$header3" "$header4")
gum join --align center --vertical "$header1_2" "$header3_4"
}
show_help() {
clear
show_headers_full
show_header
}
help_main() {
header=" $progname $version
Uses gum to provide a simple TUI for quickemu and quickget 'https://github.com/quickemu-project/quickemu'
'https://github.com/charmbracelet/gum'
For menus you can use arrow keys or fuzzy filtering and then ENTER
(e + ENTER for exit or b + ENTER for back to main menu)
If is posible choose more options use TAB for highliting desired and then ENTER
Config and temp files are stored at $configdir"
}
#template for functions
# header=""
# show_header
gum_choose_os() {
header="Choose OS"
show_header
os=$(gum filter < "$configdir"/supported)
choices=$(cat "$configdir/distros/$os")
}
gum_choose_release() {
header="Choose release"
show_header
height=$(echo "$choices" | grep 'Releases:' | cut -d':' -f2 | grep -o '[^ ]*' | wc -l)
release=$(echo "$choices" | grep 'Releases:' | cut -d':' -f2 | grep -o '[^ ]*' | gum filter --sort --height="$height")
}
gum_choose_edition() {
header="Choose edition"
show_header
height=$(echo "$choices" | grep 'Editions:' | cut -d':' -f2 | grep -o '[^ ]*' | wc -l)
edition=$(echo "$choices" | grep 'Editions:' | cut -d':' -f2 | grep -o '[^ ]*' | gum filter --sort --height="$height")
}
gum_choose_VM() {
if ls | grep ".conf" ; then
header="Choose VM"
show_header
height=$(ls -1 | grep ".conf" | wc -l)
chosen=$(ls -1 | grep ".conf" | rev | cut -d'.' -f2- | rev | gum filter --height "$height")
else
echo "No VMs to run."
fi
#chosen=$(printf '%s\n' "${vms[@]%.conf}" | gum filter --height "$("${vms[@]%.conf}" | wc -l)" --header='Choose VM to run')
}
edit_default_VMs_config() {
header="Editing default VM's config..."
show_header
printf 'For example:\ncpu_cores="2"\nram="4G"\n'
header="CTRL+D to complete. CTRL+C and esc will cancel"
show_header
gum write > "${configdir}"/default_vm_config
}
edit_VM_config() {
if [ -z "$EDITOR" ]; then
echo "Editor not set! Can't continue!"
else
header="Editing VM config"
show_header
height=$(ls -1 | grep ".conf" | wc -l)
${EDITOR} "$(ls | grep ".conf" | gum filter --height "$height")"
fi
}
custom_quickemu_command() {
header="Define custom command"
show_header
custom=$(echo "edit delete" | grep -o '[^ ]*' | gum choose --header='Edit or delete custom command?')
if [ "$custom" = "edit" ]; then
header=$(quickemu | awk 'NR==6,/version/')
show_header
printf '\nEnter quickemu custom command:\n For example:--public-dir ~/Downloads\n:'
read -r command
mkdir -p "$configdir"
echo "$command" > "${configdir}/command"
elif [ "$custom" = "delete" ]; then
rm "${configdir}/command"
fi
}
run_VM() {
header="Starting $chosen..."
show_header
if [ -f "${configdir}/command" ]; then
quickemu < "${configdir}/command" -vm "$chosen.conf"
else
quickemu -vm "$chosen.conf"
fi
}
create_VM() {
gum_choose_os
if [ -z "$os" ]; then exit 100
elif [ "$(echo "$choices" | wc -l)" = 1 ]; then
clear
gum_choose_release
gum spin --spinner "$spinner" --show-output --title="Downloading $os $release" -- "$QUICKGET" "$os" "$release"
"$QUICKGET" "$os" "$release"
if [ -f "${configdir}/default_vm_config" ]; then
echo 'Adding default values to config...'
cat "${configdir}/default_vm_config" >> "$os-$release.conf"
fi
else
clear
gum_choose_release
gum_choose_edition
gum spin --spinner "$spinner" --show-output --title="Downloading $os $release $edition" -- "$QUICKGET" "$os" "$release" "$edition"
if [ -f "${configdir}/default_vm_config" ]; then
echo 'Adding default values to config...'
cat "${configdir}/default_vm_config" >> "$os-$release-$edition.conf"
fi
fi
echo "New VM not appear in ready VMs: yet #TODO
To start your new $os virtual machine use 'run VM' from menu"
show_headers_small
}
gum_choose_VM_to_delete() {
height=$(ls -1 | grep ".conf" | wc -l)
GUM_FILTER_HEADER="Choose VM to delete"
GUM_FILTER_HEADER_FOREGROUND="1"
if ls | grep ".conf" ; then
chosen=$(echo "${vms[@]%.*}" | tr " " "\n" | gum filter --height "$height" --no-limit)
echo 'Removing config(s)...'
rm -r "$chosen" & rm "$chosen".conf
else
echo "No VMs to delete"
fi
}
# shellcheck disable=SC2016,2034,2153
add_new_distro() {
header="Adding new distro..."
show_header
echo "add new OS, all lowercase"
NAME="$(gum input --header="NAME" --placeholder="arch")"
echo "add a pretty name for new OS *only if the catch all is not suitable*"
PRETTY_NAME="$(gum input --header="PRETTY_NAME" --placeholder="Arch Linux")"
echo "add a homepage for new OS"
HOMEPAGE="$(gum input --header="HOMEPAGE" --placeholder="https://voidlinux.org/")"
echo "current supported release versions"
RELEASES="$(gum input --header="RELEASES" --placeholder="8 9")"
echo "the editions if new OS has multiple flavours/editions"
EDITIONS="$(gum input --header="EDITIONS" --placeholder="kde gnome")"
echo "base URL for ISO download"
URL="$(gum input --header="URL" --placeholder="https://ddl.bunsenlabs.org/ddl")"
echo "Name of ISO"
ISO="$(gum input --header="ISO" --placeholder="GhostBSD-${RELEASE}-XFCE.iso")"
echo "name of hash file "
CHECKSUM="$(gum input --header="CHECKSUM" --placeholder='${ISO}.sha256sum')"
cat <<EOF > "$configdir/template"
#line 58+
$NAME) PRETTY_NAME="$PRETTY_NAME";;
#line 207+
$NAME \\
#line 292+
$NAME) HOMEPAGE=$HOMEPAGE;;
#line 374+
function releases_$NAME() {
echo $RELEASES
}
function editions_$NAME() {
echo $EDITIONS
}
#line 1176+
function get_$NAME() {
local EDITION="\${1:-}"
local HASH=""
local ISO="$ISO"
local URL="$URL"
HASH="\$(wget -q -O- \${URL}/\$CHECKSUM | grep (\${ISO} | cut -d' ' -f4)"
echo "\${URL}/\${ISO}" "\${HASH}"
}
EOF
diff "$configdir/template" "quickget"
}
# shellcheck disable=SC2154
create_desktop_entry() {
cat <<EOF > "${DESKTOP_FILE}"
[Desktop Entry]
Version=$version
Type=$type
Name=$name
GenericName=$progname
Comment=$comment
Exec=$execmd
Icon=$icon
Terminal=$terminal
X-MultipleArgs=$args
Type=$type
Categories=$categories
StartupNotify=$notify
MimeType=$mime
Keywords=$keyword
EOF
}
test_ISOs_download() {
cd "$configdir/distros" || exit
echo "New run $(date)" > "$configdir/test_download"
while read -r get_name; do
echo "Trying $get_name..."
releases=$(echo "$get_name" | grep 'Releases:' | cut -d':' -f2 | grep -o '[^ ]*')
editions=$(echo "$get_name" | grep 'Editions:' | cut -d':' -f2 | grep -o '[^ ]*')
if [ -z "$editions" ]; then
for release in $releases; do
echo "$get_name" >> "$configdir/test_download"
timeout 10 "$QUICKGET" -t "$get_name" "${release}"
done
else
while read -r release; do
for edition in $editions; do
echo "$get_name" >> "$configdir/test_download"
timeout 10 "$QUICKGET" -t "$get_name" "${release}" "${edition}"
done
done < releases
fi
cd "$configdir" || exit
done < "$configdir/supported"
printf "\nDone"
}
show_ISOs_urls(){
cd "$configdir/distros" || exit
choices=$(echo "$configdir/distros/$os")
while read -r get_name; do
releases=$(echo "$choices" | grep 'Releases:' | cut -d':' -f2 | grep -o '[^ ]*')
editions=$(echo "$choices" | grep 'Editions:' | cut -d':' -f2 | grep -o '[^ ]*')
if [ -z "$editions" ]; then
for release in $releases; do
"$QUICKGET" -s "$get_name" "${release}"
done
else
while read -r release; do
for edition in $editions; do
"$QUICKGET" -s "$get_name" "${release}" "${edition}"
done
done < releases
fi
cd "$path" || exit
done < "$configdir/supported"
printf "\nDone"
}
generate_if_needed() {
if [ ! -f "${configdir}"/supported ]; then
generate_supported
fi
}
generate_supported(){
echo "Extracting OS Editions and Releases..."
rm -r "$configdir/distros"
mkdir -p "$configdir/distros"
"$QUICKGET" | awk 'NR==2,/zorin/' | cut -d':' -f2 | grep -o '[^ ]*' > "$configdir/supported"
while read -r get_name; do
supported=$(gum spin --spinner "$spinner" --title="$get_name" --show-output -- "$QUICKGET" "$get_name" | sed 1d)
echo "$supported" > "$configdir/distros/${get_name}"
done < "$configdir/supported"
}
open_distro_homepage(){
gum_choose_os
"$QUICKGET" -o "${os}"
}
change_borders() {
header="Change borders style"
show_header
height=6
BORDER=$(echo "none
hidden
normal
rounded
thick
double" | gum filter --height $height)
echo "$BORDER" > "${configdir}"/border
}
change_color() {
if command -v yad >/dev/null 2>&1; then
header="Define color, use color picker or choose random"
show_header
height=4
start=$(echo "random
yad color picker
custom
EXIT $progname" | gum filter --height $height)
case $start in
'random' ) BORDER_FOREGROUND="$(( RANDOM % 255 + 1 ))";;
'yad color picker' ) BORDER_FOREGROUND="$(yad --color)";;
'custom' ) BORDER_FOREGROUND=$(gum input --header="Enter color value");;
'show help' ) help_main; show_help;;
"EXIT $progname" ) exit 0;;
esac
else
header="Define color number or choose random"
show_header
BORDER_FOREGROUND=$(echo 'random' | gum filter --no-strict GUM_FILTER_PLACEHOLDER="custom" --height 1)
fi
echo "$BORDER_FOREGROUND" > "${configdir}"/color
}
change_color_indicator() {
if command -v yad >/dev/null 2>&1; then
header="Define indicator color value, use color picker or choose random"
show_header
height=5
start=$(echo "random
yad color picker
custom
EXIT $progname" | gum filter --height $height)
case $start in
'random' ) GUM_FILTER_INDICATOR_FOREGROUND="$(( RANDOM % 255 + 1 ))";;
'yad color picker' ) GUM_FILTER_INDICATOR_FOREGROUND="$(yad --color)";;
'custom' ) GUM_FILTER_INDICATOR_FOREGROUND=$(gum input --header="Enter color value");;
'show help' ) help_main; show_help;;
"EXIT $progname" ) exit 0;;
esac
else
header="Define indicator color value or choose random"
show_header
GUM_FILTER_INDICATOR_FOREGROUND=$(echo 'random' | gum filter --no-strict GUM_FILTER_PLACEHOLDER="custom" --height 1)
fi
echo "$GUM_FILTER_INDICATOR_FOREGROUND" > "${configdir}"/indicator
}
change_color_spinner() {
if command -v yad >/dev/null 2>&1; then
header="Define color, use color picker or choose random"
show_header
height=4
start=$(echo "random
yad color picker
custom
EXIT $progname" | gum filter --height $height)
case $start in
'random' ) GUM_SPIN_SPINNER_FOREGROUND="$(( RANDOM % 255 + 1 ))";;
'yad color picker' ) GUM_SPIN_SPINNER_FOREGROUND="$(yad --color)";;
'custom' ) GUM_SPIN_SPINNER_FOREGROUND=$(gum input --header="Enter color value");;
'show help' ) help_main; show_help;;
"EXIT $progname" ) exit 0;;
esac
else
header="Define color number or choose random"
show_header
GUM_SPIN_SPINNER_FOREGROUND=$(echo 'random' | gum filter --no-strict GUM_FILTER_PLACEHOLDER="custom" --height 1)
fi
echo "$GUM_SPIN_SPINNER_FOREGROUND" > "${configdir}"/spinner-color
}
use_color() {
if [ -f "${configdir}/color" ]; then
BORDER_FOREGROUND=$(cat "${configdir}"/color)
fi
}
change_spinner() {
height=11
spinner=$(echo "line
dot
minidot
jump
pulse
points
globe
moon
monkey
meter
hamburger" | gum filter --height $height)
echo "$spinner" > "${configdir}"/spinner
}
# MENU
show_menu_main() {
while true
do
height=9
start=$(echo "create new VM
run VM
open distro homepage
delete VM
advanced menu
settings menu
test menu
show help
EXIT $progname" | gum filter --height $height)
case $start in
'create new VM' ) create_VM;;
'advanced menu' ) show_menu_advanced;;
'settings menu' ) show_menu_settings;;
'run VM' ) gum_choose_VM && run_VM;;
'open distro homepage' ) open_distro_homepage;;
'delete VM' ) gum_choose_VM_to_delete;;
'test menu' ) show_menu_test;;
'show help' ) help_main; show_help;;
"EXIT $progname" ) exit 0;;
esac
done
}
show_menu_advanced() {
while true
do
header="advanced"
show_header
height=8
start=$(echo "test ISOs download
show ISOs URLs
set default config for VMs
edit VM config
custom quickemu command
add new distro
back to main menu
EXIT $progname" | gum filter --height $height)
case $start in
'set default config for VMs' ) edit_default_VMs_config;;
'edit VM config' ) edit_VM_config;;
'custom quickemu command' ) custom_quickemu_command;;
'add new distro' ) add_new_distro;;
'test ISOs download' ) test_ISOs_download;;
'show ISOs URLs' ) show_ISOs_urls;;
'back to main menu') clear; show_headers_small; break;;
"EXIT $progname" ) exit 0;;
esac
done
}
show_menu_settings() {
while true
do
header="settings"
show_header
height=8
start=$(echo "update $progname
regenerate supported
change borders color
change borders style
change indicator color
change spinner color
change spinner style
back to main menu
EXIT $progname" | gum filter --height $height)
case $start in
"update $progname" ) update_quicktui;;
'regenerate supported' ) generate_supported;;
'change borders color' ) change_color;;
'change borders style' ) change_borders;;
'change indicator color' ) change_color_indicator;;
'change spinner style' ) change_spinner;;
'change spinner color' ) change_color_spinner;;
'back to main menu') clear; show_headers_small; break;;
"EXIT $progname" ) exit 0;;
esac
done
}
show_menu_test() {
while true
do
header="dev (Not for use!)"
show_header
height=27
start=$(echo "add new distro
change spinner
choose vm to delete
create vm
create desktop entry
custom quickemu command
delete vm
edit vm config
edit default vms config
generate if needed
generate supported
gum choose vm
gum choose editions
gum choose os
gum choose release
open distro homepage
qemu version
quickemu version
run vm
show isos urls
show custom
show editor
show headers
show vms
test isos download
back to main menu
EXIT $progname" | gum filter --height $height)
case $start in
'add new distro' ) add_new_distro;;
'change spinner' ) change_spinner;;
'choose vm to delete' ) gum_choose_VM_to_delete;;
'create vm' ) create_VM;;
'create desktop entry' ) create_desktop_entry;;
'custom quickemu command' ) custom_quickemu_command;;
'delete vm' ) delete_VMe;;
'edit vm config' ) edit_VM_config;;
'edit default vms config' ) edit_default_VMs_config;;
'generate if needed' ) generate_if_needed;;
'generate supported' ) generate_supported;;
'gum choose vm' ) gum_choose_VM;;
'gum choose editions' ) gum_choose_edition;;
'gum choose os' ) gum_choose_os;;
'gum choose release' ) gum_choose_release;;
'open distro homepage' ) open_distro_homepage;;
'qemu version' ) show_version_qemu;;
'quickemu version' ) show_version_quickemu;;
'run vm' ) run_VM;;
'show isos urls' ) show_ISOs_urls;;
'show custom' ) show_custom;;
'show editor' ) show_editor;;
'show headers' ) show_headers;;
'show vms' ) show_vms;;
'test isos download' ) test_ISOs_download;;
'back to main menu') clear; show_headers_small; break;;
"EXIT $progname" ) exit 0;;
esac
done
}
# run
clear
define_variables
generate_if_needed
show_headers_small
show_menu_main

View File

@ -65,6 +65,7 @@ slitaz
solus
tails
tinycore
trisquel
truenas-core
truenas-scale
tuxedoos

View File

@ -4,8 +4,8 @@ Type=Application
Name=agarimos
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --separator=" " --field="Release:CB" "latest" --field="Edition:CB" "plasma"!"xfce"!"lxqt"!"gnome" | xargs -I{} sh -c "./quickget agarimos {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/agarimos.svg
Exec=sh -c 'cd ./ && yad --form --separator=" " --field="Release:CB" "latest" --field="Edition:CB" "plasma"!"xfce"!"lxqt"!"gnome" | xargs -I{} sh -c "./quickget agarimos {}";/usr/bin/fish'
Icon=./icons/agarimos.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=alma
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --separator=" " --field="Release:CB" "8"!"9" --field="Edition:CB" "boot"!"minimal"!"dvd" | xargs -I{} sh -c "./quickget alma {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/alma.svg
Exec=sh -c 'cd ./ && yad --form --separator=" " --field="Release:CB" "8"!"9" --field="Edition:CB" "boot"!"minimal"!"dvd" | xargs -I{} sh -c "./quickget alma {}";/usr/bin/fish'
Icon=./icons/alma.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=alpine
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "3.12"!"3.13"!"3.14"!"3.15"!"latest" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget alpine {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/alpine.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "3.12"!"3.13"!"3.14"!"3.15"!"latest" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget alpine {}";/usr/bin/fish'
Icon=./icons/alpine.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=android
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --separator=" " --field="Release:CB" "7.1"!"8.1"!"9.0" --field="Edition:CB" "x86"!"x86_64" | xargs -I{} sh -c "./quickget android {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/android.svg
Exec=sh -c 'cd ./ && yad --form --separator=" " --field="Release:CB" "7.1"!"8.1"!"9.0" --field="Edition:CB" "x86"!"x86_64" | xargs -I{} sh -c "./quickget android {}";/usr/bin/fish'
Icon=./icons/android.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=arch
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "latest" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget arch {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/arch.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "latest" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget arch {}";/usr/bin/fish'
Icon=./icons/arch.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=archcraft
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "latest" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget archcraft {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/archcraft.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "latest" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget archcraft {}";/usr/bin/fish'
Icon=./icons/archcraft.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=arco
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --separator=" " --field="Release:CB" "v21.09.08"!"v21.09.11"!"v21.11.04"!"v21.11.05"!"v22.01.10"!"v22.03.07"!"v22.04.02"!"v22.05.02"!"v22.06.07"!"v22.07.03"!"v22.09.04"!"v22.10.02"!"v22.11.02"!"v22.12.02"!"v23.01.03"!"v23.02.02"!"v23.03.01"!"v23.04.03"!"v23.05.04"!"v23.06.02"!"v23.07.01"!"v23.09.03"!"v23.10.01" --field="Edition:CB" "large"!"small" | xargs -I{} sh -c "./quickget arco {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/arco.svg
Exec=sh -c 'cd ./ && yad --form --separator=" " --field="Release:CB" "v21.09.08"!"v21.09.11"!"v21.11.04"!"v21.11.05"!"v22.01.10"!"v22.03.07"!"v22.04.02"!"v22.05.02"!"v22.06.07"!"v22.07.03"!"v22.09.04"!"v22.10.02"!"v22.11.02"!"v22.12.02"!"v23.01.03"!"v23.02.02"!"v23.03.01"!"v23.04.03"!"v23.05.04"!"v23.06.02"!"v23.07.01"!"v23.09.03"!"v23.10.01" --field="Edition:CB" "large"!"small" | xargs -I{} sh -c "./quickget arco {}";/usr/bin/fish'
Icon=./icons/arco.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=artix
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --separator=" " --field="Release:CB" "stable" --field="Edition:CB" "base-dinit"!"base-openrc"!"base-runit"!"base-s6"!"cinnamon-dinit"!"cinnamon-openrc"!"cinnamon-runit"!"cinnamon-s6"!"lxde-dinit"!"lxde-openrc"!"lxde-runit"!"lxde-s6"!"lxqt-dinit"!"lxqt-openrc"!"lxqt-runit"!"lxqt-s6"!"mate-dinit"!"mate-openrc"!"mate-runit"!"mate-s6"!"plasma-dinit"!"plasma-openrc"!"plasma-runit"!"plasma-s6"!"xfce-dinit"!"xfce-openrc"!"xfce-runit"!"xfce-s6"!"community-gtk-openrc"!"community-qt-openrc" | xargs -I{} sh -c "./quickget artix {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/artix.svg
Exec=sh -c 'cd ./ && yad --form --separator=" " --field="Release:CB" "stable" --field="Edition:CB" "base-dinit"!"base-openrc"!"base-runit"!"base-s6"!"cinnamon-dinit"!"cinnamon-openrc"!"cinnamon-runit"!"cinnamon-s6"!"lxde-dinit"!"lxde-openrc"!"lxde-runit"!"lxde-s6"!"lxqt-dinit"!"lxqt-openrc"!"lxqt-runit"!"lxqt-s6"!"mate-dinit"!"mate-openrc"!"mate-runit"!"mate-s6"!"plasma-dinit"!"plasma-openrc"!"plasma-runit"!"plasma-s6"!"xfce-dinit"!"xfce-openrc"!"xfce-runit"!"xfce-s6"!"community-gtk-openrc"!"community-qt-openrc" | xargs -I{} sh -c "./quickget artix {}";/usr/bin/fish'
Icon=./icons/artix.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=athenaos
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "23.06.23" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget athenaos {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/athenaos.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "23.06.23" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget athenaos {}";/usr/bin/fish'
Icon=./icons/athenaos.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=batocera
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "32"!"33"!"34" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget batocera {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/batocera.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "32"!"33"!"34" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget batocera {}";/usr/bin/fish'
Icon=./icons/batocera.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=biglinux
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "kde" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget biglinux {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/biglinux.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "kde" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget biglinux {}";/usr/bin/fish'
Icon=./icons/biglinux.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=blendos
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --separator=" " --field="Release:CB" "plasma/1688424625"!"gnome/1688424211"!"deepin/1688423865"!"lxqt/1688423615"!"mate/1688423313"!"xfce/1688423053"!"cinnamon/1688422684"!"plasma/1687873468"!"gnome/1687872336"!"deepin/1687871428"!"lxqt/1687870883"!"mate/1687870186"!"xfce/1687869663"!"cinnamon/1687869060" --field="Edition:CB" "gnome"!"kde" | xargs -I{} sh -c "./quickget blendos {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/blendos.svg
Exec=sh -c 'cd ./ && yad --form --separator=" " --field="Release:CB" "plasma/1688424625"!"gnome/1688424211"!"deepin/1688423865"!"lxqt/1688423615"!"mate/1688423313"!"xfce/1688423053"!"cinnamon/1688422684"!"plasma/1687873468"!"gnome/1687872336"!"deepin/1687871428"!"lxqt/1687870883"!"mate/1687870186"!"xfce/1687869663"!"cinnamon/1687869060" --field="Edition:CB" "gnome"!"kde" | xargs -I{} sh -c "./quickget blendos {}";/usr/bin/fish'
Icon=./icons/blendos.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=bodhi
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --separator=" " --field="Release:CB" "7.0.0" --field="Edition:CB" "standard"!"hwe"!"s76" | xargs -I{} sh -c "./quickget bodhi {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/bodhi.svg
Exec=sh -c 'cd ./ && yad --form --separator=" " --field="Release:CB" "7.0.0" --field="Edition:CB" "standard"!"hwe"!"s76" | xargs -I{} sh -c "./quickget bodhi {}";/usr/bin/fish'
Icon=./icons/bodhi.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=cachyos
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --separator=" " --field="Release:CB" "230813" --field="Edition:CB" "kde"!"gnome" | xargs -I{} sh -c "./quickget cachyos {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/cachyos.svg
Exec=sh -c 'cd ./ && yad --form --separator=" " --field="Release:CB" "230813" --field="Edition:CB" "kde"!"gnome" | xargs -I{} sh -c "./quickget cachyos {}";/usr/bin/fish'
Icon=./icons/cachyos.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=centos-stream
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --separator=" " --field="Release:CB" "8"!"9" --field="Edition:CB" "dvd1"!"boot" | xargs -I{} sh -c "./quickget centos-stream {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/centos-stream.svg
Exec=sh -c 'cd ./ && yad --form --separator=" " --field="Release:CB" "8"!"9" --field="Edition:CB" "dvd1"!"boot" | xargs -I{} sh -c "./quickget centos-stream {}";/usr/bin/fish'
Icon=./icons/centos-stream.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=cereus
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --separator=" " --field="Release:CB" "latest" --field="Edition:CB" "base"!"lxqt"!"xfce" | xargs -I{} sh -c "./quickget cereus {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/cereus.svg
Exec=sh -c 'cd ./ && yad --form --separator=" " --field="Release:CB" "latest" --field="Edition:CB" "base"!"lxqt"!"xfce" | xargs -I{} sh -c "./quickget cereus {}";/usr/bin/fish'
Icon=./icons/cereus.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=chimera
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --separator=" " --field="Release:CB" "latest" --field="Edition:CB" "base"!"gnome" | xargs -I{} sh -c "./quickget chimera {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/chimera.svg
Exec=sh -c 'cd ./ && yad --form --separator=" " --field="Release:CB" "latest" --field="Edition:CB" "base"!"gnome" | xargs -I{} sh -c "./quickget chimera {}";/usr/bin/fish'
Icon=./icons/chimera.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=debian
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --separator=" " --field="Release:CB" "10.0.0"!"10.1.0"!"10.2.0"!"10.3.0"!"10.4.0"!"10.5.0"!"10.6.0"!"10.7.0"!"10.8.0"!"10.9.0"!"10.10.0"!"10.11.0"!"10.12.0"!"10.13.0"!"11.0.0"!"11.1.0"!"11.2.0"!"11.3.0"!"11.4.0"!"11.5.0"!"11.6.0"!"11.7.0"!"12.0.0"!"12.1.0" --field="Edition:CB" "standard"!"cinnamon"!"gnome"!"kde"!"lxde"!"lxqt"!"mate"!"xfce"!"netinst" | xargs -I{} sh -c "./quickget debian {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/debian.svg
Exec=sh -c 'cd ./ && yad --form --separator=" " --field="Release:CB" "10.0.0"!"10.1.0"!"10.2.0"!"10.3.0"!"10.4.0"!"10.5.0"!"10.6.0"!"10.7.0"!"10.8.0"!"10.9.0"!"10.10.0"!"10.11.0"!"10.12.0"!"10.13.0"!"11.0.0"!"11.1.0"!"11.2.0"!"11.3.0"!"11.4.0"!"11.5.0"!"11.6.0"!"11.7.0"!"12.0.0"!"12.1.0" --field="Edition:CB" "standard"!"cinnamon"!"gnome"!"kde"!"lxde"!"lxqt"!"mate"!"xfce"!"netinst" | xargs -I{} sh -c "./quickget debian {}";/usr/bin/fish'
Icon=./icons/debian.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=deepin
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "20"!"20.1"!"20.2"!"20.2.1"!"20.2.2"!"20.2.3"!"20.2.4"!"20.3"!"20.4"!"20.5"!"20.6"!"20.7" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget deepin {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/deepin.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "20"!"20.1"!"20.2"!"20.2.1"!"20.2.2"!"20.2.3"!"20.2.4"!"20.3"!"20.4"!"20.5"!"20.6"!"20.7" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget deepin {}";/usr/bin/fish'
Icon=./icons/deepin.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=devuan
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "beowulf"!"chimaera"!"daedalus" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget devuan {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/devuan.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "beowulf"!"chimaera"!"daedalus" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget devuan {}";/usr/bin/fish'
Icon=./icons/devuan.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=dietpi
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --separator=" " --field="Release:CB" "bios"!"uefi" --field="Edition:CB" "bookworm"!"bookworm-installer"!"bullseye"!"bullseye-installer" | xargs -I{} sh -c "./quickget dietpi {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/dietpi.svg
Exec=sh -c 'cd ./ && yad --form --separator=" " --field="Release:CB" "bios"!"uefi" --field="Edition:CB" "bookworm"!"bookworm-installer"!"bullseye"!"bullseye-installer" | xargs -I{} sh -c "./quickget dietpi {}";/usr/bin/fish'
Icon=./icons/dietpi.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=dragonflybsd
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "6.4.0"!"6.2.2"!"6.2.1"!"6.0.1"!"6.0.0"!"5.8.3"!"5.8.2"!"5.8.1"!"5.6.3"!"5.8.0"!"5.6.2"!"5.6.1"!"5.6.0"!"5.4.3"!"5.4.2"!"5.4.1"!"5.4.0"!"5.2.2"!"5.2.1"!"5.2.0"!"5.0.2"!"5.0.1"!"5.0.0" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget dragonflybsd {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/dragonflybsd.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "6.4.0"!"6.2.2"!"6.2.1"!"6.0.1"!"6.0.0"!"5.8.3"!"5.8.2"!"5.8.1"!"5.6.3"!"5.8.0"!"5.6.2"!"5.6.1"!"5.6.0"!"5.4.3"!"5.4.2"!"5.4.1"!"5.4.0"!"5.2.2"!"5.2.1"!"5.2.0"!"5.0.2"!"5.0.1"!"5.0.0" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget dragonflybsd {}";/usr/bin/fish'
Icon=./icons/dragonflybsd.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=edubuntu
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "23.04" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget edubuntu {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/edubuntu.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "23.04" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget edubuntu {}";/usr/bin/fish'
Icon=./icons/edubuntu.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=elementary
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "7.0" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget elementary {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/elementary.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "7.0" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget elementary {}";/usr/bin/fish'
Icon=./icons/elementary.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=endeavouros
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "apollo_22_1"!"artemis-22_6"!"artemis_neo_22_7"!"artemis_neo_22_8"!"artemis_nova_22_9"!"atlantis-21_4"!"atlantis_neo-21_5"!"cassini_22_12" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget endeavouros {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/endeavouros.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "apollo_22_1"!"artemis-22_6"!"artemis_neo_22_7"!"artemis_neo_22_8"!"artemis_nova_22_9"!"atlantis-21_4"!"atlantis_neo-21_5"!"cassini_22_12" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget endeavouros {}";/usr/bin/fish'
Icon=./icons/endeavouros.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=endless
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --separator=" " --field="Release:CB" "5.0.0" --field="Edition:CB" "base"!"en"!"fr"!"pt_BR"!"es" | xargs -I{} sh -c "./quickget endless {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/endless.svg
Exec=sh -c 'cd ./ && yad --form --separator=" " --field="Release:CB" "5.0.0" --field="Edition:CB" "base"!"en"!"fr"!"pt_BR"!"es" | xargs -I{} sh -c "./quickget endless {}";/usr/bin/fish'
Icon=./icons/endless.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=fedora
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --separator=" " --field="Release:CB" "33"!"34"!"35"!"36"!"37"!"38" --field="Edition:CB" "Workstation"!"Budgie"!"Cinnamon"!"i3"!"KDE"!"LXDE"!"LXQt"!"Mate"!"Xfce"!"Silverblue"!"Sericea"!"Kinoite"!"Sway"!"Server" | xargs -I{} sh -c "./quickget fedora {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/fedora.svg
Exec=sh -c 'cd ./ && yad --form --separator=" " --field="Release:CB" "33"!"34"!"35"!"36"!"37"!"38" --field="Edition:CB" "Workstation"!"Budgie"!"Cinnamon"!"i3"!"KDE"!"LXDE"!"LXQt"!"Mate"!"Xfce"!"Silverblue"!"Sericea"!"Kinoite"!"Sway"!"Server" | xargs -I{} sh -c "./quickget fedora {}";/usr/bin/fish'
Icon=./icons/fedora.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=freebsd
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --separator=" " --field="Release:CB" "12.4"!"13.1"!"13.2"!"14.0" --field="Edition:CB" "disc1"!"dvd1" | xargs -I{} sh -c "./quickget freebsd {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/freebsd.svg
Exec=sh -c 'cd ./ && yad --form --separator=" " --field="Release:CB" "12.4"!"13.1"!"13.2"!"14.0" --field="Edition:CB" "disc1"!"dvd1" | xargs -I{} sh -c "./quickget freebsd {}";/usr/bin/fish'
Icon=./icons/freebsd.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=freedos
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "1.2"!"1.3" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget freedos {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/freedos.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "1.2"!"1.3" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget freedos {}";/usr/bin/fish'
Icon=./icons/freedos.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=fvoid
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "latest" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget fvoid {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/tux.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "latest" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget fvoid {}";/usr/bin/fish'
Icon=./icons/tux.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=gabeeos
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --separator=" " --field="Release:CB" "latest" --field="Edition:CB" "openbox"!"qtile" | xargs -I{} sh -c "./quickget gabeeos {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/gabeeos.svg
Exec=sh -c 'cd ./ && yad --form --separator=" " --field="Release:CB" "latest" --field="Edition:CB" "openbox"!"qtile" | xargs -I{} sh -c "./quickget gabeeos {}";/usr/bin/fish'
Icon=./icons/gabeeos.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=garuda
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --separator=" " --field="Release:CB" "latest" --field="Edition:CB" "cinnamon"!"dr460nized"!"dr460nized-gaming"!"gnome"!"i3"!"kde-git"!"kde-lite"!"lxqt-kwin"!"mate"!"qtile"!"sway"!"wayfire"!"xfce" | xargs -I{} sh -c "./quickget garuda {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/garuda.svg
Exec=sh -c 'cd ./ && yad --form --separator=" " --field="Release:CB" "latest" --field="Edition:CB" "cinnamon"!"dr460nized"!"dr460nized-gaming"!"gnome"!"i3"!"kde-git"!"kde-lite"!"lxqt-kwin"!"mate"!"qtile"!"sway"!"wayfire"!"xfce" | xargs -I{} sh -c "./quickget garuda {}";/usr/bin/fish'
Icon=./icons/garuda.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=gentoo
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "latest" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget gentoo {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/gentoo.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "latest" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget gentoo {}";/usr/bin/fish'
Icon=./icons/gentoo.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=ghostbsd
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --separator=" " --field="Release:CB" "21.10.16"!"21.11.24"!"22.01.12" --field="Edition:CB" "mate"!"xfce" | xargs -I{} sh -c "./quickget ghostbsd {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/ghostbsd.svg
Exec=sh -c 'cd ./ && yad --form --separator=" " --field="Release:CB" "21.10.16"!"21.11.24"!"22.01.12" --field="Edition:CB" "mate"!"xfce" | xargs -I{} sh -c "./quickget ghostbsd {}";/usr/bin/fish'
Icon=./icons/ghostbsd.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=haiku
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --separator=" " --field="Release:CB" "r1beta3"!"r1beta4" --field="Edition:CB" "x86_64"!"x86_gcc2h" | xargs -I{} sh -c "./quickget haiku {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/haiku.svg
Exec=sh -c 'cd ./ && yad --form --separator=" " --field="Release:CB" "r1beta3"!"r1beta4" --field="Edition:CB" "x86_64"!"x86_gcc2h" | xargs -I{} sh -c "./quickget haiku {}";/usr/bin/fish'
Icon=./icons/haiku.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=holoiso
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "4.5" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget holoiso {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/holoiso.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "4.5" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget holoiso {}";/usr/bin/fish'
Icon=./icons/holoiso.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=kali
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "current"!"kali-weekly" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget kali {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/kali.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "current"!"kali-weekly" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget kali {}";/usr/bin/fish'
Icon=./icons/kali.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=kdeneon
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "user"!"testing"!"unstable"!"developer" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget kdeneon {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/kdeneon.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "user"!"testing"!"unstable"!"developer" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget kdeneon {}";/usr/bin/fish'
Icon=./icons/kdeneon.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=kolibrios
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "latest" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget kolibrios {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/kolibrios.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "latest" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget kolibrios {}";/usr/bin/fish'
Icon=./icons/kolibrios.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=kubuntu
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "16.04"!"18.04"!"20.04"!"22.04"!"23.04"!"jammy-daily"!"daily-live"!"daily-canary"!"daily-legacy" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget kubuntu {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/kubuntu.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "16.04"!"18.04"!"20.04"!"22.04"!"23.04"!"jammy-daily"!"daily-live"!"daily-canary"!"daily-legacy" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget kubuntu {}";/usr/bin/fish'
Icon=./icons/kubuntu.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=lite
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "6.0"!"6.2"!"6.4"!"6.6" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget lite {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/lite.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "6.0"!"6.2"!"6.4"!"6.6" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget lite {}";/usr/bin/fish'
Icon=./icons/lite.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=lmde
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --separator=" " --field="Release:CB" "5" --field="Edition:CB" "cinnamon" | xargs -I{} sh -c "./quickget lmde {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/lmde.svg
Exec=sh -c 'cd ./ && yad --form --separator=" " --field="Release:CB" "5" --field="Edition:CB" "cinnamon" | xargs -I{} sh -c "./quickget lmde {}";/usr/bin/fish'
Icon=./icons/lmde.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=lubuntu
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "16.04"!"18.04"!"20.04"!"22.04"!"23.04"!"jammy-daily"!"daily-live"!"daily-canary"!"daily-legacy" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget lubuntu {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/lubuntu.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "16.04"!"18.04"!"20.04"!"22.04"!"23.04"!"jammy-daily"!"daily-live"!"daily-canary"!"daily-legacy" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget lubuntu {}";/usr/bin/fish'
Icon=./icons/lubuntu.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=macos
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "high-sierra"!"mojave"!"catalina"!"big-sur"!"monterey"!"ventura" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget macos {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/macos.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "high-sierra"!"mojave"!"catalina"!"big-sur"!"monterey"!"ventura" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget macos {}";/usr/bin/fish'
Icon=./icons/macos.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=mageia
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --separator=" " --field="Release:CB" "8" --field="Edition:CB" "Plasma"!"GNOME"!"Xfce" | xargs -I{} sh -c "./quickget mageia {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/mageia.svg
Exec=sh -c 'cd ./ && yad --form --separator=" " --field="Release:CB" "8" --field="Edition:CB" "Plasma"!"GNOME"!"Xfce" | xargs -I{} sh -c "./quickget mageia {}";/usr/bin/fish'
Icon=./icons/mageia.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=manjaro
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --separator=" " --field="Release:CB" "xfce"!"gnome"!"kde"!"budgie"!"cinnamon"!"i3"!"mate" --field="Edition:CB" "full"!"minimal" | xargs -I{} sh -c "./quickget manjaro {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/manjaro.svg
Exec=sh -c 'cd ./ && yad --form --separator=" " --field="Release:CB" "xfce"!"gnome"!"kde"!"budgie"!"cinnamon"!"i3"!"mate" --field="Edition:CB" "full"!"minimal" | xargs -I{} sh -c "./quickget manjaro {}";/usr/bin/fish'
Icon=./icons/manjaro.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=mint
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --separator=" " --field="Release:CB" "20.2"!"20.3"!"21"!"21.1"!"21.2" --field="Edition:CB" "cinnamon"!"mate"!"xfce" | xargs -I{} sh -c "./quickget mint {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/mint.svg
Exec=sh -c 'cd ./ && yad --form --separator=" " --field="Release:CB" "20.2"!"20.3"!"21"!"21.1"!"21.2" --field="Edition:CB" "cinnamon"!"mate"!"xfce" | xargs -I{} sh -c "./quickget mint {}";/usr/bin/fish'
Icon=./icons/mint.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=miyo
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --separator=" " --field="Release:CB" "2022" --field="Edition:CB" "Kwin"!"Deboot-Ceres"!"JWM"!"Openbox"!"MATE" | xargs -I{} sh -c "./quickget miyo {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/miyo.svg
Exec=sh -c 'cd ./ && yad --form --separator=" " --field="Release:CB" "2022" --field="Edition:CB" "Kwin"!"Deboot-Ceres"!"JWM"!"Openbox"!"MATE" | xargs -I{} sh -c "./quickget miyo {}";/usr/bin/fish'
Icon=./icons/miyo.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=mx
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --separator=" " --field="Release:CB" "21.3" --field="Edition:CB" "Xfce"!"KDE"!"Fluxbox" | xargs -I{} sh -c "./quickget mx {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/mx.svg
Exec=sh -c 'cd ./ && yad --form --separator=" " --field="Release:CB" "21.3" --field="Edition:CB" "Xfce"!"KDE"!"Fluxbox" | xargs -I{} sh -c "./quickget mx {}";/usr/bin/fish'
Icon=./icons/mx.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=netboot
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "latest" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget netboot {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/netboot.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "latest" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget netboot {}";/usr/bin/fish'
Icon=./icons/netboot.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=netbsd
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "9.3"!"9.2"!"9.1"!"9.0"!"8.2"!"8.1"!"8.0" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget netbsd {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/netbsd.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "9.3"!"9.2"!"9.1"!"9.0"!"8.2"!"8.1"!"8.0" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget netbsd {}";/usr/bin/fish'
Icon=./icons/netbsd.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=nixos
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --separator=" " --field="Release:CB" "21.05"!"21.11"!"22.05"!"22.11"!"23.05" --field="Edition:CB" "gnome"!"plasma5"!"minimal" | xargs -I{} sh -c "./quickget nixos {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/nixos.svg
Exec=sh -c 'cd ./ && yad --form --separator=" " --field="Release:CB" "21.05"!"21.11"!"22.05"!"22.11"!"23.05" --field="Edition:CB" "gnome"!"plasma5"!"minimal" | xargs -I{} sh -c "./quickget nixos {}";/usr/bin/fish'
Icon=./icons/nixos.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=openbsd
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "6.8"!"6.9"!"7.0"!"7.1"!"7.2"!"7.3"!"7.4" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget openbsd {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/openbsd.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "6.8"!"6.9"!"7.0"!"7.1"!"7.2"!"7.3"!"7.4" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget openbsd {}";/usr/bin/fish'
Icon=./icons/openbsd.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=openindiana
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --separator=" " --field="Release:CB" "20230421" --field="Edition:CB" "gui"!"text"!"minimal" | xargs -I{} sh -c "./quickget openindiana {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/openindiana.svg
Exec=sh -c 'cd ./ && yad --form --separator=" " --field="Release:CB" "20230421" --field="Edition:CB" "gui"!"text"!"minimal" | xargs -I{} sh -c "./quickget openindiana {}";/usr/bin/fish'
Icon=./icons/openindiana.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=opensuse
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "15.0"!"15.1"!"15.2"!"15.3"!"15.4"!"microos"!"tumbleweed" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget opensuse {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/opensuse.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "15.0"!"15.1"!"15.2"!"15.3"!"15.4"!"microos"!"tumbleweed" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget opensuse {}";/usr/bin/fish'
Icon=./icons/opensuse.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=oracle
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "7.7"!"7.8"!"7.9"!"8.4"!"8.5"!"8.6"!"9.0" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget oracle {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/oracle.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "7.7"!"7.8"!"7.9"!"8.4"!"8.5"!"8.6"!"9.0" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget oracle {}";/usr/bin/fish'
Icon=./icons/oracle.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=popos
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --separator=" " --field="Release:CB" "20.04"!"21.10"!"22.04" --field="Edition:CB" "intel"!"nvidia" | xargs -I{} sh -c "./quickget popos {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/popos.svg
Exec=sh -c 'cd ./ && yad --form --separator=" " --field="Release:CB" "20.04"!"21.10"!"22.04" --field="Edition:CB" "intel"!"nvidia" | xargs -I{} sh -c "./quickget popos {}";/usr/bin/fish'
Icon=./icons/popos.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=reactos
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "latest" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget reactos {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/reactos.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "latest" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget reactos {}";/usr/bin/fish'
Icon=./icons/reactos.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=rebornos
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "latest" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget rebornos {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/rebornos.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "latest" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget rebornos {}";/usr/bin/fish'
Icon=./icons/rebornos.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=rocky
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --separator=" " --field="Release:CB" "8.3"!"8.4"!"8.5"!"8.6"!"8.7"!"9.0"!"9.1" --field="Edition:CB" "minimal"!"dvd"!"boot" | xargs -I{} sh -c "./quickget rocky {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/rocky.svg
Exec=sh -c 'cd ./ && yad --form --separator=" " --field="Release:CB" "8.3"!"8.4"!"8.5"!"8.6"!"8.7"!"9.0"!"9.1" --field="Edition:CB" "minimal"!"dvd"!"boot" | xargs -I{} sh -c "./quickget rocky {}";/usr/bin/fish'
Icon=./icons/rocky.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=siduction
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --separator=" " --field="Release:CB" "latest" --field="Edition:CB" "kde"!"lxqt"!"nox"!"xfce"!"xorg" | xargs -I{} sh -c "./quickget siduction {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/siduction.svg
Exec=sh -c 'cd ./ && yad --form --separator=" " --field="Release:CB" "latest" --field="Edition:CB" "kde"!"lxqt"!"nox"!"xfce"!"xorg" | xargs -I{} sh -c "./quickget siduction {}";/usr/bin/fish'
Icon=./icons/siduction.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=slackware
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "14.2"!"15.0" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget slackware {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/slackware.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "14.2"!"15.0" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget slackware {}";/usr/bin/fish'
Icon=./icons/slackware.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=slax
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --separator=" " --field="Release:CB" "latest" --field="Edition:CB" "Debian"!"Slackware" | xargs -I{} sh -c "./quickget slax {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/slax.svg
Exec=sh -c 'cd ./ && yad --form --separator=" " --field="Release:CB" "latest" --field="Edition:CB" "Debian"!"Slackware" | xargs -I{} sh -c "./quickget slax {}";/usr/bin/fish'
Icon=./icons/slax.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=slitaz
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "preferred"!"core"!"core64"!"loram"!"core-5in1"!"preinit" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget slitaz {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/slitaz.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "preferred"!"core"!"core64"!"loram"!"core-5in1"!"preinit" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget slitaz {}";/usr/bin/fish'
Icon=./icons/slitaz.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=solus
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --separator=" " --field="Release:CB" "4.3" --field="Edition:CB" "Budgie"!"GNOME"!"MATE"!"Plasma" | xargs -I{} sh -c "./quickget solus {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/solus.svg
Exec=sh -c 'cd ./ && yad --form --separator=" " --field="Release:CB" "4.3" --field="Edition:CB" "Budgie"!"GNOME"!"MATE"!"Plasma" | xargs -I{} sh -c "./quickget solus {}";/usr/bin/fish'
Icon=./icons/solus.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=tails
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "stable" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget tails {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/tails.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "stable" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget tails {}";/usr/bin/fish'
Icon=./icons/tails.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=tinycore
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --separator=" " --field="Release:CB" "14.0" --field="Edition:CB" "Core"!"TinyCore"!"CorePlus"!"CorePure64"!"TinyCorePure64" | xargs -I{} sh -c "./quickget tinycore {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/tinycore.svg
Exec=sh -c 'cd ./ && yad --form --separator=" " --field="Release:CB" "14.0" --field="Edition:CB" "Core"!"TinyCore"!"CorePlus"!"CorePure64"!"TinyCorePure64" | xargs -I{} sh -c "./quickget tinycore {}";/usr/bin/fish'
Icon=./icons/tinycore.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -0,0 +1,16 @@
[Desktop Entry]
Version=0.80
Type=Application
Name=trisquel
GenericName=
Comment=
Exec=sh -c 'cd ./ && yad --form --separator=" " --field="Release:CB" "10.0.1"!"11.0" --field="Edition:CB" "mate"!"lxde"!"kde"!"sugar" | xargs -I{} sh -c "./quickget trisquel {}";/usr/bin/fish'
Icon=./icons/trisquel.svg
Terminal=sakura
X-MultipleArgs=
Type=Application
Categories=System;Virtualization;
StartupNotify=
MimeType=
Keywords=

View File

@ -4,8 +4,8 @@ Type=Application
Name=truenas-core
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "12.0"!"13.0" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget truenas-core {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/truenas-core.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "12.0"!"13.0" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget truenas-core {}";/usr/bin/fish'
Icon=./icons/truenas-core.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=truenas-scale
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "22.02"!"22.12" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget truenas-scale {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/truenas-scale.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "22.02"!"22.12" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget truenas-scale {}";/usr/bin/fish'
Icon=./icons/truenas-scale.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=tuxedoos
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "2" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget tuxedoos {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/tuxedoos.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "2" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget tuxedoos {}";/usr/bin/fish'
Icon=./icons/tuxedoos.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=ubuntu-budgie
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "18.04"!"20.04"!"22.04"!"23.04"!"jammy-daily"!"daily-live"!"daily-canary"!"daily-legacy" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget ubuntu-budgie {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/ubuntu-budgie.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "18.04"!"20.04"!"22.04"!"23.04"!"jammy-daily"!"daily-live"!"daily-canary"!"daily-legacy" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget ubuntu-budgie {}";/usr/bin/fish'
Icon=./icons/ubuntu-budgie.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=ubuntu-mate
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "16.04"!"18.04"!"20.04"!"22.04"!"23.04"!"jammy-daily"!"daily-live"!"daily-canary"!"daily-legacy" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget ubuntu-mate {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/ubuntu-mate.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "16.04"!"18.04"!"20.04"!"22.04"!"23.04"!"jammy-daily"!"daily-live"!"daily-canary"!"daily-legacy" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget ubuntu-mate {}";/usr/bin/fish'
Icon=./icons/ubuntu-mate.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=ubuntu-server
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "18.04"!"20.04"!"22.04"!"23.04"!"daily-live" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget ubuntu-server {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/ubuntu-server.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "18.04"!"20.04"!"22.04"!"23.04"!"daily-live" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget ubuntu-server {}";/usr/bin/fish'
Icon=./icons/ubuntu-server.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=ubuntu-unity
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "23.04"!"daily-live"!"daily-canary" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget ubuntu-unity {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/ubuntu-unity.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "23.04"!"daily-live"!"daily-canary" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget ubuntu-unity {}";/usr/bin/fish'
Icon=./icons/ubuntu-unity.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=ubuntu
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "14.04"!"16.04"!"18.04"!"20.04"!"22.04"!"23.04"!"jammy-daily"!"daily-live"!"daily-canary"!"daily-legacy" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget ubuntu {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/ubuntu.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "14.04"!"16.04"!"18.04"!"20.04"!"22.04"!"23.04"!"jammy-daily"!"daily-live"!"daily-canary"!"daily-legacy" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget ubuntu {}";/usr/bin/fish'
Icon=./icons/ubuntu.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=ubuntucinnamon
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "23.04"!"daily-live"!"daily-canary" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget ubuntucinnamon {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/ubuntucinnamon.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "23.04"!"daily-live"!"daily-canary" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget ubuntucinnamon {}";/usr/bin/fish'
Icon=./icons/ubuntucinnamon.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=ubuntukylin
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "16.04"!"18.04"!"20.04"!"22.04"!"23.04"!"jammy-daily"!"daily-live"!"daily-canary"!"daily-legacy" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget ubuntukylin {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/ubuntukylin.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "16.04"!"18.04"!"20.04"!"22.04"!"23.04"!"jammy-daily"!"daily-live"!"daily-canary"!"daily-legacy" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget ubuntukylin {}";/usr/bin/fish'
Icon=./icons/ubuntukylin.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=ubuntustudio
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "16.04"!"18.04"!"20.04"!"22.04"!"23.04"!"jammy-daily"!"daily-live"!"daily-canary"!"daily-legacy" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget ubuntustudio {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/ubuntustudio.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "16.04"!"18.04"!"20.04"!"22.04"!"23.04"!"jammy-daily"!"daily-live"!"daily-canary"!"daily-legacy" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget ubuntustudio {}";/usr/bin/fish'
Icon=./icons/ubuntustudio.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=vanillaos
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "22.10" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget vanillaos {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/vanillaos.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "22.10" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget vanillaos {}";/usr/bin/fish'
Icon=./icons/vanillaos.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=ventoy
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --field="Release:CB" "1.0.95" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget ventoy {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/ventoy.svg
Exec=sh -c 'cd ./ && yad --form --field="Release:CB" "1.0.95" | cut -d"|" -f1 | xargs -I{} sh -c "./quickget ventoy {}";/usr/bin/fish'
Icon=./icons/ventoy.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

View File

@ -4,8 +4,8 @@ Type=Application
Name=void
GenericName=
Comment=
Exec=sh -c 'cd /home/zen/Git/DistroHopper && yad --form --separator=" " --field="Release:CB" "current" --field="Edition:CB" "glibc"!"musl"!"xfce-glibc"!"xfce-musl" | xargs -I{} sh -c "./quickget void {}";/usr/bin/fish'
Icon=/home/zen/Git/DistroHopper/icons/void.svg
Exec=sh -c 'cd ./ && yad --form --separator=" " --field="Release:CB" "current" --field="Edition:CB" "glibc"!"musl"!"xfce-glibc"!"xfce-musl" | xargs -I{} sh -c "./quickget void {}";/usr/bin/fish'
Icon=./icons/void.svg
Terminal=sakura
X-MultipleArgs=
Type=Application

Some files were not shown because too many files have changed in this diff Show More