From 7161926d359fa4f247e68919587d880a91c7f1e1 Mon Sep 17 00:00:00 2001 From: crschnick Date: Sun, 18 Jan 2026 10:10:06 +0000 Subject: [PATCH] Rework loading --- .../browser/file/BrowserHistoryTabComp.java | 2 +- .../app/browser/icon/BrowserIconManager.java | 10 +- .../comp/base/AppMainWindowContentComp.java | 3 +- .../xpipe/app/core/AppDesktopIntegration.java | 2 +- .../java/io/xpipe/app/core/AppImages.java | 102 ++++++++++++------ .../java/io/xpipe/app/core/AppTrayIcon.java | 6 +- .../xpipe/app/core/window/AppWindowStyle.java | 2 +- .../io/xpipe/app/hub/comp/OsLogoComp.java | 2 +- .../xpipe/app/hub/comp/StoreCreationMenu.java | 2 +- .../io/xpipe/app/hub/comp/StoreIntroComp.java | 2 +- .../io/xpipe/app/icon/SystemIconManager.java | 9 +- .../io/xpipe/app/storage/DataStoreEntry.java | 4 +- .../actionShortcut_icon-16.png => action.png} | Bin .../{img/disabled_icon.png => error.png} | Bin .../img/shortcut/actionShortcut_icon-24.png | Bin 835 -> 0 bytes .../img/shortcut/actionShortcut_icon-40.png | Bin 1318 -> 0 bytes .../img/shortcut/actionShortcut_icon-80.png | Bin 2531 -> 0 bytes .../{img/logo => }/loading-160-dark.png | Bin .../resources/{img/logo => }/loading-160.png | Bin .../{img => }/logo/full/logo_128x128.png | Bin .../{img => }/logo/full/logo_16x16.png | Bin .../{img => }/logo/full/logo_24x24.png | Bin .../{img => }/logo/full/logo_256x256.png | Bin .../{img => }/logo/full/logo_32x32.png | Bin .../{img => }/logo/full/logo_48x48.png | Bin .../{img => }/logo/full/logo_64x64.png | Bin .../app/resources/{img => }/logo/logo.png | Bin .../{img => }/logo/padded/logo_128x128.png | Bin .../{img => }/logo/padded/logo_16x16.png | Bin .../{img => }/logo/padded/logo_24x24.png | Bin .../{img => }/logo/padded/logo_256x256.png | Bin .../{img => }/logo/padded/logo_32x32.png | Bin .../{img => }/logo/padded/logo_48x48.png | Bin .../{img => }/logo/padded/logo_64x64.png | Bin .../app/resources/{img => }/os/aix-24.png | Bin .../app/resources/{img => }/os/aix-40.png | Bin .../app/resources/{img => }/os/alma-24.png | Bin .../app/resources/{img => }/os/alma-40.png | Bin .../app/resources/{img => }/os/alpine-24.png | Bin .../app/resources/{img => }/os/alpine-40.png | Bin .../app/resources/{img => }/os/amazon-24.png | Bin .../app/resources/{img => }/os/amazon-40.png | Bin .../app/resources/{img => }/os/android-24.png | Bin .../app/resources/{img => }/os/android-40.png | Bin .../app/resources/{img => }/os/arch-24.png | Bin .../app/resources/{img => }/os/arch-40.png | Bin .../{img => }/os/assistant-24-dark.png | Bin .../resources/{img => }/os/assistant-24.png | Bin .../{img => }/os/assistant-40-dark.png | Bin .../resources/{img => }/os/assistant-40.png | Bin .../app/resources/{img => }/os/cachy-24.png | Bin .../app/resources/{img => }/os/cachy-40.png | Bin .../app/resources/{img => }/os/centos-24.png | Bin .../app/resources/{img => }/os/centos-40.png | Bin .../app/resources/{img => }/os/debian-24.png | Bin .../app/resources/{img => }/os/debian-40.png | Bin .../{img => }/os/elementary-24-dark.png | Bin .../resources/{img => }/os/elementary-24.png | Bin .../{img => }/os/elementary-40-dark.png | Bin .../resources/{img => }/os/elementary-40.png | Bin .../{img => }/os/endeavour-24-dark.png | Bin .../resources/{img => }/os/endeavour-24.png | Bin .../{img => }/os/endeavour-40-dark.png | Bin .../resources/{img => }/os/endeavour-40.png | Bin .../app/resources/{img => }/os/fedora-24.png | Bin .../app/resources/{img => }/os/fedora-40.png | Bin .../app/resources/{img => }/os/freebsd-24.png | Bin .../app/resources/{img => }/os/freebsd-40.png | Bin .../app/resources/{img => }/os/garuda-24.png | Bin .../app/resources/{img => }/os/garuda-40.png | Bin .../app/resources/{img => }/os/gentoo-24.png | Bin .../app/resources/{img => }/os/gentoo-40.png | Bin .../app/resources/{img => }/os/hp-ux-24.png | Bin .../app/resources/{img => }/os/hp-ux-40.png | Bin .../app/resources/{img => }/os/illumos-24.png | Bin .../app/resources/{img => }/os/illumos-40.png | Bin .../app/resources/{img => }/os/kali-24.png | Bin .../app/resources/{img => }/os/kali-40.png | Bin .../app/resources/{img => }/os/kubuntu-24.png | Bin .../app/resources/{img => }/os/kubuntu-40.png | Bin .../app/resources/{img => }/os/linux-24.png | Bin .../app/resources/{img => }/os/linux-40.png | Bin .../resources/{img => }/os/macos-24-dark.png | Bin .../app/resources/{img => }/os/macos-24.png | Bin .../resources/{img => }/os/macos-40-dark.png | Bin .../app/resources/{img => }/os/macos-40.png | Bin .../app/resources/{img => }/os/manjaro-24.png | Bin .../app/resources/{img => }/os/manjaro-40.png | Bin .../app/resources/{img => }/os/mint-24.png | Bin .../app/resources/{img => }/os/mint-40.png | Bin .../app/resources/{img => }/os/netbsd-24.png | Bin .../app/resources/{img => }/os/netbsd-40.png | Bin .../app/resources/{img => }/os/nixos-24.png | Bin .../app/resources/{img => }/os/nixos-40.png | Bin .../app/resources/{img => }/os/openbsd-24.png | Bin .../app/resources/{img => }/os/openbsd-40.png | Bin .../app/resources/{img => }/os/pop-24.png | Bin .../app/resources/{img => }/os/pop-40.png | Bin .../app/resources/{img => }/os/redhat-24.png | Bin .../app/resources/{img => }/os/redhat-40.png | Bin .../app/resources/{img => }/os/rocky-24.png | Bin .../app/resources/{img => }/os/rocky-40.png | Bin .../app/resources/{img => }/os/solaris-24.png | Bin .../app/resources/{img => }/os/solaris-40.png | Bin .../app/resources/{img => }/os/suse-24.png | Bin .../app/resources/{img => }/os/suse-40.png | Bin .../app/resources/{img => }/os/ubuntu-24.png | Bin .../app/resources/{img => }/os/ubuntu-40.png | Bin .../app/resources/{img => }/os/unix-24.png | Bin .../app/resources/{img => }/os/unix-40.png | Bin .../app/resources/{img => }/os/windows-24.png | Bin .../app/resources/{img => }/os/windows-40.png | Bin .../app/resources/{img => }/os/zorin-24.png | Bin .../app/resources/{img => }/os/zorin-40.png | Bin .../hips-122-dark.png} | Bin .../Hips-122.png => welcome/hips-122.png} | Bin .../hips-244-dark.png} | Bin .../Hips-244.png => welcome/hips-244.png} | Bin .../wave-144-dark.png} | Bin .../Wave-144.png => welcome/wave-144.png} | Bin .../wave-288-dark.png} | Bin .../Wave-288.png => welcome/wave-288.png} | Bin 122 files changed, 92 insertions(+), 54 deletions(-) rename app/src/main/resources/io/xpipe/app/resources/{img/shortcut/actionShortcut_icon-16.png => action.png} (100%) rename app/src/main/resources/io/xpipe/app/resources/{img/disabled_icon.png => error.png} (100%) delete mode 100644 app/src/main/resources/io/xpipe/app/resources/img/shortcut/actionShortcut_icon-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/img/shortcut/actionShortcut_icon-40.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/img/shortcut/actionShortcut_icon-80.png rename app/src/main/resources/io/xpipe/app/resources/{img/logo => }/loading-160-dark.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img/logo => }/loading-160.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/logo/full/logo_128x128.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/logo/full/logo_16x16.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/logo/full/logo_24x24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/logo/full/logo_256x256.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/logo/full/logo_32x32.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/logo/full/logo_48x48.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/logo/full/logo_64x64.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/logo/logo.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/logo/padded/logo_128x128.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/logo/padded/logo_16x16.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/logo/padded/logo_24x24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/logo/padded/logo_256x256.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/logo/padded/logo_32x32.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/logo/padded/logo_48x48.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/logo/padded/logo_64x64.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/aix-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/aix-40.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/alma-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/alma-40.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/alpine-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/alpine-40.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/amazon-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/amazon-40.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/android-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/android-40.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/arch-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/arch-40.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/assistant-24-dark.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/assistant-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/assistant-40-dark.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/assistant-40.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/cachy-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/cachy-40.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/centos-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/centos-40.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/debian-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/debian-40.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/elementary-24-dark.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/elementary-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/elementary-40-dark.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/elementary-40.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/endeavour-24-dark.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/endeavour-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/endeavour-40-dark.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/endeavour-40.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/fedora-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/fedora-40.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/freebsd-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/freebsd-40.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/garuda-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/garuda-40.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/gentoo-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/gentoo-40.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/hp-ux-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/hp-ux-40.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/illumos-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/illumos-40.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/kali-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/kali-40.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/kubuntu-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/kubuntu-40.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/linux-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/linux-40.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/macos-24-dark.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/macos-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/macos-40-dark.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/macos-40.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/manjaro-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/manjaro-40.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/mint-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/mint-40.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/netbsd-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/netbsd-40.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/nixos-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/nixos-40.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/openbsd-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/openbsd-40.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/pop-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/pop-40.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/redhat-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/redhat-40.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/rocky-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/rocky-40.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/solaris-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/solaris-40.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/suse-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/suse-40.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/ubuntu-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/ubuntu-40.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/unix-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/unix-40.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/windows-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/windows-40.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/zorin-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img => }/os/zorin-40.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{img/graphics/Hips-122-dark.png => welcome/hips-122-dark.png} (100%) rename app/src/main/resources/io/xpipe/app/resources/{img/graphics/Hips-122.png => welcome/hips-122.png} (100%) rename app/src/main/resources/io/xpipe/app/resources/{img/graphics/Hips-244-dark.png => welcome/hips-244-dark.png} (100%) rename app/src/main/resources/io/xpipe/app/resources/{img/graphics/Hips-244.png => welcome/hips-244.png} (100%) rename app/src/main/resources/io/xpipe/app/resources/{img/graphics/Wave-144-dark.png => welcome/wave-144-dark.png} (100%) rename app/src/main/resources/io/xpipe/app/resources/{img/graphics/Wave-144.png => welcome/wave-144.png} (100%) rename app/src/main/resources/io/xpipe/app/resources/{img/graphics/Wave-288-dark.png => welcome/wave-288-dark.png} (100%) rename app/src/main/resources/io/xpipe/app/resources/{img/graphics/Wave-288.png => welcome/wave-288.png} (100%) diff --git a/app/src/main/java/io/xpipe/app/browser/file/BrowserHistoryTabComp.java b/app/src/main/java/io/xpipe/app/browser/file/BrowserHistoryTabComp.java index dd13f5fd7..243e4f361 100644 --- a/app/src/main/java/io/xpipe/app/browser/file/BrowserHistoryTabComp.java +++ b/app/src/main/java/io/xpipe/app/browser/file/BrowserHistoryTabComp.java @@ -124,7 +124,7 @@ public class BrowserHistoryTabComp extends SimpleComp { var open = new IntroComp( "browserWelcomeEmpty", - new LabelGraphic.CompGraphic(PrettyImageHelper.ofSpecificFixedSize("graphics/Hips.svg", 100, 122))); + new LabelGraphic.CompGraphic(PrettyImageHelper.ofSpecificFixedSize("welcome/hips.svg", 100, 122))); open.setButtonGraphic(new LabelGraphic.IconGraphic("mdi2f-folder-open-outline")); open.setButtonAction(() -> { BrowserFullSessionModel.DEFAULT.openFileSystemAsync( diff --git a/app/src/main/java/io/xpipe/app/browser/icon/BrowserIconManager.java b/app/src/main/java/io/xpipe/app/browser/icon/BrowserIconManager.java index bccced14a..9ab2ef4e0 100644 --- a/app/src/main/java/io/xpipe/app/browser/icon/BrowserIconManager.java +++ b/app/src/main/java/io/xpipe/app/browser/icon/BrowserIconManager.java @@ -19,7 +19,13 @@ public class BrowserIconManager { public static void loadIfNecessary(String s) { var res = AppMainWindow.get().displayScale().get() == 1.0 ? "24" : "40"; - var name = "browser/" + FilenameUtils.getBaseName(s) + "-" + res + ".png"; - AppImages.loadImage(AppResources.MAIN_MODULE, name, name); + var key = "browser/" + FilenameUtils.getBaseName(s) + "-" + res + ".png"; + if (AppImages.hasImage(key)) { + return; + } + + AppResources.with(AppResources.MAIN_MODULE, key, file -> { + AppImages.loadImage(file, key); + }); } } diff --git a/app/src/main/java/io/xpipe/app/comp/base/AppMainWindowContentComp.java b/app/src/main/java/io/xpipe/app/comp/base/AppMainWindowContentComp.java index 3e0323dbc..20f722401 100644 --- a/app/src/main/java/io/xpipe/app/comp/base/AppMainWindowContentComp.java +++ b/app/src/main/java/io/xpipe/app/comp/base/AppMainWindowContentComp.java @@ -82,8 +82,7 @@ public class AppMainWindowContentComp extends SimpleComp { loadingAnimation.start(); // This allows for assigning logos even if AppImages has not been initialized yet - var dir = "img/logo/"; - AppResources.with(AppResources.MAIN_MODULE, dir, path -> { + AppResources.with(AppResources.MAIN_MODULE, "", path -> { var image = AppPrefs.get() != null && AppPrefs.get().theme().getValue().isDark() ? path.resolve("loading-160-dark.png") diff --git a/app/src/main/java/io/xpipe/app/core/AppDesktopIntegration.java b/app/src/main/java/io/xpipe/app/core/AppDesktopIntegration.java index 540c26467..25db249c1 100644 --- a/app/src/main/java/io/xpipe/app/core/AppDesktopIntegration.java +++ b/app/src/main/java/io/xpipe/app/core/AppDesktopIntegration.java @@ -79,7 +79,7 @@ public class AppDesktopIntegration { && AppLogs.get().isWriteToSysout() && Taskbar.isTaskbarSupported()) { try { - var iconUrl = Main.class.getResourceAsStream("resources/img/logo/padded/logo_128x128.png"); + var iconUrl = Main.class.getResourceAsStream("resources/logo/padded/logo_128x128.png"); if (iconUrl != null) { var awtIcon = ImageIO.read(iconUrl); Taskbar.getTaskbar().setIconImage(awtIcon); diff --git a/app/src/main/java/io/xpipe/app/core/AppImages.java b/app/src/main/java/io/xpipe/app/core/AppImages.java index dde469643..78716c1bd 100644 --- a/app/src/main/java/io/xpipe/app/core/AppImages.java +++ b/app/src/main/java/io/xpipe/app/core/AppImages.java @@ -1,5 +1,6 @@ package io.xpipe.app.core; +import io.xpipe.app.core.window.AppMainWindow; import io.xpipe.app.issue.ErrorEventFactory; import io.xpipe.app.issue.TrackEvent; @@ -31,53 +32,87 @@ public class AppImages { } public static void init() { - if (images.size() > 0) { - return; - } + loadBundledProviderIcons(); + loadOsIcons(); + loadWelcomeImages(); + loadMiscImages(); + loadLogos(); + } - TrackEvent.info("Loading images ..."); - for (var module : AppExtensionManager.getInstance().getContentModules()) { - loadDirectory(module.getName(), "img", true); + private static void loadBundledProviderIcons() { + var exts = AppExtensionManager.getInstance().getContentModules(); + for (Module ext : exts) { + AppResources.with(ext.getName(), "img/", basePath -> { + var skipLarge = AppMainWindow.get().displayScale().get() == 1.0; + Files.walkFileTree(basePath, new SimpleFileVisitor<>() { + @Override + public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) { + var name = file.getFileName().toString(); + if (name.contains("-80") && skipLarge) { + return FileVisitResult.CONTINUE; + } + + AppImages.loadImage(file, name); + return FileVisitResult.CONTINUE; + } + }); + }); } } - public static void loadDirectory(String module, String dir, boolean loadImages) { - var start = Instant.now(); - AppResources.with(module, dir, basePath -> { - if (!Files.exists(basePath)) { - return; - } - - var simpleName = FilenameUtils.getExtension(module); - String defaultPrefix = simpleName + ":"; + private static void loadOsIcons() { + AppResources.with(AppResources.MAIN_MODULE, "os", basePath -> { + var skipLarge = AppMainWindow.get().displayScale().get() == 1.0; Files.walkFileTree(basePath, new SimpleFileVisitor<>() { @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) { - var relativeFileName = FilenameUtils.separatorsToUnix( - basePath.relativize(file).toString()); - var key = defaultPrefix + relativeFileName; - if (images.containsKey(key)) { + var name = file.getFileName().toString(); + if (name.contains("-40") && skipLarge) { return FileVisitResult.CONTINUE; } - if (loadImages) { - images.put(key, loadImage(file)); - } + AppImages.loadImage(file, "os/" + name); return FileVisitResult.CONTINUE; } }); }); - var elapsed = Duration.between(start, Instant.now()); - TrackEvent.trace("Loaded images in " + module + ":" + dir + " in " + elapsed.toMillis() + " ms"); } - public static void loadImage(String module, String key, String file) { - AppResources.with(module, file, p -> { - if (images.containsKey(key)) { - return; - } + private static void loadWelcomeImages() { + AppResources.with(AppResources.MAIN_MODULE, "welcome", basePath -> { + var skipLarge = AppMainWindow.get().displayScale().get() == 1.0; + Files.walkFileTree(basePath, new SimpleFileVisitor<>() { + @Override + public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) { + var name = file.getFileName().toString(); + if (name.contains("-244") && skipLarge) { + return FileVisitResult.CONTINUE; + } - images.put(key, loadImage(p)); + AppImages.loadImage(file, "welcome/" + name); + return FileVisitResult.CONTINUE; + } + }); + }); + } + + private static void loadLogos() { + AppResources.with(AppResources.MAIN_MODULE, "logo", basePath -> { + Files.walkFileTree(basePath, new SimpleFileVisitor<>() { + @Override + public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) { + var relativeFileName = FilenameUtils.separatorsToUnix(basePath.getParent().relativize(file).toString()); + AppImages.loadImage(file, relativeFileName); + return FileVisitResult.CONTINUE; + } + }); + }); + } + + private static void loadMiscImages() { + AppResources.with(AppResources.MAIN_MODULE, "", basePath -> { + loadImage(basePath.resolve("action.png"), "action.png"); + loadImage(basePath.resolve("error.png"), "error.png"); }); } @@ -90,7 +125,7 @@ public class AppImages { return true; } - var key = file.contains(":") ? file : "app:" + file; + var key = file.contains(":") ? file.split(":", 2)[1] : file; if (images.containsKey(key)) { return true; } @@ -107,13 +142,12 @@ public class AppImages { return images.get(file); } - var key = file.contains(":") ? file : "app:" + file; - + var key = file.contains(":") ? file.split(":", 2)[1] : file; if (images.containsKey(key)) { return images.get(key); } - TrackEvent.warn("Normal image " + key + " not found"); + TrackEvent.warn("Image " + key + " not found"); return DEFAULT_IMAGE; } diff --git a/app/src/main/java/io/xpipe/app/core/AppTrayIcon.java b/app/src/main/java/io/xpipe/app/core/AppTrayIcon.java index ed6fd9f3a..6ac0121f2 100644 --- a/app/src/main/java/io/xpipe/app/core/AppTrayIcon.java +++ b/app/src/main/java/io/xpipe/app/core/AppTrayIcon.java @@ -21,9 +21,9 @@ public class AppTrayIcon { var image = switch (OsType.ofLocal()) { - case OsType.Windows ignored -> "img/logo/full/logo_16x16.png"; - case OsType.Linux ignored -> "img/logo/full/logo_24x24.png"; - case OsType.MacOs ignored -> "img/logo/padded/logo_24x24.png"; + case OsType.Windows ignored -> "logo/full/logo_16x16.png"; + case OsType.Linux ignored -> "logo/full/logo_24x24.png"; + case OsType.MacOs ignored -> "logo/padded/logo_24x24.png"; }; var url = AppResources.getResourceURL(AppResources.MAIN_MODULE, image).orElseThrow(); diff --git a/app/src/main/java/io/xpipe/app/core/window/AppWindowStyle.java b/app/src/main/java/io/xpipe/app/core/window/AppWindowStyle.java index c824dcea6..3ee7d178d 100644 --- a/app/src/main/java/io/xpipe/app/core/window/AppWindowStyle.java +++ b/app/src/main/java/io/xpipe/app/core/window/AppWindowStyle.java @@ -74,7 +74,7 @@ public class AppWindowStyle { stage.getIcons().clear(); // This allows for assigning logos even if AppImages has not been initialized yet - var dir = OsType.ofLocal() == OsType.MACOS ? "img/logo/padded" : "img/logo/full"; + var dir = OsType.ofLocal() == OsType.MACOS ? "logo/padded" : "logo/full"; AppResources.with(AppResources.MAIN_MODULE, dir, path -> { var size = switch (OsType.ofLocal()) { diff --git a/app/src/main/java/io/xpipe/app/hub/comp/OsLogoComp.java b/app/src/main/java/io/xpipe/app/hub/comp/OsLogoComp.java index e14358b6a..28ac25c66 100644 --- a/app/src/main/java/io/xpipe/app/hub/comp/OsLogoComp.java +++ b/app/src/main/java/io/xpipe/app/hub/comp/OsLogoComp.java @@ -63,7 +63,7 @@ public class OsLogoComp extends SimpleComp { } if (ICONS.isEmpty()) { - AppResources.with(AppResources.MAIN_MODULE, "img/os", file -> { + AppResources.with(AppResources.MAIN_MODULE, "os", file -> { try (var list = Files.list(file)) { list.filter(path -> path.toString().endsWith(".png") && !path.toString().endsWith(LINUX_DEFAULT_24) diff --git a/app/src/main/java/io/xpipe/app/hub/comp/StoreCreationMenu.java b/app/src/main/java/io/xpipe/app/hub/comp/StoreCreationMenu.java index b24cb8db1..f32b98433 100644 --- a/app/src/main/java/io/xpipe/app/hub/comp/StoreCreationMenu.java +++ b/app/src/main/java/io/xpipe/app/hub/comp/StoreCreationMenu.java @@ -92,7 +92,7 @@ public class StoreCreationMenu { var actionMenu = categoryMenu("addMacro", "mdmz-miscellaneous_services", DataStoreCreationCategory.MACRO, null); var item = new MenuItem(); - item.setGraphic(PrettyImageHelper.ofFixedSize("app:shortcut/actionShortcut_icon.svg", 16, 16) + item.setGraphic(PrettyImageHelper.ofFixedSize("action.png", 16, 16) .createRegion()); item.textProperty().bind(AppI18n.observable("actionShortcut")); item.setOnAction(event -> { diff --git a/app/src/main/java/io/xpipe/app/hub/comp/StoreIntroComp.java b/app/src/main/java/io/xpipe/app/hub/comp/StoreIntroComp.java index 357907dcf..0f9541697 100644 --- a/app/src/main/java/io/xpipe/app/hub/comp/StoreIntroComp.java +++ b/app/src/main/java/io/xpipe/app/hub/comp/StoreIntroComp.java @@ -18,7 +18,7 @@ public class StoreIntroComp extends SimpleComp { @Override public Region createSimple() { var hub = new IntroComp("storeIntro", new LabelGraphic.NodeGraphic(() -> PrettyImageHelper.ofSpecificFixedSize( - "graphics/Wave.svg", 80, 144) + "welcome/wave.svg", 80, 144) .createRegion())); hub.setButtonAction(() -> { ScanDialog.showSingleAsync(DataStorage.get().local()); diff --git a/app/src/main/java/io/xpipe/app/icon/SystemIconManager.java b/app/src/main/java/io/xpipe/app/icon/SystemIconManager.java index e78df9ad7..80e23169a 100644 --- a/app/src/main/java/io/xpipe/app/icon/SystemIconManager.java +++ b/app/src/main/java/io/xpipe/app/icon/SystemIconManager.java @@ -1,19 +1,18 @@ package io.xpipe.app.icon; -import io.xpipe.app.core.AppCache; -import io.xpipe.app.core.AppImages; -import io.xpipe.app.core.AppProperties; -import io.xpipe.app.core.AppResources; +import io.xpipe.app.core.*; import io.xpipe.app.core.window.AppMainWindow; import io.xpipe.app.ext.ValidationException; import io.xpipe.app.issue.ErrorEventFactory; import io.xpipe.app.prefs.AppPrefs; import io.xpipe.app.storage.DataStorage; import io.xpipe.app.storage.DataStoreEntry; -import org.apache.commons.io.FilenameUtils; +import java.nio.file.FileVisitResult; import java.nio.file.Files; import java.nio.file.Path; +import java.nio.file.SimpleFileVisitor; +import java.nio.file.attribute.BasicFileAttributes; import java.util.*; public class SystemIconManager { diff --git a/app/src/main/java/io/xpipe/app/storage/DataStoreEntry.java b/app/src/main/java/io/xpipe/app/storage/DataStoreEntry.java index 1122f777b..6f612ce69 100644 --- a/app/src/main/java/io/xpipe/app/storage/DataStoreEntry.java +++ b/app/src/main/java/io/xpipe/app/storage/DataStoreEntry.java @@ -346,7 +346,7 @@ public class DataStoreEntry extends StorageElement { public String getEffectiveIconFile() { if (getValidity() == Validity.LOAD_FAILED) { - return "disabled_icon.png"; + return "error.png"; } if (icon == null) { @@ -357,7 +357,7 @@ public class DataStoreEntry extends StorageElement { if (found.isPresent()) { return SystemIconManager.getAndLoadIconFile(found.get()); } else { - return "disabled_icon.png"; + return "error.png"; } } diff --git a/app/src/main/resources/io/xpipe/app/resources/img/shortcut/actionShortcut_icon-16.png b/app/src/main/resources/io/xpipe/app/resources/action.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/shortcut/actionShortcut_icon-16.png rename to app/src/main/resources/io/xpipe/app/resources/action.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/disabled_icon.png b/app/src/main/resources/io/xpipe/app/resources/error.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/disabled_icon.png rename to app/src/main/resources/io/xpipe/app/resources/error.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/shortcut/actionShortcut_icon-24.png b/app/src/main/resources/io/xpipe/app/resources/img/shortcut/actionShortcut_icon-24.png deleted file mode 100644 index d10edf1be61a37039cc96b891287525b417b843d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 835 zcmV-J1HAl+P)=Y-1sP zpfh42Z2|=YL&%NUDlCGEqHxBK&_y~Ggq9lRqM}8+qD70KT!s{3A$^PnWs9P;MOiwf zrH=2N7QWH<{K{zhZ{9uU+;e{K-un*siEcfVLfqc~lmqD`M|}u4Fh@?CPVp*K+d$qV zrM$r=lo}@dm_RwIZA4oulTtjPKuAFj7(hCPyagbuW-Z&QRwo5u7`;Hc;c=SQX5#i+ z0+lDpJdv6dju$Ze2+>oBR^vB&2!uj3c6QbN9%2;Xb~1qd9`wgYzl!r0F2p9zyQH; z5t{mh=()j#0TcR?6=d?b<=6BZhe|_LT8){<0Zfi_XJ~RhDWz=TPW^x7(zJ?RyImLaK{yUPPExm zeD(_5Du|eT9bJyF&+%9wyNEV-x@L6{4BZ0R3*-=}+RC`Em)DIy{=9<0SS~X54LAsZ z@{pIF;t4f5PeJT1QseFJ;KEzvmhfp#zpecXrOgiz{fux8_~>}HQxKWGrH1TqS@%)B zyEwq}*7v+xN9t`8D=cIgWlkv!hjj{=YrPMc~z%RWNS#Sdge?oGw#0Q6&P=7JDUvRpy+J^&-D zKF^LPq#J=g(Llvnkm~<%=^sO-(In+(g!nQL*-x^5Ta-Rj8d)-Y<~OSC^2=lV`*{EW N002ovPDHLkV1k4@b6x-d diff --git a/app/src/main/resources/io/xpipe/app/resources/img/shortcut/actionShortcut_icon-40.png b/app/src/main/resources/io/xpipe/app/resources/img/shortcut/actionShortcut_icon-40.png deleted file mode 100644 index 1cbcd2ac5d0b7de6dfd34a8f3e384aac83127fe0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1318 zcmV+>1=;$EP)}1ONa48FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H101tFU zSaeirbZlh+b8~1QWO89o>32hLyS2Us4egK4vC_7R4Wm2$2D?pn;W&?_` zn({${G4}-q`fEA8y?0XJhE>`AAw_qNqdbh5RtqEZVy=%S9S-2^rt2s>W2Jg4ZbJN? z5GW!O3YOURZ$nQ?t&BlFXBR%_6=YrJmdewd^KZUP0L)2 z^+AG7t>=kuJv+XDGVmoT4Y5)e#soRl8O>Uw$twkYEU~V^sb1i~ZHUz>1TLWRERk?S zTDY3P0&M5&q230noN`nbro@RXp?-O3ET;@RxSyJUe{6s<_%;Q7j}i@ik=9=mSb&jz zz)~3e2EX$jd0a+VlM<_Jfn4V*#}IISr(xz z%F#>@Gi&^ zhE{-7skRgC*zVR;<{{1|k^Z3#CPCeZyvWJW`2=fK&?e7(3R0C?hr7J>U|n+o=&~g1 zaSHmLOo0P99g3hu3xNwsoTvF=P;^_ zZX46J2IO2WRgVv#P(12b%^{ZY0))9NS(p8FscfH)s4tg_a|1N}FQA3x2+51<4F0$2Si58YKr8jw10CJrqcRx#i#CD><-QEyF*ewwvok!E=R<|}_u{O#2 zEs;*wchdV1t8PxROatpMerFAJf%`|SRV_2|2RC7vy}*>DoGsa!@doHybq^vfX*|U! z>$oGAu$?Q|&Q#dqM!0v556c02p45>J%&Ii5%Zl%e%fwBjYT2$7@Y+X#1r}#d6 z)2%7*r(lt1MwG)d(GbQZF1~)dqVMy4W zU{e`PIffY-OejafpNzJNe3YKp4cCKSITMs87a8ES1e=;mIn|*$bLdHrsNHf9l?H^1 z+$yN$?56AE0_s(j?b9i|eF9`Q%EABk6|mCyKe$96`5VG%1Z_p7p7Hr&^P=l0KLA^Z chPwd%0bW^->~s0_Qvd(}07*qoM6N<$g28l71^@s6 diff --git a/app/src/main/resources/io/xpipe/app/resources/img/shortcut/actionShortcut_icon-80.png b/app/src/main/resources/io/xpipe/app/resources/img/shortcut/actionShortcut_icon-80.png deleted file mode 100644 index df1565ec0c0ec44c35b6073c7509fe79be6eae27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2531 zcmV<92^{u`P)o(Gjo6BeV={aXTI6n-S>T;eNI#r z7t&{7CBKTY6x9U?#{L?!K8TkFhO==g|5$RJS?CYS`FMruBek_BA~sP!JiyzP*pJPa}XXQ zzj*tB7{VLAg;@_MGl5PZkf+xH{SvY0lcE<~(8P-;?g2V-j1r(dOgXTbXE%(Fd%*R` zyuKEUVBD7`o2{B@UE>Sc1b>I&y${RY zNk{ilw+KJs;~k zrq%%Ko$9{AvG8u<(FLen2)vTVVj5^KZHd2Og_a{CHAPv+RDTUrRpR0MNezDn;RfKn zJXW(oH)GmQF|Ye0RgYE2)P55gy7L_dBG)3!LHH%$+BX1QNORK>d4ut8^?4xjF9sr) z0atkDvjOmKTGqAt1f0=c;8M?gHUPB?cCeXrcsBH%k9 zVUle(RTYqV)v<`|1iBDTrPDr(fyiGE^)KpcW?%A5aLxlczqCWShR)C&(5=Lxe<3sJ z#|oYW@(|F<^u#gDS#cgOtsAa5=6s{78O&a$RvsiCIk(^uo%R}(lW?3>4BqzNsz#k3 zY$s*xK=ibX);Cekrsdri7@hWQ&|cu=s{AX@BXTqGwqIc;P6xIF(=sd`B^mfe#s7HA z-U?)CQ~4QqFtDbkUAy#|_c)@T&FPte@C2h%4}hLjwSNHN)9E>QA_ROKXw9)$%=E+q zUYv=QPvvS6Z+@^HMjiul#ruF6KyBh>W8xMsjj)8)=54hux%rogmH%ry(JZDd@n9_? z`X`_x7uA_~AMj|5l#Eoc#0jY?Qg>hFc8(&p^{Y2RO3~%Y7hU zAr|Q=AYL|u;a7=8zKifJ;6O=xVL4X!C(DSVDEvCvtAB*=GI{ZDeC>5G?VllRD{d&8vFz+c zk(6A@P&ii3FykknV;l#r1%u)UG5Xg&?^z5j?`~&w>VBZTh}DT>pTkUXrsX$vQ*Uo2 zJ?g2qXE%%@@|34ObEq=`Nxm3Oq~hnyy?A5sczA?OzKR)qSvY_(Q)v3nEDdX zkrO=kDa`WRX9o2ppp-SmtCTaw!RI0BOF%di^D6I33s}J}3a6cT!uSc8djEGQr(}KL z))Gfe!5FqZi$SD}dADBfigSPabL9>(eh<>=oS5vq7;EJgXmY>xn28dkt7jwqYyVl( z`00)GQv1onw5IN5_qt@Y!}$9Zj@>>4yja3&Dk*0h)~Z6Oa;53CXQBL-((8hc*CHNF z#5GV^UxrmDq#k1K<;PX*-?UH0VaHghmf{F^RO~+o{{?*S;61>rWmqnvWy&+@w2U$k z5jsQPMEG-hW4#pmCk7%r%JN+V{{?($-7v!D@{HvakSDP0N9eRKbkWi~XQ05l=R-_muX zw_>gAAGJpTip1VBeHBu~MDDwAe z9r&Eu5q%nTaS;)9?Bf;1UahEEJeZKwj)Eelb5%&02=`N)kPgEAh|DdJi{puSFj1); z@#xc-!NsUNI#y1}0lkb^WaF5{g;>EZL@q`-m-3S?_abaXQd`(_`%7bO*J0UBz)#2i z_DnpOC;{QHh{z+LJ;b6Lv-)GvexM(b5N2>a@S~#sgdPSW;k|$+u4ODjJmOIe7{0daAn&MDt`X>Dr^Q3Q<8ix=kFt#nmpdt#A?A^h{wD zPGHkf`*ohz*Ftmh5*)q7RX-Kt!~^roDTAB<1}4iOXOU3``GdDYtLWgYQ9;5A?uBHM_yZO>P_<^MQL4%iSUIxheK002ovPDHLkV1k=wx?=zU diff --git a/app/src/main/resources/io/xpipe/app/resources/img/logo/loading-160-dark.png b/app/src/main/resources/io/xpipe/app/resources/loading-160-dark.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/logo/loading-160-dark.png rename to app/src/main/resources/io/xpipe/app/resources/loading-160-dark.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/logo/loading-160.png b/app/src/main/resources/io/xpipe/app/resources/loading-160.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/logo/loading-160.png rename to app/src/main/resources/io/xpipe/app/resources/loading-160.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/logo/full/logo_128x128.png b/app/src/main/resources/io/xpipe/app/resources/logo/full/logo_128x128.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/logo/full/logo_128x128.png rename to app/src/main/resources/io/xpipe/app/resources/logo/full/logo_128x128.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/logo/full/logo_16x16.png b/app/src/main/resources/io/xpipe/app/resources/logo/full/logo_16x16.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/logo/full/logo_16x16.png rename to app/src/main/resources/io/xpipe/app/resources/logo/full/logo_16x16.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/logo/full/logo_24x24.png b/app/src/main/resources/io/xpipe/app/resources/logo/full/logo_24x24.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/logo/full/logo_24x24.png rename to app/src/main/resources/io/xpipe/app/resources/logo/full/logo_24x24.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/logo/full/logo_256x256.png b/app/src/main/resources/io/xpipe/app/resources/logo/full/logo_256x256.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/logo/full/logo_256x256.png rename to app/src/main/resources/io/xpipe/app/resources/logo/full/logo_256x256.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/logo/full/logo_32x32.png b/app/src/main/resources/io/xpipe/app/resources/logo/full/logo_32x32.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/logo/full/logo_32x32.png rename to app/src/main/resources/io/xpipe/app/resources/logo/full/logo_32x32.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/logo/full/logo_48x48.png b/app/src/main/resources/io/xpipe/app/resources/logo/full/logo_48x48.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/logo/full/logo_48x48.png rename to app/src/main/resources/io/xpipe/app/resources/logo/full/logo_48x48.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/logo/full/logo_64x64.png b/app/src/main/resources/io/xpipe/app/resources/logo/full/logo_64x64.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/logo/full/logo_64x64.png rename to app/src/main/resources/io/xpipe/app/resources/logo/full/logo_64x64.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/logo/logo.png b/app/src/main/resources/io/xpipe/app/resources/logo/logo.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/logo/logo.png rename to app/src/main/resources/io/xpipe/app/resources/logo/logo.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/logo/padded/logo_128x128.png b/app/src/main/resources/io/xpipe/app/resources/logo/padded/logo_128x128.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/logo/padded/logo_128x128.png rename to app/src/main/resources/io/xpipe/app/resources/logo/padded/logo_128x128.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/logo/padded/logo_16x16.png b/app/src/main/resources/io/xpipe/app/resources/logo/padded/logo_16x16.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/logo/padded/logo_16x16.png rename to app/src/main/resources/io/xpipe/app/resources/logo/padded/logo_16x16.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/logo/padded/logo_24x24.png b/app/src/main/resources/io/xpipe/app/resources/logo/padded/logo_24x24.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/logo/padded/logo_24x24.png rename to app/src/main/resources/io/xpipe/app/resources/logo/padded/logo_24x24.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/logo/padded/logo_256x256.png b/app/src/main/resources/io/xpipe/app/resources/logo/padded/logo_256x256.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/logo/padded/logo_256x256.png rename to app/src/main/resources/io/xpipe/app/resources/logo/padded/logo_256x256.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/logo/padded/logo_32x32.png b/app/src/main/resources/io/xpipe/app/resources/logo/padded/logo_32x32.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/logo/padded/logo_32x32.png rename to app/src/main/resources/io/xpipe/app/resources/logo/padded/logo_32x32.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/logo/padded/logo_48x48.png b/app/src/main/resources/io/xpipe/app/resources/logo/padded/logo_48x48.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/logo/padded/logo_48x48.png rename to app/src/main/resources/io/xpipe/app/resources/logo/padded/logo_48x48.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/logo/padded/logo_64x64.png b/app/src/main/resources/io/xpipe/app/resources/logo/padded/logo_64x64.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/logo/padded/logo_64x64.png rename to app/src/main/resources/io/xpipe/app/resources/logo/padded/logo_64x64.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/aix-24.png b/app/src/main/resources/io/xpipe/app/resources/os/aix-24.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/aix-24.png rename to app/src/main/resources/io/xpipe/app/resources/os/aix-24.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/aix-40.png b/app/src/main/resources/io/xpipe/app/resources/os/aix-40.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/aix-40.png rename to app/src/main/resources/io/xpipe/app/resources/os/aix-40.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/alma-24.png b/app/src/main/resources/io/xpipe/app/resources/os/alma-24.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/alma-24.png rename to app/src/main/resources/io/xpipe/app/resources/os/alma-24.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/alma-40.png b/app/src/main/resources/io/xpipe/app/resources/os/alma-40.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/alma-40.png rename to app/src/main/resources/io/xpipe/app/resources/os/alma-40.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/alpine-24.png b/app/src/main/resources/io/xpipe/app/resources/os/alpine-24.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/alpine-24.png rename to app/src/main/resources/io/xpipe/app/resources/os/alpine-24.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/alpine-40.png b/app/src/main/resources/io/xpipe/app/resources/os/alpine-40.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/alpine-40.png rename to app/src/main/resources/io/xpipe/app/resources/os/alpine-40.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/amazon-24.png b/app/src/main/resources/io/xpipe/app/resources/os/amazon-24.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/amazon-24.png rename to app/src/main/resources/io/xpipe/app/resources/os/amazon-24.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/amazon-40.png b/app/src/main/resources/io/xpipe/app/resources/os/amazon-40.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/amazon-40.png rename to app/src/main/resources/io/xpipe/app/resources/os/amazon-40.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/android-24.png b/app/src/main/resources/io/xpipe/app/resources/os/android-24.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/android-24.png rename to app/src/main/resources/io/xpipe/app/resources/os/android-24.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/android-40.png b/app/src/main/resources/io/xpipe/app/resources/os/android-40.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/android-40.png rename to app/src/main/resources/io/xpipe/app/resources/os/android-40.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/arch-24.png b/app/src/main/resources/io/xpipe/app/resources/os/arch-24.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/arch-24.png rename to app/src/main/resources/io/xpipe/app/resources/os/arch-24.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/arch-40.png b/app/src/main/resources/io/xpipe/app/resources/os/arch-40.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/arch-40.png rename to app/src/main/resources/io/xpipe/app/resources/os/arch-40.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/assistant-24-dark.png b/app/src/main/resources/io/xpipe/app/resources/os/assistant-24-dark.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/assistant-24-dark.png rename to app/src/main/resources/io/xpipe/app/resources/os/assistant-24-dark.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/assistant-24.png b/app/src/main/resources/io/xpipe/app/resources/os/assistant-24.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/assistant-24.png rename to app/src/main/resources/io/xpipe/app/resources/os/assistant-24.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/assistant-40-dark.png b/app/src/main/resources/io/xpipe/app/resources/os/assistant-40-dark.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/assistant-40-dark.png rename to app/src/main/resources/io/xpipe/app/resources/os/assistant-40-dark.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/assistant-40.png b/app/src/main/resources/io/xpipe/app/resources/os/assistant-40.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/assistant-40.png rename to app/src/main/resources/io/xpipe/app/resources/os/assistant-40.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/cachy-24.png b/app/src/main/resources/io/xpipe/app/resources/os/cachy-24.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/cachy-24.png rename to app/src/main/resources/io/xpipe/app/resources/os/cachy-24.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/cachy-40.png b/app/src/main/resources/io/xpipe/app/resources/os/cachy-40.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/cachy-40.png rename to app/src/main/resources/io/xpipe/app/resources/os/cachy-40.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/centos-24.png b/app/src/main/resources/io/xpipe/app/resources/os/centos-24.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/centos-24.png rename to app/src/main/resources/io/xpipe/app/resources/os/centos-24.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/centos-40.png b/app/src/main/resources/io/xpipe/app/resources/os/centos-40.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/centos-40.png rename to app/src/main/resources/io/xpipe/app/resources/os/centos-40.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/debian-24.png b/app/src/main/resources/io/xpipe/app/resources/os/debian-24.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/debian-24.png rename to app/src/main/resources/io/xpipe/app/resources/os/debian-24.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/debian-40.png b/app/src/main/resources/io/xpipe/app/resources/os/debian-40.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/debian-40.png rename to app/src/main/resources/io/xpipe/app/resources/os/debian-40.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/elementary-24-dark.png b/app/src/main/resources/io/xpipe/app/resources/os/elementary-24-dark.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/elementary-24-dark.png rename to app/src/main/resources/io/xpipe/app/resources/os/elementary-24-dark.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/elementary-24.png b/app/src/main/resources/io/xpipe/app/resources/os/elementary-24.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/elementary-24.png rename to app/src/main/resources/io/xpipe/app/resources/os/elementary-24.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/elementary-40-dark.png b/app/src/main/resources/io/xpipe/app/resources/os/elementary-40-dark.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/elementary-40-dark.png rename to app/src/main/resources/io/xpipe/app/resources/os/elementary-40-dark.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/elementary-40.png b/app/src/main/resources/io/xpipe/app/resources/os/elementary-40.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/elementary-40.png rename to app/src/main/resources/io/xpipe/app/resources/os/elementary-40.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/endeavour-24-dark.png b/app/src/main/resources/io/xpipe/app/resources/os/endeavour-24-dark.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/endeavour-24-dark.png rename to app/src/main/resources/io/xpipe/app/resources/os/endeavour-24-dark.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/endeavour-24.png b/app/src/main/resources/io/xpipe/app/resources/os/endeavour-24.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/endeavour-24.png rename to app/src/main/resources/io/xpipe/app/resources/os/endeavour-24.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/endeavour-40-dark.png b/app/src/main/resources/io/xpipe/app/resources/os/endeavour-40-dark.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/endeavour-40-dark.png rename to app/src/main/resources/io/xpipe/app/resources/os/endeavour-40-dark.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/endeavour-40.png b/app/src/main/resources/io/xpipe/app/resources/os/endeavour-40.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/endeavour-40.png rename to app/src/main/resources/io/xpipe/app/resources/os/endeavour-40.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/fedora-24.png b/app/src/main/resources/io/xpipe/app/resources/os/fedora-24.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/fedora-24.png rename to app/src/main/resources/io/xpipe/app/resources/os/fedora-24.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/fedora-40.png b/app/src/main/resources/io/xpipe/app/resources/os/fedora-40.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/fedora-40.png rename to app/src/main/resources/io/xpipe/app/resources/os/fedora-40.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/freebsd-24.png b/app/src/main/resources/io/xpipe/app/resources/os/freebsd-24.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/freebsd-24.png rename to app/src/main/resources/io/xpipe/app/resources/os/freebsd-24.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/freebsd-40.png b/app/src/main/resources/io/xpipe/app/resources/os/freebsd-40.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/freebsd-40.png rename to app/src/main/resources/io/xpipe/app/resources/os/freebsd-40.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/garuda-24.png b/app/src/main/resources/io/xpipe/app/resources/os/garuda-24.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/garuda-24.png rename to app/src/main/resources/io/xpipe/app/resources/os/garuda-24.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/garuda-40.png b/app/src/main/resources/io/xpipe/app/resources/os/garuda-40.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/garuda-40.png rename to app/src/main/resources/io/xpipe/app/resources/os/garuda-40.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/gentoo-24.png b/app/src/main/resources/io/xpipe/app/resources/os/gentoo-24.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/gentoo-24.png rename to app/src/main/resources/io/xpipe/app/resources/os/gentoo-24.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/gentoo-40.png b/app/src/main/resources/io/xpipe/app/resources/os/gentoo-40.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/gentoo-40.png rename to app/src/main/resources/io/xpipe/app/resources/os/gentoo-40.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/hp-ux-24.png b/app/src/main/resources/io/xpipe/app/resources/os/hp-ux-24.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/hp-ux-24.png rename to app/src/main/resources/io/xpipe/app/resources/os/hp-ux-24.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/hp-ux-40.png b/app/src/main/resources/io/xpipe/app/resources/os/hp-ux-40.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/hp-ux-40.png rename to app/src/main/resources/io/xpipe/app/resources/os/hp-ux-40.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/illumos-24.png b/app/src/main/resources/io/xpipe/app/resources/os/illumos-24.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/illumos-24.png rename to app/src/main/resources/io/xpipe/app/resources/os/illumos-24.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/illumos-40.png b/app/src/main/resources/io/xpipe/app/resources/os/illumos-40.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/illumos-40.png rename to app/src/main/resources/io/xpipe/app/resources/os/illumos-40.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/kali-24.png b/app/src/main/resources/io/xpipe/app/resources/os/kali-24.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/kali-24.png rename to app/src/main/resources/io/xpipe/app/resources/os/kali-24.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/kali-40.png b/app/src/main/resources/io/xpipe/app/resources/os/kali-40.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/kali-40.png rename to app/src/main/resources/io/xpipe/app/resources/os/kali-40.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/kubuntu-24.png b/app/src/main/resources/io/xpipe/app/resources/os/kubuntu-24.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/kubuntu-24.png rename to app/src/main/resources/io/xpipe/app/resources/os/kubuntu-24.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/kubuntu-40.png b/app/src/main/resources/io/xpipe/app/resources/os/kubuntu-40.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/kubuntu-40.png rename to app/src/main/resources/io/xpipe/app/resources/os/kubuntu-40.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/linux-24.png b/app/src/main/resources/io/xpipe/app/resources/os/linux-24.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/linux-24.png rename to app/src/main/resources/io/xpipe/app/resources/os/linux-24.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/linux-40.png b/app/src/main/resources/io/xpipe/app/resources/os/linux-40.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/linux-40.png rename to app/src/main/resources/io/xpipe/app/resources/os/linux-40.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/macos-24-dark.png b/app/src/main/resources/io/xpipe/app/resources/os/macos-24-dark.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/macos-24-dark.png rename to app/src/main/resources/io/xpipe/app/resources/os/macos-24-dark.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/macos-24.png b/app/src/main/resources/io/xpipe/app/resources/os/macos-24.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/macos-24.png rename to app/src/main/resources/io/xpipe/app/resources/os/macos-24.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/macos-40-dark.png b/app/src/main/resources/io/xpipe/app/resources/os/macos-40-dark.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/macos-40-dark.png rename to app/src/main/resources/io/xpipe/app/resources/os/macos-40-dark.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/macos-40.png b/app/src/main/resources/io/xpipe/app/resources/os/macos-40.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/macos-40.png rename to app/src/main/resources/io/xpipe/app/resources/os/macos-40.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/manjaro-24.png b/app/src/main/resources/io/xpipe/app/resources/os/manjaro-24.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/manjaro-24.png rename to app/src/main/resources/io/xpipe/app/resources/os/manjaro-24.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/manjaro-40.png b/app/src/main/resources/io/xpipe/app/resources/os/manjaro-40.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/manjaro-40.png rename to app/src/main/resources/io/xpipe/app/resources/os/manjaro-40.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/mint-24.png b/app/src/main/resources/io/xpipe/app/resources/os/mint-24.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/mint-24.png rename to app/src/main/resources/io/xpipe/app/resources/os/mint-24.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/mint-40.png b/app/src/main/resources/io/xpipe/app/resources/os/mint-40.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/mint-40.png rename to app/src/main/resources/io/xpipe/app/resources/os/mint-40.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/netbsd-24.png b/app/src/main/resources/io/xpipe/app/resources/os/netbsd-24.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/netbsd-24.png rename to app/src/main/resources/io/xpipe/app/resources/os/netbsd-24.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/netbsd-40.png b/app/src/main/resources/io/xpipe/app/resources/os/netbsd-40.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/netbsd-40.png rename to app/src/main/resources/io/xpipe/app/resources/os/netbsd-40.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/nixos-24.png b/app/src/main/resources/io/xpipe/app/resources/os/nixos-24.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/nixos-24.png rename to app/src/main/resources/io/xpipe/app/resources/os/nixos-24.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/nixos-40.png b/app/src/main/resources/io/xpipe/app/resources/os/nixos-40.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/nixos-40.png rename to app/src/main/resources/io/xpipe/app/resources/os/nixos-40.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/openbsd-24.png b/app/src/main/resources/io/xpipe/app/resources/os/openbsd-24.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/openbsd-24.png rename to app/src/main/resources/io/xpipe/app/resources/os/openbsd-24.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/openbsd-40.png b/app/src/main/resources/io/xpipe/app/resources/os/openbsd-40.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/openbsd-40.png rename to app/src/main/resources/io/xpipe/app/resources/os/openbsd-40.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/pop-24.png b/app/src/main/resources/io/xpipe/app/resources/os/pop-24.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/pop-24.png rename to app/src/main/resources/io/xpipe/app/resources/os/pop-24.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/pop-40.png b/app/src/main/resources/io/xpipe/app/resources/os/pop-40.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/pop-40.png rename to app/src/main/resources/io/xpipe/app/resources/os/pop-40.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/redhat-24.png b/app/src/main/resources/io/xpipe/app/resources/os/redhat-24.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/redhat-24.png rename to app/src/main/resources/io/xpipe/app/resources/os/redhat-24.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/redhat-40.png b/app/src/main/resources/io/xpipe/app/resources/os/redhat-40.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/redhat-40.png rename to app/src/main/resources/io/xpipe/app/resources/os/redhat-40.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/rocky-24.png b/app/src/main/resources/io/xpipe/app/resources/os/rocky-24.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/rocky-24.png rename to app/src/main/resources/io/xpipe/app/resources/os/rocky-24.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/rocky-40.png b/app/src/main/resources/io/xpipe/app/resources/os/rocky-40.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/rocky-40.png rename to app/src/main/resources/io/xpipe/app/resources/os/rocky-40.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/solaris-24.png b/app/src/main/resources/io/xpipe/app/resources/os/solaris-24.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/solaris-24.png rename to app/src/main/resources/io/xpipe/app/resources/os/solaris-24.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/solaris-40.png b/app/src/main/resources/io/xpipe/app/resources/os/solaris-40.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/solaris-40.png rename to app/src/main/resources/io/xpipe/app/resources/os/solaris-40.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/suse-24.png b/app/src/main/resources/io/xpipe/app/resources/os/suse-24.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/suse-24.png rename to app/src/main/resources/io/xpipe/app/resources/os/suse-24.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/suse-40.png b/app/src/main/resources/io/xpipe/app/resources/os/suse-40.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/suse-40.png rename to app/src/main/resources/io/xpipe/app/resources/os/suse-40.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/ubuntu-24.png b/app/src/main/resources/io/xpipe/app/resources/os/ubuntu-24.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/ubuntu-24.png rename to app/src/main/resources/io/xpipe/app/resources/os/ubuntu-24.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/ubuntu-40.png b/app/src/main/resources/io/xpipe/app/resources/os/ubuntu-40.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/ubuntu-40.png rename to app/src/main/resources/io/xpipe/app/resources/os/ubuntu-40.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/unix-24.png b/app/src/main/resources/io/xpipe/app/resources/os/unix-24.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/unix-24.png rename to app/src/main/resources/io/xpipe/app/resources/os/unix-24.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/unix-40.png b/app/src/main/resources/io/xpipe/app/resources/os/unix-40.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/unix-40.png rename to app/src/main/resources/io/xpipe/app/resources/os/unix-40.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/windows-24.png b/app/src/main/resources/io/xpipe/app/resources/os/windows-24.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/windows-24.png rename to app/src/main/resources/io/xpipe/app/resources/os/windows-24.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/windows-40.png b/app/src/main/resources/io/xpipe/app/resources/os/windows-40.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/windows-40.png rename to app/src/main/resources/io/xpipe/app/resources/os/windows-40.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/zorin-24.png b/app/src/main/resources/io/xpipe/app/resources/os/zorin-24.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/zorin-24.png rename to app/src/main/resources/io/xpipe/app/resources/os/zorin-24.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/os/zorin-40.png b/app/src/main/resources/io/xpipe/app/resources/os/zorin-40.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/os/zorin-40.png rename to app/src/main/resources/io/xpipe/app/resources/os/zorin-40.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/graphics/Hips-122-dark.png b/app/src/main/resources/io/xpipe/app/resources/welcome/hips-122-dark.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/graphics/Hips-122-dark.png rename to app/src/main/resources/io/xpipe/app/resources/welcome/hips-122-dark.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/graphics/Hips-122.png b/app/src/main/resources/io/xpipe/app/resources/welcome/hips-122.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/graphics/Hips-122.png rename to app/src/main/resources/io/xpipe/app/resources/welcome/hips-122.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/graphics/Hips-244-dark.png b/app/src/main/resources/io/xpipe/app/resources/welcome/hips-244-dark.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/graphics/Hips-244-dark.png rename to app/src/main/resources/io/xpipe/app/resources/welcome/hips-244-dark.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/graphics/Hips-244.png b/app/src/main/resources/io/xpipe/app/resources/welcome/hips-244.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/graphics/Hips-244.png rename to app/src/main/resources/io/xpipe/app/resources/welcome/hips-244.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/graphics/Wave-144-dark.png b/app/src/main/resources/io/xpipe/app/resources/welcome/wave-144-dark.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/graphics/Wave-144-dark.png rename to app/src/main/resources/io/xpipe/app/resources/welcome/wave-144-dark.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/graphics/Wave-144.png b/app/src/main/resources/io/xpipe/app/resources/welcome/wave-144.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/graphics/Wave-144.png rename to app/src/main/resources/io/xpipe/app/resources/welcome/wave-144.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/graphics/Wave-288-dark.png b/app/src/main/resources/io/xpipe/app/resources/welcome/wave-288-dark.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/graphics/Wave-288-dark.png rename to app/src/main/resources/io/xpipe/app/resources/welcome/wave-288-dark.png diff --git a/app/src/main/resources/io/xpipe/app/resources/img/graphics/Wave-288.png b/app/src/main/resources/io/xpipe/app/resources/welcome/wave-288.png similarity index 100% rename from app/src/main/resources/io/xpipe/app/resources/img/graphics/Wave-288.png rename to app/src/main/resources/io/xpipe/app/resources/welcome/wave-288.png