标题党来了,给王垠大神的名作狗尾续貂一把。注意,本文标题虽大但内容有局限性,如果你不喜欢红帽系,不喜欢 gnome,日常开发也用不到文中提到的工具、技术栈,那么其对你来说没有太大参考价值。
V 站最近讨论日常工作使用 Linux 的帖子又多起来了。有人依旧安利了一批发行版;有人认为 duck 不必花在自己不熟悉的东西上花时间;很多跃跃欲试的 V 友对此也颇有疑虑。 我呢,从 2012 年至今,一直在 fedora 上进行日常的开发工作,工作和研究方向是爬虫、微服务、容器技术、开发方法论、devops。可以说是越用越爽。借此机会来分享作为一个程序猿“完全用 Linux 工作”的体验,希望能帮上大家的忙。
本人并不喜欢折腾(大误),所以一直用的 fedora 默认桌面版——gnome 那个。中间升级过两、三次版本,目前在用 fedora30。 硬件方面用过几台 DELL 商务机、xps 和 thinkpad。双屏。
n 卡显卡驱动 系统默认装的是开源驱动,显示效果不佳,所以必须安装官方驱动。 我的显卡一直是 n 卡,参考这篇就没错了: https://www.if-not-true-then-false.com/2015/fedora-nvidia-guide/
原生支持双屏 设置非常简单,在 Displays 里。
有时显卡驱动更新不及时会导致兼容问题,所以需要排除内核更新:
/etc/dnf/dnf.conf 文件加一行
exclude=kernel*
提高安装速度
/etc/dnf/dnf.conf 文件加一行
fastestmirror=True
增加源
sudo dnf install --nogpgcheck https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
查找所缺少依赖库所在软件包,例如:
dnf provides */libQt5X11Extras.so.5
然后就可以根据显示的来进行安装了。
如果操作系统安装时语言选择的中文,字体默认应该是思源字体。效果还可以,不需要调整。
用的 cisco anyconnect。fedora 也原生支持。 配置添加好 VPN 后,在 Keyboard 中配置俩快捷键,比如 Shift+Ctrl++的命令是:
nmcli con up xxxx 你配置的 VPN 名字 xxxx
Shift+Ctrl+-的命令是:
nmcli con down xxxx 你配置的 VPN 名字 xxxx
就能实现一键出国 /回国啦
101
geligaoli 2019-12-12 11:31:22 +08:00
真正用 linux 工作的人,用的都是 archlinux。而且多年前就这样啦。
|
102
mgrddsj 2019-12-12 11:43:47 +08:00
@photon006 #97 其实 Windows 版的 Chrome 也有切换 tab 的,是 Ctrl + 数字。另外我记得 Linux 下的 Chrome 也是 Ctrl + 数字 吧?
|
104
pipapa 2019-12-12 12:14:30 +08:00 via Android
fedora 也就图一乐,真用还得 Archlinux
|
105
mlyy 2019-12-12 13:00:47 +08:00 via iPhone
虽然本人也是 arch 选手,但是 arch 自动升级 python, tensorflow 还有 postgresql,php 真的很崩溃。
|
106
charlie21 2019-12-12 13:07:00 +08:00
来看看如果抱着折腾 linux 的精神在 windows 上一顿操作 会是什么感觉
http://www.ishenping.com/ArtInfo/419102.html |
107
reus 2019-12-12 13:14:22 +08:00 via Android
@amaranthf 能不能先实现出来,再来说话?我一开始就让他实现,结果他没有实现,转战千里,连“自绝于人民”都出来了。如果我是你,想反驳我,那我会直接用事实说话,用代码说话,直接显示在 windows 下实现同样的效果也不费功夫。但他没有,你也没有,有什么说服力?
你是不是不会写代码?是不是写任何代码对你来讲都是一样的,都是不会? 拿点干货出来,不要闪避,不然没有讨论的价值。 |
108
reus 2019-12-12 13:27:37 +08:00 via Android
@amaranthf 另外,就 gnome 来讲,是有在线的扩展仓库的,浏览器点一下就能用别人写好的扩展,不用写代码,不会写代码的人也能用现成的扩展。
|
110
reus 2019-12-12 14:04:15 +08:00 1
@skyrem https://gist.github.com/reusee/c8dbba4d2172352870a8e0349fd1b2f1
我没试过双屏,mutter 是支持多个显示器的,display 类里有相应的 api: https://gjs-docs.gnome.org/meta4~4_api/meta.display 上面的是 js 的文档,C 的文档信息更全一些: https://developer.gnome.org/meta/stable/ |
111
amaranthf 2019-12-12 14:19:57 +08:00
@reus 呃,我又没这需求,实现那个干啥?我只是从十来年 windows 编程的经验来说可以实现而已,你不信就算了呗。
|
112
yanqiyu 2019-12-12 14:28:15 +08:00
@amaranthf Windows 上当然可以实现类似的功能, 但是 Windows 并没有提供桌面扩展开发的文档(或者说 Windows 上实现桌面自定义扩展都很 dirty)
|
113
yanqiyu 2019-12-12 14:34:59 +08:00
@geligaoli
干活用 Arch 太折腾了, 并且 Arch 的包管理不太可靠的样子. 最主要的问题是 Arch 包管理依赖粒度是包而不是文件, 这就会导致由于 sobump 而不被满足的依赖关系被掩盖. 然后结果就是部分更新可能导致整个系统崩盘. 所以 Arch **不支持部分更新**, 因为 pacman 并不能处理部分更新带来的复杂的依赖问题. 我很喜欢 Arch 所主张的 KISS 原则, 但是设计上的 Simple 有时候会成为用户的麻烦. 结果就是你可能需要保持更新, 一段时间没有更新的系统想要更新就很危险了. |
114
12101111 2019-12-12 14:56:21 +08:00
Archlinux 也就图一乐,真用还得 Gentoo Linux
|
115
zjsxwc 2019-12-12 14:58:37 +08:00
全年 Deepin 路过
|
117
reus 2019-12-12 15:07:54 +08:00
@yanqiyu 可以用 nix: https://wiki.archlinux.org/index.php/Nix,甚至直接用 nixos。不过 arch 就算升级挂了,直接重新 pacstrap 覆盖一遍就是了。
|
118
amaranthf 2019-12-12 15:12:03 +08:00 1
@yanqiyu 定位不同而已,windows 认为一个应用程序是由开发者设计好怎么用,最终用户只需要遵循开发者的规则使用即可,linux 认为用户就是开发者,所以规则可以由开发者自己来定,而桌面管理器也就是这样一款应用而已。
后者固然有好处,但是相应的,很多工具不定制的话就很难用,因为工具开发者倾向于既然有了定制性,默认配置下的用户体验就不那么重要。 甚至多说两句,现在很多开发者愈发倾向于,定制性没有多好,用户体验也依然我行我素。举个栗子,早年的复选框,点击文字或者点击方框本身都有点击效果,这是 Windows 给开发者直接定好的,控件本身就是这么设计的,后来网页应用流行起来,html 提供的复选框没有这功能,如果要实现这功能就需要开发者自己将对应文字的点击绑定到复选框上面,这时候就有大量的开发者做出方框和文本独立的复选框了,即点了文字毫无效果。——这就是定制性增加,体验反而下降的一个例子。 另一个例子是键盘操作,有多人知道早期的 Windows 程序都是可以全靠键盘来操作的?我指的不是鼠标键这种模拟性质的东西,而是 windows 上面你所看到的几乎所有窗口元素都是有快捷键可以直接按下的,比如 Alt+下划线字母直接访问菜单项,这也是 windows 控件内置的功能,开发者只需要加一个 & 符号即可实现。而后面 directui 流行起来之后,各种 UI 库开发者们也自己定制各种行为,然后现在你就会发现相当多的图形 app 都没办法用键盘快捷操作了,好一点的可以不停的按 tab 来定位,差一点的你按 tab 键都不知道焦点去哪儿了,啧。 |
119
reus 2019-12-12 15:28:14 +08:00
@amaranthf <label>foo<input type="checkbox" /></label> 这样就能实现点 foo 的时候控制 checkbox,你举了一个错误的例子。
另外就算是 linux,也不是所有桌面环境都和 gnome 有同样的取向。例如 KDE 就更像 windows,交互习惯和 windows 差不多,也不注重可编程性。所以你认为的“linux 认为用户就是开发者”,也是不对的。 |
120
Rheinmetal 2019-12-12 15:55:48 +08:00
|
122
charlie21 2019-12-12 16:12:07 +08:00
|
123
charlie21 2019-12-12 16:14:39 +08:00
这里我已经说了 专业和业余的区别,宝瓶时代就是一个业余程序员当道的时代
https://www.v2ex.com/t/627183 |
125
reus 2019-12-12 16:28:57 +08:00
@Rheinmetal 我知道 autohotkey 可以做到自动控制,也有基于它的窗口管理器: https://github.com/zovt/Tilde-AHK,也是 inspired by AwesomeWM。但是开发早就停了,你提到的项目也是。
|
126
KentY 2019-12-12 17:12:06 +08:00
@charlie21 "git 入门教程之 git bash 竟然不支持 tree 命令"
不光 git bash 没有 tree; bash, zsh 这些都没有 tree tree 是要单独安装的软件包. 跟 bash 一点关系都没有. 同样, "bash 竟然没有 maven, bash 竟然没有 git" |
127
secondwtq 2019-12-12 21:04:51 +08:00
@amaranthf #118
"工具开发者倾向于既然有了定制性,默认配置下的用户体验就不那么重要" 这样的理解是不对的,我相信 sane default 是每个平台的开发者的目标 Linux 下的某些程序之所以默认配置“体验”不是很“好”,高定制性确实有很大的因素,但并不是因为开发者不想做好 很多 Linux 程序的高定制性允许用户和开发者在很多细节上做出完全相反的选择。用户在使用一个可定制的程序时,只需要认同它的核心交互思想即可,因为其他东西都允许定制。而这个程序对于作者来说可能就是一个个人项目,于是作者把默认配置做成自己用起来最顺手的,然后搞一个配置项来跟用户求同存异。对于这种项目不存在“最优的默认配置”,甚至可以把“最简配置”(也就是下限 ...)看做“最优配置”。极端情况下,作者的用法可能和大多数“主流”用户的用法都完全不同。 也有可能是十年前作者设置了个默认值,之后想改也不方便改了。 Linux 开源软件普遍的非盈利性也确保了作者的意志能够得到贯彻。实际上就算是盈利的软件,也不是什么用户都能教人家做产品的。 |
128
secondwtq 2019-12-12 21:15:10 +08:00
@secondwtq
对于不可定制的程序来说,用户觉得哪一处严重影响体验了,那可能就直接不用了。 这就是定制性高的程序的客观优势:一个可定制的软件可以适应更多人的需求。就算用户不会定制,也有各种傻逼包帮你定制。 上面是单就“定制性”这个问题来讨论。当然不得不承认的是,很多 Linux 程序所谓的“定制性”也没多高。理想中完全可定制的程序可以适应所有人的需求——当然这种软件并不存在于一般大众意义上的“软件”范畴中(但是拥有极高可定制性的软件是存在的——就是通用编程语言 ...)。Linux 所谓的“可定制”对于大多数人来说只是 cover 了一些特殊情况而已。 |
130
FrankHB 2019-12-14 15:07:03 +08:00
所谓优势:
12 不管是 Windows 还是 Linux 大都一样(除了多了最开始下载安装 MSYS2 或者打开 WSL 并配置发行版这样的操作)。能在日常应用下出区别的要么是用到了依赖具体系统还找不到备胎的东西,要么就是基本没入门。 3 对开发者来讲也不应该是问题(虽然明显是 Windows 处理方式更蠢,但日常习惯变成了 Windows 的形状的,没什么资格计较)。 |
131
FrankHB 2019-12-14 15:08:54 +08:00
@secondwtq 编程语言又不是语言的实现,有几个能写出 formal spec 具有可编程性能让用户改的?一般用户撑死就是糊点库制造更多的兼容包袱。
|
132
FrankHB 2019-12-14 15:13:43 +08:00
@amaranthf “因为工具开发者倾向于既然有了定制性,默认配置下的用户体验就不那么重要。”
连 convention over configuration 都不知道的开发者就别设计接口污染用户体验了,老实糊库的实现去。 |
133
flynaj 2019-12-14 22:30:20 +08:00 via Android
Linux 不折腾你还是用 Debian。
|
134
masker0817 2019-12-18 15:12:37 +08:00 via Android
Linux + PCI pass through + Windows 10 + Looking Glass
各位可以一试,我觉得基本所有都不缺了。台式机用得很爽。 |
135
qbqbqbqb 2019-12-29 17:06:21 +08:00
别的都还行,但是“scp 命令方便”?
用鼠标把文件从 explorer 里往 WinSCP 里一拖,不香吗? |
137
wangyadong 2020-11-12 14:48:32 +08:00
@nsynet #18 你好, 请问 github 的 Wiki 还在维护吗 ? 方便发个链接吗?
|
138
fugu37 2021-01-05 20:12:07 +08:00
@cmdOptionKana 新知识 get! KDE 下也能用。
|