Age | Commit message (Collapse) | Author | Files | Lines |
|
Adds GNOME3-style dynamic workspace management. Workspaces are created
when no empty ones exist and removed when multiple empty workspaces are
present, maintaining exactly one empty workspace at the end.
Fixes #406
|
|
This allows marco to respond to HiDPI scale changes without requiring
a restart. When the scale changes, marco now automatically updates all
icons (windows, xprops, alt+tab, etc.) and mouse cursor to be at the
correct scale factor.
Window decorations are handled through an internal GDK signal triggered
from XSettings changes, and so already work out of the box.
|
|
|
|
|
|
Whenever there's a new v* tag, GitHub will use distcheck to generate
tarballs, create a proper release, and trigger the mate-desktop.org
webhook.
|
|
|
|
Adds support for configurable mouse actions on window titlebars,
including middle-click and scroll wheel events.
New actions added:
- close: Close the window
- raise: Raise window to top
- toggle_stick: Toggle sticky state (all workspaces)
- toggle_above: Toggle always-on-top state
Fixes #425
Fixes #787
Note: requries matching mate-control-center changes to work properly
|
|
When calculating the clickable area on the left-most button of
a maximized window, we need to take into account the layout components,
not just the button size.
Fixes mate-desktop/mate-themes#318
|
|
Apply Fitt's law to corner window buttons by extending the clickable
area all the way to the edge of the screen on maximized/tiled windows.
This means that a user moving the pointer all the way to the top-right
corner and clicking, will close the maximized (or right-tiled) window.
The same applies for top-left on maximized and left-tiled windows.
|
|
Bumps [actions/cache](https://github.com/actions/cache) from 3 to 4.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v3...v4)
---
updated-dependencies:
- dependency-name: actions/cache
dependency-version: '4'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <[email protected]>
|
|
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-version: '5'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <[email protected]>
|
|
Bumps [dev-hanz-ops/install-gh-cli-action](https://github.com/dev-hanz-ops/install-gh-cli-action) from 0.1.0 to 0.2.1.
- [Release notes](https://github.com/dev-hanz-ops/install-gh-cli-action/releases)
- [Commits](https://github.com/dev-hanz-ops/install-gh-cli-action/compare/v0.1.0...v0.2.1)
---
updated-dependencies:
- dependency-name: dev-hanz-ops/install-gh-cli-action
dependency-version: 0.2.1
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <[email protected]>
|
|
* CI: use github action
* CI: Drop travis CI
|
|
* menu: replace gtk_menu_popup() with gtk_menu_popup_at_rect()
Replace deprecated gtk_menu_popup() with gtk_menu_popup_at_rect(). This
provides the same menu positioning calculation while eliminating
deprecation warnings.
* ui: replace gtk_widget_get_realized() with gtk_widget_get_mapped()
Replace deprecated gtk_widget_get_realized() with
gtk_widget_get_mapped(). Since mapped widgets are guaranteed to be
realized, and we only care about widget visibility, this change
eliminates deprecation warnings while maintaining the same
functionality.
* frames: replace gdk_window_process_all_updates() with gdk_display_flush()
Replace deprecated gdk_window_process_all_updates() with
gdk_display_flush(). Both functions ensure pending updates are
processed, but gdk_display_flush is more general for all display
requests.
|
|
In systems with bamfdaemon running, windows get this property for
finding the dekstop spec file of an application. This can be used to
find the defined icon for any application window that reports this
attribute and provider much better icon matching.
|
|
Looking up GDesktopAppInfo from the GTK Application ID we can get a much
better match for the icon and load it at the appropriate scale. This
results in matching icons to straneous windows and better looking icons
overall.
|
|
GTK+ has support for the application ID property. This will allow Marco
to reconstruct the path to the desktop spec file and so have access to
all internal attributes (e.g. name, icon, etc.)
|
|
Based off Metacity 's commit 7c1cc3ca1d8131499b9cf2ef50b295602ffd6112 [1].
[1] https://gitlab.gnome.org/GNOME/metacity/-/commit/7c1cc3ca1d8131499b9cf2ef50b295602ffd6112
|
|
X's Success return value is 0, not a boolean, so the check was
effectively inverted.
|
|
|
|
|
|
The switcher windows aren't actually "active" per GTK's meaning because
they do not have actual keyboard focus, but they are controlled by the
internal grabs so it's effectively the same as if they were active.
Reporting them as such helps the ATs understanding what's going on.
Fixes #771.
|
|
|
|
Follow-up of 4a2a5dc092814bfe ("eOS theme: Add single button backgrounds")
Without this fix these PNGs are installed when using autotools but not using meson.
|
|
|
|
|
|
When the active workspace is changed, marco figures out which window
should get focus by calling `focus_ancestor_or_top_window`. In some
cases that call might include a window that should not get focus as
`not_this_one`.
When `not_this_one` refers to a window, the function will check to see
if it has a parent, and if it does, it will ignore the new workspace's
`mru_list` and will focus that parent window. However, it doesn't check
to see if the parent window is actually on the new workspace. If the
parent isn't on the new workspace, focusing it will drag it over,
including the transient window that was supposed to be ignored. This
isn't the result a user would likely expect, and is made more confusing
by the parent window being minimized, stuck that way until the user
switches to another workspace and back.
This change makes `focus_ancestor_or_top_window` ignore the
`not_this_one` window if it isn't on the new workspace's `mru_list`.
Instead it will just search the new workspace's `mru_list` for a window
to focus.
|
|
|
|
|
|
|
|
When composited, the tab popup uses an OSD style which typically has a
dark background, so we use a light background highlight color.
However, when not composited the popup uses a light color and should
thus use a dark highlight. This was done for the workspace popup, but
not for the window one, leading to the highlight being hardly visible
in several themes.
|
|
This is Metacity commit 50358a95 ("Allow applications to raise windows
when raise_on_click is off. Closes #445447.") applied to Marco without
modification.
It also includes a change to the GSettings key's description to remove
the now obsolete warning on the raise-on-click key, & replaces it with
an actually useful description. This is copied from the equivalent key
in gsettings-desktop-schemas.
Fixes: https://github.com/mate-desktop/marco/issues/762
|
|
|
|
|
|
|
|
Enabling code that is supposed to be used in compositing conditions is
harmful if compositing is not actually available. Just checking the
preference is not enough to make sure that compositing is available -
the X server might be missing crucial extensions for compositing to
work, which in turn correctly disables the internal compositor.
The end result is graphical issues like black borders around windows in
such situations.
Make sure that compositing is both requested AND available to fix this
bug.
|
|
Fixes #757.
|
|
Verbose mode is not active by default when running Marco, but can be
toggled dynamically to help debug issues, possibly as they happen.
This should only be disabled for very performance-sensitive or
size-sensitive builds, but not for the regular case where it can be
very useful to debug a user issue.
|
|
Verbose logging shouldn't require a rebuild, as it can help debugging
user problems.
This reverts commit 397e31879bf79861a1a21ec4e2a75017e243d34b.
|
|
|
|
|
|
|
|
Needed for X2Go as it does not have XRES 1.2 extension.
|
|
Before using any Xres extension one must call XResQueryExtension()
Also make sure Xres 1.2 is available as marco need XResQueryClientIds()
|
|
|
|
|
|
|
|
window-props: use XResQueryClientIds to get pid
_NET_WM_PID is unreliable! It can be faked or pid might be from
different namespace. Ignore _NET_WM_PID and use XResQueryClientIds
to get pid.
https://gitlab.gnome.org/GNOME/metacity/-/commit/bcbe966511362a8eb8c8c64035ab160086c931f8
|
|
When opening and then closing certain applications
the focus was correctly regained by the previous window
but it wasn't brought into the foreground.
To fix this we call meta_workspace_focus_default_window() for both NotifyDetailNone and NotifyPointerRoot.
These two are always mentioned together in the X docs:
https://tronche.com/gui/x/xlib/events/input-focus/normal-and-grabbed.html
Some programs will have NotifyDetailNone when closed, while others end up with NotifyPointerRoot.
|
|
|