+++ /dev/null
-[Unit]
-Description=Path activation for display manager ready service
-After=tmp.mount display-manager.service
-
-[Path]
-PathExists=/run/wayland-0
+++ /dev/null
-[Unit]
-Description=Headless Display Manager Ready Service
-After=tmp.mount display-manager.service
-
-[Service]
-Type=oneshot
-EnvironmentFile=/etc/sysconfig/display-manager.env
-SmackProcessLabel=System
-ExecStart=/usr/bin/sh -c "while [ ! -e /run/wayland-0 ] ; do /usr/bin/sleep .1 ; done ;/bin/chown -f root:display /run/wayland-0;/bin/chmod 775 /run/wayland-0"
-ExecStartPost=/usr/bin/sh -c "/usr/bin/touch /run/.wm_ready"
-
-[Install]
-WantedBy=graphical.target
+++ /dev/null
-TBM_DISPLAY_SERVER=1
-WAYLAND_DISPLAY="wayland-0"
-XDG_RUNTIME_DIR=/run
+++ /dev/null
-[Unit]
-Description=Headless Display Manager
-
-[Service]
-Type=simple
-EnvironmentFile=/etc/sysconfig/display-manager.env
-SmackProcessLabel=System
-ExecStart=/usr/bin/doctor
-
-[Install]
-WantedBy=graphical.target
+++ /dev/null
-[Unit]
-Description=Creating a link file for user to access display manager socket
-DefaultDependencies=no
-
-[Service]
-Type=oneshot
-ExecStart=/usr/bin/sh -c "while [ ! -e /run/wayland-0 ] ; do /usr/bin/sleep .1 ; done ;/usr/bin/ln -sf /run/wayland-0 /run/user/%U/"
+++ /dev/null
-if [ "$USER" == "root" ]; then
- export XDG_RUNTIME_DIR=/run
-else
- export XDG_RUNTIME_DIR=/run/user/$UID
-fi
-if [ "$WAYALND_DISPLAY" = "" ]; then
- export WAYLAND_DISPLAY=wayland-0
-fi
+++ /dev/null
-[Unit]
-Description=Path activation for display manager ready service
-After=tmp.mount display-manager.service
-
-[Path]
-PathExists=/run/headless-0
+++ /dev/null
-[Unit]
-Description=Headless Display Manager Ready Service
-After=tmp.mount display-manager.service
-
-[Service]
-Type=oneshot
-EnvironmentFile=/etc/sysconfig/display-manager.env
-SmackProcessLabel=System
-ExecStart=/usr/bin/sh -c "while [ ! -e /run/headless-0 ] ; do /usr/bin/sleep .1 ; done ;/bin/chown -f root:display /run/headless-0;/bin/chmod 775 /run/headless-0"
-ExecStartPost=/usr/bin/sh -c "/usr/bin/touch /run/.wm_ready"
-
-[Install]
-WantedBy=graphical.target
+++ /dev/null
-TBM_DISPLAY_SERVER=1
-WAYLAND_DISPLAY="headless-0"
-XDG_RUNTIME_DIR=/run
+++ /dev/null
-[Unit]
-Description=Headless Display Manager
-
-[Service]
-Type=simple
-EnvironmentFile=/etc/sysconfig/display-manager.env
-SmackProcessLabel=System
-ExecStart=/usr/bin/headless_server
-
-[Install]
-WantedBy=graphical.target
+++ /dev/null
-[Unit]
-Description=Creating a link file for user to access display manager socket
-DefaultDependencies=no
-
-[Service]
-Type=oneshot
-ExecStart=/usr/bin/sh -c "while [ ! -e /run/headless-0 ] ; do /usr/bin/sleep .1 ; done ;/usr/bin/ln -sf /run/headless-0 /run/user/%U/"
+++ /dev/null
-if [ "$USER" == "root" ]; then
- export XDG_RUNTIME_DIR=/run
-else
- export XDG_RUNTIME_DIR=/run/user/$UID
-fi
-if [ "$WAYALND_DISPLAY" = "" ]; then
- export WAYLAND_DISPLAY=headless-0
-fi
--- /dev/null
+[Unit]
+Description=Path activation for display manager ready service
+After=tmp.mount display-manager.service
+
+[Path]
+PathExists=/run/wayland-0
--- /dev/null
+[Unit]
+Description=Headless Display Manager Ready Service
+After=tmp.mount display-manager.service
+
+[Service]
+Type=oneshot
+EnvironmentFile=/etc/sysconfig/display-manager.env
+SmackProcessLabel=System
+ExecStart=/usr/bin/sh -c "while [ ! -e /run/wayland-0 ] ; do /usr/bin/sleep .1 ; done ;/bin/chown -f root:display /run/wayland-0;/bin/chmod 775 /run/wayland-0"
+ExecStartPost=/usr/bin/sh -c "/usr/bin/touch /run/.wm_ready"
+
+[Install]
+WantedBy=graphical.target
--- /dev/null
+TBM_DISPLAY_SERVER=1
+WAYLAND_DISPLAY="wayland-0"
+XDG_RUNTIME_DIR=/run
--- /dev/null
+[Unit]
+Description=Headless Display Manager
+
+[Service]
+Type=simple
+EnvironmentFile=/etc/sysconfig/display-manager.env
+SmackProcessLabel=System
+ExecStart=/usr/bin/doctor
+
+[Install]
+WantedBy=graphical.target
--- /dev/null
+[Unit]
+Description=Headless Display Manager
+
+[Service]
+Type=simple
+EnvironmentFile=/etc/sysconfig/display-manager.env
+SmackProcessLabel=System
+ExecStart=/usr/bin/headless_server
+
+[Install]
+WantedBy=graphical.target
--- /dev/null
+[Unit]
+Description=Creating a link file for user to access display manager socket
+DefaultDependencies=no
+
+[Service]
+Type=oneshot
+ExecStart=/usr/bin/sh -c "while [ ! -e /run/wayland-0 ] ; do /usr/bin/sleep .1 ; done ;/usr/bin/ln -sf /run/wayland-0 /run/user/%U/"
--- /dev/null
+if [ "$USER" == "root" ]; then
+ export XDG_RUNTIME_DIR=/run
+else
+ export XDG_RUNTIME_DIR=/run/user/$UID
+fi
+if [ "$WAYALND_DISPLAY" = "" ]; then
+ export WAYLAND_DISPLAY=wayland-0
+fi
# install system session services
%__mkdir_p %{buildroot}%{_unitdir}
-install -m 644 data/doctor/units/display-manager.service %{buildroot}%{_unitdir}
-install -m 644 data/doctor/units/display-manager-ready.path %{buildroot}%{_unitdir}
-install -m 644 data/doctor/units/display-manager-ready.service %{buildroot}%{_unitdir}
-install -m 644 data/headless/units/display-manager.service %{buildroot}%{_unitdir}
-install -m 644 data/headless/units/display-manager-ready.path %{buildroot}%{_unitdir}
-install -m 644 data/headless/units/display-manager-ready.service %{buildroot}%{_unitdir}
+install -m 644 data/units/display-manager.service.doctor %{buildroot}%{_unitdir}
+install -m 644 data/units/display-manager.service.headless %{buildroot}%{_unitdir}
+install -m 644 data/units/display-manager-ready.path %{buildroot}%{_unitdir}
+install -m 644 data/units/display-manager-ready.service %{buildroot}%{_unitdir}
# install user session service
%__mkdir_p %{buildroot}%{_unitdir_user}
-install -m 644 data/doctor/units/display-user.service %{buildroot}%{_unitdir_user}
-install -m 644 data/headless/units/display-user.service %{buildroot}%{_unitdir_user}
+install -m 644 data/units/display-user.service %{buildroot}%{_unitdir_user}
# install env file and scripts for service
%__mkdir_p %{buildroot}%{_sysconfdir}/sysconfig
-install -m 0644 data/doctor/units/display-manager.env %{buildroot}%{_sysconfdir}/sysconfig
-install -m 0644 data/headless/units/display-manager.env %{buildroot}%{_sysconfdir}/sysconfig
+install -m 0644 data/units/display-manager.env %{buildroot}%{_sysconfdir}/sysconfig
%__mkdir_p %{buildroot}%{_sysconfdir}/profile.d
-install -m 0644 data/doctor/units/display_env.sh %{buildroot}%{_sysconfdir}/profile.d
-install -m 0644 data/headless/units/display_env.sh %{buildroot}%{_sysconfdir}/profile.d
+install -m 0644 data/units/display_env.sh %{buildroot}%{_sysconfdir}/profile.d
%post -n %{name} -p /sbin/ldconfig
%postun -n %{name} -p /sbin/ldconfig
# create user 'display'
getent passwd %{display_user} >/dev/null || %{_sbindir}/useradd -r -g %{display_group} -d /run/display -s /bin/false -c "Display" %{display_user}
+# create links within systemd's target(s)
+%__mkdir_p %{_unitdir}/graphical.target.wants/
+%__mkdir_p %{_unitdir_user}/basic.target.wants/
+mv -f %{_unitdir}/display-manager.service.doctor %{_unitdir}/display-manager.service
+ln -sf ../display-manager.service %{_unitdir}/graphical.target.wants/
+ln -sf ../display-manager-ready.service %{_unitdir}/graphical.target.wants/
+ln -sf ../display-user.service %{_unitdir_user}/basic.target.wants/
+
%pre headless
# create groups 'display'
getent group %{display_group} >/dev/null || %{_sbindir}/groupadd -r -o %{display_group}
# create links within systemd's target(s)
%__mkdir_p %{_unitdir}/graphical.target.wants/
%__mkdir_p %{_unitdir_user}/basic.target.wants/
+mv -f %{_unitdir}/display-manager.service.headless %{_unitdir}/display-manager.service
ln -sf ../display-manager.service %{_unitdir}/graphical.target.wants/
ln -sf ../display-manager-ready.service %{_unitdir}/graphical.target.wants/
ln -sf ../display-user.service %{_unitdir_user}/basic.target.wants/
%{_bindir}/doctor*
%{_unitdir}/display-manager-ready.path
%{_unitdir}/display-manager-ready.service
-%{_unitdir}//display-manager.service
+%{_unitdir}/display-manager.service.doctor
%{_unitdir_user}/display-user.service
%config %{_sysconfdir}/sysconfig/display-manager.env
%config %{_sysconfdir}/profile.d/display_env.sh
%{_bindir}/headless*
%{_unitdir}/display-manager-ready.path
%{_unitdir}/display-manager-ready.service
-%{_unitdir}/display-manager.service
+%{_unitdir}/display-manager.service.headless
%{_unitdir_user}/display-user.service
%config %{_sysconfdir}/sysconfig/display-manager.env
%config %{_sysconfdir}/profile.d/display_env.sh
socket_name = getenv("WAYLAND_DISPLAY");
if (!socket_name)
- socket_name = "headless-0";
+ socket_name = "wayland-0";
if (!getenv("XDG_RUNTIME_DIR"))
setenv("XDG_RUNTIME_DIR", "/run", 1);
#include <wayland-tbm-client.h>
#include <tbm_surface_internal.h>
-#define DISPLAY_NAME "headless-0"
#define MAX_STR 1024
#define DEBUG
{
int x, y, w, h;
app_data_t *client = NULL;
+ const char *socket_name = NULL;
Eina_Bool focus_skip = EINA_FALSE;
setvbuf(stdout, NULL, _IONBF, 0);
if (getenv("HEADLESS_SKIP_FOCUS"))
focus_skip = EINA_TRUE;
+ socket_name = getenv("WAYLAND_DISPLAY");
+
+ if (!socket_name)
+ socket_name = "wayland-0";
+
client = (app_data_t *)calloc(1, sizeof(app_data_t));
ERROR_CHECK(client, goto shutdown, "Failed to allocate memory for app_data_t");
goto shutdown;
}
- client->ewd = ecore_wl2_display_connect(DISPLAY_NAME);
- ERROR_CHECK(client->ewd, goto shutdown, "Failed to connect to wayland display %s", DISPLAY_NAME);
+ client->ewd = ecore_wl2_display_connect(socket_name);
+ ERROR_CHECK(client->ewd, goto shutdown, "Failed to connect to wayland display %s", socket_name);
client->wl_tbm_client = wayland_tbm_client_init(ecore_wl2_display_get(client->ewd));
ERROR_CHECK(client->wl_tbm_client, goto shutdown, "Failed to init wayland_tbm_client");