#+T#+TITLE: Запуск команд EXWM
Команда | Примечание |
---|---|
nm-applet | Сетевой апплет |
blueman-applet | Блутус апплет |
copyq | Буфер обмена |
udiskie -t | Управление дисками |
dunst -conf ~/pro/etc/dunstrc | Нотификации |
pasystray | Микшер в трее |
;; Показывать команду в имени буфера
(defun my-async-shell-command-advice (orig-fun command &rest args)
"Create a custom buffer name for async-shell-command using COMMAND."
(let ((buffer-name (format "*Async: %s*" command)))
(with-current-buffer (get-buffer-create buffer-name)
(apply orig-fun command args))))
(advice-add 'async-shell-command :around #'my-async-shell-command-advice)
(require 'cl-lib)
;; Список для хранения активных процессов
(defvar async-shell-processes '() "Список активных асинхронных процессов.")
(defun запустить-программу (command)
"Run COMMAND asynchronously and log output to the *Messages* buffer."
(let ((process (start-process-shell-command "async-shell-command" "*Async Shell Command*" command)))
(set-process-filter process
(lambda (proc output)
(message "%s" output)))
;; Сохраняем процесс в список
(push process async-shell-processes)))
(defun выключить-все-запущенные-программы ()
"Terminate all programs from keys-table asynchronously."
(interactive)
(dolist (proc async-shell-processes)
(when (process-live-p proc)
(kill-process proc))) ;; Завершаем каждый процесс
(setq async-shell-processes '()) ;; Очищаем список после завершения
(message "Все программы остановлены."))
(add-hook 'kill-emacs-hook 'выключить-все-запущенные-программы)
(defun запустить-программы-из-таблицы ()
"Запускает все программы из таблицы"
(interactive)
(let ((commands (mapcar 'car программы)) ;; Извлечение команд
(имена (mapcar 'cadr программы)) ;; Извлечение примечаний
(delay 12)) ;; Начальная задержка
(cl-loop for (cmd program) in (cl-mapcar 'list commands имена)
do
(run-at-time delay nil
(lambda (command prog)
(message "Запуск: %s [%s]" prog command) ;; Печать сообщения с именем программы
(запустить-программу (concat "dbus-launch " command)))
cmd program)
(setq delay (+ delay 0.3)))))
(запустить-программы-из-таблицы)