提交 39145691 编写于 作者: G guang19

增加:linux部分内容

上级 84fa469d
......@@ -50,6 +50,66 @@
![Linux](https://user-gold-cdn.xitu.io/2018/7/3/1645eeb8e843f29d?w=426&h=240&f=png&s=32650)
### 1.3 操作系统的内核
**图源:
[简书](https://www.jianshu.com/p/85e931636f27) (如有侵权,请联系俺,俺会立刻删除)**
操作系统的内核是操作系统的核心部分。
它负责系统的内存管理,硬件设备的管理,文件系统的管理以及应用程序的管理。
我们常说的Linux,其实是指基于Linux内核开发的操作系统。
常见的Linux系统发行版有:Debian,RedHat,Ubuntu,Suse,Centeos等等。
### 操作系统的用户态与内核态
unix与linux的体系架构:分为用户态与内核态。
用户态与内核态与内核态是操作系统对执行权限进行分级后的不同的运行模式。
![用户态与内核态](../../media/pictures/linux/用户态与内核态.png)
#### 为什么要有用户态与内核态?
在cpu的所有指令中,有些指令是非常危险的,如果使用不当,将会造成系统崩溃等后果。
为了避免这种情况发生,cpu将指令划分为**特权级(内核态)指令****非特权级(用户态)指令。**
**对于那些危险的指令只允许内核及其相关模块调用,对于那些不会造成危险的指令,就允许用户应用程序调用。**
* 内核态(核心态,特权态): **内核态是操作系统内核运行的模式。**
内核态控制计算机的硬件资源,如硬件设备,文件系统等等,并为上层应用程序提供执行环境。
* 用户态: **用户态是用户应用程序运行的状态。**
应用程序必须依托于内核态运行,因此用户态的态的操作权限比内核态是要低的,
如磁盘,文件等,访问操作都是受限的。
* 系统调用: 系统调用是操作系统为应用程序提供能够访问到内核态的资源的接口。
#### 用户态切换到内核态的几种方式
* 系统调用: 系统调用是用户态主动要求切换到内核态的一种方式,
用户应用程序通过操作系统调用内核为上层应用程序开放的接口来执行程序。
* 异常: 当cpu在执行用户态的应用程序时,发生了某些不可知的异常。
于是当前用户态的应用进程切换到处理此异常的内核的程序中去。
* 硬件设备的中断: 当硬件设备完成用户请求后,会向cpu发出相应的中断信号,
这时cpu会暂停执行下一条即将要执行的指令,转而去执行与中断信号对应的应用程序,
如果先前执行的指令是用户态下程序的指令,那么这个转换过程也是用户态到内核台的转换。
#### 物理内存RAM(Random Access Memory 随机存储器)
物理内存是计算机的实际内存大小,它直接与CPU交换数据,也被称为主存。
#### 虚拟内存(Virtual Memory)
**虚拟内存是操作系统为了更高效率使用物理内存的一种概念,它是对物理内存的抽象。**
windows上的虚拟内存和Linux上的swap交换空间都是虚拟内存的一种实现技术。
#### Swap交换空间
简单理解: 当某个应用程序所需的内存空间不够了,
那么系统会判断当前物理内存是否还有足够的空闲可以分配给应用程序。
如果有,则应用程序直接进入内存运行;如果没有,系统就根据某种算法(如:LRU)挂起一个进程,
将挂起的进程交换到虚拟内存Swap中等待,并将应用程序调入内存执行。
虚拟内存是被虚拟出来的,可以使用硬盘(不仅仅是硬盘)来作为虚拟内存。
这就是为什么当我们运行一个所需内存比我们计算机内存还大的程序时,仍然可以正常运行,并感受不到内存的限制的原因。
## 二 初探Linux
### 2.1 Linux简介
......@@ -84,11 +144,81 @@
也就是说在LINUX系统中有一个重要的概念:**一切都是文件**。其实这是UNIX哲学的一个体现,而Linux是重写UNIX而来,所以这个概念也就传承了下来。在UNIX系统中,把一切资源都看作是文件,包括硬件设备。UNIX系统把每个硬件都看成是一个文件,通常称为设备文件,这样用户就可以用读写文件的方式实现对硬件的访问。
### 3.2 Inode
inode是linux/unix文件系统和硬盘存储的基础,如果理解了inode,
将会对我们学习如何将复杂的概念抽象成简单概念有重大帮助。
#### Inode是什么?有什么作用?
文件存储在硬盘上,硬盘的最小存储单位是扇区(Sector),每个扇区存储512字节(0.5kb)。
操作系统读取硬盘的数据时,不会一个扇区一个扇区的读取,这样做效率较低,而是**一次读取多个扇区,
即一次读取一个块(block)。块由多个扇区组成,是文件读取的最小单位,块的最常见的大小是4kb,
约为8个连续的扇区组成。文件数据存储在块中,**
但还需要一个空间来存储文件的元信息metadata,如文件拥有者,创建时间,权限,大小等。
这种**存储文件元信息的区域就叫inode,译为索引节点。 每个文件都有一个inode,存储文件的元信息。
使用 stat 命令可以查看文件的inode信息。每个inode都有一个号码,
Linux/Unix操作系统不使用文件名来区分文件,而是使用inode号码区分不同的文件。**
**inode也需要消耗硬盘空间,所以在格式化硬盘的时候,操作系统会将硬盘分为2个区域,
一个区域存放文件数据,另一个区域存放inode所包含的信息,
存放inode的区域被称为inode table。**
文件的inode信息:
![文件inode信息](../../media/pictures/linux/文件inode信息.png)
### 3.3 文件类型与目录结构
**Linux支持很多文件类型,其中非常重要的文件类型有:
普通文件,目录文件,链接文件,设备文件,管道文件,Socket套接字文件等。
![文件类型](https://camo.githubusercontent.com/3d2c05419cb1f93fae15869cfc541c2bb3d5674b/68747470733a2f2f757365722d676f6c642d63646e2e786974752e696f2f323031382f372f332f313634356631613764363464656631613f773d39303126683d35343726663d706e6726733d3732363932)
- 普通文件: 普通文件是指txt,html,pdf等等的这样应用层面的文件类型,
用户可以根据访问权限对普通文件进行访问,修改和删除。
- 目录文件: 目录也是一种文件,打开目录实际上是打开目录文件。
目录文件包含了它目录下的所有文件名以及指向这些文件的指针。
![目录文件](../../media/pictures/linux/目录文件.png)
- 链接文件: 链接文件分为符号链接(软链接)文件和硬链接文件
- 硬链接(Hard Link):硬链接的文件拥有相同的inode,因为操作系统是靠inode来区分文件的,
2个inode相同的文件,就代表它们是一个文件。
删除一个文件并不会对其他拥有相同inode的文件产生影响,只有当inode相同的所有文件被删除了,
这个文件才会被删除。换言之,你建立一个文件的硬链接,这个文件和硬链接它们的inode是相同的,
无论你删除的是硬链接还是源文件,都不会对彼此造成影响,除非你把硬链接和源文件都删除,
这个文件才被删除。
- 符号链接(软链接)(Symbolic Link): 符号链接类似于Windows上的快捷方式,它保存了源文件的路径。
当符号链接被删除时,并不会影响源文件。但是当源文件被删除时,符号链接就找不到源文件了。
软链接和硬链接:
![软链接和硬链接](../../media/pictures/linux/软链接和硬链接.png)
- 设备文件
设备文件分为块设备文件和字符设备文件,设备文件一般存于/dev目录下。
- 字符设备文件: **字符设备是依照先后顺序被存取数据的设备,通常不支持随机存取,
此类设备可以按字节/字符来读取数据,** 如键盘,串口等等。
- 块设备文件: **块设备是可以被随机存取数据的设备,应用程序可以访问块设备上任何一块位置。
块设备以块的方式读取数据,在windows下也称为簇,块设备不支持字符的方式寻址。**
如硬盘,软盘,光碟等等。
**字符设备与块设备最根本的区别就是它们是否可以被随机访问。**
如键盘,当我们在键盘上敲下一个单词: "word"的时候,
那么系统肯定是需要按照顺序来进行读取word的字节流(字符流)的,随机访问在此时是没有意义的。
- 管道文件: 管道文件一般用于进程间通信,使用mkfifo命令可以创建一个管道文件。
- Socket套接字文件: 套接字文件被用于网络进程之间的通信,既可以使2台不同的机器进行通信,也可以用于本机的Socket网络程序。
### 3.2 文件类型与目录结构
**Linux支持5种文件类型 :**
![文件类型](https://user-gold-cdn.xitu.io/2018/7/3/1645f1a7d64def1a?w=901&h=547&f=png&s=72692)
### Linux目录树
所有可操作的计算机资源都存在于目录树这个结构中,对计算资源的访问,可以看做是对这棵目录树的访问。
**Linux的目录结构如下:**
......
<!-- TOC -->
* [完全使用GNU/Linux学习](#完全使用gnulinux学习)
* [为什么要写这篇文章?](#为什么要写这篇文章)
* [为什么我要从Windows切换到Linux?](#为什么我要从windows切换到linux)
* [Linux作为日常使用的缺点](#linux作为日常使用的缺点)
* [硬件驱动问题](#硬件驱动问题)
* [软件问题](#软件问题)
* [你真的需要完全使用Linux吗?](#你真的需要完全使用linux吗)
* [结尾](#结尾)
* [我使用Debian/Ubuntu时遇到的问题](#我使用debianubuntu时遇到的问题)
* [IDEA编辑Markdown预渲染问题](#idea编辑markdown预渲染问题)
* [wifi适配器找不到](#wifi适配器找不到)
* [XMind安装](#xmind安装)
* [Fcitx候选框的定位问题](#fcitx候选框的定位问题)
<!-- /TOC -->
# 完全使用GNU/Linux学习
喔,看到这个标题千万不要以为我要写和王垠前辈一样的内容啊,嘿嘿。不过在这里还是献上王垠前辈的那篇文章的链接吧:[完全用Linux工作](https://www.douban.com/group/topic/12121637/)
## 为什么要写这篇文章?
首先介绍本篇文章产出的时间,现在是2020/04/06。在三,四天之前,我其实并没有写这篇文章的打算,但是这三,四天以来,我一直在忙活从Ubuntu18换到Debian10 Buster的事情,没有时间写代码,手确实有些痒了。你可能想象不到,我这个之前一直使用Ubuntu的人,只是切换到Debian就花这么长时间,你可能以为我是在劝退各位同学,其实不是的,我只是想表达:我对Linux并不熟悉,这其中一部分原因是我使用的是对用户较为友好的发行版Ubuntu,另一部分原因是我仍然没有那么大的动力去学习Linux,即使它一直作为我的日常使用。
这篇文章并不是吹嘘或贬低Windows和Linux系统,而是想记录一下我一直以来使用Linux作为日常学习的心得,以及这几天再度折腾Debian以来的感触。
## 为什么我要从Windows切换到Linux?
Windows是商业软件,这使它具备易用的性质。Linux是自由软件,这使得它拥有开源的性质。
易用软件通常带来的是对用户的友好度,以致于Windows发展至今,被许许多多的普通用户所采用。自由软件通常带来的是其社区的发展,所以你现在可以在网上看到许多如 ask ubuntu 这样的论坛。
我非常赞同《完全用Linux工作》中的一个观点: **UNIX 不是计算机专家的专利。**
我对这句话的理解就是:即使你学习或工作的方向不是计算机,但你仍然可以去学习Unix/Linux,如果你是计算机方向的同学,那么,你就更应该去学习Unix/Linux了。
但这只是我从Win切换到Linux的一部分原因,另一个很重要的原因是我受够了Windows的 “易用性”。这里的易用性并不是说我排斥Windows的人性化,而是因为人性化给我带来了很多学习上的困难。举个很简单的栗子:你在学习一项技术的时候,无论是否有面试造火箭的需要,你是否都会好奇想了解其原理和实现,即使你可能知道它很复杂。
**为什么你会好奇一个事物的源头?**
我个人认为的答案是:有趣的事情就在眼前,为什么不去了解它呢?
而Windows只是有趣,但它并不在“眼前”。
我个人的体验哈,不知道有没有同学和我一样的经历,在很多时候,你的Windows可能会出现一些莫名奇妙的问题,但你却不知道如何解决它,你只能求助搜索引擎,当你解决完问题后,你不会想要去了解为什么会发生这种问题,因为Windows太庞大了。
就比如: 我现在安装了Git,使用起来没有任何问题。但等到过一段时间后,Git莫名奇妙的不能使用了,明明你啥都没干。更甚之,有一些流氓问题或流氓软件不能被解决和被屏蔽。
问题出现了,总得要解决吧,所以此时你开始在互联网上查询相关问题的解决方法,如果你的运气好,那么有人可能遇到过和你出现相同的问题,你也因此可能会得到答案。不过一般的答案只是教你怎么解决的,如打开注册表,添加或删除某个key,你不会想要知道为什么做,因为对于初学者来说,当你看到注册表那么多的内容时,你只想着不出错就行了,哪还有心思去学习这玩意啊。如果你的运气不好,且并没有更换系统的打算,那么你可能会将就着使用,但此时,你的心里可能已经衍生了对Windows的厌烦情绪。
我对流氓软件的定义是:当你想让一个软件如你的想法停止运行或停止弹出广告的时候,这个软件不能或不能做的很好的达到你的要求时,这就是一个流氓软件。你也许会说,每个人都有不同的要求,软件怎么可能达到每个人的标准呢?但我指的是停止和停止弹出广告等这样最基本的诉求,如果一个软件连最基本的诉求都实现不了,又何必再使用它呢?
综上所述,我从Window切换到Linux的最主要的原因有:**学习和自由。**
是的,你不得不承认Linux是你学习计算机的非常好的环境,与C/C++天然的集成,比你在Windows上冷冰冰的安装一个IDE就开始敲起代码来,显得多了那么一点感觉。
还有一点,可能有的同学和我一样,刚接触Linux的时候,是在Windows上安装一个虚拟机环境或使用Docker来进行学习。不可否认,这确实是在Windows上学习Linux的主要途径了,但是你有没有感觉到,你在采取这种方式学习的时候,对Linux始终有种陌生感,似乎我只是在为了学习而学习。
产生这种想法的主要原因就是你没有融入到Linux环境之中,当你融入到Linux环境之中时,你不再只是需要学习那些操作命令,你会不可避免的遇到某个你从来没有接触过的问题,这个问题不是你在Windows上“丢失图标”的那种烦人问题,而可能是令你有些害怕的因为Nvidia的驱动而黑屏的问题。你也会在互联网上查询为什么会出现这种问题,但你得到的并不是“修改注册表”这种答案,而是会学习到:为什么Nvidia在Linux上会出现这种问题?我怎么做才能解决驱动问题?其他驱动是否也有类似Nvidia这种问题? 当你解决问题后,你的电脑开始正常工作了,你便开始使用它作为你的日常使用...
关于使用Linux学习的原因的最后一点是我认为自己不够慎独,不够克制。当我使用Windows的时候,并不能完全克制住自己接触那些新鲜游戏的念头,我玩起游戏来,通常会连续很长时间,可能是一天-_-。不过我并不是说Linux上没有游戏,相反,Linux是对很多游戏的支持是很好的,你可以玩到很多游戏,但你是否会因为使用Linux对游戏不再那么执着,至少我是如此了。这一点可以归结为“使用Linux对戒游戏有帮助吧” ,哈哈。
再谈谈自由:
我对自由的理解是:软件在你的掌控之中,你可以了解它的每一部分,你可以去到你想到达的地方,不受任何限制,这只取决于你愿不愿意。
来看看基本的Linux目录吧:
![Linux目录](../../media/pictures/linux/Linux目录.png)
这些目录你可能有很多都不认识,但没关系,因为这就是Linux系统(大部分)所有的目录了,你稍微了解下,就知道这些目录里放的是什么文件了。
这也是我个人的体验而已,总之,Linux的自由是一种开源精神,比我描述的可大的多。至于Windows,我到现在连C盘的目录放了些什么都不太熟悉,但我并不是在贬低Windows,因为这就是Windows易用性的代价,相应的,Linux作为自由软件,它也有很多缺点。
## Linux作为日常使用的缺点
### 硬件驱动问题
硬件驱动问题一般是在安装Linux时会出现的问题,根据个人电脑配置的不同,你的电脑的硬件驱动可能与要安装的Linux发行版不兼容,导致系统出现相应的问题。我这几天对驱动问题最深刻的体会就明白了为啥Linus大神会吐槽: “Nvidia Fuck You”。很多驱动厂商对Linux系统是闭源的,你可以下载这些厂商的驱动,但是能不能用,或者用起来有什么毛病都得你自己买单。
随着Linux开始在普通用户中变得流行起来,我相信今后Linux的生态会发展的越来越好,且现在很多Linux发行版对各种硬件的兼容性也越来越好,就以我之前使用的Ubuntu18来说,Nvidia,Wifi,蓝牙等驱动使用都是没啥问题的。我现在使用的Debian10 Buster对Nvidia的支持可能还不是那么好,使用起来总有一些小毛病,不过无伤大雅,其实没毛病我还有点不适应,不是说Debian是Ubuntu的爸爸吗,哈哈。
### 软件问题
不得不承认的一点是Linux的软件生态确实没有Windows那么丰富,你在考虑切换系统之前,必须先调查清楚Linux上是否有你必需的软件,你所需的软件是否支持跨平台或者是否有可替代的应用。我个人对软件要求较为简单,大部分都是生产力工具,其他的应用如娱乐软件之类的都可以使用网页版作为替代。如果你在Linux系统上想尝试游戏的话,我认为也是OK的,因为我也尝试过Linux Dota2 ,体验非常好(不是广告-_-)。不过大多数国内游戏厂商对Linux的支持都是很差的,所以如果过不了这道坎,也不要切换系统了。
软件问题其实可以分为2部分看待,一部分就是刚刚介绍过的生态问题,另一部分就是当你在使用某些软件的时候,总会出现某些小Bug。
就以Fcitx来说,Fcitx是一款通用的Linux输入法框架,被称为小企鹅输入法,很多输入法都是在Fcitx之上开发的,如搜狗,Googlepinyin,Sunpinyin等。使用过Fcitx的同学可能会遇到这种问题:当你在使用Fcitx在某些软件上打字时,候选框并不会跟随你光标的位置,而是总会固定在某一个位置,并且你无法改变,这个问题是我目前见过的最大Bug。不过这个Bug只在部分软件上有,在Chrome,Typora上都没有这个问题,这让我怀疑是软件的国际化问题,而非Fcitx问题。
所以第二个部分总结起来就是某些软件可能会出现某些未知的Bug,你得寻求解决的办法,或者忍耐使用,使用Linux也是得牺牲一些代价的。
## 你真的需要完全使用Linux吗?
说到这里,其实我想借用知乎某位前辈的话来表达一下我的真实想法: “**Linux最好的地方在与开放自由,最大的毛病也是在这里。普通人没有能力去选择,也没有时间做选择。透明就一定好么?也有很多人喜欢被安排啊!**“ ([知乎 - 汉卿](https://www.zhihu.com/question/309704636))
就像我开头说过的: “我对Linux并不熟悉,这其中一部分原因是我使用的是对用户较为友好的发行版Ubuntu,另一部分原因是我仍然没有那么大的动力去学习Linux,即使它一直作为我的日常使用。”
我完全使用Linux是为了学习和自由,我确实在Linux上感受到了自由,且学到了很多东西,但我却一直沉溺在这种使用Linux带来的满足感之中,并不能真正理解Linux给我们带来的到底是什么。
这次从Ubuntu切换到Debian的原因是我想尝试换个新的环境,但是当我花了3,4天后,我明白了:我只是呆在一个地方久了,想换个新地方而已,但老地方不一定坏,因为我都没怎么了解过这个老地方,就像当初我从Windows换到Linux那样,我都没有深入的了解过Windows就换了,那一段时间我还抱怨Windows的各种缺点,现在看来,非常可笑。
#### 结尾
一文把想说的话几乎都给说了,个人文笔有限,且本文主观意识太强,如果觉得本文不符合您的胃口,就当看个笑话吧。
---
## 我使用Debian/Ubuntu时遇到的问题
**以下内容是我在Debian10 Buster下遇到的问题以及相关解决办法,
使用Ubuntu和Debian其他版本的同学也可借鉴。**
PS:欢迎各位同学在此处写下你遇到的问题和解决办法。
### IDEA编辑Markdown预渲染问题
这个问题花了我很长时间。
当我安装IDEA后,使用它编辑markdown文件的时候,就出现了如下图所示的情况:
![Debian10下IDEA的Markdown预渲染问题](../../media/pictures/linux/Debian10下IDEA的Markdown预渲染问题.png)
你可以看到右边渲染的画面明显有问题。刚开始的时候我一度怀疑是IDEA版本的问题,
于是我又安装IDEA其他版本,但也没有任何作用,这时我怀疑是显卡的原因:
![我的电脑配置](../../media/pictures/linux/我的电脑配置.png)
可以看到使用的是Intel的核显,于是当我查询相关资料,使用脚本将核显换为了独显,这里没留截图,当你换到独显后,
图形会显示独显的配置,使用nvidia-smi命令可以查看独显使用状态。
于是我满怀期待的打开IDEA,但还是无济于事。当我以为真的是Debian的Bug的时候,
我又发现Bumblebee可以管理显卡,何不一试?于是我安装Bumblebee后,使用optirun命令启动IDEA,没想到啊,
还真是可以:
![Debian10下IDEA的Markdown预渲染解决后](../../media/pictures/linux/Debian10下IDEA的Markdown预渲染解决后.png)
我真的就很奇怪,同样是使用了独显,为什么optirun启动就可以正常显示。
于是我后来又查询optirun是否开启了gpu加速,但很可惜,我并没有得到相关答案,不过这让我确定了这个问题出现在
显卡上。如果有知道原因的同学,敬请告之,感激不尽。
### wifi适配器找不到
我猜(不确定)这个问题应该发生在大多数使用联想笔记本的同学的电脑上,不止Debian,且Ubuntu也有这个问题。
当安装完系统后,我们打开设置会发现wifi一栏显示 “wifi适配器找不到” 此类的错误信息。
这个问题的大概原因是:无线网络适配器被阻塞了,需要手动将电脑上的wifi开关打开,而在我的笔记本上并wifi开关,
所以可以猜测是联想网络驱动的问题。
可以使用 rfkill list all命令查询你的wlan是否被阻塞了,没有此命令的同学可以使用
````text
sudo apt-get install rfkill
````
安装,当wlan显示Hard blocked: true , 就证明你的无线驱动被阻塞了。
解决办法是将阻塞无限驱动的那个模块从内核中移除掉,直接在 /etc/modprobe.d
目录下编辑 blacklist.conf文件,其内容为:
````text
blacklist ideapad_laptop
````
文件名不一定要与我的一致,但是要以.conf结尾。
你可以将modprobe.d目录下的文件理解为黑名单文件,
当Linux启动时就不会加载conf文件指定的模块,
这里的 ideapad_laptop 就是我们需要移除的那个无线模块。
**后遗症:
当我们移除 ideapad_laptop 模块后,以后开机的时候,有时会出现
蓝牙适配器找不到的情况,之前在Ubuntu上却并未发现这种问题,
看来Debian在驱动方面没有Ubuntu做的好,不过这也是可以理解的,
而且大多数时候还是可以正常使用的-_-。**
### XMind安装
XMind是使用Java编写的,依赖于Openjdk8。所以在Linux上使用XMind,
首先需要有Openjdk8的环境。
其次启动的时候需要编写Shell脚本来启动(不是唯一办法,但却是非常简单的办法),没想到吧,我也没想到,
这也是我趟过很多坑才玩出来的。
首先我们需要准备一张XMind的软件启动图片:XMind.png,
这个我已经放到[目录](https://github.com/guang19/framework-learning/tree/dev/img/linux)
下了,需要的同学请自取。
其次我们进入XMind_amd64目录下,32位系统的同学进入XMind_i386目录,
我们创建并编辑 start.sh 脚本,其内容为:
````text
#!/bin/bash
cd /home/guang19/SDK/xmind/XMind_amd64 (这个路径为你的XMind脚本的路径)
./XMind
````
这个脚本的内容很简单吧,当启动脚本的时候,进入目录,直接启动XMind。
脚本写完后需要让它能够被执行,使用
````text
chmod +x start.sh
````
命令让start.sh可以被执行。
此时你可以尝试执行 ./start.sh 命令来启动XMind,启动成功的话,
就已经完成了99%了,如果启动不成功,可以再检测下前面的步骤是否有误。
如果以后你只想用Shell启动XMind的话,那么到此也就为止了,连上面所说的图片都不需要了。
如果你想更方便的启动的话,那么就需要创建桌面文件启动。
在Debian/Ubuntu下,你所看到的桌面文件,都存储在 /usr/share/applications
目录下面(也有的在.local/share/applications目录下),这个目录下文件全是以.desktop结尾。
我们现在就需要在这个目录下创建xmind.desktop文件(名字可以不叫xmind)。
其内容为:
````text
[Desktop Entry]
Encoding=UTF-8
Name=XMind
Type=Application
Exec=sh /home/guang19/SDK/xmind/XMind_amd64/start.sh
Icon=/home/guang19/SDK/xmind/XMind.png
````
我们暂时只需要理解Icon和Exec属性。
Icon就是你在桌面上看到的应用的图标,把Icon的路径改为你XMind.png的路径就行了。
再看Exec属性,当我们在桌面上点击XMind的图标的时候,就会执行Exec对应的命令或脚本,
我们把Exec改为start.sh文件的路径就行了,别掉了sh命令,因为start.sh是脚本,
需要sh命令启动。
以上步骤完成,保存desktop文件后,你就可以在桌面上看到XMind应用了。
### Fcitx候选框的定位问题
这个问题贴一张我处境的截图就明白了:
![Fcitx候选框定位问题](../../media/pictures/linux/Fcitx候选框定位问题.png)
可以看到我的光标定位在第207行,但是我输入法的候选框停留在IDEA的左下角。
为什么我要说停留在IDEA的左下角?因为就目前我的使用而言,这个问题只在IDEA下存在,
不仅是Debian,Ubuntu也存在这种问题,我个人认为这应该是IDEA的问题,
查到的相关文章大部分都是说Swing的问题,看来这个问题还真是比较困难了。
如果有同学知道解决办法,还请不吝分享,非常感谢。
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册