昨天,在浏览IRC的ASCII码高速公路(是IRC)时,一个URL链接到了我的屏幕上滚动的MacOS应用程序。 Unclack是一个小型的MacOS实用程序,可在用户键入时使用户的麦克风静音。目的是防止在进行Zoom / Skype / Jitsi通话时将打字的噪音传递给其他参与者。整齐。
他们没有制作Linux版本,而且我看不到任何类似的东西,所以我做了这种情况下的平常工作,将想法交给了我友好的本地编码器Stuart Langridge。一如既往,他一开始就感到困惑,然后又不屑一顾。
艾伦:我认为这是一个可以在linux上存在的应用程序-unclack.app-“ Unclack是体积小但功能强大的Mac实用程序,可在您键入时使键盘静音!”
斯图尔特:我想:答案不是笨笨的嘈杂键盘;)
艾伦:我认为坐在角落里可以打开/关闭的一些小python东西会很整洁
Stuart为我提供了第一个迭代,能够像键盘记录器一样检测按键。我们花了大约30秒钟来集思广益。我想出了自动静音功能。斯图尔特(Stuart)充满活力地表示,在任何情况下,温基布都不是这个名字。
到傍晚,Stuart拥有了该实用程序的基本知识。我们通过Google Meet进行了测试。它会检测按键,使麦克风静音和取消静音,并在指示器区域中显示状态。这闻起来像最低限度的可行产品!
Stuarts否决权是Uneebeb,即Ideas Man,我不得不考虑其他事情。我检查了一个词库,想出了镇静的象牙色,甚至比unkeeb还暗。然后打我!
经过30秒钟的Internet尽职调查,该名称得以确定。是“滑板”。谁说很难命名?斯图尔特做到了。每时每刻。这就是为什么他在项目生命周期的这些阶段都依赖我。那和包装。我们即将与世界分享创作。我们决定毫不意外地做出决定!
因此,这就是我打包基本python和一些依赖项的工作,因此Stuart可以在Snap Store中构建和发布它。
这很简单。版本标签使用git,因此每当发布构建时,您都可以参考其构建的标签。这将严格限制。我们不希望它对收集到的所有按键进行任何令人毛骨悚然的事情!
我们正在使用core18,这意味着它将稍后使用Ubuntu 18.04中的软件包作为阶段软件包,这比我们在20.04 / 20.10系统上测试时使用的软件包要旧。铺垫
名称:hushboardbase:core18版本:' git'摘要:键入时使麦克风静音说明:|在进行音频或视频通话时,可以保护您的朋友和同事免受键盘噪音的影响。 Hushboard会检测到按键并自动使您的麦克风静音,并在完成输入后立即将其静音。等级:稳定限制:严格
首先是滑板本身。当我计划将其放置在上游仓库中时,来源是。 -当前目录。我没有使用python插件,因为该项目没有所有必需的python位,例如setup.py。我们实际上是将python文件转储到snap中并运行它们。
我们将暂存gir1.2-appindicator3-0.1,以便它可以在屏幕的右上方放置一个小指示器图标,以便您查看应用程序的运行情况。我们还需要Hushboard需要使用python3-xlib来挂接到X11以检测按键。是的,它使用X11,否,尚未在Wayland上进行过测试。不,几乎可以肯定那里是行不通的。只要不破坏X11的东西,补丁可能是受欢迎的。
主要部分非常整洁。这意味着“仅将这些东西放在瞬间,别无其他”。这样一来,我们便会将快照降低到了使其运行所需的绝对最小值。 Xlib库是快照中最大的事情,最终大小不到200K。
零件:hushboard:插件:dump源:。阶段软件包:-gir1.2-appindicator3-0.1-python3-xlib素数:-usr / lib / girepository-1.0 / AppIndicator3-0.1.typelib-usr / lib / * / libappindicator3.so。*-usr / lib / python3 / dist-packages / *-hushboard / *-bin / *
这是启动器脚本。它所做的只是确保python可以找到我们捆绑的依赖项(xlib)并启动应用程序。我可能会将PYTHONPART行作为环境节移动到apps部分,并且在您阅读本文时可能已经完成。
在这里,我们指定将要公开给外部世界的二进制文件,它实际上启动了我们上面刚刚看到的$ SNAP / bin / launcher。我绝对应该将PYTHONPATH添加到环境部分。不挂断。 OK完成。
我们在这里利用GNOME扩展。这意味着要为我们完成大量工作并将其打包。
而已。我把公关交给了Stuart,后者把这一切都挂到了snapcraft构建系统上。一小时左右
当我第一次构建快照时,yaml看起来与现在非常相似,但是没有主要部分。这在GNOME平台快照(gnome-3-34)中的GNOME库和我的阶段包定义中引入的库之间引起了库冲突。感谢Ubuntu桌面团队的Ken VanDine和Snapcraft团队的Chris Patterson的工作,他们帮助我更好地理解了这一点。我们希望捆绑appindicator库,但不希望所有其他依赖项引起冲突。使用质数部分,我们可以只列出我们想要的东西,这有一个副作用,即按扣很好而且很紧。
当Stuart首次登陆yaml并连接了snapcraft构建服务时,我们在s390x和ppc64el体系结构构建器上发生了构建故障。这是因为构建时未使用gnome-3-34-1804-sdk组件。因此,我添加了一个架构节以限制我们支持的构建。现在,构建服务甚至没有尝试构建s390x,ppc64el。抱歉,在IBM大型机上进行视频通话的所有人!
$ snap run hushboard Gtk-消息:16:12:36.769:无法加载模块" canberra-gtk-module"追溯(最近一次通话):文件" /usr/lib/python3.6/runpy.py" ;,第193行,在_run_module_as_main" __ main __",mod_spec中)文件" /usr/lib/python3.6/runpy.py" ;,第85行,在_run_code exec(code,run_globals)文件" / snap / hushboard / x19 / hushboard / __ main __。py&#34 ;,第204行,在< module>中HushboardIndicator()。run()文件" / snap / hushboard / x19 / hushboard / __ main __。py"行__init__ self.queue = queue.SimpleQueue()AttributeError:module' queue& #39;没有属性' SimpleQueue'
在线快速搜索显示了Python 3.7中引入了Stuart在hushboard中使用的SimpleQueue。由于使用core18作为基础(回调),因此我们在Ubuntu 18.04上进行构建。我担心这可能是一个重大问题。 Stuart指出,使用不同的方法来完成同一件事并与Python 3.6中的功能兼容是一站式修复。很棒的酱!
今天我有几次会议可以测试新铸造的滑板。 Hushboard具有一个内部计时器,每当用户按下一个键且麦克风被静音时,该计时器便必不可少。如果您在一段时间内不按任何按钮,则不会被静音。我们最初将延迟定为2秒。但这似乎很奇怪,因为打字员必须在打字后等待2秒钟才能说出任何话。它高谈阔论。
我们尝试了150毫秒,但这被认为太短了。参加会议的人可以听到我在键入时打开和关闭我的麦克风的声音,这是因为我不一定一直都在快速键入。我们终于在250ms上达成协议,但我希望Stuart愿意就此话题进行反馈。
这是一个有趣的小项目。在大约24小时内,我们从构思到原型,实施,测试,为多种体系结构构建,发布,制作了有关此简单实用程序的教程视频和宣传博客。请随时安装它,并让我们知道您的想法。