我正在尝试在我的 GUIX 机器上启用蓝牙,但我不明白说明:
方案流程:bluetooth-service [#:bluez bluez] [#:auto-enable? #F]
返回一个运行bluetoothd守护进程的服务,该守护进程管理所有蓝牙设备并提供许多D-Bus接口。什么时候自动启用?确实如此,蓝牙控制器在启动时自动供电,这在使用蓝牙键盘或鼠标时非常有用。
用户需要加入 lp 组才能访问 D-Bus 服务。
特别是,我不理解这[#:
部分,因此不知道在我的 config.scm 中放置什么。
我所做的其他修改都不config.scm
需要这样的“论证”,因为缺乏更好的词。例如,extra-special-file
简单描述为
方案过程:额外特殊文件文件目标
并包含一个示例,因此很容易理解。
这不起作用:
(services
(append
(list (service gnome-desktop-service-type)
(service bluetooth-service))
%desktop-services))
重新配置给出
guix system: error: failed to load 'config.scm':
gnu/services.scm:242:17: In procedure %service-with-default-value:
In procedure struct-vtable: Wrong type argument in position 1 (expecting struct): #<procedure bluetooth-service (#:key bluez auto-enable?)>
显然这#:
是一个哈希冒号,用于定义方案中的关键字。但是该页面没有给我足够的信息来将 GUIX 指令翻译成要放入的内容config.scm
。
感觉 GUIX 文档假定了我还不具备的一些方案知识,而且我真的不知道从哪里开始获取。举个例子将不胜感激。
答案1
下面原始答案中的方法自 2020 年 9 月起已被弃用
bluetooth-service-type
当前的方法是像大多数其他服务一样使用。例如
(services
(append
(list (service gnome-desktop-service-type)
(service bluetooth-service-type)
%desktop-services))
旧答案:
啊,静态网络服务有一个例子,让我明白了:
service
我不应该在前面加上bluetooth-service
。我真的不明白为什么,可能是因为service
将其他东西转换为服务,并且bluetooth-service
本身已经是一种服务。- 方括号只是意味着“可选”,就像其他地方一样。语法
#:
可以逐字复制。
到目前为止这似乎有效:
(services
(append
(list (service gnome-desktop-service-type)
(bluetooth-service #:auto-enable? #t)
%desktop-services))
至少重新配置有效,所以现在应该可以启动蓝牙。
编辑1:取得了一些成功!
herd status
显示蓝牙正在运行,但蓝牙似乎还不能工作。我已经进lp
群了,重启了登录 gnome 会弹出一个错误消息:
无法应用网络设置
您可能无法通过本机连接到蓝牙网络
例外
g-dbus-error-quark:GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown:任何 .service 文件均未提供名称 org.blueman.Mechanism (2)
编辑2:更加成功!
blueman-manager
可以找到耳机并可以与其配对。但 GNOME 根本找不到蓝牙适配器。尽管如此,我可以使用正常的 GNOME 声音设置将声音重定向到耳机。
不幸的是,似乎无法调节音量。 GNOME 音量控制和耳机上的“硬件”音量旋钮都不能用于降低音量。只有播放应用程序本身(例如 youtube)上的音量控件会降低音量。
我不确定剩下的问题是否与 GUIX 有关。
答案2
这可能只是一个简单的指针,但哈希符号表示 lisp 关键字,并且可以像其他语言一样使用(我想到了 python)。该文档可以在以下位置找到:https://www.gnu.org/software/guile/manual/guile.html#Keywords。
另外,我注意到一个可能感兴趣的 gnome-bluetooth 软件包,尽管我自己不运行 gnome,所以我无法确认它是否会解决您的问题(https://guix.gnu.org/packages/gnome-bluetooth-3.34.2/)。