搭建一个用于工作和学习的Linux桌面环境的尝试

概述

作为一个长期的Windows和macOS桌面用户,我基本没有接触过Linux的桌面环境,但是工作和学习中长期使用Linux作为服务器操作系统部署生产和测试环境。突发奇想,想看看现在的Linux的桌面环境是否可以作为n工作和学习环境,于是我就试着搭建了一下。

先说一下我对工作学习环境的基本定义:

  1. 能使用日常开发所需的IDE(基本开发环境反而不担心,毕竟主要开发测试部署的环境都是Linux)
  2. 能听听音乐
  3. 能进行轻量办公(其实很反感写各种花里胡哨的文档,除了汇报和需要按模版写的文档外,主要的文档写作主要是Markdown),就是要有基本的Office功能
  4. 要有基本社交功能,还是经常有交流需求的。
  5. 安装在移动固态硬盘(PSSD)上,可以在不同的地方直接插上使用无缝衔接,需要带一个编写的移动硬盘。

初步印象:

  1. 如果是为了基本开发,感觉Linux当前桌面环境也够了,但是Windows+WSL不是更香吗?真正生产和测试环境部署也是到Linux服务器上运行啊。
  2. Linux桌面生态不太行。很多软件都没有,大概是凑合着用。

折腾过程

操作系统

操作系统选择的是Ubuntu 20.04,应该区别不大,也算是最流行的Desktop发行版之一。

我将操作系统安装在PSSD,同时要能从PSSD启动。

Ubuntu下载与引导

操作系统安装ISO在如下地址下载: https://ubuntu.com/#download

然后找一个U盘,通过官方推荐的Rufus将ISO写入U盘制作Live引导盘

重启后用U盘启动进入Ubuntu Live。然后点击安装系统的图标安装。 最好不要选择启动菜单的oem install,因为这个安装完后还有一个OEM迁移到普通用户的过程。

分区与引导

可以其他用DiskGenius在安装前分区,或者在安装的过程中选择手动分区。(在选择安全步骤选项选择其他选项)

为了能将安装了Ubuntu系统的PSSD在多台电脑上启动,所以需要给一个EFI分区

分区 大小 用途 类型 是否主分区
EFI 1G UEFI启动 EFI Y
swap 64G(注1) 内存交换 swap N
/ 256G 系统盘 ext4 N
/home 500G 用户空间 ext4 N
U盘 128G 用于Linux和
Windows交换数据
顺便当U盘(注2)
exFat Y

注1 : swap分区一般和物理内存大小相等,这里分64G是我各处电脑最大的内存
注2 : 无论是Windows读写ext4还是Linux读写NTFS都不是那么方便稳定,一个exFat分区用于交换数据皆大欢喜。

总体来说,分区比较简单,将"/"和"/home"是为了方便重装系统,其他的从简。

复制EFI到移动硬盘

安装完成后,移动硬盘的EFI分区是空的,多系统启动是使用电脑硬盘启动的。这样PSSD拿到其他电脑没启动。

我的解决方案是在安装电脑上进入Windows系统,然后使用DiskGenius工具导出电脑硬盘的EFI分区镜像,然后将镜像再导入移动硬盘的EFI分区。

然后移动硬盘拿到其他机器,通过移动硬盘启动就可以启动Ubuntu了。启动顺序进入每台机器的BIOS调整,将启动顺序1调整为移动硬盘,然后再是原机器的系统。

显卡驱动

一些机器的显卡可以即插即用,例如主芯片是AMD 3750H的笔记本。一些机器的显卡直接进入是VGA分辨率,很难看,需要安装显卡驱动。以我的一台电脑时候用的Nvidia 2080为例。

多显示器

基础软件

输入法

中文输入法是必需的软件,选择使用搜狗输入法

安装指南参见: https://pinyin.sogou.com/linux/help.php

注意记得要点那个应用到整个系统的按钮

另外搜狗输入法有些不稳定,这个要看运气,希望稳定的可以考虑使用谷歌拼音输入法

安装命令

sudo apt-get install fcitx-googlepinyin

谷歌拼音输入法的设置流程也可以参考搜狗拼音输入法的帮助,键盘输入切换到fcitx。

KeePass

KeePass是我一直使用的软件,提升密码安全性,每个网站/APP使用不同的密码,密码随机生成。这个软件有Linux版本。安装命令如下:

sudo apt-add-repository ppa:jtaylor/keepass
sudo apt-get update
sudo apt-get install keepass2

词典

词典在所有平台我都使用欧路词典,跨平台同步数据,我也购买了收费版。比较好用。

官网地址: https://www.eudic.net/v4/en/app/eudic

直接下载deb用dpkg安装即可。

需要下载安装字典,建议建立一个专门存放字典的目录,然后下载的字典都放在这个目录下,然后用欧路字典添加这个目录即可。

开发环境

安装vscode

开发文档,C/C++开发等,我都使用vscode,比较好用。简单Java开发我也会用vscode

  1. 安装依赖软件
sudo apt update
sudo apt install software-properties-common apt-transport-https wget
  1. 加入Microsoft GPG key
wget -q https://packages.microsoft.com/keys/microsoft.asc -O- | sudo apt-key add -
  1. 启用 Visual Studio Code 源仓库
sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main"
  1. 安装 Visual Studio Code 软件包
sudo apt install code

后续可以通过apt更新

Java开发环境

JDK安装

  1. 下载JDK,官方下载:https://www.oracle.com/java/technologies/downloads/

  2. 解压安装
    例如解压到:$HOME/dev/jdk-17.0.1
    为了切换jdk方便,建议创建一个链接

ln -s $HOME/dev/jdk-17.0.1 $HOME/dev/jdk
  1. 设置环境变量
    在$HOME/.bashrc文件中添加如下环境变量
export JAVA_HOME=/home/hjianhao/dev/jdk
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

Maven安装

  1. 下载Maven,官方下载:https://maven.apache.org/download.cgi

  2. 解压安装
    例如解压到:$HOME/dev/apache-maven-3.8.3
    为了切换maven版本方便,建议创建一个链接

ln -s $HOME/dev/apache-maven-3.8.3 $HOME/dev/jdk
  1. 设置环境变量
export M2_HOME=/home/hjianhao/dev/maven
export PATH=${PATH}:${M2_HOME}/bin

安装vscode插件

  1. 在扩展中搜索并安装“Extension Pack for Java”,包括了以下Java开发必要的插件
  • Language Support for Java™ by Red Hat
  • Debugger for Java
  • Test Runner for Java
  • Maven for Java
  • Project Manager for Java
  • Visual Studio IntelliCode
  1. 设置JDK路径
    在settings.json中设置(默认不设置就是$JAVA_HOME指定的环境变量)
    "java.home": "<path-to-jdk>"

  2. 设置vscode的maven配置
    在settings.json中设置
    全局配置文件(默认不配置就是~/conf/settings.xml)
    "java.configuration.maven.globalSettings": "<path-to-global-settings-file>"
    用户配置文件(默认不配置就是 ~/.m2/settings.xml)
    "java.configuration.maven.userSettings": "<path-to-user-settings-file>"
    Maven可执行文件路径(指定Maven的版本,默认不配置就是PATH中可搜索到的执行文件)
    ""maven.executable.path": "<path-to-maven-executable>"

  3. 设置本地仓库路径
    默认不设置就是~/.m2/repository目录
    如果需要就在用户配置文件中增加

<settings>   
  <localRepository>本地仓库路径</localRepository>   
</settings> 

4.通过Ctrl+Shift+P,选择"Maven: Create Maven Project"创建Java工程
创建完工程就可以通过左边导航栏的的Maven视图执行Maven命令。或者通过Ctrl+Shift+P,选择"Maven: Execute Commands"执行命令。 如:clean install

vscode的Java开发简单介绍:https://code.visualstudio.com/docs/java/java-tutorial

安装IDEA

直接下载安装IDEA即可,IDEA Java安装设置网上很多介绍

C++开发环境

vscode的C/C++开发简单介绍:https://code.visualstudio.com/docs

Markdown

Markdown我使用vscode + Markdown Preview Enhanced插件,自我感觉不错。可以根据自己的喜好使用其他不同插件.

音乐播放

流媒体

很多流媒体并没有提供Linux版本客户端,只提供了Windows和macOS客户端,只能使用Web客户端。

我常用的两个提供hires的流媒体服务Tidal和Qobuz都可以使用Web客户端,但是Tidal的Web客户端只能提供无损流媒体,并不能提供hires流媒体。

所以主要使用Qobuz的Web客户端,可以支持24/192的hires流媒体。但是目前只有FireFox浏览器默认不对hires音频进行转码。 Edge和Google浏览器会将音频重采样到16/44.1KHZ,所以不建议用这两个浏览器听。

FireFox设置是否转码是在about:config中设置,设置项是media.resampling.enabled。默认是false,如果是true就要修改为false。

Apple Music也支持Web客户端,但是Apple Music的Web客户端不支持无损和hires

QQ倒是有Linux客户端,但是基本也是Web客户端包装的Linux应用。

本地音乐

挂接NAS

如果音乐存放在NAS上,则最好将NAS挂接到本地目录,例如将NAS上的my-music挂接到$HOME/Music/nas目录下。

  1. 在NAS上使用SMB服务共享目录

  2. 安装CIFS实用工具

sudo apt install cifs-utils
  1. 修改/etc/fstab
sudo vi /etc/fstab

添加挂接规则

# mynas
//<NAS-IP>/my-music /home/hjianhao/Music/nas cifs uid=<挂接目录的owner用户ID>,gid=<挂接目录的owner用户的组id>,dir_mode=0777,file_mode=0777,iocharset=utf8,vers=2.0,username=<NAS访问用户名>,password=<NAS访问密码> 0 0

需要注意的是:

  • 挂接时最好指定目录为所有用户可见,以为后续运行mpd扫描时用的时mpd运行的用户
  • 目录有中文要根据编码设置iocharset
  • 使用id命令获取当前用户的uid和gid
  1. 执行挂接
sudo mount -a

因为是修改的是fstab文件,系统重启后依然生效

本地播放器选择

我反复比较好,选择了mpd+gmpc。

Ubuntu自带的播放器Rhythmbox并不好用,也不太稳定。

试用了VLC,还行,但是功能不满意,尤其是音乐数据库管理。

我最终还是选择了mpd(服务端),客户端使用mpc(做命令行工具),gmpc(图形UI),ncmpc(字符UI)。因为以前长时间使用volumio,他后端就使用mpd,同时mpd有插件支持DSD

安装mpd

可以通过apt安装

sudo apt install mpd

但是apt上mpd版本太旧了,所以我选择从源码编译安装,参见官方文档:https://mpd.readthedocs.io/en/stable/user.html#compiling-from-source

需要注意一点,因为mpd需要通过meson进行编译,然而apt安装的meson太低了,新的mpd不能使用,所以需要自己安装高版本的meson。参见官方文档:https://mesonbuild.com/Quick-guide.html

需要注意的是,如果不做任何修改,mpd会假设配置文件路径是:/usr/local/etc/mpd.conf,mpd的可执行文件是/usr/local/bin/mpd。然而在安装时,mpd的初始配置文件会拷贝到/etc/mpd.conf下,同时mpd的服务配置文件(/usr/lib/systemd/system/mpd.service)中可执行文件指向的是/usr/bin/mpd。这样会导致启动的时候找不到mpd命令或启动失败(找不到配置文件)

解决方案一:
在编译配置的时候执行:

meson configure output/release -Dsysconfdir='/etc' ; meson configure output/release

解决方案二:
如果你已经编译安装完了,可以将配置文件和可执行文件软连接到对应的位置

ln -s /usr/local/bin/mpd /usr/bin/mpd
ln -s /etc/mpd.conf /usr/local/etc/mpd.conf
配置mpd

修改配置文件/etc/mpd.conf

  1. 配置音乐文件所在目录
    这个目录存放你的音乐,mpd扫描这个目录,并将音乐元数据加入数据库,这里我们将上面我们挂接的NAS目录配置上
    music_directory "/home/hjianhao/Music/nas"

  2. 取消自动更新
    auto_update "no"
    这个建议根据自己的使用习惯,我因为是将系统装到PSSD上,然后在不同地方使用,为了方便,就用VPN连接到家里的NAS,这样fstab就可以使用相同的内网IP,不用修改。因为VPN要手动连接,所以开机的时候并不能挂接上,此时音乐目录是空的,如果采用自动跟新,则会清空数据库里已经跟新的音乐数据,所以要将这里设置为取消

  3. 添加音频设备
    使用命令aplay -L列出你所有的音频设备,并添加到配置文件。寻找hw:打头的设备
    例如我系统有如下设备:

hw:CARD=Device,DEV=0
    LuxuryPrecision UAC Device, USB Audio
    Direct hardware device without any conversions

每个设备需要添加一段audio_output配置

udio_output {
        type            "alsa"
        name            "LuxuryPrecision UAC Device"
        device          "hw:CARD=Device,DEV=0"
        auto_resample   "no"
        auto_channels   "no"
        auto_format     "no"
        dop             "yes"
}

name和device可以拷贝aplay输出的结果
dop让DSD音频通过DoP输出

  1. 打开DSD插件
    默认mpd的DSD支持是关闭的,通过以下配置打开
decoder {
        plugin                  "hybrid_dsd"
        enabled                 "yes"
}
  1. 配置文件系统编码
    如果的音乐文件使用非英文字符,就一定要配置正确的编码,要不然就容易出现乱码。
filesystem_charset              "UTF-8"
  1. 配置播放列表文件的支持
playlist_plugin {
    name "m3u"
    enabled "true"
}

配置完成后重启mdp服务让其生效

sudo systemctl stop mpd
sudo systemctl start mpd
使用mpd

客户端使用mpc(做命令行工具),gmpc(图形UI),ncmpc(字符UI)

其中ncmpc我最常用,这个字符UI使用起来非常方便,各种快捷键操作
如果习惯图形UI就使用gmpc,支持专辑封面显示
mpc不是很常用,但是如果要配合脚本执行命令,就可以使用mpc命令行

社交

人在社会就离不开社交,QQ和微信是必要的,但是微信没有Linux版本,QQ的Linux版本非常差。所以只能用wine模拟器运行Windows版本的微信和QQ。

微信与QQ

目前比较好的方案是使用deepin发布的微信和QQ。
用xDroid安装安卓版本的微信和QQ小问题太多。

# 安装deep-in环境和添加源
wget -qO- https://deepin-wine.i-m.dev/setup.sh | sudo sh
# 安装微信
sudo apt-get install deepin.com.wechat 
# 安装QQ
sudo apt-get install deepin.com.qq.im    
# 安装TIM
sudo apt-get install deepin.com.qq.office

在微信输入中文的时候,可能会出现输入的文字的都是方框,我搜索了很多方法,以下方法我试用有效

  1. 下载微软雅黑字体
    下载的地方很多,下面地址可以下载
    https://github.com/owent-utils/font/blob/master/%E5%BE%AE%E8%BD%AF%E9%9B%85%E9%BB%91/MSYH.TTC

  2. 將字体复制到指定的位置

cp /path/to/MSYH.TTC ~/.deepinwine/Deepin-WeChat/drive_c/windows/Fonts/msyh.ttc
  1. 將字体注册到 Wine:
    编辑~/.deepinwine/Deepin-WeChat/font.reg文件,输入以下内容
REGEDIT4
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\FontSubstitutes]
"MS Shell Dlg"="msyh"
"MS Shell Dlg 2"="msyh"

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink]
"Lucida Sans Unicode"="msyh.ttc"
"Microsoft Sans Serif"="msyh.ttc"
"MS Sans Serif"="msyh.ttc"
"Tahoma"="msyh.ttc"
"Tahoma Bold"="msyhbd.ttc"
"msyh"="msyh.ttc"
"Arial"="msyh.ttc"
"Arial Black"="msyh.ttc"

执行一下命令

~/.deepinwine/Deepin-WeChat/ deepin-wine regedit ~/.deepinwine/Deepin-WeChat/font.reg

备注:根据安装的版本不同deepin-wine可执行文件名字不一定相同,比如我安装的版本,上面的deepin-wine换为deepin-wine6-stable,具体可以到/usr/bin目录下搜索deepin看看。

  1. 重启微信就可以正确输入中文了。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容