diff --git a/foot-server@.service.in b/foot-server@.service.in new file mode 100644 index 00000000..81c13bb4 --- /dev/null +++ b/foot-server@.service.in @@ -0,0 +1,13 @@ +[Service] +ExecStart=@bindir@/foot --server=0 +Environment=WAYLAND_DISPLAY=%i +NonBlocking=true +StandardInput=socket + +[Unit] +Requires=%N.socket +Description=Foot terminal server mode for WAYLAND_DISPLAY=%i +Documentation=man:foot(1) + +[Install] +WantedBy=wayland-instance@.target diff --git a/foot-server@.socket b/foot-server@.socket new file mode 100644 index 00000000..71db51cb --- /dev/null +++ b/foot-server@.socket @@ -0,0 +1,5 @@ +[Socket] +ListenStream=%t/foot-%i.sock + +[Install] +WantedBy=wayland-instance@.target diff --git a/meson.build b/meson.build index 30044f9e..8778927d 100644 --- a/meson.build +++ b/meson.build @@ -245,6 +245,25 @@ install_data( 'foot.desktop', 'foot-server.desktop', 'footclient.desktop', install_dir: join_paths(get_option('datadir'), 'applications')) +systemd = dependency('systemd', required: false) +if systemd.found() + + configuration = configuration_data() + configuration.set('bindir', join_paths(get_option('prefix'), get_option('bindir'))) + + systemd_units_dir = systemd.get_pkgconfig_variable('systemduserunitdir') + configure_file( + configuration: configuration, + input: 'foot-server@.service.in', + output: '@BASENAME@', + install_dir: systemd_units_dir + ) + + install_data( + 'foot-server@.socket', + install_dir: systemd_units_dir) +endif + scdoc = dependency('scdoc', native: true, required: get_option('docs')) if scdoc.found() install_data(