-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrss.xml
243 lines (112 loc) · 103 KB
/
rss.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>kt286</title>
<link>https://blog.kt286.com/</link>
<atom:link href="https://blog.kt286.com/rss.xml" rel="self" type="application/rss+xml"/>
<description></description>
<pubDate>Thu, 04 Jan 2024 17:04:52 GMT</pubDate>
<generator>http://hexo.io/</generator>
<item>
<title>Deepin V23 去除玲珑计划</title>
<link>https://blog.kt286.com/post/remove-linglong-for-deepin23/</link>
<guid>https://blog.kt286.com/post/remove-linglong-for-deepin23/</guid>
<pubDate>Thu, 04 Jan 2024 17:04:52 GMT</pubDate>
<description><p>使用了一段时间 V23 版本,饱受玲珑应用的毒害,很多原来功能正常的应用上了玲珑就各种小问题,但是仓库里不提供 deb 版,所以打算在玲珑应用彻底稳定之前,先去除玲珑这个毒瘤。</p>
<p>目前本人使用的软件有音乐、影院、归档管理器、看图、邮箱、截图录屏、文本编辑器、文档</description>
<content:encoded><![CDATA[<p>使用了一段时间 V23 版本,饱受玲珑应用的毒害,很多原来功能正常的应用上了玲珑就各种小问题,但是仓库里不提供 deb 版,所以打算在玲珑应用彻底稳定之前,先去除玲珑这个毒瘤。</p><p>目前本人使用的软件有音乐、影院、归档管理器、看图、邮箱、截图录屏、文本编辑器、文档查看器,本计划只针对这几个软件。</p><h3 id="音乐"><a href="#音乐" class="headerlink" title="音乐"></a>音乐</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 下载源码</span><br>git <span class="hljs-built_in">clone</span> https://github.com/linuxdeepin/deepin-music.git --depth=1<br><span class="hljs-built_in">cd</span> deepin-music<br><span class="hljs-comment"># 安装依赖</span><br>sudo apt build-dep .<br><span class="hljs-comment"># 编译</span><br>dpkg-buildpackage -b -us -uc<br><span class="hljs-comment"># 卸载玲珑版</span><br>ll-cli uninstall org.deepin.music<br><span class="hljs-comment"># 安装 deb 版</span><br>sudo apt install ../deepin-music_7.0.3_amd64.deb<br></code></pre></td></tr></table></figure><h3 id="文本编辑器"><a href="#文本编辑器" class="headerlink" title="文本编辑器"></a>文本编辑器</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 下载源码</span><br>git <span class="hljs-built_in">clone</span> https://github.com/linuxdeepin/deepin-editor.git --depth=1<br><span class="hljs-built_in">cd</span> deepin-editor<br><span class="hljs-comment"># 安装依赖</span><br>sudo apt build-dep .<br><span class="hljs-comment"># 编译</span><br>dpkg-buildpackage -b -us -uc<br><span class="hljs-comment"># 卸载玲珑版</span><br>ll-cli uninstall org.deepin.editor<br><span class="hljs-comment"># 安装 deb 版</span><br>sudo apt install ../deepin-editor_6.0.15_amd64.deb<br></code></pre></td></tr></table></figure><h3 id="影院"><a href="#影院" class="headerlink" title="影院"></a>影院</h3><p>影院需要修改 control 文件中依赖版本</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 下载源码</span><br>git <span class="hljs-built_in">clone</span> https://github.com/linuxdeepin/deepin-movie-reborn.git --depth=1<br><span class="hljs-built_in">cd</span> deepin-movie-reborn<br><span class="hljs-comment"># 修改依赖版本</span><br><span class="hljs-comment"># 修改 deepin-movie-reborn/debian/control 中 libavcodec60、libavformat60、libavutil58 为 libavcodec58、libavformat58、libavutil56</span><br><span class="hljs-comment"># 安装依赖</span><br>sudo apt build-dep .<br><span class="hljs-comment"># 编译</span><br>dpkg-buildpackage -b -us -uc<br><span class="hljs-comment"># 卸载玲珑版</span><br>ll-cli uninstall org.deepin.movie<br><span class="hljs-comment"># 安装 deb 版(xxx为版本号)</span><br>sudo apt install ../deepin-movie_xxx.deb ../libdmr_xxx.deb<br></code></pre></td></tr></table></figure><h3 id="看图"><a href="#看图" class="headerlink" title="看图"></a>看图</h3><p>看图需要额外编译一下依赖包</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 下载源码</span><br>git <span class="hljs-built_in">clone</span> https://github.com/linuxdeepin/deepin-ocr-plugin-manager.git --depth=1<br><span class="hljs-built_in">cd</span> deepin-ocr-plugin-manager<br><span class="hljs-comment"># 安装依赖</span><br>sudo apt build-dep .<br><span class="hljs-comment"># 编译</span><br>dpkg-buildpackage -b -us -uc<br><span class="hljs-comment"># 安装</span><br>sudo apt install ../libdeepin-ocr-plugin-manager-dev_1.0.0_amd64.deb ../libdeepin-ocr-plugin-manager_1.0.0_amd64.deb<br><br><br><span class="hljs-comment"># 下载源码</span><br>git <span class="hljs-built_in">clone</span> https://github.com/linuxdeepin/deepin-image-viewer.git --depth=1<br><span class="hljs-built_in">cd</span> deepin-image-viewer<br><span class="hljs-comment"># 安装依赖</span><br>sudo apt build-dep .<br><span class="hljs-comment"># 编译</span><br>dpkg-buildpackage -b -us -uc<br><span class="hljs-comment"># 卸载玲珑版</span><br>ll-cli uninstall org.deepin.image.viewer<br><span class="hljs-comment"># 安装 deb 版</span><br>sudo apt install ../deepin-image-viewer_6.0.3_amd64.deb<br><span class="hljs-comment"># 删除玲珑中目目录</span><br>sudo <span class="hljs-built_in">rm</span> -rf /persistent/linglong/entries/share/deepin-ocr-plugin-manager<br></code></pre></td></tr></table></figure><h3 id="文档查看器"><a href="#文档查看器" class="headerlink" title="文档查看器"></a>文档查看器</h3><p>文档查看器编译时测试可能报错,这里先去掉测试</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 下载源码</span><br>git <span class="hljs-built_in">clone</span> https://github.com/linuxdeepin/deepin-reader.git --depth=1<br><span class="hljs-built_in">cd</span> deepin-reader<br><span class="hljs-comment"># 安装依赖</span><br>sudo apt build-dep .<br><br><span class="hljs-comment"># 移除测试代码</span><br><span class="hljs-comment"># 打开 deepin-reader/tests/tests.pro 文件,找到以下代码,删除 main.cpp \ 后边的内容</span><br><span class="hljs-comment"># SOURCES += \</span><br><span class="hljs-comment"># main.cpp \</span><br><span class="hljs-comment"># ============下边开始删除===========</span><br><span class="hljs-comment"># ut_mainwindow.cpp \</span><br><span class="hljs-comment"># ut_common.cpp \</span><br><span class="hljs-comment"># ut_application.cpp \</span><br><span class="hljs-comment"># ............</span><br><span class="hljs-comment"># uiframe/ut_centraldocpage.cpp \</span><br><span class="hljs-comment"># uiframe/ut_docsheet.cpp \</span><br><span class="hljs-comment"># uiframe/ut_doctabbar.cpp</span><br><span class="hljs-comment"># ============删除到这里===========</span><br><br><br><span class="hljs-comment"># 编译</span><br>dpkg-buildpackage -b -us -uc<br><span class="hljs-comment"># 卸载玲珑版</span><br>ll-cli uninstall org.deepin.reader<br><span class="hljs-comment"># 安装 deb 版</span><br>sudo apt install ../deepin-reader_6.0.7_amd64.deb<br></code></pre></td></tr></table></figure><h3 id="归档管理器"><a href="#归档管理器" class="headerlink" title="归档管理器"></a>归档管理器</h3><p>归档管理器需要修改部分代码</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 下载源码</span><br>git <span class="hljs-built_in">clone</span> https://github.com/linuxdeepin/deepin-compressor.git --depth=1<br><span class="hljs-built_in">cd</span> deepin-compressor<br><span class="hljs-comment"># 安装依赖</span><br>sudo apt build-dep .<br><br><span class="hljs-comment"># 修改代码,参考下边链接</span><br><span class="hljs-comment"># https://github.com/linuxdeepin/deepin-compressor/pull/156/files</span><br><br><span class="hljs-comment"># 编译</span><br>dpkg-buildpackage -b -us -uc<br><span class="hljs-comment"># 卸载玲珑版</span><br>ll-cli uninstall org.deepin.compressor<br><span class="hljs-comment"># 安装 deb 版</span><br>sudo apt install ../deepin-compressor_6.0.0_amd64.deb<br></code></pre></td></tr></table></figure><h3 id="截图录屏"><a href="#截图录屏" class="headerlink" title="截图录屏"></a>截图录屏</h3><p>这个比较特殊,opencv 安装时有依赖问题,需要重新编译</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 下载源码</span><br>apt <span class="hljs-built_in">source</span> libopencv-dev<br><span class="hljs-built_in">cd</span> opencv_4.5.4+dfsg.1-1+dde<br><span class="hljs-comment"># 安装依赖</span><br>sudo apt build-dep .<br><span class="hljs-comment"># 编译</span><br>dpkg-buildpackage -b -us -uc<br><span class="hljs-comment"># 安装</span><br>sudo apt install ../libopencv-imgcodecs4.5_4.5.4+dfsg.1-1+dde_amd64.deb<br><br><br><span class="hljs-comment"># 下载源码</span><br>git <span class="hljs-built_in">clone</span> https://github.com/linuxdeepin/deepin-screen-recorder.git --depth=1<br><span class="hljs-built_in">cd</span> deepin-screen-recorder<br><span class="hljs-comment"># 安装依赖</span><br>sudo apt build-dep .<br><span class="hljs-comment"># 编译</span><br>dpkg-buildpackage -b -us -uc<br><span class="hljs-comment"># 有可能需要将 deepin-screen-recorder/src/Makefile 中 std=gnu-11 替换为 std=gnu-14 (共发现两处)</span><br>dpkg-buildpackage -b -us -uc -nc<br><span class="hljs-comment"># 卸载玲珑版</span><br>ll-cli uninstall org.deepin.screen-recorder<br><span class="hljs-comment"># 安装 deb 版</span><br>sudo apt install ../deepin-screen-recorder_6.0.1_amd64.deb<br></code></pre></td></tr></table></figure><h3 id="邮箱"><a href="#邮箱" class="headerlink" title="邮箱"></a>邮箱</h3><p>邮箱没有源码,需要复制文件到指定目录</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs bash">sudo <span class="hljs-built_in">cp</span> -r /persistent/linglong/layers/org.deepin.mail/5.4.28/x86_64/files/bin/deepin-mail /usr/bin/deepin-mail<br>sudo <span class="hljs-built_in">cp</span> -r /persistent/linglong/layers/org.deepin.mail/5.4.28/x86_64/files/share/applications/* /usr/share/applications/<br>sudo <span class="hljs-built_in">cp</span> -r /persistent/linglong/layers/org.deepin.mail/5.4.28/x86_64/files/share/deepin-mail/* /usr/share/deepin-mail/<br>sudo <span class="hljs-built_in">cp</span> -r /persistent/linglong/layers/org.deepin.mail/5.4.28/x86_64/entries/deepin-manual/* /usr/share/deepin-manual/ <br>sudo <span class="hljs-built_in">cp</span> -r /persistent/linglong/layers/org.deepin.mail/5.4.28/x86_64/entries/icons/* /usr/share/icons/<br><br><span class="hljs-built_in">cp</span> -r ~/.linglong/org.deepin.mail/share/deepin/deepin-mail/* ~/.local/share/deepin/deepin-mail/<br></code></pre></td></tr></table></figure><h3 id="最后卸载玲珑"><a href="#最后卸载玲珑" class="headerlink" title="最后卸载玲珑"></a>最后卸载玲珑</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs bash">sudo apt purge linglong*<br>sudo <span class="hljs-built_in">rm</span> -rf /persistent<br>sudo <span class="hljs-built_in">rm</span> -rf ~/.linglong<br></code></pre></td></tr></table></figure>]]></content:encoded>
<category domain="https://blog.kt286.com/categories/Deepin/">Deepin</category>
<category domain="https://blog.kt286.com/tags/deepin/">deepin</category>
<category domain="https://blog.kt286.com/tags/c/">c++</category>
<comments>https://blog.kt286.com/post/remove-linglong-for-deepin23/#disqus_thread</comments>
</item>
<item>
<title>深度文件管理器改造小记</title>
<link>https://blog.kt286.com/post/dde-file-manager-beautify/</link>
<guid>https://blog.kt286.com/post/dde-file-manager-beautify/</guid>
<pubDate>Thu, 19 May 2022 16:22:24 GMT</pubDate>
<description><h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>使用深度文件管理器的时候,遇到一些小问题。翻了翻代码,发现修改起来不是很复杂,就顺手改了。下面记录一下修改内容。本次修改基于最新内测版5.6</description>
<content:encoded><![CDATA[<h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>使用深度文件管理器的时候,遇到一些小问题。翻了翻代码,发现修改起来不是很复杂,就顺手改了。下面记录一下修改内容。本次修改基于最新内测版5.6.3。</p><h2 id="环境准备"><a href="#环境准备" class="headerlink" title="环境准备"></a>环境准备</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs bash">apt <span class="hljs-built_in">source</span> dde-file-manager<br><span class="hljs-built_in">cd</span> dde-file-manager-5.6.3<br>sudo apt build-dep .<br></code></pre></td></tr></table></figure><h2 id="修改内容"><a href="#修改内容" class="headerlink" title="修改内容"></a>修改内容</h2><p>环境配置好后就可以修改了,本次修改的内容如下:</p><h3 id="1-列表模式显示太密集"><a href="#1-列表模式显示太密集" class="headerlink" title="1.列表模式显示太密集"></a>1.列表模式显示太密集</h3><p>这个问题很简单,就是改一下列表项高度。</p><figure class="highlight diff"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs diff"># src/dde-file-manager-lib/interfaces/dlistitemdelegate.cpp<br><br>void DListItemDelegate::updateItemSizeHint()<br>{<br> Q_D(DListItemDelegate);<br><br> d->textLineHeight = parent()->parent()->fontMetrics().lineSpacing();<br><span class="hljs-deletion">- d->itemSizeHint = QSize(-1, qMax(int(parent()->parent()->iconSize().height() * 1.1), d->textLineHeight));</span><br><span class="hljs-addition">+ d->itemSizeHint = QSize(-1, qMax(int(parent()->parent()->iconSize().height() * 1.5), d->textLineHeight));</span><br>}<br></code></pre></td></tr></table></figure><p><img src="/img/posts/dde-file-manager-beautify/1.png" alt="修改前"><br><img src="/img/posts/dde-file-manager-beautify/2.png" alt="修改后"></p><h3 id="2-浅色主题下,计算机里我的目录中文件夹选中后文字看不清楚"><a href="#2-浅色主题下,计算机里我的目录中文件夹选中后文字看不清楚" class="headerlink" title="2.浅色主题下,计算机里我的目录中文件夹选中后文字看不清楚"></a>2.浅色主题下,计算机里我的目录中文件夹选中后文字看不清楚</h3><p>这个问题比较有意思,文字高亮颜色为白色,浅色主题中看不清楚,深色主题反而效果很好。这里有两种修改思路</p><ol><li>判断一下使用的主题,分别设置不同的文字高亮颜色</li><li>去掉文字高亮<br>为了和其他地方保持一致,这里选择方案2</li></ol><figure class="highlight diff"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><code class="hljs diff"># src/dde-file-manager-lib/views/computerviewitemdelegate.cpp<br><br>void ComputerViewItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const<br>{<br><br># 省略部分代码<br><br> painter->setFont(par->font());<br><span class="hljs-deletion">- painter->setPen(qApp->palette().color((option.state & QStyle::StateFlag::State_Selected) ? QPalette::ColorRole::HighlightedText : QPalette::ColorRole::Text));</span><br><span class="hljs-addition">+ painter->setPen(qApp->palette().color(QPalette::ColorRole::Text));</span><br> painter->drawText(option.rect.x() + (option.rect.width() - fstw) / 2, option.rect.y() + topmargin + iconsize + text_topmargin, elided_text);<br> return;<br><br># 省略部分代码<br> <br>}<br></code></pre></td></tr></table></figure><p><img src="/img/posts/dde-file-manager-beautify/3.png" alt="修改前"><br><img src="/img/posts/dde-file-manager-beautify/4.png" alt="修改后"></p><h3 id="3-开启保险箱功能"><a href="#3-开启保险箱功能" class="headerlink" title="3.开启保险箱功能"></a>3.开启保险箱功能</h3><p>保险箱功能实际上代码里有,只是判断了仅在 UOS 专业版中开放,我们只需要去掉这些判断即可。</p><figure class="highlight diff"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><code class="hljs diff"># src/dde-file-manager-lib/vault/vaulthelper.cpp<br><br>bool VaultHelper::isVaultEnabled()<br>{<br><span class="hljs-addition">+ return true;</span><br><span class="hljs-deletion">- if (!VaultController::ins()->isVaultVisiable()) // 判断域管策略,是否显示保险箱</span><br><span class="hljs-deletion">- return false;</span><br><span class="hljs-deletion">-</span><br><span class="hljs-deletion">- // 获取系统类型</span><br><span class="hljs-deletion">- DSysInfo::UosType uosType = DSysInfo::uosType();</span><br><span class="hljs-deletion">- // 获取系统版本</span><br><span class="hljs-deletion">- DSysInfo::UosEdition uosEdition = DSysInfo::uosEditionType();</span><br><span class="hljs-deletion">- if (DSysInfo::UosServer == uosType) { // 如果是服务器类型</span><br><span class="hljs-deletion">- // 如果是企业版/行业版/欧拉版</span><br><span class="hljs-deletion">- if (DSysInfo::UosEnterprise == uosEdition</span><br><span class="hljs-deletion">- || DSysInfo::UosEnterpriseC == uosEdition</span><br><span class="hljs-deletion">- || DSysInfo::UosEuler == uosEdition) {</span><br><span class="hljs-deletion">- return true;</span><br><span class="hljs-deletion">- }</span><br><span class="hljs-deletion">- } else if (DSysInfo::UosDesktop == uosType) { // 如果是桌面类型</span><br><span class="hljs-deletion">- // 如果是专业版</span><br><span class="hljs-deletion">- if (DSysInfo::UosProfessional == uosEdition) {</span><br><span class="hljs-deletion">- return true;</span><br><span class="hljs-deletion">- }</span><br><span class="hljs-deletion">- }</span><br><span class="hljs-deletion">- return false;</span><br>}<br></code></pre></td></tr></table></figure><p><img src="/img/posts/dde-file-manager-beautify/5.png" alt="修改后"></p><h2 id="编译安装"><a href="#编译安装" class="headerlink" title="编译安装"></a>编译安装</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-built_in">mkdir</span> build<br><span class="hljs-built_in">cd</span> build<br>qmake ../filemanager.pro<br>make -j4<br>sudo <span class="hljs-built_in">cp</span> src/dde-file-manager-lib/libdde-file-manager.so.1.8.2 /usr/lib/x86_64-linux-gnu/<br></code></pre></td></tr></table></figure><h2 id="后记"><a href="#后记" class="headerlink" title="后记"></a>后记</h2><p>文件管理器还有另一个问题:文件夹中文件数量过多时,需要大量时间才可以全部加载完成。能力有限,就等待官方修改吧。</p>]]></content:encoded>
<category domain="https://blog.kt286.com/categories/Deepin/">Deepin</category>
<category domain="https://blog.kt286.com/tags/deepin/">deepin</category>
<comments>https://blog.kt286.com/post/dde-file-manager-beautify/#disqus_thread</comments>
</item>
<item>
<title>在 deepin 中使用小鹤音形</title>
<link>https://blog.kt286.com/post/use-flypy-in-deepin/</link>
<guid>https://blog.kt286.com/post/use-flypy-in-deepin/</guid>
<pubDate>Mon, 14 Mar 2022 20:56:25 GMT</pubDate>
<description><h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>之前一直在使用全拼输入法,但是全拼有一个众所周知的问题:重码率高。虽然这类输入法大都有词频动态调整、云输入等功能。但是每个用户习惯不同,换台</description>
<content:encoded><">[1]</span></a></sup>。下边放一下双拼键位图和鹤形字根图备忘。</p><h3 id="双拼"><a href="#双拼" class="headerlink" title="双拼"></a>双拼</h3><p><img src="/img/posts/use-flypy-in-deepin/hejp.png" alt="小鹤双拼键位图"></p><h3 id="双形"><a href="#双形" class="headerlink" title="双形"></a>双形</h3><p><img src="/img/posts/use-flypy-in-deepin/xhup.png" alt="小鹤鹤形字根图"></p><h2 id="使用"><a href="#使用" class="headerlink" title="使用"></a>使用</h2><h3 id="方案1:rime-挂接(官方)"><a href="#方案1:rime-挂接(官方)" class="headerlink" title="方案1:rime 挂接(官方)"></a>方案1:rime 挂接(官方)</h3><p>小鹤官方只提供了 Windows 和 Android 版安装包,其他平台需要使用 rime 挂接。但是 deepin 仓库中未提供 fcitx5-rime 包,需要我们自己编译安装。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 安装编译工具</span><br>sudo apt-get install -y build-essential cmake-extras extra-cmake-modules<br><br><span class="hljs-comment"># 编译支持 lua 的 librime 库</span><br>sudo apt-get install -y libcapnp-dev libgoogle-glog-dev libyaml-cpp-dev libleveldb-dev libmarisa-dev capnproto<br>git <span class="hljs-built_in">clone</span> https://github.com/rime/librime.git ~/workspace/librime<br><span class="hljs-built_in">cd</span> ~/workspace/librime<br>./install-plugins.sh hchunhui/librime-lua<br>make merged-plugins<br>sudo make install<br><br><span class="hljs-comment"># 编译 fcitx5-rime</span><br>sudo apt-get install -y appstream libecm-dev libfcitx5core-dev fcitx5-modules-dev<br><span class="hljs-built_in">mkdir</span> -p ~/workspace/fcitx5-rime<br>git <span class="hljs-built_in">clone</span> https://github.com/fcitx/fcitx5-rime.git ~/workspace/fcitx5-rime<br><span class="hljs-built_in">mkdir</span> -p ~/workspace/fcitx5-rime/build<br><span class="hljs-built_in">cd</span> ~/workspace/fcitx5-rime/build<br>cmake .. -DCMAKE_INSTALL_PREFIX=/usr<br>make -j4<br>sudo make install<br></code></pre></td></tr></table></figure><p>编译安装完成后,下载小鹤网盘<sup id="fnref:2" class="footnote-ref"><a href="#fn:2" rel="footnote"><span class="hint--top hint--rounded" aria-label="[小鹤网盘](http://flypy.ys168.com)">[2]</span></a></sup>中挂接文件 <code>3.1.挂接——音形码/小鹤音形“鼠须管”for macOS.zip</code>。解压后,将 rime 目录中所有文件复制到 <code>~/.local/share/fcitx5/rime</code> 目录中。重启 fcitx5 ,添加 <code>中州韻</code> 输入法后即可使用。<br><img src="/img/posts/use-flypy-in-deepin/fcitx5-rime.png" alt="fcitx5-rime"></p><h3 id="方案2:fcitx5-flypy"><a href="#方案2:fcitx5-flypy" class="headerlink" title="方案2:fcitx5-flypy"></a>方案2:fcitx5-flypy</h3><p>fcitx5-flypy 是基于公开码表打造的适配 fcitx5 的输入法,无需安装 rime 即可使用。编译安装方法如下</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 安装编译工具</span><br>sudo apt-get install -y build-essential cmake-extras extra-cmake-modules<br><br><span class="hljs-comment"># 编译 fcitx5-lua (orq 输入当前日期功能使用 lua 实现,如不需要,可以跳过此步)</span><br>sudo apt-get install -y gettext appstream libfcitx5core-dev fcitx5-modules-dev liblua5.3-dev <br><span class="hljs-built_in">mkdir</span> -p ~/workspace/fcitx5-lua<br>git <span class="hljs-built_in">clone</span> https://github.com/fcitx/fcitx5-lua.git ~/workspace/fcitx5-lua<br><span class="hljs-built_in">mkdir</span> -p ~/workspace/fcitx5-lua/build<br><span class="hljs-built_in">cd</span> ~/workspace/fcitx5-lua/build<br>cmake .. -DCMAKE_INSTALL_PREFIX=/usr<br>make -j4<br>sudo make install<br><br><span class="hljs-comment"># 编译 fcitx5-flypy</span><br>sudo apt-get install -y gettext appstream libecm-dev libfcitx5core-dev libboost-dev libimecore-dev libimetable-dev<br><span class="hljs-built_in">mkdir</span> -p ~/workspace/fcitx5-flypy<br>git <span class="hljs-built_in">clone</span> https://github.com/kt286/fcitx5-flypy.git ~/workspace/fcitx5-flypy<br><span class="hljs-built_in">mkdir</span> -p ~/workspace/fcitx5-flypy/build<br><span class="hljs-built_in">cd</span> ~/workspace/fcitx5-flypy/build<br>cmake .. -DCMAKE_INSTALL_PREFIX=/usr<br>make -j4<br>sudo make install<br></code></pre></td></tr></table></figure><p>目前发现几个小问题:</p><ol><li>使用万能键 ` 时,会提示词语,而不仅仅是单字</li><li>码表中记录条数没有官方码表多(Windows 版有 67656 条数据,但本项目只有 57655 条数据)</li><li><del>使用 orq、ouj 无法输入当前日期和时间</del></li></ol><p><img src="/img/posts/use-flypy-in-deepin/mabn.png" alt="Windows 版码表"></p><p>如在使用过程中遇到其他问题,欢迎到 <a href="https://github.com/kt286/fcitx5-flypy/issues">github</a> 中提 issue。</p><h2 id="后记"><a href="#后记" class="headerlink" title="后记"></a>后记</h2><ol><li>deepin 20 仓库里虽然提供了 fcitx5,但是只提供了一些基础包。fcitx5-rime、fcitx5-lua 等都没有提供。希望后续可以补全。</li><li>使用了一段时间小鹤音形后,输入人名拼音时会不自觉输入双拼。而且由于之前过于依赖拼音输入法,导致很多字只会读,不会写。打字速度反而明显降低。需要一段时间去适应。算是有得有失吧。</li></ol><h2 id="参考"><a href="#参考" class="headerlink" title="参考"></a>参考</h2><section class="footnotes"><div class="footnote-list"><ol><li><span id="fn:1" class="footnote-text"><span><a href="https://help.flypy.com/#/xh">小鹤入门</a><a href="#fnref:1" rev="footnote" class="footnote-backref"> ↩</a></span></span></li><li><span id="fn:2" class="footnote-text"><span><a href="http://flypy.ys168.com/">小鹤网盘</a><a href="#fnref:2" rev="footnote" class="footnote-backref"> ↩</a></span></span></li></ol></div></section>]]></content:encoded>
<category domain="https://blog.kt286.com/categories/Deepin/">Deepin</category>
<category domain="https://blog.kt286.com/tags/deepin/">deepin</category>
<category domain="https://blog.kt286.com/tags/flypy/">flypy</category>
<category domain="https://blog.kt286.com/tags/rime/">rime</category>
<comments>https://blog.kt286.com/post/use-flypy-in-deepin/#disqus_thread</comments>
</item>
<item>
<title>大幅降低 Wine 微信内存占用</title>
<link>https://blog.kt286.com/post/reduce-wine-wechat-memory-usage/</link>
<guid>https://blog.kt286.com/post/reduce-wine-wechat-memory-usage/</guid>
<pubDate>Fri, 25 Feb 2022 11:20:18 GMT</pubDate>
<description><h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>每次打开 Wine 版微信,内存使用率就会涨上一大截。平时没怎么在意,今天随意看了一眼就惊呆了:微信刚打开就已经占用了 1G 左右,而且随着</description>
<content:encoded><![CDATA[<h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>每次打开 Wine 版微信,内存使用率就会涨上一大截。平时没怎么在意,今天随意看了一眼就惊呆了:微信刚打开就已经占用了 1G 左右,而且随着使用时间推移甚至能涨到 2G 。不能忍,今天一定要好好治一治这个内存大户。<br><img src="/img/posts/reduce-wine-wechat-memory-usage/1.png" alt="Wine 微信内存占用"></p><h2 id="分析"><a href="#分析" class="headerlink" title="分析"></a>分析</h2><p>系统监视器里搜索 <code>wechat</code> ,发现了华点:微信本体只占用了不到 100M 内存,剩下的都被 <code>WeChatWebBrower.exe</code> 和 <code>WeChatApp.exe</code> 这两个进程占走了。纳尼??我用的可是微信,不是微信浏览器。精简掉这两个进程应该就可以减少内存占用了。</p><h2 id="精简"><a href="#精简" class="headerlink" title="精简"></a>精简</h2><p>右键属性里找到这两个进程所在的目录,发现两个都在一起,刚好可以一网打尽。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-built_in">rm</span> -rf ~/.deepinwine/Deepin-WeChat/drive_c/users/$(<span class="hljs-built_in">whoami</span>)/Application\ Data/Tencent/WeChat/XPlugin/Plugins/XWeb/<br><span class="hljs-built_in">touch</span> ~/.deepinwine/Deepin-WeChat/drive_c/users/$(<span class="hljs-built_in">whoami</span>)/Application\ Data/Tencent/WeChat/XPlugin/Plugins/XWeb<br><span class="hljs-built_in">chmod</span> 000 ~/.deepinwine/Deepin-WeChat/drive_c/users/$(<span class="hljs-built_in">whoami</span>)/Application\ Data/Tencent/WeChat/XPlugin/Plugins/XWeb <br></code></pre></td></tr></table></figure><p>精简掉这两个进程后再次打开微信,只占用 200M 左右内存,舒服了。<br><img src="/img/posts/reduce-wine-wechat-memory-usage/2.png" alt="精简后的微信内存占用"></p><h2 id="后记"><a href="#后记" class="headerlink" title="后记"></a>后记</h2><p>当然了,精简之后肯定会有一些功能异常,目前发现的只有收到的链接、公众号文章无法打开,小程序无法使用。反正我也不在电脑上使用小程序,可以忍。至于公众号文章查看,可以通过一些设置来继续使用,只是有些繁琐。<br><img src="/img/posts/reduce-wine-wechat-memory-usage/3.png" alt="关闭`使用系统默认浏览器打开网页`"><br><img src="/img/posts/reduce-wine-wechat-memory-usage/4.png" alt="用默认浏览器打开"></p>]]></content:encoded>
<category domain="https://blog.kt286.com/categories/Wine/">Wine</category>
<category domain="https://blog.kt286.com/tags/Wine/">Wine</category>
<category domain="https://blog.kt286.com/tags/%E5%BE%AE%E4%BF%A1/">微信</category>
<comments>https://blog.kt286.com/post/reduce-wine-wechat-memory-usage/#disqus_thread</comments>
</item>
<item>
<title>使用 FFmpeg 下载伪装成图片的 m3u8 视频</title>
<link>https://blog.kt286.com/post/ffmpeg-download-video-faked-as-image/</link>
<guid>https://blog.kt286.com/post/ffmpeg-download-video-faked-as-image/</guid>
<pubDate>Sun, 13 Feb 2022 16:07:43 GMT</pubDate>
<description><h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>最近看到一个不错的视频,想要下载到本地收藏起来,免得哪天网址失效无法播放。但是使用 FFmpeg 下载的时候报了个错</p>
<figure</description>
<content:encoded><![CDATA[<h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>最近看到一个不错的视频,想要下载到本地收藏起来,免得哪天网址失效无法播放。但是使用 FFmpeg 下载的时候报了个错</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs plaintext">[hls,applehttp @ 0x55efcdf226c0] Could not find codec parameters for stream 0 (Video: png, none(pc)): unspecified size<br>Consider increasing the value for the 'analyzeduration' and 'probesize' options<br>Input #0, hls,applehttp, from 'https://pv.xbottle.top/demo/rick.m3u8':<br> Duration: 00:03:32.44, bitrate: 0 kb/s<br> Program 0 <br> Metadata:<br> variant_bitrate : 0<br> Stream #0:0: Video: png, none(pc), 25 tbr, 25 tbn, 25 tbc<br> Metadata:<br> variant_bitrate : 0<br>Output #0, mp4, to 'rick.mp4':<br>Output file #0 does not contain any stream<br></code></pre></td></tr></table></figure><p><img src="/img/posts/ffmpeg-download-video-faked-as-image/1.png" alt="FFmpeg 下载报错"></p><p>PNG ??网页里明明可以播放的。下载了其中一个片段,打开后发现真的是一张图片。使用 hexdump 查看了一下,文件最开始确实是 PNG 图片,但是紧接着就看到了 <code>FFmpeg Service01</code> 字样,确认了这个文件是由一张图片和一段视频拼接而成。</p><p><img src="/img/posts/ffmpeg-download-video-faked-as-image/2.png" alt="hexdump 输出"></p><p>Google 了一下,找到两篇文章 <sup id="fnref:1" class="footnote-ref"><a href="#fn:1" rel="footnote"><span class="hint--top hint--rounded" aria-label="[搞事情:用“图床”传视频,自带免费 CDN 加速(已复活!)](https://akarin.dev/2020/02/07/alicdn-video-hosting/)">[1]</span></a></sup> <sup id="fnref:2" class="footnote-ref"><a href="#fn:2" rel="footnote"><span class="hint--top hint--rounded" aria-label="[用图床看视频的体验·改](https://bottle.moe/post-269.html)">[2]</span></a></sup>。讲的是通过在视频前加一个小的 PNG 图片来伪装成图片骗过图床的校验,hls.js 在播放时会自动忽略前边的图片。但 FFmpeg 没有相关处理,把伪装后的视频识别成了图片导致下载失败。</p><h2 id="解决思路"><a href="#解决思路" class="headerlink" title="解决思路"></a>解决思路</h2><p>知道了问题的原因,解决思路就有了。但是实际操作过程中遇到了很多问题,这里记录一下。</p><h3 id="第一次尝试(失败)"><a href="#第一次尝试(失败)" class="headerlink" title="第一次尝试(失败)"></a>第一次尝试(失败)</h3><p>首先想到的就是给 m3u8 中每个片段指定格式,但是翻阅 FFmpeg 文档后没有找到相关参数,只找到了 hls 格式中一个参数 <code>seg_format_options</code> <sup id="fnref:3" class="footnote-ref"><a href="#fn:3" rel="footnote"><span class="hint--top hint--rounded" aria-label="[FFmpeg Formats Documentation](https://ffmpeg.org/ffmpeg-formats.html#hls-1)">[3]</span></a></sup>, 根据描述猜测是解析视频片段时的一些参数,尝试搭配 <code>skip_initial_bytes</code> 参数使用。结果还是报错</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">ffmpeg -f hls -seg_format_options skip_initial_bytes=8 -i https://pv.xbottle.top/demo/rick.m3u8 -c copy output.mp4<br></code></pre></td></tr></table></figure><p>由于这个参数是最近才添加的,翻遍全网都没找到更详细的描述,故放弃此方法。</p><h3 id="第二次尝试(成功)"><a href="#第二次尝试(成功)" class="headerlink" title="第二次尝试(成功)"></a>第二次尝试(成功)</h3><p>既然指定格式行不通了,那我们还可以屏蔽 FFmeg 对图片格式的检测。但是 FFmpeg 文档里也没有找到相关参数(笑哭😂)。这里我们可以通过自己编译来屏蔽图片格式支持。下面是编译过程:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs bash">git <span class="hljs-built_in">clone</span> --depth=1 https://github.com/FFmpeg/FFmpeg.git<br><span class="hljs-built_in">cd</span> FFmpeg<br>./configure --disable-doc --disable-asm --disable-x86asm --enable-openssl --enable-protocols --enable-protocol=https --disable-demuxer=image*<br>make -j4<br></code></pre></td></tr></table></figure><p>使用自己编译的 FFmpeg 尝试下载,果然成功了。</p><h3 id="第三次尝试(成功)"><a href="#第三次尝试(成功)" class="headerlink" title="第三次尝试(成功)"></a>第三次尝试(成功)</h3><p>在查找资料的过程中,发现 m3u8 语法中有一个标签 <code>EXT-X-BYTERANGE</code> <sup id="fnref:4" class="footnote-ref"><a href="#fn:4" rel="footnote"><span class="hint--top hint--rounded" aria-label="[RFC 8216 - HTTP Live Streaming](https://datatracker.ietf.org/doc/html/rfc8216#section-4.3.2.2)">[4]</span></a></sup>,可以读取指定范围的视频片段,语法为:<code>#EXT-X-BYTERANGE:<读取内容长度>[@<起始位置偏移量>]</code>。由于只要要破坏 PNG 格式头就可以使 FFmpeg 识别到正确的视频,偏移 8 字节足够了。这里我们把参数设置为 <code>100000000@8</code>。下载脚本如下:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 手动下载 m3u8 文件</span><br>wget https://pv.xbottle.top/demo/rick.m3u8<br><span class="hljs-comment"># 给每一个视频片段都加上截取范围</span><br>sed -i <span class="hljs-string">'/#EXTINF:*/a\#EXT-X-BYTERANGE:100000000@8'</span> ./rick.m3u8<br><span class="hljs-comment"># 开始下载</span><br>ffmpeg -protocol_whitelist file,http,https,tls,tcp -i ./rick.m3u8 -c cooy output.mp4<br></code></pre></td></tr></table></figure><p>虽然可以下载,但是由于不知道每个视频片段具体大小,使用了写死的 <code>100000000</code>,FFmpeg 下载时会卡好久,不是一个完美的方案,故不推荐。</p><h2 id="后记"><a href="#后记" class="headerlink" title="后记"></a>后记</h2><p>虽然尝试成功了两次,但是做法都不是太优雅,还是希望 FFmpeg 官方可以增强对 hls 自定义设置的支持,如可以强制指定片段格式等。可以通过一条命令成功下载</p><h2 id="参考"><a href="#参考" class="headerlink" title="参考"></a>参考</h2><section class="footnotes"><div class="footnote-list"><ol><li><span id="fn:1" class="footnote-text"><span><a href="https://akarin.dev/2020/02/07/alicdn-video-hosting/">搞事情:用“图床”传视频,自带免费 CDN 加速(已复活!)</a><a href="#fnref:1" rev="footnote" class="footnote-backref"> ↩</a></span></span></li><li><span id="fn:2" class="footnote-text"><span><a href="https://bottle.moe/post-269.html">用图床看视频的体验·改</a><a href="#fnref:2" rev="footnote" class="footnote-backref"> ↩</a></span></span></li><li><span id="fn:3" class="footnote-text"><span><a href="https://ffmpeg.org/ffmpeg-formats.html#hls-1">FFmpeg Formats Documentation</a><a href="#fnref:3" rev="footnote" class="footnote-backref"> ↩</a></span></span></li><li><span id="fn:4" class="footnote-text"><span><a href="https://datatracker.ietf.org/doc/html/rfc8216#section-4.3.2.2">RFC 8216 - HTTP Live Streaming</a><a href="#fnref:4" rev="footnote" class="footnote-backref"> ↩</a></span></span></li></ol></div></section>]]></content:encoded>
<category domain="https://blog.kt286.com/categories/FFmpeg/">FFmpeg</category>
<category domain="https://blog.kt286.com/tags/ffmpeg/">ffmpeg</category>
<category domain="https://blog.kt286.com/tags/m3u8/">m3u8</category>
<comments>https://blog.kt286.com/post/ffmpeg-download-video-faked-as-image/#disqus_thread</comments>
</item>
<item>
<title>为深度音乐添加内嵌歌词支持</title>
<link>https://blog.kt286.com/post/deepin-music-embeded-lyrics/</link>
<guid>https://blog.kt286.com/post/deepin-music-embeded-lyrics/</guid>
<pubDate>Sun, 30 Jan 2022 09:09:09 GMT</pubDate>
<description><h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>一个月黑风高的晚上,结束了一天的紧张工作(摸鱼)后打算在睡前听一会网抑云音乐。刚要打开播放器的时候突然想到之前看到的深度音乐的截图,决定试用</description>
<content:encoded><">[1]</span></a></sup>的,而洛雪音乐助手写入的是 lrc 格式的歌词,所以我们只需要读取这个属性中内容,直接提供给深度音乐显示就可以了。</p><h2 id="开发"><a href="#开发" class="headerlink" title="开发"></a>开发</h2><p>歌词的提取我们可以参考深度音乐对歌曲封面图的处理方法:添加歌曲后开始读取歌词,读取到歌词后,写入缓存文件夹里的 lyrics 文件夹。播放时先使用原来的逻辑获取歌曲同目录下同名歌词文件,如果没找到就去缓存文件夹里 lyrics 文件夹中查找歌词文件,如果还没找到再显示“没有找到歌词”。</p><p>核心代码如下,代码参考了 Stack Overflow 的一个回答<sup id="fnref:2" class="footnote-ref"><a href="#fn:2" rel="footnote"><span class="hint--top hint--rounded" aria-label="[macos - How to get the lyrics of a song from the song file - Stack Overflow](https://stackoverflow.com/questions/11051055/how-to-get-the-lyrics-of-a-song-from-the-song-file)">[2]</span></a></sup> 和 TagLib 文档<sup id="fnref:3" class="footnote-ref"><a href="#fn:3" rel="footnote"><span class="hint--top hint--rounded" aria-label="[TagLib API Documentation](https://taglib.org/api/namespaceTagLib_1_1ID3v2.html)">[3]</span></a></sup></p><figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br></pre></td><td class="code"><pre><code class="hljs cpp"><span class="hljs-comment">// src/libdmusic/metadetector.cpp</span><br><br><span class="hljs-meta">#<span class="hljs-keyword">include</span> <span class="hljs-string"><taglib/mpegfile.h></span></span><br><span class="hljs-meta">#<span class="hljs-keyword">include</span> <span class="hljs-string"><taglib/id3v2tag.h></span></span><br><span class="hljs-meta">#<span class="hljs-keyword">include</span> <span class="hljs-string"><taglib/id3v2frame.h></span></span><br><span class="hljs-meta">#<span class="hljs-keyword">include</span> <span class="hljs-string"><taglib/unsynchronizedlyricsframe.h></span></span><br><br><span class="hljs-comment">// 获取歌词数据,写到缓存目录</span><br><span class="hljs-function"><span class="hljs-type">void</span> <span class="hljs-title">MetaDetector::getLyricData</span><span class="hljs-params">(<span class="hljs-type">const</span> QString &path, <span class="hljs-type">const</span> QString &tmpPath, <span class="hljs-type">const</span> QString &hash)</span></span><br><span class="hljs-function"></span>{<br> QString lyricsDirPath = tmpPath + <span class="hljs-string">"/lyrics"</span>;<br> QString lyricName = hash + <span class="hljs-string">".lrc"</span>;<br> <span class="hljs-function">QDir <span class="hljs-title">lyricsDir</span><span class="hljs-params">(lyricsDirPath)</span></span>;<br> <span class="hljs-keyword">if</span> (!lyricsDir.<span class="hljs-built_in">exists</span>()) {<br> <span class="hljs-type">bool</span> isExists = lyricsDir.<span class="hljs-built_in">cdUp</span>();<br> isExists &= lyricsDir.<span class="hljs-built_in">mkdir</span>(<span class="hljs-string">"lyrics"</span>);<br> isExists &= lyricsDir.<span class="hljs-built_in">cd</span>(<span class="hljs-string">"lyrics"</span>);<br> }<br><br> <span class="hljs-keyword">if</span> (!path.<span class="hljs-built_in">isEmpty</span>() && !tmpPath.<span class="hljs-built_in">isEmpty</span>() && !hash.<span class="hljs-built_in">isEmpty</span>()) {<br> <span class="hljs-keyword">if</span> (!lyricsDir.<span class="hljs-built_in">exists</span>(lyricName)) {<br> <span class="hljs-function">QFile <span class="hljs-title">lyric</span><span class="hljs-params">(lyricsDirPath + <span class="hljs-string">"/"</span> + lyricName)</span></span>;<br><br> TagLib::<span class="hljs-function">MPEG::File <span class="hljs-title">f1</span><span class="hljs-params">(path.toStdString().c_str())</span></span>;<br> TagLib::ID3v2::FrameList frames = f1.<span class="hljs-built_in">ID3v2Tag</span>()-><span class="hljs-built_in">frameListMap</span>()[<span class="hljs-string">"USLT"</span>];<br> <span class="hljs-keyword">if</span> (!frames.<span class="hljs-built_in">isEmpty</span>()) {<br> TagLib::ID3v2::UnsynchronizedLyricsFrame *frame = <span class="hljs-built_in">dynamic_cast</span><TagLib::ID3v2::UnsynchronizedLyricsFrame *>(frames.<span class="hljs-built_in">front</span>());<br> <span class="hljs-keyword">if</span> (frame) {<br> <span class="hljs-keyword">if</span> (lyric.<span class="hljs-built_in">open</span>(QIODevice::WriteOnly)) {<br> QString str = <span class="hljs-built_in">TStringToQString</span>(frame-><span class="hljs-built_in">text</span>());<br> lyric.<span class="hljs-built_in">write</span>(str.<span class="hljs-built_in">toUtf8</span>());<br> }<br> lyric.<span class="hljs-built_in">close</span>();<br> }<br> } <br> }<br> }<br><br> <span class="hljs-keyword">return</span>;<br>}<br><br></code></pre></td></tr></table></figure><figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br></pre></td><td class="code"><pre><code class="hljs cpp"><span class="hljs-comment">// src/music-player/widget/lrc/musiclyricwidget.cpp</span><br><br><span class="hljs-function"><span class="hljs-type">void</span> <span class="hljs-title">MusicLyricWidget::onMusicPlayed</span><span class="hljs-params">(MediaMeta meta)</span></span><br><span class="hljs-function"></span>{<br> <span class="hljs-built_in">Q_UNUSED</span>(meta)<br> <span class="hljs-function">QFileInfo <span class="hljs-title">fileInfo</span><span class="hljs-params">(Player::getInstance()->getActiveMeta().localPath)</span></span>;<br> QString lrcPath = fileInfo.<span class="hljs-built_in">dir</span>().<span class="hljs-built_in">path</span>() + QDir::<span class="hljs-built_in">separator</span>() + fileInfo.<span class="hljs-built_in">completeBaseName</span>() + <span class="hljs-string">".lrc"</span>;<br> <span class="hljs-function">QFile <span class="hljs-title">file</span><span class="hljs-params">(lrcPath)</span></span>;<br> <span class="hljs-keyword">if</span> (!file.<span class="hljs-built_in">exists</span>()) {<br> <span class="hljs-comment">// 读取根目录中歌词文件失败后读取媒体文件内嵌的歌词</span><br> MediaMeta meta = Player::<span class="hljs-built_in">getInstance</span>()-><span class="hljs-built_in">getActiveMeta</span>();<br> <span class="hljs-function">QFileInfo <span class="hljs-title">lyricInfo</span><span class="hljs-params">(Global::cacheDir() + <span class="hljs-string">"/lyrics/"</span> + meta.hash + <span class="hljs-string">".lrc"</span>)</span></span>;<br> <span class="hljs-keyword">if</span> (!lyricInfo.<span class="hljs-built_in">exists</span>()) {<br> m_nolyric-><span class="hljs-built_in">show</span>();<br> m_lyricview-><span class="hljs-built_in">hide</span>();<br> } <span class="hljs-keyword">else</span> {<br> m_nolyric-><span class="hljs-built_in">hide</span>();<br> m_lyricview-><span class="hljs-built_in">show</span>();<br> m_lyricview-><span class="hljs-built_in">getFromFile</span>(lyricInfo.<span class="hljs-built_in">filePath</span>());<br> }<br> } <span class="hljs-keyword">else</span> {<br> m_nolyric-><span class="hljs-built_in">hide</span>();<br> m_lyricview-><span class="hljs-built_in">show</span>();<br> m_lyricview-><span class="hljs-built_in">getFromFile</span>(lrcPath);<br> }<br>}<br></code></pre></td></tr></table></figure><p>完整代码见:<a href="https://github.com/linuxdeepin/deepin-music/pull/111/">https://github.com/linuxdeepin/deepin-music/pull/111/</a></p><p><img src="/img/posts/deepin-music-embeded-lyrics/3.png" alt="效果图"></p><h2 id="后记"><a href="#后记" class="headerlink" title="后记"></a>后记</h2><p>本次修改只实现了对 ID3v2 标签中非同步歌词<sup id="fnref:1" class="footnote-ref"><a href="#fn:1" rel="footnote"><span class="hint--top hint--rounded" aria-label="[Unsychronised_lyrics_text_transcription - id3v2.3.0 - ID3.org](https://id3.org/id3v2.3.0#Unsychronised_lyrics.2Ftext_transcription)">[1]</span></a></sup>的读取。至于另一种同步歌词<sup id="fnref:4" class="footnote-ref"><a href="#fn:4" rel="footnote"><span class="hint--top hint--rounded" aria-label="[Synchronised_lyrics_text - id3v2.3.0 - ID3.org](https://id3.org/id3v2.3.0#Synchronised_lyrics.2Ftext)">[4]</span></a></sup>,手头上没有测试文件,就暂时搁置,以后有时间再来实现。</p><h2 id="参考"><a href="#参考" class="headerlink" title="参考"></a>参考</h2><section class="footnotes"><div class="footnote-list"><ol><li><span id="fn:1" class="footnote-text"><span><a href="https://id3.org/id3v2.3.0#Unsychronised_lyrics.2Ftext_transcription">Unsychronised_lyrics_text_transcription - id3v2.3.0 - ID3.org</a><a href="#fnref:1" rev="footnote" class="footnote-backref"> ↩</a></span></span></li><li><span id="fn:2" class="footnote-text"><span><a href="https://stackoverflow.com/questions/11051055/how-to-get-the-lyrics-of-a-song-from-the-song-file">macos - How to get the lyrics of a song from the song file - Stack Overflow</a><a href="#fnref:2" rev="footnote" class="footnote-backref"> ↩</a></span></span></li><li><span id="fn:3" class="footnote-text"><span><a href="https://taglib.org/api/namespaceTagLib_1_1ID3v2.html">TagLib API Documentation</a><a href="#fnref:3" rev="footnote" class="footnote-backref"> ↩</a></span></span></li><li><span id="fn:4" class="footnote-text"><span><a href="https://id3.org/id3v2.3.0#Synchronised_lyrics.2Ftext">Synchronised_lyrics_text - id3v2.3.0 - ID3.org</a><a href="#fnref:4" rev="footnote" class="footnote-backref"> ↩</a></span></span></li></ol></div></section>]]></content:encoded>
<category domain="https://blog.kt286.com/categories/Deepin/">Deepin</category>
<category domain="https://blog.kt286.com/tags/deepin/">deepin</category>
<category domain="https://blog.kt286.com/tags/music/">music</category>
<category domain="https://blog.kt286.com/tags/c/">c++</category>
<comments>https://blog.kt286.com/post/deepin-music-embeded-lyrics/#disqus_thread</comments>
</item>
<item>
<title>使用 UserScript 给 438kan 添加网页全屏支持</title>
<link>https://blog.kt286.com/post/438kan-webfullscreen/</link>
<guid>https://blog.kt286.com/post/438kan-webfullscreen/</guid>
<pubDate>Fri, 28 Jan 2022 19:26:15 GMT</pubDate>
<description><h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>最近一直在 <a href="http://438kan.com/">438kan</a> 上追剧,但是 438kan 自带的播放器嵌套在一</description>
<content:encoded><![CDATA[<h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>最近一直在 <a href="http://438kan.com/">438kan</a> 上追剧,但是 438kan 自带的播放器嵌套在一个 iframe 中,不能使用网页全屏功能。而使用全屏播放视频时遇到要回复QQ、微信消息的情况则需要不断在全屏/非全屏之间切换,非常麻烦。所以决定研究研究,实现 438kan 的网页全屏功能。</p><h2 id="初次分析"><a href="#初次分析" class="headerlink" title="初次分析"></a>初次分析</h2><p>我们首先在浏览器中打开播放器地址 <a href="http://438kan.com/static/player/dplayer.html">http://438kan.com/static/player/dplayer.html</a>,右键-查看网页源代码,找到了其中的关键代码</p><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs javascript"><span class="hljs-keyword">var</span> dplayer = <span class="hljs-keyword">new</span> <span class="hljs-title class_">DPlayer</span>({<br><span class="hljs-attr">element</span>: <span class="hljs-variable language_">document</span>.<span class="hljs-title function_">getElementById</span>(<span class="hljs-string">"player"</span>),<br><span class="hljs-attr">autoplay</span>: <span class="hljs-literal">true</span>,<br><span class="hljs-attr">video</span>: {<br><span class="hljs-attr">url</span>: parent.<span class="hljs-property">MacPlayer</span>.<span class="hljs-property">PlayUrl</span>,<br><span class="hljs-attr">type</span>:<span class="hljs-string">'hls'</span>,<br>}<br>});<br></code></pre></td></tr></table></figure><p>通过 <code>parent.MacPlayer.PlayUrl</code> 这句我们可以发现,视频播放地址是在 iframe 外加载的,根本没必要使用 iframe ,可以把 iframe 整个替换掉。这里我们直接用这个 iframe 的父级div <code>MacPlayer</code> 作为播放器的容器,通过 <code>UserScript</code> 中的 <code>@require</code> 加载 <code>dplayer</code> 及其依赖 <code>hls</code>,直接加载 <code>MacPlayer.PlayUrl</code> 这个地址的视频</p><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><code class="hljs javascript"><span class="hljs-comment">// ==UserScript==</span><br><span class="hljs-comment">// @name 438kan网页全屏</span><br><span class="hljs-comment">// @description 438kan网页全屏</span><br><span class="hljs-comment">// @version 1.0</span><br><span class="hljs-comment">// @author kt286</span><br><span class="hljs-comment">// @include *://*.438kan.com/*</span><br><span class="hljs-comment">// @include *://438kan.com/*</span><br><span class="hljs-comment">// @require https://cdn.jsdelivr.net/npm/[email protected]/dist/hls.min.js</span><br><span class="hljs-comment">// @require https://cdn.jsdelivr.net/npm/[email protected]/dist/DPlayer.min.js</span><br><span class="hljs-comment">// @grant none</span><br><span class="hljs-comment">// @run-at document-end</span><br><span class="hljs-comment">// ==/UserScript==</span><br><span class="hljs-keyword">var</span> dplayer = <span class="hljs-keyword">new</span> <span class="hljs-title class_">DPlayer</span>({<br> <span class="hljs-attr">element</span>: <span class="hljs-variable language_">document</span>.<span class="hljs-title function_">querySelector</span>(<span class="hljs-string">".MacPlayer"</span>),<br> <span class="hljs-attr">autoplay</span>: <span class="hljs-literal">true</span>,<br> <span class="hljs-attr">video</span>: {<br> <span class="hljs-attr">url</span>: <span class="hljs-title class_">MacPlayer</span>.<span class="hljs-property">PlayUrl</span><br> }<br>});<br></code></pre></td></tr></table></figure><p>这里需要注意一个问题,iframe 中播放器地址是被 <a href="http://438kan.com/static/player/dplayer.js">http://438kan.com/static/player/dplayer.js</a> 这个 js 加载的,为了防止不必要的资源加载,我们使用 <code>uBlock Origin</code> 或 <code>Adblock Plus</code> 将其拦截。</p><h2 id="第二次分析"><a href="#第二次分析" class="headerlink" title="第二次分析"></a>第二次分析</h2><p>脚本写完后,复制到 <a href="https://violentmonkey.github.io/">Violentmonkey</a> 中,刷新网页。音乐声响起,但是视频没有出现。通过 F12 我们可以发现视频已经加载出来了,但是高度异常</p><p><img src="/img/posts/438kan-webfullscreen/1.png" alt="视频高度异常"></p><p>继续分析我们发现 <code>MacPlayer</code> 这个元素的 <code>padding-bottom</code> 居然有 <code>500</code> 多,把视频高度都给挤没了。</p><p><img src="/img/posts/438kan-webfullscreen/2.png" alt="播放器 padding-bottom"></p><p>既然知道问题出在哪里了,解决方案也就有了,那就是设置 <code>padding-bottom</code> 为 <code>0px</code>。现在我们就有两种实现方案:<code>UserCSS</code> 和 <code>UserScript</code>。这里我们继续使用 <code>UserScript</code>。<code>UserScript</code>中添加自定义样式的方法是 <code>GM_addStyle</code>。</p><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><code class="hljs javascript"><span class="hljs-comment">// ==UserScript==</span><br><span class="hljs-comment">// @name 438kan网页全屏</span><br><span class="hljs-comment">// @description 438kan网页全屏</span><br><span class="hljs-comment">// @version 1.0</span><br><span class="hljs-comment">// @author kt286</span><br><span class="hljs-comment">// @include *://*.438kan.com/*</span><br><span class="hljs-comment">// @include *://438kan.com/*</span><br><span class="hljs-comment">// @require https://cdn.jsdelivr.net/npm/[email protected]/dist/hls.min.js</span><br><span class="hljs-comment">// @require https://cdn.jsdelivr.net/npm/[email protected]/dist/DPlayer.min.js</span><br><span class="hljs-comment">// @grant GM_addStyle</span><br><span class="hljs-comment">// @run-at document-end</span><br><span class="hljs-comment">// ==/UserScript==</span><br><span class="hljs-title function_">GM_addStyle</span>(<span class="hljs-string">".MacPlayer { padding:0!important; }"</span>);<br><span class="hljs-keyword">var</span> dplayer = <span class="hljs-keyword">new</span> <span class="hljs-title class_">DPlayer</span>({<br> <span class="hljs-attr">element</span>: <span class="hljs-variable language_">document</span>.<span class="hljs-title function_">querySelector</span>(<span class="hljs-string">".MacPlayer"</span>),<br> <span class="hljs-attr">autoplay</span>: <span class="hljs-literal">true</span>,<br> <span class="hljs-attr">video</span>: {<br> <span class="hljs-attr">url</span>: <span class="hljs-title class_">MacPlayer</span>.<span class="hljs-property">PlayUrl</span><br> }<br>});<br></code></pre></td></tr></table></figure><h2 id="第三次分析"><a href="#第三次分析" class="headerlink" title="第三次分析"></a>第三次分析</h2><p>增加自定义样式后,视频出来了,网页全屏功能也正常了。但还有一点点小瑕疵,就是导航栏悬浮在播放器上方,遮挡了一部分视频。这个就简单了,只要把播放器 <code>z-index</code> 值设置的大于导航栏的值就可以了,完整代码如下:</p><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><code class="hljs javascript"><span class="hljs-comment">// ==UserScript==</span><br><span class="hljs-comment">// @name 438kan网页全屏</span><br><span class="hljs-comment">// @description 438kan网页全屏</span><br><span class="hljs-comment">// @version 1.0</span><br><span class="hljs-comment">// @author kt286</span><br><span class="hljs-comment">// @include *://*.438kan.com/*</span><br><span class="hljs-comment">// @include *://438kan.com/*</span><br><span class="hljs-comment">// @require https://cdn.jsdelivr.net/npm/[email protected]/dist/hls.min.js</span><br><span class="hljs-comment">// @require https://cdn.jsdelivr.net/npm/[email protected]/dist/DPlayer.min.js</span><br><span class="hljs-comment">// @grant GM_addStyle</span><br><span class="hljs-comment">// @run-at document-end</span><br><span class="hljs-comment">// ==/UserScript==</span><br><span class="hljs-title function_">GM_addStyle</span>(<span class="hljs-string">".MacPlayer { padding:0!important; z-index:999!important; }"</span>);<br><span class="hljs-keyword">var</span> dplayer = <span class="hljs-keyword">new</span> <span class="hljs-title class_">DPlayer</span>({<br> <span class="hljs-attr">element</span>: <span class="hljs-variable language_">document</span>.<span class="hljs-title function_">querySelector</span>(<span class="hljs-string">".MacPlayer"</span>),<br> <span class="hljs-attr">autoplay</span>: <span class="hljs-literal">true</span>,<br> <span class="hljs-attr">video</span>: {<br> <span class="hljs-attr">url</span>: <span class="hljs-title class_">MacPlayer</span>.<span class="hljs-property">PlayUrl</span><br> }<br>});<br></code></pre></td></tr></table></figure><p>刷新视频,网页全屏一切正常。这下舒服了。</p>]]></content:encoded>
<category domain="https://blog.kt286.com/categories/UserScript/">UserScript</category>
<category domain="https://blog.kt286.com/tags/userscript/">userscript</category>
<category domain="https://blog.kt286.com/tags/dplayer/">dplayer</category>
<comments>https://blog.kt286.com/post/438kan-webfullscreen/#disqus_thread</comments>
</item>
<item>
<title>我的 deepin 初始化脚本</title>
<link>https://blog.kt286.com/post/deepin-init/</link>
<guid>https://blog.kt286.com/post/deepin-init/</guid>
<pubDate>Fri, 28 Jan 2022 11:21:45 GMT</pubDate>
<description><h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>本人一直喜欢折腾系统,经常会玩过头把系统搞崩溃。每次重装后都需要进行大量配置,费时费力。所以写了个脚本一键配置,解放双手。</p>
<h2 </description>
<content:encoded><![CDATA[<h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>本人一直喜欢折腾系统,经常会玩过头把系统搞崩溃。每次重装后都需要进行大量配置,费时费力。所以写了个脚本一键配置,解放双手。</p><h2 id="目标"><a href="#目标" class="headerlink" title="目标"></a>目标</h2><table><thead><tr><th>目标</th><th>进度</th></tr></thead><tbody><tr><td>卸载安装常用软件</td><td>100%</td></tr><tr><td>系统配置(控制中心设置)</td><td>70%</td></tr><tr><td>系统应用配置(文件管理器、编辑器等)</td><td>0%</td></tr><tr><td>用户应用配置(Chrome、VSCode等)</td><td>0%</td></tr></tbody></table><h2 id="兼容性"><a href="#兼容性" class="headerlink" title="兼容性"></a>兼容性</h2><p>仅适配最新版本 Deepin,当前版本 <code>20.6</code></p><h2 id="食用方法"><a href="#食用方法" class="headerlink" title="食用方法"></a>食用方法</h2><blockquote><p>搭配 <a href="https://bbs.deepin.org/post/228568">《我的deepin变形记》</a> 食用效果更佳</p></blockquote><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs bash">wget https://raw.githubusercontent.com/kt286/deepin-init/master/deepin-init.sh<br><span class="hljs-built_in">chmod</span> +x deepin-init.sh<br>sh deepin-init.sh<br></code></pre></td></tr></table></figure><p>连接不上 Github 的同学也可以复制下文中脚本,另存为 <code>deepin-init.sh</code> 文件使用</p><h2 id="脚本原文"><a href="#脚本原文" class="headerlink" title="脚本原文"></a>脚本原文</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br><span class="line">156</span><br><span class="line">157</span><br><span class="line">158</span><br><span class="line">159</span><br><span class="line">160</span><br><span class="line">161</span><br><span class="line">162</span><br><span class="line">163</span><br><span class="line">164</span><br><span class="line">165</span><br><span class="line">166</span><br><span class="line">167</span><br><span class="line">168</span><br><span class="line">169</span><br><span class="line">170</span><br><span class="line">171</span><br><span class="line">172</span><br><span class="line">173</span><br><span class="line">174</span><br><span class="line">175</span><br><span class="line">176</span><br><span class="line">177</span><br><span class="line">178</span><br><span class="line">179</span><br><span class="line">180</span><br><span class="line">181</span><br><span class="line">182</span><br><span class="line">183</span><br><span class="line">184</span><br><span class="line">185</span><br><span class="line">186</span><br><span class="line">187</span><br><span class="line">188</span><br><span class="line">189</span><br><span class="line">190</span><br><span class="line">191</span><br><span class="line">192</span><br><span class="line">193</span><br><span class="line">194</span><br><span class="line">195</span><br><span class="line">196</span><br><span class="line">197</span><br><span class="line">198</span><br><span class="line">199</span><br><span class="line">200</span><br><span class="line">201</span><br><span class="line">202</span><br><span class="line">203</span><br><span class="line">204</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-meta">#!/bin/bash</span><br><br><span class="hljs-comment">#先进到用户下载目录</span><br><span class="hljs-built_in">cd</span> ~/Downloads<br><br><span class="hljs-comment"># 关闭控制中心自动更新</span><br>busctl call com.deepin.lastore /com/deepin/lastore com.deepin.lastore.Updater SetAutoCheckUpdates b 0<br>busctl call com.deepin.lastore /com/deepin/lastore com.deepin.lastore.Updater SetAutoDownloadUpdates b 0<br>busctl call com.deepin.lastore /com/deepin/lastore com.deepin.lastore.Updater SetUpdateNotify b 0<br>busctl call com.deepin.lastore /com/deepin/lastore com.deepin.lastore.Manager SetAutoClean b 0<br><br><span class="hljs-comment"># 系统设置</span><br>gsettings <span class="hljs-built_in">set</span> com.deepin.xsettings dtk-window-radius 8 <span class="hljs-comment"># 窗口圆角-中</span><br><br>gsettings <span class="hljs-built_in">set</span> com.deepin.dde.dock display-mode <span class="hljs-string">'efficient'</span> <span class="hljs-comment"># dock-高效模式</span><br>gsettings <span class="hljs-built_in">set</span> com.deepin.dde.dock window-size-efficient 46 <span class="hljs-comment"># dock-高度增加</span><br><br>busctl --user call com.deepin.dde.Dock /com/deepin/dde/Dock com.deepin.dde.Dock setPluginVisible sb <span class="hljs-string">'显示桌面'</span> <span class="hljs-literal">false</span> <span class="hljs-comment"># dock-禁用显示桌面插件</span><br>busctl --user call com.deepin.dde.Dock /com/deepin/dde/Dock com.deepin.dde.Dock setPluginVisible sb <span class="hljs-string">'屏幕键盘'</span> <span class="hljs-literal">false</span> <span class="hljs-comment"># dock-禁用屏幕键盘插件</span><br>busctl --user call com.deepin.dde.Dock /com/deepin/dde/Dock com.deepin.dde.Dock setPluginVisible sb <span class="hljs-string">'多任务视图'</span> <span class="hljs-literal">false</span> <span class="hljs-comment"># dock-禁用多任务窗口插件</span><br>busctl --user call com.deepin.dde.Dock /com/deepin/dde/Dock com.deepin.dde.Dock setPluginVisible sb <span class="hljs-string">'通知中心'</span> <span class="hljs-literal">false</span> <span class="hljs-comment"># dock-禁用通知中心插件</span><br>busctl --user call com.deepin.dde.Dock /com/deepin/dde/Dock com.deepin.dde.Dock setPluginVisible sb <span class="hljs-string">'全局搜索'</span> <span class="hljs-literal">false</span> <span class="hljs-comment"># dock-禁用全局搜索插件</span><br>busctl --user call com.deepin.dde.Dock /com/deepin/dde/Dock com.deepin.dde.Dock setPluginVisible sb <span class="hljs-string">'截图录屏'</span> <span class="hljs-literal">false</span> <span class="hljs-comment"># dock-禁用截图录屏插件</span><br><br>gsettings <span class="hljs-built_in">set</span> com.deepin.dde.mouse disable-touchpad <span class="hljs-literal">true</span> <span class="hljs-comment">#插入鼠标时禁用触控板</span><br><br>gsettings <span class="hljs-built_in">set</span> com.deepin.dde.power battery-lid-closed-action <span class="hljs-string">'turnOffScreen'</span> <span class="hljs-comment">#使用电池-笔记本合盖时-关闭屏幕</span><br>gsettings <span class="hljs-built_in">set</span> com.deepin.dde.power battery-press-power-button <span class="hljs-string">'showSessionUI'</span> <span class="hljs-comment">#使用电池-按电源按钮时-不做任何操作</span><br>gsettings <span class="hljs-built_in">set</span> com.deepin.dde.power battery-lock-delay 0 <span class="hljs-comment">#使用电池-自动锁屏 从不</span><br>gsettings <span class="hljs-built_in">set</span> com.deepin.dde.power battery-screen-black-delay 300 <span class="hljs-comment">#使用电池-关闭显示器 5分钟</span><br>gsettings <span class="hljs-built_in">set</span> com.deepin.dde.power battery-sleep-delay 0 <span class="hljs-comment">#使用电池-进入待机模式 从不</span><br><br>gsettings <span class="hljs-built_in">set</span> com.deepin.dde.power line-power-lid-closed-action <span class="hljs-string">'turnOffScreen'</span> <span class="hljs-comment">#连接电源-笔记本合盖时-关闭屏幕</span><br>gsettings <span class="hljs-built_in">set</span> com.deepin.dde.power line-power-press-power-button <span class="hljs-string">'showSessionUI'</span> <span class="hljs-comment">#连接电源-按电源按钮时-不做任何操作</span><br>gsettings <span class="hljs-built_in">set</span> com.deepin.dde.power line-power-lock-delay 0 <span class="hljs-comment">#连接电源-自动锁屏 从不</span><br>gsettings <span class="hljs-built_in">set</span> com.deepin.dde.power line-power-screen-black-delay 900 <span class="hljs-comment">#连接电源-关闭显示器 15分钟</span><br>gsettings <span class="hljs-built_in">set</span> com.deepin.dde.power line-power-sleep-delay 0 <span class="hljs-comment">#连接电源-进入待机模式 从不</span><br><br><span class="hljs-comment">#grub 主题美化</span><br>sudo busctl call com.deepin.daemon.Grub2 /com/deepin/daemon/Grub2/Theme com.deepin.daemon.Grub2.Theme SetBackgroundSourceFile s <span class="hljs-string">'/usr/share/wallpapers/deepin/mike-yukhtenko-a2kD4b0KK4s-unsplash.jpg'</span><br>sudo sed -i <span class="hljs-string">'s/deepin-fallback/deepin/g'</span> /etc/default/grub<br>sudo /usr/lib/deepin-api/adjust-grub-theme -width 1920 -height 1080<br>sudo update-grub2 <br><br><span class="hljs-comment">#添加Chrome源到source.list.d</span><br>wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add -<br>sudo sh -c <span class="hljs-string">'echo "deb [arch=amd64] https://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google-chrome.list'</span><br><br><span class="hljs-comment">#添加VSCode源到source.list.d</span><br>wget -q -O - https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -<br>sudo sh -c <span class="hljs-string">'echo "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list'</span><br><br><span class="hljs-comment">#添加Docker源到source.list.d</span><br>wget -q -O - https://mirrors.cloud.tencent.com/docker-ce/linux/debian/gpg | sudo apt-key add -<br>sudo sh -c <span class="hljs-string">'echo "deb [arch=amd64] https://mirrors.cloud.tencent.com/docker-ce/linux/debian buster stable" > /etc/apt/sources.list.d/docker.list'</span><br><br><span class="hljs-comment">#添加Beyond Compare源到source.list.d</span><br>wget -q -O - https://www.scootersoftware.com/RPM-GPG-KEY-scootersoftware | sudo apt-key add -<br>sudo sh -c <span class="hljs-string">'echo "deb https://www.scootersoftware.com/ bcompare4 non-free" > /etc/apt/sources.list.d/scootersoftware.list'</span><br>sudo sh -c <span class="hljs-string">'echo "Package: bcompare\nPin: origin www.scootersoftware.com\nPin-Priority: 600" > /etc/apt/preferences.d/scootersoftware'</span><br><br><span class="hljs-comment">#添加nodejs源到source.list.d</span><br>wget -q -O - https://deb.nodesource.com/gpgkey/nodesource.gpg.key | sudo apt-key add -<br>sudo sh -c <span class="hljs-string">'echo "deb https://deb.nodesource.com/node_16.x buster main" > /etc/apt/sources.list.d/nodesource.list'</span><br><br><span class="hljs-comment">#添加内测源到source.list.d</span><br>sudo sh -c <span class="hljs-string">'echo "deb [trusted=yes] https://proposed-packages.deepin.com/dde-apricot unstable main contrib non-free" > /etc/apt/sources.list.d/deepin-unstable.list'</span><br><br><span class="hljs-comment">#添加better-dde源到source.list.d</span><br>wget -q -O - https://better-dde.github.io/ppa/better-dde.gpg | sudo apt-key add -<br>sudo sh -c <span class="hljs-string">'echo "deb https://better-dde.github.io/ppa/ ./" > /etc/apt/sources.list.d/better-dde.list'</span><br><br><span class="hljs-comment">#卸载系统自带Flash</span><br>sudo apt purge -y libflashplugin-pepper<br><span class="hljs-built_in">rm</span> -rf ~/.config/google-chrome/PepperFlash/<br><br><span class="hljs-comment">#卸载深度帮助手册和深度欢迎两个没用还占地方的东西(会同时卸载dde,貌似没啥问题)</span><br>sudo apt purge -y deepin-manual<br>sudo apt purge -y dde-manual-content<br>sudo apt purge -y dde-introduction<br><br><span class="hljs-comment">#卸载自己不需要的软件</span><br>sudo apt purge -y deepin-feedback<br>sudo apt purge -y deepin-app-store<br>sudo apt purge -y deepin-deepinid-client<br>sudo apt purge -y deepin-calculator<br>sudo apt purge -y deepin-draw<br>sudo apt purge -y deepin-voice-note<br>sudo apt purge -y deepin-album<br>sudo apt purge -y deepin-camera<br>sudo apt purge -y deepin-mail<br>sudo apt purge -y deepin-screensaver*<br>sudo apt purge -y deepin-clone<br>sudo apt purge -y deepin-recovery-plugin<br>sudo apt purge -y deepin-ab-recovery<br>sudo apt purge -y deepin-boot-maker<br>sudo apt purge -y gnome-theme*<br>sudo apt purge -y libreoffice*<br>sudo apt purge -y simple-scan<br>sudo apt purge -y printer-driver-deepin-cloud-print<br>sudo apt purge -y org.deepin.browser<br>sudo apt purge -y org.deepin.downloader<br>sudo apt purge -y deepin-deb-installer<br>sudo apt purge -y uos-release-note<br>sudo apt purge -y deepin-forum<br>sudo apt purge -y fcitx*<br>sudo apt purge -y nano<br><br><span class="hljs-comment">#更新20.4后,卸载这个会导致无法右键跳转到设置,酌情卸载</span><br><span class="hljs-comment">#sudo apt purge -y onboard-common</span><br><br><span class="hljs-comment">#这个是用来开关机画面的,我个人喜欢看开机输出文字信息,所以卸载</span><br>sudo apt purge -y plymouth*<br><br><span class="hljs-comment">#这几个是系统自带小游戏(五子棋和连连看)</span><br>sudo apt purge -y com.deepin*<br><br><span class="hljs-comment">#清理一下</span><br>sudo apt autoremove -y --purge<br><br><span class="hljs-comment">#安装软件</span><br>sudo apt update && sudo apt dist-upgrade -y<br>sudo apt install -y curl<br>sudo apt install -y git<br>sudo apt install -y console-setup<br>sudo apt install -y cmake-extras<br>sudo apt install -y extra-cmake-modules<br>sudo apt install -y build-essential<br>sudo apt install -y code<br>sudo apt install -y google-chrome-stable<br>sudo apt install -y com.qq.office.deepin<br>sudo apt install -y com.qq.weixin.deepin<br>sudo apt install -y com.oray.sunlogin.client<br>sudo apt install -y cn.wps.wps-office<br>sudo apt install -y docker-ce<br>sudo apt install -y fcitx5-chinese-addons<br>sudo apt install -y fcitx5-material-color<br>sudo apt install -y fcitx5-pinyin-zhwiki<br>sudo apt install -y fcitx5-flypy<br>sudo apt install -y bcompare<br>sudo apt install -y nodejs<br>sudo apt install -y remmina<br><br><span class="hljs-comment">#安装nvidia闭源驱动</span><br>sudo apt install -y nvidia-detect<br>nvidia-detect | awk <span class="hljs-string">'match($0, /nvidia-.*/, a) {print a[0]}'</span> | xargs sudo apt -y install<br><br><span class="hljs-comment">#安装任务栏显卡驱动切换插件</span><br>sudo apt install -y dde-dock-graphics-plugin<br><br><span class="hljs-comment">#隐藏启动器中 fcitx5配置、键盘布局查看工具</span><br>sudo sed -i <span class="hljs-string">'$a\NoDisplay=true'</span> /usr/share/applications/fcitx5-configtool.desktop <br>sudo sed -i <span class="hljs-string">'$a\NoDisplay=true'</span> /usr/share/applications/kbd-layout-viewer5.desktop<br><br><span class="hljs-comment">#修复命令行安装TIM、微信、向日葵、WPS,启动器中没有图标</span><br><span class="hljs-built_in">mkdir</span> -p ~/.local/share/applications/<br><br><span class="hljs-built_in">cp</span> -r /opt/apps/com.qq.office.deepin/entries/icons/* ~/.local/share/icons/<br><span class="hljs-built_in">cp</span> -r /opt/apps/com.qq.office.deepin/entries/applications/* ~/.local/share/applications/<br><br><span class="hljs-built_in">cp</span> -r /opt/apps/com.qq.weixin.deepin/entries/icons/* ~/.local/share/icons/<br><span class="hljs-built_in">cp</span> -r /opt/apps/com.qq.weixin.deepin/entries/applications/* ~/.local/share/applications/<br><br><span class="hljs-built_in">cp</span> -r /opt/apps/com.oray.sunlogin.client/entries/icons/* ~/.local/share/icons/<br><span class="hljs-built_in">cp</span> -r /opt/apps/com.oray.sunlogin.client/entries/applications/* ~/.local/share/applications/<br><br><span class="hljs-built_in">cp</span> -r /opt/apps/cn.wps.wps-office/entries/icons/* ~/.local/share/icons/<br><span class="hljs-built_in">cp</span> -r /opt/apps/cn.wps.wps-office/entries/applications/* ~/.local/share/applications/<br><br><span class="hljs-comment">#修复安装VSCode后,Win + E 打开的是VSCode</span><br>xdg-mime default dde-file-manager.desktop inode/directory<br><br><span class="hljs-comment">#删除Chrome推荐设置</span><br>sudo <span class="hljs-built_in">rm</span> /etc/opt/chrome/policies/recommended/*.json<br><br><span class="hljs-comment">#fcitx5开机自启动</span><br><span class="hljs-built_in">mkdir</span> -p ~/.config/autostart<br>sudo <span class="hljs-built_in">cp</span> /usr/share/applications/org.fcitx.Fcitx5.desktop ~/.config/autostart/org.fcitx.Fcitx5.desktop<br><br><span class="hljs-comment">#fcitx5图标美化</span><br>sudo <span class="hljs-built_in">mv</span> /usr/share/icons/bloom/actions/24/input-keyboard-symbolic.svg /usr/share/icons/bloom/actions/24/input-keyboard-symbolic.svg.bak<br>sudo <span class="hljs-built_in">ln</span> -s /usr/share/icons/bloom/status/20/keyboard-symbolic.svg /usr/share/icons/bloom/status/20/input-keyboard-symbolic.svg<br><br><span class="hljs-comment">#更新TIM到最新版本</span><br>sh -c <span class="hljs-string">'/opt/apps/com.qq.office.deepin/files/run.sh -c'</span><br><span class="hljs-built_in">export</span> WINEPREFIX=<span class="hljs-variable">$HOME</span>/.deepinwine/Deepin-TIM<br><span class="hljs-built_in">rm</span> TIM3.3.9.22051.exe<br>wget -t 3 -T 15 https://dldir1.qq.com/qqfile/qq/TIM3.3.9/TIM3.3.9.22051.exe<br>deepin-wine6-stable TIM3.3.9.22051.exe<br><br><span class="hljs-comment">#更新微信到最新版本</span><br>sh -c <span class="hljs-string">'/opt/apps/com.qq.weixin.deepin/files/run.sh -c'</span><br><span class="hljs-built_in">export</span> WINEPREFIX=<span class="hljs-variable">$HOME</span>/.deepinwine/Deepin-WeChat<br><span class="hljs-built_in">rm</span> WeChatSetup.exe<br>wget -t 3 -T 15 https://dldir1.qq.com/weixin/Windows/WeChatSetup.exe<br>deepin-wine6-stable WeChatSetup.exe<br><br><span class="hljs-comment">#大幅降低微信内存占用(牺牲小程序和公众号,慎用)</span><br><span class="hljs-built_in">rm</span> -rf ~/.deepinwine/Deepin-WeChat/drive_c/users/$(<span class="hljs-built_in">whoami</span>)/Application\ Data/Tencent/WeChat/XPlugin/Plugins/XWeb/<br><span class="hljs-built_in">touch</span> ~/.deepinwine/Deepin-WeChat/drive_c/users/$(<span class="hljs-built_in">whoami</span>)/Application\ Data/Tencent/WeChat/XPlugin/Plugins/XWeb<br><span class="hljs-built_in">chmod</span> 000 ~/.deepinwine/Deepin-WeChat/drive_c/users/$(<span class="hljs-built_in">whoami</span>)/Application\ Data/Tencent/WeChat/XPlugin/Plugins/XWeb <br><br><span class="hljs-comment">#清理一下</span><br>sudo apt autoremove -y --purge<br></code></pre></td></tr></table></figure>]]></content:encoded>
<category domain="https://blog.kt286.com/categories/Deepin/">Deepin</category>
<category domain="https://blog.kt286.com/tags/deepin/">deepin</category>
<comments>https://blog.kt286.com/post/deepin-init/#disqus_thread</comments>
</item>
</channel>
</rss>