109 Commits

Author SHA1 Message Date
June
114e1335d1
refactor: remove unneces. check for empty array in #getResolvedBoxOrder
Remove unnecessary check for empty array in #getResolvedBoxOrder as
nothing happens when the array is empty anyway.
2025-06-12 01:30:43 +02:00
June
1e87992081
refactor: directly create set of indicator cont. in getValidBoxOrder
Skip the unecessary intermediate variable and directly create a set.
Also remove the "ToDo: simplify" comment as I don't see how this logic
can be simplified more really.
2025-06-12 01:26:44 +02:00
June
5a09b1a2c8
refactor: switch to TypeScript
Aside from introducing a bunch of type annotations and other code
adjustments, also add explicit type checking where necessary.

Inline #associateItem into the constructor in PrefsBoxOrderItemRow as
the method sets this.item and:
> Note that the field needs to be initialized in the constructor itself.
> TypeScript does not analyze methods you invoke from the constructor to
> detect initializations, because a derived class might override those
> methods and fail to initialize the members.
https://www.typescriptlang.org/docs/handbook/2/classes.html

Explicitly ensure we actually have a Gdk.Drag in #setupDNDScroll in
PrefsPage and explicitly only scroll when a DND operation is properly
set up. Even tho previously not having a Gdk.Drag in #setupDNDScroll
would probably just error out the callback and probably be just fine
then, handling this explicitly is at least nicer.

Also see the guide on using TypeScript for GNOME Shell Extensions, which
was followed for this work to some degree:
https://gjs.guide/extensions/development/typescript.html
2025-06-12 00:56:10 +02:00
June
ff75debabc
fix: have onDrop handler methods correctly return booleans
Have the onDrop methods, used as handlers for Gtk.DropTarget drop
signals, return booleans as required by Gtk.DropTarget.
https://docs.gtk.org/gtk4/signal.DropTarget.drop.html
This change doesn't seem to have a practical impact, but its good to
follow the API correctly anyway.
2025-06-11 00:55:10 +02:00
June
979e770057
update: properly handle top bar items of Task Up UltraLite extension
Since the Task Up UltraLite extension creates a bunch of top bar items
as part of its functionality, the Top Bar Organizer settings would get
spammed with items, making them hard to navigate and making it
practically impossible to manage the top bar items of the Task Up
UltraLite extension itself. Therefore introduce functionality for
properly handling the Task Up UltraLite top bar items, by grouping them
internally and just exposing a single Top Bar Organizer settings item
for all the Task Up UltraLite items, which then allows to manage the
Task Up UltraLite top bar items nicely.

This fixes #25:
https://gitlab.gnome.org/june/top-bar-organizer/-/issues/25

Task Up UltraLite extension:
https://extensions.gnome.org/extension/7700/task-up-ultralite/
2025-06-10 03:54:30 +02:00
June
185a48c857
fix: use row title to make settings window not break for long item names
Use the title of the PrefsBoxOrderItemRow (AdwActionRow) for the item
name instead of a label in the prefix. Aside from generally being more
correct, item names now wrap correctly, avoiding the settings window
breaking (being cut off by default to the right with even the close
button not showing, until resizing) with long item names.
2025-06-09 19:53:12 +02:00
June
b17a805035
other: bump version to 13 2025-06-09 00:24:02 +02:00
June
9c847c0988
feature: support GNOME Shell version 48
Checked the source of 48.2 and tested in Fedora 42 and there don't seem
to be any changes relevant to the functionality of this extension.
2025-06-09 00:22:48 +02:00
June
f619ce4fa7
feature: make it possible to (forcefully) hide or show top bar items
This is only the core extension logic for now, settings UI still needs
to follow.
The logic only acts on the indicator container, not the indicator
itself, meaning that e.g. a screen recording indicator, which is hidden
on the indicator level, can be forcefully hidden, but not forcefully
shown. Because of that and because forcefully hiding it breaks controls
for screen recording, a potential settings implementation should exclude
visiblity controls for some elements like e.g. the screen recording
indicator.
2024-09-27 03:24:47 +02:00
June
80f394d2d4
refactor: move logic for loading and saving box orders to priv. methods
Move logic for loading and saving box orders from/to settings to private
methods to have more readable code.
2024-09-26 02:52:15 +02:00
June
cc088f443c
refactor: clearly dist. betw. an items role and the id used in settings
Clearly distinguish between an items role, which is present in GNOME
Shells top bar, call that a role, and the thing that is stored in the
settings for an item, call that an items settings identifier.
Refactor the code with these new names in mind to make it clearer.
Also make the comments clearer.
And finally simplify the code handling AppIndicator items by simply
using the items settings identifier as the key in the roles map and with
that getting rid of the confusing concept of a placeholder role, which
is only relevant for the box order stored in settings. Just declaring it
as an items settings identifier, which it is, is much clearer.
2024-09-26 02:23:28 +02:00
June
23baa41225
other: bump version to 12 2024-09-12 22:56:02 +02:00
June
07355dcf19
feature: support GNOME Shell version 47
Checked the source of 47.rc and tested in GNOME OS and there don't seem
to be any changes relevant to the functionality of this extension.
2024-09-12 22:55:05 +02:00
June
b358d2046d
other: bump version to 11 2024-09-11 03:58:32 +02:00
June
1870a9510a
other: update my name 2024-09-11 03:16:46 +02:00
June
e04ac8a3ee
feature: support GNOME Shell version 46
There don't seem to be any changes relevant to the functionality of this
extension.
2024-09-11 03:02:02 +02:00
126ebfa9db
Other: Bump version to 10 2023-10-05 15:21:39 +02:00
c25f24b72f
Other: Make ESLint ignore unused import 2023-10-05 15:06:47 +02:00
7f86e92e85
Refactor: Clean up unused import 2023-10-05 14:59:46 +02:00
d903274d73
Other: Require trailing commas for multiline for most
Require trailing commas for multiline for arrays, objects, imports and
exports and disallow trailing commas for functions.
Do this by updating the ESLint config and fixing new complaints.

The reason for this change are the resulting future cleaner version
diffs.

Also see:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Trailing_commas
https://eslint.org/docs/latest/rules/comma-dangle
2023-10-05 14:50:36 +02:00
5ea8f4aabe
Refactor: Move GObject.registerClass calls into static init. blocks
Do that since it standardizes the code and also is just cleaner.
2023-10-04 03:58:21 +02:00
a77c6d2f2b
Refactor: Install forget action using install_action as well 2023-10-04 03:58:10 +02:00
9b7ab0614c
Feature: Add move up and down buttons to make the prefs keyboard access.
Don't use CONSTRUCT_ONLY anymore to be able to use private properties
(or any properties at all it seems).
2023-10-04 03:57:42 +02:00
a1188d5684
Breaking: Migrate extension to the new ESM system of GNOME 45
Migrate with the help of, among others, the following resources:
https://blogs.gnome.org/shell-dev/2023/09/02/extensions-in-gnome-45/
https://gjs.guide/extensions/upgrading/gnome-shell-45.html

Only support GNOME Shell version 45, since only 45 is compatible with
the new ESM system.

Since panel._originalAddToPanelBox is no longer valid, just overwrite
using the prototype on disable.

Add "sourceType": "module" to eslintrc.yml to get rid of:
"Parsing error: 'import' and 'export' may appear only with 'sourceType:
module'"
See here:
https://eslint.org/docs/latest/use/configure/language-options#specifying-parser-options
2023-10-04 03:57:35 +02:00
ed10e7a14b
Other: Bump version to 9 2023-04-21 00:56:12 +02:00
0b3aff665a
Fix: Move provider add. to more correct place and remove prov. on dest.
See here for the relevant review:
https://extensions.gnome.org/review/40563
2023-04-21 00:46:59 +02:00
bf598f2a15
Other: Bump version to 8 2023-04-20 23:19:02 +02:00
51a89aec60
Feature: Support GNOME version 44 2023-04-20 23:17:06 +02:00
5c8523322b
Update: Improve drag handle styling by using GNOME Settings style
This also finally makes the style `<class name="drag-handle"/>` in
`prefs-box-order-item-row.ui` actually do something.
2023-04-20 12:33:30 +02:00
fa379607ee
Other: Bump version to 7 2023-02-07 12:52:03 +01:00
470ebf761d
Fix: Keep hidden items hidden 2023-02-07 12:52:03 +01:00
39face9957
Fix: Also interact with the panel, if the parent session mode is "user"
Top Bar Organizer used to only interact with the panel, when the current
session mode is "user". However Ubuntu uses "ubuntu" as its session
mode, which made Top Bar Organizer not work.
Fix this by also interacting with the panel, if the parent session mode
is "user".

See here for some docs on session modes:
https://gjs.guide/extensions/topics/session-modes.html
2023-02-07 12:52:03 +01:00
6bc40441a7
Other: Bump version to 6 2023-01-30 15:33:14 +01:00
40846915e7
Fix: Check, if signal handler is connected for handler id, before dc.
Do this to hopefully fix "No signal connection XX found" errors.
2023-01-30 15:28:58 +01:00
40cf8de1a8
Fix: Don't affect (or interact with) panel of unlock screen
The panel gets set to the state it should have for the unlock screen
before extension disable. Because of this the extension makes icons
show, which shouldn't show. So fix that by not ordering the panel, if
the current session mode isn't "user".
Also generally don't interact with the panel, if the current session
mode isn't "user".
2023-01-30 14:46:56 +01:00
680c2a97af
Other: Bump version to 5 2023-01-29 03:41:02 +01:00
1b5ba38617
Refactor: Rename this.settings to this._settings
Do this to indicate that this is a "private" field.
2023-01-29 03:24:17 +01:00
8586f095fc
Refactor: Reorder enable code and comment it, to make it more clear 2023-01-29 00:41:46 +01:00
d01fb434ee
Other: Remove unused typedef PositionAndBoxOverwrite 2023-01-29 00:34:53 +01:00
6e61014331
Refactor: Introduce #handleNewItemsAndOrderTopBar method
Introducing this method cleans up code, which did pretty much the same
thing, by replacing it with a call to this method.
2023-01-29 00:34:44 +01:00
c61776d8d4
Other: Remove unused typedef BoxOrders 2023-01-28 23:56:40 +01:00
58a078c15c
Refactor: Use private fields instead of pref. with _, where suitable 2023-01-28 23:51:43 +01:00
cedb54ed64
Other: Disallow omitting curly braces and enforce one true brace style
Do this by updating the ESLint config accordingly and also fix new
complaints.
2023-01-28 23:34:15 +01:00
8de94d6b01
Other: Add whitespace rules from GJS Style Guide and fix complaints
Add whitespace rules from GJS Style Guide to ESLint config and fix new
complaints.
See here for the GJS Style guide whitespace section:
https://gjs.guide/guides/gjs/style-guide.html#whitespace
2023-01-28 23:13:46 +01:00
0401790fed
Refactor: Don't add ScrollManag. inst. to this, since thats not needed 2023-01-28 22:46:10 +01:00
4ba00915e0
Update: Don't have the not ready app indicators at the far right
Make sure unaccounted-for indicator containers (like the not ready app
indicator indicator containers) in the right panel box are on the left
of it, since the right panel box is logically right-to-left and to avoid
unnecessary shifting should they become accounted for.
2023-01-28 09:39:04 +01:00
843c5f0e1c
Fix: Support AppIndicator/KStatusNotifierItem item addition again
Do this by not acting upon a new AppIndicator/KStatusNotifierItem item
immediately (as in trying to position it properly and maybe saving it to
settings), but rather act once the app indicators "ready" signal emits
by simply saving new items to settings and ordering the top bar boxes.
2023-01-28 08:38:27 +01:00
644656d93a
Refactor: Merge AppIndi.KStat.ItemManager code into BoxOrderManager
Let `BoxOrderManager` do the relevant work itself and get rid of
`AppIndicatorKStatusNotifierItemManager`.
This is also in preparation to make the addition of
AppIndicator/KStatusNotifierItem items work again.
2023-01-28 08:27:45 +01:00
59d5665661
Refactor: Simplify #overwritePanelAddToPanelBox heavily
Simplify `#overwritePanelAddToPanelBox` heavily by just calling the
original function in the overwrite and ordering the top bar and handling
new items afterwards.
Note that AppIndicator/KStatusNotifierItems are still not supported with
this refactor.
2023-01-28 00:20:43 +01:00
d51703eb4e
Refactor: Introduce BoxOrderManager
Introduce new `BoxOrderManager` to basically act as a heavy wrapper
around the box orders stored in settings, so that the other extension
code has easy methods to get, set and interact with box orders.
Refactor most of the code initially with it in mind.
Note that `#overwritePanelAddToPanelBox` needs more refactoring to
properly make use of that new idea (and it also needs refactoring in
general).
2023-01-27 23:48:23 +01:00