JetBrains / JetBrainsRuntime

Runtime environment based on OpenJDK for running IntelliJ Platform-based products on Windows, macOS, and Linux
GNU General Public License v2.0
1.36k stars 199 forks source link

testing wayland #242

Open 257 opened 1 year ago

257 commented 1 year ago

hi @mkartashev,

i have managed to run android-studio on top of jbr21 branch (by editing ~/.config/Google/AndroidStudioPreview2023.1/options/other.xml and pointing installDir of installed-jdk to jbr21).

i did that in hopes being able to run android-studio purely under wayland but it still take the xwayland route; passing -Dawt.toolkit.name=WLToolkit to /opt/android-studio/jbr/bin/java doesn't seem to have any effect.

any idea?

mkartashev commented 1 year ago

The Wayland toolkit is not really ready for this kind of testing. When it is, we will certainly make an announcement here: https://youtrack.jetbrains.com/issue/JBR-3206

If you would like to join the effort of supporting Wayland in Java, please check the work breakdown at the Wakefield project wiki, join the mailing list, and we can discuss things further there.

257 commented 1 year ago

sure. FYI i got it working by passing this (not the path to java):

Environment=JAVA_HOME=%h/src/java/JetBrainsRuntime/build/linux-x86_64-server-release/jdk/bin
Environment=CLASSPATH=/opt/android-studio/lib/app.jar:/opt/android-studio/lib/3rd-party-rt.jar:/opt/android-studio/lib/util.jar:/opt/android-studio/lib/util_rt.jar:/opt/android-studio/lib/util-8.jar:/opt/android-studio/lib/jps-model.jar:/opt/android-studio/lib/stats.jar:/opt/android-studio/lib/protobuf.jar:/opt/android-studio/lib/external-system-rt.jar:/opt/android-studio/lib/intellij-test-discovery.jar:/opt/android-studio/lib/forms_rt.jar:/opt/android-studio/lib/rd.jar:/opt/android-studio/lib/externalProcess-rt.jar:/opt/android-studio/lib/3rd-party-native.jar:/opt/android-studio/lib/annotations-java5.jar:/opt/android-studio/lib/annotations.jar:/opt/android-studio/lib/byte-buddy-agent.jar:/opt/android-studio/lib/error-prone-annotations.jar:/opt/android-studio/lib/groovy.jar:/opt/android-studio/lib/idea_rt.jar:/opt/android-studio/lib/intellij-coverage-agent-1.0.706.jar:/opt/android-studio/lib/junit.jar:/opt/android-studio/lib/junit4.jar:/opt/android-studio/lib/resources.jar:/opt/android-studio/lib/ant/lib/ant.jar
ExecStart=%h/src/java/JetBrainsRuntime/build/linux-x86_64-server-release/jdk/bin/java \
    -XX:ErrorFile=/tmp/java_error_in_studio_%p.log \
    -XX:HeapDumpPath=/tmp/java_error_in_studio_.hprof \
    -Xms256m \
    -Xmx2048m \
    -XX:ReservedCodeCacheSize=512m \
    -XX:+UseG1GC \
    -XX:SoftRefLRUPolicyMSPerMB=50 \
    -XX:CICompilerCount=2 \
    -XX:+HeapDumpOnOutOfMemoryError \
    -XX:-OmitStackTraceInFastThrow \
    -XX:+IgnoreUnrecognizedVMOptions \
    -XX:CompileCommand=exclude,com/intellij/openapi/vfs/impl/FilePartNodeRoot,trieDescend \
    -XX:MaxJavaStackTraceDepth=10000 \
    -ea \
    -Dawt.toolkit.name=WLToolkit \
    -Dsun.io.useCanonCaches=false \
    -Dsun.java2d.metal=true \
    -Djbr.catch.SIGABRT=true \
    -Djdk.http.auth.tunneling.disabledSchemes="" \
    -Djdk.attach.allowAttachSelf=true \
    -Djdk.module.illegalAccess.silent=true \
    -Dkotlinx.coroutines.debug=off \
    -Dsun.tools.attach.tmp.only=true \
    -Djb.vmOptionsFile=/opt/android-studio/bin/studio64.vmoptions \
    -Djava.system.class.loader=com.intellij.util.lang.PathClassLoader \
    -Didea.vendor.name=Google \
    -Didea.paths.selector=AndroidStudioPreview2023.1 \
    -Djna.boot.library.path=/opt/android-studio/lib/jna/amd64 \
    -Dpty4j.preferred.native.folder=/opt/android-studio/lib/pty4j \
    -Djna.nosys=true \
    -Djna.noclasspath=true \
    -Didea.platform.prefix=AndroidStudio \
    -XX:FlightRecorderOptions=stackdepth=256 \
    -Dsplash=true \
    --add-opens=java.base/java.io=ALL-UNNAMED \
    --add-opens=java.base/java.lang=ALL-UNNAMED \
    --add-opens=java.base/java.lang.ref=ALL-UNNAMED \
    --add-opens=java.base/java.lang.reflect=ALL-UNNAMED \
    --add-opens=java.base/java.net=ALL-UNNAMED \
    --add-opens=java.base/java.nio=ALL-UNNAMED \
    --add-opens=java.base/java.nio.charset=ALL-UNNAMED \
    --add-opens=java.base/java.text=ALL-UNNAMED \
    --add-opens=java.base/java.time=ALL-UNNAMED \
    --add-opens=java.base/java.util=ALL-UNNAMED \
    --add-opens=java.base/java.util.concurrent=ALL-UNNAMED \
    --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED \
    --add-opens=java.base/jdk.internal.vm=ALL-UNNAMED \
    --add-opens=java.base/sun.nio.ch=ALL-UNNAMED \
    --add-opens=java.base/sun.nio.fs=ALL-UNNAMED \
    --add-opens=java.base/sun.security.ssl=ALL-UNNAMED \
    --add-opens=java.base/sun.security.util=ALL-UNNAMED \
    --add-opens=java.base/sun.net.dns=ALL-UNNAMED \
    --add-opens=java.desktop/com.sun.java.swing.plaf.gtk=ALL-UNNAMED \
    --add-opens=java.desktop/java.awt=ALL-UNNAMED \
    --add-opens=java.desktop/java.awt.dnd.peer=ALL-UNNAMED \
    --add-opens=java.desktop/java.awt.event=ALL-UNNAMED \
    --add-opens=java.desktop/java.awt.image=ALL-UNNAMED \
    --add-opens=java.desktop/java.awt.peer=ALL-UNNAMED \
    --add-opens=java.desktop/java.awt.font=ALL-UNNAMED \
    --add-opens=java.desktop/javax.swing=ALL-UNNAMED \
    --add-opens=java.desktop/javax.swing.plaf.basic=ALL-UNNAMED \
    --add-opens=java.desktop/javax.swing.text.html=ALL-UNNAMED \
    --add-opens=java.desktop/sun.awt.X11=ALL-UNNAMED \
    --add-opens=java.desktop/sun.awt.wl=ALL-UNNAMED \
    --add-opens=java.desktop/sun.awt.datatransfer=ALL-UNNAMED \
    --add-opens=java.desktop/sun.awt.image=ALL-UNNAMED \
    --add-opens=java.desktop/sun.awt=ALL-UNNAMED \
    --add-opens=java.desktop/sun.font=ALL-UNNAMED \
    --add-opens=java.desktop/sun.java2d=ALL-UNNAMED \
    --add-opens=java.desktop/sun.swing=ALL-UNNAMED \
    --add-opens=jdk.attach/sun.tools.attach=ALL-UNNAMED \
    --add-opens=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED \
    --add-opens=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED \
    --add-opens=jdk.jdi/com.sun.tools.jdi=ALL-UNNAMED com.intellij.idea.Main
257 commented 1 year ago

looks great and runs smooth, most of the time :)

for any one daring to try out, making a list of things that don't work, and things that cause crashes. . intercting with the window before Gradle is finished at the startup crashes android-studio, so be patient :) [make sure project gradle is also poiting jbr21] . 'CTRL+Shift+f' (Search in Files), libinput? . clipboard, wl-{copy,paste}, yes i have set clipboard=unnamedplus in ~/.ideavimrc . oversized cursor (known issue? i'm using hyprland, wlroot-based with latest Intel driver, no nvidia here) . popup menus are not in focus

cies commented 1 year ago

Thanks! No time for me to test this this weekend, but IntelliJ is the only app that hold me from going Wayland. It kinda works in XWayland but there is some serious annoyances with that (flickering borders, copy-paste, ...).

257 commented 1 year ago

UPDATE: Environment=JAVA_HOME=%h/src/java/JetBrainsRuntime/build/linux-x86_64-server-release/images/jdk/bin

igor-ramazanov commented 1 year ago

Thanks! No time for me to test this this weekend, but IntelliJ is the only app that hold me from going Wayland. It kinda works in XWayland but there is some serious annoyances with that (flickering borders, copy-paste, ...).

Yeah, absolutely the same. I dream the day where I could finally move on to Wayland completely and ditch out XWayland to make life simpler. The IntelliJ is the only program that holds me from the migration.

mkurz commented 1 year ago

I am using IntelliJ since month on Wayland, daily, many hours, I don't really have problems, sometimes a popup windows is misplaced and sometimes I see some magenta artifacts, but I think that is because of the experimental GPU driver I am using (I am on Asahi Linux on a MacBook Pro M1 and things are still under development there).

Kakadus commented 1 year ago

I just added -Dawt.toolkit.name=WLToolkit to the vmoptions (located at $XDG_CONFIG_HOME/{{PRODUCT}}/{{PRODUCT}}.vmoptions) and switched via the Chosse Boot Runtime for the IDE to the manually build Runtime of branch jbr21.

I'm using this for pycharm and it is usable in general under wayland:

I'm on arch linux with sway (wlroots-based). Adding some start options from @257's comment above showed no effects

mkartashev commented 1 year ago

Clipboard works without any problems

Try pasting something you copied in PyCharm in another app. At this point, the clipboard is confined to just its own Java process.

gilvbp commented 1 year ago

Thanks! No time for me to test this this weekend, but IntelliJ is the only app that hold me from going Wayland. It kinda works in XWayland but there is some serious annoyances with that (flickering borders, copy-paste, ...).

Yeah, absolutely the same. I dream the day where I could finally move on to Wayland completely and ditch out XWayland to make life simpler. The IntelliJ is the only program that holds me from the migration.

+2 Me too!

gilvbp commented 1 year ago

image Nice!! @mkartashev awesome work!

offeex commented 1 year ago

how did you guys managed to achieve this?

  1. i built binary jbr
  2. Set these props to idea64.vmoptions:
    -Xmx2048m
    --add-opens=java.base/java.io=ALL-UNNAMED \
    -ea \
    -Dawt.toolkit.name=WLToolkit \
    --add-opens=java.base/java.lang=ALL-UNNAMED \
    --add-opens=java.base/java.lang.ref=ALL-UNNAMED \
    --add-opens=java.base/java.lang.reflect=ALL-UNNAMED \
    --add-opens=java.base/java.net=ALL-UNNAMED \
    --add-opens=java.base/java.nio=ALL-UNNAMED \
    --add-opens=java.base/java.nio.charset=ALL-UNNAMED \
    --add-opens=java.base/java.text=ALL-UNNAMED \
    --add-opens=java.base/java.time=ALL-UNNAMED \
    --add-opens=java.base/java.util=ALL-UNNAMED \
    --add-opens=java.base/java.util.concurrent=ALL-UNNAMED \
    --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED \
    --add-opens=java.base/jdk.internal.vm=ALL-UNNAMED \
    --add-opens=java.base/sun.nio.ch=ALL-UNNAMED \
    --add-opens=java.base/sun.nio.fs=ALL-UNNAMED \
    --add-opens=java.base/sun.security.ssl=ALL-UNNAMED \
    --add-opens=java.base/sun.security.util=ALL-UNNAMED \
    --add-opens=java.base/sun.net.dns=ALL-UNNAMED \
    --add-opens=java.desktop/com.sun.java.swing.plaf.gtk=ALL-UNNAMED \
    --add-opens=java.desktop/java.awt=ALL-UNNAMED \
    --add-opens=java.desktop/java.awt.dnd.peer=ALL-UNNAMED \
    --add-opens=java.desktop/java.awt.event=ALL-UNNAMED \
    --add-opens=java.desktop/java.awt.image=ALL-UNNAMED \
    --add-opens=java.desktop/java.awt.peer=ALL-UNNAMED \
    --add-opens=java.desktop/java.awt.font=ALL-UNNAMED \
    --add-opens=java.desktop/javax.swing=ALL-UNNAMED \
    --add-opens=java.desktop/javax.swing.plaf.basic=ALL-UNNAMED \
    --add-opens=java.desktop/javax.swing.text.html=ALL-UNNAMED \
    --add-opens=java.desktop/sun.awt.X11=ALL-UNNAMED \
    --add-opens=java.desktop/sun.awt.wl=ALL-UNNAMED \
    --add-opens=java.desktop/sun.awt.datatransfer=ALL-UNNAMED \
    --add-opens=java.desktop/sun.awt.image=ALL-UNNAMED \
    --add-opens=java.desktop/sun.awt=ALL-UNNAMED \
    --add-opens=java.desktop/sun.font=ALL-UNNAMED \
    --add-opens=java.desktop/sun.java2d=ALL-UNNAMED \
    --add-opens=java.desktop/sun.swing=ALL-UNNAMED \
    --add-opens=jdk.attach/sun.tools.attach=ALL-UNNAMED \
    --add-opens=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED \
    --add-opens=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED \
    --add-opens=jdk.jdi/com.sun.tools.jdi=ALL-UNNAMED com.intellij.idea.Main
  3. restarted idea and checked with xlsclients, idea still runs under xwayland (alongside with spotify)
offeex commented 1 year ago

oh, nevermind. running it from console with Environnment set to $JAVA_HOME helped

Lucaber commented 1 year ago

Im currently testing goland with wayland. My first issue was the not working forward and back buttons on a mouse. Here is a quick fix, i have no idea what im doing: https://github.com/Lucaber/JetBrainsRuntime/commit/9766bd1bbe344d42dfa700e288b7fd62f97e9d9c

hughesjs commented 1 year ago

I just added -Dawt.toolkit.name=WLToolkit to the vmoptions (located at $XDG_CONFIG_HOME/{{PRODUCT}}/{{PRODUCT}}.vmoptions) and switched via the Chosse Boot Runtime for the IDE to the manually build Runtime of branch jbr21.

I'm using this for pycharm and it is usable in general under wayland:

* no splash popup is shown

* pycharm and some popups such as the settings got a rather ugly menu-bar

* `Ctrl+Shift+F` does not work at all, no popup is opening

* the Find popup (double `Shift`) is opened but does not gain keyboard focus

* other popups (such as context menu) work (keyboard navigation possible)

* when switching between UI Elements, I see several
  ` SEVERE - sun.awt.wl.focus.WLKeyboardFocusManagerPeer - Unexpected focus owner set in a Window: null`
  in the logs, but cannot map it to a specific bug

* Clipboard works without any problems

I'm on arch linux with sway (wlroots-based). Adding some start options from @257's comment above showed no effects

Did you do anything else at all? I've built the latest jbr, set it as the runtime, confirmed that it's the runtime, and added the -Dawt.toolkit.name=WLToolkit to the bottom of ~/.config/Jetbrains/Rider2023.2/rider64.vmoptions. However, it still launches under xwayland for some reason, have I missed something?

My about page:

JetBrains Rider 2023.2.3
Build #RD-232.10203.29, built on November 1, 2023
xxx
xxx
xxx
Runtime version: 22-internal-adhoc.james.JetBrainsRuntime amd64
VM: OpenJDK 64-Bit Server VM by N/A
Linux 6.6.1-arch1-1
.NET Core v7.0.7 x64
GC: G1 Young Generation, G1 Concurrent GC, G1 Old Generation
Memory: 4096M
Cores: 32
Registry:
    ide.experimental.ui=true
    vcs.empty.toolwindow.show=false
    http.client.file.variables.available=true
    ide.new.project.model.index.case.sensitivity=true
    database.show.search.tab=false

Non-Bundled Plugins:
    com.intellij.resharper.HeapAllocationsViewer (2023.2.0)

Current Desktop: Hyprland

My vmoptions:

-Xmx4096m
-Dide.managed.by.toolbox=/home/james/.local/share/JetBrains/Toolbox/bin/jetbrains-toolbox
-Dtoolbox.notification.token=xxx
-Dtoolbox.notification.portFile=/home/james/.local/share/JetBrains/Toolbox/cache/ports/2059400218.port
-Dawt.toolkit.name=WLToolkit
257 commented 1 year ago

pass -D* args in commandline; see my ExecStart=. ignore options/other.xml, apparently just a cached state.

for best experiece move to nightly builds i.e. 2023.3. things run are smooth there :)

257 commented 1 year ago

UPDATE2: Environment=JAVA_HOME=path/to/JetBrainsRuntime/build/linux-x86_64-server-release/images/jdk/bin

hughesjs commented 1 year ago

UPDATE2: Environment=JAVA_HOME=path/to/JetBrainsRuntime/build/linux-x86_64-server-release/images/jdk/bin

So to be clear (since I can't test right now), if I run: Environment=JAVA_HOME=$JBRPATH rider.sh -Dawt.toolkit.name=WLToolkit that should do the job?

wilecoyote2015 commented 11 months ago

It runs surprisingly well for me! One Problem: I am using a tiling compositor (Hyprland). Here, PyCharm always shows a titlebar/window decoration. However, with a tiling compositor, window decorations are not desired and consume space. Using XWayland, no window decoration is visible. There doesn't seem to be a way to disable the window decoration? (At least with the new UI)

257 commented 11 months ago

2023.3

romanstingler commented 11 months ago

for me the latest 2023.3 (haven't tested any older version) the suggestion pop-up is way off (dual monitor configuration)

there is no menu where I can click on the File, ...., About

The top bar is white and not according to the theme. 2023-12-10-17:59:04

21b316.4 is way better, I hope 316 jcef will be the next official build 2023-12-22-09:20:04

izeroo commented 10 months ago

how did you guys managed to achieve this?

  1. i built binary jbr
  2. Set these props to idea64.vmoptions:
-Xmx2048m
--add-opens=java.base/java.io=ALL-UNNAMED \
-ea \
-Dawt.toolkit.name=WLToolkit \
--add-opens=java.base/java.lang=ALL-UNNAMED \
--add-opens=java.base/java.lang.ref=ALL-UNNAMED \
--add-opens=java.base/java.lang.reflect=ALL-UNNAMED \
--add-opens=java.base/java.net=ALL-UNNAMED \
--add-opens=java.base/java.nio=ALL-UNNAMED \
--add-opens=java.base/java.nio.charset=ALL-UNNAMED \
--add-opens=java.base/java.text=ALL-UNNAMED \
--add-opens=java.base/java.time=ALL-UNNAMED \
--add-opens=java.base/java.util=ALL-UNNAMED \
--add-opens=java.base/java.util.concurrent=ALL-UNNAMED \
--add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED \
--add-opens=java.base/jdk.internal.vm=ALL-UNNAMED \
--add-opens=java.base/sun.nio.ch=ALL-UNNAMED \
--add-opens=java.base/sun.nio.fs=ALL-UNNAMED \
--add-opens=java.base/sun.security.ssl=ALL-UNNAMED \
--add-opens=java.base/sun.security.util=ALL-UNNAMED \
--add-opens=java.base/sun.net.dns=ALL-UNNAMED \
--add-opens=java.desktop/com.sun.java.swing.plaf.gtk=ALL-UNNAMED \
--add-opens=java.desktop/java.awt=ALL-UNNAMED \
--add-opens=java.desktop/java.awt.dnd.peer=ALL-UNNAMED \
--add-opens=java.desktop/java.awt.event=ALL-UNNAMED \
--add-opens=java.desktop/java.awt.image=ALL-UNNAMED \
--add-opens=java.desktop/java.awt.peer=ALL-UNNAMED \
--add-opens=java.desktop/java.awt.font=ALL-UNNAMED \
--add-opens=java.desktop/javax.swing=ALL-UNNAMED \
--add-opens=java.desktop/javax.swing.plaf.basic=ALL-UNNAMED \
--add-opens=java.desktop/javax.swing.text.html=ALL-UNNAMED \
--add-opens=java.desktop/sun.awt.X11=ALL-UNNAMED \
--add-opens=java.desktop/sun.awt.wl=ALL-UNNAMED \
--add-opens=java.desktop/sun.awt.datatransfer=ALL-UNNAMED \
--add-opens=java.desktop/sun.awt.image=ALL-UNNAMED \
--add-opens=java.desktop/sun.awt=ALL-UNNAMED \
--add-opens=java.desktop/sun.font=ALL-UNNAMED \
--add-opens=java.desktop/sun.java2d=ALL-UNNAMED \
--add-opens=java.desktop/sun.swing=ALL-UNNAMED \
--add-opens=jdk.attach/sun.tools.attach=ALL-UNNAMED \
--add-opens=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED \
--add-opens=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED \
--add-opens=jdk.jdi/com.sun.tools.jdi=ALL-UNNAMED com.intellij.idea.Main
  1. restarted idea and checked with xlsclients, idea still runs under xwayland (alongside with spotify)

Added your vmoptions and switched to the manually build Runtime of branch jbr21 via IDE settings(search for vmoptions and runtime option). Seems to be working fine. xlsclinets did not show Android Studio. Ctrl+Shift+F works fine too.

I'm using this for Android Studio and it seems pretty usable in general under wayland:

Splash popup is shown, but at the left-top corner. Ctrl+Shift+F works, popup is normal the Find popup (double Shift) is opened and does gain keyboard focus Clipboard works without any problems Input-Method not working(fcitx5)

Ubuntu 22.04.3 LTS and jbr21 commit 25d6e5c49f8648c4f8640bb77781b2c43d2cccd7. Great work for JetBrains!

jcdickinson commented 10 months ago

Everything seems to work, same as the above comment, with some minor issues:

romanstingler commented 10 months ago

PhpStorm 2024.1EAP with runtime 21.336 https://www.youtube.com/watch?v=Wub2XwGqUkc

mimi89999 commented 10 months ago

It works great mostly, but I can't stop a process running in the terminal by sending Ctrl+C and that's very annoying.

Memoraike commented 10 months ago

@romanstingler , what kind of environment do you have?

romanstingler commented 10 months ago

@Memoraike It is Hyprland https://hyprland.org/ (Wayland)

If you want to use it I have to tell you that you have to keep some things in mind.

If you want to give it a try you can use my config (you have to carefully go through the config), or there are a lot of configs around https://github.com/romanstingler/dotfiles/tree/main/.config You will need to install Hyprland(or hyprland-git), xdg-desktop-portal-hyprland, waybar, wlogout, foot (as terminal, but you can change that in the config)

The IDE has Nord Theme installed

hughesjs commented 10 months ago

@Memoraike It is Hyprland https://hyprland.org/ (Wayland)

If you want to use it I have to tell you that you have to keep some things in mind.

* It is no install and use WM(Window manager)

* you have to go through its wiki https://wiki.hyprland.org/Getting-Started/Master-Tutorial/

* there is active development (multiple commits daily), but there is a stable version as well

* there are some login managers that don't play well (I don't use login managers, just boot and execute hyprland)

If you want to give it a try you can use my config (you have to carefully go through the config), or there are a lot of configs around https://github.com/romanstingler/dotfiles/tree/main/.config You will need to install Hyprland(or hyprland-git), xdg-desktop-portal-hyprland, waybar, wlogout, foot (as terminal, but you can change that in the config)

The IDE has Nord Theme installed

Can we keep this discussion on-topic please?

igorrizhyi commented 10 months ago

pycharm running basically fine except some minor things:

romanstingler commented 10 months ago

@igorrizhyi have you tried 2024.1 EAP and Java 21.336 ? There have been a few improvements

igorrizhyi commented 9 months ago

@romanstingler not yet, thanks for suggesting that, i will give it a go

update:

jcdickinson commented 9 months ago

Addition to my feedback above: it looks like left/right scrolling on a touchpad is not working.

BananchickPasha commented 9 months ago

I've made a nix flake for one command setup of any IDE with wayland support.

Latest EAP of Rider runs pretty smooth, can confirm issues with quick action menu and horizontal touchpad scrolling. I also had issues with non existing top menu on 2023.3, but on EAP it seems to be fixed.

sequencer commented 9 months ago

@BananchickPasha Is possible to give a overlay so we can test it easily.

BananchickPasha commented 9 months ago

@BananchickPasha Is possible to give a overlay so we can test it easily.

Yes, I've updated that flake so now it's easy to modify it

waj334 commented 8 months ago

Tested with IntelliJ IDEA 2024.1 EAP on WSL2 and so far the only I have is with the mouse cursor not changing properly. It gets stuck to whatever graphic it changed last instead of reverting back to the normal pointer graphic. Clicking and such doesn't seem to be affected.

EDIT: The clip board doesn't seem to work, so no copy/paste to or from the IDE.

storm2lele commented 8 months ago

IntelliJ IDEA 2024.1 EAP on WSL2:

Fcitx5 Input method is unavailable.

mkartashev commented 8 months ago

Fcitx5 Input method is unavailable.

As well as all the other input methods. Please, upvote this issue: JBR-5672 Wayland: support input methods

andreaippo commented 8 months ago

Could someone help please? I am trying to run this with IntelliJ IDEA EAP.

I have cloned and built the JBR: https://github.com/JetBrains/JetBrainsRuntime/tree/jbr21

I have then launched run idea.sh for the newly downloaded EAP release.

Then via Ctrl Shift A I have changed the boot runtime and set it to .../JetBrainsRuntime/build/linux-x86_64-server-release/jdk and also added the VM option -Dawt.toolkit.name=WLToolkit

And restarted IDEA

But whenever I pass the mouse over the window with xeyes, eyes still move (== XWayland).

What am I doing wrong?

Thanks! :)

andreaippo commented 8 months ago

Could someone help please? I am trying to run this with IntelliJ IDEA EAP.

I have cloned and built the JBR: https://github.com/JetBrains/JetBrainsRuntime/tree/jbr21

I have then launched run idea.sh for the newly downloaded EAP release.

Then via Ctrl Shift A I have changed the boot runtime and set it to .../JetBrainsRuntime/build/linux-x86_64-server-release/jdk and also added the VM option -Dawt.toolkit.name=WLToolkit

And restarted IDEA

But whenever I pass the mouse over the window with xeyes, eyes still move (== XWayland).

What am I doing wrong?

Thanks! :)

I was on the main branch instead of jbr21 LOL

Trying again after building the correct branch.

EDIT: it works! It's SOOO crisp at 125% scaling! <3 I'll try to run it as my daily, let's see how stable it is.

hdm9527 commented 8 months ago

idea eap running basically fine except some minor things. I am using a tiling compositor(hyprland). The title bar of the idea window is not hidden, which is normal in xwayland mode. image

andreaippo commented 8 months ago

idea eap running basically fine except some minor things. I am using a tiling compositor(hyprland). The title bar of the idea window is not hidden, which is normal in xwayland mode. image

I keep the window decoration enabled because I have configured KDE to minimize windows on middle click on the title bar.

And it's not following the usual QT/KDE window decorations, I guess this part is still WIP.

comparison with a KDE themed window decoration:

image

Otherwise looking really good, it seems like the issue I was having with the git menu that auto-closed when moving the mouse over it in order to select a different branch also got fixed, hurray!

mkartashev commented 8 months ago

And it's not following the usual QT/KDE window decorations, I guess this part is still WIP.

We haven't yet decided which path to follow wrt window decorations. Few WMs support the Wayland's protocol for server decorations, although this is probably the easiest way possible, but traditionally Java supported Gnome look-and-feel rather than KDE.

tindzk commented 8 months ago

@mkartashev Is there a setting to disable the window decoration altogether? This would be useful for tiling WM users.

mkartashev commented 8 months ago

@mkartashev Is there a setting to disable the window decoration altogether? This would be useful for tiling WM users.

Of course. When you switch to the New UI (File | Settings | Appearance & Behavior | New UI), there should be no window decoration by default.

andreaippo commented 8 months ago

I have a strange issue with fonts seemingly not getting anti-aliased properly on launch.

I'm on jbr21, sha: 29f7cc3c2f3a598935ad93be9b774aec83ae5b3e and using Build #IU-241.14494.17, built on March 6, 2024

Runtime version: 21.0.2-internal-adhoc.andrea.JetBrainsRuntime amd64 VM: OpenJDK 64-Bit Server VM by N/A Linux 6.7.9-1-default GC: G1 Young Generation, G1 Concurrent GC, G1 Old Generation Memory: 3910M Cores: 16 Registry: debugger.new.tool.window.layout=true ide.experimental.ui=true credentialStore.linux.prefer.kwallet=true Kotlin: 241.14494.17-IJ Current Desktop: KDE

This is what I see when the window opens:

image

And here's how I work around the problem, fonts become anti-aliased again as soon as I double-click two times the window header to tile it and then maximize it again:

image

First screenshot is headache-inducing and not usable, second one is crisp.

Not sure you can tell the difference (quite striking) because there's a bug on Spectacle right now preventing for some reason to take true-to-life screenshots on KDE...

EDIT: yeah you can see some "blur" in both screenshots, but the second one has definitely better font anti-aliasing

mkartashev commented 8 months ago

@andreaippo This looks like JBR-6448 that I am about to merge a fix for. Should be out this week, I hope. There are a few workarounds mentioned there as well.

hdm9527 commented 8 months ago

@mkartashev Is there a setting to disable the window decoration altogether? This would be useful for tiling WM users.

Of course. When you switch to the New UI (File | Settings | Appearance & Behavior | New UI), there should be no window decoration by default.

I am using NEW UI, but the window decoration is still not hidden. image

mkartashev commented 8 months ago

Dialog title bars are not supposed to be hidden. Please, file a feature request for that on youtrack.

andreaippo commented 8 months ago

@andreaippo This looks like JBR-6448 that I am about to merge a fix for. Should be out this week, I hope. There are a few workarounds mentioned there as well.

Thanks, I am honestly impressed by the speed at which things are progressing!

2024 might not be the year of Linux desktop, but it's sure shaping up to be the year of Wayland (effing finally :D )