Compare commits

..

4 commits
dev ... 0.3

Author SHA1 Message Date
b26d54f371
Delete untitled 2023-03-16 23:34:45 +01:00
0419647865
Delete .config.kate-swp 2023-03-16 23:34:01 +01:00
fd2720ac17
kate temp to .gitignore 2023-03-16 23:33:30 +01:00
9a76e56656 v0.3 2023-03-16 23:30:36 +01:00
347 changed files with 2137 additions and 954991 deletions

3
.gitignore vendored
View file

@ -1,8 +1,7 @@
logo
config/vms_ready/
config/vms_supported/
#*.chunklist
#*.conf
*.conf
*.dmg
*.fd
*.img

3
.gitmodules vendored
View file

@ -1,3 +0,0 @@
[submodule "quickemu-origin"]
path = quickemu-origin
url = https://github.com/quickemu-project/quickemu

View file

@ -1 +0,0 @@
docs/README.md

352
README.md
View file

@ -1,83 +1,47 @@
![](https://img.shields.io/github/stars/oSoWoSo/DistroHopper?style=for-the-badge&color=8BC53F&logo=instatus&logoColor=000000)
![](https://img.shields.io/github/forks/oSoWoSo/DistroHopper?style=for-the-badge&color=8BC53F&logo=git&logoColor=000000)
![](https://img.shields.io/github/license/oSoWoSo/DistroHopper?style=for-the-badge&color=8BC53F&logo=apache&logoColor=000000)
![](https://img.shields.io/github/repo-size/oSoWoSo/DistroHopper?style=for-the-badge&color=8BC53F&logo=files&logoColor=000000)
Want you try new Operating system?
![](https://img.shields.io/github/last-commit/oSoWoSo/DistroHopper?style=for-the-badge&color=8BC53F&logo=codeigniter&logoColor=000000)
![](https://img.shields.io/badge/language-shell-green?style=for-the-badge&color=8BC53F&logo=sharp&logoColor=000000)
![](https://img.shields.io/badge/gitmoji-%20😜%20😍-FFDD67.svg?style=for-the-badge&color=8BC53F&logo=sharp&logoColor=000000&alt="Gitmoji")
How?
---
# Looking to try out a new operating system?
try
# **DistroHopper**
Quickly download, create and run VM of any#TODO operating system.
# [DistroHooper](https://github.com/oSoWoSo/DistroHooper)
Licensed under AGPL3
### Still Testing version!
![quickgui](distrohopper.png)
# 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?)
quickly create and run VMs
Linux![Tux](docs/tux23.png) required...
As a base excellent [quickemu](https://github.com/quickemu-project/quickemu)
---
I added:
Click on Hop for latest download
## quickgui
using yad
[![Hop](docs/hop120.png)](https://sourceforge.net/projects/distrohopper/files/latest/download)
### .Desktop file generator
It will simple generate .desktop files for every supported VM in quickemu.
So you can copy it anywhere...
And I mean every supported distro.
you can download new distro with few clicks of a mouse
You need to run quickgui just for update supported distros.
[![Donate](https://liberapay.com/assets/widgets/donate.svg)](https://liberapay.com/zenobit/donate)
### Simple GUI using yad --notebook
Licensed under AGPL3
# Still Beta version!
<details>
<summary>Click for screenshot</summary>
<img src="docs/distrohopper.png">
</details>
See it in action on youtube...
As a base excellent [quickemu](https://github.com/quickemu-project/quickemu) (Link to project page)
[![quickgui](https://img.youtube.com/vi/JtjIseqZMkQ/0.jpg)](https://www.youtube.com/watch?v=JtjIseqZMkQ)
[![quickemu video: Replace VirtualBox with Bash &
QEMU](https://img.youtube.com/vi/AOTYWEgw0hI/0.jpg)](https://www.youtube.com/watch?v=AOTYWEgw0hI)
or command line?...
You can download new distro with **few clicks** of a mouse
## quicktui
using fzf
# Features
- GUI using yad (on youtube)
[![quicktui](https://img.youtube.com/vi/gJ5hqYEskOw/0.jpg)](https://www.youtube.com/watch?v=gJ5hqYEskOw)
[![dh](https://img.youtube.com/vi/RrFQECcwLRA/0.jpg)](https://www.youtube.com/watch?v=RrFQECcwLRA)
- TUI using fzf (on youtube)
[![tui](https://img.youtube.com/vi/gJ5hqYEskOw/0.jpg)](https://www.youtube.com/watch?v=gJ5hqYEskOw)
- Desktop(shortcuts) entries generator
- Set dir where VMs will be stored
- Install DistroHopper systemwide
- Portable mode (dependecies still must be installed)
- Add new operating system to quickget (bit easier)
- Copy all downloaded ISOs to destination directory
- Translate DistroHopper (Currently supported English and Czech language)
Developed in English and translated into Czech language.
## Welcome translations!
---
# Why am I doing it?
# Why I creating this?
Because I wanna learn
- Linux
@ -88,20 +52,23 @@ Developed in English and translated into Czech language.
- project management
And contribute to open source
- contribute to open source
play with Quickemu
Because I wanna play with Quickemu
And easily add new distros to it
And easily add new distro to it
---
#
## How to run DistroHopper?
Quickemu.
You need fullfill the requirement first...
[![quickemu video: Replace VirtualBox with Bash &
QEMU](https://img.youtube.com/vi/AOTYWEgw0hI/0.jpg)](https://www.youtube.com/watch?v=AOTYWEgw0hI)
## Requirements (For running VMs)
- [QEMU](https://www.qemu.org/) (*6.0.0 or newer*) **with GTK, SDL, SPICE & VirtFS support**
## 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)
@ -134,245 +101,36 @@ 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.
If you install DistroHopper, it should take care of dependencies on Arch, Debian, Ubuntu, openSuse and Fedora
These examples may save a little typing
### For DistroHopper to work you need
Debian:
`wget yad fzf`
sudo apt install qemu bash coreutils ovmf grep jq lsb procps python3 genisoimage usbutils util-linux sed spice-client-gtk swtpm wget xdg-user-dirs zsync unzip
quickemu is included
Fedora:
For adding new distros, or adding/improving translations you will need also meld.
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
Void Linux:
# How to install DistroHopper?
sudo xbps-install qemu bash coreutils grep jq procps-ng python3 util-linux sed spice-gtk swtpm usbutils wget xdg-user-dirs xrandr unzip zsync socat
You need get copy of distrohopper
# Currently supported Distribution:
If you want more stable experience, download latest release from
In screenshot above...
#### [GitHub](https://github.com/oSoWoSo/DistroHopper/releases) or SourceForge [![SourceForge](https://img.shields.io/sourceforge/dt/distrohopper.svg)](https://sourceforge.net/projects/distrohopper/files/latest/download)
---
If you want latest developer version... (could have bugs and break anytime)
Or you want translate DistroHopper
`git clone https://github.com/oSoWoSo/DistroHopper`
Enter created/unpacked distrohopper directory
Now you should be good to go...
---
# How to run DistroHopper
Just run from terminal
`./dh`
And you will see what next...
I am usually run DistroHopper as:
`./dh m r s l && ./dh i && dh g`
(But...)
## Desktop files
All desktop files will be storred in your .config/distrohopper
in directories *ready* and *supported*
Fell free to copy them anywhere you want...
### Currently supported Operating Systems and tools:
agarimos
alma
alpine
android
arch
archcraft
arco
artix
athenaos
batocera
biglinux
blendos
bodhi
cachyos
centos-stream
cereus
chimera
debian
deepin
devuan
dietpi
dragonflybsd
edubuntu
elementary
endeavouros
endless
fedora
freebsd
freedos
fvoid
gabeeos
garuda
gentoo
ghostbsd
haiku
holoiso
kali
kdeneon
kolibrios
kubuntu
lite
lmde
mageia
manjaro
mint
miyo
mx
netboot
netbsd
nixos
lubuntu
macos
openbsd
openindiana
opensuse
oracle
popos
reactos
rebornos
rocky
siduction
slackware
slax
slitaz
solus
tails
tinycore
truenas-core
truenas-scale
tuxedoos
ubuntu
ubuntu-budgie
ubuntucinnamon
ubuntukylin
ubuntu-mate
ubuntu-server
ubuntustudio
ubuntu-unity
vanillaos
ventoy
void
voidpup
vx
windows
xero
xubuntu
zorin
Also with posible planned: [in discusion](https://github.com/oSoWoSo/DistroHopper/discussions/9)
---
#### [discuss](https://github.com/oSoWoSo/DistroHopper/discussions) on github
# Join DistroHopper chat group:
[![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)
### Testing version!
# Without these amazing projects it wouldn't be posible:
#### [bash](https://www.gnu.org/software/bash/)
[bash](https://www.gnu.org/software/bash/)
#### [QEMU](https://www.qemu.org/)
[QEMU](https://www.qemu.org/)
#### [quickemu](https://github.com/quickemu-project/quickemu)
[quickemu](https://github.com/quickemu-project/quickemu)
GUI depends on
#### [yad](https://github.com/v1cont/yad)
[yad](https://github.com/v1cont/yad)
TUI depends on
#### [fzf](https://github.com/junegunn/fzf)
----
For
- easy of use
#### [fish](https://fishshell.com)
- commiting and working with github
#### [lazygit](https://github.com/jesseduffield/lazygit)
#### [opencommit](https://github.com/di-sukharev/opencommit)
- Editing
#### [geany](https://geany.org/)
#### [Kate](https://apps.kde.org/kate)
- diff
#### [Meld](https://meld.app/)
- Logo and icons
#### [GIMP](https://www.gimp.org)
and
#### [Inkscape](https://inkscape.org)
#### [logo by](https://freesvg.org/by/OpenClipart) bit repaired by me..
- Updating translation
#### [Poedit](https://poeditor.com/)
Everything done on
#### [Void Linux](https://voidlinux.org)
---
# Mirrored on
#### [GitHub](https://github.com/oSoWoSo/DistroHopper)
#### [SourceForge](https://sourceforge.net/projects/distrohopper)
#### [Disroot](https://git.disroot.org/oSoWoSo/DistroHopper)
#### [Codeberg](https://codeberg.org/oSoWoSo/DistroHopper)
#### [GitLab](https://gitlab.com/osowoso/distrohopper)
#### [SourceHut](https://git.sr.ht/~osowoso/DistroHopper)
---
For Homepage click on Hop
[![Hop](docs/hop120.png)](https://dh.osowoso.xyz/)
# donate
[![Donate](https://liberapay.com/assets/widgets/donate.svg)](https://liberapay.com/zenobit/donate)
@zen0bit at github
mailto: <zenobit@osowoso.xyz>
#### parent site [oSoWoSo](https://osowoso.xyz)
[fzf](https://github.com/junegunn/fzf)

View file

@ -1,6 +0,0 @@
[Desktop Entry]
Type=Application
Name=About DistroHopper
Exec=yad --image=/usr/share/icons/distroicons/hop.svg --info --text "About Distrohopper \n\n Quickly download, create and run VM of any operating system. \n Source Code: https://github.com/oSoWoSo/DistroHopper \n License: AGPL-3-only" --no-buttons
Icon=/usr/share/icons/distroicons/hop.svg
Categories=System;Virtualization;Settings;

44
addnewtoquickgui.sh Executable file
View file

@ -0,0 +1,44 @@
#!/bin/bash
yad --form --field="Name" "" --field="Releases" "" --field="Editions" "" --field="URL" "" --field="ISO" ""
# little script for adding distros to quickemu
# This version use desktop files and notebook
#TODO ADD_PRETTY_NAME_${DISTRO}
${DISTRO}) PRETTY_NAME="VX Linux";;
#TODO ADD_NAME_${DISTRO}
${DISTRO} \
#TODO ADD_releases_${DISTRO} function
function releases_${DISTRO}() {
echo 6.1 5.0 4.2 4.1 4.0
}
#TODO ADD_editions_${DISTRO} function
function editions_${DISTRO}() {
echo
}
#TODO ADD_get_${DISTRO} function
function get_${DISTRO}() {
local HASH=""
local ISO=""
local URL="https://github.com/dessington/${DISTRO}/releases/download/${RELEASE}"
if [ "$RELEASE" == "4.0" ]; then
ISO="vx-linux-4.0-qt.iso"
else
ISO="vx-linux-${RELEASE}.iso"
fi
echo "${URL}/${ISO} ${HASH}"
}
function get_voidpup() {
local HASH=""
local URL=""
local TMPURL=""
TMPURL=$(wget -q -S -O- --max-redirect=0 "https://sourceforge.net/projects/vpup/files/latest/download" 2>&1 | grep -i Location | cut -d' ' -f4)
URL=${TMPURL%\?*}
echo "${URL} ${HASH}"
}

View file

@ -1,92 +0,0 @@
#!/usr/bin/env bash
#
# Copyright (c) 2023 darkmaster @grm34
#
# This script automatically translates base language strings and adds
# them into the various translations (original will be used on error).
# It also removes duplicate strings and rearranges them alphabetically.
_sort_strings() {
# RM duplicate strings from an array and sorts them alphabetically.
# Usage: _sort_strings "$@" (array of strings)
# Returns: $sorted_strings (array)
local string strings
declare -A strings
for string in "${@}"; do
[[ $string ]] && IFS=" " strings["${string:- }"]=1
done
# shellcheck disable=SC2207
IFS=$'\n' sorted_strings=($(sort <<< "${!strings[*]}"))
}
_clean_cfg_files() {
# RM duplicates lines and sorts them alphabetically.
# Usage: _clean_cfg_files "$@" (array of files)
local file
for file in "$@"; do
mapfile -t strings < "$file"
_sort_strings "${strings[@]}"
printf "%s\n" "${sorted_strings[@]}" > "$file"
done
}
_get_strings_from_cfg() {
# Grabs strings from CFG files.
# Usage: _get_strings_from_cfg "$@" (array of files)
# Returns: $<language_code>_strings $cfg_list (arrays)
local file name
for file in "$@"; do
name=${file##*/}; name="${name/.cfg/_strings}"
mapfile -t "$name" < "$file"
[[ $name != en_strings ]] && cfg_list+=("$name")
done
}
_get_string_data() {
# Grabs string name and string value
# Returns: $data (array)
IFS=$'\n' read -d "" -ra data <<< "${1//=/$'\n'}"
data[1]=${data[1]//\"}
}
_translate_string() {
# Usage: _translate_string "string" "language code"
# Returns: $translated (string)
translated="$(curl -s https://api-free.deepl.com/v2/translate \
-d auth_key=f1414922-db81-5454-67bd-9608cdca44b3:fx \
-d "text=$1" -d "target_lang=${2^^}" \
| grep -o '"text":"[^"]*' | grep -o '[^"]*$')"
}
_translate_and_add_missing_strings_into_cfg() {
# Translates then write missing strings from base language
# into the various translation files (from $cfg_list).
local line language trad_strings
for line in "${en_strings[@]:?}"; do
_get_string_data "$line"
for language in "${cfg_list[@]}"; do
declare -n trad_strings="$language"
if [[ "${trad_strings[*]}" != *"${data[0]}="* ]]; then
_translate_string "${data[1]}" "${language/_strings}"
[[ -n $translated ]] && line="${data[0]}=\"${translated}\""
[[ -n $translated ]] && note="translated" || note="original"
trad_strings+=("$line"); file="${language/_strings/.cfg}"
printf "%s\n" "${trad_strings[@]}" > "lang/$file"
echo "=> ${data[0]} (${note}) added into $file"
fi
done
done
}
# Run auto-translate.
if [[ $1 == dh ]]; then
echo "Running auto-translate (this could take a while)..."
_clean_cfg_files lang/*.cfg
_get_strings_from_cfg lang/*.cfg
_translate_and_add_missing_strings_into_cfg
_clean_cfg_files lang/*.cfg
[[ $note ]] && echo "==> done" || echo "==> nothing to translate"
else
echo "ERROR: you must specify 'dh' as argument"
fi

6
config/1stRun.desktop Normal file
View file

@ -0,0 +1,6 @@
[Desktop Entry]
Type=Application
Name=Renew VMs
Exec=sakura -h renew.sh
Icon=/home/zen/.config/distrohopper/vms_icons/tux.svg
Categories=System;Virtualization;Settings;

28
config/1stRun.sh Executable file
View file

@ -0,0 +1,28 @@
#!/bin/bash
source distrohopper.conf
# distrohopper first run
CONFIG_DIR="$HOME/.config/distrohopper"
# create default dirs
rm -r "$CONFIG_DIR"
mkdir -p "$CONFIG_DIR" "$CONFIG_DIR/vms_ready" "$CONFIG_DIR/vms_supported" "$CONFIG_DIR/vms_icons"
# copy icons
#cp -r vms_icons "$CONFIG_DIR/"
# copy everything to config dir
cp -r * "$CONFIG_DIR/"
# install prerequisities (Void linux)
# Install distrohopper to all users
sudo cp ../dh ../quickgui ../quicktui ../quickget ../quickemu /usr/bin/
# Renew VMs
"$CONFIG_DIR/renew.sh"
# Set VMs dir
"$CONFIG_DIR/set_dir.sh"
echo "Done"

View file

@ -2,5 +2,5 @@
Type=Application
Name=About yad
Exec=yad --about
Icon=/usr/share/icons/Papirus/64x64/apps/yad.svg
Icon=/home/zen/.config/distrohopper/vms_icons/cereus.svg
Categories=System;Virtualization;Settings;

6
config/add_distro.desktop Executable file
View file

@ -0,0 +1,6 @@
[Desktop Entry]
Type=Application
Name=Add new distro
Exec=sakura -h -e /home/zen/.config/distrohopper/add_distro.sh
Icon=/home/zen/.config/distrohopper/vms_icons/cereus.svg
Categories=System;Virtualization;Settings;

39
config/add_distro.sh Executable file
View file

@ -0,0 +1,39 @@
#!/bin/bash
yad --form --field="Pretty name" "" --field="Name" "" --field="Releases" "" --field="Editions" "" --field="URL" "" --field="ISO" "" --field="Hash" "" > template.tmp
PRETTY_NAME="$(cat template.tmp | cut -d'|' -f1)"
NAME="$(cat template.tmp | cut -d'|' -f2)"
RELEASES="$(cat template.tmp | cut -d'|' -f3)"
EDITIONS="$(cat template.tmp | cut -d'|' -f4)"
URL="$(cat template.tmp | cut -d'|' -f5)"
ISO="$(cat template.tmp | cut -d'|' -f6)"
HASH="$(cat template.tmp | cut -d'|' -f7)"
echo " $NAME) PRETTY_NAME=$PRETTY_NAME;;
" > newvm.tmp
echo " $NAME \\
" >> newvm.tmp
echo "function releases_$NAME() {
echo $RELEASES
}
" >> newvm.tmp
echo "function editions_$NAME() {
echo $EDITIONS
}
" >> newvm.tmp
echo "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}"
}
" >> newvm.tmp
echo "template.tmp content:
"
cat template.tmp
echo "newvm.tmp content:
"
cat newvm.tmp

19
config/check.sh Executable file
View file

@ -0,0 +1,19 @@
#!/bin/bash
# DEBUG mod
#bash -x quickyad 2>&1 | tee output.log
# YAD gui script for excellent quickemu
#TODO Download Icons
#TODO Add homepages to right click
echo "Running..."
# dependencies checks
if ! command -v yad >/dev/null 2>&1; then
echo "You are missing yad..." >&2
exit 1
fi
if ! command -v quickemu >/dev/null 2>&1; then
echo "You are missing quickemu..." >&2
exit 1
fi

6
config/renew.desktop Normal file
View file

@ -0,0 +1,6 @@
[Desktop Entry]
Type=Application
Name=Renew VMs
Exec=sakura -h renew.sh
Icon=/home/zen/.config/distrohopper/vms_icons/tux.svg
Categories=System;Virtualization;Settings;

80
config/renew.sh Executable file
View file

@ -0,0 +1,80 @@
#!/bin/bash
export LC_ALL=C
echo "Updating VMs..."
# distrohopper config file
CONFIG_DIR="$HOME/.config/distrohopper"
source "$CONFIG_DIR/distrohopper.conf"
# shellcheck source=distrohopper.conf
# remove desktop files (ready to run VMs)
rm "$CONFIG_DIR/vms_ready/*"
# Enter ditrohopper VMs dir
cd "$QUICKEMU_VMS_DIR" || exit
# check for VMs .conf files (ready to run VMs)
for vm_config_file in *.conf; do
vm_desktop_file=$(basename "$QUICKEMU_VMS_DIR/$vm_config_file" .conf)
# Use fuzzy matching to find the best matching icon file (ready to run VMs)
icon_name=$(basename "$QUICKEMU_VMS_DIR/$vm_config_file" .conf | cut -d'-' -f -2)
icon_file=$(find "$ICON_DIR" -type f -iname "${icon_name// /}.*")
# If no icon was found, try shorter name (ready to run VMs)
if [ -z "$icon_file" ]; then
icon_name=$(basename "$QUICKEMU_VMS_DIR/$vm_config_file" .conf | cut -d'-' -f1)
icon_file=$(find "$ICON_DIR" -type f -iname "${icon_name// /}.*")
fi
# If no icon was found, use a default icon (ready to run VMs)
if [ -z "$icon_file" ]; then
icon_file="$ICON_DIR/tux.svg"
fi
# content of desktop files (ready to run VMs)
desktop_file_content="[Desktop Entry]
Type=Application
Name=$vm_desktop_file
Exec=sh -c 'cd "$QUICKEMU_VMS_DIR" && quickemu -vm \"$vm_config_file\"'
Icon=$icon_file
Categories=System;Virtualization;"
# create desktop files (ready to run VMs)
echo "$desktop_file_content" > "$CONFIG_DIR"/vms_ready/"$vm_desktop_file".desktop
done
# remove desktop files (supported VMs)
rm "$CONFIG_DIR"/vms_supported/"*"
# get supported VMs
quickget | sed 1d | cut -d':' -f2 | grep -o '[^ ]*' > "$CONFIG_DIR/supported.md"
while read -r get_name; do
vm_desktop_file=$(echo "$get_name" | tr ' ' '_')
releases=$(quickget "$vm_desktop_file" | grep 'Releases' | cut -d':' -f2 | sed 's/^ //')
editions=$(quickget "$vm_desktop_file" | grep 'Editions' | cut -d':' -f2 | sed 's/^ //')
icon_name="$ICON_DIR/$get_name"
if [ -f "$icon_name.svg" ]; then
icon_file="$icon_name.svg"
elif [ -f "$icon_name.png" ]; then
icon_file="$icon_name.png"
else
icon_file="$ICON_DIR/tux.svg"
fi
# Check if there are editions
if [ -z "$editions" ]; then
# Create desktop file for VMs without editions
desktop_file_content="[Desktop Entry]
Type=Application
Name=$get_name
releases=$releases
replace='\"!\"'
Exec=sh -c 'cd "$QUICKEMU_VMS_DIR" && yad --form --field=\"Release:CB\" \"${releases// /$replace}\" | cut -d\"|\" -f1 | xargs -I{} sh -c \"quickget $get_name {}\"'
Icon=$icon_file
Categories=System;Virtualization;"
echo "$desktop_file_content" > "$CONFIG_DIR"/vms_supported/"$vm_desktop_file".desktop
else
# Create desktop file for VMs with editions
desktop_file_content="[Desktop Entry]
Type=Application
Name=$get_name
releases=$releases
editions=$editions
replace=$replace
Exec=sh -c 'cd \"$QUICKEMU_VMS_DIR\" && yad --form --separator=\" \" --field=\"Release:CB\" \"${releases// /$replace}\" --field=\"Edition:CB\" \"${editions// /$replace}\" | xargs -I{} sh -c \"quickget $get_name {}\"'
Icon=$icon_file
Categories=System;Virtualization;"
echo "$desktop_file_content" > "$CONFIG_DIR"/vms_supported/"$vm_desktop_file".desktop
fi
done < "$CONFIG_DIR"/supported.md

6
config/set_dir.desktop Normal file
View file

@ -0,0 +1,6 @@
[Desktop Entry]
Type=Application
Name=Set VMs dir
Exec=set_dir.sh
Icon=/home/zen/.config/distrohopper/vms_icons/cereus.svg
Categories=System;Virtualization;Settings;

8
config/set_dir.sh Executable file
View file

@ -0,0 +1,8 @@
#!/bin/bash
source distrohopper.conf
NEWDIR="$(yad --file --directory --title="Where to save VMs?")"
QUICKEMU_VMS_DIR="$NEWDIR"
export QUICKEMU_VMS_DIR
echo "New dir is: $QUICKEMU_VMS_DIR"
#cat distrohopper.conf | grep 'QUICKEMU_VMS_DIR='
#sed -f distrohopper.conf --posix -E 's/QUICKEMU_VMS_DIR="$HOME/.local/share/quickemu"/QUICKEMU_VMS_DIR="$QUICKEMU_VMS_DIR"/g'

View file

@ -35,13 +35,11 @@ linuxmint
lmde
mageia
manjaro
miyo
mxlinux
netboot
netbsd
nixos
lubuntu
macos
openbsd
opensuse
oraclelinux
@ -63,11 +61,9 @@ ubuntukylin
ubuntu-mate
ubuntustudio
ubuntu-unity
ventoy
void
voidpup
vxlinux
windows
xerolinux
xubuntu
zorin

View file

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View file

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

Before After
Before After

12
config/vms_icons/arch.svg Normal file
View file

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="512px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 65 65" version="1.1" height="512px">
<defs>
<linearGradient id="lg" y1="26.924%" x2="28.129%" x1="54.638%" y2="79.519%">
<stop stop-color="#fff" stop-opacity="0" offset="0"/>
<stop stop-color="#fff" stop-opacity=".27451" offset="1"/>
</linearGradient>
</defs>
<path d="m32.253 0.20991c-2.849 6.9843-4.579 11.559-7.75 18.336 1.944 2.061 4.334 4.453 8.211 7.164-4.168-1.715-7.009-3.432-9.133-5.219-4.059 8.47-10.423 20.531-23.328 43.719 10.14-5.854 18.002-9.466 25.328-10.844-0.314-1.351-0.481-2.819-0.469-4.344l0.008-0.32c0.161-6.498 3.542-11.495 7.547-11.156 4.004 0.339 7.122 5.884 6.961 12.383-0.031 1.224-0.173 2.4-0.414 3.492 7.247 1.418 15.034 5.013 25.039 10.789-1.973-3.632-3.74-6.905-5.422-10.024-2.649-2.053-5.411-4.724-11.047-7.617 3.874 1.007 6.65 2.171 8.812 3.469-17.098-31.835-18.48-36.068-24.343-49.828v-0.00009z" fill="#1793D1"/>
<path id="path2522" fill-opacity=".16568" fill="#fff" d="m50.266 38.249c-13.872-18.827-17.087-34.002-17.902-37.625 7.4 17.067 7.349 17.277 17.902 37.625z"/>
<path d="m32.378 0.45992c-0.36 0.88448-0.7 1.7468-1.032 2.5625-0.364 0.8946-0.718 1.7565-1.062 2.5938s-0.693 1.6309-1.031 2.4375c-0.339 0.8065-0.654 1.6039-1 2.4063-0.346 0.802-0.726 1.613-1.094 2.437-0.368 0.825-0.752 1.658-1.156 2.532-0.404 0.873-0.828 1.801-1.282 2.75-0.061 0.128-0.124 0.276-0.187 0.406 1.939 2.054 4.33 4.427 8.187 7.125-4.167-1.715-7-3.432-9.125-5.219-0.11 0.226-0.198 0.425-0.312 0.656-0.42 0.871-0.871 1.733-1.344 2.688-0.113 0.224-0.196 0.427-0.312 0.656-0.501 1.004-1.026 2.043-1.594 3.156-0.113 0.22-0.228 0.402-0.344 0.625-0.343 0.667-1.44 2.77-2.562 4.907-0.655 1.248-1.169 2.27-1.907 3.656-0.209 0.398-0.639 1.195-0.75 1.406 8.125-4.573 16.891-11.216 32.813-5.531-0.797-1.51-1.562-2.919-2.25-4.25-0.688-1.332-1.312-2.571-1.906-3.75s-1.143-2.291-1.657-3.344c-0.513-1.053-0.989-2.047-1.437-3s-0.885-1.87-1.281-2.75c-0.397-0.879-0.766-1.73-1.125-2.562-0.359-0.833-0.695-1.658-1.032-2.469-0.336-0.8115-0.672-1.5896-1-2.4063-0.142-0.3554-0.263-0.7338-0.406-1.0938-0.888-2.0849-1.759-4.1515-2.812-6.625v0.00002z" fill="url(#lg)"/>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View file

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 798 B

After

Width:  |  Height:  |  Size: 798 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 7.6 KiB

After

Width:  |  Height:  |  Size: 7.6 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 846 B

After

Width:  |  Height:  |  Size: 846 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 4 KiB

After

Width:  |  Height:  |  Size: 4 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 9.2 KiB

After

Width:  |  Height:  |  Size: 9.2 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Before After
Before After

1063
config/vms_icons/blendos.svg Normal file

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 667 KiB

View file

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 8.1 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 2 KiB

After

Width:  |  Height:  |  Size: 2 KiB

Before After
Before After

BIN
config/vms_icons/dietpi.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View file

Before

Width:  |  Height:  |  Size: 6 KiB

After

Width:  |  Height:  |  Size: 6 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View file

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

Before After
Before After

BIN
config/vms_icons/haiku.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View file

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 7.9 KiB

After

Width:  |  Height:  |  Size: 7.9 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

View file

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 519 B

After

Width:  |  Height:  |  Size: 519 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 1 KiB

After

Width:  |  Height:  |  Size: 1 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Before After
Before After

BIN
config/vms_icons/mageia.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

View file

Before

Width:  |  Height:  |  Size: 389 B

After

Width:  |  Height:  |  Size: 389 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Before After
Before After

63
config/vms_icons/mx.svg Normal file
View file

@ -0,0 +1,63 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="512"
height="512"
version="1.1"
id="svg12"
sodipodi:docname="mx.svg"
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs16" />
<sodipodi:namedview
id="namedview14"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="1.7050781"
inkscape:cx="251.30813"
inkscape:cy="256"
inkscape:window-width="3440"
inkscape:window-height="1417"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg12" />
<rect
style="opacity:0.2;stroke-width:8.77193"
width="491.22806"
height="491.22806"
x="8.9861288"
y="14.359788"
rx="24.561403"
ry="24.561403"
id="rect2" />
<rect
style="fill:#4f4f4f;stroke-width:8.77193"
width="491.22806"
height="491.22806"
x="8.9861288"
y="5.5878611"
rx="24.561403"
ry="24.561403"
id="rect4" />
<path
style="opacity:0.1;fill:#ffffff;stroke-width:8.77193"
d="m 33.554547,5.5878611 c -13.60702,0 -24.5684295,10.9613999 -24.5684295,24.5684199 v 8.77193 c 0,-13.60702 10.9614095,-24.56842 24.5684295,-24.56842 H 475.64402 c 13.60526,0 24.57018,10.9614 24.57018,24.56842 v -8.77193 c 0,-13.60702 -10.96492,-24.5684199 -24.57018,-24.5684199 z"
id="path6" />
<path
style="opacity:0.2;stroke-width:8.77193"
d="m 175.65279,119.62295 -35.08772,35.08772 96.85088,108.96491 -19.5614,23.00877 -24.6579,-26.71053 L 61.617697,409.09663 H 447.58262 l -87.7193,-105.26316 -10.1579,11.59649 -63.28947,-71.20175 90.99123,-107.0614 -17.54386,-17.54386 -90.05263,105.92982 z m 78.36842,162.72807 62.80702,70.64912 -18.36842,21.00877 -63.70175,-69.00877 z"
id="path8" />
<path
style="fill:#ffffff;stroke-width:8.77193"
d="m 175.65279,110.85102 -35.08772,35.08772 96.85088,108.96491 -19.5614,23.00877 -24.6579,-26.71053 L 61.617697,400.3247 H 447.58262 l -87.7193,-105.26316 -10.1579,11.59649 -63.28947,-71.20175 90.99123,-107.0614 -17.54386,-17.54386 -90.05263,105.92982 z m 78.36842,162.72807 62.80702,70.64912 -18.36842,21.00877 -63.70175,-69.00877 z"
id="path10" />
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

View file

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 6.5 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 8.9 KiB

After

Width:  |  Height:  |  Size: 8.9 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 71 KiB

After

Width:  |  Height:  |  Size: 71 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 9 KiB

After

Width:  |  Height:  |  Size: 9 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 6 KiB

After

Width:  |  Height:  |  Size: 6 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Before After
Before After

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