summaryrefslogtreecommitdiff
path: root/.emacs.d/modules/thanos-commands.el
diff options
context:
space:
mode:
Diffstat (limited to '.emacs.d/modules/thanos-commands.el')
-rw-r--r--.emacs.d/modules/thanos-commands.el88
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