Kevin Sonney 发布的文章

在我们的 20 个使用开源提升生产力的系列的第十四篇文章中用 twin 模拟了老式的 DESQview 体验。

去年,我在 19 天里给你介绍了 19 个新(对你而言)的生产力工具。今年,我换了一种方式:使用你在使用或者还没使用的工具,构建一个使你可以在新一年更加高效的环境。

通过 twin 克服“一个屏幕,一个应用程序”的限制

还有人记得 DESQview 吗?我们在 Windows、Linux 和 MacOS 中理所当然地可以在屏幕上同时运行多个程序,而 DESQview 赋予了 DOS 同样的功能。在我运营拨号 BBS 服务的初期,DESQview 是必需的,它使我能够让 BBS 在后台运行,同时在前台进行其他操作。例如,当有人拨打电话时,我可能正在开发新功能或设置新的外部程序而不会影响他们的体验。后来,在我早期做支持工作的时候,我可以同时运行我的工作电子邮件(MHS 上的 DaVinci 电子邮件)、支持单据系统和其他 DOS 程序。这是令人吃惊的!

 title=

从那时起,运行多个控制台应用程序的功能已经发展了很多。但是 tmuxScreen 等应用仍然遵循“一个屏幕,一个应用”的显示方式。好吧,是的,tmux 具有屏幕拆分和窗格,但是不像 DESQview 那样具有将窗口“浮动”在其他窗口上的功能,就我个人而言,我怀念那个功能。

让我们来看看 twin(文本模式窗口环境)。我认为,这个相对年轻的项目是 DESQview 的精神继任者。它支持控制台和图形环境,并具有与会话脱离和重新接驳的功能。设置起来并不是那么容易,但是它可以在大多数现代操作系统上运行。

Twin 是从源代码安装的(现在是这样)。但是首先,你需要安装所需的开发库。库名称将因操作系统而异。 以下示例显示了在我的 Ubuntu 19.10 系统中的情况。一旦安装了依赖库,请从 Git 中检出 twin 源代码,并运行 ./configuremake,它们应自动检测所有内容并构建 twin:

sudo apt install libx11-dev libxpm-dev libncurses-dev zlib1g-dev libgpm-dev
git clone [email protected]:cosmos72/twin.git
cd twin
./configure
make
sudo make install

注意:如果要在 MacOS 或 BSD 上进行编译,则需要在运行 make 之前在文件 include/Tw/autoconf.hinclude/twautoconf.h 中注释掉 #define socklen_t int。这个问题应该在 twin #57 解决了。

 title=

第一次调用 twin 是一个挑战。你需要通过 --hw 参数告诉它正在使用哪种显示。例如,要启动文本模式的 twin,请输入 twin --hw=tty,TERM=linux。这里指定的 TERM 变量替代了你当前 Shell 中终端变量。要启动图形版本,运行 twin --hw=X@$DISPLAY。在 Linux 上,twin 一般都“可以正常工作”,而在 MacOS 上,Twin 基本是只能在终端上使用。

真正的乐趣是可以通过 twattachtwdisplay 命令接驳到正在运行的会话的功能。它们使你可以接驳到其他正在运行的 twin 会话。例如,在 Mac 上,我可以运行以下命令以接驳到演示机器上运行的 twin 会话:

twdisplay [email protected]:0 --hw=tty,TERM=linux

 title=

通过多做一些工作,你还可以将其用作登录外壳,以代替控制台上的 getty)。这需要 gdm 鼠标守护程序、twdm 应用程序(包括)和一些额外的配置。在使用 systemd 的系统上,首先安装并启用 gdm(如果尚未安装),然后使用 systemctl 为控制台(我使用 tty6)创建一个覆盖。这些命令必须以 root 用户身份运行;在 Ubuntu 上,它们看起来像这样:

apt install gdm
systemctl enable gdm
systemctl start gdm
systemctl edit getty@tty6

systemctl edit getty@tty6 命令将打开一个名为 override.conf 的空文件。它可以定义 systemd 服务设置以覆盖 tty6 的默认设置。将内容更新为:

[service]
ExecStart=
ExecStart=-/usr/local/sbin/twdm --hw=tty@/dev/tty6,TERM=linux
StandardInput=tty
StandardOutput=tty

现在,重新加载 systemd 并重新启动 tty6 以获得 twin 登录提示界面:

systemctl daemon-reload
systemctl restart getty@tty6

 title=

这将为登录的用户启动一个 twin 会话。我不建议在多用户系统中使用此会话,但是对于个人桌面来说,这是很酷的。并且,通过使用 twattachtwdisplay,你可以从本地 GUI 或远程桌面访问该会话。

我认为 twin 真是太酷了。它还有一些细节不够完善,但是基本功能都已经有了,并且有一些非常好的文档。另外,它也使我可以在现代操作系统上稍解对 DESQview 式的体验的渴望。我希望随着时间的推移它会有所改进,希望你和我一样喜欢它。


via: https://opensource.com/article/20/1/multiple-consoles-twin

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

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

在我们的 20 个使用开源提升生产力的系列的第十三篇文章中使用 wego 来了解出门前你是否要需要外套、雨伞或者防晒霜。

去年,我在 19 天里给你介绍了 19 个新(对你而言)的生产力工具。今年,我换了一种方式:使用你在使用或者还没使用的工具,构建一个使你可以在新一年更加高效的环境。

使用 wego 了解天气

过去十年我对我的职业最满意的地方之一是大多数时候是远程工作。尽管现实情况是我很多时候是在家里办公,但我可以在世界上任何地方工作。缺点是,离家时我会根据天气做出一些决定。在我居住的地方,“晴朗”可以表示从“酷热”、“低于零度”到“一小时内会小雨”。能够了解实际情况和快速预测非常有用。

 title=

Wego 是用 Go 编写的程序,可以获取并显示你的当地天气。如果你愿意,它甚至可以用闪亮的 ASCII 艺术效果进行渲染。

要安装 wego,你需要确保在系统上安装了Go。之后,你可以使用 go get 命令获取最新版本。你可能还想将 ~/go/bin 目录添加到路径中:

go get -u github.com/schachmat/wego
export PATH=~/go/bin:$PATH
wego

首次运行时,wego 会报告缺失 API 密钥。现在你需要决定一个后端。默认后端是 Forecast.io,它是 Dark Sky的一部分。wego 还支持 OpenWeatherMapWorldWeatherOnline。我更喜欢 OpenWeatherMap,因此我将在此向你展示如何设置。

你需要在 OpenWeatherMap 中注册 API 密钥。注册是免费的,尽管免费的 API 密钥限制了一天可以查询的数量,但这对于普通用户来说应该没问题。得到 API 密钥后,将它放到 ~/.wegorc 文件中。现在可以填写你的位置、语言以及使用公制、英制(英国/美国)还是国际单位制(SI)。OpenWeatherMap 可通过名称、邮政编码、坐标和 ID 确定位置,这是我喜欢它的原因之一。

# wego configuration for OEM
aat-coords=false
aat-monochrome=false
backend=openweathermap
days=3
forecast-lang=en
frontend=ascii-art-table
jsn-no-indent=false
location=Pittsboro
owm-api-key=XXXXXXXXXXXXXXXXXXXXX
owm-debug=false
owm-lang=en
units=imperial

现在,在命令行运行 wego 将显示接下来三天的当地天气。

wego 还可以输出 JSON 以便程序使用,还可显示 emoji。你可以使用 -f 参数或在 .wegorc 文件中指定前端。

 title=

如果你想在每次打开 shell 或登录主机时查看天气,只需将 wego 添加到 ~/.bashrc(我这里是 ~/.zshrc)即可。

wttr.in 项目是 wego 上的基于 Web 的封装。它提供了一些其他显示选项,并且可以在同名网站上看到。关于 wttr.in 的一件很酷的事情是,你可以使用 curl 获取一行天气信息。我有一个名为 get_wttr 的 shell 函数,用于获取当前简化的预报信息。

get_wttr() {
  curl -s "wttr.in/Pittsboro?format=3"    
}

 title=

现在,在我离开家之前,我就可以通过命令行快速简单地获取我是否需要外套、雨伞或者防晒霜了。


via: https://opensource.com/article/20/1/open-source-weather-forecast

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

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

在我们的 20 个使用开源提升生产力的系列的第十二篇文章中使用 Newsboat 收取你的新闻 RSS 源和播客。

去年,我在 19 天里给你介绍了 19 个新(对你而言)的生产力工具。今年,我换了一种方式:使用你在使用或者还没使用的工具,构建一个使你可以在新一年更加高效的环境。

使用 Newsboat 访问你的 RSS 源和播客

RSS 新闻源是了解各个网站最新消息的非常方便的方法。除了 Opensource.com,我还会关注 SysAdvent sysadmin 年度工具,还有一些我最喜欢的作者以及一些网络漫画。RSS 阅读器可以让我“批处理”阅读内容,因此,我每天不会在不同的网站上花费很多时间。

 title=

Newsboat 是一个基于终端的 RSS 订阅源阅读器,外观感觉很像电子邮件程序 Mutt。它使阅读新闻变得容易,并有许多不错的功能。

安装 Newsboat 非常容易,因为它包含在大多数发行版(以及 MacOS 上的 Homebrew)中。安装后,只需在 ~/.newsboat/urls 中添加订阅源。如果你是从其他阅读器迁移而来,并有导出的 OPML 文件,那么可以使用以下方式导入:

newsboat -i </path/to/my/feeds.opml>

添加订阅源后,Newsboat 的界面非常熟悉,特别是如果你使用过 Mutt。你可以使用箭头键上下滚动,使用 r 检查某个源中是否有新项目,使用 R 检查所有源中是否有新项目,按回车打开订阅源,并选择要阅读的文章。

 title=

但是,你不仅限于本地 URL 列表。Newsboat 还是 Tiny Tiny RSS、ownCloud 和 Nextcloud News 等新闻阅读服务以及一些 Google Reader 后续产品的客户端。Newsboat 的文档中涵盖了有关此的详细信息以及其他许多配置选项。

 title=

播客

Newsboat 还通过 Podboat 提供了播客支持,Podboat 是一个附带的应用,它可帮助下载和排队播客节目。在 Newsboat 中查看播客源时,按下 e 将节目添加到你的下载队列中。所有信息将保存在 ~/.newsboat 目录中的队列文件中。Podboat 读取此队列并将节目下载到本地磁盘。你可以在 Podboat 的用户界面(外观和行为类似于 Newsboat)执行此操作,也可以使用 podboat -a 让 Podboat 下载所有内容。作为播客人和播客听众,我认为这真的很方便。

 title=

总体而言,Newsboat 有一些非常好的功能,并且是一些基于 Web 或桌面应用的不错的轻量级替代方案。


via: https://opensource.com/article/20/1/open-source-rss-feed-reader

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

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

在我们的 20 个使用开源提升生产力的系列的第十一篇文章中使用 Reddit 客户端 Tuir 在工作中短暂休息一下。

去年,我在 19 天里给你介绍了 19 个新(对你而言)的生产力工具。今年,我换了一种方式:使用你在使用或者还没使用的工具,构建一个使你可以在新一年更加高效的环境。

使用 Tuir 阅读 Reddit

短暂休息对于保持生产力很重要。我休息时喜欢去的地方之一是 Reddit,如果你愿意,这可能是一个很好的资源。我在那里发现了各种有关 DevOps、生产力、Emacs、鸡和 ChromeOS 项目的文章。这些讨论可能很有价值。我还关注了一些只有动物图片的子板,因为我喜欢动物(而不只是鸡)照片,有时经过长时间的工作后,我真正需要的是小猫照片。

 title=

当我阅读 Reddit(不仅仅是看动物宝宝的图片)时,我使用 Tuir(Reddit 终端 UI)。Tuir 是功能齐全的 Reddit 客户端,可以在运行 Python 的任何系统上运行。安装是通过 pip 完成的,非常简单。

首次运行时,Tuir 会进入 Reddit 默认文章列表。屏幕的顶部和底部有列出不同命令的栏。顶部栏显示你在 Reddit 上的位置,第二行显示根据 Reddit “Hot/New/Controversial” 等类别筛选的命令。按下筛选器前面的数字触发筛选。

 title=

你可以使用箭头键或 jkhl 键浏览列表,这与 Vi/Vim 使用的键相同。底部栏有用于应用导航的命令。如果要跳转到另一个子板,只需按 / 键打开提示,然后输入你要进入的子板名称。

 title=

某些东西除非你登录,否则无法访问。如果你尝试执行需要登录的操作,那么 Tuir 就会提示你,例如发布新文章 (c)或赞成/反对 (az)。要登录,请按 u 键。这将打开浏览器以通过 OAuth2 登录,Tuir 将保存令牌。之后,你的用户名应出现在屏幕的右上方。

Tuir 还可以打开浏览器来查看图像、加载链接等。稍作调整,它甚至可以在终端中显示图像(尽管我没有让它可以正常工作)。

总的来说,我对 Tuir 在我需要休息时能快速跟上 Reddit 感到很满意。

Tuir 是现已淘汰的 RTV 的两个分叉之一。另一个是 TTRV,它还无法通过 pip 安装,但功能相同。我期待看到它们随着时间的推移脱颖而出。


via: https://opensource.com/article/20/1/open-source-reddit-client

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

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

在我们的 20 个使用开源提升生产力的系列的第十篇文章中,使用 Rainbow Stream 跟上你的 Twitter 流而无需离开终端。

去年,我在 19 天里给你介绍了 19 个新(对你而言)的生产力工具。今年,我换了一种方式:使用你在使用或者还没使用的工具,构建一个使你可以在新一年更加高效的环境。

通过 Rainbow Stream 跟上Twitter

我喜欢社交网络和微博。它快速、简单,还有我可以与世界分享我的想法。当然,缺点是几乎所有非 Windows 的桌面客户端都对是网站的封装。Twitter 有很多客户端,但我真正想要的是轻量、易于使用,最重要的是吸引人的客户端。

 title=

Rainbow Stream 是好看的 Twitter 客户端之一。它简单易用,并且可以通过 pip3 install rainbowstream 快速安装。第一次运行时,它将打开浏览器窗口,并让你通过 Twitter 授权。完成后,你将回到命令行,你的 Twitter 时间线将开始滚动。

 title=

要了解的最重要的命令是 p 暂停推流、r 继续推流、h 得到帮助,以及 t 发布新的推文。例如,h tweets 将提供发送和回复推文的所有选项。另一个有用的帮助页面是 h messages,它提供了处理直接消息的命令,这是我妻子和我经常使用的东西。还有很多其他命令,我会回头获得很多帮助。

随着时间线的滚动,你可以看到它有完整的 UTF-8 支持,并以正确的字体显示推文被转推以及喜欢的次数,图标和 emoji 也能正确显示。

关于 Rainbow Stream 的最好功能之一就是你不必放弃照片和图像。默认情况下,此功能是关闭的,但是你可以使用 config 命令尝试它。

config IMAGE_ON_TERM = true

此命令将任何图像渲染为 ASCII 艺术。如果你有大量照片流,它可能会有点多,但是我喜欢。它有非常复古的 1990 年代 BBS 感觉,我也确实喜欢 1990 年代的 BBS 场景。

你还可以使用 Rainbow Stream 管理列表、屏蔽某人、拉黑某人、关注、取消关注以及 Twitter API 的所有其他功能。它还支持主题,因此你可以用喜欢的颜色方案自定义流。

当我正在工作并且不想在浏览器上打开另一个选项卡时,Rainbow Stream 让我可以留在终端中。


via: https://opensource.com/article/20/1/tweet-terminal-rainbow-stream

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

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

BitlBee 将多个聊天应用集合到一个界面中。在我们的 20 个使用开源提升生产力的系列的第九篇文章中了解如何设置和使用 BitlBee。

去年,我在 19 天里给你介绍了 19 个新(对你而言)的生产力工具。今年,我换了一种方式:使用你在使用或者还没使用的工具,构建一个使你可以在新一年更加高效的环境。

将所有聊天都放到 BitlBee 中

即时消息和聊天已经成为网络世界的主要内容。如果你像我一样,你可能打开五六个不同的应用与你的朋友、同事和其他人交谈。关注所有聊天真的很痛苦。谢天谢地,你可以使用一个应用(好吧,是两个)将这些聊天整个到一个地方。

 title=

BitlBee 是作为服务运行的应用,它可以将标准的 IRC 客户端与大量的消息服务进行桥接。而且,由于它本质上是 IRC 服务器,因此你可以选择很多客户端。

BitlBee 几乎包含在所有 Linux 发行版中。在 Ubuntu 上安装(我选择的 Linux 桌面),类似这样:

sudo apt install bitlbee-libpurple

在其他发行版上,包名可能略有不同,但搜索 “bitlbee” 应该就能看到。

你会注意到我用的 libpurple 版的 BitlBee。这个版本能让我使用 libpurple 即时消息库中提供的所有协议,该库最初是为 Pidgin 开发的。

安装完成后,服务应会自动启动。现在,使用一个 IRC 客户端(图片中为 XChat),我可以连接到端口 6667(标准 IRC 端口)上的服务。

 title=

你将自动连接到控制频道 &bitlbee。此频道对于你是独一无二的,在多用户系统上每个人都有一个自己的。在这里你可以配置该服务。

在控制频道中输入 help,你可以随时获得完整的文档。浏览它,然后使用 register 命令在服务器上注册帐户。

register <mypassword>

现在,你在服务器上所做的任何配置更改(IM 帐户、设置等)都将在输入 save 时保存。每当你连接时,使用 identify <mypassword> 连接到你的帐户并加载这些设置。

 title=

命令 help purple 将显示 libpurple 提供的所有可用协议。例如,我安装了 telegram-purple 包,它增加了连接到 Telegram 的能力。我可以使用 account add 命令将我的电话号码作为帐户添加。

account add telegram +15555555

BitlBee 将显示它已添加帐户。你可以使用 account list 列出你的帐户。因为我只有一个帐户,我可以通过 account 0 on 登录,它会进行 Telegram 登录,列出我所有的朋友和聊天,接下来就能正常聊天了。

但是,对于 Slack 这个最常见的聊天系统之一呢?你可以安装 slack-libpurple 插件,并且对 Slack 执行同样的操作。如果你不愿意编译和安装这些,这可能不适合你。

按照插件页面上的说明操作,安装后重新启动 BitlBee 服务。现在,当你运行 help purple 时,应该会列出 Slack。像其他协议一样添加一个 Slack 帐户。

account add slack [email protected]
account 1 set password my_legcay_API_token
account 1 on

你知道么,你已经连接到 Slack 中,你可以通过 chat add 命令添加你感兴趣的 Slack 频道。比如:

chat add 1 happyparty

将 Slack 频道 happyparty 添加为本地频道 #happyparty。现在可以使用标准 IRC /join 命令访问该频道。这很酷。

BitlBee 和 IRC 客户端帮助我的(大部分)聊天和即时消息保存在一个地方,并减少了我的分心,因为我不再需要查找并切换到任何一个刚刚找我的应用上。


via: https://opensource.com/article/20/1/open-source-chat-tool

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

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