Skip to content
Open
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
Original file line number Diff line number Diff line change
Expand Up @@ -32,16 +32,49 @@
<summary>Shows indicator</summary>
<description>Shows an indicator on top panel.</description>
</key>
<key name="inner-gaps" type="u">

<key name="inner-gaps-top" type="u">
<default>16</default>
<summary>Inner top gap</summary>
<description>Gap at the top between windows</description>
</key>
<key name="inner-gaps-bottom" type="u">
<default>16</default>
<summary>Inner bottom gap</summary>
<description>Gap at the bottom between windows</description>
</key>
<key name="inner-gaps-left" type="u">
<default>16</default>
<summary>Inner left gap</summary>
<description>Gap on the left side between windows</description>
</key>
<key name="inner-gaps-right" type="u">
<default>16</default>
<summary>Inner gaps</summary>
<description>Internal gaps between tiles in a layout.</description>
<summary>Inner right gap</summary>
<description>Gap on the right side between windows</description>
</key>
<key name="outer-gaps" type="u">

<key name="outer-gaps-top" type="u">
<default>8</default>
<summary>Outer gaps</summary>
<description>External gaps between the layout and the monitor borders.</description>
<summary>Outer top gap</summary>
<description>Gap between windows and top monitor border</description>
</key>
<key name="outer-gaps-bottom" type="u">
<default>8</default>
<summary>Outer bottom gap</summary>
<description>Gap between windows and bottom monitor border</description>
</key>
<key name="outer-gaps-left" type="u">
<default>8</default>
<summary>Outer left gap</summary>
<description>Gap between windows and left monitor border</description>
</key>
<key name="outer-gaps-right" type="u">
<default>8</default>
<summary>Outer right gap</summary>
<description>Gap between windows and right monitor border</description>
</key>

<key name="enable-span-multiple-tiles" type="b">
<default>true</default>
<summary>Span multiple tiles</summary>
Expand Down
80 changes: 71 additions & 9 deletions src/prefs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,20 +60,82 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference
);
appearenceGroup.add(showIndicatorRow);

const innerGapsRow = this._buildSpinButtonRow(
Settings.KEY_INNER_GAPS,
_('Inner gaps'),
_('Gaps between windows'),
);
// Expandable inner gaps row (dropdown)
const innerGapsRow = new Adw.ExpanderRow({
title: _('Inner gaps'),
subtitle: _('Gaps between windows'),
});
appearenceGroup.add(innerGapsRow);

const outerGapsRow = this._buildSpinButtonRow(
Settings.KEY_OUTER_GAPS,
_('Outer gaps'),
_('Gaps between a window and the monitor borders'),
// Inner gaps controls
innerGapsRow.add_row(
this._buildSpinButtonRow(
Settings.KEY_INNER_GAPS_LEFT,
_('Left'),
_('Gap on the left side between windows'),
)
);
innerGapsRow.add_row(
this._buildSpinButtonRow(
Settings.KEY_INNER_GAPS_RIGHT,
_('Right'),
_('Gap on the right side between windows'),
)
);
innerGapsRow.add_row(
this._buildSpinButtonRow(
Settings.KEY_INNER_GAPS_TOP,
_('Top'),
_('Gap at the top between windows'),
)
);
innerGapsRow.add_row(
this._buildSpinButtonRow(
Settings.KEY_INNER_GAPS_BOTTOM,
_('Bottom'),
_('Gap at the bottom between windows'),
)
);

// Expandable outer gaps row (dropdown)
const outerGapsRow = new Adw.ExpanderRow({
title: _('Outer gaps'),
subtitle: _('Gaps between windows and monitor borders'),
});
appearenceGroup.add(outerGapsRow);

// Outer gaps controls
outerGapsRow.add_row(
this._buildSpinButtonRow(
Settings.KEY_OUTER_GAPS_LEFT,
_('Left'),
_('Gap between windows and left monitor border'),
)
);
outerGapsRow.add_row(
this._buildSpinButtonRow(
Settings.KEY_OUTER_GAPS_RIGHT,
_('Right'),
_('Gap between windows and right monitor border'),
)
);
outerGapsRow.add_row(
this._buildSpinButtonRow(
Settings.KEY_OUTER_GAPS_TOP,
_('Top'),
_('Gap between windows and top monitor border'),
)
);
outerGapsRow.add_row(
this._buildSpinButtonRow(
Settings.KEY_OUTER_GAPS_BOTTOM,
_('Bottom'),
_('Gap between windows and bottom monitor border'),
)
);



const blurRow = new Adw.ExpanderRow({
title: _('Blur (experimental feature)'),
subtitle: _(
Expand Down
105 changes: 85 additions & 20 deletions src/settings/settings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -101,8 +101,17 @@ export default class Settings {
static KEY_OVERRIDE_WINDOW_MENU = 'override-window-menu';
static KEY_SNAP_ASSISTANT_THRESHOLD = 'snap-assistant-threshold';
static KEY_ENABLE_WINDOW_BORDER = 'enable-window-border';
static KEY_INNER_GAPS = 'inner-gaps';
static KEY_OUTER_GAPS = 'outer-gaps';

static KEY_INNER_GAPS_TOP = 'inner-gaps-top';
static KEY_INNER_GAPS_BOTTOM = 'inner-gaps-bottom';
static KEY_INNER_GAPS_LEFT = 'inner-gaps-left';
static KEY_INNER_GAPS_RIGHT = 'inner-gaps-right';

static KEY_OUTER_GAPS_TOP = 'outer-gaps-top';
static KEY_OUTER_GAPS_BOTTOM = 'outer-gaps-bottom';
static KEY_OUTER_GAPS_LEFT = 'outer-gaps-left';
static KEY_OUTER_GAPS_RIGHT = 'outer-gaps-right';

static KEY_SNAP_ASSISTANT_ANIMATION_TIME = 'snap-assistant-animation-time';
static KEY_TILE_PREVIEW_ANIMATION_TIME = 'tile-preview-animation-time';
static KEY_SETTING_LAYOUTS_JSON = 'layouts-json';
Expand Down Expand Up @@ -226,20 +235,68 @@ export default class Settings {
set_activationkey(Settings.KEY_TILING_SYSTEM_DEACTIVATION_KEY, val);
}

static get INNER_GAPS(): number {
return get_unsigned_number(Settings.KEY_INNER_GAPS);
static get INNER_GAPS_TOP(): number {
return get_unsigned_number(Settings.KEY_INNER_GAPS_TOP);
}

static set INNER_GAPS_TOP(val: number) {
set_unsigned_number(Settings.KEY_INNER_GAPS_TOP, val);
}

static get INNER_GAPS_BOTTOM(): number {
return get_unsigned_number(Settings.KEY_INNER_GAPS_BOTTOM);
}

static set INNER_GAPS_BOTTOM(val: number) {
set_unsigned_number(Settings.KEY_INNER_GAPS_BOTTOM, val);
}

static get INNER_GAPS_LEFT(): number {
return get_unsigned_number(Settings.KEY_INNER_GAPS_LEFT);
}

static set INNER_GAPS_LEFT(val: number) {
set_unsigned_number(Settings.KEY_INNER_GAPS_LEFT, val);
}

static get INNER_GAPS_RIGHT(): number {
return get_unsigned_number(Settings.KEY_INNER_GAPS_RIGHT);
}

static set INNER_GAPS(val: number) {
set_unsigned_number(Settings.KEY_INNER_GAPS, val);
static set INNER_GAPS_RIGHT(val: number) {
set_unsigned_number(Settings.KEY_INNER_GAPS_RIGHT, val);
}

static get OUTER_GAPS(): number {
return get_unsigned_number(Settings.KEY_OUTER_GAPS);
static get OUTER_GAPS_TOP(): number {
return get_unsigned_number(Settings.KEY_OUTER_GAPS_TOP);
}

static set OUTER_GAPS(val: number) {
set_unsigned_number(Settings.KEY_OUTER_GAPS, val);
static set OUTER_GAPS_TOP(val: number) {
set_unsigned_number(Settings.KEY_OUTER_GAPS_TOP, val);
}

static get OUTER_GAPS_BOTTOM(): number {
return get_unsigned_number(Settings.KEY_OUTER_GAPS_BOTTOM);
}

static set OUTER_GAPS_BOTTOM(val: number) {
set_unsigned_number(Settings.KEY_OUTER_GAPS_BOTTOM, val);
}

static get OUTER_GAPS_LEFT(): number {
return get_unsigned_number(Settings.KEY_OUTER_GAPS_LEFT);
}

static set OUTER_GAPS_LEFT(val: number) {
set_unsigned_number(Settings.KEY_OUTER_GAPS_LEFT, val);
}

static get OUTER_GAPS_RIGHT(): number {
return get_unsigned_number(Settings.KEY_OUTER_GAPS_RIGHT);
}

static set OUTER_GAPS_RIGHT(val: number) {
set_unsigned_number(Settings.KEY_OUTER_GAPS_RIGHT, val);
}

static get SPAN_MULTIPLE_TILES(): boolean {
Expand Down Expand Up @@ -445,12 +502,16 @@ export default class Settings {
right: number;
} {
// get the gaps settings and scale by scale factor
const value = this.INNER_GAPS * scaleFactor;
const valueTop = this.INNER_GAPS_TOP * scaleFactor;
const valueBottom = this.INNER_GAPS_BOTTOM * scaleFactor;
const valueLeft = this.INNER_GAPS_LEFT * scaleFactor;
const valueRight = this.INNER_GAPS_RIGHT * scaleFactor;

return {
top: value,
bottom: value,
left: value,
right: value,
top: valueTop,
bottom: valueBottom,
left: valueLeft,
right: valueRight,
};
}

Expand All @@ -461,12 +522,16 @@ export default class Settings {
right: number;
} {
// get the gaps settings and scale by scale factor
const value = this.OUTER_GAPS * scaleFactor;
const valueTop = this.OUTER_GAPS_TOP * scaleFactor;
const valueBottom = this.OUTER_GAPS_BOTTOM * scaleFactor;
const valueLeft = this.OUTER_GAPS_LEFT * scaleFactor;
const valueRight = this.OUTER_GAPS_RIGHT * scaleFactor;

return {
top: value,
bottom: value,
left: value,
right: value,
top: valueTop,
bottom: valueBottom,
left: valueLeft,
right: valueRight,
};
}

Expand Down