Tickit::Debug(3pm)

πŸ¦‹ Tickit::Debug β€” debug logging support for Tickit, bestie

okay so real quick, the manual name situation: this page lives in User Contributed Perl Documentation, and the module itself is Tickit::Debug. slay, let's get into it πŸ’…


✨ NAME ✨

Tickit::Debug β€” debug logging support for Tickit, no cap 🫢


🌸 DESCRIPTION 🌸

This module implements the debug logging logic for Tickit. It's controlled by a bunch of environment variables (literally, the whole vibe check happens in env vars). It exports a constant called DEBUG which will be true if the debug logging is enabled β€” which means your code can efficiently skip over it if it isn't. iconic behavior, honestly πŸŽ€

Debug messages themselves each have a flag name, which is a short string identifying the Tickit subsystem or kind of event that caused it. A given subset of these flags can be enabled for printing. Flags not enabled will not be printed. that's it, that's the rule ✨


🎯 FLAGS 🎯

Each flag name starts with upper-case letters indicating the subsystem it relates to, then lower-case letters to indicate the particular kind of event or message. iykyk πŸ”₯

πŸ’œ B (RenderBuffer) πŸ’œ

  • Bd β€” Drawing operations
  • Bf β€” Flushing
  • Bs β€” State stack save/restore
  • Bt β€” Transformations (translate, clip, mask)

🧚 I (Input) 🧚

  • Ik β€” Keyboard events
  • Im β€” Mouse events
  • Ir β€” Resize events

πŸ¦‹ W (Window) πŸ¦‹

  • Wd β€” Rectangles of damage queued on the root window for re-expose
  • Wh β€” Hierarchy changes on Windows (creates, deletes, re-orderings)
  • Ws β€” Calls to $win->scrollrect
  • Wsr β€” Calls to $term->scrollrect on the root window as part of scrollrect
  • Wx β€” Expose events on Windows; which may result in calls to its on_expose handler. As this event is recursive, it prints an indent. (recursive event? she's doing a little stair-step, we love the indent πŸ’«)

🌈 ENVIRONMENT 🌈

⭐ TICKIT_DEBUG_FLAGS ⭐

A comma-separated list of the flags or flag categories to enable for printing. Each potential flag exists in a category, given by the leading upper-case letters of its name. Entire categories can be enabled by name, as can individual flags. so you can be all "give me everything in W" or all "just Wx please" 😌

See the FLAGS list above for the available flags.

πŸ’– TICKIT_DEBUG_FD πŸ’–

If set, debug logging is sent directly to the opened filehandle given by this file descriptor number, rather than opening a log file.

Typically this is most useful to start a Tickit-based application in a new terminal but have its debug logging printed to STDERR of the original terminal the new one was launched from. For example:

$ TICKIT_DEBUG_FD=3 TICKIT_DEBUG_FLAGS=... $TERM perl my-tickit-app.pl 3>&2

This requests that Tickit::Debug log to file descriptor 3, which has been created by copying the original shell's standard error output, and so logging is printed to the shell this was run from. big main character energy from fd 3 honestly πŸ‘‘

πŸ“ TICKIT_DEBUG_FILE πŸ“

Gives the name of a file to open and write logging to, if TICKIT_DEBUG_FD is not set. If this is not set either, a filename will be generated using the PID of the process, named as:

tickit-PID.log

πŸ’… METHODS πŸ’…

πŸ‘‘ log πŸ‘‘

Tickit::Debug->log( $flag => $format, @args )

Prints a line to the debug log if the specified $flag is present in the set of enabled flags.

Any arguments that are CODE references are called and replaced by the list of values they return, then the line itself is generated by calling sprintf using the format string and the given arguments. It is then printed to the log, prefixed by the flag name and with a linefeed appended. lazy-evaluated code refs? we love efficiency fr fr 🌟

It is not necessary to include the "\n" linefeed in the $format itself. don't do it, she already adds it for you 😭

πŸ’€ AUTHOR πŸ’€

Paul Evans <leonerd@leonerd.org.uk>


and that's the whole page, bestie πŸŽ€ this was Tickit::Debug(3pm) from User Contributed Perl Documentation, perl v5.42.3, dated 2026-08-19 β€” go forth and log, and remember: flag check passed, periodt πŸ’œβœ¨

πŸ“¦ where this page comes from