---
- name: Register display manager path
  command: cat /etc/X11/default-display-manager
  register: display_man
  changed_when: false
  when: ansible_os_family == 'Debian'

- name: Register display manager path (RedHat)
  command: grep '/usr/s\?bin' /etc/systemd/system/display-manager.service
  register: display_man_rh
  changed_when: false
  when: ansible_os_family in ('RedHat', 'Archlinux')

- name: Backup the display manager query
  set_fact:
    display_manager: "{{ display_man if display_man.stdout is defined else display_man_rh }}"

- name: Set auto-login user for LightDM
  blockinfile:
    path: /etc/lightdm/lightdm.conf
    marker: "# {mark} ANSIBLE MANAGED BLOCK FOR AUTOLOGIN"
    state: absent
    block: |
      [Seat:*]
      autologin-user={{ autologin_user }}
      autologin-user-timeout=0
  when: "'lightdm' in display_manager.stdout"

- name: Set auto-login user for GDM3
  blockinfile:
    path: /etc/gdm3/custom.conf
    marker: "# {mark} ANSIBLE MANAGED BLOCK FOR AUTOLOGIN"
    state: absent
    block: |
      AutomaticLoginEnable = true
      AutomaticLogin = {{ autologin_user }}
  when: "'gdm3' in display_manager.stdout and ansible_os_family != 'RedHat'"

- name: Set auto-login user for GDM
  blockinfile:
    path: /etc/gdm/custom.conf
    insertafter: "\\[daemon]"
    marker: "# {mark} ANSIBLE MANAGED BLOCK FOR AUTOLOGIN"
    block: |
      AutomaticLoginEnable = true
      AutomaticLogin = {{ autologin_user }}
  when: "'gdm' in display_manager.stdout and ansible_os_family in ('RedHat', 'Archlinux')"

- name: Set auto-login user for SDDM
  blockinfile:
    path: /etc/sddm.conf.d/autologin.conf
    marker: "# {mark} ANSIBLE MANAGED BLOCK FOR AUTOLOGIN"
    state: absent
    block: |
      [Autologin]
      User={{ autologin_user }}
  when: "'sddm' in display_manager.stdout"
