diff options
author | David Robillard <d@drobilla.net> | 2024-11-28 09:58:22 -0500 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2024-12-19 19:55:39 -0500 |
commit | b1c955b1e0e3ae6b4b0c74112ae68a2966a92d35 (patch) | |
tree | adb35b8b9f9e310ea5de0437d791b26e2c574bb9 | |
parent | 5af9d9a0bff772f232d8a232a138c903ca5ba100 (diff) | |
download | jalv-b1c955b1e0e3ae6b4b0c74112ae68a2966a92d35.tar.gz jalv-b1c955b1e0e3ae6b4b0c74112ae68a2966a92d35.tar.bz2 jalv-b1c955b1e0e3ae6b4b0c74112ae68a2966a92d35.zip |
-rw-r--r-- | AUTHORS | 3 | ||||
-rw-r--r-- | NEWS | 3 | ||||
-rw-r--r-- | doc/jalv.1 | 205 | ||||
-rw-r--r-- | doc/jalv.gtk3.1 | 150 | ||||
-rw-r--r-- | doc/jalv.qt5.1 | 53 | ||||
-rw-r--r-- | doc/jalv.qt6.1 | 29 | ||||
-rw-r--r-- | doc/mandoc.css | 327 | ||||
-rw-r--r-- | doc/meson.build | 60 | ||||
-rw-r--r-- | meson_options.txt | 3 |
9 files changed, 667 insertions, 166 deletions
@@ -15,3 +15,6 @@ Original Qt generic UI: GTK plugin selector UI: Alexandros Theodotou <alex@zrythm.org> + +Original man pages: + Jaromír Mikes <mira.mikes@seznam.cz> @@ -18,12 +18,13 @@ jalv (1.6.9) unstable; urgency=medium * Remove limits on the size of messages sent from plugin to UI * Remove transport position dumping from Jack process callback * Replace use of deprecated Gtk interfaces + * Rewrite man pages in mdoc * Switch to external zix dependency * Use Gtk switches instead of checkboxes for toggle controls * Use fewer platform-specific APIs * Use portable zix filesystem API - -- David Robillard <d@drobilla.net> Mon, 25 Nov 2024 01:29:18 +0000 + -- David Robillard <d@drobilla.net> Fri, 20 Dec 2024 00:45:28 +0000 jalv (1.6.8) stable; urgency=medium @@ -1,84 +1,125 @@ -.TH JALV 1 "18 Feb 2017" - -.SH NAME -.B jalv \- Run an LV2 plugin as a JACK application (console version). - -.SH SYNOPSIS -.B jalv [OPTION]... PLUGIN_URI - -.SH OPTIONS - -.TP -\fB\-b SIZE\fR -Buffer size for plugin <=> UI communication. - -.TP -\fB\-c SYM=VAL\fR -Set control value (e.g. "vol=1.4"). - -.TP -\fB\-d\fR -Dump plugin <=> UI communication. - -.TP -\fB\-U URI\fR -Load the UI with the given URI. - -.TP -\fB\-h\fR -Print the command line options. - -.TP -\fB\-i\fR -Ignore input on stdin (for background use). - -.TP -\fB\-l DIR\fR -Load state from state directory. - -.TP -\fB\-n NAME\fR -Jack client name - -.TP -\fB\-p\fR -Print control output changes to stdout. - -.TP -\fB\-s\fR +.\" # Copyright 2024 David Robillard <d@drobilla.net> +.\" # SPDX-License-Identifier: ISC +.Dd December 20, 2024 +.Dt JALV 1 +.Os +.Sh NAME +.Nm jalv +.Nd run an LV2 plugin with a command-line interface +.Sh SYNOPSIS +.Nm jalv +.Op Fl dhipstx +.Op Fl b Ar size +.Op Fl c Ar symbol=value +.Op Fl U Ar ui_uri +.Op Fl l Ar dir +.Op Fl n Ar name +.Ar plugin_uri +.Sh DESCRIPTION +.Nm +is a simple LV2 host that runs one plugin. +It has several versions, this one has an interactive command-line interface. +.Pp +.Nm +has one positional argument, the URI of an installed LV2 plugin. +.Pp +The options are as follows: +.Bl -tag -width 3n +.It Fl b Ar bytes +Buffer size for communication between plugin and UI. +The default value should be enough, +but if there are overflows, +this option can be used to allocate more space. +.It Fl c Ar symbol=value +Set control value, for example, +.Fl c Ar vol=1.4 +where +.Dq vol +is the symbol of a control port on the plugin. +.It Fl d +Dump communication between plugin and UI to +.Dv stdout . +Note that this may print an extreme amount of text, +piping the output to a pager or file is recommended. +.It Fl h +Print the command line options and exit. +.It Fl i +Ignore input on +.Dv stdin +and run non-interactively. +.It Fl l Ar dir +Load state from the given directory before running the plugin. +.It Fl n Ar name +Use the given JACK client name. +Note that JACK may adjust the name if necessary unless +.Fl x +is also given. +.It Fl p +Print control output changes to +.Dv stdout . +.It Fl s Show plugin UI if possible. - -This option only works when plugins provide a UI that is usable via the non-embeddable showHide interface. For other, embeddable UIs, use jalv.gtk3(1) or jalv.qt5(1). - -.TP -\fB\-t\fR -Print trace messages from plugin - -.TP -\fB\-x\fR -Use only exact Jack client name, and exit if it is taken - -.SH COMMANDS - +This option only works when plugins provide a UI that uses the non-embeddable +.Li showHide +interface. +For embeddable UIs, use +.Xr jalv.gtk3 1 +instead. +.It Fl t +Print trace messages from plugin. +This enables the +.Dq trace +log defined by LV2, which is used by some plugins to print debugging output. +.It Fl U Ar uri +Load the UI with the given URI. +Usually only one suitable UI is available on a given platform, +which is used by default. +If there are several, this option can be used to select which is loaded. +.It Fl V +Print version information and exit. +.It Fl x +Use only the exact JACK client name given by +.Fl n +or exit if it's unavailable. +.El +.Sh COMMANDS The Jalv prompt supports several commands for interactive control: - - \fBhelp\fR Display help message - \fBcontrols\fR Print settable control values - \fBmonitors\fR Print output control values - \fBpresets\fR Print available presets - \fBpreset URI\fR Set preset - \fBset INDEX VALUE\fR Set control value by port index - \fBset SYMBOL VALUE\fR Set control value by symbol - \fBSYMBOL = VALUE\fR Set control value by symbol - -.SH "SEE ALSO" -.BR jalv.gtk3(1), -.BR jalv.qt5(2), -.BR lv2ls(1), -.BR jackd(1) - -.SH AUTHOR -jalv was written by David Robillard <d@drobilla.net> -.PP -This manual page was written by Jaromír Mikes <mira.mikes@seznam.cz> -and David Robillard <d@drobilla.net> +.Pp +.Bl -tag -width 16n -compact +.It Ic help +Display help message. +.It Ic controls +Print settable control values. +.It Ic monitors +Print output control values. +.It Ic presets +Print available presets. +.It Ic preset Ar uri +Set preset. +.It Ic set index value +Set control value by port index. +.It Ic set Ar symbol Ar value +Set control value by symbol. +.It Ar symbol Cm = Ar value +Set control value by symbol. +.El +.Sh ENVIRONMENT +.Bl -tag -width LV2_PATH +.It Ev LV2_PATH +Search path for LV2 bundles, in +.Ev PATH +format. +.El +.Sh SEE ALSO +.Xr jalv.gtk3 1 , +.Xr jalv.qt5 1 , +.Xr lv2ls 1 +.Sh AUTHORS +.Nm +was written by +.An David Robillard +.Aq Mt d@drobilla.net , +with contributions by +Robin Gareus, +Hanspeter Portner, +and others. diff --git a/doc/jalv.gtk3.1 b/doc/jalv.gtk3.1 index 1cb8dc1..953c5b0 100644 --- a/doc/jalv.gtk3.1 +++ b/doc/jalv.gtk3.1 @@ -1,57 +1,101 @@ -.TH JALV.GTK3 1 "27 May 2022" - -.SH NAME -.B jalv.gtk \- Run an LV2 plugin as a JACK application (Gtk3 version). - -.SH SYNOPSIS -.B jalv.gtk [OPTION]... PLUGIN_URI - -.SH OPTIONS - -.TP -\fB\-b SIZE\fR +.\" # Copyright 2024 David Robillard <d@drobilla.net> +.\" # SPDX-License-Identifier: ISC +.Dd December 20, 2024 +.Dt JALV.GTK3 1 +.Os +.Sh NAME +.Nm jalv.gtk3 +.Nd run an LV2 plugin with a GTK3 interface +.Sh SYNOPSIS +.Nm jalv.gtk3 +.Op Fl dghmpstx +.Op Fl b , Fl Fl buffer-size Ns = Ns Ar size +.Op Fl c , Fl Fl control Ns = Ns Ar setting +.Op Fl l , Fl Fl load Ns = Ns Ar dir +.Op Fl n , Fl Fl jack-name Ns = Ns Ar name +.Op Fl P , Fl Fl preset Ns = Ns Ar uri +.Op Fl r , Fl Fl update-frequency Ns = Ns Ar hz +.Op Fl S , Fl Fl scale-factor Ns = Ns Ar scale +.Op Fl U , Fl Fl ui-uri Ns = Ns Ar uri +.Ar plugin_uri +.Sh DESCRIPTION +.Nm +is a simple LV2 host that runs a single plugin. +This version has a GTK3 interface that shows either generic controls or a custom plugin GUI. +.Pp +The options are as follows: +.Bl -tag -width 3n +.It Fl b Ar size Buffer size for plugin <=> UI communication. - -.TP -\fB\-c SYM=VAL\fR -Set control value (e.g. "vol=1.4"). - -.TP -\fB\-d\fR, \fB\-\-dump\fR +.It Fl c Ar symbol=value +Set control value, for example, +.Fl c Ar vol=1.4 +where +.Dq vol +is the symbol of some control port on the plugin. +.It Fl d Dump plugin <=> UI communication. - -.TP -\fB\-U URI\fR -Load the UI with the given URI. - -.TP -\fB\-g\fR, \fB\-\-generic\-ui\fR -Use Jalv generic UI and not the plugin UI. - -.TP -\fB\-h\fR, \fB\-\-help\fR +.It Fl g +Show generic UI instead of custom plugin GUI. +.It Fl h Print the command line options. - -.TP -\fB\-l DIR\fR, \fB\-\-load DIR\fR -Load state from state directory. - -.TP -\fB\-p\fR, \fB\-\-print\-controls\fR -Print control output changes to stdout. - -.TP -\fB\-t\fR, \fB\-\-trace\fR +.It Fl l Ar dir +Load state from the given directory before running the plugin. +.It Fl m +Hide application menu, showing only the plugin interface. +.It Fl n Ar name +Use the given JACK client name. +Note that JACK may adjust the name if necessary unless +.Fl x +is also given. +.It Fl P uri +Load the given preset before running plugin. +.It Fl p +Print control output changes to +.Dv stdout . +.It Fl r Ar hz +Set the UI update frequency. +By default the screen refresh rate is used, typically 30 or 60 Hz. +.It Fl S Ar factor +Override the UI scale factor. +.It Fl s +Show controls that are normally hidden. +.It Fl t Print trace messages from plugin. - -.SH "SEE ALSO" -.BR jalv(1), -.BR jalv.qt5(1), -.BR lv2ls(1), -.BR jackd(1) - -.SH AUTHOR -jalv was written by David Robillard <d@drobilla.net> -.PP -This manual page was written by Jaromír Mikes <mira.mikes@seznam.cz> -and David Robillard <d@drobilla.net> +.It Fl U +URI Load the UI with the given URI. +.It Fl x +Use only the exact JACK client name given by +.Fl n +or exit if it's unavailable. +.El +.Sh COMMANDS +The Jalv prompt supports several commands for interactive control: +.Pp +.Bl -tag -width 16n -compact +.It Ic help +Display help message. +.It Ic controls +Print settable control values. +.It Ic monitors +Print output control values. +.It Ic presets +Print available presets. +.It Ic preset Ar uri +Set preset. +.It Ic set index value +Set control value by port index. +.It Ic set Ar symbol Ar value +Set control value by symbol. +.It Ar SYMBOL Cm = Ar VALUE +Set control value by symbol. +.El +.Sh SEE ALSO +.Xr jalv 1 , +.Xr jalv.qt5 1 +.Sh AUTHORS +jalv was written by +.An David Robillard +.Aq Mt d@drobilla.net +with contributions by others. +Most of the GTK interface was added by Alexandros Theodotou and Nick Lanham. diff --git a/doc/jalv.qt5.1 b/doc/jalv.qt5.1 index 14fa57f..578dab4 100644 --- a/doc/jalv.qt5.1 +++ b/doc/jalv.qt5.1 @@ -1,24 +1,29 @@ -.TH JALV.QT5 1 "19 Apr 2012" - -.SH NAME -.B jalv.qt \- Run an LV2 plugin as a JACK application (Qt version). - -.SH SYNOPSIS -.B jalv.qt PLUGIN_URI - -.SH DESCRIPTION - -This is a version of Jalv with a GUI implemented in Qt. It is mainly for -developer testing purposes, for a production ready program use jalv.gtk. - -.SH "SEE ALSO" -.BR jalv(1), -.BR jalv.gtk3(1), -.BR lv2ls(1), -.BR jackd(1) - -.SH AUTHOR -jalv was written by David Robillard <d@drobilla.net> -.PP -This manual page was written by Jaromír Mikes <mira.mikes@seznam.cz> -and David Robillard <d@drobilla.net> +.\" # Copyright 2024 David Robillard <d@drobilla.net> +.\" # SPDX-License-Identifier: ISC +.Dd December 20, 2024 +.Dt JALV.QT5 1 +.Os +.Sh NAME +.Nm jalv.qt5 +.Nd run an LV2 plugin with a Qt5 interface +.Sh SYNOPSIS +.Nm jalv.qt5 +.Ar plugin_uri +.Sh DESCRIPTION +.Nm +is a simple LV2 host that runs a single plugin. +This version has a Qt5 interface that shows either generic controls or a custom plugin GUI. +.Pp +This version has no options and requires the plugin URI to be given on the command line. +For a fully graphical version with a plugin selector, see +.Xr jalv.gtk3 1 . +.Sh SEE ALSO +.Xr jalv 1 , +.Xr jalv.gtk3 1 , +.Xr lv2ls 1 +.Sh AUTHORS +jalv was written by +.An David Robillard +.Aq Mt d@drobilla.net +with contributions by others. +Most of the Qt interface was added by Amadeus Folego and Timo Westkämper. diff --git a/doc/jalv.qt6.1 b/doc/jalv.qt6.1 new file mode 100644 index 0000000..6b80b2c --- /dev/null +++ b/doc/jalv.qt6.1 @@ -0,0 +1,29 @@ +.\" # Copyright 2024 David Robillard <d@drobilla.net> +.\" # SPDX-License-Identifier: ISC +.Dd December 20, 2024 +.Dt JALV.QT6 1 +.Os +.Sh NAME +.Nm jalv.qt6 +.Nd run an LV2 plugin with a Qt6 interface +.Sh SYNOPSIS +.Nm jalv.qt6 +.Ar plugin_uri +.Sh DESCRIPTION +.Nm +is a simple LV2 host that runs a single plugin. +This version has a Qt6 interface that shows either generic controls or a custom plugin GUI. +.Pp +This version has no options and requires the plugin URI to be given on the command line. +For a fully graphical version with a plugin selector, see +.Xr jalv.gtk3 1 . +.Sh SEE ALSO +.Xr jalv 1 , +.Xr jalv.gtk3 1 , +.Xr lv2ls 1 +.Sh AUTHORS +jalv was written by +.An David Robillard +.Aq Mt d@drobilla.net +with contributions by others. +Most of the Qt interface was added by Amadeus Folego and Timo Westkämper. diff --git a/doc/mandoc.css b/doc/mandoc.css new file mode 100644 index 0000000..aee69e5 --- /dev/null +++ b/doc/mandoc.css @@ -0,0 +1,327 @@ +/* + Copyright 2021-2022 David Robillard <d@drobilla.net> + SPDX-License-Identifier: ISC +*/ + +/* Generic page style */ + +/* + Smaller sizes: 0.236em 0.271em 0.382em 0.438em 0.618em 0.708em + Larger sizes: 1.146em 1.618em 1.854em 2.618em 3em 4.236em +*/ + +html { + margin: 0 1.618em; + background: #fff; + color: #000; +} + +body { + font-style: normal; + line-height: 1.618em; + margin: 0 auto auto; + padding: 0; + max-width: 60em; + font-family: "SF Pro Text", Verdana, "DejaVu Sans", sans-serif; + text-rendering: optimizelegibility; +} + +h1 { + font-family: Helvetica, Arial, "DejaVu Sans Condensed", Verdana, sans-serif; + font-size: 1.854em; + font-weight: 600; + line-height: 114.6%; + margin: 1.146em 0; +} + +a { + text-decoration: none; +} + +h1 a, +h2 a, +h3 a, +h4 a, +h5 a, +h6 a { + color: #222; +} + +a:hover { + text-decoration: underline; +} + +h1 a:link, +h2 a:link, +h3 a:link, +h4 a:link, +h5 a:link, +h6 a:link { + color: #222; +} + +h1 a:visited, +h2 a:visited, +h3 a:visited, +h4 a:visited, +h5 a:visited, +h6 a:visited { + color: #222; +} + +pre, +tt, +code { + overflow: auto; + font-family: "SF Mono", Menlo, Consolas, "DejaVu Sans Mono", monospace, fixed; + hyphens: none; + white-space: nowrap; + + /* stylelint-disable property-no-vendor-prefix */ + -epub-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + /* stylelint-enable property-no-vendor-prefix */ +} + +ul, +ol, +dl { + margin: 0; + padding: 0; +} + +ul { + padding: 0; + hyphens: auto; +} + +dt { + font-weight: 600; + padding: 0.618em 0 0; +} + +dd { + margin: 0 0 0 2.618em; + hyphens: auto; +} + +dd > ul:only-child, +dd > ol:only-child { + padding-left: 0; +} + +li { + margin-left: 2.618em; +} + +dt:empty { + margin: 0; + display: none; +} + +dd:empty { + margin: 0; + display: none; +} + +dt:blank { + margin: 0; + display: none; +} + +dd:blank { + margin: 0; + display: none; +} + +/* Media-specific style */ + +/* Color links on screens */ +@media screen { + a { + color: #546e00; + } +} + +@media print { + body { + color: #000; + } + + a, + h1 a, + h2 a, + h3 a, + h4 a, + h5 a, + h6 a { + color: #000; + } + + a:link { + color: #000; + } + + a:visited { + color: #000; + } +} + +/* Mandoc specific style */ + +/* stylelint-disable selector-class-pattern */ + +table.head { + font-size: 0.708em; + margin: 0.438em 0 1.854em; + width: 100%; +} + +table.foot { + font-size: 0.708em; + margin: 2.618em 0 0.438em; + width: 100%; +} + +td.head-rtitle, +td.foot-os { + text-align: right; +} + +td.head-vol { + text-align: center; +} + +div.Pp { + margin: 1ex 0; +} + +a.permalink { + color: #222; +} + +div.Nd, +div.Bf, +div.Op { + display: inline; +} + +span.Pa, +span.Ad { + font-style: italic; +} + +span.Ms { + font-weight: bold; +} + +dl.Bl-diag > dt { + font-weight: bold; +} + +table.Nm tbody tr { + vertical-align: baseline; +} + +code.Nm, +code.Fl, +code.Cm, +code.Ic, +code.In, +code.Fd, +code.Fn, +code.Cd { + font-weight: bold; + color: #444; +} + +code.Ev { + font-weight: bold; + color: #444; +} + +code.Li { + color: #333; +} + +var.Ar { + font-style: italic; +} + +/* stylelint-enable selector-class-pattern */ + +/* Dark mode */ +@media (prefers-color-scheme: dark) { + html { + background: #222; + color: #ddd; + } + + a { + color: #b4c342; + } + + a.permalink { + color: #ddd; + } + + h1 a, + h2 a, + h3 a, + h4 a, + h5 a, + h6 a { + color: #ddd; + } + + h1 a:link, + h2 a:link, + h3 a:link, + h4 a:link, + h5 a:link, + h6 a:link { + color: #ddd; + } + + h1 a:visited, + h2 a:visited, + h3 a:visited, + h4 a:visited, + h5 a:visited, + h6 a:visited { + color: #ddd; + } + + /* stylelint-disable selector-class-pattern */ + + code.Nm, + code.Fl, + code.Cm, + code.Ic, + code.In, + code.Fd, + code.Fn, + code.Cd { + color: #aaa; + } + + code.Ev { + color: #aaa; + } + + code.Li { + color: #ccc; + } + + /* stylelint-enable selector-class-pattern */ +} + +/* Hard black for dark mode on mobile (since it's likely to be an OLED screen) */ +@media only screen and (hover: none) and (pointer: coarse) and (prefers-color-scheme: dark) { + html { + background: #000; + color: #ccc; + } +} diff --git a/doc/meson.build b/doc/meson.build index be25581..9a00094 100644 --- a/doc/meson.build +++ b/doc/meson.build @@ -1,12 +1,60 @@ -# Copyright 2022-2023 David Robillard <d@drobilla.net> +# Copyright 2022-2024 David Robillard <d@drobilla.net> # SPDX-License-Identifier: 0BSD OR ISC -install_man(files('jalv.1')) +docdir = get_option('datadir') / 'doc' -if not get_option('gtk3').disabled() - install_man(files('jalv.gtk3.1')) +if not get_option('man').disabled() + install_man(files('jalv.1')) + + if not get_option('gtk3').disabled() + install_man(files('jalv.gtk3.1')) + endif + + if not get_option('qt5').disabled() + install_man(files('jalv.qt5.1')) + endif + + if not get_option('qt6').disabled() + install_man(files('jalv.qt6.1')) + endif endif -if not get_option('qt5').disabled() - install_man(files('jalv.qt5.1')) +# Build/install HTML man pages if mandoc is present +mandoc = find_program('mandoc', required: get_option('man_html')) +if mandoc.found() + configure_file( + copy: true, + input: files('mandoc.css'), + output: 'mandoc.css', + install_dir: docdir / meson.project_name() / 'man', + ) + + mandoc_html_command = [ + mandoc, + '-Kutf-8', + '-Ostyle=mandoc.css,man=%N.html', + '-Thtml', + '-Wwarning,stop', '@INPUT@', + ] + + html_mandir = docdir / meson.project_name() / 'man' + foreach name : ['jalv', 'jalv.gtk3', 'jalv.qt5', 'jalv.qt6'] + custom_target( + name + '.html', + capture: true, + command: mandoc_html_command, + input: files(name + '.1'), + install: true, + install_dir: html_mandir, + output: name + '.html', + ) + endforeach + + if not meson.is_subproject() + summary( + 'HTML man pages', + get_option('prefix') / html_mandir, + section: 'Directories', + ) + endif endif diff --git a/meson_options.txt b/meson_options.txt index abc5409..f0577ef 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -22,6 +22,9 @@ option('lint', type: 'boolean', value: false, yield: true, option('man', type: 'feature', value: 'enabled', yield: true, description: 'Install man pages') +option('man_html', type: 'feature', yield: true, + description: 'Build HTML man pages') + option('posix', type: 'feature', yield: true, description: 'Use POSIX system facilities') |