<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Diary on qytlix no blogs</title><link>https://blog.qyt.li/x/categories/diary/</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>Sun, 19 Apr 2026 22:59:59 +0800</lastBuildDate><atom:link href="https://blog.qyt.li/x/categories/diary/index.xml" rel="self" type="application/rss+xml"/><item><title>hugo搭建blog</title><link>https://blog.qyt.li/x/post/tech/hugo%E6%90%AD%E5%BB%BAblog/</link><pubDate>Sun, 19 Apr 2026 22:59:59 +0800</pubDate><author>qytlix@gmail.com (qytlix)</author><guid>https://blog.qyt.li/x/post/tech/hugo%E6%90%AD%E5%BB%BAblog/</guid><description>
<![CDATA[<h1>hugo搭建blog</h1><p>Author: qytlix(qytlix@gmail.com)</p>
        
          <h2 id="新建站点">
<a class="header-anchor" href="#%e6%96%b0%e5%bb%ba%e7%ab%99%e7%82%b9"></a>
新建站点
</h2><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">hugo new site &lt;site-name&gt;
</span></span><span class="line"><span class="cl"><span class="c1"># 或者可以</span>
</span></span><span class="line"><span class="cl">hugo new site .
</span></span></code></pre></div><h2 id="设置gitignore">
<a class="header-anchor" href="#%e8%ae%be%e7%bd%aegitignore"></a>
设置gitignore
</h2><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl"># .gitignore
</span></span><span class="line"><span class="cl">public
</span></span></code></pre></div><h2 id="配置文件">
<a class="header-anchor" href="#%e9%85%8d%e7%bd%ae%e6%96%87%e4%bb%b6"></a>
配置文件
</h2><p>很需要调整的hugo的文件有：</p>
<ul>
<li>hugo.toml</li>
<li>.github/workflows/hugo.yaml</li>
<li>content/*</li>
<li>config/*</li>
<li>data/*</li>
</ul>
<p>按需求调整即可。</p>

  <blockquote class="alert-blockquote hint">
    <p class="alert-heading">
      Hint
    </p>
    <p><p>我这个皮肤需要把博文放在<code>content/post/</code>目录下面才能被检测到post的统计信息中，如果发现统计信息有误，可以尝试更换路径。</p></p>
  </blockquote>


  <blockquote class="alert-blockquote hint">
    <p class="alert-heading">
      Hint
    </p>
    <p><p>如果有特别的需求，把blog部署到奇怪的地方（例如部署到<code>mysite.com/x</code>），可以参考<code>.github/workflows/hugo.yaml</code>42行，<code>hugo.toml</code>1行、6行。</p></p>
  </blockquote>

<h2 id="添加皮肤">
<a class="header-anchor" href="#%e6%b7%bb%e5%8a%a0%e7%9a%ae%e8%82%a4"></a>
添加皮肤
</h2><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">git submodule add &lt;好看皮肤的仓库地址&gt;
</span></span></code></pre></div><p>在<code>hugo.toml</code>中设置<code>theme=&lt;主题名字&gt;</code>。</p>
<p>一般会复制主题中的config和data用于本地配置。</p>
<h2 id="添加blogs">
<a class="header-anchor" href="#%e6%b7%bb%e5%8a%a0blogs"></a>
添加blogs
</h2><p>往content文件夹里面塞东西即可。</p>

  <blockquote class="alert-blockquote warning">
    <p class="alert-heading">
      Warning
    </p>
    <p><p>hugo需要文章有元数据（front matter），实例如下</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">---
</span></span><span class="line"><span class="cl">title: This is title
</span></span><span class="line"><span class="cl">draft: false
</span></span><span class="line"><span class="cl">date: 2026-04-08 11:08:03+08:00
</span></span><span class="line"><span class="cl">categories:
</span></span><span class="line"><span class="cl">- test
</span></span><span class="line"><span class="cl">- only for test
</span></span><span class="line"><span class="cl">tag:
</span></span><span class="line"><span class="cl">- notag
</span></span><span class="line"><span class="cl">---
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">More content
</span></span></code></pre></div></p>
        
        <hr><p>Published on 2026-04-19 at <a href='https://blog.qyt.li/x/'>qytlix no blogs</a>, last modified on 2026-04-19</p>]]></description><category>Diary</category></item><item><title>tmux默认shell</title><link>https://blog.qyt.li/x/post/tech/%E6%8A%80%E6%9C%AF/tmux%E9%BB%98%E8%AE%A4shell/</link><pubDate>Sun, 19 Apr 2026 23:01:25 +0800</pubDate><author>qytlix@gmail.com (qytlix)</author><guid>https://blog.qyt.li/x/post/tech/%E6%8A%80%E6%9C%AF/tmux%E9%BB%98%E8%AE%A4shell/</guid><description>
<![CDATA[<h1>tmux默认shell</h1><p>Author: qytlix(qytlix@gmail.com)</p>
        
          <p>这是最直接的方法，通过在 Tmux 配置文件（<code>~/.tmux.conf</code>）中指定一个 shell 的<strong>完整路径</strong>来实现。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">vim ~/.tmux.conf
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl"># .tmux.conf
</span></span><span class="line"><span class="cl">set -g default-shell &#34;/usr/bin/zsh&#34;
</span></span></code></pre></div>
        
        <hr><p>Published on 2026-04-19 at <a href='https://blog.qyt.li/x/'>qytlix no blogs</a>, last modified on 2026-04-06</p>]]></description><category>Diary</category><category>技术</category></item><item><title>hyprland打开、关闭屏幕</title><link>https://blog.qyt.li/x/post/tech/%E6%8A%80%E6%9C%AF/hyprland%E6%89%93%E5%BC%80%E5%85%B3%E9%97%AD%E5%B1%8F%E5%B9%95/</link><pubDate>Sun, 19 Apr 2026 23:01:25 +0800</pubDate><author>qytlix@gmail.com (qytlix)</author><guid>https://blog.qyt.li/x/post/tech/%E6%8A%80%E6%9C%AF/hyprland%E6%89%93%E5%BC%80%E5%85%B3%E9%97%AD%E5%B1%8F%E5%B9%95/</guid><description>
<![CDATA[<h1>hyprland打开、关闭屏幕</h1><p>Author: qytlix(qytlix@gmail.com)</p>
        
          <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">hyprctl dispatch dpms off  <span class="c1"># 关闭屏幕</span>
</span></span><span class="line"><span class="cl">hyprctl dispatch dpms on   <span class="c1"># 打开屏幕</span>
</span></span></code></pre></div>
        
        <hr><p>Published on 2026-04-19 at <a href='https://blog.qyt.li/x/'>qytlix no blogs</a>, last modified on 2026-03-22</p>]]></description><category>Diary</category><category>技术</category></item><item><title>comfyui启动</title><link>https://blog.qyt.li/x/post/tech/%E6%8A%80%E6%9C%AF/comfyui%E5%90%AF%E5%8A%A8/</link><pubDate>Sun, 19 Apr 2026 23:01:25 +0800</pubDate><author>qytlix@gmail.com (qytlix)</author><guid>https://blog.qyt.li/x/post/tech/%E6%8A%80%E6%9C%AF/comfyui%E5%90%AF%E5%8A%A8/</guid><description>
<![CDATA[<h1>comfyui启动</h1><p>Author: qytlix(qytlix@gmail.com)</p>
        
          <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">HSA_OVERRIDE_GFX_VERSION</span><span class="o">=</span>10.3.0
</span></span><span class="line"><span class="cl">python main.py --listen 0.0.0.0
</span></span></code></pre></div>
        
        <hr><p>Published on 2026-04-19 at <a href='https://blog.qyt.li/x/'>qytlix no blogs</a>, last modified on 2026-03-16</p>]]></description><category>Diary</category><category>技术</category></item><item><title>stable diffusion webui 启动</title><link>https://blog.qyt.li/x/post/tech/%E6%8A%80%E6%9C%AF/stable-diffusion-webui-%E5%90%AF%E5%8A%A8/</link><pubDate>Sun, 19 Apr 2026 23:01:25 +0800</pubDate><author>qytlix@gmail.com (qytlix)</author><guid>https://blog.qyt.li/x/post/tech/%E6%8A%80%E6%9C%AF/stable-diffusion-webui-%E5%90%AF%E5%8A%A8/</guid><description>
<![CDATA[<h1>stable diffusion webui 启动</h1><p>Author: qytlix(qytlix@gmail.com)</p>
        
          <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">conda activate sd_webui
</span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">HF_ENDPOINT</span><span class="o">=</span>https://hf-mirror.com
</span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">HSA_OVERRIDE_GFX_VERSION</span><span class="o">=</span>10.3.0
</span></span><span class="line"><span class="cl">python launch.py
</span></span></code></pre></div>
        
        <hr><p>Published on 2026-04-19 at <a href='https://blog.qyt.li/x/'>qytlix no blogs</a>, last modified on 2026-03-16</p>]]></description><category>Diary</category><category>技术</category></item><item><title>my new year goals</title><link>https://blog.qyt.li/x/post/tech/%E6%8A%80%E6%9C%AF/my-new-year-goals/</link><pubDate>Sun, 19 Apr 2026 23:01:25 +0800</pubDate><author>qytlix@gmail.com (qytlix)</author><guid>https://blog.qyt.li/x/post/tech/%E6%8A%80%E6%9C%AF/my-new-year-goals/</guid><description>
<![CDATA[<h1>my new year goals</h1><p>Author: qytlix(qytlix@gmail.com)</p>
        
          <p>After winter vacation, it occurs to me that a new year arrived 2 months ago. It&rsquo;s time to make some new year goals, including learning, daily life and social interaction.</p>
<p>First, as a freshman in ECNU, I should be devoted to learning knowledge. On the one hand, I need to pay more attention to courses, regardless of the number of credits so that I can keep my GPA at an appropriate rank. On the other hand, I should get more extra-curricular information to broaden my horizon and find my future career direction. Not only should I study for my own self, but also help fellow students to evolve into more knowledgeable individuals through sharing notes, teaching them again after class, discussing online through WeChat and so on.</p>
        
        <hr><p>Published on 2026-04-19 at <a href='https://blog.qyt.li/x/'>qytlix no blogs</a>, last modified on 2026-03-13</p>]]></description><category>Diary</category><category>技术</category></item><item><title>clash手动打开tun模式</title><link>https://blog.qyt.li/x/post/tech/%E6%8A%80%E6%9C%AF/clash%E6%89%8B%E5%8A%A8%E6%89%93%E5%BC%80tun%E6%A8%A1%E5%BC%8F/</link><pubDate>Sun, 19 Apr 2026 23:01:25 +0800</pubDate><author>qytlix@gmail.com (qytlix)</author><guid>https://blog.qyt.li/x/post/tech/%E6%8A%80%E6%9C%AF/clash%E6%89%8B%E5%8A%A8%E6%89%93%E5%BC%80tun%E6%A8%A1%E5%BC%8F/</guid><description>
<![CDATA[<h1>clash手动打开tun模式</h1><p>Author: qytlix(qytlix@gmail.com)</p>
        
          <p>在clash启动的时候运行<code>sudo clash-verge-service'即可。 举例说明，修改了</code>Exec`字段。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-desktop" data-lang="desktop"><span class="line"><span class="cl"><span class="c1"># /usr/share/applications/Clash\ Verge.desktop</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="k">[Desktop Entry]</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="na">Categories</span><span class="o">=</span><span class="s">Development;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="na">Comment</span><span class="o">=</span><span class="s">Clash Verge Rev</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="na">Exec</span><span class="o">=</span><span class="s">/bin/bash -c &#34;sudo clash-verge-service &amp; clash-verge %U&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="na">StartupWMClass</span><span class="o">=</span><span class="s">clash-verge</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="na">Icon</span><span class="o">=</span><span class="s">clash-verge</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="na">Name</span><span class="o">=</span><span class="s">Clash Verge</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="na">Terminal</span><span class="o">=</span><span class="s">false</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="na">Type</span><span class="o">=</span><span class="s">Application</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="na">MimeType</span><span class="o">=</span><span class="s">x-scheme-handler/clash;</span><span class="w">
</span></span></span></code></pre></div><blockquote>
<p>也可以使用<code>pkexec clash-verge-service &amp;</code>来启动服务，但是每次都需要输入密码。</p>
</blockquote>
        
        <hr><p>Published on 2026-04-19 at <a href='https://blog.qyt.li/x/'>qytlix no blogs</a>, last modified on 2026-03-13</p>]]></description><category>Diary</category><category>技术</category></item><item><title>合盖运行</title><link>https://blog.qyt.li/x/post/tech/%E6%8A%80%E6%9C%AF/%E5%90%88%E7%9B%96%E8%BF%90%E8%A1%8C/</link><pubDate>Sun, 19 Apr 2026 23:01:25 +0800</pubDate><author>qytlix@gmail.com (qytlix)</author><guid>https://blog.qyt.li/x/post/tech/%E6%8A%80%E6%9C%AF/%E5%90%88%E7%9B%96%E8%BF%90%E8%A1%8C/</guid><description>
<![CDATA[<h1>合盖运行</h1><p>Author: qytlix(qytlix@gmail.com)</p>
        
          <blockquote>
<p>有一点问题，打开之后进不了hyprland。</p>
</blockquote>
<p>想让你的Linux笔记本在合上盖子后继续运行（比如下载文件或当服务器），可以通过修改一个系统配置文件来实现。几乎所有主流的Linux发行版（如Ubuntu、Debian、CentOS等）都适用这个方法。</p>
<p>下面是具体的操作步骤，跟着做就能搞定。</p>
<h3 id="-核心操作修改配置文件">
<a class="header-anchor" href="#-%e6%a0%b8%e5%bf%83%e6%93%8d%e4%bd%9c%e4%bf%ae%e6%94%b9%e9%85%8d%e7%bd%ae%e6%96%87%e4%bb%b6"></a>
⚙️ 核心操作：修改配置文件
</h3><p>这个操作的核心是告诉系统，在合上盖子时“什么也不做”，而不是进入休眠。</p>
<ol>
<li>
<p><strong>打开终端</strong>：在你的Linux系统上打开终端程序。</p>
</li>
<li>
<p><strong>编辑配置文件</strong>：在终端中输入以下命令，使用管理员权限编辑配置文件。这里以<code>nano</code>编辑器为例，如果你熟悉<code>vim</code>，也可以将<code>nano</code>替换为<code>vim</code>：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo nano /etc/systemd/logind.conf
</span></span></code></pre></div></li>
<li>
<p><strong>修改配置项</strong>：在打开的文件中，找到下面这几行（它们通常是被<code>#</code>注释掉的）：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1">#HandleLidSwitch=suspend</span>
</span></span><span class="line"><span class="cl"><span class="c1">#HandleLidSwitchExternalPower=suspend</span>
</span></span><span class="line"><span class="cl"><span class="c1">#HandleLidSwitchDocked=ignore</span>
</span></span></code></pre></div><p>将它们修改为下面的样子（<strong>删除行首的<code>#</code>，并将等号后面的值改为<code>ignore</code></strong>）：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nv">HandleLidSwitch</span><span class="o">=</span>ignore
</span></span><span class="line"><span class="cl"><span class="nv">HandleLidSwitchExternalPower</span><span class="o">=</span>ignore
</span></span><span class="line"><span class="cl"><span class="nv">HandleLidSwitchDocked</span><span class="o">=</span>ignore
</span></span></code></pre></div><p><strong>各参数的含义</strong>：</p>
<ul>
<li><code>HandleLidSwitch</code>：定义了在最常见情况下（即未区分以下两种特殊状态）合上笔记本盖子的行为。</li>
<li><code>HandleLidSwitchExternalPower</code>：当笔记本连接着外部电源时，合上盖子的行为。</li>
<li><code>HandleLidSwitchDocked</code>：当笔记本连接着扩展坞或外接显示器时，合上盖子的行为。</li>
<li>将值设置为<code>ignore</code>，就是告诉系统忽略合盖这个事件，什么也不做，从而保持系统继续运行。</li>
</ul>
</li>
<li>
<p><strong>保存文件并退出</strong>：</p>
<ul>
<li>如果你使用的是<code>nano</code>，按 <code>Ctrl + O</code> 保存文件，然后按 <code>Ctrl + X</code> 退出。</li>
<li>如果你使用的是<code>vim</code>，按 <code>Esc</code> 键退出编辑模式，然后输入 <code>:wq</code> 并回车。</li>
</ul>
</li>
<li>
<p><strong>重启服务使配置生效</strong>：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo systemctl restart systemd-logind
</span></span></code></pre></div><p>执行完这条命令后，你的设置就生效了，现在合上笔记本盖子，系统就会继续运行。</p>
</li>
</ol>
<h3 id="-补充说明与进阶技巧">
<a class="header-anchor" href="#-%e8%a1%a5%e5%85%85%e8%af%b4%e6%98%8e%e4%b8%8e%e8%bf%9b%e9%98%b6%e6%8a%80%e5%b7%a7"></a>
💡 补充说明与进阶技巧
</h3><ul>
<li><strong>只想锁屏，不想休眠？</strong>：如果你合上盖子的目的只是暂时离开，希望系统在后台继续运行，但屏幕关闭以节省电力和保护屏幕，可以将 <code>HandleLidSwitch</code> 的值设置为 <code>lock</code>。这样合盖后屏幕会锁定（通常屏幕背光也会关闭），但所有程序继续运行。你回来打开盖子，输入密码就能继续使用。</li>
<li><strong>屏幕还亮着？可以手动关闭</strong>：如果你按照上面的步骤设置后，合上盖子屏幕依然亮着，可以考虑安装一个小工具来手动关闭屏幕。例如，安装 <code>vbetool</code>：
<ol>
<li>安装命令：<code>sudo apt install vbetool</code> (适用于Debian/Ubuntu系统)</li>
<li>关闭屏幕：<code>sudo vbetool dpms off</code></li>
<li>开启屏幕：<code>sudo vbetool dpms on</code>
你可以将关闭屏幕的命令设置一个快捷键，或者合盖前在终端中运行。</li>
</ol>
</li>
</ul>
<p>希望这些步骤对你有帮助。设置好之后，你的笔记本就能变身为一台安静的“服务器”啦。如果在操作过程中遇到什么问题，比如找不到文件或者命令报错，随时可以再问我。</p>
        
        <hr><p>Published on 2026-04-19 at <a href='https://blog.qyt.li/x/'>qytlix no blogs</a>, last modified on 2026-03-13</p>]]></description><category>Diary</category><category>技术</category></item><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>Sun, 19 Apr 2026 23:01:25 +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>。</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-19 at <a href='https://blog.qyt.li/x/'>qytlix no blogs</a>, last modified on 2026-03-10</p>]]></description><category>Diary</category><category>技术</category></item><item><title>fcitx5黑色皮肤</title><link>https://blog.qyt.li/x/post/tech/%E6%8A%80%E6%9C%AF/fcitx5%E9%BB%91%E8%89%B2%E7%9A%AE%E8%82%A4/</link><pubDate>Sun, 19 Apr 2026 23:01:25 +0800</pubDate><author>qytlix@gmail.com (qytlix)</author><guid>https://blog.qyt.li/x/post/tech/%E6%8A%80%E6%9C%AF/fcitx5%E9%BB%91%E8%89%B2%E7%9A%AE%E8%82%A4/</guid><description>
<![CDATA[<h1>fcitx5黑色皮肤</h1><p>Author: qytlix(qytlix@gmail.com)</p>
        
          <p>安装了<code>xdg-desktop-portal-gtk</code>这个包之后就自动上黑色皮肤了。</p>
        
        <hr><p>Published on 2026-04-19 at <a href='https://blog.qyt.li/x/'>qytlix no blogs</a>, last modified on 2026-03-10</p>]]></description><category>Diary</category><category>技术</category></item></channel></rss>