From 139fd6d55cbdd2833be3d3eb7f2c96c87a7fa42d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Wed, 26 Jul 2023 16:14:38 +0200 Subject: [PATCH] meson: add -Dterminfo-base-name option This defines the base name of the generated terminfo files. It defaults to the value of -Ddefault-terminfo (i.e. 'foot') Example: meson -Ddefault-terminfo=foot-bananas -Dterminfo-base-name=foot-apples The generated terminfo files will be * terminfo/f/foot-apples * terminfo/f/foot-apples-direct The default value of $TERM will be 'foot-bananas' --- CHANGELOG.md | 5 +++++ INSTALL.md | 15 +++++++++++++-- meson.build | 12 +++++++++--- meson_options.txt | 3 ++- 4 files changed, 29 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 85eeae1f..26f1d1fe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -48,6 +48,11 @@ ### Added * `[tweak].bold-text-in-bright-amount` option ([#1434][1434]). +* `-Dterminfo-base-name` meson option, allowing you to name the + terminfo files to something other than `-Ddefault-terminfo`. Use + case: have foot default to using the terminfo from ncurses (`foot`, + `foot-direct`), while still packaging foot's terminfo files, but + under a different name (e.g. `foot-extra`, `foot-extra-direct`). [1434]: https://codeberg.org/dnkl/foot/issues/1434 diff --git a/INSTALL.md b/INSTALL.md index 9e2da8ec..67e6b910 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -151,6 +151,7 @@ Available compile-time options: | `-Dgrapheme-clustering` | feature | `auto` | Enables grapheme clustering | libutf8proc | | `-Dterminfo` | feature | `enabled` | Build and install terminfo files | tic (ncurses) | | `-Ddefault-terminfo` | string | `foot` | Default value of `TERM` | None | +| `-Dterminfo-base-name` | string | `-Ddefault-terminfo` | Base name of the generated terminfo files | None | | `-Dcustom-terminfo-install-location` | string | `${datadir}/terminfo` | Value to set `TERMINFO` to | None | | `-Dsystemd-units-dir` | string | `${systemduserunitdir}` | Where to install the systemd service files (absolute) | None | | `-Dutmp-backend` | combo | `auto` | Which utmp backend to use (`none`, `libutempter`, `ulog` or `auto`) | libutempter or ulog | @@ -165,8 +166,18 @@ under a different name. Setting this changes the default value of `$TERM`, and the names of the terminfo files (if `-Dterminfo=enabled`). -`-Dcustom-terminfo-install-location` enables foot’s terminfo to -co-exist with ncurses’ version, without changing the terminfo +If you want foot to use the terminfo files from ncurses, but still +package foot's own terminfo files under a different name, you can use +the `-Dterminfo-base-name` option. Many distributions use the name +`foot-extra`, and thus it might be a good idea to re-use that: + +```sh +meson ... -Ddefault-terminfo=foot -Dterminfo-base-name=foot-extra +``` +(or just leave out `-Ddefault-terminfo`, since it defaults to `foot` anyway). + +Finally, `-Dcustom-terminfo-install-location` enables foot’s terminfo +to co-exist with ncurses’ version, without changing the terminfo names. The idea is that you install foot’s terminfo to a non-standard location, for example `/usr/share/foot/terminfo`. Use `-Dcustom-terminfo-install-location` to tell foot where the terminfo diff --git a/meson.build b/meson.build index aeb2daa6..87af1edd 100644 --- a/meson.build +++ b/meson.build @@ -352,11 +352,16 @@ if get_option('themes') install_subdir('themes', install_dir: join_paths(get_option('datadir'), 'foot')) endif +terminfo_base_name = get_option('terminfo-base-name') +if terminfo_base_name == '' + terminfo_base_name = get_option('default-terminfo') +endif + tic = find_program('tic', native: true, required: get_option('terminfo')) if tic.found() conf_data = configuration_data( { - 'default_terminfo': get_option('default-terminfo'), + 'default_terminfo': terminfo_base_name } ) @@ -367,9 +372,9 @@ if tic.found() ) custom_target( 'terminfo', - output: get_option('default-terminfo')[0], + output: terminfo_base_name[0], input: preprocessed, - command: [tic, '-x', '-o', '@OUTDIR@', '-e', '@0@,@0@-direct'.format(get_option('default-terminfo')), '@INPUT@'], + command: [tic, '-x', '-o', '@OUTDIR@', '-e', '@0@,@0@-direct'.format(terminfo_base_name), '@INPUT@'], install: true, install_dir: terminfo_install_location ) @@ -395,6 +400,7 @@ summary( 'utmp backend': utmp_backend, 'utmp helper default path': utmp_default_helper_path, 'Build terminfo': tic.found(), + 'Terminfo base name': terminfo_base_name, 'Terminfo install location': terminfo_install_location, 'Default TERM': get_option('default-terminfo'), 'Set TERMINFO': get_option('custom-terminfo-install-location') != '', diff --git a/meson_options.txt b/meson_options.txt index d16e23ae..ab7a07be 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -15,7 +15,8 @@ option('tests', type: 'boolean', value: true, description: 'Build tests') option('terminfo', type: 'feature', value: 'enabled', description: 'Build and install foot\'s terminfo files.') option('default-terminfo', type: 'string', value: 'foot', description: 'Default value of the "term" option in foot.ini.') - +option('terminfo-base-name', type: 'string', + description: 'Base name of the generated terminfo files. Defaults to the value of the \'default-terminfo\' meson option') option('custom-terminfo-install-location', type: 'string', value: '', description: 'Path to foot\'s terminfo, relative to ${prefix}. If set, foot will set $TERMINFO to this value in the client process.')