王铭群 發表於 2023-5-24 00:00:00

详解Ubuntu16.04启动器图标异常解决方法

<p>
        在Ubuntu16.04中,将某个程序锁定到启动器后,偶尔会出现无法正常运行、不能正确输入中文等问题。这里以SQLyog为例,总结一些常见问题和解决方法。</p>
<p>
        <strong>1. 锁定后图标消失/无法启动</strong></p>
<p>
        在~/.local/share/applications/文件夹下可以找到以.desktop结尾的配置文件,以SQLyog为例,初始的配置文件如下:</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterplain" id="highlighter_860085">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                        <div class="line number7 index6 alt2">
                                                                7</div>
                                                        <div class="line number8 index7 alt1">
                                                                8</div>
                                                        <div class="line number9 index8 alt2">
                                                                9</div>
                                                        <div class="line number10 index9 alt1">
                                                                10</div>
                                                        <div class="line number11 index10 alt2">
                                                                11</div>
                                                        <div class="line number12 index11 alt1">
                                                                12</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="plain plain"></code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="plain plain">Encoding=UTF-8</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="plain plain">Version=1.0</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="plain plain">Type=Application</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="plain plain">Name=SQLyog</code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="plain plain">Icon=sqlyog_exe.png</code>
</div>
                                                                <div class="line number7 index6 alt2">
                                                                        <code class="plain plain">Path=/home/kevinyang/SQLyog10.2</code>
</div>
                                                                <div class="line number8 index7 alt1">
                                                                        <code class="plain plain">Exec=Z:\\home\\kevinyang\\SQLyog10.2\\SQLyog.exe</code>
</div>
                                                                <div class="line number9 index8 alt2">
                                                                        <code class="plain plain">StartupNotify=false</code>
</div>
                                                                <div class="line number10 index9 alt1">
                                                                        <code class="plain plain">StartupWMClass=SQLyog.exe</code>
</div>
                                                                <div class="line number11 index10 alt2">
                                                                        <code class="plain plain">OnlyShowIn=Unity;</code>
</div>
                                                                <div class="line number12 index11 alt1">
                                                                        <code class="plain plain">X-UnityGenerated=true</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        因为SQLyog是借助wine启动的,而这里的Exec这个配置记录的是wine内部的执行方式,所以一来锁定到启动器的图标会无法正常显示,二来点击图标也无法启动SQLyog。将启动配置更改为下面的命令:</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterplain" id="highlighter_291616">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="plain plain">Exec=wine "Z:\\home\\kevinyang\\SQLyog10.2\\SQLyog.exe"</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        图标就可以正常显示,点击它也能正常启动程序了。</p>
<p>
        <strong>2. 无法使用搜狗输入法</strong></p>
<p>
        可以尝试在启动时添加fcitx相关的这几个环境变量:</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterplain" id="highlighter_469218">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="plain plain">export XMODIFIERS="@im=fcitx"</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="plain plain">export GTK_IM_MODULE="fcitx"</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="plain plain">export QT_IM_MODULE="fcitx"</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        以SQLyog为例,编写一个启动脚本如下:</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_352870">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash preprocessor bold">#!/bin/sh</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                         </div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash functions">export</code> <code class="bash plain">XMODIFIERS=</code><code class="bash string">"@im=fcitx"</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="bash functions">export</code> <code class="bash plain">GTK_IM_MODULE=</code><code class="bash string">"fcitx"</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="bash plain">wine </code><code class="bash string">"Z:\\home\\kevinyang\\SQLyog10.2\\SQLyog.exe"</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        使用chmod +x命令给这个脚本赋予执行权限,然后在.desktop文件中将Exec配置指向这个脚本即可。</p>
<p>
        题外话:sublime不能输中文的问题也是一个经常被问起的问题,以前很多博客里的解决方案都比较复杂,现在有个大神专门搞了一个脚本项目解决这个问题,点击查看sublime-text-imfix项目,整合了以前解决方案中编译库文件等等一些工作,拉下来之后直接执行sublime-text-imfix脚本就可以了,有需要的朋友可以参考下,反正我已经转去用vscode了。</p>
<p>
        以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。</p>
<p>
        原文链接:https://www.jianshu.com/p/03bf3ef65ad2</p>
頁: [1]
查看完整版本: 详解Ubuntu16.04启动器图标异常解决方法