MATE is super slow for some reason — something to do with Marco and/or GTK?

I’ve been having a super confusing problem for the past week or two. On my laptop, running Ubuntu MATE 18.04 64-bit, everything to do with the UI is crazy slow. Expanding a menu, pressing a toolbar button, minimizing a window, even hitting Alt+Tab to switch windows, each of these takes two to three seconds before anything happens (or anything shows up on screen). Also, when a new window appears (including a dialog box), it’s usually an empty frame for a few seconds before anything happens. Things like moving the cursor and entering text in fields works fine, but as soon as you’re messing with UI toolkit elements or windows, everything slows to a crawl.
This is strange, because everything was working before, and I couldn’t find any updated system packages in the time when this started happening. I tried using the System Monitor to see if there’s a process that’s hogging resources, with no luck. I turned off compositing in Marco, with no luck. I also tried reinstalling absolutely everything having to do with GTK, Marco, MATE, or X, with no luck. I have yet to figure out what the exact bottleneck is, but I’ve made a few observations:

  1. Non-GTK UI doesn’t seem to be affected. I tried opening a KDE program and fiddling with menus and such, nothing seemed to be slowed down. But, the window was still slow to respond if I tried to use the window buttons to minimize/maximize/etc. Now, when I use Vivaldi, which draws its window itself, I can minimize that with the window button just fine, without a delay—but of course, when I want to restore it from the taskbar, I get the delay again. So, this is why I think it’s a problem with GTK and/or Marco.
  2. Other users aren’t affected. I realized this when I was using Synaptic to reinstall everything—that program is run as root, and even though it uses GTK I wasn’t getting a slow response when I expanded a menu or whatever. So I tried making a new account just to test whether or not this is a problem with my user profile. Turns out, everything works fine on the new profile, without a hitch. So I guess the problem is something to do with my user setup, but what? Where?

Here’s some information from hardinfo that should answer any questions about my system:



Processor		: Intel(R) Core(TM)2 Duo CPU     T6400  @ 2.00GHz
Memory		: 4006MB (2091MB used)
Machine Type		: Notebook
Operating System		: Ubuntu 18.04.1 LTS
User Name		: tina (Tina Russell)
Date/Time		: Tue 16 Oct 2018 02:52:34 PM PDT
Resolution		: 1366x768 pixels
OpenGL Renderer		: NV98
X11 Vendor		: The X.Org Foundation
-Audio Devices-
Audio Adapter		: HDA-Intel - HDA Intel
-Input Devices-
 Lid Switch
 Sleep Button
 Power Button
 AT Translated Set 2 keyboard
 Video Bus
 SynPS/2 Synaptics TouchPad
 HDA Intel Mic
 HDA Intel Headphone
 HP WMI hotkeys
 HP Webcam-101: HP Webcam-101
No printers found
-SCSI Disks-
Slimtype DVD A  DS8A2S-A
Generic- Multi-Card

Operating System

Kernel		: Linux 4.15.0-36-generic (x86_64)
Version		: #39-Ubuntu SMP Mon Sep 24 16:19:09 UTC 2018
C Library		: GNU C Library / (Ubuntu GLIBC 2.27-3ubuntu1) 2.27
Distribution		: Ubuntu 18.04.1 LTS
-Current Session-
Computer Name		: pannychis
User Name		: tina (Tina Russell)
Home Directory		: /home/tina
Uptime		: 18 hours 37 minutes
Load Average		: 0.10, 0.23, 0.26
Available entropy in /dev/random		: 3769 bits (healthy)

Kernel Modules

-Loaded Modules-
bnep		: Bluetooth BNEP ver 1.3
msr		: x86 generic MSR driver
md4		: MD4 Message Digest Algorithm
cifs		: VFS to access servers complying with the SNIA CIFS Specification e.g. Samba and Windows
ccm		: Counter with CBC MAC
fscache		: FS Cache Manager
bluetooth		: Bluetooth Core ver 2.22
ecdh_generic		: ECDH generic algorithm
ip6table_filter		: ip6tables filter table
ip6_tables		: IPv6 packet filter
iptable_filter		: iptables filter table
uvcvideo		: USB Video Class driver
videobuf2_vmalloc		: vmalloc memory handling routines for videobuf2
videobuf2_memops		: common memory handling routines for videobuf2
videobuf2_v4l2		: Driver helper framework for Video for Linux 2
videobuf2_core		: Media buffer core framework
videodev		: Device registrar for Video4Linux drivers v2
media		: Device node registration for media drivers
gpio_ich		: GPIO interface for Intel ICH series
arc4		: ARC4 Cipher Algorithm
coretemp		: Intel Core temperature monitor
joydev		: Joystick device interfaces
input_leds		: Input -> LEDs Bridge
serio_raw		: Raw serio driver
hp_wmi		: HP laptop WMI hotkeys driver
sparse_keymap		: Generic support for sparse keymaps
wmi_bmof		: WMI embedded Binary MOF driver
lpc_ich		: LPC interface for Intel ICH
snd_hda_codec_hdmi		: HDMI HD-audio codec
snd_hda_codec_conexant		: Conexant HD-audio codec
snd_hda_codec_generic		: Generic HD-audio codec parser
snd_hda_intel		: Intel HDA driver
snd_hda_codec		: HDA codec core
snd_hda_core		: HD-audio bus
snd_hwdep		: Hardware dependent layer
snd_pcm		: Midlevel PCM code for ALSA.
ath5k		: Support for 5xxx series of Atheros 802.11 wireless LAN cards.
ath		: Shared library for Atheros wireless LAN cards.
mac80211		: IEEE 802.11 subsystem
snd_seq_midi		: Advanced Linux Sound Architecture sequencer MIDI synth.
snd_seq_midi_event		: MIDI byte <-> sequencer event coder
snd_rawmidi		: Midlevel RawMidi code for ALSA.
snd_seq		: Advanced Linux Sound Architecture sequencer.
snd_seq_device		: ALSA sequencer device management
cfg80211		: wireless configuration support
snd_timer		: ALSA timer interface
snd		: Advanced Linux Sound Architecture driver for soundcards.
soundcore		: Core sound module
shpchp		: Standard Hot Plug PCI Controller Driver
parport_pc		: PC-style parallel port driver
ip_tables		: IPv4 packet filter
x_tables		: {ip,ip6,arp,eb}_tables backend module
dm_mirror		: device-mapper mirror target
dm_region_hash		: device-mapper region hash
dm_log		: device-mapper dirty region log
ums_realtek		: Driver for Realtek USB Card Reader
usb_storage		: USB Mass Storage driver for Linux
nouveau		: nVidia Riva/TNT/GeForce/Quadro/Tesla/Tegra K1+
mxm_wmi		: MXM WMI Driver
i2c_algo_bit		: I2C-Bus bit-banging algorithm
ttm		: TTM memory manager subsystem (for DRM device)
drm_kms_helper		: DRM KMS helper
syscopyarea		: Generic copyarea (sys-to-sys)
sysfillrect		: Generic fill rectangle (sys-to-sys)
sysimgblt		: 1-bit/8-bit to 1-32 bit color expansion (sys-to-sys)
fb_sys_fops		: Generic file read (fb in system RAM)
psmouse		: PS/2 mouse driver
drm		: DRM shared core routines
ahci		: AHCI SATA low-level driver
libahci		: Common AHCI SATA low-level routines
wmi		: ACPI-WMI Mapping Driver
r8169		: RealTek RTL-8169 Gigabit Ethernet driver
mii		: MII hardware support library
video		: ACPI Video Driver

Thank you for any help you can give!

suggestion: rename your.config/ to .config.bak/, logout/login or reboot. Let the system rebuild that dir tree. If that does not help, try with the.cache/ dir (same idea) and/or .local/ Something in your home setup is messed up.

After some bisecting my config directory, I pinpointed the source of the problem. See, I have PulseAudio set to stream to a PulseAudio server on my Windows machine, like in this guide: —except, instead of editing /etc/pulse/client.conf directly as he suggests, I copied the file to ~/.config/pulse/client.conf for a user-local copy (which PulseAudio recognizes) before editing.
Now, that shouldn’t be a problem, but sometimes the PulseAudio server on the Windows machine randomly stops working. At that point, the local PulseAudio, trying to stream to the Windows machine, produces a flurry of errors like this: [pulseaudio] main.c: User-configured server at [IP-ADDRESS], refusing to start/autospawn. When I start up the PulseAudio on Windows again, the slowness on the Ubuntu laptop goes away.
This is probably a problem not a lot of people have, but I hope this helps somebody :blush:

1 Like