jbuchermn / newm

Wayland compositor
MIT License
960 stars 30 forks source link

Missing UI elements and a disappearing cursor #115

Closed mcs0042 closed 2 years ago

mcs0042 commented 2 years ago

First, thank you to all of the contributors for your hard work on this innovative project.

I had been trying out newm for a couple of days with only minor issues, but I ran into a few substantive problems after updating my system. Upon starting newm for the first time after the update, I ran into the following problems, which still persist at the time of my opening this issue (I'm only opening one issue because it seems quite plausible that they're related, but please let me know if I should open two separate issues):

The following are probably worth mentioning:

Here is a log file produced by a short newm session, launched with the default configuration file from a tty using the command start-newm: log file. During this session, I launched Alacritty (via MOD4 + Enter), launched foot via Alacritty, moused over foot (and watched my cursor disappear), and killed newm from foot via pkill newm. When I moused over foot, the following error message was printed to the Alacritty terminal (among various other informational and warning messages): err: render.c:3808: failed to load xcursor pointer 'text'. Because I used the default configuration file, there is a BacklightManager error near the beginning of the log file, but this doesn't appear to be related to the issues above (in fact, the error does not appear if I use my own configuration file, which doesn't make use of BacklightManager).

The log file linked above contains the following seemingly relevant lines: 00:00:00.007 [ERROR] [render/egl.c:183] EGL_EXT_platform_base not supported 00:00:00.007 [ERROR] [render/egl.c:473] Failed to create EGL context 00:00:00.007 [ERROR] [render/gles2/renderer.c:698] Could not initialize EGL

00:00:00.684 [ERROR] [types/output/cursor.c:269] Failed to pick cursor format 00:00:00.685 [ERROR] [types/output/cursor.c:354] Failed to render cursor buffer

00:00:00.785 [INFO] [../src/wm/wm_renderer.c:288] Could not find primitive shader 'corner' - defaulting 00:00:00.801 [INFO] [../src/wm/wm_renderer.c:288] Could not find primitive shader 'rounded_corners_border' - defaulting

Please let me know if there's any additional useful information I can provide.

Pandademic commented 2 years ago

@mcs0042 , I've contributed a few times here....

Can I see your config?

Does it have anything related to the mouse?

Hope I can help!

Pandademic commented 2 years ago

@jbuchermn or @CRAG666 would be able to confirm , but this mean your on 0.3?

mcs0042 commented 2 years ago

Thanks, @Pandademic!

My config is available here. I don't see anything obviously related to mice or cursors, but I could always be missing something since my config is a modified version of the default config.

The version number listed in flake.nix is 0.3alpha. Based on a cursory glance at the flake.nix file, it looks to me like my version of newm comes straight from the master branch.

Pandademic commented 2 years ago

@mcs0042 yep , your on 0.3. I do see some similarity between this and #111.

Can you try adding:

pywm = {
    'renderer_mode': 'wlr'
}

in the pywm section.

Also , just checking but , the config is inside a python file ... right?

That obviously isn't the cause of the issue , but it never hurt to check.

Finally , do you mind trying newm 0.2 , and seeing if it works?

Thanks!

jbuchermn commented 2 years ago

Hi,

thanks for reporting this issue in great detail. I'm using nixOS myself so we should be able to fix this.

Before I start digging deeper - I do recall something like this happening to myself after a nixOS update. I'm not entirely sure, what was actually the cause but it was along the lines of divergent nixpkgs commits used in nixos-rebuild switch (which installs drivers) and nix build "github:jbuchermn/newm#newm" (or in my case the home-manager config), which uses the drivers.

In your log, these lines

00:00:00.007 [INFO] [render/pixman/renderer.c:521] Creating pixman renderer
00:00:00.007 [INFO] [../src/wm/wm_renderer.c:497] Not using GLES2 - PyWM custom renderer disabled

are the important ones. wlroots is not able to create a GLES2-renderer (I suppose because of mismatched nixpkgs), and newm does not properly support pixman (only as a fallback, performance-wise this would never work).

As a sidenote: That's the first time I realized that flakes might not be such a good idea after all. Just running nix build "github:jbuchermn/newm#newm" uses whatever nixpkgs commit I checked into the newm repo without caring for your system.

You can check my nixOS config, the key line is

newmpkg.inputs.nixpkgs.follows = "nixpkgs";

Hope this helps.

mcs0042 commented 2 years ago

So the issue seems to have been the divergent nixpkgs commits; updating the flake.lock file seems to have fixed the problem! For posterity: I cloned the newm repository, ran nix flake lock --update-input nixpkgs to bring the version of nixos-unstable used by the newm flake to the version of nixos-unstable I used to build the current version of my system, and rebuilt newm using nix build .#newm. This new version of newm works as intended---none of the issues described in the original post appeared.

Just in case it's useful information, before updating the flake.lock, I tried setting pywm.renderer_mode to "wlr" as per @Pandademic's suggestion, but the same issues seemed to appear. I was in the process of figuring out how to install version 2 of newm on NixOS when @jbuchermn suggested that the problem might be due to divergent nixpkgs commits.

Huge thanks to both of you for your help!

Pandademic commented 2 years ago

Glad to help! Happy it worked out for you!