aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--css/site.css10
-rw-r--r--org/lowbat.org26
-rw-r--r--projects/lowbat.php272
3 files changed, 304 insertions, 4 deletions
diff --git a/css/site.css b/css/site.css
index 95f37fc..0e6060b 100644
--- a/css/site.css
+++ b/css/site.css
@@ -95,25 +95,25 @@ a {
}
a:link {
- color: #45a;
+ color: #23b;
background-color: transparent;
text-decoration: none;
}
a:visited {
- color: #45a;
+ color: #23b;
background-color: transparent;
text-decoration: none;
}
a:hover {
- color: #45a;
+ color: #23b;
background-color: transparent;
text-decoration: underline;
}
a:active {
- color: #45a;
+ color: #23b;
background-color: transparent;
text-decoration: none;
}
@@ -196,6 +196,8 @@ div.body-contents ul {
div.body-contents code {
background-color: #e4e4e4;
+ color: #24d;
+ font-size: large;
border-radius: 5px;
padding: 2px 5px 2px 5px;
}
diff --git a/org/lowbat.org b/org/lowbat.org
new file mode 100644
index 0000000..9fbbb52
--- /dev/null
+++ b/org/lowbat.org
@@ -0,0 +1,26 @@
+#+TITLE: lowbat - lightweight low battery notifier
+
+* Why lowbat?
+ I've been using minimalist OS installations for work, personnal computing and playing video games for a while now.
+I used [[https://www.archlinux.org/][Arch Linux]], I still use [[https://gentoo.org/][Gentoo Linux]] - which is by far my favorite Linux distribution - as a desktop OS, and now I am using
+[[https://www.freebsd.org/][FreeBSD]] on my workstation.
+
+Those operating systems and distributions basically come with a kernel, coreutils, a shell and that's pretty much it.
+Everything else has to be installed manually. I love this philosophy, the simplicity behind it and the fact that
+you know exactly what's on your system at any moment.
+
+As window managers, I used [[http://dwm.suckless.org/][dwm]] for a while, and I am now using [[https://github.com/baskerville/bspwm][bspwm]]. They are ultra-fast, very lightweight and do not bring
+extra bloatware to my systems. I do not use a status bar as well, I like my applications to use the full screen space available.
+
+A big problem for me with this setup for me was that they do not come with some kind of warning or notification system,
+like fancier desktop environments would, when my laptop battery is low. That also was before I started using *Emacs*, discovering
+the battery level indicator in the modeline. Ultimatly the frustration was too important when the computer kept shutting down in
+the middle of important work too many time. Then I decided to create lowbat to cure this issue.
+
+It started as a very short [[https://github.com/tklauser/dash][dash]] ~shell~ script that was working fine but I wanted to experiment a little bit with this. It turned into
+a ~C++~ program, which is still the case for the GNU/Linux version. Switching to FreeBSD, I exerimented again by turning it into
+an ~x64 assembly~ program, following the *Intel* syntax. These days, I am rewriting it with the *AT&T* syntax.
+
+* Links to lowbat
+ - GNU/Linux: [[https://github.com/JozanLeClerc/lowbat][lowbat's GitHub GNU/Linux repository]]
+ - BSD: [[https://github.com/JozanLeClerc/lowbat-bsd][lowbat's GitHub BSD repository]]
diff --git a/projects/lowbat.php b/projects/lowbat.php
index 4741d0f..2777a78 100644
--- a/projects/lowbat.php
+++ b/projects/lowbat.php
@@ -20,6 +20,278 @@ if ($curr_dir != "jozan" && $curr_dir != "jozanleclerc.xyz") {
<?php include $prefix."inc/classic-contents.inc.php"; ?>
<?php jo_head("lowbat"); ?>
<?php jo_sidebar(); ?>
+<style type="text/css">
+ <!--/*--><![CDATA[/*><!--*/
+ .title { text-align: center;
+ margin-bottom: .2em; }
+ .subtitle { text-align: center;
+ font-size: medium;
+ font-weight: bold;
+ margin-top:0; }
+ .todo { font-family: monospace; color: red; }
+ .done { font-family: monospace; color: green; }
+ .priority { font-family: monospace; color: orange; }
+ .tag { background-color: #eee; font-family: monospace;
+ padding: 2px; font-size: 80%; font-weight: normal; }
+ .timestamp { color: #bebebe; }
+ .timestamp-kwd { color: #5f9ea0; }
+ .org-right { margin-left: auto; margin-right: 0px; text-align: right; }
+ .org-left { margin-left: 0px; margin-right: auto; text-align: left; }
+ .org-center { margin-left: auto; margin-right: auto; text-align: center; }
+ .underline { text-decoration: underline; }
+ #postamble p, #preamble p { font-size: 90%; margin: .2em; }
+ p.verse { margin-left: 3%; }
+ pre {
+ border: 1px solid #ccc;
+ box-shadow: 3px 3px 3px #eee;
+ padding: 8pt;
+ font-family: monospace;
+ overflow: auto;
+ margin: 1.2em;
+ }
+ pre.src {
+ position: relative;
+ overflow: visible;
+ padding-top: 1.2em;
+ }
+ pre.src:before {
+ display: none;
+ position: absolute;
+ background-color: white;
+ top: -10px;
+ right: 10px;
+ padding: 3px;
+ border: 1px solid black;
+ }
+ pre.src:hover:before { display: inline;}
+ /* Languages per Org manual */
+ pre.src-asymptote:before { content: 'Asymptote'; }
+ pre.src-awk:before { content: 'Awk'; }
+ pre.src-C:before { content: 'C'; }
+ /* pre.src-C++ doesn't work in CSS */
+ pre.src-clojure:before { content: 'Clojure'; }
+ pre.src-css:before { content: 'CSS'; }
+ pre.src-D:before { content: 'D'; }
+ pre.src-ditaa:before { content: 'ditaa'; }
+ pre.src-dot:before { content: 'Graphviz'; }
+ pre.src-calc:before { content: 'Emacs Calc'; }
+ pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
+ pre.src-fortran:before { content: 'Fortran'; }
+ pre.src-gnuplot:before { content: 'gnuplot'; }
+ pre.src-haskell:before { content: 'Haskell'; }
+ pre.src-hledger:before { content: 'hledger'; }
+ pre.src-java:before { content: 'Java'; }
+ pre.src-js:before { content: 'Javascript'; }
+ pre.src-latex:before { content: 'LaTeX'; }
+ pre.src-ledger:before { content: 'Ledger'; }
+ pre.src-lisp:before { content: 'Lisp'; }
+ pre.src-lilypond:before { content: 'Lilypond'; }
+ pre.src-lua:before { content: 'Lua'; }
+ pre.src-matlab:before { content: 'MATLAB'; }
+ pre.src-mscgen:before { content: 'Mscgen'; }
+ pre.src-ocaml:before { content: 'Objective Caml'; }
+ pre.src-octave:before { content: 'Octave'; }
+ pre.src-org:before { content: 'Org mode'; }
+ pre.src-oz:before { content: 'OZ'; }
+ pre.src-plantuml:before { content: 'Plantuml'; }
+ pre.src-processing:before { content: 'Processing.js'; }
+ pre.src-python:before { content: 'Python'; }
+ pre.src-R:before { content: 'R'; }
+ pre.src-ruby:before { content: 'Ruby'; }
+ pre.src-sass:before { content: 'Sass'; }
+ pre.src-scheme:before { content: 'Scheme'; }
+ pre.src-screen:before { content: 'Gnu Screen'; }
+ pre.src-sed:before { content: 'Sed'; }
+ pre.src-sh:before { content: 'shell'; }
+ pre.src-sql:before { content: 'SQL'; }
+ pre.src-sqlite:before { content: 'SQLite'; }
+ /* additional languages in org.el's org-babel-load-languages alist */
+ pre.src-forth:before { content: 'Forth'; }
+ pre.src-io:before { content: 'IO'; }
+ pre.src-J:before { content: 'J'; }
+ pre.src-makefile:before { content: 'Makefile'; }
+ pre.src-maxima:before { content: 'Maxima'; }
+ pre.src-perl:before { content: 'Perl'; }
+ pre.src-picolisp:before { content: 'Pico Lisp'; }
+ pre.src-scala:before { content: 'Scala'; }
+ pre.src-shell:before { content: 'Shell Script'; }
+ pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
+ /* additional language identifiers per "defun org-babel-execute"
+ in ob-*.el */
+ pre.src-cpp:before { content: 'C++'; }
+ pre.src-abc:before { content: 'ABC'; }
+ pre.src-coq:before { content: 'Coq'; }
+ pre.src-groovy:before { content: 'Groovy'; }
+ /* additional language identifiers from org-babel-shell-names in
+ ob-shell.el: ob-shell is the only babel language using a lambda to put
+ the execution function name together. */
+ pre.src-bash:before { content: 'bash'; }
+ pre.src-csh:before { content: 'csh'; }
+ pre.src-ash:before { content: 'ash'; }
+ pre.src-dash:before { content: 'dash'; }
+ pre.src-ksh:before { content: 'ksh'; }
+ pre.src-mksh:before { content: 'mksh'; }
+ pre.src-posh:before { content: 'posh'; }
+ /* Additional Emacs modes also supported by the LaTeX listings package */
+ pre.src-ada:before { content: 'Ada'; }
+ pre.src-asm:before { content: 'Assembler'; }
+ pre.src-caml:before { content: 'Caml'; }
+ pre.src-delphi:before { content: 'Delphi'; }
+ pre.src-html:before { content: 'HTML'; }
+ pre.src-idl:before { content: 'IDL'; }
+ pre.src-mercury:before { content: 'Mercury'; }
+ pre.src-metapost:before { content: 'MetaPost'; }
+ pre.src-modula-2:before { content: 'Modula-2'; }
+ pre.src-pascal:before { content: 'Pascal'; }
+ pre.src-ps:before { content: 'PostScript'; }
+ pre.src-prolog:before { content: 'Prolog'; }
+ pre.src-simula:before { content: 'Simula'; }
+ pre.src-tcl:before { content: 'tcl'; }
+ pre.src-tex:before { content: 'TeX'; }
+ pre.src-plain-tex:before { content: 'Plain TeX'; }
+ pre.src-verilog:before { content: 'Verilog'; }
+ pre.src-vhdl:before { content: 'VHDL'; }
+ pre.src-xml:before { content: 'XML'; }
+ pre.src-nxml:before { content: 'XML'; }
+ /* add a generic configuration mode; LaTeX export needs an additional
+ (add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
+ pre.src-conf:before { content: 'Configuration File'; }
+
+ table { border-collapse:collapse; }
+ caption.t-above { caption-side: top; }
+ caption.t-bottom { caption-side: bottom; }
+ td, th { vertical-align:top; }
+ th.org-right { text-align: center; }
+ th.org-left { text-align: center; }
+ th.org-center { text-align: center; }
+ td.org-right { text-align: right; }
+ td.org-left { text-align: left; }
+ td.org-center { text-align: center; }
+ dt { font-weight: bold; }
+ .footpara { display: inline; }
+ .footdef { margin-bottom: 1em; }
+ .figure { padding: 1em; }
+ .figure p { text-align: center; }
+ .inlinetask {
+ padding: 10px;
+ border: 2px solid gray;
+ margin: 10px;
+ background: #ffffcc;
+ }
+ #org-div-home-and-up
+ { text-align: right; font-size: 70%; white-space: nowrap; }
+ textarea { overflow-x: auto; }
+ .linenr { font-size: smaller }
+ .code-highlighted { background-color: #ffff00; }
+ .org-info-js_info-navigation { border-style: none; }
+ #org-info-js_console-label
+ { font-size: 10px; font-weight: bold; white-space: nowrap; }
+ .org-info-js_search-highlight
+ { background-color: #ffff00; color: #000000; font-weight: bold; }
+ .org-svg { width: 90%; }
+ /*]]>*/-->
+</style>
+<script type="text/javascript">
+/*
+@licstart The following is the entire license notice for the
+JavaScript code in this tag.
+
+Copyright (C) 2012-2019 Free Software Foundation, Inc.
+
+The JavaScript code in this tag is free software: you can
+redistribute it and/or modify it under the terms of the GNU
+General Public License (GNU GPL) as published by the Free Software
+Foundation, either version 3 of the License, or (at your option)
+any later version. The code is distributed WITHOUT ANY WARRANTY;
+without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
+
+As additional permission under GNU GPL version 3 section 7, you
+may distribute non-source (e.g., minimized or compacted) forms of
+that code without the copy of the GNU GPL normally required by
+section 4, provided you include this license notice and a URL
+through which recipients can access the Corresponding Source.
+
+
+@licend The above is the entire license notice
+for the JavaScript code in this tag.
+*/
+<!--/*--><![CDATA[/*><!--*/
+ function CodeHighlightOn(elem, id)
+ {
+ var target = document.getElementById(id);
+ if(null != target) {
+ elem.cacheClassElem = elem.className;
+ elem.cacheClassTarget = target.className;
+ target.className = "code-highlighted";
+ elem.className = "code-highlighted";
+ }
+ }
+ function CodeHighlightOff(elem, id)
+ {
+ var target = document.getElementById(id);
+ if(elem.cacheClassElem)
+ elem.className = elem.cacheClassElem;
+ if(elem.cacheClassTarget)
+ target.className = elem.cacheClassTarget;
+ }
+/*]]>*///-->
+</script>
<div class="body-contents">
+<h1 class="title">lowbat - lightweight low battery notifier</h1>
+<div id="table-of-contents">
+<h2>Table of Contents</h2>
+<div id="text-table-of-contents">
+<ul>
+<li><a href="#org49a1737">1. Why lowbat?</a></li>
+<li><a href="#orgafd577f">2. Links to lowbat</a></li>
+</ul>
+</div>
+</div>
+
+<div id="outline-container-org49a1737" class="outline-2">
+<h2 id="org49a1737"><span class="section-number-2">1</span> Why lowbat?</h2>
+<div class="outline-text-2" id="text-1">
+<p>
+ I've been using minimalist OS installations for work, personnal computing and playing video games for a while now.
+I used <a href="https://www.archlinux.org/">Arch Linux</a>, I still use <a href="https://gentoo.org/">Gentoo Linux</a> - which is by far my favorite Linux distribution - as a desktop OS, and now I am using
+<a href="https://www.freebsd.org/">FreeBSD</a> on my workstation.
+</p>
+
+<p>
+Those operating systems and distributions basically come with a kernel, coreutils, a shell and that's pretty much it.
+Everything else has to be installed manually. I love this philosophy, the simplicity behind it and the fact that
+you know exactly what's on your system at any moment.
+</p>
+
+<p>
+As window managers, I used <a href="http://dwm.suckless.org/">dwm</a> for a while, and I am now using <a href="https://github.com/baskerville/bspwm">bspwm</a>. They are ultra-fast, very lightweight and do not bring
+extra bloatware to my systems. I do not use a status bar as well, I like my applications to use the full screen space available.
+</p>
+
+<p>
+A big problem for me with this setup for me was that they do not come with some kind of warning or notification system,
+like fancier desktop environments would, when my laptop battery is low. That also was before I started using <b>Emacs</b>, discovering
+the battery level indicator in the modeline. Ultimatly the frustration was too important when the computer kept shutting down in
+the middle of important work too many time. Then I decided to create lowbat to cure this issue.
+</p>
+
+<p>
+It started as a very short <a href="https://github.com/tklauser/dash">dash</a> <code>shell</code> script that was working fine but I wanted to experiment a little bit with this. It turned into
+a <code>C++</code> program, which is still the case for the GNU/Linux version. Switching to FreeBSD, I exerimented again by turning it into
+an <code>x64 assembly</code> program, following the <b>Intel</b> syntax. These days, I am rewriting it with the <b>AT&amp;T</b> syntax.
+</p>
+</div>
+</div>
+
+<div id="outline-container-orgafd577f" class="outline-2">
+<h2 id="orgafd577f"><span class="section-number-2">2</span> Links to lowbat</h2>
+<div class="outline-text-2" id="text-2">
+<ul class="org-ul">
+<li>GNU/Linux: <a href="https://github.com/JozanLeClerc/lowbat">lowbat's GitHub GNU/Linux repository</a></li>
+<li>BSD: <a href="https://github.com/JozanLeClerc/lowbat-bsd">lowbat's GitHub BSD repository</a></li>
+</ul>
+</div>
+</div>
</div>
<?php jo_footer(); ?>