分类 视频脚本 下的文章

视频点此

一说到Linux,就一定会想到终端——无论把它看作优势还是劣势。那么这个终端相对于另外两大操作系统,有没有什么特别之处呢?

说到Linux终端的用处可以说很多,比如安装软件、更新系统、调整配置之类的。但一定程度上,另外两个操作系统的终端程序也可以拥有类似的功能。所以我一直认为Linux终端的优势在于可以快速查看程序出错的原因,这在另外两大操作系统中是比较难做到的。举一个Gnome设置崩溃的例子来看。

表现

点击gnome设置,图形界面会呈现程序启动的相关动画,但并不能展示出设置的窗口。这可以说是非常典型的启动即崩溃问题。通常在macOS和Windows中,对于这种点击后有运行迹象,但就是没有窗口的程序我们可能完全不清楚发生了什么。而对于Linux,我们可以通过终端来运行,快速查看程序到底发生了什么事。

查看原因

直接打开终端,启动gnome设置命令gnome-control-center——当然,如何找到这种启动命令可能也是一个小知识点,以后有机会的话会简单介绍一下。

此时,终端执行的优势就出来了,直接给出了错误信息:(gnome-control-center:15840): GLib-GIO-ERROR **: 13:41:26.403: Settings schema 'org.gnome.shell.app-switcher' is not installed

那么对症下药,补充这个模式就可以了。

但很不幸,这玩意儿貌似没有一个软件包或任何可以搜索到的来源包含这个玩意儿……此时终端的另一个有共识性的优势就体现出来了:直接修改配置。

gnome家族的软件多数都是用gsettings来调整配置的,图形化的软件可以参考dconf。

此时在终端中运行gsettings list-keys org.gnome.ControlCenter,可以看到其拥有的设置项,其中的last-panel,可能是记录了退出设置程序时打开的界面。联想到前一次正常打开时,是点击了多任务标签后直接崩溃的,因此推测由于last-panel记录了最后点击的标签页,再次打开设置时由于直接根据记录定位到了多任务,所以会再次漰溃进而无法启动。

为了验证,获取last-panel的值gsettings get org.gnome.ControlCenter last-panel
看到值为multitasking,确认了上述推测。因此将这个值复位应该即可解决:gsettings reset org.gnome.ControlCenter last-panel

再次打开设置,成功启动。

视频点此

如果你关注过一些国内的for Linux应用的话就会发现,它们之中很多都是通过网页版套壳实现的。对于一些有着非常完善的网页版应用来说,如此方法确实可以在很短时间内打造一款全平台兼容的本地化应用。对于这类操作,Linux下拥有一个小工具来实现——nativefier

这是一个纯粹的终端程序,一行指令即可将一个网页打包成一个全平台兼容的electron套壳应用。可以前往GitHub查看具体内容。这里只介绍基本用法。

一、安装

在很多发行版中都可以直接通过源来安装。对于openSUSE,直接通过opi nativefier即可搜索到对应的OBS源,添加安装即可。

对于源中没有这个软件的,或者Windows、macOS来说,由于此工具由nodejs编辑,直接使用npm install -g nativefier安装即可。

二、基本使用

在安装完成后,便可以直接使用了。

基础命令为:nativefier -n <打包后的应用名称> -p <程序兼容的平台> —-arch <架构> —- weight <窗口宽度> —-height <窗口高度> <网页URL>

如打包微信网页版:nativefier -n WeChat -p Linux ——arch x64 ——width 1024 ——height 768 https://wx.qq.com/

  • 如果想让程序可以后台运行,可以增加参数——tray
  • 如果不想在使用时可以调出chrome的开发者工具,可以增加参数——disable-dev-tools
  • 如果想控制程序在同一时间只能运行一个实例,则增加参数——single-instance

设置好参数后回车,第一次运行会自动获取一个electron的依赖,然后自动开始打包。打包完成的程序会放置在~/<应用名称>-<兼容平台>-<架构>/文件夹下。你可以直接在这个文件夹下执行二进制文件以启动程序,或自己编辑一个desktop文件,将这个打包好的程序“安装”到系统中运行了。

视频点此

深度更新了Deepin15.5版本之后,增加了面容识别功能。对于其他发行版,有没有可能拥有呢?这就是今天要介绍的开源程序:howdy。

如果你在深度论坛中大概浏览过的话就会发现,有些人认为深度的人脸识别功能就是将howdy内置到系统中实现的。具体怎么做的我在这里就不深究了,不过我们可以通过howdy在其他发行版中增加人脸识别这一功能。

安装在大多数发行版中都是十分简单的,我们可以参照howdy的GitHub介绍来完成:

  • 对于Ubuntu系:添加ppa源,然后通过apt安装即可
  • 对于Debian系:从GitHub的release界面下载deb包安装即可
  • 对于Arch系:通过aur安装即可
  • 对于Fedora:启用CPOR源,然后通过dnf安装即可
  • 对于openSUSE:通过opi,自动添加OBS源并安装即可

但是在实际安装过程中,我的openSUSE15.3出现了一些依赖问题,所以对于这个系统,需要进行一些额外的补充。

缺少的依赖是python3-opencv3,我们选择忽略依赖继续,将howdy包先装好。此时,howdy的部分功能是可以使用的,但最核心的识别功能不可用,所以还是需要对依赖进行补全,直接通过opi来安装即可。推荐在查询结果中选择science这个官方性质的OBS源使用,避免后期不必要的问题。

接下来就是对howdy进行配置,让howdy知道这台电脑的人脸识别设备——也就是摄像头——是哪一个。

  1. 使用文本编辑器打开/etc/lib64/security/howdy/config.ini
  2. 查找device_path一行,将等号后面的none更改为摄像头设备的路径
    a. 安装v4l-utils,这个包可以直接安装
    b. 使用命令v4l2-ctl --list-devices查看设备
    c. 记录摄像头名称对应的路径,填入配置文件即可
  3. 保存

现在,就可以尝试添加一个面容数据了。

  1. 使用命令sudo howdy add
  2. 根据提示随便输入一个模型名称(不能超过24个字符)
  3. 面向摄像头,让它认识你
  4. 你会看到“Added a new model to 你的用户名”,这就代表完成了

这时,通过sudo howdy list就可以看到刚刚录入的脸部模型了。当然,howdy也提供一些管理模型的参数,具体可以查询GitHub的介绍。

最后,就是将人脸识别加入到密码认证的步骤当中了。对于openSUSE来说,虽然不是howdy要求的依赖,但必须安装一个叫pam-python的包才能将howdy与认证联系起来。但在openSUSE15.3中,又不存在这个包,所以需要手工安装一下。

  1. 进入openSUSE官方的包搜索工具
  2. 搜索pam-python,选择ALL Distributions
  3. 进入搜索结果中,找到openSUSE Leap 15.2,点击official release中的Expert Download
  4. 打开的页面中,点击Grab binary packages directly,下载不带.src的一项
  5. 双击下载的文件安装

到此,这个负责认证的包就安装好了。接下来,就是将人脸认证接入。

相关文件全部在/etc/pam.d中,根据需要增加语句即可。这里以使用sudo命令时进行人脸认证为例。其他命令使用人脸的方法一样,只是调整一下编辑的文件即可

  1. root权限打开sudu文件
  2. 在文件最开始增加人脸认证语句
    auth sufficient pam_python.so /usr/lib64/security/howdy/pam.py
  3. 保存

此时,当使用sudo命令时,摄像头便会启动,尝试识别人脸。如认证通过,则正常执行命令,否则弹出密码输入要求,我们可以通过密码来进行认证。

不过对于openSUSE来说,使用sudo时候默认请求的是root账户密码,因此人脸也是请求的root账户的人脸。但刚刚howdy录入的人脸是我们这个账户的人脸,所以我们可以通过howdy指定用户录入功能录入root人脸信息,也可以通过修改sudoer文件,将请求的密码改成当前账户即可。

视频点此

如果你使用iOS系统的话,应该会注意到快捷指令app中“我的快捷指令”与“自动化”两个标签。今天,简单来介绍一下我认为比较新颖的使用思路。

首先来说如何使用快捷指令呢?在快捷指令界面下,一个标签就是一个快捷指令执行的功能,使用的时候直接点击对应的标签即可。

或者在可以直接在桌面增加快捷指令的小部件,点击运行;又或者可以直接将快捷指令发送到桌面图标(只需要在快捷指令app中,点击需要发送到桌面的快捷指令模块右上角的三个点,再点击右上角设置—添加到主屏幕,设置好图标和名称之后确认添加即可。

对于快捷指令的自动化界面也很容易理解。就是在特定的条件下自动去触发某一系列操作。

仔细查看一下两个界面可以添加的动作就会发现,快捷指令模块和自动化模块可以添加的动作几乎是一样的,那么为什么会出现这两个界面呢?

我个人认为,之所以把自动化放在了快捷指令的后面,是因为我们可以把快捷指令界面的每一个按键理解为一个函数,自动化可以去引用这些函数。

你可能不是很能理解为什么要通过引用来实现本可以在自动化中直接编写出来的操作,这里我直接举一个例子,也许就能体会到引用的优势了。

就像前面截图,我有一个更换表盘的快捷指令。这个快捷指令中只有一个动作:将Apple Watch表盘调整为团结之光。那么在自动化中,我设定了每天晚上八点半和打开工作专注模式的时候,将表盘设置到团结之光。诚然,我可以直接起两个自动化,每个自动化里边都直接使用更换Apple Watch表盘的功能来实现这个操作,但这里我选择了在两个自动化中调用更换表盘的快捷指令来实现。因为如果出现了新表盘,我想在这两个节点更换到新表盘时,我可以通过修改快捷指令里边的表盘来直接调整两个自动化所做的动作,而不再需要前往每个自动化分别设定了。

通过快捷指令来实现一个“函数”,在多个自动化中直接调用,来简化之后维护的复杂性,这也许就是为什么快捷指令与自动化放在同一个软件中,自动化还排在快捷指令后面的原因之一吧。

视频点此

一个小软件包,即可让你的平板变身电脑的可视化、压感触摸板。这个软件叫做weylus。

使用方法非常简单,直接前往weylus的github,下载适用于你的电脑系统的最新的release版本,打开即可。其中对于archlinux可以直接通过aur完成安装,同时,对于Linux,可能需要一些额外的操作:

  1. 如果你的电脑打开了防火墙,请将这个软件使用的端口:1701、9001正确放行
  2. 如果想使用手写笔、多点触控等特性,需要设置一下权限

    1. 新建uinput用户组:sudo groupadd -r uinput
    2. 将当前用户添加到这个组中:sudo usermod -aG uinput $USER
    3. 新建/etc/udev/rules.d/60-weylus.rules,添加如下语句:

      KERNEL=="uinput", MODE="0660", GROUP="uinput", OPTIONS+="static_node=uinput"
    4. 重启电脑

软件界面非常简陋,但是也很直观。

从上到下,唯一需要设置的就是第一个access code。顾名思义,这里设置的字段就是我们连接时要求输入的密码。只需要输入一个密码,点击start,程序便启动了。

可以扫描出现的二维码,或者直接通过浏览器进入提示的这个地址并输入密码。现在打开了这个网址的设备就已经化身成为启动了weylus软件的触摸板了。

在这个浏览器界面,点击右上角可以打开一个功能栏,从上到下的功能介绍如下:

  • Capture:选择要捕获的窗口
  • Enable Video:在触摸设备上显示计算机图像与否。若不勾选,则“触摸板”为纯白背景而不再显示Capture 中选择捕获的窗口图像
  • Energy Saving:不显示图像的情况下此项可用,将纯白背景更改为纯黑
  • Stretch Video:拉抻图像以铺满“触摸板”屏幕
  • Capture Cursor:捕获鼠标箭头
  • Lower Latency:降低延迟
  • Max Video Resolution:最高图像分辨率
  • Min Frame Interval:最低捕获间隔
  • Enable Mouse:接受从“触摸板”的鼠标输入
  • Enable Stylus:接受“触摸板”的手写笔输入
  • Enable Touch:接受手指触摸输入
  • Enable uinput:接受高级指点功能
  • Min pressure to generate:最小压力感应
  • Client Name:会话名称。如果有多个设备同时作为触摸板设备使用的话,可以通过设置这个名称加以区分

视频点此

曾经有一个半个钟头的视频,大概演示了一下如何在Optimus模式的笔记本电脑上实现英伟达显卡的虚拟机直通,后来又用了一个视频简单说了说如何在Linux中安装KVM虚拟机以及一个简单的图形界面。不过得益于KVM虚拟机在Linux上面的优异表现,KVM虚拟机的图形界面程序也算是层出不穷。这其中不乏观感不错、使用简单的图形界面程序。今天就来看一个,我认为可以当作是virtual box平替的KVM图形界面程序——Quickgui

简单来说,quickgui是quickemu和quickget的一个图形化前端,而quickemu是简化qemu建立KVM虚拟机的一个终端脚本。因此与virt-manager等KVM图形化管理器差异的地方,在于quickgui侧重于帮助用户根据选择的系统和自身电脑的配置一键配置好一个可用的KVM虚拟机,并统一管理已经建立的KVM机器。在这个过程中甚至不需要用户事先准备安装镜像文件。那么接下来就看看如何安装。

就像前面说的,quickgui是quickemu和quickget的前端,因此首先需要安装好这两个。前往quickemu的github,可以看到对于arch用户,可以通过aur直接安装,而乌班图用户则可以添加它的ppa并完成安装。但我现在用的是opensuse,就需要手工来安装了。

在quickemu的页面里写了所需的依赖,其中要求QEMU版本需要在6.0或更高。但openSUSE官方源中,其版本刚刚到达5.3,所以首先需要做的就是升级QEMU。

  1. 直接打开终端,输入opi qemu,在弹出的源列表中选择Kernel:tools,然后按照提示更新提供方,完成。
  2. 打开YaST的软件管理模块,切换到模组标签,找到KVM主机服务器,将右侧打勾的版本全部切换到刚刚添加的源上(如有),确定。

到此,QEMU版本的升级就完成了。

如果你是全新安装的openSUSE,可能还有一些依赖需要你去补齐。可以按照github的指引进行安装,或者先按照下述步骤安装好quickemu与quickget尝试运行,失败的话再查看依赖问题。

  1. 克隆quickemu到一个文件夹:git clone --depth=1 https://github.com/wimpysworld/quickemu
  2. 全局安装quickemu到系统:sudo update-alternatives --install /usr/local/bin/quickemu quickemu /path/to/quickemu 50,其中,/path/to/quickemu为刚刚保存了克隆工程的文件夹,其中可以找到quickemu这个脚本
  3. 将quickget全局安装到系统,命令同2,只是将所有的quickemu更改为quickget

到此,你应该可以直接在终端中使用命令quickemuquickget来直接调用这两个脚本而无需再进入到保存的文件夹中执行了。这也意味着我们已经建立好quickgui所需的基本环境了。接下来就是安装quickgui

  • 前往quickgui的github,下载最新发布的预编译包,解压到某个目录下

进入这个目录,双击quickgui,一个好看的管理界面就正常启动了。

它的功能非常简单:管理已有的机器与建立新机器。初次使用时,可以通过新建机器功能快速建立一个KVM虚拟机。而且这个建立只需要我们选择好需要的操作系统版本和保存路径,点击下载,软件便会自动下载并部署好,等待启动。待下载完成,切换到管理已有机器的界面,便可以看到刚刚创建的虚拟机了。

管理界面也很简洁,只有三个可以操作的功能:启动、停止、删除。如果你是arch 或者乌班图用户,此时应该可以通过启动按钮直接简单的打开这个虚拟机了。但对于openSUSE,你会发现无法正常显示虚拟机窗口,再等待一会儿就恢复到了启动前的状态了。这是为什么呢?

因为openSUSE的QEMU默认不到有fd文件——KVM的efi程序,同时已经不再支持sdl模式运行。所以我们需要针对这两个进行调整。

首先,补全fd文件。

  1. 前往https://www.kraxel.org/repos/jenkins/edk2/下载对应你的电脑架构的rpm包
  2. 无需安装,直接找到其中保存了fd文件的文件夹,将这堆fd文件解压到/usr/share/qemu
  3. 将其中的ovmf_VARS-pure-efi.fd重命名为ovmf_VARS.fd

到此,fd文件我们就补齐了。

当然,只从rpm包中解压出ovmf_VARS-prue-efi.fd也是可行的。这里全部解压只是为了方便而已,也为了避免之后特殊需要时候再次补充。

对于sdl支持,我尚未找到什么好的解决方法,所以我目前的方式就是通过终端来启动构建好的虚拟机。

  1. 进入到创建虚拟机时选择的保存路径,应该可以看到对应这个虚拟机的conf文件
  2. 使用命令启动虚拟机:quickemu --vm 配置文件.conf --display gtk

到此,我们便成功构建并打开一个KVM虚拟机了。