Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ flowchart TD
| `packer` | HashiCorp Packer from HashiCorp's repo or tap. Opt-in, in no persona |
| `contributor` | hyperi-ci + its check tools (semgrep, alint), gitleaks, trivy, hadolint, pip-audit, yamllint, ansible-lint, pre-commit, act, git-scrub, macbash |
| `soe` / `soe-gui` | HyperI org policy (opt-in) |
| `wallpaper` | HyperI wallpaper only, from `soe-gui`: set as the desktop background and listed in the GNOME Settings picker |
| `--full-stack` / `--infra` / `--languages [list]` | Persona bundles (see `--help`) |
| `winlike` / `maclike` | GNOME taskbar (winlike) or dock (maclike), winlike wins if both |
| `rdp-server` | GNOME Remote Login on port 3389 (inbound). NOT Desktop Sharing -- see the note below the table |
Expand Down
58 changes: 0 additions & 58 deletions ansible/roles/soe-gui/tasks/gnome.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
# - ui-mode utility deployment
# - Mode application (via ui-mode script)
# - System-wide dconf defaults
# - Wallpaper deployment
# - Font installation

# ============================================================================
Expand Down Expand Up @@ -658,63 +657,6 @@
- ansible_facts['distribution'] in ['Ubuntu', 'Fedora']
- gnome_shell_running.rc != 0

# ============================================================================
# WALLPAPER DEPLOYMENT (system-wide, safe from apt/dnf updates)
# ============================================================================
# Controlled by branding_enabled and background_file variables

- name: Deploy custom wallpaper
tags: ['winlike', 'maclike', 'never']
when:
- has_gnome | default(false)
- ansible_facts['distribution'] in ['Ubuntu', 'Fedora']
- branding_enabled | default(true)
- background_file | default('') | length > 0
block:
- name: Create local backgrounds directory (safe from package updates)
ansible.builtin.file:
path: /usr/local/share/backgrounds
state: directory
mode: '0755'

- name: Deploy background image
ansible.builtin.copy:
src: "{{ background_file }}"
dest: /usr/local/share/backgrounds/desktop-background.svg
mode: '0644'

- name: Set background as default (light mode)
community.general.dconf:
key: "/org/gnome/desktop/background/picture-uri"
value: "'file:///usr/local/share/backgrounds/desktop-background.svg'"
state: present
become: true
become_user: "{{ actual_user }}"

- name: Set background as default (dark mode)
community.general.dconf:
key: "/org/gnome/desktop/background/picture-uri-dark"
value: "'file:///usr/local/share/backgrounds/desktop-background.svg'"
state: present
become: true
become_user: "{{ actual_user }}"

- name: Set background scaling mode
community.general.dconf:
key: "/org/gnome/desktop/background/picture-options"
value: "'zoom'"
state: present
become: true
become_user: "{{ actual_user }}"

rescue:
- name: Record that the wallpaper was not deployed
ansible.builtin.set_fact:
deploy_warnings: >-
{{ deploy_warnings | default([])
+ ['Wallpaper: ' ~ (ansible_failed_task.name | default('unknown task'))
~ ' -- ' ~ (ansible_failed_result.msg | default('no message'))] }}

# ============================================================================
# UPDATE ALL EXTENSIONS TO LATEST
# ============================================================================
Expand Down
14 changes: 14 additions & 0 deletions ansible/roles/soe-gui/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,20 @@
- has_gnome | default(false)
- "'winlike' in ansible_run_tags or 'maclike' in ansible_run_tags"

# The wallpaper is the same in either UI mode, so winlike/maclike may union
# onto its tasks, unlike gnome.yml above.
- name: Deploy the HyperI wallpaper
ansible.builtin.include_tasks:
file: wallpaper.yml
apply:
tags: ['soe-gui', 'wallpaper', 'winlike', 'maclike']
tags: ['soe-gui', 'wallpaper', 'winlike', 'maclike']
when:
- ansible_facts['distribution'] in ['Fedora', 'Ubuntu']
- has_gnome | default(false)
- branding_enabled | default(true)
- background_file | default('') | length > 0

- name: Install Slack
ansible.builtin.include_tasks:
file: slack.yml
Expand Down
73 changes: 73 additions & 0 deletions ansible/roles/soe-gui/tasks/wallpaper.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
---
# HyperI desktop wallpaper: system-wide image, GNOME picker entry, and the
# desktop user's background. Controlled by branding_enabled and background_file.

- name: Deploy custom wallpaper
block:
- name: Create the backgrounds and wallpaper-list directories
ansible.builtin.file:
path: "{{ item }}"
state: directory
mode: '0755'
loop:
- /usr/local/share/backgrounds
- /usr/share/gnome-background-properties

- name: Deploy background image
ansible.builtin.copy:
src: "{{ background_file }}"
dest: /usr/local/share/backgrounds/desktop-background.svg
mode: '0644'

# Settings > Appearance builds its system background list from this directory,
# so the wallpaper stays selectable after a user picks another one.
- name: List the background in the GNOME wallpaper picker
ansible.builtin.copy:
dest: /usr/share/gnome-background-properties/hyperi-wallpapers.xml
mode: '0644'
content: |
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE wallpapers SYSTEM "gnome-wp-list.dtd">
<wallpapers>
<wallpaper deleted="false">
<name>HyperI</name>
<filename>/usr/local/share/backgrounds/desktop-background.svg</filename>
<filename-dark>/usr/local/share/backgrounds/desktop-background.svg</filename-dark>
<options>zoom</options>
<shade_type>solid</shade_type>
<pcolor>#000647</pcolor>
<scolor>#000647</scolor>
</wallpaper>
</wallpapers>

- name: Set background as default (light mode)
community.general.dconf:
key: "/org/gnome/desktop/background/picture-uri"
value: "'file:///usr/local/share/backgrounds/desktop-background.svg'"
state: present
become: true
become_user: "{{ actual_user }}"

- name: Set background as default (dark mode)
community.general.dconf:
key: "/org/gnome/desktop/background/picture-uri-dark"
value: "'file:///usr/local/share/backgrounds/desktop-background.svg'"
state: present
become: true
become_user: "{{ actual_user }}"

- name: Set background scaling mode
community.general.dconf:
key: "/org/gnome/desktop/background/picture-options"
value: "'zoom'"
state: present
become: true
become_user: "{{ actual_user }}"

rescue:
- name: Record that the wallpaper was not deployed
ansible.builtin.set_fact:
deploy_warnings: >-
{{ deploy_warnings | default([])
+ ['Wallpaper: ' ~ (ansible_failed_task.name | default('unknown task'))
~ ' -- ' ~ (ansible_failed_result.msg | default('no message'))] }}
1 change: 1 addition & 0 deletions install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,7 @@ HyperI SOE (soe, soe-gui) - org policy, includes everything above:
nemo Nemo file manager (replaces Nautilus)
desktop-cleanup Hide duplicate apps, dedupe Flatpak/apt
gnome-extensions GNOME extensions (winlike / maclike)
wallpaper HyperI wallpaper, set and listed in the GNOME picker

AI coding agents (developer-ai) - opt-in; ai is the group tag for both:
codex OpenAI Codex CLI - the second opinion, not the driver
Expand Down
Loading