diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 70c005f33..b4669f717 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -211,11 +211,11 @@ jobs: rm -rf mango-pkgs ls -l "$M" # And the desktop's launcher and labwc defaults, staged over the desktop package's copies. - install -Dm644 tools/linuxfs/desktop/steamdeck-desktop "$D/usr/local/bin/steamdeck-desktop" + install -Dm644 tools/linuxfs/desktop/droiddeck-desktop "$D/usr/local/bin/droiddeck-desktop" install -Dm644 tools/linuxfs/desktop/autostart "$D/etc/xdg/labwc/autostart" install -Dm644 tools/linuxfs/desktop/rc.xml "$D/etc/xdg/labwc/rc.xml" install -Dm644 tools/linuxfs/desktop/panel.conf "$D/etc/xdg/lxqt/panel.conf" - install -Dm644 tools/linuxfs/desktop/firefox-steamdeck.js "$D/usr/lib/firefox/defaults/pref/steamdeck.js" + install -Dm644 tools/linuxfs/desktop/firefox-droiddeck.js "$D/usr/lib/firefox/defaults/pref/droiddeck.js" ls -lR "$D" # The daemon's AAudio sink (tools/aaudio-sink), compiled here against upstream PulseAudio 13 @@ -388,7 +388,7 @@ jobs: BUILD_OUTCOME: ${{ steps.build.outcome }} run: | set -uo pipefail - MARK="" + MARK="" { echo "$MARK" echo "## Build of this pull request" @@ -399,7 +399,7 @@ jobs: success) echo "### Build passed" echo - echo "The apk is the \`steamdeck-apk\` artifact on [this run]($RUN_URL) (signed with the same test key as every build, so it installs over any other)." + echo "The apk is the \`droiddeck-apk\` artifact on [this run]($RUN_URL) (signed with the same test key as every build, so it installs over any other)." ;; failure) echo "### ERROR: Build failed" @@ -438,7 +438,7 @@ jobs: - uses: actions/upload-artifact@v4 with: - name: steamdeck-apk + name: droiddeck-apk path: app/build/outputs/apk/release/*.apk if-no-files-found: error retention-days: 30 diff --git a/README.md b/README.md index ee5349834..a07db935c 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,20 @@ -# SteamDeck +# DroidDeck Run Valve's native ARM64 Steam client on an Adreno Android device. Steam runs in a Linux runtime under proot, with gamescope and an in-app Vulkan compositor. Windows games use Valve's ARM64 Proton and FEX. A desktop with LXQt, Firefox, and emulators is also available. ## Requirements and install -Use Android 9 or newer on a supported Adreno device (730 or newer, or 8xx). Mali, Xclipse, PowerVR, and Adreno 710 are unsupported. No root is required. Allow about 3 GB for the runtime and 1.1 GB more for the desktop and emulators. Install the APK from [Releases](https://github.com/The412Banner/SteamDeck/releases), install the Linux runtime, then press **Play** and sign in. Steam downloads on first launch. Install **Desktop & apps** to use the desktop and emulators. +Use Android 9 or newer on a supported Adreno device (730 or newer, or 8xx). Mali, Xclipse, PowerVR, and Adreno 710 are unsupported. No root is required. Allow about 3 GB for the runtime and 1.1 GB more for the desktop and emulators. Install the APK from [Releases](https://github.com/The412Banner/DroidDeck/releases), install the Linux runtime, then press **Play** and sign in. Steam downloads on first launch. Install **Desktop & apps** to use the desktop and emulators. On Android 12+, if Steam exits without a log, turn off **Restrict child processes** in Developer options. ## Build -Run `tools/build_local.sh` with Docker, Java 17, the Android SDK/NDK, and `zstd` installed. It builds the ARM64 audio sinks from PulseAudio 13.0 and packages them into the APK at `app/build/outputs/apk/release/app-release.apk`. Set `STEAMDECK_PA13_SOURCE_DIR` to an existing PulseAudio 13.0 source directory to skip downloading it. To install the APK on an attached device, run `tools/deploy_local.sh`. +Run `tools/build_local.sh` with Docker, Java 17, the Android SDK/NDK, and `zstd` installed. It builds the ARM64 audio sinks from PulseAudio 13.0 and packages them into the APK at `app/build/outputs/apk/release/app-release.apk`. Set `DROIDDECK_PA13_SOURCE_DIR` to an existing PulseAudio 13.0 source directory to skip downloading it. To install the APK on an attached device, run `tools/deploy_local.sh`. ## Limits -Compatibility and performance vary by device; hardware validation is limited. Desktop compositing uses software rendering. Firefox sandboxing is reduced under proot. See the session logs in `Download/SteamDeck/` when diagnosing problems. +Compatibility and performance vary by device; hardware validation is limited. Desktop compositing uses software rendering. Firefox sandboxing is reduced under proot. See the session logs in `Download/DroidDeck/` when diagnosing problems. ## Credits and licence diff --git a/app/build.gradle b/app/build.gradle index b8c3cf689..a9fdb0365 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -5,14 +5,14 @@ apply plugin: 'kotlin-android' apply plugin: 'org.jetbrains.kotlin.plugin.compose' android { - namespace 'com.steamdeck.launcher' + namespace 'com.droiddeck.launcher' compileSdk 34 // The NDK is pinned by property so CI can hand in whatever the runner already has rather than // downloading a second copy; see gradle.properties. ndkVersion project.findProperty('ndkVersion') ?: '27.3.13750724' defaultConfig { - applicationId "com.steamdeck.launcher" + applicationId "com.droiddeck.launcher" minSdkVersion 26 // 28 is not a leftover. An app on targetSdk 29+ runs in a domain that may not execute a // file out of its own data directory, and this app's entire job is to exec a rootfs: diff --git a/app/src/main/cpp/CMakeLists.txt b/app/src/main/cpp/CMakeLists.txt index c96fd48b1..ccc3c12c2 100644 --- a/app/src/main/cpp/CMakeLists.txt +++ b/app/src/main/cpp/CMakeLists.txt @@ -1,7 +1,7 @@ # The app's native side: the Wayland compositor the session presents into, the adrenotools loader # it opens Turnip with, and one small library for the fake-input ring's memory fence. cmake_minimum_required(VERSION 3.22.1) -project(steamdeck C CXX) +project(droiddeck C CXX) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2 -Wno-unused-function -Wimplicit-function-declaration") diff --git a/app/src/main/cpp/fakeinput_steam.cpp b/app/src/main/cpp/fakeinput_steam.cpp index 217b94200..5c1c79fdd 100644 --- a/app/src/main/cpp/fakeinput_steam.cpp +++ b/app/src/main/cpp/fakeinput_steam.cpp @@ -304,7 +304,7 @@ send_vibration(int strong, int weak, uint16_t duration_ms, uint16_t slot) { struct sockaddr_un addr = {}; addr.sun_family = AF_UNIX; - const char *name = "steamdeck-rumble"; + const char *name = "droiddeck-rumble"; memcpy(addr.sun_path + 1, name, strlen(name)); socklen_t addrlen = offsetof(struct sockaddr_un, sun_path) + 1 + strlen(name); diff --git a/app/src/main/cpp/framegen/VulkanRendererContext.h b/app/src/main/cpp/framegen/VulkanRendererContext.h index f0a09f6d3..5c8b8bfdd 100644 --- a/app/src/main/cpp/framegen/VulkanRendererContext.h +++ b/app/src/main/cpp/framegen/VulkanRendererContext.h @@ -108,10 +108,10 @@ struct VkTable { #include #include -#define WLOG_TAG "SteamDeck_Renderer" +#define WLOG_TAG "DroidDeck_Renderer" #define RLOG(...) if(verboseLog) __android_log_print(ANDROID_LOG_DEBUG,WLOG_TAG,__VA_ARGS__) #define RLOG_E(...) __android_log_print(ANDROID_LOG_ERROR,WLOG_TAG,__VA_ARGS__) -#define SCANOUT_LOG(...) __android_log_print(ANDROID_LOG_DEBUG,"SteamDeck_Scanout",__VA_ARGS__) +#define SCANOUT_LOG(...) __android_log_print(ANDROID_LOG_DEBUG,"DroidDeck_Scanout",__VA_ARGS__) #include #include diff --git a/app/src/main/cpp/framegen/lsfg/lsfg_jni.cpp b/app/src/main/cpp/framegen/lsfg/lsfg_jni.cpp index f4a1a4e73..ba8447313 100644 --- a/app/src/main/cpp/framegen/lsfg/lsfg_jni.cpp +++ b/app/src/main/cpp/framegen/lsfg/lsfg_jni.cpp @@ -23,25 +23,25 @@ std::string toStdString(JNIEnv* env, jstring s) { } // namespace extern "C" JNIEXPORT jint JNICALL -Java_com_steamdeck_launcher_gpu_LsfgNative_nativeValidateDll(JNIEnv* env, jclass, jstring dllPath) { +Java_com_droiddeck_launcher_gpu_LsfgNative_nativeValidateDll(JNIEnv* env, jclass, jstring dllPath) { return (jint)lsfg::validateDll(toStdString(env, dllPath)); } extern "C" JNIEXPORT jint JNICALL -Java_com_steamdeck_launcher_gpu_LsfgNative_nativeDllVariant(JNIEnv* env, jclass, jstring dllPath, +Java_com_droiddeck_launcher_gpu_LsfgNative_nativeDllVariant(JNIEnv* env, jclass, jstring dllPath, jboolean preferFp16) { return (jint)lsfg::dllVariant(toStdString(env, dllPath), preferFp16 == JNI_TRUE); } extern "C" JNIEXPORT jint JNICALL -Java_com_steamdeck_launcher_gpu_LsfgNative_nativeBuildCache(JNIEnv* env, jclass, jstring dllPath, +Java_com_droiddeck_launcher_gpu_LsfgNative_nativeBuildCache(JNIEnv* env, jclass, jstring dllPath, jstring cachePath, jboolean preferFp16) { return (jint)lsfg::buildCache(toStdString(env, dllPath), toStdString(env, cachePath), preferFp16 == JNI_TRUE); } extern "C" JNIEXPORT jboolean JNICALL -Java_com_steamdeck_launcher_gpu_LsfgNative_nativeCacheMatchesSource(JNIEnv* env, jclass, +Java_com_droiddeck_launcher_gpu_LsfgNative_nativeCacheMatchesSource(JNIEnv* env, jclass, jstring cachePath, jstring dllPath) { bool matches = false; @@ -51,7 +51,7 @@ Java_com_steamdeck_launcher_gpu_LsfgNative_nativeCacheMatchesSource(JNIEnv* env, } extern "C" JNIEXPORT jint JNICALL -Java_com_steamdeck_launcher_gpu_LsfgNative_nativeCacheVariant(JNIEnv* env, jclass, jstring cachePath) { +Java_com_droiddeck_launcher_gpu_LsfgNative_nativeCacheVariant(JNIEnv* env, jclass, jstring cachePath) { lsfg::Variant variant = lsfg::Variant::None; if (lsfg::cacheVariant(toStdString(env, cachePath), variant) != lsfg::DllStatus::Ok) return (jint)lsfg::Variant::None; @@ -59,11 +59,11 @@ Java_com_steamdeck_launcher_gpu_LsfgNative_nativeCacheVariant(JNIEnv* env, jclas } extern "C" JNIEXPORT jstring JNICALL -Java_com_steamdeck_launcher_gpu_LsfgNative_nativeStatusName(JNIEnv* env, jclass, jint status) { +Java_com_droiddeck_launcher_gpu_LsfgNative_nativeStatusName(JNIEnv* env, jclass, jint status) { return env->NewStringUTF(lsfg::statusName((lsfg::DllStatus)status)); } extern "C" JNIEXPORT jstring JNICALL -Java_com_steamdeck_launcher_gpu_LsfgNative_nativeVariantName(JNIEnv* env, jclass, jint variant) { +Java_com_droiddeck_launcher_gpu_LsfgNative_nativeVariantName(JNIEnv* env, jclass, jint variant) { return env->NewStringUTF(lsfg::variantName((lsfg::Variant)variant)); } diff --git a/app/src/main/cpp/scanout/ScanoutContext.h b/app/src/main/cpp/scanout/ScanoutContext.h index de2294849..e14a82a9b 100644 --- a/app/src/main/cpp/scanout/ScanoutContext.h +++ b/app/src/main/cpp/scanout/ScanoutContext.h @@ -22,7 +22,7 @@ #include #ifndef SCANOUT_LOG -#define SCANOUT_LOG(...) __android_log_print(ANDROID_LOG_DEBUG,"SteamDeck_Scanout",__VA_ARGS__) +#define SCANOUT_LOG(...) __android_log_print(ANDROID_LOG_DEBUG,"DroidDeck_Scanout",__VA_ARGS__) #endif class ScanoutContext { diff --git a/app/src/main/cpp/sdnative/sdnative.c b/app/src/main/cpp/sdnative/sdnative.c index 592356087..aa928b856 100644 --- a/app/src/main/cpp/sdnative/sdnative.c +++ b/app/src/main/cpp/sdnative/sdnative.c @@ -10,7 +10,7 @@ #include JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_input_FakeInputWriter_nativeStoreFence(JNIEnv *env, jclass clazz) { +Java_com_droiddeck_launcher_input_FakeInputWriter_nativeStoreFence(JNIEnv *env, jclass clazz) { (void)env; (void)clazz; atomic_thread_fence(memory_order_release); diff --git a/app/src/main/cpp/waylandcomp/src/framegen_jni.c b/app/src/main/cpp/waylandcomp/src/framegen_jni.c index b8b43ab28..c693ad25c 100644 --- a/app/src/main/cpp/waylandcomp/src/framegen_jni.c +++ b/app/src/main/cpp/waylandcomp/src/framegen_jni.c @@ -7,20 +7,20 @@ #include "framegen_bridge.h" JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSetFrameGenEngine(JNIEnv *env, jclass clazz, jint kind) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeSetFrameGenEngine(JNIEnv *env, jclass clazz, jint kind) { (void)env; (void)clazz; vkp_framegen_set_engine((int)kind); } JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSetFrameGenArmed(JNIEnv *env, jclass clazz, +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeSetFrameGenArmed(JNIEnv *env, jclass clazz, jboolean armed, jint multiplier) { (void)env; (void)clazz; vkp_framegen_set_armed(armed ? 1 : 0, (int)multiplier); } JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSetLsfgCachePath(JNIEnv *env, jclass clazz, jstring path) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeSetLsfgCachePath(JNIEnv *env, jclass clazz, jstring path) { (void)clazz; if (!path) { vkp_framegen_set_lsfg_cache_path(NULL); return; } const char *c = (*env)->GetStringUTFChars(env, path, NULL); @@ -29,34 +29,34 @@ Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSetLsfgCachePath(JNI } JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSetFrameGenTuning(JNIEnv *env, jclass clazz, +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeSetFrameGenTuning(JNIEnv *env, jclass clazz, jfloat flowScale, jfloat refreshHz) { (void)env; (void)clazz; vkp_framegen_set_tuning((float)flowScale, (float)refreshHz); } JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSetWinFgTuning(JNIEnv *env, jclass clazz, +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeSetWinFgTuning(JNIEnv *env, jclass clazz, jint model, jint perfPreset) { (void)env; (void)clazz; vkp_framegen_set_winfg_tuning((int)model, (int)perfPreset); } JNIEXPORT jint JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeFrameGenProblem(JNIEnv *env, jclass clazz) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeFrameGenProblem(JNIEnv *env, jclass clazz) { (void)env; (void)clazz; return (jint)vkp_framegen_problem(); } JNIEXPORT jstring JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeFrameGenCapsReason(JNIEnv *env, jclass clazz) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeFrameGenCapsReason(JNIEnv *env, jclass clazz) { (void)clazz; const char *r = vkp_framegen_caps_reason(); return (*env)->NewStringUTF(env, r ? r : ""); } JNIEXPORT jfloatArray JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeFrameGenStats(JNIEnv *env, jclass clazz) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeFrameGenStats(JNIEnv *env, jclass clazz) { (void)clazz; float st[6] = {0.f, 0.f, 0.f, 0.f, -1.f, -1.f}; vkp_framegen_stats(st); diff --git a/app/src/main/cpp/waylandcomp/src/waylandcomp_jni.c b/app/src/main/cpp/waylandcomp/src/waylandcomp_jni.c index 6c009a19b..9698e1cfd 100644 --- a/app/src/main/cpp/waylandcomp/src/waylandcomp_jni.c +++ b/app/src/main/cpp/waylandcomp/src/waylandcomp_jni.c @@ -53,7 +53,7 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { g_jvm = vm; JNIEnv *env; if ((*vm)->GetEnv(vm, (void **)&env, JNI_VERSION_1_6) == JNI_OK) { - jclass c = (*env)->FindClass(env, "com/steamdeck/launcher/wayland/WaylandCompositor"); + jclass c = (*env)->FindClass(env, "com/droiddeck/launcher/wayland/WaylandCompositor"); if (c) { g_compositor_cls = (*env)->NewGlobalRef(env, c); g_on_first_frame = (*env)->GetStaticMethodID(env, g_compositor_cls, @@ -222,14 +222,14 @@ static void start_thread(void) { /* The compositor thread's tid, or 0 before it starts. The app opens a PerformanceHintManager session * on it and reports each presented frame's interval, so the governor sees a frame that ran long. */ JNIEXPORT jint JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeCompositorTid(JNIEnv *env, jclass clazz) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeCompositorTid(JNIEnv *env, jclass clazz) { (void)env; (void)clazz; return (jint)g_comp_tid; } /* Headless start (no output window) - used for bring-up tests. */ JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeStart(JNIEnv *env, jclass clazz, +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeStart(JNIEnv *env, jclass clazz, jstring xdgRuntimeDir) { set_runtime_dir(env, xdgRuntimeDir); start_thread(); @@ -246,7 +246,7 @@ static char *dup_jstr(JNIEnv *env, jstring s) { /* Start with a real output Surface + the container's Turnip driver (adrenotools). * Frames committed by clients are composited to this Surface via Turnip. */ JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeStartWithSurface( +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeStartWithSurface( JNIEnv *env, jclass clazz, jobject surface, jstring xdgRuntimeDir, jstring driverPath, jstring libraryName, jstring nativeLibDir) { set_runtime_dir(env, xdgRuntimeDir); @@ -266,34 +266,34 @@ Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeStartWithSurface( /* Inject a pointer event from the Android SurfaceView touch listener (UI thread). * action: 0=down 1=move 2=up; x/y in output space (0..1919, 0..1079). */ JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSendPointer( +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeSendPointer( JNIEnv *env, jclass clazz, jint action, jint x, jint y) { banner_wayland_send_pointer(action, x, y); } /* Inject a key event. evdev = Linux input keycode (KEY_A=30…); state 1=down 0=up. */ JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSendKey( +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeSendKey( JNIEnv *env, jclass clazz, jint evdev, jint state) { banner_wayland_send_key(evdev, state); } /* App X-server input in scene (virtual desktop) coordinates; see banner_wayland_send_scene_input. */ JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSendSceneInput( +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeSendSceneInput( JNIEnv *env, jclass clazz, jint type, jint a, jint b) { banner_wayland_send_scene_input(type, a, b); } /* One screen refresh (Choreographer frame callback, UI thread): the compositor draws once. */ JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeVsync(JNIEnv *env, jclass clazz, jlong frameTimeNanos) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeVsync(JNIEnv *env, jclass clazz, jlong frameTimeNanos) { banner_wayland_vsync((int64_t)frameTimeNanos); } /* Shortcut launches: don't draw explorer's windows (desktop, taskbar), like X11's unviewable classes. */ JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSetHideShell(JNIEnv *env, jclass clazz, jboolean hide) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeSetHideShell(JNIEnv *env, jclass clazz, jboolean hide) { g_hide_shell = hide ? 1 : 0; } @@ -302,7 +302,7 @@ Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSetHideShell(JNIEnv * thread, any time: before the compositor starts it is the launch default; afterwards the compositor * thread flips the state, tells the bound games to rebuild their swapchains for it and redraws. */ JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSetZeroCopy(JNIEnv *env, jclass clazz, jboolean on) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeSetZeroCopy(JNIEnv *env, jclass clazz, jboolean on) { int live = banner_get_display() != NULL; if (!live) g_zero_copy = on ? 1 : 0; /* read by ahb_swapchain_init before the queue drains */ banner_host_zero_copy(on ? 1 : 0, live); @@ -312,13 +312,13 @@ Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSetZeroCopy(JNIEnv * /* Milliseconds since the compositor last put a game frame on the layer without a copy; -1 = never * this session. The drawer's status line ("switching..." until the frames arrive / stop). */ JNIEXPORT jint JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeZeroCopyLastFrameAgeMs(JNIEnv *env, jclass clazz) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeZeroCopyLastFrameAgeMs(JNIEnv *env, jclass clazz) { return (jint)ahb_swapchain_last_frame_age_ms(); } /* Zero-copy frames in the last completed 10 s stats window (on_stats_timer), for the drawer's live line. */ JNIEXPORT jint JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeZeroCopyFrames(JNIEnv *env, jclass clazz) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeZeroCopyFrames(JNIEnv *env, jclass clazz) { return (jint)g_zero_copy_last; } @@ -326,7 +326,7 @@ Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeZeroCopyFrames(JNIEn * the renderer's driver imports it (default on; BANNER_WAYLAND_UBWC=0 = off). Set before the compositor * starts. */ JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSetUbwc(JNIEnv *env, jclass clazz, jboolean on) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeSetUbwc(JNIEnv *env, jclass clazz, jboolean on) { g_ubwc = on ? 1 : 0; __android_log_print(ANDROID_LOG_INFO, TAG, "compressed (UBWC) game buffers %s", on ? "on" : "off"); } @@ -334,7 +334,7 @@ Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSetUbwc(JNIEnv *env, /* Debug: name no DRM device in the dma-buf feedback (BANNER_WAYLAND_NO_RENDER_NODE=1), the way a * phone that exposes no /dev/dri node to apps does. Set before the compositor starts. */ JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSetNoRenderNode(JNIEnv *env, jclass clazz, jboolean on) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeSetNoRenderNode(JNIEnv *env, jclass clazz, jboolean on) { g_no_render_node = on ? 1 : 0; if (on) __android_log_print(ANDROID_LOG_INFO, TAG, "debug: advertising no DRM device (main device 0:0)"); } @@ -344,27 +344,27 @@ Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSetNoRenderNode(JNIE * without this SurfaceFlinger never sees the game's cadence. 0 = clear the vote. Any thread, any * time; the compositor applies it with its next layer transaction and logs the change. */ JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSetLayerFrameRate(JNIEnv *env, jclass clazz, jfloat hz) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeSetLayerFrameRate(JNIEnv *env, jclass clazz, jfloat hz) { (void)env; (void)clazz; sc_layer_set_frame_rate((float)hz); } /* The panel's refresh rate (Hz) for the advertised wl_output mode. Set before the compositor starts. */ JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSetOutputRefreshRate(JNIEnv *env, jclass clazz, jfloat hz) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeSetOutputRefreshRate(JNIEnv *env, jclass clazz, jfloat hz) { g_output_refresh_mhz = hz > 1.0f ? (int)(hz * 1000.0f + 0.5f) : 0; } /* The container's screen size for the advertised wl_output mode. Set before the compositor starts. */ extern void vkp_reset_first_frame(void); JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeResetFirstFrame(JNIEnv *env, jclass clazz) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeResetFirstFrame(JNIEnv *env, jclass clazz) { (void)env; (void)clazz; vkp_reset_first_frame(); } JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSetOutputSize(JNIEnv *env, jclass clazz, jint w, jint h) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeSetOutputSize(JNIEnv *env, jclass clazz, jint w, jint h) { g_output_w = w > 0 ? w : 0; g_output_h = h > 0 ? h : 0; } @@ -372,7 +372,7 @@ Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSetOutputSize(JNIEnv /* Fullscreen mode + screen alignment (Container.FULLSCREEN_* / ALIGN_* values): how the scene is * fitted onto the output. Any thread, any time; the next frame uses it. */ JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSetScaleMode(JNIEnv *env, jclass clazz, jint mode, jint alignment) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeSetScaleMode(JNIEnv *env, jclass clazz, jint mode, jint alignment) { vk_present_set_scale_mode(mode, alignment); __android_log_print(ANDROID_LOG_INFO, TAG, "scale mode %d alignment %d", mode, alignment); } @@ -383,38 +383,38 @@ Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSetScaleMode(JNIEnv /* Scaling mode: 0=None 1=Linear 2=Nearest 3=SGSR 4=FSR 5=FSR Fit 6=Sharpen 7=NIS 8=SGSR HQ. */ JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSetUpscaler(JNIEnv *env, jclass clazz, jint mode) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeSetUpscaler(JNIEnv *env, jclass clazz, jint mode) { vkp_effects_set_scaling(mode); } /* The upscaler's sharpness slider 0..100 (RCAS lobe / SGSR edge / NIS sharpness). */ JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSetUpscaleSharpness(JNIEnv *env, jclass clazz, jint sharpness) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeSetUpscaleSharpness(JNIEnv *env, jclass clazz, jint sharpness) { vkp_effects_set_upscale_sharpness(sharpness); } /* AMD CAS sharpen toggle + level 0..100 (0 = pass off). */ JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSetCas(JNIEnv *env, jclass clazz, jboolean enabled, jint sharpness) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeSetCas(JNIEnv *env, jclass clazz, jboolean enabled, jint sharpness) { vkp_effects_set_cas(enabled ? 1 : 0, sharpness); } /* Fake-HDR toggle. */ JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSetHdr(JNIEnv *env, jclass clazz, jboolean enabled) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeSetHdr(JNIEnv *env, jclass clazz, jboolean enabled) { vkp_effects_set_hdr(enabled ? 1 : 0); } /* Terminal debanding toggle + strength 0..200 (100 = 1 LSB). */ JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSetDeband(JNIEnv *env, jclass clazz, jboolean enabled, jint strength) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeSetDeband(JNIEnv *env, jclass clazz, jboolean enabled, jint strength) { vkp_effects_set_deband(enabled ? 1 : 0, strength); } /* Colour grade (slider units: brightness/contrast -100..100, gamma 0.5..3, saturation 0..200 %) and the * FXAA / Toon / CRT / NTSC toggles - VulkanRenderer.setScreenEffects. */ JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSetScreenEffects(JNIEnv *env, jclass clazz, jfloat brightness, +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeSetScreenEffects(JNIEnv *env, jclass clazz, jfloat brightness, jfloat contrast, jfloat gamma, jfloat saturation, jboolean fxaa, jboolean toon, jboolean crt, jboolean ntsc) { vkp_effects_set_screen(brightness, contrast, gamma, saturation, fxaa ? 1 : 0, toon ? 1 : 0, crt ? 1 : 0, ntsc ? 1 : 0); } @@ -423,7 +423,7 @@ Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSetScreenEffects(JNI * framework (the panel's HDR capability) rather than in the compositor. banner_log() mirrors to * logcat and appends to the session file when one is open, so this is safe at any point. */ JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeLogDisplay(JNIEnv *env, jclass clazz, jstring message) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeLogDisplay(JNIEnv *env, jclass clazz, jstring message) { char *s = dup_jstr(env, message); if (s) banner_log("display", "%s", s); free(s); @@ -432,7 +432,7 @@ Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeLogDisplay(JNIEnv *e /* The same under the "perf" area: facts the app knows about the session's performance setup (the CPU * cores the game is pinned to, say). Same safety as nativeLogDisplay. */ JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeLogPerf(JNIEnv *env, jclass clazz, jstring message) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeLogPerf(JNIEnv *env, jclass clazz, jstring message) { char *s = dup_jstr(env, message); if (s) banner_log("perf", "%s", s); free(s); @@ -442,7 +442,7 @@ Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeLogPerf(JNIEnv *env, /* The opt-in: mode 0 off, 1 BANNER_WAYLAND_HDR=1, 2 =force (testing). Before the compositor starts. */ JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSetHdrRequest(JNIEnv *env, jclass clazz, jint mode, +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeSetHdrRequest(JNIEnv *env, jclass clazz, jint mode, jstring source, jboolean dxvkHdr, jboolean zeroCopyForced) { char *s = dup_jstr(env, source); banner_color_set_request((int)mode, s, dxvkHdr ? 1 : 0, zeroCopyForced ? 1 : 0); @@ -451,7 +451,7 @@ Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSetHdrRequest(JNIEnv /* The game's display as android.view.Display reports it (before the start; again on every change). */ JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSetHdrDisplay(JNIEnv *env, jclass clazz, jint id, jstring name, +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeSetHdrDisplay(JNIEnv *env, jclass clazz, jint id, jstring name, jstring formats, jboolean hdr10, jfloat maxLum, jfloat maxAvg, jfloat minLum, jboolean ratioAvailable, jfloat ratio, jint api) { char *n = dup_jstr(env, name), *f = dup_jstr(env, formats); @@ -462,38 +462,38 @@ Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSetHdrDisplay(JNIEnv /* One Display.getHdrSdrRatio() reading (listener = from the display's ratio listener). Any thread. */ JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeHdrSdrRatioSample(JNIEnv *env, jclass clazz, jfloat ratio, +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeHdrSdrRatioSample(JNIEnv *env, jclass clazz, jfloat ratio, jboolean listener) { banner_color_ratio_sample((float)ratio, listener ? 1 : 0); } /* ms since an HDR frame last reached a display layer, -1 = never this session. Any thread. */ JNIEXPORT jint JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeHdrLastFrameAgeMs(JNIEnv *env, jclass clazz) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeHdrLastFrameAgeMs(JNIEnv *env, jclass clazz) { return (jint)banner_color_last_frame_age_ms(); } /* -1 = not decided yet, 0 = closed, 1 = open. Any thread. */ JNIEXPORT jint JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeHdrGateState(JNIEnv *env, jclass clazz) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeHdrGateState(JNIEnv *env, jclass clazz) { return (jint)banner_color_gate_state(); } /* The session is ending: the "HDR on screen: ..." summary line. Any thread, once. */ JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeHdrSessionEnd(JNIEnv *env, jclass clazz) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeHdrSessionEnd(JNIEnv *env, jclass clazz) { banner_color_session_end(); } /* HDR frames really on screen right now (the HUD badge). Any thread. */ JNIEXPORT jboolean JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeHdrOnScreen(JNIEnv *env, jclass clazz) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeHdrOnScreen(JNIEnv *env, jclass clazz) { return banner_color_hdr_on_screen() ? JNI_TRUE : JNI_FALSE; } /* One "color" line in the session log from Java. */ JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeLogColor(JNIEnv *env, jclass clazz, jstring message) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeLogColor(JNIEnv *env, jclass clazz, jstring message) { char *s = dup_jstr(env, message); if (s) banner_log("color", "%s", s); free(s); @@ -502,7 +502,7 @@ Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeLogColor(JNIEnv *env /* One line in the session log under an area Java names ("gpu", "nvapi"): launch facts the app decides. * The area is the log's 9-character column; an empty one reads "app". */ JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeLog(JNIEnv *env, jclass clazz, jstring area, jstring message) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeLog(JNIEnv *env, jclass clazz, jstring area, jstring message) { char *a = dup_jstr(env, area), *s = dup_jstr(env, message); if (s) banner_log(a && a[0] ? a : "app", "%s", s); free(a); @@ -511,26 +511,26 @@ Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeLog(JNIEnv *env, jcl /* SDR content's level inside an HDR picture, in nits (default 203). */ JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSetHdrSdrWhite(JNIEnv *env, jclass clazz, jfloat nits) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeSetHdrSdrWhite(JNIEnv *env, jclass clazz, jfloat nits) { banner_color_set_sdr_white((float)nits); } /* The drawer's live HDR output switch: on = HDR frames as HDR, off = the same frames tone-mapped to SDR. * Applied on the compositor thread (logged there, with a redraw). */ JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSetHdrOutput(JNIEnv *env, jclass clazz, jboolean on) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeSetHdrOutput(JNIEnv *env, jclass clazz, jboolean on) { if (banner_get_display()) banner_host_hdr_output(on ? 1 : 0); else banner_color_set_output(on ? 1 : 0); /* no compositor thread yet: nothing is drawing either */ } JNIEXPORT jboolean JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeHdrOutput(JNIEnv *env, jclass clazz) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeHdrOutput(JNIEnv *env, jclass clazz) { return banner_color_output() ? JNI_TRUE : JNI_FALSE; } /* Device evidence for the HDR lines: thermal status + headroom, brightness + mode. */ JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeHdrEnvSample(JNIEnv *env, jclass clazz, jint thermal, +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeHdrEnvSample(JNIEnv *env, jclass clazz, jint thermal, jfloat headroom, jint brightness, jint mode) { banner_color_env_sample((int)thermal, (float)headroom != (float)headroom ? -1.0f : (float)headroom, (int)brightness, (int)mode); @@ -538,18 +538,18 @@ Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeHdrEnvSample(JNIEnv /* Display.getHighestHdrSdrRatio() (Android 16+), <= 0 = not reported. */ JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSetHdrHighestRatio(JNIEnv *env, jclass clazz, jfloat ratio) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeSetHdrHighestRatio(JNIEnv *env, jclass clazz, jfloat ratio) { banner_color_set_highest_ratio((float)ratio == (float)ratio ? (float)ratio : -1.0f); } /* The HDR headroom the screen surface should ask for (HDR10 swapchain frames in the last 1.5 s), 0 = none. */ JNIEXPORT jfloat JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeHdrScreenHeadroom(JNIEnv *env, jclass clazz) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeHdrScreenHeadroom(JNIEnv *env, jclass clazz) { return (jfloat)banner_color_screen_headroom(NULL, 0); } JNIEXPORT jstring JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeHdrScreenHeadroomWhy(JNIEnv *env, jclass clazz) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeHdrScreenHeadroomWhy(JNIEnv *env, jclass clazz) { char why[200]; banner_color_screen_headroom(why, sizeof(why)); return (*env)->NewStringUTF(env, why); @@ -557,25 +557,25 @@ Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeHdrScreenHeadroomWhy /* The app's screen-surface request, for the no-headroom lines: > 0 asked, 0 cleared, -1 not possible. */ JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeHdrNoteHeadroomRequest(JNIEnv *env, jclass clazz, jfloat ratio) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeHdrNoteHeadroomRequest(JNIEnv *env, jclass clazz, jfloat ratio) { banner_color_note_headroom_request((float)ratio); } /* 0 none, 1 HDR frames on screen with headroom, 2 HDR frames on screen without headroom for 5 s+. */ JNIEXPORT jint JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeHdrState(JNIEnv *env, jclass clazz) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeHdrState(JNIEnv *env, jclass clazz) { return (jint)banner_color_hdr_state(); } /* An HDR game's frames were shown tone-mapped to SDR in the last 1.5 s (the drawer's status line). */ JNIEXPORT jboolean JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeHdrToneMappedOnScreen(JNIEnv *env, jclass clazz) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeHdrToneMappedOnScreen(JNIEnv *env, jclass clazz) { return banner_color_tonemapped_on_screen() ? JNI_TRUE : JNI_FALSE; } /* The Look the controls currently match (null = Custom) - only named in the session log. */ JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSetLookName(JNIEnv *env, jclass clazz, jstring name) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeSetLookName(JNIEnv *env, jclass clazz, jstring name) { char *s = dup_jstr(env, name); vkp_effects_set_look(s); free(s); @@ -583,14 +583,14 @@ Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSetLookName(JNIEnv * /* The in-game FPS limiter: frames per second, 0 = unlimited. */ JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSetFpsLimit(JNIEnv *env, jclass clazz, jint fps) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeSetFpsLimit(JNIEnv *env, jclass clazz, jint fps) { g_fps_limit = fps > 0 ? fps : 0; __android_log_print(ANDROID_LOG_INFO, TAG, "fps limit %d", fps); } /* Swap/clear the output window (e.g. SurfaceView recreated/destroyed). */ JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSetSurface( +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeSetSurface( JNIEnv *env, jclass clazz, jobject surface) { if (surface) { vk_present_set_window(ANativeWindow_fromSurface(env, surface)); @@ -616,7 +616,7 @@ static char *dup_bytes(JNIEnv *env, jbyteArray arr, int *len) { /* Android's clipboard text becomes the guest's selection (empty/null = clear). */ JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSetClipboardText(JNIEnv *env, jclass clazz, jbyteArray utf8) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeSetClipboardText(JNIEnv *env, jclass clazz, jbyteArray utf8) { int len; char *buf = dup_bytes(env, utf8, &len); banner_host_clipboard_text(buf ? buf : "", len); @@ -625,7 +625,7 @@ Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeSetClipboardText(JNI /* Soft-keyboard text committed to the program accepting text input. */ JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeTextInputCommit(JNIEnv *env, jclass clazz, jbyteArray utf8) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeTextInputCommit(JNIEnv *env, jclass clazz, jbyteArray utf8) { int len; char *buf = dup_bytes(env, utf8, &len); if (buf && len) banner_host_text_commit(buf, len); @@ -634,7 +634,7 @@ Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeTextInputCommit(JNIE /* Composing (pre-edit) text; cursorBegin/cursorEnd are character indexes into it, -1 = end. */ JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeTextInputPreedit(JNIEnv *env, jclass clazz, jbyteArray utf8, +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeTextInputPreedit(JNIEnv *env, jclass clazz, jbyteArray utf8, jint cursorBegin, jint cursorEnd) { int len; char *buf = dup_bytes(env, utf8, &len); @@ -644,6 +644,6 @@ Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeTextInputPreedit(JNI /* The IME deleted characters around the caret. */ JNIEXPORT void JNICALL -Java_com_steamdeck_launcher_wayland_WaylandCompositor_nativeTextInputDelete(JNIEnv *env, jclass clazz, jint before, jint after) { +Java_com_droiddeck_launcher_wayland_WaylandCompositor_nativeTextInputDelete(JNIEnv *env, jclass clazz, jint before, jint after) { banner_host_text_delete(before, after); } diff --git a/app/src/main/java/com/steamdeck/launcher/App.kt b/app/src/main/java/com/droiddeck/launcher/App.kt similarity index 75% rename from app/src/main/java/com/steamdeck/launcher/App.kt rename to app/src/main/java/com/droiddeck/launcher/App.kt index 36c3ca3c8..e1764bc57 100644 --- a/app/src/main/java/com/steamdeck/launcher/App.kt +++ b/app/src/main/java/com/droiddeck/launcher/App.kt @@ -1,7 +1,7 @@ -package com.steamdeck.launcher +package com.droiddeck.launcher import android.app.Application -import com.steamdeck.launcher.session.CrashHandler +import com.droiddeck.launcher.session.CrashHandler /** Process-wide setup: the crash handler, so a session's folder is finished even when we die. */ class App : Application() { diff --git a/app/src/main/java/com/steamdeck/launcher/HomeActivity.kt b/app/src/main/java/com/droiddeck/launcher/HomeActivity.kt similarity index 91% rename from app/src/main/java/com/steamdeck/launcher/HomeActivity.kt rename to app/src/main/java/com/droiddeck/launcher/HomeActivity.kt index 8befa5196..14921e1b3 100644 --- a/app/src/main/java/com/steamdeck/launcher/HomeActivity.kt +++ b/app/src/main/java/com/droiddeck/launcher/HomeActivity.kt @@ -1,9 +1,9 @@ -package com.steamdeck.launcher +package com.droiddeck.launcher import android.app.Activity import android.content.Intent import android.os.Bundle -import com.steamdeck.launcher.session.SessionService +import com.droiddeck.launcher.session.SessionService /** Receives the system Home launch and routes it without consuming KEYCODE_HOME. */ class HomeActivity : Activity() { diff --git a/app/src/main/java/com/steamdeck/launcher/HomeApp.kt b/app/src/main/java/com/droiddeck/launcher/HomeApp.kt similarity index 96% rename from app/src/main/java/com/steamdeck/launcher/HomeApp.kt rename to app/src/main/java/com/droiddeck/launcher/HomeApp.kt index 9a80e0a3c..8be97a55c 100644 --- a/app/src/main/java/com/steamdeck/launcher/HomeApp.kt +++ b/app/src/main/java/com/droiddeck/launcher/HomeApp.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher +package com.droiddeck.launcher import android.app.role.RoleManager import android.graphics.Bitmap @@ -9,8 +9,8 @@ import android.content.pm.PackageManager import android.os.Build import android.provider.Settings import androidx.core.graphics.drawable.toBitmap -import com.steamdeck.launcher.session.SessionService -import com.steamdeck.launcher.session.SessionState +import com.droiddeck.launcher.session.SessionService +import com.droiddeck.launcher.session.SessionState /** Android Home role and the launchable Android apps shown by the in-session app drawer. */ object HomeApp { diff --git a/app/src/main/java/com/steamdeck/launcher/MainActivity.kt b/app/src/main/java/com/droiddeck/launcher/MainActivity.kt similarity index 94% rename from app/src/main/java/com/steamdeck/launcher/MainActivity.kt rename to app/src/main/java/com/droiddeck/launcher/MainActivity.kt index 1fc000a14..39166a984 100644 --- a/app/src/main/java/com/steamdeck/launcher/MainActivity.kt +++ b/app/src/main/java/com/droiddeck/launcher/MainActivity.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher +package com.droiddeck.launcher import android.Manifest import android.content.Intent @@ -18,42 +18,42 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue -import com.steamdeck.launcher.gpu.FrameGen -import com.steamdeck.launcher.gpu.LinuxVulkanDriver -import com.steamdeck.launcher.gpu.LinuxVulkanDriverManager -import com.steamdeck.launcher.gpu.TurnipDriver -import com.steamdeck.launcher.gpu.TurnipReleases -import com.steamdeck.launcher.gpu.LsfgNative -import com.steamdeck.launcher.runtime.LinuxRuntime -import com.steamdeck.launcher.runtime.DesktopCatalog -import com.steamdeck.launcher.runtime.LinuxRuntimeInstaller -import com.steamdeck.launcher.session.SessionService -import com.steamdeck.launcher.ui.PackageRow -import com.steamdeck.launcher.session.OfflineMode -import com.steamdeck.launcher.session.ProtonExtras -import com.steamdeck.launcher.session.SessionLogShare -import com.steamdeck.launcher.session.SessionPrefs -import com.steamdeck.launcher.ui.ProtonPage -import com.steamdeck.launcher.ui.ProtonRow -import com.steamdeck.launcher.core.CpuCores -import com.steamdeck.launcher.ui.CoreRow -import com.steamdeck.launcher.ui.PerformancePage -import com.steamdeck.launcher.ui.ModeSettingsPage -import com.steamdeck.launcher.ui.ModeSettings -import com.steamdeck.launcher.ui.ModeSettingsActions -import com.steamdeck.launcher.ui.DriverRow -import com.steamdeck.launcher.ui.ConfirmDialog -import com.steamdeck.launcher.ui.CreditsDialog -import com.steamdeck.launcher.ui.FrontEndScreen -import com.steamdeck.launcher.ui.FrontEndState -import com.steamdeck.launcher.ui.FrontEndActions -import com.steamdeck.launcher.frontend.Library -import com.steamdeck.launcher.ui.SteamDeckTheme -import com.steamdeck.launcher.ui.RomsDialog -import com.steamdeck.launcher.files.InAppFilePicker -import com.steamdeck.launcher.session.SessionArtifacts -import com.steamdeck.launcher.session.SessionState -import com.steamdeck.launcher.session.GameStorage +import com.droiddeck.launcher.gpu.FrameGen +import com.droiddeck.launcher.gpu.LinuxVulkanDriver +import com.droiddeck.launcher.gpu.LinuxVulkanDriverManager +import com.droiddeck.launcher.gpu.TurnipDriver +import com.droiddeck.launcher.gpu.TurnipReleases +import com.droiddeck.launcher.gpu.LsfgNative +import com.droiddeck.launcher.runtime.LinuxRuntime +import com.droiddeck.launcher.runtime.DesktopCatalog +import com.droiddeck.launcher.runtime.LinuxRuntimeInstaller +import com.droiddeck.launcher.session.SessionService +import com.droiddeck.launcher.ui.PackageRow +import com.droiddeck.launcher.session.OfflineMode +import com.droiddeck.launcher.session.ProtonExtras +import com.droiddeck.launcher.session.SessionLogShare +import com.droiddeck.launcher.session.SessionPrefs +import com.droiddeck.launcher.ui.ProtonPage +import com.droiddeck.launcher.ui.ProtonRow +import com.droiddeck.launcher.core.CpuCores +import com.droiddeck.launcher.ui.CoreRow +import com.droiddeck.launcher.ui.PerformancePage +import com.droiddeck.launcher.ui.ModeSettingsPage +import com.droiddeck.launcher.ui.ModeSettings +import com.droiddeck.launcher.ui.ModeSettingsActions +import com.droiddeck.launcher.ui.DriverRow +import com.droiddeck.launcher.ui.ConfirmDialog +import com.droiddeck.launcher.ui.CreditsDialog +import com.droiddeck.launcher.ui.FrontEndScreen +import com.droiddeck.launcher.ui.FrontEndState +import com.droiddeck.launcher.ui.FrontEndActions +import com.droiddeck.launcher.frontend.Library +import com.droiddeck.launcher.ui.DroidDeckTheme +import com.droiddeck.launcher.ui.RomsDialog +import com.droiddeck.launcher.files.InAppFilePicker +import com.droiddeck.launcher.session.SessionArtifacts +import com.droiddeck.launcher.session.SessionState +import com.droiddeck.launcher.session.GameStorage /** * The whole app outside a session: is the runtime installed, is there a newer one, frame @@ -107,8 +107,8 @@ class MainActivity : ComponentActivity() { private var mic by mutableStateOf(false) private var linuxRows by mutableStateOf>(emptyList()) /** The latest Banners-Turnip release as each driver menu offers it (see [refreshReleaseRows]). */ - private var linuxDownloads by mutableStateOf>(emptyList()) - private var androidDownloads by mutableStateOf>(emptyList()) + private var linuxDownloads by mutableStateOf>(emptyList()) + private var androidDownloads by mutableStateOf>(emptyList()) private var releaseStatus by mutableStateOf("Not checked yet - tap refresh to look for new drivers") private var releaseChecking by mutableStateOf(false) private var canRestoreBundled by mutableStateOf(false) @@ -149,7 +149,7 @@ class MainActivity : ComponentActivity() { private var addedGamesDirs by mutableStateOf>(emptyList()) private var addedGamesArt by mutableStateOf(true) @Volatile private var artFetchRunning = false - private var addedGames by mutableStateOf>(emptyList()) + private var addedGames by mutableStateOf>(emptyList()) private val pickRomsDir = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { r -> if (r.resultCode == RESULT_OK) InAppFilePicker.pickedPath(r.data)?.let { path -> SessionPrefs.setRomsDir(this, path) @@ -211,7 +211,7 @@ class MainActivity : ComponentActivity() { super.onCreate(savedInstanceState) theme = SessionPrefs.theme(this) setContent { - SteamDeckTheme(theme) { + DroidDeckTheme(theme) { val sm = settingsMode val page: (@Composable () -> Unit)? = when { sm != null -> { { ModeSettingsHost(sm) } } @@ -277,7 +277,7 @@ class MainActivity : ComponentActivity() { onProtons = { openProtons() }, onPerformance = { refreshCores(); showProtons = false; showPerformance = true }, onRoms = { showRoms = true }, - onFiles = { startActivity(Intent(this, com.steamdeck.launcher.files.FileManagerActivity::class.java)) }, + onFiles = { startActivity(Intent(this, com.droiddeck.launcher.files.FileManagerActivity::class.java)) }, onLogs = { SessionPrefs.setLogsEnabled(this, !SessionPrefs.logsEnabled(this)) logsEnabled = SessionPrefs.logsEnabled(this) @@ -315,7 +315,7 @@ class MainActivity : ComponentActivity() { showNonAdreno?.let { release -> ConfirmDialog( title = "Not an Adreno GPU", - text = "Turnip supports Adreno GPUs. On ${com.steamdeck.launcher.core.DeviceSupport.gpuName()}, Steam may show a black screen. Download: ${"%.0f".format(release.size / 1e6)} MB.", + text = "Turnip supports Adreno GPUs. On ${com.droiddeck.launcher.core.DeviceSupport.gpuName()}, Steam may show a black screen. Download: ${"%.0f".format(release.size / 1e6)} MB.", confirm = "Install anyway", onConfirm = { showNonAdreno = null; install(release) }, onDismiss = { showNonAdreno = null }, @@ -607,8 +607,8 @@ class MainActivity : ComponentActivity() { /** The added games as the settings page lists them; a scan of the folder, on this thread (one level, small). */ private fun refreshAddedGames() { - addedGames = com.steamdeck.launcher.frontend.AddedGames.scan(this).map { g -> - com.steamdeck.launcher.ui.AddedGameRow(g.folder.path, g.folderName(), g.exe.path, g.exe.name, g.candidates.map { c -> c.path to c.name }.distinctBy { it.first }) + addedGames = com.droiddeck.launcher.frontend.AddedGames.scan(this).map { g -> + com.droiddeck.launcher.ui.AddedGameRow(g.folder.path, g.folderName(), g.exe.path, g.exe.name, g.candidates.map { c -> c.path to c.name }.distinctBy { it.first }) } // Art the games do not have yet, from Steam's store, off the main thread; the rail // redraws when something arrives. @@ -616,8 +616,8 @@ class MainActivity : ComponentActivity() { artFetchRunning = true Thread({ try { - val games = com.steamdeck.launcher.frontend.AddedGames.scan(this) - if (com.steamdeck.launcher.frontend.AddedGameArt.fetchMissing(this, games)) ui.post { refresh() } + val games = com.droiddeck.launcher.frontend.AddedGames.scan(this) + if (com.droiddeck.launcher.frontend.AddedGameArt.fetchMissing(this, games)) ui.post { refresh() } } finally { artFetchRunning = false } @@ -637,7 +637,7 @@ class MainActivity : ComponentActivity() { refreshAddedGames() shapeMode = SessionPrefs.shapeMode(this) hdrOn = SessionPrefs.hdr(this, mode) - hdrReason = com.steamdeck.launcher.wayland.HdrSupport.probe(this).reason + hdrReason = com.droiddeck.launcher.wayland.HdrSupport.probe(this).reason touchMode = SessionPrefs.touchMode(this) suspendPolicy = SessionPrefs.suspendPolicy(this, mode) oscMode = SessionPrefs.oscMode(this) @@ -753,7 +753,7 @@ class MainActivity : ComponentActivity() { .filter { a -> TurnipReleases.installedId(this, a) { id -> if (linux) lm.isInstalled(id) else td.isInstalled(id) } == null } .map { a -> val mb = "%.1f MB".format(a.size / 1_048_576.0) - com.steamdeck.launcher.ui.DownloadRow(a.name, "${a.source} ${a.tag}", "${a.label} · $mb", releaseProgress[a.name]) + com.droiddeck.launcher.ui.DownloadRow(a.name, "${a.source} ${a.tag}", "${a.label} · $mb", releaseProgress[a.name]) } linuxDownloads = rows(linux = true) androidDownloads = rows(linux = false) @@ -815,7 +815,7 @@ class MainActivity : ComponentActivity() { Log.w(TAG, "release driver download", e) "Download failed: ${e.message}" } finally { - file?.let { com.steamdeck.launcher.core.FileUtils.delete(it) } + file?.let { com.droiddeck.launcher.core.FileUtils.delete(it) } } ui.post { releaseProgress.remove(assetName) @@ -880,8 +880,8 @@ class MainActivity : ComponentActivity() { } else null // The libraries, off the main thread: manifests and a folder scan. Thread({ - val games = if (ready) Library.steamGames(this) + com.steamdeck.launcher.frontend.AddedGames.scan(this).map { g -> - com.steamdeck.launcher.frontend.AddedGameArt.resolve(this, g).let { art -> Library.SteamGame(g.appId.toInt(), g.name, art.portrait ?: art.header, "added", g.gameId) } + val games = if (ready) Library.steamGames(this) + com.droiddeck.launcher.frontend.AddedGames.scan(this).map { g -> + com.droiddeck.launcher.frontend.AddedGameArt.resolve(this, g).let { art -> Library.SteamGame(g.appId.toInt(), g.name, art.portrait ?: art.header, "added", g.gameId) } } else emptyList() val emus = Library.emulators(this) { id -> DesktopCatalog.installed(this, id) != null } ui.post { steamGames = games; emulatorList = emus } @@ -903,13 +903,13 @@ class MainActivity : ComponentActivity() { // The runtime draws with Turnip, an Adreno driver: on Mali, Xclipse or PowerVR the // compositor gets no usable Vulkan device and a session is sound over a black screen. // Said before the download, not after it; the user may still go ahead. - if (installed == null && !com.steamdeck.launcher.core.DeviceSupport.adreno()) { showNonAdreno = release; return } + if (installed == null && !com.droiddeck.launcher.core.DeviceSupport.adreno()) { showNonAdreno = release; return } install(release) } /** Starts a session; with no runtime on a non-Adreno, the same warning Setup gives comes first, before any download. */ private fun startSession(intent: Intent) { - val warn = installed == null && !com.steamdeck.launcher.core.DeviceSupport.adreno() + val warn = installed == null && !com.droiddeck.launcher.core.DeviceSupport.adreno() if (warn && available != null) showNonAdreno = available else startActivity(intent) } diff --git a/app/src/main/java/com/steamdeck/launcher/SessionActivity.kt b/app/src/main/java/com/droiddeck/launcher/SessionActivity.kt similarity index 95% rename from app/src/main/java/com/steamdeck/launcher/SessionActivity.kt rename to app/src/main/java/com/droiddeck/launcher/SessionActivity.kt index 72cc3e36f..83d940a16 100644 --- a/app/src/main/java/com/steamdeck/launcher/SessionActivity.kt +++ b/app/src/main/java/com/droiddeck/launcher/SessionActivity.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher +package com.droiddeck.launcher import android.hardware.input.InputManager import android.hardware.display.DisplayManager @@ -25,38 +25,38 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.platform.ComposeView -import com.steamdeck.launcher.core.FileUtils -import com.steamdeck.launcher.gpu.FrameGen -import com.steamdeck.launcher.gpu.LsfgNative -import com.steamdeck.launcher.gpu.TurnipDriver -import com.steamdeck.launcher.input.EvdevKeys -import com.steamdeck.launcher.input.KeyboardHost -import com.steamdeck.launcher.input.OnScreenControls -import com.steamdeck.launcher.input.PadBridge -import com.steamdeck.launcher.input.PointerGestures -import com.steamdeck.launcher.input.SecondScreenDisplay -import com.steamdeck.launcher.input.SecondScreenMode -import com.steamdeck.launcher.input.TouchpadGestures -import com.steamdeck.launcher.runtime.LinuxRuntime -import com.steamdeck.launcher.session.LoadingState -import com.steamdeck.launcher.session.PerfHints -import com.steamdeck.launcher.session.PerfHud -import com.steamdeck.launcher.session.PerfMode -import com.steamdeck.launcher.session.SessionPrefs -import com.steamdeck.launcher.session.SessionPaths -import com.steamdeck.launcher.wayland.HdrSupport -import com.steamdeck.launcher.session.SessionService -import com.steamdeck.launcher.session.SessionState -import com.steamdeck.launcher.ui.CursorOverlay -import com.steamdeck.launcher.ui.DrawerActions -import com.steamdeck.launcher.ui.HudText -import com.steamdeck.launcher.ui.LoadingOverlay -import com.steamdeck.launcher.ui.SessionDrawer -import com.steamdeck.launcher.ui.SessionPausedOverlay -import com.steamdeck.launcher.ui.SecondScreenPresentation -import com.steamdeck.launcher.ui.SteamDeckTheme -import com.steamdeck.launcher.wayland.CompositorHost -import com.steamdeck.launcher.wayland.WaylandCompositor +import com.droiddeck.launcher.core.FileUtils +import com.droiddeck.launcher.gpu.FrameGen +import com.droiddeck.launcher.gpu.LsfgNative +import com.droiddeck.launcher.gpu.TurnipDriver +import com.droiddeck.launcher.input.EvdevKeys +import com.droiddeck.launcher.input.KeyboardHost +import com.droiddeck.launcher.input.OnScreenControls +import com.droiddeck.launcher.input.PadBridge +import com.droiddeck.launcher.input.PointerGestures +import com.droiddeck.launcher.input.SecondScreenDisplay +import com.droiddeck.launcher.input.SecondScreenMode +import com.droiddeck.launcher.input.TouchpadGestures +import com.droiddeck.launcher.runtime.LinuxRuntime +import com.droiddeck.launcher.session.LoadingState +import com.droiddeck.launcher.session.PerfHints +import com.droiddeck.launcher.session.PerfHud +import com.droiddeck.launcher.session.PerfMode +import com.droiddeck.launcher.session.SessionPrefs +import com.droiddeck.launcher.session.SessionPaths +import com.droiddeck.launcher.wayland.HdrSupport +import com.droiddeck.launcher.session.SessionService +import com.droiddeck.launcher.session.SessionState +import com.droiddeck.launcher.ui.CursorOverlay +import com.droiddeck.launcher.ui.DrawerActions +import com.droiddeck.launcher.ui.HudText +import com.droiddeck.launcher.ui.LoadingOverlay +import com.droiddeck.launcher.ui.SessionDrawer +import com.droiddeck.launcher.ui.SessionPausedOverlay +import com.droiddeck.launcher.ui.SecondScreenPresentation +import com.droiddeck.launcher.ui.DroidDeckTheme +import com.droiddeck.launcher.wayland.CompositorHost +import com.droiddeck.launcher.wayland.WaylandCompositor import java.io.File /** @@ -155,9 +155,9 @@ class SessionActivity : ComponentActivity(), SurfaceHolder.Callback { loading = LoadingState(this) if (!SessionState.running) { - val needRuntime = com.steamdeck.launcher.runtime.LinuxRuntimeInstaller.installedVersion(this) == null + val needRuntime = com.droiddeck.launcher.runtime.LinuxRuntimeInstaller.installedVersion(this) == null val needDesktop = intent.getStringExtra(SessionService.EXTRA_MODE) == SessionService.MODE_DESKTOP && - !com.steamdeck.launcher.runtime.DesktopCatalog.desktopInstalled(this) + !com.droiddeck.launcher.runtime.DesktopCatalog.desktopInstalled(this) if (needRuntime || needDesktop) installThenStart(needRuntime, needDesktop) } hud = PerfHud(this) @@ -175,7 +175,7 @@ class SessionActivity : ComponentActivity(), SurfaceHolder.Callback { // through to the pad and the game underneath. root.addView(ComposeView(this).apply { setContent { - SteamDeckTheme { + DroidDeckTheme { CursorOverlay(cursorPos, cursorVisible, resources.displayMetrics.density) if (hud.text.isNotEmpty()) HudText(hud.text) if (loading.visible) LoadingOverlay(loading.step, loading.percent, loading.elapsed, loading.hint, loading.ended) @@ -258,9 +258,9 @@ class SessionActivity : ComponentActivity(), SurfaceHolder.Callback { private fun sendSteamGuide() { drawerOpen = false - padBridge?.applyTouch { state -> state.press(com.steamdeck.launcher.input.PadState.GUIDE, true) } + padBridge?.applyTouch { state -> state.press(com.droiddeck.launcher.input.PadState.GUIDE, true) } uiHandler.postDelayed({ - padBridge?.applyTouch { state -> state.press(com.steamdeck.launcher.input.PadState.GUIDE, false) } + padBridge?.applyTouch { state -> state.press(com.droiddeck.launcher.input.PadState.GUIDE, false) } }, 90) } @@ -310,7 +310,7 @@ class SessionActivity : ComponentActivity(), SurfaceHolder.Callback { } /** Reports one package's download on the loading screen: " · 332 of 791 MB", checking, unpacking. */ - private fun progressFor(what: String, mb: Long) = com.steamdeck.launcher.runtime.LinuxRuntimeInstaller.ProgressListener { stage, p -> + private fun progressFor(what: String, mb: Long) = com.droiddeck.launcher.runtime.LinuxRuntimeInstaller.ProgressListener { stage, p -> uiHandler.post { loading.percent = p loading.step = when { @@ -323,9 +323,9 @@ class SessionActivity : ComponentActivity(), SurfaceHolder.Callback { /** Null when the runtime is in, else the loading screen's closing line. */ private fun installRuntime(): String? { - val release = com.steamdeck.launcher.runtime.LinuxRuntimeInstaller.fetchRelease() + val release = com.droiddeck.launcher.runtime.LinuxRuntimeInstaller.fetchRelease() ?: return "Could not reach the runtime catalog. Check the connection and press Play again." - val ok = com.steamdeck.launcher.runtime.LinuxRuntimeInstaller.install(this, release, + val ok = com.droiddeck.launcher.runtime.LinuxRuntimeInstaller.install(this, release, progressFor("the Linux runtime", release.size / 1_000_000)) return if (ok) null else "The Linux runtime did not install. Check the connection and press Play again." } @@ -333,9 +333,9 @@ class SessionActivity : ComponentActivity(), SurfaceHolder.Callback { /** Null when the desktop package is in, else the loading screen's closing line. */ private fun installDesktop(): String? { uiHandler.post { loading.percent = -1; loading.step = "downloading the desktop" } - val entry = com.steamdeck.launcher.runtime.DesktopCatalog.fetch()?.firstOrNull { it.id == "desktop" } + val entry = com.droiddeck.launcher.runtime.DesktopCatalog.fetch()?.firstOrNull { it.id == "desktop" } ?: return "Could not reach the desktop catalog. Check the connection and press Desktop again." - val problem = com.steamdeck.launcher.runtime.DesktopCatalog.install(this, entry, + val problem = com.droiddeck.launcher.runtime.DesktopCatalog.install(this, entry, progressFor("the desktop", entry.size / 1_000_000)) return problem?.let { "The desktop did not install ($it). Check the connection and press Desktop again." } } @@ -757,9 +757,9 @@ class SessionActivity : ComponentActivity(), SurfaceHolder.Callback { sendWheel = { steps -> WaylandCompositor.nativeSendSceneInput(4, steps, 0) }, onSteamMenu = { if (SessionState.mode == SessionService.MODE_STEAM) { - padBridge?.applyTouch { st -> st.press(com.steamdeck.launcher.input.PadState.GUIDE, true) } + padBridge?.applyTouch { st -> st.press(com.droiddeck.launcher.input.PadState.GUIDE, true) } Handler(Looper.getMainLooper()).postDelayed({ - padBridge?.applyTouch { st -> st.press(com.steamdeck.launcher.input.PadState.GUIDE, false) } + padBridge?.applyTouch { st -> st.press(com.droiddeck.launcher.input.PadState.GUIDE, false) } }, 90) } }, @@ -854,9 +854,9 @@ class SessionActivity : ComponentActivity(), SurfaceHolder.Callback { return true } - /** The mode decides which controls appear; `steamdeck-osc` in Downloads still overrides. */ + /** The mode decides which controls appear; `droiddeck-osc` in Downloads still overrides. */ private fun updateOnScreenControls() { - val forced = File(Environment.getExternalStorageDirectory(), "Download/steamdeck-osc") + val forced = File(Environment.getExternalStorageDirectory(), "Download/droiddeck-osc") .takeIf { it.isFile } ?.let { FileUtils.readString(it)?.trim()?.lowercase() } ?: SessionPrefs.oscMode(this) diff --git a/app/src/main/java/com/steamdeck/launcher/audio/DirectAudioRelayComponent.java b/app/src/main/java/com/droiddeck/launcher/audio/DirectAudioRelayComponent.java similarity index 97% rename from app/src/main/java/com/steamdeck/launcher/audio/DirectAudioRelayComponent.java rename to app/src/main/java/com/droiddeck/launcher/audio/DirectAudioRelayComponent.java index 01d6e2152..ad5278117 100644 --- a/app/src/main/java/com/steamdeck/launcher/audio/DirectAudioRelayComponent.java +++ b/app/src/main/java/com/droiddeck/launcher/audio/DirectAudioRelayComponent.java @@ -1,10 +1,10 @@ -package com.steamdeck.launcher.audio; +package com.droiddeck.launcher.audio; import android.os.Process; import android.util.Log; -import com.steamdeck.launcher.core.SessionPart; -import com.steamdeck.launcher.core.HostProcess; +import com.droiddeck.launcher.core.SessionPart; +import com.droiddeck.launcher.core.HostProcess; import java.io.File; import java.util.ArrayList; diff --git a/app/src/main/java/com/steamdeck/launcher/audio/PulseAudioComponent.java b/app/src/main/java/com/droiddeck/launcher/audio/PulseAudioComponent.java similarity index 98% rename from app/src/main/java/com/steamdeck/launcher/audio/PulseAudioComponent.java rename to app/src/main/java/com/droiddeck/launcher/audio/PulseAudioComponent.java index c3b3e5abf..b893e56fe 100644 --- a/app/src/main/java/com/steamdeck/launcher/audio/PulseAudioComponent.java +++ b/app/src/main/java/com/droiddeck/launcher/audio/PulseAudioComponent.java @@ -1,13 +1,13 @@ -package com.steamdeck.launcher.audio; +package com.droiddeck.launcher.audio; import android.content.Context; import android.os.Process; import android.util.Log; -import com.steamdeck.launcher.core.FileUtils; -import com.steamdeck.launcher.core.SessionPart; -import com.steamdeck.launcher.core.HostProcess; -import com.steamdeck.launcher.core.TarZst; +import com.droiddeck.launcher.core.FileUtils; +import com.droiddeck.launcher.core.SessionPart; +import com.droiddeck.launcher.core.HostProcess; +import com.droiddeck.launcher.core.TarZst; import java.io.File; import java.io.InputStream; diff --git a/app/src/main/java/com/steamdeck/launcher/core/CpuCores.kt b/app/src/main/java/com/droiddeck/launcher/core/CpuCores.kt similarity index 97% rename from app/src/main/java/com/steamdeck/launcher/core/CpuCores.kt rename to app/src/main/java/com/droiddeck/launcher/core/CpuCores.kt index 62b04a517..5b0b82209 100644 --- a/app/src/main/java/com/steamdeck/launcher/core/CpuCores.kt +++ b/app/src/main/java/com/droiddeck/launcher/core/CpuCores.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.core +package com.droiddeck.launcher.core import java.io.File diff --git a/app/src/main/java/com/steamdeck/launcher/core/DeviceReport.kt b/app/src/main/java/com/droiddeck/launcher/core/DeviceReport.kt similarity index 91% rename from app/src/main/java/com/steamdeck/launcher/core/DeviceReport.kt rename to app/src/main/java/com/droiddeck/launcher/core/DeviceReport.kt index 50b1edacb..060efb5b9 100644 --- a/app/src/main/java/com/steamdeck/launcher/core/DeviceReport.kt +++ b/app/src/main/java/com/droiddeck/launcher/core/DeviceReport.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.core +package com.droiddeck.launcher.core import android.app.ActivityManager import android.content.Context @@ -7,15 +7,15 @@ import android.os.Environment import android.os.StatFs import android.provider.Settings import android.util.Log -import com.steamdeck.launcher.gpu.LinuxVulkanDriver -import com.steamdeck.launcher.gpu.LinuxVulkanDriverManager -import com.steamdeck.launcher.gpu.TurnipDriver -import com.steamdeck.launcher.runtime.DesktopCatalog -import com.steamdeck.launcher.runtime.LinuxRuntime -import com.steamdeck.launcher.runtime.LinuxRuntimeInstaller -import com.steamdeck.launcher.session.SessionPrefs -import com.steamdeck.launcher.session.SessionService -import com.steamdeck.launcher.session.SessionState +import com.droiddeck.launcher.gpu.LinuxVulkanDriver +import com.droiddeck.launcher.gpu.LinuxVulkanDriverManager +import com.droiddeck.launcher.gpu.TurnipDriver +import com.droiddeck.launcher.runtime.DesktopCatalog +import com.droiddeck.launcher.runtime.LinuxRuntime +import com.droiddeck.launcher.runtime.LinuxRuntimeInstaller +import com.droiddeck.launcher.session.SessionPrefs +import com.droiddeck.launcher.session.SessionService +import com.droiddeck.launcher.session.SessionState import java.io.File import java.text.SimpleDateFormat import java.util.Date @@ -50,7 +50,7 @@ object DeviceReport { b.append(key.padEnd(24)).append(value ?: "unknown").append('\n') } - b.append("SteamDeck session report\n") + b.append("DroidDeck session report\n") b.append("========================\n") k("Written", SimpleDateFormat("yyyy-MM-dd HH:mm:ss zzz", Locale.US).format(Date())) k("Session mode", when (mode) { SessionService.MODE_DESKTOP -> "desktop (labwc/LXQt)"; SessionService.MODE_RUN -> "a program under gamescope"; else -> "Steam client (gamescope)" }) @@ -155,7 +155,7 @@ object DeviceReport { k("Touch mode", SessionPrefs.touchMode(context)) k("Performance HUD", SessionPrefs.hudEnabled(context)) k("Game storage", when (val g = SessionPrefs.gameStorage(context)) { - "" -> "automatic (" + (com.steamdeck.launcher.session.GameStorage.effective(context)?.path ?: "no card present") + ")" + "" -> "automatic (" + (com.droiddeck.launcher.session.GameStorage.effective(context)?.path ?: "no card present") + ")" SessionPrefs.GAME_STORAGE_OFF -> "internal only" else -> g }) @@ -178,9 +178,9 @@ object DeviceReport { }) h("Device switch files in Download") - for (name in listOf("steamdeck-env", "steamdeck-tu-debug", "steamdeck-driver", - "steamdeck-osc", "steamdeck-no-pad", "steamdeck-pad-log", - "steamdeck-no-hud", "steamdeck-wlr-renderer")) { + for (name in listOf("droiddeck-env", "droiddeck-tu-debug", "droiddeck-driver", + "droiddeck-osc", "droiddeck-no-pad", "droiddeck-pad-log", + "droiddeck-no-hud", "droiddeck-wlr-renderer")) { val f = File(Environment.getExternalStorageDirectory(), "Download/$name") if (f.isFile) k(name, FileUtils.readString(f)?.trim()?.replace('\n', ' ')?.ifEmpty { "(present, empty)" } ?: "(present)") } diff --git a/app/src/main/java/com/steamdeck/launcher/core/DeviceSupport.kt b/app/src/main/java/com/droiddeck/launcher/core/DeviceSupport.kt similarity index 96% rename from app/src/main/java/com/steamdeck/launcher/core/DeviceSupport.kt rename to app/src/main/java/com/droiddeck/launcher/core/DeviceSupport.kt index 2c6e12601..179628e0a 100644 --- a/app/src/main/java/com/steamdeck/launcher/core/DeviceSupport.kt +++ b/app/src/main/java/com/droiddeck/launcher/core/DeviceSupport.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.core +package com.droiddeck.launcher.core import android.os.Build import java.io.File diff --git a/app/src/main/java/com/steamdeck/launcher/core/Downloader.java b/app/src/main/java/com/droiddeck/launcher/core/Downloader.java similarity index 97% rename from app/src/main/java/com/steamdeck/launcher/core/Downloader.java rename to app/src/main/java/com/droiddeck/launcher/core/Downloader.java index d711f8e2c..254341221 100644 --- a/app/src/main/java/com/steamdeck/launcher/core/Downloader.java +++ b/app/src/main/java/com/droiddeck/launcher/core/Downloader.java @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.core; +package com.droiddeck.launcher.core; import android.util.Log; @@ -106,7 +106,7 @@ public final class Downloader { connection.setConnectTimeout(TIMEOUT_MS); connection.setReadTimeout(TIMEOUT_MS); connection.setInstanceFollowRedirects(true); - connection.setRequestProperty("User-Agent", "SteamDeck-Android"); + connection.setRequestProperty("User-Agent", "DroidDeck-Android"); return connection; } } diff --git a/app/src/main/java/com/steamdeck/launcher/core/FexPreset.kt b/app/src/main/java/com/droiddeck/launcher/core/FexPreset.kt similarity index 98% rename from app/src/main/java/com/steamdeck/launcher/core/FexPreset.kt rename to app/src/main/java/com/droiddeck/launcher/core/FexPreset.kt index bbdb1a750..e76d02d7b 100644 --- a/app/src/main/java/com/steamdeck/launcher/core/FexPreset.kt +++ b/app/src/main/java/com/droiddeck/launcher/core/FexPreset.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.core +package com.droiddeck.launcher.core /** * FEXCore presets for the x86 games the Steam client launches, Bannerlator's table carried over diff --git a/app/src/main/java/com/steamdeck/launcher/core/FileUtils.java b/app/src/main/java/com/droiddeck/launcher/core/FileUtils.java similarity index 99% rename from app/src/main/java/com/steamdeck/launcher/core/FileUtils.java rename to app/src/main/java/com/droiddeck/launcher/core/FileUtils.java index 92b521e53..42008fb97 100644 --- a/app/src/main/java/com/steamdeck/launcher/core/FileUtils.java +++ b/app/src/main/java/com/droiddeck/launcher/core/FileUtils.java @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.core; +package com.droiddeck.launcher.core; import android.content.Context; import android.system.ErrnoException; diff --git a/app/src/main/java/com/steamdeck/launcher/core/HostEnvironment.kt b/app/src/main/java/com/droiddeck/launcher/core/HostEnvironment.kt similarity index 92% rename from app/src/main/java/com/steamdeck/launcher/core/HostEnvironment.kt rename to app/src/main/java/com/droiddeck/launcher/core/HostEnvironment.kt index dbdccf263..f40c93f82 100644 --- a/app/src/main/java/com/steamdeck/launcher/core/HostEnvironment.kt +++ b/app/src/main/java/com/droiddeck/launcher/core/HostEnvironment.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.core +package com.droiddeck.launcher.core /** The variables a host process is started with, in the order they were set. */ class HostEnvironment { diff --git a/app/src/main/java/com/steamdeck/launcher/core/HostProcess.kt b/app/src/main/java/com/droiddeck/launcher/core/HostProcess.kt similarity index 99% rename from app/src/main/java/com/steamdeck/launcher/core/HostProcess.kt rename to app/src/main/java/com/droiddeck/launcher/core/HostProcess.kt index 411054832..d73352af7 100644 --- a/app/src/main/java/com/steamdeck/launcher/core/HostProcess.kt +++ b/app/src/main/java/com/droiddeck/launcher/core/HostProcess.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.core +package com.droiddeck.launcher.core import android.util.Log import java.io.File diff --git a/app/src/main/java/com/steamdeck/launcher/core/LogRedactor.kt b/app/src/main/java/com/droiddeck/launcher/core/LogRedactor.kt similarity index 99% rename from app/src/main/java/com/steamdeck/launcher/core/LogRedactor.kt rename to app/src/main/java/com/droiddeck/launcher/core/LogRedactor.kt index a4f774173..a44c29fe0 100644 --- a/app/src/main/java/com/steamdeck/launcher/core/LogRedactor.kt +++ b/app/src/main/java/com/droiddeck/launcher/core/LogRedactor.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.core +package com.droiddeck.launcher.core /** * Scrubs credentials out of a log line before it is written somewhere a user will share. diff --git a/app/src/main/java/com/steamdeck/launcher/core/NetworkReport.kt b/app/src/main/java/com/droiddeck/launcher/core/NetworkReport.kt similarity index 98% rename from app/src/main/java/com/steamdeck/launcher/core/NetworkReport.kt rename to app/src/main/java/com/droiddeck/launcher/core/NetworkReport.kt index 0db6ea5ba..9042b7181 100644 --- a/app/src/main/java/com/steamdeck/launcher/core/NetworkReport.kt +++ b/app/src/main/java/com/droiddeck/launcher/core/NetworkReport.kt @@ -1,11 +1,11 @@ -package com.steamdeck.launcher.core +package com.droiddeck.launcher.core import android.content.Context import android.net.ConnectivityManager import android.net.NetworkCapabilities import android.os.Build import android.util.Log -import com.steamdeck.launcher.runtime.LinuxRuntime +import com.droiddeck.launcher.runtime.LinuxRuntime import java.io.File import java.net.Inet4Address import java.net.Inet6Address diff --git a/app/src/main/java/com/steamdeck/launcher/core/SessionLogCapture.kt b/app/src/main/java/com/droiddeck/launcher/core/SessionLogCapture.kt similarity index 99% rename from app/src/main/java/com/steamdeck/launcher/core/SessionLogCapture.kt rename to app/src/main/java/com/droiddeck/launcher/core/SessionLogCapture.kt index 9fa2de7c7..67b924ec2 100644 --- a/app/src/main/java/com/steamdeck/launcher/core/SessionLogCapture.kt +++ b/app/src/main/java/com/droiddeck/launcher/core/SessionLogCapture.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.core +package com.droiddeck.launcher.core import android.os.Process import android.util.Log diff --git a/app/src/main/java/com/steamdeck/launcher/core/SessionPart.java b/app/src/main/java/com/droiddeck/launcher/core/SessionPart.java similarity index 95% rename from app/src/main/java/com/steamdeck/launcher/core/SessionPart.java rename to app/src/main/java/com/droiddeck/launcher/core/SessionPart.java index b65322ee7..86f4380aa 100644 --- a/app/src/main/java/com/steamdeck/launcher/core/SessionPart.java +++ b/app/src/main/java/com/droiddeck/launcher/core/SessionPart.java @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.core; +package com.droiddeck.launcher.core; import android.content.Context; diff --git a/app/src/main/java/com/steamdeck/launcher/core/TarZst.java b/app/src/main/java/com/droiddeck/launcher/core/TarZst.java similarity index 96% rename from app/src/main/java/com/steamdeck/launcher/core/TarZst.java rename to app/src/main/java/com/droiddeck/launcher/core/TarZst.java index f2cbf806b..0f0a71636 100644 --- a/app/src/main/java/com/steamdeck/launcher/core/TarZst.java +++ b/app/src/main/java/com/droiddeck/launcher/core/TarZst.java @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.core; +package com.droiddeck.launcher.core; import android.content.Context; import android.util.Log; @@ -16,7 +16,7 @@ import java.io.OutputStream; /** * The small zstd tarballs that ship inside the apk (the Turnip driver, the PulseAudio modules). * The runtime rootfs is not one of these - it needs hard links and symlinks preserved, which - * {@link com.steamdeck.launcher.runtime.LinuxRuntimeInstaller} handles itself. + * {@link com.droiddeck.launcher.runtime.LinuxRuntimeInstaller} handles itself. */ public final class TarZst { private static final String TAG = "TarZst"; diff --git a/app/src/main/java/com/steamdeck/launcher/files/CollapsibleRail.kt b/app/src/main/java/com/droiddeck/launcher/files/CollapsibleRail.kt similarity index 99% rename from app/src/main/java/com/steamdeck/launcher/files/CollapsibleRail.kt rename to app/src/main/java/com/droiddeck/launcher/files/CollapsibleRail.kt index aa0336e14..c90ae3262 100644 --- a/app/src/main/java/com/steamdeck/launcher/files/CollapsibleRail.kt +++ b/app/src/main/java/com/droiddeck/launcher/files/CollapsibleRail.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.files +package com.droiddeck.launcher.files import android.content.res.Configuration import androidx.compose.animation.core.animateDpAsState diff --git a/app/src/main/java/com/steamdeck/launcher/files/FavoritesStore.kt b/app/src/main/java/com/droiddeck/launcher/files/FavoritesStore.kt similarity index 98% rename from app/src/main/java/com/steamdeck/launcher/files/FavoritesStore.kt rename to app/src/main/java/com/droiddeck/launcher/files/FavoritesStore.kt index 2f396fa07..de38b7a4f 100644 --- a/app/src/main/java/com/steamdeck/launcher/files/FavoritesStore.kt +++ b/app/src/main/java/com/droiddeck/launcher/files/FavoritesStore.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.files +package com.droiddeck.launcher.files import android.content.Context import org.json.JSONArray diff --git a/app/src/main/java/com/steamdeck/launcher/files/FileManagerActivity.kt b/app/src/main/java/com/droiddeck/launcher/files/FileManagerActivity.kt similarity index 92% rename from app/src/main/java/com/steamdeck/launcher/files/FileManagerActivity.kt rename to app/src/main/java/com/droiddeck/launcher/files/FileManagerActivity.kt index 4804c9ac0..8a3c56bba 100644 --- a/app/src/main/java/com/steamdeck/launcher/files/FileManagerActivity.kt +++ b/app/src/main/java/com/droiddeck/launcher/files/FileManagerActivity.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.files +package com.droiddeck.launcher.files import android.Manifest import android.content.pm.PackageManager @@ -10,7 +10,7 @@ import androidx.compose.foundation.layout.systemBarsPadding import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.ui.Modifier -import com.steamdeck.launcher.ui.SteamDeckTheme +import com.droiddeck.launcher.ui.DroidDeckTheme /** The File Manager as a screen of its own, from the Files tile on the main screen. */ class FileManagerActivity : ComponentActivity() { @@ -20,7 +20,7 @@ class FileManagerActivity : ComponentActivity() { requestPermissions(arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE), 1) } setContent { - SteamDeckTheme { + DroidDeckTheme { Surface(modifier = Modifier.fillMaxSize().systemBarsPadding(), color = MaterialTheme.colorScheme.background) { FileManagerScreen() } diff --git a/app/src/main/java/com/steamdeck/launcher/files/FileManagerScreen.kt b/app/src/main/java/com/droiddeck/launcher/files/FileManagerScreen.kt similarity index 99% rename from app/src/main/java/com/steamdeck/launcher/files/FileManagerScreen.kt rename to app/src/main/java/com/droiddeck/launcher/files/FileManagerScreen.kt index 39854dc2b..fda38ed8e 100644 --- a/app/src/main/java/com/steamdeck/launcher/files/FileManagerScreen.kt +++ b/app/src/main/java/com/droiddeck/launcher/files/FileManagerScreen.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.files +package com.droiddeck.launcher.files import android.widget.Toast import androidx.activity.compose.BackHandler @@ -114,8 +114,8 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import com.steamdeck.launcher.R -import com.steamdeck.launcher.session.SessionPrefs +import com.droiddeck.launcher.R +import com.droiddeck.launcher.session.SessionPrefs import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext @@ -1217,7 +1217,7 @@ fun FileManagerScreen( // The ROMs folder chosen on the main screen: what the session shows as /root/ROMs. SessionPrefs.romsDir(context).takeIf { it.isNotEmpty() }?.let(::File)?.takeIf { it.isDirectory } ?.let { add(locItem("ROMs", Icons.Filled.SportsEsports, it)) } - File("/storage/emulated/0/Download/SteamDeck").takeIf { it.isDirectory }?.let { add(locItem("Session logs", Icons.Filled.Description, it)) } + File("/storage/emulated/0/Download/DroidDeck").takeIf { it.isDirectory }?.let { add(locItem("Session logs", Icons.Filled.Description, it)) } File("/storage/emulated/0/Pictures").takeIf { it.isDirectory }?.let { add(locItem("Pictures", Icons.Filled.Image, it)) } } val favItems = remember(favTick) { FavoritesStore.list(context).map(::File).filter { it.exists() } } diff --git a/app/src/main/java/com/steamdeck/launcher/files/FileOps.kt b/app/src/main/java/com/droiddeck/launcher/files/FileOps.kt similarity index 99% rename from app/src/main/java/com/steamdeck/launcher/files/FileOps.kt rename to app/src/main/java/com/droiddeck/launcher/files/FileOps.kt index 8ddfb1f8d..e57e219da 100644 --- a/app/src/main/java/com/steamdeck/launcher/files/FileOps.kt +++ b/app/src/main/java/com/droiddeck/launcher/files/FileOps.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.files +package com.droiddeck.launcher.files import android.util.Log import java.io.File diff --git a/app/src/main/java/com/steamdeck/launcher/files/FilePickerActivity.kt b/app/src/main/java/com/droiddeck/launcher/files/FilePickerActivity.kt similarity index 96% rename from app/src/main/java/com/steamdeck/launcher/files/FilePickerActivity.kt rename to app/src/main/java/com/droiddeck/launcher/files/FilePickerActivity.kt index dd05f10fa..d892c1241 100644 --- a/app/src/main/java/com/steamdeck/launcher/files/FilePickerActivity.kt +++ b/app/src/main/java/com/droiddeck/launcher/files/FilePickerActivity.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.files +package com.droiddeck.launcher.files import android.Manifest import android.app.Activity @@ -12,7 +12,7 @@ import androidx.compose.foundation.layout.systemBarsPadding import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.ui.Modifier -import com.steamdeck.launcher.ui.SteamDeckTheme +import com.droiddeck.launcher.ui.DroidDeckTheme import java.io.File /** @@ -43,7 +43,7 @@ class FilePickerActivity : ComponentActivity() { ?.let { File(it) }?.takeIf { it.isDirectory } setContent { - SteamDeckTheme { + DroidDeckTheme { Surface(modifier = Modifier.fillMaxSize().systemBarsPadding(), color = MaterialTheme.colorScheme.background) { FileManagerScreen( pickMode = true, diff --git a/app/src/main/java/com/steamdeck/launcher/files/InAppFilePicker.kt b/app/src/main/java/com/droiddeck/launcher/files/InAppFilePicker.kt similarity index 98% rename from app/src/main/java/com/steamdeck/launcher/files/InAppFilePicker.kt rename to app/src/main/java/com/droiddeck/launcher/files/InAppFilePicker.kt index 89dd54833..f53ffd26f 100644 --- a/app/src/main/java/com/steamdeck/launcher/files/InAppFilePicker.kt +++ b/app/src/main/java/com/droiddeck/launcher/files/InAppFilePicker.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.files +package com.droiddeck.launcher.files import android.content.Context import android.content.Intent diff --git a/app/src/main/java/com/steamdeck/launcher/files/MenuStyle.kt b/app/src/main/java/com/droiddeck/launcher/files/MenuStyle.kt similarity index 96% rename from app/src/main/java/com/steamdeck/launcher/files/MenuStyle.kt rename to app/src/main/java/com/droiddeck/launcher/files/MenuStyle.kt index 0a0590b7e..4435c3795 100644 --- a/app/src/main/java/com/steamdeck/launcher/files/MenuStyle.kt +++ b/app/src/main/java/com/droiddeck/launcher/files/MenuStyle.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.files +package com.droiddeck.launcher.files import androidx.compose.foundation.background import androidx.compose.foundation.border diff --git a/app/src/main/java/com/steamdeck/launcher/files/OutlinedAlertDialog.kt b/app/src/main/java/com/droiddeck/launcher/files/OutlinedAlertDialog.kt similarity index 98% rename from app/src/main/java/com/steamdeck/launcher/files/OutlinedAlertDialog.kt rename to app/src/main/java/com/droiddeck/launcher/files/OutlinedAlertDialog.kt index 2b89a66e1..3159d361c 100644 --- a/app/src/main/java/com/steamdeck/launcher/files/OutlinedAlertDialog.kt +++ b/app/src/main/java/com/droiddeck/launcher/files/OutlinedAlertDialog.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.files +package com.droiddeck.launcher.files import androidx.compose.foundation.border import androidx.compose.material3.AlertDialog diff --git a/app/src/main/java/com/steamdeck/launcher/files/PeIconExtractor.kt b/app/src/main/java/com/droiddeck/launcher/files/PeIconExtractor.kt similarity index 99% rename from app/src/main/java/com/steamdeck/launcher/files/PeIconExtractor.kt rename to app/src/main/java/com/droiddeck/launcher/files/PeIconExtractor.kt index 5123d3fed..dc65b5e0c 100644 --- a/app/src/main/java/com/steamdeck/launcher/files/PeIconExtractor.kt +++ b/app/src/main/java/com/droiddeck/launcher/files/PeIconExtractor.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.files +package com.droiddeck.launcher.files import android.graphics.Bitmap import android.graphics.BitmapFactory diff --git a/app/src/main/java/com/steamdeck/launcher/files/StorageRoots.kt b/app/src/main/java/com/droiddeck/launcher/files/StorageRoots.kt similarity index 99% rename from app/src/main/java/com/steamdeck/launcher/files/StorageRoots.kt rename to app/src/main/java/com/droiddeck/launcher/files/StorageRoots.kt index e6a0228ab..942c65368 100644 --- a/app/src/main/java/com/steamdeck/launcher/files/StorageRoots.kt +++ b/app/src/main/java/com/droiddeck/launcher/files/StorageRoots.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.files +package com.droiddeck.launcher.files import android.content.Context import android.os.Build diff --git a/app/src/main/java/com/steamdeck/launcher/frontend/AddedGameArt.kt b/app/src/main/java/com/droiddeck/launcher/frontend/AddedGameArt.kt similarity index 97% rename from app/src/main/java/com/steamdeck/launcher/frontend/AddedGameArt.kt rename to app/src/main/java/com/droiddeck/launcher/frontend/AddedGameArt.kt index c888559d5..ecc92a1db 100644 --- a/app/src/main/java/com/steamdeck/launcher/frontend/AddedGameArt.kt +++ b/app/src/main/java/com/droiddeck/launcher/frontend/AddedGameArt.kt @@ -1,10 +1,10 @@ -package com.steamdeck.launcher.frontend +package com.droiddeck.launcher.frontend import android.content.Context import android.graphics.Bitmap import android.util.Log -import com.steamdeck.launcher.files.PeIconExtractor -import com.steamdeck.launcher.session.SessionPrefs +import com.droiddeck.launcher.files.PeIconExtractor +import com.droiddeck.launcher.session.SessionPrefs import org.json.JSONObject import java.io.File import java.net.HttpURLConnection @@ -161,7 +161,7 @@ object AddedGameArt { val c = URL(url).openConnection() as HttpURLConnection c.connectTimeout = 10_000 c.readTimeout = 15_000 - c.setRequestProperty("User-Agent", "SteamDeck-launcher") + c.setRequestProperty("User-Agent", "DroidDeck-launcher") return try { if (c.responseCode != 200) null else c.inputStream.use { it.readBytes() } } catch (e: Exception) { diff --git a/app/src/main/java/com/steamdeck/launcher/frontend/AddedGames.kt b/app/src/main/java/com/droiddeck/launcher/frontend/AddedGames.kt similarity index 98% rename from app/src/main/java/com/steamdeck/launcher/frontend/AddedGames.kt rename to app/src/main/java/com/droiddeck/launcher/frontend/AddedGames.kt index 6f3c2ffdd..4f78634a4 100644 --- a/app/src/main/java/com/steamdeck/launcher/frontend/AddedGames.kt +++ b/app/src/main/java/com/droiddeck/launcher/frontend/AddedGames.kt @@ -1,10 +1,10 @@ -package com.steamdeck.launcher.frontend +package com.droiddeck.launcher.frontend import android.content.Context import android.os.Environment import android.util.Log -import com.steamdeck.launcher.session.GameStorage -import com.steamdeck.launcher.session.SessionPrefs +import com.droiddeck.launcher.session.GameStorage +import com.droiddeck.launcher.session.SessionPrefs import java.io.File import java.util.zip.CRC32 diff --git a/app/src/main/java/com/steamdeck/launcher/frontend/Library.kt b/app/src/main/java/com/droiddeck/launcher/frontend/Library.kt similarity index 97% rename from app/src/main/java/com/steamdeck/launcher/frontend/Library.kt rename to app/src/main/java/com/droiddeck/launcher/frontend/Library.kt index 75af8145a..f6c1c712d 100644 --- a/app/src/main/java/com/steamdeck/launcher/frontend/Library.kt +++ b/app/src/main/java/com/droiddeck/launcher/frontend/Library.kt @@ -1,10 +1,10 @@ -package com.steamdeck.launcher.frontend +package com.droiddeck.launcher.frontend import android.content.Context -import com.steamdeck.launcher.R -import com.steamdeck.launcher.runtime.LinuxRuntime -import com.steamdeck.launcher.session.GameStorage -import com.steamdeck.launcher.session.SessionPrefs +import com.droiddeck.launcher.R +import com.droiddeck.launcher.runtime.LinuxRuntime +import com.droiddeck.launcher.session.GameStorage +import com.droiddeck.launcher.session.SessionPrefs import java.io.File /** diff --git a/app/src/main/java/com/steamdeck/launcher/gpu/FrameGen.kt b/app/src/main/java/com/droiddeck/launcher/gpu/FrameGen.kt similarity index 97% rename from app/src/main/java/com/steamdeck/launcher/gpu/FrameGen.kt rename to app/src/main/java/com/droiddeck/launcher/gpu/FrameGen.kt index 8775ff122..90ea86478 100644 --- a/app/src/main/java/com/steamdeck/launcher/gpu/FrameGen.kt +++ b/app/src/main/java/com/droiddeck/launcher/gpu/FrameGen.kt @@ -1,8 +1,8 @@ -package com.steamdeck.launcher.gpu +package com.droiddeck.launcher.gpu import android.content.Context import android.util.Log -import com.steamdeck.launcher.wayland.WaylandCompositor +import com.droiddeck.launcher.wayland.WaylandCompositor /** * The frame-generation setting and how it reaches the compositor. @@ -110,7 +110,7 @@ object FrameGen { } } android.app.AlertDialog.Builder(activity) - .setTitle(com.steamdeck.launcher.R.string.frame_gen_title) + .setTitle(com.droiddeck.launcher.R.string.frame_gen_title) .setSingleChoiceItems(adapter, current) { dialog, which -> when (which) { 0 -> set(activity, ENGINE_OFF, 2) diff --git a/app/src/main/java/com/steamdeck/launcher/gpu/LinuxVulkanDriver.java b/app/src/main/java/com/droiddeck/launcher/gpu/LinuxVulkanDriver.java similarity index 99% rename from app/src/main/java/com/steamdeck/launcher/gpu/LinuxVulkanDriver.java rename to app/src/main/java/com/droiddeck/launcher/gpu/LinuxVulkanDriver.java index 8cdb4ae61..4662f894f 100644 --- a/app/src/main/java/com/steamdeck/launcher/gpu/LinuxVulkanDriver.java +++ b/app/src/main/java/com/droiddeck/launcher/gpu/LinuxVulkanDriver.java @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.gpu; +package com.droiddeck.launcher.gpu; import android.content.Context; import android.util.Log; diff --git a/app/src/main/java/com/steamdeck/launcher/gpu/LinuxVulkanDriverManager.java b/app/src/main/java/com/droiddeck/launcher/gpu/LinuxVulkanDriverManager.java similarity index 99% rename from app/src/main/java/com/steamdeck/launcher/gpu/LinuxVulkanDriverManager.java rename to app/src/main/java/com/droiddeck/launcher/gpu/LinuxVulkanDriverManager.java index 15c62f2ec..077e230cd 100644 --- a/app/src/main/java/com/steamdeck/launcher/gpu/LinuxVulkanDriverManager.java +++ b/app/src/main/java/com/droiddeck/launcher/gpu/LinuxVulkanDriverManager.java @@ -1,10 +1,10 @@ -package com.steamdeck.launcher.gpu; +package com.droiddeck.launcher.gpu; import android.content.Context; import android.net.Uri; import android.util.Log; -import com.steamdeck.launcher.core.FileUtils; +import com.droiddeck.launcher.core.FileUtils; import org.json.JSONObject; diff --git a/app/src/main/java/com/steamdeck/launcher/gpu/LsfgNative.java b/app/src/main/java/com/droiddeck/launcher/gpu/LsfgNative.java similarity index 97% rename from app/src/main/java/com/steamdeck/launcher/gpu/LsfgNative.java rename to app/src/main/java/com/droiddeck/launcher/gpu/LsfgNative.java index f0c6d8a37..c9b03ef03 100644 --- a/app/src/main/java/com/steamdeck/launcher/gpu/LsfgNative.java +++ b/app/src/main/java/com/droiddeck/launcher/gpu/LsfgNative.java @@ -1,9 +1,9 @@ -package com.steamdeck.launcher.gpu; +package com.droiddeck.launcher.gpu; import android.content.Context; import android.util.Log; -import com.steamdeck.launcher.runtime.LinuxRuntime; +import com.droiddeck.launcher.runtime.LinuxRuntime; import java.io.File; diff --git a/app/src/main/java/com/steamdeck/launcher/gpu/TurnipDriver.java b/app/src/main/java/com/droiddeck/launcher/gpu/TurnipDriver.java similarity index 98% rename from app/src/main/java/com/steamdeck/launcher/gpu/TurnipDriver.java rename to app/src/main/java/com/droiddeck/launcher/gpu/TurnipDriver.java index 6ac4c3858..8d8863961 100644 --- a/app/src/main/java/com/steamdeck/launcher/gpu/TurnipDriver.java +++ b/app/src/main/java/com/droiddeck/launcher/gpu/TurnipDriver.java @@ -1,13 +1,13 @@ -package com.steamdeck.launcher.gpu; +package com.droiddeck.launcher.gpu; import android.content.Context; import android.net.Uri; import android.os.Environment; import android.util.Log; -import com.steamdeck.launcher.core.FileUtils; -import com.steamdeck.launcher.core.TarZst; -import com.steamdeck.launcher.session.SessionPrefs; +import com.droiddeck.launcher.core.FileUtils; +import com.droiddeck.launcher.core.TarZst; +import com.droiddeck.launcher.session.SessionPrefs; import org.json.JSONObject; @@ -51,7 +51,7 @@ public final class TurnipDriver { /** The two the apk carries; never removable, unpacked on demand. */ public static final List BUNDLED = Collections.unmodifiableList(Arrays.asList(DRIVER_A7XX, DRIVER_A8XX)); /** Overrides the pick, for a device we cannot reach: a7xx, a8xx or system. */ - private static final String OVERRIDE_FILE = "Download/steamdeck-driver"; + private static final String OVERRIDE_FILE = "Download/droiddeck-driver"; /** Bundled drivers the user deleted: hidden from the list, their unpacked copy removed. */ private static final String PREFS = "graphics_driver"; private static final String KEY_HIDDEN = "hiddenBundled"; diff --git a/app/src/main/java/com/steamdeck/launcher/gpu/TurnipReleases.kt b/app/src/main/java/com/droiddeck/launcher/gpu/TurnipReleases.kt similarity index 98% rename from app/src/main/java/com/steamdeck/launcher/gpu/TurnipReleases.kt rename to app/src/main/java/com/droiddeck/launcher/gpu/TurnipReleases.kt index 67a546234..e9fd3e188 100644 --- a/app/src/main/java/com/steamdeck/launcher/gpu/TurnipReleases.kt +++ b/app/src/main/java/com/droiddeck/launcher/gpu/TurnipReleases.kt @@ -1,7 +1,7 @@ -package com.steamdeck.launcher.gpu +package com.droiddeck.launcher.gpu import android.content.Context -import com.steamdeck.launcher.core.FileUtils +import com.droiddeck.launcher.core.FileUtils import org.json.JSONArray import org.json.JSONObject import java.io.File @@ -114,7 +114,7 @@ object TurnipReleases { c.connectTimeout = 15_000 c.readTimeout = 20_000 c.setRequestProperty("Accept", "application/vnd.github+json") - c.setRequestProperty("User-Agent", "SteamDeck-app") + c.setRequestProperty("User-Agent", "DroidDeck-app") try { val code = c.responseCode if (code == 403 || code == 429) throw IOException("GitHub's rate limit was hit - try again later") @@ -171,7 +171,7 @@ object TurnipReleases { val c = URL(asset.url).openConnection() as HttpURLConnection c.connectTimeout = 15_000 c.readTimeout = 60_000 - c.setRequestProperty("User-Agent", "SteamDeck-app") + c.setRequestProperty("User-Agent", "DroidDeck-app") c.instanceFollowRedirects = true try { if (c.responseCode != 200) throw IOException("download answered HTTP ${c.responseCode}") diff --git a/app/src/main/java/com/steamdeck/launcher/input/EvdevKeys.java b/app/src/main/java/com/droiddeck/launcher/input/EvdevKeys.java similarity index 99% rename from app/src/main/java/com/steamdeck/launcher/input/EvdevKeys.java rename to app/src/main/java/com/droiddeck/launcher/input/EvdevKeys.java index 6261c8101..23aae64be 100644 --- a/app/src/main/java/com/steamdeck/launcher/input/EvdevKeys.java +++ b/app/src/main/java/com/droiddeck/launcher/input/EvdevKeys.java @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.input; +package com.droiddeck.launcher.input; import android.view.KeyEvent; diff --git a/app/src/main/java/com/steamdeck/launcher/input/FakeInputWriter.java b/app/src/main/java/com/droiddeck/launcher/input/FakeInputWriter.java similarity index 99% rename from app/src/main/java/com/steamdeck/launcher/input/FakeInputWriter.java rename to app/src/main/java/com/droiddeck/launcher/input/FakeInputWriter.java index 20b88d360..30b802166 100644 --- a/app/src/main/java/com/steamdeck/launcher/input/FakeInputWriter.java +++ b/app/src/main/java/com/droiddeck/launcher/input/FakeInputWriter.java @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.input; +package com.droiddeck.launcher.input; import android.util.Log; diff --git a/app/src/main/java/com/steamdeck/launcher/input/KeyboardHost.kt b/app/src/main/java/com/droiddeck/launcher/input/KeyboardHost.kt similarity index 99% rename from app/src/main/java/com/steamdeck/launcher/input/KeyboardHost.kt rename to app/src/main/java/com/droiddeck/launcher/input/KeyboardHost.kt index 2e93d0274..48e54c791 100644 --- a/app/src/main/java/com/steamdeck/launcher/input/KeyboardHost.kt +++ b/app/src/main/java/com/droiddeck/launcher/input/KeyboardHost.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.input +package com.droiddeck.launcher.input import android.app.Activity import android.content.Context diff --git a/app/src/main/java/com/steamdeck/launcher/input/OnScreenControls.kt b/app/src/main/java/com/droiddeck/launcher/input/OnScreenControls.kt similarity index 99% rename from app/src/main/java/com/steamdeck/launcher/input/OnScreenControls.kt rename to app/src/main/java/com/droiddeck/launcher/input/OnScreenControls.kt index 9f8b39dac..2de8a62e7 100644 --- a/app/src/main/java/com/steamdeck/launcher/input/OnScreenControls.kt +++ b/app/src/main/java/com/droiddeck/launcher/input/OnScreenControls.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.input +package com.droiddeck.launcher.input import android.annotation.SuppressLint import android.content.Context diff --git a/app/src/main/java/com/steamdeck/launcher/input/PadBridge.java b/app/src/main/java/com/droiddeck/launcher/input/PadBridge.java similarity index 99% rename from app/src/main/java/com/steamdeck/launcher/input/PadBridge.java rename to app/src/main/java/com/droiddeck/launcher/input/PadBridge.java index 31e60361b..fc1224b0d 100644 --- a/app/src/main/java/com/steamdeck/launcher/input/PadBridge.java +++ b/app/src/main/java/com/droiddeck/launcher/input/PadBridge.java @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.input; +package com.droiddeck.launcher.input; import android.os.Handler; import android.os.Looper; diff --git a/app/src/main/java/com/steamdeck/launcher/input/PadState.kt b/app/src/main/java/com/droiddeck/launcher/input/PadState.kt similarity index 98% rename from app/src/main/java/com/steamdeck/launcher/input/PadState.kt rename to app/src/main/java/com/droiddeck/launcher/input/PadState.kt index 0cb361032..7f4c9efbd 100644 --- a/app/src/main/java/com/steamdeck/launcher/input/PadState.kt +++ b/app/src/main/java/com/droiddeck/launcher/input/PadState.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.input +package com.droiddeck.launcher.input /** * What one Xbox-shaped pad is doing right now: two sticks and two triggers as -1..1 / 0..1, the diff --git a/app/src/main/java/com/steamdeck/launcher/input/PointerGestures.kt b/app/src/main/java/com/droiddeck/launcher/input/PointerGestures.kt similarity index 99% rename from app/src/main/java/com/steamdeck/launcher/input/PointerGestures.kt rename to app/src/main/java/com/droiddeck/launcher/input/PointerGestures.kt index d1524cb63..9183578d1 100644 --- a/app/src/main/java/com/steamdeck/launcher/input/PointerGestures.kt +++ b/app/src/main/java/com/droiddeck/launcher/input/PointerGestures.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.input +package com.droiddeck.launcher.input import android.os.Handler import android.os.Looper diff --git a/app/src/main/java/com/steamdeck/launcher/input/SecondScreenMode.kt b/app/src/main/java/com/droiddeck/launcher/input/SecondScreenMode.kt similarity index 90% rename from app/src/main/java/com/steamdeck/launcher/input/SecondScreenMode.kt rename to app/src/main/java/com/droiddeck/launcher/input/SecondScreenMode.kt index ddd1dc0bb..86daa4620 100644 --- a/app/src/main/java/com/steamdeck/launcher/input/SecondScreenMode.kt +++ b/app/src/main/java/com/droiddeck/launcher/input/SecondScreenMode.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.input +package com.droiddeck.launcher.input /** The control surface shown on a secondary Android display during a Linux session. */ enum class SecondScreenMode(val id: String, val label: String) { diff --git a/app/src/main/java/com/steamdeck/launcher/input/TouchpadGestures.kt b/app/src/main/java/com/droiddeck/launcher/input/TouchpadGestures.kt similarity index 99% rename from app/src/main/java/com/steamdeck/launcher/input/TouchpadGestures.kt rename to app/src/main/java/com/droiddeck/launcher/input/TouchpadGestures.kt index 2279366d4..38f28c1f8 100644 --- a/app/src/main/java/com/steamdeck/launcher/input/TouchpadGestures.kt +++ b/app/src/main/java/com/droiddeck/launcher/input/TouchpadGestures.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.input +package com.droiddeck.launcher.input import android.os.Handler import android.os.Looper diff --git a/app/src/main/java/com/steamdeck/launcher/runtime/DesktopCatalog.kt b/app/src/main/java/com/droiddeck/launcher/runtime/DesktopCatalog.kt similarity index 91% rename from app/src/main/java/com/steamdeck/launcher/runtime/DesktopCatalog.kt rename to app/src/main/java/com/droiddeck/launcher/runtime/DesktopCatalog.kt index 6a3717f25..7654917e9 100644 --- a/app/src/main/java/com/steamdeck/launcher/runtime/DesktopCatalog.kt +++ b/app/src/main/java/com/droiddeck/launcher/runtime/DesktopCatalog.kt @@ -1,9 +1,9 @@ -package com.steamdeck.launcher.runtime +package com.droiddeck.launcher.runtime import android.content.Context import android.util.Log -import com.steamdeck.launcher.core.Downloader -import com.steamdeck.launcher.core.FileUtils +import com.droiddeck.launcher.core.Downloader +import com.droiddeck.launcher.core.FileUtils import org.json.JSONObject import java.io.File @@ -45,14 +45,16 @@ object DesktopCatalog { } } - private fun marker(context: Context, id: String) = File(LinuxRuntime.rootDir(context), ".steamdeck-pkg-$id") + private fun marker(context: Context, id: String) = File(LinuxRuntime.rootDir(context), ".droiddeck-pkg-$id") /** The installed version of a package, or null. */ fun installed(context: Context, id: String): String? = FileUtils.readString(marker(context, id))?.trim()?.takeIf { it.isNotEmpty() } + // labwc comes with the hosted desktop package itself (its launcher is staged by the app at + // every session, so it cannot tell whether the package is there); SessionFiles uses the same test. fun desktopInstalled(context: Context): Boolean = - File(LinuxRuntime.rootDir(context), "usr/local/bin/steamdeck-desktop").isFile + File(LinuxRuntime.rootDir(context), "usr/bin/labwc").isFile /** Downloads, verifies and installs one package. Returns null on success, else a message. */ fun install(context: Context, entry: Entry, listener: LinuxRuntimeInstaller.ProgressListener?): String? { @@ -80,7 +82,7 @@ object DesktopCatalog { else download.renameTo(target) if (!placed) return "Could not place the AppImage" target.setExecutable(true, false) - FileUtils.writeString(File(root, "usr/share/applications/steamdeck-${entry.id}.desktop"), + FileUtils.writeString(File(root, "usr/share/applications/droiddeck-${entry.id}.desktop"), "[Desktop Entry]\nType=Application\nName=${entry.name}\n" + "Exec=env APPIMAGE_EXTRACT_AND_RUN=1 /opt/appimages/${entry.id}.AppImage\n" + "Icon=${entry.icon}\nTerminal=false\nCategories=${entry.category};\n") @@ -123,7 +125,7 @@ object DesktopCatalog { val root = LinuxRuntime.rootDir(context) if (entry.kind == "appimage") { File(root, "opt/appimages/${entry.id}.AppImage").delete() - File(root, "usr/share/applications/steamdeck-${entry.id}.desktop").delete() + File(root, "usr/share/applications/droiddeck-${entry.id}.desktop").delete() } marker(context, entry.id).delete() } diff --git a/app/src/main/java/com/steamdeck/launcher/runtime/LinuxNetworkLinkComponent.kt b/app/src/main/java/com/droiddeck/launcher/runtime/LinuxNetworkLinkComponent.kt similarity index 98% rename from app/src/main/java/com/steamdeck/launcher/runtime/LinuxNetworkLinkComponent.kt rename to app/src/main/java/com/droiddeck/launcher/runtime/LinuxNetworkLinkComponent.kt index ea110a474..1b3b24f9e 100644 --- a/app/src/main/java/com/steamdeck/launcher/runtime/LinuxNetworkLinkComponent.kt +++ b/app/src/main/java/com/droiddeck/launcher/runtime/LinuxNetworkLinkComponent.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.runtime +package com.droiddeck.launcher.runtime import android.content.Context import android.net.ConnectivityManager @@ -7,7 +7,7 @@ import android.net.Network import android.os.Build import android.provider.Settings import android.util.Log -import com.steamdeck.launcher.core.SessionPart +import com.droiddeck.launcher.core.SessionPart import java.io.File import java.io.IOException import java.net.Inet4Address diff --git a/app/src/main/java/com/steamdeck/launcher/runtime/LinuxRuntime.java b/app/src/main/java/com/droiddeck/launcher/runtime/LinuxRuntime.java similarity index 99% rename from app/src/main/java/com/steamdeck/launcher/runtime/LinuxRuntime.java rename to app/src/main/java/com/droiddeck/launcher/runtime/LinuxRuntime.java index a376722f3..838c970b0 100644 --- a/app/src/main/java/com/steamdeck/launcher/runtime/LinuxRuntime.java +++ b/app/src/main/java/com/droiddeck/launcher/runtime/LinuxRuntime.java @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.runtime; +package com.droiddeck.launcher.runtime; import android.content.Context; import android.os.Process; @@ -33,7 +33,7 @@ public final class LinuxRuntime { public static final String EXTRA_LINUX_MODE = "linux_mode"; private static final String KGSL_DEVICE = "/dev/kgsl-3d0"; /** Where every Linux session's debug log lands: public, so a user can just hand the folder over. */ - public static final String DEBUG_LOG_DIR = "SteamDeck"; + public static final String DEBUG_LOG_DIR = "DroidDeck"; public static File debugLogDir() { return new File(android.os.Environment.getExternalStoragePublicDirectory( diff --git a/app/src/main/java/com/steamdeck/launcher/runtime/LinuxRuntimeInstaller.java b/app/src/main/java/com/droiddeck/launcher/runtime/LinuxRuntimeInstaller.java similarity index 98% rename from app/src/main/java/com/steamdeck/launcher/runtime/LinuxRuntimeInstaller.java rename to app/src/main/java/com/droiddeck/launcher/runtime/LinuxRuntimeInstaller.java index 9ab20d170..1a6e07c60 100644 --- a/app/src/main/java/com/steamdeck/launcher/runtime/LinuxRuntimeInstaller.java +++ b/app/src/main/java/com/droiddeck/launcher/runtime/LinuxRuntimeInstaller.java @@ -1,11 +1,11 @@ -package com.steamdeck.launcher.runtime; +package com.droiddeck.launcher.runtime; import android.content.Context; import android.util.Log; -import com.steamdeck.launcher.core.Downloader; -import com.steamdeck.launcher.core.FileUtils; +import com.droiddeck.launcher.core.Downloader; +import com.droiddeck.launcher.core.FileUtils; import org.apache.commons.compress.archivers.tar.TarArchiveEntry; import org.apache.commons.compress.archivers.tar.TarArchiveInputStream; diff --git a/app/src/main/java/com/steamdeck/launcher/session/BatteryComponent.kt b/app/src/main/java/com/droiddeck/launcher/session/BatteryComponent.kt similarity index 98% rename from app/src/main/java/com/steamdeck/launcher/session/BatteryComponent.kt rename to app/src/main/java/com/droiddeck/launcher/session/BatteryComponent.kt index b43a156f7..f15a8517b 100644 --- a/app/src/main/java/com/steamdeck/launcher/session/BatteryComponent.kt +++ b/app/src/main/java/com/droiddeck/launcher/session/BatteryComponent.kt @@ -1,10 +1,10 @@ -package com.steamdeck.launcher.session +package com.droiddeck.launcher.session import android.content.Intent import android.content.IntentFilter import android.os.BatteryManager import android.util.Log -import com.steamdeck.launcher.core.SessionPart +import com.droiddeck.launcher.core.SessionPart import java.io.File import kotlin.math.abs diff --git a/app/src/main/java/com/steamdeck/launcher/session/CrashHandler.kt b/app/src/main/java/com/droiddeck/launcher/session/CrashHandler.kt similarity index 98% rename from app/src/main/java/com/steamdeck/launcher/session/CrashHandler.kt rename to app/src/main/java/com/droiddeck/launcher/session/CrashHandler.kt index 96c2377e2..1a0a66933 100644 --- a/app/src/main/java/com/steamdeck/launcher/session/CrashHandler.kt +++ b/app/src/main/java/com/droiddeck/launcher/session/CrashHandler.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.session +package com.droiddeck.launcher.session import android.content.Context import android.util.Log diff --git a/app/src/main/java/com/steamdeck/launcher/session/GameStorage.kt b/app/src/main/java/com/droiddeck/launcher/session/GameStorage.kt similarity index 97% rename from app/src/main/java/com/steamdeck/launcher/session/GameStorage.kt rename to app/src/main/java/com/droiddeck/launcher/session/GameStorage.kt index 1bde1f841..88ab5ab16 100644 --- a/app/src/main/java/com/steamdeck/launcher/session/GameStorage.kt +++ b/app/src/main/java/com/droiddeck/launcher/session/GameStorage.kt @@ -1,10 +1,10 @@ -package com.steamdeck.launcher.session +package com.droiddeck.launcher.session import android.content.Context import android.os.Environment import android.os.StatFs import android.os.storage.StorageManager -import com.steamdeck.launcher.core.FileUtils +import com.droiddeck.launcher.core.FileUtils import java.io.File /** diff --git a/app/src/main/java/com/steamdeck/launcher/session/LoadingState.kt b/app/src/main/java/com/droiddeck/launcher/session/LoadingState.kt similarity index 96% rename from app/src/main/java/com/steamdeck/launcher/session/LoadingState.kt rename to app/src/main/java/com/droiddeck/launcher/session/LoadingState.kt index d78fb2993..4295747b2 100644 --- a/app/src/main/java/com/steamdeck/launcher/session/LoadingState.kt +++ b/app/src/main/java/com/droiddeck/launcher/session/LoadingState.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.session +package com.droiddeck.launcher.session import android.content.Context import android.os.SystemClock @@ -25,7 +25,7 @@ class LoadingState(context: Context) { var hint by mutableStateOf("") var ended by mutableStateOf(false) - private val hints = context.resources.getStringArray(com.steamdeck.launcher.R.array.loading_hints) + private val hints = context.resources.getStringArray(com.droiddeck.launcher.R.array.loading_hints) private val startedAt = SystemClock.elapsedRealtime() /** Once a second: the clock and the hint. */ diff --git a/app/src/main/java/com/steamdeck/launcher/session/OfflineMode.kt b/app/src/main/java/com/droiddeck/launcher/session/OfflineMode.kt similarity index 98% rename from app/src/main/java/com/steamdeck/launcher/session/OfflineMode.kt rename to app/src/main/java/com/droiddeck/launcher/session/OfflineMode.kt index 9e31e2734..79e2a907e 100644 --- a/app/src/main/java/com/steamdeck/launcher/session/OfflineMode.kt +++ b/app/src/main/java/com/droiddeck/launcher/session/OfflineMode.kt @@ -1,8 +1,8 @@ -package com.steamdeck.launcher.session +package com.droiddeck.launcher.session import android.content.Context import android.util.Log -import com.steamdeck.launcher.runtime.LinuxRuntime +import com.droiddeck.launcher.runtime.LinuxRuntime import java.io.File /** diff --git a/app/src/main/java/com/steamdeck/launcher/session/OrphanReaper.kt b/app/src/main/java/com/droiddeck/launcher/session/OrphanReaper.kt similarity index 98% rename from app/src/main/java/com/steamdeck/launcher/session/OrphanReaper.kt rename to app/src/main/java/com/droiddeck/launcher/session/OrphanReaper.kt index c66f7b241..9264a7f6a 100644 --- a/app/src/main/java/com/steamdeck/launcher/session/OrphanReaper.kt +++ b/app/src/main/java/com/droiddeck/launcher/session/OrphanReaper.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.session +package com.droiddeck.launcher.session import android.util.Log import java.io.File diff --git a/app/src/main/java/com/steamdeck/launcher/session/PerfHints.kt b/app/src/main/java/com/droiddeck/launcher/session/PerfHints.kt similarity index 97% rename from app/src/main/java/com/steamdeck/launcher/session/PerfHints.kt rename to app/src/main/java/com/droiddeck/launcher/session/PerfHints.kt index 6cbaf6178..da651314e 100644 --- a/app/src/main/java/com/steamdeck/launcher/session/PerfHints.kt +++ b/app/src/main/java/com/droiddeck/launcher/session/PerfHints.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.session +package com.droiddeck.launcher.session import android.content.Context import android.os.Build @@ -7,7 +7,7 @@ import android.os.Looper import android.os.PerformanceHintManager import android.util.Log import androidx.annotation.RequiresApi -import com.steamdeck.launcher.wayland.WaylandCompositor +import com.droiddeck.launcher.wayland.WaylandCompositor import java.util.concurrent.Executors /** diff --git a/app/src/main/java/com/steamdeck/launcher/session/PerfHud.kt b/app/src/main/java/com/droiddeck/launcher/session/PerfHud.kt similarity index 95% rename from app/src/main/java/com/steamdeck/launcher/session/PerfHud.kt rename to app/src/main/java/com/droiddeck/launcher/session/PerfHud.kt index e5cb637e6..ae3326c1e 100644 --- a/app/src/main/java/com/steamdeck/launcher/session/PerfHud.kt +++ b/app/src/main/java/com/droiddeck/launcher/session/PerfHud.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.session +package com.droiddeck.launcher.session import android.content.Context import android.os.Environment @@ -8,8 +8,8 @@ import android.os.SystemClock import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue -import com.steamdeck.launcher.gpu.FrameGen -import com.steamdeck.launcher.wayland.WaylandCompositor +import com.droiddeck.launcher.gpu.FrameGen +import com.droiddeck.launcher.wayland.WaylandCompositor import java.io.File import java.util.Locale import java.util.concurrent.atomic.AtomicInteger @@ -36,7 +36,7 @@ class PerfHud(context: Context) { /** The session's own switch (drawer), with the Downloads file as a device-side override. */ private val enabled: Boolean get() = SessionPrefs.hudEnabled(context) - && !File(Environment.getExternalStorageDirectory(), "Download/steamdeck-no-hud").exists() + && !File(Environment.getExternalStorageDirectory(), "Download/droiddeck-no-hud").exists() /** Told, on the main thread, when the window presenting frames changes. */ var onPresentingWindowChanged: (() -> Unit)? = null diff --git a/app/src/main/java/com/steamdeck/launcher/session/PerfMode.kt b/app/src/main/java/com/droiddeck/launcher/session/PerfMode.kt similarity index 98% rename from app/src/main/java/com/steamdeck/launcher/session/PerfMode.kt rename to app/src/main/java/com/droiddeck/launcher/session/PerfMode.kt index bd04696b3..16d142560 100644 --- a/app/src/main/java/com/steamdeck/launcher/session/PerfMode.kt +++ b/app/src/main/java/com/droiddeck/launcher/session/PerfMode.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.session +package com.droiddeck.launcher.session import android.app.Activity import android.app.GameManager diff --git a/app/src/main/java/com/steamdeck/launcher/session/ProtonExtras.kt b/app/src/main/java/com/droiddeck/launcher/session/ProtonExtras.kt similarity index 97% rename from app/src/main/java/com/steamdeck/launcher/session/ProtonExtras.kt rename to app/src/main/java/com/droiddeck/launcher/session/ProtonExtras.kt index 134675495..fcb920079 100644 --- a/app/src/main/java/com/steamdeck/launcher/session/ProtonExtras.kt +++ b/app/src/main/java/com/droiddeck/launcher/session/ProtonExtras.kt @@ -1,11 +1,11 @@ -package com.steamdeck.launcher.session +package com.droiddeck.launcher.session import android.content.Context import android.os.StatFs import android.util.Log -import com.steamdeck.launcher.core.Downloader -import com.steamdeck.launcher.core.FileUtils -import com.steamdeck.launcher.runtime.LinuxRuntime +import com.droiddeck.launcher.core.Downloader +import com.droiddeck.launcher.core.FileUtils +import com.droiddeck.launcher.runtime.LinuxRuntime import java.io.File import java.security.MessageDigest import org.json.JSONArray @@ -114,7 +114,7 @@ object ProtonExtras { return try { val root = LinuxRuntime.rootDir(context) LinuxRuntime.writeAccounts(context) - com.steamdeck.launcher.session.SessionFiles.stage(context, root) + com.droiddeck.launcher.session.SessionFiles.stage(context, root) val runtimeDir = File(context.filesDir, ".proton-install-rt").apply { mkdirs() } val guest = listOf( "/usr/bin/env", "-i", "HOME=/root", "USER=root", "PATH=/usr/local/bin:/usr/bin:/bin", diff --git a/app/src/main/java/com/steamdeck/launcher/session/RivalClients.kt b/app/src/main/java/com/droiddeck/launcher/session/RivalClients.kt similarity index 98% rename from app/src/main/java/com/steamdeck/launcher/session/RivalClients.kt rename to app/src/main/java/com/droiddeck/launcher/session/RivalClients.kt index ec04667c5..12436c33e 100644 --- a/app/src/main/java/com/steamdeck/launcher/session/RivalClients.kt +++ b/app/src/main/java/com/droiddeck/launcher/session/RivalClients.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.session +package com.droiddeck.launcher.session import android.app.ActivityManager import android.content.Context diff --git a/app/src/main/java/com/steamdeck/launcher/session/RumbleComponent.kt b/app/src/main/java/com/droiddeck/launcher/session/RumbleComponent.kt similarity index 96% rename from app/src/main/java/com/steamdeck/launcher/session/RumbleComponent.kt rename to app/src/main/java/com/droiddeck/launcher/session/RumbleComponent.kt index 2984a5f63..a533a2f2a 100644 --- a/app/src/main/java/com/steamdeck/launcher/session/RumbleComponent.kt +++ b/app/src/main/java/com/droiddeck/launcher/session/RumbleComponent.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.session +package com.droiddeck.launcher.session import android.net.LocalServerSocket import android.os.Build @@ -6,7 +6,7 @@ import android.os.VibrationEffect import android.os.Vibrator import android.os.VibratorManager import android.util.Log -import com.steamdeck.launcher.core.SessionPart +import com.droiddeck.launcher.core.SessionPart import java.io.DataInputStream import kotlin.math.max @@ -70,6 +70,6 @@ class RumbleComponent : SessionPart() { companion object { private const val TAG = "SessionService" /** Must match the fake evdev layer (fakeinput_steam.cpp). */ - const val NAME = "steamdeck-rumble" + const val NAME = "droiddeck-rumble" } } diff --git a/app/src/main/java/com/steamdeck/launcher/session/SessionArtifacts.kt b/app/src/main/java/com/droiddeck/launcher/session/SessionArtifacts.kt similarity index 95% rename from app/src/main/java/com/steamdeck/launcher/session/SessionArtifacts.kt rename to app/src/main/java/com/droiddeck/launcher/session/SessionArtifacts.kt index a96ae0798..9dee67289 100644 --- a/app/src/main/java/com/steamdeck/launcher/session/SessionArtifacts.kt +++ b/app/src/main/java/com/droiddeck/launcher/session/SessionArtifacts.kt @@ -1,11 +1,11 @@ -package com.steamdeck.launcher.session +package com.droiddeck.launcher.session import android.content.Context import android.util.Log -import com.steamdeck.launcher.core.LogRedactor -import com.steamdeck.launcher.core.SessionLogCapture -import com.steamdeck.launcher.runtime.LinuxRuntime -import com.steamdeck.launcher.wayland.WaylandCompositor +import com.droiddeck.launcher.core.LogRedactor +import com.droiddeck.launcher.core.SessionLogCapture +import com.droiddeck.launcher.runtime.LinuxRuntime +import com.droiddeck.launcher.wayland.WaylandCompositor import java.io.File import java.text.SimpleDateFormat import java.util.Date diff --git a/app/src/main/java/com/steamdeck/launcher/session/SessionFiles.kt b/app/src/main/java/com/droiddeck/launcher/session/SessionFiles.kt similarity index 96% rename from app/src/main/java/com/steamdeck/launcher/session/SessionFiles.kt rename to app/src/main/java/com/droiddeck/launcher/session/SessionFiles.kt index 15167a329..78b09fc5e 100644 --- a/app/src/main/java/com/steamdeck/launcher/session/SessionFiles.kt +++ b/app/src/main/java/com/droiddeck/launcher/session/SessionFiles.kt @@ -1,16 +1,16 @@ -package com.steamdeck.launcher.session +package com.droiddeck.launcher.session import android.content.Context import android.os.Environment import android.util.Log -import com.steamdeck.launcher.core.FileUtils -import com.steamdeck.launcher.runtime.LinuxRuntime +import com.droiddeck.launcher.core.FileUtils +import com.droiddeck.launcher.runtime.LinuxRuntime import java.io.File /** Everything the session needs written into the runtime before it starts. */ object SessionFiles { private const val TAG = "SessionFiles" - private const val NO_PAD_SWITCH = "Download/steamdeck-no-pad" + private const val NO_PAD_SWITCH = "Download/droiddeck-no-pad" /** Where the DirectAudio driver lives inside the runtime; the wrappers get it as BL_DIRECTAUDIO. */ const val DIRECTAUDIO_DIR = "usr/local/lib/directaudio" @@ -55,11 +55,11 @@ object SessionFiles { // The desktop's launcher and labwc defaults, only where the desktop package is installed: // staging them into a runtime without it would make the desktop look present when it is not. val desktop = arrayOf( - "usr/local/bin/steamdeck-desktop" to "usr/local/bin/steamdeck-desktop", + "usr/local/bin/droiddeck-desktop" to "usr/local/bin/droiddeck-desktop", "etc/xdg/labwc/autostart" to "etc/xdg/labwc/autostart", "etc/xdg/labwc/rc.xml" to "etc/xdg/labwc/rc.xml", "etc/xdg/lxqt/panel.conf" to "etc/xdg/lxqt/panel.conf", - "usr/lib/firefox/defaults/pref/steamdeck.js" to "usr/lib/firefox/defaults/pref/steamdeck.js", + "usr/lib/firefox/defaults/pref/droiddeck.js" to "usr/lib/firefox/defaults/pref/droiddeck.js", ) // The patched gamescope (tools/gamescope): the runtime's own version rebuilt with the ARM64 // client fixes, over /usr/local/bin so it comes first in the session's PATH. Only when the diff --git a/app/src/main/java/com/steamdeck/launcher/session/SessionLogShare.kt b/app/src/main/java/com/droiddeck/launcher/session/SessionLogShare.kt similarity index 93% rename from app/src/main/java/com/steamdeck/launcher/session/SessionLogShare.kt rename to app/src/main/java/com/droiddeck/launcher/session/SessionLogShare.kt index 4ed4fc347..a7a1cdf83 100644 --- a/app/src/main/java/com/steamdeck/launcher/session/SessionLogShare.kt +++ b/app/src/main/java/com/droiddeck/launcher/session/SessionLogShare.kt @@ -1,10 +1,10 @@ -package com.steamdeck.launcher.session +package com.droiddeck.launcher.session import android.content.ClipData import android.content.Context import android.content.Intent import androidx.core.content.FileProvider -import com.steamdeck.launcher.runtime.LinuxRuntime +import com.droiddeck.launcher.runtime.LinuxRuntime import java.io.File import java.util.zip.ZipEntry import java.util.zip.ZipOutputStream @@ -25,7 +25,7 @@ object SessionLogShare { fun zipLatest(context: Context): File? { val folder = latest(context) ?: return null val out = File(context.cacheDir, "shared-logs").apply { deleteRecursively(); mkdirs() } - val zip = File(out, "SteamDeck-${folder.name}.zip") + val zip = File(out, "DroidDeck-${folder.name}.zip") ZipOutputStream(zip.outputStream().buffered()).use { z -> folder.walkTopDown().filter { it.isFile }.forEach { f -> z.putNextEntry(ZipEntry(folder.name + "/" + f.relativeTo(folder).path)) diff --git a/app/src/main/java/com/steamdeck/launcher/session/SessionPaths.kt b/app/src/main/java/com/droiddeck/launcher/session/SessionPaths.kt similarity index 93% rename from app/src/main/java/com/steamdeck/launcher/session/SessionPaths.kt rename to app/src/main/java/com/droiddeck/launcher/session/SessionPaths.kt index 55c5f99f0..0ae1ffb98 100644 --- a/app/src/main/java/com/steamdeck/launcher/session/SessionPaths.kt +++ b/app/src/main/java/com/droiddeck/launcher/session/SessionPaths.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.session +package com.droiddeck.launcher.session import android.content.Context import android.util.Log @@ -8,10 +8,10 @@ import java.util.Date import java.util.Locale /** - * One folder per session under `Download/SteamDeck/`, holding everything that session recorded: + * One folder per session under `Download/DroidDeck/`, holding everything that session recorded: * * ``` - * Download/SteamDeck/session-20260921-161256/ + * Download/DroidDeck/session-20260921-161256/ * device.txt what this device is, and every setting the session ran with * session.log the guest session: proot, gamescope, the client's stdout * wayland.log the app's compositor @@ -74,7 +74,7 @@ object SessionPaths { if (dir == ended) dir = null // A folder kept in the cache was never meant to outlive its session. if (ended != null && ended.path.startsWith(context.cacheDir.path)) { - com.steamdeck.launcher.core.FileUtils.delete(ended) + com.droiddeck.launcher.core.FileUtils.delete(ended) } } } diff --git a/app/src/main/java/com/steamdeck/launcher/session/SessionPrefs.kt b/app/src/main/java/com/droiddeck/launcher/session/SessionPrefs.kt similarity index 99% rename from app/src/main/java/com/steamdeck/launcher/session/SessionPrefs.kt rename to app/src/main/java/com/droiddeck/launcher/session/SessionPrefs.kt index 17a399e93..3555e4e7c 100644 --- a/app/src/main/java/com/steamdeck/launcher/session/SessionPrefs.kt +++ b/app/src/main/java/com/droiddeck/launcher/session/SessionPrefs.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.session +package com.droiddeck.launcher.session import android.content.Context @@ -220,7 +220,7 @@ object SessionPrefs { } /** - * Whether a session writes its folder under Download/SteamDeck. Off, the same logs are kept in + * Whether a session writes its folder under Download/DroidDeck. Off, the same logs are kept in * the app's cache for the session's lifetime (the scripts need somewhere to write) and thrown * away at the end, so nothing accumulates in Downloads. */ @@ -332,7 +332,7 @@ object SessionPrefs { /** * What the desktop shell composites with: pixman (software, the default - the Adreno stand-in * is not a DRM render node, so labwc's gbm allocator cannot use it), or gles2 / vulkan for a - * device that has a real node. `Download/steamdeck-wlr-renderer` still overrides it. + * device that has a real node. `Download/droiddeck-wlr-renderer` still overrides it. */ fun desktopRenderer(context: Context): String = prefs(context).getString("desktopRenderer", "pixman") ?: "pixman" diff --git a/app/src/main/java/com/steamdeck/launcher/session/SessionService.kt b/app/src/main/java/com/droiddeck/launcher/session/SessionService.kt similarity index 95% rename from app/src/main/java/com/steamdeck/launcher/session/SessionService.kt rename to app/src/main/java/com/droiddeck/launcher/session/SessionService.kt index d6d4aabca..07241da90 100644 --- a/app/src/main/java/com/steamdeck/launcher/session/SessionService.kt +++ b/app/src/main/java/com/droiddeck/launcher/session/SessionService.kt @@ -1,7 +1,7 @@ -package com.steamdeck.launcher.session +package com.droiddeck.launcher.session -import com.steamdeck.launcher.gpu.LinuxVulkanDriver -import com.steamdeck.launcher.gpu.LinuxVulkanDriverManager +import com.droiddeck.launcher.gpu.LinuxVulkanDriver +import com.droiddeck.launcher.gpu.LinuxVulkanDriverManager import android.app.Notification import android.app.NotificationChannel @@ -21,21 +21,21 @@ import android.os.Handler import android.os.Looper import android.os.PowerManager import android.util.Log -import com.steamdeck.launcher.R -import com.steamdeck.launcher.SessionActivity -import com.steamdeck.launcher.audio.DirectAudioRelayComponent -import com.steamdeck.launcher.audio.PulseAudioComponent -import com.steamdeck.launcher.core.CpuCores -import com.steamdeck.launcher.core.DeviceReport -import com.steamdeck.launcher.core.HostEnvironment -import com.steamdeck.launcher.core.SessionLogCapture -import com.steamdeck.launcher.core.NetworkReport -import com.steamdeck.launcher.core.SessionPart -import com.steamdeck.launcher.core.FileUtils -import com.steamdeck.launcher.core.HostProcess -import com.steamdeck.launcher.input.FakeInputWriter -import com.steamdeck.launcher.runtime.LinuxNetworkLinkComponent -import com.steamdeck.launcher.runtime.LinuxRuntime +import com.droiddeck.launcher.R +import com.droiddeck.launcher.SessionActivity +import com.droiddeck.launcher.audio.DirectAudioRelayComponent +import com.droiddeck.launcher.audio.PulseAudioComponent +import com.droiddeck.launcher.core.CpuCores +import com.droiddeck.launcher.core.DeviceReport +import com.droiddeck.launcher.core.HostEnvironment +import com.droiddeck.launcher.core.SessionLogCapture +import com.droiddeck.launcher.core.NetworkReport +import com.droiddeck.launcher.core.SessionPart +import com.droiddeck.launcher.core.FileUtils +import com.droiddeck.launcher.core.HostProcess +import com.droiddeck.launcher.input.FakeInputWriter +import com.droiddeck.launcher.runtime.LinuxNetworkLinkComponent +import com.droiddeck.launcher.runtime.LinuxRuntime import java.io.File import java.text.SimpleDateFormat import java.util.Date @@ -53,7 +53,7 @@ import java.util.Locale * backgrounded download does not throttle to nothing. All three are Bannerlator's recipe, where * each was added to fix a failure seen on a device. * - * The activity comes and goes on top of this; see [com.steamdeck.launcher.wayland.CompositorHost]. + * The activity comes and goes on top of this; see [com.droiddeck.launcher.wayland.CompositorHost]. */ class SessionService : Service() { private val components = java.util.concurrent.CopyOnWriteArrayList() @@ -308,11 +308,11 @@ class SessionService : Service() { // default preset sets nothing, which is what every session ran on before. if (SessionState.mode == MODE_STEAM) { val preset = SessionPrefs.fexPreset(this) - val vars = com.steamdeck.launcher.core.FexPreset.env(preset) + val vars = com.droiddeck.launcher.core.FexPreset.env(preset) vars.forEach { guest.add(it) } if (vars.isNotEmpty()) Log.i(TAG, "fex preset $preset: ${vars.joinToString(" ")}") } - // Anything else, for a device that cannot be reached with a debugger: Downloads/steamdeck-env + // Anything else, for a device that cannot be reached with a debugger: Downloads/droiddeck-env // holds KEY=VALUE lines that go into the session's environment as written, after ours, so a // line here wins. Zink and Turnip tunables (ZINK_DESCRIPTORS=lazy, MESA_*), gamescope's, // the client's - whatever the experiment needs, without a build per attempt. @@ -411,18 +411,18 @@ class SessionService : Service() { // DRM render node. Ours is a KGSL stand-in that gbm cannot use - labwc dies at "unable to // create allocator" - so the desktop shell is composited by pixman (software, a shm // allocator, no DRM). Accelerated clients on it pay a CPU copy; a 2D emulator does not - // notice, a demanding one does. steamdeck-wlr-renderer in Downloads (pixman/vulkan/gles2) + // notice, a demanding one does. droiddeck-wlr-renderer in Downloads (pixman/vulkan/gles2) // overrides it, for trying acceleration on a device that has a real node. if (SessionState.mode == MODE_DESKTOP) { - val override = File(Environment.getExternalStorageDirectory(), "Download/steamdeck-wlr-renderer") + val override = File(Environment.getExternalStorageDirectory(), "Download/droiddeck-wlr-renderer") .takeIf { it.isFile }?.let { FileUtils.readString(it)?.trim() } guest.add("BL_WLR_RENDERER=" + (override?.takeIf { it.isNotEmpty() } ?: SessionPrefs.desktopRenderer(this))) } // The user's own games, for the runtime's shortcuts writer to put in the client's library // before the client starts (see frontend/AddedGames and bannerlator-steam-shortcuts). if (SessionState.mode == MODE_STEAM) { - val added = com.steamdeck.launcher.frontend.AddedGames.scan(this) - val listing = com.steamdeck.launcher.frontend.AddedGames.writeListing(this, added) + val added = com.droiddeck.launcher.frontend.AddedGames.scan(this) + val listing = com.droiddeck.launcher.frontend.AddedGames.writeListing(this, added) guest.add("BL_ADDED_GAMES=" + listing.path) if (added.isNotEmpty()) Log.i(TAG, "added games: " + added.joinToString { "${it.name} (${it.exe.name})" }) } @@ -505,7 +505,7 @@ class SessionService : Service() { } // The user's own games folder (the Steam cog's "Added games"), bound at a fixed place so // the shortcuts the app writes point somewhere whatever storage the folder is on. - for (root in com.steamdeck.launcher.frontend.AddedGames.roots(this)) { + for (root in com.droiddeck.launcher.frontend.AddedGames.roots(this)) { if (root.host.isDirectory && root.host.canRead()) { File(LinuxRuntime.rootDir(this), root.guest.removePrefix("/")).mkdirs() binds.add(root.host.path + ":" + root.guest) @@ -707,7 +707,7 @@ class SessionService : Service() { } } Log.i(TAG, "launch request from the session: Steam $ui" + (if (url.isNotEmpty()) " $url" else "")) - val next = Intent(this@SessionService, com.steamdeck.launcher.SessionActivity::class.java) + val next = Intent(this@SessionService, com.droiddeck.launcher.SessionActivity::class.java) .putExtra(EXTRA_MODE, MODE_STEAM) .putExtra(EXTRA_STEAM_UI, ui) .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) @@ -857,7 +857,7 @@ class SessionService : Service() { try { if (wakeLock?.isHeld != true) { val power = getSystemService(Context.POWER_SERVICE) as? PowerManager - wakeLock = power?.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "SteamDeck:session")?.apply { + wakeLock = power?.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "DroidDeck:session")?.apply { setReferenceCounted(false) acquire(12L * 60L * 60L * 1000L) } @@ -870,7 +870,7 @@ class SessionService : Service() { val wifi = applicationContext.getSystemService(Context.WIFI_SERVICE) as? WifiManager @Suppress("DEPRECATION") // deprecated from API 29, still honoured; targetSdk is 28 if (wifiLock?.isHeld != true) { - wifiLock = wifi?.createWifiLock(WifiManager.WIFI_MODE_FULL_HIGH_PERF, "SteamDeck:session-wifi") + wifiLock = wifi?.createWifiLock(WifiManager.WIFI_MODE_FULL_HIGH_PERF, "DroidDeck:session-wifi") ?.apply { setReferenceCounted(false) acquire() @@ -954,27 +954,27 @@ class SessionService : Service() { companion object { private const val TAG = "SessionService" /** Downloads file whose contents become TU_DEBUG inside the session, e.g. "sysmem". */ - private const val TU_DEBUG_SWITCH = "Download/steamdeck-tu-debug" + private const val TU_DEBUG_SWITCH = "Download/droiddeck-tu-debug" /** Downloads file of KEY=VALUE lines added to the session environment verbatim. */ - private const val ENV_SWITCH = "Download/steamdeck-env" + private const val ENV_SWITCH = "Download/droiddeck-env" private const val CHANNEL_ID = "session" private const val NOTIFICATION_ID = 1001 - const val ACTION_STOP = "com.steamdeck.launcher.STOP_SESSION" - const val ACTION_RESUME = "com.steamdeck.launcher.RESUME_SESSION" - const val ACTION_HOME_GUIDE = "com.steamdeck.launcher.HOME_GUIDE" - private const val ACTION_ACTIVITY_VISIBLE = "com.steamdeck.launcher.ACTIVITY_VISIBLE" - private const val ACTION_ACTIVITY_HIDDEN = "com.steamdeck.launcher.ACTIVITY_HIDDEN" - private const val ACTION_TRACK_AUXILIARY = "com.steamdeck.launcher.TRACK_AUXILIARY" - private const val ACTION_STOP_AUXILIARY = "com.steamdeck.launcher.STOP_AUXILIARY" - private const val ACTION_AUXILIARY_EXITED = "com.steamdeck.launcher.AUXILIARY_EXITED" + const val ACTION_STOP = "com.droiddeck.launcher.STOP_SESSION" + const val ACTION_RESUME = "com.droiddeck.launcher.RESUME_SESSION" + const val ACTION_HOME_GUIDE = "com.droiddeck.launcher.HOME_GUIDE" + private const val ACTION_ACTIVITY_VISIBLE = "com.droiddeck.launcher.ACTIVITY_VISIBLE" + private const val ACTION_ACTIVITY_HIDDEN = "com.droiddeck.launcher.ACTIVITY_HIDDEN" + private const val ACTION_TRACK_AUXILIARY = "com.droiddeck.launcher.TRACK_AUXILIARY" + private const val ACTION_STOP_AUXILIARY = "com.droiddeck.launcher.STOP_AUXILIARY" + private const val ACTION_AUXILIARY_EXITED = "com.droiddeck.launcher.AUXILIARY_EXITED" private const val EXTRA_AUXILIARY_PID = "auxiliaryPid" /** Command lines that can only belong to a session of ours. */ private val STRAGGLERS = listOf("bannerlator-session", "gamescope", "Xwayland", "steamrtarm64", "steamwebhelper", "linuxfs/opt/android-host/proot", "pulseaudio/libpulseaudio.so") /** How long proot gets to run its own cleanup before it is killed outright. */ private const val GRACE_MS = 1200L - private const val NO_PAD_SWITCH = "Download/steamdeck-no-pad" - private const val PAD_LOG_SWITCH = "Download/steamdeck-pad-log" + private const val NO_PAD_SWITCH = "Download/droiddeck-no-pad" + private const val PAD_LOG_SWITCH = "Download/droiddeck-pad-log" const val EXTRA_MODE = "mode" const val MODE_STEAM = "steam" diff --git a/app/src/main/java/com/steamdeck/launcher/session/SessionState.kt b/app/src/main/java/com/droiddeck/launcher/session/SessionState.kt similarity index 98% rename from app/src/main/java/com/steamdeck/launcher/session/SessionState.kt rename to app/src/main/java/com/droiddeck/launcher/session/SessionState.kt index 44dfdb4a7..d2d3349c5 100644 --- a/app/src/main/java/com/steamdeck/launcher/session/SessionState.kt +++ b/app/src/main/java/com/droiddeck/launcher/session/SessionState.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.session +package com.droiddeck.launcher.session import java.io.File import androidx.compose.runtime.getValue diff --git a/app/src/main/java/com/steamdeck/launcher/session/SessionSuspendController.kt b/app/src/main/java/com/droiddeck/launcher/session/SessionSuspendController.kt similarity index 99% rename from app/src/main/java/com/steamdeck/launcher/session/SessionSuspendController.kt rename to app/src/main/java/com/droiddeck/launcher/session/SessionSuspendController.kt index e882dbf74..662d44e71 100644 --- a/app/src/main/java/com/steamdeck/launcher/session/SessionSuspendController.kt +++ b/app/src/main/java/com/droiddeck/launcher/session/SessionSuspendController.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.session +package com.droiddeck.launcher.session import android.os.Process import java.io.File diff --git a/app/src/main/java/com/steamdeck/launcher/session/SessionTerminal.kt b/app/src/main/java/com/droiddeck/launcher/session/SessionTerminal.kt similarity index 92% rename from app/src/main/java/com/steamdeck/launcher/session/SessionTerminal.kt rename to app/src/main/java/com/droiddeck/launcher/session/SessionTerminal.kt index 6c1d10c95..4db8f8671 100644 --- a/app/src/main/java/com/steamdeck/launcher/session/SessionTerminal.kt +++ b/app/src/main/java/com/droiddeck/launcher/session/SessionTerminal.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.session +package com.droiddeck.launcher.session import com.termux.terminal.TerminalSession import com.termux.terminal.TerminalSessionClient @@ -30,7 +30,7 @@ object SessionTerminal { return TerminalSession( current.command.first(), current.workingDirectory, current.command, current.hostEnvironment, 3000, client, - ).also { it.mSessionName = "SteamDeck Linux shell" } + ).also { it.mSessionName = "DroidDeck Linux shell" } } fun clear(generation: Int? = null) { diff --git a/app/src/main/java/com/steamdeck/launcher/ui/CursorOverlay.kt b/app/src/main/java/com/droiddeck/launcher/ui/CursorOverlay.kt similarity index 97% rename from app/src/main/java/com/steamdeck/launcher/ui/CursorOverlay.kt rename to app/src/main/java/com/droiddeck/launcher/ui/CursorOverlay.kt index fb7982434..3854526b3 100644 --- a/app/src/main/java/com/steamdeck/launcher/ui/CursorOverlay.kt +++ b/app/src/main/java/com/droiddeck/launcher/ui/CursorOverlay.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.ui +package com.droiddeck.launcher.ui import androidx.compose.foundation.Canvas import androidx.compose.foundation.layout.fillMaxSize diff --git a/app/src/main/java/com/steamdeck/launcher/ui/DriverPage.kt b/app/src/main/java/com/droiddeck/launcher/ui/DriverPage.kt similarity index 99% rename from app/src/main/java/com/steamdeck/launcher/ui/DriverPage.kt rename to app/src/main/java/com/droiddeck/launcher/ui/DriverPage.kt index 591926d1b..6f75b9b67 100644 --- a/app/src/main/java/com/steamdeck/launcher/ui/DriverPage.kt +++ b/app/src/main/java/com/droiddeck/launcher/ui/DriverPage.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.ui +package com.droiddeck.launcher.ui import androidx.activity.compose.BackHandler import androidx.compose.foundation.background diff --git a/app/src/main/java/com/steamdeck/launcher/ui/FrontEndScreen.kt b/app/src/main/java/com/droiddeck/launcher/ui/FrontEndScreen.kt similarity index 99% rename from app/src/main/java/com/steamdeck/launcher/ui/FrontEndScreen.kt rename to app/src/main/java/com/droiddeck/launcher/ui/FrontEndScreen.kt index fb374b5a5..e4acabf7f 100644 --- a/app/src/main/java/com/steamdeck/launcher/ui/FrontEndScreen.kt +++ b/app/src/main/java/com/droiddeck/launcher/ui/FrontEndScreen.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.ui +package com.droiddeck.launcher.ui import android.graphics.Bitmap import android.os.Build @@ -105,9 +105,9 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.compose.ui.zIndex import coil.compose.AsyncImage -import com.steamdeck.launcher.R -import com.steamdeck.launcher.frontend.Library -import com.steamdeck.launcher.gpu.FrameGen +import com.droiddeck.launcher.R +import com.droiddeck.launcher.frontend.Library +import com.droiddeck.launcher.gpu.FrameGen import java.io.File import kotlin.math.roundToInt @@ -134,7 +134,7 @@ class FrontEndState( val theme: String = Themes.PAPER, val isHomeApp: Boolean = false, val defaultHomeLabel: String? = null, - val androidApps: List = emptyList(), + val androidApps: List = emptyList(), val packages: List? = null, val packageCatalogLoading: Boolean = false, val packageBusyId: String? = null, @@ -168,7 +168,7 @@ class FrontEndActions( val onPageBack: () -> Unit = {}, val onTheme: (String) -> Unit = {}, val onHomeApp: () -> Unit = {}, - val onAndroidApp: (com.steamdeck.launcher.HomeApp.LaunchableApp) -> Unit = {}, + val onAndroidApp: (com.droiddeck.launcher.HomeApp.LaunchableApp) -> Unit = {}, ) @@ -278,7 +278,7 @@ private fun Rail( Image(painterResource(R.drawable.logo), null, modifier = Modifier.size(30.dp)) Spacer(Modifier.width(10.dp)) Column { - Text("SteamDeck", fontSize = 18.sp, fontWeight = FontWeight.Bold, color = colors.onBackground) + Text("DroidDeck", fontSize = 18.sp, fontWeight = FontWeight.Bold, color = colors.onBackground) val status = when { s.busy -> if (s.percent >= 0) "${s.stage} ${s.percent}%" else s.stage !s.ready -> "runtime not installed" diff --git a/app/src/main/java/com/steamdeck/launcher/ui/MainScreen.kt b/app/src/main/java/com/droiddeck/launcher/ui/MainScreen.kt similarity index 98% rename from app/src/main/java/com/steamdeck/launcher/ui/MainScreen.kt rename to app/src/main/java/com/droiddeck/launcher/ui/MainScreen.kt index 79bf8fa84..5fb8fc0e6 100644 --- a/app/src/main/java/com/steamdeck/launcher/ui/MainScreen.kt +++ b/app/src/main/java/com/droiddeck/launcher/ui/MainScreen.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.ui +package com.droiddeck.launcher.ui import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer diff --git a/app/src/main/java/com/steamdeck/launcher/ui/ModeSettingsDialog.kt b/app/src/main/java/com/droiddeck/launcher/ui/ModeSettingsDialog.kt similarity index 98% rename from app/src/main/java/com/steamdeck/launcher/ui/ModeSettingsDialog.kt rename to app/src/main/java/com/droiddeck/launcher/ui/ModeSettingsDialog.kt index c2f2bccbb..8c3d99abb 100644 --- a/app/src/main/java/com/steamdeck/launcher/ui/ModeSettingsDialog.kt +++ b/app/src/main/java/com/droiddeck/launcher/ui/ModeSettingsDialog.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.ui +package com.droiddeck.launcher.ui import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.padding @@ -14,9 +14,9 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import com.steamdeck.launcher.core.FexPreset -import com.steamdeck.launcher.session.SessionPrefs -import com.steamdeck.launcher.session.SessionService +import com.droiddeck.launcher.core.FexPreset +import com.droiddeck.launcher.session.SessionPrefs +import com.droiddeck.launcher.session.SessionService /** [tag] is shown beside the name: [BUNDLED], [DOWNLOADED], [IMPORTED], or "" for Auto / Runtime default. */ class DriverRow(val id: String, val name: String, val detail: String, val removable: Boolean, val tag: String = "") { @@ -179,7 +179,7 @@ fun ModeSettingsPage(s: ModeSettings, a: ModeSettingsActions) { ChoiceRow( host, "shape", "Shape", if (custom != null) "Set by the custom resolution." else "The panel's shape stays at 16:9 or wider; pick Exactly this panel for a 4:3 or 3:2 screen.", - com.steamdeck.launcher.session.SessionPrefs.shapeChoices, s.shapeMode, enabled = custom == null, onPick = a.onShape, + com.droiddeck.launcher.session.SessionPrefs.shapeChoices, s.shapeMode, enabled = custom == null, onPick = a.onShape, ) if (editCustom) CustomResolutionDialog( initial = custom, diff --git a/app/src/main/java/com/steamdeck/launcher/ui/PackageRow.kt b/app/src/main/java/com/droiddeck/launcher/ui/PackageRow.kt similarity index 81% rename from app/src/main/java/com/steamdeck/launcher/ui/PackageRow.kt rename to app/src/main/java/com/droiddeck/launcher/ui/PackageRow.kt index d83d2a0e6..2bf44f30c 100644 --- a/app/src/main/java/com/steamdeck/launcher/ui/PackageRow.kt +++ b/app/src/main/java/com/droiddeck/launcher/ui/PackageRow.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.ui +package com.droiddeck.launcher.ui /** Package metadata shown on an emulator's own detail page. */ class PackageRow( diff --git a/app/src/main/java/com/steamdeck/launcher/ui/PerformanceDialog.kt b/app/src/main/java/com/droiddeck/launcher/ui/PerformanceDialog.kt similarity index 98% rename from app/src/main/java/com/steamdeck/launcher/ui/PerformanceDialog.kt rename to app/src/main/java/com/droiddeck/launcher/ui/PerformanceDialog.kt index e984a242d..7fac4329b 100644 --- a/app/src/main/java/com/steamdeck/launcher/ui/PerformanceDialog.kt +++ b/app/src/main/java/com/droiddeck/launcher/ui/PerformanceDialog.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.ui +package com.droiddeck.launcher.ui import androidx.compose.foundation.background import androidx.compose.foundation.border @@ -89,7 +89,7 @@ fun PerformancePage( ) ToggleRow( host, "deck", "Steam Deck mode", - "Runs the client with -steamdeck. SteamOS helpers and battery info are provided.", + "Runs the client with -droiddeck. SteamOS helpers and battery info are provided.", steamDeckMode, onChange = onSteamDeckMode, ) } diff --git a/app/src/main/java/com/steamdeck/launcher/ui/ProtonPage.kt b/app/src/main/java/com/droiddeck/launcher/ui/ProtonPage.kt similarity index 99% rename from app/src/main/java/com/steamdeck/launcher/ui/ProtonPage.kt rename to app/src/main/java/com/droiddeck/launcher/ui/ProtonPage.kt index 5fe1171b4..46b946c49 100644 --- a/app/src/main/java/com/steamdeck/launcher/ui/ProtonPage.kt +++ b/app/src/main/java/com/droiddeck/launcher/ui/ProtonPage.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.ui +package com.droiddeck.launcher.ui import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column diff --git a/app/src/main/java/com/steamdeck/launcher/ui/RomsDialog.kt b/app/src/main/java/com/droiddeck/launcher/ui/RomsDialog.kt similarity index 98% rename from app/src/main/java/com/steamdeck/launcher/ui/RomsDialog.kt rename to app/src/main/java/com/droiddeck/launcher/ui/RomsDialog.kt index d41f69afb..13396135c 100644 --- a/app/src/main/java/com/steamdeck/launcher/ui/RomsDialog.kt +++ b/app/src/main/java/com/droiddeck/launcher/ui/RomsDialog.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.ui +package com.droiddeck.launcher.ui import androidx.compose.foundation.layout.Column import androidx.compose.ui.Modifier diff --git a/app/src/main/java/com/steamdeck/launcher/ui/SecondScreenPresentation.kt b/app/src/main/java/com/droiddeck/launcher/ui/SecondScreenPresentation.kt similarity index 97% rename from app/src/main/java/com/steamdeck/launcher/ui/SecondScreenPresentation.kt rename to app/src/main/java/com/droiddeck/launcher/ui/SecondScreenPresentation.kt index f66a4ebf6..818d72624 100644 --- a/app/src/main/java/com/steamdeck/launcher/ui/SecondScreenPresentation.kt +++ b/app/src/main/java/com/droiddeck/launcher/ui/SecondScreenPresentation.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.ui +package com.droiddeck.launcher.ui import android.app.Presentation import android.content.ClipboardManager @@ -21,14 +21,14 @@ import android.widget.FrameLayout import android.widget.HorizontalScrollView import android.widget.LinearLayout import android.widget.TextView -import com.steamdeck.launcher.input.KeyboardHost -import com.steamdeck.launcher.input.PointerGestures -import com.steamdeck.launcher.input.SecondScreenMode -import com.steamdeck.launcher.input.TouchpadGestures -import com.steamdeck.launcher.SessionActivity -import com.steamdeck.launcher.session.SessionService -import com.steamdeck.launcher.session.SessionState -import com.steamdeck.launcher.session.SessionTerminal +import com.droiddeck.launcher.input.KeyboardHost +import com.droiddeck.launcher.input.PointerGestures +import com.droiddeck.launcher.input.SecondScreenMode +import com.droiddeck.launcher.input.TouchpadGestures +import com.droiddeck.launcher.SessionActivity +import com.droiddeck.launcher.session.SessionService +import com.droiddeck.launcher.session.SessionState +import com.droiddeck.launcher.session.SessionTerminal import com.termux.terminal.TerminalEmulator import com.termux.terminal.TerminalSession import com.termux.terminal.TerminalSessionClient diff --git a/app/src/main/java/com/steamdeck/launcher/ui/SessionOverlay.kt b/app/src/main/java/com/droiddeck/launcher/ui/SessionOverlay.kt similarity index 98% rename from app/src/main/java/com/steamdeck/launcher/ui/SessionOverlay.kt rename to app/src/main/java/com/droiddeck/launcher/ui/SessionOverlay.kt index cad64176b..83958d9c8 100644 --- a/app/src/main/java/com/steamdeck/launcher/ui/SessionOverlay.kt +++ b/app/src/main/java/com/droiddeck/launcher/ui/SessionOverlay.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.ui +package com.droiddeck.launcher.ui import androidx.compose.foundation.Image import androidx.compose.foundation.background @@ -35,8 +35,8 @@ import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import com.steamdeck.launcher.R -import com.steamdeck.launcher.HomeApp +import com.droiddeck.launcher.R +import com.droiddeck.launcher.HomeApp import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.animateColorAsState import androidx.compose.animation.core.Spring @@ -64,11 +64,11 @@ import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.semantics import androidx.compose.ui.text.font.FontWeight -import com.steamdeck.launcher.core.FexPreset -import com.steamdeck.launcher.gpu.FrameGen -import com.steamdeck.launcher.session.SessionPrefs -import com.steamdeck.launcher.input.SecondScreenDisplay -import com.steamdeck.launcher.input.SecondScreenMode +import com.droiddeck.launcher.core.FexPreset +import com.droiddeck.launcher.gpu.FrameGen +import com.droiddeck.launcher.session.SessionPrefs +import com.droiddeck.launcher.input.SecondScreenDisplay +import com.droiddeck.launcher.input.SecondScreenMode import kotlinx.coroutines.flow.collect @Composable diff --git a/app/src/main/java/com/steamdeck/launcher/ui/SettingsWidgets.kt b/app/src/main/java/com/droiddeck/launcher/ui/SettingsWidgets.kt similarity index 99% rename from app/src/main/java/com/steamdeck/launcher/ui/SettingsWidgets.kt rename to app/src/main/java/com/droiddeck/launcher/ui/SettingsWidgets.kt index d0fa0c6a8..eaae923f3 100644 --- a/app/src/main/java/com/steamdeck/launcher/ui/SettingsWidgets.kt +++ b/app/src/main/java/com/droiddeck/launcher/ui/SettingsWidgets.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.ui +package com.droiddeck.launcher.ui import androidx.compose.animation.AnimatedContent import androidx.compose.animation.AnimatedVisibility diff --git a/app/src/main/java/com/steamdeck/launcher/ui/Theme.kt b/app/src/main/java/com/droiddeck/launcher/ui/Theme.kt similarity index 95% rename from app/src/main/java/com/steamdeck/launcher/ui/Theme.kt rename to app/src/main/java/com/droiddeck/launcher/ui/Theme.kt index 58217da6c..16eb84857 100644 --- a/app/src/main/java/com/steamdeck/launcher/ui/Theme.kt +++ b/app/src/main/java/com/droiddeck/launcher/ui/Theme.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.ui +package com.droiddeck.launcher.ui import androidx.compose.material3.MaterialTheme import androidx.compose.material3.darkColorScheme @@ -7,7 +7,7 @@ import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.staticCompositionLocalOf import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext -import com.steamdeck.launcher.session.SessionPrefs +import com.droiddeck.launcher.session.SessionPrefs class Palette( val id: String, val label: String, val detail: String, @@ -52,7 +52,7 @@ object Themes { val LocalPalette = staticCompositionLocalOf { Themes.byId(Themes.PAPER) } @Composable -fun SteamDeckTheme(theme: String? = null, content: @Composable () -> Unit) { +fun DroidDeckTheme(theme: String? = null, content: @Composable () -> Unit) { val id = theme ?: SessionPrefs.theme(LocalContext.current) val p = Themes.byId(id) val scheme = darkColorScheme( diff --git a/app/src/main/java/com/steamdeck/launcher/wayland/CompositorHost.kt b/app/src/main/java/com/droiddeck/launcher/wayland/CompositorHost.kt similarity index 99% rename from app/src/main/java/com/steamdeck/launcher/wayland/CompositorHost.kt rename to app/src/main/java/com/droiddeck/launcher/wayland/CompositorHost.kt index 109d44549..8f72523d9 100644 --- a/app/src/main/java/com/steamdeck/launcher/wayland/CompositorHost.kt +++ b/app/src/main/java/com/droiddeck/launcher/wayland/CompositorHost.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.wayland +package com.droiddeck.launcher.wayland import android.view.Choreographer import android.view.Surface diff --git a/app/src/main/java/com/steamdeck/launcher/wayland/HdrSupport.kt b/app/src/main/java/com/droiddeck/launcher/wayland/HdrSupport.kt similarity index 98% rename from app/src/main/java/com/steamdeck/launcher/wayland/HdrSupport.kt rename to app/src/main/java/com/droiddeck/launcher/wayland/HdrSupport.kt index b3e2a54d6..aeccd398c 100644 --- a/app/src/main/java/com/steamdeck/launcher/wayland/HdrSupport.kt +++ b/app/src/main/java/com/droiddeck/launcher/wayland/HdrSupport.kt @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.wayland +package com.droiddeck.launcher.wayland import android.content.Context import android.os.Build diff --git a/app/src/main/java/com/steamdeck/launcher/wayland/WaylandCompositor.java b/app/src/main/java/com/droiddeck/launcher/wayland/WaylandCompositor.java similarity index 99% rename from app/src/main/java/com/steamdeck/launcher/wayland/WaylandCompositor.java rename to app/src/main/java/com/droiddeck/launcher/wayland/WaylandCompositor.java index a5be7bbc7..52afd790f 100644 --- a/app/src/main/java/com/steamdeck/launcher/wayland/WaylandCompositor.java +++ b/app/src/main/java/com/droiddeck/launcher/wayland/WaylandCompositor.java @@ -1,4 +1,4 @@ -package com.steamdeck.launcher.wayland; +package com.droiddeck.launcher.wayland; import android.view.Surface; @@ -62,7 +62,7 @@ public final class WaylandCompositor { /** Invoked from native (banner_on_game_frame) for every frame of the HUD's window. */ @SuppressWarnings("unused") static void onGameFrame() { - com.steamdeck.launcher.session.PerfHints.onFrame(); + com.droiddeck.launcher.session.PerfHints.onFrame(); GameListener l = gameListener; if (l != null) l.onGameFrame(); } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3aab41557..6e5fae82f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,6 +1,6 @@ - SteamDeck + DroidDeck First run downloads Steam. This may take a few minutes. Steam keeps running in the background. diff --git a/docs/progress-log.md b/docs/progress-log.md index ac6c75266..751ecfb86 100644 --- a/docs/progress-log.md +++ b/docs/progress-log.md @@ -1,11 +1,20 @@ -# SteamDeck - Progress Log +# DroidDeck - Progress Log -Running engineering log for the SteamDeck app (`com.steamdeck.launcher`). Newest state first, then +Running engineering log for the DroidDeck app (`com.droiddeck.launcher`; called SteamDeck, +`com.steamdeck.launcher`, until 2026-09-23 - entries below that date keep the old name). Newest state first, then the timeline, then lessons and backlog. Companion to the README (what the app *does*) and to `docs/releases/` (what each version said) - this is *how it got here and where it stands*. --- +## 2026-09-23 (evening) - renamed SteamDeck → DroidDeck + +- **App name, app ID and code package**: DroidDeck, `com.droiddeck.launcher` (was `com.steamdeck.launcher`), sources under `app/src/main/java/com/droiddeck/launcher`, the 68 JNI functions renamed with them. A new app ID means DroidDeck installs **beside** SteamDeck, not over it: the runtime, the Steam sign-in and the settings start fresh. +- **Downloads**: session logs go to `Download/DroidDeck/`; the switch files are `droiddeck-env`, `-osc`, `-driver`, `-tu-debug`, `-no-pad`, `-pad-log`, `-no-hud`, `-wlr-renderer`. The old `steamdeck-*` names are not read. +- **Inside the runtime**: `droiddeck-desktop`, Firefox's `droiddeck.js`, `~/.droiddeck-desktop-debug`, `~/.cache/droiddeck`, the shortcuts tag `droiddeck-app`, `X-DroidDeck-AppId`, the `droiddeck-rumble` socket. "Desktop installed" now tests for `usr/bin/labwc` (it tested for the launcher, which the app stages itself). +- **Kept on purpose** - Valve's Steam Deck: the `-steamdeck` flag, `steamdeck_publicbeta`/`steamdeck_stable`, "Steam Deck mode", `steamdeck-packages.steamos.cloud`. And names inside the hosted desktop package: `steamdeck.png`, `steamdeck-steam(.desktop)`, `steamdeck-bigpicture.desktop` (renaming them means re-hosting it). +- CI artifact `droiddeck-apk`; a stray committed `__pycache__/*.pyc` removed. + ## 2026-09-23 (afternoon) - main `90c7574`: first-run onboarding, Desktop & apps page, 4:3 display State: **main = `90c7574`** (PR #14 merge), main build run 35895701784. No tag, no release; next version is still open. **Nothing below is device-tested** except the audio default (Kurt, AYN Thor). diff --git a/settings.gradle b/settings.gradle index 5a76e5748..d61486498 100644 --- a/settings.gradle +++ b/settings.gradle @@ -14,5 +14,5 @@ dependencyResolutionManagement { } } -rootProject.name = "SteamDeck" +rootProject.name = "DroidDeck" include ':app' diff --git a/tools/aaudio-sink/config.h b/tools/aaudio-sink/config.h index 352849d8d..4615ca53f 100644 --- a/tools/aaudio-sink/config.h +++ b/tools/aaudio-sink/config.h @@ -1,8 +1,8 @@ /* The handful of build-time facts PulseAudio 13's headers read, for compiling one module against * the upstream source tree without running its configure. The daemon and libraries the app ships * were built for the same target (Android arm64, bionic), so these match them. */ -#ifndef STEAMDECK_PA_CONFIG_H -#define STEAMDECK_PA_CONFIG_H +#ifndef DROIDDECK_PA_CONFIG_H +#define DROIDDECK_PA_CONFIG_H #define PACKAGE "pulseaudio" #define PACKAGE_NAME "pulseaudio" #define PACKAGE_VERSION "13.0" diff --git a/tools/aaudio-sink/ltdl.h b/tools/aaudio-sink/ltdl.h index 7195db62f..84b3985c0 100644 --- a/tools/aaudio-sink/ltdl.h +++ b/tools/aaudio-sink/ltdl.h @@ -1,6 +1,6 @@ /* pulsecore/module.h keeps a libltdl handle in pa_module; the module never touches it, so the * handle type is all that is needed here. */ -#ifndef STEAMDECK_LTDL_STUB_H -#define STEAMDECK_LTDL_STUB_H +#ifndef DROIDDECK_LTDL_STUB_H +#define DROIDDECK_LTDL_STUB_H typedef void *lt_dlhandle; #endif diff --git a/tools/aaudio-sink/module-aaudio-sink.c b/tools/aaudio-sink/module-aaudio-sink.c index 8246860d4..657eeb278 100644 --- a/tools/aaudio-sink/module-aaudio-sink.c +++ b/tools/aaudio-sink/module-aaudio-sink.c @@ -1,5 +1,5 @@ /* - * module-aaudio-sink: a PulseAudio 13 sink on Android's AAudio, for the SteamDeck app. + * module-aaudio-sink: a PulseAudio 13 sink on Android's AAudio, for the DroidDeck app. * * The daemon's IO thread pulls rendered audio from the sink one burst at a time and hands it to * a blocking AAudio output stream; the stream's own buffer paces the thread, and the latency the diff --git a/tools/build_local.sh b/tools/build_local.sh index 186aea6cd..450fef9cc 100755 --- a/tools/build_local.sh +++ b/tools/build_local.sh @@ -4,7 +4,7 @@ set -euo pipefail repo_root=$(CDPATH= cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd) sdk_dir=${ANDROID_HOME:-${ANDROID_SDK_ROOT:-"${HOME}/Library/Android/sdk"}} java_dir=${JAVA_HOME:-"/opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home"} -image_name=${STEAMDECK_BUILD_IMAGE:-steamdeck-local-cross:24.04-v2} +image_name=${DROIDDECK_BUILD_IMAGE:-droiddeck-local-cross:24.04-v2} if [[ ! -x "${sdk_dir}/platform-tools/adb" ]]; then echo "Android SDK not found at ${sdk_dir}; set ANDROID_HOME or ANDROID_SDK_ROOT." >&2 @@ -40,12 +40,12 @@ docker run --rm --platform linux/amd64 \ for script in tools/linuxfs/overlay/usr/local/bin/bannerlator-*; do install -Dm644 "$script" "$d/usr/local/bin/$(basename "$script")" done - install -Dm644 tools/linuxfs/desktop/steamdeck-desktop "$d/usr/local/bin/steamdeck-desktop" + install -Dm644 tools/linuxfs/desktop/droiddeck-desktop "$d/usr/local/bin/droiddeck-desktop" install -Dm644 tools/linuxfs/desktop/autostart "$d/etc/xdg/labwc/autostart" install -Dm644 tools/linuxfs/desktop/rc.xml "$d/etc/xdg/labwc/rc.xml" install -Dm644 tools/linuxfs/desktop/panel.conf "$d/etc/xdg/lxqt/panel.conf" - install -Dm644 tools/linuxfs/desktop/firefox-steamdeck.js \ - "$d/usr/lib/firefox/defaults/pref/steamdeck.js" + install -Dm644 tools/linuxfs/desktop/firefox-droiddeck.js \ + "$d/usr/lib/firefox/defaults/pref/droiddeck.js" need=$(aarch64-linux-gnu-readelf -d "$d/libfakeinput.so" | sed -n "s/.*NEEDED.*\\[\\(.*\\)\\]/\\1/p") for bad in libstdc++.so.6 libgcc_s.so.1; do @@ -76,13 +76,13 @@ docker run --rm --platform linux/amd64 \ export ANDROID_HOME="${sdk_dir}" export ANDROID_SDK_ROOT="${sdk_dir}" export JAVA_HOME="${java_dir}" -ndk_version=${STEAMDECK_NDK_VERSION:-} +ndk_version=${DROIDDECK_NDK_VERSION:-} if [[ -z "${ndk_version}" ]]; then ndk_path=$(find "${sdk_dir}/ndk" -mindepth 1 -maxdepth 1 -type d -print | sort -V | tail -1) ndk_version=${ndk_path##*/} fi if [[ -z "${ndk_version}" || ! -d "${sdk_dir}/ndk/${ndk_version}" ]]; then - echo "No Android NDK found under ${sdk_dir}/ndk; set STEAMDECK_NDK_VERSION." >&2 + echo "No Android NDK found under ${sdk_dir}/ndk; set DROIDDECK_NDK_VERSION." >&2 exit 1 fi @@ -93,7 +93,7 @@ for tool in curl tar zstd; do fi done -staging_dir=$(mktemp -d "${TMPDIR:-/tmp}/steamdeck-build.XXXXXX") +staging_dir=$(mktemp -d "${TMPDIR:-/tmp}/droiddeck-build.XXXXXX") bundle_asset="${repo_root}/app/src/main/assets/pulseaudio.tzst" bundle_backup="${staging_dir}/pulseaudio.original.tzst" bundle_replaced=0 @@ -110,8 +110,8 @@ trap cleanup EXIT trap 'exit 130' INT trap 'exit 143' TERM -pa_source=${STEAMDECK_PA13_SOURCE_DIR:-"${staging_dir}/pulseaudio-13.0"} -if [[ -z "${STEAMDECK_PA13_SOURCE_DIR:-}" ]]; then +pa_source=${DROIDDECK_PA13_SOURCE_DIR:-"${staging_dir}/pulseaudio-13.0"} +if [[ -z "${DROIDDECK_PA13_SOURCE_DIR:-}" ]]; then curl -fsSL -o "${staging_dir}/pulseaudio-13.0.tar.gz" \ https://github.com/pulseaudio/pulseaudio/archive/refs/tags/v13.0.tar.gz mkdir -p "${pa_source}" @@ -119,7 +119,7 @@ if [[ -z "${STEAMDECK_PA13_SOURCE_DIR:-}" ]]; then -C "${pa_source}" --strip-components=1 fi if [[ ! -f "${pa_source}/src/pulse/version.h.in" ]]; then - echo "PulseAudio 13.0 source not found at ${pa_source}; set STEAMDECK_PA13_SOURCE_DIR." >&2 + echo "PulseAudio 13.0 source not found at ${pa_source}; set DROIDDECK_PA13_SOURCE_DIR." >&2 exit 1 fi diff --git a/tools/deploy_local.sh b/tools/deploy_local.sh index 8b8eb8942..9ee303db0 100755 --- a/tools/deploy_local.sh +++ b/tools/deploy_local.sh @@ -33,5 +33,5 @@ else fi "${adb_bin}" -s "${serial}" install -r --no-incremental "${apk}" -installed_path=$("${adb_bin}" -s "${serial}" shell pm path com.steamdeck.launcher | tr -d '\r') +installed_path=$("${adb_bin}" -s "${serial}" shell pm path com.droiddeck.launcher | tr -d '\r') printf 'Installed on %s: %s\n' "${serial}" "${installed_path}" diff --git a/tools/gamescope/build-in-arch.sh b/tools/gamescope/build-in-arch.sh index f23859f42..2078592aa 100755 --- a/tools/gamescope/build-in-arch.sh +++ b/tools/gamescope/build-in-arch.sh @@ -36,7 +36,7 @@ PATCHES=\$(ls *.patch | sort) { echo; echo 'source+=('; for p in \$PATCHES; do echo \" \$p\"; done; echo ')'; for p in \$PATCHES; do echo \"sha256sums+=('SKIP')\"; done; } >> PKGBUILD cat >> PKGBUILD <<'PREP' -_steamdeck_prepare() { +_droiddeck_prepare() { # Arch's own prepare() leaves the shell inside the checkout; start from a known place. cd \"\$srcdir/gamescope\" for p in \$(ls \"\$srcdir\"/*.patch | sort); do @@ -46,9 +46,9 @@ _steamdeck_prepare() { } if declare -f prepare >/dev/null; then eval \"\$(declare -f prepare | sed 's/^prepare ()/_arch_prepare ()/')\" - prepare() { _arch_prepare; _steamdeck_prepare; } + prepare() { _arch_prepare; _droiddeck_prepare; } else - prepare() { _steamdeck_prepare; } + prepare() { _droiddeck_prepare; } fi PREP makepkg -A -s --noconfirm --skipchecksums --skippgpcheck # -A: the PKGBUILD lists x86_64 only; Arch Linux ARM builds the same file diff --git a/tools/linuxfs/desktop/autostart b/tools/linuxfs/desktop/autostart index 3fbfcf785..e66666a0a 100644 --- a/tools/linuxfs/desktop/autostart +++ b/tools/linuxfs/desktop/autostart @@ -1,13 +1,13 @@ # What the desktop is made of, started once labwc is up. Everything logs into the session log. -# With ~/.steamdeck-desktop-debug present, the panel and the file manager also log what they +# With ~/.droiddeck-desktop-debug present, the panel and the file manager also log what they # say to the compositor about their windows (shell, layer, output), capped so it stays readable. run() { local tag=$1; shift - if [ -f "$HOME/.steamdeck-desktop-debug" ]; then - # Everything it says goes to ~/.cache/steamdeck/.log; the window-related protocol + if [ -f "$HOME/.droiddeck-desktop-debug" ]; then + # Everything it says goes to ~/.cache/droiddeck/.log; the window-related protocol # traffic also goes into the session log, capped. - mkdir -p "$HOME/.cache/steamdeck" - WAYLAND_DEBUG=1 "$@" 2>&1 | tee "$HOME/.cache/steamdeck/$tag.log" | awk -v t="[$tag]" '!/^\[[0-9:.]+\] +\{/ || (c<120 && /layer_s|xdg_toplevel|fullscreen|wl_output|xdg_output|configure\(/) {print t, $0; c++; fflush()}' & + mkdir -p "$HOME/.cache/droiddeck" + WAYLAND_DEBUG=1 "$@" 2>&1 | tee "$HOME/.cache/droiddeck/$tag.log" | awk -v t="[$tag]" '!/^\[[0-9:.]+\] +\{/ || (c<120 && /layer_s|xdg_toplevel|fullscreen|wl_output|xdg_output|configure\(/) {print t, $0; c++; fflush()}' & else "$@" 2>&1 | sed "s/^/[$tag] /" & fi @@ -16,7 +16,7 @@ run() { [ -n "${BL_WIDTH:-}" ] && wlr-randr --output WL-1 --custom-mode "${BL_WIDTH}x${BL_HEIGHT}" 2>&1 | sed 's/^/[wlr-randr] /' # In debug runs, ground truth on the network from inside the session: name lookup, then a # fetch over IPv4 and over IPv6, so a browser's "no internet" can be placed. -if [ -f "$HOME/.steamdeck-desktop-debug" ]; then +if [ -f "$HOME/.droiddeck-desktop-debug" ]; then ( echo "[net] getent: $(getent hosts example.com 2>&1 | head -2 | tr '\n' ' ')" for f in 4 6; do @@ -26,10 +26,10 @@ if [ -f "$HOME/.steamdeck-desktop-debug" ]; then fi # In debug runs Firefox (started from the panel or the menu, so it inherits this) writes its # own network log: name lookups, connects, HTTP transactions, the link/offline decisions. -if [ -f "$HOME/.steamdeck-desktop-debug" ]; then - mkdir -p "$HOME/.cache/steamdeck" +if [ -f "$HOME/.droiddeck-desktop-debug" ]; then + mkdir -p "$HOME/.cache/droiddeck" export MOZ_LOG="nsHttp:3,nsSocketTransport:3,nsHostResolver:4,NetworkLinkService:5,NetworkConnectivityService:5,nsIOService:5" - export MOZ_LOG_FILE="$HOME/.cache/steamdeck/firefox-net.log" + export MOZ_LOG_FILE="$HOME/.cache/droiddeck/firefox-net.log" fi swaybg -m fill -i /usr/share/backgrounds/steamdeck.png & # Desktop icons (pcmanfm-qt manages the desktop surface) and the panel with the app menu. diff --git a/tools/linuxfs/desktop/steamdeck-desktop b/tools/linuxfs/desktop/droiddeck-desktop similarity index 93% rename from tools/linuxfs/desktop/steamdeck-desktop rename to tools/linuxfs/desktop/droiddeck-desktop index 664299253..8a90ef8d1 100644 --- a/tools/linuxfs/desktop/steamdeck-desktop +++ b/tools/linuxfs/desktop/droiddeck-desktop @@ -22,7 +22,7 @@ export WLR_RENDERER=${BL_WLR_RENDERER:-pixman} if [ -n "${BL_DEBUG_DIR:-}" ]; then mkdir -p "$BL_DEBUG_DIR" 2>/dev/null || true exec >>"$BL_DEBUG_DIR/desktop.log" 2>&1 - echo "== steamdeck-desktop $(date -u '+%Y-%m-%d %H:%M:%S UTC') renderer=$WLR_RENDERER" + echo "== droiddeck-desktop $(date -u '+%Y-%m-%d %H:%M:%S UTC') renderer=$WLR_RENDERER" fi export WLR_BACKENDS=wayland mkdir -p "$HOME/.config/labwc" "$HOME/.config/lxqt" @@ -75,8 +75,8 @@ if [ ! -f /etc/fonts/local.conf ]; then echo "== fontconfig: wrote local.conf (DejaVu as the default family)" fi # The cache in the image was built before those rules existed; rebuild it once, and only once. -if [ ! -f /var/cache/fontconfig/.steamdeck-built ] && command -v fc-cache >/dev/null 2>&1; then - fc-cache -f >/dev/null 2>&1 && touch /var/cache/fontconfig/.steamdeck-built +if [ ! -f /var/cache/fontconfig/.droiddeck-built ] && command -v fc-cache >/dev/null 2>&1; then + fc-cache -f >/dev/null 2>&1 && touch /var/cache/fontconfig/.droiddeck-built echo "== fontconfig: cache rebuilt, default sans is $(fc-match sans-serif 2>/dev/null)" fi # The menu's "Steam" / "Steam Big Picture" entries and one entry per installed game: all of them @@ -86,9 +86,9 @@ ln -sf /usr/local/bin/bannerlator-steam-launch /usr/local/bin/steamdeck-steam 2> ln -sf /usr/local/bin/bannerlator-steam-shim /usr/local/bin/steam 2>/dev/null python3 /usr/local/bin/bannerlator-desktop-games 2>&1 | sed 's/^/[games] /' -echo "== steamdeck-desktop: labwc ($WLR_RENDERER) on $WAYLAND_DISPLAY" -# ~/.steamdeck-desktop-debug: labwc's own debug log (views and layer surfaces mapping) too. -DEBUG=; [ -f "$HOME/.steamdeck-desktop-debug" ] && DEBUG=-d +echo "== droiddeck-desktop: labwc ($WLR_RENDERER) on $WAYLAND_DISPLAY" +# ~/.droiddeck-desktop-debug: labwc's own debug log (views and layer surfaces mapping) too. +DEBUG=; [ -f "$HOME/.droiddeck-desktop-debug" ] && DEBUG=-d # A session bus: the panel's menus, the file manager and the portal all expect one. if command -v dbus-run-session >/dev/null 2>&1; then exec dbus-run-session -- labwc $DEBUG -C "$HOME/.config/labwc" diff --git a/tools/linuxfs/desktop/firefox-steamdeck.js b/tools/linuxfs/desktop/firefox-droiddeck.js similarity index 93% rename from tools/linuxfs/desktop/firefox-steamdeck.js rename to tools/linuxfs/desktop/firefox-droiddeck.js index d6477d56d..ad6b1e40f 100644 --- a/tools/linuxfs/desktop/firefox-steamdeck.js +++ b/tools/linuxfs/desktop/firefox-droiddeck.js @@ -1,4 +1,4 @@ -// Firefox defaults for the SteamDeck desktop, staged by the app into +// Firefox defaults for the DroidDeck desktop, staged by the app into // /usr/lib/firefox/defaults/pref/. A user's own prefs.js still wins. // Firefox judges "online" by dumping the routing table over netlink, which Android denies to diff --git a/tools/linuxfs/overlay/usr/local/bin/__pycache__/bannerlator-steam-shortcutscpython-313.pyc b/tools/linuxfs/overlay/usr/local/bin/__pycache__/bannerlator-steam-shortcutscpython-313.pyc deleted file mode 100644 index c680f1f5a..000000000 Binary files a/tools/linuxfs/overlay/usr/local/bin/__pycache__/bannerlator-steam-shortcutscpython-313.pyc and /dev/null differ diff --git a/tools/linuxfs/overlay/usr/local/bin/bannerlator-desktop-games b/tools/linuxfs/overlay/usr/local/bin/bannerlator-desktop-games index a13afaeb5..16fc736ec 100755 --- a/tools/linuxfs/overlay/usr/local/bin/bannerlator-desktop-games +++ b/tools/linuxfs/overlay/usr/local/bin/bannerlator-desktop-games @@ -15,7 +15,7 @@ LIBRARIES = ((STEAM_ROOT, "Steam Games"), ("/mnt/bannerlator-sd", "SD Games")) # The client's own tools and runtimes live in steamapps beside the games; they are not titles. NOT_GAMES = {228980, 1493710, 3127680, 4183110, 4427310, 4185400} APPS_DIR = os.path.join(HOME, ".local/share/applications") -PREFIX = "steamdeck-game-" +PREFIX = "droiddeck-game-" NAME = re.compile(r'^\s*"name"\s*"([^"]*)"', re.M) STATE = re.compile(r'^\s*"StateFlags"\s*"(\d+)"', re.M) @@ -91,7 +91,7 @@ def write_entries(): body = ( "[Desktop Entry]\nType=Application\nName=%s\nComment=Steam game %d - opens in Steam under gamescope\n" "Exec=/usr/local/bin/bannerlator-steam-launch desktop %d\nIcon=%s\nTerminal=false\n" - "Categories=Game;\nX-SteamDeck-AppId=%d\n" % (safe, appid, appid, icon_for(appid), appid) + "Categories=Game;\nX-DroidDeck-AppId=%d\n" % (safe, appid, appid, icon_for(appid), appid) ) path = os.path.join(APPS_DIR, "%s%d.desktop" % (PREFIX, appid)) try: diff --git a/tools/linuxfs/overlay/usr/local/bin/bannerlator-session b/tools/linuxfs/overlay/usr/local/bin/bannerlator-session index 6d0b5f3c1..94a2396c6 100755 --- a/tools/linuxfs/overlay/usr/local/bin/bannerlator-session +++ b/tools/linuxfs/overlay/usr/local/bin/bannerlator-session @@ -4,7 +4,7 @@ # bannerlator-session desktop the file manager # bannerlator-session run a Linux program (AppImage, script or ELF) # bannerlator-session steam [steam-url] the native Steam client -# bannerlator-session lxqt the LXQt/labwc desktop (SteamDeck's desktop package) +# bannerlator-session lxqt the LXQt/labwc desktop (DroidDeck's desktop package) # BL_WIDTH / BL_HEIGHT size the output, BL_FPS limits it, BL_LOG collects everything said here. set -u export HOME=${HOME:-/root} @@ -86,12 +86,12 @@ if [ -z "${BL_INSIDE:-}" ]; then wayland-info >/dev/null 2>&1 && break sleep 0.1 done - # The desktop (SteamDeck's hosted package) is its own nested compositor, labwc, drawing straight + # The desktop (DroidDeck's hosted package) is its own nested compositor, labwc, drawing straight # into the app's: no gamescope in between. if [ "$mode" = lxqt ]; then step "starting the desktop" - [ -x /usr/local/bin/steamdeck-desktop ] || { echo "== the desktop package is not installed"; exit 66; } - exec /usr/local/bin/steamdeck-desktop + [ -x /usr/local/bin/droiddeck-desktop ] || { echo "== the desktop package is not installed"; exit 66; } + exec /usr/local/bin/droiddeck-desktop fi width=${BL_WIDTH:-1280} height=${BL_HEIGHT:-720} diff --git a/tools/linuxfs/overlay/usr/local/bin/bannerlator-steam-launch b/tools/linuxfs/overlay/usr/local/bin/bannerlator-steam-launch index ad08ce076..1b2afba0a 100755 --- a/tools/linuxfs/overlay/usr/local/bin/bannerlator-steam-launch +++ b/tools/linuxfs/overlay/usr/local/bin/bannerlator-steam-launch @@ -20,7 +20,7 @@ case $target in esac dir=${BL_LAUNCH_DIR:-} if [ -z "$dir" ] || [ ! -d "$dir" ]; then - echo "bannerlator-steam-launch: not inside a SteamDeck session (BL_LAUNCH_DIR unset)" >&2 + echo "bannerlator-steam-launch: not inside a DroidDeck session (BL_LAUNCH_DIR unset)" >&2 exit 69 fi # Written whole, then renamed: the app reads it on close, never half-written. diff --git a/tools/linuxfs/overlay/usr/local/bin/bannerlator-steam-shortcuts b/tools/linuxfs/overlay/usr/local/bin/bannerlator-steam-shortcuts index 51524a48b..7f7606912 100755 --- a/tools/linuxfs/overlay/usr/local/bin/bannerlator-steam-shortcuts +++ b/tools/linuxfs/overlay/usr/local/bin/bannerlator-steam-shortcuts @@ -7,7 +7,7 @@ library as non-Steam shortcuts, each mapped to the ARM64 Proton, before the clie The JSON is a list the app writes each session: {"name", "exe", "dir", "appid"} with guest paths. The client keeps non-Steam games in userdata//config/shortcuts.vdf, a binary VDF it reads at start-up and rewrites at exit, so this runs while it is down. Entries the app wrote -carry the tag "steamdeck-app" and are replaced wholesale; anything the user added inside the +carry the tag "droiddeck-app" and are replaced wholesale; anything the user added inside the client is kept as it is. The appid is the one the client itself derives (crc32 of exe+name with the top bit set), so the launch URL the app uses matches what the client shows. """ @@ -20,7 +20,7 @@ import shutil import struct import sys -TAG = "steamdeck-app" +TAG = "droiddeck-app" def account_dir(steam_root): @@ -128,7 +128,7 @@ def shortcut(game): } -ART_MANIFEST = ".steamdeck-art.json" +ART_MANIFEST = ".droiddeck-art.json" # listing key -> the client's grid file suffix: p = portrait capsule, = header, # _hero, _logo. ART_SLOTS = (("p", "p"), ("header", ""), ("hero", "_hero"), ("logo", "_logo"))