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
66 changes: 37 additions & 29 deletions data/po/pt_BR.po
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: aurora-shell\n"
"Report-Msgid-Bugs-To: https://github.com/luminusOS/aurora-shell/issues\n"
"POT-Creation-Date: 2026-08-19 22:54-0300\n"
"POT-Creation-Date: 2026-08-30 09:40-0300\n"
"PO-Revision-Date: 2026-07-16 09:20-0300\n"
"Last-Translator: Aurora Shell Contributors\n"
"Language-Team: Portuguese (Brazil)\n"
Expand Down Expand Up @@ -361,10 +361,18 @@ msgid "Keep the dock visible until a window overlaps it"
msgstr "Mantém o dock visível até que uma janela sobreponha seu espaço"

#: dist/dock/dock.manifest.js:25
msgid "Show Dock in Overview"
msgstr "Mostrar dock na visão geral"

#: dist/dock/dock.manifest.js:26
msgid "Keep the dock visible in the window picker and app grid"
msgstr "Manter o dock visível no seletor de janelas e na grade de aplicativos"

#: dist/dock/dock.manifest.js:31
msgid "Show Dock on All Monitors"
msgstr "Mostrar dock em todos os monitores"

#: dist/dock/dock.manifest.js:27
#: dist/dock/dock.manifest.js:33
msgid ""
"Create a separate dock on each monitor with a free edge in the dock "
"direction; otherwise, the primary dock shows all workspace apps"
Expand All @@ -373,91 +381,91 @@ msgstr ""
"caso contrário, o dock principal mostra todos os aplicativos do espaço de "
"trabalho"

#: dist/dock/dock.manifest.js:33
#: dist/dock/dock.manifest.js:39
msgid "Dock Position"
msgstr "Posição do dock"

#: dist/dock/dock.manifest.js:34
#: dist/dock/dock.manifest.js:40
msgid "Screen edge where the dock appears"
msgstr "Borda da tela onde o dock aparece"

#: dist/dock/dock.manifest.js:37
#: dist/dock/dock.manifest.js:43
msgid "Bottom"
msgstr "Inferior"

#: dist/dock/dock.manifest.js:38
#: dist/dock/dock.manifest.js:44
msgid "Left"
msgstr "Esquerda"

#: dist/dock/dock.manifest.js:39
#: dist/dock/dock.manifest.js:45
msgid "Right"
msgstr "Direita"

#: dist/dock/dock.manifest.js:44
#: dist/dock/dock.manifest.js:50
msgid "Maximum Icon Size"
msgstr "Tamanho máximo dos ícones"

#: dist/dock/dock.manifest.js:46
#: dist/dock/dock.manifest.js:52
msgid ""
"Maximum dock icon size in pixels (16–64); shrinks automatically when needed"
msgstr ""
"Tamanho máximo dos ícones da dock em pixels (16–64); reduz automaticamente "
"quando necessário"

#: dist/dock/dock.manifest.js:55
#: dist/dock/dock.manifest.js:61
msgid "Show Trash Icon"
msgstr "Mostrar ícone da lixeira"

#: dist/dock/dock.manifest.js:56
#: dist/dock/dock.manifest.js:62
msgid "Show a trash can in the dock; click to open it, right-click to empty it"
msgstr ""
"Mostra uma lixeira no dock; clique para abri-la e clique com o botão direito "
"para esvaziá-la"

#: dist/dock/dock.manifest.js:61
#: dist/dock/dock.manifest.js:67
msgid "Show External Storage"
msgstr "Mostrar armazenamento externo"

#: dist/dock/dock.manifest.js:62
#: dist/dock/dock.manifest.js:68
msgid "Show removable drives in the dock when they are connected"
msgstr "Mostra unidades removíveis no dock quando estão conectadas"

#: dist/dock/dock.manifest.js:67
#: dist/dock/dock.manifest.js:73
msgid "Window Previews"
msgstr "Pré-visualizações de janelas"

#: dist/dock/dock.manifest.js:68
#: dist/dock/dock.manifest.js:74
msgid ""
"Show live previews and window actions when hovering over running applications"
msgstr ""
"Mostra pré-visualizações ao vivo e ações de janela ao passar o mouse sobre "
"aplicativos em execução"

#: dist/dock/dock.manifest.js:73
#: dist/dock/dock.manifest.js:79
msgid "Icon Hover & Press Effects"
msgstr "Efeitos ao passar o mouse e pressionar o ícone"

#: dist/dock/dock.manifest.js:74
#: dist/dock/dock.manifest.js:80
msgid "Animate dock icons on hover and click"
msgstr "Anima os ícones do dock ao passar o mouse e clicar"

#: dist/dock/dock.manifest.js:79
#: dist/dock/dock.manifest.js:85
msgid "Effect Intensity"
msgstr "Intensidade do efeito"

#: dist/dock/dock.manifest.js:80
#: dist/dock/dock.manifest.js:86
msgid "How strong the hover and press effects are"
msgstr "Define a intensidade dos efeitos ao passar o mouse e pressionar"

#: dist/dock/dock.manifest.js:83
#: dist/dock/dock.manifest.js:89
msgid "Subtle"
msgstr "Sutil"

#: dist/dock/dock.manifest.js:84
#: dist/dock/dock.manifest.js:90
msgid "Balanced"
msgstr "Equilibrado"

#: dist/dock/dock.manifest.js:85
#: dist/dock/dock.manifest.js:91
msgid "Expressive"
msgstr "Expressivo"

Expand Down Expand Up @@ -667,27 +675,27 @@ msgstr ""
"Mostra o nível da bateria e ícones animados no painel de Configurações "
"Rápidas do Bluetooth"

#: dist/panel/clock/meetingClock/meetingAlertController.js:115
#: dist/panel/clock/meetingClock/meetingAlertController.js:118
msgid "Meeting starting soon"
msgstr "Reunião começará em breve"

#: dist/panel/clock/meetingClock/meetingAlertController.js:124
#: dist/panel/clock/meetingClock/meetingAlertController.js:127
msgid "Join"
msgstr "Participar"

#: dist/panel/clock/meetingClock/meetingAlertController.js:126
#: dist/panel/clock/meetingClock/meetingAlertController.js:129
msgid "Snooze"
msgstr "Adiar"

#: dist/panel/clock/meetingClock/meetingAlertController.js:127
#: dist/panel/clock/meetingClock/meetingAlertController.js:130
msgid "Dismiss"
msgstr "Dispensar"

#: dist/panel/clock/meetingClock/meetingAlertController.js:129
#: dist/panel/clock/meetingClock/meetingAlertController.js:132
msgid "Ignore"
msgstr "Ignorar"

#: dist/panel/clock/meetingClock/meetingAlertController.js:186
#: dist/panel/clock/meetingClock/meetingAlertController.js:189
#: dist/panel/clock/meetingClock/meetingClock.manifest.js:8
msgid "Meeting Clock"
msgstr "Relógio de reuniões"
Expand Down Expand Up @@ -1067,7 +1075,7 @@ msgstr ""
"Oculta o conteúdo do painel durante o compartilhamento de tela; mostra "
"apenas o indicador de compartilhamento"

#: dist/shared/ui/dashWindowPreviews.js:311
#: dist/shared/ui/dashWindowPreviews.js:307
msgid "Close"
msgstr "Fechar"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,11 @@
<summary>Use intelligent dock auto-hide</summary>
<description>Keep the dock visible until a window overlaps its screen space</description>
</key>
<key name="dock-show-in-overview" type="b">
<default>true</default>
<summary>Show dock in overview</summary>
<description>Keep the Aurora dock visible in the window picker and app grid</description>
</key>
<key name="dock-show-on-all-monitors" type="b">
<default>false</default>
<summary>Show dock on all monitors</summary>
Expand Down
6 changes: 6 additions & 0 deletions src/dock/dock.manifest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,12 @@ export const manifest: ModuleManifest = {
subtitle: _('Keep the dock visible until a window overlaps it'),
type: 'switch',
},
{
key: 'dock-show-in-overview',
title: _('Show Dock in Overview'),
subtitle: _('Keep the dock visible in the window picker and app grid'),
type: 'switch',
},
{
key: 'dock-show-on-all-monitors',
title: _('Show Dock on All Monitors'),
Expand Down
114 changes: 106 additions & 8 deletions src/dock/dock.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import GLib from '@girs/glib-2.0';
import Meta from '@girs/meta-18';

import * as Main from '@girs/gnome-shell/ui/main';
import * as OverviewControls from '@girs/gnome-shell/ui/overviewControls';

import type { ExtensionContext } from '~/core/context.ts';
import { LifecycleScope } from '~/core/lifecycleScope.ts';
Expand Down Expand Up @@ -55,6 +56,13 @@ export class Dock extends Module {
private _dragReveal: ContextualDragRevealCoordinator<ManagedDockBinding> | null = null;
private _sessionWasLocked = false;
private _fullscreenMonitors = new Set<number>();
private _overviewLayoutPatch: {
layout: any;
computeOriginal: (...args: any[]) => any;
computeWrapper: (...args: any[]) => any;
appOriginal: (...args: any[]) => any;
appWrapper: (...args: any[]) => any;
} | null = null;

constructor(context: ExtensionContext) {
super(context);
Expand Down Expand Up @@ -91,6 +99,7 @@ export class Dock extends Module {
);

Main.overview.dash.hide();
this._installOverviewLayoutPatch();

this._sessionWasLocked = Boolean(Main.sessionMode.isLocked);
this._fullscreenMonitors = this._getFullscreenMonitors();
Expand Down Expand Up @@ -154,6 +163,10 @@ export class Dock extends Module {
() => this._handleConfigurationChange('alwaysShow'),
'changed::dock-intellihide',
() => this._handleConfigurationChange('intellihide'),
'changed::dock-show-in-overview',
() => {
if (Main.overview.visible) this._setOverviewVisible(true);
},
'changed::dock-show-on-all-monitors',
() => this._handleConfigurationChange('showOnAllMonitors'),
'changed::dock-position',
Expand All @@ -179,6 +192,7 @@ export class Dock extends Module {
}

override disable(): void {
this._removeOverviewLayoutPatch();
Main.overview.dash.show();
this._dragReveal?.destroy();
this._dragReveal = null;
Expand Down Expand Up @@ -406,6 +420,7 @@ export class Dock extends Module {
trackFullscreen: true,
affectsStruts: false,
});
container.connectObject('notify::allocation', () => this._queueOverviewRelayout(), this);

const dash = new AuroraDash({
monitorIndex,
Expand Down Expand Up @@ -489,12 +504,22 @@ export class Dock extends Module {
return binding;
}

private _syncStacking(): void {
private _syncStacking(forceUiGroup = Main.overview.visible): void {
const windowGroup = global.window_group;
const popup = windowGroup.get_children().find((actor) => {
const window = (actor as typeof actor & { meta_window?: Meta.Window }).meta_window;
return window && APPLICATION_POPUP_WINDOW_TYPES.includes(window.get_window_type());
});
let popup: Meta.WindowActor | null = null;
if (!forceUiGroup) {
for (const actor of global.get_window_actors()) {
const window = actor.meta_window;
if (
actor.get_parent() === windowGroup &&
window !== null &&
APPLICATION_POPUP_WINDOW_TYPES.includes(window.get_window_type())
) {
popup = actor;
break;
}
}
}
const targetGroup = popup ? windowGroup : Main.uiGroup;

for (const binding of this._bindings.values()) {
Expand Down Expand Up @@ -795,15 +820,23 @@ export class Dock extends Module {
return;
}

this._syncStacking(overviewShowing);
const showInOverview =
overviewShowing && this.context.settings.getBoolean('dock-show-in-overview');
this._bindings.forEach((binding) => {
if (overviewShowing) {
this._clearHotAreaReveal(binding);
this._clearHotAreaEnable(binding);
binding.hotAreaActive = false;
binding.hotArea?.setEnabled(false);
binding.dash.blockAutoHide(false);
binding.dash.hide(false);
binding.container.hide();
this._updateWorkArea(binding);
binding.dash.blockAutoHide(showInOverview);
if (showInOverview) {
binding.dash.show(false);
} else {
binding.dash.hide(false);
binding.container.hide();
}
} else {
binding.hotArea?.setEnabled(true);
this._updateWorkArea(binding);
Expand All @@ -817,5 +850,70 @@ export class Dock extends Module {
}
}
});
this._queueOverviewRelayout();
}

private _installOverviewLayoutPatch(): void {
if (this._overviewLayoutPatch) return;

const layout = Main.overview._overview.controls.layout_manager as any;
const computeOriginal = layout._computeWorkspacesBoxForState;
const appOriginal = layout._getAppDisplayBoxForState;
const computeWrapper = (...args: any[]) => {
const box = computeOriginal.apply(layout, args);
return args[0] === OverviewControls.ControlsState.HIDDEN
? box
: this._reserveOverviewDockSpace(box);
};
const appWrapper = (...args: any[]) => {
const box = appOriginal.apply(layout, args);
return args[0] === OverviewControls.ControlsState.APP_GRID
? this._reserveOverviewDockSpace(box)
: box;
};

layout._computeWorkspacesBoxForState = computeWrapper;
layout._getAppDisplayBoxForState = appWrapper;
this._overviewLayoutPatch = {
layout,
computeOriginal,
computeWrapper,
appOriginal,
appWrapper,
};
layout.layout_changed();
}

private _removeOverviewLayoutPatch(): void {
const patch = this._overviewLayoutPatch;
if (!patch) return;
if (patch.layout._computeWorkspacesBoxForState === patch.computeWrapper)
patch.layout._computeWorkspacesBoxForState = patch.computeOriginal;
if (patch.layout._getAppDisplayBoxForState === patch.appWrapper)
patch.layout._getAppDisplayBoxForState = patch.appOriginal;
patch.layout.layout_changed();
this._overviewLayoutPatch = null;
}

private _reserveOverviewDockSpace(box: any): any {
if (!this.context.settings.getBoolean('dock-show-in-overview')) return box;

const monitorIndex = Main.layoutManager.primaryIndex;
const monitor = Main.layoutManager.monitors?.[monitorIndex];
const container = this._bindings.get(monitorIndex)?.container;
if (!monitor || !container) return box;

if (this._position === 'left') {
box.x1 = Math.min(box.x2, Math.max(box.x1, container.x + container.width - monitor.x));
} else if (this._position === 'right') {
box.x2 = Math.max(box.x1, Math.min(box.x2, container.x - monitor.x));
} else {
box.y2 = Math.max(box.y1, Math.min(box.y2, container.y - monitor.y));
}
return box;
}

private _queueOverviewRelayout(): void {
this._overviewLayoutPatch?.layout.layout_changed();
}
}
Loading