On 30/05/2026 06:34, G. Branden Robinson wrote:
Hi Pádraig,

At 2026-05-29T14:37:06+0100, Pádraig Brady wrote:
On 29/05/2026 13:41, G. Branden Robinson wrote:
At 2026-05-29T13:24:47+0100, Pádraig Brady wrote:
Could groff be adjusted so that it supports these tty links in
html output?

I'm...not sure what that would look like.  When groff produces HTML,
the links become idiomatic `<a href=...>` elements.  This has been
the style of groff's output for something like 25 years.

$ groff -man -T html /tmp/salad.man | sed -n '/Baz/,$p'
<p style="margin-left:6%; margin-top: 1em">Baz.</p>

<p style="margin-left:6%; margin-top: 1em">A
<a 
href="https://www.gnu.org/software/coreutils/manual/html_node/Numeric-Modes.html";><b>numeric
mode</b></a> is from one to four octal digits (0-7), derived
by adding up the bits with values 4, 2, and 1. Omitted
digits are assumed to be leading zeros.</p>
<hr>
</body>
</html>

What are your expectations of groff's HTML output in this area?

The same output would be fine.

Okay.  That's a relief!  😅

[...]
A
.UR https://\:www\:.gnu\:.org/\:software/\:coreutils/\:manual/\
\:html_node/\:Numeric\-Modes\:.html
.B "numeric mode"
.UE
is from one to four octal digits (0\-7), derived by

Yes the most abstract the better, however the issue with that is
it displays the URL.  That gets messy fast.

It can.  The URL is not displayed if the output device is capable of
hyperlinking, unless there is no link text (a boldface "numeric
mode" in this case).

Illustration:

$ nroff -r LL=72n -man /tmp/salad.man | sed -n '/Baz/,$p'
       Baz.

       A  numeric  mode is from one to four octal digits (0-7), derived by
       adding up the bits with values 4, 2, and 1.  Omitted digits are as‐
       sumed to be leading zeros.

This doesn't work for me.  groff/nroff 1.23 always display the URL
when outputting to terminal here?  As does the default `man`
invocation on Fedora 44 at least.

I must be missing something fundamental in all this.

Just a configuration option and its default.

groff 1.23.0 NEWS:

*  The an (man) macro package can now produce clickable hyperlinks
    within terminal emulators, using the OSC 8 support added to grotty(1)
    (see below).  The groff man(7) extension macros `UR` and `MT`,
    present since 2007, expose this feature.  At present the feature is
    disabled by default in `man.local` pending more widespread
    recognition of OSC 8 sequences in pager programs.  The package now
    recognizes a `U` register to enable hyperlinks in any output driver
    supporting them.

    Use a command like
      printf '\033]8;;man:grotty(1)\033\\grotty(1)\033]8;;\033\\\n'|more
    to check your terminal and pager for OSC 8 support.  If you see
    "grotty(1)" and no additional garbage characters, then you may wish
    to edit "man.local" to remove the lines that disable this feature.

TIL man:foo(1) links are supported
and on my system, redirect to gnome-help 'man:foo(1)'

groff 1.24.0 NEWS:

*  Hyperlink support is now enabled by default on PDF and terminal
    devices for an (man) and doc (mdoc) documents.  Instructions and
    commented code for disabling it are in the "man.local" and
    "mdoc.local" files.

groff_man(7) (1.24.x):

Options
      The following groff options set registers (with -r) and strings
      (with -d) recognized and used by the man macro package.  To ensure
      rendering consistent with output device capabilities and reader
      preferences, man pages should never manipulate them.
...
      -rU0     Disable generation of URI hyperlinks in output drivers
               capable of them, making the arguments to MT and UR calls
               visible as formatted text.  grohtml(1), gropdf(1), and
               grotty(1) enable hyperlinks by default (the last only if
               not in its legacy output mode).

So in your case you want to either edit "/etc/groff/man.local" (and
likely "/etc/groff/mdoc.local" too) to add:

.nr U 1

or, if you're using man-db man(1):

export MANROFFOPT=-rU1

Either should suffice to turn on the OSC 8 hyperlinks.
Ah right.
1.24 was released March 2026, so too new to rely on that behavior yet.

We really want to avoid displaying the actual URL because:
- It's long, redundant, and interferes when reading text
- With wrapping enabled with \: in the URI, it can become unclickable
- Without wrapping enabled it interferes in adjacent text justification

So we may use the more abstract .UR in future,
but I don't think it's the best option currently.

I will add some notes and TODOs though.

thanks for all the info,
Padraig

Reply via email to