Slow startup of gnome apps on i3

Hi All, would be great if someone can offer some ideas or advice on how to troubleshoot this.

The Issue

I’ve been having an issue for a while now where gnome apps are slow to start after I first boot. I have a small script that launches several applications on different desktops (see below), of these gnome-terminal and nautilus are both very slow to launch, if I comment out gnome-terminal nautilus is still slow and when one launches the other launches almost instantly.

#!/bin/bash

sleep 2
i3-msg 'workspace 2; exec gnome-terminal'
sleep 2
i3-msg 'workspace 1; exec brave --profile-directory="Default" youtube.com'
sleep 2
i3-msg 'workspace 5; exec nautilus'
sleep 2
i3-msg 'workspace 4; exec code'
sleep 2
i3-msg 'workspace 7; exec brave --profile-directory="Profile 1"'

Things I’ve Tried

I’ve logged in to a gnome session and tried launching the terminal (launches instantly)

I’ve seen a lot of help articles online which say it might be Compton. I’ve tried disabling it but that had no effect.

In my ~/.xinitrc I have tried adding --exit-with-session to the i3|i3wm) dbus_args+=(i3 --shmlog-size 0) ;; line so that it reads i3|i3wm) dbus_args+=(i3 --exit-with-session --shmlog-size 0) ;; full .xinitrc below:

if [ -f $sysmodmap ]; then
    xmodmap $sysmodmap
fi

if [ -f "$userresources" ]; then
    xrdb -merge "$userresources"
fi

if [ -f "$usermodmap" ]; then
    xmodmap "$usermodmap"
fi

# start some nice programs

if [ -d /etc/X11/xinit/xinitrc.d ] ; then
    for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do
        [ -x "$f" ] && . "$f"
    done
    unset f
fi

get_session(){
        local dbus_args=(--sh-syntax --exit-with-session)
        case $1 in
                awesome) dbus_args+=(awesome) ;;
                bspwm) dbus_args+=(bspwm-session) ;;
                budgie) dbus_args+=(budgie-desktop) ;;
                cinnamon) dbus_args+=(cinnamon-session) ;;
                deepin) dbus_args+=(startdde) ;;
                enlightenment) dbus_args+=(enlightenment_start) ;;
                fluxbox) dbus_args+=(startfluxbox) ;;
                gnome) dbus_args+=(gnome-session) ;;
                i3|i3wm) dbus_args+=(i3 --shmlog-size 0) ;;
                jwm) dbus_args+=(jwm) ;;
                kde) dbus_args+=(startkde) ;;
                lxde) dbus_args+=(startlxde) ;;
                lxqt) dbus_args+=(lxqt-session) ;;
                mate) dbus_args+=(mate-session) ;;
                xfce) dbus_args+=(xfce4-session) ;;
                openbox) dbus_args+=(openbox-session) ;;
                *) dbus_args+=($DEFAULT_SESSION) ;;
        esac

        echo "dbus-launch ${dbus_args[*]}"
}

numlockx &

exec $(get_session)

eval $(/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh)
export SSH_AUTH_SOCK

I’ve done a sudo systemd-analyze blame and used sudo systemctl disable {service} on the top 3 entries (ntpdate, NetworkManager-wait-online, and docker) then rebooted to see if it was any of those, no change.

21.036s ntpdate.service
 4.510s NetworkManager-wait-online.service
 1.037s docker.service
  813ms var-lib-snapd-snap-bare-5.mount
  801ms var-lib-snapd-snap-snapd-12883.mount
  801ms var-lib-snapd-snap-postman-132.mount
  718ms var-lib-snapd-snap-core-11743.mount
  640ms var-lib-snapd-snap-core18-2128.mount
  634ms systemd-random-seed.service
  534ms var-lib-snapd-snap-postman-133.mount
  488ms var-lib-snapd-snap-gtk\x2dcommon\x2dthemes-1515.mount
  483ms mariadb.service
  418ms dev-loop3.device
  344ms dev-loop2.device
  299ms var-lib-snapd-snap-core-11798.mount
  298ms var-lib-snapd-snap-core18-2074.mount
  295ms var-lib-snapd-snap-gtk\x2dcommon\x2dthemes-1519.mount
  289ms var-lib-snapd-snap-snapd-13170.mount
  285ms tlp.service
  246ms dev-loop1.device
  242ms dev-loop0.device
  219ms apparmor.service
  193ms snapd.service
  175ms dev-loop5.device
  162ms dev-loop7.device
  129ms user@1000.service
  127ms dev-nvme1n1p2.device
  126ms dev-loop4.device
  126ms ModemManager.service
  125ms user@120.service
   87ms systemd-journal-flush.service
   80ms php-fpm.service
   75ms dev-loop6.device
   72ms lvm2-monitor.service
   64ms udisks2.service
   51ms systemd-udev-trigger.service
   49ms systemd-journald.service
   48ms systemd-logind.service
   46ms polkit.service
   44ms systemd-modules-load.service
   39ms upower.service
   34ms systemd-tmpfiles-clean.service
   34ms nginx.service
   32ms redis.service
   28ms systemd-udevd.service
   28ms NetworkManager.service
   21ms snapd.apparmor.service
   14ms systemd-fsck@dev-disk-by\x2duuid-7AEE\x2d783D.service
   14ms accounts-daemon.service
   13ms bluetooth.service
   12ms alsa-restore.service
   11ms systemd-rfkill.service
   10ms boot-efi.mount
   10ms systemd-tmpfiles-setup-dev.service
    9ms colord.service
    8ms dev-hugepages.mount

I have run sudo systemctl status gdm to see if there was anything odd in there, below is what I got but after some googling the gkr-pam: unable to locate daemon control file line sounds like it’s nothing to worry about.

gdm.service - GNOME Display Manager
     Loaded: loaded (/usr/lib/systemd/system/gdm.service; enabled; vendor preset: disabled)
     Active: active (running) since Tue 2021-10-12 21:29:52 BST; 22min ago
   Main PID: 860 (gdm)
      Tasks: 3 (limit: 38446)
     Memory: 6.3M
        CPU: 51ms
     CGroup: /system.slice/gdm.service
             └─860 /usr/bin/gdm

Oct 12 21:29:52 slick-study-desktop systemd[1]: Starting GNOME Display Manager...
Oct 12 21:29:52 slick-study-desktop systemd[1]: Started GNOME Display Manager.
Oct 12 21:30:02 slick-study-desktop gdm-password][2401]: gkr-pam: unable to locate daemon control file
Oct 12 21:30:02 slick-study-desktop gdm-password][2401]: gkr-pam: stashed password to try later in open session
Oct 12 21:30:02 slick-study-desktop gdm-password][2401]: pam_systemd_home(gdm-password:account): systemd-homed is not available: Unit dbus-org.freedesktop.home1.service not found.
Oct 12 21:30:02 slick-study-desktop gdm-password][2401]: pam_unix(gdm-password:session): session opened for user slick(uid=1000) by (uid=0)
Oct 12 21:30:02 slick-study-desktop gdm-password][2401]: pam_env(gdm-password:session): deprecated reading of user environment enabled
Oct 12 21:30:02 slick-study-desktop gdm-password][2401]: gkr-pam: gnome-keyring-daemon started properly and unlocked keyring

I’ve checked my hosts file (because I’ve see that commented online as well) in /etc/hosts which I believe is properly configured:

127.0.0.1  localhost
127.0.1.1  slick-study-desktop
::1        localhost ip6-localhost ip6-loopback
ff02::1    ip6-allnodes
ff02::2    ip6-allrouters

If it helps the output of inxi -Fxxxz is as follows:

System:    Kernel: 5.10.70-1-MANJARO x86_64 bits: 64 compiler: gcc v: 11.1.0 Desktop: i3 4.19.1 info: polybar vt: 2
           dm: GDM 40.1 Distro: Manjaro Linux base: Arch Linux
Machine:   Type: Desktop Mobo: Micro-Star model: MEG X570 UNIFY (MS-7C35) v: 2.0 serial: <filter> UEFI: American Megatrends
           v: A.30 date: 01/16/2020
CPU:       Info: 12-Core model: AMD Ryzen 9 3900XT bits: 64 type: MT MCP arch: Zen 2 rev: 0 cache: L2: 6 MiB
           flags: avx avx2 lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 svm bogomips: 182494
           Speed: 3600 MHz min/max: 2200/3800 MHz boost: enabled Core speeds (MHz): 1: 3600 2: 2057 3: 2199 4: 2200 5: 4005
           6: 2100 7: 2090 8: 2200 9: 2199 10: 2195 11: 2191 12: 2192 13: 2095 14: 2200 15: 2197 16: 2200 17: 2193 18: 2198
           19: 2196 20: 2200 21: 2201 22: 2200 23: 2200 24: 2197
Graphics:  Device-1: Advanced Micro Devices [AMD/ATI] Navi 10 [Radeon RX 5600 OEM/5600 XT / 5700/5700 XT] vendor: Tul
           driver: amdgpu v: kernel bus-ID: 2f:00.0 chip-ID: 1002:731f class-ID: 0300
           Device-2: WaveRider USB 2.0 Camera type: USB driver: snd-usb-audio,uvcvideo bus-ID: 5-2:2 chip-ID: 0c46:64ab
           class-ID: 0102 serial: <filter>
           Display: x11 server: X.Org 1.20.13 compositor: compton driver: loaded: amdgpu,ati unloaded: modesetting,radeon
           alternate: fbdev,vesa resolution: 1: 1920x1080~60Hz 2: 1920x1080~60Hz 3: 1920x1080~60Hz s-dpi: 96
           OpenGL: renderer: AMD Radeon RX 5600 XT (NAVI10 DRM 3.40.0 5.10.70-1-MANJARO LLVM 12.0.1) v: 4.6 Mesa 21.2.3
           direct render: Yes
Audio:     Device-1: Advanced Micro Devices [AMD/ATI] Navi 10 HDMI Audio driver: snd_hda_intel v: kernel bus-ID: 2f:00.1
           chip-ID: 1002:ab38 class-ID: 0403
           Device-2: Advanced Micro Devices [AMD] Starship/Matisse HD Audio vendor: Micro-Star MSI driver: snd_hda_intel
           v: kernel bus-ID: 31:00.4 chip-ID: 1022:1487 class-ID: 0403
           Device-3: WaveRider USB 2.0 Camera type: USB driver: snd-usb-audio,uvcvideo bus-ID: 5-2:2 chip-ID: 0c46:64ab
           class-ID: 0102 serial: <filter>
           Sound Server-1: ALSA v: k5.10.70-1-MANJARO running: yes
           Sound Server-2: JACK v: 1.9.19 running: no
           Sound Server-3: PulseAudio v: 15.0 running: yes
           Sound Server-4: PipeWire v: 0.3.38 running: yes
Network:   Device-1: Realtek RTL8125 2.5GbE vendor: Micro-Star MSI driver: r8169 v: kernel port: f000 bus-ID: 27:00.0
           chip-ID: 10ec:8125 class-ID: 0200
           IF: enp39s0 state: up speed: 1000 Mbps duplex: full mac: <filter>
           Device-2: Intel Wi-Fi 6 AX200 driver: iwlwifi v: kernel bus-ID: 28:00.0 chip-ID: 8086:2723 class-ID: 0280
           IF: wlo1 state: up mac: <filter>
           IF-ID-1: br-bf84e4d84ee1 state: up speed: 10000 Mbps duplex: unknown mac: <filter>
           IF-ID-2: docker0 state: down mac: <filter>
           IF-ID-3: veth15d43b3 state: up speed: 10000 Mbps duplex: full mac: <filter>
           IF-ID-4: veth59ea58e state: up speed: 10000 Mbps duplex: full mac: <filter>
Bluetooth: Device-1: Intel AX200 Bluetooth type: USB driver: btusb v: 0.8 bus-ID: 1-4:2 chip-ID: 8087:0029 class-ID: e001
           Report: rfkill ID: hci0 rfk-id: 1 state: up address: see --recommends
Drives:    Local Storage: total: 2.73 TiB used: 374.78 GiB (13.4%)
           ID-1: /dev/nvme0n1 vendor: Samsung model: SSD 970 EVO Plus 1TB size: 931.51 GiB speed: 31.6 Gb/s lanes: 4 type: SSD
           serial: <filter> rev: 2B2QEXM7 temp: 40.9 C scheme: GPT
           ID-2: /dev/nvme1n1 vendor: Samsung model: SSD 970 EVO Plus 1TB size: 931.51 GiB speed: 31.6 Gb/s lanes: 4 type: SSD
           serial: <filter> rev: 2B2QEXM7 temp: 37.9 C scheme: GPT
           ID-3: /dev/sda vendor: Samsung model: SSD 850 EVO 1TB size: 931.51 GiB speed: 6.0 Gb/s type: SSD serial: <filter>
           rev: 3B6Q scheme: MBR
Partition: ID-1: / size: 915.6 GiB used: 374.78 GiB (40.9%) fs: ext4 dev: /dev/nvme1n1p2
           ID-2: /boot/efi size: 299.4 MiB used: 280 KiB (0.1%) fs: vfat dev: /dev/nvme1n1p1
Swap:      Alert: No swap data was found.
Sensors:   System Temperatures: cpu: 52.5 C mobo: N/A gpu: amdgpu temp: 43.0 C mem: 44.0 C
           Fan Speeds (RPM): N/A gpu: amdgpu fan: 0
Info:      Processes: 498 Uptime: 27m wakeups: 0 Memory: 31.36 GiB used: 3.68 GiB (11.7%) Init: systemd v: 249 Compilers:
           gcc: 11.1.0 clang: 12.0.1 Packages: 1665 pacman: 1654 flatpak: 4 snap: 7 Shell: Zsh v: 5.8
           running-in: gnome-terminal inxi: 3.3.07

I’ve probably missed some obvious troubleshooting steps… or forgotten to mention that I’ve tried them but not sure how to narrow down the issue anymore and would be really nice to fix it. In short, I’m pretty confident it’s a generic issue with gnome apps (not just the terminal) it’s not a hardware or kernel compatibility issue as it’s not an issue when starting a gnome session, so it’s probably a single line of config that’s missing somewhere.

I’m not sure at all this is it … but might as well check …
Do you mean to have slick-study-desktop separate ?
In example mine would look like

127.0.0.1       localhost cscs-desktop
255.255.255.255 broadcasthost
::1             localhost cscs-desktop
::1             ip6-localhost ip6-loopback
fe00::0         ip6-localnet
ff00::0         ip6-mcastprefix
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters
ff02::3         ip6-allhosts

(noting that the order is important … and names on the same line that follow the first host are considered ‘aliases’)

1 Like

in your i3/config file, do you have below ?

exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1

1 Like

Ah I didn’t realise that was an issue! but I’ve updated it and hasn’t fixed my gnome-terminal issue… thanks for trying though!

# Host addresses
127.0.0.1  localhost localhost.localdomain slick-study-desktop
::1        localhost localhost.localdomain slick-study-desktop
::1        ip6-localhost ip6-loopback
fe00::0    ip6-localnet
ff00::0    ip6-mcastprefix
ff02::1    ip6-allnodes
ff02::2    ip6-allrouters
ff02::3    ip6-allhosts

Yes, right at the start. Or were you suggesting disabling it?

you should not disable it… gnome apps will look for authentication and session before they start… that’s where you should look…

Hi,

Did you make any progress?

I have the same issue!
I confirm that it is independent from kernel’s version, that gnome apps launch as fast as the other ones when one gnome app has been already launched during the session.

I have gnome desktop installed, later on I installed the i3 wm.
From my side, in the config file I have:

exec --no-startup-id /usr/lib/gsd-xsettings
exec_always --no-startup-id gnome-power-manager
exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1

I did face that problem on a certain install earlier… but I can’t remember how I solved it.
I think it was solved when I did clean install of i3wm without gnome.

maybe try

exec_always --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1

instead of

exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1

Hi,

Thanks for your input.
I tried what you proposed but it doesn’t work. (I think that the difference between exec and exec_always is that the latter execute the program when i3wm is reload while exec doesn’t.-- but I’m not sure)

I suppose that reinstalling manjaro with only i3wm would clean the mess I have. And that would probably be the best solution in the long term.
But I don’t have the time for this right now (nor the motivation to be honest, also I use stuff from gnome like for the wifi, bluetooth,… ).
Anyway, I will keep looking.
Thanks!

Yes and no, didn’t get another chance to look at it properly until today. I tried for ages to fix it, I was looking at polkit using sudo systemctl status polkit but didn’t find anything useful, tried fiddling with my config etc, tried following this article but not luck.

Long story short I installed i3-gnome from the AUR and then followed the advice on the Github Wiki, I switched to i3+Gnome on the login screen and then everything worked.

I feel like I’ve sidestepped the problem rather than fixing it as I still have no idea what specifically the issue was but at least it all works again.

Hi,

I kept looking and I found this on the Arch forum
https://bbs.archlinux.org/viewtopic.php?pid=1737005#p1737005
which seems to be the same problem.
but I’m not sure it applies here: in my .xinitrc there is (among other things)

get_session(){
    local dbus_args=(--sh-syntax --exit-with-session)
    case $1 in
        awesome) dbus_args+=(awesome) ;;
        bspwm) dbus_args+=(bspwm-session) ;;
        budgie) dbus_args+=(budgie-desktop) ;;
        cinnamon) dbus_args+=(cinnamon-session) ;;
        deepin) dbus_args+=(startdde) ;;
        enlightenment) dbus_args+=(enlightenment_start) ;;
        fluxbox) dbus_args+=(startfluxbox) ;;
        gnome) dbus_args+=(gnome-session) ;;
        i3|i3wm) dbus_args+=(i3 --shmlog-size 0) ;;
        jwm) dbus_args+=(jwm) ;;
        kde) dbus_args+=(startkde) ;;
        lxde) dbus_args+=(startlxde) ;;
        lxqt) dbus_args+=(lxqt-session) ;;
        mate) dbus_args+=(mate-session) ;;
        xfce) dbus_args+=(xfce4-session) ;;
        openbox) dbus_args+=(openbox-session) ;;
        *) dbus_args+=($DEFAULT_SESSION) ;;
    esac

    echo "dbus-launch ${dbus_args[*]}"
}

So, wouldn’t this already say that dbus-launch --exit-with-session i3 is present?

Plus, I’m not sure to understand the last message from the moderator.

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.