NeoMutt  2024-02-01-35-geee02f
Teaching an old dog new tricks
DOXYGEN
Loading...
Searching...
No Matches
terminal.c File Reference

Set the terminal title/icon. More...

#include "config.h"
#include <stdbool.h>
#include <stdio.h>
#include "mutt/lib.h"
#include "terminal.h"
#include "mutt_curses.h"
+ Include dependency graph for terminal.c:

Go to the source code of this file.

Functions

bool mutt_ts_capability (void)
 Check terminal capabilities.
 
void mutt_ts_status (char *str)
 Set the text of the terminal title bar.
 
void mutt_ts_icon (char *str)
 Set the icon in the terminal title bar.
 

Variables

bool TsSupported
 Terminal Setting is supported.
 
static const char * TSL = "\033]0;"
 TSL: to_status_line - Sent before the terminal title.
 
static const char * FSL = "\007"
 FSL: from_status_line - Sent after the terminal title.
 

Detailed Description

Set the terminal title/icon.

Authors
  • Richard Russon
  • Pietro Cerutti

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Definition in file terminal.c.

Function Documentation

◆ mutt_ts_capability()

bool mutt_ts_capability ( void  )

Check terminal capabilities.

Return values
trueTerminal is capable of having its title/icon set
Note
This must happen after the terminfo has been initialised.

Definition at line 56 of file terminal.c.

57{
58 static const char *known[] = {
59 "color-xterm", "cygwin", "eterm", "kterm", "nxterm",
60 "putty", "rxvt", "screen", "xterm", NULL,
61 };
62
63#ifdef HAVE_USE_EXTENDED_NAMES
64 /* If tsl is set, then terminfo says that status lines work. */
65 char *tcaps = tigetstr("tsl");
66 if (tcaps && (tcaps != (char *) -1) && *tcaps)
67 {
68 /* update the static definitions of tsl/fsl from terminfo */
69 TSL = tcaps;
70
71 tcaps = tigetstr("fsl");
72 if (tcaps && (tcaps != (char *) -1) && *tcaps)
73 FSL = tcaps;
74
75 return true;
76 }
77
78 /* If XT (boolean) is set, then this terminal supports the standard escape. */
79 /* Beware: tigetflag returns -1 if XT is invalid or not a boolean. */
80 int tcapi = tigetflag("XT");
81 if (tcapi == 1)
82 return true;
83#endif
84
85 /* Check term types that are known to support the standard escape without
86 * necessarily asserting it in terminfo. */
87 const char *term = mutt_str_getenv("TERM");
88 for (const char **termp = known; termp; termp++)
89 {
90 if (term && *termp && !mutt_istr_startswith(term, *termp))
91 return true;
92 }
93
94 return false;
95}
const char * mutt_str_getenv(const char *name)
Get an environment variable.
Definition: string.c:775
size_t mutt_istr_startswith(const char *str, const char *prefix)
Check whether a string starts with a prefix, ignoring case.
Definition: string.c:242
static const char * FSL
FSL: from_status_line - Sent after the terminal title.
Definition: terminal.c:48
static const char * TSL
TSL: to_status_line - Sent before the terminal title.
Definition: terminal.c:46
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ mutt_ts_status()

void mutt_ts_status ( char *  str)

Set the text of the terminal title bar.

Parameters
strText to set
Note
To clear the text, set the title to a single space.

Definition at line 103 of file terminal.c.

104{
105 if (!str || (*str == '\0'))
106 return;
107
108 fprintf(stderr, "%s%s%s", TSL, str, FSL);
109}
+ Here is the caller graph for this function:

◆ mutt_ts_icon()

void mutt_ts_icon ( char *  str)

Set the icon in the terminal title bar.

Parameters
strIcon string
Note
To clear the icon, set it to a single space.

Definition at line 117 of file terminal.c.

118{
119 if (!str || (*str == '\0'))
120 return;
121
122 /* icon setting is not supported in terminfo, so hardcode the escape */
123 fprintf(stderr, "\033]1;%s\007", str); // Escape
124}
+ Here is the caller graph for this function:

Variable Documentation

◆ TsSupported

bool TsSupported

Terminal Setting is supported.

Definition at line 42 of file terminal.c.

◆ TSL

const char* TSL = "\033]0;"
static

TSL: to_status_line - Sent before the terminal title.

Definition at line 46 of file terminal.c.

◆ FSL

const char* FSL = "\007"
static

FSL: from_status_line - Sent after the terminal title.

Definition at line 48 of file terminal.c.