bottles-bin: remove package
This commit is contained in:
1 parent
4b6f203306
commit
0e22ae0877
5 files changed
-331
No files matched your search
@@ -28,7 +28,6 @@ users don't need any build dependencies.
|
|||||||
| `sharpemu-bin` | [sharpemu/sharpemu](https://github.com/sharpemu/sharpemu) — experimental PlayStation 5 emulator | [sharpemu-bin](https://aur.archlinux.org/packages/sharpemu-bin) |
|
| `sharpemu-bin` | [sharpemu/sharpemu](https://github.com/sharpemu/sharpemu) — experimental PlayStation 5 emulator | [sharpemu-bin](https://aur.archlinux.org/packages/sharpemu-bin) |
|
||||||
| `thonny-bin` | [thonny/thonny](https://github.com/thonny/thonny) — Python IDE for beginners (bundles a standalone CPython + tcl/tk) | [thonny-bin](https://aur.archlinux.org/packages/thonny-bin) |
|
| `thonny-bin` | [thonny/thonny](https://github.com/thonny/thonny) — Python IDE for beginners (bundles a standalone CPython + tcl/tk) | [thonny-bin](https://aur.archlinux.org/packages/thonny-bin) |
|
||||||
| `gearlever-bin` | [mijorus/gearlever](https://github.com/mijorus/gearlever) — "Gear Lever", a GTK4 + LibAdwaita AppImage manager | [gearlever-bin](https://aur.archlinux.org/packages/gearlever-bin) |
|
| `gearlever-bin` | [mijorus/gearlever](https://github.com/mijorus/gearlever) — "Gear Lever", a GTK4 + LibAdwaita AppImage manager | [gearlever-bin](https://aur.archlinux.org/packages/gearlever-bin) |
|
||||||
| `bottles-bin` | [bottlesdevs/Bottles](https://github.com/bottlesdevs/Bottles) — wine/proton prefix manager (GTK4 + LibAdwaita) | [bottles-bin](https://aur.archlinux.org/packages/bottles-bin) |
|
|
||||||
| `faugus-launcher-bin` | [Faugus/faugus-launcher](https://github.com/Faugus/faugus-launcher) — launcher for Windows games via UMU-Launcher | [faugus-launcher-bin](https://aur.archlinux.org/packages/faugus-launcher-bin) |
|
| `faugus-launcher-bin` | [Faugus/faugus-launcher](https://github.com/Faugus/faugus-launcher) — launcher for Windows games via UMU-Launcher | [faugus-launcher-bin](https://aur.archlinux.org/packages/faugus-launcher-bin) |
|
||||||
| `protonplus-bin` | [Vysp3r/ProtonPlus](https://github.com/Vysp3r/ProtonPlus) — compatibility-tools manager (Vala/GTK4) | [protonplus-bin](https://aur.archlinux.org/packages/protonplus-bin) |
|
| `protonplus-bin` | [Vysp3r/ProtonPlus](https://github.com/Vysp3r/ProtonPlus) — compatibility-tools manager (Vala/GTK4) | [protonplus-bin](https://aur.archlinux.org/packages/protonplus-bin) |
|
||||||
| `zapzap-bin` | [rafatosta/zapzap](https://github.com/rafatosta/zapzap) — WhatsApp desktop client (PyQt6 + WebEngine) | [zapzap-bin](https://aur.archlinux.org/packages/zapzap-bin) |
|
| `zapzap-bin` | [rafatosta/zapzap](https://github.com/rafatosta/zapzap) — WhatsApp desktop client (PyQt6 + WebEngine) | [zapzap-bin](https://aur.archlinux.org/packages/zapzap-bin) |
|
||||||
|
|||||||
@@ -1,43 +0,0 @@
|
|||||||
pkgbase = bottles-bin
|
|
||||||
pkgdesc = Easily manage wine and proton prefixes (prebuilt)
|
|
||||||
pkgver = 64.1
|
|
||||||
pkgrel = 2
|
|
||||||
url = https://usebottles.com
|
|
||||||
arch = any
|
|
||||||
license = GPL-3.0-only
|
|
||||||
depends = gtk4
|
|
||||||
depends = gtksourceview5
|
|
||||||
depends = hicolor-icon-theme
|
|
||||||
depends = icoextract
|
|
||||||
depends = libadwaita
|
|
||||||
depends = libportal-gtk4
|
|
||||||
depends = python
|
|
||||||
depends = python-cairo
|
|
||||||
depends = python-certifi
|
|
||||||
depends = python-chardet
|
|
||||||
depends = python-charset-normalizer
|
|
||||||
depends = python-gobject
|
|
||||||
depends = python-idna
|
|
||||||
depends = python-markdown
|
|
||||||
depends = python-orjson
|
|
||||||
depends = python-pefile
|
|
||||||
depends = python-pycurl
|
|
||||||
depends = python-requests
|
|
||||||
depends = python-urllib3
|
|
||||||
depends = python-yaml
|
|
||||||
depends = python-yara
|
|
||||||
optdepends = vkbasalt: post-processing layer that applies the configured effects
|
|
||||||
optdepends = vulkan-tools: vkcube test / Vulkan info
|
|
||||||
optdepends = xorg-xdpyinfo: display info detection
|
|
||||||
optdepends = imagemagick: icon/image conversion
|
|
||||||
optdepends = vmtouch: preload bottle files into memory
|
|
||||||
optdepends = mangohud: performance overlay
|
|
||||||
optdepends = gamemode: feral gamemode integration
|
|
||||||
optdepends = gamescope: gamescope session integration
|
|
||||||
optdepends = xterm: fallback terminal for "Run executable in terminal"
|
|
||||||
provides = bottles
|
|
||||||
conflicts = bottles
|
|
||||||
source = bottles-bin-64.1-2.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/bottles-bin-64.1/bottles-bin-64.1.tar.zst
|
|
||||||
sha256sums = 94dd4c5138ef491fed0502e87be2bebde6e7fe9d2881fc66285d12a0451ef0a3
|
|
||||||
|
|
||||||
pkgname = bottles-bin
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
# Maintainer: Felitendo
|
|
||||||
# This PKGBUILD is updated automatically:
|
|
||||||
# https://github.com/Felitendo/PKGBUILDS
|
|
||||||
|
|
||||||
pkgname=bottles-bin
|
|
||||||
pkgver=64.1
|
|
||||||
pkgrel=2
|
|
||||||
pkgdesc="Easily manage wine and proton prefixes (prebuilt)"
|
|
||||||
arch=('any')
|
|
||||||
url="https://usebottles.com"
|
|
||||||
license=('GPL-3.0-only')
|
|
||||||
depends=('gtk4' 'gtksourceview5' 'hicolor-icon-theme' 'icoextract'
|
|
||||||
'libadwaita' 'libportal-gtk4' 'python' 'python-cairo'
|
|
||||||
'python-certifi' 'python-chardet' 'python-charset-normalizer'
|
|
||||||
'python-gobject' 'python-idna' 'python-markdown' 'python-orjson'
|
|
||||||
'python-pefile' 'python-pycurl'
|
|
||||||
'python-requests' 'python-urllib3' 'python-yaml' 'python-yara')
|
|
||||||
optdepends=('vkbasalt: post-processing layer that applies the configured effects'
|
|
||||||
'vulkan-tools: vkcube test / Vulkan info'
|
|
||||||
'xorg-xdpyinfo: display info detection'
|
|
||||||
'imagemagick: icon/image conversion'
|
|
||||||
'vmtouch: preload bottle files into memory'
|
|
||||||
'mangohud: performance overlay'
|
|
||||||
'gamemode: feral gamemode integration'
|
|
||||||
'gamescope: gamescope session integration'
|
|
||||||
'xterm: fallback terminal for "Run executable in terminal"')
|
|
||||||
provides=('bottles')
|
|
||||||
conflicts=('bottles')
|
|
||||||
source=("${pkgname}-${pkgver}-${pkgrel}.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.zst")
|
|
||||||
sha256sums=('94dd4c5138ef491fed0502e87be2bebde6e7fe9d2881fc66285d12a0451ef0a3')
|
|
||||||
|
|
||||||
package() {
|
|
||||||
cp -a "$srcdir/usr" "$pkgdir/"
|
|
||||||
}
|
|
||||||
@@ -1,81 +0,0 @@
|
|||||||
# bottles-bin - prebuilt package of https://github.com/bottlesdevs/Bottles
|
|
||||||
# (GTK4 + LibAdwaita wine/proton prefix manager written in Python).
|
|
||||||
#
|
|
||||||
# Upstream only supports Flatpak officially and publishes no usable binary
|
|
||||||
# assets, so build_artifact() builds from the release tarball, carrying the
|
|
||||||
# same de-flatpak patch the AUR source package uses (upstream's meson refuses
|
|
||||||
# to configure outside a Flatpak sandbox and the code hard-requires the
|
|
||||||
# portal).
|
|
||||||
|
|
||||||
UPSTREAM_REPO="bottlesdevs/Bottles"
|
|
||||||
|
|
||||||
# fvs-lab/fvs2 (+ its core library) is AUR-only, so the binary is built here
|
|
||||||
# and bundled under /usr/lib/bottles. Versions pinned to the combination the
|
|
||||||
# AUR fvs2 package ships; bump on new fvs2 releases.
|
|
||||||
FVS2_VERSION=0.8.1
|
|
||||||
FVS2_CORE_VERSION=0.1.1
|
|
||||||
|
|
||||||
# Installed in CI (pacman) before build_artifact runs. blueprint-compiler
|
|
||||||
# resolves Gtk/Adw/GtkSource imports via their typelibs, hence the GUI libs.
|
|
||||||
BUILD_DEPS=(meson ninja blueprint-compiler gobject-introspection
|
|
||||||
desktop-file-utils appstream-glib gettext glib2-devel
|
|
||||||
python python-gobject gtk4 libadwaita gtksourceview5
|
|
||||||
libportal-gtk4 go python-pip)
|
|
||||||
|
|
||||||
latest_version() {
|
|
||||||
gh api "repos/$UPSTREAM_REPO/releases/latest" --jq '.tag_name' | sed 's/^v//'
|
|
||||||
}
|
|
||||||
|
|
||||||
# build_artifact <version> <output-file>
|
|
||||||
build_artifact() {
|
|
||||||
local ver="$1" outfile="$2"
|
|
||||||
local pkgdir workdir destdir srctree
|
|
||||||
pkgdir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
||||||
workdir="$(mktemp -d)"
|
|
||||||
destdir="$(mktemp -d)"
|
|
||||||
|
|
||||||
curl -sfL "https://github.com/$UPSTREAM_REPO/archive/refs/tags/$ver.tar.gz" | tar -xz -C "$workdir"
|
|
||||||
srctree="$workdir/Bottles-$ver"
|
|
||||||
|
|
||||||
patch -d "$srctree" -p1 < "$pkgdir/remove-flatpak-checks.patch"
|
|
||||||
|
|
||||||
# the bundled fvs2 lives outside $PATH; point Bottles at it
|
|
||||||
grep -q 'return "fvs2"' "$srctree/bottles/fvs/repo.py" \
|
|
||||||
|| { echo "fvs2 path hook not found in bottles/fvs/repo.py" >&2; return 1; }
|
|
||||||
sed -i 's|return "fvs2"|return "/usr/lib/bottles/fvs2"|' "$srctree/bottles/fvs/repo.py"
|
|
||||||
|
|
||||||
meson setup "$workdir/build" "$srctree" --prefix=/usr --buildtype=release
|
|
||||||
meson install -C "$workdir/build" --destdir "$destdir"
|
|
||||||
|
|
||||||
# Build the fvs2 CLI (Go) and bundle it. Its "core" library is a sibling
|
|
||||||
# repository that go.mod expects next to the source tree.
|
|
||||||
mkdir -p "$workdir/fvs" "$destdir/usr/lib/bottles"
|
|
||||||
curl -sfL "https://github.com/fvs-lab/fvs2/archive/refs/tags/v$FVS2_VERSION.tar.gz" | tar -xz -C "$workdir/fvs"
|
|
||||||
curl -sfL "https://github.com/fvs-lab/core/archive/refs/tags/v$FVS2_CORE_VERSION.tar.gz" | tar -xz -C "$workdir/fvs"
|
|
||||||
ln -s "core-$FVS2_CORE_VERSION" "$workdir/fvs/core"
|
|
||||||
(cd "$workdir/fvs/fvs2-$FVS2_VERSION" && \
|
|
||||||
GOPATH="$workdir/gopath" \
|
|
||||||
GOFLAGS="-buildmode=pie -trimpath -mod=readonly -modcacherw" \
|
|
||||||
go build -o "$destdir/usr/lib/bottles/fvs2" ./cmd/fvs2)
|
|
||||||
|
|
||||||
# patool, pathvalidate and vkbasalt-cli are AUR-only pure-python libs;
|
|
||||||
# bundle them into the app's module dir, which the launcher puts on
|
|
||||||
# sys.path. patool/pathvalidate pinned via upstream's requirements.txt.
|
|
||||||
grep -E '^(patool|pathvalidate)==' "$srctree/requirements.txt" > "$workdir/bundle-reqs.txt"
|
|
||||||
[[ "$(wc -l < "$workdir/bundle-reqs.txt")" -eq 2 ]] || { echo "expected patool+pathvalidate pins in requirements.txt" >&2; return 1; }
|
|
||||||
echo 'vkbasalt-cli' >> "$workdir/bundle-reqs.txt"
|
|
||||||
python -m pip install --isolated --no-deps --target "$destdir/usr/share/bottles" \
|
|
||||||
-r "$workdir/bundle-reqs.txt"
|
|
||||||
rm -rf "$destdir/usr/share/bottles/bin"
|
|
||||||
|
|
||||||
# These caches are generated by pacman hooks; shipping them would cause
|
|
||||||
# file conflicts on install.
|
|
||||||
rm -f "$destdir/usr/share/glib-2.0/schemas/gschemas.compiled" \
|
|
||||||
"$destdir/usr/share/applications/mimeinfo.cache" \
|
|
||||||
"$destdir/usr/share/icons/hicolor/icon-theme.cache"
|
|
||||||
|
|
||||||
tar --zstd --sort=name --owner=0 --group=0 --numeric-owner --mtime='@0' \
|
|
||||||
-cf "$outfile" -C "$destdir" usr
|
|
||||||
|
|
||||||
rm -rf "$workdir" "$destdir"
|
|
||||||
}
|
|
||||||
@@ -1,172 +0,0 @@
|
|||||||
diff -Naur Bottles-64.1-orig/bottles/frontend/meson.build Bottles-64.1/bottles/frontend/meson.build
|
|
||||||
--- Bottles-64.1-orig/bottles/frontend/meson.build 2026-05-30 13:20:17.000000000 +0200
|
|
||||||
+++ Bottles-64.1/bottles/frontend/meson.build 2026-06-25 20:16:08.858675375 +0200
|
|
||||||
@@ -23,12 +23,6 @@
|
|
||||||
configuration: conf
|
|
||||||
)
|
|
||||||
|
|
||||||
-fs = import('fs')
|
|
||||||
-
|
|
||||||
-if not fs.is_file('/' + '.flatpak-info')
|
|
||||||
- error('file does not exist')
|
|
||||||
-endif
|
|
||||||
-
|
|
||||||
bottles_sources = [
|
|
||||||
'__init__.py',
|
|
||||||
'main.py',
|
|
||||||
diff -Naur Bottles-64.1-orig/bottles/frontend/views/bottle_details.py Bottles-64.1/bottles/frontend/views/bottle_details.py
|
|
||||||
--- Bottles-64.1-orig/bottles/frontend/views/bottle_details.py 2026-05-30 13:20:17.000000000 +0200
|
|
||||||
+++ Bottles-64.1/bottles/frontend/views/bottle_details.py 2026-06-25 20:17:24.688847866 +0200
|
|
||||||
@@ -21,7 +21,7 @@
|
|
||||||
from gettext import gettext as _
|
|
||||||
from typing import Dict, List, Optional
|
|
||||||
|
|
||||||
-from gi.repository import Adw, Gdk, Gio, GLib, Gtk, Xdp
|
|
||||||
+from gi.repository import Adw, Gdk, Gio, GLib, Gtk
|
|
||||||
|
|
||||||
from bottles.backend.managers.backup import BackupManager
|
|
||||||
from bottles.backend.models.config import BottleConfig
|
|
||||||
@@ -692,20 +692,17 @@
|
|
||||||
dialog.connect("response", execute)
|
|
||||||
dialog.show()
|
|
||||||
|
|
||||||
- if Xdp.Portal.running_under_sandbox():
|
|
||||||
- if self.window.settings.get_boolean("show-sandbox-warning"):
|
|
||||||
- dialog = Adw.MessageDialog.new(
|
|
||||||
- self.window,
|
|
||||||
- _("Be Aware of Sandbox"),
|
|
||||||
- _(
|
|
||||||
- "Bottles is running in a sandbox, a restricted permission environment needed to keep you safe. If the program won't run, consider moving inside the bottle (3 dots icon on the top), then launch from there."
|
|
||||||
- ),
|
|
||||||
- )
|
|
||||||
- dialog.add_response("dismiss", _("_Dismiss"))
|
|
||||||
- dialog.connect("response", lambda *args: show_chooser())
|
|
||||||
- dialog.present()
|
|
||||||
- else:
|
|
||||||
- show_chooser()
|
|
||||||
+ if self.window.settings.get_boolean("show-sandbox-warning"):
|
|
||||||
+ dialog = Adw.MessageDialog.new(
|
|
||||||
+ self.window,
|
|
||||||
+ _("Be Aware of Sandbox"),
|
|
||||||
+ _(
|
|
||||||
+ "Bottles is running in a sandbox, a restricted permission environment needed to keep you safe. If the program won't run, consider moving inside the bottle (3 dots icon on the top), then launch from there."
|
|
||||||
+ ),
|
|
||||||
+ )
|
|
||||||
+ dialog.add_response("dismiss", _("_Dismiss"))
|
|
||||||
+ dialog.connect("response", lambda *args: show_chooser())
|
|
||||||
+ dialog.present()
|
|
||||||
else:
|
|
||||||
show_chooser()
|
|
||||||
|
|
||||||
diff -Naur Bottles-64.1-orig/bottles/frontend/views/bottle_preferences.py Bottles-64.1/bottles/frontend/views/bottle_preferences.py
|
|
||||||
--- Bottles-64.1-orig/bottles/frontend/views/bottle_preferences.py 2026-05-30 13:20:17.000000000 +0200
|
|
||||||
+++ Bottles-64.1/bottles/frontend/views/bottle_preferences.py 2026-06-25 20:17:51.920386139 +0200
|
|
||||||
@@ -20,7 +20,7 @@
|
|
||||||
import re
|
|
||||||
from gettext import gettext as _
|
|
||||||
|
|
||||||
-from gi.repository import Adw, Gdk, Gtk, Xdp
|
|
||||||
+from gi.repository import Adw, Gdk, Gtk
|
|
||||||
|
|
||||||
from bottles.backend.globals import (
|
|
||||||
gamemode_available,
|
|
||||||
@@ -141,7 +141,7 @@
|
|
||||||
self.queue = details.queue
|
|
||||||
self.details = details
|
|
||||||
|
|
||||||
- if not gamemode_available or not Xdp.Portal.running_under_sandbox():
|
|
||||||
+ if not gamemode_available:
|
|
||||||
return
|
|
||||||
|
|
||||||
_not_available = _("This feature is unavailable on your system.")
|
|
||||||
diff -Naur Bottles-64.1-orig/bottles/frontend/views/list.py Bottles-64.1/bottles/frontend/views/list.py
|
|
||||||
--- Bottles-64.1-orig/bottles/frontend/views/list.py 2026-05-30 13:20:17.000000000 +0200
|
|
||||||
+++ Bottles-64.1/bottles/frontend/views/list.py 2026-06-25 20:18:08.351774840 +0200
|
|
||||||
@@ -18,7 +18,7 @@
|
|
||||||
from datetime import datetime
|
|
||||||
from gettext import gettext as _, ngettext
|
|
||||||
|
|
||||||
-from gi.repository import Adw, GLib, Gtk, Xdp
|
|
||||||
+from gi.repository import Adw, GLib, Gtk
|
|
||||||
|
|
||||||
from bottles.backend.models.config import BottleConfig
|
|
||||||
from bottles.backend.models.result import Result
|
|
||||||
@@ -83,9 +83,6 @@
|
|
||||||
|
|
||||||
def run_executable(self, *_args):
|
|
||||||
"""Display file dialog for executable"""
|
|
||||||
- if not Xdp.Portal.running_under_sandbox():
|
|
||||||
- return
|
|
||||||
-
|
|
||||||
def set_path(_dialog, response):
|
|
||||||
if response != Gtk.ResponseType.ACCEPT:
|
|
||||||
return
|
|
||||||
diff -Naur Bottles-64.1-orig/bottles/frontend/views/new_bottle_dialog.py Bottles-64.1/bottles/frontend/views/new_bottle_dialog.py
|
|
||||||
--- Bottles-64.1-orig/bottles/frontend/views/new_bottle_dialog.py 2026-05-30 13:20:17.000000000 +0200
|
|
||||||
+++ Bottles-64.1/bottles/frontend/views/new_bottle_dialog.py 2026-06-25 20:18:22.465190406 +0200
|
|
||||||
@@ -20,7 +20,7 @@
|
|
||||||
from threading import Event
|
|
||||||
from typing import Any, Optional
|
|
||||||
|
|
||||||
-from gi.repository import Adw, Gio, GLib, GObject, Gtk, Pango, Xdp
|
|
||||||
+from gi.repository import Adw, Gio, GLib, GObject, Gtk, Pango
|
|
||||||
from pathvalidate import sanitize_filename
|
|
||||||
|
|
||||||
from bottles.backend.models.config import BottleConfig
|
|
||||||
@@ -86,7 +86,7 @@
|
|
||||||
super().__init__(**kwargs)
|
|
||||||
# common variables and references
|
|
||||||
self.window = GtkUtils.get_parent_window()
|
|
||||||
- if not self.window or not Xdp.Portal.running_under_sandbox():
|
|
||||||
+ if not self.window:
|
|
||||||
return
|
|
||||||
|
|
||||||
self.app = self.window.get_application()
|
|
||||||
diff -Naur Bottles-64.1-orig/bottles/frontend/windows/window.py Bottles-64.1/bottles/frontend/windows/window.py
|
|
||||||
--- Bottles-64.1-orig/bottles/frontend/windows/window.py 2026-05-30 13:20:17.000000000 +0200
|
|
||||||
+++ Bottles-64.1/bottles/frontend/windows/window.py 2026-06-25 20:18:50.936202160 +0200
|
|
||||||
@@ -22,7 +22,7 @@
|
|
||||||
from gettext import gettext as _
|
|
||||||
from typing import Optional
|
|
||||||
|
|
||||||
-from gi.repository import Adw, Gdk, Gio, GLib, GObject, Gtk, Xdp
|
|
||||||
+from gi.repository import Adw, Gdk, Gio, GLib, GObject, Gtk
|
|
||||||
|
|
||||||
from bottles.backend.globals import Paths
|
|
||||||
from bottles.backend.health import HealthChecker
|
|
||||||
@@ -125,35 +125,6 @@
|
|
||||||
manager = Adw.StyleManager.get_default()
|
|
||||||
manager.set_color_scheme(Adw.ColorScheme.FORCE_DARK)
|
|
||||||
|
|
||||||
- # Be VERY explicit that non-sandboxed environments are unsupported
|
|
||||||
- if not Xdp.Portal.running_under_sandbox():
|
|
||||||
-
|
|
||||||
- def response(dialog, response, *args):
|
|
||||||
- if response == "close":
|
|
||||||
- quit(1)
|
|
||||||
-
|
|
||||||
- body = _(
|
|
||||||
- "Bottles is only supported within a sandboxed environment. Official sources of Bottles are available at"
|
|
||||||
- )
|
|
||||||
- download_url = "usebottles.com/download"
|
|
||||||
-
|
|
||||||
- error_dialog = Adw.AlertDialog.new(
|
|
||||||
- _("Unsupported Environment"),
|
|
||||||
- f"{body} <a href='https://{download_url}' title='https://{download_url}'>{download_url}.</a>",
|
|
||||||
- )
|
|
||||||
-
|
|
||||||
- error_dialog.add_response("close", _("Close"))
|
|
||||||
- error_dialog.set_body_use_markup(True)
|
|
||||||
- error_dialog.connect("response", response)
|
|
||||||
- error_dialog.present(self)
|
|
||||||
- logging.error(
|
|
||||||
- _(
|
|
||||||
- "Bottles is only supported within a sandboxed format. Official sources of Bottles are available at:"
|
|
||||||
- )
|
|
||||||
- )
|
|
||||||
- logging.error("https://usebottles.com/download/")
|
|
||||||
- return
|
|
||||||
-
|
|
||||||
# Loading view
|
|
||||||
self.page_loading = LoadingView()
|
|
||||||
|
|
||||||
Reference in new issue
Block a user