Merge "Update tab title whenever ttyd session title changes" into main
diff --git a/android/TerminalApp/java/com/android/virtualization/terminal/MainActivity.kt b/android/TerminalApp/java/com/android/virtualization/terminal/MainActivity.kt
index 3bdea72..e4eaecb 100644
--- a/android/TerminalApp/java/com/android/virtualization/terminal/MainActivity.kt
+++ b/android/TerminalApp/java/com/android/virtualization/terminal/MainActivity.kt
@@ -173,7 +173,9 @@
val tab = tabLayout.newTab()
tab.setCustomView(R.layout.tabitem_terminal)
viewPager.offscreenPageLimit += 1
- terminalViewModel.selectedTabViewId = terminalTabAdapter.addTab()
+ val tabId = terminalTabAdapter.addTab()
+ terminalViewModel.selectedTabViewId = tabId
+ terminalViewModel.terminalTabs[tabId] = tab
tab.customView!!
.findViewById<Button>(R.id.tab_close_button)
.setOnClickListener(
@@ -236,9 +238,7 @@
"&fontWeightBold=" +
(FontStyle.FONT_WEIGHT_BOLD + config.fontWeightAdjustment) +
"&screenReaderMode=" +
- accessibilityManager.isEnabled +
- "&titleFixed=" +
- getString(R.string.app_name))
+ accessibilityManager.isEnabled)
try {
return URL("https", ipAddress, port, "/$query")
diff --git a/android/TerminalApp/java/com/android/virtualization/terminal/TerminalTabFragment.kt b/android/TerminalApp/java/com/android/virtualization/terminal/TerminalTabFragment.kt
index 9644885..a0c6e4e 100644
--- a/android/TerminalApp/java/com/android/virtualization/terminal/TerminalTabFragment.kt
+++ b/android/TerminalApp/java/com/android/virtualization/terminal/TerminalTabFragment.kt
@@ -31,6 +31,7 @@
import android.webkit.WebSettings
import android.webkit.WebView
import android.webkit.WebViewClient
+import android.widget.TextView
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import com.android.system.virtualmachine.flags.Flags.terminalGuiSupport
@@ -89,13 +90,35 @@
terminalView.settings.javaScriptEnabled = true
terminalView.settings.cacheMode = WebSettings.LOAD_DEFAULT
- terminalView.webChromeClient = WebChromeClient()
+ terminalView.webChromeClient = TerminalWebChromeClient()
terminalView.webViewClient = TerminalWebViewClient()
(activity as MainActivity).modifierKeysController.addTerminalView(terminalView)
terminalViewModel.terminalViews.add(terminalView)
}
+ private inner class TerminalWebChromeClient : WebChromeClient() {
+ override fun onReceivedTitle(view: WebView?, title: String?) {
+ super.onReceivedTitle(view, title)
+ title?.let { originalTitle ->
+ val ttydSuffix = " | login -f droid (localhost)"
+ val displayedTitle =
+ if (originalTitle.endsWith(ttydSuffix)) {
+ // When the session is created. The format of the title will be
+ // 'droid@localhost: ~ | login -f droid (localhost)'.
+ originalTitle.dropLast(ttydSuffix.length)
+ } else {
+ originalTitle
+ }
+
+ terminalViewModel.terminalTabs[id]
+ ?.customView
+ ?.findViewById<TextView>(R.id.tab_title)
+ ?.text = displayedTitle
+ }
+ }
+ }
+
private inner class TerminalWebViewClient : WebViewClient() {
private var loadFailed = false
private var requestId: Long = 0
diff --git a/android/TerminalApp/java/com/android/virtualization/terminal/TerminalViewModel.kt b/android/TerminalApp/java/com/android/virtualization/terminal/TerminalViewModel.kt
index 7c6aa15..dd40143 100644
--- a/android/TerminalApp/java/com/android/virtualization/terminal/TerminalViewModel.kt
+++ b/android/TerminalApp/java/com/android/virtualization/terminal/TerminalViewModel.kt
@@ -16,8 +16,10 @@
package com.android.virtualization.terminal
import androidx.lifecycle.ViewModel
+import com.google.android.material.tabs.TabLayout.Tab
class TerminalViewModel : ViewModel() {
val terminalViews: MutableSet<TerminalView> = mutableSetOf()
var selectedTabViewId: String? = null
+ val terminalTabs: MutableMap<String, Tab> = mutableMapOf()
}
diff --git a/android/TerminalApp/res/layout/tabitem_terminal.xml b/android/TerminalApp/res/layout/tabitem_terminal.xml
index 92e3802..9eba163 100644
--- a/android/TerminalApp/res/layout/tabitem_terminal.xml
+++ b/android/TerminalApp/res/layout/tabitem_terminal.xml
@@ -25,7 +25,7 @@
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_toStartOf="@id/tab_close_button"
- android:gravity="center"
+ android:gravity="center_vertical"
android:padding="8dp"
android:text="@string/tab_default_title"/>
diff --git a/build/debian/fai_config/scripts/AVF/20-useradd b/build/debian/fai_config/scripts/AVF/20-useradd
index b92648a..2289a2a 100755
--- a/build/debian/fai_config/scripts/AVF/20-useradd
+++ b/build/debian/fai_config/scripts/AVF/20-useradd
@@ -2,3 +2,7 @@
$ROOTCMD useradd -m -u 1000 -N -G sudo,video,render -s /usr/bin/bash droid
$ROOTCMD echo 'droid ALL=(ALL) NOPASSWD:ALL' >> $target/etc/sudoers
+$ROOTCMD cat >> $target/home/droid/.bashrc <<EOF
+# Show title of current running command
+trap 'echo -ne "\e]0;\$BASH_COMMAND\007"' DEBUG
+EOF