perlancar > Term-Detect-Software-0.18 > Term::Detect::Software

Download:
Term-Detect-Software-0.18.tar.gz

Dependencies

Annotate this POD

Website

View/Report Bugs
Module Version: 0.18   Source  

NAME ^

Term::Detect::Software - Detect terminal (emulator) software and its capabilities

VERSION ^

This document describes version 0.18 of Term::Detect::Software (from Perl distribution Term-Detect-Software), released on 2014-11-22.

SYNOPSIS ^

 use Term::Detect::Software qw(detect_terminal detect_terminal_cached);
 my $res = detect_terminal();
 die "Not running under terminal!" unless $res->{emulator_engine};
 say "Emulator engine: ", $res->{emulator_engine};
 say "Emulator software: ", $res->{emulator_software};
 say "Unicode support? ", $res->{unicode} ? "yes":"no";
 say "Boxchars support? ", $res->{box_chars} ? "yes":"no";
 say "Color depth: ", $res->{color_depth};
 say "Inside emacs? ", $res->{inside_emacs} ? "yes":"no";

DESCRIPTION ^

This module uses several heuristics to find out what terminal (emulator) software the current process is running in, and its capabilities/settings. This module complements other modules such as Term::Terminfo and Term::Encoding.

FUNCTIONS ^

detect_terminal() => HASHREF

Return a hashref containing information about running terminal (emulator) software and its capabilities/settings.

Detection method is tried from the easiest/cheapest (e.g. checking environment variables) or by looking at known process names in the process tree. Terminal capabilities is determined using heuristics.

Currently Konsole and Konsole-based terminals (like Yakuake) can be detected through existence of environment variables KONSOLE_DBUS_SERVICE or KONSOLE_DBUS_SESSION. xterm is detected through XTERM_VERSION. XFCE's Terminal is detected using COLORTERM. The other software are detected via known process names.

Terminal capabilities and settings are currently determined via heuristics. Probing terminal configuration files might be performed in the future.

Result:

detect_terminal_cached([$flag]) => ANY

Just like detect_terminal() but will cache the result. Can be used by applications or modules to avoid repeating detection process.

FAQ ^

What is this module for? Why not Term::Terminfo or Term::Encoding?

This module is first written for Text::ANSITable so that the module can provide good defaults when displaying formatted and colored tables, especially on popular terminal emulation software like Konsole (KDE's default terminal), gnome-terminal (GNOME's default), Terminal (XFCE's default), xterm, rxvt.

The module works by trying to figure out the terminal emulation software because the information provided by Term::Terminfo and Term::Encoding are sometimes not specific enough. For example, Term::Encoding can return utf-8 when running under rxvt, but since the software currently lacks Unicode support we shouldn't display Unicode characters. Another example is color depth: Term::Terminfo currently doesn't recognize Konsole's 24bit color support and only gives max_colors 256.

TODO ^

SEE ALSO ^

Term::Terminfo

Term::Encoding

HOMEPAGE ^

Please visit the project's homepage at https://metacpan.org/release/Term-Detect-Software.

SOURCE ^

Source repository is at https://github.com/sharyanto/perl-Term-Detect-Software.

BUGS ^

Please report any bugs or feature requests on the bugtracker website https://rt.cpan.org/Public/Dist/Display.html?Name=Term-Detect-Software

When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.

AUTHOR ^

perlancar <perlancar@cpan.org>

COPYRIGHT AND LICENSE ^

This software is copyright (c) 2014 by perlancar@cpan.org.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.

syntax highlighting: