├── README.md ├── add-foss-apps.sh ├── add-smart-dock.sh ├── assets └── SmartDock.apk ├── connect_android_studio.sh ├── navbar-control.sh └── toggle_keyboard.sh /README.md: -------------------------------------------------------------------------------- 1 | # wd-scripts 2 | 3 | This is a set of scripts that are meant to work with [Waydroid-Settings GTK app](https://github.com/axel358/Waydroid-Settings) but can work independently as standalone scripts too. 4 | 5 | The scripts all require the Waydroid container and session to be running in order to complete their tasks. 6 | 7 | Each script will have it's own -h (help) option to give further information. 8 | 9 | ## Scripts (so far): 10 | 11 | ### add-foss-apps.sh 12 | 13 | This will download the latest versions available from fdroid for MicroG, Aurora Store, Aurora Droid, a web browser and other basic apps 14 | 15 | ### connect_android_studio.sh 16 | 17 | This will connect/disconnect Waydroid through ADB for Android-Studio automatically 18 | 19 | ### toggle_keyboard.sh 20 | 21 | This will enable/disable the AOSP on-screen keyboard on Waydroid 22 | -------------------------------------------------------------------------------- /add-foss-apps.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if [ "$1" = "--help" ] || [ "$1" = "-h" ]; then 4 | echo "purpose: " 5 | echo "This will add microG, Aurora Store & Aurora Droid to Waydroid" 6 | echo "" 7 | echo "usage:" 8 | echo "Run the script, answer a question, done." 9 | echo "" 10 | echo "author: Jon West [electrikjesus@gmail.com]" 11 | echo "" 12 | 13 | exit 0 14 | fi 15 | PJFOLDER=$PWD 16 | install="false" 17 | HPATH=$HOME 18 | # - Show menu 19 | if command -v xmlstarlet >/dev/null 2>&1 ; then 20 | echo "xmlstarlet found" 21 | else 22 | echo "xmlstarlet not found, installing" 23 | sudo apt install xmlstarlet 24 | fi 25 | if command -v aapt >/dev/null 2>&1 ; then 26 | echo "aapt found" 27 | else 28 | echo "aapt not found, installing" 29 | sudo apt install aapt 30 | fi 31 | 32 | read -p "Do you want to install FOSS apps to Waydroid (y/n)?" choice 33 | case "$choice" in 34 | y|Y ) echo "yes" && install="true";; 35 | n|N ) echo "no" && echo "OK. You're the boss";; 36 | * ) echo "invalid";; 37 | esac 38 | 39 | if [ "$install" == "true" ]; then 40 | rm -rf $HPATH/.cache/wd-scripts/ 41 | mkdir $HPATH/.cache/wd-scripts/ 42 | cd $HPATH/.cache/wd-scripts/ 43 | git clone https://github.com/android-generic/vendor_foss foss 44 | cd $HPATH/.cache/wd-scripts/foss/ 45 | bash update.sh 46 | shopt -s globstar 47 | for f in bin/*.apk bin/**/*.apk ; do 48 | waydroid app install $f 49 | done 50 | cd $PJFOLDER 51 | echo "All set. No need to restart container, just verify things worked" 52 | fi 53 | 54 | -------------------------------------------------------------------------------- /add-smart-dock.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if [ "$1" = "--help" ] || [ "$1" = "-h" ]; then 4 | echo "purpose: " 5 | echo "This will add Smart-Dock (Alternative Desktop Mode) to Waydroid" 6 | echo "" 7 | echo "usage:" 8 | echo "Run the script, answer a question, done." 9 | echo "" 10 | echo "author: Jon West [electrikjesus@gmail.com]" 11 | echo "" 12 | 13 | exit 0 14 | fi 15 | PJFOLDER=$PWD 16 | echo -e $PJFOLDER 17 | SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" 18 | echo -e "SCRIPTPATH: $SCRIPTPATH" 19 | HPATH=$HOME 20 | echo -e "HOME: $HPATH" 21 | FILEPATH="system/priv-app/SmartDock" 22 | SYSAPP="SmartDock.apk" 23 | PERMISSIONS="android.permission.ACCESS_COARSE_LOCATION 24 | android.permission.ACCESS_FINE_LOCATION 25 | android.permission.RECEIVE_BOOT_COMPLETED 26 | android.permission.VIBRATE 27 | android.permission.ACCESS_WIFI_STATE 28 | android.permission.CHANGE_WIFI_STATE 29 | android.permission.ACCESS_LOCATION_EXTRA_COMMANDS 30 | android.permission.BLUETOOTH 31 | android.permission.BLUETOOTH_ADMIN 32 | android.permission.CALL_PHONE 33 | android.permission.CAMERA 34 | android.permission.DISABLE_KEYGUARD 35 | android.permission.FLASHLIGHT 36 | android.permission.GET_TASKS 37 | android.permission.KILL_BACKGROUND_PROCESSES 38 | android.permission.MODIFY_AUDIO_SETTINGS 39 | android.permission.PROCESS_OUTGOING_CALLS 40 | android.permission.READ_CALENDAR 41 | android.permission.READ_CONTACTS 42 | android.permission.READ_PHONE_STATE 43 | android.permission.READ_SYNC_SETTINGS 44 | android.permission.READ_SYNC_STATS 45 | android.permission.RECEIVE_SMS 46 | android.permission.RECORD_AUDIO 47 | android.permission.SEND_SMS 48 | android.permission.SET_WALLPAPER 49 | android.permission.USE_CREDENTIALS 50 | android.permission.WAKE_LOCK 51 | android.permission.WRITE_CALENDAR 52 | android.permission.WRITE_CONTACTS 53 | android.permission.WRITE_EXTERNAL_STORAGE 54 | android.permission.WRITE_SYNC_SETTINGS 55 | android.permission.ACCESS_NETWORK_STATE 56 | android.permission.CHANGE_NETWORK_STATE 57 | android.permission.INTERNET 58 | android.permission.NFC 59 | android.permission.GET_ACCOUNTS 60 | android.permission.READ_CALL_LOG 61 | android.permission.WRITE_CALL_LOG 62 | android.permission.BROADCAST_STICKY 63 | android.permission.ACCESS_NOTIFICATION_POLICY 64 | android.permission.ACCESS_NOTIFICATIONS 65 | android.permission.ANSWER_PHONE_CALLS 66 | android.permission.USE_FINGERPRINT 67 | android.permission.USE_BIOMETRIC 68 | android.permission.FOREGROUND_SERVICE 69 | android.permission.WRITE_SECURE_SETTINGS 70 | android.permission.ACTIVITY_RECOGNITION 71 | android.permission.READ_EXTERNAL_STORAGE 72 | android.permission.WRITE_EXTERNAL_STORAGE 73 | android.permission.ACCESS_BACKGROUND_LOCATION 74 | android.permission.INSTANT_APP_FOREGROUND_SERVICE 75 | android.permission.ACCESS_MEDIA_LOCATION 76 | android.permission.WRITE_SETTINGS 77 | android.permission.SYSTEM_ALERT_WINDOW 78 | android.permission.BIND_ACCESSIBILITY_SERVICE 79 | android.permission.WRITE_SECURE_SETTINGS 80 | android.permission.CHANGE_CONFIGURATION 81 | android.permission.READ_LOGS 82 | android.permission.DUMP" 83 | 84 | # - Show menu 85 | 86 | read -p "Do you want to install Smart-Dock to Waydroid (y/n)?" choice 87 | case "$choice" in 88 | y|Y ) echo "yes" && install="true";; 89 | n|N ) echo "no" && echo "OK. You're the boss";; 90 | * ) echo "invalid";; 91 | esac 92 | 93 | if [ "$install" == "true" ]; then 94 | sudo systemctl stop waydroid-container.service 95 | sudo e2fsck -f /var/lib/waydroid/images/system.img 96 | sudo resize2fs /var/lib/waydroid/images/system.img 2G 97 | sudo mount -o loop /var/lib/waydroid/images/system.img /mnt 98 | 99 | for i in $SYSAPP ; do 100 | sudo rm -rf /mnt/$FILEPATH 101 | sudo mkdir -p /mnt/$FILEPATH 102 | sudo cp $SCRIPTPATH/assets/$SYSAPP /mnt/$FILEPATH 103 | ls -a /mnt/$FILEPATH 104 | sudo chmod 644 /mnt/$FILEPATH/ 105 | sudo chown root:root /mnt/$FILEPATH 106 | done 107 | 108 | sudo umount /mnt 109 | sudo systemctl restart waydroid-container.service 110 | #~ waydroid session start & 111 | read -p "Start waydroid service in a separate terminal and once running, come back here and press return" 112 | sleep 20 113 | waydroid app install $SCRIPTPATH/assets/$SYSAPP 114 | 115 | 116 | #~ sudo waydroid app remove cu.axel.smartdock 117 | 118 | for p in $PERMISSIONS ; do 119 | # echo "pm grant cu.axel.smartdock $p" | sudo -S waydroid shell 2> /dev/null 120 | echo "pm grant cu.axel.smartdock $p" | sudo -S waydroid shell 121 | done 122 | 123 | echo "settings put secure enabled_notification_listeners %nlisteners:cu.axel.smartdock/cu.axel.smartdock.service.ServiceNotificationIntercept" | sudo -S waydroid shell 124 | 125 | echo "settings put secure enabled_notification_listeners %nlisteners:cu.axel.smartdock/cu.axel.smartdock.service.CallNotificationListener" | sudo -S waydroid shell 126 | echo "settings put secure enabled_accessibility_services cu.axel.smartdock/cu.axel.smartdock.AccessibilityService" | sudo -S waydroid shell 127 | echo "settings put secure accessibility_enabled 1" | sudo -S waydroid shell 128 | 129 | #~ cd $PJFOLDER 130 | echo "All set. You need to restart container to verify things worked" 131 | fi 132 | 133 | -------------------------------------------------------------------------------- /assets/SmartDock.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/electrikjesus/wd-scripts/f3863af368def527839cd8a885ad8d40a72b9ae5/assets/SmartDock.apk -------------------------------------------------------------------------------- /connect_android_studio.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if [ "$1" = "--help" ] || [ "$1" = "-h" ]; then 4 | echo "purpose: " 5 | echo "This will connect waydroid to Android Studio" 6 | echo "" 7 | echo "usage:" 8 | echo "Run the script, answer a question, done." 9 | echo "" 10 | echo "author: Jon West [electrikjesus@gmail.com]" 11 | echo "" 12 | 13 | exit 0 14 | fi 15 | 16 | install_as="false" 17 | HPATH=$HOME 18 | 19 | if [ ! -f /opt/android-studio/bin/studio.sh ]; then 20 | read -p "Do you want to download Android Studio and Install it? (y/n)?" choice 21 | 22 | case "$choice" in 23 | y|Y ) echo "yes" 24 | install_as="true";; 25 | n|N ) echo "no";; 26 | * ) echo "invalid";; 27 | esac 28 | 29 | if [ "$install_as" == "true" ]; then 30 | wget -o https://redirector.gvt1.com/edgedl/android/studio/ide-zips/2021.1.1.20/android-studio-2021.1.1.20-linux.tar.gz $HPATH/Downloads/ 31 | sudo apt-get install lib32z1 lib32ncurses* lib32stdc++6 adb 32 | cd $HPATH/Downloads 33 | tar xvzf $HPATH/Downloads/android-studio*.tar.gz -C /tmp 34 | sudo chown -R root:root /tmp/android-studio 35 | sudo mv /tmp/android-studio /opt/ 36 | echo "export PATH=~/Android/sdk/platformtools:~/Android/sdk/tools:/opt/android-studio/bin:$PATH" >> $HPATH/.bashrc 37 | bash 38 | 39 | fi 40 | 41 | fi 42 | 43 | #~ if [ -f /opt/android-studio/bin/studio.sh ]; then 44 | #~ $PATH/studio.sh 45 | #~ echo "Android Studio is starting now, please complete setup and launch your project. Then come back here and..." 46 | #~ read -p "Press enter to continue" 47 | #~ else 48 | echo "Please start Android Studio and launch your project. Then come back here and..." 49 | read -p "Press enter to continue" 50 | #~ fi 51 | 52 | 53 | 54 | # - Grab IP: hostname -I | cut -d' ' -f1 55 | get_ip="ip addr show eth0 | grep 'inet ' | cut -d ' ' -f 6 | cut -d / -f 1" 56 | ip=$(echo $get_ip | sudo waydroid shell) 57 | # - connect to AS using ADB 58 | 59 | adb_command=$(adb connect $ip:5555) 60 | running="already" 61 | if [[ $adb_command == *"$running"* ]]; then 62 | echo "$adb_command" 63 | read -p "Do you want to disconnect ADB (y/n)?" choice 64 | case "$choice" in 65 | y|Y ) echo "yes" && adb disconnect $ip:5555 ;; 66 | n|N ) echo "no";; 67 | * ) echo "invalid";; 68 | esac 69 | else 70 | echo "$adb_command" 71 | fi 72 | 73 | # Done 74 | 75 | -------------------------------------------------------------------------------- /navbar-control.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # purpose: Hide/Show Waydroid navbar 4 | # Will set the following depending on what is detected: 5 | # qemu.hw.mainkeys=1 6 | # 7 | # Then it will ask if you are using Waydroid 10 or 11 and 8 | # make the proper anbox.conf changes for you 9 | # 10 | # author: Jon West [electrikjesus@gmail.com] 11 | 12 | nb_disabled="" 13 | enable="false" 14 | disable="false" 15 | 16 | if [ "$1" = "--help" ] || [ "$1" = "-h" ]; then 17 | echo "purpose: " 18 | echo "Hide/Show Waydroid navbar" 19 | echo "the waydroid_base.prop found in /var/lib/waydroid/" 20 | echo "" 21 | echo "This will set the following depending on what is selected:" 22 | echo " qemu.hw.mainkeys=1" 23 | echo "" 24 | echo "usage:" 25 | echo "Run the script, answer a few questions, done." 26 | echo "" 27 | echo "author: Jon West [electrikjesus@gmail.com]" 28 | echo "" 29 | 30 | exit 0 31 | fi 32 | 33 | FILENAME='/var/lib/waydroid/waydroid_base.prop' 34 | I=0 35 | for LN in $(cat $FILENAME) 36 | do 37 | if [ "$LN" == "qemu.hw.mainkeys=1" ]; then 38 | echo "navbar disabled :)" 39 | nb_disabled="true" 40 | fi 41 | done 42 | 43 | # Present Menu 44 | # If navbar is disabled 45 | if [ "$nb_disabled" ]; then 46 | read -p "Navbar is disabled, do you want to enable it (y/n)?" choice 47 | case "$choice" in 48 | y|Y ) echo "yes" && enable="true";; 49 | n|N ) echo "no";; 50 | * ) echo "invalid";; 51 | esac 52 | 53 | # Else, it must be enabled 54 | else 55 | read -p "Navbar is enabled. Do you want to disable it (y/n)?" choice 56 | case "$choice" in 57 | y|Y ) echo "yes" && disable="true";; 58 | n|N ) echo "no";; 59 | * ) echo "invalid";; 60 | esac 61 | fi 62 | if [ "$enable" == "true" ]; then 63 | sudo sh -c "sed -i '/qemu.hw.mainkeys=1/d' /var/lib/waydroid/waydroid_base.prop" && echo "All Set. Please restart container to see changes. Thanks for using!" || echo "Process Failed, please try again!" 64 | fi 65 | if [ "$disable" == "true" ]; then 66 | sudo sh -c "echo 'qemu.hw.mainkeys=1' >> /var/lib/waydroid/waydroid_base.prop" && echo "All Set. Please restart container to see changes. Thanks for using!" || echo "Process Failed, please try again!" 67 | fi 68 | 69 | 70 | -------------------------------------------------------------------------------- /toggle_keyboard.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if [ "$1" = "--help" ] || [ "$1" = "-h" ]; then 4 | echo "purpose: " 5 | echo "This will enable/disable the Android on-screen keyboard" 6 | echo "" 7 | echo "usage:" 8 | echo "Run the script, answer a question, done." 9 | echo "" 10 | echo "author: Jon West [electrikjesus@gmail.com]" 11 | echo "" 12 | 13 | exit 0 14 | fi 15 | 16 | state=$(echo "pm list packages -d 2>/dev/null | grep com.android.inputmethod.latin | wc -l" | sudo waydroid shell) 17 | 18 | if [ "$state" == 1 ]; then 19 | kb_state="Disabled" 20 | else 21 | kb_state="Enabled" 22 | fi 23 | echo "Keyboard is currently: $kb_state" 24 | read -p "Do you want to (1) Enable, or (2) Disable" choice 25 | case "$choice" in 26 | 1 ) echo "pm enable com.android.inputmethod.latin" | sudo waydroid shell;; 27 | 2 ) echo "pm disable com.android.inputmethod.latin" | sudo waydroid shell;; 28 | * ) echo "invalid";; 29 | esac 30 | 31 | 32 | 33 | --------------------------------------------------------------------------------