Adamcake / Bolt

An alternative launcher for your favourite MMO
GNU Affero General Public License v3.0
122 stars 18 forks source link

Request to update documentation to include fixes for known issues. #19

Closed EspressoKyle closed 4 weeks ago

EspressoKyle commented 5 months ago

I am using Bolt on Arch Linux to play OSRS with RuneLite.

I have been troubleshooting an audio-related issue. This issue seems to be affecting some RuneLite Linux users. I found a solution to this issue mentioned here

I'm not very familiar with the inner workers on java relating to the --configure option that is mentioned in that solution. Although, I was able to confirm, that JVM options that are added via the java --configure option do not apply to instances of runelite that are started through the Bolt Launcher.

I suspect this is due to the fact the Bolt Launcher sets its own JAVA HOME, but unsure.

As I was able to confirm that adding those JVM options to the execution of the RuneLite.jar from outside of Bolt Launcher resolved the "no sound" issue for myself. As the JVM options applied via --configure did not apply to instances of RuneLite.jar that was launched through the Bolt Launcher, the temporary solution that I was able to implement is as follows.

  1. Execute java -jar RuneLite.jar --configure and add the following options to the JVM section:
    -Djavax.sound.sampled.Clip=com.sun.media.sound.DirectAudioDeviceProvider
    -Djavax.sound.sampled.Port=com.sun.media.sound.PortMixerProvider
    -Djavax.sound.sampled.SourceDataLine=com.sun.media.sound.DirectAudioDeviceProvider
    -Djavax.sound.sampled.TargetDataLine=com.sun.media.sound.DirectAudioDeviceProvider
  2. Unmute the login screen music and see if this fixes the "no sound" issue, if it does, then proceed to the next steps.
  3. execute archlinux-java get and make note of the java version from the output.
  4. (as root) cd /usr/lib/jvm/<JAVA_VERSION>/bin
  5. (as root) mv ./java ./java-real
  6. (as root) vim ./java and populate it with the following:
    
    #!/bin/bash

echo "$*" | grep -i "\ runelite.jar"

arguments=$(echo "$*" | sed "s/net.runelite.client.RuneLite//g")

if [ "$?" -eq 0 ]; then java-real $arguments -Djavax.sound.sampled.Clip=com.sun.media.sound.DirectAudioDeviceProvider -Djavax.sound.sampled.Port=com.sun.media.sound.PortMixerProvider -Djavax.sound.sampled.SourceDataLine=com.sun.media.sound.DirectAudioDeviceProvider -Djavax.sound.sampled.TargetDataLine=com.sun.media.sound.DirectAudioDeviceProvider net.runelite.client.RuneLite else java-real $* fi


7.(as root) chmod a+x ./java
8. attempt launching RuneLite through the Bolt Launcher.

Notes:
 I recognize this solution isn't ideal for several reasons and should only function as a temporary "fix" until the downstream issue with alsa/java/runelite is resolved. Although its not an issue with Bolt Launcher itself, given the current working fix for this issue is a sub par solution, as you have to replace the java binary with a "helper" bash script that intercepts and modifies usage of the java command specifically when used for the RuneLite.jar. This can present issues as if java is updated, or you switch java versions, the solution will stop functioning, additionally, this solution may have an unidentified issue that leads to the execution of other java applications being affected.

With that in mind, below are the instructions for how to "undo" the changes.

(as root)
1. `cd /usr/lib/jvm/<JAVA VERSION>/bin`
2. `mv ./java-real ./java`
3. `chmod a+x ./java`

and if you need to completely reinstall java, please refer to your distributions instructions for that matter.
Adamcake commented 5 months ago

I talked to the runelite devs about this recently. The reason --configure doesn't work is because it saves a settings.json in the CWD, and runelite searches for that file in CWD on startup, but when Bolt starts its CWD will be somewhere in /opt.

The solution will be to add a "RuneLite (configure)" option to Bolt like the official launcher has. I'd already been meaning to do this but been wrapped up in something else recently.

A better workaround for now might be to set the jvm args you need in the _JAVA_OPTIONS environment variable.

On Tue, 30 Jan 2024, 15:22 Kyle Walters, @.***> wrote:

I am using Bolt on Arch Linux to play OSRS with RuneLite.

I have been troubleshooting an audio-related issue. This issue seems to be affecting some RuneLite Linux users. I found a solution to this issue mentioned here https://github.com/runelite/runelite/issues/3525#issuecomment-1813525702

I'm not very familiar with the inner workers on java relating to the --configure option that is mentioned in that solution. Although, I was able to confirm, that JVM options that are added via the java --configure option do not apply to instances of runelite that are started through the Bolt Launcher.

I suspect this is due to the fact the Bolt Launcher sets its own JAVA HOME, but unsure.

As I was able to confirm that adding those JVM options to the execution of the RuneLite.jar from outside of Bolt Launcher resolved the "no sound" issue for myself. As the JVM options applied via --configure did not apply to instances of RuneLite.jar that was launched through the Bolt Launcher, the temporary solution that I was able to implement is as follows.

  1. Execute java -jar RuneLite.jar --configure and add the following options to the JVM section:

-Djavax.sound.sampled.Clip=com.sun.media.sound.DirectAudioDeviceProvider -Djavax.sound.sampled.Port=com.sun.media.sound.PortMixerProvider -Djavax.sound.sampled.SourceDataLine=com.sun.media.sound.DirectAudioDeviceProvider -Djavax.sound.sampled.TargetDataLine=com.sun.media.sound.DirectAudioDeviceProvider

  1. Unmute the login screen music and see if this fixes the "no sound" issue, if it does, then proceed to the next steps.
  2. execute archlinux-java get and make note of the java version from the output.
  3. (as root) cd /usr/lib/jvm//bin
  4. (as root) mv ./java ./java-real
  5. (as root) vim ./java and populate it with the following:

!/bin/bash

echo "$*" | grep -i "\ runelite.jar"

arguments=$(echo "$*" | sed "s/net.runelite.client.RuneLite//g")

if [ "$?" -eq 0 ]; then java2 $arguments -Djavax.sound.sampled.Clip=com.sun.media.sound.DirectAudioDeviceProvider -Djavax.sound.sampled.Port=com.sun.media.sound.PortMixerProvider -Djavax.sound.sampled.SourceDataLine=com.sun.media.sound.DirectAudioDeviceProvider -Djavax.sound.sampled.TargetDataLine=com.sun.media.sound.DirectAudioDeviceProvider net.runelite.client.RuneLite else java2 $* fi

7.(as root) chmod a+x ./java

  1. attempt launching RuneLite through the Bolt Launcher.

Notes: I recognize this solution isn't ideal for several reasons and should only function as a temporary "fix" until the downstream issue with alsa/java/runelite is resolved. Although its not an issue with Bolt Launcher itself, given the current working fix for this issue is a sub par solution, as you have to replace the java binary with a "helper" bash script that intercepts and modifies usage of the java command specifically when used for the RuneLite.jar. This can present issues as if java is updated, or you switch java versions, the solution will stop functioning, additionally, this solution may have an unidentified issue that leads to the execution of other java applications being affected.

With that in mind, below are the instructions for how to "undo" the changes.

(as root)

  1. cd /usr/lib/jvm//bin
  2. mv ./java2 ./java
  3. chmod a+x ./java

and if you need to completely reinstall java, please refer to your distributions instructions for that matter.

— Reply to this email directly, view it on GitHub https://github.com/Adamcake/Bolt/issues/19, or unsubscribe https://github.com/notifications/unsubscribe-auth/AHG6BIAZJ2UJNA5RXHRAJWLYREF43AVCNFSM6AAAAABCROHW42VHI2DSMVQWIX3LMV43ASLTON2WKOZSGEYDQMJTGA2DOMA . You are receiving this because you are subscribed to this thread.Message ID: @.***>

deejcunningham commented 5 months ago

I tried using _JAVA_OPTIONS without luck.

This Runelite issue thread, mentions configuring the Runelite JAR with the same options but that doesn't fix it for me either, even if I tell bolt to use that as a custom Runelite JAR. I am not privy to the inner (or outer tbh) workings of Java so I'm definitely missing something :upside_down_face:.

I haven't tried @EspressoKyle's bash wrapper script solution.

Adamcake commented 5 months ago

An extra wrinkle in this situation is that runelite.jar is actually just a launcher, which downloads all the latest runelite binaries and runs them by starting up a totally separate JVM. So passing command-line options to the launcher's JVM doesn't configure the actual game client's JVM... but you can do that by using runelite's -J option to pass through args.

java --some-jvm-arg -jar runelite.jar -J--some-jvm-arg Here the first configures the launcher and the second configures the game. The arguments do need to be in exactly this order: JVM args before the JAR, and -J args after it.

I have no idea how this is represented in the --configure menu though.

EspressoKyle commented 5 months ago

@deejcunningham

I tried using _JAVA_OPTIONS without luck.

I haven't tried updating my _JAVA_OPTIONS env variable so I am not able to confirm myself yet. But, I would think that should of worked. How environment variables are applied in Linux can be a bit non-intuitive. Please attempt the following and report back if possible.

1 - Remove mentions of _JAVA_OPTIONS from the following files (assuming your default shell is Bash (/bin/bash).

  1. /etc/environment
  2. /etc/profile
  3. $HOME/.profile
  4. $HOME/.bash_profile
  5. $HOME/.bash_login
  6. $HOME/.bashrc

2 - Have the environment variable exported at session start

add... export _JAVA_OPTIONS="-Djavax.sound.sampled.Clip=com.sun.media.sound.DirectAudioDeviceProvider -Djavax.sound.sampled.Port=com.sun.media.sound.PortMixerProvider -Djavax.sound.sampled.SourceDataLine=com.sun.media.sound.DirectAudioDeviceProvider -Djavax.sound.sampled.TargetDataLine=com.sun.media.sound.DirectAudioDeviceProvider" ... to $HOME/.profile

3 - Restart your display manager

How to restart your display manager is different depending on if your system uses Systemd or Sysctl and which display manager that you are using (GDM, LightDM, etc). If you know how to restart your display manager, then do that, otherwise just reboot your device.

4 - open a terminal and execute echo $_JAVA_OPTIONS to confirm that the environment variable is set and exported.

5 - Launch Bolt Launcher and test to see if the issue is resolved.

This Runelite issue https://github.com/runelite/runelite/issues/3525#issuecomment-1813525702, mentions configuring >the Runelite JAR with the same options but that doesn't fix it for me either, even if I tell bolt to use that as a custom >Runelite JAR. I am not privy to the inner (or outer tbh) workings of Java so I'm definitely missing something 🙃.

I haven't tried @EspressoKyle's bash wrapper script solution.

During my original testing before I created the mentioned helper script, I also tried using the --configure option on a separately downloaded Runelite Jar file and then I executed java -jar ./Runelite.jar --configure prior to configuring bolt to use that specific jar file (to see if the JVM options that I configured in the --configure dialog would also apply to jar files that were ran through Bolt Launcher. Sadly, the JVM options that I specified in the --configure only applied when I ran that specific runelite jar directly with java -jar ./Runelite.jar. But, it didn't apply to that same RuneLite jar being started by the Bolt Launcher.

I was able to provide definitive confirmation that any JVM options configured using --configure will not apply to the RuneLite.jar file executed by Bolt Launcher doing the following:

  1. I configured the helper script that I created to replace the java executable only add the --configure option when the java command is executed and Runelite.jar is mentioned in the command line arguments ("$*" in bash).
  2. When I started the RuneLite Jar through the bolt launcher, the --configure dialog opened and the JVM Options section was blank. Following that, I re-executed java -jar ./Runelite.jar --configure and confirmed that the settings that I configured in the JVM Options section were still present while running the runelite.jar directly (not using Bolt Launcher).

The above confirmed my suspicions that the JVM options configured using the --configure option were not being applied when the Runelite.jar was started by the Bolt Launcher.


An extra wrinkle in this situation is that runelite.jar is actually just a launcher, which downloads all the latest runelite binaries and runs them by starting up a totally separate JVM. So passing command-line options to the launcher's JVM doesn't configure the actual game client's JVM... but you can do that by using runelite's -J option to pass through args.

java --some-jvm-arg -jar runelite.jar -J--some-jvm-arg Here the first configures the launcher and the second configures the game. The arguments do need to be in exactly this order: JVM args before the JAR, and -J args after it.

I have no idea how this is represented in the --configure menu though.

@Adamcake

additional information

Regarding your thinking that the JVM options that are applied to the parent RuneLite.jar file wouldn't be applied the the subsequently downloaded jar files.

This was intriguing to me as the helper script that I wrote should only inject those mentioned JVM options into instances where the java command is used in combination with (case insensitive) runelite.jar is also used.

Thus, I performed some further testing by modifying my helper script to capture exactly what uses of the java command the JVM Options were being injected into. Here is the modified helper script with an additional line to log any commands that my script is injecting those JVM options into, also log that entire command to a file. With this, we can see the entirety of any commands that are being passed the JVM options through my helper script.

Modified helper script:

#!/bin/bash

echo "$*" | grep -iE "\ ('runelite.jar'|'hdos.jar')"

arguments=$(echo "$*" | sed "s/net\.runelite\.client\.RuneLite//g")

if [ "$?" -eq 0 ]; then
        echo "java2 $arguments -Djavax.sound.sampled.Clip=com.sun.media.sound.DirectAudioDeviceProvider -Djavax.sound.sampled.Port=com.sun.media.sound.PortMixerProvider -Djavax.sound.sampled.SourceDataLine=com.sun.media.sound.DirectAudioDeviceProvider -Djavax.sound.sampled.TargetDataLine=com.sun.media.sound.DirectAudioDeviceProvider net.runelite.client.RuneLite" | tee -a ~yooblie/tmp.txt
        java2 $arguments -Djavax.sound.sampled.Clip=com.sun.media.sound.DirectAudioDeviceProvider -Djavax.sound.sampled.Port=com.sun.media.sound.PortMixerProvider -Djavax.sound.sampled.SourceDataLine=com.sun.media.sound.DirectAudioDeviceProvider -Djavax.sound.sampled.TargetDataLine=com.sun.media.sound.DirectAudioDeviceProvider net.runelite.client.RuneLite
else
        java2 $*
fi

Here is the findings:

My helper script injected the mentioned JVM options into two different commands that were both executed following pressing the "Runelite" button within the Bolt Launcher.

Command #1

java2 -Duser.home=/home/yooblie/.local/share/bolt-launcher -jar /home/yooblie/.local/share/bolt-launcher/runelite.jar -J-Duser.home=/home/yooblie/.local/share/bolt-launcher -Djavax.sound.sampled.Clip=com.sun.media.sound.DirectAudioDeviceProvider -Djavax.sound.sampled.Port=com.sun.media.sound.PortMixerProvider -Djavax.sound.sampled.SourceDataLine=com.sun.media.sound.DirectAudioDeviceProvider -Djavax.sound.sampled.TargetDataLine=com.sun.media.sound.DirectAudioDeviceProvider net.runelite.client.RuneLite

Command #2

java2 -cp /home/yooblie/.local/share/bolt-launcher/.runelite/repository2/client-1.10.21.jar:/home/yooblie/.local/share/bolt-launcher/.runelite/repository2/slf4j-api-1.7.25.jar:/home/yooblie/.local/share/bolt-launcher/.runelite/repository2/logback-classic-1.2.9.jar:/home/yooblie/.local/share/bolt-launcher/.runelite/repository2/logback-core-1.2.9.jar:/home/yooblie/.local/share/bolt-launcher/.runelite/repository2/jopt-simple-5.0.1.jar:/home/yooblie/.local/share/bolt-launcher/.runelite/repository2/guava-23.2-jre.jar:/home/yooblie/.local/share/bolt-launcher/.runelite/repository2/guice-4.1.0-no_aop.jar:/home/yooblie/.local/share/bolt-launcher/.runelite/repository2/javax.inject-1.jar:/home/yooblie/.local/share/bolt-launcher/.runelite/repository2/aopalliance-1.0.jar:/home/yooblie/.local/share/bolt-launcher/.runelite/repository2/gson-2.8.5.jar:/home/yooblie/.local/share/bolt-launcher/.runelite/repository2/flatlaf-3.2.5-rl2.jar:/home/yooblie/.local/share/bolt-launcher/.runelite/repository2/commons-text-1.2.jar:/home/yooblie/.local/share/bolt-launcher/.runelite/repository2/commons-lang3-3.7.jar:/home/yooblie/.local/share/bolt-launcher/.runelite/repository2/archive-patcher-applier-1.2.jar:/home/yooblie/.local/share/bolt-launcher/.runelite/repository2/jna-5.9.0.jar:/home/yooblie/.local/share/bolt-launcher/.runelite/repository2/jna-platform-5.9.0.jar:/home/yooblie/.local/share/bolt-launcher/.runelite/repository2/jsr305-3.0.2.jar:/home/yooblie/.local/share/bolt-launcher/.runelite/repository2/protobuf-javalite-3.21.12.jar:/home/yooblie/.local/share/bolt-launcher/.runelite/repository2/rlawt-1.4.jar:/home/yooblie/.local/share/bolt-launcher/.runelite/repository2/lwjgl-3.3.2.jar:/home/yooblie/.local/share/bolt-launcher/.runelite/repository2/lwjgl-3.3.2-natives-linux.jar:/home/yooblie/.local/share/bolt-launcher/.runelite/repository2/lwjgl-opengl-3.3.2.jar:/home/yooblie/.local/share/bolt-launcher/.runelite/repository2/lwjgl-opengl-3.3.2-natives-linux.jar:/home/yooblie/.local/share/bolt-launcher/.runelite/repository2/lwjgl-opencl-3.3.2.jar:/home/yooblie/.local/share/bolt-launcher/.runelite/repository2/client-patch-1.10.21.jar:/home/yooblie/.local/share/bolt-launcher/.runelite/repository2/http-api-1.2.12.jar:/home/yooblie/.local/share/bolt-launcher/.runelite/repository2/okhttp-3.14.9.jar:/home/yooblie/.local/share/bolt-launcher/.runelite/repository2/okio-1.17.2.jar:/home/yooblie/.local/share/bolt-launcher/.runelite/repository2/discord-1.4.jar:/home/yooblie/.local/share/bolt-launcher/.runelite/repository2/runelite-api-1.10.21-runtime.jar -XX:+DisableAttachMechanism -Xmx768m -Xss2m -XX:CompileThreshold=1500 -Dsun.java2d.opengl=false -Drunelite.launcher.version=2.6.13 -XX:ErrorFile=/home/yooblie/.local/share/bolt-launcher/.runelite/logs/jvm_crash_pid_%p.log -Duser.home=/home/yooblie/.local/share/bolt-launcher  -Djavax.sound.sampled.Clip=com.sun.media.sound.DirectAudioDeviceProvider -Djavax.sound.sampled.Port=com.sun.media.sound.PortMixerProvider -Djavax.sound.sampled.SourceDataLine=com.sun.media.sound.DirectAudioDeviceProvider -Djavax.sound.sampled.TargetDataLine=com.sun.media.sound.DirectAudioDeviceProvider  -Djavax.sound.sampled.Clip=com.sun.media.sound.DirectAudioDeviceProvider -Djavax.sound.sampled.Port=com.sun.media.sound.PortMixerProvider -Djavax.sound.sampled.SourceDataLine=com.sun.media.sound.DirectAudioDeviceProvider -Djavax.sound.sampled.TargetDataLine=com.sun.media.sound.DirectAudioDeviceProvider net.runelite.client.RuneLite
Adamcake commented 4 months ago

Bolt version 0.8.2 is out on AUR and has a "Configure RuneLite" launch option which launches with --configure. I'd appreciate one of you confirming that it works correctly.

Adamcake commented 4 months ago

Regarding your helper script, command 2 is definitely the parent process spawning the child process. So your helper script is intercepting that somehow.

deejcunningham commented 4 months ago

@Adamcake That doesn't seem to have done the trick for me :frowning_face:

I used the new "Configure RuneLite" button to set the JVM args however, I am still having the same sound issue(s). No sound output from RuneLite if I have other sound playing when it starts up. If I have no other sound playing when starting RuneLite, then RL sound works, but no other sounds will as long as RL is running.

Here's the full output from `bolt`: ``` [dj@saturn ~]$ bolt [0205/214858.679010:WARNING:chrome_browser_cloud_management_controller.cc(87)] Could not create policy manager as CBCM is not enabled. [0205/214858.680086:ERROR:object_proxy.cc(590)] Failed to call method: org.freedesktop.DBus.Properties.Get: object_path= /org/freedesktop/portal/desktop: org.freedesktop.DBus.Error.InvalidArgs: No such interface “org.freedesktop.portal.FileChooser” [0205/214858.680101:WARNING:property.cc(144)] version: GetAndBlock: failed. [0205/214858.680114:ERROR:select_file_dialog_linux_portal.cc(274)] Failed to read portal version property [B] OnContextInitialized [B] Browser::Window popup constructor, this=96963645027232 [B] OnWindowCreated 0 this=96963645027232 [B] OnAfterCreated for browser 1 [B] OnBrowserCreated this=96963645027232 1 [R] OnBrowserCreated for browser 1 [0205/214858.818447:WARNING:sandbox_linux.cc(393)] InitializeSandbox() called with multiple threads in process gpu-process. [R] OnLoadEnd for browser 1 [0205/214858.911722:ERROR:ev_root_ca_metadata.cc(161)] Failed to decode OID: 0 [B] runelite temp_dir: /run/user/1000/bolt-runelite-CzeL0g [B] Successfully spawned game process with pid 21023 Picked up _JAVA_OPTIONS: -Djavax.sound.sampled.Clip=com.sun.media.sound.DirectAudioDeviceProvider -Djavax.sound.sampled.Port=com.sun.media.sound.PortMixerProvider -Djavax.sound.sampled.SourceDataLine=com.sun.media.sound.DirectAudioDeviceProvider -Djavax.sound.sampled.TargetDataLine=com.sun.media.sound.DirectAudioDeviceProvider 2024-02-05 21:49:01 CST [main] INFO net.runelite.launcher.Launcher - RuneLite Launcher version 2.6.13 2024-02-05 21:49:01 CST [main] INFO net.runelite.launcher.Launcher - Launcher configuration: debug: false nodiffs: false skip tls verification: false noupdates: false safe mode: false scale: system client arguments: none jvm arguments: [-Duser.home=/home/dj/.local/share/bolt-launcher] hardware acceleration mode: AUTO launch mode: AUTO 2024-02-05 21:49:01 CST [main] INFO net.runelite.launcher.Launcher - OS name: Linux, version: 6.7.3-arch1-1, arch: amd64 2024-02-05 21:49:01 CST [main] INFO net.runelite.launcher.Launcher - Using hardware acceleration mode: OFF 2024-02-05 21:49:01 CST [main] INFO net.runelite.launcher.Launcher - Verified hash of client-1.10.21.1.jar 2024-02-05 21:49:01 CST [main] INFO net.runelite.launcher.Launcher - Verified hash of slf4j-api-1.7.25.jar 2024-02-05 21:49:01 CST [main] INFO net.runelite.launcher.Launcher - Verified hash of logback-classic-1.2.9.jar 2024-02-05 21:49:01 CST [main] INFO net.runelite.launcher.Launcher - Verified hash of logback-core-1.2.9.jar 2024-02-05 21:49:01 CST [main] INFO net.runelite.launcher.Launcher - Verified hash of jopt-simple-5.0.1.jar 2024-02-05 21:49:01 CST [main] INFO net.runelite.launcher.Launcher - Verified hash of guava-23.2-jre.jar 2024-02-05 21:49:01 CST [main] INFO net.runelite.launcher.Launcher - Verified hash of guice-4.1.0-no_aop.jar 2024-02-05 21:49:01 CST [main] INFO net.runelite.launcher.Launcher - Verified hash of javax.inject-1.jar 2024-02-05 21:49:01 CST [main] INFO net.runelite.launcher.Launcher - Verified hash of aopalliance-1.0.jar 2024-02-05 21:49:01 CST [main] INFO net.runelite.launcher.Launcher - Verified hash of gson-2.8.5.jar 2024-02-05 21:49:01 CST [main] INFO net.runelite.launcher.Launcher - Verified hash of flatlaf-3.2.5-rl4.jar 2024-02-05 21:49:01 CST [main] INFO net.runelite.launcher.Launcher - Verified hash of commons-text-1.2.jar 2024-02-05 21:49:01 CST [main] INFO net.runelite.launcher.Launcher - Verified hash of commons-lang3-3.7.jar 2024-02-05 21:49:01 CST [main] INFO net.runelite.launcher.Launcher - Verified hash of archive-patcher-applier-1.2.jar 2024-02-05 21:49:01 CST [main] INFO net.runelite.launcher.Launcher - Verified hash of jna-5.9.0.jar 2024-02-05 21:49:01 CST [main] INFO net.runelite.launcher.Launcher - Verified hash of jna-platform-5.9.0.jar 2024-02-05 21:49:01 CST [main] INFO net.runelite.launcher.Launcher - Verified hash of jsr305-3.0.2.jar 2024-02-05 21:49:01 CST [main] INFO net.runelite.launcher.Launcher - Verified hash of protobuf-javalite-3.21.12.jar 2024-02-05 21:49:01 CST [main] INFO net.runelite.launcher.Launcher - Verified hash of rlawt-1.4.jar 2024-02-05 21:49:01 CST [main] INFO net.runelite.launcher.Launcher - Verified hash of lwjgl-3.3.2.jar 2024-02-05 21:49:01 CST [main] INFO net.runelite.launcher.Launcher - Verified hash of lwjgl-3.3.2-natives-linux.jar 2024-02-05 21:49:01 CST [main] INFO net.runelite.launcher.Launcher - Verified hash of lwjgl-opengl-3.3.2.jar 2024-02-05 21:49:01 CST [main] INFO net.runelite.launcher.Launcher - Verified hash of lwjgl-opengl-3.3.2-natives-linux.jar 2024-02-05 21:49:01 CST [main] INFO net.runelite.launcher.Launcher - Verified hash of lwjgl-opencl-3.3.2.jar 2024-02-05 21:49:01 CST [main] INFO net.runelite.launcher.Launcher - Verified hash of client-patch-1.10.21.1.jar 2024-02-05 21:49:01 CST [main] INFO net.runelite.launcher.Launcher - Verified hash of http-api-1.2.12.jar 2024-02-05 21:49:01 CST [main] INFO net.runelite.launcher.Launcher - Verified hash of okhttp-3.14.9.jar 2024-02-05 21:49:01 CST [main] INFO net.runelite.launcher.Launcher - Verified hash of okio-1.17.2.jar 2024-02-05 21:49:01 CST [main] INFO net.runelite.launcher.Launcher - Verified hash of discord-1.4.jar 2024-02-05 21:49:01 CST [main] INFO net.runelite.launcher.Launcher - Verified hash of runelite-api-1.10.21.1-runtime.jar 2024-02-05 21:49:01 CST [main] INFO net.runelite.launcher.JvmLauncher - Running [/usr/lib/jvm/java-21-openjdk/bin/java, -cp, /home/dj/.local/share/bolt-launcher/.runelite/repository2/client-1.10.21.1.jar:/home/dj/.local/share/bolt-launcher/.runelite/repository2/slf4j-api-1.7.25.jar:/home/dj/.local/share/bolt-launcher/.runelite/repository2/logback-classic-1.2.9.jar:/home/dj/.local/share/bolt-launcher/.runelite/repository2/logback-core-1.2.9.jar:/home/dj/.local/share/bolt-launcher/.runelite/repository2/jopt-simple-5.0.1.jar:/home/dj/.local/share/bolt-launcher/.runelite/repository2/guava-23.2-jre.jar:/home/dj/.local/share/bolt-launcher/.runelite/repository2/guice-4.1.0-no_aop.jar:/home/dj/.local/share/bolt-launcher/.runelite/repository2/javax.inject-1.jar:/home/dj/.local/share/bolt-launcher/.runelite/repository2/aopalliance-1.0.jar:/home/dj/.local/share/bolt-launcher/.runelite/repository2/gson-2.8.5.jar:/home/dj/.local/share/bolt-launcher/.runelite/repository2/flatlaf-3.2.5-rl4.jar:/home/dj/.local/share/bolt-launcher/.runelite/repository2/commons-text-1.2.jar:/home/dj/.local/share/bolt-launcher/.runelite/repository2/commons-lang3-3.7.jar:/home/dj/.local/share/bolt-launcher/.runelite/repository2/archive-patcher-applier-1.2.jar:/home/dj/.local/share/bolt-launcher/.runelite/repository2/jna-5.9.0.jar:/home/dj/.local/share/bolt-launcher/.runelite/repository2/jna-platform-5.9.0.jar:/home/dj/.local/share/bolt-launcher/.runelite/repository2/jsr305-3.0.2.jar:/home/dj/.local/share/bolt-launcher/.runelite/repository2/protobuf-javalite-3.21.12.jar:/home/dj/.local/share/bolt-launcher/.runelite/repository2/rlawt-1.4.jar:/home/dj/.local/share/bolt-launcher/.runelite/repository2/lwjgl-3.3.2.jar:/home/dj/.local/share/bolt-launcher/.runelite/repository2/lwjgl-3.3.2-natives-linux.jar:/home/dj/.local/share/bolt-launcher/.runelite/repository2/lwjgl-opengl-3.3.2.jar:/home/dj/.local/share/bolt-launcher/.runelite/repository2/lwjgl-opengl-3.3.2-natives-linux.jar:/home/dj/.local/share/bolt-launcher/.runelite/repository2/lwjgl-opencl-3.3.2.jar:/home/dj/.local/share/bolt-launcher/.runelite/repository2/client-patch-1.10.21.1.jar:/home/dj/.local/share/bolt-launcher/.runelite/repository2/http-api-1.2.12.jar:/home/dj/.local/share/bolt-launcher/.runelite/repository2/okhttp-3.14.9.jar:/home/dj/.local/share/bolt-launcher/.runelite/repository2/okio-1.17.2.jar:/home/dj/.local/share/bolt-launcher/.runelite/repository2/discord-1.4.jar:/home/dj/.local/share/bolt-launcher/.runelite/repository2/runelite-api-1.10.21.1-runtime.jar, -XX:+DisableAttachMechanism, -Xmx768m, -Xss2m, -XX:CompileThreshold=1500, -Dsun.java2d.opengl=false, -Drunelite.launcher.version=2.6.13, -XX:ErrorFile=/home/dj/.local/share/bolt-launcher/.runelite/logs/jvm_crash_pid_%p.log, -Duser.home=/home/dj/.local/share/bolt-launcher, net.runelite.client.RuneLite] Picked up _JAVA_OPTIONS: -Djavax.sound.sampled.Clip=com.sun.media.sound.DirectAudioDeviceProvider -Djavax.sound.sampled.Port=com.sun.media.sound.PortMixerProvider -Djavax.sound.sampled.SourceDataLine=com.sun.media.sound.DirectAudioDeviceProvider -Djavax.sound.sampled.TargetDataLine=com.sun.media.sound.DirectAudioDeviceProvider 2024-02-05 21:49:02 CST [main] INFO net.runelite.client.RuneLite - RuneLite 1.10.21.1 (launcher version 2.6.13) starting up, args: none 2024-02-05 21:49:02 CST [main] INFO net.runelite.client.RuneLite - Java VM arguments: -XX:+DisableAttachMechanism -Xmx768m -Xss2m -XX:CompileThreshold=1500 -Dsun.java2d.opengl=false -Drunelite.launcher.version=2.6.13 -XX:ErrorFile=/home/dj/.local/share/bolt-launcher/.runelite/logs/jvm_crash_pid_%p.log -Duser.home=/home/dj/.local/share/bolt-launcher -Djavax.sound.sampled.Clip=com.sun.media.sound.DirectAudioDeviceProvider -Djavax.sound.sampled.Port=com.sun.media.sound.PortMixerProvider -Djavax.sound.sampled.SourceDataLine=com.sun.media.sound.DirectAudioDeviceProvider -Djavax.sound.sampled.TargetDataLine=com.sun.media.sound.DirectAudioDeviceProvider 2024-02-05 21:49:03 CST [Preloader] INFO net.runelite.client.rs.ClientLoader - Using cached vanilla client 2024-02-05 21:49:03 CST [Preloader] INFO net.runelite.client.rs.ClientLoader - Using cached patched client 2024-02-05 21:49:03 CST [Preloader] INFO net.runelite.client.rs.ClientLoader - client-patch 7748025345.32 2024-02-05 21:49:04 CST [main] INFO n.r.client.config.ConfigManager - Profile 'default' (sync: false, active: false, id: 82806549596302) 2024-02-05 21:49:04 CST [main] INFO n.r.client.config.ConfigManager - Profile 'tethys profile' (sync: true, active: true, id: 0) 2024-02-05 21:49:04 CST [main] INFO n.r.client.config.ConfigManager - Using profile: tethys profile (0) 2024-02-05 21:49:04 CST [main] INFO n.r.client.config.ConfigManager - Profile 'tethys profile' is up to date 2024-02-05 21:49:04 CST [main] INFO n.r.client.config.ConfigManager - Profile '$rsprofile' is up to date 2024-02-05 21:49:04 CST [main] INFO n.r.c.plugins.kourendlibrary.Library - Library is now reset 2024-02-05 21:49:04 CST [main] INFO n.r.c.e.ExternalPluginManager - Loading external plugin "coal-bag" jar "2HYnzLZCeLHkTwR235UGhpb87L0WgrXE4qEFKp7yOMU" 2024-02-05 21:49:04 CST [main] INFO n.r.c.e.ExternalPluginManager - Loading external plugin "bot-detector" jar "NL-rB_x8bFwRJ9mVHBhDfDTPsi04K0UXRt_zb9bkw8I" 2024-02-05 21:49:04 CST [main] INFO n.r.c.e.ExternalPluginManager - Loading external plugin "equipment-inspector" jar "peqLqTdOG-GR-F7i-FE-m84ifJeFcAs6WL1-_IaqM1k" 2024-02-05 21:49:04 CST [main] INFO n.r.c.e.ExternalPluginManager - Loading external plugin "shooting-stars" jar "vDhNMTSOK7cVWvuicqiW8kBfkcWXQK4mUia3EeCGw3k" 2024-02-05 21:49:04 CST [main] INFO n.r.c.e.ExternalPluginManager - Loading external plugin "dps-calculator" jar "0SKaWpNpQ7H_9EfyeQO9fdarwohqe1nCzMoXlf-AEfU" 2024-02-05 21:49:04 CST [main] INFO n.r.c.e.ExternalPluginManager - Loading external plugin "cannon-be-gone" jar "_PZSgh5M-r26tPdgwwCSflde13WQ0-0BQs1ozsXqr3w" 2024-02-05 21:49:04 CST [main] INFO n.r.c.e.ExternalPluginManager - Loading external plugin "time-tracking-reminder" jar "wsW9mW1_OnYIoaA7Y2-ULv6wCdxopXrKi23ubmokRSE" 2024-02-05 21:49:04 CST [main] INFO n.r.c.e.ExternalPluginManager - Loading external plugin "pet-info" jar "eXYwL1IyqOkY0cxU3lvWKU5pVYmU7R3079ZAPvWwJNU" 2024-02-05 21:49:04 CST [main] INFO n.r.c.e.ExternalPluginManager - Loading external plugin "fish-barrel" jar "JTqJcmHGGdjZLG_ki3fztNA8TWkUIF7dATHhKjdzxr8" 2024-02-05 21:49:04 CST [main] INFO n.r.c.e.ExternalPluginManager - Loading external plugin "rogues-den" jar "RHDQlkrLjh8HnyXXzznZZp98v7HzLOWsTjkz3B3vv4A" 2024-02-05 21:49:04 CST [main] INFO n.r.c.e.ExternalPluginManager - Loading external plugin "spamfilter" jar "AFHXKOtk90S6gOnUcnBN2jhGpjLZfDMFFG4Uxx5w590" 2024-02-05 21:49:04 CST [main] INFO n.r.c.e.ExternalPluginManager - Loading external plugin "wikisync" jar "GshzSpu__sds4McNFluEqNJr2gOxlsLJEnLRP4OBVaM" 2024-02-05 21:49:04 CST [main] INFO n.r.c.e.ExternalPluginManager - Loading external plugin "mahogany-homes" jar "vhdwWFo6T-VnQZRYjzIVCmAmSasrJ1y4ngkmHMq504U" 2024-02-05 21:49:04 CST [main] INFO n.r.c.e.ExternalPluginManager - Loading external plugin "startierindicator" jar "fKI3lBanXHew744xYUjUHwS_LYGol710pPgmSX1huBY" 2024-02-05 21:49:04 CST [main] INFO n.r.c.e.ExternalPluginManager - Loading external plugin "gp-per-hour" jar "n8dSbjbteOk0A2IgrgzoeV0bydFR5cM7ta3wiVdxEvM" 2024-02-05 21:49:04 CST [main] INFO n.r.c.e.ExternalPluginManager - Loading external plugin "stealing-artefacts" jar "GErQN5O6KjWXqajgHyChIHJH5S5aOlzxAQMH3NjQQ1U" 2024-02-05 21:49:04 CST [main] INFO n.r.c.e.ExternalPluginManager - Loading external plugin "boredgenerator" jar "G_FDAEjVi2K3DUVSozmlDLGPMF4miigm-fTffrdVLs0" 2024-02-05 21:49:04 CST [main] INFO n.r.client.discord.DiscordService - Initializing Discord RPC service. Failed to create secure directory (/run/user/1000/bolt-runelite-CzeL0g/pulse): Too many levels of symbolic links Failed to create secure directory (/run/user/1000/bolt-runelite-CzeL0g/pulse): Too many levels of symbolic links Failed to create secure directory (/run/user/1000/bolt-runelite-CzeL0g/pulse): Too many levels of symbolic links Failed to create secure directory (/run/user/1000/bolt-runelite-CzeL0g/pulse): Too many levels of symbolic links Failed to create secure directory (/run/user/1000/bolt-runelite-CzeL0g/pulse): Too many levels of symbolic links Failed to create secure directory (/run/user/1000/bolt-runelite-CzeL0g/pulse): Too many levels of symbolic links Failed to create secure directory (/run/user/1000/bolt-runelite-CzeL0g/pulse): Too many levels of symbolic links Failed to create secure directory (/run/user/1000/bolt-runelite-CzeL0g/pulse): Too many levels of symbolic links Failed to create secure directory (/run/user/1000/bolt-runelite-CzeL0g/pulse): Too many levels of symbolic links Failed to create secure directory (/run/user/1000/bolt-runelite-CzeL0g/pulse): Too many levels of symbolic links Failed to create secure directory (/run/user/1000/bolt-runelite-CzeL0g/pulse): Too many levels of symbolic links Failed to create secure directory (/run/user/1000/bolt-runelite-CzeL0g/pulse): Too many levels of symbolic links Failed to create secure directory (/run/user/1000/bolt-runelite-CzeL0g/pulse): Too many levels of symbolic links 2024-02-05 21:49:05 CST [AWT-EventQueue-0] INFO c.j.spamfilter.SpamFilterPlugin - Loaded built-in corpus files with 1126 (g) & 1584 (b) entries 2024-02-05 21:49:05 CST [AWT-EventQueue-0] INFO c.j.spamfilter.SpamFilterPlugin - Loaded user corpus files with 0 (g) & 0 (b) entries Failed to create secure directory (/run/user/1000/bolt-runelite-CzeL0g/pulse): Too many levels of symbolic links Failed to create secure directory (/run/user/1000/bolt-runelite-CzeL0g/pulse): Too many levels of symbolic links Failed to create secure directory (/run/user/1000/bolt-runelite-CzeL0g/pulse): Too many levels of symbolic links Failed to create secure directory (/run/user/1000/bolt-runelite-CzeL0g/pulse): Too many levels of symbolic links Failed to create secure directory (/run/user/1000/bolt-runelite-CzeL0g/pulse): Too many levels of symbolic links Failed to create secure directory (/run/user/1000/bolt-runelite-CzeL0g/pulse): Too many levels of symbolic links Failed to create secure directory (/run/user/1000/bolt-runelite-CzeL0g/pulse): Too many levels of symbolic links Failed to create secure directory (/run/user/1000/bolt-runelite-CzeL0g/pulse): Too many levels of symbolic links Failed to create secure directory (/run/user/1000/bolt-runelite-CzeL0g/pulse): Too many levels of symbolic links Failed to create secure directory (/run/user/1000/bolt-runelite-CzeL0g/pulse): Too many levels of symbolic links Failed to create secure directory (/run/user/1000/bolt-runelite-CzeL0g/pulse): Too many levels of symbolic links Failed to create secure directory (/run/user/1000/bolt-runelite-CzeL0g/pulse): Too many levels of symbolic links Failed to create secure directory (/run/user/1000/bolt-runelite-CzeL0g/pulse): Too many levels of symbolic links Failed to create secure directory (/run/user/1000/bolt-runelite-CzeL0g/pulse): Too many levels of symbolic links Failed to create secure directory (/run/user/1000/bolt-runelite-CzeL0g/pulse): Too many levels of symbolic links 2024-02-05 21:49:05 CST [main] INFO net.runelite.client.RuneLite - Client initialization took 3422ms. Uptime: 3886ms Failed to create secure directory (/run/user/1000/bolt-runelite-CzeL0g/pulse): Too many levels of symbolic links Failed to create secure directory (/run/user/1000/bolt-runelite-CzeL0g/pulse): Too many levels of symbolic links [LWJGL] [ThreadLocalUtil] Unsupported JNI version detected, this may result in a crash. Please inform LWJGL developers. 2024-02-05 21:49:05 CST [Client] INFO n.r.client.plugins.gpu.GpuPlugin - Using device: AMD Radeon RX 6800 XT (radeonsi, navi21, LLVM 16.0.6, DRM 3.57, 6.7.3-arch1-1) 2024-02-05 21:49:05 CST [Client] INFO n.r.client.plugins.gpu.GpuPlugin - Using driver: 4.6 (Compatibility Profile) Mesa 23.3.5-arch1.1 ```

Looks like Bolt is picking up my _JAVA_OPTIONS env var, but I'm not sure about the config from the new button? This line seems to indicate that it's getting picked up tho: 2024-02-05 21:49:02 CST [main] INFO net.runelite.client.RuneLite - Java VM arguments: -XX:+DisableAttachMechanism -Xmx768m -Xss2m -XX:CompileThreshold=1500 -Dsun.java2d.opengl=false -Drunelite.launcher.version=2.6.13 -XX:ErrorFile=/home/dj/.local/share/bolt-launcher/.runelite/logs/jvm_crash_pid_%p.log -Duser.home=/home/dj/.local/share/bolt-launcher -Djavax.sound.sampled.Clip=com.sun.media.sound.DirectAudioDeviceProvider -Djavax.sound.sampled.Port=com.sun.media.sound.PortMixerProvider -Djavax.sound.sampled.SourceDataLine=com.sun.media.sound.DirectAudioDeviceProvider -Djavax.sound.sampled.TargetDataLine=com.sun.media.sound.DirectAudioDeviceProvider.

The repeated Failed to create secure directory (/run/user/1000/bolt-runelite-CzeL0g/pulse): Too many levels of symbolic links seem related to the audio issue, but I'm not sure what's expected there. It does seem strange to me that the bolt-runelite-CzeL0g/ dir contains a circular symlink to itself, but the pulse/ dir doesn't, and (again) I don't know what's expected.

Adamcake commented 4 months ago

That's the same issue as #12. I should really add this to the readme.

EspressoKyle commented 4 months ago

My Arch Linux laptop still has this issue, in a few hours I can remove the helper script so that it is back to being a standard java install, and then I will test it for you.

@Adamcake thank you for taking the time to make that update. I appreciate it :)

Adamcake commented 4 months ago

Please confirm this issue still happens after setting PULSE_RUNTIME_PATH as described in #12?

deejcunningham commented 4 months ago

@Adamcake Seems like adding PULSE_RUNTIME_PATH did the trick for me. I also tested removing my _JAVA_OPTIONS env as well as the RuneLite JVM configuration args and it seems like I only need the PULSE_RUNTIME_PATH.

One specific note for my setup: I originally added these env vars to ~/.bashrc, but when launching bolt via dmenu the sound issue persisted. This is because dmenu isn't a login shell so I added them to /etc/environment per the Arch wiki.

Thanks a lot for all your assistance @Adamcake!

Adamcake commented 4 weeks ago

All of this family of issues should be fixed absolutely for good in 0.9.