前言

作为一个拥有大把空闲时间的大学生, 平时少不了各种折腾

目前的情况是

  • 使用设备:RedmiG, 小米平板 5Pro, 红米 k50Pro

  • 平时主要使用电脑都是在终端下使用各种工具

    neovim, ranger, lazygit…

  • 有需要在床上,教室使用终端的需求

  • RedmiG 的重量实在是难以忍受(应该是游戏本的通病了),外加我还是单肩包,带出去要是再带上充电器(即使带小米平板的 67w 充电器), 简直就是灾难, 很难想象这样下去我什么时候会有高低肩

    之前社团开会带出去过几次,后面就再也不想这样干了

于是我把目光转向了手上的平板 5Pro, 正好闲置一块 k380, 这俩带出去还是很方便的
对比了目前的比较主流的方案:

  • CodeServer
    使用 Termux 或者其他的方式在本地开启 CodeServer, 然后使用Code FA来作为前端, 这样就可以在平板上运行 VSCode 了

    • 优点:
      VSCode 对于平板电脑来说是一个非常实用的开发工具,因为它支持多种语言和框架,可以让你在平板上开发出功能强大的应用程序,而且它也具有很好的编辑和调试功能,能够使你的开发过程更加高效。

    • 缺点:
      平板上的 VSCode 是 Arm 生态, 只是运行了一个 VSCode 的服务端, 还有很多实质的问题没有解决, 很多插件实际上无法在平板上运行, 实际体验并不完美, 可能会有很强的割裂感, 并且是由个人开发者在维护, 很多问题并不能得到及时的解决, 同时这方面的帮助和解决方案也比较少, 遇到问题我很有可能搞不定

  • SSH
    这个不用多说, 如果在同一个网段(比如校园网), 或者我的电脑拥有公网 IP|IPV6 的地址, 亦或者我拥有一台我自己的服务器, 直接通过 SSH 连接到实际的机器上, 云端运行

    • 优点:
      使用简单,省去了繁琐的配置操作,从而节省时间, 避免了折腾

    • 缺点:
      需要满足上述的条件, 而刚好我目前的条件还没有什么很好的 SSH 方案

  • 购买 Win 板 | 给小米平板刷 Win 系统
    购买 Win 板的情况, 我想对于我一个的经济情况来说,实在是不现实, 也没必要,
    一方面我的使用需求并不是那么强烈, 另一方面有这个钱我完全可以购买一台云服务器

    刷 Win 系统, 则是我相比于 Windows, 我更熟悉 Ubuntu, 而目前小米平板刷 Linux 系统的方案还是高度不成熟的, 需要冒的风险太大

  • Termux

    由社区维护的一个在安卓上模拟 Linux 的方案, 社区还比较活跃, 同时方案也比较成熟, 比较符合我的需求和我个人日常的使用场景

    • 优点:

      • 仅在 Termux 中就可以使用大部分的 Linux 命令
      • 不需要刷新的系统
      • 资源占用也并不是很高, 在我的小米平板能够承受的范围
      • 社区维护, 遇到问题大部分时候能够通过搜索引擎和交流群组获取相关的答案
      • 甚至可以通过 chroot 来运行基本完全的 Linux 发行版
    • 缺点:

      • 需要一定的动手能力, 了解一定的 Linux 知识
      • 运行的环境仍然是 Arm 生态,可能有一些软件没有很好的支持(这属于是硬件问题了)

正文开始

Termux 介绍

  • Termux 是一个Android 终端仿真应用程序

  • 主要用于在 Android 手机上搭建一个完整的 Linux 环境

  • 你可以在 Termux 中使用 bash, zsh, fish 等 shell,编辑文件,访问服务器,编译代码, 使用 python 等命令行工具

  • Termux 不需要 root 权限就可以正常运行

  • Termux 还有一些附加应用程序:

    • Termux:Sytle: 可以让你自定义终端的字体和颜色主题

    • Termux:Api: 调用手机的一些功能(如照相机、通知、音量等)

  • Termux 也支持 git 和 subversion 等版本控制工具,方便你查看项目

参考链接:
知乎
Github
Wiki

主要优点

  1. 支持 xterm-256color
    基本和电脑上的终端模拟器的显示效果类似,对于像我这种大部分时间在使用终端模拟器的人来说,有一种熟悉感

    同样支持类似的效果的还有: Termius

    • 默认界面更加美观,但自定义的效果不如 Termux
    • 支持全平台:IOS, Android, Mac, Win, Linux …, 不过是收费的 (学生免费,好像网上也有破解包)
    • 主要目标用户是 SSH 连接的用户,所以如果你是希望用于 SSH 连接,可以去试试 Termius,
  2. 使用的用户最多
    这意味着你遇到任何问题可以在各种搜索引擎找到可能的解决办法, 可以在交流群里和别人分享经验,而不是一个人默默承受所有

  3. 官方资源丰富,镜像更新速度可观,官方支援中国大陆换源
    这点我想懂得都懂,不懂得自己体会

而相比 Termux, 我还想再介绍一下后面我在使用的ZeroTermux

  • 这是 Termux 官方的一个 Fork, 添加了很多自定义的元素,对新手用户更加友好

  • 同时是由中国开发者维护的,你可以随时加入交流群向作者反馈

  • 作者是 Termux 官方组织的一员, 所以不用担心版本和其他的问题

  • 支持自定义背景图,(这可能是最打动我的, 毕竟我是用 kitty 一部分原因就是支持自定义背景图片

Termux(ZeroTermux)的安装

ZeroTermux 的下载链接

官方下载地址(直接bing搜索zerotermux也可以找到)
我这里使用了 ZeroTermux,刚刚也介绍了原因, 同时他是完全兼容 Termux 的,下载方式对于中国用户也更加友好,如果你需要下载官方 Termux, 你可以选择去 github 或者 F-Droid 上下载最新版本

下载完成之后打开, 你会看到一个弹窗告诉你一些 ZeroTermux 的帮助信息和一个终端界面

你很可能想问的问题:

  • 如何关闭下方的快捷键盘?

    毕竟想使用这个方案的一般用的是蓝牙键盘连接,下方的那一片只会让人看着不舒服

    我在设置中并没有找到(_官方版本_),经过搜索引擎查询之后了解到,你可以使用音量上+输入 k, 来隐藏下方的快捷键栏

    如果你需要他们,你可以按同样的方式打开,与 ZeroTermux 的全屏(或者官方配置文件里的全屏设置)不同的是, 这样的方式不会隐藏掉平板的状态栏

  • Termux 的配置文件夹在哪?
    打开 Termux,你将位于家目录(/data/data/com.termux/files/home), 在这个目录下存在一个.termux文件夹,这个文件夹含有以下特殊文件,用于自定义你的 Termux:

    • font.ttf
      用于更改 Termux 的字体

      经过使用我发现,Termux 是支持连字字体的,所以你完全可以直接通过 git 或者其他工具下载你电脑上常用的字体(例如: 得意黑, JetBrains Mono …)然后手动设置,官方包里提供的字体很有限, 很有可以没有提供你喜欢的
      我习惯使用JetBrains Mono Nerd Font, 所以我下载了这个字体放在这个文件夹,来更改 Termux 的字体

    • color.properties

      Termux 的主题配色
      一般不需要你自己配置,你可以使用后面介绍的Termux官方提供的扩展包来选择

    • shell

      一般是一个软链接, 指向默认的 shell, 如果没有则默认为 bash > 这个一般不需要你设置,可以通过chsh命令来做到

    • termux.properties

      Termux 的设置

      涵盖了所有 Termux 官方提供的选项, 具体介绍可以去这里

    • ~/.img (仅 ZeroTermux 有效)
      按照我的使用来看, 应该是ZeroTermux 背景图片的放置位置

有关字体和主题, 官方提供了Termux:Sytle扩展包, 用于帮助你更方便的配置

如果你需要, 你可以下载官方的扩展包,下载方法如下:

  • 官方用户

在 F-Droid 上下载 Termux:Style 并安装, 然后打开 Termux 长按空白区域选择更多, 会有样式的选项, 点击后选择即可

  • ZeroTermux 用户
    ZeroTermux兼容Termux

    双击最左边区域打开ZeroTermux的工具栏, 找到官方插件, 然后下载
    


打开工具栏,还有很多其他实用的功能,但是我建议如果你不是很了解, 最好不要乱点,你可以都看看 ZeroTermux 有哪些魔改的工具

注意: 不同的 Termux 插件不能混用,比如 ZeroTermux 的官方插件不能使用 F-Droid 上下载的

如果你想要打开 Termux 时自动执行一些命令

Termux 官方给出的回复是,实际上官方并没有做相应的支持, 也没必要,你完全可以通过 Shell 的特性来实现

比如: bash 的.bashrc, zsh 的.zshrc, fish 的.config/fish/config.fish