Summary: | renamed tab is being reset | ||
---|---|---|---|
Product: | [Applications] konsole | Reporter: | Michael Eager <eager> |
Component: | general | Assignee: | Konsole Developer <konsole-devel> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | allergy, andreaks310, bb, gkassel, joachim.fehn, robertknight |
Priority: | NOR | ||
Version: | 2.1 | ||
Target Milestone: | --- | ||
Platform: | Fedora RPMs | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | 4.5 | |
Attachments: | Proposed patch for "qdbus ...setTitle" method of changing tab title |
Description
Michael Eager
2009-02-10 23:36:11 UTC
Is an SSH session running in the shell? No ssh session running in tabs. Only bash. The name being reset seems to be more variable and random than I previously thought. I've had the name change for tabs which did not have active focus, or not be reset, even when the tab was active. > The name being reset seems to be more variable
> and random than I previously thought
It may help if I were to explain that title updates are done two seconds after the last keyboard input to the session.
The delay was a bit confusing. But the tag names are changing much later than two seconds after the last input. I have an instance of konsole running with six tabs. The "Tab Title Format" in the profile is blank and each tab has been manually given a different name. Only bash running in each tab. Sometimes when I return to the window, the tab names are as previously set. Sometimes one or more of the tab names has changed to 'Shell', without there being any activity (either input or output) in the tab. This appears to only happen when running under Gnome. KDE 4.3.3 (upgraded from openSuSE 11.1) Konsole 2.3.3 Any modified tab names are reset to the previous values after a few seconds, independent of focus, independent of "Tab Title Format", also when running under KDE. It behaves the same way, when the tab is renamed by means of dbus. KDE 4.3.3 (just upgraded from KDE 3.5.9) Konsole 2.3.3 GCC 4.3.4 (just upgraded from 3.4.6) Titles are resetting on tabs a short while after switching between tabs on my setup as well. Running under KDE also. The tabs being automatically renamed is pretty annoying. I'd like to be able to automatically set tab titles with my zsh precmd and preexec functions, as it was possible under KDE 3. The limited behaviour available in the profile configuration doesn't fit my needs, unfortunately. *** This bug has been confirmed by popular vote. *** For me, tabs only get renamed when I set them via dbus with this command: qdbus org.kde.konsole $(echo $KONSOLE_DBUS_SESSION) setTitle 1 "New Title" If I set the tab name manually by double-clicking on the tab, it will stick. Fedora 11 KDE 4.4.3 Konsole 2.4.3 Qt 4.6.2 Similar to bug 189828 but I'm not sure if this is the same issue. With the current code the issue only seems to be with setting the title via dbus. If the tab name is changed by qdbus, this is why it almost immediately reverts back to it's previous value:
> qdbus org.kde.konsole $KONSOLE_DBUS_SESSION org.kde.konsole.Session.setTitle 1 "foo"
1. The qdbus command is processed by Session::setTitle which sets the new value in Session::_displayTitle:
Session::_displayTitle = "foo"
2. SessionController::snapshot is called, it obtains the current title by calling Session::getDynamicTitle
3. Session::getDynamicTitle formats the title by calling ProcessInfo::format and passing either _localTabTitleFormat or _remoteTabTitleFormat. It does *not* use _displayTitle!
4. ProcessInfo::format replaces the formatting characters in _localTabTitleFormat (or _remoteTabTitleFormat). Since _displayTitle is not used, and _localTabTitleFormat is not changed by Session::setTitle, the previous title is returned.
Therefore, the previous title is displayed in the tab by SessionController::snapshot
Proposed fix:
Add a new binding to the Session class so the tab title format can be controlled via qdbus:
Q_SCRIPTABLE void Session::setTabTitleFormat(int context, const QString& format)
To provide optimal control, it would be nice to add a "pre-formatting" method to the Session class, Session::formatDynamicTitle. Introduce two new formatting characters, one would be replaced by _nameTitle and another by _displayTitle.
If this is implemented, then Session::getDynamicTitle would first call Session:formatDynamicTitle, then pass the resulting string onto the ProcessInfo::format method.
Created attachment 47821 [details]
Proposed patch for "qdbus ...setTitle" method of changing tab title
This patch was developed and tested using KDE version 4.3.1. If accepted, the patch would add two new object methods for qdbus:
setTabTitleFormat
tabTitleFormat
These would be used instead of setTitle to change the tab title via qdbus:
qdbus org.kde.konsole $KONSOLE_DBUS_SESSION org.kde.konsole.Session.setTabTitleFormat 0 "foo"
SVN commit 1136726 by hindenburg: Add 2 new dbus methods for setting tab title formats so that they are persistent. Thanks to Andrea Solis for original patch. FIXED_IN: 4.5 BUG: 183963 M +24 -0 Session.cpp M +14 -0 Session.h WebSVN link: http://websvn.kde.org/?view=rev&revision=1136726 |