Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions app/src/main/java/io/github/kvmy666/autoexpand/MainHook.kt
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import de.robv.android.xposed.XposedHelpers
import de.robv.android.xposed.callbacks.XC_LoadPackage
import io.github.kvmy666.autoexpand.hook.GlobalSearchHook
import io.github.kvmy666.autoexpand.hook.KeepScreenOnController
import io.github.kvmy666.autoexpand.hook.LauncherDrawerHook
import io.github.kvmy666.autoexpand.hook.NotificationExpander
import io.github.kvmy666.autoexpand.hook.PrefsBridge
import io.github.kvmy666.autoexpand.hook.SnapperChordHook
Expand All @@ -20,6 +21,9 @@ class MainHook : IXposedHookLoadPackage {
/** Phase D — global-search Enter/Go launches the first result. */
private val globalSearch = GlobalSearchHook(prefs)

/** Launcher drawer auto-open keyboard, IME sync, Enter/Go launches first result, auto-open single result, keep app grid before typing, reopen search at top. */
private val launcherDrawer = LauncherDrawerHook(prefs)

/** Snapper hardware chord (Power + Volume-Down), installed in system_server. */
private val snapperChord = SnapperChordHook(prefs)

Expand All @@ -46,6 +50,9 @@ class MainHook : IXposedHookLoadPackage {
"com.oppo.quicksearchbox" -> try { globalSearch.install(lpparam) } catch (t: Throwable) {
Log.e("TweaksLauncher", "Global search hook init failed: $t")
}
"com.android.launcher" -> try { launcherDrawer.install(lpparam) } catch (t: Throwable) {
Log.e("TweaksLauncher", "Launcher drawer hook init failed: $t")
}
// Gboard + all other apps: the selection action bar is rendered
// entirely by KeyboardHook (keyboard-side, no per-app injection needed).
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,12 @@ internal fun SettingsScreen(prefs: SharedPreferences) {
// ── System Behavior state ─────────────────────────────────────────────────
var keepScreenOnEnabled by remember { mutableStateOf(prefs.getBoolean("keep_screen_on_enabled", false)) }
var globalSearchEnterEnabled by remember { mutableStateOf(prefs.getBoolean("global_search_enter_launch_enabled", false)) }
var launcherDrawerKeyboardEnabled by remember { mutableStateOf(prefs.getBoolean("launcher_drawer_keyboard_enabled", false)) }
var launcherDrawerImeSyncEnabled by remember { mutableStateOf(prefs.getBoolean("launcher_drawer_ime_sync_enabled", false)) }
var launcherDrawerEnterEnabled by remember { mutableStateOf(prefs.getBoolean("launcher_drawer_enter_launch_enabled", false)) }
var launcherDrawerAutoSingleEnabled by remember { mutableStateOf(prefs.getBoolean("launcher_drawer_auto_launch_single_enabled", false)) }
var launcherDrawerKeepLayoutEnabled by remember { mutableStateOf(prefs.getBoolean("launcher_drawer_keep_layout_until_query_enabled", false)) }
var launcherDrawerReopenTopEnabled by remember { mutableStateOf(prefs.getBoolean("launcher_drawer_reopen_search_at_top_enabled", false)) }
var headsupPopupEnabled by remember { mutableStateOf(prefs.getBoolean("disable_headsup_popup_enabled", true)) }
var ungroupEnabled by remember { mutableStateOf(prefs.getBoolean("ungroup_notifications_enabled", true)) }
var excludedCount by remember { mutableIntStateOf(prefs.getStringSet("excluded_apps", emptySet())?.size ?: 0) }
Expand Down Expand Up @@ -282,7 +288,7 @@ internal fun SettingsScreen(prefs: SharedPreferences) {
snapperMasterEnabled = snapperMasterEnabled,
zonesEnabled = zonesEnabled,
kbEnhancerEnabled = kbEnhancerEnabled,
systemBehaviorEnabled = keepScreenOnEnabled || backHapticEnabled || globalSearchEnterEnabled,
systemBehaviorEnabled = keepScreenOnEnabled || backHapticEnabled || globalSearchEnterEnabled || launcherDrawerKeyboardEnabled || launcherDrawerImeSyncEnabled || launcherDrawerEnterEnabled || launcherDrawerAutoSingleEnabled || launcherDrawerKeepLayoutEnabled || launcherDrawerReopenTopEnabled,
modifier = Modifier.padding(padding),
onNavigate = { selectedFeature = it }
)
Expand Down Expand Up @@ -422,6 +428,47 @@ internal fun SettingsScreen(prefs: SharedPreferences) {
onCheckedChange = { globalSearchEnterEnabled = it; onToggle("global_search_enter_launch_enabled", it) }
)
}

// ── Launcher Drawer ──
SettingsCard {
SectionLabel("Launcher Drawer")
ToggleRow(
title = stringResource(R.string.launcher_drawer_keyboard_title),
description = stringResource(R.string.launcher_drawer_keyboard_desc),
checked = launcherDrawerKeyboardEnabled,
onCheckedChange = { launcherDrawerKeyboardEnabled = it; onToggle("launcher_drawer_keyboard_enabled", it) }
)
ToggleRow(
title = stringResource(R.string.launcher_drawer_ime_sync_title),
description = stringResource(R.string.launcher_drawer_ime_sync_desc),
checked = launcherDrawerImeSyncEnabled,
onCheckedChange = { launcherDrawerImeSyncEnabled = it; onToggle("launcher_drawer_ime_sync_enabled", it) }
)
ToggleRow(
title = stringResource(R.string.launcher_drawer_enter_title),
description = stringResource(R.string.launcher_drawer_enter_desc),
checked = launcherDrawerEnterEnabled,
onCheckedChange = { launcherDrawerEnterEnabled = it; onToggle("launcher_drawer_enter_launch_enabled", it) }
)
ToggleRow(
title = stringResource(R.string.launcher_drawer_auto_single_title),
description = stringResource(R.string.launcher_drawer_auto_single_desc),
checked = launcherDrawerAutoSingleEnabled,
onCheckedChange = { launcherDrawerAutoSingleEnabled = it; onToggle("launcher_drawer_auto_launch_single_enabled", it) }
)
ToggleRow(
title = stringResource(R.string.launcher_drawer_keep_layout_title),
description = stringResource(R.string.launcher_drawer_keep_layout_desc),
checked = launcherDrawerKeepLayoutEnabled,
onCheckedChange = { launcherDrawerKeepLayoutEnabled = it; onToggle("launcher_drawer_keep_layout_until_query_enabled", it) }
)
ToggleRow(
title = stringResource(R.string.launcher_drawer_reopen_top_title),
description = stringResource(R.string.launcher_drawer_reopen_top_desc),
checked = launcherDrawerReopenTopEnabled,
onCheckedChange = { launcherDrawerReopenTopEnabled = it; onToggle("launcher_drawer_reopen_search_at_top_enabled", it) }
)
}
}

// ── Keyboard Enhancer ─────────────────────────────────────────
Expand Down
Loading