{
    "version": "https://jsonfeed.org/version/1",
    "title": "LiteHell's blog",
    "home_page_url": "https://blog-en.litehell.info",
    "feed_url": "https://blog-en.litehell.info/feed/json",
    "description": "LiteHell's personal blog with articles related to my life, software engineers, and computers",
    "icon": "https://gravatar.com/avatar/837266b567b50fd59e72428220bf69b1",
    "author": {
        "name": "Yeonjin Shin",
        "url": "https://litehell.info"
    },
    "items": [
        {
            "id": "how_to_fix_libgl_error_on_64bit_fedora",
            "content_html": "<h1>Problem</h1>\n<p>You may encounter this error when you try to run Windows game with umu-launcher or wine, on 64bit Fedora.</p>\n<pre><code>libGL error: MESA-LOADER: failed to open iris: /usr/lib/pressure-vessel/overrides/lib/x86_64-linux-gnu/dri/iris_dri.so: wrong ELF class: ELFCLASS64 (search paths /usr/lib/pressure-vessel/overrides/lib/x86_64-linux-gnu/dri)\nlibGL error: failed to load driver: iris\nlibGL error: MESA-LOADER: failed to open swrast: /usr/lib/pressure-vessel/overrides/lib/x86_64-linux-gnu/dri/swrast_dri.so: wrong ELF class: ELFCLASS64 (search paths /usr/lib/pressure-vessel/overrides/lib/x86_64-linux-gnu/dri)\nlibGL error: failed to load driver: swrast\nX Error of failed request:  GLXBadContext\n  Major opcode of failed request:  150 (GLX)\n  Minor opcode of failed request:  6 (X_GLXIsDirect)\n  Serial number of failed request:  537\n  Current serial number in output stream:  536\n\n</code></pre>\n<h1>Solution</h1>\n<p>Solution is very simple. Just install 32bit library.</p>\n<pre><code class=\"language-bash\">sudo dnf install mesa-libGL.i686\n</code></pre>",
            "url": "https://blog-en.litehell.info/post/how_to_fix_libgl_error_on_64bit_fedora",
            "title": "How to fix libGL (MESA-LOADER) error on 64-bit Fedora",
            "summary": "Error due to missing 32bit library",
            "image": "https://gravatar.com/avatar/837266b567b50fd59e72428220bf69b1",
            "date_modified": "2025-11-25T13:11:43.828Z"
        },
        {
            "id": "wivrn_for_non_steam_windows_games",
            "content_html": "<h1>Introduction</h1>\n<p>I use Linux for laptop. I installed <a href=\"https://github.com/WiVRn/WiVRn\">WiVRn</a> and <a href=\"https://gitlab.com/znixian/OpenOVR/\">OpenComposite</a><sup><a href=\"#user-content-fn-1\" id=\"user-content-fnref-1\" data-footnote-ref aria-describedby=\"footnote-label\">1</a></sup> for VR gaming on Linux, as recommended by <a href=\"https://social.silicon.moe/@perillamint\">perillamint</a>.</p>\n<p>It works well for Linux native VR programs (e.g. <a href=\"https://gitlab.freedesktop.org/monado/demos/xrgears\">xrgears</a>) and Steam games.</p>\n<p>However, it had a problem that non-Steam Windows games don't work.</p>\n<h2>First try</h2>\n<p>Steam games works well for VR. Steam uses Proton. Then,  How about using Proton for non-Steam games?</p>\n<h3>umu-launcher</h3>\n<p>I tried <a href=\"https://github.com/Open-Wine-Components/umu-launcher\">umu-launcher</a>, a program to run <a href=\"https://github.com/ValveSoftware/Proton\">Proton</a> for games not in Steam. (Actually, It uses <a href=\"https://github.com/GloriousEggroll/proton-ge-custom\">Proton GE</a>, not Proton by Valve. But, it doesn't matter in this post.)</p>\n<p>Proton includes OpenXR/VR support. So I expected that it will work well if I set environment variables following <a href=\"https://github.com/WiVRn/WiVRn/blob/master/docs/steamvr.md\">SteamVR documentation of WinVR</a>. But it didn't work.</p>\n<pre><code class=\"language-env\">PRESSURE_VESSEL_FILESYSTEMS_RW=/run/user/1000/wivrn/comp_ipc\nXR_RUNTIME_JSON=/run/host/usr/share/openxr/1/openxr_wivrn.json\n</code></pre>\n<p>Why?</p>\n<h4>Reason</h4>\n<p>After some googling, I found that <a href=\"https://github.com/ValveSoftware/Proton/issues/8256\">It needs Steam to be launched to use OpenVR/XR on Proton</a>, and <a href=\"https://github.com/GloriousEggroll/proton-ge-custom/issues/214#issuecomment-3230936706\">umu launcher doesn't launch Steam by default</a>.</p>\n<p>How can I resolve it with minimum efforts?</p>\n<h2>Solution: Then run Steam :D</h2>\n<p>Simple. Just run Steam.</p>\n<p>Firstly, Let's check where the Proton is. Check debug log by running this command (Type <code>/tmp/2q3ef32t</code> part randomly. It doesn't matter)</p>\n<pre><code class=\"language-bash\">UMU_LOG=debug umu-run /tmp/2q3ef32t\n</code></pre>\n<p>Then, you can see the location of <code>proton</code> from the console log. (e.g. <code>/home/foo/.local/share/Steam/compatibilitytools.d/UMU-Proton-9.0-4e/proton</code>) The below is example part of console log.</p>\n<pre><code>[umu.umu_run:887] DEBUG: (PosixPath('/home/foo/.local/share/umu/steamrt3/umu'), '--verb', 'waitforexitandrun', '--', PosixPath('/home/foo/.local/share/umu/steamrt3/umu-shim'), PosixPath('/home/foo/.local/share/Steam/compatibilitytools.d/UMU-Proton-9.0-4e/proton'), 'waitforexitandrun', './asdf')\n</code></pre>\n<p>Find this code from the <code>proton</code> file with editor</p>\n<pre><code class=\"language-python\">        <span class=\"pl-c\"># CoD: Black Ops 3 workaround</span>\n        <span class=\"pl-k\">if</span> os.environ.get(<span class=\"pl-s\"><span class=\"pl-pds\">\"</span>SteamGameId<span class=\"pl-pds\">\"</span></span>, <span class=\"pl-c1\">0</span>) <span class=\"pl-k\">in</span> [\n                    <span class=\"pl-s\"><span class=\"pl-pds\">\"</span>311210<span class=\"pl-pds\">\"</span></span>,   <span class=\"pl-c\"># CoD: Black Ops 3</span>\n                    <span class=\"pl-s\"><span class=\"pl-pds\">\"</span>1549250<span class=\"pl-pds\">\"</span></span>,  <span class=\"pl-c\"># Undecember</span>\n                ]:\n            argv <span class=\"pl-k\">=</span> [g_proton.wine_bin, <span class=\"pl-s\"><span class=\"pl-pds\">\"</span>c:<span class=\"pl-cce\">\\\\</span>Program Files (x86)<span class=\"pl-cce\">\\\\</span>Steam<span class=\"pl-cce\">\\\\</span>steam.exe<span class=\"pl-pds\">\"</span></span>]\n</code></pre>\n<p>Replace above code to below.</p>\n<pre><code class=\"language-python\">        <span class=\"pl-k\">if</span> os.environ.get(<span class=\"pl-s\"><span class=\"pl-pds\">\"</span>UMU_RUN_STEAM<span class=\"pl-pds\">\"</span></span>, <span class=\"pl-c1\">0</span>) <span class=\"pl-k\">==</span> <span class=\"pl-s\"><span class=\"pl-pds\">\"</span>1<span class=\"pl-pds\">\"</span></span>:\n            argv <span class=\"pl-k\">=</span> [g_proton.wine64_bin, <span class=\"pl-s\"><span class=\"pl-pds\">\"</span>c:<span class=\"pl-cce\">\\\\</span>windows<span class=\"pl-cce\">\\\\</span>system32<span class=\"pl-cce\">\\\\</span>steam.exe<span class=\"pl-pds\">\"</span></span>]\n        <span class=\"pl-c\"># CoD: Black Ops 3 workaround</span>\n        <span class=\"pl-k\">elif</span> os.environ.get(<span class=\"pl-s\"><span class=\"pl-pds\">\"</span>SteamGameId<span class=\"pl-pds\">\"</span></span>, <span class=\"pl-c1\">0</span>) <span class=\"pl-k\">in</span> [\n                    <span class=\"pl-s\"><span class=\"pl-pds\">\"</span>311210<span class=\"pl-pds\">\"</span></span>,   <span class=\"pl-c\"># CoD: Black Ops 3</span>\n                    <span class=\"pl-s\"><span class=\"pl-pds\">\"</span>1549250<span class=\"pl-pds\">\"</span></span>,  <span class=\"pl-c\"># Undecember</span>\n                ]:\n            argv <span class=\"pl-k\">=</span> [g_proton.wine_bin, <span class=\"pl-s\"><span class=\"pl-pds\">\"</span>c:<span class=\"pl-cce\">\\\\</span>Program Files (x86)<span class=\"pl-cce\">\\\\</span>Steam<span class=\"pl-cce\">\\\\</span>steam.exe<span class=\"pl-pds\">\"</span></span>]\n</code></pre>\n<p>Finally, Run game <code>UMU_RUN_STEAM</code> environment variable and WiVRn-related environment variables. Check this script for details.</p>\n<pre><code class=\"language-bash\"><span class=\"pl-c\">#!/bin/sh</span>\n<span class=\"pl-k\">export</span> UMU_RUN_STEAM=1 \n<span class=\"pl-k\">export</span> PRESSURE_VESSEL_FILESYSTEMS_RW=/run/user/1000/wivrn/comp_ipc\n<span class=\"pl-k\">export</span> XR_RUNTIME_JSON=/run/host/usr/share/openxr/1/openxr_wivrn.json\n<span class=\"pl-k\">export</span> PRESSURE_VESSEL_IMPORT_OPENXR_1_RUNTIMES=1\numu-run ./Game.exe\n</code></pre>\n<p>Then It works.</p>\n<h1>Final words</h1>\n<p>It's not fundamental solution but simple solution. I wish it could help...</p>\n<hr>\n<section data-footnotes class=\"footnotes\"><h1 class=\"sr-only\" id=\"footnote-label\">Footnotes</h1>\n<ol>\n<li id=\"user-content-fn-1\">\n<p>The program that makes games using <a href=\"https://github.com/ValveSoftware/openvr\">OpenVR</a> be able to run with <a href=\"https://www.khronos.org/openxr/\">OpenXR</a> API. <a href=\"#user-content-fnref-1\" data-footnote-backref=\"\" aria-label=\"Back to reference 1\" class=\"data-footnote-backref\">↩</a></p>\n</li>\n</ol>\n</section>",
            "url": "https://blog-en.litehell.info/post/wivrn_for_non_steam_windows_games",
            "title": "How to run non-Steam Windows game on Linux with WiVRn",
            "summary": "Troubleshooting with umu-launcher",
            "image": "https://gravatar.com/avatar/837266b567b50fd59e72428220bf69b1",
            "date_modified": "2025-10-19T17:28:23.271Z"
        },
        {
            "id": "how_to_run_rpg_maker_mv_on_linux",
            "content_html": "<h1>Introduction</h1>\n<p>I tried to run games made with RPG Maker MV, but it stucks at loading.</p>\n<h1>Solution</h1>\n<p>I thought installing Windows on VM, but I found <code>nwjs.dll</code> file. The structure of <code>package.json</code> in the <code>www</code> directory of the game is also similar with the one of nwjs applications.</p>\n<p>What if I just use nwjs binary for Linux? I tried it, and it actually worked.</p>\n<ol>\n<li>Download Linux binaries from <a href=\"https://nwjs.io/\">nwjs homepage</a> (No need to use SDK versions)</li>\n<li>Find a directory having <code>package.json</code> (Usually <code>www</code> directory)</li>\n<li>Run the nwjs binary, downloading in the Step 1, with the directory found in the Step 2 as parameter. (e.g. <code>~/nwjs-binary/nwjs ~/game/www</code>)</li>\n<li>If it didn't work, the <code>package.json</code> file might have empty <code>name</code>. Update the <code>name</code> property of <code>package.json</code> file to arbitary random value.</li>\n</ol>\n<p>If you follow this guide, it should work. It might not work for some games, but... it works for me.</p>",
            "url": "https://blog-en.litehell.info/post/how_to_run_rpg_maker_mv_on_linux",
            "title": "How to run RPG Maker MV games on Linux",
            "summary": "when it does not work well with wine",
            "image": "https://gravatar.com/avatar/837266b567b50fd59e72428220bf69b1",
            "date_modified": "2025-10-19T16:52:05.437Z"
        }
    ]
}