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