diff --git a/device.mk b/device.mk
index d9022f6..b5cb55c 100644
--- a/device.mk
+++ b/device.mk
@@ -65,7 +65,6 @@ PRODUCT_PROPERTY_OVERRIDES := \
ifneq ($(BOARD_IS_GO_BUILD),true)
PRODUCT_PRODUCT_PROPERTIES += \
ro.lmk.critical_upgrade=true \
- ro.lmk.use_minfree_levels=true \
ro.lmk.use_psi=true \
ro.lmk.use_new_strategy=false
endif
@@ -319,3 +318,62 @@ PRODUCT_VENDOR_PROPERTIES += drm.service.enabled=true
PRODUCT_REQUIRES_INSECURE_EXECMEM_FOR_SWIFTSHADER := true
+
+ifeq ($(USE_PER_DISPLAY_FOCUS),true)
+
+PRODUCT_PACKAGES += \
+ MultiDisplay
+
+ifeq ($(USE_PER_DISPLAY_FOCUS_ZQY_IME),true)
+
+PRODUCT_PACKAGES += \
+ zqyMultiClientInputMethod
+
+PRODUCT_PROPERTY_OVERRIDES += \
+ persist.debug.multi_client_ime=com.zqy.multidisplayinput/.MultiClientInputMethod \
+ ro.sys.multi_client_ime=com.zqy.multidisplayinput/.MultiClientInputMethod
+else
+
+ nozqyime=true
+
+endif
+
+ifeq ($(USE_PER_DISPLAY_FOCUS_IME),true)
+PRODUCT_PACKAGES += \
+ MultiClientInputMethod
+
+PRODUCT_PROPERTY_OVERRIDES += \
+ persist.debug.multi_client_ime=com.example.android.multiclientinputmethod/.MultiClientInputMethod \
+ ro.sys.multi_client_ime=com.example.android.multiclientinputmethod/.MultiClientInputMethod
+
+else
+
+ nomcime=true
+
+endif
+
+# if nozqyime and nomcime are true, then we have no ime
+ifeq ($(nozqyime),true)
+ifeq ($(nomcime),true)
+
+PRODUCT_PROPERTY_OVERRIDES += \
+ ro.boot.bliss.force_ime_on_all_displays=true
+
+endif
+endif
+
+endif
+
+ifeq ($(FORCE_NAVBAR_ON_SECONDARY_DISPLAYS),true)
+ PRODUCT_PROPERTY_OVERRIDES += \
+ ro.boot.force.navbar_on_secondary_displays=1
+
+endif
+
+ifeq ($(FORCE_STATUS_BAR_ON_SECONDARY_DISPLAYS),true)
+ PRODUCT_PROPERTY_OVERRIDES += \
+ ro.boot.force.statusbar_on_secondary_displays=1
+
+endif
+
+
diff --git a/init.sh b/init.sh
index 946e5f6..40e19c1 100644
--- a/init.sh
+++ b/init.sh
@@ -30,6 +30,37 @@ function init_misc()
# in case no cpu governor driver autoloads
[ -d /sys/devices/system/cpu/cpu0/cpufreq ] || modprobe acpi-cpufreq
+ # Allow for adjusting intel_pstate max/min freq on boot
+ if [ -n "$INTEL_PSTATE_CPU_MIN_PERF_PCT" ]; then
+ echo $INTEL_PSTATE_CPU_MIN_PERF_PCT > /sys/devices/system/cpu/intel_pstate/min_perf_pct
+ fi
+
+ if [ -n "$INTEL_PSTATE_CPU_MAX_PERF_PCT" ]; then
+ echo $INTEL_PSTATE_CPU_MAX_PERF_PCT > /sys/devices/system/cpu/intel_pstate/max_perf_pct
+ fi
+
+ # Allow for adjusting cpu energy performance
+ # Normal options: default, performance, balance_performance, balance_power, power
+ if [ -n "$CPU_ENERGY_PERFORMANCE_PREF" ]; then
+
+ cpuprefavailable=$(cat /sys/devices/system/cpu/cpu0/cpufreq/energy_performance_available_preferences)
+
+ # if the word "CPU_ENERGY_PERFORMANCE_PREF" is found in the $cpuprefavailable string, then set the options for all cpus
+ if [[ "$cpuprefavailable" == *"$CPU_ENERGY_PERFORMANCE_PREF"* ]]; then
+ for cpu in $(ls -d /sys/devices/system/cpu/cpu?); do
+ echo $CPU_ENERGY_PERFORMANCE_PREF > $cpu/cpufreq/energy_performance_preference || return 1
+ done
+ fi
+
+ fi
+
+ # Set cpu scaling at boot (ie set pstate status to active/passive at boot)
+ if [ -n "$INTEL_PSTATE_STATUS" ]; then
+ echo $INTEL_PSTATE_STATUS > /sys/devices/system/cpu/intel_pstate/status
+ else
+ echo passive > /sys/devices/system/cpu/intel_pstate/status
+ fi
+
# enable sdcardfs if /data is not mounted on tmpfs or 9p
#mount | grep /data\ | grep -qE 'tmpfs|9p'
#[ $? -eq 0 ] && set_prop_if_empty ro.sys.sdcardfs false
@@ -537,11 +568,35 @@ function init_hal_power()
e-tab*Pro)
SLEEP_STATE=force
;;
+ *TAIFAElimuTab*)
+ setprop sleep.earlysuspend 1
+ ;;
*)
;;
esac
- set_property sleep.state ${SLEEP_STATE}
+ # Detect if deep sleep is supported and auto set sleep.state parameter
+
+ # Override auto-detected power suspend type
+ # options: (https://www.kernel.org/doc/Documentation/power/interface.txt)
+ # 'freeze' (Suspend-to-Idle)
+ # 'standby' (Power-On Suspend)
+ # 'mem' (Suspend-to-RAM)
+ # 'disk' (Suspend-to-Disk)
+ mem_sleep_default=$(cat /sys/power/mem_sleep)
+ if [[ "$mem_sleep_default" == *deep* ]]; then
+ setprop sleep.state ${SLEEP_STATE:-mem}
+ current_sleep_state=${SLEEP_STATE:-mem}
+ else
+ setprop sleep.state ${SLEEP_STATE:-freeze}
+ current_sleep_state=${SLEEP_STATE:-freeze}
+ echo "s2idle" > /sys/power/mem_sleep
+ fi
+
+ current_sleep_state=$(getprop sleep.state)
+ if [[ "${current_sleep_state}" = "mem" ]] || [[ "${current_sleep_state}" = "disk" ]]; then
+ echo "deep" > /sys/power/mem_sleep
+ fi
}
function init_hal_thermal()
@@ -731,17 +786,25 @@ function init_cpu_governor()
function set_lowmem()
{
- # 512 MB size in kB : https://source.android.com/devices/tech/perf/low-ram
- SIZE_512MB=2048000
+ # 3GB size in kB : https://source.android.com/devices/tech/perf/low-ram
+ SIZE_3GB=3145728
mem_size=`cat /proc/meminfo | grep MemTotal | tr -s ' ' | cut -d ' ' -f 2`
- if [ "$mem_size" -le "$SIZE_512MB" ]
+ if [ "$mem_size" -le "$SIZE_3GB" ]
then
- setprop ro.config.low_ram true
+ setprop ro.config.low_ram ${FORCE_LOW_MEM:-true}
else
- setprop ro.config.low_ram false
+ # Choose between low-memory vs high-performance device.
+ # Default = false.
+ setprop ro.config.low_ram ${FORCE_LOW_MEM:-false}
fi
+
+ # Use free memory and file cache thresholds for making decisions
+ # when to kill. This mode works the same way kernel lowmemorykiller
+ # driver used to work. AOSP Default = false, Our default = true
+ setprop ro.lmk.use_minfree_levels ${FORCE_MINFREE_LEVELS:-true}
+
}
function set_custom_ota()
@@ -812,13 +875,490 @@ function set_custom_timezone()
}
+#
+# Copyright (C) 2024 Bliss Co-Labs
+#
+# License: GNU Public License v2 or later
+#
+
+function set_custom_package_perms()
+{
+ # Set up custom package permissions
+
+ current_user=$(dumpsys activity | grep mCurrentUserId | cut -d: -f2)
+
+ # KioskLauncher
+ exists_kiosk=$(pm list packages org.blissos.kiosklauncher | grep -c org.blissos.kiosklauncher)
+ if [ $exists_kiosk -eq 1 ]; then
+ pm set-home-activity "org.blissos.kiosklauncher/.ui.MainActivity"
+ am start -a android.intent.action.MAIN -c android.intent.category.HOME
+ fi
+
+ # MultiClientIME
+ exists_mcime=$(pm list packages com.example.android.multiclientinputmethod | grep -c com.example.android.multiclientinputmethod)
+ if [ $exists_mcime -eq 1 ]; then
+ # Enable desktop mode on external display (required for MultiDisplay Input)
+ settings put global force_desktop_mode_on_external_displays 1
+ fi
+
+ # ZQYMultiClientIME
+ exists_zqymcime=$(pm list packages com.zqy.multidisplayinput | grep -c com.zqy.multidisplayinput)
+ if [ $exists_zqymcime -eq 1 ]; then
+ # Enable desktop mode on external display (required for MultiDisplay Input)
+ settings put global force_desktop_mode_on_external_displays 1
+ fi
+
+ # BlissRestrictedLauncher
+ exists_restlauncher=$(pm list packages com.bliss.restrictedlauncher | grep -c com.bliss.restrictedlauncher)
+ if [ $exists_restlauncher -eq 1 ]; then
+ if [ ! -f /data/misc/rlconfig/admin ]; then
+ # set device admin
+ dpm set-device-owner com.bliss.restrictedlauncher/.DeviceAdmin
+ mkdir -p /data/misc/rlconfig
+ touch /data/misc/rlconfig/admin
+ chown 1000.1000 /data/misc/rlconfig /data/misc/rlconfig/*
+ chmod 775 /data/misc/rlconfig
+ chmod 664 /data/misc/rlconfig/admin
+ fi
+
+ pm grant com.bliss.restrictedlauncher android.permission.SYSTEM_ALERT_WINDOW
+ pm set-home-activity "com.bliss.restrictedlauncher/.activities.LauncherActivity"
+ am start -a android.intent.action.MAIN -c android.intent.category.HOME
+ fi
+
+ # Game-Mode Launcher
+ exists_molla=$(pm list packages com.sinu.molla | grep -c com.sinu.molla)
+ if [ $exists_molla -eq 1 ]; then
+ pm set-home-activity "com.sinu.molla/.MainActivity"
+ am start -a android.intent.action.MAIN -c android.intent.category.HOME
+ fi
+
+ # Game-Mode Launcher
+ exists_cross=$(pm list packages id.psw.vshlauncher | grep -c id.psw.vshlauncher)
+ if [ $exists_cross -eq 1 ]; then
+ pm set-home-activity "id.psw.vshlauncher/.activities.Xmb"
+ am start -a android.intent.action.MAIN -c android.intent.category.HOME
+ fi
+
+ # Garlic-Launcher
+ exists_garliclauncher=$(pm list packages com.sagiadinos.garlic.launcher | grep -c com.sagiadinos.garlic.launcher)
+ if [ $exists_garliclauncher -eq 1 ]; then
+ if [ ! -f /data/misc/glauncherconfig/admin ]; then
+ # set device admin
+ dpm set-device-owner com.sagiadinos.garlic.launcher/.receiver.AdminReceiver
+ mkdir -p /data/misc/glauncherconfig
+ touch /data/misc/glauncherconfig/admin
+ chown 1000.1000 /data/misc/glauncherconfig /data/misc/glauncherconfig/*
+ chmod 775 /data/misc/glauncherconfig
+ chmod 664 /data/misc/glauncherconfig/admin
+ fi
+ pm set-home-activity "com.sagiadinos.garlic.launcher/.MainActivity"
+ am start -a android.intent.action.MAIN -c android.intent.category.HOME
+ fi
+
+ # SmartDock
+ exists_smartdock=$(pm list packages cu.axel.smartdock | grep -c cu.axel.smartdock)
+ if [ $exists_smartdock -eq 1 ]; then
+ pm grant cu.axel.smartdock android.permission.SYSTEM_ALERT_WINDOW
+ pm grant cu.axel.smartdock android.permission.GET_TASKS
+ pm grant cu.axel.smartdock android.permission.REORDER_TASKS
+ pm grant cu.axel.smartdock android.permission.REMOVE_TASKS
+ pm grant cu.axel.smartdock android.permission.ACCESS_WIFI_STATE
+ pm grant cu.axel.smartdock android.permission.CHANGE_WIFI_STATE
+ pm grant cu.axel.smartdock android.permission.ACCESS_NETWORK_STATE
+ pm grant cu.axel.smartdock android.permission.ACCESS_COARSE_LOCATION
+ pm grant cu.axel.smartdock android.permission.ACCESS_FINE_LOCATION
+ pm grant cu.axel.smartdock android.permission.READ_EXTERNAL_STORAGE
+ pm grant cu.axel.smartdock android.permission.MANAGE_USERS
+ pm grant cu.axel.smartdock android.permission.BLUETOOTH_ADMIN
+ pm grant cu.axel.smartdock android.permission.BLUETOOTH_CONNECT
+ pm grant cu.axel.smartdock android.permission.BLUETOOTH
+ pm grant cu.axel.smartdock android.permission.REQUEST_DELETE_PACKAGES
+ pm grant cu.axel.smartdock android.permission.ACCESS_SUPERUSER
+ pm grant cu.axel.smartdock android.permission.PACKAGE_USAGE_STATS
+ pm grant cu.axel.smartdock android.permission.QUERY_ALL_PACKAGES
+ pm grant cu.axel.smartdock android.permission.WRITE_SECURE_SETTINGS
+ pm grant --user $current_user cu.axel.smartdock android.permission.WRITE_SECURE_SETTINGS
+ appops set cu.axel.smartdock WRITE_SECURE_SETTINGS allow
+ pm grant cu.axel.smartdock android.permission.WRITE_SETTINGS
+ pm grant --user $current_user cu.axel.smartdock android.permission.WRITE_SETTINGS
+ appops set cu.axel.smartdock WRITE_SETTINGS allow
+ pm grant cu.axel.smartdock android.permission.BIND_ACCESSIBILITY_SERVICE
+ pm grant --user $current_user cu.axel.smartdock android.permission.BIND_ACCESSIBILITY_SERVICE
+ appops set cu.axel.smartdock BIND_ACCESSIBILITY_SERVICE allow
+ pm grant cu.axel.smartdock android.permission.BIND_NOTIFICATION_LISTENER_SERVICE
+ pm grant --user $current_user cu.axel.smartdock android.permission.BIND_NOTIFICATION_LISTENER_SERVICE
+ appops set cu.axel.smartdock BIND_NOTIFICATION_LISTENER_SERVICE allow
+ pm grant cu.axel.smartdock android.permission.BIND_DEVICE_ADMIN
+ pm grant --user $current_user cu.axel.smartdock android.permission.BIND_DEVICE_ADMIN
+ appops set cu.axel.smartdock BIND_DEVICE_ADMIN allow
+ pm grant cu.axel.smartdock android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
+ pm grant --user $current_user cu.axel.smartdock android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
+
+ # set overlays enabled
+ settings put secure secure_overlay_settings 1
+
+ # allow displaying over other apps if in Go mode
+ settings put system alert_window_bypass_low_ram 1
+
+ # Only if PC_MODE is 1
+ # if [ $PC_MODE -eq 1 ]; then
+
+ if [ ! -f /data/misc/sdconfig/accessibility ] && ! pm list packages | grep -q "com.blissos.setupwizard"; then
+ # set accessibility services
+ eas=$(settings get secure enabled_accessibility_services)
+ if [ -n "$eas" ]; then
+ settings put secure enabled_accessibility_services $eas:cu.axel.smartdock/cu.axel.smartdock.services.DockService
+ else
+ settings put secure enabled_accessibility_services cu.axel.smartdock/cu.axel.smartdock.services.DockService
+ fi
+ mkdir -p /data/misc/sdconfig
+ touch /data/misc/sdconfig/accessibility
+ chown 1000.1000 /data/misc/sdconfig /data/misc/sdconfig/*
+ chmod 775 /data/misc/sdconfig
+ chmod 664 /data/misc/sdconfig/accessibility
+ fi
+ if [ ! -f /data/misc/sdconfig/notification ]; then
+ # set notification listeners
+ enl=$(settings get secure enabled_notification_listeners)
+ if [ -n "$enl" ]; then
+ settings put secure enabled_notification_listeners $enl:cu.axel.smartdock/cu.axel.smartdock.services.NotificationService
+
+ else
+ settings put secure enabled_notification_listeners cu.axel.smartdock/cu.axel.smartdock.services.NotificationService
+ fi
+ mkdir -p /data/misc/sdconfig
+ touch /data/misc/sdconfig/notification
+ chown 1000.1000 /data/misc/sdconfig /data/misc/sdconfig/*
+ chmod 775 /data/misc/sdconfig
+ chmod 664 /data/misc/sdconfig/notification
+ fi
+ if [ ! -f /data/misc/sdconfig/admin ]; then
+ # set device admin
+ dpm set-active-admin --user current cu.axel.smartdock/android.app.admin.DeviceAdminReceiver
+ mkdir -p /data/misc/sdconfig
+ touch /data/misc/sdconfig/admin
+ chown 1000.1000 /data/misc/sdconfig /data/misc/sdconfig/*
+ chmod 775 /data/misc/sdconfig
+ chmod 664 /data/misc/sdconfig/admin
+ fi
+
+ if [ $(settings get global development_settings_enabled) == 0 ]; then
+ settings put global development_settings_enabled 1
+ fi
+
+ [ -n "$SET_SMARTDOCK_DEFAULT" ] && pm set-home-activity "cu.axel.smartdock/.activities.LauncherActivity" || pm set-home-activity "com.android.launcher3/.LauncherProvider"
+
+ # fi
+ fi
+
+ # com.farmerbb.taskbar
+ exists_taskbar=$(pm list packages com.farmerbb.taskbar | grep -c com.farmerbb.taskbar)
+ if [ $exists_taskbar -eq 1 ]; then
+ pm grant com.farmerbb.taskbar android.permission.PACKAGE_USAGE_STATS
+ pm grant --user $current_user com.farmerbb.taskbar android.permission.WRITE_SECURE_SETTINGS
+ appops set com.farmerbb.taskbar BIND_DEVICE_ADMIN allow
+ pm grant com.farmerbb.taskbar android.permission.GET_TASKS
+ pm grant com.farmerbb.taskbar android.permission.BIND_CONTROLS
+ pm grant com.farmerbb.taskbar android.permission.BIND_INPUT_METHOD
+ pm grant com.farmerbb.taskbar android.permission.BIND_QUICK_SETTINGS_TILE
+ pm grant com.farmerbb.taskbar android.permission.REBOOT
+ pm grant --user $current_user com.farmerbb.taskbar android.permission.BIND_ACCESSIBILITY_SERVICE
+ appops set com.farmerbb.taskbar BIND_ACCESSIBILITY_SERVICE allow
+ pm grant --user $current_user com.farmerbb.taskbar android.permission.MANAGE_OVERLAY_PERMISSION
+ appops set com.farmerbb.taskbar MANAGE_OVERLAY_PERMISSION allow
+ pm grant com.farmerbb.taskbar android.permission.SYSTEM_ALERT_WINDOW
+ pm grant com.farmerbb.taskbar android.permission.USE_FULL_SCREEN_INTENT
+
+ # set overlays enabled
+ settings put secure secure_overlay_settings 1
+ fi
+
+ # MicroG: com.google.android.gms
+ is_microg=$(dumpsys package com.google.android.gms | grep -m 1 -c org.microg.gms)
+ if [ $is_microg -eq 1 ]; then
+ exists_gms=$(pm list packages com.google.android.gms | grep -c com.google.android.gms)
+ if [ $exists_gms -eq 1 ]; then
+ pm grant com.google.android.gms android.permission.ACCESS_FINE_LOCATION
+ pm grant com.google.android.gms android.permission.READ_EXTERNAL_STORAGE
+ pm grant com.google.android.gms android.permission.ACCESS_BACKGROUND_LOCATION
+ pm grant com.google.android.gms android.permission.ACCESS_COARSE_UPDATES
+ pm grant --user $current_user com.google.android.gms android.permission.FAKE_PACKAGE_SIGNATURE
+ appops set com.google.android.gms android.permission.FAKE_PACKAGE_SIGNATURE
+ pm grant --user $current_user com.google.android.gms android.permission.MICROG_SPOOF_SIGNATURE
+ appops set com.google.android.gms android.permission.MICROG_SPOOF_SIGNATURE
+ pm grant --user $current_user com.google.android.gms android.permission.WRITE_SECURE_SETTINGS
+ appops set com.google.android.gms android.permission.WRITE_SECURE_SETTINGS
+ pm grant com.google.android.gms android.permission.SYSTEM_ALERT_WINDOW
+ pm grant --user $current_user com.google.android.gms android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
+ appops set com.google.android.gms android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
+ fi
+ exists_vending=$(pm list packages com.google.android.vending | grep -c com.google.android.vending)
+ if [ $exists_vending -eq 1 ]; then
+ pm grant --user $current_user com.google.android.vending android.permission.FAKE_PACKAGE_SIGNATURE
+ appops set com.google.android.vending android.permission.FAKE_PACKAGE_SIGNATURE
+ fi
+ fi
+
+}
+
+function set_usb_mode()
+{
+ # Set up usb/adb props when values are detected in /proc/cmdline
+
+ for c in `cat /proc/cmdline`; do
+ case $c in
+ *=*)
+ eval $c
+ if [ -z "$1" ]; then
+ case $c in
+ FORCE_USE_ADB_CLIENT_MODE=2)
+ set_property persist.adb.notify 0
+ set_property ro.secure 0
+ set_property ro.adb.secure 0
+ set_property ro.debuggable 1
+ set_property service.adb.root 1
+ set_property persist.sys.root_access 1
+ set_property persist.service.adb.enable 1
+ set_property service.adb.tcp.port 5555
+ ;;
+ FORCE_USE_ADB_CLIENT_MODE=1)
+ set_property persist.usb.debug 1
+ set_property persist.adb.notify 0
+ set_property persist.sys.usb.config "mtp,adb"
+ set_property ro.secure 0
+ set_property ro.adb.secure 0
+ set_property ro.debuggable 1
+ set_property service.adb.root 1
+ set_property persist.sys.root_access 1
+ set_property persist.service.adb.enable 1
+ set_property service.adb.tcp.port 5555
+ ;;
+ FORCE_USE_ADB_CLIENT_MODE=0)
+ set_property persist.usb.debug 0
+ set_property persist.adb.notify 1
+ set_property persist.sys.usb.config "mtp"
+ set_property ro.secure 1
+ set_property ro.adb.secure 1
+ set_property ro.debuggable 0
+ set_property service.adb.root 0
+ set_property persist.sys.root_access 0
+ set_property persist.service.adb.enable 0
+ set_property service.adb.tcp.port 5555
+ ;;
+ FORCE_USE_ADB_MASS_STORAGE=*)
+ usb_config=$(getprop persist.sys.usb.config)
+ if [ "$FORCE_USE_ADB_MASS_STORAGE" == 1 ]; then
+ ms_value=",mass_storage"
+ else
+ ms_value=""
+ fi
+ if [ -z "$usb_config" ]; then
+ set_property persist.sys.usb.config "$ms_value"
+ else
+ set_property persist.sys.usb.config "$usb_config$ms_value"
+ fi
+ set_property persist.usb.debug "$FORCE_USE_ADB_MASS_STORAGE"
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ done
+}
+
+function set_max_logd()
+{
+ for c in `cat /proc/cmdline`; do
+ case $c in
+ *=*)
+ eval $c
+ if [ -z "$1" ]; then
+ case $c in
+ # Set TimeZone
+ SET_MAX_LOGD=*)
+ if [ "$SET_MAX_LOGD" == 1 ]; then
+ size_value="8388608"
+ radio_size_value="4M"
+ system_size_value="4M"
+ crash_size_value="1M"
+ else
+ size_value=""
+ radio_size_value=""
+ system_size_value=""
+ crash_size_value=""
+ fi
+ setprop persist.logd.size "$size_value"
+ setprop persist.logd.size.radio "$radio_size_value"
+ setprop persist.logd.size.system "$system_size_value"
+ setprop persist.logd.size.crash "$crash_size_value"
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ done
+
+}
+
+function set_package_opts()
+{
+ # Set generic package options
+ # Example: HIDE_APPS="com.android.settings,com.aurora.services,com.termux,com.android.vending"
+ # UNHIDE_APPS="com.android.settings,com.aurora.services,com.termux,com.android.vending"
+ # DISABLE_APPS="com.aurora.services,com.android.contacts,com.android.dialer"
+ # ENABLE_APPS="com.aurora.services,com.android.contacts,com.android.dialer,com.android.messaging"
+ #
+ # Note: Be careful about what apps you disable, enable or hide. Some apps are required for other
+ # functions, like org.zeroxlab.util.tscal while others can not be disabled and only hidden,
+ # like com.android.settings
+ for c in `cat /proc/cmdline`; do
+ case $c in
+ *=*)
+ eval $c
+ if [ -z "$1" ]; then
+ case $c in
+ HIDE_APPS=*)
+ hapackages="${HIDE_APPS#*=}"
+ hapackage_array=($(echo $hapackages | sed 's/,/ /g' | xargs))
+ for hapackage in "${hapackage_array[@]}"; do
+ if [ ! -f /data/misc/bbconfig/$hapackage ]; then
+ echo "HIDE_APPS: $hapackage"
+ pm hide $hapackage
+ sleep 1
+ mkdir -p /data/misc/bbconfig
+ touch /data/misc/bbconfig/$hapackage
+ fi
+ done
+ ;;
+ RESTORE_APPS=*)
+ rapackages="${RESTORE_APPS#*=}"
+ rapackage_array=($(echo $rapackages | sed 's/,/ /g' | xargs))
+ for rapackage in "${rapackage_array[@]}"; do
+ if [ -f /data/misc/bbconfig/$rapackage ]; then
+ echo "RESTORE_APPS: $rapackage"
+ pm unhide $rapackage
+ sleep 1
+ rm -rf /data/misc/bbconfig/$rapackage
+ fi
+ done
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ done
+
+}
+
+function set_custom_settings()
+{
+ # Set generic device settings
+ # Example: SET_SCREEN_OFF_TIMEOUT=1800000 # 30 minutes
+ # SET_SLEEP_TIMEOUT=86400000 # 1 day
+ #
+ for c in `cat /proc/cmdline`; do
+ case $c in
+ *=*)
+ eval $c
+ if [ -z "$1" ]; then
+ case $c in
+ SET_SCREEN_OFF_TIMEOUT=*)
+ # Set screen off timeout
+ # options: integer in milliseconds
+ settings put system screen_off_timeout "$SET_SCREEN_OFF_TIMEOUT"
+ ;;
+ SET_SLEEP_TIMEOUT=*)
+ # Set screen sleep timeout
+ # options: integer in milliseconds
+ settings put system sleep_timeout "$SET_SLEEP_TIMEOUT"
+ ;;
+ SET_POWER_ALWAYS_ON=*)
+ # Set power always on
+ # options: true or false
+ svc power stayon "$SET_POWER_ALWAYS_ON"
+ ;;
+ SET_STAY_ON_WHILE_PLUGGED_IN=*)
+ # Set stay on while plugged in
+ # options: true or false
+ settings put global stay_on_while_plugged_in "$SET_STAY_ON_WHILE_PLUGGED_IN"
+ ;;
+ FORCE_BLUETOOTH_SERVICE=*)
+ # Set force bluetooth service state
+ # options: enable, disable
+ pm "$FORCE_BLUETOOTH_SERVICE" com.android.bluetooth
+ svc bluetooth "$FORCE_BLUETOOTH_SERVICE"
+ ;;
+ FORCE_DISABLE_ALL_RADIOS=1)
+ # Set force disable all radios
+ settings put global airplane_mode_radios cell,wifi,bluetooth,nfc,wimax
+ settings put global airplane_mode_toggleable_radios ""
+ settings put secure sysui_qs_tiles "rotation,caffeine,$(settings get secure sysui_qs_tiles)"
+ cmd connectivity airplane-mode enable
+ ;;
+ FORCE_DESKTOP_ON_EXTERNAL=*)
+ # Enable desktop mode on external display (required for MultiDisplay Input)
+ settings put global force_desktop_mode_on_external_displays "$FORCE_DESKTOP_ON_EXTERNAL"
+ settings put global force_allow_on_external "$FORCE_DESKTOP_ON_EXTERNAL"
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ done
+
+}
+
+
+# Allow iio options to be passed through cmdline
+function set_iio_options()
+{
+ # Set up usb/adb props when values are detected in /proc/cmdline
+
+ for c in `cat /proc/cmdline`; do
+ case $c in
+ *=*)
+ eval $c
+ if [ -z "$1" ]; then
+ case $c in
+ SET_IIO_ORDER=*)
+ set_property ro.iio.accel.order "$SET_IIO_ORDER"
+ ;;
+ SET_IIO_ACCEL_QUIRKS=*)
+ set_property ro.iio.accel.quirks "$SET_IIO_ACCEL_QUIRKS"
+ ;;
+ SET_IIO_ACCEL_X_OPT_SCALE=*)
+ set_property ro.iio.accel.x.opt_scale "$SET_IIO_ACCEL_X_OPT_SCALE"
+ ;;
+ SET_IIO_ACCEL_Y_OPT_SCALE=*)
+ set_property ro.iio.accel.y.opt_scale "$SET_IIO_ACCEL_Y_OPT_SCALE"
+ ;;
+ SET_IIO_ANGLVEL_QUIRKS=*)
+ set_property ro.iio.anglvel.quirks "$SET_IIO_ANGLVEL_QUIRKS"
+ ;;
+ SET_IGNORE_ATKBD=*)
+ # (0,1) 0=off, 1=on
+ set_property ro.ignore_atkbd "$SET_IGNORE_ATKBD"
+ ;;
+ SET_IIO_MAGN_QUIRKS=*)
+ set_property ro.iio.magn.quirks "$SET_IIO_MAGN_QUIRKS"
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ done
+}
+
function do_init()
{
init_misc
set_lowmem
+ set_usb_mode
set_custom_timezone
init_hal_audio
set_custom_ota
+ set_max_logd
init_hal_bluetooth
init_hal_camera
init_hal_gps
@@ -831,6 +1371,7 @@ function do_init()
init_hal_thermal
init_hal_sensors
init_hal_surface
+ set_iio_options
init_tscal
init_ril
init_loop_links
@@ -903,6 +1444,10 @@ function do_bootcomplete()
pm disable org.lineageos.updater
fi
+ set_custom_settings
+ set_custom_package_perms
+ set_package_opts
+
post_bootcomplete
}
@@ -933,6 +1478,11 @@ for c in `cat /proc/cmdline`; do
DPI=*)
set_property ro.sf.lcd_density "$DPI"
;;
+ PWR_OFF_DBLCLK=*)
+ # set power off double click
+ # options: true,false
+ set_property poweroff.doubleclick "$PWR_OFF_DBLCLK"
+ ;;
SET_SF_ROTATION=*)
set_property ro.sf.hwrotation "$SET_SF_ROTATION"
;;
@@ -982,6 +1532,42 @@ for c in `cat /proc/cmdline`; do
# options: true, false
set_property persist.bliss.disable_recents "$FORCE_DISABLE_RECENTS"
;;
+ # Bass Settings
+ SET_LOGCAT_DEBUG=*)
+ set_property debug.logcat "$SET_LOGCAT_DEBUG"
+ ;;
+ PWR_OFF_DBLCLK=*)
+ # set power off double click
+ # options: true,false
+ set_property poweroff.doubleclick "$PWR_OFF_DBLCLK"
+ ;;
+ SET_USB_BUS_PORTS=*)
+ # Set USB bus ports
+ # Example: SET_USB_BUS_PORTS=001/001,001/002,001/003,001/004
+ genports="${SET_USB_BUS_PORTS#*=}"
+ genports_array=($(echo $gentty | sed 's/,/ /g' | xargs))
+ # loop through each option
+ for port in "${genports_array[@]}"; do
+ chown system:system /dev/bus/usb/$port
+ chmod 666 /dev/bus/usb/$port
+ done
+ ;;
+ SET_TTY_PORT_PERMS=*)
+ # Sets permissions for tty ports
+ # Example: SET_TTY_PORT_PERMS=ttyS0,ttyS1,ttyS2
+ gentty="${SET_TTY_PORT_PERMS#*=}"
+ gentty_array=($(echo $gentty | sed 's/,/ /g' | xargs))
+ # loop through each option
+ for tport in "${gentty_array[@]}"; do
+ # chown system:system /dev/$tport
+ chmod 666 /dev/$tport
+ done
+ ;;
+ FORCE_HIDE_NAVBAR_WINDOW=*)
+ # Force hide navigation bar window
+ # options: 0, 1
+ set_property persist.wm.debug.hide_navbar_window "$FORCE_HIDE_NAVBAR_WINDOW"
+ ;;
esac
[ "$SETUPWIZARD" = "0" ] && set_property ro.setupwizard.mode DISABLED
fi
diff --git a/overlay/frameworks/base/core/res/res/values/config.xml b/overlay/frameworks/base/core/res/res/values/config.xml
index c8e222d..bbd19b3 100644
--- a/overlay/frameworks/base/core/res/res/values/config.xml
+++ b/overlay/frameworks/base/core/res/res/values/config.xml
@@ -129,10 +129,48 @@
without impacting power, performance, and app compatibility (e.g. protected content). -->
true
-
true
+
+ true
+
+
+ true
+
+
+ - 0.8
+ - 0.3
+
+
+ true
+
+
+ false
+ 64
+
+
+ 2
+
+
+ false
+
true
+
+ true
+
+ true
+
diff --git a/packages.mk b/packages.mk
index 940c70a..72335aa 100644
--- a/packages.mk
+++ b/packages.mk
@@ -153,3 +153,40 @@ PRODUCT_PACKAGES += iptsd_runner iptsd \
iptsd-dump \
iptsd-perf
endif
+
+ifeq ($(USE_BLISS_SETUPWIZARD), true)
+
+PRODUCT_PACKAGES += \
+ BlissSetupWizard
+
+endif
+
+# Bliss Ethernet Manager
+ifeq ($(USE_BLISS_ETHERNET_MANAGER), true)
+PRODUCT_PACKAGES += \
+ BlissEthernetManagerApp
+
+endif
+
+# Bliss Power Manager
+ifeq ($(USE_BLISS_POWER_MANAGER), true)
+PRODUCT_PACKAGES += \
+ BlissPowerManagerApp
+
+endif
+
+# Bliss Kiosk App
+ifeq ($(USE_BLISS_KIOSK_LAUNCHER), true)
+
+PRODUCT_PACKAGES += \
+ BlissKioskLauncher
+
+endif
+
+# Bliss Restricted Launcher
+ifeq ($(USE_BLISS_RESTRICTED_LAUNCHER), true)
+
+PRODUCT_PACKAGES += \
+ BlissRestrictedLauncher
+
+endif
diff --git a/user_app_ksu/Android.mk b/user_app_ksu/Android.mk
new file mode 100644
index 0000000..5f5657f
--- /dev/null
+++ b/user_app_ksu/Android.mk
@@ -0,0 +1,45 @@
+#
+# Copyright (C) 2011-2015 The Android-x86 Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+
+# Minimal added packages option
+ifneq ($(BLISS_REMOVE_KSU), true)
+
+LOCAL_PATH := $(call my-dir)
+LOCAL_APPS := $(subst $(LOCAL_PATH)/,,$(wildcard $(LOCAL_PATH)/*$(COMMON_ANDROID_PACKAGE_SUFFIX)))
+
+define include-app
+include $$(CLEAR_VARS)
+
+LOCAL_LIBS := $$(shell zipinfo -1 $$(LOCAL_PATH)/$(1) | grep ^lib/ | grep -v /$$$$)
+
+LOCAL_MODULE := $$(basename $(1))
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_CLASS := ETC
+LOCAL_MODULE_SUFFIX := $$(suffix $(1))
+LOCAL_BUILT_MODULE_STEM := package.apk
+LOCAL_CERTIFICATE := PRESIGNED
+LOCAL_SRC_FILES := $(1)
+LOCAL_DEX_PREOPT := false
+LOCAL_MODULE_RELATIVE_PATH := user_app
+LOCAL_MODULE_TARGET_ARCH := $$(call get-prebuilt-src-arch,$$(notdir $$(patsubst %/,%,$$(dir $$(LOCAL_LIBS)))))
+LOCAL_PREBUILT_JNI_LIBS := $$(addprefix @,$$(filter lib/$$(LOCAL_MODULE_TARGET_ARCH)/%,$$(LOCAL_LIBS)))
+#$$(info $$(LOCAL_MODULE) LOCAL_MODULE_TARGET_ARCH=$$(LOCAL_MODULE_TARGET_ARCH))
+#$$(info $$(LOCAL_MODULE) LOCAL_PREBUILT_JNI_LIBS=$$(LOCAL_PREBUILT_JNI_LIBS))
+include $$(BUILD_PREBUILT)
+
+ALL_DEFAULT_INSTALLED_MODULES += $$(LOCAL_INSTALLED_MODULE)
+endef
+
+$(foreach a,$(LOCAL_APPS),$(eval $(call include-app,$(a))))
+
+else
+include $(call all-subdir-makefiles)
+# END Minimal added packages
+endif
diff --git a/user_app_ksu/README b/user_app_ksu/README
new file mode 100644
index 0000000..0a85ecb
--- /dev/null
+++ b/user_app_ksu/README
@@ -0,0 +1,3 @@
+#
+# Put your apks here. The Android-x86 build system will add them automatically as user apps.
+#
diff --git a/user_app_vanilla/kernelsu.apk b/user_app_ksu/kernelsu.apk
similarity index 100%
rename from user_app_vanilla/kernelsu.apk
rename to user_app_ksu/kernelsu.apk