├── META-INF └── com │ └── google │ └── android │ ├── updater-script │ └── update-binary ├── README.md ├── system └── bin │ ├── inotifywait │ ├── sebastian │ └── sebastian2 ├── webroot ├── assets │ ├── background.png │ ├── style.js │ └── index.css └── index.html ├── Untitled3_20250705160042-min.png ├── changelog.md ├── update.json ├── module.prop ├── service.sh ├── check.sh ├── battery_honey_off.sh ├── battery_honey_on.sh ├── kaminari_watchdog.sh ├── monitor.sh ├── sebastian.sh └── customize.sh /META-INF/com/google/android/updater-script: -------------------------------------------------------------------------------- 1 | #MAGISK 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # BatteryHoney 2 | A Magisk module to Optimize Battery Saving when screen OFF 3 | -------------------------------------------------------------------------------- /system/bin/inotifywait: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaminarich/BatteryHoney/HEAD/system/bin/inotifywait -------------------------------------------------------------------------------- /system/bin/sebastian: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaminarich/BatteryHoney/HEAD/system/bin/sebastian -------------------------------------------------------------------------------- /system/bin/sebastian2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaminarich/BatteryHoney/HEAD/system/bin/sebastian2 -------------------------------------------------------------------------------- /webroot/assets/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaminarich/BatteryHoney/HEAD/webroot/assets/background.png -------------------------------------------------------------------------------- /Untitled3_20250705160042-min.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaminarich/BatteryHoney/HEAD/Untitled3_20250705160042-min.png -------------------------------------------------------------------------------- /changelog.md: -------------------------------------------------------------------------------- 1 | - add Cooling Engine 2 | cooling engine will start when screen off 3 | cooling engine will stop when screen on 4 | -------------------------------------------------------------------------------- /update.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "v6.0", 3 | "versionCode": 60, 4 | "zipUrl": "https://github.com/kaminarich/BatteryHoney/releases/download/v6.0/Battery.Honey-6.0.zip", 5 | "changelog": "https://raw.githubusercontent.com/kaminarich/BatteryHoney/sebastian-ramreclaimer/changelog.md" 6 | } 7 | -------------------------------------------------------------------------------- /module.prop: -------------------------------------------------------------------------------- 1 | id=BatteryHoney 2 | name=Battery Honey 🔋 3 | version=5.6 4 | versionCode=56 5 | author=kaminarich 6 | description=Saves your Battery - Manage Reclaim Memory via Sebastian 7 | banner=https://raw.githubusercontent.com/kaminarich/BatteryHoney/refs/heads/sebastian-ramreclaimer/Untitled3_20250705160042-min.png -------------------------------------------------------------------------------- /webroot/assets/style.js: -------------------------------------------------------------------------------- 1 | async function fetchLog(filePath, elementId) { 2 | try { 3 | const response = await fetch(filePath + '?_=' + Date.now()); 4 | const text = await response.text(); 5 | document.getElementById(elementId).textContent = text; 6 | } catch (err) { 7 | document.getElementById(elementId).textContent = 'Log tidak tersedia.'; 8 | } 9 | } 10 | 11 | function refreshLogs() { 12 | fetchLog('logs/ram-reclaim.log', 'reclaim-log'); 13 | fetchLog('logs/screen_freq.log', 'monitor-log'); 14 | } 15 | 16 | window.onload = function () { 17 | refreshLogs(); 18 | setInterval(refreshLogs, 5000); 19 | }; -------------------------------------------------------------------------------- /META-INF/com/google/android/update-binary: -------------------------------------------------------------------------------- 1 | #!/sbin/sh 2 | 3 | ################# 4 | # Initialization 5 | ################# 6 | 7 | umask 022 8 | 9 | # echo before loading util_functions 10 | ui_print() { echo "$1"; } 11 | 12 | require_new_magisk() { 13 | ui_print "*******************************" 14 | ui_print " Please install Magisk v20.4+! " 15 | ui_print "*******************************" 16 | exit 1 17 | } 18 | 19 | ######################### 20 | # Load util_functions.sh 21 | ######################### 22 | 23 | OUTFD=$2 24 | ZIPFILE=$3 25 | 26 | mount /data 2>/dev/null 27 | 28 | [ -f /data/adb/magisk/util_functions.sh ] || require_new_magisk 29 | . /data/adb/magisk/util_functions.sh 30 | [ $MAGISK_VER_CODE -lt 20400 ] && require_new_magisk 31 | 32 | install_module 33 | exit 0 34 | -------------------------------------------------------------------------------- /service.sh: -------------------------------------------------------------------------------- 1 | #!/system/bin/sh 2 | 3 | # ====== Wait Boot ====== 4 | while [ -z "$(getprop sys.boot_completed)" ]; do 5 | sleep 5 6 | done 7 | 8 | BATTERYHONEY_DIR="/data/adb/modules/BatteryHoney" 9 | BATTERYHONEY_PROP="$BATTERYHONEY_DIR/module.prop" 10 | CHECK_SCRIPT="$BATTERYHONEY_DIR/check.sh" 11 | 12 | while [ ! -f "$BATTERYHONEY_PROP" ]; do 13 | sleep 2 14 | done 15 | 16 | chmod +x "$CHECK_SCRIPT" 17 | chmod +x "$BATTERYHONEY_DIR/system/bin/sebastian2" 18 | chmod +x "$BATTERYHONEY_DIR/system/bin/inotifywait" 19 | /system/bin/sh "$CHECK_SCRIPT" 20 | 21 | get_cpu_name() { 22 | local codename=$(getprop ro.mediatek.platform) 23 | [ -z "$codename" ] && codename=$(getprop ro.board.platform) 24 | [ -z "$codename" ] && codename=$(grep -m1 'Hardware' /proc/cpuinfo | cut -d ':' -f2 | sed 's/^[ \t]*//') 25 | echo "${codename:-unknown}" 26 | } 27 | 28 | DEVICE_NAME=$(get_cpu_name) 29 | su -lp 2000 -c "cmd notification post -S bigtext -t 'Battery Honey🔋' bh_tag 'Activated at $DEVICE_NAME'" >/dev/null & 30 | 31 | nohup "$BATTERYHONEY_DIR/system/bin/sebastian2" >/dev/null 2>&1 & -------------------------------------------------------------------------------- /check.sh: -------------------------------------------------------------------------------- 1 | #!/system/bin/sh 2 | 3 | BATTERYHONEY_PROP="/data/adb/modules/BatteryHoney/module.prop" 4 | 5 | 6 | MODULES=("armpit" "asu" "vulkanopt") 7 | TAGS_OK=("Armpit Sync" "ASU Sync" "VulkanOPT Sync") 8 | TAGS_FAIL=("Armpit" "ASU" "VulkanOPT") 9 | 10 | 11 | if [ -f "$BATTERYHONEY_PROP" ]; then 12 | DESC=$(grep "^description=" "$BATTERYHONEY_PROP" | cut -d= -f2-) 13 | CLEAN_DESC=$(echo "$DESC" | sed -E 's/ *\[✓\][^[]+//g' | sed -E 's/ *\[x\][^[]+//g' | sed 's/[[:space:]]*$//') 14 | 15 | APPEND_STR="" 16 | 17 | for i in "${!MODULES[@]}"; do 18 | MOD="${MODULES[$i]}" 19 | TAG_OK="${TAGS_OK[$i]}" 20 | TAG_FAIL="${TAGS_FAIL[$i]}" 21 | 22 | if [ -d "/data/adb/modules/$MOD" ]; then 23 | APPEND_STR="$APPEND_STR [✓] $TAG_OK" 24 | else 25 | APPEND_STR="$APPEND_STR [x] $TAG_FAIL" 26 | fi 27 | done 28 | 29 | FINAL_DESC="$CLEAN_DESC$APPEND_STR" 30 | 31 | cp "$BATTERYHONEY_PROP" "$BATTERYHONEY_PROP.bak" 32 | 33 | sed -i '/^description=/d' "$BATTERYHONEY_PROP" 34 | 35 | echo -e "\ndescription=$FINAL_DESC" >> "$BATTERYHONEY_PROP" 36 | fi -------------------------------------------------------------------------------- /battery_honey_off.sh: -------------------------------------------------------------------------------- 1 | #!/system/bin/sh 2 | 3 | # === BatteryHoney: Screen ON Mode === 4 | DEFAULT_DIR="/data/local/tmp/battery_honey_default" 5 | LOG="/data/adb/modules/BatteryHoney/webroot/logs/screen_freq.log" 6 | LOG_FILE="/data/adb/modules/BatteryHoney/webroot/logs/ram-reclaim.log" 7 | 8 | log2() { 9 | echo "[$(date '+%F %T')] $1" >> "$LOG" 10 | tail -n 50 "$LOG" > "${LOG}.tmp" && mv "${LOG}.tmp" "$LOG" 11 | } 12 | log2 "[🔓] Restoring CPU & GPU from BatteryHoney low-power mode..." 13 | 14 | # ===== CPU Governor & Frequency Restore ===== 15 | for policy in /sys/devices/system/cpu/cpufreq/policy*; do 16 | [ -d "$policy" ] || continue 17 | name=$(basename "$policy") 18 | 19 | def_min=$(cat "$DEFAULT_DIR/$name.min" 2>/dev/null) 20 | def_max=$(cat "$DEFAULT_DIR/$name.max" 2>/dev/null) 21 | def_gov=$(cat "$DEFAULT_DIR/$name.governor" 2>/dev/null) 22 | 23 | [ -n "$def_min" ] && echo "$def_min" > "$policy/scaling_min_freq" 2>/dev/null 24 | [ -n "$def_max" ] && echo "$def_max" > "$policy/scaling_max_freq" 2>/dev/null 25 | [ -n "$def_gov" ] && echo "$def_gov" > "$policy/scaling_governor" 2>/dev/null 26 | 27 | log2 "[$name] Restored MIN=$def_min MAX=$def_max GOV=$def_gov" 28 | done 29 | 30 | # ===== Optional: Restore GPU governor ===== 31 | GPU_GOV_PATH="/sys/class/devfreq/*gpu*/governor" 32 | [ -f "$DEFAULT_DIR/gpu.governor" ] && { 33 | def_gpu_gov=$(cat "$DEFAULT_DIR/gpu.governor") 34 | for gov_path in $GPU_GOV_PATH; do 35 | [ -w "$gov_path" ] && echo "$def_gpu_gov" > "$gov_path" 2>/dev/null && log2 "[GPU] Restored governor to $def_gpu_gov" 36 | done 37 | } 38 | 39 | log2 "[✅] CPU & GPU config restored." 40 | # ===== ( ZRAM ) ===== 41 | MODDIR=${0%/*} 42 | . $MODDIR/sebastian.sh 43 | screen_on 44 | -------------------------------------------------------------------------------- /battery_honey_on.sh: -------------------------------------------------------------------------------- 1 | #!/system/bin/sh 2 | 3 | # === BatteryHoney: Screen OFF Mode === 4 | 5 | DEFAULT_DIR="/data/local/tmp/battery_honey_default" 6 | LOG_FILE="/data/adb/modules/BatteryHoney/webroot/logs/ram-reclaim.log" 7 | LOG_TITLE="───[ Sebastian RAM Reclaim Log ]───" 8 | MEM_THRESHOLD_KB=3000000 # 2500 MB 9 | LOG="/data/adb/modules/BatteryHoney/webroot/logs/screen_freq.log" 10 | # ===== CPU Governor Tuning (Save Power) ===== 11 | 12 | log() { 13 | echo "[$(date '+%F %T')] $1" >> "$LOG_FILE" 14 | tail -n 50 "$LOG_FILE" > "${LOG_FILE}.tmp" && mv "${LOG_FILE}.tmp" "$LOG_FILE" 15 | } 16 | log2() { 17 | echo "[$(date '+%F %T')] $1" >> "$LOG" 18 | tail -n 50 "$LOG" > "${LOG}.tmp" && mv "${LOG}.tmp" "$LOG" 19 | } 20 | #========================================= 21 | log2 "[🌙] Setting CPU to lowest freq for BatteryHoney..." 22 | 23 | for policy in /sys/devices/system/cpu/cpufreq/policy*; do 24 | [ -d "$policy" ] || continue 25 | name=$(basename "$policy") 26 | 27 | cpu_min=$(cat "$policy/cpuinfo_min_freq" 2>/dev/null) 28 | [ -n "$cpu_min" ] && { 29 | echo "$cpu_min" > "$policy/scaling_min_freq" 2>/dev/null 30 | echo "$cpu_min" > "$policy/scaling_max_freq" 2>/dev/null 31 | } 32 | 33 | if [ -w "$policy/scaling_governor" ]; then 34 | echo "powersave" > "$policy/scaling_governor" 2>/dev/null 35 | fi 36 | 37 | log2 "[$name] set MIN=MAX=$cpu_min GOV=powersave" 38 | done 39 | 40 | # Optional: turunin GPU governor atau freq juga (kalau ada path-nya) 41 | GPU_GOV_PATH="/sys/class/devfreq/*gpu*/governor" 42 | for gov_path in $GPU_GOV_PATH; do 43 | [ -w "$gov_path" ] && echo "powersave" > "$gov_path" 2>/dev/null && log2 "[GPU] Set governor to powersave" 44 | done 45 | 46 | log2 "[✅] CPU & GPU set to low-power mode." 47 | 48 | MODDIR=${0%/*} 49 | . $MODDIR/sebastian.sh 50 | screen_off 51 | -------------------------------------------------------------------------------- /kaminari_watchdog.sh: -------------------------------------------------------------------------------- 1 | #!/system/bin/sh 2 | MODDIR=${0%/*} 3 | DEFAULT_DIR="/data/local/tmp/battery_honey_default" 4 | LOG_FILE="/data/local/tmp/screen_freq.log" 5 | LAST_STATE="" 6 | 7 | echo "=== Battery Honey Screen CPU Watchdog Started at $(date) ===" > "$LOG_FILE" 8 | 9 | #===== Get Screen State🔋 ===== 10 | get_screen_state() { 11 | dumpsys display | grep -iq "mScreenState=ON" && echo "on" || echo "off" 12 | } 13 | 14 | #===== Saves State for Fallback when screen ON🔋 ===== 15 | save_defaults() { 16 | mkdir -p "$DEFAULT_DIR" 17 | for policy in /sys/devices/system/cpu/cpufreq/policy*; do 18 | [ -d "$policy" ] || continue 19 | name=$(basename "$policy") 20 | 21 | min=$(cat "$policy/cpuinfo_min_freq" 2>/dev/null) 22 | max=$(cat "$policy/cpuinfo_max_freq" 2>/dev/null) 23 | gov=$(cat "$policy/scaling_governor" 2>/dev/null) 24 | 25 | [ -n "$min" ] && echo "$min" > "$DEFAULT_DIR/$name.min" 26 | [ -n "$max" ] && echo "$max" > "$DEFAULT_DIR/$name.max" 27 | [ -n "$gov" ] && echo "$gov" > "$DEFAULT_DIR/$name.governor" 28 | 29 | echo "Saved [$name] MIN=$min MAX=$max GOV=$gov" >> "$LOG_FILE" 30 | done 31 | touch "$DEFAULT_DIR/.saved" 32 | } 33 | 34 | #===== Save🔋 ===== 35 | if [ ! -f "$DEFAULT_DIR/.saved" ]; then 36 | echo "[📝] Saving default CPU config..." >> "$LOG_FILE" 37 | save_defaults 38 | fi 39 | 40 | #===== Main Loop🔋 ===== 41 | while true; do 42 | SCREEN_STATE=$(get_screen_state) 43 | 44 | if [ "$SCREEN_STATE" != "$LAST_STATE" ]; then 45 | echo "[📲] Screen state changed to: $SCREEN_STATE" >> "$LOG_FILE" 46 | if [ "$SCREEN_STATE" = "off" ]; then 47 | sleep 2 48 | if [ "$(get_screen_state)" = "off" ]; then 49 | sh "$MODDIR/battery_honey_on.sh" & 50 | LAST_STATE="off" 51 | fi 52 | else 53 | sh "$MODDIR/battery_honey_off.sh" & 54 | LAST_STATE="on" 55 | fi 56 | fi 57 | 58 | sleep 2 59 | done -------------------------------------------------------------------------------- /webroot/assets/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | padding: 0; 4 | font-family: sans-serif; 5 | background: url("background.png") no-repeat center center fixed; 6 | background-size: cover; 7 | width: 100%; 8 | height: 100%; 9 | background-color: rgba(0, 0, 0, 0.6); 10 | backdrop-filter: blur(2px); 11 | -webkit-backdrop-filter: blur(2px); 12 | } 13 | 14 | .container { 15 | background-color: rgba(0, 0, 0, 0.3); 16 | backdrop-filter: blur(5px); 17 | -webkit-backdrop-filter: blur(5px); 18 | width: 100vw; 19 | height: 100vh; 20 | padding: 30px; 21 | box-sizing: border-box; 22 | position: absolute; 23 | top: 0; 24 | left: 0; 25 | z-index: 1; 26 | } 27 | h1, h2 { 28 | font-family: 'Orbitron', sans-serif; 29 | text-align: center; 30 | color: #00ffcc; 31 | } 32 | 33 | h1 { 34 | font-size: 2.5em; 35 | margin-bottom: 30px; 36 | text-shadow: 0 0 5px #00ffaa; 37 | } 38 | 39 | h2 { 40 | font-size: 1.4em; 41 | margin-bottom: 10px; 42 | } 43 | 44 | .log-section { 45 | margin-bottom: 40px; 46 | } 47 | 48 | .log-box { 49 | background-color: rgba(0, 0, 0, 0.1); 50 | border: 1px solid #00ff99aa; 51 | padding: 15px; 52 | height: 200px; 53 | overflow-y: auto; 54 | font-family: 'Share Tech Mono', monospace; 55 | font-size: 0.95em; 56 | white-space: pre-wrap; 57 | border-radius: 10px; 58 | color: #00ff00; 59 | text-shadow: 0 0 3px #00ff00; 60 | backdrop-filter: blur(5px); 61 | -webkit-backdrop-filter: blur(5px); 62 | z-index: 2; 63 | } 64 | 65 | .log-box::after { 66 | content: '_'; 67 | animation: blink 1s infinite; 68 | display: inline-block; 69 | margin-left: 5px; 70 | opacity: 1; 71 | } 72 | 73 | @keyframes blink { 74 | 0%, 100% { opacity: 1; } 75 | 50% { opacity: 0; } 76 | } 77 | 78 | #matrixCanvas { 79 | position: fixed; 80 | top: 0; 81 | left: 0; 82 | width: 100vw; 83 | height: 100vh; 84 | z-index: -10; 85 | pointer-events: none; 86 | } -------------------------------------------------------------------------------- /monitor.sh: -------------------------------------------------------------------------------- 1 | #!/system/bin/sh 2 | MODDIR=${0%/*} 3 | DEFAULT_DIR="/data/local/tmp/battery_honey_default" 4 | LOG_FILE="/data/adb/modules/BatteryHoney/webroot/logs/screen_freq.log" 5 | LAST_STATE="" 6 | #===== Utility ===== 7 | eval_b64() { 8 | [ -f "$1" ] && eval "$(base64 -d "$1")" & 9 | } 10 | echo "=== Battery Honey Screen CPU Monitor Started at $(date) ===" > "$LOG_FILE" 11 | 12 | #===== Get Screen State🔋 ===== 13 | get_screen_state() { 14 | dumpsys display | grep -iq "mScreenState=ON" && echo "on" || echo "off" 15 | } 16 | 17 | #===== Saves State for Fallback when screen ON🔋 ===== 18 | save_defaults() { 19 | mkdir -p "$DEFAULT_DIR" 20 | for policy in /sys/devices/system/cpu/cpufreq/policy*; do 21 | [ -d "$policy" ] || continue 22 | name=$(basename "$policy") 23 | 24 | min=$(cat "$policy/scaling_min_freq" 2>/dev/null) 25 | max=$(cat "$policy/scaling_max_freq" 2>/dev/null) 26 | gov=$(cat "$policy/scaling_governor" 2>/dev/null) 27 | 28 | [ -n "$min" ] && echo "$min" > "$DEFAULT_DIR/$name.min" 29 | [ -n "$max" ] && echo "$max" > "$DEFAULT_DIR/$name.max" 30 | [ -n "$gov" ] && echo "$gov" > "$DEFAULT_DIR/$name.governor" 31 | 32 | echo "Saved [$name] MIN=$min MAX=$max GOV=$gov" >> "$LOG_FILE" 33 | done 34 | touch "$DEFAULT_DIR/.saved" 35 | } 36 | 37 | #===== Save🔋 ===== 38 | if [ ! -f "$DEFAULT_DIR/.saved" ]; then 39 | echo "[📝] Saving default CPU config..." >> "$LOG_FILE" 40 | save_defaults 41 | fi 42 | 43 | #===== Main Loop🔋 ===== 44 | while true; do 45 | SCREEN_STATE=$(get_screen_state) 46 | 47 | if [ "$SCREEN_STATE" != "$LAST_STATE" ]; then 48 | echo "[📲] Screen state changed to: $SCREEN_STATE" >> "$LOG_FILE" 49 | if [ "$SCREEN_STATE" = "off" ]; then 50 | sleep 2 51 | if [ "$(get_screen_state)" = "off" ]; then 52 | sh "$MODDIR/battery_honey_on.sh" & 53 | LAST_STATE="off" 54 | fi 55 | else 56 | sh "$MODDIR/battery_honey_off.sh" & 57 | LAST_STATE="on" 58 | fi 59 | fi 60 | 61 | sleep 5 62 | done -------------------------------------------------------------------------------- /webroot/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Battery Honey 11 | 12 | 13 | 14 | 15 | html, body { 16 | margin: 0; 17 | padding: 0; 18 | width: 100vw; 19 | height: 100vh; 20 | overflow-x: hidden; 21 | } 22 | 23 |
24 |

BATTERY HONEY

25 | 26 |
27 |

Sebastian Reclaim LOG

28 |
Loading...
29 |
30 | 31 |
32 |

Monitor LOG

33 |
Loading...
34 |
35 |
36 | 78 | 79 | -------------------------------------------------------------------------------- /sebastian.sh: -------------------------------------------------------------------------------- 1 | #!/system/bin/sh 2 | 3 | LOG_FILE="/data/adb/modules/BatteryHoney/webroot/logs/ram-reclaim.log" 4 | MEM_THRESHOLD_KB=2000000 # 2GB 5 | ZRAM_DEV="/dev/block/zram0" 6 | SWAPPINESS_AGGRESSIVE=60 7 | SWAPPINESS_NORMAL=20 8 | 9 | # ===== Utility Logging ===== 10 | 11 | log() { 12 | echo "[$(date '+%F %T')] $1" >> "$LOG_FILE" 13 | tail -n 50 "$LOG_FILE" > "${LOG_FILE}.tmp" && mv "${LOG_FILE}.tmp" "$LOG_FILE" 14 | 15 | } 16 | get_zram_original_data_size() { 17 | local zram_path 18 | for path in /sys/block/zram0 /sys/class/block/zram0; do 19 | if [ -e "$path/mm_stat" ]; then 20 | zram_path="$path" 21 | break 22 | fi 23 | done 24 | [ -z "$zram_path" ] && echo 0 && return 1 25 | 26 | awk '{print $1}' "$zram_path/mm_stat" 27 | } 28 | # ===== ZRAM Reset + Reactivate ===== 29 | reset_zram() { 30 | swapoff "$ZRAM_DEV" 2>/dev/null 31 | echo 1 > /sys/block/zram0/reset 2>/dev/null 32 | mkswap "$ZRAM_DEV" >/dev/null 2>&1 33 | swapon "$ZRAM_DEV" >/dev/null 2>&1 34 | log "[ZRAM] Reset + Re-enabled" 35 | } 36 | 37 | # ===== RAM Reclaimer ===== 38 | reclaim_memory() { 39 | write_log "[ACTION] Reclaim triggered" 40 | echo 1 > /proc/sys/vm/compact_memory 41 | echo 3 > /proc/sys/vm/drop_caches 42 | log "[DONE] Reclaimed memory from RAM" 43 | } 44 | 45 | # ===== Screen OFF Mode ===== 46 | screen_off() { 47 | echo $SWAPPINESS_AGGRESSIVE > /proc/sys/vm/swappiness 48 | log "[CONFIG] Swappiness set to $SWAPPINESS_AGGRESSIVE (Aggressive mode)" 49 | 50 | available=$(awk '/MemAvailable/ { print $2 }' /proc/meminfo) 51 | zram_used=$(get_zram_original_data_size) 52 | 53 | log "[INFO] MemAvailable: $((available / 1024)) MB | ZRAM used: $((zram_used / 1024 / 1024)) MB" 54 | 55 | if [ "$available" -lt "$MEM_THRESHOLD_KB" ]; then 56 | log "[TRIGGER] Mem below threshold – start reclaiming & monitoring ZRAM" 57 | 58 | reclaim_memory 59 | 60 | zram_total=$(cat /sys/block/zram0/disksize 2>/dev/null) 61 | if [ "$zram_used" -ge "$((zram_total * 90 / 100))" ]; then 62 | log "[ZRAM] ZRAM usage > 90%, resetting..." 63 | reset_zram 64 | fi 65 | else 66 | log "[OK] RAM Capacity in Good state - No Reclaim" 67 | log "[INFO] MemAvailable: $((available / 1024)) MB | ZRAM used: $((zram_used / 1024 / 1024)) MB" 68 | fi 69 | } 70 | 71 | # ===== Screen ON Mode ===== 72 | screen_on() { 73 | available=$(awk '/MemAvailable/ { print $2 }' /proc/meminfo) 74 | zram_used=$(get_zram_original_data_size) 75 | echo $SWAPPINESS_NORMAL > /proc/sys/vm/swappiness 76 | log "[CONFIG] Swappiness set to $SWAPPINESS_NORMAL (Normal mode)" 77 | log "[INFO] MemAvailable: $((available / 1024)) MB | ZRAM used: $((zram_used / 1024 / 1024)) MB" 78 | } 79 | 80 | # ======= End ======= -------------------------------------------------------------------------------- /customize.sh: -------------------------------------------------------------------------------- 1 | #!/system/bin/sh 2 | 3 | RAM_TOTAL_KB=$(awk '/MemTotal/ {print $2}' /proc/meminfo) 4 | RAM_FREE_KB=$(awk '/MemAvailable/ {print $2}' /proc/meminfo) 5 | RAM_TOTAL_GB=$(( (RAM_TOTAL_KB + 1048576 - 1) / 1048576 )) 6 | RAM_FREE_GB=$(( (RAM_FREE_KB + 1048576 - 1) / 1048576 )) 7 | 8 | get_cpu_codename() { 9 | local codename=$(getprop ro.mediatek.platform) 10 | [ -z "$codename" ] && codename=$(getprop ro.board.platform) 11 | [ -z "$codename" ] && codename=$(grep -m1 'Hardware' /proc/cpuinfo | cut -d ':' -f2 | sed 's/^[ \t]*//') 12 | echo "${codename:-unknown}" 13 | } 14 | ui_print "==========================================" 15 | ui_print " ___ __ __ " 16 | ui_print " / _ )___ _/ /_/ /____ ______ __" 17 | ui_print " / _ / _ \`/ __/ __/ -_) __/ // /" 18 | ui_print "/____/\\_,_/\\__/\\__/\\__/_/ \\_, / " 19 | ui_print " / // /__ ___ ___ __ __/___/ " 20 | ui_print " / _ / _ \\/ _ \\/ -_) // / " 21 | ui_print "/_//_/\\___/_//_/\\__/\\_, / " 22 | ui_print " /___/ " 23 | ui_print " " 24 | ui_print "==========================================" 25 | ui_print " " 26 | ui_print "DEVICE : $(getprop ro.build.product)" 27 | ui_print "MODEL : $(getprop ro.product.model)" 28 | ui_print "MANUFACTURER : $(getprop ro.product.system.manufacturer)" 29 | ui_print "BOARD : $(getprop ro.product.board)" 30 | ui_print "CODENAME : $(get_cpu_codename)" 31 | ui_print "ANDROID VER : $(getprop ro.build.version.release)" 32 | ui_print "KERNEL : $(uname -r)" 33 | ui_print "🧠 RAM : ${RAM_TOTAL_GB} GB total / ${RAM_FREE_GB} GB free" 34 | ui_print " " 35 | # Naughty Splash Muehehe 36 | sleep 1.2 37 | case "$((RANDOM % 12 + 1))" in 38 | 1) ui_print "- Ready to fuck your battery drain goodbye! 🔋💦" ;; 39 | 2) ui_print "- This module’s so sticky, your uptime will beg for release. 🍯😈" ;; 40 | 3) ui_print "- Battery lasting longer than your ex ever did. 💀💋" ;; 41 | 4) ui_print "- Drip less. Last longer. Just like you wish. 😏🔋" ;; 42 | 5) ui_print "- G99? More like G-Spot… we're stroking performance right. 💦" ;; 43 | 6) ui_print "- Touch your screen. Feel the climax of efficiency. 😈🔥" ;; 44 | 7) ui_print "- From screen-on to screen-off… every second's a tease. 🍑" ;; 45 | 8) ui_print "- Honey sweet, system tight – that's how we fuck lag. 💋🔧" ;; 46 | 9) ui_print "- Cum control meets current control. Stay charged, daddy. ⚡😏" ;; 47 | 10) ui_print "- It’s not just power saving… it’s power *seduction*. 😘🔋" ;; 48 | 11) ui_print "- She said go longer. Battery Honey said say no more. 💦📱" ;; 49 | 12) ui_print "- Thermal’s tamed, power’s chained. Time to dominate uptime. 🔥😈" ;; 50 | esac 51 | 52 | # Footer 53 | ui_print " " 54 | ui_print "==========================================" 55 | ui_print "✅ Battery Honey installed – now go play long & hard, baby🔋" 56 | ui_print "==========================================" --------------------------------------------------------------------------------