<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="/assets/rss-20b3285f.xsl"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>标签: Arch Linux - ouuan's blog</title>
        <link>https://ouuan.moe/tag/Arch%20Linux</link>
        <description>标签为 Arch Linux 的文章 - ouuan 的博客</description>
        <lastBuildDate>Thu, 20 Mar 2025 14:18:09 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>zh-CN</language>
        <copyright>Copyright © 2022 - 2026 ouuan
Licensed under CC BY-SA 4.0</copyright>
        <atom:link href="https://ouuan.moe/tag/Arch%20Linux/feed.xml" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[修复 XeTeX 更新导致编译错误]]></title>
            <link>https://ouuan.moe/post/2025/03/fix-xetex-update</link>
            <guid>https://ouuan.moe/post/2025/03/fix-xetex-update</guid>
            <pubDate>Thu, 20 Mar 2025 14:18:09 GMT</pubDate>
            <description><![CDATA[<p>毕设又咕了几周<span class="mojikumi-line-end">，</span>今天一看编译出错<span class="mojikumi-line-start">（</span></p>
]]></description>
            <content:encoded><![CDATA[<p>毕设又咕了几周<span class="mojikumi-line-end">，</span>今天一看编译出错<span class="mojikumi-line-start">（</span></p>

<section class="code-block relative my-6 shadow" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h2 class="text-3 text-footer" aria-label="plain text 代码块" data-v-c675dba6>plain text</h2><ile-root id="ile-1"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-1--></div><div class="dark:hidden" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><samp><span><span style="color: #403f53">This is XeTeX, Version 3.141592653-2.6-0.999997 (TeX Live 2025/Arch Linux) (preloaded format=xetex)</span></span>
<span><span style="color: #403f53"> restricted \write18 enabled.</span></span>
<span><span style="color: #403f53">---! /var/lib/texmf/web2c/xetex/xetex.fmt made by different executable version, strings are different</span></span>
<span><span style="color: #403f53">(Fatal format file error; I&#39;m stymied)</span></span></samp></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><samp><span><span style="color: #d6deeb">This is XeTeX, Version 3.141592653-2.6-0.999997 (TeX Live 2025/Arch Linux) (preloaded format=xetex)</span></span>
<span><span style="color: #d6deeb"> restricted \write18 enabled.</span></span>
<span><span style="color: #d6deeb">---! /var/lib/texmf/web2c/xetex/xetex.fmt made by different executable version, strings are different</span></span>
<span><span style="color: #d6deeb">(Fatal format file error; I&#39;m stymied)</span></span></samp></pre></div></section>
<h2 id="tldr" class="heading"><a href="#tldr" class="heading-anchor" aria-label="章节： tl;dr" tabindex="-1"></a><span>tl;dr</span></h2>
<p><code>sudo<wbr> <wbr>pacman<wbr> -<wbr>S<wbr> <wbr>texlive<wbr>-<wbr>xetex</code></p>
<h2 id="问-gpt" class="heading"><a href="#问-gpt" class="heading-anchor" aria-label="章节： 问 GPT" tabindex="-1"></a><span>问 GPT</span></h2>
<p>先去问了下 GPT<span class="mojikumi-line-end">，</span>它让我 <code>sudo<wbr> <wbr>rm<wbr> /<wbr>var<wbr>/<wbr>lib<wbr>/<wbr>texmf<wbr>/<wbr>web2c<wbr>/<wbr>xetex<wbr>/<wbr>xetex<wbr>.<wbr>fmt</code> 然后 <code>sudo<wbr> <wbr>fmtutil<wbr>-<wbr>sys<wbr> --<wbr>all</code> 或者 <code>sudo<wbr> <wbr>fmtutil<wbr>-<wbr>sys<wbr> --<wbr>byfmt<wbr> <wbr>xetex</code><span class="mojikumi-line-end">。</span>当然是没用的<span class="mojikumi-line-end">，</span>因为此时我没有安装 <code>texlive<wbr>-<wbr>xetex</code><span class="mojikumi-line-start">（</span></p>
<p>后来我自己发现问题了<span class="mojikumi-line-end">，</span>但如果再告诉 GPT <code>Did<wbr> <wbr>not<wbr> <wbr>find<wbr> <wbr>entry<wbr> <wbr>for<wbr> <wbr>byfmt<wbr>=<wbr>xetex<wbr> <wbr>skipped</code> 应该可以省几分钟<span class="mojikumi-line-end">。</span></p>
<h2 id="问题分析" class="heading"><a href="#问题分析" class="heading-anchor" aria-label="章节： 问题分析" tabindex="-1"></a><span>问题分析</span></h2>
<p>首先是在 2023 年<span class="mojikumi-line-end">，</span>Arch Linux 把 TeX Live 拆包了<span class="mojikumi-line-end">：</span><a href="https://archlinux.org/news/tex-live-package-reorganization/">TeX Live package reorganization</a><span class="mojikumi-line-end">。</span>此事在我的 <code>/<wbr>var<wbr>/<wbr>log<wbr>/<wbr>pacman<wbr>.<wbr>log</code> 中记载如下<span class="mojikumi-line-end">：</span></p>
<section class="code-block relative my-6 shadow" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h3 class="text-3 text-footer" aria-label="plain text 代码块" data-v-c675dba6>plain text</h3><ile-root id="ile-2"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-2--></div><div class="dark:hidden" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><samp><span><span style="color: #403f53">[2023-06-18T19:25:40+0800] [PACMAN] Running &#39;pacman -S texlive-binextra&#39;</span></span>
<span><span style="color: #403f53">[2023-06-18T19:25:47+0800] [ALPM] transaction started</span></span>
<span><span style="color: #403f53">[2023-06-18T19:25:47+0800] [ALPM] installed texlive-binextra (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:25:47+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #403f53">[2023-06-18T19:25:47+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:25:47+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:25:48+0800] [ALPM] running &#39;72-texlive-fmtutil.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:25:48+0800] [ALPM-SCRIPTLET] fmtutil [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span>
<span><span style="color: #403f53">[2023-06-18T19:36:40+0800] [PACMAN] Running &#39;pacman --noconfirm --color=always -Sy&#39;</span></span>
<span><span style="color: #403f53">[2023-06-18T19:36:40+0800] [PACMAN] synchronizing package lists</span></span>
<span><span style="color: #403f53">[2023-06-18T19:36:42+0800] [PACMAN] Running &#39;pacman --color=always -Su&#39;</span></span>
<span><span style="color: #403f53">[2023-06-18T19:36:42+0800] [PACMAN] starting full system upgrade</span></span>
<span><span style="color: #403f53">[2023-06-18T19:36:45+0800] [PACMAN] Running &#39;pacman -S texlive-xetex&#39;</span></span>
<span><span style="color: #403f53">[2023-06-18T19:37:14+0800] [ALPM] transaction started</span></span>
<span><span style="color: #403f53">[2023-06-18T19:37:14+0800] [ALPM] installed texlive-xetex (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:37:14+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #403f53">[2023-06-18T19:37:14+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:37:14+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:37:14+0800] [ALPM] running &#39;72-texlive-fmtutil.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:37:15+0800] [ALPM-SCRIPTLET] fmtutil [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span>
<span><span style="color: #403f53">[2023-06-18T19:38:30+0800] [PACMAN] Running &#39;pacman -Rns texlive-xetex&#39;</span></span>
<span><span style="color: #403f53">[2023-06-18T19:38:31+0800] [ALPM] transaction started</span></span>
<span><span style="color: #403f53">[2023-06-18T19:38:31+0800] [ALPM] removed texlive-xetex (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:38:32+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #403f53">[2023-06-18T19:38:32+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:38:32+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:38:32+0800] [ALPM] running &#39;72-texlive-fmtutil.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:38:32+0800] [ALPM-SCRIPTLET] fmtutil [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span>
<span><span style="color: #403f53">[2023-06-18T19:50:37+0800] [PACMAN] Running &#39;pacman --noconfirm --color=always -Sy&#39;</span></span>
<span><span style="color: #403f53">[2023-06-18T19:50:37+0800] [PACMAN] synchronizing package lists</span></span>
<span><span style="color: #403f53">[2023-06-18T19:50:40+0800] [PACMAN] Running &#39;pacman --color=always -Su&#39;</span></span>
<span><span style="color: #403f53">[2023-06-18T19:50:40+0800] [PACMAN] starting full system upgrade</span></span>
<span><span style="color: #403f53">[2023-06-18T19:50:43+0800] [PACMAN] Running &#39;pacman -S texlive-meta&#39;</span></span>
<span><span style="color: #403f53">[2023-06-18T19:51:29+0800] [ALPM] transaction started</span></span>
<span><span style="color: #403f53">[2023-06-18T19:51:29+0800] [ALPM] installed texlive-bibtexextra (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:51:29+0800] [ALPM] installed texlive-context (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:51:37+0800] [ALPM] installed texlive-fontsextra (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:51:37+0800] [ALPM] installed texlive-fontutils (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:51:37+0800] [ALPM] installed texlive-formatsextra (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:51:37+0800] [ALPM] installed texlive-games (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:51:37+0800] [ALPM] installed texlive-humanities (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:51:37+0800] [ALPM] installed texlive-luatex (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:51:37+0800] [ALPM] installed texlive-metapost (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:51:37+0800] [ALPM] installed texlive-music (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:51:38+0800] [ALPM] installed texlive-plaingeneric (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:51:38+0800] [ALPM] installed texlive-pstricks (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:51:38+0800] [ALPM] installed texlive-publishers (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:51:38+0800] [ALPM] installed texlive-xetex (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:51:38+0800] [ALPM] installed texlive-meta (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:51:38+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #403f53">[2023-06-18T19:51:40+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:51:40+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:51:42+0800] [ALPM] running &#39;72-texlive-fmtutil.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:51:43+0800] [ALPM-SCRIPTLET] fmtutil [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span>
<span><span style="color: #403f53">[2023-06-18T19:53:03+0800] [ALPM] running &#39;73-texlive-updmap.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:53:03+0800] [ALPM-SCRIPTLET] updmap [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:14+0800] [PACMAN] Running &#39;pacman -Rns texlive-meta&#39;</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:15+0800] [ALPM] transaction started</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:15+0800] [ALPM] removed texlive-meta (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:16+0800] [ALPM] removed texlive-xetex (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:16+0800] [ALPM] removed texlive-publishers (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:16+0800] [ALPM] removed texlive-pstricks (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:17+0800] [ALPM] removed texlive-plaingeneric (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:17+0800] [ALPM] removed texlive-music (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:17+0800] [ALPM] removed texlive-metapost (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:17+0800] [ALPM] removed texlive-luatex (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:18+0800] [ALPM] removed texlive-latexextra (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:18+0800] [ALPM] removed texlive-latexrecommended (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:18+0800] [ALPM] removed texlive-humanities (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:18+0800] [ALPM] removed texlive-games (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:18+0800] [ALPM] removed texlive-formatsextra (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:18+0800] [ALPM] removed texlive-fontutils (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:21+0800] [ALPM] removed texlive-fontsextra (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:22+0800] [ALPM] removed texlive-context (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:22+0800] [ALPM] removed texlive-bibtexextra (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:22+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:24+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:24+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:24+0800] [ALPM] running &#39;72-texlive-fmtutil.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:24+0800] [ALPM-SCRIPTLET] fmtutil [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:46+0800] [ALPM] running &#39;73-texlive-updmap.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:54:46+0800] [ALPM-SCRIPTLET] updmap [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:28+0800] [PACMAN] Running &#39;pacman --noconfirm --color=always -Sy&#39;</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:28+0800] [PACMAN] synchronizing package lists</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:30+0800] [PACMAN] Running &#39;pacman --color=always -Su&#39;</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:30+0800] [PACMAN] starting full system upgrade</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:33+0800] [PACMAN] Running &#39;pacman -S texlive-latexrecommended&#39;</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:34+0800] [ALPM] transaction started</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:34+0800] [ALPM] installed texlive-latexrecommended (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:34+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:34+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:34+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:43+0800] [PACMAN] Running &#39;pacman --noconfirm --color=always -Sy&#39;</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:43+0800] [PACMAN] synchronizing package lists</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:46+0800] [PACMAN] Running &#39;pacman --color=always -Su&#39;</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:46+0800] [PACMAN] starting full system upgrade</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:48+0800] [PACMAN] Running &#39;pacman -S texlive-latexextra&#39;</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:49+0800] [ALPM] transaction started</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:50+0800] [ALPM] installed texlive-latexextra (2023.66594-11)</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:50+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:50+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:50+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:50+0800] [ALPM] running &#39;72-texlive-fmtutil.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-18T19:55:51+0800] [ALPM-SCRIPTLET] fmtutil [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span>
<span><span style="color: #403f53">[2023-06-18T19:56:31+0800] [ALPM] running &#39;73-texlive-updmap.hook&#39;...</span></span></samp></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><samp><span><span style="color: #d6deeb">[2023-06-18T19:25:40+0800] [PACMAN] Running &#39;pacman -S texlive-binextra&#39;</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:25:47+0800] [ALPM] transaction started</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:25:47+0800] [ALPM] installed texlive-binextra (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:25:47+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:25:47+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:25:47+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:25:48+0800] [ALPM] running &#39;72-texlive-fmtutil.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:25:48+0800] [ALPM-SCRIPTLET] fmtutil [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:36:40+0800] [PACMAN] Running &#39;pacman --noconfirm --color=always -Sy&#39;</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:36:40+0800] [PACMAN] synchronizing package lists</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:36:42+0800] [PACMAN] Running &#39;pacman --color=always -Su&#39;</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:36:42+0800] [PACMAN] starting full system upgrade</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:36:45+0800] [PACMAN] Running &#39;pacman -S texlive-xetex&#39;</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:37:14+0800] [ALPM] transaction started</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:37:14+0800] [ALPM] installed texlive-xetex (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:37:14+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:37:14+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:37:14+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:37:14+0800] [ALPM] running &#39;72-texlive-fmtutil.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:37:15+0800] [ALPM-SCRIPTLET] fmtutil [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:38:30+0800] [PACMAN] Running &#39;pacman -Rns texlive-xetex&#39;</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:38:31+0800] [ALPM] transaction started</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:38:31+0800] [ALPM] removed texlive-xetex (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:38:32+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:38:32+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:38:32+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:38:32+0800] [ALPM] running &#39;72-texlive-fmtutil.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:38:32+0800] [ALPM-SCRIPTLET] fmtutil [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:50:37+0800] [PACMAN] Running &#39;pacman --noconfirm --color=always -Sy&#39;</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:50:37+0800] [PACMAN] synchronizing package lists</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:50:40+0800] [PACMAN] Running &#39;pacman --color=always -Su&#39;</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:50:40+0800] [PACMAN] starting full system upgrade</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:50:43+0800] [PACMAN] Running &#39;pacman -S texlive-meta&#39;</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:51:29+0800] [ALPM] transaction started</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:51:29+0800] [ALPM] installed texlive-bibtexextra (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:51:29+0800] [ALPM] installed texlive-context (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:51:37+0800] [ALPM] installed texlive-fontsextra (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:51:37+0800] [ALPM] installed texlive-fontutils (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:51:37+0800] [ALPM] installed texlive-formatsextra (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:51:37+0800] [ALPM] installed texlive-games (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:51:37+0800] [ALPM] installed texlive-humanities (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:51:37+0800] [ALPM] installed texlive-luatex (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:51:37+0800] [ALPM] installed texlive-metapost (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:51:37+0800] [ALPM] installed texlive-music (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:51:38+0800] [ALPM] installed texlive-plaingeneric (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:51:38+0800] [ALPM] installed texlive-pstricks (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:51:38+0800] [ALPM] installed texlive-publishers (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:51:38+0800] [ALPM] installed texlive-xetex (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:51:38+0800] [ALPM] installed texlive-meta (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:51:38+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:51:40+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:51:40+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:51:42+0800] [ALPM] running &#39;72-texlive-fmtutil.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:51:43+0800] [ALPM-SCRIPTLET] fmtutil [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:53:03+0800] [ALPM] running &#39;73-texlive-updmap.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:53:03+0800] [ALPM-SCRIPTLET] updmap [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:14+0800] [PACMAN] Running &#39;pacman -Rns texlive-meta&#39;</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:15+0800] [ALPM] transaction started</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:15+0800] [ALPM] removed texlive-meta (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:16+0800] [ALPM] removed texlive-xetex (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:16+0800] [ALPM] removed texlive-publishers (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:16+0800] [ALPM] removed texlive-pstricks (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:17+0800] [ALPM] removed texlive-plaingeneric (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:17+0800] [ALPM] removed texlive-music (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:17+0800] [ALPM] removed texlive-metapost (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:17+0800] [ALPM] removed texlive-luatex (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:18+0800] [ALPM] removed texlive-latexextra (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:18+0800] [ALPM] removed texlive-latexrecommended (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:18+0800] [ALPM] removed texlive-humanities (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:18+0800] [ALPM] removed texlive-games (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:18+0800] [ALPM] removed texlive-formatsextra (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:18+0800] [ALPM] removed texlive-fontutils (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:21+0800] [ALPM] removed texlive-fontsextra (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:22+0800] [ALPM] removed texlive-context (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:22+0800] [ALPM] removed texlive-bibtexextra (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:22+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:24+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:24+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:24+0800] [ALPM] running &#39;72-texlive-fmtutil.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:24+0800] [ALPM-SCRIPTLET] fmtutil [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:46+0800] [ALPM] running &#39;73-texlive-updmap.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:54:46+0800] [ALPM-SCRIPTLET] updmap [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:28+0800] [PACMAN] Running &#39;pacman --noconfirm --color=always -Sy&#39;</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:28+0800] [PACMAN] synchronizing package lists</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:30+0800] [PACMAN] Running &#39;pacman --color=always -Su&#39;</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:30+0800] [PACMAN] starting full system upgrade</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:33+0800] [PACMAN] Running &#39;pacman -S texlive-latexrecommended&#39;</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:34+0800] [ALPM] transaction started</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:34+0800] [ALPM] installed texlive-latexrecommended (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:34+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:34+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:34+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:43+0800] [PACMAN] Running &#39;pacman --noconfirm --color=always -Sy&#39;</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:43+0800] [PACMAN] synchronizing package lists</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:46+0800] [PACMAN] Running &#39;pacman --color=always -Su&#39;</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:46+0800] [PACMAN] starting full system upgrade</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:48+0800] [PACMAN] Running &#39;pacman -S texlive-latexextra&#39;</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:49+0800] [ALPM] transaction started</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:50+0800] [ALPM] installed texlive-latexextra (2023.66594-11)</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:50+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:50+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:50+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:50+0800] [ALPM] running &#39;72-texlive-fmtutil.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:55:51+0800] [ALPM-SCRIPTLET] fmtutil [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span>
<span><span style="color: #d6deeb">[2023-06-18T19:56:31+0800] [ALPM] running &#39;73-texlive-updmap.hook&#39;...</span></span></samp></pre></div></section>
<p>总之<span class="mojikumi-line-end">，</span>拆包之后<span class="mojikumi-line-end">，</span>我想看看需要装什么<span class="mojikumi-line-end">。</span>发现有 <code>texlive<wbr>-<wbr>xetex</code> 就装了<span class="mojikumi-line-end">，</span>之后又换成 <code>texlive<wbr>-<wbr>meta</code><span class="mojikumi-line-end">，</span>感觉太 bloat 了又卸了<span class="mojikumi-line-start">（</span></p>
<p>之后又安装卸载过两次<span class="mojikumi-line-end">：</span></p>
<section class="code-block relative my-6 shadow" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h3 class="text-3 text-footer" aria-label="plain text 代码块" data-v-c675dba6>plain text</h3><ile-root id="ile-3"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-3--></div><div class="dark:hidden" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><samp><span><span style="color: #403f53">[2023-06-22T21:28:40+0800] [PACMAN] Running &#39;pacman -S texlive-xetex&#39;</span></span>
<span><span style="color: #403f53">[2023-06-22T21:32:05+0800] [ALPM] transaction started</span></span>
<span><span style="color: #403f53">[2023-06-22T21:32:05+0800] [ALPM] installed texlive-xetex (2023.66594-14)</span></span>
<span><span style="color: #403f53">[2023-06-22T21:32:06+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #403f53">[2023-06-22T21:32:06+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-22T21:32:06+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-22T21:32:06+0800] [ALPM] running &#39;72-texlive-fmtutil.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-22T21:32:06+0800] [ALPM-SCRIPTLET] fmtutil [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span>
<span><span style="color: #403f53">[2023-06-22T21:34:41+0800] [PACMAN] Running &#39;pacman -Rns texlive-xetex&#39;</span></span>
<span><span style="color: #403f53">[2023-06-22T21:34:41+0800] [ALPM] transaction started</span></span>
<span><span style="color: #403f53">[2023-06-22T21:34:41+0800] [ALPM] removed texlive-xetex (2023.66594-14)</span></span>
<span><span style="color: #403f53">[2023-06-22T21:34:42+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #403f53">[2023-06-22T21:34:42+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-22T21:34:42+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-22T21:34:42+0800] [ALPM] running &#39;72-texlive-fmtutil.hook&#39;...</span></span>
<span><span style="color: #403f53">[2023-06-22T21:34:42+0800] [ALPM-SCRIPTLET] fmtutil [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span></samp></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><samp><span><span style="color: #d6deeb">[2023-06-22T21:28:40+0800] [PACMAN] Running &#39;pacman -S texlive-xetex&#39;</span></span>
<span><span style="color: #d6deeb">[2023-06-22T21:32:05+0800] [ALPM] transaction started</span></span>
<span><span style="color: #d6deeb">[2023-06-22T21:32:05+0800] [ALPM] installed texlive-xetex (2023.66594-14)</span></span>
<span><span style="color: #d6deeb">[2023-06-22T21:32:06+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #d6deeb">[2023-06-22T21:32:06+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-22T21:32:06+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-22T21:32:06+0800] [ALPM] running &#39;72-texlive-fmtutil.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-22T21:32:06+0800] [ALPM-SCRIPTLET] fmtutil [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span>
<span><span style="color: #d6deeb">[2023-06-22T21:34:41+0800] [PACMAN] Running &#39;pacman -Rns texlive-xetex&#39;</span></span>
<span><span style="color: #d6deeb">[2023-06-22T21:34:41+0800] [ALPM] transaction started</span></span>
<span><span style="color: #d6deeb">[2023-06-22T21:34:41+0800] [ALPM] removed texlive-xetex (2023.66594-14)</span></span>
<span><span style="color: #d6deeb">[2023-06-22T21:34:42+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #d6deeb">[2023-06-22T21:34:42+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-22T21:34:42+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-22T21:34:42+0800] [ALPM] running &#39;72-texlive-fmtutil.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2023-06-22T21:34:42+0800] [ALPM-SCRIPTLET] fmtutil [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span></samp></pre></div></section>
<section class="code-block relative my-6 shadow" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h3 class="text-3 text-footer" aria-label="plain text 代码块" data-v-c675dba6>plain text</h3><ile-root id="ile-4"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-4--></div><div class="dark:hidden" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><samp><span><span style="color: #403f53">[2024-03-28T20:11:14+0800] [PACMAN] Running &#39;pacman --noconfirm --color=always -Sy&#39;</span></span>
<span><span style="color: #403f53">[2024-03-28T20:11:14+0800] [PACMAN] synchronizing package lists</span></span>
<span><span style="color: #403f53">[2024-03-28T20:11:27+0800] [PACMAN] Running &#39;pacman --color=always -Su&#39;</span></span>
<span><span style="color: #403f53">[2024-03-28T20:11:27+0800] [PACMAN] starting full system upgrade</span></span>
<span><span style="color: #403f53">[2024-03-28T20:11:32+0800] [PACMAN] Running &#39;pacman -S texlive-xetex&#39;</span></span>
<span><span style="color: #403f53">[2024-03-28T20:13:11+0800] [ALPM] transaction started</span></span>
<span><span style="color: #403f53">[2024-03-28T20:13:11+0800] [ALPM] installed texlive-xetex (2024.0-3)</span></span>
<span><span style="color: #403f53">[2024-03-28T20:13:11+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #403f53">[2024-03-28T20:13:11+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #403f53">[2024-03-28T20:13:11+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #403f53">[2024-03-28T20:13:13+0800] [ALPM] running &#39;72-texlive-fmtutil.hook&#39;...</span></span>
<span><span style="color: #403f53">[2024-03-28T20:13:13+0800] [ALPM-SCRIPTLET] fmtutil [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span>
<span><span style="color: #403f53">[2024-03-29T00:30:55+0800] [PACMAN] Running &#39;pacman -Rns texlive-xetex&#39;</span></span>
<span><span style="color: #403f53">[2024-03-29T00:30:55+0800] [ALPM] transaction started</span></span>
<span><span style="color: #403f53">[2024-03-29T00:30:56+0800] [ALPM] removed texlive-xetex (2024.0-3)</span></span>
<span><span style="color: #403f53">[2024-03-29T00:30:57+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #403f53">[2024-03-29T00:30:57+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #403f53">[2024-03-29T00:30:57+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #403f53">[2024-03-29T00:30:59+0800] [ALPM] running &#39;72-texlive-fmtutil.hook&#39;...</span></span>
<span><span style="color: #403f53">[2024-03-29T00:31:00+0800] [ALPM-SCRIPTLET] fmtutil [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span></samp></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><samp><span><span style="color: #d6deeb">[2024-03-28T20:11:14+0800] [PACMAN] Running &#39;pacman --noconfirm --color=always -Sy&#39;</span></span>
<span><span style="color: #d6deeb">[2024-03-28T20:11:14+0800] [PACMAN] synchronizing package lists</span></span>
<span><span style="color: #d6deeb">[2024-03-28T20:11:27+0800] [PACMAN] Running &#39;pacman --color=always -Su&#39;</span></span>
<span><span style="color: #d6deeb">[2024-03-28T20:11:27+0800] [PACMAN] starting full system upgrade</span></span>
<span><span style="color: #d6deeb">[2024-03-28T20:11:32+0800] [PACMAN] Running &#39;pacman -S texlive-xetex&#39;</span></span>
<span><span style="color: #d6deeb">[2024-03-28T20:13:11+0800] [ALPM] transaction started</span></span>
<span><span style="color: #d6deeb">[2024-03-28T20:13:11+0800] [ALPM] installed texlive-xetex (2024.0-3)</span></span>
<span><span style="color: #d6deeb">[2024-03-28T20:13:11+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #d6deeb">[2024-03-28T20:13:11+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2024-03-28T20:13:11+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2024-03-28T20:13:13+0800] [ALPM] running &#39;72-texlive-fmtutil.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2024-03-28T20:13:13+0800] [ALPM-SCRIPTLET] fmtutil [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span>
<span><span style="color: #d6deeb">[2024-03-29T00:30:55+0800] [PACMAN] Running &#39;pacman -Rns texlive-xetex&#39;</span></span>
<span><span style="color: #d6deeb">[2024-03-29T00:30:55+0800] [ALPM] transaction started</span></span>
<span><span style="color: #d6deeb">[2024-03-29T00:30:56+0800] [ALPM] removed texlive-xetex (2024.0-3)</span></span>
<span><span style="color: #d6deeb">[2024-03-29T00:30:57+0800] [ALPM] transaction completed</span></span>
<span><span style="color: #d6deeb">[2024-03-29T00:30:57+0800] [ALPM] running &#39;30-systemd-update.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2024-03-29T00:30:57+0800] [ALPM] running &#39;70-mktexlsr.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2024-03-29T00:30:59+0800] [ALPM] running &#39;72-texlive-fmtutil.hook&#39;...</span></span>
<span><span style="color: #d6deeb">[2024-03-29T00:31:00+0800] [ALPM-SCRIPTLET] fmtutil [WARNING]: resetting $HOME value (was /home/ouuan) to root&#39;s actual home (/root).</span></span></samp></pre></div></section>
<p>我印象中我曾经意外发现 <code>/<wbr>usr<wbr>/<wbr>bin<wbr>/<wbr>xetex</code> 是 <code>texlive<wbr>-<wbr>bin</code> 里的<span class="mojikumi-line-end">，</span>而 <code>texlive<wbr>-<wbr>xetex</code> 里是 <code>/<wbr>usr<wbr>/<wbr>bin<wbr>/<wbr>xetex<wbr>-<wbr>unsafe</code> 和一些其他东西<span class="mojikumi-line-end">，</span>而且 <code>texlive<wbr>-<wbr>xetex</code> 卸载掉之后当时还能正常使用<span class="mojikumi-line-end">，</span>于是就卸掉了<span class="mojikumi-line-start">（</span></p>
<p>而在 <a href="https://github.com/TeX-Live/texlive-source/blob/trunk/texk/web2c/xetexdir/NEWS">texlive-source/texk/web2c/xetexdir/NEWS</a> 中可以看到 XeTeX 的版本历史<span class="mojikumi-line-end">：</span></p>
<blockquote>
<ul>
<li>XeTeX 0.999997 (7 March 2025)</li>
<li>XeTeX 0.999996 (February 2024)</li>
<li>XeTeX 0.999995 (February 2023)</li>
</ul>
</blockquote>
<p>于是我正好在 0.999996 发布的时候重新安装了一次 XeTeX<span class="mojikumi-line-end">，</span>不知道是巧合还是当时也遇到了类似的问题<span class="mojikumi-line-end">，</span>不记得了<span class="mojikumi-line-end">。</span></p>
<p><code>pacman<wbr> -<wbr>Qo<wbr> /<wbr>var<wbr>/<wbr>lib<wbr>/<wbr>texmf<wbr>/<wbr>web2c</code> 可以发现<span class="mojikumi-line-end">，</span>这个目录<span class="mojikumi-line-start">（</span>以及里面的文件<span class="mojikumi-line-end">）</span>并不属于任何包<span class="mojikumi-line-end">，</span>实际上是由 <code>72<wbr>-<wbr>texlive<wbr>-<wbr>fmtutil<wbr>.<wbr>hook</code> 生成的<span class="mojikumi-line-end">。</span>安装了 <code>texlive<wbr>-<wbr>xetex</code> 后就会生成出 <code>/<wbr>var<wbr>/<wbr>lib<wbr>/<wbr>texmf<wbr>/<wbr>web2c<wbr>/<wbr>xetex<wbr>/<wbr>xetex<wbr>.<wbr>fmt</code> 等文件<span class="mojikumi-line-end">，</span>然后即使卸载掉也可以使用 <code>xetex</code><span class="mojikumi-line-end">，</span>但不会更新<span class="mojikumi-line-end">，</span>等到需要更新就挂了<span class="mojikumi-line-end">。</span></p>
<p>所以不要随便 unbloat<span class="mojikumi-line-start">（</span>就像 <a href="https://github.com/negativa-ai/BLAFS">BLAFS</a> 那样<span class="mojikumi-line-start">（</span></p>
<p>最后让我们再来欣赏一下这个版本号<span class="mojikumi-line-start">（</span></p>
<blockquote>
<p>3.141592653-2.6-0.999997</p>
</blockquote>]]></content:encoded>
            <category domain="https://ouuan.moe/tag/Arch%20Linux">Arch Linux</category>
            <category domain="https://ouuan.moe/tag/%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E8%AE%B0%E5%BD%95">问题解决记录</category>
        </item>
        <item>
            <title><![CDATA[在 i3 中使用多显示器]]></title>
            <link>https://ouuan.moe/post/2024/10/i3-multi-monitor</link>
            <guid>https://ouuan.moe/post/2024/10/i3-multi-monitor</guid>
            <pubDate>Tue, 15 Oct 2024 17:07:34 GMT</pubDate>
            <description><![CDATA[<p>之前我以为大家用多屏都是因为没有 tiling window manager 不会切屏<span class="mojikumi-line-end">，</span>用了才知道竖屏好<span class="mojikumi-line-start">（</span></p>
]]></description>
            <content:encoded><![CDATA[<p>之前我以为大家用多屏都是因为没有 tiling window manager 不会切屏<span class="mojikumi-line-end">，</span>用了才知道竖屏好<span class="mojikumi-line-start">（</span></p>

<p>但两个横屏的话确实就那样吧<span class="mojikumi-line-start">（</span>其实之前看室友也基本上就用一个屏幕然后另一个放壁纸<span class="mojikumi">）</span><span class="mojikumi-line-end">，</span>请买旋转升降支架<span class="mojikumi-line-end">，</span><s>学习使用 tiling window manager<span class="mojikumi-line-start">（</span></s></p>
<h2 id="xrandr-屏幕布局配置" class="heading"><a href="#xrandr-屏幕布局配置" class="heading-anchor" aria-label="章节： xrandr 屏幕布局配置" tabindex="-1"></a><span>xrandr 屏幕布局配置</span></h2>
<p>可以使用 arandr 在 GUI 中调整屏幕布局<span class="mojikumi-line-end">，</span>设置坐标和方向比较方便<span class="mojikumi-line-end">，</span>但它调不了帧率之类的<span class="mojikumi-line-end">，</span>可以保存为脚本之后手动修改<span class="mojikumi-line-end">，</span>在相应的 <code>--output HDMI-0</code> 之后加上 <code>--rate 120</code> 就行<span class="mojikumi-line-end">。</span></p>
<p>我配置了 vertical<span class="mojikumi-line-end">、</span>horizontal<span class="mojikumi-line-end">、</span>single 三种模式<span class="mojikumi-line-end">，</span>用脚本切换<span class="mojikumi-line-end">：</span></p>
<section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h3 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="Shell 代码块" data-v-c675dba6>Shell</h3><ile-root id="ile-5"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-5--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #989FB1">#!/bin/bash</span></span>
<span></span>
<span><span style="color: #4876D6">set</span><span style="color: #403F53"> </span><span style="color: #4876D6">-euo</span><span style="color: #403F53"> </span><span style="color: #4876D6">pipefail</span></span>
<span></span>
<span><span style="color: #4876D6">hdmi</span><span style="color: #994CC3">=</span><span style="color: #111111">&quot;</span><span style="color: #C96765">HDMI-0</span><span style="color: #111111">&quot;</span></span>
<span></span>
<span><span style="color: #994CC3">if</span><span style="color: #403F53"> </span><span style="color: #4876D6">xrandr</span><span style="color: #403F53"> </span><span style="color: #0C969B">|</span><span style="color: #403F53"> </span><span style="color: #4876D6">grep</span><span style="color: #403F53"> </span><span style="color: #111111">&quot;</span><span style="color: #4876D6">$hdmi</span><span style="color: #C96765"> connected 1080x1920</span><span style="color: #111111">&quot;</span><span style="color: #403F53">; </span><span style="color: #994CC3">then</span></span>
<span><span style="color: #403F53">    </span><span style="color: #989FB1"># already vertical, switch to horizontal</span></span>
<span><span style="color: #403F53">    </span><span style="color: #4876D6">&quot;$HOME&quot;</span><span style="color: #4876D6">/.screenlayout/horizontal.sh</span></span>
<span><span style="color: #994CC3">elif</span><span style="color: #403F53"> </span><span style="color: #4876D6">xrandr</span><span style="color: #403F53"> </span><span style="color: #0C969B">|</span><span style="color: #403F53"> </span><span style="color: #4876D6">grep</span><span style="color: #403F53"> </span><span style="color: #111111">&quot;</span><span style="color: #4876D6">$hdmi</span><span style="color: #C96765"> connected</span><span style="color: #111111">&quot;</span><span style="color: #403F53">; </span><span style="color: #994CC3">then</span></span>
<span><span style="color: #403F53">    </span><span style="color: #989FB1"># startup or currently horizontal, switch to vertical</span></span>
<span><span style="color: #403F53">    </span><span style="color: #4876D6">&quot;$HOME&quot;</span><span style="color: #4876D6">/.screenlayout/vertical.sh</span></span>
<span><span style="color: #994CC3">else</span></span>
<span><span style="color: #403F53">    </span><span style="color: #989FB1"># HDMI not connected, switch to single</span></span>
<span><span style="color: #403F53">    </span><span style="color: #4876D6">&quot;$HOME&quot;</span><span style="color: #4876D6">/.screenlayout/single.sh</span></span>
<span><span style="color: #994CC3">fi</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #637777">#!/bin/bash</span></span>
<span></span>
<span><span style="color: #C5E478">set</span><span style="color: #D6DEEB"> </span><span style="color: #82AAFF">-euo</span><span style="color: #D6DEEB"> </span><span style="color: #ECC48D">pipefail</span></span>
<span></span>
<span><span style="color: #C5E478">hdmi</span><span style="color: #C792EA">=</span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">HDMI-0</span><span style="color: #D9F5DD">&quot;</span></span>
<span></span>
<span><span style="color: #C792EA">if</span><span style="color: #D6DEEB"> </span><span style="color: #82AAFF">xrandr</span><span style="color: #D6DEEB"> </span><span style="color: #7FDBCA">|</span><span style="color: #D6DEEB"> </span><span style="color: #82AAFF">grep</span><span style="color: #D6DEEB"> </span><span style="color: #D9F5DD">&quot;</span><span style="color: #C5E478">$hdmi</span><span style="color: #ECC48D"> connected 1080x1920</span><span style="color: #D9F5DD">&quot;</span><span style="color: #D6DEEB">; </span><span style="color: #C792EA">then</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #637777"># already vertical, switch to horizontal</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #82AAFF">&quot;</span><span style="color: #C5E478">$HOME</span><span style="color: #82AAFF">&quot;</span><span style="color: #82AAFF">/.screenlayout/horizontal.sh</span></span>
<span><span style="color: #C792EA">elif</span><span style="color: #D6DEEB"> </span><span style="color: #82AAFF">xrandr</span><span style="color: #D6DEEB"> </span><span style="color: #7FDBCA">|</span><span style="color: #D6DEEB"> </span><span style="color: #82AAFF">grep</span><span style="color: #D6DEEB"> </span><span style="color: #D9F5DD">&quot;</span><span style="color: #C5E478">$hdmi</span><span style="color: #ECC48D"> connected</span><span style="color: #D9F5DD">&quot;</span><span style="color: #D6DEEB">; </span><span style="color: #C792EA">then</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #637777"># startup or currently horizontal, switch to vertical</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #82AAFF">&quot;</span><span style="color: #C5E478">$HOME</span><span style="color: #82AAFF">&quot;</span><span style="color: #82AAFF">/.screenlayout/vertical.sh</span></span>
<span><span style="color: #C792EA">else</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #637777"># HDMI not connected, switch to single</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #82AAFF">&quot;</span><span style="color: #C5E478">$HOME</span><span style="color: #82AAFF">&quot;</span><span style="color: #82AAFF">/.screenlayout/single.sh</span></span>
<span><span style="color: #C792EA">fi</span></span></code></pre></div></section>
<p>在启动时调用脚本进行初始化<span class="mojikumi-line-end">，</span>在 i3 中可以配置快捷键调用脚本切换布局<span class="mojikumi-line-end">。</span></p>
<h2 id="i3-多显示器配置" class="heading"><a href="#i3-多显示器配置" class="heading-anchor" aria-label="章节： i3 多显示器配置" tabindex="-1"></a><span>i3 多显示器配置</span></h2>
<p>可以参考 <a href="https://i3wm.org/docs/userguide.html#multi_monitor">Multiple monitors - i3 User<span class="mojikumi-narrow-left">’</span>s Guide</a> 的说明<span class="mojikumi-line-end">。</span>配置中用 <code>primary</code> / <code>nonprimary</code> 会比直接写具体的显示器名称更加通用<span class="mojikumi-line-end">，</span>需要在 <code>xrandr</code> 配置中设置 <code>--primary</code><span class="mojikumi-line-end">。</span></p>
<p>默认给各个显示器分配 workspace<span class="mojikumi-line-end">：</span><code>workspace $ws1 output primary</code><span class="mojikumi-line-end">、</span><code>workspace $ws2 output nonprimary</code><span class="mojikumi-line-end">。</span></p>
<p>bar 可以只在一个显示器显示<span class="mojikumi-line-start">（</span><code>bar { output primary }</code><span class="mojikumi">）</span><span class="mojikumi-line-end">，</span>或者在每个显示器都显示<span class="mojikumi-line-end">，</span>配置托盘图标显示在哪<span class="mojikumi-line-end">：</span><code>bar<wbr> { <wbr>tray_output<wbr> <wbr>primary<wbr> }</code><span class="mojikumi-line-end">。</span></p>
<p>绑快捷键<span class="mojikumi-line-end">：</span></p>
<ul>
<li>focus 到另一个显示器<span class="mojikumi-line-end">：</span><code>focus output next</code></li>
<li>移动当前 workspace 到另一个显示器<span class="mojikumi-line-end">：</span><code>move workspace to output next</code></li>
</ul>
<p>我之前一直设的 <code>workspace_<wbr>auto_<wbr>back_<wbr>and_<wbr>forth<wbr> <wbr>yes</code><span class="mojikumi-line-start">（</span>切换 workspace 时如果目标就是当前所在的 workspace<span class="mojikumi-line-end">，</span>就会回到之前所在的 workspace<span class="mojikumi">）</span><span class="mojikumi-line-end">，</span>但是之前就觉得有时候会有些混乱<span class="mojikumi-line-end">，</span>在多显示器时更是容易搞不清当前在哪个 workspace<span class="mojikumi-line-end">，</span>所以把它关了<span class="mojikumi-line-end">。</span></p>
<h2 id="picom-高亮当前窗口" class="heading"><a href="#picom-高亮当前窗口" class="heading-anchor" aria-label="章节： picom 高亮当前窗口" tabindex="-1"></a><span>picom 高亮当前窗口</span></h2>
<p>即使是单显示器<span class="mojikumi-line-end">，</span>高亮当前窗口也是有用的<span class="mojikumi-line-end">，</span>多显示器时尤其有用<span class="mojikumi-line-end">，</span>有助于提示当前在哪个显示器<span class="mojikumi-line-end">。</span></p>
<p>旧版 picom 使用 <code>inactive<wbr>-<wbr>dim</code> 选项<span class="mojikumi-line-end">，</span>现在推荐使用更加灵活的 window rule<span class="mojikumi-line-end">：</span></p>
<section class="code-block relative my-6 shadow" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h3 class="text-3 text-footer" aria-label="plain text 代码块" data-v-c675dba6>plain text</h3><ile-root id="ile-6"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-6--></div><div class="dark:hidden" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><samp><span><span style="color: #403f53">rules = (</span></span>
<span><span style="color: #403f53">    { match = &quot;window_type = &#39;normal&#39; &amp;&amp; window_type != &#39;popup_menu&#39; &amp;&amp; !_NET_WM_STATE &amp;&amp; !(focused || group_focused)&quot;; dim = 0.2; },</span></span>
<span><span style="color: #403f53">)</span></span></samp></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><samp><span><span style="color: #d6deeb">rules = (</span></span>
<span><span style="color: #d6deeb">    { match = &quot;window_type = &#39;normal&#39; &amp;&amp; window_type != &#39;popup_menu&#39; &amp;&amp; !_NET_WM_STATE &amp;&amp; !(focused || group_focused)&quot;; dim = 0.2; },</span></span>
<span><span style="color: #d6deeb">)</span></span></samp></pre></div></section>
<p><span class="mojikumi-line-start">（</span>这里 <code>window_type<wbr> != '<wbr>popup_menu<wbr>'</code> 主要是为了 konsole 的菜单<span class="mojikumi-line-end">，</span>它同时是 <code>popup_menu</code> 和 <code>normal</code><span class="mojikumi-line-end">；</span><code>_<wbr>NET_<wbr>WM_<wbr>STATE</code> 主要是为了 <code>rofi</code><span class="mojikumi-line-end">，</span>它没设 window type<span class="mojikumi-line-end">，</span>但有 <code>_<wbr>NET_<wbr>WM_<wbr>STATE_<wbr>ABOVE</code><span class="mojikumi">。</span><span class="mojikumi-line-end">）</span></p>
<h2 id="调整-dpi-修复字体和光标大小" class="heading"><a href="#调整-dpi-修复字体和光标大小" class="heading-anchor" aria-label="章节： 调整 DPI 修复字体和光标大小" tabindex="-1"></a><span>调整 DPI 修复字体和光标大小</span></h2>
<p>由于不同显示器 DPI 不同<span class="mojikumi-line-end">，</span>字体大小之类的可能出问题<span class="mojikumi-line-end">。</span></p>
<p>在 Xorg 启动后<span class="mojikumi-line-end">、</span>i3 启动前<span class="mojikumi-line-end">，</span>使用 <code>xrandr --dpi</code> 调整 DPI 可以改变 i3 窗口标题和 bar 的字体大小<span class="mojikumi-line-end">，</span>例如 <code>xrandr --dpi 144</code> / <code>xrandr --dpi DP-2</code><span class="mojikumi-line-end">。</span></p>
<p>调整 DPI 似乎并不能修复光标大小<span class="mojikumi-line-end">，</span>可以在 <code>~/.<wbr>Xresources</code> 中设置 <code>Xcursor<wbr>.<wbr>size<wbr>: <wbr>24</code><span class="mojikumi-line-end">，</span>然后在启动时加载 <code>xrdb<wbr> -<wbr>merge<wbr> ~/.<wbr>Xresources</code><span class="mojikumi-line-end">。</span><sup><a href="#user-content-fn-xcursor-size" id="user-content-fnref-xcursor-size" data-footnote-ref aria-describedby="footnote-label">1</a></sup></p>
<p>fcitx5 会根据各个屏幕的 DPI 分别调整字体大小<span class="mojikumi-line-end">，</span>可以在 classic user interface 的设置中禁用 <span class="mojikumi">“</span>use per screen DPI<span class="mojikumi">”</span><span class="mojikumi-line-end">。</span></p>
<h2 id="i3lock-布局配置" class="heading"><a href="#i3lock-布局配置" class="heading-anchor" aria-label="章节： i3lock 布局配置" tabindex="-1"></a><span>i3lock 布局配置</span></h2>
<p>position 是基于整个 screen 而非单个 display<span class="mojikumi-line-end">，</span>所以需要分别加上 <code>x</code> 和 <code>y</code><span class="mojikumi-line-end">：</span></p>
<blockquote>
<ul>
<li>
<p><code>x</code> - x position of the current display.
Corresponds to the leftmost column of pixels on that display.</p>
</li>
<li>
<p><code>y</code> - y position of the current display.
Corresponds to the topmost row of pixels on that display.</p>
</li>
</ul>
</blockquote>
<p>坐标计算可以基于 <code>w</code> 和 <code>h</code> 来同时适配横屏和竖屏<span class="mojikumi-line-end">，</span>例如<span class="mojikumi-line-end">：</span></p>
<section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h3 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="Shell 代码块" data-v-c675dba6>Shell</h3><ile-root id="ile-7"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-7--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #403F53">    </span><span style="color: #4876D6">--ind-pos</span><span style="color: #403F53"> </span><span style="color: #111111">&quot;</span><span style="color: #C96765">x+w/2:y+h/2-35</span><span style="color: #111111">&quot;</span><span style="color: #403F53"> </span><span style="color: #AA0982">\</span></span>
<span><span style="color: #403F53">    </span><span style="color: #4876D6">--greeter-pos</span><span style="color: #403F53"> </span><span style="color: #111111">&quot;</span><span style="color: #C96765">ix:iy+h/6+160</span><span style="color: #111111">&quot;</span><span style="color: #403F53"> </span><span style="color: #AA0982">\</span></span>
<span><span style="color: #403F53">    </span><span style="color: #4876D6">--time-pos</span><span style="color: #403F53"> </span><span style="color: #111111">&quot;</span><span style="color: #C96765">ix:iy+h/8+100</span><span style="color: #111111">&quot;</span><span style="color: #403F53"> </span><span style="color: #AA0982">\</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #D6DEEB">    </span><span style="color: #82AAFF">--ind-pos</span><span style="color: #D6DEEB"> </span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">x+w/2:y+h/2-35</span><span style="color: #D9F5DD">&quot;</span><span style="color: #D6DEEB"> </span><span style="color: #F78C6C">\</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #82AAFF">--greeter-pos</span><span style="color: #D6DEEB"> </span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">ix:iy+h/6+160</span><span style="color: #D9F5DD">&quot;</span><span style="color: #D6DEEB"> </span><span style="color: #F78C6C">\</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #82AAFF">--time-pos</span><span style="color: #D6DEEB"> </span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">ix:iy+h/8+100</span><span style="color: #D9F5DD">&quot;</span><span style="color: #D6DEEB"> </span><span style="color: #F78C6C">\</span></span></code></pre></div></section>
<h2 id="背景图片适配修复" class="heading"><a href="#背景图片适配修复" class="heading-anchor" aria-label="章节： 背景图片适配修复" tabindex="-1"></a><span>背景图片适配修复</span></h2>
<p>为了同时适配横屏和竖屏<span class="mojikumi-line-end">，</span>如果<span class="mojikumi-line-start">（</span><code>i3lock</code><span class="mojikumi-line-end">、</span><code>konsole</code><span class="mojikumi-line-end">、</span><code>feh</code> 等<span class="mojikumi-line-end">）</span>背景图片是少量元素 + 大片背景<span class="mojikumi-line-end">，</span>可以上下扩展背景编辑成竖屏<span class="mojikumi-line-end">，</span>再用 centered / crop 显示<span class="mojikumi-line-end">，</span>横屏时上下背景被截掉就可以正好显示中间的元素<span class="mojikumi-line-end">。</span>其中 konsole 还可以设置 anchor 的位置<span class="mojikumi-line-end">，</span>就不一定要放正中间<span class="mojikumi-line-end">，</span>例如可以放最下面<span class="mojikumi-line-start">（</span><span class="heimu">我用的背景 <a href="https://www.pixiv.net/artworks/78468574">78468574</a> 就很适合放下面</span><span class="mojikumi">）</span><span class="mojikumi-line-end">。</span></p>
<p>屏幕布局<span class="mojikumi-line-start">（</span>旋转方向<span class="mojikumi-line-end">）</span>发生改变时<span class="mojikumi-line-end">，</span>使用 <code>feh</code> 设置的桌面背景可能会乱掉<span class="mojikumi-line-end">，</span>可以在每次布局改变后重新调用 <code>feh</code> 设置背景<span class="mojikumi-line-end">，</span>放在调整屏幕布局的脚本里即可<span class="mojikumi-line-end">；</span>也可以为横竖屏设置不同的背景<span class="mojikumi-line-end">。</span></p>
<h2 id="为不同显示器设置不同壁纸" class="heading"><a href="#为不同显示器设置不同壁纸" class="heading-anchor" aria-label="章节： 为不同显示器设置不同壁纸" tabindex="-1"></a><span>为不同显示器设置不同壁纸</span></h2>
<p>给 <code>feh</code> 传多个文件名参数就可以依次为各个显示器设置不同的壁纸<span class="mojikumi-line-end">。</span>使用 <code>xrandr<wbr> --<wbr>listmonitors</code> 查看显示器的顺序<span class="mojikumi-line-end">。</span></p>
<h2 id="禁用-hdmi-音频输出" class="heading"><a href="#禁用-hdmi-音频输出" class="heading-anchor" aria-label="章节： 禁用 HDMI 音频输出" tabindex="-1"></a><span>禁用 HDMI 音频输出</span></h2>
<p>在连接到外部显示器后我的 pulseaudio 会自动切换到 HDMI 音频输出<span class="mojikumi-line-end">，</span>手动修改 default sink 也没有用<span class="mojikumi-line-end">，</span>在 xrandr 中禁用 HDMI output 就可以恢复正常<span class="mojikumi-line-end">。</span></p>
<p>单次修复可以手动在 <code>pavucontrol</code> 的 <span class="mojikumi">“</span>Configuration<span class="mojikumi">”</span> 中将外部输出的 profile 设为 <span class="mojikumi">“</span>Off<span class="mojikumi">”</span><span class="mojikumi-line-end">，</span>自动修复可以在启动时执行 <code>pactl<wbr> <wbr>set<wbr>-<wbr>card<wbr>-<wbr>profile<wbr> &#x3C;<wbr>card<wbr>> <wbr>off</code><span class="mojikumi-line-end">，</span>其中 card 名称可以通过 <code>pactl list cards</code> 得到<span class="mojikumi-line-end">。</span><sup><a href="#user-content-fn-pulseaudio-hdmi" id="user-content-fnref-pulseaudio-hdmi" data-footnote-ref aria-describedby="footnote-label">2</a></sup></p>
<p>另外还有一种更粗暴的方法是禁用 <code>snd_<wbr>hda_<wbr>codec_<wbr>hdmi</code><span class="mojikumi-line-end">，</span>只不过我这里 blacklist 不管用<span class="mojikumi-line-end">，</span>要执行 <code>rmmod<wbr> -<wbr>f<wbr> <wbr>snd_<wbr>hda_<wbr>codec_<wbr>hdmi</code> 才行<span class="mojikumi-line-end">。</span><sup><a href="#user-content-fn-rmmod-hdmi" id="user-content-fnref-rmmod-hdmi" data-footnote-ref aria-describedby="footnote-label">3</a></sup></p>
<h2 id="限制鼠标跨屏移动" class="heading"><a href="#限制鼠标跨屏移动" class="heading-anchor" aria-label="章节： 限制鼠标跨屏移动" tabindex="-1"></a><span>限制鼠标跨屏移动</span></h2>
<p>多显示器时鼠标光标可以通过屏幕边缘在各个显示器之间移动<span class="mojikumi-line-end">，</span>这在一般的 window manager 中是必不可少的功能<span class="mojikumi-line-end">，</span>但在 i3 中就没必要了<span class="mojikumi-line-end">，</span>反而容易带来麻烦<span class="mojikumi-line-end">，</span>导致移动光标到屏幕边缘更加困难<span class="mojikumi-line-end">。</span></p>
<p>如果将屏幕布局设置为两个显示器角对角只有一个像素相交<span class="mojikumi-line-end">，</span>从一个显示器移动到另一个显示器就只能在这一个像素进行<span class="mojikumi-line-end">，</span>能一定程度上缓解问题<span class="mojikumi-line-end">。</span>但实际上<span class="mojikumi-line-end">，</span>由于光标会卡在屏幕边缘<span class="mojikumi-line-end">，</span>角落的这一个像素其实很容易移动到<span class="mojikumi-line-end">，</span>还是很容易意外滑到另一个显示器<span class="mojikumi-line-end">。</span>另外<span class="mojikumi-line-end">，</span>虽然空出来的大量屏幕空间不会显示出来<span class="mojikumi-line-end">，</span>但仍然会占用显存<span class="mojikumi-line-end">，</span>也可能导致神秘渲染问题<sup><a href="#user-content-fn-pointer-barrier" id="user-content-fnref-pointer-barrier" data-footnote-ref aria-describedby="footnote-label">4</a></sup><span class="mojikumi-line-end">。</span></p>
<p>更好的解决方法是使用 <code>xpointerbarrier</code><span class="mojikumi-line-end">，</span>可以在 AUR 安装<span class="mojikumi-line-end">，</span>运行 <code>xpointerbarrier<wbr> <wbr>0<wbr> <wbr>0<wbr> <wbr>0<wbr> <wbr>0</code> 即可<span class="mojikumi-line-end">。</span><sup><a href="#user-content-fn-pointer-barrier" id="user-content-fnref-pointer-barrier-2" data-footnote-ref aria-describedby="footnote-label">4</a></sup><span class="mojikumi-line-start">（</span>我实测这个 barrier 并不 100% 靠谱<span class="mojikumi-line-end">，</span>大力多晃几次鼠标可以越过去<span class="mojikumi-line-end">，</span>但实际使用中效果还行<span class="mojikumi">。</span><span class="mojikumi-line-end">）</span></p>
<p>但 <code>xpointerbarrier</code> 只是限制了光标<span class="mojikumi-line-end">，</span>在 i3 中 focus / move 时依然可以跨屏<span class="mojikumi-line-end">，</span>不会 wrap around<span class="mojikumi-line-start">（</span>循环<span class="mojikumi">）</span><span class="mojikumi-line-end">，</span>设置为对角布局可以解决这个问题<span class="mojikumi-line-end">。</span>对于 focus<span class="mojikumi-line-end">，</span>还有一种办法是设置 <code>focus_<wbr>wrapping<wbr> <wbr>workspace</code> 来避免 focus 到另一个显示器<span class="mojikumi-line-end">，</span>但 move 并没有类似的设置<span class="mojikumi-line-end">，</span>倒是影响不大<span class="mojikumi-line-end">。</span></p>
<p>只不过<span class="mojikumi-line-end">，</span>如果不设置为对角布局<span class="mojikumi-line-end">，</span>光标跨屏显示可能会令人困惑<span class="mojikumi-line-end">，</span>而且也有小概率不小心越过 barrier<span class="mojikumi-line-end">，</span>所以设置对角布局也有其好处<span class="mojikumi-line-start">（</span>如果不缺显存的话<span class="mojikumi">）</span><span class="mojikumi-line-end">。</span></p>
<h2 id="dunst-通知跟随当前显示器" class="heading"><a href="#dunst-通知跟随当前显示器" class="heading-anchor" aria-label="章节： dunst 通知跟随当前显示器" tabindex="-1"></a><span>dunst 通知跟随当前显示器</span></h2>
<p>在 <code>~/.<wbr>config<wbr>/<wbr>dunst<wbr>/<wbr>dunstrc</code> 中可以修改通知显示在哪个显示器<span class="mojikumi-line-end">，</span>其中 <code>follow</code> 选项可以根据当前的 focus 改变通知显示的位置<span class="mojikumi-line-end">。</span></p>
<h2 id="解决运行时连接显示器导致黑屏" class="heading"><a href="#解决运行时连接显示器导致黑屏" class="heading-anchor" aria-label="章节： 解决运行时连接显示器导致黑屏" tabindex="-1"></a><span>解决运行时连接显示器导致黑屏</span></h2>
<p>我观察到如果开机后再连接显示器<span class="mojikumi-line-end">，</span>切换布局后会黑屏<span class="mojikumi-line-end">。</span>后来确认是 picom 使用 glx / egl backend 时的问题<span class="mojikumi-line-end">，</span>使用 xrender 就不会这样<span class="mojikumi-line-end">。</span>关闭 / 重启 picom 就可以恢复显示<span class="mojikumi-line-end">，</span>但 Firefox 也会卡一会儿<span class="mojikumi-line-end">，</span>应该也是 OpenGL 相关问题<span class="mojikumi-line-end">。</span>暂不清楚具体原因以及彻底修复的方法<span class="mojikumi-line-end">，</span>目前我的 workaround 是在切换布局的脚本中重启 picom<span class="mojikumi-line-end">。</span></p>
<p>log 里观察到大量 <code>Duplicate vblank event found with msc</code><span class="mojikumi-line-end">，</span>可能和 <a href="https://github.com/yshui/picom/issues/1265">https<wbr>://<wbr>github<wbr>.<wbr>com<wbr>/<wbr>yshui<wbr>/<wbr>picom<wbr>/<wbr>issues<wbr>/<wbr>1265</a> 相关<span class="mojikumi-line-end">，</span>下个版本看看会不会好<span class="mojikumi-line-end">。</span></p>
<section data-footnotes class="footnotes"><h2 class="sr-only" id="footnote-label">Footnotes</h2>
<ol>
<li id="user-content-fn-xcursor-size">
<p><a href="https://www.reddit.com/r/i3wm/comments/8ix88z/how_can_i_change_the_mouse_cursor_size/">How can I change the mouse cursor size : r/i3wm</a> <a href="#user-content-fnref-xcursor-size" data-footnote-backref class="data-footnote-backref" aria-label="Back to content">↩</a></p>
</li>
<li id="user-content-fn-pulseaudio-hdmi">
<p><a href="https://askubuntu.com/questions/15497/how-to-remove-nvidia-hdmi-audio-output-in-pulseaudio/">How to remove Nvidia HDMI audio output in PulseAudio? - Ask Ubuntu</a> <a href="#user-content-fnref-pulseaudio-hdmi" data-footnote-backref class="data-footnote-backref" aria-label="Back to content">↩</a></p>
</li>
<li id="user-content-fn-rmmod-hdmi">
<p><a href="https://bbs.archlinux.org/viewtopic.php?id=253258">[SOLVED] How to disable nvidia hdmi audio? / Kernel &#x26; Hardware / Arch Linux Forums</a> <a href="#user-content-fnref-rmmod-hdmi" data-footnote-backref class="data-footnote-backref" aria-label="Back to content">↩</a></p>
</li>
<li id="user-content-fn-pointer-barrier">
<p><a href="https://bbs.archlinux.org/viewtopic.php?id=258091">[SOLVED]Multihead: is there a way to forbid mouse from leaving screen? / Applications &#x26; Desktop Environments / Arch Linux Forums</a> <a href="#user-content-fnref-pointer-barrier" data-footnote-backref class="data-footnote-backref" aria-label="Back to content">↩</a> <a href="#user-content-fnref-pointer-barrier-2" data-footnote-backref class="data-footnote-backref" aria-label="Back to content">↩<sup>2</sup></a></p>
</li>
</ol>
</section>]]></content:encoded>
            <category domain="https://ouuan.moe/tag/i3">i3</category>
            <category domain="https://ouuan.moe/tag/Arch%20Linux">Arch Linux</category>
            <category domain="https://ouuan.moe/tag/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB">经验分享</category>
        </item>
        <item>
            <title><![CDATA[解决使用 profile-sync-daemon 时 Firefox 开机启动报错]]></title>
            <link>https://ouuan.moe/post/2024/05/psd-firefox-startup</link>
            <guid>https://ouuan.moe/post/2024/05/psd-firefox-startup</guid>
            <pubDate>Fri, 24 May 2024 18:31:28 GMT</pubDate>
            <description><![CDATA[
<p>为了提升性能<span class="mojikumi-line-end">，</span>更好地利用 RAM<span class="mojikumi-line-end">，</span>我一直在使用 <a href="https://github.com/graysky2/profile-sync-daemon">profile-sync-daemon</a><span class="mojikumi-line-end">，</span>也经常在开机时遇到下面这个报错<span class="mojikumi-line-end">：</span></p>
<blockquote>
<p>Firefox is already running, but is not responding. To use Firefox, you must first close the existing Firefox process, restart your device, or use a different profile.</p>
</blockquote>
<p>之前都是把弹窗关掉手动重启一下<span class="mojikumi-line-end">，</span>最近终于去研究了一下把它修了<span class="mojikumi-line-end">。</span></p>
]]></description>
            <content:encoded><![CDATA[
<p>为了提升性能<span class="mojikumi-line-end">，</span>更好地利用 RAM<span class="mojikumi-line-end">，</span>我一直在使用 <a href="https://github.com/graysky2/profile-sync-daemon">profile-sync-daemon</a><span class="mojikumi-line-end">，</span>也经常在开机时遇到下面这个报错<span class="mojikumi-line-end">：</span></p>
<blockquote>
<p>Firefox is already running, but is not responding. To use Firefox, you must first close the existing Firefox process, restart your device, or use a different profile.</p>
</blockquote>
<p>之前都是把弹窗关掉手动重启一下<span class="mojikumi-line-end">，</span>最近终于去研究了一下把它修了<span class="mojikumi-line-end">。</span></p>

<h2 id="profile-sync-daemon" class="heading"><a href="#profile-sync-daemon" class="heading-anchor" aria-label="章节： profile-sync-daemon" tabindex="-1"></a><span>profile-sync-daemon</span></h2>
<p><a href="https://github.com/graysky2/profile-sync-daemon">profile-sync-daemon</a> 就是在启动时把 browser profile 从硬盘复制到内存盘<span class="mojikumi-line-end">，</span>然后创建 symlink 到内存盘<span class="mojikumi-line-end">，</span>并且在需要的时候写回硬盘<span class="mojikumi-line-end">，</span>在浏览器运行过程中主要都是访问内存<span class="mojikumi-line-end">，</span>从而减少硬盘访问<span class="mojikumi-line-end">，</span>理论上可以提升性能<span class="mojikumi-line-end">、</span>降低硬盘损耗<span class="mojikumi-line-end">。</span></p>
<p>总之如果内存用不完的话<span class="mojikumi-line-end">，</span>用这个东西看起来不亏<span class="mojikumi-line-start">（</span>其实我一开始就是因为有 32G 内存用不完去搜了一下如何利用内存才知道有这个工具<span class="mojikumi-line-start">（</span></p>
<h2 id="探寻报错原因" class="heading"><a href="#探寻报错原因" class="heading-anchor" aria-label="章节： 探寻报错原因" tabindex="-1"></a><span>探寻报错原因</span></h2>
<p>在用了 profile-sync-daemon 后<span class="mojikumi-line-end">，</span>在开机时我经常遇到下面这个报错<span class="mojikumi-line-end">：</span></p>
<p><picture><img type="image/webp" srcset="/assets/firefox-already-running.a013edd1.webp" loading="lazy" src="/assets/firefox-already-running.a013edd1.webp" width="441" height="176" alt="弹窗：Firefox is already running, but is not responding. To use Firefox, you must first close the existing Firefox process, restart your device, or use a different profile."></picture></p>
<p>单次处理这个问题非常简单<span class="mojikumi-line-end">，</span>关掉弹窗重启 Firefox 即可<span class="mojikumi-line-end">。</span>但每次都遇到还是很烦<span class="mojikumi-line-end">，</span>时间久了我还是去研究了一下<span class="mojikumi-line-end">。</span></p>
<p>根据错误提示以及搜索结果<span class="mojikumi-line-end">，</span>刚开机时又肯定不会有其他 Firefox 进程在跑<span class="mojikumi-line-end">，</span>我一开始主要怀疑是 profile-sync-daemon 在关机前备份时出了问题<span class="mojikumi-line-end">，</span>导致有 lock 之类的没有释放掉就备份了<span class="mojikumi-line-end">。</span></p>
<p>由于我手动处理的时候都是重启一下 Firefox<span class="mojikumi-line-end">，</span>所以我尝试修复的时候一开始先是写了个脚本自动重启 Firefox<span class="mojikumi-line-end">，</span>发现直接重启不行<span class="mojikumi-line-end">，</span>又尝试用 <code>xdotool</code> / <code>wmctrl</code> 等待报错弹窗出现后再重启<span class="mojikumi-line-end">，</span>发现成功与否不太稳定<span class="mojikumi-line-end">。</span>而进一步地<span class="mojikumi-line-end">，</span>我发现重启这个过程是不必要的<span class="mojikumi-line-end">，</span>重点其实在于<span class="mojikumi-line-end">，</span>要多等待一会儿<span class="mojikumi-line-end">。</span></p>
<p>于是我去观察了一下刚开机时 profile 的状态<span class="mojikumi-line-end">，</span>终于发现了问题<span class="mojikumi-line-end">。</span>刚开机时 profile directory 会被设为到 <code>/dev/null</code> 的 symlink<span class="mojikumi-line-end">，</span>而在整个 profile 都复制到内存盘后才会替换为正确的 symlink<span class="mojikumi-line-end">，</span>我的 profile 比较大<span class="mojikumi-line-start">（</span>3GB<span class="mojikumi">）</span><span class="mojikumi-line-end">，</span>就需要好几秒<span class="mojikumi-line-end">。</span>只不过 Firefox 给的错误提示非常具有误导性<span class="mojikumi-line-end">，</span>它其实是无法从 <code>/dev/null</code> 正常读取 profile<span class="mojikumi-line-end">，</span>这和 <span class="mojikumi">“</span>already running<span class="mojikumi">”</span> 完全不沾边<span class="mojikumi-line-end">。</span></p>
<h2 id="问题修复" class="heading"><a href="#问题修复" class="heading-anchor" aria-label="章节： 问题修复" tabindex="-1"></a><span>问题修复</span></h2>
<p>我的解决方案是写了个启动脚本<span class="mojikumi-line-end">，</span>等待 profile directory 变成正确的 symlink 再启动 Firefox<span class="mojikumi-line-end">：</span></p>
<section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h3 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="Shell 代码块" data-v-c675dba6>Shell</h3><ile-root id="ile-8"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-8--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #989FB1">#!/bin/bash</span></span>
<span></span>
<span><span style="color: #989FB1"># Fix &quot;Firefox is already running&quot; at startup when using profile-sync-daemon</span></span>
<span></span>
<span><span style="color: #4876D6">set</span><span style="color: #403F53"> </span><span style="color: #4876D6">-euo</span><span style="color: #403F53"> </span><span style="color: #4876D6">pipefail</span></span>
<span></span>
<span><span style="color: #994CC3">while</span><span style="color: #403F53"> [[ </span><span style="color: #111111">&quot;</span><span style="color: #4876D6">$(readlink -n ~/.mozilla/firefox/</span><span style="color: #0C969B">*</span><span style="color: #4876D6">.default-release)</span><span style="color: #111111">&quot;</span><span style="color: #403F53"> </span><span style="color: #994CC3">==</span><span style="color: #403F53"> /dev/null ]]; </span><span style="color: #994CC3">do</span></span>
<span><span style="color: #403F53">    </span><span style="color: #4876D6">sleep</span><span style="color: #403F53"> </span><span style="color: #AA0982">1</span></span>
<span><span style="color: #994CC3">done</span></span>
<span></span>
<span><span style="color: #4876D6">firefox</span><span style="color: #403F53"> &amp;</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #637777">#!/bin/bash</span></span>
<span></span>
<span><span style="color: #637777"># Fix &quot;Firefox is already running&quot; at startup when using profile-sync-daemon</span></span>
<span></span>
<span><span style="color: #C5E478">set</span><span style="color: #D6DEEB"> </span><span style="color: #82AAFF">-euo</span><span style="color: #D6DEEB"> </span><span style="color: #ECC48D">pipefail</span></span>
<span></span>
<span><span style="color: #C792EA">while</span><span style="color: #D6DEEB"> [[ </span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">$(</span><span style="color: #82AAFF">readlink</span><span style="color: #ECC48D"> </span><span style="color: #82AAFF">-n</span><span style="color: #ECC48D"> ~/.mozilla/firefox/</span><span style="color: #7FDBCA">*</span><span style="color: #ECC48D">.default-release)</span><span style="color: #D9F5DD">&quot;</span><span style="color: #D6DEEB"> </span><span style="color: #C792EA">==</span><span style="color: #D6DEEB"> /dev/null ]]; </span><span style="color: #C792EA">do</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #82AAFF">sleep</span><span style="color: #D6DEEB"> </span><span style="color: #F78C6C">1</span></span>
<span><span style="color: #C792EA">done</span></span>
<span></span>
<span><span style="color: #82AAFF">firefox</span><span style="color: #D6DEEB"> &amp;</span></span></code></pre></div></section>
<p>然后根据 Copilot 的建议改成了非轮询<span class="mojikumi-line-end">，</span>使用 <code>inotifywait</code><span class="mojikumi-line-start">（</span>意义不大<span class="mojikumi-line-end">，</span>主要是学多<span class="mojikumi-line-start">（</span></p>
<section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h3 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="Shell 代码块" data-v-c675dba6>Shell</h3><ile-root id="ile-9"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-9--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #989FB1">#!/bin/bash</span></span>
<span></span>
<span><span style="color: #989FB1"># Fix &quot;Firefox is already running&quot; at startup when using profile-sync-daemon</span></span>
<span></span>
<span><span style="color: #4876D6">set</span><span style="color: #403F53"> </span><span style="color: #4876D6">-euo</span><span style="color: #403F53"> </span><span style="color: #4876D6">pipefail</span></span>
<span></span>
<span><span style="color: #4876D6">profile</span><span style="color: #994CC3">=</span><span style="color: #111111">&quot;</span><span style="color: #4876D6">$(ls -d ~/.mozilla/firefox/</span><span style="color: #0C969B">*</span><span style="color: #4876D6">.default-release)</span><span style="color: #111111">&quot;</span></span>
<span></span>
<span><span style="color: #994CC3">while</span><span style="color: #403F53"> [[ </span><span style="color: #111111">&quot;</span><span style="color: #4876D6">$(readlink -n </span><span style="color: #111111">&quot;</span><span style="color: #4876D6">$profile</span><span style="color: #111111">&quot;</span><span style="color: #4876D6">)</span><span style="color: #111111">&quot;</span><span style="color: #403F53"> </span><span style="color: #994CC3">==</span><span style="color: #403F53"> /dev/null ]]; </span><span style="color: #994CC3">do</span></span>
<span><span style="color: #403F53">    </span><span style="color: #4876D6">inotifywait</span><span style="color: #403F53"> </span><span style="color: #4876D6">-P</span><span style="color: #403F53"> </span><span style="color: #111111">&quot;</span><span style="color: #4876D6">$profile</span><span style="color: #111111">&quot;</span></span>
<span><span style="color: #994CC3">done</span></span>
<span></span>
<span><span style="color: #4876D6">firefox</span><span style="color: #403F53"> &amp;</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #637777">#!/bin/bash</span></span>
<span></span>
<span><span style="color: #637777"># Fix &quot;Firefox is already running&quot; at startup when using profile-sync-daemon</span></span>
<span></span>
<span><span style="color: #C5E478">set</span><span style="color: #D6DEEB"> </span><span style="color: #82AAFF">-euo</span><span style="color: #D6DEEB"> </span><span style="color: #ECC48D">pipefail</span></span>
<span></span>
<span><span style="color: #C5E478">profile</span><span style="color: #C792EA">=</span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">$(</span><span style="color: #82AAFF">ls</span><span style="color: #ECC48D"> </span><span style="color: #82AAFF">-d</span><span style="color: #ECC48D"> ~/.mozilla/firefox/</span><span style="color: #7FDBCA">*</span><span style="color: #ECC48D">.default-release)</span><span style="color: #D9F5DD">&quot;</span></span>
<span></span>
<span><span style="color: #C792EA">while</span><span style="color: #D6DEEB"> [[ </span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">$(</span><span style="color: #82AAFF">readlink</span><span style="color: #ECC48D"> </span><span style="color: #82AAFF">-n</span><span style="color: #ECC48D"> </span><span style="color: #D9F5DD">&quot;</span><span style="color: #C5E478">$profile</span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">)</span><span style="color: #D9F5DD">&quot;</span><span style="color: #D6DEEB"> </span><span style="color: #C792EA">==</span><span style="color: #D6DEEB"> /dev/null ]]; </span><span style="color: #C792EA">do</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #82AAFF">inotifywait</span><span style="color: #D6DEEB"> </span><span style="color: #82AAFF">-P</span><span style="color: #D6DEEB"> </span><span style="color: #D9F5DD">&quot;</span><span style="color: #C5E478">$profile</span><span style="color: #D9F5DD">&quot;</span></span>
<span><span style="color: #C792EA">done</span></span>
<span></span>
<span><span style="color: #82AAFF">firefox</span><span style="color: #D6DEEB"> &amp;</span></span></code></pre></div></section>
<p>我是开机时有一个启动脚本启动一堆东西<span class="mojikumi-line-end">，</span>在那里面调用这个 Firefox 启动脚本<span class="mojikumi">。</span><wbr><span class="mojikumi-line-start">（</span>如果是手动启动可以写个 <code>~/.<wbr>local<wbr>/<wbr>share<wbr>/<wbr>applications<wbr>/<wbr>firefox<wbr>.<wbr>desktop</code><span class="mojikumi-line-end">）</span></p>
<h2 id="误导性的报错" class="heading"><a href="#误导性的报错" class="heading-anchor" aria-label="章节： 误导性的报错" tabindex="-1"></a><span>误导性的报错</span></h2>
<p>后来去搜了一下<span class="mojikumi-line-end">，</span>发现这个误导性的报错历史悠久<span class="mojikumi-line-end">，</span>20 年前 profile directory 不存在就会报这个<span class="mojikumi-line-end">：</span><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=278860">Bugzilla #278860 - confusing "profile in use"/"already running" error when profile is missing (not found)</a><span class="mojikumi-line-end">。</span>后来路径不存在的情况修了<span class="mojikumi-line-end">，</span>但 read-only 等 permission error 还是没修<span class="mojikumi-line-end">：</span><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=381139">Bugzilla #381139 - Need different warning for profile RO, in use and missing……</a><span class="mojikumi-line-end">。</span></p>]]></content:encoded>
            <category domain="https://ouuan.moe/tag/firefox">firefox</category>
            <category domain="https://ouuan.moe/tag/Arch%20Linux">Arch Linux</category>
            <category domain="https://ouuan.moe/tag/%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E8%AE%B0%E5%BD%95">问题解决记录</category>
        </item>
        <item>
            <title><![CDATA[配一下 mpv]]></title>
            <link>https://ouuan.moe/post/2023/08/mpv-tweaks</link>
            <guid>https://ouuan.moe/post/2023/08/mpv-tweaks</guid>
            <pubDate>Tue, 08 Aug 2023 13:26:50 GMT</pubDate>
            <description><![CDATA[<p>mpv 是一款 <s>神似 vim 的</s> 媒体播放器<span class="mojikumi-line-end">，</span>就是说第一眼有点劝退<span class="mojikumi-line-end">，</span>配置项很多<span class="mojikumi-line-end">，</span>但如果能花点时间进行配置还是挺香的<span class="mojikumi-line-end">，</span>而且可以写脚本实现各种功能<span class="mojikumi-line-end">。</span></p>
]]></description>
            <content:encoded><![CDATA[<p>mpv 是一款 <s>神似 vim 的</s> 媒体播放器<span class="mojikumi-line-end">，</span>就是说第一眼有点劝退<span class="mojikumi-line-end">，</span>配置项很多<span class="mojikumi-line-end">，</span>但如果能花点时间进行配置还是挺香的<span class="mojikumi-line-end">，</span>而且可以写脚本实现各种功能<span class="mojikumi-line-end">。</span></p>

<p>自从开始用 Linux 后我一直用的是 vlc<span class="mojikumi-line-end">，</span>但总感觉有点捞<span class="mojikumi-line-start">（</span><span class="mojikumi-line-end">，</span>最明显的是在暂停继续 / 快进后退时<span class="mojikumi-line-end">，</span>经常会卡几秒<span class="mojikumi-line-end">，</span>而且不是卡住不动而是边放边卡<span class="mojikumi-line-end">，</span>感觉非常神秘<span class="mojikumi-line-end">，</span>不知道能不能修<span class="mojikumi-line-end">，</span>反正我之前简单搜过没修好<span class="mojikumi-line-end">。</span>而 mpv 默认就没有这样的问题<span class="mojikumi-line-end">，</span>早就想用了<span class="mojikumi-line-end">，</span>但之前被它简陋的 UI 以及复杂的配置劝退了<span class="mojikumi-line-end">，</span>拖到现在才入坑<span class="mojikumi-line-end">。</span></p>
<aside role="note" data-v-a2ab257f><div class="shadow-md rd-1 b-l-6 my-6 bg-orange-1 dark:bg-orange-9 b-orange" data-v-a2ab257f><div class="p-3 flex justify-between items-center" data-v-a2ab257f><h2 class="flex items-center gap-1 font-bold" data-v-a2ab257f><span class="text-5 i-mdi-alert-circle-outline text-orange" data-v-a2ab257f></span><!--v-if--><span data-v-a2ab257f>Warning</span></h2><!--v-if--></div><div class="overflow-auto rd-br-1 bg-card px-6 dark:bg-bghover" data-v-a2ab257f><p>我是 <a href="https://archlinux.org/">Arch Linux</a> + <a href="https://i3wm.org/">i3</a> + <a href="https://github.com/jarun/nnn">nnn</a> 用户<span class="mojikumi-line-end">，</span>下面有一些配置可能不适用于其他用户<span class="mojikumi-line-end">。</span></p></div></div></aside>
<p>完整配置<span class="mojikumi-line-end">：</span><a href="https://github.com/ouuan/dotfiles/tree/master/.config/mpv">ouuan/dotfiles/.config/mpv</a></p>
<h2 id="入坑" class="heading"><a href="#入坑" class="heading-anchor" aria-label="章节： 入坑" tabindex="-1"></a><span>入坑</span></h2>
<h3 id="参考资料" class="heading"><a href="#参考资料" class="heading-anchor" aria-label="章节： 参考资料" tabindex="-1"></a><span>参考资料</span></h3>
<ul>
<li><a href="https://wiki.archlinux.org/title/Mpv">mpv - ArchWiki</a></li>
<li><code>/<wbr>usr<wbr>/<wbr>share<wbr>/<wbr>doc<wbr>/<wbr>mpv<wbr>/</code></li>
<li><a href="https://mpv.io/manual/stable/">Reference Manual - mpv.io</a> (<code>man mpv</code>)</li>
<li>
<span class="heimu">Google</span>
</li>
<li>
<span class="heimu">ChatGPT</span>
</li>
</ul>
<h3 id="配置文件" class="heading"><a href="#配置文件" class="heading-anchor" aria-label="章节： 配置文件" tabindex="-1"></a><span>配置文件</span></h3>
<ul>
<li><code>~/.<wbr>config<wbr>/<wbr>mpv<wbr>/<wbr>mpv<wbr>.<wbr>conf</code>: 主配置文件</li>
<li><code>~/.<wbr>config<wbr>/<wbr>mpv<wbr>/<wbr>input<wbr>.<wbr>conf</code>: key binding 配置</li>
<li><code>~/.<wbr>config<wbr>/<wbr>mpv<wbr>/<wbr>scripts<wbr>/</code>: 脚本<span class="mojikumi-line-end">，</span>放里面就会运行</li>
<li><code>~/.<wbr>config<wbr>/<wbr>mpv<wbr>/<wbr>script<wbr>-<wbr>opts<wbr>/</code>: 脚本的配置<span class="mojikumi-line-end">，</span>例如 <code>~/.<wbr>config<wbr>/<wbr>mpv<wbr>/<wbr>script<wbr>-<wbr>opts<wbr>/<wbr>osc<wbr>.<wbr>conf</code></li>
<li><code>/<wbr>usr<wbr>/<wbr>share<wbr>/<wbr>mpv<wbr>/<wbr>scripts<wbr>/</code>: 一些自带的脚本<span class="mojikumi-line-end">，</span>可以 symlink 到 <code>~/.<wbr>config<wbr>/<wbr>mpv<wbr>/<wbr>scripts<wbr>/</code></li>
</ul>
<p>有个冷知识 (?) 可以注意一下<span class="mojikumi-line-end">：</span></p>
<blockquote>
<p>Every <i>flag</i> option has a <i>no-flag</i> counterpart, e.g. the opposite of the <code>--fs</code> option is <code>--no-fs</code>. <code>--fs=yes</code> is same as <code>--fs</code>, <code>--fs=no</code> is the same as <code>--no-fs</code>.</p>
</blockquote>
<h2 id="输出" class="heading"><a href="#输出" class="heading-anchor" aria-label="章节： 输出" tabindex="-1"></a><span>输出</span></h2>
<p>其实我不是很懂这些<span class="mojikumi-line-end">，</span>但这两天进行各种尝试的感觉是<span class="mojikumi-line-end">，</span><s>少配点吧<span class="mojikumi-line-end">，</span>默认挺好的<span class="mojikumi-line-start">（</span></s></p>
<h3 id="输出质量" class="heading"><a href="#输出质量" class="heading-anchor" aria-label="章节： 输出质量" tabindex="-1"></a><span>输出质量</span></h3>
<section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h4 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="INI 代码块" data-v-c675dba6>INI</h4><ile-root id="ile-10"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-10--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #994CC3">profile</span><span style="color: #403F53">=gpu-hq</span></span>
<span><span style="color: #994CC3">profile</span><span style="color: #403F53">=vo-gpu-high</span></span>
<span></span>
<span><span style="color: #403F53">[vo-gpu-high]</span></span>
<span><span style="color: #994CC3">vo</span><span style="color: #403F53">=gpu</span></span>
<span><span style="color: #994CC3">scale</span><span style="color: #403F53">=ewa_lanczossharp</span></span>
<span><span style="color: #994CC3">cscale</span><span style="color: #403F53">=ewa_lanczossharp</span></span>
<span><span style="color: #994CC3">video-sync</span><span style="color: #403F53">=display-resample</span></span>
<span><span style="color: #994CC3">interpolation</span><span style="color: #403F53">=yes</span></span>
<span><span style="color: #994CC3">tscale</span><span style="color: #403F53">=oversample</span></span>
<span></span>
<span><span style="color: #403F53">[vo-gpu-low]</span></span>
<span><span style="color: #994CC3">vo</span><span style="color: #403F53">=gpu</span></span>
<span><span style="color: #994CC3">scale</span><span style="color: #403F53">=spline36</span></span>
<span><span style="color: #994CC3">cscale</span><span style="color: #403F53">=spline36</span></span>
<span><span style="color: #994CC3">video-sync</span><span style="color: #403F53">=display-resample</span></span>
<span><span style="color: #994CC3">interpolation</span><span style="color: #403F53">=no</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #C792EA">profile</span><span style="color: #D6DEEB">=gpu-hq</span></span>
<span><span style="color: #C792EA">profile</span><span style="color: #D6DEEB">=vo-gpu-high</span></span>
<span></span>
<span><span style="color: #D6DEEB">[vo-gpu-high]</span></span>
<span><span style="color: #C792EA">vo</span><span style="color: #D6DEEB">=gpu</span></span>
<span><span style="color: #C792EA">scale</span><span style="color: #D6DEEB">=ewa_lanczossharp</span></span>
<span><span style="color: #C792EA">cscale</span><span style="color: #D6DEEB">=ewa_lanczossharp</span></span>
<span><span style="color: #C792EA">video-sync</span><span style="color: #D6DEEB">=display-resample</span></span>
<span><span style="color: #C792EA">interpolation</span><span style="color: #D6DEEB">=yes</span></span>
<span><span style="color: #C792EA">tscale</span><span style="color: #D6DEEB">=oversample</span></span>
<span></span>
<span><span style="color: #D6DEEB">[vo-gpu-low]</span></span>
<span><span style="color: #C792EA">vo</span><span style="color: #D6DEEB">=gpu</span></span>
<span><span style="color: #C792EA">scale</span><span style="color: #D6DEEB">=spline36</span></span>
<span><span style="color: #C792EA">cscale</span><span style="color: #D6DEEB">=spline36</span></span>
<span><span style="color: #C792EA">video-sync</span><span style="color: #D6DEEB">=display-resample</span></span>
<span><span style="color: #C792EA">interpolation</span><span style="color: #D6DEEB">=no</span></span></code></pre></div></section>
<p>参考 <a href="https://wiki.archlinux.org/title/Mpv#High_quality_configurations">High quality configurations - mpv - ArchWiki</a><span class="mojikumi-line-end">。</span></p>
<p><code>scale</code> 和 <code>cscale</code> 是用于 upscale<span class="mojikumi-line-end">，</span>片源分辨率低于显示器才有用<span class="mojikumi-line-end">，</span>虽然 <code>ewa_<wbr>lanczossharp</code> 性能开销较大<span class="mojikumi-line-end">，</span>但只用于低分辨率就还好<span class="mojikumi-line-end">。</span>和 <code>spline36</code> 在视觉上的差异几乎没有<span class="mojikumi-line-end">，</span>性能不够就别用<span class="mojikumi-line-end">，</span>性能够的话用不用都行<span class="mojikumi-line-end">。</span></p>
<p>interpolation 可以参考 <a href="https://github.com/mpv-player/mpv/wiki/Interpolation">Interpolation · mpv Wiki</a><span class="mojikumi-line-end">，</span><code>tscale<wbr>=<wbr>oversample</code> 不会造成 <span class="mojikumi">“</span>soap opera effect<span class="mojikumi">”</span><wbr><span class="mojikumi-line-start">（</span>如果用 SVP 就可能会有<span class="mojikumi">）</span><span class="mojikumi-line-end">。</span>可以找个人物动作之类的片段开 A-B loop 对比<span class="mojikumi-line-start">（</span></p>
<p>如果播放一些高码率视频<span class="mojikumi-line-end">，</span>可能会性能不够<span class="mojikumi-line-end">，</span>所以可以两个 profile 切换<span class="mojikumi-line-end">。</span></p>
<h3 id="gpu-next" class="heading"><a href="#gpu-next" class="heading-anchor" aria-label="章节： gpu-next" tabindex="-1"></a><span>gpu-next</span></h3>
<section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h4 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="INI 代码块" data-v-c675dba6>INI</h4><ile-root id="ile-11"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-11--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #403F53">[vo-gpu-next]</span></span>
<span><span style="color: #994CC3">vo</span><span style="color: #403F53">=gpu-next</span></span>
<span><span style="color: #994CC3">scale</span><span style="color: #403F53">=spline36</span></span>
<span><span style="color: #994CC3">cscale</span><span style="color: #403F53">=spline36</span></span>
<span><span style="color: #994CC3">video-sync</span><span style="color: #403F53">=audio</span></span>
<span><span style="color: #994CC3">interpolation</span><span style="color: #403F53">=no</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #D6DEEB">[vo-gpu-next]</span></span>
<span><span style="color: #C792EA">vo</span><span style="color: #D6DEEB">=gpu-next</span></span>
<span><span style="color: #C792EA">scale</span><span style="color: #D6DEEB">=spline36</span></span>
<span><span style="color: #C792EA">cscale</span><span style="color: #D6DEEB">=spline36</span></span>
<span><span style="color: #C792EA">video-sync</span><span style="color: #D6DEEB">=audio</span></span>
<span><span style="color: #C792EA">interpolation</span><span style="color: #D6DEEB">=no</span></span></code></pre></div></section>
<p>这个最直接的作用是可以读取 Dolby Vision metadata<span class="mojikumi-line-end">，</span>不会出现颜色错误之类的<span class="mojikumi">。</span><wbr><span class="mojikumi-line-start">（</span>可以用 <a href="https://www.demolandia.net/4k-video-test/dolby-vision/page-1.html">4K Dolby Vision video test</a> 测试<span class="mojikumi">。</span><span class="mojikumi-line-end">）</span></p>
<p>但还是不太稳定<span class="mojikumi-line-end">，</span><code>scale<wbr>=<wbr>ewa_<wbr>lanczossharp</code> 可能会偶尔黑屏<span class="mojikumi-line-end">，</span><code>video<wbr>-<wbr>sync<wbr>=<wbr>display<wbr>-<wbr>resample</code> 会闪屏<span class="mojikumi-line-end">。</span></p>
<p>可以设个快捷键切换<span class="mojikumi-line-end">，</span>需要 <a href="https://github.com/CogentRedTester/mpv-scripts/blob/master/cycle-commands.lua"><code>cycle<wbr>-<wbr>commands<wbr>.<wbr>lua</code></a><span class="mojikumi-line-end">。</span></p>
<section class="code-block relative my-6 shadow" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h4 class="text-3 text-footer" aria-label="plain text 代码块" data-v-c675dba6>plain text</h4><ile-root id="ile-12"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-12--></div><div class="dark:hidden" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><samp><span><span style="color: #403f53">G               script-message cycle-commands &#39;apply-profile vo-gpu-low ; show-text &quot;vo gpu-low&quot;&#39; &#39;apply-profile vo-gpu-next ; show-text &quot;vo gpu-next&quot;&#39; &#39;apply-profile vo-gpu-high ; show-text &quot;vo gpu high&quot;&#39;</span></span></samp></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><samp><span><span style="color: #d6deeb">G               script-message cycle-commands &#39;apply-profile vo-gpu-low ; show-text &quot;vo gpu-low&quot;&#39; &#39;apply-profile vo-gpu-next ; show-text &quot;vo gpu-next&quot;&#39; &#39;apply-profile vo-gpu-high ; show-text &quot;vo gpu high&quot;&#39;</span></span></samp></pre></div></section>
<h3 id="硬件解码" class="heading"><a href="#硬件解码" class="heading-anchor" aria-label="章节： 硬件解码" tabindex="-1"></a><span>硬件解码</span></h3>
<section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h4 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="INI 代码块" data-v-c675dba6>INI</h4><ile-root id="ile-13"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-13--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #994CC3">hwdec</span><span style="color: #403F53">=auto-safe</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #C792EA">hwdec</span><span style="color: #D6DEEB">=auto-safe</span></span></code></pre></div></section>
<p><code>hwdec</code> 可以实测一下来看要不要开<span class="mojikumi-line-end">，</span>之前我测的时候结果变化还挺大的<span class="mojikumi-line-end">，</span>感觉主要是 CPU 连续工作一段时间性能会下降<span class="mojikumi-line-end">，</span>而且不同视频效果也不同<span class="mojikumi-line-end">，</span>可以设 key binding 控制开关<span class="mojikumi-line-end">，</span>实时看 stats<span class="mojikumi-line-end">。</span></p>
<section class="code-block relative my-6 shadow" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h4 class="text-3 text-footer" aria-label="plain text 代码块" data-v-c675dba6>plain text</h4><ile-root id="ile-14"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-14--></div><div class="dark:hidden" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><samp><span><span style="color: #403f53">g               cycle-values hwdec no auto-safe</span></span>
<span><span style="color: #403f53"></span></span>
<span><span style="color: #403f53">i               script-binding stats/display-stats-toggle</span></span></samp></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><samp><span><span style="color: #d6deeb">g               cycle-values hwdec no auto-safe</span></span>
<span><span style="color: #d6deeb"></span></span>
<span><span style="color: #d6deeb">i               script-binding stats/display-stats-toggle</span></span></samp></pre></div></section>
<h3 id="音量均衡" class="heading"><a href="#音量均衡" class="heading-anchor" aria-label="章节： 音量均衡" tabindex="-1"></a><span>音量均衡</span></h3>
<section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h4 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="INI 代码块" data-v-c675dba6>INI</h4><ile-root id="ile-15"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-15--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #994CC3">af</span><span style="color: #403F53">=loudnorm</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #C792EA">af</span><span style="color: #D6DEEB">=loudnorm</span></span></code></pre></div></section>
<section class="code-block relative my-6 shadow" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h4 class="text-3 text-footer" aria-label="plain text 代码块" data-v-c675dba6>plain text</h4><ile-root id="ile-16"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-16--></div><div class="dark:hidden" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><samp><span><span style="color: #403f53">n               cycle-values af &quot;&quot; loudnorm</span></span></samp></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><samp><span><span style="color: #d6deeb">n               cycle-values af &quot;&quot; loudnorm</span></span></samp></pre></div></section>
<p>以前听歌和看视频之间切换时经常要调音量<span class="mojikumi-line-end">，</span>加上这个就好了<span class="mojikumi-line-end">。</span></p>
<h2 id="快捷键" class="heading"><a href="#快捷键" class="heading-anchor" aria-label="章节： 快捷键" tabindex="-1"></a><span>快捷键</span></h2>
<p>key binding 很看个人习惯<span class="mojikumi-line-end">，</span>可以对着 <code>/<wbr>usr<wbr>/<wbr>share<wbr>/<wbr>doc<wbr>/<wbr>mpv<wbr>/<wbr>input<wbr>.<wbr>conf</code> 修改<span class="mojikumi-line-end">。</span>如果没啥习惯可以直接用默认的<span class="mojikumi-line-end">。</span></p>
<p>虽然感觉没太大参考价值<span class="mojikumi-line-end">，</span>但是<span class="mojikumi-line-end">：</span><a href="https://github.com/ouuan/dotfiles/blob/master/.config/mpv/input.conf">input.conf · ouuan/dotfiles</a><span class="mojikumi-line-end">。</span></p>
<h3 id="避免误触未知快捷键" class="heading"><a href="#避免误触未知快捷键" class="heading-anchor" aria-label="章节： 避免误触未知快捷键" tabindex="-1"></a><span>避免误触未知快捷键</span></h3>
<section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h4 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="INI 代码块" data-v-c675dba6>INI</h4><ile-root id="ile-17"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-17--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #403F53">no-input-default-bindings</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #D6DEEB">no-input-default-bindings</span></span></code></pre></div></section>
<p>这个可能会影响通过脚本设置快捷键<span class="mojikumi-line-end">，</span>如果不想影响脚本可以 <code>no<wbr>-<wbr>input<wbr>-<wbr>builtin<wbr>-<wbr>bindings</code><span class="mojikumi-line-end">。</span></p>
<h3 id="右键菜单" class="heading"><a href="#右键菜单" class="heading-anchor" aria-label="章节： 右键菜单" tabindex="-1"></a><span>右键菜单</span></h3>
<p><a href="https://gitlab.com/carmanaught/mpvcontextmenu">Thomas Carmichael / mpvcontextmenu · GitLab</a></p>
<p>把 <code>mpvcontextmenu</code> 文件夹放进 <code>scripts</code><span class="mojikumi-line-end">。</span>需要安装 <code>gjs</code><span class="mojikumi-line-end">。</span></p>
<section class="code-block relative my-6 shadow" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h4 class="text-3 text-footer" aria-label="plain text 代码块" data-v-c675dba6>plain text</h4><ile-root id="ile-18"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-18--></div><div class="dark:hidden" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><samp><span><span style="color: #403f53">MBTN_RIGHT      script-message mpv_context_menu_gtk</span></span></samp></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><samp><span><span style="color: #d6deeb">MBTN_RIGHT      script-message mpv_context_menu_gtk</span></span></samp></pre></div></section>
<p>调整字体<span class="mojikumi-line-end">：</span></p>
<section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h4 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="INI 代码块" data-v-c675dba6>INI</h4><ile-root id="ile-19"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-19--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #989FB1"># script-opts/menu-engine.conf</span></span>
<span></span>
<span><span style="color: #994CC3">fontFace</span><span style="color: #403F53">=monospace</span></span>
<span><span style="color: #994CC3">fontSize</span><span style="color: #403F53">=15</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #637777"># script-opts/menu-engine.conf</span></span>
<span></span>
<span><span style="color: #C792EA">fontFace</span><span style="color: #D6DEEB">=monospace</span></span>
<span><span style="color: #C792EA">fontSize</span><span style="color: #D6DEEB">=15</span></span></code></pre></div></section>
<p>它附带了通过 GUI 打开文件的功能<span class="mojikumi">：</span><wbr><span class="mojikumi-line-start">（</span>需要安装 <code>kdialog</code> 或 <code>zenity</code><span class="mojikumi-line-end">）</span></p>
<section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h4 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="INI 代码块" data-v-c675dba6>INI</h4><ile-root id="ile-20"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-20--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #989FB1"># script-opts/gui-dialogs.conf</span></span>
<span></span>
<span><span style="color: #994CC3">dialogPref</span><span style="color: #403F53">=kdialog</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #637777"># script-opts/gui-dialogs.conf</span></span>
<span></span>
<span><span style="color: #C792EA">dialogPref</span><span style="color: #D6DEEB">=kdialog</span></span></code></pre></div></section>
<section class="code-block relative my-6 shadow" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h4 class="text-3 text-footer" aria-label="plain text 代码块" data-v-c675dba6>plain text</h4><ile-root id="ile-21"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-21--></div><div class="dark:hidden" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><samp><span><span style="color: #403f53">o               script-binding add_subtitle_dialog</span></span>
<span><span style="color: #403f53">O               script-binding add_audio_dialog</span></span>
<span><span style="color: #403f53">Ctrl+o          script-binding add_files_dialog</span></span>
<span><span style="color: #403f53">Ctrl+O          script-binding append_files_dialog</span></span></samp></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><samp><span><span style="color: #d6deeb">o               script-binding add_subtitle_dialog</span></span>
<span><span style="color: #d6deeb">O               script-binding add_audio_dialog</span></span>
<span><span style="color: #d6deeb">Ctrl+o          script-binding add_files_dialog</span></span>
<span><span style="color: #d6deeb">Ctrl+O          script-binding append_files_dialog</span></span></samp></pre></div></section>
<h3 id="快进" class="heading"><a href="#快进" class="heading-anchor" aria-label="章节： 快进" tabindex="-1"></a><span>快进</span></h3>
<p>长按 <kbd>→</kbd> 快进<span class="mojikumi-line-end">。</span></p>
<p><a href="https://github.com/ouuan/dotfiles/blob/master/.config/mpv/scripts/fast-forward.lua"><code>fast<wbr>-<wbr>forward<wbr>.<wbr>lua</code></a></p>
<section class="code-block relative my-6 shadow" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h4 class="text-3 text-footer" aria-label="plain text 代码块" data-v-c675dba6>plain text</h4><ile-root id="ile-22"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-22--></div><div class="dark:hidden" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><samp><span><span style="color: #403f53">RIGHT           script-binding fast-forward</span></span></samp></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><samp><span><span style="color: #d6deeb">RIGHT           script-binding fast-forward</span></span></samp></pre></div></section>
<h3 id="每根毛都看得清清楚楚" class="heading"><a href="#每根毛都看得清清楚楚" class="heading-anchor" aria-label="章节： 每根毛都看得清清楚楚" tabindex="-1"></a><span><s>每根毛都看得清清楚楚</s></span></h3>
<p>用鼠标放大<span class="mojikumi-line-end">、</span>拖拽画面<span class="mojikumi-line-end">。</span></p>
<p><a href="https://github.com/occivink/mpv-image-viewer/blob/master/scripts/image-positioning.lua"><code>mpv<wbr>-<wbr>image<wbr>-<wbr>viewer<wbr>/<wbr>scripts<wbr>/<wbr>image<wbr>-<wbr>positioning<wbr>.<wbr>lua</code></a></p>
<section class="code-block relative my-6 shadow" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h4 class="text-3 text-footer" aria-label="plain text 代码块" data-v-c675dba6>plain text</h4><ile-root id="ile-23"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-23--></div><div class="dark:hidden" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><samp><span><span style="color: #403f53">Ctrl+WHEEL_UP   script-message cursor-centric-zoom 0.1</span></span>
<span><span style="color: #403f53">Ctrl+WHEEL_DOWN script-message cursor-centric-zoom -0.1</span></span>
<span><span style="color: #403f53">Ctrl+MBTN_LEFT  script-binding drag-to-pan</span></span>
<span><span style="color: #403f53">r               script-message rotate-video  90</span></span>
<span><span style="color: #403f53">R               script-message rotate-video -90</span></span></samp></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><samp><span><span style="color: #d6deeb">Ctrl+WHEEL_UP   script-message cursor-centric-zoom 0.1</span></span>
<span><span style="color: #d6deeb">Ctrl+WHEEL_DOWN script-message cursor-centric-zoom -0.1</span></span>
<span><span style="color: #d6deeb">Ctrl+MBTN_LEFT  script-binding drag-to-pan</span></span>
<span><span style="color: #d6deeb">r               script-message rotate-video  90</span></span>
<span><span style="color: #d6deeb">R               script-message rotate-video -90</span></span></samp></pre></div></section>
<section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h4 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="INI 代码块" data-v-c675dba6>INI</h4><ile-root id="ile-24"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-24--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #403F53">no-window-dragging </span><span style="color: #989FB1"># for drag-to-pan</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #D6DEEB">no-window-dragging </span><span style="color: #637777"># for drag-to-pan</span></span></code></pre></div></section>
<h3 id="选择-track" class="heading"><a href="#选择-track" class="heading-anchor" aria-label="章节： 选择 track" tabindex="-1"></a><span>选择 track</span></h3>
<p>裸的 mpv 添加 / 选择 track 很不方便<span class="mojikumi-line-end">，</span>有了 <code>mpvcontextmenu</code> 就好很多了<span class="mojikumi-line-end">，</span>但我在发现它之前就自己写了两个脚本<span class="mojikumi-line-end">，</span>现在有了它就把添加文件的删了<span class="mojikumi-line-end">，</span>但选择 track 还是保留下来<span class="mojikumi-line-end">。</span></p>
<p>顺便还会在打开文件时检测当前是否是双声道<span class="mojikumi-line-end">，</span>如果不是<span class="mojikumi-line-start">（</span>例如是环绕声<span class="mojikumi-line-end">）</span>则弹出音轨选择<span class="mojikumi-line-end">。</span></p>
<p><a href="https://github.com/ouuan/dotfiles/blob/master/.config/mpv/scripts/select-track.lua"><code>select<wbr>-<wbr>track<wbr>.<wbr>lua</code></a></p>
<section class="code-block relative my-6 shadow" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h4 class="text-3 text-footer" aria-label="plain text 代码块" data-v-c675dba6>plain text</h4><ile-root id="ile-25"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-25--></div><div class="dark:hidden" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><samp><span><span style="color: #403f53">t               script-binding select-subtitle</span></span>
<span><span style="color: #403f53">T               script-binding select-audio</span></span>
<span><span style="color: #403f53">Ctrl+t          script-binding select-video</span></span></samp></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><samp><span><span style="color: #d6deeb">t               script-binding select-subtitle</span></span>
<span><span style="color: #d6deeb">T               script-binding select-audio</span></span>
<span><span style="color: #d6deeb">Ctrl+t          script-binding select-video</span></span></samp></pre></div></section>
<h3 id="重置设置" class="heading"><a href="#重置设置" class="heading-anchor" aria-label="章节： 重置设置" tabindex="-1"></a><span>重置设置</span></h3>
<p>我这里只重置了会被我的 key binding 修改的设置<span class="mojikumi-line-end">。</span></p>
<section class="code-block relative my-6 shadow" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h4 class="text-3 text-footer" aria-label="plain text 代码块" data-v-c675dba6>plain text</h4><ile-root id="ile-26"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-26--></div><div class="dark:hidden" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><samp><span><span style="color: #403f53">Ctrl+0          apply-profile reset-all ; show-text 已重置所有设置</span></span></samp></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><samp><span><span style="color: #d6deeb">Ctrl+0          apply-profile reset-all ; show-text 已重置所有设置</span></span></samp></pre></div></section>
<section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h4 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="INI 代码块" data-v-c675dba6>INI</h4><ile-root id="ile-27"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-27--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #403F53">[reset-all]</span></span>
<span><span style="color: #994CC3">profile-desc</span><span style="color: #403F53">=</span><span style="color: #111111">&quot;</span><span style="color: #C96765">重置所有设置</span><span style="color: #111111">&quot;</span></span>
<span><span style="color: #994CC3">volume</span><span style="color: #403F53">=100</span></span>
<span><span style="color: #994CC3">mute</span><span style="color: #403F53">=no</span></span>
<span><span style="color: #994CC3">speed</span><span style="color: #403F53">=1</span></span>
<span><span style="color: #994CC3">brightness</span><span style="color: #403F53">=0</span></span>
<span><span style="color: #994CC3">video-zoom</span><span style="color: #403F53">=0</span></span>
<span><span style="color: #994CC3">video-pan-x</span><span style="color: #403F53">=0</span></span>
<span><span style="color: #994CC3">video-pan-y</span><span style="color: #403F53">=0</span></span>
<span><span style="color: #994CC3">video-rotate</span><span style="color: #403F53">=0</span></span>
<span><span style="color: #994CC3">sub-visibility</span><span style="color: #403F53">=yes</span></span>
<span><span style="color: #994CC3">sub-scale</span><span style="color: #403F53">=1</span></span>
<span><span style="color: #994CC3">sub-pos</span><span style="color: #403F53">=100</span></span>
<span><span style="color: #994CC3">audio-delay</span><span style="color: #403F53">=0</span></span>
<span><span style="color: #994CC3">ab-loop-a</span><span style="color: #403F53">=no</span></span>
<span><span style="color: #994CC3">ab-loop-b</span><span style="color: #403F53">=no</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #D6DEEB">[reset-all]</span></span>
<span><span style="color: #C792EA">profile-desc</span><span style="color: #D6DEEB">=</span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">重置所有设置</span><span style="color: #D9F5DD">&quot;</span></span>
<span><span style="color: #C792EA">volume</span><span style="color: #D6DEEB">=100</span></span>
<span><span style="color: #C792EA">mute</span><span style="color: #D6DEEB">=no</span></span>
<span><span style="color: #C792EA">speed</span><span style="color: #D6DEEB">=1</span></span>
<span><span style="color: #C792EA">brightness</span><span style="color: #D6DEEB">=0</span></span>
<span><span style="color: #C792EA">video-zoom</span><span style="color: #D6DEEB">=0</span></span>
<span><span style="color: #C792EA">video-pan-x</span><span style="color: #D6DEEB">=0</span></span>
<span><span style="color: #C792EA">video-pan-y</span><span style="color: #D6DEEB">=0</span></span>
<span><span style="color: #C792EA">video-rotate</span><span style="color: #D6DEEB">=0</span></span>
<span><span style="color: #C792EA">sub-visibility</span><span style="color: #D6DEEB">=yes</span></span>
<span><span style="color: #C792EA">sub-scale</span><span style="color: #D6DEEB">=1</span></span>
<span><span style="color: #C792EA">sub-pos</span><span style="color: #D6DEEB">=100</span></span>
<span><span style="color: #C792EA">audio-delay</span><span style="color: #D6DEEB">=0</span></span>
<span><span style="color: #C792EA">ab-loop-a</span><span style="color: #D6DEEB">=no</span></span>
<span><span style="color: #C792EA">ab-loop-b</span><span style="color: #D6DEEB">=no</span></span></code></pre></div></section>
<h2 id="听歌" class="heading"><a href="#听歌" class="heading-anchor" aria-label="章节： 听歌" tabindex="-1"></a><span>听歌</span></h2>
<h3 id="播放列表管理" class="heading"><a href="#播放列表管理" class="heading-anchor" aria-label="章节： 播放列表管理" tabindex="-1"></a><span>播放列表管理</span></h3>
<p><a href="https://github.com/jonniek/mpv-playlistmanager">jonniek/mpv-playlistmanager: Mpv lua script to create and manage playlists</a></p>
<section class="code-block relative my-6 shadow" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h4 class="text-3 text-footer" aria-label="plain text 代码块" data-v-c675dba6>plain text</h4><ile-root id="ile-28"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-28--></div><div class="dark:hidden" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><samp><span><span style="color: #403f53">P               script-binding showplaylist</span></span></samp></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><samp><span><span style="color: #d6deeb">P               script-binding showplaylist</span></span></samp></pre></div></section>
<section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h4 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="INI 代码块" data-v-c675dba6>INI</h4><ile-root id="ile-29"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-29--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #994CC3">key_moveup</span><span style="color: #403F53">=k UP</span></span>
<span><span style="color: #994CC3">key_movedown</span><span style="color: #403F53">=j DOWN</span></span>
<span><span style="color: #994CC3">key_movepageup</span><span style="color: #403F53">=Ctrl+u PGUP</span></span>
<span><span style="color: #994CC3">key_movepagedown</span><span style="color: #403F53">=Ctrl+d PGDWN</span></span>
<span><span style="color: #994CC3">key_movebegin</span><span style="color: #403F53">=^ 0 HOME</span></span>
<span><span style="color: #994CC3">key_moveend</span><span style="color: #403F53">=$ END</span></span>
<span><span style="color: #994CC3">key_selectfile</span><span style="color: #403F53">=d-d</span></span>
<span><span style="color: #994CC3">key_unselectfile</span><span style="color: #403F53">=p</span></span>
<span><span style="color: #994CC3">key_playfile</span><span style="color: #403F53">=l ENTER</span></span>
<span><span style="color: #994CC3">key_removefile</span><span style="color: #403F53">=x BS</span></span>
<span><span style="color: #994CC3">key_closeplaylist</span><span style="color: #403F53">=ESC P h</span></span>
<span></span>
<span><span style="color: #994CC3">showamount</span><span style="color: #403F53">=20</span></span>
<span><span style="color: #994CC3">text_padding_y</span><span style="color: #403F53">=15</span></span>
<span><span style="color: #994CC3">curtain_opacity</span><span style="color: #403F53">=0.3</span></span>
<span><span style="color: #994CC3">style_ass_tags</span><span style="color: #403F53">={\fs11}</span></span>
<span><span style="color: #994CC3">slice_longfilenames</span><span style="color: #403F53">=yes</span></span>
<span><span style="color: #994CC3">slice_longfilenames_amount</span><span style="color: #403F53">=120</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #C792EA">key_moveup</span><span style="color: #D6DEEB">=k UP</span></span>
<span><span style="color: #C792EA">key_movedown</span><span style="color: #D6DEEB">=j DOWN</span></span>
<span><span style="color: #C792EA">key_movepageup</span><span style="color: #D6DEEB">=Ctrl+u PGUP</span></span>
<span><span style="color: #C792EA">key_movepagedown</span><span style="color: #D6DEEB">=Ctrl+d PGDWN</span></span>
<span><span style="color: #C792EA">key_movebegin</span><span style="color: #D6DEEB">=^ 0 HOME</span></span>
<span><span style="color: #C792EA">key_moveend</span><span style="color: #D6DEEB">=$ END</span></span>
<span><span style="color: #C792EA">key_selectfile</span><span style="color: #D6DEEB">=d-d</span></span>
<span><span style="color: #C792EA">key_unselectfile</span><span style="color: #D6DEEB">=p</span></span>
<span><span style="color: #C792EA">key_playfile</span><span style="color: #D6DEEB">=l ENTER</span></span>
<span><span style="color: #C792EA">key_removefile</span><span style="color: #D6DEEB">=x BS</span></span>
<span><span style="color: #C792EA">key_closeplaylist</span><span style="color: #D6DEEB">=ESC P h</span></span>
<span></span>
<span><span style="color: #C792EA">showamount</span><span style="color: #D6DEEB">=20</span></span>
<span><span style="color: #C792EA">text_padding_y</span><span style="color: #D6DEEB">=15</span></span>
<span><span style="color: #C792EA">curtain_opacity</span><span style="color: #D6DEEB">=0.3</span></span>
<span><span style="color: #C792EA">style_ass_tags</span><span style="color: #D6DEEB">={\fs11}</span></span>
<span><span style="color: #C792EA">slice_longfilenames</span><span style="color: #D6DEEB">=yes</span></span>
<span><span style="color: #C792EA">slice_longfilenames_amount</span><span style="color: #D6DEEB">=120</span></span></code></pre></div></section>
<p><s>其他都还好<span class="mojikumi-line-end">，</span>这个 <code>dd</code> / <code>p</code> 确实太 Vim 了<span class="mojikumi-line-start">（</span></s></p>
<h3 id="播放模式" class="heading"><a href="#播放模式" class="heading-anchor" aria-label="章节： 播放模式" tabindex="-1"></a><span>播放模式</span></h3>
<p>我是觉得下面这几种播放模式比较常用<span class="mojikumi-line-start">（</span>列表循环不太常用<span class="mojikumi">）</span><span class="mojikumi-line-end">，</span>而看视频时一般播完暂停比较好<span class="mojikumi-line-end">，</span>作为默认<span class="mojikumi-line-end">。</span>随机播放/单曲循环的时候一般不需要保存播放进度<span class="mojikumi-line-end">。</span></p>
<section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h4 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="INI 代码块" data-v-c675dba6>INI</h4><ile-root id="ile-30"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-30--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #994CC3">profile</span><span style="color: #403F53">=playmode-pause</span></span>
<span></span>
<span><span style="color: #403F53">[playmode-pause]</span></span>
<span><span style="color: #994CC3">profile-desc</span><span style="color: #403F53">=</span><span style="color: #111111">&quot;</span><span style="color: #C96765">播完暂停</span><span style="color: #111111">&quot;</span></span>
<span><span style="color: #994CC3">keep-open</span><span style="color: #403F53">=always</span></span>
<span><span style="color: #994CC3">loop-file</span><span style="color: #403F53">=no</span></span>
<span><span style="color: #994CC3">loop-playlist</span><span style="color: #403F53">=inf</span></span>
<span><span style="color: #994CC3">shuffle</span><span style="color: #403F53">=no</span></span>
<span><span style="color: #403F53">save-position-on-quit</span></span>
<span></span>
<span><span style="color: #403F53">[playmode-shuffle]</span></span>
<span><span style="color: #994CC3">profile-desc</span><span style="color: #403F53">=</span><span style="color: #111111">&quot;</span><span style="color: #C96765">随机播放</span><span style="color: #111111">&quot;</span></span>
<span><span style="color: #994CC3">keep-open</span><span style="color: #403F53">=yes</span></span>
<span><span style="color: #994CC3">loop-file</span><span style="color: #403F53">=no</span></span>
<span><span style="color: #994CC3">loop-playlist</span><span style="color: #403F53">=inf</span></span>
<span><span style="color: #403F53">shuffle</span></span>
<span><span style="color: #403F53">no-save-position-on-quit</span></span>
<span></span>
<span><span style="color: #403F53">[playmode-loopfile]</span></span>
<span><span style="color: #994CC3">profile-desc</span><span style="color: #403F53">=</span><span style="color: #111111">&quot;</span><span style="color: #C96765">单文件循环</span><span style="color: #111111">&quot;</span></span>
<span><span style="color: #994CC3">keep-open</span><span style="color: #403F53">=yes</span></span>
<span><span style="color: #994CC3">loop-file</span><span style="color: #403F53">=inf</span></span>
<span><span style="color: #994CC3">loop-playlist</span><span style="color: #403F53">=inf</span></span>
<span><span style="color: #994CC3">shuffle</span><span style="color: #403F53">=no</span></span>
<span><span style="color: #403F53">no-save-position-on-quit</span></span>
<span></span>
<span><span style="color: #403F53">[playmode-playall]</span></span>
<span><span style="color: #994CC3">profile-desc</span><span style="color: #403F53">=</span><span style="color: #111111">&quot;</span><span style="color: #C96765">顺序播放</span><span style="color: #111111">&quot;</span></span>
<span><span style="color: #994CC3">keep-open</span><span style="color: #403F53">=yes</span></span>
<span><span style="color: #994CC3">loop-file</span><span style="color: #403F53">=no</span></span>
<span><span style="color: #994CC3">loop-playlist</span><span style="color: #403F53">=no</span></span>
<span><span style="color: #994CC3">shuffle</span><span style="color: #403F53">=no</span></span>
<span><span style="color: #403F53">save-position-on-quit</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #C792EA">profile</span><span style="color: #D6DEEB">=playmode-pause</span></span>
<span></span>
<span><span style="color: #D6DEEB">[playmode-pause]</span></span>
<span><span style="color: #C792EA">profile-desc</span><span style="color: #D6DEEB">=</span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">播完暂停</span><span style="color: #D9F5DD">&quot;</span></span>
<span><span style="color: #C792EA">keep-open</span><span style="color: #D6DEEB">=always</span></span>
<span><span style="color: #C792EA">loop-file</span><span style="color: #D6DEEB">=no</span></span>
<span><span style="color: #C792EA">loop-playlist</span><span style="color: #D6DEEB">=inf</span></span>
<span><span style="color: #C792EA">shuffle</span><span style="color: #D6DEEB">=no</span></span>
<span><span style="color: #D6DEEB">save-position-on-quit</span></span>
<span></span>
<span><span style="color: #D6DEEB">[playmode-shuffle]</span></span>
<span><span style="color: #C792EA">profile-desc</span><span style="color: #D6DEEB">=</span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">随机播放</span><span style="color: #D9F5DD">&quot;</span></span>
<span><span style="color: #C792EA">keep-open</span><span style="color: #D6DEEB">=yes</span></span>
<span><span style="color: #C792EA">loop-file</span><span style="color: #D6DEEB">=no</span></span>
<span><span style="color: #C792EA">loop-playlist</span><span style="color: #D6DEEB">=inf</span></span>
<span><span style="color: #D6DEEB">shuffle</span></span>
<span><span style="color: #D6DEEB">no-save-position-on-quit</span></span>
<span></span>
<span><span style="color: #D6DEEB">[playmode-loopfile]</span></span>
<span><span style="color: #C792EA">profile-desc</span><span style="color: #D6DEEB">=</span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">单文件循环</span><span style="color: #D9F5DD">&quot;</span></span>
<span><span style="color: #C792EA">keep-open</span><span style="color: #D6DEEB">=yes</span></span>
<span><span style="color: #C792EA">loop-file</span><span style="color: #D6DEEB">=inf</span></span>
<span><span style="color: #C792EA">loop-playlist</span><span style="color: #D6DEEB">=inf</span></span>
<span><span style="color: #C792EA">shuffle</span><span style="color: #D6DEEB">=no</span></span>
<span><span style="color: #D6DEEB">no-save-position-on-quit</span></span>
<span></span>
<span><span style="color: #D6DEEB">[playmode-playall]</span></span>
<span><span style="color: #C792EA">profile-desc</span><span style="color: #D6DEEB">=</span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">顺序播放</span><span style="color: #D9F5DD">&quot;</span></span>
<span><span style="color: #C792EA">keep-open</span><span style="color: #D6DEEB">=yes</span></span>
<span><span style="color: #C792EA">loop-file</span><span style="color: #D6DEEB">=no</span></span>
<span><span style="color: #C792EA">loop-playlist</span><span style="color: #D6DEEB">=no</span></span>
<span><span style="color: #C792EA">shuffle</span><span style="color: #D6DEEB">=no</span></span>
<span><span style="color: #D6DEEB">save-position-on-quit</span></span></code></pre></div></section>
<p>另外可以加一个 <code>no<wbr>-<wbr>keep<wbr>-<wbr>open<wbr>-<wbr>pause</code><span class="mojikumi-line-end">，</span>播完暂停时后退不会暂停<span class="mojikumi-line-end">。</span></p>
<p>快捷键切换<span class="mojikumi-line-end">：</span></p>
<section class="code-block relative my-6 shadow" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h4 class="text-3 text-footer" aria-label="plain text 代码块" data-v-c675dba6>plain text</h4><ile-root id="ile-31"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-31--></div><div class="dark:hidden" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><samp><span><span style="color: #403f53">p               script-message cycle-commands &quot;apply-profile playmode-shuffle ; playlist-shuffle ; show-text 随机播放&quot; &quot;apply-profile playmode-loopfile ; playlist-unshuffle ; show-text 单曲循环&quot; &quot;apply-profile playmode-playall ; playlist-unshuffle ; show-text 顺序播放&quot; &quot;apply-profile playmode-pause ; playlist-unshuffle ; show-text 播完暂停&quot;</span></span></samp></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><samp><span><span style="color: #d6deeb">p               script-message cycle-commands &quot;apply-profile playmode-shuffle ; playlist-shuffle ; show-text 随机播放&quot; &quot;apply-profile playmode-loopfile ; playlist-unshuffle ; show-text 单曲循环&quot; &quot;apply-profile playmode-playall ; playlist-unshuffle ; show-text 顺序播放&quot; &quot;apply-profile playmode-pause ; playlist-unshuffle ; show-text 播完暂停&quot;</span></span></samp></pre></div></section>
<h3 id="playerctl" class="heading"><a href="#playerctl" class="heading-anchor" aria-label="章节： playerctl" tabindex="-1"></a><span>playerctl</span></h3>
<p>装了 <a href="https://github.com/hoyon/mpv-mpris">mpv-mpris</a> 就可以用 <a href="https://github.com/altdesktop/playerctl"><code>playerctl</code></a> 了<span class="mojikumi-line-end">。</span></p>
<p>关闭所有 mpv<span class="mojikumi">：</span><wbr><span class="mojikumi-line-start">（</span>当然 <code>killall</code> 也行就是比较暴力<span class="mojikumi-line-end">）</span></p>
<section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h4 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="Shell 代码块" data-v-c675dba6>Shell</h4><ile-root id="ile-32"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-32--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #994CC3">alias</span><span style="color: #403F53"> </span><span style="color: #4876D6">stopplay</span><span style="color: #994CC3">=</span><span style="color: #111111">&#39;</span><span style="color: #C96765">playerctl -a -p mpv stop</span><span style="color: #111111">&#39;</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #C792EA">alias</span><span style="color: #D6DEEB"> </span><span style="color: #C5E478">stopplay</span><span style="color: #C792EA">=</span><span style="color: #D9F5DD">&#39;</span><span style="color: #ECC48D">playerctl -a -p mpv stop</span><span style="color: #D9F5DD">&#39;</span></span></code></pre></div></section>
<p>用 i3 的话<span class="mojikumi-line-end">，</span>可以利用 playerctl 设快捷键<span class="mojikumi-line-end">，</span>用 <a href="https://bumblebee-status.readthedocs.io/en/main/modules.html#playerctl"><code>bumblebee<wbr>-<wbr>status</code> 的 <code>playerctl</code> module</a> 显示正在播放的媒体信息<span class="mojikumi-line-end">。</span></p>
<h3 id="从命令行播放音乐" class="heading"><a href="#从命令行播放音乐" class="heading-anchor" aria-label="章节： 从命令行播放音乐" tabindex="-1"></a><span>从命令行播放音乐</span></h3>
<p>我一般都是用若干 alias 来从命令行播放音乐<span class="mojikumi-line-start">（</span>所以很少在网易云上听<span class="mojikumi-line-start">（</span></p>
<section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h4 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="Shell 代码块" data-v-c675dba6>Shell</h4><ile-root id="ile-33"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-33--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #4876D6">play</span><span style="color: #403F53">() {</span></span>
<span><span style="color: #403F53">    </span><span style="color: #4876D6">stopplay</span><span style="color: #403F53"> </span><span style="color: #0C969B">&gt;</span><span style="color: #4876D6">/dev/null</span><span style="color: #403F53"> </span><span style="color: #0C969B">2&gt;&amp;1</span></span>
<span><span style="color: #403F53">    </span><span style="color: #4876D6">bk</span><span style="color: #403F53"> </span><span style="color: #4876D6">mpv</span><span style="color: #403F53"> </span><span style="color: #4876D6">--profile=playmode-shuffle</span><span style="color: #403F53"> </span><span style="color: #4876D6">--no-video</span><span style="color: #403F53"> </span><span style="color: #4876D6">--no-resume-playback</span><span style="color: #403F53"> </span><span style="color: #111111">&quot;</span><span style="color: #403F53">$@</span><span style="color: #111111">&quot;</span></span>
<span><span style="color: #403F53">}</span></span>
<span></span>
<span><span style="color: #994CC3">alias</span><span style="color: #403F53"> </span><span style="color: #4876D6">playjp</span><span style="color: #994CC3">=</span><span style="color: #111111">&#39;</span><span style="color: #C96765">play ~/Music/日本語の歌/</span><span style="color: #111111">&#39;</span></span>
<span><span style="color: #4876D6">...</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #82AAFF">play</span><span style="color: #D6DEEB">() {</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #82AAFF">stopplay</span><span style="color: #D6DEEB"> </span><span style="color: #7FDBCA">&gt;</span><span style="color: #ECC48D">/dev/null</span><span style="color: #D6DEEB"> </span><span style="color: #7FDBCA">2&gt;&amp;1</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #82AAFF">bk</span><span style="color: #D6DEEB"> </span><span style="color: #ECC48D">mpv</span><span style="color: #D6DEEB"> </span><span style="color: #82AAFF">--profile=playmode-shuffle</span><span style="color: #D6DEEB"> </span><span style="color: #82AAFF">--no-video</span><span style="color: #D6DEEB"> </span><span style="color: #82AAFF">--no-resume-playback</span><span style="color: #D6DEEB"> </span><span style="color: #D9F5DD">&quot;</span><span style="color: #D7DBE0">$@</span><span style="color: #D9F5DD">&quot;</span></span>
<span><span style="color: #D6DEEB">}</span></span>
<span></span>
<span><span style="color: #C792EA">alias</span><span style="color: #D6DEEB"> </span><span style="color: #C5E478">playjp</span><span style="color: #C792EA">=</span><span style="color: #D9F5DD">&#39;</span><span style="color: #ECC48D">play ~/Music/日本語の歌/</span><span style="color: #D9F5DD">&#39;</span></span>
<span><span style="color: #C5E478">...</span></span></code></pre></div></section>
<p>其中 <code>bk</code> 是一个我用了很多年的小 trick<span class="mojikumi-line-end">：</span></p>
<section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h4 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="Shell 代码块" data-v-c675dba6>Shell</h4><ile-root id="ile-34"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-34--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #4876D6">bk_noalias</span><span style="color: #403F53">() {</span></span>
<span><span style="color: #403F53">    </span><span style="color: #4876D6">nohup</span><span style="color: #403F53"> </span><span style="color: #111111">&quot;</span><span style="color: #403F53">$@</span><span style="color: #111111">&quot;</span><span style="color: #403F53"> </span><span style="color: #0C969B">&lt;</span><span style="color: #4876D6">/dev/null</span><span style="color: #403F53"> </span><span style="color: #0C969B">&gt;</span><span style="color: #4876D6">/dev/null</span><span style="color: #403F53"> </span><span style="color: #0C969B">2&gt;</span><span style="color: #4876D6">/dev/null</span><span style="color: #403F53"> &amp;</span></span>
<span><span style="color: #403F53">    </span><span style="color: #4876D6">disown</span></span>
<span><span style="color: #403F53">}</span></span>
<span><span style="color: #994CC3">alias</span><span style="color: #403F53"> </span><span style="color: #4876D6">bk</span><span style="color: #994CC3">=</span><span style="color: #111111">&#39;</span><span style="color: #C96765">bk_noalias </span><span style="color: #111111">&#39;</span><span style="color: #403F53">  </span><span style="color: #989FB1"># alias 末尾空格可以继续接 alias</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #82AAFF">bk_noalias</span><span style="color: #D6DEEB">() {</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #82AAFF">nohup</span><span style="color: #D6DEEB"> </span><span style="color: #D9F5DD">&quot;</span><span style="color: #D7DBE0">$@</span><span style="color: #D9F5DD">&quot;</span><span style="color: #D6DEEB"> </span><span style="color: #7FDBCA">&lt;</span><span style="color: #ECC48D">/dev/null</span><span style="color: #D6DEEB"> </span><span style="color: #7FDBCA">&gt;</span><span style="color: #ECC48D">/dev/null</span><span style="color: #D6DEEB"> </span><span style="color: #7FDBCA">2&gt;</span><span style="color: #ECC48D">/dev/null</span><span style="color: #D6DEEB"> &amp;</span></span>
<span><span style="color: #D6DEEB">    </span><span style="color: #C5E478">disown</span></span>
<span><span style="color: #D6DEEB">}</span></span>
<span><span style="color: #C792EA">alias</span><span style="color: #D6DEEB"> </span><span style="color: #C5E478">bk</span><span style="color: #C792EA">=</span><span style="color: #D9F5DD">&#39;</span><span style="color: #ECC48D">bk_noalias </span><span style="color: #D9F5DD">&#39;</span><span style="color: #D6DEEB">  </span><span style="color: #637777"># alias 末尾空格可以继续接 alias</span></span></code></pre></div></section>
<h2 id="杂项" class="heading"><a href="#杂项" class="heading-anchor" aria-label="章节： 杂项" tabindex="-1"></a><span>杂项</span></h2>
<h3 id="osc" class="heading"><a href="#osc" class="heading-anchor" aria-label="章节： OSC" tabindex="-1"></a><span>OSC</span></h3>
<p>显示总时长而非剩余时长<span class="mojikumi-line-end">：</span></p>
<section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h4 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="INI 代码块" data-v-c675dba6>INI</h4><ile-root id="ile-35"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-35--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #989FB1"># script-opts/osc.conf</span></span>
<span></span>
<span><span style="color: #994CC3">timetotal</span><span style="color: #403F53">=yes</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #637777"># script-opts/osc.conf</span></span>
<span></span>
<span><span style="color: #C792EA">timetotal</span><span style="color: #D6DEEB">=yes</span></span></code></pre></div></section>
<p>全屏时移动鼠标显示 OSC<span class="mojikumi-line-end">，</span>非全屏时一直显示且不遮挡画面<span class="mojikumi-line-end">：</span></p>
<section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h4 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="INI 代码块" data-v-c675dba6>INI</h4><ile-root id="ile-36"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-36--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #989FB1"># script-opts/osc.conf</span></span>
<span></span>
<span><span style="color: #989FB1"># it does nothing when visibility is not always</span></span>
<span><span style="color: #994CC3">boxvideo</span><span style="color: #403F53">=yes</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #637777"># script-opts/osc.conf</span></span>
<span></span>
<span><span style="color: #637777"># it does nothing when visibility is not always</span></span>
<span><span style="color: #C792EA">boxvideo</span><span style="color: #D6DEEB">=yes</span></span></code></pre></div></section>
<section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h4 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="INI 代码块" data-v-c675dba6>INI</h4><ile-root id="ile-37"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-37--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #989FB1"># mpv.conf</span></span>
<span></span>
<span><span style="color: #403F53">[osc-not-fullscreen]</span></span>
<span><span style="color: #994CC3">profile-cond</span><span style="color: #403F53">=not fullscreen</span></span>
<span><span style="color: #994CC3">script-opts</span><span style="color: #403F53">=</span><span style="color: #994CC3">osc-visibility</span><span style="color: #403F53">=always</span></span>
<span></span>
<span><span style="color: #403F53">[osc-fullscreen]</span></span>
<span><span style="color: #994CC3">profile-cond</span><span style="color: #403F53">=fullscreen</span></span>
<span><span style="color: #994CC3">script-opts</span><span style="color: #403F53">=</span><span style="color: #994CC3">osc-visibility</span><span style="color: #403F53">=auto</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #637777"># mpv.conf</span></span>
<span></span>
<span><span style="color: #D6DEEB">[osc-not-fullscreen]</span></span>
<span><span style="color: #C792EA">profile-cond</span><span style="color: #D6DEEB">=not fullscreen</span></span>
<span><span style="color: #C792EA">script-opts</span><span style="color: #D6DEEB">=</span><span style="color: #C792EA">osc-visibility</span><span style="color: #D6DEEB">=always</span></span>
<span></span>
<span><span style="color: #D6DEEB">[osc-fullscreen]</span></span>
<span><span style="color: #C792EA">profile-cond</span><span style="color: #D6DEEB">=fullscreen</span></span>
<span><span style="color: #C792EA">script-opts</span><span style="color: #D6DEEB">=</span><span style="color: #C792EA">osc-visibility</span><span style="color: #D6DEEB">=auto</span></span></code></pre></div></section>
<h3 id="autoload" class="heading"><a href="#autoload" class="heading-anchor" aria-label="章节： autoload" tabindex="-1"></a><span>autoload</span></h3>
<p>打开一个文件时自动加载同目录下的其他文件<span class="mojikumi-line-end">。</span></p>
<section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h4 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="Shell 代码块" data-v-c675dba6>Shell</h4><ile-root id="ile-38"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-38--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #4876D6">ln</span><span style="color: #403F53"> </span><span style="color: #4876D6">-s</span><span style="color: #403F53"> </span><span style="color: #4876D6">/usr/share/mpv/scripts/autoload.lua</span><span style="color: #403F53"> </span><span style="color: #4876D6">~/.config/mpv/scripts/</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #82AAFF">ln</span><span style="color: #D6DEEB"> </span><span style="color: #82AAFF">-s</span><span style="color: #D6DEEB"> </span><span style="color: #ECC48D">/usr/share/mpv/scripts/autoload.lua</span><span style="color: #D6DEEB"> </span><span style="color: #ECC48D">~/.config/mpv/scripts/</span></span></code></pre></div></section>
<p><span class="mojikumi-line-start">（</span>其实 playlistmanager 也可以启用这个功能<span class="mojikumi-line-end">，</span>只不过官方有维护 <code>autoload<wbr>.<wbr>lua</code> 就用官方的吧<span class="mojikumi">。</span><span class="mojikumi-line-end">）</span></p>
<h3 id="自动找-track" class="heading"><a href="#自动找-track" class="heading-anchor" aria-label="章节： 自动找 track" tabindex="-1"></a><span>自动找 track</span></h3>
<p>模糊匹配字幕和音轨文件<span class="mojikumi">：</span><wbr><span class="mojikumi-line-start">（</span>实际上也没有多 fuzzy<span class="mojikumi-line-end">，</span>只是部分匹配而已<span class="mojikumi-line-end">）</span></p>
<section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h4 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="INI 代码块" data-v-c675dba6>INI</h4><ile-root id="ile-39"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-39--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #994CC3">sub-auto</span><span style="color: #403F53">=fuzzy</span></span>
<span><span style="color: #994CC3">audio-file-auto</span><span style="color: #403F53">=fuzzy</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #C792EA">sub-auto</span><span style="color: #D6DEEB">=fuzzy</span></span>
<span><span style="color: #C792EA">audio-file-auto</span><span style="color: #D6DEEB">=fuzzy</span></span></code></pre></div></section>
<h3 id="osd" class="heading"><a href="#osd" class="heading-anchor" aria-label="章节： OSD" tabindex="-1"></a><span>OSD</span></h3>
<section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h4 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="INI 代码块" data-v-c675dba6>INI</h4><ile-root id="ile-40"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-40--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #994CC3">osd-on-seek</span><span style="color: #403F53">=msg-bar</span></span>
<span><span style="color: #994CC3">osd-playing-msg</span><span style="color: #403F53">=</span><span style="color: #111111">&quot;</span><span style="color: #C96765">File: ${filename}</span><span style="color: #111111">&quot;</span></span>
<span><span style="color: #994CC3">osd-duration</span><span style="color: #403F53">=2000</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #C792EA">osd-on-seek</span><span style="color: #D6DEEB">=msg-bar</span></span>
<span><span style="color: #C792EA">osd-playing-msg</span><span style="color: #D6DEEB">=</span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">File: ${filename}</span><span style="color: #D9F5DD">&quot;</span></span>
<span><span style="color: #C792EA">osd-duration</span><span style="color: #D6DEEB">=2000</span></span></code></pre></div></section>
<p>快进后退的时候显示一下具体位置<span class="mojikumi-line-end">；</span>切换文件时显示一下文件名<span class="mojikumi-line-end">；</span>显示久一点<span class="mojikumi-line-end">。</span></p>
<h3 id="截图" class="heading"><a href="#截图" class="heading-anchor" aria-label="章节： 截图" tabindex="-1"></a><span>截图</span></h3>
<section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h4 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="INI 代码块" data-v-c675dba6>INI</h4><ile-root id="ile-41"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-41--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #994CC3">screenshot-directory</span><span style="color: #403F53">=~/screenshots</span></span>
<span><span style="color: #994CC3">screenshot-template</span><span style="color: #403F53">=</span><span style="color: #111111">&quot;</span><span style="color: #C96765">%F - %P - %#01n</span><span style="color: #111111">&quot;</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #C792EA">screenshot-directory</span><span style="color: #D6DEEB">=~/screenshots</span></span>
<span><span style="color: #C792EA">screenshot-template</span><span style="color: #D6DEEB">=</span><span style="color: #D9F5DD">&quot;</span><span style="color: #ECC48D">%F - %P - %#01n</span><span style="color: #D9F5DD">&quot;</span></span></code></pre></div></section>
<p>截图文件名是视频文件名 + 时间戳 + 版本<span class="mojikumi-line-start">（</span>有了版本可以同一个位置截多张图<span class="mojikumi-line-end">，</span>进行对比<span class="mojikumi">）</span><span class="mojikumi-line-end">。</span></p>
<h3 id="暂停图标" class="heading"><a href="#暂停图标" class="heading-anchor" aria-label="章节： 暂停图标" tabindex="-1"></a><span>暂停图标</span></h3>
<p>试过在暂停的时候显示一个图标<span class="mojikumi-line-end">，</span>后来还是觉得去掉好一点<span class="mojikumi-line-end">，</span>改成了 <code>osd-msg cycle pause</code><span class="mojikumi-line-end">。</span></p>
<p>想要的话可以参考 <a href="https://github.com/mpv-player/mpv/issues/8155#issuecomment-707726802">@CogentRedTester - OSD-info when video is paused</a><span class="mojikumi-line-end">。</span>需要注意的是这里用到了 <span class="mojikumi">“</span>⏸<span class="mojikumi">”</span><span class="mojikumi-line-end">，</span>而 color emoji 会显示为乱码<span class="mojikumi-line-end">，</span>只能用 monochrome emoji<span class="mojikumi-line-end">，</span>可以装一个 Noto Emoji Monochrome 加在 fontconfig 里<span class="mojikumi-line-end">。</span></p>
<h3 id="在线播放" class="heading"><a href="#在线播放" class="heading-anchor" aria-label="章节： 在线播放" tabindex="-1"></a><span>在线播放</span></h3>
<p>mpv 使用了 yt-dlp<span class="mojikumi-line-end">，</span>可以直接播放很多视频网站的视频/直播<span class="mojikumi-line-end">，</span>yt-dlp 还可以直接从浏览器获取 Cookies<span class="mojikumi-line-end">：</span></p>
<section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h4 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="INI 代码块" data-v-c675dba6>INI</h4><ile-root id="ile-42"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-42--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #994CC3">ytdl-raw-options</span><span style="color: #403F53">=</span><span style="color: #994CC3">cookies-from-browser</span><span style="color: #403F53">=firefox</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #C792EA">ytdl-raw-options</span><span style="color: #D6DEEB">=</span><span style="color: #C792EA">cookies-from-browser</span><span style="color: #D6DEEB">=firefox</span></span></code></pre></div></section>
<h3 id="wakatime" class="heading"><a href="#wakatime" class="heading-anchor" aria-label="章节： WakaTime" tabindex="-1"></a><span>WakaTime</span></h3>
<p><a href="https://github.com/ouuan/dotfiles/blob/master/.config/mpv/scripts/wakatime.lua"><code>wakatime<wbr>.<wbr>lua</code></a></p>
<p>有点逆天<span class="mojikumi-line-end">，</span>但是怎么不行呢（<span class="mojikumi">（</span></p>
<p>本来是想着写个记录播放历史<span class="mojikumi-line-end">，</span>但感觉有点肝不动<span class="mojikumi-line-end">，</span>然后想到了 WakaTime<span class="mojikumi-line-start">（</span></p>
<p>和记录代码不用同一个账号就不会污染数据了<span class="mojikumi-line-end">，</span>可以建个新文件夹作为 mpv 的 <code>WAKATIME_<wbr>HOME</code><span class="mojikumi-line-end">。</span></p>
<h3 id="拆分-mpv-conf" class="heading"><a href="#拆分-mpv-conf" class="heading-anchor" aria-label="章节： 拆分 mpv.conf" tabindex="-1"></a><span>拆分 <code>mpv.conf</code></span></h3>
<p>配置都写在一起感觉最大的问题在于 profile 要写最底下<span class="mojikumi-line-end">，</span>导致不能把不同板块的配置完全拆开<span class="mojikumi-line-end">。</span>可以用 <code>include</code> 来拆成多个配置文件<span class="mojikumi-line-end">。</span></p>
<section class="code-block relative my-6 shadow" itemprop="hasPart" itemscope itemtype="https://schema.org/SoftwareSourceCode" data-v-c675dba6><div class="h-6 items-center rd-t-1 bg-area px-4 dark:bg-#2A313A media-screen:important-flex" style="display:none;" data-v-c675dba6><h4 class="text-3 text-footer" itemprop="programmingLanguage" aria-label="INI 代码块" data-v-c675dba6>INI</h4><ile-root id="ile-43"><button title="复制到剪贴板" class="copy-button b-footer text-footer" data-v-63dfb2af><span class="i-mdi-content-copy" data-v-63dfb2af></span><span class="sr-only" role="status" data-v-63dfb2af></span></button></ile-root><!--ISLAND_HYDRATION_PLACEHOLDER_ile-43--></div><div class="dark:hidden" itemprop="text" data-v-c675dba6><pre class="shiki light" style="background-color: #FBFBFB" tabindex="0"><code><span><span style="color: #994CC3">include</span><span style="color: #403F53">=~~home/conf.d/output.conf</span></span>
<span><span style="color: #994CC3">include</span><span style="color: #403F53">=~~home/conf.d/playmode.conf</span></span>
<span><span style="color: #994CC3">include</span><span style="color: #403F53">=~~home/conf.d/osc.conf</span></span>
<span><span style="color: #403F53">...</span></span></code></pre></div><div class="dark:important-block" style="display:none;" data-v-c675dba6><pre class="shiki dark" style="background-color: #011627" tabindex="0"><code><span><span style="color: #C792EA">include</span><span style="color: #D6DEEB">=~~home/conf.d/output.conf</span></span>
<span><span style="color: #C792EA">include</span><span style="color: #D6DEEB">=~~home/conf.d/playmode.conf</span></span>
<span><span style="color: #C792EA">include</span><span style="color: #D6DEEB">=~~home/conf.d/osc.conf</span></span>
<span><span style="color: #D6DEEB">...</span></span></code></pre></div></section>
<p>注意 <code>~~home/</code> 是 mpv home<span class="mojikumi-line-end">，</span><code>~/</code> 才是 <code>$HOME</code><span class="mojikumi-line-end">。</span></p>
<h4 id="directory-specific-config" class="heading"><a href="#directory-specific-config" class="heading-anchor" aria-label="章节： directory-specific config" tabindex="-1"></a><span>directory-specific config</span></h4>
<p><a href="https://github.com/ouuan/dotfiles/blob/master/.config/mpv/scripts/exrc.lua"><code>exrc.lua</code></a><span class="mojikumi-line-start">（</span>写得比较粗糙<span class="mojikumi-line-end">，</span>能用就行<span class="mojikumi-line-start">（</span></p>
<p>mpv 提供了 <a href="https://mpv.io/manual/stable/#file-specific-configuration-files"><span class="mojikumi-line-start">“</span>File-specific Configuration Files<span class="mojikumi-line-end">”</span></a> 功能<span class="mojikumi-line-end">，</span>但是它不安全<span class="mojikumi-line-end">。</span>受 <a href="https://github.com/neovim/neovim/issues/20911">More secure .exrc (.nvimrc) handling · Issue #20911 · neovim/neovim</a> 启发<span class="mojikumi-line-end">，</span>可以在加载 exrc 前询问用户<span class="mojikumi-line-end">。</span></p>
<p><span class="mojikumi-line-start">（</span>我是学日语的时候听教材音频<span class="mojikumi-line-end">，</span>想自动切成单曲循环<span class="mojikumi">。</span><span class="mojikumi-line-end">）</span></p>]]></content:encoded>
            <category domain="https://ouuan.moe/tag/mpv">mpv</category>
            <category domain="https://ouuan.moe/tag/Arch%20Linux">Arch Linux</category>
            <category domain="https://ouuan.moe/tag/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB">经验分享</category>
        </item>
        <item>
            <title><![CDATA[Btrfs Quota 以及 Timeshift 导致的系统无响应问题解决过程记录]]></title>
            <link>https://ouuan.moe/post/2022/07/btrfs-quota-timeshift-freeze</link>
            <guid>https://ouuan.moe/post/2022/07/btrfs-quota-timeshift-freeze</guid>
            <pubDate>Sat, 23 Jul 2022 05:03:23 GMT</pubDate>
            <description><![CDATA[
<p>记录一下之前困扰我近一年的 <a href="https://wiki.archlinux.org/title/Btrfs">Btrfs</a> 快照导致的系统无响应问题<span class="mojikumi-line-end">。</span></p>
]]></description>
            <content:encoded><![CDATA[
<p>记录一下之前困扰我近一年的 <a href="https://wiki.archlinux.org/title/Btrfs">Btrfs</a> 快照导致的系统无响应问题<span class="mojikumi-line-end">。</span></p>

<h2 id="系统无响应的具体表现" class="heading"><a href="#系统无响应的具体表现" class="heading-anchor" aria-label="章节： 系统无响应的具体表现" tabindex="-1"></a><span>系统无响应的具体表现</span></h2>
<p>每次整点时有概率出现<span class="mojikumi-line-end">，</span>在一分钟左右的时间内<span class="mojikumi-line-end">，</span>和磁盘写入相关的操作都会卡死<span class="mojikumi-line-end">，</span>例如直接和文件操作相关的保存文件<span class="mojikumi-line-end">，</span>或者会写入 <code>~/.<wbr>zsh_history</code> 的在终端输入命令<span class="mojikumi-line-end">，</span>以及打开新的 GUI 应用等等<span class="mojikumi-line-end">，</span>基本上就是整个系统完全卡死<span class="mojikumi-line-end">。</span></p>
<p>另外<span class="mojikumi-line-end">，</span>我有观察到<span class="mojikumi-line-end">，</span>在笔记本不使用外接电源时这一问题表现地更为严重<span class="mojikumi-line-end">，</span>即更容易被察觉到<span class="mojikumi-line-end">、</span>每次卡住的时间更长<span class="mojikumi-line-end">。</span></p>
<h2 id="最初解决问题的尝试" class="heading"><a href="#最初解决问题的尝试" class="heading-anchor" aria-label="章节： 最初解决问题的尝试" tabindex="-1"></a><span>最初解决问题的尝试</span></h2>
<p>遇到问题后不久<span class="mojikumi-line-end">，</span>我就怀疑上了一些每小时自动运行的任务<span class="mojikumi-line-end">，</span>包括 <a href="https://github.com/linuxmint/timeshift">Timeshift</a> 的快照以及一些自己写的 crontab<span class="mojikumi-line-end">。</span></p>
<p>最值得怀疑的就是 Timeshift 的快照了<span class="mojikumi-line-end">，</span>然而<span class="mojikumi-line-end">，</span>当时我曾经尝试过暂时关闭自动快照<span class="mojikumi-line-end">，</span>但问题似乎没有得到解决<span class="mojikumi-line-end">，</span>具体原因已不可考了<span class="mojikumi-line-end">。</span>当时我还在一个群里提出了这个猜想<span class="mojikumi-line-end">，</span>然后群友说快照是原子级操作<span class="mojikumi-line-end">，</span>不应该卡住<span class="mojikumi-line-end">，</span>我感觉很有道理<span class="mojikumi-line-end">，</span>就在很长时间内没有怀疑自动快照的问题了<span class="mojikumi-line-end">。</span></p>
<p>后来我又尝试着关闭各种 crontab<span class="mojikumi-line-end">，</span>当然也没有解决问题<span class="mojikumi-line-end">。</span></p>
<p>有想过在整点时用 <code>htop</code> 查看进程信息<span class="mojikumi-line-end">，</span>但由于卡住时运行不了命令<span class="mojikumi-line-start">（</span>当然可以关闭终端的历史记录<span class="mojikumi-line-end">，</span>但关了也不见得不卡<span class="mojikumi-line-end">，</span>而且我懒啊x<span class="mojikumi">）</span><span class="mojikumi-line-end">，</span>需要提前打开 <code>htop</code><span class="mojikumi-line-end">，</span>而且也不是每小时都会遇到这个问题<span class="mojikumi-line-end">，</span>看到了进程信息也不一定能找到问题所在<span class="mojikumi-line-end">，</span>最后也没有成功<span class="mojikumi-line-end">。</span></p>
<p>当时自然也尝试过各种搜索<span class="mojikumi-line-end">，</span>至于为什么没有搜索到或者注意到 <a href="https://forum.manjaro.org/t/freeze-issues-with-btrfs-and-timeshift/22005">Freeze issues with BTRFS and Timeshift</a> 也不可考了<span class="mojikumi-line-end">，</span>可能是搜索关键词不对吧<span class="mojikumi-line-end">，</span>毕竟当时我一定程度上排除了对快照的怀疑<span class="mojikumi-line-end">。</span></p>
<p>由于问题的严重程度和是否外接电源有关<span class="mojikumi-line-end">，</span>我甚至一度怀疑过是硬件问题<span class="mojikumi-line-end">，</span>想换电脑<span class="mojikumi-line-start">（</span></p>
<h2 id="最终问题的解决" class="heading"><a href="#最终问题的解决" class="heading-anchor" aria-label="章节： 最终问题的解决" tabindex="-1"></a><span>最终问题的解决</span></h2>
<p>在被这一问题困扰了大半年后<span class="mojikumi-line-end">，</span>我又忍不住想搜索解决方法<span class="mojikumi-line-end">，</span>这一次很快就搜到了 <a href="https://forum.manjaro.org/t/freeze-issues-with-btrfs-and-timeshift/22005">Freeze issues with BTRFS and Timeshift</a><span class="mojikumi-line-end">，</span>然后按里面说的禁用了 quota: <code>sudo btrfs quota disable /</code><span class="mojikumi-line-end">。</span></p>
<p>但过了几天<span class="mojikumi-line-end">，</span>我发现问题又出现了<span class="mojikumi-line-end">，</span>以为这个方法不管用<span class="mojikumi-line-end">。</span></p>
<p>后来又过了一段时间<span class="mojikumi-line-end">，</span>我又忍不了了<span class="mojikumi-line-end">，</span>再仔细阅读了一下<span class="mojikumi-line-end">，</span>发现这个 thread 里有提到 Timeshift 会自动打开 quota<span class="mojikumi-line-end">，</span>要修改 Timeshift 的设置才行<span class="mojikumi-line-end">。</span>至此<span class="mojikumi-line-end">，</span>问题解决<span class="mojikumi-line-end">。</span></p>
<a id="关于-brtfs-quota" name="关于-brtfs-quota" aria-hidden="true"></a>
<aside role="note" data-v-a2ab257f><div class="shadow-md rd-1 b-l-6 my-6 bg-blue-1 dark:bg-blue-9 b-blue" data-v-a2ab257f><div class="p-3 flex justify-between items-center" data-v-a2ab257f><h3 class="flex items-center gap-1 font-bold" data-v-a2ab257f><span class="text-5 i-mdi-pencil text-blue" data-v-a2ab257f></span><span class="sr-only" data-v-a2ab257f>Note: </span><span data-v-a2ab257f>关于 Brtfs Quota</span></h3><!--v-if--></div><div class="overflow-auto rd-br-1 bg-card px-6 dark:bg-bghover" data-v-a2ab257f><p><a href="https://wiki.archlinux.org/title/Btrfs#Quota">Btrfs quota</a> 主要用于快速查看每个 subvolume 的磁盘用量<span class="mojikumi-line-start">（</span>可以用 <a href="https://github.com/nachoparker/btrfs-du">btrfs-du</a> 查看<span class="mojikumi">）</span><span class="mojikumi-line-end">，</span>如果没有启用的话<span class="mojikumi-line-end">，</span>每次查看就需要几十秒的时间来重新扫描<span class="mojikumi-line-end">。</span></p><p>但是<span class="mojikumi-line-end">，</span>这一功能有很多 <a href="https://btrfs.wiki.kernel.org/index.php/Quota_support#Known_issues">已知问题</a><span class="mojikumi-line-start">（</span>当然也包括本文描述的这个<span class="mojikumi">）</span><span class="mojikumi-line-end">，</span>所以目前不建议启用<span class="mojikumi-line-end">。</span></p></div></div></aside>
<h2 id="后记-timeshift-已修复此问题" class="heading"><a href="#后记-timeshift-已修复此问题" class="heading-anchor" aria-label="章节： 后记: Timeshift 已修复此问题" tabindex="-1"></a><span>后记: Timeshift 已修复此问题</span></h2>
<p>实际上<span class="mojikumi-line-end">，</span>Timeshift 已在我自己解决问题前不久就修复了这一问题: <a href="https://github.com/linuxmint/timeshift/commit/8d77b18fe7b725c11baefe721633561d755b3630">Fix #865, #839, #680: Do not create or remove Qgroups when snapshots are created or removed</a></p>
<p>虽然 <a href="https://github.com/linuxmint/timeshift/releases/tag/v22.06.1">Timeshift 在 5 月 29 日就发布了修复</a><span class="mojikumi-line-end">，</span>但是 <a href="https://github.com/archlinuxcn/repo/commits/master/archlinuxcn/timeshift">archlinuxcn 在 7 月 1 日才更新</a><span class="mojikumi-line-end">，</span>于是我<span class="mojikumi-line-start">“</span>有幸<span class="mojikumi-line-end">”</span>在 Timeshift 更新的前一天自己解决了问题 🙃...</p>
<p><picture><img type="image/webp" srcset="/assets/btrfs-quota-timeshift-message-screenshot.c8bc1cf1.webp" loading="lazy" src="/assets/btrfs-quota-timeshift-message-screenshot.c8bc1cf1.webp" width="642" height="227" alt="消息记录，发于 6 月 30 日: 前段时间听说关 quota 可以解决这个问题，但关了之后还是经常卡。今天才发现 timeshift 里设置了开 quota，得把 timeshift 的自动开 quota 关了才行 🌚 需要观察几天是否还会整点卡"></picture></p>
<p>其实我还是写这篇博客的时候想看一眼 Timeshift 的 quota 设置发现没有这个设置项了才知道 Timeshift 已经修了...</p>]]></content:encoded>
            <category domain="https://ouuan.moe/tag/btrfs">btrfs</category>
            <category domain="https://ouuan.moe/tag/Arch%20Linux">Arch Linux</category>
            <category domain="https://ouuan.moe/tag/%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E8%AE%B0%E5%BD%95">问题解决记录</category>
        </item>
    </channel>
</rss>