Skip to content

Commit 0be8287

Browse files
author
Derek
committed
fix: Add Betterbird, Brave browser, desktop environment setup, and psutil dependency
- Add Betterbird email client via flatpak (system-wide) to core role - Add Brave browser installation via official repos (Fedora/Ubuntu/macOS) - Add desktop.yml to ensure minimal GNOME + LibreOffice + graphical target - Add psutil dependency to wallpaper.yml for dconf module - Refactor GNOME extensions to use gnome_common.yml shared tasks - Add VSCode Wayland configuration tools
1 parent 148d671 commit 0be8287

12 files changed

Lines changed: 1143 additions & 332 deletions

File tree

ansible/roles/dfe_developer/files/ui-mode

Lines changed: 719 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
---
2+
# Brave Browser installation (via official repos for auto-updates)
3+
4+
# ============================================================================
5+
# FEDORA - Add Brave repository and install
6+
# ============================================================================
7+
8+
- name: Install Brave Browser (Fedora)
9+
block:
10+
- name: Add Brave Browser repository
11+
ansible.builtin.yum_repository:
12+
name: brave-browser
13+
description: Brave Browser
14+
baseurl: https://brave-browser-rpm-release.s3.brave.com/x86_64/
15+
enabled: true
16+
gpgcheck: true
17+
gpgkey: https://brave-browser-rpm-release.s3.brave.com/brave-core.asc
18+
19+
- name: Install Brave Browser
20+
ansible.builtin.dnf:
21+
name: brave-browser
22+
state: present
23+
24+
when: ansible_distribution == 'Fedora'
25+
26+
# ============================================================================
27+
# UBUNTU - Add Brave repository and install
28+
# ============================================================================
29+
30+
- name: Install Brave Browser (Ubuntu)
31+
block:
32+
- name: Add Brave Browser GPG key
33+
ansible.builtin.get_url:
34+
url: https://brave-browser-apt-release.s3.brave.com/brave-browser-archive-keyring.gpg
35+
dest: /etc/apt/keyrings/brave-browser-archive-keyring.gpg
36+
mode: '0644'
37+
38+
- name: Add Brave Browser repository
39+
ansible.builtin.copy:
40+
content: |
41+
# Managed by DFE Developer Ansible - DO NOT EDIT
42+
deb [arch=amd64 signed-by=/etc/apt/keyrings/brave-browser-archive-keyring.gpg] https://brave-browser-apt-release.s3.brave.com/ stable main
43+
dest: /etc/apt/sources.list.d/brave-browser-release.list
44+
mode: '0644'
45+
46+
- name: Install Brave Browser
47+
ansible.builtin.apt:
48+
name: brave-browser
49+
state: present
50+
update_cache: true
51+
52+
when: ansible_distribution == 'Ubuntu'
53+
54+
# ============================================================================
55+
# macOS - Install via Homebrew cask
56+
# ============================================================================
57+
58+
- name: Install Brave Browser (macOS)
59+
community.general.homebrew_cask:
60+
name: brave-browser
61+
state: present
62+
become: false
63+
environment: "{{ homebrew_cask_env }}"
64+
when: ansible_distribution == 'MacOSX'
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
---
2+
# Ensure minimal GNOME desktop environment is installed (Linux only)
3+
# Idempotent - does nothing if full desktop already present
4+
5+
# ============================================================================
6+
# FEDORA
7+
# ============================================================================
8+
9+
- name: Install GNOME desktop (Fedora)
10+
ansible.builtin.dnf:
11+
name: '@gnome-desktop'
12+
state: present
13+
when: ansible_distribution == 'Fedora'
14+
15+
- name: Install LibreOffice (Fedora)
16+
ansible.builtin.dnf:
17+
name: '@libreoffice'
18+
state: present
19+
when: ansible_distribution == 'Fedora'
20+
21+
- name: Set default target to graphical (Fedora)
22+
ansible.builtin.command:
23+
cmd: systemctl set-default graphical.target
24+
changed_when: true
25+
when: ansible_distribution == 'Fedora'
26+
27+
# ============================================================================
28+
# UBUNTU
29+
# ============================================================================
30+
31+
- name: Install GNOME desktop (Ubuntu)
32+
ansible.builtin.apt:
33+
name: ubuntu-desktop-minimal
34+
state: present
35+
when: ansible_distribution == 'Ubuntu'
36+
37+
- name: Install LibreOffice (Ubuntu)
38+
ansible.builtin.apt:
39+
name: libreoffice
40+
state: present
41+
when: ansible_distribution == 'Ubuntu'
42+
43+
- name: Set default target to graphical (Ubuntu)
44+
ansible.builtin.command:
45+
cmd: systemctl set-default graphical.target
46+
changed_when: true
47+
when: ansible_distribution == 'Ubuntu'

ansible/roles/dfe_developer/tasks/gnome_common.yml

Lines changed: 94 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
---
22
# Common GNOME Shell extension prerequisites and utilities
3-
# Installs gnome-extensions-cli (gext) for managing extensions from extensions.gnome.org
3+
# Installs gnome-extensions-cli (gext) and ALL UI mode extensions
44
#
55
# This file is included by gnome_winlike.yml and gnome_maclike.yml
6+
# All extensions are installed here; mode-specific tasks only enable/configure them
67

78
# ============================================================================
89
# PREREQUISITES
@@ -60,9 +61,24 @@
6061
when: ansible_distribution in ['Ubuntu', 'Fedora']
6162

6263
# ============================================================================
63-
# INSTALL SYSTEM MONITOR EXTENSION (from extensions.gnome.org via gext)
64+
# DEPLOY UI-MODE UTILITY
6465
# ============================================================================
6566

67+
- name: Deploy ui-mode utility to /usr/local/sbin
68+
ansible.builtin.copy:
69+
src: ui-mode
70+
dest: /usr/local/sbin/ui-mode
71+
mode: '0755'
72+
owner: root
73+
group: root
74+
when: ansible_distribution in ['Ubuntu', 'Fedora']
75+
76+
# ============================================================================
77+
# INSTALL ALL EXTENSIONS (for both winlike and maclike modes)
78+
# Extensions are installed here; mode-specific tasks enable/configure them
79+
# ============================================================================
80+
81+
# Common extension: System Monitor
6682
- name: Install System Monitor extension via gext
6783
ansible.builtin.command:
6884
cmd: "{{ dfe_user_home }}/.local/bin/gext -F install system-monitor@gnome-shell-extensions.gcampax.github.com"
@@ -82,6 +98,82 @@
8298
changed_when: false
8399
failed_when: false
84100

101+
# Common extension: Window State Manager (used by both modes)
102+
- name: Install Window State Manager extension via gext
103+
ansible.builtin.command:
104+
cmd: "{{ dfe_user_home }}/.local/bin/gext -F install window-state-manager@kishorv06.github.io"
105+
become: true
106+
become_user: "{{ dfe_actual_user }}"
107+
register: window_state_install
108+
changed_when: "'already installed' not in window_state_install.stdout"
109+
failed_when:
110+
- window_state_install.rc != 0
111+
- "'already installed' not in window_state_install.stdout"
112+
113+
# Winlike extension: Dash to Panel
114+
- name: Install Dash to Panel extension via gext
115+
ansible.builtin.command:
116+
cmd: "{{ dfe_user_home }}/.local/bin/gext -F install dash-to-panel@jderose9.github.com"
117+
become: true
118+
become_user: "{{ dfe_actual_user }}"
119+
register: dash_to_panel_install
120+
changed_when: "'already installed' not in dash_to_panel_install.stdout"
121+
failed_when:
122+
- dash_to_panel_install.rc != 0
123+
- "'already installed' not in dash_to_panel_install.stdout"
124+
125+
- name: Compile Dash to Panel schemas
126+
ansible.builtin.command:
127+
cmd: glib-compile-schemas {{ dfe_user_home }}/.local/share/gnome-shell/extensions/dash-to-panel@jderose9.github.com/schemas/
128+
become: true
129+
become_user: "{{ dfe_actual_user }}"
130+
changed_when: false
131+
failed_when: false
132+
133+
# Maclike extension: Dash to Dock
134+
- name: Install Dash to Dock extension via gext
135+
ansible.builtin.command:
136+
cmd: "{{ dfe_user_home }}/.local/bin/gext -F install dash-to-dock@micxgx.gmail.com"
137+
become: true
138+
become_user: "{{ dfe_actual_user }}"
139+
register: dash_to_dock_install
140+
changed_when: "'already installed' not in dash_to_dock_install.stdout"
141+
failed_when:
142+
- dash_to_dock_install.rc != 0
143+
- "'already installed' not in dash_to_dock_install.stdout"
144+
145+
- name: Compile Dash to Dock schemas
146+
ansible.builtin.command:
147+
cmd: glib-compile-schemas {{ dfe_user_home }}/.local/share/gnome-shell/extensions/dash-to-dock@micxgx.gmail.com/schemas/
148+
become: true
149+
become_user: "{{ dfe_actual_user }}"
150+
changed_when: false
151+
failed_when: false
152+
153+
# Maclike extension: Logo Menu
154+
- name: Install Logo Menu extension via gext
155+
ansible.builtin.command:
156+
cmd: "{{ dfe_user_home }}/.local/bin/gext -F install logomenu@aryan_k"
157+
become: true
158+
become_user: "{{ dfe_actual_user }}"
159+
register: logo_menu_install
160+
changed_when: "'already installed' not in logo_menu_install.stdout"
161+
failed_when:
162+
- logo_menu_install.rc != 0
163+
- "'already installed' not in logo_menu_install.stdout"
164+
165+
# Maclike extension: Magic Lamp effect
166+
- name: Install Compiz Magic Lamp effect extension via gext
167+
ansible.builtin.command:
168+
cmd: "{{ dfe_user_home }}/.local/bin/gext -F install compiz-alike-magic-lamp-effect@hermes83.github.com"
169+
become: true
170+
become_user: "{{ dfe_actual_user }}"
171+
register: magic_lamp_install
172+
changed_when: "'already installed' not in magic_lamp_install.stdout"
173+
failed_when:
174+
- magic_lamp_install.rc != 0
175+
- "'already installed' not in magic_lamp_install.stdout"
176+
85177
# ============================================================================
86178
# COMMON DCONF SETTINGS
87179
# ============================================================================

0 commit comments

Comments
 (0)