diff --git a/.gitattributes b/.gitattributes index dfe077042..31a751708 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,2 +1,4 @@ +# Make sure that the shell files use LF +FCL/src/main/assets/fcl_shell/** text=auto eol=lf # Auto detect text files and perform LF normalization * text=auto diff --git a/FCL/build.gradle b/FCL/build.gradle index 7750f1bbd..963d9b31f 100644 --- a/FCL/build.gradle +++ b/FCL/build.gradle @@ -48,6 +48,9 @@ android { versionName "1.2.0.2" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + aaptOptions{ + ignoreAssets "!.svn:!.git:_*:!CVS:!thumbs.db:!picasa.ini:!*.scc:*~" + } } buildTypes { diff --git a/FCL/src/main/assets/fcl_shell/.bashrc b/FCL/src/main/assets/fcl_shell/.bashrc new file mode 100644 index 000000000..56ddc0a2e --- /dev/null +++ b/FCL/src/main/assets/fcl_shell/.bashrc @@ -0,0 +1,6 @@ +#!/system/bin/sh +export FCL_PATH_SHELL="$(dirname "$(readlink -f "${0}")")/cmd_tools" +export FCL_PATH_INTERNAL="${HOME}" +chmod +x "${FCL_PATH_SHELL}/bin/"* +export PATH="${FCL_PATH_SHELL}/bin":${PATH} +. ${FCL_PATH_SHELL}/init.sh \ No newline at end of file diff --git a/FCL/src/main/assets/fcl_shell/cmd_tools/bin/hello b/FCL/src/main/assets/fcl_shell/cmd_tools/bin/hello new file mode 100644 index 000000000..8cff74f73 --- /dev/null +++ b/FCL/src/main/assets/fcl_shell/cmd_tools/bin/hello @@ -0,0 +1,7 @@ +#!/system/bin/sh +${fclshell_load_lang} hello +if [[ "$1" == "-h" || "$1" == "--help" ]]; then + echo "${lang_hello_help}" +else + echo "${lang_hello_welcome}" +fi \ No newline at end of file diff --git a/FCL/src/main/assets/fcl_shell/cmd_tools/init.sh b/FCL/src/main/assets/fcl_shell/cmd_tools/init.sh new file mode 100644 index 000000000..93cf02c64 --- /dev/null +++ b/FCL/src/main/assets/fcl_shell/cmd_tools/init.sh @@ -0,0 +1,5 @@ +#!/system/bin/sh +. "${FCL_PATH_SHELL}/lib/lang/init.sh" +export fclshell_load_lang=". ${FCL_PATH_SHELL}/lib/lang/load.sh" +. "${FCL_PATH_SHELL}/lib/hidden_theme/init.sh" +sh "${FCL_PATH_SHELL}/bin/hello" \ No newline at end of file diff --git a/FCL/src/main/assets/fcl_shell/cmd_tools/lib/hidden_theme/init.sh b/FCL/src/main/assets/fcl_shell/cmd_tools/lib/hidden_theme/init.sh new file mode 100644 index 000000000..a99c5cc94 --- /dev/null +++ b/FCL/src/main/assets/fcl_shell/cmd_tools/lib/hidden_theme/init.sh @@ -0,0 +1,2 @@ +#!/system/bin/sh +alias EnableHiddenTheme="sh \"${FCL_PATH_SHELL}/lib/hidden_theme/set.sh\"" \ No newline at end of file diff --git a/FCL/src/main/assets/fcl_shell/cmd_tools/lib/hidden_theme/set.sh b/FCL/src/main/assets/fcl_shell/cmd_tools/lib/hidden_theme/set.sh new file mode 100644 index 000000000..b549e4b3c --- /dev/null +++ b/FCL/src/main/assets/fcl_shell/cmd_tools/lib/hidden_theme/set.sh @@ -0,0 +1,23 @@ +#!/system/bin/sh +${fclshell_load_lang} hidden_theme + +. "${FCL_PATH_SHELL}/lib/launcher_theme/load.sh" +export FCL_CONF_THEME_THEME_COLOR="2136981471" +export FCL_CONF_THEME_THEME_COLOR2="-32897" +export FCL_CONF_THEME_ANIMATION_SPEED="8" +export FCL_CONF_THEME_CLOSE_SKIN_MODEL="true" +export FCL_CONF_THEME_MODIFIED="true" +. "${FCL_PATH_SHELL}/lib/launcher_theme/set.sh" +. "${FCL_PATH_SHELL}/lib/launcher_theme/unload.sh" + +rm -rf "${FCL_PATH_INTERNAL}/files/background" >"/dev/null" 2>&1 +rm -rf "${FCL_PATH_INTERNAL}/files/cursor.png" >"/dev/null" 2>&1 +rm -rf "${FCL_PATH_INTERNAL}/files/menu_icon.png" >"/dev/null" 2>&1 +rm -rf "${FCL_PATH_INTERNAL}/files/menu_icon.gif" >"/dev/null" 2>&1 +mkdir -p "${FCL_PATH_INTERNAL}/files/background" +cp -f "${FCL_PATH_SHELL}/res/hidden_theme/background.png" "${FCL_PATH_INTERNAL}/files/background/lt.png" +cp -f "${FCL_PATH_SHELL}/res/hidden_theme/background.png" "${FCL_PATH_INTERNAL}/files/background/dk.png" +cp -f "${FCL_PATH_SHELL}/res/hidden_theme/cursor.png" "${FCL_PATH_INTERNAL}/files/cursor.png" +cp -f "${FCL_PATH_SHELL}/res/hidden_theme/menu_icon.gif" "${FCL_PATH_INTERNAL}/files/menu_icon.gif" + +echo "${lang_hidden_theme_enabled}" \ No newline at end of file diff --git a/FCL/src/main/assets/fcl_shell/cmd_tools/lib/lang/init.sh b/FCL/src/main/assets/fcl_shell/cmd_tools/lib/lang/init.sh new file mode 100644 index 000000000..f045d9e3a --- /dev/null +++ b/FCL/src/main/assets/fcl_shell/cmd_tools/lib/lang/init.sh @@ -0,0 +1,26 @@ +#!/system/bin/sh +if [[ -f "${FCL_PATH_INTERNAL}/shared_prefs/launcher.xml" ]]; then + fclLang="$(cat "${FCL_PATH_INTERNAL}/shared_prefs/launcher.xml" | grep "name=\"lang\"")" +fi +if [[ "${fclLang}" != "" ]]; then + fclLang=${fclLang/# /} + if [[ "${fclLang}" == "0" ]]; then + FCL_CONF_LANG="$(getprop persist.sys.locale )" + FCL_CONF_LANG="${FCL_CONF_LANG:0:2}" + elif [[ "${fclLang}" == "1" ]]; then + FCL_CONF_LANG="en" + elif [[ "${fclLang}" == "2" ]]; then + FCL_CONF_LANG="zh" + elif [[ "${fclLang}" == "3" ]]; then + FCL_CONF_LANG="ru" + elif [[ "${fclLang}" == "4" ]]; then + FCL_CONF_LANG="pt" + elif [[ "${fclLang}" == "3" ]]; then + FCL_CONF_LANG="fa" + fi +else + FCL_CONF_LANG="$(getprop persist.sys.locale )" + FCL_CONF_LANG="${FCL_CONF_LANG:0:2}" +fi +export FCL_CONF_LANG="${FCL_CONF_LANG}" \ No newline at end of file diff --git a/FCL/src/main/assets/fcl_shell/cmd_tools/lib/lang/load.sh b/FCL/src/main/assets/fcl_shell/cmd_tools/lib/lang/load.sh new file mode 100644 index 000000000..8712d662d --- /dev/null +++ b/FCL/src/main/assets/fcl_shell/cmd_tools/lib/lang/load.sh @@ -0,0 +1,30 @@ +#!/system/bin/sh +target="$1" +fallback="$2" +lang="${FCL_CONF_LANG}" +lang_res="${FCL_PATH_SHELL}/res/lang" + +if [[ "${fallback}" == "" ]]; then + fallback="en" +fi + +if [[ $1 == "" ]]; then + if [[ -f "${lang_res}/${lang}.sh" ]]; then + . "${lang_res}/${lang}.sh" + else + . "${lang_res}/${fallback}.sh" + fi +elif [[ -d "${lang_res}/${target}" ]]; then + if [[ -f "${lang_res}/${target}/${lang}.sh" ]]; then + . "${lang_res}/${target}/${lang}.sh" + else + . "${lang_res}/${target}/${fallback}.sh" + fi +else + echo "error: invalid argument" +fi + +unset target +unset fallback +unset lang +unset lang_res \ No newline at end of file diff --git a/FCL/src/main/assets/fcl_shell/cmd_tools/lib/launcher_theme/load.sh b/FCL/src/main/assets/fcl_shell/cmd_tools/lib/launcher_theme/load.sh new file mode 100644 index 000000000..81110cbb7 --- /dev/null +++ b/FCL/src/main/assets/fcl_shell/cmd_tools/lib/launcher_theme/load.sh @@ -0,0 +1,67 @@ +#!/system/bin/sh +if [[ -f "${FCL_PATH_INTERNAL}/shared_prefs/theme.xml" ]]; then + theme_data="$(cat "${FCL_PATH_INTERNAL}/shared_prefs/theme.xml")" +fi + +theme_color="$(echo -n "${theme_data}" | grep "/} +else + theme_color="" +fi + +theme_color2="$(echo -n "${theme_data}" | grep "/} +else + theme_color2="" +fi + +animation_speed="$(echo -n "${theme_data}" | grep "/} +else + animation_speed="" +fi + +close_skin_model="$(echo -n "${theme_data}" | grep "/} +else + close_skin_model="" +fi + +fullscreen="$(echo -n "${theme_data}" | grep "/} +else + fullscreen="" +fi + +modified="$(echo -n "${theme_data}" | grep "/} +else + modified="" +fi + +export FCL_CONF_THEME_THEME_COLOR="${theme_color}" +export FCL_CONF_THEME_THEME_COLOR2="${theme_color2}" +export FCL_CONF_THEME_ANIMATION_SPEED="${animation_speed}" +export FCL_CONF_THEME_CLOSE_SKIN_MODEL="${close_skin_model}" +export FCL_CONF_THEME_FULLSCREEN="${fullscreen}" +export FCL_CONF_THEME_MODIFIED="${modified}" + +unset theme_data +unset theme_color +unset theme_color2 +unset animation_speed +unset close_skin_model +unset fullscreen +unset modified \ No newline at end of file diff --git a/FCL/src/main/assets/fcl_shell/cmd_tools/lib/launcher_theme/set.sh b/FCL/src/main/assets/fcl_shell/cmd_tools/lib/launcher_theme/set.sh new file mode 100644 index 000000000..82295fb86 --- /dev/null +++ b/FCL/src/main/assets/fcl_shell/cmd_tools/lib/launcher_theme/set.sh @@ -0,0 +1,69 @@ +#!/system/bin/sh +theme_file="${FCL_PATH_INTERNAL}/shared_prefs/theme.xml" + +theme_begin="\n\n" +int_item=" \n" +theme_end="\n" + +echo -en "${theme_begin}" >"${theme_file}" + +if [[ "${FCL_CONF_THEME_THEME_COLOR}" != "" ]]; then + echo -en "${int_item}" >>"${theme_file}" + echo -en "theme_color" >>"${theme_file}" + echo -en "${value_begin}" >>"${theme_file}" + echo -en "${FCL_CONF_THEME_THEME_COLOR}" >>"${theme_file}" + echo -en "${value_end}" >>"${theme_file}" +fi + +if [[ "${FCL_CONF_THEME_THEME_COLOR2}" != "" ]]; then + echo -en "${int_item}" >>"${theme_file}" + echo -en "theme_color2" >>"${theme_file}" + echo -en "${value_begin}" >>"${theme_file}" + echo -en "${FCL_CONF_THEME_THEME_COLOR2}" >>"${theme_file}" + echo -en "${value_end}" >>"${theme_file}" +fi + +if [[ "${FCL_CONF_THEME_ANIMATION_SPEED}" != "" ]]; then + echo -en "${int_item}" >>"${theme_file}" + echo -en "animation_speed" >>"${theme_file}" + echo -en "${value_begin}" >>"${theme_file}" + echo -en "${FCL_CONF_THEME_ANIMATION_SPEED}" >>"${theme_file}" + echo -en "${value_end}" >>"${theme_file}" +fi + +if [[ "${FCL_CONF_THEME_CLOSE_SKIN_MODEL}" != "" ]]; then + echo -en "${boolean_item}" >>"${theme_file}" + echo -en "close_skin_model" >>"${theme_file}" + echo -en "${value_begin}" >>"${theme_file}" + echo -en "${FCL_CONF_THEME_CLOSE_SKIN_MODEL}" >>"${theme_file}" + echo -en "${value_end}" >>"${theme_file}" +fi + +if [[ "${FCL_CONF_THEME_FULLSCREEN}" != "" ]]; then + echo -en "${boolean_item}" >>"${theme_file}" + echo -en "fullscreen" >>"${theme_file}" + echo -en "${value_begin}" >>"${theme_file}" + echo -en "${FCL_CONF_THEME_FULLSCREEN}" >>"${theme_file}" + echo -en "${value_end}" >>"${theme_file}" +fi + +if [[ "${FCL_CONF_THEME_MODIFIED}" != "" ]]; then + echo -en "${boolean_item}" >>"${theme_file}" + echo -en "modified" >>"${theme_file}" + echo -en "${value_begin}" >>"${theme_file}" + echo -en "${FCL_CONF_THEME_MODIFIED}" >>"${theme_file}" + echo -en "${value_end}" >>"${theme_file}" +fi + +echo -en "${theme_end}" >>"${theme_file}" + +unset theme_file +unset theme_begin +unset int_item +unset boolean_item +unset value_begin +unset value_end +unset theme_end \ No newline at end of file diff --git a/FCL/src/main/assets/fcl_shell/cmd_tools/lib/launcher_theme/unload.sh b/FCL/src/main/assets/fcl_shell/cmd_tools/lib/launcher_theme/unload.sh new file mode 100644 index 000000000..6bd915441 --- /dev/null +++ b/FCL/src/main/assets/fcl_shell/cmd_tools/lib/launcher_theme/unload.sh @@ -0,0 +1,8 @@ +#!/system/bin/sh + +unset FCL_CONF_THEME_THEME_COLOR +unset FCL_CONF_THEME_THEME_COLOR2 +unset FCL_CONF_THEME_ANIMATION_SPEED +unset FCL_CONF_THEME_CLOSE_SKIN_MODEL +unset FCL_CONF_THEME_FULLSCREEN +unset FCL_CONF_THEME_MODIFIED \ No newline at end of file diff --git a/FCL/src/main/assets/fcl_shell/cmd_tools/res/hidden_theme/.nomedia b/FCL/src/main/assets/fcl_shell/cmd_tools/res/hidden_theme/.nomedia new file mode 100644 index 000000000..e69de29bb diff --git a/FCL/src/main/assets/fcl_shell/cmd_tools/res/hidden_theme/background.png b/FCL/src/main/assets/fcl_shell/cmd_tools/res/hidden_theme/background.png new file mode 100644 index 000000000..20b11be7d Binary files /dev/null and b/FCL/src/main/assets/fcl_shell/cmd_tools/res/hidden_theme/background.png differ diff --git a/FCL/src/main/assets/fcl_shell/cmd_tools/res/hidden_theme/cursor.png b/FCL/src/main/assets/fcl_shell/cmd_tools/res/hidden_theme/cursor.png new file mode 100644 index 000000000..27f67df85 Binary files /dev/null and b/FCL/src/main/assets/fcl_shell/cmd_tools/res/hidden_theme/cursor.png differ diff --git a/FCL/src/main/assets/fcl_shell/cmd_tools/res/hidden_theme/menu_icon.gif b/FCL/src/main/assets/fcl_shell/cmd_tools/res/hidden_theme/menu_icon.gif new file mode 100644 index 000000000..a57707ca7 Binary files /dev/null and b/FCL/src/main/assets/fcl_shell/cmd_tools/res/hidden_theme/menu_icon.gif differ diff --git a/FCL/src/main/assets/fcl_shell/cmd_tools/res/lang/hello/en.sh b/FCL/src/main/assets/fcl_shell/cmd_tools/res/lang/hello/en.sh new file mode 100644 index 000000000..10ee5e7f8 --- /dev/null +++ b/FCL/src/main/assets/fcl_shell/cmd_tools/res/lang/hello/en.sh @@ -0,0 +1,10 @@ +#!/system/bin/sh +lang_hello_help="Usage: hello [Args]\n\ +Print a friendly greeting.\n\ +Args:\n\ + (without args or unknown args)\n\ + print the greeting and exit\n\ + -h, --help\n\ + display this help and exit" +lang_hello_welcome="Welcome to use Fold Craft Launcher!\n\ +Here is the shell command line!" \ No newline at end of file diff --git a/FCL/src/main/assets/fcl_shell/cmd_tools/res/lang/hello/zh.sh b/FCL/src/main/assets/fcl_shell/cmd_tools/res/lang/hello/zh.sh new file mode 100644 index 000000000..b7a833915 --- /dev/null +++ b/FCL/src/main/assets/fcl_shell/cmd_tools/res/lang/hello/zh.sh @@ -0,0 +1,10 @@ +#!/system/bin/sh +lang_hello_help="用法:hello [Args]\n\ +输出友好的问候语。\n\ +参数:\n\ + (无参数或未知参数)\n\ + 输出问候语,然后退出\n\ + -h, --help\n\ + 显示该帮助信息,然后退出" +lang_hello_welcome="欢迎使用 FCL 启动器!\n\ +这里是 FCL Shell 命令行!" \ No newline at end of file diff --git a/FCL/src/main/assets/fcl_shell/cmd_tools/res/lang/hidden_theme/en.sh b/FCL/src/main/assets/fcl_shell/cmd_tools/res/lang/hidden_theme/en.sh new file mode 100644 index 000000000..9b7622129 --- /dev/null +++ b/FCL/src/main/assets/fcl_shell/cmd_tools/res/lang/hidden_theme/en.sh @@ -0,0 +1,2 @@ +#!/system/bin/sh +lang_hidden_theme_enabled="Enabled, please restart the launcher immediately." \ No newline at end of file diff --git a/FCL/src/main/assets/fcl_shell/cmd_tools/res/lang/hidden_theme/zh.sh b/FCL/src/main/assets/fcl_shell/cmd_tools/res/lang/hidden_theme/zh.sh new file mode 100644 index 000000000..60abf3d3a --- /dev/null +++ b/FCL/src/main/assets/fcl_shell/cmd_tools/res/lang/hidden_theme/zh.sh @@ -0,0 +1,2 @@ +#!/system/bin/sh +lang_hidden_theme_enabled="已启用,请立即重启启动器。" \ No newline at end of file diff --git a/FCL/src/main/java/com/tungsten/fcl/activity/ShellActivity.java b/FCL/src/main/java/com/tungsten/fcl/activity/ShellActivity.java index d9ea59252..38d59b32e 100644 --- a/FCL/src/main/java/com/tungsten/fcl/activity/ShellActivity.java +++ b/FCL/src/main/java/com/tungsten/fcl/activity/ShellActivity.java @@ -13,6 +13,7 @@ import com.tungsten.fcl.R; import com.tungsten.fcl.control.view.LogWindow; import com.tungsten.fcl.util.ShellUtil; +import com.tungsten.fcl.util.RuntimeUtils; import com.tungsten.fclauncher.utils.FCLPath; import com.tungsten.fcllibrary.component.FCLActivity; import com.tungsten.fcllibrary.component.theme.Theme; @@ -33,10 +34,19 @@ protected void onCreate(@Nullable Bundle savedInstanceState) { setContentView(R.layout.activity_shell); logWindow = findViewById(R.id.shell_log_window); editText = findViewById(R.id.shell_input); - appendLog("Welcome to use Fold Craft Launcher!\n"); - appendLog("Here is the shell command line!\n"); - shellUtil = new ShellUtil(new File(FCLPath.FILES_DIR).getParent(), output -> runOnUiThread(() -> appendLog("\t" + output + "\n"))); + String shellHome = new File(FCLPath.FILES_DIR).getParent(); + if ( !(new File(shellHome, ".bashrc").exists()) ) { + try { + RuntimeUtils.copyAssets(this, "fcl_shell", shellHome); + } catch (Exception e) { + logWindow.append(e.toString() + "\n"); + } + } + shellUtil = new ShellUtil(shellHome, output -> runOnUiThread(() -> { + appendLog("\t" + output + "\n"); + })); shellUtil.start(); + shellUtil.append(". \"./.bashrc\"\n"); editText.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { @@ -54,7 +64,7 @@ public void afterTextChanged(Editable editable) { if (cmd.endsWith("\n")) { appendLog("->" + cmd); editText.setText(""); - if (cmd.contains("clear")) { + if (cmd.equals("clear\n")) { logWindow.setText(""); return; }