ShizuStore

XGesture

qpst4

1.36.0 · GitHub

Download APK
Customization Android 12+ 20 hours ago AGPL-3.0
358 ShizuStore
5.8k GitHub
119 Stars
69 MB Size

More about this app

All-in-one gesture and one-hand navigation suite with edge panels, floating cursor, offline OCR ball, app freezer and freeform windows via Shizuku.

XGesture

๐Ÿ“ฑ XGesture โ€” The Ultimate Android Gesture & One-Handed Productivity Suite

All-in-One Open-Source Alternative to Samsung One Hand Operation+ (OHO+), Quick Cursor & FooView
Edge Panels ยท Reachability Floating Cursor ยท Floating Ball OCR & Reverse Image Search ยท Shake & Back-Tap Gestures ยท Notification & OTP Manager ยท App Freezer ยท Freeform Window ยท Shizuku & LSPosed

English | ็ฎ€ไฝ“ไธญๆ–‡ | ๆ—ฅๆœฌ่ชž

Release License Platform Kotlin AGP Gradle Compose BOM minSdk targetSdk


XGesture Full Showcase

XGesture is a universal system-level gesture and single-handed productivity suite designed for all Android 12+ devices across all OEMs. Built on Accessibility Services with flexible multi-privilege modes (Shizuku, Root / KernelSU / Magisk, and optional LSPosed integration), it brings desktop-grade control and effortless reachability to modern large-screen phones.

Easily trigger 50+ system actions via customizable multi-angle screen-edge swipes, reachability floating pointers, multi-functional floating ball, device shaking, desk-flipping, or back-tap gestures. Deeply integrates 100% offline on-device OCR, word segmentation (CppJieba), and reverse image search aggregationโ€”delivering high-efficiency overlay launchers, app freezing, OTP verification code extraction, notification management, and OEM freeform windows on top of any app, completely free from ads and cloud trackers.

  • Package Name: com.slideindex.app
  • Current Version: 1.36.0 (versionCode 71)
  • Requirements: Android 12+ (API 31+)
  • License: AGPL-3.0 License

๐Ÿ“ฅ Download & Installation

Download Full APK Download Lite APK

Variant Scenario Description
Full Package (xgesture-*-full.apk) Recommended for new users Out-of-the-box experience with built-in offline OCR, Jieba segmentation, and offline translation native engines
Lite Package (xgesture-*-lite.apk) Compact size / on-demand updates Retains core gestures and fundamental features with smaller package size; download extension engines on demand

Tip

Both packages share the same applicationId (com.slideindex.app), allowing direct overwriting installation without losing configurations.


๐ŸŒŸ Core Features

The app features four main navigation tabs: ๐Ÿ  Home ยท ๐Ÿ“ณ Motion ยท ๐Ÿ”” Notification ยท ๐Ÿงฉ Extensions.

๐Ÿ  Home โ€” Edge Gestures, Floating Ball & Customization

1. Edge Gestures

  • Triggers & Aesthetics: Highly responsive left/right/top/bottom edge triggers, supporting bubble, capsule, wave animations, and haptic feedback.
  • Custom Layout & Landscape Triggers: Freely adjust trigger position, height, thickness, angle, and segments; supports dedicated landscape trigger handles for gaming and media viewing.
  • Smart Anti-Mistouch: Auto-hide in landscape/lock screen/home screen, with per-app exclusion lists and foreground switching blacklists.
  • Corner Radial Menu: Swipe from bottom-left or bottom-right corners to summon a radial menu with real-time Gaussian blur and action grouping.
  • OEM Freeform Integration: Deeply adapts to native Android Freeform, Xiaomi MIUI/HyperOS Small Window, and Meizu Flyme Small Window.

2. 50+ Configurable Gesture Actions

Category Actions Supported
System Navigation Back, Home, Recents, Previous App, Lock Screen, Power Menu, Split Screen
Screenshot & Visual Fullscreen Screenshot, Region Screenshot, Screenshot OCR, Region OCR, Screen Recorder, Flashlight
OCR & Image Search Floating Ball OCR, Reverse Image Search, Live Screen Translation, Universal Screen Copy, Pin Screenshot, QR Code Scanner
Panels & Launchers Quick Launcher, App Index, Ring Launcher (FV Style), Honeycomb Launcher, Holographic Launcher, Task Switcher (OHO Style), App Freezer, Expand Panel (Volume/Brightness), Widget Overlay
Media & Controls Previous/Next Track, Play/Pause, Volume Adjust, Brightness Adjust, Switch IME
Tools & History Floating Pointer, Clipboard History Panel, Quick Tools Panel (OHO Style), Pause Overlay, Pause Gestures
Advanced & Extensions Run Shell Commands (Shizuku / Root), Launch Activity / Shortcut, Direct App Launch, Alarm Reminder in N min, Re-freeze Apps

3. ๐Ÿ”ฎ Floating Ball (OCR, Image Search & Gestures)

Operates independently from the Floating Pointer, combining joystick navigation with screen OCR pointers.

  • Accessibility & Offline Multi-Engine OCR: Extracts text via accessibility nodes first, seamlessly falling back to local offline OCR (ML Kit / Tesseract / PaddleOCR ONNX).
  • Text Selection Panel: One-click search, translate, segmentation (CppJieba), select all, remove spaces, and copy; supports region clipping and shared image OCR history.
  • Search Aggregation: Customizable search engines, grid sorting, search history, prefix aliases, and deep links; supports importing from GestureEVO / SearchEVO.
  • Reverse Image Search: Summon multi-engine reverse search (Google, Yandex, TinEye, SauceNAO, IQDB, 3D-IQDB, ASCII2D, trace.moe, AnimeTrace, Copyseeker) with built-in WebView preview.
  • Pin to Screen: Pin screenshots or text cards as top-level floating windows with pinch-to-zoom and drag support.
  • Appearance & Tuning: Custom themes, images, GIFs, and slideshows; adjustable pointer sensitivity and OCR tolerance.

4. Theme & Appearance

  • Miuix Design System: Comprehensive adoption of Miuix UI (HyperOS style) with collapsible TopAppBar, virtualized grouped cards, overscroll damping, and haptic feedback.
  • Material You Dynamic Coloring: Automatically extracts wallpaper colors via MaterialKolor on Android 12+, generating 9 palette styles injected into MiuixTheme.
  • Blur & Performance: Bottom navigation and floating overlays support Gaussian blur and progressive blur; can be disabled to completely eliminate scroll sampling overhead.

๐Ÿ“ณ Motion & Device Gestures โ€” Shake, Flip & Back-Tap

  • 6-Direction Shake Recognition: Distinguishes left/right flip, forward/backward flip, and quick side shakes; supports per-app custom actions and sensitivities.
  • Desk-Flip Mute: Place face-down on a flat surface while screen is on to trigger lock screen and silent mode.
  • Back-Tap Gestures (BackTap): Accelerometer-based back-cover double-tap recognition supporting 50+ actions, screen on/off/always trigger policies, sensitivity tuning, and charging guard.
  • Scenario Rules: Screen on/locked activation policies, app blacklists/whitelists, independent sensitivity thresholds, and vibration feedback.

๐Ÿ”” Notification โ€” Reminders, History & OTP

  • Multi-Style Reminders: Intercepts notifications with Dynamic Island cards, heads-up popups, side bubbles, or screen danmaku; supports "Open Latest Message on Unlock" (with whitelist and confirm policies).
  • Notification History & Filtering: Categorizes active, history, and hidden notifications with multi-dimensional regex and keyword archiving.
  • OTP Verification Center: Automatically detects verification codes in SMS and app notifications with regex extraction, clipboard auto-copy, and auto-fill; optional LSPosed module for system-level SMS injection.

๐Ÿงฉ Extensions โ€” Utility Tools & Backup

Module Navigation Entry Core Capabilities
App Index Extensions โ†’ App Index Alphabetical Pinyin rail app drawer with adjustable columns and transparency
Quick Launcher Extensions โ†’ Quick Launcher Grid launcher supporting multi-panel switching, pagination, folder grouping, and shortcut library
Ring Launcher Gesture Action "Ring Launcher" FV-style concentric ring layout with customizable tiers, spacing, shapes, and slots
Honeycomb Launcher Extensions โ†’ Honeycomb Launcher Hexagonal honeycomb grid layout with swipe-out direct launching
Holographic Launcher Extensions โ†’ Holographic Launcher Fullscreen 3D holographic sphere launcher; drag to rotate and click to open
Task Switcher Gesture Action "Task Switcher" OHO-style vertical running tasks panel with swipe-to-switch, kill, clear all, and freeform launch
Quick Tools Panel Gesture Action "Quick Tools Panel" OHO-style quick settings panel aggregating system toggles, actions, and shortcuts
App Freezer Extensions โ†’ App Freezer Batch freeze and unfreeze background apps via Shizuku / Root with quick re-freeze gesture
Search Panel Extensions โ†’ Search Panel Unified search for apps, contacts, files, system settings, web queries, and reverse image search
Activity Shortcuts Extensions โ†’ Activity Shortcuts Hidden system settings, non-exported activity launcher, App Shortcuts, and URI deep links
External Invocation Extensions โ†’ External Invocation xgesture:// deeplinks and intent actions for Tasker, MacroDroid, and other automations
Shell Commands Extensions โ†’ Shell Commands Command panels, template variable substitution, and custom icons via Shizuku / Root
Widget Panel Extensions โ†’ Widget Panel Floating desktop widget host with adjustable blur background and multi-selection
Floating Pointer Extensions โ†’ Floating Pointer Virtual joystick-controlled ring pointer with hover selection, radial actions, and gesture macro replay
Clipboard History Gesture Action "Clipboard Panel" Rich clipboard history with search, edge floating window, and Shizuku background listener
Settings Backup Extensions โ†’ Settings Backup Export and import all configurations and assets as encrypted ZIP files

๐Ÿ“ธ Key Interfaces & Interaction Preview

Corner Radial Menu Ring Launcher (FV Style) Quick Launcher (Grid)
Corner Radial Menu Ring Launcher Quick Launcher
Floating Pointer (Joystick) Shell Command Panel (Shizuku) Clipboard History / Stash
Floating Pointer Shell Command Panel Clipboard History
App Index (Pinyin Rail) Widget Floating Panel Pin Screenshot Window
App Index Widget Floating Panel Pin Screenshot

๐Ÿ”— External Invocation

Open XGesture panels from other apps, Tasker, MacroDroid, or adb. In-app reference: Extensions โ†’ Shortcuts & actions โ†’ External Invocation (tap to copy).

Prerequisites: Search panel, stash, and clipboard require the sidebar and accessibility service. Notification hub requires notification listener access.

Deeplinks (recommended)

Format: xgesture://open/<path>?q=<optional query>

Feature URI Notes
Notification hub xgesture://open/notification-history Open notification hub
Notification hub (prefill) xgesture://open/notification-history?q=keyword Open with search prefill
Stash xgesture://open/stash Open stash panel
Stash (prefill) xgesture://open/stash?q=keyword Open with search prefill
Clipboard xgesture://open/clipboard Open clipboard panel
Clipboard (prefill) xgesture://open/clipboard?q=keyword Open with search prefill
Search panel xgesture://open/search-panel Open search panel
Search panel (prefill) xgesture://open/search-panel?q=keyword Open with query prefill

Examples:

# Open search panel
adb shell am start -a android.intent.action.VIEW -d "xgesture://open/search-panel"

# Open search panel with prefill
adb shell am start -a android.intent.action.VIEW -d "xgesture://open/search-panel?q=weather"

Intent actions (advanced)

Use when there is no matching URI, or when you need an explicit component. Package name: com.slideindex.app.

Feature Action Component Optional extra
Notification hub com.slideindex.app.action.OPEN_NOTIFICATION_HISTORY .MainActivity โ€” (use deeplink for search prefill)
Stash com.slideindex.app.action.OPEN_STASH_PANEL .service.StashClipboardTrampolineActivity q
Clipboard com.slideindex.app.action.OPEN_CLIPBOARD_PANEL .service.StashClipboardTrampolineActivity q
Search panel com.slideindex.app.action.OPEN_SEARCH_PANEL .service.SearchPanelTrampolineActivity q
Toggle gestures com.slideindex.app.action.TOGGLE_GESTURE .service.ToggleGestureTrampolineActivity โ€”
Shell panel com.slideindex.app.action.OPEN_SHELL_PANEL .service.ShellCommandPanelTrampolineActivity โ€” (not exported; app shortcuts only)

Examples:

# Open search panel with prefill
adb shell am start -a com.slideindex.app.action.OPEN_SEARCH_PANEL \
  -n com.slideindex.app/.service.SearchPanelTrampolineActivity \
  --es q "weather"

# Toggle edge gesture master switch
adb shell am start -a com.slideindex.app.action.TOGGLE_GESTURE \
  -n com.slideindex.app/.service.ToggleGestureTrampolineActivity

๐Ÿ’ก Design Philosophy & Comparisons

Standing on the Shoulders of Giants

Android has seen legendary tools that shaped mobile navigation and productivity:

  • Samsung One Hand Operation+ (OHO+) perfected multi-angle edge triggers and smooth system gestures.
  • Quick Cursor introduced thumb-friendly screen reachability via intuitive floating cursors.
  • FooView (FV) pioneered floating-ball universal OCR, search aggregation, and floating window shortcuts.

Why XGesture?

While we deeply admire these pioneering tools, modern Android users frequently face fragmentation:

  • Vendor Lock-in: OHO+ is one of the most beloved gesture tools ever created, but it remains exclusive to Samsung One UI. Non-Samsung users on Pixel, Xiaomi, Motorola, Sony, etc., have long sought a genuine alternative.
  • Open Source & Privacy-First: Proprietary utilities often carry cloud-dependent OCR and closed ecosystems. XGesture is 100% AGPL-3.0 open-source, bundling offline on-device OCR (PaddleOCR ONNX / ML Kit) that respects user privacy.
  • Unified Navigation: Rather than running multiple separate tools for edge gestures, single-handed pointers, and floating OCR, XGesture brings them together into a unified, coherent experience with fluid Miuix animations.
Dimension XGesture (This App) Samsung OHO+ Quick Cursor FooView
Open Source & License โœ… AGPL-3.0 (100% FOSS) โŒ Proprietary (Closed) โŒ Proprietary (Closed) โŒ Proprietary (Closed)
Device Compatibility โœ… Universal (Any Android 12+) โš ๏ธ Samsung Galaxy only โœ… Universal โœ… Universal
Pricing & Monetization โœ… 100% Free & No Ads forever โœ… Free (with One UI) โš ๏ธ Free basic + PRO in-app purchases โœ… Free (Ad/sponsor supported)
Edge Navigation Gestures โœ… Full OHO+ style (Multi-angle & Hold) โœ… Native OHO+ gestures โš ๏ธ Edge swipe for cursor only โš ๏ธ Floating / Edge gestures
Single-Hand Reachability โœ… Built-in reachability joystick pointer โš ๏ธ Virtual Touchpad (floating box mode) โœ… Native reachability cursor โš ๏ธ Floating ball crosshair
Screen OCR & Reverse Search โœ… Local offline models (ONNX / ML Kit) โŒ No such feature โŒ No such feature โš ๏ธ Cloud & web-assisted OCR
Deep System Privileges โœ… Shizuku + Root + LSPosed + A11y โœ… Samsung system-signature privileges โš ๏ธ Accessibility Service โš ๏ธ Root + Accessibility Service
Visual Aesthetics & Haptics โœ… Miuix & Real-time Gaussian Blur โœ… One UI native design โš ๏ธ Standard Material โš ๏ธ Classic utility UI

๐Ÿ› ๏ธ Tech Stack

Layer Core Technologies / Components
Languages Kotlin 2.4.0 + C++17 (NDK / CMake)
UI Framework Miuix UI (KMP 0.9.4 / HyperOS style) + Jetpack Compose (BOM 2026.07.01)
Color & Visuals MaterialKolor 5.0.0 (Dynamic Wallpaper Colors) + Haze 1.7.2 (Gaussian Blur)
Architecture & DI MVVM + UDF (Unidirectional Data Flow) + Dagger Hilt 2.60.1
Async & State Kotlin Coroutines 1.11.0 + StateFlow / SharedFlow + DataStore Preferences 1.2.1
OCR & AI ML Kit Text Recognition 16.0.1 + Tesseract4Android 4.9.0 + PaddleOCR (ONNX Runtime 1.28.0 + OpenCV 4.12.0)
NLP & Tokenization CppJieba (JNI Native Tokenizer) + ML Kit Translate / Language ID
Privileged Access Shizuku API 13.1.5 + LibSuperuser 1.1.1 + HiddenApiBypass 6.1 + LibXposed API 102.0.0
Network & Parsing OkHttp 5.4.0 + ZXing Core 3.5.4 + kotlinx.serialization 1.11.0 + Markdown Renderer M3

๐Ÿ“ Architecture

The app adopts a Multi-Module layered architecture following MVVM + UDF patterns:

                              โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                              โ”‚          :app (Root)        โ”‚
                              โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                             โ”‚
                      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                      โ–ผ                      โ–ผ                      โ–ผ
           โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
           โ”‚   :feature:settings  โ”‚โ”‚     :feature:otp     โ”‚โ”‚   :feature:shake     โ”‚
           โ”‚   :feature:apps      โ”‚โ”‚ :feature:notificationโ”‚โ”‚   :feature:message   โ”‚
           โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                      โ”‚                       โ”‚                       โ”‚
                      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                             โ–ผ
           โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
           โ”‚ :core:gesture       :core:ocr          :core:translate  :core:autofillโ”‚
           โ”‚ :core:overlay-layout:core:native-engine:core:monitoring :core:common โ”‚
           โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                             โ–ผ
                                  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                                  โ”‚   :vendor:ppocr-sdk   โ”‚
                                  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
  1. Service Coordination & Overlay Rendering: SlideIndexAccessibilityService intercepts global gestures and dispatches system events, while overlays are managed by OverlayLayout and independent WindowManagers.
  2. Dynamic Engine Loading: OCR, translation, and segmentation engines support both Full and Lite packaging modes; native .so libraries and models can be extracted at runtime.
  3. Privileged Pipelines: Shizuku IPC (rootless privilege), Root fallback executor (LibSu), and LSPosed module collaborate to provide seamless background clipboard monitoring and process lifecycle control.

๐Ÿ“‚ Project Structure

.
โ”œโ”€โ”€ app/                                 # Host Application: DI assembly, JNI C++ bridge, and main UI
โ”‚   โ””โ”€โ”€ src/main/
โ”‚       โ”œโ”€โ”€ cpp/                         # C++17 JNI Sources (CppJieba bridge)
โ”‚       โ””โ”€โ”€ java/com/slideindex/app/
โ”‚           โ”œโ”€โ”€ activity/                # Top-level Activities & transparent interaction layers
โ”‚           โ”œโ”€โ”€ backtap/                 # Back-tap gestures
โ”‚           โ”œโ”€โ”€ clipboard/               # Clipboard history & Shizuku background monitor
โ”‚           โ”œโ”€โ”€ gesture/                 # Core gesture service & overlay trigger bars
โ”‚           โ”œโ”€โ”€ overlay/                 # System overlay window managers
โ”‚           โ”œโ”€โ”€ search/                  # Text & reverse image search aggregator
โ”‚           โ”œโ”€โ”€ shell/                   # Shell command executor
โ”‚           โ”œโ”€โ”€ ui/                      # Compose UI, Miuix themes, and dynamic colors
โ”‚           โ””โ”€โ”€ xposed/                  # LSPosed module entry & hooks
โ”œโ”€โ”€ core/                                # Core modules & engines
โ”‚   โ”œโ”€โ”€ autofill/                        # OTP autofill framework
โ”‚   โ”œโ”€โ”€ common/                          # Extensions, shared models, and utilities
โ”‚   โ”œโ”€โ”€ gesture/                         # Gesture recognition algorithms & event bus
โ”‚   โ”œโ”€โ”€ monitoring/                      # Performance tracing & memory monitoring
โ”‚   โ”œโ”€โ”€ native-engine/                   # Offline native engine distribution & asset extraction
โ”‚   โ”œโ”€โ”€ notification/                    # Notification interception & processing
โ”‚   โ”œโ”€โ”€ ocr/                             # Multi-engine OCR dispatcher (ML Kit / Tesseract / ONNX)
โ”‚   โ”œโ”€โ”€ overlay-layout/                  # Overlay layout rendering core
โ”‚   โ””โ”€โ”€ translate/                       # Multi-language translation & language detection
โ”œโ”€โ”€ feature/                             # Business feature modules
โ”‚   โ”œโ”€โ”€ apps/                            # App scanner, icon caching, and launchers
โ”‚   โ”œโ”€โ”€ message/                         # Heads-up notification & danmaku rendering
โ”‚   โ”œโ”€โ”€ notification/                    # Notification history & archiving
โ”‚   โ”œโ”€โ”€ otp/                             # Verification code extraction & statistics
โ”‚   โ”œโ”€โ”€ settings/                        # Settings, preferences backup, and DataStore
โ”‚   โ””โ”€โ”€ shake/                           # Sensor shake & desk-flip algorithms
โ”œโ”€โ”€ vendor/
โ”‚   โ””โ”€โ”€ ppocr-sdk/                       # PaddleOCR SDK binding & ONNX Runtime
โ”œโ”€โ”€ gradle/libs.versions.toml             # Dependency catalog
โ””โ”€โ”€ RELEASE_NOTES.md                     # Release changelog

๐Ÿš€ Building & Compilation

Requirements

  • JDK 25
  • Android Studio (Ladybug or newer recommended)
  • Android SDK (API 37 compileSdk) & NDK 28+

Build Commands

# Clone the repository
git clone https://github.com/qpst4/XGesture.git
cd XGesture

# Build Full Debug APK (with built-in offline engines)
./gradlew assembleFullDebug

# Build Lite Release APK (compact version)
./gradlew assembleLiteRelease

๐ŸŒ Help Translate

Translation status

Contribute in-app UI translations on Weblate โ€” no Git required. See CONTRIBUTING.md.


๐Ÿ’ฌ Community & Feedback

Welcome to join the community discussions and provide feedback or feature requests:

GitHub Discussions GitHub Issues
Telegram Chat QQ Group

Telegram: chat group (XGesture ยท Xๆ‰‹ๅŠฟ) ยท QQ Group: 1042783385


๐Ÿ’– Sponsor & Support

If you find XGesture helpful in your daily workflow, consider buying the developer a cup of coffee โ˜•! Your generous support is the greatest motivation for ongoing development and OEM adaptations.

WeChat Reward Code

๐Ÿ“œ License

This project is licensed under the GNU Affero General Public License v3.0 (AGPLv3).


๐Ÿค Acknowledgements

Special thanks to the following open-source projects for their architecture, inspiration, and code references (see THIRD_PARTY_NOTICES.md for details):

  • SideGesture โ€” Edge gesture and overlay architecture reference
  • EdgeGesture โ€” Expand panel, alarm reminder, screen translation, universal copy, and back-tap gesture reference
  • EdgeX & FanFreeform โ€” Honeycomb launcher and App Freezer architecture reference
  • ClipboardListener & ClipShare โ€” Android 10+ background clipboard listening architecture
  • Root Activity Launcher โ€” Non-exported activity launching scheme
  • Circle To Search โ€” Multi-engine reverse image search strategy
  • Nova Text โ€” Floating ball OCR and word selection interaction
  • XposedSmsCode โ€” OTP SMS Hook and verification code extraction rules
  • Miuix โ€” Elegant Material & Miuix style Compose UI component library

๐Ÿ“ Changelog

For complete release history, see RELEASE_NOTES.md and CHANGELOG.md.

Close

How Shizuku is used

Can freeze and pause apps, manage tasks and free windows, launch hidden activities, monitor clipboard and run shell commands via `Shizuku`.

This is an AI-assisted analysis of Shizuku-related usages in the app's public source code. It is best effort, so it may not catch every single usage.

How this app uses Shizuku

Shizuku is used for app freezing, task and window control, hidden activity launching, clipboard monitoring and custom shell commands.

  • Freeze and pause apps: Users can freeze unused apps to disable them and pause apps to keep icons installed but greyed, with automatic stopping and restore on launch, applied with pm disable, pm enable, pm suspend and pm unsuspend through Shizuku.
  • Manage recent tasks: Users can see recent tasks, jump to a task, close tasks and stop running packages, applied with cmd activity task remove, am force-stop and system task queries through Shizuku.
  • Open floating windows: Users can move the current or a selected app into a resizable floating window with chosen size and position through Shizuku.
  • Launch hidden activities: Users can open hard to reach system and app screens from the activity launcher, including assist based launches, through Shizuku.
  • Run custom shell commands: Text the user types or saves as a gesture action is executed as a shell command through Shizuku.
  • Watch clipboard in background: Users get continuous clipboard history even in the background by reading system logs or a helper process through Shizuku.
  • View diagnostic logs: Users can stream filtered system logs for troubleshooting in the diagnostics screen with logcat through Shizuku.
  • Launch shortcuts and assistant: Users can start published app shortcuts and open the voice assistant with cmd shortcut start-shortcut and cmd voiceinteraction show through Shizuku.

Android APIs or commands used

  • IPackageManager.setApplicationEnabledSetting
  • IPackageManager.getApplicationEnabledSetting
  • IPackageManager.setPackagesSuspendedAsUser
  • IPackageManager.grantRuntimePermission
  • IActivityManager.startActivityWithFeature
  • IInputManager.injectInputEvent
  • SearchManager.launchAssist
  • ActivityTaskManager.getTasks
  • ActivityManager.getRecentTasks
  • ActivityTaskManager.removeTask
  • ActivityTaskManager.moveTaskToFront
  • ActivityTaskManager.startActivityFromRecents
  • IShortcutService.getShortcuts
  • pm disable
  • pm enable
  • pm suspend
  • pm unsuspend
  • pm grant
  • am force-stop
  • am start
  • am get-current-user
  • cmd activity task remove
  • cmd shortcut start-shortcut
  • cmd voiceinteraction show
  • dumpsys shortcut
  • logcat
  • app_process
Close

Changelog

What's new for version 1.36.0

[1.36.0] - 2026-10-06

Added

  • New "volume up" and "volume down" gesture actions
  • New floating-ball "inward then down" and "inward then up" two-stage gestures; the gesture settings page is grouped by direction
  • New freezer "Pause": the app stays installed and its launcher icon stays in place but turns grey, and tapping it shows a system dialog with a one-tap resume; the freezer list, batch actions, manager filter and search-panel quick actions can all pause and resume
  • New inverted condition for the notification advanced-match JSON, with stricter JSON validation

Changed

  • The floating ball size limit is raised from 72dp to 96dp, with 1dp steps
  • The first stage of the floating-ball two-stage gestures uses the short-swipe threshold
  • The trigger gesture settings page is split into sections, with the slot list first
  • Ring launcher settings and strings use the "ring launcher" naming; existing configuration migrates automatically on upgrade and gesture bindings are unaffected
  • The ring launcher enters edit mode only when no slot is pinned and no app can fill in; otherwise it fills with recent apps
  • The notification rule screen state becomes a three-way choice (any / screen on / screen off), and leaving all three charging states unchecked means no restriction
  • "Floating window for the current app" first tries to move the window in place on Meizu devices and only relaunches when that fails
  • In-app update notes follow the system language (Chinese or English)
  • Freezer "Re-freeze" only affects apps in use and keeps paused apps paused; "Unfreeze all" no longer touches paused apps
  • The freezer import also covers frozen and paused launcher apps
  • Freezer pause and freeze both skip this app itself, system, SystemUI and the current launcher

Fixed

  • Fixed the trigger being drawn higher and shorter than its touchable area in the trigger settings preview
  • Fixed a gesture slot losing its launch mode after saving, which still launched fullscreen when the floating window was selected
  • Fixed ring launcher slots being cleared after editing
  • Fixed charging states being re-checked when reopening a notification rule that had only one phone state selected
  • Fixed the app-condition dropdown label and value being misaligned in notification rules
  • Fixed the notification-access entry not opening this app's detail page
  • Fixed occasional crashes when clipboard monitoring starts
  • Fixed the flashlight action still opening the app info page when the permission was already granted
  • Fixed four mojibake strings in the English UI

[1.36.0] - 2026-10-06

Added

  • ๆ–ฐๅขžใ€Œ้Ÿณ้‡ๅขžๅŠ ใ€ใ€Œ้Ÿณ้‡ๅ‡ๅฐใ€ๆ‰‹ๅŠฟๅŠจไฝœ
  • ๆ–ฐๅขžๆ‚ฌๆตฎ็ƒใ€Œๅ‘ๅ†…ๅ†ๅ‘ไธ‹ใ€ใ€Œๅ‘ๅ†…ๅ†ๅ‘ไธŠใ€ไธคๆฎตๅผๆ‰‹ๅŠฟ๏ผŒๆ‰‹ๅŠฟ่ฎพ็ฝฎ้กตๆŒ‰ๆ–นๅ‘ๅˆ†็ป„
  • ๆ–ฐๅขžๅ†ฐ็ฎฑใ€Œๆš‚ๅœใ€๏ผšๅบ”็”จไฟๆŒๅฎ‰่ฃ…๏ผŒๆกŒ้ขๅ›พๆ ‡็•™ๅœจๅŽŸไฝไฝ†ๅ˜็ฐ๏ผŒ็‚นๅ‡ปๆ—ถๅผนๅ‡บ็ณป็ปŸๅฏน่ฏๆก†ๅนถๅฏไธ€้”ฎๅ–ๆถˆๆš‚ๅœ๏ผ›ๅ†ฐ็ฎฑๅˆ—่กจใ€ๆ‰น้‡ๆ“ไฝœใ€็ฎก็†้กต็ญ›้€‰ไธŽๆœ็ดข้ขๆฟๅฟซๆทๆ“ไฝœ้ƒฝ่ƒฝๆš‚ๅœไธŽๅ–ๆถˆๆš‚ๅœ
  • ๆ–ฐๅขž้€š็Ÿฅ้ซ˜็บงๅŒน้… JSON ็š„ๅ–ๅๆกไปถ๏ผŒๅนถๅฏน JSON ๅšไธฅๆ ผๆ ก้ชŒ

Changed

  • ๆ‚ฌๆตฎ็ƒๅคงๅฐไธŠ้™็”ฑ 72dp ๆๅ‡่‡ณ 96dp๏ผŒๆกฃไฝๆ”นไธบ 1dp ๆญฅ่ฟ›
  • ๆ‚ฌๆตฎ็ƒไธคๆฎตๅผๆ‰‹ๅŠฟ็š„้ฆ–ๆฎต็ปŸไธ€ๆŒ‰็Ÿญๆป‘้—จๆง›ๅˆคๅฎš
  • ่งฆ้’ฎๆ‰‹ๅŠฟ่ฎพ็ฝฎ้กตๆŒ‰ๅˆ†ๅŒบๅ‘ˆ็Žฐ๏ผŒๆงฝไฝๅˆ—่กจๅ‰็ฝฎ
  • ๅœ†็ŽฏๅฏๅŠจๅ™จ็š„่ฎพ็ฝฎ้กนไธŽๆ–‡ๆกˆ็ปŸไธ€ไธบใ€Œๅœ†็ŽฏๅฏๅŠจๅ™จใ€ๅ‘ฝๅ๏ผŒๅ‡็บงๅŽๆ—ง้…็ฝฎ่‡ชๅŠจ่ฟ็งป๏ผŒๆ‰‹ๅŠฟ็ป‘ๅฎšไธๅ—ๅฝฑๅ“
  • ๅœ†็ŽฏๅฏๅŠจๅ™จๅชๅœจๆฒกๆœ‰ไปปไฝ•ๅ›บๅฎšๆงฝไฝไธ”ๆฒกๆœ‰ๅฏๅกซๅ……ๅบ”็”จๆ—ถ่ฟ›ๅ…ฅ็ผ–่พ‘ๆจกๅผ๏ผŒๅ…ถไฝ™ๆƒ…ๅ†ต็”จๆœ€่ฟ‘ๅบ”็”จๅกซๅ……
  • ้€š็Ÿฅ่ฟ‡ๆปค่ง„ๅˆ™็š„ๅฑๅน•็Šถๆ€ๆ”นไธบใ€Œไธ้™ / ไบฎๅฑๆ—ถ / ็†„ๅฑๆ—ถใ€ไธ‰้€‰ไธ€๏ผŒๅ……็”ต็Šถๆ€ไธ‰้กน้ƒฝไธๅ‹พ้€‰่กจ็คบไธ้™ๅˆถ
  • ๅฐ็ช—ๅŒ–ๅฝ“ๅ‰ๅบ”็”จๅœจ้ญ…ๆ—ๆจกๅผไธ‹ๅ…ˆๅฐ่ฏ•ๅŽŸๅœฐๆฌ็งป๏ผŒๆฌไธๅŠจๅ†้‡ๆ–ฐๅฏๅŠจ
  • ๅบ”็”จๅ†…ๆ›ดๆ–ฐ่ฏดๆ˜ŽๆŒ‰็ณป็ปŸ่ฏญ่จ€ๆ˜พ็คบไธญๆ–‡ๆˆ–่‹ฑๆ–‡
  • ๅ†ฐ็ฎฑใ€Œ้‡ๆ–ฐๅ†ป็ป“ใ€ๅชๅค„็†ไฝฟ็”จไธญ็š„ๅบ”็”จ๏ผŒๅทฒๆš‚ๅœ็š„ไฟๆŒๆš‚ๅœ๏ผ›ใ€Œๅ…จ้ƒจ่งฃๅ†ปใ€ไธๅ†ๅฝฑๅ“ๅทฒๆš‚ๅœ็š„ๅบ”็”จ
  • ๅ†ฐ็ฎฑๅฏผๅ…ฅๅŒๆ—ถ่ฆ†็›–ๅทฒๅ†ป็ป“ไธŽๅทฒๆš‚ๅœ็š„ๆกŒ้ขๅบ”็”จ
  • ๅ†ฐ็ฎฑ็š„ๆš‚ๅœไธŽๅ†ป็ป“้ƒฝไผš่ทณ่ฟ‡ๆœฌๅบ”็”จ่‡ช่บซใ€systemใ€SystemUI ไธŽๅฝ“ๅ‰ๆกŒ้ข

Fixed

  • ไฟฎๅค่งฆ้’ฎ่ฎพ็ฝฎ้กต้ข„่งˆๆ—ถ่งฆ้’ฎไฝ็ฝฎๅไธŠใ€้•ฟๅบฆๅ˜็Ÿญ๏ผŒไธŽๅฏ่งฆๅ‘ๅŒบๅŸŸไธๅœจๅŒไธ€ๅค„
  • ไฟฎๅคๆ‰‹ๅŠฟๆงฝไฝไฟๅญ˜ๅŽไธขๅคฑๅฏๅŠจๅฝขๆ€๏ผŒ้€‰ๆ‹ฉๅฐ็ช—ไปไปฅๅ…จๅฑๅฏๅŠจ
  • ไฟฎๅคๅœ†็ŽฏๅฏๅŠจๅ™จๆงฝไฝๅœจ็ผ–่พ‘ๅŽ่ขซๆธ…็ฉบ
  • ไฟฎๅค้€š็Ÿฅ่ฟ‡ๆปค่ง„ๅˆ™ๅช้€‰ไธ€้กนๆ‰‹ๆœบ็Šถๆ€ๆ—ถ๏ผŒ้‡ๆ–ฐ่ฟ›ๅ…ฅ็ผ–่พ‘้กตๅŽๅ……็”ต็Šถๆ€ไธ‰้กน่ขซ่‡ชๅŠจๅ‹พ้€‰
  • ไฟฎๅค้€š็Ÿฅ่ฟ‡ๆปค่ง„ๅˆ™ๅบ”็”จๆกไปถไธ‹็š„ไธ‹ๆ‹‰ๆก†ๆ ‡็ญพไธŽๅ–ๅ€ผ้”™ไฝ
  • ไฟฎๅค้€š็Ÿฅ่ฏปๅ–ๆƒ้™ๅ…ฅๅฃๆœช็›ด่พพๆœฌๅบ”็”จ่ฏฆๆƒ…้กต
  • ไฟฎๅคๆ‰“ๅผ€ๅ‰ช่ดดๆฟ็›‘ๅฌๆ—ถๅถๅ‘ๅดฉๆบƒ
  • ไฟฎๅคๆ‰‹็”ต็ญ’ๅŠจไฝœๅทฒๆŽˆๆƒๆ—ถไป่ทณ่ฝฌๅบ”็”จไฟกๆฏ้กต
  • ไฟฎๅค่‹ฑๆ–‡็•Œ้ขๅ››ๅค„ๆ–‡ๆกˆไนฑ็ 
Close

Permissions

31 permissions requested

  • android.permission.INTERNET
  • android.permission.READ_CONTACTS
  • android.permission.ACCESS_NETWORK_STATE
  • android.permission.SYSTEM_ALERT_WINDOW
  • android.permission.FOREGROUND_SERVICE
  • android.permission.FOREGROUND_SERVICE_SPECIAL_USE
  • android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION
  • android.permission.FOREGROUND_SERVICE_DATA_SYNC
  • android.permission.POST_NOTIFICATIONS
  • android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
  • android.permission.READ_LOGS
  • android.permission.READ_EXTERNAL_STORAGE
  • android.permission.MANAGE_EXTERNAL_STORAGE
  • android.permission.READ_MEDIA_IMAGES
  • android.permission.READ_MEDIA_VISUAL_USER_SELECTED
  • android.permission.USE_EXACT_ALARM
  • android.permission.MODIFY_AUDIO_SETTINGS
  • android.permission.HIGH_SAMPLING_RATE_SENSORS
  • android.permission.WAKE_LOCK
  • android.permission.RECEIVE_BOOT_COMPLETED
  • android.permission.CAMERA
  • android.permission.WRITE_SETTINGS
  • android.permission.WRITE_SECURE_SETTINGS
  • android.permission.ACCESS_NOTIFICATION_POLICY
  • android.permission.PACKAGE_USAGE_STATS
  • android.permission.QUERY_ALL_PACKAGES
  • android.permission.REQUEST_INSTALL_PACKAGES
  • android.permission.BIND_APPWIDGET
  • android.permission.VIBRATE
  • com.slideindex.app.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION
  • moe.shizuku.manager.permission.API_V23
Close