2019年4月

主题和可视化定制是 Linux 的主要优势之一。由于所有代码都是开源的,因此你可以比 Windows/Mac OS 更大程度上地改变 Linux 系统的外观和行为方式。GTK 主题可能是人们定制 Linux 桌面的最流行方式。GTK 工具包被各种桌面环境使用,如 Gnome、Cinnamon、Unity、XFC E和 budgie。这意味着为 GTK 制作的单个主题只需很少的修改就能应用于任何这些桌面环境。

有很多非常高品质的流行 GTK 主题,例如 ArcNumixAdapta。但是如果你想自定义这些主题并创建自己的视觉设计,你可以使用 Oomox

Oomox 是一个图形应用,可以完全使用自己的颜色、图标和终端风格自定义和创建自己的 GTK 主题。它自带几个预设,你可以在 Numix、Arc 或 Materia 主题样式上创建自己的 GTK 主题。

安装 Oomox

在 Arch Linux 及其衍生版中:

Oomox 可以在 AUR 中找到,所以你可以使用任何 AUR 助手程序安装它,如 yay

$ yay -S oomox

在 Debian/Ubuntu/Linux Mint 中,在这里下载 oomox.deb 包并按如下所示进行安装。在写本指南时,最新版本为 oomox_1.7.0.5.deb

$ sudo dpkg -i oomox_1.7.0.5.deb
$ sudo apt install -f

在 Fedora 上,Oomox 可以在第三方 COPR 仓库中找到。

$ sudo dnf copr enable tcg/themes
$ sudo dnf install oomox

Oomox 也有 Flatpak 应用。确保已按照本指南中的说明安装了 Flatpak。然后,使用以下命令安装并运行 Oomox:

$ flatpak install flathub com.github.themix_project.Oomox
$ flatpak run com.github.themix_project.Oomox

对于其他 Linux 发行版,请进入 Github 上的 Oomox 项目页面(本指南末尾给出链接),并从源代码手动编译和安装。

自定义并创建自己的 GTK2、GTK3 主题

主题定制

你可以更改几乎每个 UI 元素的颜色,例如:

  1. 标题
  2. 按钮
  3. 标题内的按钮
  4. 菜单
  5. 选定的文字

在左边,有许多预设主题,如汽车主题、现代主题,如 Materia 和 Numix,以及复古主题。在窗口的顶部,有一个名为主题样式的选项,可让你设置主题的整体视觉样式。你可以在 Numix、Arc 和 Materia 之间进行选择。

使用某些像 Numix 这样的样式,你甚至可以更改标题渐变,边框宽度和面板透明度等内容。你还可以为主题添加黑暗模式,该模式将从默认主题自动创建。

图标集定制

你可以自定义用于主题图标的图标集。有两个选项:Gnome Colors 和 Archdroid。你可以更改图标集的基础和笔触颜色。

终端定制

你还可以自定义终端颜色。该应用有几个预设,但你可以为每个颜色,如红色,绿色,黑色等自定义确切的颜色代码。你还可以自动交换前景色和背景色。

Spotify 主题

这个应用的一个独特功能是你可以根据喜好定义 spotify 主题。你可以更改 spotify 的前景色、背景色和强调色来匹配整体的 GTK 主题。

然后,只需按下“应用 Spotify 主题”按钮,你就会看到这个窗口:

点击应用即可。

导出主题

根据自己的喜好自定义主题后,可以通过单击左上角的重命名按钮重命名主题:

然后,只需点击“导出主题”将主题导出到你的系统。

你也可以只导出图标集或终端主题。

之后你可以打开桌面环境中的任何可视化自定义应用,例如基于 Gnome 桌面的 Tweaks,或者 “XFCE 外观设置”。选择你导出的 GTK 或者 shell 主题。

总结

如果你是一个 Linux 主题迷,并且你确切知道系统中的每个按钮、每个标题应该怎样,Oomox 值得一试。 对于极致的定制者,它可以让你几乎更改系统外观的所有内容。对于那些只想稍微调整现有主题的人来说,它有很多很多预设,所以你可以毫不费力地得到你想要的东西。

你试过吗? 你对 Oomox 有什么看法? 请在下面留言!

资源


via: https://www.ostechnix.com/oomox-customize-and-create-your-own-gtk2-gtk3-themes/

作者:EDITOR 选题:lujun9972 译者:geekpi 校对:wxy

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

树莓派是一个很棒的游戏平台。在我们的系列文章的第九篇中学习如何开始使用树莓派。

回到我们关于树莓派入门系列文章的第五篇,我提到 Minecraft 是一种教孩子们使用游戏平台进行编程的方法。作为一个不错的游戏平台,今天我们将讨论在树莓派上使用或者不使用模拟器来玩游戏的方式。

使用模拟器玩游戏

模拟器是一种能让你在树莓派上玩不同系统、不同年代游戏的软件。在如今众多的模拟器中,RetroPi 是树莓派中最受欢迎的。你可以用它来玩 Apple II、Amiga、Atari 2600、Commodore 64、Game Boy Advance 和其他许多游戏。

如果 RetroPi 听起来有趣,请阅读这些说明开始使用,玩得开心!

原生 Linux 游戏

树莓派的操作系统 Raspbian 上也有很多原生 Linux 游戏。“Make Use Of” 有一篇关于如何在树莓派上玩 10 个老经典游戏,如 Doom 和 Nuke Dukem 3D 的文章。

你也可以将树莓派用作游戏服务器。例如,你可以在树莓派上安装 Terraria、Minecraft 和 QuakeWorld 服务器。


via: https://opensource.com/article/19/3/play-games-raspberry-pi

作者:Anderson Silva 选题:lujun9972 译者:geekpi 校对:wxy

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

我过去认为 makefile 只是一种将一组组的 shell 命令列出来的简便方法;过了一段时间我了解到它们是有多么的强大、灵活以及功能齐全。这篇文章带你领略其中一些有关规则的特性。

备注:这些全是针对 GNU Makefile 的,如果你希望支持 BSD Makefile ,你会发现有些新的功能缺失。感谢 zge 指出这点。

规则

规则 rule 是指示 make 应该如何并且何时构建一个被称作为 目标 target 的文件的指令。目标可以依赖于其它被称作为 前提 prerequisite 的文件。

你会指示 make 如何按 步骤 recipe 构建目标,那就是一套按照出现顺序一次执行一个的 shell 命令。语法像这样:

target_name : prerequisites
    recipe

一但你定义好了规则,你就可以通过从命令行执行以下命令构建目标:

$ make target_name

目标一经构建,除非前提改变,否则 make 会足够聪明地不再去运行该步骤。

关于前提的更多信息

前提表明了两件事情:

  • 当目标应当被构建时:如果其中一个前提比目标更新,make 假定目的应当被构建。
  • 执行的顺序:鉴于前提可以反过来在 makefile 中由另一套规则所构建,它们同样暗示了一个执行规则的顺序。

如果你想要定义一个顺序但是你不想在前提改变的时候重新构建目标,你可以使用一种特别的叫做“ 唯顺序 order only ”的前提。这种前提可以被放在普通的前提之后,用管道符(|)进行分隔。

样式

为了便利,make 接受目标和前提的样式。通过包含 % 符号可以定义一种样式。这个符号是一个可以匹配任何长度的文字符号或者空隔的通配符。以下有一些示例:

  • %:匹配任何文件
  • %.md:匹配所有 .md 结尾的文件
  • prefix%.go:匹配所有以 prefix 开头以 .go 结尾的文件

特殊目标

有一系列目标名字,它们对于 make 来说有特殊的意义,被称作 特殊目标 special target

你可以在这个文档发现全套特殊目标。作为一种经验法则,特殊目标以点开始后面跟着大写字母。

以下是几个有用的特殊目标:

  • .PHONY:向 make 表明此目标的前提可以被当成伪目标。这意味着 make 将总是运行,无论有那个名字的文件是否存在或者上次被修改的时间是什么。
  • .DEFAULT:被用于任何没有指定规则的目标。
  • .IGNORE:如果你指定 .IGNORE 为前提,make 将忽略执行步骤中的错误。

替代

当你需要以你指定的改动方式改变一个变量的值, 替代 substitution 就十分有用了。

替代的格式是 $(var:a=b),它的意思是获取变量 var 的值,用值里面的 b 替代词末尾的每个 a 以代替最终的字符串。例如:

foo := a.o
bar : = $(foo:.o=.c) # sets bar to a.c

注意:特别感谢 Luis Lavena 让我们知道替代的存在。

档案文件

档案文件是用来一起将多个数据文档(类似于压缩文件的概念)收集成一个文件。它们由 ar Unix 工具所构建。ar 可以用于为任何目的创建档案,但除了静态库,它已经被 tar 大量替代。

make 中,你可以使用一个档案文件中的单独一个成员作为目标或者前提,就像这样:

archive(member) : prerequisite 
    recipe

最后的想法

关于 make 还有更多可探索的,但是至少这是一个起点,我强烈鼓励你去查看文档,创建一个笨拙的 makefile 然后就可以探索它了。


via: https://monades.roperzh.com/rediscovering-make-power-behind-rules/

作者:Roberto Dip 译者:tomjlw 校对:wxy

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

不久之前,我们编写了一个指南,内容是一个文件共享实用程序,名为 transfer.sh,它是一个免费的 Web 服务,允许你在 Internet 上轻松快速地共享文件,还有 PSiTransfer,一个简单的开源自托管文件共享解决方案。今天,我们将看到另一个名为 “iWant” 的文件共享实用程序。它是一个基于命令行的自由开源的去中心化点对点文件共享应用程序。

你可能想知道,它与其它文件共享应用程序有什么不同?以下是 iWant 的一些突出特点。

  • 它是一个命令行应用程序。这意味着你不需要消耗内存来加载 GUI 实用程序。你只需要一个终端。
  • 它是去中心化的。这意味着你的数据不会在任何中心位置存储。因此,不会因为中心点失败而失败。
  • iWant 允许中断下载,你可以在以后随时恢复。你不需要从头开始下载,它会从你停止的位置恢复下载。
  • 共享目录中文件所作的任何更改(如删除、添加、修改)都会立即反映在网络中。
  • 就像种子一样,iWant 从多个节点下载文件。如果任何节点离开群组或未能响应,它将继续从另一个节点下载。
  • 它是跨平台的,因此你可以在 GNU/Linux、MS Windows 或者 Mac OS X 中使用它。

安装 iWant

iWant 可以使用 PIP 包管理器轻松安装。确保你在 Linux 发行版中安装了 pip。如果尚未安装,参考以下指南。

如何使用 Pip 管理 Python 包

安装 pip 后,确保你有以下依赖项:

  • libffi-dev
  • libssl-dev

比如说,在 Ubuntu 上,你可以使用以下命令安装这些依赖项:

$ sudo apt-get install libffi-dev libssl-dev

安装完所有依赖项后,使用以下命令安装 iWant:

$ sudo pip install iwant

现在我们的系统中已经有了 iWant,让我们来看看如何使用它来通过网络传输文件。

用法

首先,使用以下命令启动 iWant 服务器:

(LCTT 译注:虽然这个软件是叫 iWant,但是其命令名为 iwanto,另外这个软件至少一年没有更新了。)

$ iwanto start

第一次启动时,iWant 会询问想要分享和下载文件夹的位置,所以需要输入两个文件夹的位置。然后,选择要使用的网卡。

示例输出:

Shared/Download folder details looks empty..
Note: Shared and Download folder cannot be the same
SHARED FOLDER(absolute path):/home/sk/myshare
DOWNLOAD FOLDER(absolute path):/home/sk/mydownloads
Network interface available
1. lo => 127.0.0.1
2. enp0s3 => 192.168.43.2
Enter index of the interface:2
now scanning /home/sk/myshare
[Adding] /home/sk/myshare 0.0
Updating Leader 56f6d5e8-654e-11e7-93c8-08002712f8c1
[Adding] /home/sk/myshare 0.0
connecting to 192.168.43.2:1235 for hashdump

如果你看到类似上面的输出,你可以立即开始使用 iWant 了。

同样,在网络中的所有系统上启动 iWant 服务,指定有效的分享和下载文件夹的位置,并选择合适的网卡。

iWant 服务将继续在当前终端窗口中运行,直到你按下 CTRL+C 退出为止。你需要打开一个新选项卡或新的终端窗口来使用 iWant。

iWant 的用法非常简单,它的命令很少,如下所示。

  • iwanto start – 启动 iWant 服务。
  • iwanto search <name> – 查找文件。
  • iwanto download <hash> – 下载一个文件。
  • iwanto share <path> – 更改共享文件夹的位置。
  • iwanto download to <destination> – 更改下载文件夹位置。
  • iwanto view config – 查看共享和下载文件夹。
  • iwanto –version – 显示 iWant 版本。
  • iwanto -h – 显示帮助信息。

让我向你展示一些例子。

查找文件

要查找一个文件,运行:

$ iwanto search <filename>

请注意,你无需指定确切的名称。

示例:

$ iwanto search command

上面的命令将搜索包含 “command” 字符串的所有文件。

我的 Ubuntu 系统会输出:

Filename Size Checksum
------------------------------------------- ------- --------------------------------
/home/sk/myshare/THE LINUX COMMAND LINE.pdf 3.85757 efded6cc6f34a3d107c67c2300459911

下载文件

你可以在你的网络上的任何系统下载文件。要下载文件,只需提供文件的哈希(校验和),如下所示。你可以使用 iwanto search 命令获取共享的哈希值。

$ iwanto download efded6cc6f34a3d107c67c2300459911

文件将保存在你的下载位置,在本文中是 /home/sk/mydownloads/ 位置。

Filename: /home/sk/mydownloads/THE LINUX COMMAND LINE.pdf
Size: 3.857569 MB

查看配置

要查看配置,例如共享和下载文件夹的位置,运行:

$ iwanto view config

示例输出:

Shared folder:/home/sk/myshare
Download folder:/home/sk/mydownloads

更改共享和下载文件夹的位置

你可以更改共享文件夹和下载文件夹。

$ iwanto share /home/sk/ostechnix

现在,共享位置已更改为 /home/sk/ostechnix

同样,你可以使用以下命令更改下载位置:

$ iwanto download to /home/sk/Downloads

要查看所做的更改,运行命令:

$ iwanto view config

停止 iWant

一旦你不想用 iWant 了,可以按下 CTRL+C 退出。

如果它不起作用,那可能是由于防火墙或你的路由器不支持多播。你可以在 ~/.iwant/.iwant.log 文件中查看所有日志。有关更多详细信息,参阅最后提供的项目的 GitHub 页面。

差不多就是全部了。希望这个工具有所帮助。下次我会带着另一个有趣的指南再次来到这里。

干杯!

资源

-iWant GitHub


via: https://www.ostechnix.com/iwant-decentralized-peer-peer-file-sharing-commandline-application/

作者:SK 选题:lujun9972 译者:MjSeven 校对:wxy

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

以下提到的这些 Python 工具在编辑图像、操作图像底层数据方面都提供了简单直接的方法。

当今的世界充满了数据,而图像数据就是其中很重要的一部分。但只有经过处理和分析,提高图像的质量,从中提取出有效地信息,才能利用到这些图像数据。

常见的图像处理操作包括显示图像,基本的图像操作,如裁剪、翻转、旋转;图像的分割、分类、特征提取;图像恢复;以及图像识别等等。Python 作为一种日益风靡的科学编程语言,是这些图像处理操作的最佳选择。同时,在 Python 生态当中也有很多可以免费使用的优秀的图像处理工具。

下文将介绍 10 个可以用于图像处理任务的 Python 库,它们在编辑图像、查看图像底层数据方面都提供了简单直接的方法。

1、scikit-image

scikit-image 是一个结合 NumPy 数组使用的开源 Python 工具,它实现了可用于研究、教育、工业应用的算法和应用程序。即使是对于刚刚接触 Python 生态圈的新手来说,它也是一个在使用上足够简单的库。同时它的代码质量也很高,因为它是由一个活跃的志愿者社区开发的,并且通过了 同行评审 peer review

资源

scikit-image 的文档非常完善,其中包含了丰富的用例。

示例

可以通过导入 skimage 使用,大部分的功能都可以在它的子模块中找到。

图像滤波 image filtering

import matplotlib.pyplot as plt
%matplotlib inline

from skimage import data,filters

image = data.coins() # ... or any other NumPy array!
edges = filters.sobel(image)
plt.imshow(edges, cmap='gray')

 title=

使用 match\_template() 方法实现 模板匹配 template matching

 title=

展示页面可以看到更多相关的例子。

2、NumPy

NumPy 提供了对数组的支持,是 Python 编程的一个核心库。图像的本质其实也是一个包含像素数据点的标准 NumPy 数组,因此可以通过一些基本的 NumPy 操作(例如切片、 掩膜 mask 花式索引 fancy indexing 等),就可以从像素级别对图像进行编辑。通过 NumPy 数组存储的图像也可以被 skimage 加载并使用 matplotlib 显示。

资源

在 NumPy 的官方文档中提供了完整的代码文档和资源列表。

示例

使用 NumPy 对图像进行 掩膜 mask 操作:

import numpy as np
from skimage import data
import matplotlib.pyplot as plt
%matplotlib inline

image = data.camera()
type(image)
numpy.ndarray #Image is a NumPy array:

mask = image < 87
image[mask]=255
plt.imshow(image, cmap='gray')

 title=

3、SciPy

像 NumPy 一样,SciPy 是 Python 的一个核心科学计算模块,也可以用于图像的基本操作和处理。尤其是 SciPy v1.1.0 中的 scipy.ndimage 子模块,它提供了在 n 维 NumPy 数组上的运行的函数。SciPy 目前还提供了 线性和非线性滤波 linear and non-linear filtering 二值形态学 binary morphology B 样条插值 B-spline interpolation 对象测量 object measurements 等方面的函数。

资源

官方文档中可以查阅到 scipy.ndimage 的完整函数列表。

示例

使用 SciPy 的高斯滤波对图像进行模糊处理:

from scipy import misc,ndimage

face = misc.face()
blurred_face = ndimage.gaussian_filter(face, sigma=3)
very_blurred = ndimage.gaussian_filter(face, sigma=5)

#Results
plt.imshow(<image to be displayed>)

 title=

4、PIL/Pillow

PIL (Python Imaging Library) 是一个免费 Python 编程库,它提供了对多种格式图像文件的打开、编辑、保存的支持。但在 2009 年之后 PIL 就停止发布新版本了。幸运的是,还有一个 PIL 的积极开发的分支 Pillow,它的安装过程比 PIL 更加简单,支持大部分主流的操作系统,并且还支持 Python 3。Pillow 包含了图像的基础处理功能,包括像素点操作、使用内置卷积内核进行滤波、颜色空间转换等等。

资源

Pillow 的官方文档提供了 Pillow 的安装说明自己代码库中每一个模块的示例。

示例

使用 Pillow 中的 ImageFilter 模块实现图像增强:

from PIL import Image,ImageFilter
#Read image
im = Image.open('image.jpg')
#Display image
im.show()

from PIL import ImageEnhance
enh = ImageEnhance.Contrast(im)
enh.enhance(1.8).show("30% more contrast")

 title=

5、OpenCV-Python

OpenCV(Open Source Computer Vision 库)是计算机视觉领域最广泛使用的库之一,OpenCV-Python 则是 OpenCV 的 Python API。OpenCV-Python 的运行速度很快,这归功于它使用 C/C++ 编写的后台代码,同时由于它使用了 Python 进行封装,因此调用和部署的难度也不大。这些优点让 OpenCV-Python 成为了计算密集型计算机视觉应用程序的一个不错的选择。

资源

入门之前最好先阅读 OpenCV2-Python-Guide 这份文档。

示例

使用 OpenCV-Python 中的 金字塔融合 Pyramid Blending 将苹果和橘子融合到一起:

 title=

6、SimpleCV

SimpleCV 是一个开源的计算机视觉框架。它支持包括 OpenCV 在内的一些高性能计算机视觉库,同时不需要去了解 位深度 bit depth 、文件格式、 色彩空间 color space 之类的概念,因此 SimpleCV 的学习曲线要比 OpenCV 平缓得多,正如它的口号所说,“将计算机视觉变得更简单”。SimpleCV 的优点还有:

  • 即使是刚刚接触计算机视觉的程序员也可以通过 SimpleCV 来实现一些简易的计算机视觉测试
  • 录像、视频文件、图像、视频流都在支持范围内

资源

官方文档简单易懂,同时也附有大量的学习用例。

示例

 title=

7、Mahotas

Mahotas 是另一个 Python 图像处理和计算机视觉库。在图像处理方面,它支持滤波和形态学相关的操作;在计算机视觉方面,它也支持 特征计算 feature computation 兴趣点检测 interest point detection 局部描述符 local descriptors 等功能。Mahotas 的接口使用了 Python 进行编写,因此适合快速开发,而算法使用 C++ 实现,并针对速度进行了优化。Mahotas 尽可能做到代码量少和依赖项少,因此它的运算速度非常快。可以参考官方文档了解更多详细信息。

资源

文档包含了安装介绍、示例以及一些 Mahotas 的入门教程。

示例

Mahotas 力求使用少量的代码来实现功能。例如这个 Finding Wally 游戏:

 title=

 title=

8、SimpleITK

ITK(Insight Segmentation and Registration Toolkit)是一个为开发者提供普适性图像分析功能的开源、跨平台工具套件,SimpleITK 则是基于 ITK 构建出来的一个简化层,旨在促进 ITK 在快速原型设计、教育、解释语言中的应用。SimpleITK 作为一个图像分析工具包,它也带有大量的组件,可以支持常规的滤波、图像分割、 图像配准 registration 功能。尽管 SimpleITK 使用 C++ 编写,但它也支持包括 Python 在内的大部分编程语言。

资源

有很多 Jupyter Notebooks 用例可以展示 SimpleITK 在教育和科研领域中的应用,通过这些用例可以看到如何使用 Python 和 R 利用 SimpleITK 来实现交互式图像分析。

示例

使用 Python + SimpleITK 实现的 CT/MR 图像配准过程:

 title=

9、pgmagick

pgmagick 是使用 Python 封装的 GraphicsMagick 库。GraphicsMagick 通常被认为是图像处理界的瑞士军刀,因为它强大而又高效的工具包支持对多达 88 种主流格式图像文件的读写操作,包括 DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM、TIFF 等等。

资源

pgmagick 的 GitHub 仓库中有相关的安装说明、依赖列表,以及详细的使用指引

示例

图像缩放:

 title=

边缘提取:

 title=

10、Pycairo

Cairo 是一个用于绘制矢量图的二维图形库,而 Pycairo 是用于 Cairo 的一组 Python 绑定。矢量图的优点在于做大小缩放的过程中不会丢失图像的清晰度。使用 Pycairo 可以在 Python 中调用 Cairo 的相关命令。

资源

Pycairo 的 GitHub 仓库提供了关于安装和使用的详细说明,以及一份简要介绍 Pycairo 的入门指南

示例

使用 Pycairo 绘制线段、基本图形、 径向渐变 radial gradients

 title=

总结

以上就是 Python 中的一些有用的图像处理库,无论你有没有听说过、有没有使用过,都值得试用一下并了解它们。


via: https://opensource.com/article/19/3/python-image-manipulation-tools

作者:Parul Pandey 选题:lujun9972 译者:HankChow 校对:wxy

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

一篇介绍如何在你的生活中和设备里去 Google 化的文章。

最近人们经常问我有关我手机的事情,比如安卓怎么安装,怎样绕过 Google Service 使用手机。好吧,这篇文章就来详细的解决那些问题。我尽可能让这篇文章适合初学者,因此我会慢慢介绍,一个一个来讲并且附上截图,你就能更好地看到它是怎样运作的。

首先我会告诉你为什么 Google Services(在我看来)对你的设备不好。我可以一言以概之,并让你看 Richard Stallman 写的这篇文章,但我决定抓住几个要点附在这。

  • 要用 非自由软件 Nonfree software

    • 大体上,大多数 Google Services 需要运行在非自由的 Javascript 代码之上。现如今,如果禁用掉 Javascript,什么都没有了,甚至 Google 帐号都需要运行非自由软件(由站点发送的 JavaScript),对于登录也是。
  • 被监视

    • Google 悄悄地把它的 广告跟踪方式 ad-tracking profiles 与浏览方式结合在一起,并存储了每个用户的大量数据。
  • 服务条款

    • Google 会终止转卖了 Pixel 手机的用户账户。他们无法访问帐户下保存在 Google Services 中的所有邮件和文档。
  • 审查

    • Amazon 和 Google 切断了 域前置 domain-fronting ,该技术能使身处某些国家的人们访问到在那里禁止的通信系统。
    • Google 已经同意为巴基斯坦政府执行特殊的 Youtube 审查,删除对立观点。这将有助于压制异议。
    • Youtube 的“content ID”会自动删除已发布的视频,这并不包含在版权法中。

这只是几个原因,你可以阅读上面我提到的 RMS 的文章,他详细解释了这几点。尽管听起来骇人听闻,但这些行为在现实生活中已经每天在发生。

下一步,我的搭建教程

我有一款小米红米 Note 5 Pro 智能手机(代号 whyred),生产于中国的小米。它是 4 个月之前(距写这篇文章的时候)我花了大约 185 欧元买的。

现在你也许会想,“但你为什么买中国品牌,他们不可靠”。是的,它不是通常你所期望的(品牌)所生产的,例如三星(人们通常会将它和安卓联系在一起,这显然是错的)、一加、诺基亚等。但你应当知道几乎所有的手机都生产于中国。

我选择这款手机有几个原因,首先当然是价格。它是一款 性价比 budget-friendly 相当高的产品,大多数人都能买得起。下一个原因是说明书上的规格(不仅仅是),在这个 价位 price tag 上相当合适。拥有 6 英尺屏幕( 全高清分辨率 Full HD resolution ),4000 毫安电池(一流的电池寿命),4GB RAM,64GB 存储,双后摄像头(12 MP + 5 MP),一个带闪光灯的前摄像头(13 MP)和一个高性能的 骁龙 Snapdragon 636,它可能是那时候最好的选择。

随之而来的问题是 MIUI,大多数小米设备所附带的安卓外壳(除了 Android One 项目设备)。是的,它没有那么可怕,它有一些额外的功能,但问题在更深的地方。小米设备如此便宜(据我所知销售利润仅有 5-10%)的一个原因是他们在系统里伴随 MIUI 添加了数据挖掘和广告。这样的话,系统应用需要额外不必要的权限来获取你的数据并且进行广告轰炸,从中获取利润。

更有趣的是,所包含的“天气”应用想要访问我的联系人并且拨打电话,如果它仅是显示天气的话为什么需要访问联系人呢。另一个例子是“录音机”应用,它也需要联系人和网络权限,可能想把录音发送回小米。

为了解决它,我不得不格式化手机并且摆脱 MIUI。在市场上近来的手机上这就变得极为艰难。

格式化手机的想法很简单,删除掉现有的系统然后安装一个新的喜欢的系统(这次是原生安卓)。为了实现它,你先得解锁 bootloader

bootloader 是一个在计算机完成自检后为其加载操作系统或者运行环境的计算机程序。—维基百科

问题是小米关于解锁 bootloader 有明确的政策。几个月之前,流程就像这样:你需向小米申请解锁代码,并提供真实的原因,但不是每次都成功,因为他们可以拒绝你的请求并且不提供理由。

现在,流程变了。你要从小米那下载一个软件,叫做 Mi Unlock,在 Windows 电脑上安装它,在手机的开发者模式中打开调试选项,重启到 bootloader 模式(关机状态下长按向下音量键 + 电源键)并将手机连接到电脑上,开始一个叫做“许可”的流程。这个过程会在小米的服务器上启动一个定时器,允许你在 15 天之后解锁手机(在一些少数情况下或者一个月,完全随机)。

15 天过去后,重新连接手机并重复之前的步骤,这时候按下解锁键,你的 bootloader 就会解锁,并且能够安装其他 ROM(系统)。注意,确保你已经备份好了数据,因为解锁 bootloader 会清空手机。

下一步就是找一个兼容的系统(ROM)。我在 XDA 开发者论坛上找了个遍,它是 Android 开发者和用户们交流想法、应用等东西的地方。幸运的是,我的手机相当流行,因此论坛上有它专门的版块。在那儿,我略过一些流行的 ROM 并决定使用 AOSiP ROM。(AOSiP 代表 安卓开源 illusion 项目 Android Open Source illusion Project

校订:有人发邮件告诉我说文章里写的就是/e/的目的与所做的事情。我想说谢谢你的帮助,但完全不是这样。我关于 /e/ 的看法背后的原因可以见此网站,但我仍会在此列出一些原因。

eelo 是一个从 Kickstarter 和 IndieGoGo 上集资并超过 200K € 的“基金会”,承诺创造一个开放、安全且保护隐私的移动 OS 和网页服务器。

  1. 他们的 OS 基于 LineageOS 14.1 (Android 7.1) 且搭载 microG 和其他开源应用,此系统已经存在很长一段时间了并且现在叫做 Lineage for microG
  2. 所有的应用程序并非从源代码构建,而是从 APKPure 上下载安装包并推送进 ROM,不知道那些安装包中是否包含 专有代码 proprietary code 恶意软件 malware
  3. 有一段时间,它们就那样随意地从代码中删除 Lineage 的 版权标头 copyright header 并加入自己的。
  4. 他们喜欢删除负面反馈并且监视用户 Telegram 群聊中的舆论。

总而言之,我不建议使用 /e/ ROM。(至少现在)

另一件你有可能要做的事情是获取手机的 root 权限,让它真正的成为你的手机,并且修改系统中的文件,例如使用系统范围的 adblocker 等。为了实现它,我决定使用 Magisk,一个天赐的应用,它由一个学生开发,可以帮你获取设备的 root 权限并安装一种叫做模块的东西,基本上是软件。

下载 ROM 和 Magisk 之后,我得在手机上安装它们。为了完成安装,我将文件移动到了 SD 卡上。现在,若要安装系统,我需要使用 恢复系统。我用的是较为普遍的 TWRP(代表 TeamWin Recovery Project)。

要安装恢复系统(听起来有点难,我知道),我需要将文件烧录进手机。为了完成烧录,我将手机用一个叫做 ADB 的工具连接上电脑(Fedora Linux 系统)。使用命令让自己定制的恢复系统覆盖掉原先的。

fastboot flash recovery twrp.img

完成之后,我关掉手机并按住音量上和电源键,直到 TWRP 界面显示。这意味着我进行顺利,并且它已经准备好接收我的指令。

下一步是发送擦除命令,在你第一次为手机安装自定义 ROM 时是必要的。如上图所示,擦除命令会清除掉 数据 Data 缓存 Cache 和 Dalvik 。(这里也有高级选项让我们可以勾选以删除掉系统,如果我们不再需要旧系统的话)

这需要几分钟去完成,之后,你的手机基本上就干净了。现在是时候安装系统了。通过按下主屏幕上的安装按钮,我们选择之前添加进的 zip 文件(ROM 文件)并滑动屏幕安装它。下一步,我们需要安装 Magisk,它可以给我们访问设备的 root 权限。

校订:一些有经验的安卓用户或发烧友也许注意到了,手机上不包含 [GApps](谷歌应用)。这在安卓世界里称之为 GApps-less,一个 GAps 应用也不安装。

注意有一个不好之处在于若不安装 Google Services 有的应用无法正常工作,例如它们的通知也许会花更长的时间到达或者根本不起作用。(对我来说这一点是最影响应用程序使用的)原因是这些应用使用了 Google Cloud Messaging(现在叫做 Firebase)唤醒手机并推送通知。

你可以通过安装使用 microG(部分地)解决它,microG 提供一些 Google Services 的特性且允许你拥有更多的控制。我不建议使用它,因为它仍然有助于 Google Services 并且你不一定信任它。但是,如果你没法 立刻放弃使用 go cold turkey on it ,只想慢慢地退出谷歌,这便是一个好的开始。

都成功地安装之后,现在我们重启手机,就进入了主屏幕。

下一个部分,安装应用并配置一切

事情开始变得简单了。为了安装应用,我使用了 F-Droid,一个可替代的应用商店,里面只包含自由及开源应用。如果这里没有你要的应用,你可以使用 Aurora Store,一个从应用商店里下载应用且不需要使用谷歌帐号或被追踪的客户端。

F-Droid 里面有名为 repos 的东西,它是一个包含你可以安装应用的“仓库”。我使用默认的仓库,并从 IzzyOnDroid 添加了另一个,它有更多默认仓库中没有的应用,并且它更新地更频繁。

从下面你可以发现我所安装的应用清单,它们替代的应用与用途。

  • AdAway > 系统广告拦截器,使用 hosts 文件拦截所有的广告
  • AfWall+ > 一个防火墙,可以阻止不想要的连接
  • Amaze > 替代系统的文件管理器,允许文件的 root 访问权限,并且拥有 zip/unzip 功能
  • Ameixa > 大多数应用的图标包
  • andOTP > 替代谷歌验证器/Authy,一个可以用来登录启用了 双因子验证 2FA 的网站账户的 TOTP 应用,可以使用 PIN 码备份和锁定
  • AnySoftKeyboard/AOSP Keyboard > 开源键盘,它有许多主题和语言包,我也是该项目的一员
  • Audio Recorder > 如其名字,允许你从麦克风录制不同格式的音频文件
  • Battery Charge Limit > 当到 80% 时自动停止充电,降低 电池磨损 battery wear 并增加寿命
  • DAVx5 > 这是我最常用的应用之一,对我来说它基本上替代了谷歌联系人、谷歌日历和谷歌 Tasks,它连接着我的 Nextcloud 环境可以让我完全控制自己的数据
  • Document Viewer > 一个可以打开数百种文件格式的查看器应用,快速、轻量
  • Deezloader Remix > 让我可以在 Deezer 上下载高质量 MP3 的应用
  • Easy xkcd > xkcd 漫画阅读器,我喜欢这些 xkcd 漫画
  • Etar > 日历应用,替代谷歌日历,与 DAVx5 一同工作
  • FastHub-Libre > 一个 GitHub 客户端,完全 FOSS(自由及开源软件),非常实用如果你像我一样喜欢使用 Github 的话
  • Fennec F-Droid > 替代谷歌 Chrome 和其他类似的应用,一个为 F-Droid 打造的火狐浏览器,不含专有二进制代码并允许安装扩展提升浏览体验
  • Gadgetbridge > 替代小米运动,可以用来配对小米硬件的应用,追踪你的健康、步数、睡眠等。
  • K-9 Mail > 邮件客户端,替代 GMail 应用,可定制并可以添加多个账户
  • Lawnchair > 启动器,可以替代 Nova Launcher 或 Pixel Launcher,允许自定义和各种改变,也支持图标包
  • Mattermost > 可以连接 Mattermost 服务器的应用。Mattermost 是一个 Slack 替代品
  • NewPipe > 最好的 YouTube 客户端(我认为),可以替代 YoubTube,它完全是 FOSS,免除 YouTube 广告,占用更少空间,允许背景播放,允许下载视频/音频等。试一试吧
  • Nextcloud SMS > 允许备份/同步 SMS 到我的 Nextcloud 环境
  • Nextcloud Notes > 允许我创建,修改,删除,分享笔记并同步/备份到 Nextcloud 环境
  • OpenTasks > 允许我创建、修改、删除任务并同步到我的 Nextcloud 环境
  • OsmAnd~ > 一个地图应用,使用 OpenStreetMap,允许下载离线地图和导航
  • QKSMS > 我最喜欢的短信应用,可以替代原来的 Messaging 应用,拥有漂亮的界面,拥有备份、个性化、延迟发送等特性。
  • Resplash/Mysplash > 允许你无限地从 Unsplash 下载无数的漂亮壁纸,全都可以免费使用和修改。
  • ScreenCam > 一个录屏工具,允许各样的自定义和录制模式,没有广告并且免费
  • SecScanQR > 二维码识别应用,快速轻量
  • Send Reduced Free > 这个应用可以在发送之前通过移除 PII( 个人识别信息 personally identifiable information )和减小尺寸,让你立即分享大图
  • Slide > 开源 Reddit 客户端
  • Telegram FOSS > 没有追踪和 Google Services 的纯净版 Telegram 安卓客户端
  • TrebleShot > 这个天才般的应用可以让你通过 WIFI 分享文件给其它设备,真的超快,甚至无需连接网络
  • Tusky > Tusky 是 Mastodon 平台的客户端(替代 Twitter)
  • Unit Converter Ultimate > 这款应用可以一键在 200 种单位之间来回转换,非常快并且完全离线
  • Vinyl Music Player > 我首选的音乐播放器,可以替代谷歌音乐播放器或其他你已经安装的音乐播放器,它有漂亮的界面和许多特性
  • VPN Hotspot > 这款应用可以让我打开热点的时候分享 VPN,因此我可以在笔记本上什么都不用做就可以安全地浏览网页

这些差不多就是我列出的一张最实用的 F-Droid 应用清单,但不巧,这些并不是所有应用。我使用的专有应用如下(我知道,我也许听起来是一个伪君子,但并不是所有的应用都可以替代,至少现在不是):

  • Google Camera(与 Camera API 2 结合起来,需要 F-Droid 的基本的 microG 才能工作)
  • Instagram
  • MyVodafoneAL (运营商应用)
  • ProtonMail (email 应用)
  • Titanium Backup(备份应用数据,wifi 密码,通话记录等)
  • WhatsApp (专有的端到端聊天应用,几乎我认识的所有人都有它)

差不多就是这样,这就是我用的手机上所有的应用。配置非常简单明了,我可以给几点提示

  1. 仔细阅读和检查应用的权限,不要无脑地点“安装”。
  2. 尽可能多地使用开源应用,它们即尊重你的隐私又是免费的(且自由)。
  3. 尽可能地使用 VPN,找一个有名气的,别用免费的,否则你将被收割数据然后成为产品。
  4. 不要一直打开 WIFI/移动数据/定位,有可能引起安全隐患。
  5. 不要只依赖指纹解锁,或者尽可能只用 PIN/密码/模式解锁,因为生物数据可以被克隆后针对你,例如解锁你的手机盗取你的数据。

作为坚持读到这儿的奖励,一张主屏幕的截图奉上。


via: https://lushka.al/my-android-setup/

作者:Anxhelo Lushka 选题:lujun9972 译者:LuuMing 校对:wxy

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