diff --git a/app/src/main/java/com/termux/app/activities/ReportActivity.java b/app/src/main/java/com/termux/app/activities/ReportActivity.java
index 2491005a..5f6b0b39 100644
--- a/app/src/main/java/com/termux/app/activities/ReportActivity.java
+++ b/app/src/main/java/com/termux/app/activities/ReportActivity.java
@@ -92,8 +92,8 @@ public class ReportActivity extends AppCompatActivity {
final Markwon markwon = MarkdownUtils.getRecyclerMarkwonBuilder(this);
- final MarkwonAdapter adapter = MarkwonAdapter.builderTextViewIsRoot(R.layout.activity_report_adapter_node_default)
- .include(FencedCodeBlock.class, SimpleEntry.create(R.layout.activity_report_adapter_node_code_block, R.id.code_text_view))
+ final MarkwonAdapter adapter = MarkwonAdapter.builderTextViewIsRoot(R.layout.markdown_adapter_node_default)
+ .include(FencedCodeBlock.class, SimpleEntry.create(R.layout.markdown_adapter_node_code_block, R.id.code_text_view))
.build();
recyclerView.setLayoutManager(new LinearLayoutManager(this));
diff --git a/app/src/main/java/com/termux/app/activities/SettingsActivity.java b/app/src/main/java/com/termux/app/activities/SettingsActivity.java
index b30b1a57..afb7373e 100644
--- a/app/src/main/java/com/termux/app/activities/SettingsActivity.java
+++ b/app/src/main/java/com/termux/app/activities/SettingsActivity.java
@@ -1,12 +1,18 @@
package com.termux.app.activities;
+import android.content.Context;
import android.os.Bundle;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
+import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat;
import com.termux.R;
+import com.termux.app.models.ReportInfo;
+import com.termux.app.models.UserAction;
+import com.termux.shared.termux.TermuxConstants;
+import com.termux.shared.termux.TermuxUtils;
public class SettingsActivity extends AppCompatActivity {
@@ -37,6 +43,32 @@ public class SettingsActivity extends AppCompatActivity {
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
setPreferencesFromResource(R.xml.root_preferences, rootKey);
+
+ setAboutOnPreferenceClickListener();
+ }
+
+ private void setAboutOnPreferenceClickListener() {
+ Context context = getContext();
+ Preference about = findPreference("about");
+ if (context != null && about != null) {
+ about.setOnPreferenceClickListener(preference -> {
+ String title = "About";
+
+ StringBuilder aboutString = new StringBuilder();
+ aboutString.append(TermuxUtils.getAppInfoMarkdownString(context, false));
+
+ String termuxPluginAppsInfo = TermuxUtils.getTermuxPluginAppsInfoMarkdownString(context);
+ if (termuxPluginAppsInfo != null)
+ aboutString.append("\n\n").append(termuxPluginAppsInfo);
+
+ aboutString.append("\n\n").append(TermuxUtils.getDeviceInfoMarkdownString(context));
+ aboutString.append("\n\n").append(TermuxUtils.getImportantLinksMarkdownString(context));
+
+ ReportActivity.startReportActivity(context, new ReportInfo(UserAction.ABOUT, TermuxConstants.TERMUX_APP.TERMUX_SETTINGS_ACTIVITY_NAME, title, null, aboutString.toString(), null, false));
+
+ return true;
+ });
+ }
}
}
diff --git a/app/src/main/java/com/termux/app/fragments/settings/TermuxPreferencesFragment.java b/app/src/main/java/com/termux/app/fragments/settings/TermuxPreferencesFragment.java
new file mode 100644
index 00000000..67543f63
--- /dev/null
+++ b/app/src/main/java/com/termux/app/fragments/settings/TermuxPreferencesFragment.java
@@ -0,0 +1,46 @@
+package com.termux.app.fragments.settings;
+
+import android.content.Context;
+import android.os.Bundle;
+
+import androidx.annotation.Keep;
+import androidx.preference.PreferenceDataStore;
+import androidx.preference.PreferenceFragmentCompat;
+import androidx.preference.PreferenceManager;
+
+import com.termux.R;
+import com.termux.shared.settings.preferences.TermuxAppSharedPreferences;
+
+@Keep
+public class TermuxPreferencesFragment extends PreferenceFragmentCompat {
+
+ @Override
+ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+ PreferenceManager preferenceManager = getPreferenceManager();
+ preferenceManager.setPreferenceDataStore(TermuxPreferencesDataStore.getInstance(getContext()));
+
+ setPreferencesFromResource(R.xml.termux_preferences, rootKey);
+ }
+
+}
+
+class TermuxPreferencesDataStore extends PreferenceDataStore {
+
+ private final Context mContext;
+ private final TermuxAppSharedPreferences mPreferences;
+
+ private static TermuxPreferencesDataStore mInstance;
+
+ private TermuxPreferencesDataStore(Context context) {
+ mContext = context;
+ mPreferences = new TermuxAppSharedPreferences(context);
+ }
+
+ public static synchronized TermuxPreferencesDataStore getInstance(Context context) {
+ if (mInstance == null) {
+ mInstance = new TermuxPreferencesDataStore(context.getApplicationContext());
+ }
+ return mInstance;
+ }
+
+}
diff --git a/app/src/main/java/com/termux/app/fragments/settings/DebuggingPreferencesFragment.java b/app/src/main/java/com/termux/app/fragments/settings/termux/DebuggingPreferencesFragment.java
similarity index 92%
rename from app/src/main/java/com/termux/app/fragments/settings/DebuggingPreferencesFragment.java
rename to app/src/main/java/com/termux/app/fragments/settings/termux/DebuggingPreferencesFragment.java
index 814426b6..279cdc65 100644
--- a/app/src/main/java/com/termux/app/fragments/settings/DebuggingPreferencesFragment.java
+++ b/app/src/main/java/com/termux/app/fragments/settings/termux/DebuggingPreferencesFragment.java
@@ -1,4 +1,4 @@
-package com.termux.app.fragments.settings;
+package com.termux.app.fragments.settings.termux;
import android.content.Context;
import android.os.Bundle;
@@ -23,7 +23,7 @@ public class DebuggingPreferencesFragment extends PreferenceFragmentCompat {
PreferenceManager preferenceManager = getPreferenceManager();
preferenceManager.setPreferenceDataStore(DebuggingPreferencesDataStore.getInstance(getContext()));
- setPreferencesFromResource(R.xml.debugging_preferences, rootKey);
+ setPreferencesFromResource(R.xml.termux_debugging_preferences, rootKey);
PreferenceCategory loggingCategory = findPreference("logging");
@@ -125,11 +125,11 @@ class DebuggingPreferencesDataStore extends PreferenceDataStore {
public boolean getBoolean(String key, boolean defValue) {
switch (key) {
case "terminal_view_key_logging_enabled":
- return mPreferences.getTerminalViewKeyLoggingEnabled();
+ return mPreferences.isTerminalViewKeyLoggingEnabled();
case "plugin_error_notifications_enabled":
- return mPreferences.getPluginErrorNotificationsEnabled();
+ return mPreferences.arePluginErrorNotificationsEnabled();
case "crash_report_notifications_enabled":
- return mPreferences.getCrashReportNotificationsEnabled();
+ return mPreferences.areCrashReportNotificationsEnabled();
default:
return false;
}
diff --git a/app/src/main/java/com/termux/app/fragments/settings/TerminalIOPreferencesFragment.java b/app/src/main/java/com/termux/app/fragments/settings/termux/TerminalIOPreferencesFragment.java
similarity index 88%
rename from app/src/main/java/com/termux/app/fragments/settings/TerminalIOPreferencesFragment.java
rename to app/src/main/java/com/termux/app/fragments/settings/termux/TerminalIOPreferencesFragment.java
index d9500f84..2e750c85 100644
--- a/app/src/main/java/com/termux/app/fragments/settings/TerminalIOPreferencesFragment.java
+++ b/app/src/main/java/com/termux/app/fragments/settings/termux/TerminalIOPreferencesFragment.java
@@ -1,4 +1,4 @@
-package com.termux.app.fragments.settings;
+package com.termux.app.fragments.settings.termux;
import android.content.Context;
import android.os.Bundle;
@@ -19,7 +19,7 @@ public class TerminalIOPreferencesFragment extends PreferenceFragmentCompat {
PreferenceManager preferenceManager = getPreferenceManager();
preferenceManager.setPreferenceDataStore(TerminalIOPreferencesDataStore.getInstance(getContext()));
- setPreferencesFromResource(R.xml.terminal_io_preferences, rootKey);
+ setPreferencesFromResource(R.xml.termux_terminal_io_preferences, rootKey);
}
}
@@ -65,9 +65,9 @@ class TerminalIOPreferencesDataStore extends PreferenceDataStore {
public boolean getBoolean(String key, boolean defValue) {
switch (key) {
case "soft_keyboard_enabled":
- return mPreferences.getSoftKeyboardEnabled();
+ return mPreferences.isSoftKeyboardEnabled();
case "soft_keyboard_enabled_only_if_no_hardware":
- return mPreferences.getSoftKeyboardEnabledOnlyIfNoHardware();
+ return mPreferences.isSoftKeyboardEnabledOnlyIfNoHardware();
default:
return false;
}
diff --git a/app/src/main/java/com/termux/app/models/UserAction.java b/app/src/main/java/com/termux/app/models/UserAction.java
index ad56fbef..ee47605a 100644
--- a/app/src/main/java/com/termux/app/models/UserAction.java
+++ b/app/src/main/java/com/termux/app/models/UserAction.java
@@ -2,8 +2,9 @@ package com.termux.app.models;
public enum UserAction {
- PLUGIN_EXECUTION_COMMAND("plugin execution command"),
+ ABOUT("about"),
CRASH_REPORT("crash report"),
+ PLUGIN_EXECUTION_COMMAND("plugin execution command"),
REPORT_ISSUE_FROM_TRANSCRIPT("report issue from transcript");
private final String name;
diff --git a/app/src/main/res/layout/activity_report_adapter_node_code_block.xml b/app/src/main/res/layout/markdown_adapter_node_code_block.xml
similarity index 100%
rename from app/src/main/res/layout/activity_report_adapter_node_code_block.xml
rename to app/src/main/res/layout/markdown_adapter_node_code_block.xml
diff --git a/app/src/main/res/layout/activity_report_adapter_node_default.xml b/app/src/main/res/layout/markdown_adapter_node_default.xml
similarity index 100%
rename from app/src/main/res/layout/activity_report_adapter_node_default.xml
rename to app/src/main/res/layout/markdown_adapter_node_default.xml
diff --git a/app/src/main/res/layout/preference_markdown_text.xml b/app/src/main/res/layout/preference_markdown_text.xml
new file mode 100644
index 00000000..f77049e3
--- /dev/null
+++ b/app/src/main/res/layout/preference_markdown_text.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index b1252188..0c00943e 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -122,42 +122,55 @@
&TERMUX_APP_NAME; Settings
-
- Debugging
+
+ &TERMUX_APP_NAME;
+ Preferences for &TERMUX_APP_NAME; app
-
- Logging
+
+ Debugging
+ Preferences for debugging
-
- Terminal View Key Logging
- Logs will not have entries for terminal view keys. (Default)
- Logcat logs will have entries for terminal view keys. These are very verbose and should be disabled under normal circumstances or will cause performance issues.
+
+ Logging
-
- Plugin Error Notifications
- Disable flashes and notifications for plugin errors.
- Show flashes and notifications for plugin errors. (Default)
+
+ Log Level
-
- Crash Report Notifications
- Disable notifications for crash reports.
- Show notifications for crash reports. (Default)
+
+ Terminal View Key Logging
+ Logs will not have entries for terminal view keys. (Default)
+ Logcat logs will have entries for terminal view keys. These are very verbose and should be disabled under normal circumstances or will cause performance issues.
+
+
+ Plugin Error Notifications
+ Disable flashes and notifications for plugin errors.
+ Show flashes and notifications for plugin errors. (Default)
+
+
+ Crash Report Notifications
+ Disable notifications for crash reports.
+ Show notifications for crash reports. (Default)
-
- Terminal I/O
+
+ Terminal I/O
+ Preferences for terminal I/O
-
- Keyboard
+
+ Keyboard
-
- Soft Keyboard Enabled
- Soft keyboard will be disabled.
- Soft keyboard will be enabled. (Default)
+
+ Soft Keyboard Enabled
+ Soft keyboard will be disabled.
+ Soft keyboard will be enabled. (Default)
-
- Soft Keyboard If No Hardware
- Soft keyboard will be enabled even if hardware keyboard is connected. (Default)
- Soft keyboard will be enabled only if no hardware keyboard is connected.
+
+ Soft Keyboard Only If No Hardware
+ Soft keyboard will be enabled even if hardware keyboard is connected. (Default)
+ Soft keyboard will be enabled only if no hardware keyboard is connected.
+
+
+
+ About
diff --git a/app/src/main/res/xml/debugging_preferences.xml b/app/src/main/res/xml/debugging_preferences.xml
deleted file mode 100644
index 48e44f98..00000000
--- a/app/src/main/res/xml/debugging_preferences.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/xml/root_preferences.xml b/app/src/main/res/xml/root_preferences.xml
index 75dd8826..297b4903 100644
--- a/app/src/main/res/xml/root_preferences.xml
+++ b/app/src/main/res/xml/root_preferences.xml
@@ -1,13 +1,15 @@
+ app:key="termux"
+ app:title="@string/termux_preferences_title"
+ app:summary="@string/termux_preferences_summary"
+ app:fragment="com.termux.app.fragments.settings.TermuxPreferencesFragment"/>
+ app:key="about"
+ app:title="@string/about_preferences_title"
+ app:persistent="false"/>
+
diff --git a/app/src/main/res/xml/terminal_io_preferences.xml b/app/src/main/res/xml/terminal_io_preferences.xml
deleted file mode 100644
index 6aecbf48..00000000
--- a/app/src/main/res/xml/terminal_io_preferences.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/xml/termux_debugging_preferences.xml b/app/src/main/res/xml/termux_debugging_preferences.xml
new file mode 100644
index 00000000..b59d931d
--- /dev/null
+++ b/app/src/main/res/xml/termux_debugging_preferences.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/xml/termux_preferences.xml b/app/src/main/res/xml/termux_preferences.xml
new file mode 100644
index 00000000..f28c775d
--- /dev/null
+++ b/app/src/main/res/xml/termux_preferences.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/res/xml/termux_terminal_io_preferences.xml b/app/src/main/res/xml/termux_terminal_io_preferences.xml
new file mode 100644
index 00000000..ea9a0eb5
--- /dev/null
+++ b/app/src/main/res/xml/termux_terminal_io_preferences.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/termux-shared/src/main/java/com/termux/shared/markdown/MarkdownUtils.java b/termux-shared/src/main/java/com/termux/shared/markdown/MarkdownUtils.java
index 86ddd03f..470624de 100644
--- a/termux-shared/src/main/java/com/termux/shared/markdown/MarkdownUtils.java
+++ b/termux-shared/src/main/java/com/termux/shared/markdown/MarkdownUtils.java
@@ -179,7 +179,7 @@ public class MarkdownUtils {
.setFactory(Code.class, (configuration, props) -> new Object[]{
new BackgroundColorSpan(ContextCompat.getColor(context, R.color.background_markdown_code_inline)),
new TypefaceSpan("monospace"),
- new AbsoluteSizeSpan(8)
+ new AbsoluteSizeSpan(48)
})
// NB! both ordered and bullet list items
.setFactory(ListItem.class, (configuration, props) -> new BulletSpan());
diff --git a/termux-shared/src/main/java/com/termux/shared/termux/TermuxConstants.java b/termux-shared/src/main/java/com/termux/shared/termux/TermuxConstants.java
index d0bcab1d..fe8c526d 100644
--- a/termux-shared/src/main/java/com/termux/shared/termux/TermuxConstants.java
+++ b/termux-shared/src/main/java/com/termux/shared/termux/TermuxConstants.java
@@ -3,9 +3,11 @@ package com.termux.shared.termux;
import android.annotation.SuppressLint;
import java.io.File;
+import java.util.Arrays;
+import java.util.List;
/*
- * Version: v0.19.0
+ * Version: v0.20.0
*
* Changelog
*
@@ -135,6 +137,11 @@ import java.io.File;
* - Added `TERMUX_SERVICE.EXTRA_STDIN`.
* - Added `RUN_COMMAND_SERVICE.EXTRA_STDIN`.
* - Deprecated `TERMUX_ACTIVITY.EXTRA_RELOAD_STYLE`.
+ *
+ * - 0.20.0 (2021-05-13)
+ * - Added `TERMUX_WIKI`, `TERMUX_WIKI_URL`, `TERMUX_PLUGIN_APP_NAMES_LIST`, `TERMUX_PLUGIN_APP_PACKAGE_NAMES_LIST`.
+ * - Added `TERMUX_SETTINGS_ACTIVITY_NAME`.
+ *
*/
/**
@@ -194,6 +201,12 @@ public final class TermuxConstants {
/** Termux support email mailto url */
public static final String TERMUX_SUPPORT_EMAIL_MAILTO_URL = "mailto:" + TERMUX_SUPPORT_EMAIL_URL; // Default: "mailto:termuxreports@groups.io"
+ /** Termux Wiki */
+ public static final String TERMUX_WIKI = "Termux Wiki"; // Default: "Termux Wiki"
+
+ /** Termux Wiki url */
+ public static final String TERMUX_WIKI_URL = "https://wiki.termux.com"; // Default: "https://wiki.termux.com"
+
/** Termux Reddit subreddit */
public static final String TERMUX_REDDIT_SUBREDDIT = "r/termux"; // Default: "r/termux"
@@ -314,6 +327,30 @@ public final class TermuxConstants {
+ /*
+ * Termux plugin apps lists.
+ */
+
+ public static final List TERMUX_PLUGIN_APP_NAMES_LIST = Arrays.asList(
+ TERMUX_API_APP_NAME,
+ TERMUX_BOOT_APP_NAME,
+ TERMUX_FLOAT_APP_NAME,
+ TERMUX_STYLING_APP_NAME,
+ TERMUX_TASKER_APP_NAME,
+ TERMUX_WIDGET_APP_NAME);
+
+ public static final List TERMUX_PLUGIN_APP_PACKAGE_NAMES_LIST = Arrays.asList(
+ TERMUX_API_PACKAGE_NAME,
+ TERMUX_BOOT_PACKAGE_NAME,
+ TERMUX_FLOAT_PACKAGE_NAME,
+ TERMUX_STYLING_PACKAGE_NAME,
+ TERMUX_TASKER_PACKAGE_NAME,
+ TERMUX_WIDGET_PACKAGE_NAME);
+
+
+
+
+
/*
* Termux packages urls.
*/
@@ -654,6 +691,13 @@ public final class TermuxConstants {
+ /** Termux app settings activity name. */
+ public static final String TERMUX_SETTINGS_ACTIVITY_NAME = TERMUX_PACKAGE_NAME + ".app.activities.SettingsActivity"; // Default: "com.termux.app.activities.SettingsActivity"
+
+
+
+
+
/** Termux app core service name. */
public static final String TERMUX_SERVICE_NAME = TERMUX_PACKAGE_NAME + ".app.TermuxService"; // Default: "com.termux.app.TermuxService"
diff --git a/termux-shared/src/main/java/com/termux/shared/termux/TermuxUtils.java b/termux-shared/src/main/java/com/termux/shared/termux/TermuxUtils.java
index 3e08b9fe..545e1c24 100644
--- a/termux-shared/src/main/java/com/termux/shared/termux/TermuxUtils.java
+++ b/termux-shared/src/main/java/com/termux/shared/termux/TermuxUtils.java
@@ -132,6 +132,38 @@ public class TermuxUtils {
}
}
+ /**
+ * Get a markdown {@link String} for the apps info of all/any termux plugin apps installed.
+ *
+ * @param currentPackageContext The context of current package.
+ * @return Returns the markdown {@link String}.
+ */
+ public static String getTermuxPluginAppsInfoMarkdownString(@NonNull final Context currentPackageContext) {
+ if (currentPackageContext == null) return "null";
+
+ StringBuilder markdownString = new StringBuilder();
+
+ List termuxPluginAppPackageNamesList = TermuxConstants.TERMUX_PLUGIN_APP_PACKAGE_NAMES_LIST;
+
+ if (termuxPluginAppPackageNamesList != null) {
+ for (int i = 0; i < termuxPluginAppPackageNamesList.size(); i++) {
+ String termuxPluginAppPackageName = termuxPluginAppPackageNamesList.get(i);
+ Context termuxPluginAppContext = PackageUtils.getContextForPackage(currentPackageContext, termuxPluginAppPackageName);
+ // If the package context for the plugin app is not null, then assume its installed and get its info
+ if (termuxPluginAppContext != null) {
+ if (i != 0)
+ markdownString.append("\n\n");
+ markdownString.append(TermuxUtils.getAppInfoMarkdownString(termuxPluginAppContext, false));
+ }
+ }
+ }
+
+ if (markdownString.toString().isEmpty())
+ return null;
+
+ return markdownString.toString();
+ }
+
/**
* Get a markdown {@link String} for the app info. If the {@code context} passed is different
* from the {@link TermuxConstants#TERMUX_PACKAGE_NAME} package context, then this function
@@ -291,6 +323,45 @@ public class TermuxUtils {
return markdownString.toString();
}
+ /**
+ * Get a markdown {@link String} for important links.
+ *
+ * @param context The context for operations.
+ * @return Returns the markdown {@link String}.
+ */
+ public static String getImportantLinksMarkdownString(@NonNull final Context context) {
+ if (context == null) return "null";
+
+ StringBuilder markdownString = new StringBuilder();
+
+ markdownString.append("## Important Links");
+
+ markdownString.append("\n\n### Github\n");
+ markdownString.append("\n").append(MarkdownUtils.getLinkMarkdownString(TermuxConstants.TERMUX_APP_NAME, TermuxConstants.TERMUX_GITHUB_REPO_URL)).append(" ");
+ markdownString.append("\n").append(MarkdownUtils.getLinkMarkdownString(TermuxConstants.TERMUX_API_APP_NAME, TermuxConstants.TERMUX_API_GITHUB_REPO_URL)).append(" ");
+ markdownString.append("\n").append(MarkdownUtils.getLinkMarkdownString(TermuxConstants.TERMUX_BOOT_APP_NAME, TermuxConstants.TERMUX_BOOT_GITHUB_REPO_URL)).append(" ");
+ markdownString.append("\n").append(MarkdownUtils.getLinkMarkdownString(TermuxConstants.TERMUX_FLOAT_APP_NAME, TermuxConstants.TERMUX_FLOAT_GITHUB_REPO_URL)).append(" ");
+ markdownString.append("\n").append(MarkdownUtils.getLinkMarkdownString(TermuxConstants.TERMUX_STYLING_APP_NAME, TermuxConstants.TERMUX_STYLING_GITHUB_REPO_URL)).append(" ");
+ markdownString.append("\n").append(MarkdownUtils.getLinkMarkdownString(TermuxConstants.TERMUX_TASKER_APP_NAME, TermuxConstants.TERMUX_TASKER_GITHUB_REPO_URL)).append(" ");
+ markdownString.append("\n").append(MarkdownUtils.getLinkMarkdownString(TermuxConstants.TERMUX_WIDGET_APP_NAME, TermuxConstants.TERMUX_WIDGET_GITHUB_REPO_URL)).append(" ");
+ markdownString.append("\n").append(MarkdownUtils.getLinkMarkdownString(TermuxConstants.TERMUX_PACKAGES_GITHUB_REPO_NAME, TermuxConstants.TERMUX_PACKAGES_GITHUB_REPO_URL)).append(" ");
+
+ markdownString.append("\n\n### Email\n");
+ markdownString.append("\n").append(MarkdownUtils.getLinkMarkdownString(TermuxConstants.TERMUX_SUPPORT_EMAIL_URL, TermuxConstants.TERMUX_SUPPORT_EMAIL_MAILTO_URL)).append(" ");
+
+ markdownString.append("\n\n### Reddit\n");
+ markdownString.append("\n").append(MarkdownUtils.getLinkMarkdownString(TermuxConstants.TERMUX_REDDIT_SUBREDDIT, TermuxConstants.TERMUX_REDDIT_SUBREDDIT_URL)).append(" ");
+
+ markdownString.append("\n\n### Wiki\n");
+ markdownString.append("\n").append(MarkdownUtils.getLinkMarkdownString(TermuxConstants.TERMUX_WIKI, TermuxConstants.TERMUX_WIKI_URL)).append(" ");
+ markdownString.append("\n").append(MarkdownUtils.getLinkMarkdownString(TermuxConstants.TERMUX_APP_NAME, TermuxConstants.TERMUX_GITHUB_WIKI_REPO_URL)).append(" ");
+ markdownString.append("\n").append(MarkdownUtils.getLinkMarkdownString(TermuxConstants.TERMUX_PACKAGES_GITHUB_REPO_NAME, TermuxConstants.TERMUX_PACKAGES_GITHUB_WIKI_REPO_URL)).append(" ");
+
+ markdownString.append("\n##\n");
+
+ return markdownString.toString();
+ }
+
/**