--- - name: Check for Zen Browser ansible.builtin.stat: path: "{{ zen_install_dir }}/zen" become: false register: zen_binary - name: Create Zen installation directories ansible.builtin.file: path: "{{ item }}" state: directory owner: "{{ user_name }}" mode: "0755" become: false loop: - "{{ user_home }}/.tarball-installations" - "{{ user_home }}/.config" - "{{ user_home }}/.local/bin" - "{{ user_home }}/.local/share/applications" - "{{ user_home }}/.local/share/icons/hicolor/128x128/apps" - name: Download the current Zen release binary ansible.builtin.get_url: url: "{{ zen_archive_url }}" dest: "{{ zen_archive }}" mode: "0644" become: false when: not zen_binary.stat.exists - name: Extract Zen Browser ansible.builtin.unarchive: src: "{{ zen_archive }}" dest: "{{ user_home }}/.tarball-installations" remote_src: true creates: "{{ zen_install_dir }}/zen" become: false - name: Link Zen into the user's PATH ansible.builtin.file: src: "{{ zen_install_dir }}/zen" dest: "{{ user_home }}/.local/bin/zen" state: link force: true become: false - name: Install Zen application icon ansible.builtin.copy: src: "{{ zen_install_dir }}/browser/chrome/icons/default/default128.png" dest: "{{ user_home }}/.local/share/icons/hicolor/128x128/apps/zen.png" remote_src: true owner: "{{ user_name }}" mode: "0644" become: false - name: Install Zen desktop entry ansible.builtin.copy: dest: "{{ user_home }}/.local/share/applications/{{ zen_desktop_file }}" owner: "{{ user_name }}" mode: "0644" content: | [Desktop Entry] Version=1.0 Type=Application Name=Zen Browser Comment=Browse the web Exec=zen %u Icon=zen Terminal=false StartupNotify=true StartupWMClass=zen Categories=Network;WebBrowser; MimeType=text/html;text/xml;application/xhtml+xml;x-scheme-handler/http;x-scheme-handler/https;application/x-xpinstall;application/pdf;application/json; Actions=new-window;new-private-window;profile-manager; [Desktop Action new-window] Name=New Window Exec=zen --new-window %u [Desktop Action new-private-window] Name=New Private Window Exec=zen --private-window %u [Desktop Action profile-manager] Name=Profile Manager Exec=zen --ProfileManager become: false - name: Remove downloaded Zen archive ansible.builtin.file: path: "{{ zen_archive }}" state: absent become: false - name: Query default MIME handlers ansible.builtin.command: "xdg-mime query default {{ item }}" become: false loop: - text/html - application/xhtml+xml - x-scheme-handler/http - x-scheme-handler/https register: current_browser_handlers changed_when: false failed_when: false - name: Set Zen as the default browser ansible.builtin.command: "xdg-mime default {{ zen_desktop_file }} {{ item.item }}" become: false loop: "{{ current_browser_handlers.results }}" loop_control: label: "{{ item.item }}" when: item.stdout != zen_desktop_file