<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Steam on qytlix no blogs</title><link>https://blog.qyt.li/x/tags/steam/</link><description>Recent content from qytlix no blogs</description><generator>Hugo</generator><language>en-us</language><managingEditor>qytlix@gmail.com (qytlix)</managingEditor><webMaster>qytlix@gmail.com (qytlix)</webMaster><copyright>All articles on this blog are licensed under the BY-NC-SA license agreement unless otherwise stated. Please indicate the source when reprinting!</copyright><lastBuildDate>Wed, 08 Apr 2026 11:08:03 +0800</lastBuildDate><atom:link href="https://blog.qyt.li/x/tags/steam/index.xml" rel="self" type="application/rss+xml"/><item><title>部分electron应用卡死解决方案</title><link>https://blog.qyt.li/x/post/tech/%E6%8A%80%E6%9C%AF/%E9%83%A8%E5%88%86electron%E5%BA%94%E7%94%A8%E5%8D%A1%E6%AD%BB%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/</link><pubDate>Wed, 08 Apr 2026 11:08:03 +0800</pubDate><author>qytlix@gmail.com (qytlix)</author><guid>https://blog.qyt.li/x/post/tech/%E6%8A%80%E6%9C%AF/%E9%83%A8%E5%88%86electron%E5%BA%94%E7%94%A8%E5%8D%A1%E6%AD%BB%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/</guid><description>
<![CDATA[<h1>部分electron应用卡死解决方案</h1><p>Author: qytlix(qytlix@gmail.com)</p>
        
          <p>例如<code>linuxqq</code>和<code>steam</code>。
#electron #linuxqq #steam #config #fcitx5</p>
<h2 id="报错信息">
<a class="header-anchor" href="#%e6%8a%a5%e9%94%99%e4%bf%a1%e6%81%af"></a>
报错信息
</h2><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">...
</span></span><span class="line"><span class="cl">Gdk: gdk_wayland_display_get_wl_display: assertion <span class="s1">&#39;GDK_IS_WAYLAND_DISPLAY (display)&#39;</span> failed
</span></span><span class="line"><span class="cl"><span class="c1"># 通常到这里就重复或者直接卡死掉没有输出了</span>
</span></span></code></pre></div><h2 id="解决方案">
<a class="header-anchor" href="#%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88"></a>
解决方案
</h2><p><a href="https://chat.deepseek.com/share/5977hs8juzeqmo6f5i">ds原对话</a>
注意先看看是不是环境变量的问题。
例如<code>GTK_IM_MODULE</code>有没有设置成<code>wayland</code>？</p>
<p>来自<code>deepseek</code>：</p>
<blockquote>
<p>Fcitx5 官方文档和许多 Wayland 环境的实践都表明，不建议全局设置 <code>GTK_IM_MODULE</code> 和 <code>QT_IM_MODULE</code> 环境变量</p>
</blockquote>
<p>就是说把这个环境变量删掉就好了，在<code>hyprland.conf</code>里面看看有没有。</p>
<p>如果不是，另寻高就（或者使用下面的脚本）。</p>
<h2 id="附录">
<a class="header-anchor" href="#%e9%99%84%e5%bd%95"></a>
附录
</h2><p>ds写的脚本，改了一点点。
最后的二分判断稍微有一点问题，但是人力对比一下就能发现出问题的环境变量了。
位置：<code>~/Documents/Ideas/test_env/main.sh</code></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl"><span class="cp">#!/bin/bash
</span></span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 二分法查找导致 linuxqq 启动失败的环境变量</span>
</span></span><span class="line"><span class="cl"><span class="c1"># 基于已知成功的基础环境：env -i HOME=$HOME USER=$USER DISPLAY=$DISPLAY \</span>
</span></span><span class="line"><span class="cl"><span class="c1">#   XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION_BUS_ADDRESS \</span>
</span></span><span class="line"><span class="cl"><span class="c1">#   PATH=/usr/bin:/usr/local/bin linuxqq</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nb">set</span> -e
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 基础变量（必须保留才能启动）</span>
</span></span><span class="line"><span class="cl"><span class="nv">basic_vars</span><span class="o">=(</span>HOME USER DISPLAY XDG_RUNTIME_DIR DBUS_SESSION_BUS_ADDRESS<span class="o">)</span>
</span></span><span class="line"><span class="cl"><span class="c1"># PATH 固定值（可根据你的系统调整）</span>
</span></span><span class="line"><span class="cl"><span class="nv">PATH_VAL</span><span class="o">=</span><span class="s2">&#34;/usr/bin:/usr/local/bin&#34;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 检查基础变量是否已设置</span>
</span></span><span class="line"><span class="cl"><span class="k">for</span> var in <span class="s2">&#34;</span><span class="si">${</span><span class="nv">basic_vars</span><span class="p">[@]</span><span class="si">}</span><span class="s2">&#34;</span><span class="p">;</span> <span class="k">do</span>
</span></span><span class="line"><span class="cl">    <span class="k">if</span> <span class="o">[</span> -z <span class="s2">&#34;</span><span class="si">${</span><span class="p">!var</span><span class="si">}</span><span class="s2">&#34;</span> <span class="o">]</span><span class="p">;</span> <span class="k">then</span>
</span></span><span class="line"><span class="cl">        <span class="nb">echo</span> <span class="s2">&#34;错误: 基础变量 </span><span class="nv">$var</span><span class="s2"> 未设置，无法进行测试。&#34;</span>
</span></span><span class="line"><span class="cl">        <span class="nb">exit</span> <span class="m">1</span>
</span></span><span class="line"><span class="cl">    <span class="k">fi</span>
</span></span><span class="line"><span class="cl"><span class="k">done</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 获取当前所有环境变量名</span>
</span></span><span class="line"><span class="cl">mapfile -t all_vars &lt; &lt;<span class="o">(</span><span class="nb">compgen</span> -e<span class="o">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 定义要排除的变量（基础变量、PATH 及 shell 内部变量）</span>
</span></span><span class="line"><span class="cl"><span class="nv">exclude_vars</span><span class="o">=(</span><span class="s2">&#34;</span><span class="si">${</span><span class="nv">basic_vars</span><span class="p">[@]</span><span class="si">}</span><span class="s2">&#34;</span> <span class="s2">&#34;PATH&#34;</span> <span class="s2">&#34;_&#34;</span> <span class="s2">&#34;SHLVL&#34;</span> <span class="s2">&#34;PWD&#34;</span> <span class="s2">&#34;OLDPWD&#34;</span><span class="o">)</span>
</span></span><span class="line"><span class="cl"><span class="nv">exclude_vars</span><span class="o">+=(</span><span class="s2">&#34;BASH_EXECUTION_STRING&#34;</span> <span class="s2">&#34;BASH_LINENO&#34;</span> <span class="s2">&#34;BASH_SOURCE&#34;</span> <span class="s2">&#34;BASH_VERSINFO&#34;</span><span class="o">)</span>
</span></span><span class="line"><span class="cl"><span class="nv">exclude_vars</span><span class="o">+=(</span><span class="s2">&#34;BASH_VERSION&#34;</span> <span class="s2">&#34;DIRSTACK&#34;</span> <span class="s2">&#34;EUID&#34;</span> <span class="s2">&#34;GROUPS&#34;</span> <span class="s2">&#34;IFS&#34;</span> <span class="s2">&#34;LINENO&#34;</span> <span class="s2">&#34;MACHTYPE&#34;</span><span class="o">)</span>
</span></span><span class="line"><span class="cl"><span class="nv">exclude_vars</span><span class="o">+=(</span><span class="s2">&#34;OPTERR&#34;</span> <span class="s2">&#34;OPTIND&#34;</span> <span class="s2">&#34;OSTYPE&#34;</span> <span class="s2">&#34;PIPESTATUS&#34;</span> <span class="s2">&#34;PPID&#34;</span> <span class="s2">&#34;SECONDS&#34;</span> <span class="s2">&#34;SHELLOPTS&#34;</span> <span class="s2">&#34;UID&#34;</span><span class="o">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 将排除列表转为关联数组</span>
</span></span><span class="line"><span class="cl"><span class="nb">declare</span> -A exclude_map
</span></span><span class="line"><span class="cl"><span class="k">for</span> var in <span class="s2">&#34;</span><span class="si">${</span><span class="nv">exclude_vars</span><span class="p">[@]</span><span class="si">}</span><span class="s2">&#34;</span><span class="p">;</span> <span class="k">do</span>
</span></span><span class="line"><span class="cl">    exclude_map<span class="o">[</span><span class="s2">&#34;</span><span class="nv">$var</span><span class="s2">&#34;</span><span class="o">]=</span><span class="m">1</span>
</span></span><span class="line"><span class="cl"><span class="k">done</span>
</span></span><span class="line"><span class="cl"><span class="c1"># 排除所有以 BASH_ 开头的变量</span>
</span></span><span class="line"><span class="cl"><span class="k">for</span> var in <span class="s2">&#34;</span><span class="si">${</span><span class="nv">all_vars</span><span class="p">[@]</span><span class="si">}</span><span class="s2">&#34;</span><span class="p">;</span> <span class="k">do</span>
</span></span><span class="line"><span class="cl">    <span class="k">if</span> <span class="o">[[</span> <span class="nv">$var</span> <span class="o">==</span> BASH_* <span class="o">]]</span><span class="p">;</span> <span class="k">then</span>
</span></span><span class="line"><span class="cl">        exclude_map<span class="o">[</span><span class="s2">&#34;</span><span class="nv">$var</span><span class="s2">&#34;</span><span class="o">]=</span><span class="m">1</span>
</span></span><span class="line"><span class="cl">    <span class="k">fi</span>
</span></span><span class="line"><span class="cl"><span class="k">done</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 构建候选变量列表（未排除的变量）</span>
</span></span><span class="line"><span class="cl"><span class="nv">candidates</span><span class="o">=()</span>
</span></span><span class="line"><span class="cl"><span class="k">for</span> var in <span class="s2">&#34;</span><span class="si">${</span><span class="nv">all_vars</span><span class="p">[@]</span><span class="si">}</span><span class="s2">&#34;</span><span class="p">;</span> <span class="k">do</span>
</span></span><span class="line"><span class="cl">    <span class="k">if</span> <span class="o">[[</span> -z <span class="s2">&#34;</span><span class="si">${</span><span class="nv">exclude_map</span><span class="p">[</span><span class="nv">$var</span><span class="p">]</span><span class="si">}</span><span class="s2">&#34;</span> <span class="o">]]</span><span class="p">;</span> <span class="k">then</span>
</span></span><span class="line"><span class="cl">        <span class="nv">candidates</span><span class="o">+=(</span><span class="s2">&#34;</span><span class="nv">$var</span><span class="s2">&#34;</span><span class="o">)</span>
</span></span><span class="line"><span class="cl">    <span class="k">fi</span>
</span></span><span class="line"><span class="cl"><span class="k">done</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 排序以保证顺序固定</span>
</span></span><span class="line"><span class="cl"><span class="nv">IFS</span><span class="o">=</span><span class="s1">$&#39;\n&#39;</span> <span class="nv">candidates</span><span class="o">=(</span><span class="k">$(</span>sort <span class="o">&lt;&lt;&lt;</span><span class="s2">&#34;</span><span class="si">${</span><span class="nv">candidates</span><span class="p">[*]</span><span class="si">}</span><span class="s2">&#34;</span><span class="k">)</span><span class="o">)</span>
</span></span><span class="line"><span class="cl"><span class="nb">unset</span> IFS
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nb">echo</span> <span class="s2">&#34;候选环境变量数量: </span><span class="si">${#</span><span class="nv">candidates</span><span class="p">[@]</span><span class="si">}</span><span class="s2">&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nb">echo</span> <span class="s2">&#34;开始二分查找...&#34;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nv">low</span><span class="o">=</span><span class="m">0</span>
</span></span><span class="line"><span class="cl"><span class="nv">high</span><span class="o">=</span><span class="k">$((</span><span class="si">${#</span><span class="nv">candidates</span><span class="p">[@]</span><span class="si">}</span> <span class="o">-</span> <span class="m">1</span><span class="k">))</span>
</span></span><span class="line"><span class="cl"><span class="nv">iteration</span><span class="o">=</span><span class="m">1</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">while</span> <span class="o">[</span> <span class="nv">$low</span> -le <span class="nv">$high</span> <span class="o">]</span><span class="p">;</span> <span class="k">do</span>
</span></span><span class="line"><span class="cl">    <span class="nv">mid</span><span class="o">=</span><span class="k">$((</span> <span class="o">(</span>low <span class="o">+</span> high<span class="o">)</span> <span class="o">/</span> <span class="m">2</span> <span class="k">))</span>
</span></span><span class="line"><span class="cl">    <span class="c1"># 当前测试的变量子集：candidates[0] 到 candidates[mid]</span>
</span></span><span class="line"><span class="cl">    <span class="nv">test_vars</span><span class="o">=(</span><span class="s2">&#34;</span><span class="si">${</span><span class="nv">candidates</span><span class="p">[@]:</span><span class="nv">0</span><span class="p">:</span><span class="k">$((</span>mid+1<span class="k">))</span><span class="si">}</span><span class="s2">&#34;</span><span class="o">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="nb">echo</span> <span class="s2">&#34;&#34;</span>
</span></span><span class="line"><span class="cl">    <span class="nb">echo</span> <span class="s2">&#34;=== 迭代 </span><span class="nv">$iteration</span><span class="s2"> ===&#34;</span>
</span></span><span class="line"><span class="cl">    <span class="nb">echo</span> <span class="s2">&#34;测试变量范围: [0, </span><span class="nv">$mid</span><span class="s2">] (共 </span><span class="si">${#</span><span class="nv">test_vars</span><span class="p">[@]</span><span class="si">}</span><span class="s2"> 个变量)&#34;</span>
</span></span><span class="line"><span class="cl">    <span class="nb">echo</span> <span class="s2">&#34;第一个变量: </span><span class="si">${</span><span class="nv">candidates</span><span class="p">[0]</span><span class="si">}</span><span class="s2">&#34;</span>
</span></span><span class="line"><span class="cl">    <span class="nb">echo</span> <span class="s2">&#34;最后一个变量: </span><span class="si">${</span><span class="nv">candidates</span><span class="p">[mid]</span><span class="si">}</span><span class="s2">&#34;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="c1"># 构建 env 命令</span>
</span></span><span class="line"><span class="cl">    <span class="nv">env_cmd</span><span class="o">=(</span>env -i<span class="o">)</span>
</span></span><span class="line"><span class="cl">    <span class="c1"># 添加基础变量</span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> var in <span class="s2">&#34;</span><span class="si">${</span><span class="nv">basic_vars</span><span class="p">[@]</span><span class="si">}</span><span class="s2">&#34;</span><span class="p">;</span> <span class="k">do</span>
</span></span><span class="line"><span class="cl">        <span class="c1"># 注意：这里的单引号是必要的</span>
</span></span><span class="line"><span class="cl">        <span class="nv">env_cmd</span><span class="o">+=(</span><span class="s2">&#34;</span><span class="nv">$var</span><span class="s2">=&#39;</span><span class="si">${</span><span class="p">!var</span><span class="si">}</span><span class="s2">&#39;&#34;</span><span class="o">)</span>
</span></span><span class="line"><span class="cl">    <span class="k">done</span>
</span></span><span class="line"><span class="cl">    <span class="nv">env_cmd</span><span class="o">+=(</span><span class="s2">&#34;PATH=&#39;</span><span class="nv">$PATH_VAL</span><span class="s2">&#39;&#34;</span><span class="o">)</span>
</span></span><span class="line"><span class="cl">    <span class="c1"># 添加当前测试的候选变量</span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> var in <span class="s2">&#34;</span><span class="si">${</span><span class="nv">test_vars</span><span class="p">[@]</span><span class="si">}</span><span class="s2">&#34;</span><span class="p">;</span> <span class="k">do</span>
</span></span><span class="line"><span class="cl">        <span class="nv">env_cmd</span><span class="o">+=(</span><span class="s2">&#34;</span><span class="nv">$var</span><span class="s2">=&#39;</span><span class="si">${</span><span class="p">!var</span><span class="si">}</span><span class="s2">&#39;&#34;</span><span class="o">)</span>
</span></span><span class="line"><span class="cl">    <span class="k">done</span>
</span></span><span class="line"><span class="cl">    <span class="nv">env_cmd</span><span class="o">+=(</span><span class="s2">&#34;linuxqq&#34;</span><span class="o">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="c1"># 显示将要运行的命令（简洁）</span>
</span></span><span class="line"><span class="cl">    <span class="nb">echo</span> <span class="s2">&#34;运行命令: </span><span class="si">${</span><span class="nv">env_cmd</span><span class="p">[*]</span><span class="si">}</span><span class="s2">&#34;</span>
</span></span><span class="line"><span class="cl">    <span class="nb">echo</span> <span class="s2">&#34;请观察程序是否能正常启动（不报错且界面正常）&#34;</span>
</span></span><span class="line"><span class="cl">    <span class="nb">read</span> -p <span class="s2">&#34;是否成功? (y/n) &#34;</span> -n <span class="m">1</span> -r response
</span></span><span class="line"><span class="cl">    <span class="nb">echo</span> <span class="s2">&#34;&#34;</span>
</span></span><span class="line"><span class="cl">    <span class="k">if</span> <span class="o">[[</span> <span class="nv">$response</span> <span class="o">=</span>~ ^<span class="o">[</span>Yy<span class="o">]</span>$ <span class="o">]]</span><span class="p">;</span> <span class="k">then</span>
</span></span><span class="line"><span class="cl">        <span class="nb">echo</span> <span class="s2">&#34;成功: 问题变量在右侧区间&#34;</span>
</span></span><span class="line"><span class="cl">        <span class="nv">low</span><span class="o">=</span><span class="k">$((</span>mid <span class="o">+</span> <span class="m">1</span><span class="k">))</span>
</span></span><span class="line"><span class="cl">    <span class="k">else</span>
</span></span><span class="line"><span class="cl">        <span class="nb">echo</span> <span class="s2">&#34;失败: 问题变量在左侧区间&#34;</span>
</span></span><span class="line"><span class="cl">        <span class="nv">high</span><span class="o">=</span><span class="k">$((</span>mid <span class="o">-</span> <span class="m">1</span><span class="k">))</span>
</span></span><span class="line"><span class="cl">    <span class="k">fi</span>
</span></span><span class="line"><span class="cl">    <span class="nv">iteration</span><span class="o">=</span><span class="k">$((</span>iteration <span class="o">+</span> <span class="m">1</span><span class="k">))</span>
</span></span><span class="line"><span class="cl"><span class="k">done</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">if</span> <span class="o">[</span> <span class="nv">$low</span> -eq <span class="nv">$high</span> <span class="o">]</span><span class="p">;</span> <span class="k">then</span>
</span></span><span class="line"><span class="cl">    <span class="nv">culprit</span><span class="o">=</span><span class="s2">&#34;</span><span class="si">${</span><span class="nv">candidates</span><span class="p">[</span><span class="nv">$low</span><span class="p">]</span><span class="si">}</span><span class="s2">&#34;</span>
</span></span><span class="line"><span class="cl">    <span class="nb">echo</span> <span class="s2">&#34;&#34;</span>
</span></span><span class="line"><span class="cl">    <span class="nb">echo</span> <span class="s2">&#34;找到可能导致问题的变量: </span><span class="nv">$culprit</span><span class="s2">&#34;</span>
</span></span><span class="line"><span class="cl">    <span class="nb">echo</span> <span class="s2">&#34;当前值: </span><span class="si">${</span><span class="p">!culprit</span><span class="si">}</span><span class="s2">&#34;</span>
</span></span><span class="line"><span class="cl">    <span class="nb">echo</span> <span class="s2">&#34;你可以尝试取消设置该变量再启动:&#34;</span>
</span></span><span class="line"><span class="cl">    <span class="nb">echo</span> <span class="s2">&#34;  unset </span><span class="nv">$culprit</span><span class="s2"> &amp;&amp; linuxqq&#34;</span>
</span></span><span class="line"><span class="cl">    <span class="nb">echo</span> <span class="s2">&#34;或者使用干净的 env 启动:&#34;</span>
</span></span><span class="line"><span class="cl">    <span class="nb">echo</span> <span class="s2">&#34;  env -i HOME=\&#34;\$HOME\&#34; USER=\&#34;\$USER\&#34; DISPLAY=\&#34;\$DISPLAY\&#34; \\&#34;</span>
</span></span><span class="line"><span class="cl">    <span class="nb">echo</span> <span class="s2">&#34;      XDG_RUNTIME_DIR=\&#34;\$XDG_RUNTIME_DIR\&#34; \\&#34;</span>
</span></span><span class="line"><span class="cl">    <span class="nb">echo</span> <span class="s2">&#34;      DBUS_SESSION_BUS_ADDRESS=\&#34;\$DBUS_SESSION_BUS_ADDRESS\&#34; \\&#34;</span>
</span></span><span class="line"><span class="cl">    <span class="nb">echo</span> <span class="s2">&#34;      PATH=/usr/bin:/usr/local/bin linuxqq&#34;</span>
</span></span><span class="line"><span class="cl"><span class="k">else</span>
</span></span><span class="line"><span class="cl">    <span class="nb">echo</span> <span class="s2">&#34;未找到具体变量，可能由多个变量组合引起，或不在候选列表中。&#34;</span>
</span></span><span class="line"><span class="cl"><span class="k">fi</span>
</span></span></code></pre></div>
        
        <hr><p>Published on 2026-04-08 at <a href='https://blog.qyt.li/x/'>qytlix no blogs</a>, last modified on 2026-04-08</p>]]></description><category>content</category><category>tech</category><category>技术</category></item></channel></rss>