--- - name: Create Typora install directory ansible.builtin.file: path: /opt/typora state: directory owner: root group: root mode: "0755" - name: Download Typora Linux binary archive ansible.builtin.get_url: url: "{{ typora_archive_url }}" dest: "{{ typora_archive }}" mode: "0644" timeout: 300 - name: Extract Typora ansible.builtin.unarchive: src: "{{ typora_archive }}" dest: /opt/typora remote_src: true owner: root group: root mode: "0755" - name: Ensure Typora files are readable ansible.builtin.file: path: /opt/typora state: directory owner: root group: root mode: "0755" recurse: true - name: Create Typora launcher wrapper ansible.builtin.copy: dest: /usr/local/bin/typora mode: "0755" content: | #!/usr/bin/env bash set -euo pipefail cd /opt/typora/bin/Typora-linux-x64 exec /opt/typora/bin/Typora-linux-x64/Typora "$@" - name: Ensure system desktop application directory exists ansible.builtin.file: path: /usr/local/share/applications state: directory mode: "0755" - name: Create Typora desktop launcher ansible.builtin.copy: dest: /usr/local/share/applications/typora.desktop mode: "0644" content: | [Desktop Entry] Type=Application Name=Typora Comment=Markdown editor Exec=/usr/local/bin/typora %F Terminal=false Categories=Office;WordProcessor;TextEditor; MimeType=text/markdown;text/x-markdown;