Поскольку вы запускаете JACK и Pulseaudio при загрузке, попробуйте отложить команду JACK на несколько секунд, чтобы Pulseaudio и другие звуковые элементы были включены и запущены первыми
Простейшим решением будет использование пакета jack2-dbus
вместо jackd
или jack2
. D -Шина управляет совместным использованием аудиооборудования между JACK и Pulseaudio. если модуль Pulseaudio module-jackdbus-detect
активен в /etc/pulse/default.pa. JACK автоматически создаст приемник и источник Pulseaudio при запуске.
Если вы не можете использовать шину D -по какой-либо причине закомментируйте этот раздел в /etc/pulse/default.pa с помощью ' #' в начале каждой строки
### Automatically load driver modules depending on the hardware available
.ifexists module-udev-detect.so
load-module module-udev-detect
.else
### Use the static hardware detection module (for systems that lack udev support)
load-module module-detect
.endif
Это отключит Pulseaudio от заявлений об использовании любого аудиоустройства, которое может потребоваться для правильного запуска JACK. Затем вы можете запустить JACK с помощью сценария bash, включая команды для загрузки приемника и источника Pulseaudio :
.#!/bin/bash
<jack start command>
wait 2
pactl load-module module-jack-sink
pactl load-module module-jack-source
В обычных условиях это не сработает. Единственный способ, который я мог придумать, - это записывать каждую команду в файл (, например. с script
и модифицированным PS1 для перезаписи bash по любой команде ), а затем анализировать этот файл журнала в каждой новой строке (, например. дополнительно измените PS1 )для некоторого регулярного выражения, оканчивающегося на.c, чтобы начать возвышенное.
Не похоже, чтобы это стоило потраченного времени, может быть, некоторые alias s="subl "
в .bashrc
сделают вас более счастливыми, в сочетании с завершением табуляции это уже должно быть немного проще для вас.
Вам, вероятно, не следует этого делать, но можно включить функцию command_not_found_handle
в сервис, что, в свою очередь, может привести к поломке других вещей или необходимости объединения с любой другой command_not_found_handle
функциональностью, которую вы можете пожелать.
-bash-4.2$ touch foo.c
-bash-4.2$ function command_not_found_handle() { [[ -f "$1" ]] && subl "$1"; }
-bash-4.2$ foo.c
...
-bash-4.2$ bar.c
-bash-4.2$
(Одна из причин, по которой это плохая идея, заключается в том, что вы меняете грамматику командной строки из command [args..]
на command-or-plainfilethatisrunsomehow [args..]
.)
Как вариант, вы можете использовать привязку readline, вот так:
bind '"\e\C-m":"\C-asubl \C-m"'
Затем комбинация Alt + Enter или Ctrl + Alt + M откроет любой файл в Великолепный редактор. То есть, когда вы хотите открыть файл в Sublime, вы вводите имя файла (test.c
, например ), и нажимаете Alt + Enter . Комбинация клавиш может быть изменена по желанию.
Недостаток -автозаполнение bash не работает для имен файлов в первом слове строки.
Поскольку вашей целью является(скорее всего)сокращение набора текста, вы можете определить псевдоним или простой сценарий оболочки для возвышенного,
alias s='subl'
#or
alias sb='subl'
Или вы можете проявить фантазию и использовать сценарий оболочки с именем 's
' или 'sb
'(для сохранения в вашем ~/bin/
в вашем PATH ),
#!/bin/bash
subl $*
Любое из приведенных выше действий приводит к сокращению командной строки,
> s myfile.c
Что длиннее желаемого (на 2 символа ),
> myfile.c
Или вы можете проявить фантазию и вставить строку shbang(#!
)в качестве первой строки всех ваших .c
файлов, сделать файл исполняемым и вызвать приведенный выше сценарий редактирования. Это означало бы переписать ваши make-файлы так, чтобы сначала предварительно -обработать строку shbang перед компиляцией.
Сохранить как ' myfile.cs
'
#!~/bin/subl myfile.cs
#include <stdio.h>
int main() { printf("hello, world\n"); }
Чтобы продемонстрировать, как это будет работать, сохраните следующий файл: ' stuff.cs
'
#!/usr/bin/vi stuff.sh
//this is a file
//that you can edit with sublime
int main() { printf("hello, world\n"); }
Затем запустите его,
./fubar.cs
Последнее решение делает именно то, что вам нужно, но требует значительно большего набора текста и накладных расходов на предварительную -обработку.