Closed thwaller closed 2 years ago
I am not sure if I understand your problem, are you saying that the workspace grid (popup) is not showing?
If that's the case, then open up the preferences window and play with the popup timeout parameter
and let us know how it goes
Yes, your understanding is correct. There is no popup timeout parameter
, but there is time to show the popup
which I tried to extend out to 120ms. All it did is slow down the changing of workspaces. There was still no popup shown.
120ms is still low, increase it more (~500). and if you want it to disappear on releasing the modifier key then put it to 0
I set it to 2500 to really test it. It appears that the issue is that there is delay between when the grid window is called to when it displays. If I set it to 0 as suggested above, it does not even display at all. At 120 where I had it, it also never even displayed. If I turn off the extension, the default workspace grid appears with no delay or issue.
I don't know what you mean by appear with no delay or issue, there is a fade animation to display the popup, and that is counted in the popup timeout. This popup timeout is customizable and you can set it to your preference. I think the time taken to display the popup is the same as the default one, the only difference is that the default one might show up faster because it's simpler (no rendering of workspaces/desktop thumbnails).
This timeout is in ms, 1000 ms is 1 second, if you set it to 120ms this means the popup will disappear in less than 120ms (because the the show popup animation is counted as well). Now if you set this value to zero, the behavior is that this popup will show up as long as you hold the modifier key (there's no timeout). If you switch workspaces using Ctrl+Shift+Arrow
then hold Ctrl+Shift
and use the arrows to see the behavior (without releasing the Ctrl+Shift
).
I understand what you have stated. The issue here is that once the key combo is pressed, there is a lag, a delay. when not using the extension, that lag / delay is not there. As you stated, it might be due to the requirement of creating a preview of the workspace. I use this extension on Ubuntu 21.10 as well, and this issue does not exist.
@thwaller sorry for the late response, are you using the extension with the same hardware on Ubuntu 21.10
and it's working fine?
Maybe in your case we need to create some extra debugging lines to see when the popup is triggered and when it's shown. I can only think of the possibility that it takes some time to render the workspace previews, this time will increase the more workspaces, monitors, and resolution you have. So if you have 3x4k monitors each with 4x4 workspaces, this will require sometime to render.
Can you provide more information regarding hardware and software for both of your setups?
I think the problem described in this issue is the same I have:
@ljanyst the old behavior was to make the popup disappear after some timeout that you can tweak in the extension's preferences (it's still the same with some extra feature if you set the timeout to 0). if you set the Time to show the popup
in preferences to 0
then the popup will disappear only when you release the modifier keys Ctrl+Alt
, if you set it to a number greater than 0 like 800
for example then you will have a timeout in which the popup will disappear after it passes.
If you want the old behavior, then just set the Time to show the popup
to your preference, I suggest you try different numbers but start with something like 600
as this is in ms
which will result the blinking behavior if you set it to a small number.
Please try it out and let me know if you still face any issues as I tested it right now and it seems to behave totally as expected.
Perfect! Thanks so much! :)
@ljanyst yes, you nailed it. I believe that is the exact issue I experience. To be honest, I have since stopped using the extension. I use other means that are faster to change workspaces. I appreciate the work done on the extension, so I am happy to enable this again and try.
This solution did not work for me. I am still not seeing the same performance / results as I did prior. Prior meaning prior to GNOME 41, and I think prior to 40.
that solution is for @ljanyst, yours is different. I need more information about your hardware & software to be able to tell what the issue is
I am sorry for the misunderstanding.... Please specify what more you might need:
[user@localhost ~]$ system-info-report
System: Kernel: 5.14.17-301.fc35.x86_64 x86_64 bits: 64 compiler: gcc v: 2.37-10.fc35 Desktop: GNOME 41.1 tk: GTK 3.24.30
wm: gnome-shell dm: GDM 41.0 Distro: Fedora release 35 (Thirty Five)
Machine: Type: Laptop System: Hewlett-Packard product: HP EliteBook 8560w v: A0001D02 serial: <filter> Chassis: type: 10
serial: <filter>
Mobo: Hewlett-Packard model: 1631 v: KBC Version 01.3F serial: <filter> BIOS: Hewlett-Packard v: 68SVD Ver. F.63
date: 10/27/2016
Battery: ID-1: BAT0 charge: 57.9 Wh (95.9%) condition: 60.4/60.4 Wh (100.0%) volts: 16.0 min: 14.8
model: Hewlett-Packard Primary type: Li-ion serial: <filter> status: Unknown
CPU: Info: Quad Core model: Intel Core i7-2670QM bits: 64 type: MT MCP arch: Sandy Bridge rev: 7 cache: L2: 6 MiB
flags: avx lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx bogomips: 35122
Speed: 1842 MHz min/max: 800/3100 MHz Core speeds (MHz): 1: 1842 2: 2264 3: 2981 4: 2818 5: 2736 6: 2838 7: 2490
8: 2324
Graphics: Device-1: Advanced Micro Devices [AMD/ATI] Whistler [Radeon HD 6730M/6770M/7690M XT]
vendor: Hewlett-Packard FirePro M5950 driver: radeon v: kernel bus-ID: 01:00.0 chip-ID: 1002:6740 class-ID: 0300
Device-2: Logitech C922 Pro Stream Webcam type: USB driver: snd-usb-audio,uvcvideo bus-ID: 1-1.6.1:5
chip-ID: 046d:085c class-ID: 0102 serial: <filter>
Display: wayland server: X.Org 1.21.1.3 compositor: gnome-shell driver: loaded: ati,radeon
unloaded: fbdev,modesetting,vesa resolution: 1: 1920x1080~60Hz 2: 1920x1080~60Hz 3: 1920x1080~60Hz s-dpi: 96
OpenGL: renderer: AMD TURKS (DRM 2.50.0 / 5.14.17-301.fc35.x86_64 LLVM 13.0.0) v: 3.3 Mesa 21.2.5 compat-v: 3.1
direct render: Yes
Audio: Device-1: Intel 6 Series/C200 Series Family High Definition Audio vendor: Hewlett-Packard driver: snd_hda_intel
v: kernel bus-ID: 00:1b.0 chip-ID: 8086:1c20 class-ID: 0403
Device-2: AMD Turks HDMI Audio [Radeon HD 6500/6600 / 6700M Series] vendor: Hewlett-Packard driver: snd_hda_intel
v: kernel bus-ID: 01:00.1 chip-ID: 1002:aa90 class-ID: 0403
Device-3: Logitech C922 Pro Stream Webcam type: USB driver: snd-usb-audio,uvcvideo bus-ID: 1-1.6.1:5
chip-ID: 046d:085c class-ID: 0102 serial: <filter>
Sound Server-1: ALSA v: k5.14.17-301.fc35.x86_64 running: yes
Sound Server-2: PulseAudio v: 15.0 running: no
Sound Server-3: PipeWire v: 0.3.40 running: yes
Network: Device-1: Intel 82579LM Gigabit Network vendor: Hewlett-Packard driver: e1000e v: kernel port: 5020 bus-ID: 00:19.0
chip-ID: 8086:1502 class-ID: 0200
IF: enp0s25 state: down mac: <filter>
Device-2: Intel Centrino Ultimate-N 6300 driver: iwlwifi v: kernel port: 4000 bus-ID: 25:00.0 chip-ID: 8086:4238
class-ID: 0280
IF: wlo1 state: up mac: <filter>
IF-ID-1: virbr0 state: down mac: <filter>
IF-ID-2: wgpia0 state: unknown speed: N/A duplex: N/A mac: N/A
Drives: Local Storage: total: 1.31 TiB used: 315.63 GiB (23.5%)
ID-1: /dev/sda vendor: Western Digital model: WDS100T2B0A-00SM50 size: 931.51 GiB speed: 6.0 Gb/s type: SSD
serial: <filter> rev: 00WD scheme: MBR
ID-2: /dev/sdb vendor: Toshiba model: MK0200GCTYV size: 186.31 GiB speed: 6.0 Gb/s type: SSD serial: <filter>
rev: HPG4 scheme: MBR
ID-3: /dev/sdc vendor: Kingston model: SA400S37240G size: 223.57 GiB speed: 3.0 Gb/s type: SSD serial: <filter>
rev: B1D2 scheme: MBR
Partition: ID-1: / size: 182.88 GiB used: 122.6 GiB (67.0%) fs: ext4 dev: /dev/sdb1
Swap: ID-1: swap-1 type: zram size: 8 GiB used: 0 KiB (0.0%) priority: 100 dev: /dev/zram0
and
[user@localhost ~]$ cat /etc/*-release
Fedora release 35 (Thirty Five)
NAME="Fedora Linux"
VERSION="35 (Workstation Edition)"
ID=fedora
VERSION_ID=35
VERSION_CODENAME=""
PLATFORM_ID="platform:f35"
PRETTY_NAME="Fedora Linux 35 (Workstation Edition)"
ANSI_COLOR="0;38;2;60;110;180"
LOGO=fedora-logo-icon
CPE_NAME="cpe:/o:fedoraproject:fedora:35"
HOME_URL="https://fedoraproject.org/"
DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora/f35/system-administrators-guide/"
SUPPORT_URL="https://ask.fedoraproject.org/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Fedora"
REDHAT_BUGZILLA_PRODUCT_VERSION=35
REDHAT_SUPPORT_PRODUCT="Fedora"
REDHAT_SUPPORT_PRODUCT_VERSION=35
PRIVACY_POLICY_URL="https://fedoraproject.org/wiki/Legal:PrivacyPolicy"
VARIANT="Workstation Edition"
VARIANT_ID=workstation
Fedora release 35 (Thirty Five)
Fedora release 35 (Thirty Five)
and
[user@localhost ~]$ current-kernel
5.14.17-301.fc35.x86_64
How many monitors do you have and what's the resolution of each and and how many workspaces do you have?
Three monitors, each at 1920x1080. I should clarify... One is the internal laptop monitor, and there are two external. I am also using the proper "advanced docking station" to assist in this.
If it matters, this docking station: A7E38AA#ABA. The same I have been using since before the issue.
Workspaces, well, it is set to dynamic. Typically, 12.
Do you face the same issue if you disconnect the external monitors? Just using the laptop's monitor
Well, could you clarify? Are you asking I remove the docking station, disconnect the external monitors from the docking station, remove the external monitors from the OS settings, or? I want to clarify as this can make a difference. I can also add that I am aware of an issue... so I have tried using BOTH a DisplayLink to HDMI and a DVI to HDMI... no difference. That bug/issue does not appear relevant.
If it's a performance issue, then it should be fixed when you have less monitors. The more monitors & workspaces you have, the more time the extension will need to render all workspace previews.
Also try to disable the option Show workspace thumbnails in popup
from the extension preferences, this will not render the workspaces previews and it should be much faster. Again, all I am trying to do now is to figure out if it's a performance issue or something else.
Of course, I understand. I do want to make clear that this was not an issue before, and aside from OS and kernel updates, my setup has not changed. I will test all of the above I mentioned and get back to you. Also, I DO have Show workspace thumbnails in popup
ticked on.
While I cannot verify my thoughts... I am actually starting to wonder, and believe, this might be a GNOME issue. So I also want to make clear I am using Wayland (XWayland) and not Xorg.
To add... I will also test this again on Ubuntu 21.10, same laptop, same configuration for hardware... different software. The problem existed before, so I am unsure. Ubuntu I have GNOME 40, Fedora is GNOME 41. That may give insight.
The extension was written from scratch, so there's a possibility that it doesn't perform as good as the old one (I haven't noticed any performance difference myself). I am asking if you disable the option Show workspace thumbnails in popup
does it solve your problem? because that should make switching the workspaces faster, but it won't allow you to see the workspace previews (they will be grey rectangles).
It will be good if you can test on different software, it will help a lot.
Ok, I have tried, in my current config, to untick Show workspace thumbnails in popup
. I helped for sure, but not fixed. I will say, GREAT help. If I did not see the performance of the extension prior, I would say there is no problem.... adding to this also... I have always used the thumbnails.
@thwaller I think I got the issue, there's a caching mechanism that was implemented earlier that caches the whole workspace matrix even if it's destroyed, so it's always there but it's hidden when not used and shown only when needed. Now it's destroyed completely and recreated when needed, I will try to look into this but it's not going to be as straight forward as it used to be since the approach now differs.
Can you try replace the function _showWorkspaceSwitcherPopup(toggle)
in the file workspaceManagerOverride.js
with the one below? This should print the total time taken to render the switcher popup, if you run in your terminal journalctl -f /usr/bin/gnome-shell
, you should be able to see something similar to
Nov 27 11:30:07 ebeem gnome-shell[3496343]: time taken to display switcher 0 ms
Nov 27 11:30:07 ebeem gnome-shell[3496343]: time taken to display switcher 0 ms
Nov 27 11:30:08 ebeem gnome-shell[3496343]: time taken to display switcher 0 ms
Nov 27 11:30:09 ebeem gnome-shell[3496343]: time taken to display switcher 0 ms
Nov 27 11:30:10 ebeem gnome-shell[3496343]: time taken to display switcher 52 ms
Nov 27 11:30:10 ebeem gnome-shell[3496343]: time taken to display switcher 0 ms
Nov 27 11:30:12 ebeem gnome-shell[3496343]: time taken to display switcher 61 ms
Nov 27 11:30:13 ebeem gnome-shell[3496343]: time taken to display switcher 0 ms
Nov 27 11:30:18 ebeem gnome-shell[3496343]: time taken to display switcher 46 ms
Nov 27 11:30:24 ebeem gnome-shell[3496343]: time taken to display switcher 56 ms
Nov 27 11:30:32 ebeem gnome-shell[3496343]: time taken to display switcher 52 ms
Nov 27 11:30:49 ebeem gnome-shell[3496343]: time taken to display switcher 65 ms
Nov 27 11:30:58 ebeem gnome-shell[3496343]: time taken to display switcher 53 ms
Nov 27 11:31:10 ebeem gnome-shell[3496343]: time taken to display switcher 48 ms
Nov 27 11:31:13 ebeem gnome-shell[3496343]: time taken to display switcher 55 ms
Nov 27 11:31:37 ebeem gnome-shell[3496343]: time taken to display switcher 55 ms
Nov 27 11:31:38 ebeem gnome-shell[3496343]: time taken to display switcher 0 ms
Nov 27 11:31:48 ebeem gnome-shell[3496343]: time taken to display switcher 35 ms
Nov 27 11:32:37 ebeem gnome-shell[3496343]: time taken to display switcher 53 ms
_showWorkspaceSwitcherPopup(toggle) {
let _debugStart = new Date();
if (toggle) {
this._addWorkspaceOverviewKeybindings();
}
if (!Main.overview.visible) {
this.monitors.forEach((monitor) => {
let monitorIndex = monitor.index;
if (!this.wm._wsPopupList[monitorIndex]) {
this.wm._workspaceTracker.blockUpdates();
this.wm._wsPopupList[monitorIndex] = this._createNewPopup({
monitorIndex: monitorIndex,
toggle: toggle,
});
this.wm._wsPopupList[monitorIndex].connect('destroy', () => {
this.wm._workspaceTracker.unblockUpdates();
this.wm._wsPopupList[monitorIndex] = null;
if (monitorIndex === Main.layoutManager.primaryIndex) {
this.wm._workspaceSwitcherPopup = null;
this.wm._isWorkspacePrepended = false;
if (toggle) {
this._removeWorkspaceOverviewKeybindings();
}
}
});
let event = Clutter.get_current_event();
let modifiers = event ? event.get_state() : 0;
this.wm._wsPopupList[monitorIndex].showToggle(false, null, modifiers, toggle);
if (monitorIndex === Main.layoutManager.primaryIndex) {
this.wm._workspaceSwitcherPopup = this.wm._wsPopupList[monitorIndex];
}
} else {
// reset of popup
if (monitorIndex === Main.layoutManager.primaryIndex) {
this.wm._wsPopupList[monitorIndex].resetTimeout();
}
}
});
}
log("time taken to display switcher " + (new Date() - _debugStart) + " ms");
}
@ebeem Yes! Fixed. The performance is back to what I experienced prior.
@ebeem Something is wrong.... when I get to a workspace that is populated the matrix breaks.
this code will just print the time needed to render the matrix so we can know if you really have some performance issues.
you should be able to see the log if you run journalctl -f /usr/bin/gnome-shell
in terminal
Interesting.... This is the output:
[user@localhost ~]$ journalctl -f /usr/bin/gnome-shell
-- Journal begins at Sun 2021-05-09 22:12:57 CDT. --
Nov 28 06:24:28 localhost.localdomain gnome-shell[4456]: JS ERROR: Error: Expected an object of type ClutterActor for argument 'sibling' but got type undefined
_syncStacking@resource:///org/gnome/shell/ui/workspaceAnimation.js:80:18
Nov 28 06:24:29 localhost.localdomain gnome-shell[4456]: JS ERROR: Error: Expected an object of type ClutterActor for argument 'sibling' but got type undefined
_syncStacking@resource:///org/gnome/shell/ui/workspaceAnimation.js:80:18
Nov 28 06:24:29 localhost.localdomain gnome-shell[4456]: JS ERROR: Error: Expected an object of type ClutterActor for argument 'sibling' but got type undefined
_syncStacking@resource:///org/gnome/shell/ui/workspaceAnimation.js:80:18
Nov 28 06:24:29 localhost.localdomain gnome-shell[4456]: time taken to display switcher 1 ms
Nov 28 06:24:29 localhost.localdomain gnome-shell[4456]: JS ERROR: Error: Expected an object of type ClutterActor for argument 'sibling' but got type undefined
_syncStacking@resource:///org/gnome/shell/ui/workspaceAnimation.js:80:18
Nov 28 06:24:29 localhost.localdomain gnome-shell[4456]: JS ERROR: Error: Expected an object of type ClutterActor for argument 'sibling' but got type undefined
_syncStacking@resource:///org/gnome/shell/ui/workspaceAnimation.js:80:18
Nov 28 06:24:29 localhost.localdomain gnome-shell[4456]: time taken to display switcher 0 ms
Nov 28 06:24:29 localhost.localdomain gnome-shell[4456]: JS ERROR: Error: Expected an object of type ClutterActor for argument 'sibling' but got type undefined
_syncStacking@resource:///org/gnome/shell/ui/workspaceAnimation.js:80:18
Nov 28 06:24:29 localhost.localdomain gnome-shell[4456]: JS ERROR: Error: Expected an object of type ClutterActor for argument 'sibling' but got type undefined
_syncStacking@resource:///org/gnome/shell/ui/workspaceAnimation.js:80:18
Nov 28 06:24:30 localhost.localdomain gnome-shell[4456]: Source ID 3110143 was not found when attempting to remove it
This is not a performance issue, there's a bug somewhere. This shouldn't happen if you use the same gnome version. Can you try uninstalling the extension and installing it again either from gnome extensions or by cloning this repo? it seems that your version is outdated or something
I have it installed from here: https://extensions.gnome.org/extension/1485/workspace-matrix/. Yes, I will remove and reinstall.
FYI-
[user@localhost ~]$ cat /usr/share/gnome/gnome-version.xml
<?xml version="1.0"?>
<gnome-version>
<platform>41</platform>
<minor>1</minor>
<micro>0</micro>
<distributor>GNOME.Org</distributor>
<date>2021-11-02</date>
</gnome-version>[user@localhost ~]$
I get this trying to install from clone... if you have a specific process to use to install, please provide.
[ERROR] Could not extract the UUID from metadata.json in the ZIP-file.
EDIT: I guess I could always bypass the use of UUID, but it is expected. I am going to just copy/past as it seems the requirement is met in the file.
I am receiving this now. I made sure to also make sure the extension directory was removed from ~/.local/share/gnome-shell/extensions/
before reinstall.
</gnome-version>[usejournalctl -f /usr/bin/gnome-shell
-- Journal begins at Sun 2021-05-09 22:12:57 CDT. --
Nov 28 07:08:43 localhost.localdomain gnome-shell[4456]: JS ERROR: Error: Expected an object of type ClutterActor for argument 'sibling' but got type undefined
_syncStacking@resource:///org/gnome/shell/ui/workspaceAnimation.js:80:18
Nov 28 07:08:44 localhost.localdomain gnome-shell[4456]: Source ID 3311292 was not found when attempting to remove it
Nov 28 07:08:47 localhost.localdomain gnome-shell[4456]: time taken to display switcher 617 ms
Nov 28 07:08:47 localhost.localdomain gnome-shell[4456]: JS ERROR: Error: Expected an object of type ClutterActor for argument 'sibling' but got type undefined
_syncStacking@resource:///org/gnome/shell/ui/workspaceAnimation.js:80:18
Nov 28 07:08:47 localhost.localdomain gnome-shell[4456]: JS ERROR: Error: Expected an object of type ClutterActor for argument 'sibling' but got type undefined
_syncStacking@resource:///org/gnome/shell/ui/workspaceAnimation.js:80:18
Nov 28 07:08:47 localhost.localdomain gnome-shell[4456]: Source ID 3311683 was not found when attempting to remove it
Nov 28 07:08:49 localhost.localdomain gnome-shell[4456]: time taken to display switcher 606 ms
Nov 28 07:08:49 localhost.localdomain gnome-shell[4456]: JS ERROR: Error: Expected an object of type ClutterActor for argument 'sibling' but got type undefined
_syncStacking@resource:///org/gnome/shell/ui/workspaceAnimation.js:80:18
Nov 28 07:08:49 localhost.localdomain gnome-shell[4456]: JS ERROR: Error: Expected an object of type ClutterActor for argument 'sibling' but got type undefined
_syncStacking@resource:///org/gnome/shell/ui/workspaceAnimation.js:80:18
Nov 28 07:08:50 localhost.localdomain gnome-shell[4456]: Source ID 3312299 was not found when attempting to remove it
ok, I could reproduce this somehow, I will look into it. But it's not the problem, because I am getting it now and still the matrix is displayed perfectly. How about your case?
Try replacing the lines
// avoid warnings
group._syncStacking = () => {
};
in file workspaceAnimation.js
with the one below
group._syncStacking = () => {
const windowActors = global.get_window_actors().filter(w =>
this._shouldShowWindow(w.meta_window));
let lastRecord;
for (const windowActor of windowActors) {
const record = this._windowRecords.find(r => r.windowActor === windowActor);
if (lastRecord && record) {
this.set_child_above_sibling(record.clone, lastRecord ? lastRecord.clone : this._background);
lastRecord = record;
}
}
};
Let me know if you still get the error after applying this
I created a branch for this, if you would like to help with the testing part, then please checkout this branch and let me know about your feedback.
ok, I could reproduce this somehow, I will look into it. But it's not the problem, because I am getting it now and still the matrix is displayed perfectly. How about your case?
Could you clarify this statement? I am unsure what you are exactly asking.
Yes, I can check out that branch.
I mean even if you get this error, the grid should be displayed. So I don't think that this is the problem.
@thwaller please test the PR #194 as it seems like it's similar to your problem. Let me know if it works out for you so we either close this issue or investigate it more.
@thwaller changes were merged into master, please check and update us so we resolve this issue. Thanks.
@ebeem - yes, sorry, have been busy with the holiday. Am I able to update via the extensions gnome site, or should I do directly from here?
no problem, enjoy it. there are some little changes that aren't released yet, so if you pull the master it will be better. Thanks.
Installing now from zip.
So far things have been good. I do not use this as much as I did prior given that I had stopped using it, so my ability to provide prompt feedback has been limited.
Many thanks for your feedback.
Thank you for your work.
I am using Fedora 35 with GNOME 41. When I use the
ctrl
+alt
+arrow
, it just goes through the workspaces vs showing a grid like it did before. The rest seems to work fine.