Skip to content

Commit 4dbca44

Browse files
author
Derek
committed
fix: GNOME extensions use gext for all platforms, maclike overrides winlike
- Install all GNOME extensions via gext (not DNF/APT packages) - Add glib-compile-schemas after each extension install - Remove Ubuntu-only restrictions from extension installs - Add panel-lengths and panel-anchors dconf settings for full-width taskbar - Fix install.sh: maclike now overrides winlike when both specified - Update install.sh docs to reflect correct priority
1 parent 095d142 commit 4dbca44

5 files changed

Lines changed: 72 additions & 31 deletions

File tree

ansible/roles/dfe_developer/files/dconf-dfe-defaults-winlike

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ show-swap=false
2727
# Panel position (all monitors)
2828
panel-positions='{"0":"BOTTOM"}'
2929
panel-sizes='{"0":48}'
30+
# CRITICAL: Full-width panel (100%) - without this, it shows as centered dock
31+
panel-lengths='{"0":100}'
32+
panel-anchors='{"0":"MIDDLE"}'
3033
# Panel element positions - Show Apps button on left like Windows Start
3134
panel-element-positions='{"0":[{"element":"showAppsButton","visible":true,"position":"stackedTL"},{"element":"activitiesButton","visible":false,"position":"stackedTL"},{"element":"leftBox","visible":true,"position":"stackedTL"},{"element":"taskbar","visible":true,"position":"stackedTL"},{"element":"centerBox","visible":true,"position":"stackedBR"},{"element":"rightBox","visible":true,"position":"stackedBR"},{"element":"dateMenu","visible":true,"position":"stackedBR"},{"element":"systemMenu","visible":true,"position":"stackedBR"},{"element":"desktopButton","visible":true,"position":"stackedBR"}]}'
3235
# Panel behavior

ansible/roles/dfe_developer/tasks/gnome_common.yml

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,21 @@
3131
state: present
3232
when: ansible_distribution == 'Ubuntu'
3333

34+
- name: Install GNOME extension prerequisites (Fedora)
35+
ansible.builtin.dnf:
36+
name:
37+
- gnome-shell-extension-common # Base extension infrastructure
38+
- gnome-extensions-app # GUI for managing extensions
39+
- pipx # Isolated Python apps
40+
state: present
41+
when: ansible_distribution == 'Fedora'
42+
3443
- name: Ensure pipx path is configured
3544
ansible.builtin.command:
3645
cmd: pipx ensurepath
3746
become: false
3847
changed_when: false
39-
when: ansible_distribution == 'Ubuntu'
48+
when: ansible_distribution in ['Ubuntu', 'Fedora']
4049

4150
- name: Install gnome-extensions-cli via pipx
4251
community.general.pipx:
@@ -48,10 +57,10 @@
4857
environment:
4958
PIPX_HOME: "{{ dfe_user_home }}/.local/pipx"
5059
PIPX_BIN_DIR: "{{ dfe_user_home }}/.local/bin"
51-
when: ansible_distribution == 'Ubuntu'
60+
when: ansible_distribution in ['Ubuntu', 'Fedora']
5261

5362
# ============================================================================
54-
# INSTALL SYSTEM MONITOR EXTENSION (common to both styles)
63+
# INSTALL SYSTEM MONITOR EXTENSION (from extensions.gnome.org via gext)
5564
# ============================================================================
5665

5766
- name: Install System Monitor extension via gext
@@ -64,7 +73,14 @@
6473
failed_when:
6574
- system_monitor_install.rc != 0
6675
- "'already installed' not in system_monitor_install.stdout"
67-
when: ansible_distribution == 'Ubuntu'
76+
77+
- name: Compile System Monitor schemas
78+
ansible.builtin.command:
79+
cmd: glib-compile-schemas {{ dfe_user_home }}/.local/share/gnome-shell/extensions/system-monitor@gnome-shell-extensions.gcampax.github.com/schemas/
80+
become: true
81+
become_user: "{{ dfe_actual_user }}"
82+
changed_when: false
83+
failed_when: false
6884

6985
# ============================================================================
7086
# COMMON DCONF SETTINGS

ansible/roles/dfe_developer/tasks/gnome_maclike.yml

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@
1616
ansible.builtin.include_tasks: gnome_common.yml
1717

1818
# ============================================================================
19-
# INSTALL MACOS-LIKE EXTENSIONS
19+
# INSTALL MACOS-LIKE EXTENSIONS (from extensions.gnome.org via gext)
2020
# ============================================================================
2121

22-
- name: Install Dash to Dock extension
22+
- name: Install Dash to Dock extension via gext
2323
ansible.builtin.command:
2424
cmd: "{{ dfe_user_home }}/.local/bin/gext -F install dash-to-dock@micxgx.gmail.com"
2525
become: true
@@ -29,9 +29,16 @@
2929
failed_when:
3030
- dash_to_dock_install.rc != 0
3131
- "'already installed' not in dash_to_dock_install.stdout"
32-
when: ansible_distribution == 'Ubuntu'
3332

34-
- name: Install Logo Menu extension
33+
- name: Compile Dash to Dock schemas
34+
ansible.builtin.command:
35+
cmd: glib-compile-schemas {{ dfe_user_home }}/.local/share/gnome-shell/extensions/dash-to-dock@micxgx.gmail.com/schemas/
36+
become: true
37+
become_user: "{{ dfe_actual_user }}"
38+
changed_when: false
39+
failed_when: false
40+
41+
- name: Install Logo Menu extension via gext
3542
ansible.builtin.command:
3643
cmd: "{{ dfe_user_home }}/.local/bin/gext -F install logomenu@aryan_k"
3744
become: true
@@ -41,9 +48,8 @@
4148
failed_when:
4249
- logo_menu_install.rc != 0
4350
- "'already installed' not in logo_menu_install.stdout"
44-
when: ansible_distribution == 'Ubuntu'
4551

46-
- name: Install Compiz Magic Lamp effect extension
52+
- name: Install Compiz Magic Lamp effect extension via gext
4753
ansible.builtin.command:
4854
cmd: "{{ dfe_user_home }}/.local/bin/gext -F install compiz-alike-magic-lamp-effect@hermes83.github.com"
4955
become: true
@@ -53,7 +59,6 @@
5359
failed_when:
5460
- magic_lamp_install.rc != 0
5561
- "'already installed' not in magic_lamp_install.stdout"
56-
when: ansible_distribution == 'Ubuntu'
5762

5863
# ============================================================================
5964
# ENABLE EXTENSIONS VIA DCONF
@@ -65,15 +70,13 @@
6570
value: "['system-monitor@gnome-shell-extensions.gcampax.github.com', 'dash-to-dock@micxgx.gmail.com', 'logomenu@aryan_k', 'compiz-alike-magic-lamp-effect@hermes83.github.com']"
6671
state: present
6772
become: false
68-
when: ansible_distribution == 'Ubuntu'
6973

7074
- name: Disable conflicting extensions
7175
community.general.dconf:
7276
key: "/org/gnome/shell/disabled-extensions"
7377
value: "['ubuntu-dock@ubuntu.com', 'workspace-indicator@gnome-shell-extensions.gcampax.github.com', 'apps-menu@gnome-shell-extensions.gcampax.github.com']"
7478
state: present
7579
become: false
76-
when: ansible_distribution == 'Ubuntu'
7780

7881
# ============================================================================
7982
# CONFIGURE DASH TO DOCK (macOS-style)
@@ -85,71 +88,62 @@
8588
value: "'BOTTOM'"
8689
state: present
8790
become: false
88-
when: ansible_distribution == 'Ubuntu'
8991

9092
- name: Configure Dash to Dock - intelligent auto-hide
9193
community.general.dconf:
9294
key: "/org/gnome/shell/extensions/dash-to-dock/intellihide"
9395
value: "true"
9496
state: present
9597
become: false
96-
when: ansible_distribution == 'Ubuntu'
9798

9899
- name: Configure Dash to Dock - enable auto-hide
99100
community.general.dconf:
100101
key: "/org/gnome/shell/extensions/dash-to-dock/autohide"
101102
value: "true"
102103
state: present
103104
become: false
104-
when: ansible_distribution == 'Ubuntu'
105105

106106
- name: Configure Dash to Dock - click to minimize
107107
community.general.dconf:
108108
key: "/org/gnome/shell/extensions/dash-to-dock/click-action"
109109
value: "'minimize'"
110110
state: present
111111
become: false
112-
when: ansible_distribution == 'Ubuntu'
113112

114113
- name: Configure Dash to Dock - icon size
115114
community.general.dconf:
116115
key: "/org/gnome/shell/extensions/dash-to-dock/dash-max-icon-size"
117116
value: "48"
118117
state: present
119118
become: false
120-
when: ansible_distribution == 'Ubuntu'
121119

122120
- name: Configure Dash to Dock - running indicator style
123121
community.general.dconf:
124122
key: "/org/gnome/shell/extensions/dash-to-dock/running-indicator-style"
125123
value: "'DOTS'"
126124
state: present
127125
become: false
128-
when: ansible_distribution == 'Ubuntu'
129126

130127
- name: Configure Dash to Dock - show window previews
131128
community.general.dconf:
132129
key: "/org/gnome/shell/extensions/dash-to-dock/show-windows-preview"
133130
value: "true"
134131
state: present
135132
become: false
136-
when: ansible_distribution == 'Ubuntu'
137133

138134
- name: Configure Dash to Dock - hide trash
139135
community.general.dconf:
140136
key: "/org/gnome/shell/extensions/dash-to-dock/show-trash"
141137
value: "false"
142138
state: present
143139
become: false
144-
when: ansible_distribution == 'Ubuntu'
145140

146141
- name: Configure Dash to Dock - hide mounts
147142
community.general.dconf:
148143
key: "/org/gnome/shell/extensions/dash-to-dock/show-mounts"
149144
value: "false"
150145
state: present
151146
become: false
152-
when: ansible_distribution == 'Ubuntu'
153147

154148
# ============================================================================
155149
# CONFIGURE LOGO MENU (macOS-style Apple menu)
@@ -161,7 +155,6 @@
161155
value: "false"
162156
state: present
163157
become: false
164-
when: ansible_distribution == 'Ubuntu'
165158

166159
# ============================================================================
167160
# CONFIGURE MAGIC LAMP EFFECT
@@ -173,7 +166,6 @@
173166
value: "200"
174167
state: present
175168
become: false
176-
when: ansible_distribution == 'Ubuntu'
177169

178170
# ============================================================================
179171
# WALLPAPER DEPLOYMENT (system-wide, safe from apt/dnf updates)
@@ -223,4 +215,4 @@
223215
become_user: "{{ dfe_actual_user }}"
224216
changed_when: false
225217
failed_when: false
226-
when: ansible_distribution == 'Ubuntu'
218+
when: ansible_distribution in ['Ubuntu', 'Fedora']

ansible/roles/dfe_developer/tasks/gnome_winlike.yml

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,10 @@
2626
when: ansible_distribution == 'Ubuntu'
2727

2828
# ============================================================================
29-
# INSTALL DASH TO PANEL (from extensions.gnome.org)
29+
# INSTALL DASH TO PANEL (from extensions.gnome.org via gext)
3030
# ============================================================================
3131

32-
- name: Install Dash to Panel extension
32+
- name: Install Dash to Panel extension via gext
3333
ansible.builtin.command:
3434
cmd: "{{ dfe_user_home }}/.local/bin/gext -F install dash-to-panel@jderose9.github.com"
3535
become: true
@@ -39,7 +39,14 @@
3939
failed_when:
4040
- dash_to_panel_install.rc != 0
4141
- "'already installed' not in dash_to_panel_install.stdout"
42-
when: ansible_distribution == 'Ubuntu'
42+
43+
- name: Compile Dash to Panel schemas
44+
ansible.builtin.command:
45+
cmd: glib-compile-schemas {{ dfe_user_home }}/.local/share/gnome-shell/extensions/dash-to-panel@jderose9.github.com/schemas/
46+
become: true
47+
become_user: "{{ dfe_actual_user }}"
48+
changed_when: false
49+
failed_when: false
4350

4451
# ============================================================================
4552
# ENABLE EXTENSIONS VIA DCONF
@@ -77,6 +84,20 @@
7784
state: present
7885
become: false
7986

87+
- name: Configure Dash to Panel - full width panel (100%)
88+
community.general.dconf:
89+
key: "/org/gnome/shell/extensions/dash-to-panel/panel-lengths"
90+
value: "'{\"0\":100}'"
91+
state: present
92+
become: false
93+
94+
- name: Configure Dash to Panel - panel anchor middle
95+
community.general.dconf:
96+
key: "/org/gnome/shell/extensions/dash-to-panel/panel-anchors"
97+
value: "'{\"0\":\"MIDDLE\"}'"
98+
state: present
99+
become: false
100+
80101
- name: Configure Dash to Panel - disable intellihide
81102
community.general.dconf:
82103
key: "/org/gnome/shell/extensions/dash-to-panel/intellihide"

install.sh

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,8 @@ EXAMPLES:
101101
Install everything except wallpaper:
102102
./install.sh --all --tags-exclude wallpaper
103103
104-
Install everything with macOS-style (note: winlike takes precedence in --all):
105-
./install.sh --tags developer,base,core,advanced,vm,optimizer,rdp,maclike
104+
Install everything with macOS-style (maclike overrides winlike):
105+
./install.sh --all --tags maclike
106106
107107
Install RDP support for remote desktop access:
108108
./install.sh --tags developer,base,rdp
@@ -111,7 +111,7 @@ EXAMPLES:
111111
./install.sh --check
112112
113113
NOTES:
114-
- If both winlike and maclike are included, winlike takes precedence
114+
- If both winlike and maclike are included, maclike takes precedence
115115
- RDP configures GNOME Remote Desktop with default credentials (dfe/dfe)
116116
- ghostty, fastestmirror, and wallpaper are included by default
117117
- Use --tags-exclude to disable default features without specifying all tags
@@ -172,6 +172,15 @@ while [[ $# -gt 0 ]]; do
172172
esac
173173
done
174174

175+
# Handle maclike/winlike priority: maclike overrides winlike
176+
# If both are specified, remove winlike from tags
177+
if [[ "$ANSIBLE_TAGS" == *"maclike"* ]] && [[ "$ANSIBLE_TAGS" == *"winlike"* ]]; then
178+
print_info "Both maclike and winlike specified - using maclike (maclike takes precedence)"
179+
ANSIBLE_TAGS="${ANSIBLE_TAGS//,winlike/}"
180+
ANSIBLE_TAGS="${ANSIBLE_TAGS//winlike,/}"
181+
ANSIBLE_TAGS="${ANSIBLE_TAGS//winlike/}"
182+
fi
183+
175184
# Detect operating system
176185
print_info "Detecting operating system..."
177186

0 commit comments

Comments
 (0)