diff options
Diffstat (limited to '.emacs.d/modules/thanos-commands.el')
-rw-r--r-- | .emacs.d/modules/thanos-commands.el | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/.emacs.d/modules/thanos-commands.el b/.emacs.d/modules/thanos-commands.el new file mode 100644 index 0000000..827bd49 --- /dev/null +++ b/.emacs.d/modules/thanos-commands.el @@ -0,0 +1,88 @@ +;;; thanos-commands.el --- custom commands/functions -*- lexical-binding: t; -*- + +;; Copyright (C) 2023 Thanos Apollo + +;; Author: Thanos Apollo <[email protected]> +;; Keywords: + +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see <https://www.gnu.org/licenses/>. + +;;; Commentary: + +;; + +;;; Code: + +(require 'gptel) + +(defvar vm-directory "~/virtual-machines/") + + +(defun thanos/run-in-background (command) + "Run COMMAND in the background." + (let ((command-parts (split-string command "[ ]+"))) + (apply #'call-process `(,(car command-parts) nil 0 nil ,@(cdr command-parts))))) + + +(defun thanos/emacs-keys () + "Swap caps with ctrl." + (interactive) + (start-process-shell-command + "setxkbmap" nil "setxkbmap us -option ctrl:swapcaps")) + +(defun create-text-scratch () + "Create a scratch buffer." + (interactive) + (switch-to-buffer (get-buffer-create "*Text Scratch*")) + (markdown-mode) + (gptel-mode)) + +(define-key Create (kbd "t") 'create-text-scratch) + +(defun create-scratch () + "Create scratch buffer." + (interactive) + (switch-to-buffer (get-buffer-create "*scratch*")) + (emacs-lisp-mode)) + +(define-key Create (kbd "e") 'create-scratch) + +(defun vm-create-image () + "Create qcow2 image." + (interactive) + (let ((name (format "%s%s.qcow2" vm-directory (read-string "Name: "))) + (size (format "%s" (read-string "Size(G): ")))) + (shell-command + (format "qemu-img create -f qcow2 %s %sG" name size)))) + + +(defun vm-run () + "Spawn Virtual Machine." + (interactive) + (let ((memory (format "%sG" (read-string "Memory(G): "))) + (cores (read-string "Cores: ")) + (image (read-file-name "Image: " vm-directory)) + (iso (if (y-or-n-p "Load iso?? ") + (read-file-name "ISO: ") + nil))) + (start-process-shell-command + "virtual-machine" nil + (format "qemu-system-x86_64 -enable-kvm -m %s -smp %s -hda %s -vga qxl -device virtio-serial-pci -spice port=5784,disable-ticketing -display spice-app %s " + memory cores image (when iso (concat "-cdrom " iso)))))) + + + + +(provide 'thanos-commands) +;;; thanos-commands.el ends here |