--- - name: Install Vicinae block: - name: Set Vicinae version ansible.builtin.set_fact: vicinae_version: "v0.15.6" vicinae_appimage_commit: "13865b4c5" - name: Set architecture-specific variables ansible.builtin.set_fact: vicinae_arch: "{{ 'x86_64' if ansible_architecture == 'x86_64' else ansible_architecture }}" - name: Ensure /opt/vicinae directory exists ansible.builtin.file: path: "/opt/vicinae" state: directory mode: "0755" become: true - name: Download Vicinae AppImage ansible.builtin.get_url: url: "https://github.com/vicinaehq/vicinae/releases/download/{{ vicinae_version }}/Vicinae-{{ vicinae_appimage_commit }}-{{ vicinae_arch }}.AppImage" dest: "/opt/vicinae/vicinae.AppImage" mode: "0755" become: true - name: Remove old Vicinae binary if exists ansible.builtin.file: path: "/usr/local/bin/vicinae" state: absent become: true - name: Create symlink to Vicinae AppImage ansible.builtin.file: src: "/opt/vicinae/vicinae.AppImage" dest: "/usr/local/bin/vicinae" state: link become: true - name: Create temporary directory for Vicinae assets download ansible.builtin.tempfile: state: directory suffix: vicinae register: vicinae_temp_dir - name: Download Vicinae tarball for assets ansible.builtin.get_url: url: "https://github.com/vicinaehq/vicinae/releases/download/{{ vicinae_version }}/vicinae-linux-{{ vicinae_arch }}-{{ vicinae_version }}.tar.gz" dest: "{{ vicinae_temp_dir.path }}/vicinae.tar.gz" mode: "0644" - name: Extract Vicinae tarball ansible.builtin.unarchive: src: "{{ vicinae_temp_dir.path }}/vicinae.tar.gz" dest: "{{ vicinae_temp_dir.path }}" remote_src: true - name: Ensure systemd user directory exists ansible.builtin.file: path: "/usr/lib/systemd/user" state: directory mode: "0755" become: true - name: Copy systemd user service ansible.builtin.copy: src: "{{ vicinae_temp_dir.path }}/lib/systemd/user/vicinae.service" dest: "/usr/lib/systemd/user/vicinae.service" mode: "0644" remote_src: true become: true - name: Update systemd service to use AppImage ansible.builtin.replace: path: "/usr/lib/systemd/user/vicinae.service" regexp: "ExecStart=.*" replace: "ExecStart=/usr/local/bin/vicinae" become: true - name: Ensure applications directory exists ansible.builtin.file: path: "/usr/share/applications" state: directory mode: "0755" become: true - name: Copy desktop files ansible.builtin.copy: src: "{{ vicinae_temp_dir.path }}/share/applications/{{ item }}" dest: "/usr/share/applications/{{ item }}" mode: "0644" remote_src: true become: true loop: - vicinae.desktop - vicinae-url-handler.desktop - name: Update desktop files to use AppImage ansible.builtin.replace: path: "/usr/share/applications/{{ item }}" regexp: "Exec=.*vicinae" replace: "Exec=/usr/local/bin/vicinae" become: true loop: - vicinae.desktop - vicinae-url-handler.desktop - name: Ensure Vicinae share directory exists ansible.builtin.file: path: "/usr/share/vicinae" state: directory mode: "0755" become: true - name: Copy Vicinae themes directory ansible.builtin.copy: src: "{{ vicinae_temp_dir.path }}/share/vicinae/themes/" dest: "/usr/share/vicinae/themes/" mode: "0644" remote_src: true become: true - name: Ensure hicolor icons directory exists ansible.builtin.file: path: "/usr/share/icons/hicolor/512x512/apps" state: directory mode: "0755" become: true - name: Copy Vicinae icon ansible.builtin.copy: src: "{{ vicinae_temp_dir.path }}/share/icons/hicolor/512x512/apps/vicinae.png" dest: "/usr/share/icons/hicolor/512x512/apps/vicinae.png" mode: "0644" remote_src: true become: true - name: Update desktop database ansible.builtin.command: cmd: update-desktop-database /usr/share/applications become: true changed_when: false - name: Update icon cache ansible.builtin.command: cmd: gtk-update-icon-cache /usr/share/icons/hicolor become: true changed_when: false failed_when: false - name: Clean up temporary directory ansible.builtin.file: path: "{{ vicinae_temp_dir.path }}" state: absent - name: Verify Vicinae installation ansible.builtin.command: cmd: /usr/local/bin/vicinae --version register: vicinae_version_check changed_when: false failed_when: false - name: Display installation result ansible.builtin.debug: msg: | {% if vicinae_version_check.rc == 0 %} ✓ Vicinae AppImage installed successfully with all themes and assets! Version: {{ vicinae_version_check.stdout }} {% else %} ✗ Vicinae installation completed but version check failed. This may be normal if --version flag is not supported. Try running: vicinae {% endif %} tags: - vicinae