pop-os / launcher

Modular IPC-based desktop launcher service
Mozilla Public License 2.0
220 stars 42 forks source link

Cosmic toplevel plugin #141

Closed wash2 closed 1 year ago

wash2 commented 1 year ago

the cosmic toplevel plugin adds support for cosmic windows as items in the launcher.

mmstick commented 1 year ago

All good. Code is highly readable and well-written.

jacobgkau commented 1 year ago

This does not get open windows to show up in the launcher within COSMIC Epoch on a lemp10. I've tried with both released packages and master staging packages for COSMIC. My launcher commit is on 84eb3e3.

I get this output in journalctl when I open the launcher:

-- Boot 3ffd86a280d9486198e7ccaf6d48326b --
Sep 14 16:51:43 pop-os cosmic-session[2401]: Sep 14 22:51:43.558 TRCE new events: epoll_fd=10, res=1
Sep 14 16:51:43 pop-os cosmic-session[2401]: Sep 14 22:51:43.558 TRCE modify: epoll_fd=10, fd=11, ev=Event { key: 18446744073709551615, readable: true, writable: false }
Sep 14 16:51:43 pop-os /usr/libexec/gdm-wayland-session[2401]: 2022-09-14T22:51:43.558950Z ERROR cosmic-applet-host: cosmic_session::generic: Sep 14 22:51:43.558 TRCE new events: epoll_fd=10, res=1
Sep 14 16:51:43 pop-os /usr/libexec/gdm-wayland-session[2401]: 2022-09-14T22:51:43.558989Z ERROR cosmic-applet-host: cosmic_session::generic: Sep 14 22:51:43.558 TRCE modify: epoll_fd=10, fd=11, ev=Event { key: 18446744073709551615, readable: true, writable: false }
Sep 14 16:51:43 pop-os /usr/libexec/gdm-wayland-session[2401]: 2022-09-14T22:51:43.559006Z ERROR cosmic-applet-host: cosmic_session::generic: Sep 14 22:51:43.558 TRCE react: 1 ready wakers
Sep 14 16:51:43 pop-os /usr/libexec/gdm-wayland-session[2401]: 2022-09-14T22:51:43.559022Z ERROR cosmic-applet-host: cosmic_session::generic: Sep 14 22:51:43.558 TRCE main_loop: sleeping for 50 us
Sep 14 16:51:43 pop-os /usr/libexec/gdm-wayland-session[2401]: 2022-09-14T22:51:43.559060Z ERROR cosmic-applet-host: cosmic_session::generic: Sep 14 22:51:43.558 TRCE modify: epoll_fd=10, fd=9, ev=Event { key: 0, readable: true, writable: false }
Sep 14 16:51:43 pop-os /usr/libexec/gdm-wayland-session[2401]: 2022-09-14T22:51:43.559191Z ERROR cosmic-applet-host: cosmic_session::generic: Sep 14 22:51:43.559 TRCE main_loop: waiting on I/O
Sep 14 16:51:43 pop-os /usr/libexec/gdm-wayland-session[2401]: 2022-09-14T22:51:43.559224Z ERROR cosmic-applet-host: cosmic_session::generic: Sep 14 22:51:43.559 TRCE process_timers: 0 ready wakers
Sep 14 16:51:43 pop-os /usr/libexec/gdm-wayland-session[2401]: 2022-09-14T22:51:43.559244Z ERROR cosmic-applet-host: cosmic_session::generic: Sep 14 22:51:43.559 TRCE Poller::wait(_, None)
Sep 14 16:51:43 pop-os /usr/libexec/gdm-wayland-session[2401]: 2022-09-14T22:51:43.559259Z ERROR cosmic-applet-host: cosmic_session::generic: Sep 14 22:51:43.559 TRCE wait: epoll_fd=10, timeout=None
Sep 14 16:51:43 pop-os /usr/libexec/gdm-wayland-session[2401]: 2022-09-14T22:51:43.559276Z ERROR cosmic-applet-host: cosmic_session::generic: Sep 14 22:51:43.559 TRCE modify: epoll_fd=10, fd=12, ev=Event { key: 18446744073709551615, readable: true, writable: false }
Sep 14 16:51:43 pop-os /usr/libexec/gdm-wayland-session[2401]: 2022-09-14T22:51:43.559310Z ERROR cosmic-applet-host: cosmic_session::generic: Sep 14 22:51:43.559 TRCE block_on: sleep until notification
Sep 14 16:51:43 pop-os cosmic-session[2401]: Sep 14 22:51:43.558 TRCE react: 1 ready wakers
Sep 14 16:51:43 pop-os cosmic-session[2401]: Sep 14 22:51:43.558 TRCE main_loop: sleeping for 50 us
Sep 14 16:51:43 pop-os cosmic-session[2401]: Sep 14 22:51:43.558 TRCE modify: epoll_fd=10, fd=9, ev=Event { key: 0, readable: true, writable: false }
Sep 14 16:51:43 pop-os cosmic-session[2401]: Sep 14 22:51:43.559 TRCE main_loop: waiting on I/O
Sep 14 16:51:43 pop-os cosmic-session[2401]: Sep 14 22:51:43.559 TRCE process_timers: 0 ready wakers
Sep 14 16:51:43 pop-os cosmic-session[2401]: Sep 14 22:51:43.559 TRCE Poller::wait(_, None)
Sep 14 16:51:43 pop-os cosmic-session[2401]: Sep 14 22:51:43.559 TRCE wait: epoll_fd=10, timeout=None
Sep 14 16:51:43 pop-os cosmic-session[2401]: Sep 14 22:51:43.559 TRCE modify: epoll_fd=10, fd=12, ev=Event { key: 18446744073709551615, readable: true, writable: false }
Sep 14 16:51:43 pop-os cosmic-session[2401]: Sep 14 22:51:43.559 TRCE block_on: sleep until notification

The only two apps open when I'm testing right now are GNOME Terminal and Nautilus. (Interestingly, GNOME Terminal doesn't show up in the launcher's app search results in COSMIC Epoch, but it does show up in GNOME on the same machine. I tried opening the launcher without Terminal open, but the Nautilus window still doesn't show up.)

wash2 commented 1 year ago

This does not get open windows to show up in the launcher within COSMIC Epoch on a lemp10. I've tried with both released packages and master staging packages for COSMIC. My launcher commit is on 84eb3e3.

I get this output in journalctl when I open the launcher:

-- Boot 3ffd86a280d9486198e7ccaf6d48326b --
Sep 14 16:51:43 pop-os cosmic-session[2401]: Sep 14 22:51:43.558 TRCE new events: epoll_fd=10, res=1
Sep 14 16:51:43 pop-os cosmic-session[2401]: Sep 14 22:51:43.558 TRCE modify: epoll_fd=10, fd=11, ev=Event { key: 18446744073709551615, readable: true, writable: false }
Sep 14 16:51:43 pop-os /usr/libexec/gdm-wayland-session[2401]: 2022-09-14T22:51:43.558950Z ERROR cosmic-applet-host: cosmic_session::generic: Sep 14 22:51:43.558 TRCE new events: epoll_fd=10, res=1
Sep 14 16:51:43 pop-os /usr/libexec/gdm-wayland-session[2401]: 2022-09-14T22:51:43.558989Z ERROR cosmic-applet-host: cosmic_session::generic: Sep 14 22:51:43.558 TRCE modify: epoll_fd=10, fd=11, ev=Event { key: 18446744073709551615, readable: true, writable: false }
Sep 14 16:51:43 pop-os /usr/libexec/gdm-wayland-session[2401]: 2022-09-14T22:51:43.559006Z ERROR cosmic-applet-host: cosmic_session::generic: Sep 14 22:51:43.558 TRCE react: 1 ready wakers
Sep 14 16:51:43 pop-os /usr/libexec/gdm-wayland-session[2401]: 2022-09-14T22:51:43.559022Z ERROR cosmic-applet-host: cosmic_session::generic: Sep 14 22:51:43.558 TRCE main_loop: sleeping for 50 us
Sep 14 16:51:43 pop-os /usr/libexec/gdm-wayland-session[2401]: 2022-09-14T22:51:43.559060Z ERROR cosmic-applet-host: cosmic_session::generic: Sep 14 22:51:43.558 TRCE modify: epoll_fd=10, fd=9, ev=Event { key: 0, readable: true, writable: false }
Sep 14 16:51:43 pop-os /usr/libexec/gdm-wayland-session[2401]: 2022-09-14T22:51:43.559191Z ERROR cosmic-applet-host: cosmic_session::generic: Sep 14 22:51:43.559 TRCE main_loop: waiting on I/O
Sep 14 16:51:43 pop-os /usr/libexec/gdm-wayland-session[2401]: 2022-09-14T22:51:43.559224Z ERROR cosmic-applet-host: cosmic_session::generic: Sep 14 22:51:43.559 TRCE process_timers: 0 ready wakers
Sep 14 16:51:43 pop-os /usr/libexec/gdm-wayland-session[2401]: 2022-09-14T22:51:43.559244Z ERROR cosmic-applet-host: cosmic_session::generic: Sep 14 22:51:43.559 TRCE Poller::wait(_, None)
Sep 14 16:51:43 pop-os /usr/libexec/gdm-wayland-session[2401]: 2022-09-14T22:51:43.559259Z ERROR cosmic-applet-host: cosmic_session::generic: Sep 14 22:51:43.559 TRCE wait: epoll_fd=10, timeout=None
Sep 14 16:51:43 pop-os /usr/libexec/gdm-wayland-session[2401]: 2022-09-14T22:51:43.559276Z ERROR cosmic-applet-host: cosmic_session::generic: Sep 14 22:51:43.559 TRCE modify: epoll_fd=10, fd=12, ev=Event { key: 18446744073709551615, readable: true, writable: false }
Sep 14 16:51:43 pop-os /usr/libexec/gdm-wayland-session[2401]: 2022-09-14T22:51:43.559310Z ERROR cosmic-applet-host: cosmic_session::generic: Sep 14 22:51:43.559 TRCE block_on: sleep until notification
Sep 14 16:51:43 pop-os cosmic-session[2401]: Sep 14 22:51:43.558 TRCE react: 1 ready wakers
Sep 14 16:51:43 pop-os cosmic-session[2401]: Sep 14 22:51:43.558 TRCE main_loop: sleeping for 50 us
Sep 14 16:51:43 pop-os cosmic-session[2401]: Sep 14 22:51:43.558 TRCE modify: epoll_fd=10, fd=9, ev=Event { key: 0, readable: true, writable: false }
Sep 14 16:51:43 pop-os cosmic-session[2401]: Sep 14 22:51:43.559 TRCE main_loop: waiting on I/O
Sep 14 16:51:43 pop-os cosmic-session[2401]: Sep 14 22:51:43.559 TRCE process_timers: 0 ready wakers
Sep 14 16:51:43 pop-os cosmic-session[2401]: Sep 14 22:51:43.559 TRCE Poller::wait(_, None)
Sep 14 16:51:43 pop-os cosmic-session[2401]: Sep 14 22:51:43.559 TRCE wait: epoll_fd=10, timeout=None
Sep 14 16:51:43 pop-os cosmic-session[2401]: Sep 14 22:51:43.559 TRCE modify: epoll_fd=10, fd=12, ev=Event { key: 18446744073709551615, readable: true, writable: false }
Sep 14 16:51:43 pop-os cosmic-session[2401]: Sep 14 22:51:43.559 TRCE block_on: sleep until notification

The only two apps open when I'm testing right now are GNOME Terminal and Nautilus. (Interestingly, GNOME Terminal doesn't show up in the launcher's app search results in COSMIC Epoch, but it does show up in GNOME on the same machine. I tried opening the launcher without Terminal open, but the Nautilus window still doesn't show up.)

It isn't one of the included plugins by default, because it isn't included in the plugins list in the justfile, but I think if you test with this it should be built and installed:

git clone https://github.com/wash2/launcher
cd launcher
just plugins='calc desktop_entries files find cosmic_toplevel pulse recent scripts terminal web' all
just plugins='calc desktop_entries files find cosmic_toplevel pulse recent scripts terminal web' install

If we want to include it by default, i can adjust the justfile, but I left it out bc COSMIC is pre-alpha and I wanted to avoid causing any issues.

jacobgkau commented 1 year ago

I see. After building locally with those options, it is working. There are a few problems:

mpv-shot0079

If we want to include it by default, i can adjust the justfile, but I left it out bc COSMIC is pre-alpha and I wanted to avoid causing any issues.

We'll need it included by default before COSMIC launches (we'll probably want it even before an internal beta), and the launcher is a big part of the COSMIC interface. This doesn't seem to break anything in a GNOME session (the open window list for GNOME still works as expected, and the regression testing checklist still passes), so it may be good to include.

mmstick commented 1 year ago

Yeah it should be enabled by default

Drakulix commented 1 year ago

Even after selecting a window (which visually appears to work) and closing the launcher with ESC (which has a significant delay), keyboard input does not go to the focused window; I still need to click inside of the window before I can type into it.

This is a known issue of cosmic-comp (and already tracked). Keyboard focus does not return correctly after closing the launcher or app-library. I have also already figured out the cause, but a proper solution will need some refactoring.

jacobgkau commented 1 year ago

This is a known issue of cosmic-comp (and already tracked).

I don't see it being tracked in https://github.com/pop-os/cosmic-comp/issues, https://github.com/pop-os/launcher/issues, or https://github.com/pop-os/cosmic-epoch/issues. Where is/was it being tracked? (I'm also unable to replicate it after the latest COSMIC updates and on the latest commit from this PR, but not sure if that's a temporary coincidence or not.)

The package built from a6f8973 still doesn't have the plugin working by default; building locally using the just commands still gets it working.

wash2 commented 1 year ago

The package still doesn't have the plugin working by default; building locally using the just commands still gets it working.

This still seems to be an issue with the current commit

mmstick commented 1 year ago

The link has to be added to https://github.com/pop-os/launcher/blob/master/debian/pop-launcher.links

jacobgkau commented 1 year ago

This is failing to build on the build server and locally.

    Updating git repository `https://github.com/pop-os/cosmic-protocols`
error: failed to sync

Caused by:
  failed to load pkg lockfile

Caused by:
  failed to select a version for the requirement `serde_with = "^2.0.1"`
  candidate versions found which didn't match: 1.14.0, 1.13.0, 1.12.1, ...
  location searched: crates.io index
  required by package `pop-launcher v1.2.2 (/home/jacob/Work/launcher)`
make[1]: Leaving directory '/home/jacob/Work/launcher'
   dh_clean
 debian/rules build
dh build --with=systemd
   dh_update_autotools_config
   dh_autoreconf
   debian/rules override_dh_auto_build
make[1]: Entering directory '/home/jacob/Work/launcher'
env CARGO_HOME="$(pwd)/target/cargo" just rootdir=debian/tmp debug=0 vendor=1
cargo build -p pop-launcher-bin --frozen --offline --release
error: failed to get `cosmic-client-toolkit` as a dependency of package `pop-launcher-plugins v1.2.2 (/home/jacob/Work/launcher/plugins)`

Caused by:
  failed to load source for dependency `cosmic-client-toolkit`

Caused by:
  Unable to update https://github.com/pop-os/cosmic-protocols#1615d904

Caused by:
  can't checkout from 'https://github.com/pop-os/cosmic-protocols': you are in the offline mode (--offline)
error: Recipe `all` failed on line 38 with exit code 101
make[1]: *** [debian/rules:28: override_dh_auto_build] Error 101
make[1]: Leaving directory '/home/jacob/Work/launcher'
make: *** [debian/rules:9: build] Error 2
dpkg-buildpackage: error: debian/rules build subprocess returned exit status 2
wash2 commented 1 year ago

Ok builds should be fixed again. I cleanup up the dependencies in the plugin, and added the missing items from Build-Depends.

wash2 commented 1 year ago

I noticed this as well. I'll see if I can make it cause less of a delay when not using COSMIC.

wash2 commented 1 year ago

Ok the delay should be fixed