Как включить Bluetooth в GUIX?

небольшой скрипт может решить литерал #include,
не рекурсивно, включение самого файла может вызвать бесконечный цикл
и рекурсивное включение не указано как обязательное.

В конечном итоге может понадобиться настоящий синтаксический анализатор, и вы можете обратиться к другим ответам.

передать main.txtследующему Perl-скрипту через стандартный ввод
вывод (примерно )желаемый вывод.
awk тоже может сделать эту работу, но мне нравится тайна perl:)

#!/usr/bin/perl
while (<>) {
  if (/^#include (.*)/) {
    system('cat',$1);
  } else {
    print;
  }
}

Укороченная версия приведенного выше кода с одним -вкладышем:

perl -e '(/^#include (.*)/ ? system("cat",$1) : print) while <>;' <main.txt

Для тех, кому интересно узнать больше о Perl:

  • <>— это сокращение от STDIN, которое является стандартным входным потоком

  • .
  • Ключевое слово whileможет быть помещено в конце строки; и ()можно опустить, если нет двусмысленной интерпретации.

  • Для каждой строки, прочитанной из STDIN, Perl сохраняет ее в$_

  • $_— это предопределенная переменная, которую большинство Perl встроенных -функций принимает в качестве аргумента, если аргумент не задан,

  • print— одна из встроенных -функций, которая принимает$_

  • После прочтения каждой строки perl будет вычислять троичное выражение. Соответствие регулярному выражению применяется к $_по умолчанию

  • .
  • Когда /^#include (.*)/возвращает 1 (число обнаруженных совпадений ), указывает, что $_начинается с литерала#include

  • perl хранит оставшуюся часть от $_до $1,так как это 1-й сгруппированный захват ($2,$3....определяются, если групп больше)

  • Функция systemвызывает команду через системную оболочку, в основномsh
    в этой строке вызывается catи передается $1в качестве аргумента.

  • Когда /^#include (.*)/возвращает 0 на $_, printоценивается и в качестве побочного эффекта выводит$_

  • Значение троичного выражения молча игнорируется

1
03.11.2020, 22:42
2 ответа

Ах, статический -сетевой -сервис был пример, который помог мне понять:

  • Мне не следовало добавлять serviceперед bluetooth-service. Я не очень понимаю, почему, наверное, потому что serviceпреобразует что-то еще в сервис, а bluetooth-serviceуже является сервисом сам по себе.
  • Квадратные скобки просто означают «необязательный», как и везде. Синтаксис #:можно просто скопировать дословно.

Кажется, пока это работает:

  (services
    (append
      (list (service gnome-desktop-service-type)
            (bluetooth-service #:auto-enable? #t)
      %desktop-services))

По крайней мере, перенастройка работает, так что теперь, надеюсь, можно будет запустить bluetooth.

Редактировать 1 :Успех!

herd statusпоказывает, что Bluetooth работает, но Bluetooth еще не работает. Я в группе lpи перезагрузился. При входе в gnome появляется всплывающее окно с этим сообщением об ошибке:

Failed to apply network settings

You might not be able to connect to the Bluetooth network via this machine

Exception

g-dbus-error-quark: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.blueman.Mechanism was not provided by any.service files (2)

Редактировать 2 :Успехов больше!

blueman-managerсмог найти гарнитуру и выполнить сопряжение с ней. Но GNOME почему-то вообще не мог найти bluetooth-адаптер. Тем не менее, я мог перенаправить звук на гарнитуру, используя обычные настройки звука GNOME.

К сожалению, настроить громкость невозможно.Ни регулятор громкости GNOME, ни «аппаратный» регулятор громкости на гарнитуре нельзя использовать для уменьшения громкости. Только регуляторы громкости в самом игровом приложении (, например. youtube )уменьшит громкость.

Я не уверен, что остальные проблемы связаны с GUIX.

1
18.03.2021, 22:53

Это может быть просто указатель, но знак решетки указывает на ключевое слово lisp и может использоваться как в других языках (на ум приходит python ). Документацию можно найти по адресу https://www.gnu.org/software/guile/manual/guile.html#Keywords.

Кроме того, я заметил пакет bluetooth gnome -, который может представлять интерес, хотя я сам не запускаю gnome, поэтому не могу подтвердить, что он решит вашу проблему(https://guix.gnu.org/packages/gnome-bluetooth-3.34.2/).

1
18.03.2021, 22:53

Теги

Похожие вопросы