2019年2月

学习和使用 Linux 时,你是否觉得 Linux 命令的 man 手册过于冗长,不能及时告诉你所需要的命令该怎么写?其实,遇到这种苦恼的不是你一个人,往往在你突然想不起某个命令参数时,你需要的就是一个简单的命令提示。所以,针对这种情况,有人开发出了 info 命令来补充丰富的命令案例,也有人觉得 man 手册实在太长了,开发出了 tldr (太长不看)命令来提供更简洁的最常用命令用法。

就如我们之前介绍过的,tldr 有很多客户端,支持命令行、Web、iOS、安卓等等。

经过一个春节的开发,在“编码使我快乐”的 Bestony 同学的努力下,我们基于 tldr 的数据推出了一款小程序版的 tldr,并且考虑到现有 tldr 数据以英文为主,还提供了由社区驱动的开放式翻译模式来改进内容。

下面我来介绍一下。

Linux 命令速查小程序

请用微信识别如下小程序码,找到小程序 “Linux” ——没错,这个名字就是这么直指人心 :D,你也可以在本公众号的菜单中找到它。此外,以后我们也会在推送的文章中,对出现的 Linux 命令直接链接其这个小程序。

扫描或长按识别

首页就是一个简洁的输入框,显然,输入你要查找的命令就行。目前我们已经收录了 TLDR 数据库中上千条命令的数据。

Linux 命令速查小程序 首页

Linux 命令速查 ls 页面

开放式翻译贡献

你可以看到,命令页面的下方,列出了对该页面做出了翻译贡献的贡献者头像。

这其中大部分命令还没有进行翻译。你可以长按待翻译的文本,跳到翻译输入页面。在输入框中,可以输入新的翻译。第一次提交会请求你的微信授权,只是为了显示你的名字和头像。

提交翻译贡献

下方还列出了历次翻译的历史,所以你的贡献是所有人都看得到的 —— 切勿胡乱提交。输入翻译提交之后,会返回该命令页面,你可以下拉该页面强制刷新,即可看到翻译效果。

为什么采用开放式翻译贡献模式呢?我们希望社区的项目,由社区来驱动,通过社区的自我进化能力来完善。这也是我们为之后的社区驱动项目做一个尝试。

希望这个触手可及的小程序可以帮到你。好了,这篇 TLDR 的文章就这么短吧~

最后,致谢 TLDR 项目,感谢 Bestony。另外,能够快速开发此小程序也要感谢腾讯云开发所提供的快捷开发支持。

身兼教师、开发者、作家数职的 Peter Farrell 来讲述为什么使用 Python 来讲数学课会比传统方法更加好。

数学课一直都是很讨厌的一件事情,尤其对于在传统教学方法上吃过苦头的人(例如我)来说。传统教学方法强调的是死记硬背和理论知识,这种形式与学生们的现实世界似乎相去甚远。

Peter Farrell 作为一位 Python 开发者和数学教师,发现学生在数学课程中遇到了困难,于是决定尝试使用 Python 来帮助介绍数学概念。

Peter 的灵感来源于 Logo 语言之父 Seymour Papert,他的 Logo 语言现在还存在于 Python 的 Turtle 模块中。Logo 语言中的海龟形象让 Peter 喜欢上了 Python,并且进一步将 Python 应用到数学教学中。

Peter 在他的新书《 Python 数学奇遇记 Math Adventures with Python 》中分享了他的方法:“图文并茂地指导如何用代码探索数学”。因此我最近对他进行了一次采访,向他了解更多这方面的情况。

Don Watkins(LCTT 译注:本文作者): 你的教学背景是什么?

Peter Farrell: 我曾经当过八年的数学老师,之后又做了十年的数学私教。我还在当老师的时候,就阅读过 Papert 的 《 头脑风暴 Mindstorms 》并从中受到了启发,将 Logo 语言和海龟引入到了我所有的数学课上。

DW: 你为什么开始使用 Python 呢?

PF: 在我当家教的时候,需要教学一门枯燥刻板的数学课程,这是一个痛苦的过程。后来我引入了 Logo 语言和海龟,我的学生刚好是一个编程爱好者,他非常喜欢这样的方式。在接触到函数和实际的编程之后,他还提议改用 Python。尽管当时我还不了解 Python,但看起来好像和 Logo 语言差别不大,我就同意了。后来我甚至坚持在 Python 上一条道走到黑了!

我还曾经寻找过 3D 图形方面的软件包,用来模拟太阳系行星的运动轨迹,让学生们理解行星是如何在牛顿的万有引力定律作用下运动的。很多图形软件包都需要用到 C 语言编程或者其它一些很复杂的内容,后来我发现了一个叫做 VisualPython 的软件包,它非常方便使用。于是在那之后的几年里,我就一直在用 Vpython 这个软件包。

所以,我是在和学生一起学习数学的时候被介绍使用 Python 的。在那段时间里,他是我的编程老师,而我则是他的数学老师。

DW: 是什么让你对数学感兴趣?

PF: 我是通过传统的方法学习数学的,那时候都是用手写、用纸记、在黑板上计算。我擅长代数和几何,在大学的时候也接触过 Basic 和 Fortran 编程,但那个时候也没有从中获取到灵感。直到后来在从编程中收到了启发,编程可以让你将数学课上一些晦涩难懂的内容变得简单直观,也能让你轻松地绘图、调整、探索,进而发现更多乐趣。

DW: 是什么启发了你使用 Python 教学?

PF: 还是在我当家教的时候,我惊奇地发现可以通过循环来计算对同一个函数输入不同参数的结果。如果用人手计算,可能要花半个小时的时间,但计算机瞬间就完成了。在这样的基础上,我们只要将一些计算的过程抽象成一个函数,再对其进行一些适当的扩展,就可以让计算机来计算了。

DW: 你的教学方法如何帮助学生,特别是在数学上感觉吃力的学生?如何将 Python 编程和数学结合起来

PF: 很多学生,尤其是高中生,都认为通过手工计算和画图来解决问题的方式在当今已经没有必要了,我并不反对这样的观点。例如,使用 Excel 来处理数据确实应该算是办公室工作的基本技能。学习任何一种编程语言,对公司来说都是一项非常有价值的技能。因此,使用计算机计算确实是有实际意义的。

而使用代码来为数学课创造艺术,则是一项革命性的改变。例如,仅仅是把某个形状显示到屏幕上,就需要使用到数学,因为位置需要用 x-y 坐标去表示,而尺寸、颜色等等都是数字。如果想要移动或者更改某些内容,会需要用到变量。更特殊地,如果需要改变位置,就需要更有效的向量来实现。这样的最终结果是,类似向量、矩阵这些难以捉摸的空洞概念会转变成实打实有意义的数学工具。

那些看起来在数学上吃力的学生,或许只是不太容易接受“书本上的数学”。因为“书本上的数学”过分强调了死记硬背和循规蹈矩,而有些忽视了创造力和实际应用能力。有些学生其实擅长数学,但并不适应学校的教学方式。我的方法会让父母们看到他们的孩子通过代码画出了很多有趣的图形,然后说:“我从来不知道正弦和余弦还能这样用!”

DW: 你的教学方法是如何在学校里促进 STEM 教育的呢?

PF: 我喜欢将这几个学科统称为 STEM( 科学、技术、工程、数学 Science, Technology, Engineering and Mathematics ) 或 STEAM( 科学、技术、工程、艺术、数学 Science, Technology, Engineering, Art and Mathematics )。但作为数学工作者,我很不希望其中的 M 被忽视。我经常看到很多很小的孩子在 STEM 实验室里参与一些有趣的项目,这表明他们已经在接受科学、技术和工程方面的教育。与此同时,我发现数学方面的材料和项目却很少。因此,我和机电一体化领域的优秀教师 Ken Hawthorn 正在着手解决这个问题。

希望我的书能够帮助鼓励学生们在技术上有所创新,无论在形式上是切实的还是虚拟的。同时书中还有很多漂亮的图形,希望能够激励大家去体验编程的过程,并且应用到实际中来。我使用的软件(Python Processing)是免费的,在树莓派等系统上都可以轻松安装。因为我认为,个人或者学校的成本问题不应该成为学生进入 STEM 世界的门槛。

DW: 你有什么想要跟其他的数学老师分享?

PF: 如果数学教学机构决定要向学生教导数字推理、逻辑、分析、建模、几何、数据解释这些内容,那么它们应该承认,可以通过编程来实现这些目标。正如我上面所说的,我的教学方法是在尝试使传统枯燥的方法变得直观,我认为任何一位老师都可以做到这一点。他们只需要知道其中的本质做法,就可以使用代码来完成大量重复的工作了。

我的教学方法依赖于一些免费的图形软件,因此只需要知道在哪里找到这些软件包,以及如何使用这些软件包,就可以开始引导学生使用 21 世纪的技术来解决实际问题,将整个过程和结果可视化,并找到更多可以以此实现的模式。


via: https://opensource.com/article/19/1/hacking-math

作者:Don Watkins 选题:lujun9972 译者:HankChow 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

OK04 课程在 OK03 的基础上进行构建,它教你如何使用定时器让 OK 或 ACT LED 灯按精确的时间间隔来闪烁。假设你已经有了 课程 3:OK03 的操作系统,我们将以它为基础来构建。

1、一个新设备

定时器是树莓派保持时间的唯一方法。大多数计算机都有一个电池供电的时钟,这样当计算机关机后仍然能保持时间。

到目前为止,我们仅看了树莓派硬件的一小部分,即 GPIO 控制器。我只是简单地告诉你做什么,然后它会发生什么事情。现在,我们继续看定时器,并继续带你去了解它的工作原理。

和 GPIO 控制器一样,定时器也有地址。在本案例中,定时器的基地址在 20003000 16。阅读手册我们可以找到下面的表:

表 1.1 GPIO 控制器寄存器

地址大小 / 字节名字描述读或写
200030004Control / Status用于控制和清除定时器通道比较器匹配的寄存器RW
200030048Counter按 1 MHz 的频率递增的计数器R
2000300C4Compare 00 号比较器寄存器RW
200030104Compare 11 号比较器寄存器RW
200030144Compare 22 号比较器寄存器RW
200030184Compare 33 号比较器寄存器RW

Flowchart of the system timer's operation

这个表只告诉我们一部分内容,在手册中描述了更多的字段。手册上解释说,定时器本质上是按每微秒将计数器递增 1 的方式来运行。每次它是这样做的,它将计数器的低 32 位(4 字节)与 4 个比较器寄存器进行比较,如果匹配它们中的任何一个,它更新 Control/Status 以反映出其中有一个是匹配的。

关于 bit 字节 byte 位字段 bit field 、以及数据大小的更多内容如下:

一个位是一个单个的二进制数的名称。你可能还记得,一个单个的二进制数既可能是一个 1,也可能是一个 0。

一个字节是一个 8 位集合的名称。由于每个位可能是 1 或 0 这两个值的其中之一,因此,一个字节有 2 8 = 256 个不同的可能值。我们一般解释一个字节为一个介于 0 到 255(含)之间的二进制数。

Diagram of GPIO function select controller register 0.

一个位字段是解释二进制的另一种方式。二进制可以解释为许多不同的东西,而不仅仅是一个数字。一个位字段可以将二进制看做为一系列的 1(开) 或 0(关)的开关。对于每个小开关,我们都有一个意义,我们可以使用它们去控制一些东西。我们已经遇到了 GPIO 控制器使用的位字段,使用它设置一个针脚的开或关。位为 1 时 GPIO 针脚将准确地打开或关闭。有时我们需要更多的选项,而不仅仅是开或关,因此我们将几个开关组合到一起,比如 GPIO 控制器的函数设置(如上图),每 3 位为一组控制一个 GPIO 针脚的函数。

我们的目标是实现一个函数,这个函数能够以一个时间数量为输入来调用它,这个输入的时间数量将作为等待的时间,然后返回。想一想如何去做,想想我们都拥有什么。

我认为这将有两个选择:

  1. 从计数器中读取一个值,然后保持分支返回到相同的代码,直到计数器的等待时间数量大于它。
  2. 从计数器中读取一个值,加上要等待的时间数量,将它保存到比较器寄存器,然后保持分支返回到相同的代码处,直到 Control / Status 寄存器更新。

这两种策略都工作的很好,但在本教程中,我们将只实现第一个。原因是比较器寄存器更容易出错,因为在增加等待时间并保存它到比较器的寄存器期间,计数器可能已经增加了,并因此可能会不匹配。如果请求的是 1 微秒(或更糟糕的情况是 0 微秒)的等待,这样可能导致非常长的意外延迟。

像这样存在被称为“并发问题”的问题,并且几乎无法解决。

2、实现

我将把这个创建完美的等待方法的挑战基本留给你。我建议你将所有与定时器相关的代码都放在一个名为 systemTimer.s 的文件中(理由很明显)。关于这个方法的复杂部分是,计数器是一个 8 字节值,而每个寄存器仅能保存 4 字节。所以,计数器值将分到 2 个寄存器中。

大型的操作系统通常使用等待函数来抓住机会在后台执行任务。

下列的代码块是一个示例。

ldrd r0,r1,[r2,#4]
ldrd regLow,regHigh,[src,#val]src 中的数加上 val 之和的地址加载 8 字节到寄存器 regLowregHigh 中。

上面的代码中你可以发现一个很有用的指令是 ldrd。它加载 8 字节的内存到两个寄存器中。在本案例中,这 8 字节内存从寄存器 r2 中的地址 + 4 开始,将被复制进寄存器 r0r1。这种安排的稍微复杂之处在于 r1 实际上只持有了高位 4 字节。换句话说就是,如果如果计数器的值是 999,999,999,999 10 = 1110100011010100101001010000111111111111 2 ,那么寄存器 r1 中只有 11101000 2,而寄存器 r0 中则是 11010100101001010000111111111111 2

实现它的更明智的方式应该是,去计算当前计数器值与来自方法启动后的那一个值的差,然后将它与要求的等待时间数量进行比较。除非恰好你希望的等待时间是占用 8 字节的,否则上面示例中寄存器 r1 中的值将会丢弃,而计数器仅需要使用低位 4 字节。

当等待开始时,你应该总是确保使用大于比较,而不是使用等于比较,因为如果你尝试去等待一个时间,而这个时间正好等于方法开始的时间与结束的时间之差,那么你就错过这个值而永远等待下去。

如果你不明白如何编写等待函数的代码,可以参考下面的指南。

借鉴 GPIO 控制器的创意,第一个函数我们应该去写如何取得系统定时器的地址。示例如下:

.globl GetSystemTimerBase
GetSystemTimerBase:
ldr r0,=0x20003000
mov pc,lr

另一个被证明非常有用的函数是返回在寄存器 r0r1 中的当前计数器值:

.globl GetTimeStamp
GetTimeStamp:
push {lr}
bl GetSystemTimerBase
ldrd r0,r1,[r0,#4]
pop {pc}

这个函数简单地使用了 GetSystemTimerBase 函数,并像我们前面学过的那样,使用 ldrd 去加载当前计数器值。

现在,我们可以去写我们的等待方法的代码了。首先,在该方法启动后,我们需要知道计数器值,我们可以使用 GetTimeStamp 来取得。

delay .req r2
mov delay,r0
push {lr}
bl GetTimeStamp
start .req r3
mov start,r0

这个代码复制了我们的方法的输入,将延迟时间的数量放到寄存器 r2 中,然后调用 GetTimeStamp,这个函数将会返回寄存器 r0r1 中的当前计数器值。接着复制计数器值的低位 4 字节到寄存器 r3 中。

接下来,我们需要计算当前计数器值与读入的值的差,然后持续这样做,直到它们的差至少是 delay 的大小为止。

loop$:

bl GetTimeStamp
elapsed .req r1
sub elapsed,r0,start
cmp elapsed,delay
.unreq elapsed
bls loop$

这个代码将一直等待,一直到等待到传递给它的时间数量为止。它从计数器中读取数值,减去最初从计数器中读取的值,然后与要求的延迟时间进行比较。如果过去的时间数量小于要求的延迟,它切换回 loop$

.unreq delay
.unreq start
pop {pc}

代码完成后,函数返回。

3、另一个闪灯程序

你一旦明白了等待函数的工作原理,修改 main.s 去使用它。修改各处 r0 的等待设置值为某个很大的数量(记住它的单位是微秒),然后在树莓派上测试。如果函数不能正常工作,请查看我们的排错页面。

如果正常工作,恭喜你学会控制另一个设备了,会使用它,则时间由你控制。在下一节课程中,我们将完成 OK 系列课程的最后一节 课程 5:OK05,我们将使用我们已经学习过的知识让 LED 按我们的模式进行闪烁。


via: https://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/ok04.html

作者:Robert Mullins 选题:lujun9972 译者:qhwdw 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

使用 eDEX-UI 让你的工作更有趣,这是我们开源工具系列中的第 15 个工具,它将使你在 2019 年更高效。

每年年初似乎都有疯狂的冲动想提高工作效率。新年的决心,渴望开启新的一年,当然,“抛弃旧的,拥抱新的”的态度促成了这一切。通常这时的建议严重偏向闭源和专有软件,但事实上并不用这样。

这是我挑选出的 19 个新的(或者对你而言新的)开源工具中的第 15 个工具来帮助你在 2019 年更有效率。

eDEX-UI

《电子世界争霸战》上映时我才 11 岁。我不能否认,尽管这部电影充满幻想,但它对我后来的职业选择产生了影响。

eDEX-UI 是一款专为平板电脑和台式机设计的跨平台终端程序,它的用户界面受到《电子世界争霸战》的启发。它在选项卡式界面中有五个终端,因此可以轻松地在任务之间切换,以及显示有用的系统信息。

在启动时,eDEX-UI 会启动一系列的东西,其中包含它所基于的 ElectronJS 系统的信息。启动后,eDEX-UI 会显示系统信息、文件浏览器、键盘(用于平板电脑)和主终端选项卡。其他四个选项卡(被标记为 EMPTY)没有加载任何内容,并且当你单击它时将启动一个 shell。eDEX-UI 中的默认 shell 是 Bash(如果在 Windows 上,则可能需要将其更改为 PowerShell 或 cmd.exe)。

更改文件浏览器中的目录也将更改活动终端中的目录,反之亦然。文件浏览器可以执行你期望的所有操作,包括在单击文件时打开关联的应用。唯一的例外是 eDEX-UI 的 settings.json 文件(默认在 .config/eDEX-UI),它会打开配置编辑器。这允许你为终端设置 shell 命令、更改主题以及修改用户界面的其他几个设置。主题也保存在配置目录中,因为它们也是 JSON 文件,所以创建自定义主题非常简单。

eDEX-UI 允许你使用完全仿真运行五个终端。默认终端类型是 xterm-color,这意味着它支持全色彩。需要注意的一点是,输入时键会亮起,因此如果你在平板电脑上使用 eDEX-UI,键盘可能会在人们看见屏幕的环境中带来安全风险。因此最好在这些设备上使用没有键盘的主题,尽管在打字时看起来确实很酷。

虽然 eDEX-UI 仅支持五个终端窗口,但这对我来说已经足够了。在平板电脑上,eDEX-UI 给了我网络空间感而不会影响我的效率。在桌面上,eDEX-UI 支持所有功能,并让我在我的同事面前显得很酷。


via: https://opensource.com/article/19/1/productivity-tool-edex-ui

作者:Kevin Sonney 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

最近这几年我们一直听到虚拟现实(VR)和增强现实(AR),可很多人并不了解它们是什么。 增强现实技术 Augmented Reality ,简称 AR,是一种实时地计算摄影机影像的位置及角度并加上相应图像、视频、3D 模型的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互动。

这种技术可以让你将现实世界和虚拟世界结合起来,从而创造非常有趣的互动效果。可是,有一天 AR 里面的小鬼们真的出来了!


via: http://turnoff.us/geek/augmented-reality-2/

作者:Daniel Stori 译者 & 点评:wxy 校对 & 合成:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Jack Wallen 盘点他最爱的五款 Linux 音乐播放器。

不管你做什么,你都有时会来一点背景音乐。不管你是开发、运维或是一个典型的电脑用户,享受美妙的音乐都可能是你在电脑上最想做的事情之一。同时随着即将到来的假期,你可能收到一些能让你买几首新歌的礼物卡。如果你所选的音乐是数字形式(我的恰好是唱片形式)而且你的平台是 Linux 的话,你会想要一个好的图形用户界面播放器来享受音乐。

幸运的是,Linux 不缺好的数字音乐播放器。事实上,Linux 上有不少播放器,大部分是开源并且可以免费获得的。让我们看看其中的几款,看哪个能满足你的需要。

Clementine

我想从我用来许多年的默认选项的播放器开始。Clementine 可能是最好的平衡了易用性与灵活性的播放器。Clementine 是新停摆的 Amarok) 音乐播放器的复刻,但它不仅限于 Linux; Clementine 在 Mac OS 和 Windows 平台上也可以获得。它的一系列特性十分惊艳,包括:

  • 內建的均衡器
  • 可定制的界面(将现在的专辑封面显示成背景,见图一)
  • 播放本地音乐或者从 Spotify、Last.fm 等播放音乐
  • 便于库导航的侧边栏
  • 內建的音频转码(转成 MP3、OGG、Flac 等)
  • 通过 安卓应用 远程控制
  • 便利的搜索功能
  • 选项卡式播放列表
  • 简单创建常规和智能化的播放列表
  • 支持 CUE 文件
  • 支持标签

 title=

图一:Clementine 界面可能有一点老派,但是它不可思议得灵活好用。

在所有我用过的音乐播放器中,Clementine 是目前为止功能最多也是最容易使用的。它同时也包含了你能在 Linux 音乐播放器中找到的最好的均衡器(有十个频带可以调)。尽管它的界面不够时髦,但它创建、操控播放列表的能力是无与伦比的。如果你的音乐集很大,同时你想完全操控你的音乐集的话,这就是你想要的播放器。

Clementine 可以在标准仓库中找到。它可以从你的发行版的软件中心或通过命令行来安装。

Rhythmbox

Rhythmbox 是 GNOME 桌面的默认播放器,但是它在其它桌面工作得也很好。Rhythmbox 的界面比 Clementine 的界面稍微时尚一点,它的设计遵循极简的理念。这并不意味着它缺乏特性,相反 Rhythmbox 提供无间隔回放、支持 Soundcloud、专辑封面显示、从 Last.fm 和 Libre.fm 导入音频、支持 Jamendo、播客订阅(从 Apple iTunes)、从网页远程控制等特性。

在 Rhythmbox 中发现的一个很好的特性是支持插件,这使得你可以使用像 DAAP 音乐分享、FM 电台、封面查找、通知、ReplayGain、歌词等特性。

Rhythmbox 播放列表特性不像 Clementine 的那么强大,但是将你的音乐整理进任何形式的快速播放列表还是很简单的。尽管 Rhythmbox 的界面(图二)比 Clementine 要时髦一点,但是它不像 Clementine 那样灵活。

 title=

图二:Rhythmbox 界面简单直接。

VLC Media Player

对于部分人来说,VLC 在视频播放方面是无懈可击的。然而 VLC 不仅限于视频播放。事实上,VLC在播放音频文件方面做得也很好。对于 KDE Neon 用户来说,VLC 既是音乐也是视频的默认播放器。尽管 VLC 是 Linux 市场最好的视频播放器的之一(它是我的默认播放器),它在音频方面确实略有瑕疵 —— 缺少播放列表以及不能够连接到你网络中的远程仓库。但如果你是在寻找一种播放本地文件或者网络 mms/rtsp 的简单可靠的方式,VLC 是上佳之选。VLC 包括一个均衡器(图三)、一个压缩器以及一个空间音响。它同样也能够从捕捉到的设备录音。

 title=

图三:运转中的 VLC 均衡器。

Audacious

如果你在寻找一个轻量级的音乐播放器,Audacious 完美地满足要求。这个音乐播放器相当的专一,但是它包括了一个均衡器和一小部分能够改善许多音频的声效(比如回声、消除默音、调节速度和音调、去除人声等,见图四)。

 title=

图四:Audacious 均衡器和插件。

Audacious 也包括了一个十分简便的闹铃功能。它允许你设置一个能在用户选定的时间点和持续的时间段内播放选定乐段的闹铃。

Spotify

我必须承认,我每天都用 Spotify。我是一个 Spotify 的订阅者并用它去发现、购买新的音乐 —— 这意味着我在不停地探索发现。幸运的是,Spotify 有一个我能按照 Spotify官方 Linux 平台安装指导 轻松安装的桌面客户端。在桌面客户端与 安卓应用 间无缝转换对我来说也大有帮助,这样我就永远不会错过我喜欢的音乐了。

 title=

图五:Linux 上的 Spotify 官方客户端。

Spotify 界面十分易于使用,事实上它完胜网页端的播放器。不要在 Linux 上装 Spotify 网页播放器 因为桌面客户端在创建管理你的播放列表方面简便得多。如果你是 Spotify 重度用户,甚至没必要用其他桌面应用的內建流传输客户端支持 —— 一旦你用过 Spotify 桌面客户端,其它应用就根本没可比性。

选择在你

其它选择也是有的(查看你的桌面软件中心),但这五款客户端(在我看来)是最好的了。对我来说,Clementine 和 Spotify 的组合拳就已经让我美好得唱赞歌了。尝试它们看看哪个能更好地满足你的需要。

额外奖品

虽然这篇文章翻译于国外作者,但作为给中国的 Linux 用户看的文章,如果在一篇分享音乐播放器的文章中不提及网易云音乐,那一定会被猛烈吐槽(事实上,我们曾经被吐槽过好多次了,哈哈)。

网易云音乐是我见过的最好的音乐播放器之一,不只是在 Linux 上,它甚至还支持包括 Windows、Mac、 iOS、安卓等在内的 8 个操作系统平台。当前的 Linux 版本是 1.1.0 版,支持 64 位的深度 Linux 15 和 Ubuntu 16.04 及之后的版本。下载地址和截图就不在这里安利了,大家想必自己能找到的。

通过 edX 和 Linux Foundation 上免费的 Introduction to Linux 课程学习更多有关 Linux 的知识。


via: https://www.linux.com/learn/intro-to-linux/2017/12/top-5-linux-music-players

作者:JACK WALLEN 译者:tomjlw 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出