;;; FG42 --- The mighty editor for the emacsians -*- lexical-binding: t; -*- ;; ;; Copyright (c) 2010-2022 Sameer Rahmani ;; ;; Author: Sameer Rahmani ;; URL: https://gitlab.com/FG42/FG42 ;; Version: 3.0.0 ;; ;; 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 . ;; ;;; Commentary: ;;; Code: (require 'fg42/modeline) (require 'fg42/statusbar) (defmacro fg42/percentage-face (value err warn) "Return the correct face with repect to VALUE and the given thresholds ERR adn WARN" `(cond ((> ,value ,err) 'error) ((> ,value ,warn) 'warning) (t 'success))) (defbar-unit fg42/statusbar-battery 30 "B--" (format "B%s" (string-trim (with-temp-buffer (insert-file-contents "/sys/class/power_supply/BAT0/capacity") (buffer-string))))) (defbar-unit fg42/statusbar-memory 3 "M--S--" (let* ((struct (string-trim (shell-command-to-string "free -k|tail -n 2|awk '{printf(\"%s,%s,\", $3, $2)}'"))) (vals (mapcar #'cl-parse-integer (butlast (split-string struct ",")))) ;; TODO: Check for division by zero (m (* 100 (/ (float(car vals)) (cadr vals)))) ;; TODO: Check for division by zero (s (* 100 (/ (float(caddr vals)) (cadddr vals)))) (x )) (format "M%sS%s" (propertize (format "%02d" m) 'face (fg42/percentage-face m 90 75)) (propertize (format "%02d" s) 'face (fg42/percentage-face s 90 75))))) ;; The default modeline for FG42 that is compatible with ;; the FG42's status bar only (defmode-line fg42/statusbar-default (if (display-graphic-p) (progn ;; We are in the graphical world (require 'all-the-icons) (list :brief (list 'fg42/statusbar-battery 'fg42/statusbar-memory "|" '(buffer-name) "|" '(format-mode-line "%l:%c") "|" '(format-time-string "%m-%d %H:%M")) :long " ")) ;; No GUI (list :brief (list) :long ""))) (provide 'fg42/modeline/statusbar-default) ;;; statusbar-default.el ends here