<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="/feeds/atom-style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://xlbil.netlify.app/</id>
    <title>Gleymda landið</title>
    <updated>2026-06-12T06:30:41.352Z</updated>
    <generator>Astro-Theme-Retypeset with Feed for Node.js</generator>
    <author>
        <name>XLBilly</name>
        <uri>https://xlbil.netlify.app/</uri>
    </author>
    <link rel="alternate" href="https://xlbil.netlify.app/"/>
    <link rel="self" href="https://xlbil.netlify.app/atom.xml"/>
    <subtitle>仅仅是另一个被遗忘的地方罢了</subtitle>
    <rights>Copyright © 2026 XLBilly</rights>
    <entry>
        <title type="html"><![CDATA[旧文章存档]]></title>
        <id>https://xlbil.netlify.app/posts/old-article-archives/</id>
        <link href="https://xlbil.netlify.app/posts/old-article-archives/"/>
        <updated>2026-06-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[最近整理了一下旧文章存档，将里面的部分文章搬到了博客中公开，并加入了一些注释。在2021至2023年之间，我写了不少文章，但只有在2023年...]]></summary>
        <content type="html"><![CDATA[<p>最近整理了一下旧文章存档，将里面的部分文章搬到了博客中公开，并加入了一些注释。在2021至2023年之间，我写了不少文章，但只有在2023年写的文章公开在了与此博客同域名的Hugo博客上，剩下的文章一些曾存在私有的Joplin笔记中，另一些存在一个旧版的（5.2.2）、已废弃的Tiddlywiki中。</p>
<ul>
<li><a href="https://xlbil.netlify.app/tags/joplin%202021%E8%A1%A5%E6%A1%A3/">Joplin 2021年</a></li>
<li><a href="https://xlbil.netlify.app/tags/tiddlywiki%202022%E5%BD%92%E6%A1%A3/">Tiddlywiki 2022年</a></li>
<li><a href="https://xlbil.netlify.app/tags/hugo%202023%E5%BD%92%E6%A1%A3/">Hugo 2023年</a></li>
</ul>
<h2>Joplin 2021年的文章</h2>
<p>我曾把Joplin当作一个存自己写的文章的地方，存储这些文章的Joplin数据目前早已遗失，这些文章之所以能被找回是因为它们作为补档被导入了我在2022年前使用的Tiddlywiki文件。“Joplin 2021”其实概括并不是很准确，因为我曾经有一些文章是写在独立的Markdown文件里的，当时用的软件是Typora+PicGo上传图片，图床用的是Gitee<a href="%E7%84%B6%E5%90%8E%E6%8A%8AGitee%E5%9B%BE%E5%BA%8A%E5%88%A0%E4%BA%86%EF%BC%8C%E5%88%B0%E4%BA%86%E4%BB%8A%E5%B9%B4%E7%9B%B4%E6%8E%A5%E6%8A%8AGitee%E8%B4%A6%E5%8F%B7%E5%88%A0%E4%BA%86">^1</a>。</p>
<p>切换至Joplin的原因是它的多端同步功能，以便于在另一台Linux电脑上可以继续写，顺便使用Joplin的附件功能存储图片。在Gitee图床自删和Joplin数据遗失后，由于有些图片在ShareX数据文件夹留下了记录而靠文件名和描述成功恢复，而还有一些图片（如用ScreenToGIF制作的动图）就永远遗失了。</p>
<p>当时写的文章聚焦于各种操作系统的体验，大部分是可从<a href="https://winworldpc.com/home">WinWorldPC</a>上下载的老旧操作系统。</p>
<h2>Tiddlywiki 2022年的文章</h2>
<p>这个Tiddlywiki文件是一个5.2.2版本的Tiddlywiki，在2022年之后就停止使用了。</p>
<p><img src="https://xlbil.netlify.app/.netlify/images?url=_astro%2Fold_tw_2022.DrsEpLBN.png&amp;w=1843&amp;h=1356&amp;dpl=6a2ba76127de46000862e731" alt="之前" /></p>
<p><img src="../_images/Screenshot%202026-06-12%20at%2013-35-00%20%E4%BF%A1%E6%81%AF%E5%9B%9E%E6%94%B6%E7%AB%99%20%E2%80%94%20%E5%8D%A1%E7%89%87%E5%BC%8F%E4%B8%AA%E4%BA%BA%E7%BD%91%E9%A1%B5%E7%AC%94%E8%AE%B0.png" alt="现在" /></p>
<p>由于这个Tiddlywiki仅仅在电脑上使用，而不是像现在这样在Tiddlyhost上用，因此没有文件大小上的担心，里面塞了图片，和一个包含部分<a href="https://fomantic-ui.com/">Fomantic UI</a>CSS样式的插件。写文章的语法也从Markdown转向Tiddlywiki的独有语法，并大量使用宏。相对于之前写操作系统文章时的无所顾忌插图，在Tiddlywiki上写的时候由于要注意文件大小，插入图片谨慎得多（除非是纯文本的SVG图像）。</p>
<p>由于Tiddlywiki高度自由化的特点，我根据Tiddlywiki原版的Snow White主题定制了一套自己喜欢的主题，这个主题受到极简主义和出版物风格的影响，使用简洁的红、白、黑两色作为主体颜色，背景也使用了一个抽象的几何网格图案；链接动画和分割线样式则照抄两个Codepen。当时我还想做一个暗黑蓝色的版本，但后面因为折腾org-mode就放弃Tiddlywiki了。</p>
<h2>Hugo 2023年的文章</h2>
<p>这些文章是我唯一公开的文章，公开于一个Hugo博客，也就是这个站点的旧版本。当时我在尝试使用org-mode写作，搭配<a href="https://github.com/kaushalmodi/ox-hugo">ox-hugo插件</a>。那个博客使用的是<a href="https://www.wangchucheng.com/zh/docs/hugo-eureka/getting-started/">Eureka</a>主题，图标用了一个格鲁吉亚SSR<a href="%E5%8D%B3%E2%80%9C%E8%8B%8F%E7%BB%B4%E5%9F%83%E7%A4%BE%E4%BC%9A%E4%B8%BB%E4%B9%89%E5%85%B1%E5%92%8C%E5%9B%BD%E2%80%9D">^2</a>的图标。</p>
<p>ox-hugo这个插件做得特别好，它与org-mode的功能有深度结合，并且对于导出设置和org-mode独有的语法（如说明文字、标题链接、<code>org-babel</code>执行结果等）支持非常不错。当时我还在iPad上的<a href="https://ish.app/">iSH</a>上写文章，这是一个自带Alpine Linux的应用，可以使用此发行版中的各种应用程序，我就在这上面使用Emacs写文章，使用rclone进行同步。</p>
<p>最后放弃的原因是一些硬伤：首先是iSH问题太多，会出现各种各样的小bug，因此我换到了旧安卓手机上，在Termux上的Emacs写。然后就是org-mode的硬伤：对于中文标记支持不佳，这是我放弃使用其写博客的关键原因。</p>
<h2>现在</h2>
<p>在放弃使用org-mode之后，我重新使用了Tiddlywiki。</p>
<p>为了便于在多端写文章，尤其是在iPad上，我一开始用的是tiddlyhost，但它在windows上保存实在是太慢了，因此我使用了<a href="https://tiddlywiki.com/#Saving%20via%20WebDAV">WebDAV保存方式</a>。博客便被搁置在了一边，文章重新进入了非公开状态。然后Tiddlyhost在Windows上保存慢的bug被修复了，因此我将写文章的地方迁移至Tiddlyhost，和之前不同，第二次使用时我使用了Markdown插件，便于数据迁移，同时安装了从<a href="https://github.com/cdruan/tw-markdown-more">tw-markdown-more</a>提取的<code>markdown-it-admonition</code>插件以支持Admonition拓展语法；为了防止文件增大导致访问过慢，这些文章中没有一张图片。</p>
<p>能够在iPad上写文章后，我还尝试用Apple Pencil在tiddlywiki上写文章<a href="%E8%87%B3%E4%BA%8E%E8%AF%81%E6%8D%AE%EF%BC%8C%E7%9C%8B%E7%9C%8B%5B%E6%9F%90%E4%BA%9B%E6%96%87%E7%AB%A0%5D(../emacs-301/)%E7%9A%84%E9%94%99%E5%AD%97%E5%92%8C%E5%85%A8%E8%A7%92%E7%9B%B4%E5%8F%8C%E5%BC%95%E5%8F%B7">^3</a>,当然体验算不上有多好。同时我还遇到了iPad上页面自动重载导致文章草稿丢失的问题，解决方法是使用Browser Storage插件将草稿自动保存至Cookie中，这样重载后草稿也能恢复，代价是保存后要手动清楚Cookie。</p>
<p>之后我了解到了<a href="https://astro.build">Astro</a>后就有了重新搭建想法，第一次选的是<a href="https://github.com/chrismwilliams/astro-theme-cactus">cactus</a>主题，看中的是Admonition支持，但可惜没有中文，第二次选的就是博客现在用的主题<a href="https://github.com/radishzzz/astro-theme-retypeset">重新编排</a>，同样支持Admonition语法。由于Tiddlywiki的灵活性，我还创建了一个模版来将Markdown文章导出为Astro兼容的格式：</p>
<p>&lt;details&gt;</p>
<pre><code>created: 20251108030618122
creator: XLBilly
modified: 20260105100137721
modifier: XLBilly
revision: 0
tags: 
title: $:/templates/retypeset-markdown
type: text/vnd.tiddlywiki

\rules except dash horizrule
---
title: {{!!title}}
published: {{{ [{!!created}format:date[YYYY-0MM-0DD]] }}}
updated: {{{ [{!!modified}format:date[YYYY-0MM-0DD]] }}}
tags: &lt;$list filter="[enlist{!!tags}] -未完结 -Blog"&gt;
- &lt;&lt;currentTiddler&gt;&gt;&lt;/$list&gt;&lt;%if [&lt;currentTiddler&gt;has[description]] %&gt;
description: {{{ [&lt;currentTiddler&gt;get[description]] }}}&lt;%endif%&gt;&lt;%if [all[current]tag[未完结]] %&gt;
draft: true&lt;%endif%&gt;&lt;%if [&lt;currentTiddler&gt;has[slug]] %&gt;
slug: {{!!slug}}&lt;%endif%&gt;
---
`
`
&lt;$view field="text" format="text" /&gt;
</code></pre>
<p>&lt;/details&gt;</p>
<p>但Tiddlywiki加载还是太慢了，最近重新使用了<a href="https://apps.apple.com/cn/app/git-client-working-copy/id896694807">Working Copy</a>这个iOS上的Git应用，发现里面的编辑文本界面还勉强能用，并且有语法高亮、Markdown预览、自动保存、插入图片的功能，一下子解决了Tiddlywiki里的很多痛点，因此目前写博客文章已完全转到Working Copy中。</p>
]]></content>
        <author>
            <name>XLBilly</name>
            <uri>https://xlbil.netlify.app/</uri>
        </author>
        <published>2026-06-12T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[避难所]]></title>
        <id>https://xlbil.netlify.app/posts/shelter/</id>
        <link href="https://xlbil.netlify.app/posts/shelter/"/>
        <updated>2026-04-18T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[由于不可抗力，目前几乎所有的静态网页托管平台的子域名均遭受了屏蔽（如Netlify，Github Pages，Vercel，Cloudfla...]]></summary>
        <content type="html"><![CDATA[<p>由于不可抗力，目前几乎所有的静态网页托管平台的子域名均遭受了屏蔽（如Netlify，Github Pages，Vercel，Cloudflare Pages等），本博客也不例外。虽然现在有其他的托管服务，但无法排除之后仍会收到影响的可能。因此目前决定暂时在<a href="https://writefreely.org/">Writefreely</a>服务器<code>text.tchncs.de</code>上同时发布博客作为备份。</p>
<ul>
<li>博客链接：<a href="https://text.tchncs.de/gleymdalandid/">https://text.tchncs.de/gleymdalandid/</a></li>
<li>RSS：<a href="https://text.tchncs.de/gleymdalandid/feed">https://text.tchncs.de/gleymdalandid/feed</a></li>
</ul>
<p>Writefreely支持ActivityHub协议，如果你拥有Fediverse账号，可以关注<code>@gleymdalandid@text.tchncs.de</code>订阅博客<a href="Misskey%E5%85%B3%E6%B3%A8%E5%8F%AF%E8%83%BD%E4%BC%9A%E5%87%BA%E7%8E%B0%E5%8D%A1%E5%9C%A8%E2%80%9C%E6%AD%A3%E5%9C%A8%E5%A4%84%E7%90%86%E2%80%9D%E7%9A%84%E9%97%AE%E9%A2%98">^1</a>。</p>
<p><img src="https://xlbil.netlify.app/.netlify/images?url=_astro%2Ftouhou_292.BS3v-Kqt.jpg&amp;w=1024&amp;h=768&amp;dpl=6a2ba76127de46000862e731" alt="图文无关 pixiv: 4018433" /></p>
]]></content>
        <author>
            <name>XLBilly</name>
            <uri>https://xlbil.netlify.app/</uri>
        </author>
        <published>2026-04-18T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[从旧字典发现的旧拉丁维文]]></title>
        <id>https://xlbil.netlify.app/posts/old-latin-uyghur/</id>
        <link href="https://xlbil.netlify.app/posts/old-latin-uyghur/"/>
        <updated>2026-04-16T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[提到维吾尔语的拉丁化，很多人想到的就是现行的方案（示例：Uyghurche），但实际上拉丁维文还有一套完全不同的方案（示例：Uyƣurqə...]]></summary>
        <content type="html"><![CDATA[<p>提到维吾尔语的拉丁化，很多人想到的就是现行的方案（示例：Uyghurche），但实际上拉丁维文还有一套完全不同的方案（示例：Uyƣurqə）。</p>
<p>最近在Zlibrary上发现了一本特殊的维汉字典，标题使用的拉丁维文极其特殊：</p>
<blockquote>
<p>Uyƣurqə–Hənzuqə luƣət</p>
</blockquote>
<p><img src="https://xlbil.netlify.app/.netlify/images?url=_astro%2Fold-uyghur-latin.DxNkcQsQ.png&amp;w=423&amp;h=676&amp;dpl=6a2ba76127de46000862e731" alt="维汉词典 Uyƣurqə–Hənzuqə luƣət" /></p>
<p>作为对比，这是旧维文和拉丁维文的版本：</p>
<blockquote>
<p>ئۇيغۇرچە-خەنزۇچە لۇغەت</p>
<p>Uyghurche-Xenzuche lughet</p>
</blockquote>
<p>根据<a href="https://www.qiuwenbaike.cn/wiki/%E6%96%B0%E7%BB%B4%E6%96%87">查阅的资料</a>，这个正字法的正式名称是“新维文”，在上世纪60年代至80年代初使用，1976年被纳入《<a href="http://www.moe.gov.cn/jyb_sjzl/ziliao/A19/201208/t20120821_140823.html">少数民族语地名汉语拼音字母音译转写法</a>》。在80年代末期老维文被重新使用，新维文便被废弃。</p>
<p>下面是拉丁维文、老维文和新维文的字母表对照：</p>
<table>
<thead>
<tr>
<th>拉丁维文</th>
<th>老维文</th>
<th>新维文</th>
</tr>
</thead>
<tbody>
<tr>
<td>a</td>
<td>ا</td>
<td>a</td>
</tr>
<tr>
<td>b</td>
<td>ب</td>
<td>b</td>
</tr>
<tr>
<td>d</td>
<td>د</td>
<td>d</td>
</tr>
<tr>
<td>ë</td>
<td>ې</td>
<td>e</td>
</tr>
<tr>
<td>f</td>
<td>ف</td>
<td>f</td>
</tr>
<tr>
<td>g</td>
<td>گ</td>
<td>g</td>
</tr>
<tr>
<td>x</td>
<td>خ</td>
<td>h</td>
</tr>
<tr>
<td>i</td>
<td>ى</td>
<td>i</td>
</tr>
<tr>
<td>j</td>
<td>ج</td>
<td>j/zh</td>
</tr>
<tr>
<td>k</td>
<td>ك</td>
<td>k</td>
</tr>
<tr>
<td>l</td>
<td>ل</td>
<td>l</td>
</tr>
<tr>
<td>m</td>
<td>م</td>
<td>m</td>
</tr>
<tr>
<td>n</td>
<td>ن</td>
<td>n</td>
</tr>
<tr>
<td>o</td>
<td>و</td>
<td>o</td>
</tr>
<tr>
<td>p</td>
<td>پ</td>
<td>p</td>
</tr>
<tr>
<td>ch</td>
<td>چ</td>
<td>q/ch</td>
</tr>
<tr>
<td>r</td>
<td>ر</td>
<td>r</td>
</tr>
<tr>
<td>s</td>
<td>س</td>
<td>c/s</td>
</tr>
<tr>
<td>t</td>
<td>ت</td>
<td>t</td>
</tr>
<tr>
<td>u</td>
<td>ۇ</td>
<td>u</td>
</tr>
<tr>
<td>w</td>
<td>ۋ</td>
<td>v/w</td>
</tr>
<tr>
<td>sh</td>
<td>ش</td>
<td>x/sh</td>
</tr>
<tr>
<td>y</td>
<td>ي</td>
<td>y</td>
</tr>
<tr>
<td>z</td>
<td>ز</td>
<td>z</td>
</tr>
<tr>
<td>gh</td>
<td>غ</td>
<td>ƣ</td>
</tr>
<tr>
<td>h</td>
<td>ھ</td>
<td>ⱨ</td>
</tr>
<tr>
<td>q</td>
<td>ق</td>
<td>ⱪ</td>
</tr>
<tr>
<td>e</td>
<td>ە</td>
<td>ə</td>
</tr>
<tr>
<td>ö</td>
<td>ۆ</td>
<td>ɵ</td>
</tr>
<tr>
<td>ü</td>
<td>ۈ</td>
<td>ü</td>
</tr>
<tr>
<td>zh</td>
<td>ژ</td>
<td>ⱬ</td>
</tr>
<tr>
<td>ng</td>
<td>ڭ</td>
<td>ng</td>
</tr>
</tbody>
</table>
<p>可以看出，新拉丁维文出现了一音多字的情况，这是因为新维文是中文拼音和突厥语族拉丁字母的混合体，《维汉词典》中提到zh、ch、sh用于汉语人名和地名，相比旧维文较混乱。另外，与旧拉丁文壮文一样，新维文有很多特殊的拉丁字符，在较老的计算机上字体支持较差（如Ƣ字符），因此新维文之后便被更标准的旧维文和拉丁维文取代。</p>
]]></content>
        <author>
            <name>XLBilly</name>
            <uri>https://xlbil.netlify.app/</uri>
        </author>
        <published>2026-04-11T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[特殊的亚美尼亚文Unicode符号一览]]></title>
        <id>https://xlbil.netlify.app/posts/special-armenian-characters/</id>
        <link href="https://xlbil.netlify.app/posts/special-armenian-characters/"/>
        <updated>2026-01-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[我从小就对于各种语言的符号感兴趣，但对于某些字符所存在的意义不太了解，因此就有了这个系列。对于“特殊符号”的定义：这些符号的某些特征使这些符...]]></summary>
        <content type="html"><![CDATA[<h2>引言</h2>
<p>我从小就对于各种语言的符号感兴趣，但对于某些字符所存在的意义不太了解，因此就有了这个系列。</p>
<p>对于“特殊符号”的定义：这些符号的某些特征使这些符号在统一区块比较突出，包括：</p>
<ul>
<li>曾经使用，现在被废弃或不经常使用的字符（如废弃或较少使用的拉丁字符）</li>
<li>冷门语言所使用的符号（如阿布哈兹语）</li>
<li>意义或用例极其特殊的符号（如阿拉伯语合字）</li>
</ul>
<p>这个文章是这个系列的开始，亚美尼亚的特殊字符相对较少，包含两个区块：</p>
<ul>
<li>亚美尼亚字母</li>
<li>字母表现形式</li>
</ul>
<h2>և</h2>
<p>名称：<code>ARMENIAN SMALL LIGATURE ECH YIWN</code></p>
<p>词符և是以字母եւ组成的合体字母，是亚美尼亚语的连词，意为“和”。1920年代，亚美尼亚语的拼写法改革引进此词符。<a href="https://www.qiuwenbaike.cn/wiki/%E4%BA%9A%E7%BE%8E%E5%B0%BC%E4%BA%9A%E5%AD%97%E6%AF%8D">^1</a></p>
<h2>֍֎</h2>
<p>名称：<code>RIGHT-FACING ARMENIAN ETERNITY SIGN</code>和<code>LEFT-FACING ARMENIAN ETERNITY SIGN</code></p>
<p>该符号在亚美尼亚语中被称为“Haverzhut’yan nshan”，意为“永恒符号”；也被称为“Arevakhach”，意为“太阳十字”。它象征着永恒、天国的生命和民族认同。自公元5世纪起，该符号开始出现在亚美尼亚的石碑上；到约8世纪时，它已成为一种确立的民族图标制作传统，并沿用至今。<a href="https://handwiki.org/wiki/Armenian_eternity_sign">^2</a></p>
<h2>՟</h2>
<p>名称：<code>ARMENIAN ABBREVIATION MARK</code></p>
<p>亚美尼亚缩写符号，现已不再使用。<a href="https://www.qiuwenbaike.cn/wiki/%E4%BA%9A%E7%BE%8E%E5%B0%BC%E4%BA%9A%E5%AD%97%E6%AF%8D">^1</a></p>
<h2>ֈ</h2>
<p>名称：<code>ARMENIAN SMALL LETTER YI WITH STROKE</code></p>
<p>带横线的յ，收录时间较晚（2018年），用途尚不明确。</p>
<h2>连字</h2>
<p>以下为收录在“字母表现形式”的连字以及其分解版本。</p>
<table>
<thead>
<tr>
<th>字符</th>
<th>分解后</th>
</tr>
</thead>
<tbody>
<tr>
<td>ﬓ</td>
<td>մն</td>
</tr>
<tr>
<td>ﬔ</td>
<td>մե</td>
</tr>
<tr>
<td>ﬕ</td>
<td>մի</td>
</tr>
<tr>
<td>ﬖ</td>
<td>վն</td>
</tr>
<tr>
<td>ﬗ</td>
<td>մխ</td>
</tr>
</tbody>
</table>
]]></content>
        <author>
            <name>XLBilly</name>
            <uri>https://xlbil.netlify.app/</uri>
        </author>
        <published>2026-01-04T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[特殊的格鲁吉亚文Unicode符号一览]]></title>
        <id>https://xlbil.netlify.app/posts/special-georgian-symbols/</id>
        <link href="https://xlbil.netlify.app/posts/special-georgian-symbols/"/>
        <updated>2026-01-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[名称：GEORGIAN CAPITAL LETTER * 虽然Unicode名称叫“大写字母”，但这些字母实际上是格鲁吉亚的正圆体（ასომ...]]></summary>
        <content type="html"><![CDATA[<h2>Ⴀ至Ⴭ</h2>
<p>名称：<code>GEORGIAN CAPITAL LETTER *</code></p>
<p>虽然Unicode名称叫“大写字母”，但这些字母实际上是格鲁吉亚的正圆体（ასომთავრული, ႠႱႭႫႧႠႥႰႳႪႨ）写法<a href="https://en.wikipedia.org/wiki/Georgian_scripts#Asomtavruli">^1</a>，而现在使用的骑士体（მხედრული）大写字母则位于“格鲁吉亚字母拓展”这个区块内，以<code>GEORGIAN MTAVRULI CAPITAL LETTER</code>开头。</p>
<h2>ⴀ至ⴭ</h2>
<p>名称：<code>GEORGIAN SMALL LETTER *</code></p>
<p>同上，虽然名称叫“小写字母”，但字体一般将其渲染为小草体（ნუსხური, ⴌⴓⴑⴞⴓⴐⴈ）<a href="https://en.wikipedia.org/wiki/Georgian_scripts#Nuskhuri">^3</a>。而现在使用的骑士体小写字母以<code>GEORGIAN LETTER</code>开头。</p>
<p>以下字符中从左到右为同一字母的正圆体、骑士体小写、骑士体大写和小草体。</p>
<h2>ჼ</h2>
<p>名称：<code>MODIFIER LETTER GEORGIAN NAR</code></p>
<p>仅被巴茨比语使用的字符。<a href="https://www.omniglot.com/writing/batsbi.htm">^6</a></p>
<h2>ჁჱᲱⴡ</h2>
<p>字母he，与ეჲ相同，不再使用。<a href="https://en.wikipedia.org/wiki/Georgian_scripts#Letters_removed_from_the_Georgian_alphabet">^4</a></p>
<h2>ჂჲᲲⴢ</h2>
<p>字母hie（维基百科上叫iota），表示元音后的j音，不再使用。<a href="https://en.wikipedia.org/wiki/Georgian_scripts#Letters_removed_from_the_Georgian_alphabet">^4</a></p>
<h2>ჃჳᲳⴣ</h2>
<p>字母we（维基百科上叫vie），与ვი相同，不再使用。<a href="https://en.wikipedia.org/wiki/Georgian_scripts#Letters_removed_from_the_Georgian_alphabet">^4</a></p>
<h2>ჄჴᲴⴤ</h2>
<p>字母har（维基上叫qari），与ხ相同，不再使用。<a href="https://en.wikipedia.org/wiki/Georgian_scripts#Letters_removed_from_the_Georgian_alphabet">^4</a></p>
<h2>ჅჵᲵⴥ</h2>
<p>字母hoe，表示感叹词ჰოი，不再使用。<a href="https://en.wikipedia.org/wiki/Georgian_scripts#Letters_removed_from_the_Georgian_alphabet">^4</a></p>
<h2>非格鲁吉亚语字符</h2>
<h2>ჶᲶ</h2>
<p>字母fi的骑士体大小写，由希腊字母Φ发展而来，被南高加索语系的部分语言使用。<a href="https://en.wikipedia.org/wiki/Georgian_scripts#Letters_added_to_other_alphabets">^8</a></p>
<h3>ჇჷᲷⴧ</h3>
<p>字母Yn（维基上叫shva），被南高加索语系的部分语言使用<a href="https://en.wikipedia.org/wiki/Georgian_scripts#Letters_added_to_other_alphabets">^8</a>。</p>
<h3>ჸᲸ</h3>
<p>字母elifi的骑士体大小写，斯凡语和明格列尔语中表示塞音。<a href="https://en.wikipedia.org/wiki/Georgian_scripts#Letters_added_to_other_alphabets">^8</a></p>
<h3>ჹᲹ</h3>
<p>倒转的gan字母的骑士体大小写，不再使用。<a href="https://en.wikipedia.org/wiki/Georgian_scripts#Letters_added_to_other_alphabets">^8</a></p>
<h3>ჍჽᲽⴭ</h3>
<p>字母Aen，曾被奥赛梯语使用<a href="https://www.omniglot.com/writing/ossetian.htm">^2</a></p>
<h3>ჺᲺ</h3>
<p>ain字母的骑士体大小写，由ع发展而来，曾被用于书写巴茨比语。<a href="https://en.wikipedia.org/wiki/Bats_language">^9</a></p>
<h3>ჾᲾ</h3>
<p>Unicode名称为<code>HARD SIGN</code>，曾表示阿布哈兹语的软腭音。<a href="https://en.wikipedia.org/wiki/Georgian_scripts#Letters_added_to_other_alphabets">^8</a></p>
<h3>ჿᲿ</h3>
<p>Unicode名称为<code>LABIAL SIGN</code>，曾表示阿布哈兹语的唇音<a href="https://www.omniglot.com/writing/abkhaz.htm">^5</a>。</p>
]]></content>
        <author>
            <name>XLBilly</name>
            <uri>https://xlbil.netlify.app/</uri>
        </author>
        <published>2025-12-26T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[Emacs 30.1体验]]></title>
        <id>https://xlbil.netlify.app/posts/emacs-301/</id>
        <link href="https://xlbil.netlify.app/posts/emacs-301/"/>
        <updated>2025-04-18T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Emacs 30.1已经正式发布 之前一直没注意到package.el的＂快速启动＂功能。这个功能很早就有了，可以通过如下方式启用：启用后可...]]></summary>
        <content type="html"><![CDATA[<p>Emacs 30.1已经正式发布</p>
<h2>配置更新</h2>
<h3>package.el快速启动</h3>
<p>之前一直没注意到package.el的＂快速启动＂功能。这个功能很早就有了，可以通过如下方式启用：</p>
<pre><code>(setq package-quickstart t)
</code></pre>
<p>启用后可以通过<code>package-quickstart-refresh</code>生成一个<code>package-quickstart.elc</code>文件。</p>
<h3>use-package配置</h3>
<p>改两个设置就行。</p>
<pre><code>(setq use-package-always-defer t)
(setq use-package-expand-minimally t)
</code></pre>
<p>另外，推荐在配置中尽量避免<code>:config</code>、<code>:init</code>和<code>:preface</code>等关键字，而改用<code>:bind</code>、<code>:hook</code>、<code>:custom</code>等，使use-package能发挥autoload功能。</p>
<h3>启用内置which-key-mode</h3>
<p>which-key-mode在30.1已被eMacs内置。用use-package配置：</p>
<pre><code>(use-package which-key
  :ensure t
  :pin melpa-stable
  :init
  (which-key-mode 1))
</code></pre>
<h3>启用completion-preview-mode</h3>
<p>又是一个新加入eMacs的包，可以在elisp-mode等与编程相关的mode中预览补全内容，并用tab键补全。</p>
<pre><code>(use-package completion-preview
  :hook (prog-mode . completion-preview-mode))
</code></pre>
<h3>Evil配置</h3>
<p>Evil还是比较卡启动速度的，所以在<code>use-package</code>设置了2秒后加载。</p>
<pre><code>(use-package evil
  :pin melpa-stable
  :defer 2 ; 2秒后加载
  :ensure t
  :config
  (evil-mode 1)
  (evil-set-initial-state 'read-only-mode 'motion)
  (evil-set-initial-state 'dashboard-mode 'motion)
  (evil-set-initial-state 'vc-dir-mode 'motion))
</code></pre>
<p>为了能在org-mode中使用evil,还安装了evil-org这个包：</p>
<pre><code>(use-package evil-org
  :ensure t
  :autoload evil-org-mode
  :after (evil org)
  :hook (org-mode . evil-org-mode)
  :config
  (evil-org-set-key-theme '(navigation insert textobjects additional calendar)))
</code></pre>
<h2>新增的包</h2>
<h3>Markdown</h3>
<p>目前开始用Emacs写Markdown了，</p>
<pre><code>(use-package markdown-mode
  :ensure t
  :pin melpa-stable
  :custom (markdown-fontify-code-blocks-natively t))
; 附加的edit-indirect包，支持类似org-mode编辑代码块的功能
(use-package edit-indirect
  :ensure t
  :after markdown-mode)
</code></pre>
<h3>adoc-mode</h3>
<p>写Asciidoc，由于功能简陋，不太常用。</p>
<pre><code>(use-package adoc-mode
  :ensure t)
</code></pre>
]]></content>
        <author>
            <name>XLBilly</name>
            <uri>https://xlbil.netlify.app/</uri>
        </author>
        <published>2025-03-02T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[重新回到KDE]]></title>
        <id>https://xlbil.netlify.app/posts/return-to-kde/</id>
        <link href="https://xlbil.netlify.app/posts/return-to-kde/"/>
        <updated>2025-03-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[我之前在Debian 12重新体验提到过不用KDE的原因是Discover过于卡顿，现在决定用回KDE了。在Debian上用tasksel就...]]></summary>
        <content type="html"><![CDATA[<p>我之前在<a href="../debian-12-on-laptop/">Debian 12重新体验</a>提到过不用KDE的原因是Discover过于卡顿，现在决定用回KDE了。在Debian上用<code>tasksel</code>就可以很方便地安装KDE桌面。</p>
<p>:::note
由于上一篇文章还没有写完，所以此文章仅记录与KDE配置有关的内容。
:::</p>
<p>Discover的正常运行依赖<code>packagekit</code>，把这个服务禁用了Discover占用就会变小：</p>
<pre><code>sudo systemctl disable packagekit.service
</code></pre>
<h2>软件</h2>
<h3>QAPT安装器</h3>
<p>之前在MATE上用的<a href="https://packages.debian.org/bookworm/gdebi">GDebi</a>是基于Python的，导致占用非常大。目前正在使用的<code>qapt-deb-installer</code>虽然启动有点慢，但是解决了占用过大的问题。</p>
<h3>更多设置界面</h3>
<p>推荐安装这两个包：</p>
<ol>
<li><code>kde-config-plymonth</code> 配置</li>
<li><code>kde-config-fcitx5</code></li>
</ol>
<h2>调整</h2>
<p>KDE中仍然会有一些动画导致运行很卡，目前的优化是：</p>
<ul>
<li>快速设置页面将“动效速度”拉至最右</li>
<li>工作区行为-&gt;桌面特效，关闭没用的特效</li>
</ul>
<h3>Kimpanel</h3>
<p>推荐使用KDE的原生的“输入法面板”代替默认的托盘图标，这样的输入法可以将功能按钮显示在任务栏上，非常好看（并且有<em>Papirus</em>主题适配）。</p>
<h3>禁用Akonadi</h3>
<p><strong>Aknoadi这个功能可以说是KDE很慢的元凶之一</strong>，因为它会启动一个占用很多的<code>mysqld</code>服务。编辑<code>~/.config/akonadi/akonadiserverrc</code>然后改这项：</p>
<pre><code>[QMYSQL]
StartServer=false
</code></pre>
]]></content>
        <author>
            <name>XLBilly</name>
            <uri>https://xlbil.netlify.app/</uri>
        </author>
        <published>2025-01-04T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[yt-dlp Cheatsheet]]></title>
        <id>https://xlbil.netlify.app/posts/yt-dlp-cheatsheet/</id>
        <link href="https://xlbil.netlify.app/posts/yt-dlp-cheatsheet/"/>
        <updated>2025-05-30T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[由于yt-dlp的许多功能依赖ffmpeg，建议安装ffmpeg。yt-dlp支持下载弹幕但是不会默认下载。如果要加章节可以加上--emb...]]></summary>
        <content type="html"><![CDATA[<blockquote>
<p>由于yt-dlp的许多功能依赖ffmpeg，建议安装ffmpeg。</p>
</blockquote>
<h1>下载B站视频与弹幕</h1>
<p><code>yt-dlp</code>支持下载弹幕但是不会默认下载。</p>
<pre><code>yt-dlp $url --sub-lang danmuku --embed-metadata
</code></pre>
<p>如果要加章节可以加上<code>--embed-chapters</code>，如果要下载分P视频用<code>-I</code>选项。</p>
<pre><code>function downloadBilibili() {
	yt-dlp $1 --sub-lang danmuku --embed-metadata
}
</code></pre>
<p>Powershell版：</p>
<pre><code>function Download-Bilibili($url) {
    yt-dlp $url --sub-lang danmuku --embed-metadata
}
</code></pre>
<h1>下载网易云音乐（包括歌词与元数据）</h1>
<p>这个方面<code>yt-dlp</code>做得比洛雪音乐更好，不但支持加入元数据，还支持在元数据增加专辑发行年份信息。</p>
<pre><code>yt-dlp $url --sub-lang lyrics --write-subs --embed-thumbnail --embed-metadata -o "%(title)s - %(creator)s.%(ext)s"
</code></pre>
<p>其中<code>--sub-lang lyrics --write-subs</code>用来下载歌词，如果原音乐无歌词可以去掉。歌词有三种类型，将上面的<code>lyrics</code>替换即可：</p>
<ul>
<li><code>lyrics</code> 原歌词</li>
<li><code>lyrics_translated</code> 翻译后的歌词</li>
<li><code>lyrics_merged</code> 原歌词与翻译</li>
</ul>
<p>另外，<code>yt-dlp</code>默认给音乐里的元数据不包含轨道编号，但这很好解决，只要对于音乐专辑的链接（或网易云电台）用下面的命令下载就能按顺序编号：</p>
<pre><code>yt-dlp $url --parse-metadata "playlist_index:%(track_number)s" --add-metadata --embed-metadata --embed-thumbnail -o "%(title)s - %(creator)s.%(ext)s"
</code></pre>
<pre><code>function downloadNetease() {
	yt-dlp $1 --sub-lang lyrics --write-subs --embed-thumbnail --embed-metadata -o "%(title)s - %(creator)s.%(ext)s"
}
</code></pre>
<p>Powershell版：</p>
<pre><code>function Download-Netease {
    param (
	[string] $url,
	[switch] $lyrics
    )
    if ($lyrics) {
	yt-dlp $url --sub-lang lyrics --write-subs --embed-thumbnail --embed-metadata -o "%(title)s - %(creator)s.%(ext)s"
    } else {
	yt-dlp $url --embed-thumbnail --embed-metadata -o "%(title)s - %(creator)s.%(ext)s"
    }
}
</code></pre>
]]></content>
        <author>
            <name>XLBilly</name>
            <uri>https://xlbil.netlify.app/</uri>
        </author>
        <published>2024-02-13T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[Debian 12重新体验]]></title>
        <id>https://xlbil.netlify.app/posts/debian12-on-laptop/</id>
        <link href="https://xlbil.netlify.app/posts/debian12-on-laptop/"/>
        <updated>2025-11-01T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[二〇二五年八月二十九日更新：目前已升级至Debian 13，部分内容可能过时。二〇二五年一月八日更新：目前又换到KDE了，因为Discove...]]></summary>
        <content type="html"><![CDATA[<p>:::important
二〇二五年八月二十九日更新：目前已升级至Debian 13，部分内容可能过时。</p>
<p>二〇二五年一月八日更新：目前又换到KDE了，因为Discover卡顿的问题已经暂时解决了，见<a href="../return-to-kde/">重新回到KDE</a>。
:::</p>
<p>上一次<a href="../windows-8-in-2024">给笔记本装了Windows 8.1</a>，但是由于这个系统比较老（2013年发布，去年停止支持），所以现在很多软件都不支持了。于是又重新安装了Debian 12，遇到了非常多的坑。目前用下来比较顺手的是MATE桌面环境。</p>
<p>之前用的是<a href="https://kde.org">KDE</a>桌面环境，其实这个桌面如果只有桌面的话占用非常低（甚至比<a href="https://xfce.org">Xfce</a>和MATE还低），但是里面的核心组件——Discover这个类似应用商城的必须组件会占用非常多的内存（200多M），导致用起来非常卡。这也是GNOME，Cinnamon同样存在的问题（<code>gnome-software</code>占用在150M左右）。</p>
<p><a href="https://www.lxde.org">LXDE</a>和<a href="https://lxqt-project.org">LXQt</a>则是过于简洁，这两个桌面环境到现在都是不支持笔记本盖上盖子自动睡眠的。Xfce是我第一个尝试的轻量桌面，但是
这个桌面环境对于休眠睡眠等功能支持非常不好，如果设置为合上盖子锁屏打开会跳到桌面然后黑屏再显示锁屏，并且无法正常使用休眠功能（一休眠就黑屏）。对此官网<a href="https://docs.xfce.org/xfce/xfce4-power-manager/faq#i_have_put_my_computer_into_suspend_or_hibernate_mode_but_the_computer_is_not_waking_up">解释说</a>这是内核的问题（所以为什么只有Xfce有这个问题？）。</p>
<p>所以目前换到了<a href="https://mate-desktop.org/">Mate桌面环境</a>，一个类似GNOME老版本的桌面。它的默认布局我不是非常喜欢，不过这些面板都是可以编辑的，那个难用的左上角应用菜单可以用发行版预装的Brisk Menu替代。</p>
<h2>主题美化</h2>
<p>这可以说是Linux有趣的一点。目前正在使用的主题是<code>papirus-icon-theme</code>和<code>materia-gtk-theme</code>这两个主题。在MATE桌面上使用这个主题有一个问题——内置的文件管理器<code>caja</code>在切换主题后背景会变为黑色。解决方法很简单：找到编辑——背景和徽标——颜色，找到白色拖至背景即可。</p>
<p>登陆界面的GTK主题要单独设置，建议安装<code>lightdm-gtk-greeter-settings</code>然后设置GTK主题和图标（注意要点右下角的保存按钮！）。另一个问题是默认lightdm的登陆界面不会显示用户头像，解决方法是编辑<code>/etc/lightdm.d/lightdm.conf</code>，找到下面的内容取消注释：</p>
<pre><code>greeter-hide-users=false
</code></pre>
<h3>Qt</h3>
<p>由于Gtk与Qt是两个不同的GUI框架，所以要分别使用不同的主题。</p>
<p>在KDE上的设置中有GTK主题设置，但是在MATE，Xfce等桌面没有设置。所以需要手动安装<code>qt5ct</code>这个设置工具，并设置变量<code>QT_QPA_PLATFORMTHEME</code>为<code>qt5ct</code>。</p>
<p>对于<em>Materia</em>这个主题有<code>materia-kde</code>这个为Qt（KDE主题）适配的版本，这个主题需要Kvantum这个Qt主题工具配置。</p>
<h3>暗黑模式自动切换</h3>
<p>在Windows和iOS等平台上用习惯了自动切换暗黑模式后就想在Linux上用，可惜目前的解决方案虽然能达成目标，但都不是特别令人满意。根据<a href="https://wiki.archlinux.org/title/Dark_mode_switching">Arch Linux wiki</a>，目前用的解决方案是<a href="https://github.com/oskarsh/Yin-Yang">Yin-yang</a>，可以自动切换GTK，Kvantom，Qt和图标主题，唯一的问题是无法切换Qt的图标主题。</p>
<h3>其他</h3>
<p>Caja有一个独有的问题：Markdown，HTML等文件的图标显示不正常，解决办法是在首选项找到预览——文本文件，将“图标中显示文字”改为“从不”<a href="https://bbs.archlinux.org/viewtopic.php?id=273679">^1</a>。</p>
<h2>优化</h2>
<p>首先是换成清华的Debian源：</p>
<pre><code>sudo sed -ie 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
</code></pre>
<p>对于笔记本Debian有一个适用于笔记本的优化工具集合，默认不安装，可以在终端输入以下命令安装：</p>
<pre><code>sudo tasksel install laptop
</code></pre>
<p>这些工具里面有一个可以给笔记本省电的<code>powertop</code>工具，以下命令可以自动给笔记本调整省电设置：</p>
<pre><code>sudo powertop --auto-tune
</code></pre>
<p>但是<code>powertop</code>不能开机自动运行，要自动设置需要手动新建一个systemd服务。<s>建议安装<code>tlp</code>，安装这个之后就不用管了</s>。这样Linux可以用3小时多。</p>
<pre><code>[Unit]
Description=Powertop tunings

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/powertop --auto-tune

[Install]
WantedBy=multi-user.target
</code></pre>
<p>另外建议安装一个工具</p>
<pre><code>sudo apt install tlp
</code></pre>
<h3>终端</h3>
<p>默认的<code>bash</code>并不是特别好用，<s>建议用<code>zsh</code>。其实这个Shell不用装<a href="https://ohmyz.sh">oh-my-zsh</a>直接用默认的配置也可以很好用，一般只改下面的这些配置：</s>。目前已经换成<a href="https://fishshell.com">Fish</a>了，相比zsh增加了搜索历史记录的功能。</p>
<pre><code>bindkey -v # 使用vim键位
#...
setopt no_nomatch
source ~/.profile
</code></pre>
<p>其中最后一个命令建议加入Shell的启动文件中，是让<code>.profile</code>文件中的环境变量配置生效。倒数第二个命令是为了解决一个恶心的问题：当命令行出现<code>*</code>，<code>?</code>等通配符字符时zsh会报错，需要改成<code>\*</code>才行，添加这个命令就没有这个问题了。</p>
<p>另外MATE的文件管理器不支持“在此处打开终端”的快捷方式，需要安装<code>caja-open-terminal</code>这个插件。</p>
<h4>Fish配置</h4>
<p>Fish默认配置还算开箱即用，主题和颜色的配置直接输<code>fish_config</code>就能在浏览器中配置，<code>prompt</code>目前用的是<code>Nim</code>主题。</p>
<p>目前只在主配置文件增加设置了Vi快捷键：</p>
<pre><code># ~/.config/fish/config.fish
if status is-interactive
    # Commands to run in interactive sessions can go here
    fish_vi_key_bindings
end
</code></pre>
<h4><s>主题&amp;插件</s></h4>
<p><s>目前选择的是<a href="https://github.com/zplug/zplug">zplug</a>作为zsh的插件管理器。这个插件管理器虽然没zinit更新得勤快，并且速度比较慢，但是是内置于Debian软件源的</s>。原本是为了安装<a href="https://github.com/romkatv/powerlevel10k">powerlevel10k</a>这个主题而安装zplug的，换成liquidprompt之后就不用插件管理器了。</p>
<pre><code>source /usr/share/zplug/init.zsh
zplug romkatv/powerlevel10k, as:theme, depth:1
zplug load # 加载安装的插件
</code></pre>
<h5><a href="https://github.com/zsh-users/zsh-autosuggestions">zsh-autosuggestions</a></h5>
<pre><code>source /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh
</code></pre>
<p>这个插件非常常用，可以实现在Powershell 7上自带的历史记录补全的功能（虽然已经不更新了，其实没必要更新）。</p>
<h5><a href="https://github.com/liquidprompt/liquidprompt">liquidprompt</a></h5>
<p>在Debian的官方仓库中发现的Shell提示符主题。之前我用的是zsh内置的clint主题，也就是这样配置，支持显示Git仓库：</p>
<pre><code>autoload -Uz promptinit
autoload -Uz vcs_info
promptinit
prompt clint # 使用clint主题
</code></pre>
<p>不过clint主题还是不够漂亮，而Debian仓库里的powerlevel9k太旧，powerlevel10k也已经停止维护了。然后我在官方仓库发现了<code>liquidprompt</code>，这个主题在一个月之前发布了正式版本，并且相对于主流的starship等类似主题非常简洁而实用，许多信息都是在需要的时候才显示。</p>
<p>启用这个主题只需要在终端输入：</p>
<pre><code>lp_activate
</code></pre>
<h3>护眼模式</h3>
<p>这个东西在Gnome和KDE都是内置的，但是在别的桌面就没有了，可以安装<code>redshift</code>这个软件实现这个功能，这个软件可以按照时间启用护眼模式。</p>
<pre><code>sudo apt install redshift redshift-gtk
</code></pre>
<h3>蓝牙</h3>
<p>Debian MATE虽然默认安装了蓝牙服务<code>bluez</code>，但是没有自带蓝牙的图形客户端，因此需要安装<code>blueman</code>这个蓝牙图形界面配置工具。</p>
<pre><code>sudo apt install blueman
</code></pre>
<p>这样就能在系统托盘方便地管理蓝牙了。</p>
<p>另外，安装蓝牙后你会发现蓝牙每次都是开机就启用了。对于安装了<code>tlp</code>的Linux，可以编辑<code>/etc/tlp.conf</code>然后找到这一行修改，这样关机前蓝牙的启用状态就会在下一次被应用<a href="https://askubuntu.com/a/1051581">^2</a>。</p>
<pre><code>RESTORE_DEVICE_STATE_ON_STARTUP=1
</code></pre>
<h3>Debian版本的软件包</h3>
<h4>打印机驱动</h4>
<p>虽然提供Linux版本的打印机驱动的厂家不多，但还是有的，其中Canon甚至还提供了打印机驱动的<a href="https://www.canon.com.cn/supports/download/simsdetail/0101131702.html?modelId=1329&amp;channel=">Debian软件包版本</a>。</p>
<h4>其他</h4>
<p>目前常用的软件的软件包都列在下面：</p>
<ul>
<li><em>Joplin</em> 目前活跃更新的在Sourceforge上有一个，见<a href="https://sourceforge.net/projects/joplin-desktop-linux-package/files/deb-repo/">这里</a></li>
<li><em>Waterfox</em> 在OpenSUSE上</li>
</ul>
<h3>支持访问iPad等苹果设备</h3>
<p>在Linux上没有iTunes用来访问苹果设备，不过Debian的软件源中默认附带了支持访问苹果设备的库，安装下面这些库之后就可以连接苹果设备了<a href="https://www.instructables.com/Sync-Ipadiphone-With-LinuxDebianUbuntu/">^3</a>：。</p>
<pre><code>sudo apt install libimobiledevice-utils libimobiledevice-dev libgpod-dev
</code></pre>
<h3>默认的通知栏不显示图标</h3>
<p>这个问题搞了我半天，引起的原因可能是安装了<code>mate-indicator-applet</code>这个包。如果不显示暂时的方法是在顶部面板添加<code>mate-indicator-applet</code>这个包提供的“指示器”部件。</p>
<p>但是这个东西和原来的通知栏相比体验并不好：原来通知栏的图标这个部件也有自己的一套，而且这个部件无法接受左键点击，默认左键点击映射为右键，右键则是小部件的选项。还原为之前的设置让我弄了很久，直到看到<a href="https://ubuntu-mate.community/t/icon-inconsistency-in-panel-system-tray-icons/24794/3">这个链接</a>里面的截图。</p>
<p>里面提到的Ayatana就是实现指示器功能的东西，当MATE桌面检测到Ayatana的服务时就会禁用通知栏的图标，解决方法就是到控制中心——启动应用程序，将那堆名称为<em>Ayatana Indicator</em>的启动项取消选择，重启。</p>
<h3>显示Unicode CJK拓展区的字符</h3>
<p>这个需求并不是特别重要</p>
<ol>
<li>安装<code>fonts-babelstone-han</code>这个包</li>
<li>到<a href="http://cheonhyeong.com/Simplified/download.html">http://cheonhyeong.com/Simplified/download.html</a>下载天衍全字库</li>
</ol>
<h2>软件</h2>
<h3><s>Syncthing</s></h3>
<p>曾经在用的文件同步工具，现在不用了。</p>
<h3>mpv</h3>
<p>目前只需这些配置：</p>
<pre><code>audio-pitch-correction=no
sub-font='LXGW WenKai'
no-keepaspect-window
</code></pre>
<h3>aria2</h3>
<p>aria2是一个多线程下载工具，目前只要用配置改三个设置就可以体会到极速下载速度了。</p>
<pre><code>max-concurrent-downloads=16
max-connection-per-server=16
min-split-size=1M
</code></pre>
<p>之前用的是<a href="https://motrix.app">Motrix</a>作为Aria2的UI，但是Electron占用过大，所以换成了<a href="https://ariang.mayswind.net/zh_Hans/">Aria2ng</a>，通过<code>rclone</code>作为服务器将其作为浏览器应用使用。</p>
<h3>Watt Toolkit代理</h3>
<p>使用Watt toolkit这个工具可以加速GitHub､vercel和一些CDN资源网站的访问。目前watt toolkit只有2.x.x版本才提供deb格式的安装包。由于在我电脑上443端口似乎被<code>fcitx5</code>占用了，所以只能选择系统加速方式。</p>
<p>在Firefox上代理时注意要手动导入证书。Git这个工具则需要手动设置代理，对于代理端口的配置需要在Mate的控制中心→网络代理中查看。另外还需要配置<code>http.sslCAInfo</code>这个值来配置代理证书文件的路径（不建议用网上禁用SSL证书验证的方法）。</p>
<pre><code>git config --global http.proxy 127.0.0.1:26561
git config --global http.sslCAInfo /home/xlbilly/.local/share/Steam++/SteamTools.Certificate.cer
</code></pre>
<h3><s>Alacritty</s></h3>
<p>一个不错的系统默认终端的替代品，使用这个的原因是发现它支持<a href="https://stephango.com/flexoki">Flexoki</a>主题。<s>由于Debian仓库中的版本较老，所以用yaml格式配置</s>。<s>目前已经换成Kitty终端代替了。</s></p>
<pre><code># 老版本配置文件，已弃用
import:
  - ~/.config/alacritty/flexoki-dark.yaml # 加载主题
font:
  normal:
    family: Sarasa Term SC
    style: Regular
  bold:
    family: Sarasa Term SC
  italic:
    family: Sarasa Term SC
</code></pre>
<pre><code># ~/.config/alacritty/alacritty.toml
[font]
normal = { family = "等距更纱黑体 SC", style = "Regular" }
</code></pre>
<h3>Wezterm</h3>
<p>目前WezTerm虽然不在官方仓库中，但有官方debian包。此终端自带flexoki主题。</p>
<p>使用lua文件配置：</p>
<pre><code>-- ~/.config/wezterm/wezterm.lua

-- Pull in the wezterm API
local wezterm = require 'wezterm'

-- This will hold the configuration.
local config = wezterm.config_builder()

config.color_scheme = 'flexoki-dark'
config.font = wezterm.font '等距更纱黑体 SC'

-- Finally, return the configuration to wezterm:
return config
</code></pre>
<h3><s>Kitty</s></h3>
<p><s><strong>由于Kitty内存占用较大，而Alacritty的某些问题在换到fish之后不存在了，所以现在用Alacritty了</strong></s>。目前换到了WezTerm。</p>
<p>在不使用alacrity后换的一个终端，目前用的最顺手的（主要原因是解决了alacrity和mate terminal的无法正确适配zsh-auto suggestions的问题）。</p>
<ul>
<li>支持分屏</li>
<li>支持显示Shell Vim键位更改鼠标外形。</li>
</ul>
<h3><s>CopyQ</s></h3>
<p>:::note
换到KDE后由于其已经内了剪贴板管理器，所以就不用这个了。在Windows上由于占用大，响应慢，所以暂时换成ditto了（虽然功能没前者多）。
:::</p>
<p>虽然Fcitx5按&lt;kbd&gt;Ctrl+;&lt;/kbd&gt;键可以访问最近的剪贴板，但只能保存五条记录，所以装了一个剪贴板管理软件。</p>
<p>开源的剪贴板📋管理器，在Windows上（比自带的好很多）和Linux上体验都很不错。</p>
<h3>Vim</h3>
<p>目前是当作一个多功能的轻量文本编辑器用，在Windows上也一样。配置就这些：</p>
<pre><code>set guifont=Sarasa\ Term\ SC\ 12
set number
set nobackup
"GUI Options {{{1
set guioptions-=T
set guioptions-=e
set guioptions-=r
set guioptions-=l
set guioptions-=L
set guioptions-=t
set guioptions-=b
set guioptions-=m
set guioptions+=c
set guioptions+=!
set guioptions+=P
"}}}
set laststatus=2
set foldmethod=marker
set shiftwidth=4
if (has("win32") || has("win64"))
    set undodir=~/AppData/Local/Temp "防止相同目录下产生残余文件
endif
if has("gui")
    set background=dark
    colorscheme solarized
endif
</code></pre>
]]></content>
        <author>
            <name>XLBilly</name>
            <uri>https://xlbil.netlify.app/</uri>
        </author>
        <published>2024-01-31T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[数字难民——Windows 8.1在2024年的现状]]></title>
        <id>https://xlbil.netlify.app/posts/windows-8-in-2024/</id>
        <link href="https://xlbil.netlify.app/posts/windows-8-in-2024/"/>
        <updated>2024-01-13T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[最近又给老笔记本重装了Windows 8.1系统（没错，是在写老笔记本上Linux使用体验这个文章的5个月后[^1]，目前这个文章还没有完结...]]></summary>
        <content type="html"><![CDATA[<p>最近又给老笔记本重装了Windows 8.1系统（没错，是在写<a href="../linux-on-old-laptop/">老笔记本上Linux使用体验</a>这个文章的5个月后[^1]，目前这个文章还没有完结），在去年的1月10日，Windows 8.1停止支持，在一年后使用这个操作系统不出意外遇到了许多阻力。</p>
<p>列举一下Windows 8.1目前不支持的框架：</p>
<ul>
<li>Qt 6，目前Qt6框架仅支持Windows 10以上版本</li>
<li>.NET Framework 4.8.1，Windows 8.1支持的版本为4.8</li>
<li>Electron 23，在Windows 8.1中运行会报错</li>
</ul>
<p>目前以下软件最新版本仍然支持Windows 8.1</p>
<ul>
<li>Git</li>
<li>msys2</li>
<li>Rainmeter</li>
<li>Firefox</li>
</ul>
<p>目前以下软件放弃了对Windows 8.1的支持：</p>
<ul>
<li>Anki，连Qt5版本也不支持，最后一个支持的版本为2.1.49</li>
<li>Visual Studio Code，最新版运行报错</li>
<li>Joplin，运行报错，最后一个支持的版本为2.12.3</li>
<li>Chrome，最后一个支持的版本为109.0</li>
<li>qBittorent，目前能用的版本为4.2.0</li>
<li>iTunes，目前能用的版本为12.10</li>
<li>OBS Studio，由于在新版中用了Qt6而不支持，这个应该算第一批放弃支持Windows 8.1的（2023年夏）</li>
</ul>
<hr />
<p>不过比这个问题还重要的是一个硬件问题—目前笔记本的屏幕从显示彩线已经变成现在频繁出现暗屏的问题，可能需要去报修。</p>
<p>[^1]: 事实说明即使尽可能多地关掉了KWin的桌面特效，Linux运行的流畅程度还是与电脑本身的硬件有关。另外虽然有Xfce甚至是Tiling Window Manager可供选择，这些桌面环境也对触屏支持不友好。</p>
]]></content>
        <author>
            <name>XLBilly</name>
            <uri>https://xlbil.netlify.app/</uri>
        </author>
        <published>2024-01-08T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[老笔记本上Linux使用体验]]></title>
        <id>https://xlbil.netlify.app/posts/linux-on-old-laptop/</id>
        <link href="https://xlbil.netlify.app/posts/linux-on-old-laptop/"/>
        <updated>2023-10-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[此文尽量保证在Linux系统上写成 在准备给一个老笔记本装一个Linux系统时正好Debian 12发布了，目前在7月22日更新之后是De...]]></summary>
        <content type="html"><![CDATA[<blockquote>
<p>此文尽量保证在Linux系统上写成</p>
</blockquote>
<p>在准备给一个老笔记本装一个Linux系统时正好<a href="https://www.debian.org/News/2023/20230610">Debian 12发布了</a>，目前在7月22日更新之后是Debian 12.1版本。所以就讲一下老笔记本上的Debian 12使用体验。</p>
<h2>Debian 12目前遇到的问题</h2>
<p>由于是刚刚出来的正式版，所以目前使用过程中还是有很多问题。</p>
<ul>
<li>驱动不稳定，有概率启动登录之后只有触屏可以使用。键盘，触控版不能用。</li>
<li>默认设置默认输入法为ibus输入法，没有预装fcitx5输入法。但是KDE桌面需要fcitx5输入法。这个比较好解决，安装fcitx5再运行<code>im-config</code>设置一下即可。</li>
<li>自带的包<code>raspi-firmware</code>会导致Linux内核无法升级，需执行<code>sudo dpkg --purge raspi-firmware</code>清除。</li>
</ul>
<h2>笔记本信息</h2>
<p>这个笔记本比较老，所以里面的硬件完全跟不上现在的主流配置。内存大约4G，所以在安装时分了swap分区。</p>
<p>虽然据说Linux对老硬件的支持比较好，但事实上这也与发型版自带的桌面环境也有关。Gnome和KDE两个桌面环境都比较大，都需要比较大的内存。在这个老的笔记本上运行KDE内存基本都是超过一半的，所以如果笔记本硬件实在不行Linux也救不了，老版的Windows反而更适合。</p>
<h2>体验</h2>
<p>虽然Linux在“对用户友好这个方面”这个方面做得没有Windows和macOS好，但是目前已经得到了很大的改善。新版的KDE和Debian也在用户体验方面提升了很多。</p>
<p>目前Debian 12改善的地方有：</p>
<ul>
<li><a href="https://www.debian.org/releases/bookworm/amd64/release-notes/ch-information.en.html#non-free-split">默认自带“不自由”的硬件驱动</a>，这些驱动都移至了<em>non-free-firmware</em>仓库</li>
<li>KDE版本自带<code>xdg-desktop-portal-kde</code>包</li>
</ul>
<p>由于Linux桌面环境的分裂，Linux上的应用程序有很多不统一的用户体验，其中有一个问题就是文件选择器的不同。即使是KDE上的应用程序，GTK/Electron应用也会默认使用<s>垃圾的</s>Nautilus文件选择器，解决办法是安装<em>xdg-desktop-portal-kde</em>这个包，并在<code>/etc/security/pam_env.conf</code>加入：</p>
<pre><code>GTK_USE_PORTAL DEFAULT=1
</code></pre>
<h3>触屏体验</h3>
<p>由于这个笔记本是支持触屏的，所以说一下触屏在Linux上的体验。</p>
<p>虽然Gnome桌面环境的布局适合触屏操作，但是触屏在上面的体验并没有那么好，大概和KDE一样。目前Debian 12的KDE相对于Debian 11的KDE也有了一些改善，比如新版KDE可以长按桌面进入编辑模式，Dolphin新增选择模式等。</p>
<p>KDE上对触屏的支持比较一般，不支持通过长按来呼出右键菜单<a href="%E8%BF%99%E4%B8%80%E7%82%B9Gnome%E5%81%9A%E5%BE%97%E6%AF%94%E8%BE%83%E5%A5%BD%EF%BC%8C%E5%9C%A8Gnome%E7%9A%84%E8%BE%85%E5%8A%A9%E5%8A%9F%E8%83%BD%E4%B8%AD%E5%8F%AF%E4%BB%A5%E5%90%AF%E7%94%A8%E9%95%BF%E6%8C%89%E8%A7%A6%E5%B1%8F%E5%91%BC%E5%87%BA%E5%8F%B3%E9%94%AE%E8%8F%9C%E5%8D%95">^1</a>，文件管理器Dolphin支持了长按手势，但是无法灵敏地呼出右键菜单。不过里面有些应用对触屏的支持还是超过了预期，目前以下种类的应用对触屏的支持比较好：</p>
<ul>
<li>浏览器：Chrome,Firefox</li>
<li>基于GTK/Qt的应用：KDE内置的文档查看器Okular，<a href="https://ugetdm.com">uGet</a>等</li>
<li>Electron应用：非常多，比如VSCode,QQ,百度网盘等。</li>
</ul>
<p>其中Firefox默认不支持触屏操作，需要打开about:config页面设置<code>dom.w3c_touch_events.enables</code>为1。然后在<code>/etc/security/pam_env.conf</code>加入：</p>
<pre><code>MOZ_USE_XINPUT2 DEFAULT=1
</code></pre>
<h3>图形界面基本体验</h3>
<p>Debian 12上的KDE是默认选择Wayland的，体验后发现KDE目前对Wayland的支持还挺不错。而且在老笔记本上体验发现Wayland上的KDE比X11上的KDE更加流畅。反而是X11上的KDE桌面经常会在不知道做了什么操作就会崩溃，只能手动运行<code>plasmashell</code>命令。<strong>2023年了，X11这个老古董已经超过10年没有更新了，真的没必要太依赖这种旧的东西了。</strong></p>
<p>不过Wayland上面又有一个坑——无法使用输入法，需要在<code>/etc/security/pam_env.conf</code>加入：</p>
<pre><code>GTK_IM_MODULE DEFAULT=fcitx5
QT_IM_MODULE DEFAULT=fcitx5
XMODIFIERS DEFAULT=@im=fcitx5
</code></pre>
<p>还有一个坑是KDE系应用内置的字体查看器失效，用kfontview打开字体也会提示错误，详见<a href="https://bugs.kde.org/show_bug.cgi?id=439470">此链接</a>。</p>
<p>另外，在Linux上使用Papirus Icon Pack和Materia KDE主题之后KDE出现了明显的卡顿，使用默认的主题就没有这个问题。有可能是Kvantum消耗系统资源的原因。</p>
<h3>软件生态</h3>
<p>这在Linux上是一个比较大的问题，不过目前Linux在这方面改善了许多。目前常用的支持Linux的软件有QQ<a href="%E5%9C%A8%E4%BD%BF%E7%94%A8Electron%E6%9E%B6%E6%9E%84%E4%B9%8B%E5%90%8ELinux%E4%B8%8A%E7%9A%84QQ%E5%B7%B2%E7%BB%8F%E5%AE%9E%E7%8E%B0%E4%BA%86%E6%AF%94%E8%BE%83%E5%AE%8C%E6%95%B4%E7%9A%84%E5%8A%9F%E8%83%BD%E3%80%82">^2</a>,百度网盘等。</p>
<p>其中尤其是开源软件对Linux的支持比较好，像Emacs，GIMP这些在软件包仓库就有。</p>
<p>另外很多人认为Linux上的游戏很少，其实Linux平台上的游戏比想象中的多，Steam就有Linux版本。支持Linux的游戏包括：</p>
<ul>
<li>基于起源引擎的游戏：传送门，传送门2，半条命2，CSGO，GMOD等</li>
<li>P社游戏：城市：天际线，钢铁雄心4,维多利亚3等</li>
<li>其他3D游戏：Minecraft，</li>
<li>其他游戏：迷你地铁，Limbo，Undertale，泰拉瑞亚，</li>
</ul>
]]></content>
        <author>
            <name>XLBilly</name>
            <uri>https://xlbil.netlify.app/</uri>
        </author>
        <published>2023-08-18T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[通过WebDAV方式保存Tiddlywiki]]></title>
        <id>https://xlbil.netlify.app/posts/tiddlywiki-save-webdav/</id>
        <link href="https://xlbil.netlify.app/posts/tiddlywiki-save-webdav/"/>
        <updated>2025-12-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[2025年11月9日更新：增加Copyparty这个WebDAV工具（虽然目前已不用WebDAV保存方式） Tiddlywiki是一个很不错...]]></summary>
        <content type="html"><![CDATA[<p>:::note
2025年11月9日更新：增加<a href="https://github.com/9001/copyparty">Copyparty</a>这个WebDAV工具（虽然目前已不用WebDAV保存方式）
:::</p>
<p>Tiddlywiki是一个很不错的工具，但唯一的一个麻烦点就是保存起来麻烦。</p>
<p>在<a href="https://tiddlywiki.com">Tiddlywiki官网</a>上介绍了以下保存方式</p>
<ul>
<li>下载保存</li>
<li>客户端保存</li>
<li>Git保存（GitHub，GitLab，Gitea）</li>
<li><a href="https://tiddlyhost.com">TiddlyHost</a>保存</li>
</ul>
<p>其中下载保存是默认的保存方式，由于太麻烦，所以不介绍。</p>
<h2>客户端保存</h2>
<p>Tiddlywiki有一个官方的客户端<a href="https://github.com/TiddlyWiki/TiddlyDesktop">TiddlyDesktop</a>，这也是我第一次用Tiddlywiki时的保存方式，支持三大桌面操作系统。后来又换成了<a href="https://ibnishak.github.io/Timimi/">Timimi</a>，一个通过浏览器插件和本地服务端实现的Tiddlywiki本地保存方法。</p>
<p>但对于移动端来说本地保存就有些困难了，在Android上的支持本地保存的App有<a href="https://f-droid.org/zh_Hant/packages/top.donmor.tiddloid/">Tiddldroid</a>，在iOS上的App只有<a href="https://apps.apple.com/cn/app/quine/id1450128957">Quine</a>，而且是收费¥38的应用。这条路在iOS上就废了。</p>
<h2>Git保存</h2>
<p>这也是Tiddlywiki内置的一种保存方式，Tiddlywiki默认就支持保存在<a href="https://github.com">GitHub</a>，<a href="https://gitlab.com">GitLab</a>，和<a href="https://gitea.com">Gitea</a>上。由于Git服务器是方便访问的，所以这个方法可以在iOS上使用。</p>
<p>在iOS上的Git应用有<a href="https://workingcopy.app/">Working Copy</a>，可以将Git仓库克隆到本地。但是整体看Git同步依旧不理想，一方面是在iPad中查看HTML文件一直很不方便（默认的HTML预览无法查看带有JavaScript代码的HTML文件，只有Microsoft Edge支持），所以这个方法虽然能在各个设备上通用，但还是不完美。</p>
<h2>WebDAV同步</h2>
<p>这个同步方式是一个比较特殊的方式。WebDAV同步方式在2016年新增，只要将TiddlyWiki的HTML文件放在WebDAV文件夹中，然后用浏览器打开WebDAV链接，就能编辑TiddlyWiki文件。</p>
<p>但是，虽然许多网盘提供了WebDAV，但是并不是所有WebDAV都支持TiddlyWiki，比如：</p>
<ul>
<li>没有网页端的WebDAV（如Nextcloud，坚果云），打开链接只会触发下载或查看纯文本</li>
<li>能打开文件但无法保存（如TeraCloud）</li>
</ul>
<p>目前已知支持的有：</p>
<ul>
<li>本地
<ul>
<li>rclone（以及安卓上的RCX）</li>
<li>wsgidav，Python上的WebDAV，可以在iOS的<a href="https://holzschu.github.io/a-Shell_iOS/">a-Shell</a>上使用</li>
<li><a href="https://github.com/9001/copyparty">copyparty</a>，同样可以在a-Shell上使用</li>
</ul>
</li>
<li>远程
<ul>
<li>Koofr（免费）</li>
<li>pCloud（付费）</li>
</ul>
</li>
</ul>
<p>本地的WebDAV可以用来在本地编辑TiddlyWiki。使用copyparty：</p>
<pre><code># 推荐用隔离的方式安装copyparty
# pipx install copyparty
uv tool install copyparty
mkdir tiddlywiki # 存放Tiddlywiki文件
cd tiddlywiki
</code></pre>
<p>默认情况下Copyparty在处理<code>PUT</code>请求时会存到另外一个文件，而不是覆盖原文件，因此要启用<code>daw</code>选项：</p>
<pre><code>copyparty -v .::A:c,daw
</code></pre>
<p>启动后可以在<a href="http://127.0.0.1:3923">本地3923端口</a>使用WebDAV保存。</p>
<p>也可以使用<code>wsgidav</code>（较麻烦，不推荐）：</p>
<pre><code>pip install cheroot wsgidav
mkdir tiddlywiki # 存放Tiddlywiki文件
wsgidav --host 127.0.0.1 --port 80 --root tiddlywiki/ --auth anonymous
</code></pre>
<p>如果需要同步可以选择免费的Koofr网盘，在<a href="https://app.koofr.net">Koofr</a>注册账号后生成令牌，然后将TiddlyWiki文件后缀名改为<code>.aspx</code>，上传至网盘。在浏览器访问以下链接：</p>
<pre><code>https://app.koofr.net/dav/Koofr/文件.aspx
</code></pre>
<p>登录用户名为注册邮箱，密码为令牌，此时就可以打开TiddlyWiki了。</p>
<hr />
<p>没错，这篇文章上次更新还是去年的6月16日，补写这个文章的原因是在2023年12月30日找到了iOS系统的本地WebDAV解决方案。目前这个文章终于可以完结了。</p>
]]></content>
        <author>
            <name>XLBilly</name>
            <uri>https://xlbil.netlify.app/</uri>
        </author>
        <published>2023-05-07T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[iSH体验]]></title>
        <id>https://xlbil.netlify.app/posts/h2023-ios-ish/</id>
        <link href="https://xlbil.netlify.app/posts/h2023-ios-ish/"/>
        <updated>2023-01-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[iOS上的Linux模拟器]]></summary>
        <content type="html"><![CDATA[<p><img src="https://xlbil.netlify.app/.netlify/images?url=_astro%2FIMG_87600.s33Zl-03.png&amp;w=2048&amp;h=1536&amp;dpl=6a2ba76127de46000862e731" alt="" /></p>
<p>之前在安卓上介绍过<a href="https://xlbil.netlify.app/posts/emacs-on-termux/">Termux</a>这个安卓上的Shell模拟器，而在iOS平台上也有一个类似的应用，叫iSH。在App Store上的页面可以看到只有一个白色的截图，不看清楚还以为只是一个低级的ssh应用，其实这个应用内置了一个微型的<a href="https://www.alpinelinux.org/">Linux系统</a>，而且自带了软件包管理器 <code>apk</code> 。</p>
<h2>体验</h2>
<p>首先是操作界面。iSH在键盘上增加了 <code>TAB</code> <code>CTRL</code> <code>ESC</code> 和方向键这四个键，不过这个方向键的操作方式很奇怪，四个方向键是并在一起的，在这个按钮上拖动才能操作方向键。这个设计可能是iSH对于终端不支持点击的补偿（原因见“外层”部分）。</p>
<p>iSH默认主题是白底黑字，比较难受，在选项里可以改成黑色主题。里面还有一个选项可以更改iSH的程序图标，有各种用户设计的不同图标，这里推荐TechUpdateGuy设计的图标。</p>
<p>在iOS自带的文件管理器里开启一个选项还可以查看内置Linux的所有文件。</p>
<h3>应用</h3>
<p>在iSH里面运行一些简单的程序还是可以的（比如Python），但是会特别慢，经常会出现执行命令半天没有输出的情况。这个问题似乎在把系统导出再倒入后有所改善。</p>
<p>一些比较普通的应用体验还行。iOS内置的文件管理器是不支持7z文件的解压的，可以在iSH安装p7zip解压。在里面用aria2下载文件也很不错。</p>
<p>而运行一些比较大的软件就体验不好了。在iSH里面的Emacs几乎不可能用内置的package.el安装插件，因为执行 <code>package-refresh-contents</code> 根本就没有反应，有时候在Emacs里添加package.el的配置会导致Emacs无法启动。而里面的ffmpeg根本就不能用，如果进行转码操作只会停在那里，速度为0kb/s。</p>
<p>还有一些绘图软件也基本不能用。Graphviz这个软件只能处理非常小的文件，只要这个文件稍微比较大，那么Graphviz就会抛出 <code>Illegal Hardware Instruction</code> 错误。</p>
<p>关于iSH里面的性能一直是个谜，在里面运行了 <code>free</code> 命令得到的结果是这样：</p>
<pre><code>free
</code></pre>
<table>
<thead>
<tr>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>total</td>
<td>used</td>
<td>free</td>
<td>shared</td>
<td>buff/cache</td>
<td>available</td>
<td></td>
</tr>
<tr>
<td>Mem:</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>-/+</td>
<td>buffers/cache:</td>
<td>0</td>
<td>0</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Swap:</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<p>可以看到上面显示的全是0，暂时不知道原因是什么。</p>
<h3>内置系统</h3>
<p>iSH不像Termux，由于自己内置了一个完整的Linux发行版，所以软件包的选择比较多，而且和Termux不同，Termux里的软件包是单独放在一个特殊的源维护的，iSH不是这样，所以可以换成清华的Alpine Linux源。</p>
<pre><code>sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories
</code></pre>
<p>Alpine源里的默认Emacs是经过阉割的，里面没有自带文档，需要安装额外的 <code>emacs-doc</code> 包。</p>
<h3>其他</h3>
<p>iSH还有一个特色功能，支持把目前的Alpine操作系统导出，</p>
<p>接下来的内容就是iSH的问题了。</p>
<h2>问题</h2>
<p>iSH的问题目前看下来特别大。</p>
<h3>卡顿</h3>
<p>虽然iOS以流畅闻名，但是iSH在iOS上的体验并不好。iSH上的应用普遍比Termux上的应用卡。Emacs在iSH上的启动时间也比Termux慢很多。</p>
<p>在调整了 <code>gc-cons-threshold</code> 这个变量[^1]的情况下，Emacs的启动还是很慢，启动时间达到了恐怖的33秒。</p>
<p>为了弄清楚iSH的性能，我用秒表给Termux和iSH的应用速度测了速[^2]。在Termux和iSH分别进行以下操作：</p>
<ul>
<li>启动Emacs</li>
<li>补全测试（按 <code>C-h v o RET</code> ）</li>
<li>启动<a>Eshell</a></li>
</ul>
<table>
<thead>
<tr>
<th>时间</th>
<th>Termux</th>
<th>iPhone</th>
<th>iPad</th>
</tr>
</thead>
<tbody>
<tr>
<td>Emacs</td>
<td>00:20.85</td>
<td>00:36.60</td>
<td></td>
</tr>
<tr>
<td>补全</td>
<td>00:01.05</td>
<td>00:03.43</td>
<td></td>
</tr>
<tr>
<td>Eshell</td>
<td>00:01.80</td>
<td>00:06.74</td>
<td></td>
</tr>
</tbody>
</table>
<p>可以看到在启动时间上iSH里面的Emacs启动速度非常慢，在一些操作上也会耗时更久（尤其是这个Eshell在iSH上能明显感觉到慢）。</p>
<p>当然还有更离谱的时候，就是程序压根就不能运行，结果一直不会显示，有时要按一下按键</p>
<h3>界面错位</h3>
<p>在应用中切换输入法，进行分屏，或者仅仅是进行一些普通操作，都会导致iSH出现卡顿，经常出现的卡顿就是下面这种情况：</p>
<p><img src="../_images/%E6%88%AA%E5%B1%8F%202022-12-11%2022.19.52.png" alt="最容易复现的bug：重复出现的内容" /></p>
<p>这种情况非常常见，经常就是在切换输入法的时候终端上的文字就会错位。在Vim和Emacs里这个问题非常严重。</p>
<p>这还是幸运的情况，如果你很不幸，还会偶尔出现应用黑屏，此时你啥也看不见，只有切换输入法或者其他操作时才能正常。这导致本文在这个应用里的编辑体验非常差。</p>
<p>目前这个问题的改善方案是去掉package.el的配置代码，不过这也说明Emacs不能安装插件了。</p>
<h3>性能</h3>
<p>这个问题是一个大问题，要从两方面来讲。</p>
<h4>底层</h4>
<p>Termux和iSH的底层其实不一样：Termux是在Android arm架构的基础上构建的。而iSH则是实现了一个模拟器，在这个基于x86的模拟器上面运行Linux系统。</p>
<p>至于不能基于iOS的原因也是无奈之举，因为苹果的封闭性， <s>iSH如果引用关乎系统的组件会导致无法在App Store过审。</s> 即使是基于模拟器iSH也<a href="https://ish.app/blog/app-store-removal">曾经被App Store下架</a>。</p>
<p>另外一个原因是工具支持。有一个跟iSH类似的应用a-Shell，是基于原生系统的Shell。里面自带的很多工具，但是由于没包管理器，不能选择特定的工具。</p>
<h4>外层</h4>
<p>iSH的外层其实是基于一个浏览器------Webview，也就是用基于网页做前端。这样总会出现各种各样的问题，比如切换后台时iSH会刷新导致Shell恢复到初始界面。</p>
<p>iSH用的界面是<a href="https://github.com/chromium/hterm">hterm.js</a>，这个基于网页的实现要支持终端鼠标操作就非常困难了，在Github的Issue里有人提到了这个问题[^3]。目前hterm.js还是不支持点击的。</p>
<h3>一些小问题</h3>
<h4>命令执行</h4>
<p>在iSH里面有一些问题不影响使用，但是有点奇怪。在里面运行了程序在结束运行后不会直接进入Shell，而是一片空白，需要再按一下回车才行。这个问题在a-Shell也有，可能是iOS自己的问题。</p>
<p>在Emacs上也有类似这样的问题。使用 <code>M-x</code> 执行命令时</p>
<h4>时区</h4>
<p>Alpine Linux默认的时区为UTC标准时间，所以时间会比正常时间晚8小时[^4]，解决方法：</p>
<pre><code>apk add tzdata
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
</code></pre>
<p>先安装tzdata，然后在 <code>/usr/share/zoneinfo</code> 这个文件夹里面就会有所有时区的配置。在中国可以复制下面的 <code>Asia/Shanghai</code> 文件。复制完之后执行 <code>date -R</code> ，如果结尾是 <code>+0800</code> 说明时区设置成功了。</p>
<h2>TODO 总结</h2>
<p>虽然iSH目前在iOS的体验非常差，而且<em>小问题</em>一大堆。但是由于</p>
<p><img src="https://xlbil.netlify.app/.netlify/images?url=_astro%2FIMG_87600.s33Zl-03.png&amp;w=2048&amp;h=1536&amp;dpl=6a2ba76127de46000862e731" alt="Git on iSH" /></p>
<p>[^1]: 在init.el添加 <code>(setq gc-cons-threshold most-positive-fixnum)</code> 可以加快启动速度</p>
<p>[^2]: 这个结果可能不准确。Termux上的Emacs版本为26.3，运行在Android5。iSH上的Emacs版本为27.1，运行在iOS 15.7.2。</p>
<p>[^3]: 链接：<a href="https://github.com/ish-app/ish/issues/564">Github Issue</a></p>
<p>[^4]: 参考<a href="https://www.zhangbj.com/p/1206.html">Alpine Linux更改时区</a></p>
]]></content>
        <author>
            <name>XLBilly</name>
            <uri>https://xlbil.netlify.app/</uri>
        </author>
        <published>2023-01-27T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[功能强大的zsh]]></title>
        <id>https://xlbil.netlify.app/posts/h2023-zsh-config/</id>
        <link href="https://xlbil.netlify.app/posts/h2023-zsh-config/"/>
        <updated>2023-01-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[zsh配置]]></summary>
        <content type="html"><![CDATA[<blockquote>
<p>此org文件内置的代码可以通过org-mode内置的org-babel-tangle功能取出，见<a href="https://www.gnu.org/software/emacs/manual/html_node/org/Extracting-Source-Code.html">org-mode文档</a>。</p>
</blockquote>
<p>之前一直觉得zsh和bash等其他Shell一样，直到最近看了一下zsh的文档才发现zsh的功能非常丰富，可以说是"Shell里面的Emacs"</p>
<h2>基本设置</h2>
<h3>保存历史记录</h3>
<p>在 <code>.zshrc</code> 加入：</p>
<pre><code>HISTFILE=~/.zsh_history 
SAVEHIST=1000
setopt share_history
setopt hist_ignore_dups
</code></pre>
<p>其中 <code>HISTFILE</code> 用来指定保存历史记录的文件名， <code>SAVEHIST</code> 指定保存历史记录的数量。接下来是两个zsh内部选项的设置， <code>append_history</code> 可以在zsh内输入exit之后保存历史记录。不过有时候推出zsh的方法并不是这样，而是手动关闭，所以推荐设置 <code>inc_append_history</code> 选项，这会让zsh每次执行完命令后保存历史记录。</p>
<h3>快捷键设置</h3>
<p>使用 <code>bindkey</code> 命令可以设置zsh的快捷键键位，zsh默认设置的是Emacs键位，也就是：</p>
<pre><code>bindkey -e
</code></pre>
<p>对于熟悉Vim的人可以用Vi快捷键键位，可以用：</p>
<pre><code>bindkey -v
</code></pre>
<h2>主题</h2>
<p>其实zsh里面已经内置了一些主题了<a href="%E5%8F%82%E8%80%83%E9%93%BE%E6%8E%A5%EF%BC%9A%5B%E5%BD%A9%E8%89%B2%E7%9A%84Shell%5D(https://www.cnblogs.com/bamanzi/p/colorful-shell.html)">^1</a>。首先输入：</p>
<pre><code>autoload -Uz promptinit
promptinit
prompt -l #列出所有主题
</code></pre>
<p>最后这个命令可以列出所有的zsh内置主题名称。预览一个主题可以用 <code>prompt -p 主题名</code> 。还有一个博客也提供了所有主题的<a href="http://bneijt.nl/blog/post/zsh-themes-for-prompts-screenshots/">截图</a>。原来使用的是adam2主题，后来使用的是clint。</p>
<p>在Debian Linux上的zsh默认推荐配置会自动设置主题为adam1，不过这个主题并不好看</p>
<pre><code>autoload -Uz promptinit
promptinit
prompt clint
</code></pre>
<h2>补全</h2>
<p>zsh最强大的功能就是补全了，里面对很多软件都有补全支持（在部分发型版需要安装 <code>软件名-zsh-completion</code> 包），这也是我在Debian上用zsh的原因。</p>
<p>在zsh默认的推荐配置里就启用了补全。如果手动配置需要启用补全：</p>
<pre><code>zstyle :compinit filename "~/.zshrc"
autoload -Uz compinit
compinit
</code></pre>
<p>然后就可以在很多地方使用补全了。其中git对于zsh的补全支持非常好，对于操作的命令可以在下方显示解释，甚至可以补全每个commit并显示时间，如下图所示：</p>
<p><img src="https://xlbil.netlify.app/.netlify/images?url=_astro%2FIMG_9539.sfbWIpY5.jpg&amp;w=996&amp;h=236&amp;dpl=6a2ba76127de46000862e731" alt="在zsh里甚至可以补全commit" /></p>
<p>下面是某些Linux发行版默认的zsh补全配置，比较复杂一些：</p>
<pre><code># Use modern completion system
autoload -Uz compinit
compinit

zstyle ':completion:*' auto-description 'specify: %d'
zstyle

 ':completion:*' completer _expand _complete _correct _approximate
zstyle ':completion:*' format 'Completing %d'
zstyle ':completion:*' group-name ''
zstyle ':completion:*' menu select=2
eval "$(dircolors -b

)"
zstyle ':completion:*:default' list-colors

 ${(s.:.)LS_COLORS}
zstyle ':completion:*' list-colors ''
zstyle ':completion:*' list-prompt %SAt %p: Hit TAB for more, or the character to insert%s
zstyle ':completion:*' matcher-list '' 'm:{a-z}={A-Z}' 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=* l:|=*'
zstyle ':completion:*' menu select=long
zstyle ':completion:*' select-prompt %SScrolling active: current selection at %p%s
zstyle ':completion:*' use-compctl false
zstyle ':completion:*' verbose true

zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31'
zstyle ':completion:*:kill:*' command 'ps -u $USER -o pid,%cpu,tty,cputime,cmd'
</code></pre>
<h2>其他</h2>
<h3>显示版本控制信息</h3>
<p>zsh内置一个 <code>vcs_info</code> 模块（在部分Linux发型版上需要单独安装 <code>zsh-vcs</code> 包），可以显示版本控制信息[^2]，开启方式如下：</p>
<pre><code>autoload -Uz vcs_info
</code></pre>
<p>输入 <code>vcs_info_printsys</code> 可以列出所有支持的版本控制系统，其中如果有一些版本控制系统是不需要的可以用 <code>zstyle</code> 命令禁用，比如禁用bzr：</p>
<pre><code>zstyle ':vcs_info:*' disable bzr
</code></pre>
<p>还可以只启用某些版本控制系统，比如只启用git、svn和hg：</p>
<pre><code>zstyle ':vcs_info:*' enable git hg svn
</code></pre>
<p>目前zsh内置的主题只有clint是支持显示版本控制信息的。</p>
<h3>用cdr命令跳转至最近的文件夹</h3>
<p>这是zsh里面的一个很实用的功能。开启方法：</p>
<pre><code>autoload -Uz chpwd_recent_dirs cdr add-zsh-hook
add-zsh-hook chpwd chpwd_recent_dirs
</code></pre>
<p>用 <code>cdr -l</code> 可以列出之前去过的文件夹</p>
<h3>游戏</h3>
<p>zsh里面自带一个俄罗斯方块游戏，可以用以下方式开启：</p>
<pre><code>autoload -U tetris
zle -N tetris
bindkey '^T' tetris
</code></pre>
<p>这样就可以按 <code>Ctrl+T</code> 进入俄罗斯方块了。如果设置了Vi按键模式，还可以用hjkl来控制方块移动。</p>
<p>zsh也内置了这个游戏的另外一个版本（不能旋转方块）：</p>
<pre><code>autoload -Uz tetriscurses
tetriscurses
</code></pre>
<p>[^2]: 参考官方文档：<a href="https://zsh.sourceforge.io/Doc/Release/User-Contributions.html#Version-Control-Information">26.5 Gathering information from version control systems</a></p>
]]></content>
        <author>
            <name>XLBilly</name>
            <uri>https://xlbil.netlify.app/</uri>
        </author>
        <published>2023-01-26T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[重新使用RSS]]></title>
        <id>https://xlbil.netlify.app/posts/h2023-freshrss/</id>
        <link href="https://xlbil.netlify.app/posts/h2023-freshrss/"/>
        <updated>2023-01-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[FreshRSS]]></summary>
        <content type="html"><![CDATA[<p>RSS在很久以前就已经有了，作为一个历史悠久的技术，在这个信息爆炸的年代又有了新的意义。越来越多人开始重拾RSS。</p>
<p>我在之前用过很多本地RSS工具，不过后来都没怎么用。后来发现使用在线提供的RSS服务更加方便。目前仍然存活的RSS服务有：</p>
<ul>
<li>Feedly</li>
<li>Inoreader</li>
<li>The Old Reader</li>
<li>FreshRSS</li>
</ul>
<p>在这之中，Feedly已经在国内无法访问，Inoreader苟延残喘，只有一个镜像可以用<a href="%E7%9B%AE%E5%89%8D%E5%AE%98%E6%96%B9%E5%9F%9F%E5%90%8D%3Chttps://inoreader.com%3E%E5%B7%B2%E7%BB%8F%E6%97%A0%E6%B3%95%E8%AE%BF%E9%97%AE%EF%BC%8C%E5%8F%AA%E6%9C%89%E5%8F%A6%E4%B8%80%E4%B8%AA%E5%9F%9F%E5%90%8D%3Chttps://innoreader.com%3E%E5%8F%AF%E4%BB%A5%E8%AE%BF%E9%97%AE%E3%80%82">^1</a>，官方客户端是废的。其他一些服务没有被应用广泛支持。所以我选择了FreshRSS。</p>
<h2>为什么选择FreshRSS</h2>
<p>在目前用下来有很多RSS托管服务都是带有广告的，比如Inoreader和The Old Reader。而FreshRSS开源免费，没有任何广告。</p>
<p>FreshRSS这个服务原本是要自建的，不过<a href="https://freshrss.org">官网</a>很良心，在下面可以找到 <strong>Sign up to an existing server.</strong> ，里面列出了现成的FreshRSS服务器列表，我选择了一个法国的服务器<a href="https://rss.cheredeprince.net">https://rss.cheredeprince.net</a>。在那个列表里可以找到很多FreshRSS服务器，选一个注册即可。</p>
<h2>应用端</h2>
<p>在电脑上用FreshRSS直接用网页端就行了，而在移动端则最好使用应用来更好地阅读。</p>
<p>在安卓端推荐使用<a href="https://github.com/seazon/FeedMe">FeedMe</a>[^3]，这个应用对各个平台的支持最广泛，也最漂亮。但是在较老的安卓版本可能会出现闪退的问题，解决方法是使用3.16的老版本。</p>
<p>当然在F-droid上也有很多其他支持FreshRSS的应用，有<a href="https://f-droid.org/packages/com.readrops.app">Readrops</a>，但是对于同步阅读记录支持不佳。</p>
<p>在iOS上也有FreshRSS的客户端，推荐开源的NetNewsWire，这个应用也有Mac版本。</p>
<h3>如何同步</h3>
<p>订阅FreshRSS<a href="%E5%8F%82%E8%80%83%3Chttps://cheredeprince.net/2018-09-09-Freshrss-sur-android/%3E">^2</a>需要先生成一个API密码。在侧边栏点击"账户，找到"API管"，在上面密码框输入一个密码（注意这和账户密码不同）。</p>
<p>在Readrops里直接填上服务器地址，用户名，API密码就可以了。在FeedMe和NetNewsWire里还需要在服务器地址后面加上 <code>/api/greader.php</code> 。比如服务器是 <code>https://rss.cheredeprince.net/</code> ，填的地址就是 <code>https://rss.cheredeprince.net/api/greader.php</code> 。</p>
<p>[^3]: 这个软件似乎在同步FreshRSS收藏夹时有收藏文章消失的问题，并且不是开源软件。开源替代方案有Readrops，Cape Reader和Read Me（2026.6.8）</p>
]]></content>
        <author>
            <name>XLBilly</name>
            <uri>https://xlbil.netlify.app/</uri>
        </author>
        <published>2023-01-08T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[一个启动器可以有多简洁]]></title>
        <id>https://xlbil.netlify.app/posts/h2023-kiss-launcher/</id>
        <link href="https://xlbil.netlify.app/posts/h2023-kiss-launcher/"/>
        <updated>2023-01-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[KISS Launcher体验]]></summary>
        <content type="html"><![CDATA[<blockquote>
<p>Keep it simple &amp; stupid.
-- Kelly Johnson</p>
</blockquote>
<p>这句话在很多情况下都适用。在做任何设计时都需要贯彻"简洁"原则。</p>
<p>在程序设计中，和这句话相近的话还有<a href="https://zh.m.wikipedia.org/wiki/%25E6%259B%25B4%25E7%25B3%259F%25E5%25B0%25B1%25E6%2598%25AF%25E6%259B%25B4%25E5%25A5%25BD">Worse is better</a>，一个程序有时没必要一直增加功能，有时把一件事做好反而是更好的。</p>
<p>最近想在Fdroid找一个比系统内置的华为桌面更好的桌面应用<a href="%E7%94%B1%E4%BA%8E%E5%AE%89%E5%8D%93%E6%A1%8C%E9%9D%A2%E5%BC%80%E6%94%BE%E7%9A%84%E7%89%B9%E6%80%A7%EF%BC%8C%E4%BD%A0%E5%8F%AF%E4%BB%A5%E5%9C%A8%E7%B3%BB%E7%BB%9F%E7%9A%84%E8%AE%BE%E7%BD%AE%E8%8F%9C%E5%8D%95%E9%87%8C%E8%87%AA%E5%B7%B1%E9%80%89%E6%8B%A9%E6%94%AF%E6%8C%81%E7%9A%84%E5%BA%94%E7%94%A8%E4%BD%9C%E4%B8%BA%E6%A1%8C%E9%9D%A2%E3%80%82">^1</a>，然后无意间发现了KISS Launcher这个应用，当时我下载了一个图标包，想着没地方用就下载了这个应用。</p>
<p>到开始用的时候，我还是被这个应用的设计惊艳到了。</p>
<h2>简洁</h2>
<p>在用这个启动器之前，我用的是安卓原生自带的桌面Launcher3（Android10自带版本），默认的桌面非常简洁，实现了基本的主屏幕，应用抽屉功能。整个软件的大小也很小，大概是3~4MB。而KISS Launcher的大小则是以KB为单位计算的！大约800KB左右。</p>
<p>在KISS Launcher中，没有"主屏幕"这个念，显示屏幕是不能放应用图标的。默认显示的是操作的提示信息，在桌面设置中可以设置主屏幕放置小部件，仅此而已。这一点的设计有点像Linux里的<a href="https://gnome.org">Gnome桌面(3.x版本)</a><a href="Gnome%E6%A1%8C%E9%9D%A2%E5%92%8C%E5%85%B6%E4%BB%96Linux%E6%A1%8C%E9%9D%A2%E4%B8%8D%E5%90%8C%EF%BC%8C%E9%81%B5%E5%BE%AA%E7%9D%80%E7%AE%80%E6%B4%81%E7%9A%84%E5%8E%9F%E5%88%99%EF%BC%8C%E6%A1%8C%E9%9D%A2%E4%B8%8A%E4%B8%8D%E8%83%BD%E6%94%BE%E7%BD%AE%E5%9B%BE%E6%A0%87%EF%BC%8C%E4%B9%9F%E4%B8%8D%E6%98%BE%E7%A4%BADock%E6%A0%8F%E3%80%82">^2</a>。而最底部则显示了收藏的应用和一个[<em>搜索栏</em>]{.spurious-link target="*%E6%90%9C%E7%B4%A2"}，搜索栏的左边是一个按钮，被称为"KISS圆环"，打开就能看到所有应用的列表，类似于抽屉。右边有三个点，可以显示一个菜单，</p>
<p>收藏栏能显示的应用不多，所以关键就是这个搜索栏了，而这个搜索栏也确实很强大。<a href="%E8%BF%99%E4%B8%80%E7%82%B9%E4%B9%9F%E5%8F%AF%E4%BB%A5%E5%8F%82%E8%80%83Gnome%E6%A1%8C%E9%9D%A2%E7%9A%84%E6%90%9C%E7%B4%A2%E5%8A%9F%E8%83%BD%E3%80%82">^3</a></p>
<h2>搜索</h2>
<p>普通的桌面都是要切换到主屏幕才能用搜索功能，而KISS Launcher的搜索功能不但快，而且更方便。在安卓5和更高版本中，长按HOME键可以直接启动搜索，避免要切换到桌面这一操作。</p>
<p>目前KISS Launcher的功能已经很完善了，实现了以下功能：</p>
<ul>
<li>搜索应用</li>
<li>搜索联系人，电话号码</li>
<li>搜索网络内容</li>
<li>计算器</li>
</ul>
<h3>网络搜索</h3>
<p>KISS Launcher默认用谷歌做搜索引擎，里面也内置了很多其他搜索引擎，比如必应、DuckDuckGo等。在设置里面也可以添加一个自定义搜索引擎。比如自定义一个维基百科搜索引擎，就可以用：</p>
<pre><code>https://zh.wikipedia.org/w/index.php?search=%s
</code></pre>
<h2>自定义</h2>
<p>KISS Launcher的自定义功能也很丰富。除了应用界面的主题色可以调整，还有很多细化的选项。</p>
<h3>手势</h3>
<p>这是一个比较实用的功能，目前用的是以下设置：</p>
<ul>
<li><strong>上划</strong> ：显示应用列表</li>
<li><strong>下划</strong> ：显示通知阴影</li>
<li><strong>左划</strong> ：显示历史应用</li>
<li><strong>长按</strong> ：显示菜单（Display Menu）</li>
</ul>
<p>这样左划就可以方便地显示之前用过的应用，这是其他桌面做不到的。</p>
<h3>应用标签</h3>
<p>这也是一个不错的功能。KISS Launcher会给应用自动打上标签分类。比如"联系人"应用会呼叫，电话这些标签，在搜索里显示。你也可以自己给应用加上标签。</p>
<p>可惜的是，KISS Launcher只识别出了一个联系人和电子邮件应用，所以这个功能还是不太实用。</p>
<h3>其他</h3>
<p>对于一些应用的细节问题，KISS Launcher也提供了一些"强迫症选项。</p>
<p>搜索栏左边的按钮显示的是应用的图标，不过在华为手机上这个图标很丑，在用户体验 → 隐藏KISS圆环就可以隐藏图标和右边显示菜单的三个点。</p>
<p>在"用户界面"这个选项，还有一些特殊的选项。"透明搜索栏"可以让搜索栏变为透明，更加简洁。"更大搜索栏"可以让搜索栏的宽度变大。"在右边显示KISS按钮"会让KISS按钮和菜单按钮的位置互换。</p>
<h2>不足</h2>
<p>虽然我一开始是想用图标包而用KISS Launcher的，但是图标包在KISS Launcher上体验并不好。可能是KISS Launcher的代码太少，优化不好，应用了图标包之后会导致KISS Launcher刷新应用的速度非常慢，每次切到主屏幕都要等很久，非常烦人。</p>
<p>这个问题目前无解，开"隐藏图标选项也不能解决。作为对比，Lawnchair这个桌面应用图标包后非常流畅，没有什么问题。</p>
<h2>总结</h2>
<p>在KISS Launcher<a href="https://f-droid.org/packages/fr.neamar.kiss/">F-droid页面</a>的介绍中，有一句话：</p>
<blockquote>
<p>在试用KISS一周的用户中， 93%在3年后仍然是活跃用户。</p>
</blockquote>
<p>在我因为一开始的好奇而使用了之后也着魔般地用了好一会。目前，直至最新版本，KISS Launcher安装包的大小仍然没有超过1MB，但是与很多主流的启动器相比有更多的实用功能，也许这就是它的魔力所在。</p>
<p><img src="https://xlbil.netlify.app/.netlify/images?url=_astro%2FScreenshot_2022-11-30-20-54-46.DGrC4vNS.png&amp;w=720&amp;h=1280&amp;dpl=6a2ba76127de46000862e731" alt="简洁的KISS Launcher（带Arcticons Icon Pack）" /></p>
<p>其实这种"效率桌面"其实目前看来有很多，但是KISS Launcher早就在Android 6的时候就开始项目了，而且开源免费，是"效率桌面中不错的选择。</p>
]]></content>
        <author>
            <name>XLBilly</name>
            <uri>https://xlbil.netlify.app/</uri>
        </author>
        <published>2023-01-05T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[一个不错的Emacs主题]]></title>
        <id>https://xlbil.netlify.app/posts/h2023-modus-themes/</id>
        <link href="https://xlbil.netlify.app/posts/h2023-modus-themes/"/>
        <updated>2022-12-23T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Modus Themes]]></summary>
        <content type="html"><![CDATA[<p>:::note
由于新版modus-themes与旧版不兼容，本文内容已过时。
:::</p>
<p>用过很多Emacs主题，做得不错的主题有 <code>doom-themes</code> ，<a href="https://elpa.gnu.org/packages/ef-themes.html">ef-themes</a>。其中 <code>doom-themes</code> 里面有很多不错的配色，比如Material，Gruvbox，Miramare。不过适配最广的还是<a href="https://elpa.gnu.org/packages/modus-themes.html">modus-themes</a>。</p>
<p>之前用的是 <code>doom-themes</code> 里面的Gruvbox，虽然配色很不错，但是对于一些类似 <code>fido-mode</code> 等类似工具的支持不是很好，里面对于输入的高亮匹配字符只显示为粗体，没有颜色。 <code>ef-themes</code> 和 <code>modus-themes</code> 的作者是同一个人，但是 <code>ef-themes</code> 对 <code>vc</code> 工具的颜色适配不行。</p>
<p><code>modus-themes</code> 颜色配置用基于 <em>WCAG AAA</em> ，非常淳朴，虽然没上两个主题好看，但是提供了很多自定义选项，所以对于系统的组件的主题支持很广泛。</p>
<h2>安装</h2>
<p><code>modus-themes</code> 需要Emacs版本最低为27.1。在Emacs 28.1的版本已经自带了 <code>modus-themes</code> 主题，而27.1版本可以通过package.el的elpa安装[^1]，在Debian里面也有一个<a href="https://packages.debian.org/stable/elpa-modus-themes">elpa-modus-themes</a>包，可以用自带的包管理器安装。</p>
<p>加载主题需要以下代码，以里面自带的暗黑主题 <code>modus-vivendi</code> 为例：</p>
<pre><code>(load-theme 'modus-vivendi t)
(modus-themes-load-vivendi)
</code></pre>
<h2>设置</h2>
<p><code>modus-themes</code> 的默认主题不是很好看，不过可以通过设置主题提供的选项来达到满意的效果，这些选项需要在加载主题前设置好。</p>
<p><img src="https://xlbil.netlify.app/.netlify/images?url=_astro%2Fmodus_preview.BdVlTvg-.png&amp;w=1792&amp;h=1035&amp;dpl=6a2ba76127de46000862e731" alt="modus-vivendi主题，左侧为原版，右侧为调整后" /></p>
<p>首先根据<a href="https://protesilaos.com/emacs/modus-themes">官网</a>的推荐设置，将F5绑定为切换亮色和暗色主题的按键。</p>
<pre><code>(define-key global-map (kbd "&lt;f5&gt;") #'modus-themes-toggle)
</code></pre>
<h3><code>Mode-line</code> 设置</h3>
<p><code>modus-themes</code> 默认会给mode-line加上一个白色的细线边框，不是很好看，通过自定义变量 <code>modus-themes-mode-line</code> 可以更改。</p>
<pre><code>(setq modus-themes-mode-line '(borderless))
</code></pre>
<p>另外给列表加上 <code>accented</code> 可以让mode-line变为蓝色。</p>
<h3>标签栏设置</h3>
<p>目前用下来几乎所有的主题对Emacs的标签页支持（ <code>tab-bar-mode</code> ）的支持都一般。 <code>modus-theme</code> 默认设置标签栏是黑色，不过把选项 <code>modus-themes-tab-bar-accend</code> 设置为t可以让标签栏变为蓝色。</p>
<h3>链接</h3>
<p><code>modus-themes</code> 默认的链接样式还行，像其他主题一样。不过我用了 <code>ef-themes</code> 之后感觉将链接的下划线设置为灰色比较美观一些，设置 <code>modus-themes-links</code> 为 <code>neutral-underline</code> 就行了</p>
<h3>标题样式</h3>
<p><code>modus-themes</code> 标题的样式默认非常丑，不过也很好解决。 <code>modus-themes-headings</code> 的 <code>rainbow</code> 选项可以将所有标题变成彩虹色，给所有标题加上 <code>rainbow</code> 属性就行了。</p>
<pre><code>(setq modus-themes-headings '((t . (rainbow))))
</code></pre>
<p>还有一个实用的选项 <code>modus-themes-scale-headings</code> ，可以让各级标题的文字大小不同。</p>
<h3><code>fido-mode</code> 等组件</h3>
<p><code>modus-themes</code> 默认对补全组件的匹配高亮显示支持不错，但是只将文字变为蓝色和粉色这两种颜色，不是很美观。将 <code>modus-themes-completions</code> 设置为 <code>opinionated</code> 可以换成一个更好看的蓝色和紫色的背景。</p>
<h3>其他</h3>
<p>在很多主题中都会出现有的地方字体不正常的问题，这是因为有的地方用的Face<a href="%E8%A7%81%5BFaces%5D(info:emacs#Faces)">^2</a>用的是 <code>fixed-pitch</code> 和 <code>variable-pitch</code> ，而不是 <code>default</code> 。所以要给这些单独设置字体。</p>
<p>以"等距更纱黑体"为例：</p>
<pre><code>(custom-set-faces
 ;; custom-set-faces was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(default ((t (:family "等距更纱黑体 SC" :foundry "outline" :slant normal :weight normal :height 110 :width normal))))
 '(fixed-pitch ((t (:family "等距更纱黑体 SC"))))
 '(variable-pitch ((t (:family "等距更纱黑体 SC")))))
</code></pre>
<p><code>doom-themes</code> 没有这个问题。 <code>modus-themes</code> 对于这个问题也提供了一个选项。将 <code>modus-themes-no-mixed-fonts</code> 设置为t，就不会出现这个问题。</p>
<p>其他配置：</p>
<pre><code>(setq modus-themes-org-blocks 'gray-background)
(setq modus-themes-no-mixed-fonts t)
(setq modus-themes-intense-hl-line t)
</code></pre>
<p>[^1]: <code>M-x package-install RET modus-themes RET</code></p>
]]></content>
        <author>
            <name>XLBilly</name>
            <uri>https://xlbil.netlify.app/</uri>
        </author>
        <published>2022-12-23T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[Trime体验]]></title>
        <id>https://xlbil.netlify.app/posts/h2023-rime-on-android/</id>
        <link href="https://xlbil.netlify.app/posts/h2023-rime-on-android/"/>
        <updated>2022-12-02T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[安卓上的Rime]]></summary>
        <content type="html"><![CDATA[<p>第一次体验Rime是在Linux里使用ibus-rime，不过由于体验时问题比较多所以没有继续使用。最近在Fdroid上看到了Rime的安卓版：Trime（又叫同文输入法），准备再次尝试一下这个开源的输入法。</p>
<p>这一整篇文章都是用Trime输入法打出来的。</p>
<h2>配置</h2>
<p>Rime只是一个输入法引擎，所以默认是不带输入法的，需要从Github上下载一个配置来用。我一开始用的是<a href="https://github.com/Bambooin/rimerc">rimerc</a>，里面默认包含了"明月拼音输入法。</p>
<p>可惜的是这个输入法默认只支持繁体中文。为了解决这个问题，Rime的开发者又弄了一个 <code>opencc</code> 项目，这个开源工具支持转换文字和词语，目前Trime已经内置了这个工具。只需在配置文件中启用即可。</p>
<p>Rime的配置文件用的是yaml语法。rimerc的Trime版本的明月拼音有一个简繁开关，但没有用，解决的方法是在 <code>luna_pinyin.schema.yaml</code> 中加入以下内容：</p>
<pre><code>simplifier:
    opencc_config: tw2sp.json
      option_name: simplification
</code></pre>
<p>不过这样还是不能启动时使用简体字，所以我换到了<a href="https://github.com/fkxxyz/rime-cloverpinyin">四叶草简体拼音输入法</a>，默认支持简体。</p>
<p>注意这个输入法opencc里的文件不能复制进去，否则会导致部署时发生崩溃。</p>
<h2>一些独特的功能</h2>
<p>在用Trime之前我用的是谷歌拼音输入法。Trime相比于谷歌拼音在一些小地方做得不错。</p>
<h3>快捷操作</h3>
<p>Trime为剪切，复制，粘贴三个操作设置了快捷键。</p>
<ul>
<li><code>x</code> ：剪切</li>
<li><code>c</code> ：复制</li>
<li><code>v</code> ：粘贴</li>
</ul>
<p>之前我进行粘贴等操作都是长按屏幕再点击粘贴，而Trime让操作像Vim[^1]一样方便。</p>
<h3>个性化</h3>
<h4>主题</h4>
<p>Trime内置主题和配色功能，默认带了主题 <code>trime</code>和<code>tongwenfeng</code> 。</p>
<p>主题和大多数输入法的皮肤功能一样，将主题的yaml文件和资源文件拖进rime文件夹就可以用。Trime内置的主题也内置了很多配色方案，这里推荐的配色方案是 <em>暗堂 Dark Temple</em> 。</p>
<p>在GitHub上也有一些不错的主题，如<a href="https://github.com/cxcn/danjing">单静</a>。</p>
<h4>音效</h4>
<p>Trime内置音效自定义，不过不常用。</p>
<h3>草稿箱和剪贴板</h3>
<p>这也是Trime中的一个很重要的功能。Trime会将一些输入历史自动记录到草稿箱，把剪贴的历史记录到剪贴版，可以在键盘中的 <em>更多</em> 里看到<a href="%E8%BF%99%E4%B8%AA%E9%A1%B5%E9%9D%A2%E7%9A%84%E8%AE%BE%E8%AE%A1%E5%BE%88%E5%A5%87%E6%80%AA%EF%BC%8C%E8%BF%94%E5%9B%9E%E8%A6%81%E5%9C%A8%E9%A1%B6%E7%AB%AF%E6%89%8D%E8%83%BD%E7%9C%8B%E5%88%B0%E3%80%82">^2</a>。</p>
<p>如果不想让所有记录都记录到草稿箱，可以设置通过应用包名或者正则表达式过滤。</p>
<p>在Trime的设置界面中可以管理草稿和剪贴板历史记录。</p>
<h2>问题</h2>
<p>由于Trime 3.2.9的问题比较大，所以这里推荐用3.2.8版本。</p>
<h3><s>占用较大</s></h3>
<p>Trime的性能相对于默认的华为输入法和谷歌拼音输入法比较一般，有时会出现手机开机启动后Trime还没有启动，导致调不出输入法。另外在v1.3.9版本崩溃的频率非常高，经常会出现无法启动的问题。</p>
<h3>悬浮窗位置</h3>
<p>在Android5上的拼音悬浮窗显示在左下角，而不是键盘上方。</p>
<p>目前唯一的解决方法是关闭悬浮窗， <strong>嵌入式编辑模式</strong> 选择编码。</p>
<h3>一些字符不能显示</h3>
<p>更换字体（比如Noto Sans CJK）。</p>
<p>在rime目录新建 <code>fonts</code> 目录，将字体文件放入（比如NotoSansCJKsc-Regular.ttf），然后找到要更改的主题，新建一个配置文件（比如 <code>tongwenfeng.trime.yaml</code> 的配置文件是 <code>tongwenfeng.trime.custom.yaml</code> ）在里面加入：</p>
<p>更换字体为Noto Sans CJK SC：</p>
<pre><code>patch:
    "style/key_font": NotoSansCJKsc-Regular.ttf
</code></pre>
<p>具体可以看<a href="https://github.com/osfans/trime/wiki/trime.yaml%25E8%25A9%25B3%25E8%25A7%25A3">trime.yaml详解</a></p>
<h3>手写支持</h3>
<p>由于Rime框架本身就是为键盘设计的，所以从根本上就不支持手写输入，目前能弄出来的手写输入法也只能和Rime独立，所以有手写需求就没必要用Trime了。</p>
<h2>总结</h2>
<p>目前Trime最大的问题就是性能问题。在较老的手机上的启动非常慢，有时甚至需要手动打开启动器的设置界面才能用，相比较而言谷歌拼音输入法是可以随便调用，非常流畅。</p>
<p>不过抛开这些，Trime作为一个开源输入法，能实现很多大厂输入法的功能，还是很不错的。</p>
<ul>
<li><a href="https://rime.im">Rime输入法官网</a></li>
<li><a href="https://f-droid.org/zh_Hans/packages/com.osfans.trime/">Fdroid上的Trime</a></li>
</ul>
<p>[^1]: Vim中是 <code>d</code> <code>y</code> <code>p</code></p>
]]></content>
        <author>
            <name>XLBilly</name>
            <uri>https://xlbil.netlify.app/</uri>
        </author>
        <published>2022-12-02T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[Termux上的Emacs]]></title>
        <id>https://xlbil.netlify.app/posts/h2023-emacs-on-android/</id>
        <link href="https://xlbil.netlify.app/posts/h2023-emacs-on-android/"/>
        <updated>2022-09-30T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Emacs在安卓上的体验]]></summary>
        <content type="html"><![CDATA[<p>:::note
自Emacs 30起，Emacs已有官方安卓版本。本文内容由于使用的是旧版Termux以兼容Android 5，可能已过时。
:::</p>
<p>目前在移动设备上org-mode的解决方案有<a href="https://orgzly.com">Orgzly</a>，<a href="https://organice.200ok.ch/">Organice</a>，Beorg等，其中Organice的支持是最好的，但是完美的org-mode支持目前只有Emacs。因为org-mode非常复杂，单单任务计划，标记就有一大堆东西，所以我又重拾了在Android上运行Linux程序的方案： <strong>Termux</strong></p>
<h2>安装</h2>
<p>Termux在2022年重拾了对Android 5的支持，不过只能通过Github Actions里生成的文件来安装，选择 <code>apt-android-5</code> 即可。</p>
<p>安装好apk，等待Termux初始化完成后，就可以用终端了。输入以下代码：</p>
<pre><code>apt install emacs
</code></pre>
<h2>同步org文件</h2>
<p>一开始我用的是Orgzly，所以我使用了Webdav同步。在Linux上虽然有支持Webdav的工具rclone，但是同步操作太麻烦，所以我现在使用Git来代替。而且Emacs内置的 <code>vc-git</code> 默认对Git有很好的支持。</p>
<p>为了避免每次提交需要输入密码，我用了GitLab的令牌功能。在<a href="https://gitlab.com/-/profile/personal_access_tokens">GitLab的令牌页面</a>可以生成一个令牌。</p>
<p>然后将URL改成 <code>https://outh2:令牌@gitlab.com</code> 就行了。</p>
<h3>VC的使用</h3>
<p>按 <code>C-x v d</code> 就可以查看所有文件的状态，提交文件先在要提交的目录或文件上按 <code>m</code> 标记[^1]，再用 <code>C-x v v</code> 提交文件。最后按 <code>P</code> 推送文件即可。</p>
<h2>和organice同步</h2>
<p>在organice里输入GitLab的URL，然后会跳转到GitLab的授权页面，同意授权即可。</p>
<p>然后在其他设备上拉取可以在VC的页面上按 <code>+</code> ，如果在终端可以输入下面这个：</p>
<pre><code>git pull
</code></pre>
<h2>问题</h2>
<p>目前organice和Termux上的Emacs基本没大问题，不过有几个问题很影响体验：</p>
<ol>
<li><strong>语言</strong> organice和Termux的时间戳都是英文。时间戳的格式影响不大，不过Termux上的datetree功能也是英文，与电脑上的中文冲突，所以安卓上的org-capture功能废了一半。<a href="%E8%BF%99%E4%B8%AA%E6%98%AF%E5%9B%A0%E4%B8%BATermux%E4%B8%8D%E6%94%AF%E6%8C%81locale%E8%AF%AD%E8%A8%80%E5%8C%85">^2</a></li>
<li><strong>速度</strong> 即使不自动加载Org Agenda，启动速度还是很慢。因为老安卓手机的性能不好。</li>
<li><strong>版本</strong> 由于Termux对于Android 5的支持只有老的源，所以自带的Emacs版本比较低，Org-mode还是8.x版本。</li>
</ol>
<p>[^1]: 一般在 <code>\.</code> 上按m就可以提交所有文件</p>
]]></content>
        <author>
            <name>XLBilly</name>
            <uri>https://xlbil.netlify.app/</uri>
        </author>
        <published>2022-09-30T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[给Debian换主题]]></title>
        <id>https://xlbil.netlify.app/posts/tw2022-change-debian-theme/</id>
        <link href="https://xlbil.netlify.app/posts/tw2022-change-debian-theme/"/>
        <updated>2022-07-24T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Debian默认带了很多不错的主题，并且都很齐全，有Grub主题，Plymouth主题，登录界面主题等。Debian进入系统的加载界面的主题...]]></summary>
        <content type="html"><![CDATA[<p>Debian默认带了很多不错的主题，并且都很齐全，有Grub主题，Plymouth主题，登录界面主题等。</p>
<h2>设置Plymouth主题</h2>
<p>Debian进入系统的加载界面的主题是可以换的，可以用Plymouth实现。</p>
<p>首先输入<code>sudo /usr/sbin/plymouth-set-default-theme -l</code>列出可用的主题</p>
<p>接下来如果要换一个Moonlight主题，在终端输以下：</p>
<pre><code>sudo /usr/sbin/plymouth-set-default-theme moonlight
sudo update-initramfs -u
</code></pre>
<h2>设置grub和桌面主题</h2>
<p>这个可以用内置工具<code>update-alternatives</code>实现</p>
<p>在终端输入：</p>
<pre><code>sudo update-alternatives --config desktop-theme
</code></pre>
<p>在列出的路径里选择一项，比如Moonlight，输入对应的数字就行了。最后再更新一下Grub：</p>
<pre><code>sudo update-grub
</code></pre>
<p>重启就能看到效果了。</p>
<h2>参考</h2>
<ul>
<li><a href="https://wiki.debian.org/plymouth">plymouth - Debian Wiki</a></li>
</ul>
]]></content>
        <author>
            <name>XLBilly</name>
            <uri>https://xlbil.netlify.app/</uri>
        </author>
        <published>2022-07-18T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[原生Emacs配置]]></title>
        <id>https://xlbil.netlify.app/posts/tw2022-vanilla-emacs-config/</id>
        <link href="https://xlbil.netlify.app/posts/tw2022-vanilla-emacs-config/"/>
        <updated>2022-07-17T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[换到原生Emacs后，为了给org-mode配置一个比较好的环境，对Emacs进行了一番配置。Emacs默认支持用外部源装插件，用下面代码就...]]></summary>
        <content type="html"><![CDATA[<p>换到原生Emacs后，为了给org-mode配置一个比较好的环境，对Emacs进行了一番配置。</p>
<h2>配置包管理器</h2>
<p>Emacs默认支持用外部源装插件，用下面代码就可以激活：</p>
<pre><code>(require 'package) ;; 这一行似乎不用加
(setq package-archives '(("gnu"   . "http://mirrors.tuna.tsinghua.edu.cn/elpa/gnu/")
                         ("melpa" . "http://mirrors.tuna.tsinghua.edu.cn/elpa/stable-melpa/")))
(package-initialize)
</code></pre>
<p>目前对于外部插件的需求不是很大，只要三个包：</p>
<ul>
<li><s><a href="https://depp.brause.cc/gotham-theme">gotham-theme</a> Gotham主题</s></li>
<li><a href="https://github.com/doomemacs/themes">doom-themes</a> Doom Emacs自带主题（推荐）</li>
<li><a href="https://github.com/integral-dw/org-superstar-mode">org-superstar</a> 美化org文件的标题（不推荐用<a href="https://github.com/sabof/org-bullets">org-bullets</a>，因为这个插件很久没更新而且观感没org-superstar好）</li>
<li><a href="https://github.com/hniksic/emacs-htmlize">htmlize</a> 将buffer转换为HTML（Debian上可以用<code>sudo apt install elpa-htmlize</code>安装）</li>
</ul>
<p>这些插件都可以在<a href="https://stable.melpa.org">Stable Melpa</a>，所以个人推荐用更稳定的Stable Melpa代替<a href="https://melpa.org">Melpa</a></p>
<h2>功能配置</h2>
<p>Emacs默认开启菜单栏，工具栏，不简洁，所以禁用菜单栏和工具栏。</p>
<pre><code>(tool-bar-mode 0)
(menu-bar-mode 0)
</code></pre>
<p>另外，在Buffer内还会显示滚动条，所以也要禁用。</p>
<pre><code>(scroll-bar-mode 0)
</code></pre>
<p><code>menu-bar-mode</code>对初次上手Emacs非常有帮助，推荐手动&lt;kbd&gt;M-x&lt;/kbd&gt;开启</p>
<hr />
<p>鼠标悬停在某些地方会显示Tooltip，显示效果不好，所以禁用Tooltip：</p>
<pre><code>(tooltip-mode 0)
</code></pre>
<hr />
<p>在每个buffer底部会有一个mode-line，里面可以显示org-clock，org-timer等信息。Emacs默认有一些对mode-line的特殊显示模式。</p>
<p>mode-line默认会显示行数，要默认显示列数在初始化文件加入：</p>
<pre><code>(column-number-mode 1)
</code></pre>
<p>开启<code>winner-mode</code>，支持把窗口改动撤销：</p>
<pre><code>(winner-mode 1)
</code></pre>
<p>按&lt;kbd&gt;C-c LEFT&lt;/kbd&gt;就可以撤销窗口改动。</p>
<h3>显示电池</h3>
<pre><code>(display-battery-mode 1)
</code></pre>
<p>Emacs默认支持显示电池，可以在mode-line里看到百分比以及充电情况，比较有用。</p>
<p>下面这个代码可以在mode-line显示时间，不过由于大多数系统都在任务栏显示时间，所以没什么用，还会占用mode-line空间</p>
<pre><code>(display-time-mode 1)
</code></pre>
<hr />
<p>本人默认喜欢把Emacs最大化，在<a href="../tw2022-org-mode-try/">org-mode一些配置</a>中可以更改<code>dotspacemacs-maximized-at-startup</code>来自动最大化。原生Emacs可以用一个内置函数来最大化：</p>
<pre><code>(toggle-frame-maximized)
</code></pre>
<hr />
<p>开启Emacs自动补全括号：</p>
<pre><code>(electric-pair-mode 1)
</code></pre>
<h2>其他</h2>
<p>Emacs可以保存当前的窗口列表，开启<code>desktop-save-mode</code>即可，在org-mode里非常有用。</p>
<pre><code>(desktop-save-mode 1)
</code></pre>
<p>编辑文件时Emacs会产生**文件名~**这种备份文件，设置为不产生备份文件：</p>
<pre><code>(setq make-backup-files nil)
</code></pre>
<p>如果光标到了尽头会出现警示音，很烦人，设置为不发出声音：</p>
<pre><code>(setq ring-bell-function 'ignore)
</code></pre>
<p>高亮光标所在行：</p>
<pre><code>(global-hl-line-mode 1)
</code></pre>
<h2>参考</h2>
<ul>
<li><a href="https://www.yuque.com/idelem/tools/ysxn08">通俗org-mode笔记</a></li>
</ul>
]]></content>
        <author>
            <name>XLBilly</name>
            <uri>https://xlbil.netlify.app/</uri>
        </author>
        <published>2022-07-03T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[org-mode进阶]]></title>
        <id>https://xlbil.netlify.app/posts/tw2022-org-mode-ext/</id>
        <link href="https://xlbil.netlify.app/posts/tw2022-org-mode-ext/"/>
        <updated>2022-08-16T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[之前写过一个初试org-mode，里面介绍了一些基本的org-mode功能。最近研究了一下org-mode，发现里面还是有很多实用的功能。之...]]></summary>
        <content type="html"><![CDATA[<p>之前写过一个<a href="../tw2022-org-mode-try/">初试org-mode</a>，里面介绍了一些基本的org-mode功能。</p>
<p>最近研究了一下org-mode，发现里面还是有很多实用的功能。</p>
<p>之前一直用spacemacs，后来是spacemacs-base，现在换成原生Emacs了，自己配置初始化文件。</p>
<p>&lt;details&gt;&lt;summary&gt;初始化文件&lt;/summary&gt;</p>
<pre><code>;; -*- coding: utf-8  -*-
(require 'org-habit)
(require 'org-superstar)
(setq package-archives '(("gnu"   . "http://mirrors.tuna.tsinghua.edu.cn/elpa/gnu/")
                         ("melpa" . "http://mirrors.tuna.tsinghua.edu.cn/elpa/stable-melpa/")))
(package-initialize) ;; You might already have this line
(prefer-coding-system 'utf-8)
(load-theme 'gotham t)
(tool-bar-mode 0)
(menu-bar-mode 0)
(scroll-bar-mode 0)
(tooltip-mode 0)
(display-battery-mode 1)
(column-number-mode 1)
(electric-pair-mode 1)
(desktop-save-mode 1)
(setq ring-bell-function 'ignore)
(setq make-backup-files nil)
;; (add-to-list 'default-frame-alist '(fullscreen . maximized))
(toggle-frame-maximized)
(add-hook 'org-mode-hook (lambda () (org-superstar-mode 1)))
(setq inhibit-startup-message t)
(global-hl-line-mode 1)
(load-file "~/.emacs.d/agenda.el")
(org-agenda-list)
(custom-set-variables
 ;; custom-set-variables was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(package-selected-packages '(dracula-theme htmlize org-superstar gotham-theme)))
(custom-set-faces
 ;; custom-set-faces was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(default ((t (:family "等距更纱黑体 SC" :foundry "outline" :slant normal :weight normal :height 110 :width normal)))))
</code></pre>
<p>&lt;/details&gt;</p>
<blockquote>
<p>之前推荐Trilium的<a href="https://yuque.com/idelem">idelem</a>目前放弃Trilium转用org-mode了<a href="%E5%9B%9B%E5%B9%B4%E5%89%8D%E7%9A%8411%E6%9C%88%EF%BC%8C%E6%AD%A4%E4%BA%BA%E5%B0%B1%E5%B7%B2%E7%BB%8F%E6%94%BE%E5%BC%83%E4%BA%86%E6%8A%98%E8%85%BE%E5%B7%A5%E5%85%B7%E3%80%82%EF%BC%882026.5.21%EF%BC%89">^1</a></p>
</blockquote>
<h2>Emacs基本操作</h2>
<p>推荐开启<code>menu-bar-mode</code>了解对应按键。</p>
<table>
<thead>
<tr>
<th>键</th>
<th>命令</th>
</tr>
</thead>
<tbody>
<tr>
<td>&lt;kbd&gt;C-x 0&lt;/kbd&gt;</td>
<td>关闭buffer</td>
</tr>
<tr>
<td>&lt;kbd&gt;C-x k&lt;/kbd&gt;</td>
<td>杀死buffer（让buffer完全消失）</td>
</tr>
<tr>
<td>&lt;kbd&gt;C-x b&lt;/kbd&gt;</td>
<td>切换buffer</td>
</tr>
<tr>
<td>&lt;kbd&gt;C-x h&lt;/kbd&gt;</td>
<td>全选</td>
</tr>
<tr>
<td>&lt;kbd&gt;C-x u&lt;/kbd&gt;</td>
<td>撤销</td>
</tr>
<tr>
<td>&lt;kbd&gt;C-y&lt;/kbd&gt;</td>
<td>粘贴</td>
</tr>
<tr>
<td>&lt;kbd&gt;M-w&lt;/kbd&gt;</td>
<td>复制</td>
</tr>
<tr>
<td>&lt;kbd&gt;M-x&lt;/kbd&gt;</td>
<td>运行命令</td>
</tr>
</tbody>
</table>
<h2>主题</h2>
<p>~~目前推荐使用<a href="https://emacsthemes.com/themes/gotham-theme.html">Gotham</a>，富有科技感的主题。~~已经换到<a href="https://github.com/doomemacs/themes">doom-themes</a>了，现在在用<em>doom-material-dark</em>主题，基于<em>gruvbox</em>改的。</p>
<h2>org-capture</h2>
<p><a href="https://orgmode.org/manual/Capture.html">文档</a></p>
<p>一开始并没有深入使用org-capture，在深入了解之后发现这个记录功能非常强大。</p>
<pre><code>(setq org-capture-templates
      '(("t" "Task" entry (file+headline org-default-notes-file "Tasks")
         "* TODO %?\n %i\n")
        ("s" "Study" entry (file+headline org-default-notes-file "Study")
         "* TODO %? %^G\n%u %i\n")
        ("o" "Other" entry (file+headline org-default-notes-file "Others")
         "* TODO %?\n%u %i\n")
	("r" "Record")
        ("rr" "Record" entry (file+datetree "record.org")
         "* %? :record:\n%T\n")
	("rc" "Record Clock" entry (file+datetree "record.org")
	 "* %? :record:\n%T" :clock-in t :clock-keep t)
        ("e" "Event" entry (file+datetree "record.org")
         "* %? :event:\n%^T\n")
	("j" "Journal" plain (file+datetree "journal.org")
	 "%U\n%?" :unnarrowed t)
	("o" "Others")
	("ot" "Ted" entry (file+olp org-default-notes-file "Others" "Ted")
	 "* TODO %?\n%u")
	("op" "Podcast" entry (file+olp org-default-notes-file "Others" "Podcast")
	 "* TODO %?\n%u")
	("ob" "Book" entry (file+headline org-default-notes-file "Book")
	 "* TODO %?\n%u")
	))
</code></pre>
<p>org-capture自带一个<em>datetree</em>功能，可以在org文件里生成一个通过日期分类的大纲，只要把前面设为<code>file+datetree</code>即可。</p>
<p>我把<em>datetree</em>专门放在了一个record.org文件里。里面都记录了一个时间戳，可以在org-agenda里显示记录的内容。普通的记录用<code>%T</code>可以自动添加时间戳。对于事件，用<code>%^T</code>，可以弹出一个时间选择器。而用<code>%^G</code>（或<code>%^g</code>）可以弹出一个标签选择器（支持&lt;kbd&gt;TAB&lt;/kbd&gt;补全）。</p>
<p>一些特殊标识符：</p>
<table>
<thead>
<tr>
<th>表示</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>%t</code></td>
<td>现在日期</td>
</tr>
<tr>
<td><code>%u</code></td>
<td>现在日期（非活动）</td>
</tr>
<tr>
<td><code>%T</code>（或<code>%U</code>）</td>
<td>现在日期和时间</td>
</tr>
<tr>
<td><code>%?</code></td>
<td>光标停留位置</td>
</tr>
<tr>
<td><code>%x</code></td>
<td>剪贴板内容</td>
</tr>
</tbody>
</table>
<h3>分组</h3>
<p>如果给每个项目都只定一个键那么就会很混乱，所以org-capture自带了一个分组的功能，比如要按两下&lt;kbd&gt;r&lt;/kbd&gt;键记录，按&lt;kbd&gt;rc&lt;/kbd&gt;记录另一个，可以在前面添加一个<code>("r" "Record")</code>进行分组。</p>
<pre><code>	("r" "Record")
        ("rr" "Record" entry (file+datetree "record.org")
         "* %? :record:\n%T\n")
	("rc" "Record Clock" entry (file+datetree "record.org")
	 "* %? :record:\n%T" :clock-in t :clock-keep t)
</code></pre>
<h2>快捷org-agenda命令</h2>
<p>之前一直使用复杂的&lt;kbd&gt;C-c C-t&lt;/kbd&gt;这种复杂的命令，其实在org-agenda里有很多一键触发的快捷指令。</p>
<table>
<thead>
<tr>
<th>键</th>
<th>Evil键</th>
<th>命令</th>
</tr>
</thead>
<tbody>
<tr>
<td>&lt;kbd&gt;b&lt;/kbd&gt;</td>
<td>&lt;kbd&gt;[[&lt;/kbd&gt;</td>
<td>向前</td>
</tr>
<tr>
<td>&lt;kbd&gt;f&lt;/kbd&gt;</td>
<td>&lt;kbd&gt;]]&lt;/kbd&gt;</td>
<td>向后</td>
</tr>
<tr>
<td>&lt;kbd&gt;d&lt;/kbd&gt;</td>
<td>&lt;kbd&gt;gDd&lt;/kbd&gt;</td>
<td>日视图</td>
</tr>
<tr>
<td>&lt;kbd&gt;e&lt;/kbd&gt;</td>
<td>&lt;kbd&gt;ce&lt;/kbd&gt;</td>
<td>设定</td>
</tr>
<tr>
<td>&lt;kbd&gt;w&lt;/kbd&gt;</td>
<td>&lt;kbd&gt;gDw&lt;/kbd&gt;</td>
<td>周视图</td>
</tr>
<tr>
<td>&lt;kbd&gt;t&lt;/kbd&gt;</td>
<td></td>
<td>切换TODO</td>
</tr>
<tr>
<td>&lt;kbd&gt;l&lt;/kbd&gt;</td>
<td>&lt;kbd&gt;gDl&lt;/kbd&gt;</td>
<td>Log mode</td>
</tr>
<tr>
<td>&lt;kbd&gt;r&lt;/kbd&gt;</td>
<td></td>
<td>刷新</td>
</tr>
<tr>
<td>&lt;kbd&gt;R&lt;/kbd&gt;</td>
<td>&lt;kbd&gt;cr&lt;/kbd&gt;</td>
<td>Clocktable mode</td>
</tr>
<tr>
<td>&lt;kbd&gt;:&lt;/kbd&gt;</td>
<td>&lt;kbd&gt;ct&lt;/kbd&gt;</td>
<td>设置标签</td>
</tr>
<tr>
<td>&lt;kbd&gt;.&lt;/kbd&gt;</td>
<td></td>
<td>跳转至今天</td>
</tr>
<tr>
<td>&lt;kbd&gt;o&lt;/kbd&gt;</td>
<td></td>
<td>最大化（同&lt;kbd&gt;C-x 1&lt;/kbd&gt;）</td>
</tr>
<tr>
<td>&lt;kbd&gt;I&lt;/kbd&gt;</td>
<td></td>
<td>开始计时</td>
</tr>
<tr>
<td>&lt;kbd&gt;O&lt;/kbd&gt;</td>
<td></td>
<td>停止计时</td>
</tr>
<tr>
<td>&lt;kbd&gt;X&lt;/kbd&gt;</td>
<td>&lt;kbd&gt;cc&lt;/kbd&gt;</td>
<td>取消计时</td>
</tr>
<tr>
<td>&lt;kbd&gt;J&lt;/kbd&gt;</td>
<td>&lt;kbd&gt;cg&lt;/kbd&gt;</td>
<td>跳转至正在计时的任务</td>
</tr>
<tr>
<td>&lt;kbd&gt;S&lt;/kbd&gt;</td>
<td>&lt;kbd&gt;C-x C-s&lt;/kbd&gt;</td>
<td>保存所有org文件</td>
</tr>
<tr>
<td>&lt;kbd&gt;/&lt;/kbd&gt;</td>
<td>&lt;kbd&gt;st&lt;/kbd&gt;</td>
<td>筛选（按标签或<code>CATEGOTY</code>）</td>
</tr>
<tr>
<td>&lt;kbd&gt;|&lt;/kbd&gt;</td>
<td>&lt;kbd&gt;S&lt;/kbd&gt;</td>
<td>去除筛选</td>
</tr>
<tr>
<td>&lt;kbd&gt;a&lt;/kbd&gt;</td>
<td>&lt;kbd&gt;da&lt;/kbd&gt;</td>
<td>归档</td>
</tr>
<tr>
<td>&lt;kbd&gt;c&lt;/kbd&gt;</td>
<td>&lt;kbd&gt;ac&lt;/kbd&gt;</td>
<td>跳转至日历</td>
</tr>
<tr>
<td>&lt;kbd&gt;z&lt;/kbd&gt;</td>
<td>&lt;kbd&gt;a&lt;/kbd&gt;</td>
<td>添加笔记</td>
</tr>
<tr>
<td>&lt;kbd&gt;m&lt;/kbd&gt;</td>
<td>&lt;</td>
<td>标记</td>
</tr>
<tr>
<td>&lt;kbd&gt;B&lt;/kbd&gt;</td>
<td>&lt;kbd&gt;x&lt;/kbd&gt;</td>
<td>对标记的部分批量操作</td>
</tr>
</tbody>
</table>
<p>按&lt;kbd&gt;v&lt;/kbd&gt;(Evil:&lt;kbd&gt;gD&lt;/kbd&gt;)键可以切换查看模式。</p>
<table>
<thead>
<tr>
<th>键</th>
<th>命令</th>
</tr>
</thead>
<tbody>
<tr>
<td>&lt;kbd&gt;v t&lt;/kbd&gt;</td>
<td>两周视图</td>
</tr>
<tr>
<td>&lt;kbd&gt;v m&lt;/kbd&gt;</td>
<td>月视图</td>
</tr>
<tr>
<td>&lt;kbd&gt;v y&lt;/kbd&gt;</td>
<td>年视图</td>
</tr>
<tr>
<td>&lt;kbd&gt;v a&lt;/kbd&gt;</td>
<td>包括已归档</td>
</tr>
<tr>
<td>&lt;kbd&gt;v c&lt;/kbd&gt;</td>
<td>Clockcheck视图</td>
</tr>
<tr>
<td>&lt;kbd&gt;v E&lt;/kbd&gt;</td>
<td>查看条目内部文字</td>
</tr>
<tr>
<td>&lt;kbd&gt;v [&lt;/kbd&gt;</td>
<td>包括非活动时间戳</td>
</tr>
</tbody>
</table>
<h2>分屏</h2>
<p>Emacs原生支持分屏，可以让很多窗口显示在一起。</p>
<table>
<thead>
<tr>
<th>键</th>
<th>命令</th>
</tr>
</thead>
<tbody>
<tr>
<td>&lt;kbd&gt;C-x 0&lt;/kbd&gt;</td>
<td>关闭窗口</td>
</tr>
<tr>
<td>&lt;kbd&gt;C-x 1&lt;/kbd&gt;</td>
<td>最大化（关闭其他窗口）</td>
</tr>
<tr>
<td>&lt;kbd&gt;C-x 2&lt;/kbd&gt;</td>
<td>在下面分屏</td>
</tr>
<tr>
<td>&lt;kbd&gt;C-x 3&lt;/kbd&gt;</td>
<td>在左侧分屏</td>
</tr>
</tbody>
</table>
<h2>org-attach</h2>
<p>org-attach可以给org文件里的标题添加附件，默认按&lt;kbd&gt;C-c C-a&lt;/kbd&gt;就可以激活。</p>
<p>激活之后按&lt;kbd&gt;a&lt;/kbd&gt;输入一个路径，这个标题就会添加上一个<code>ID</code>属性，文件会移动到org目录的data文件夹里，打开按&lt;kbd&gt;C-c C-a o&lt;/kbd&gt;就行了。</p>
<p>&lt;kbd&gt;C-c C-a s&lt;/kbd&gt;命令可以给标题设置一个路径</p>
<h2>标签</h2>
<p>Org-mode可以给标签设置快捷键，这样不用在设置标签时按&lt;kbd&gt;TAB&lt;/kbd&gt;补全，只要在设置<code>org-tag-alist</code>里把标签改成<code>("tag" . ?t)</code>，这样在输入时就可以直接按&lt;kbd&gt;t&lt;/kbd&gt;来设置标签了。</p>
<p>注意如果使用<code>(:startgroup)</code>和<code>(:endgroup)</code>中的标签是只能在其中选择一个，标签选择界面显示为花括号。如果要临时选择多个标签，按&lt;kbd&gt;!&lt;/kbd&gt;临时关闭分组。</p>
<pre><code>(setq org-tag-persistent-alist '((:startgroup)
                      ("eng")
                      ("math")
                      ("chs")
                      ("phy")
		      ("che")
		      ("his")
                      (:endgroup)
                      ("games")
                      ("药" . ?y)
                      ("podcast")
                      ("video")
		      ("book")
		      ("sports")
                      ("record")
                      ("event")
		      ("emacs")
		      ("tiddlywiki")
		      (:startgroup)
		      ("video")
		      (:grouptags)
		      ("ted")
		      ("bilibili")
		      ("movie")
		      (:endgroup)))
</code></pre>
<p>设置标签的命令：</p>
<table>
<thead>
<tr>
<th>键</th>
<th>命令</th>
</tr>
</thead>
<tbody>
<tr>
<td>&lt;kbd&gt;!&lt;/kbd&gt;</td>
<td>关闭分组</td>
</tr>
<tr>
<td>&lt;kbd&gt;TAB&lt;/kbd&gt;</td>
<td>用原标签输入添加标签</td>
</tr>
<tr>
<td>&lt;kbd&gt;SPC&lt;/kbd&gt;</td>
<td>清除所有标签</td>
</tr>
</tbody>
</table>
<p>最后是一个标签缩进的问题，默认标签距离标题很远。如果想要标签距离标题一个空格，可以添加：</p>
<pre><code>(setq org-tags-column 0)
</code></pre>
<h2>org内置实用模块</h2>
<h3>org-mouse</h3>
<p>让org-mode有鼠标支持，比如可以点击打开或折叠标题。</p>
<h3>org-habit</h3>
<p>可以显示重复任务为热力图。</p>
<h2>org-contrib</h2>
<p>org-contrib是一个org-mode第三方插件集合，里面有很多实用插件</p>
<h3>org-expiry</h3>
<p>org-expiry可以用<code>EXPIRY</code>属性自动添加<code>:ARCHIVE:</code>标签，首先用&lt;kbd&gt;M-x&lt;/kbd&gt;执行<em>org-expiry-insert-expiry</em>添加一个属性。到后面执行<em>org-expiry-process-entries</em>就可以了。</p>
<h3>org-sudoku</h3>
<p>可以在org-mode里自动生成数独表格！</p>
<p>&lt;details&gt;&lt;summary&gt;Sudoku&lt;/summary&gt;
&lt;table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"&gt;
&lt;colgroup&gt;
&lt;col  class="org-right" /&gt;
&lt;col  class="org-left" /&gt;
&lt;col  class="org-right" /&gt;
&lt;col  class="org-right" /&gt;
&lt;col  class="org-right" /&gt;
&lt;col  class="org-right" /&gt;
&lt;col  class="org-right" /&gt;
&lt;col  class="org-left" /&gt;
&lt;col  class="org-right" /&gt;
&lt;/colgroup&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th scope="col" class="org-right"&gt;3&lt;/th&gt;
&lt;th scope="col" class="org-left"&gt; &lt;/th&gt;
&lt;th scope="col" class="org-right"&gt; &lt;/th&gt;
&lt;th scope="col" class="org-right"&gt; &lt;/th&gt;
&lt;th scope="col" class="org-right"&gt; &lt;/th&gt;
&lt;th scope="col" class="org-right"&gt;4&lt;/th&gt;
&lt;th scope="col" class="org-right"&gt;2&lt;/th&gt;
&lt;th scope="col" class="org-left"&gt; &lt;/th&gt;
&lt;th scope="col" class="org-right"&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="col" class="org-right"&gt;2&lt;/th&gt;
&lt;th scope="col" class="org-left"&gt; &lt;/th&gt;
&lt;th scope="col" class="org-right"&gt;7&lt;/th&gt;
&lt;th scope="col" class="org-right"&gt; &lt;/th&gt;
&lt;th scope="col" class="org-right"&gt;1&lt;/th&gt;
&lt;th scope="col" class="org-right"&gt;6&lt;/th&gt;
&lt;th scope="col" class="org-right"&gt; &lt;/th&gt;
&lt;th scope="col" class="org-left"&gt; &lt;/th&gt;
&lt;th scope="col" class="org-right"&gt;9&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="col" class="org-right"&gt;9&lt;/th&gt;
&lt;th scope="col" class="org-left"&gt; &lt;/th&gt;
&lt;th scope="col" class="org-right"&gt; &lt;/th&gt;
&lt;th scope="col" class="org-right"&gt;3&lt;/th&gt;
&lt;th scope="col" class="org-right"&gt;2&lt;/th&gt;
&lt;th scope="col" class="org-right"&gt; &lt;/th&gt;
&lt;th scope="col" class="org-right"&gt; &lt;/th&gt;
&lt;th scope="col" class="org-left"&gt; &lt;/th&gt;
&lt;th scope="col" class="org-right"&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="org-right"&gt;8&lt;/td&gt;
&lt;td class="org-left"&gt; &lt;/td&gt;
&lt;td class="org-right"&gt;6&lt;/td&gt;
&lt;td class="org-right"&gt;5&lt;/td&gt;
&lt;td class="org-right"&gt; &lt;/td&gt;
&lt;td class="org-right"&gt; &lt;/td&gt;
&lt;td class="org-right"&gt; &lt;/td&gt;
&lt;td class="org-left"&gt; &lt;/td&gt;
&lt;td class="org-right"&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="org-right"&gt; &lt;/td&gt;
&lt;td class="org-left"&gt; &lt;/td&gt;
&lt;td class="org-right"&gt;4&lt;/td&gt;
&lt;td class="org-right"&gt; &lt;/td&gt;
&lt;td class="org-right"&gt; &lt;/td&gt;
&lt;td class="org-right"&gt; &lt;/td&gt;
&lt;td class="org-right"&gt; &lt;/td&gt;
&lt;td class="org-left"&gt; &lt;/td&gt;
&lt;td class="org-right"&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="org-right"&gt;1&lt;/td&gt;
&lt;td class="org-left"&gt; &lt;/td&gt;
&lt;td class="org-right"&gt; &lt;/td&gt;
&lt;td class="org-right"&gt; &lt;/td&gt;
&lt;td class="org-right"&gt;6&lt;/td&gt;
&lt;td class="org-right"&gt;9&lt;/td&gt;
&lt;td class="org-right"&gt; &lt;/td&gt;
&lt;td class="org-left"&gt; &lt;/td&gt;
&lt;td class="org-right"&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="org-right"&gt;5&lt;/td&gt;
&lt;td class="org-left"&gt;1&lt;/td&gt;
&lt;td class="org-right"&gt;8&lt;/td&gt;
&lt;td class="org-right"&gt;6&lt;/td&gt;
&lt;td class="org-right"&gt; &lt;/td&gt;
&lt;td class="org-right"&gt;2&lt;/td&gt;
&lt;td class="org-right"&gt; &lt;/td&gt;
&lt;td class="org-left"&gt;9&lt;/td&gt;
&lt;td class="org-right"&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="org-right"&gt; &lt;/td&gt;
&lt;td class="org-left"&gt;7&lt;/td&gt;
&lt;td class="org-right"&gt; &lt;/td&gt;
&lt;td class="org-right"&gt; &lt;/td&gt;
&lt;td class="org-right"&gt;3&lt;/td&gt;
&lt;td class="org-right"&gt; &lt;/td&gt;
&lt;td class="org-right"&gt;4&lt;/td&gt;
&lt;td class="org-left"&gt;1&lt;/td&gt;
&lt;td class="org-right"&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="org-right"&gt;4&lt;/td&gt;
&lt;td class="org-left"&gt;3&lt;/td&gt;
&lt;td class="org-right"&gt; &lt;/td&gt;
&lt;td class="org-right"&gt; &lt;/td&gt;
&lt;td class="org-right"&gt; &lt;/td&gt;
&lt;td class="org-right"&gt;7&lt;/td&gt;
&lt;td class="org-right"&gt;8&lt;/td&gt;
&lt;td class="org-left"&gt;6&lt;/td&gt;
&lt;td class="org-right"&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/details&gt;</p>
<h2>自定义归档</h2>
<pre><code>;; Archive
(setq org-archive-location "D:/Notes/org-mode/archive.org::* From %s")
</code></pre>
<h2>参考</h2>
<ul>
<li><a href="https://orgmode.org/manual/">Org manual</a></li>
</ul>
]]></content>
        <author>
            <name>XLBilly</name>
            <uri>https://xlbil.netlify.app/</uri>
        </author>
        <published>2022-06-25T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[一些画图软件]]></title>
        <id>https://xlbil.netlify.app/posts/tw2022-plot/</id>
        <link href="https://xlbil.netlify.app/posts/tw2022-plot/"/>
        <updated>2022-06-14T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[这是一个基于ASCII的画图软件，基于Java。下面是一个画图示例。这样可以生成下面这个正方形和一个箭头。然后是稍微复杂一点的示例：这个软件...]]></summary>
        <content type="html"><![CDATA[<h2><a href="https://github.com/stathissideris/ditaa">Ditaa</a></h2>
<p>这是一个基于ASCII的画图软件，基于Java。</p>
<p>下面是一个画图示例。</p>
<pre><code>+-----+
|     |
|  a  |
|     |
+-----+

-----&gt;
</code></pre>
<p>这样可以生成下面这个正方形和一个箭头。</p>
<p><img src="../_images/tw2022-ditaa.svg" alt="" /></p>
<p>然后是稍微复杂一点的示例：</p>
<pre><code>                            +-----------+        +------------+
                            |        {o}|        |        c1FF|
                            | Scheduler |        |  Internet  |
                            |       cBLU|        |         {s}|
                            +-----+-----+ |      +------------+
                                  |       |             |
                         ^        |       | Requests    |
              Requests   |        |       |             |
                         |        |       \------&gt;      |
                         |  +-----+-----+               |
+----------------+       |  |           |        /------+-----\
|                |       |  |  Scrapy   |        |            |
| Item Pipelines +-------+--+           +--------+ Downloader |
|            cRED|       |  |  Engine   |        |        cYEL|
+----------------+       |  |      {c}  |        \------------/
                         |  +-----+-----+  /------
               &lt;-------\ |        |        | 
                       | |        |        | Responces
              Items    | |        |        |
                       |     +----+------+ v
                       |     |           |
                             |  Spiders  |
                             |       cC02|
                             +-----------+
</code></pre>
<p><img src="../_images/tw2022-ditaa2.svg" alt="" /></p>
<p>这个软件是个老软件，在2018年诈尸更新了一下，支持了svg绘图。不过由于中文字体显示比较宽，在等宽字体下显示效果不是很好，所以这个只能当玩具来用了。</p>
<p>org-mode的org-babel原生支持ditaa画图，见<a href="https://www.orgmode.org/worg/org-contrib/babel/languages/ob-doc-ditaa.html">Ditaa Code Blocks in org</a></p>
<h2><a href="https://github.com/plantuml/plantuml">PlantUML</a></h2>
<p>比较美观，实用的画图工具，和上面的工具一样是基于Java的，可以画流程图等很多图。</p>
<p>下面是用PlantUML还原的一个图。</p>
<pre><code>@startuml
start
repeat
if (是否在列表date里？) then (是)
:将对应数据加1;
else (否)
:添加到列表里，添加数据;
endif
repeat while
stop
@enduml
</code></pre>
<p>org-babel同样支持PlantUML，见<a href="https://orgmode.org/worg/org-contrib/babel/languages/ob-doc-plantuml.html">PlantUML Code Blocks in Babel</a></p>
<p><img src="../_images/ab.drawio.svg" alt="" /></p>
<h2><a href="https://graphviz.org">Graphviz</a></h2>
<p>这个画图软件适合画节点与节点的关系。</p>
<pre><code>strict graph {
  b [shape=box];
  c [shape=triangle];

  a -- b [color=blue];
  a -- c [style=dotted];
}
</code></pre>
<p><img src="../_images/tw2022-graphviz.svg" alt="" /></p>
<h2>Metapost</h2>
<p>这个工具极度依赖$$\LaTeX$$，优点是可以画出任意图，包括几何图，支持$$\LaTeX$$公式。</p>
<pre><code>prologues := 3;
outputformat := "svg";
outputtemplate := "%j.%{outputformat}";
verbatimtex
\documentclass{article}
\begin{document}
etex
beginfig(1);
dotlabel.llft(btex $A$ etex, (0,0));
dotlabel.ulft(btex $B$ etex, (1cm,2cm));
dotlabel.urt(btex $C$ etex, (3cm,2cm));
dotlabel.lrt(btex $D$ etex, (2cm,0));
drawarrow (0,0)--(1cm,2cm);
drawarrow (0,0)--(2cm,0);
draw (1cm,2cm)--(3cm,2cm) dashed evenly;
draw (3cm,2cm)--(2cm,0) dashed evenly;
drawarrow (0,0)--(3cm,2cm) withcolor red;
drawarrow (2cm,0)--(1cm,2cm) withcolor blue;
label.ulft(btex $\vec{a}$ etex, (0.5cm,1cm));
label.top(btex $\vec{b}$ etex, (1cm,0));
endfig;
end
</code></pre>
<p>下面的SVG经过了调整，原版的图片非常小。</p>
<p><img src="../_images/tw2022-metapost.svg" alt="" /></p>
]]></content>
        <author>
            <name>XLBilly</name>
            <uri>https://xlbil.netlify.app/</uri>
        </author>
        <published>2022-06-09T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[GoldenDict词典配置]]></title>
        <id>https://xlbil.netlify.app/posts/tw2022-goldendict/</id>
        <link href="https://xlbil.netlify.app/posts/tw2022-goldendict/"/>
        <updated>2022-05-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[目前GoldenDict使用的版本是1.5.0-RC版本，支持mdx格式词典。词典推荐在这里下载，里面有很多现成词典。还有一个是在知乎上发现...]]></summary>
        <content type="html"><![CDATA[<p>目前GoldenDict使用的版本是1.5.0-RC版本，支持mdx格式词典。</p>
<p>词典推荐在<a href="https://mdx.mdict.org">这里</a>下载，里面有很多现成词典。还有一个是在知乎上发现的：<a href="https://zhuanlan.zhihu.com/p/31493883">https://zhuanlan.zhihu.com/p/31493883</a>。</p>
<h2>简明英汉词典</h2>
<p>收录的词最全，每个词都有详细的解释。mdx文件在github上下载。推荐带CSS的版本。</p>
<p><a href="https://github.com/skywind3000/ECDICT">skywind3000/ECDICT</a>
: Free English to Chinese Dictionary Database</p>
<h2>现代汉语词典</h2>
<p><a href="https://mdx.mdict.org">https://mdx.mdict.org</a>里的词典显示效果不是很好，所以推荐使用下面这个美化过的版本。</p>
<p><a href="https://github.com/bamboo512/ModernChineseDict">bamboo512/ModernChineseDict</a>
: 《现代汉语词典》第 7 版的 mdict/mdx   资源。</p>
<h2>Oxford Advanced Learner_s En-Ch Dictionary</h2>
<p><img src="https://mdx.mdict.org/%E5%85%AD%E5%A4%A7%E7%9F%A5%E5%90%8D%E8%AF%8D%E5%85%B8/%E7%89%9B%E6%B4%A5_Oxford/Oxford%20Advanced%20Learner_s%20En-Ch%20Dictionary/Oxford%20Advanced%20Learner%27s%20En-Ch%20Dictionary.png" alt="" /></p>
<p>对词的解释比较详细，支持读音，支持中文。显示效果不错。</p>
<p>词典默认是繁体中文，点一下上面的&lt;span style="background:black;color:white;"&gt;简&lt;/span&gt;按钮就能切换为简体。</p>
<p>链接：<a href="https://mdx.mdict.org/%E5%85%AD%E5%A4%A7%E7%9F%A5%E5%90%8D%E8%AF%8D%E5%85%B8/%E7%89%9B%E6%B4%A5_Oxford/Oxford%20Advanced%20Learner_s%20En-Ch%20Dictionary/">🔗</a></p>
<h2>Longman Dictionary Of Contemporary English 6th EnEn</h2>
<p><img src="https://mdx.mdict.org/%E5%85%AD%E5%A4%A7%E7%9F%A5%E5%90%8D%E8%AF%8D%E5%85%B8/%E6%9C%97%E6%96%87_Longman/STFU%20LongmanBundle-%E7%BB%AE%E5%8F%A5%E6%85%A8%E9%90%97-By%20Amazon%2020160928/Longman%20Dictionary%20Of%20Contemporary%20English%206th%20EnEn/LongmanDictionaryOfContemporaryEnglish6thEnEn.jpg" alt="" /></p>
<p>这个词典只有英文，不过解释非常全，带图片，对于时态，词的起源，示例等有详细记录，是非常全的字典。</p>
<p>这个词典很大，有1G。如果不想要太大可以用5th版本，内容相较会少一些。</p>
<p>链接：<a href="https://mdx.mdict.org/%E5%85%AD%E5%A4%A7%E7%9F%A5%E5%90%8D%E8%AF%8D%E5%85%B8/%E6%9C%97%E6%96%87_Longman/STFU%20LongmanBundle-%E7%BB%AE%E5%8F%A5%E6%85%A8%E9%90%97-By%20Amazon%2020160928/Longman%20Dictionary%20Of%20Contemporary%20English%206th%20EnEn">6th🔗</a>
<a href="https://mdx.mdict.org/%E5%85%AD%E5%A4%A7%E7%9F%A5%E5%90%8D%E8%AF%8D%E5%85%B8/%E6%9C%97%E6%96%87_Longman/STFU%20LongmanBundle-%E7%BB%AE%E5%8F%A5%E6%85%A8%E9%90%97-By%20Amazon%2020160928/Longman%20Dictionary%20Of%20American%20English%205th%20EnEn/">5th🔗</a></p>
<h2>使用</h2>
<p>把mdx，mdd，css，js等文件下载到一个文件夹里，在GoldenDict词典里添加字典就可以了。GoldenDict像浏览器插件一样支持快捷查词，在Windows上选中一个词按&lt;kbd&gt;Ctrl+C+C&lt;/kbd&gt;即可。</p>
]]></content>
        <author>
            <name>XLBilly</name>
            <uri>https://xlbil.netlify.app/</uri>
        </author>
        <published>2022-05-12T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[Spacevim配置]]></title>
        <id>https://xlbil.netlify.app/posts/tw2022-spacevim/</id>
        <link href="https://xlbil.netlify.app/posts/tw2022-spacevim/"/>
        <updated>2022-04-29T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[在Windows上试了一下Spacevim，装了coc自动补全插件后感觉还行，代码分析和Visual Studio Code一样快。首先安装...]]></summary>
        <content type="html"><![CDATA[<p>在Windows上试了一下Spacevim，装了coc自动补全插件后感觉还行，代码分析和Visual Studio Code一样快。</p>
<h2>安装</h2>
<p>首先安装vim，再安装Spacevim配置文件。官网提供了自动安装脚本，可以自动为Vim和Neovim安装。</p>
<p>Debian安装方法：</p>
<pre><code>sudo apt install vim vim-gtk3
</code></pre>
<p>安装完成后打开GVim，还会装一些插件，等待安装完成即可。</p>
<h2>配置</h2>
<p>默认Spacevim没有代码补全功能，所以要进行配置。在<code>~/.SpaceVim.d/init.toml</code>的<code>[options]</code>里加入：</p>
<pre><code>autocomplete_method = 'coc'
</code></pre>
<p>然后在下面加入：</p>
<pre><code>[[layers]]
name = "lang#python"

[[layers]]
name = "lsp"
</code></pre>
<p>重启，Spacevim会自动安装一些插件，安装完成后重启，输入<code>:CocInstall coc-pyright</code>安装自动补全。</p>
<p>完成后重启，就可以在Python里面使用自动补全和语法检查功能了。</p>
<h2>外观</h2>
<p>Spacevim默认使用SourceCodePro Nerd字体，可以在配置文件里改，在<code>[options]</code>加入<code>guifont="Sarasa Fixed SC:h14"</code>即可。目前不知道为什么在Linux下不生效。</p>
<p>配色也是可以改的，默认是<code>gruvbox</code>，这里建议改成<code>SpaceVim</code>配色。</p>
<h2>配置vimtex</h2>
<p>vim可以配置vimtex插件来编写$$\LaTeX$$文档。首先要安装<a href="https://www.sumatrapdfreader.org/free-pdf-reader">SumatraPDF</a>，然后在<code>init.toml</code>加入：</p>
<pre><code>[[custom_plugins]]
name = 'lervag/vimtex'
</code></pre>
<p>打开Vim，等待插件安装完成，打开<code>init.vim</code>，加入：</p>
<pre><code>let g:tex_flavor = 'latex'
let g:vimtex_quickfix_mode = 0
let g:vimtex_view_general_viewer = 'SumatraPDF'
let g:vimtex_view_general_options
\ = '-reuse-instance -forward-search @tex @line @pdf'
let g:vimtex_view_general_options_latexmk = '-reuse-instance'
</code></pre>
<p>重启，输入命令<code>:CocInstall coc-vimtex</code>安装补全插件。</p>
<p>打开一个tex文件，长按&lt;kbd&gt;\&lt;/kbd&gt;再按两下&lt;kbd&gt;L&lt;/kbd&gt;，vimtex就可以自动编译为PDF，每次保存PDF都会更新，要停止重复刚才操作就行了。</p>
<h2>参考</h2>
<ul>
<li><a href="https://sspai.com/post/64080">使用 Neovim 和 vimtex 高效撰写 LaTeX 学术论文</a></li>
</ul>
]]></content>
        <author>
            <name>XLBilly</name>
            <uri>https://xlbil.netlify.app/</uri>
        </author>
        <published>2022-04-27T00:00:00.000Z</published>
    </entry>
</feed>