X11::Protocol::Other(3) User Contributed Perl Documentation NAME X11::Protocol::Other -- miscellaneous X11::Protocol helpers SYNOPSIS use X11::Protocol::Other; DESCRIPTION This is some helper functions for "X11::Protocol". EXPORTS Nothing is exported by default, but the functions can be requested in usual "Exporter" style, use X11::Protocol::Other 'visual_is_dynamic'; if (visual_is_dynamic ($X, $visual_id)) { ... } Or just called with full package name use X11::Protocol::Other; if (X11::Protocol::Other::visual_is_dynamic ($X, $visual_id)) { ... } There's no ":all" tag since this module is meant as a grab-bag of functions and to import as-yet unknown things would be asking for name clashes. FUNCTIONS Screen Finding "$number = root_to_screen ($X, $root)" "$hashref = root_to_screen_info ($X, $root)" Return the screen number or screen info hash for a given root window. $root can be any XID integer on $X. If it's not one of the root windows then the return is "undef". "$number = default_colormap_to_screen ($X, $colormap)" "$hashref = default_colormap_to_screen_info ($X, $colormap)" Return the screen number or screen info hash for a given default colormap. $colormap can be any XID integer on $X. If it's not one of the screen default colormaps then the return is "undef". Visuals "$bool = visual_is_dynamic ($X, $visual_id)" "$bool = visual_class_is_dynamic ($X, $visual_class)" Return true if the given visual is dynamic, meaning colormap entries on it can be changed to change the colour of a given pixel value. $visual_id is one of the visual ID numbers, ie. one of the keys in "$X->{'visuals'}". Or $visual_class is a VisualClass string like "PseudoColor" or corresponding integer such as 3. Window Info "($width, $height) = window_size ($X, $window)" "$visual_id = window_visual ($X, $window)" Return the size or visual ID of a given window. $window is an integer XID on $X. If it's one of the root windows then the return values are from the screen info hash in $X, otherwise the server is queried with GetGeometry() (for the size) or GetWindowAttributes() (for the visual). These functions are handy when there's a good chance $window might be a root window and therefore not need a server round trip. "@atoms = get_property_atoms($X, $window, $property)" Get from $window (integer XID) a list-of-atoms property $property (atom integer). The return is a list of atom integers, possibly an empty list. If $property doesn't exist or is not atoms then return an empty list. "set_property_atoms($X, $window, $property, @atoms)" Set on $window (integer XID) a list-of-atoms property $property (atom integer) as the given list of @atoms (possibly empty). Colour Parsing "($red16, $green16, $blue16) = hexstr_to_rgb($str)" Parse a given RGB colour string like "#FF00FF" into 16-bit red, green, blue components. The return values are always in the range 0 to 65535. The strings recognised are 1, 2, 3 or 4 digit hex. #RGB #RRGGBB #RRRGGGBBB #RRRRGGGGBBBB If $str is unrecognised then the return is an empty list, so for instance my @rgb = hexstr_to_rgb($str) or die "Unrecognised colour: $str"; The digits of the 1, 2 and 3 forms are replicated as necessary to give a 16-bit range. For example 3-digit style "#321FFF000" gives return values 0x3213, 0xFFFF, 0. Or 1-digit "#F0F" is 0xFFFF, 0, 0xFFFF. Notice "F" expands to 0xFFFF so an "F", "FF" or "FFF" all mean full saturation the same as a 4-digit "FFFF". Would it be worth recognising the Xcms style "rgb:RR/GG/BB"? Perhaps that's best left to full Xcms, or general colour conversion modules. The X11R6 X(7) man page describes the "rgb:" form, but just "#" is much more common. SEE ALSO X11::Protocol, X11::Protocol::GrabServer Color::Library (many named colours), Convert::Color, Graphics::Color (Moose based) for more colour parsing X11::AtomConstants, X11::CursorFont HOME PAGE LICENSE Copyright 2010, 2011, 2012, 2013, 2014, 2017, 2019 Kevin Ryde X11-Protocol-Other is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. X11-Protocol-Other 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 X11-Protocol-Other. If not, see . perl v5.38.0 2023-07-25 X11::Protocol::Other(3)