Skip to content

Latest commit

 

History

History
74 lines (61 loc) · 3.45 KB

про-запуск-программ.org

File metadata and controls

74 lines (61 loc) · 3.45 KB

#+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)))))

(запустить-программы-из-таблицы)