diff --git a/.config/fish/README.org b/.config/fish/README.org
deleted file mode 120000
index f13833e..0000000
--- a/.config/fish/README.org
+++ /dev/null
@@ -1 +0,0 @@
-config.org
\ No newline at end of file
diff --git a/.config/fish/README.org b/.config/fish/README.org
new file mode 100644
index 0000000..28e06e9
--- /dev/null
+++ b/.config/fish/README.org
@@ -0,0 +1,550 @@
+#+TITLE: Phundrak’s dotfiles
+#+AUTHOR: Lucien "Phundrak” Cartier-Tilet
+#+EMAIL: phundrak@phundrak.fr
+#+OPTIONS: H:4 broken_links:mark email:t ^:{} auto-id:t
+
+# ### LaTeX ####################################################################
+#+LATEX_CLASS: conlang
+#+LaTeX_CLASS_OPTIONS: [a4paper,twoside]
+#+LATEX_HEADER_EXTRA: \usepackage{tocloft} \setlength{\cftchapnumwidth}{3em}
+#+LATEX_HEADER_EXTRA: \usepackage{xltxtra,fontspec,xunicode,svg}
+#+LATEX_HEADER_EXTRA: \usepackage[total={17cm,24cm}]{geometry}
+#+LATEX_HEADER_EXTRA: \setromanfont{Charis SIL}
+#+LATEX_HEADER_EXTRA: \usepackage{xcolor}
+#+LATEX_HEADER_EXTRA: \usepackage{hyperref}
+#+LATEX_HEADER_EXTRA: \hypersetup{colorlinks=true,linkbordercolor=red,linkcolor=blue,pdfborderstyle={/S/U/W 1}}
+#+LATEX_HEADER_EXTRA: \usepackage{multicol}
+#+LATEX_HEADER_EXTRA: \usepackage{indentfirst}
+#+LATEX_HEADER_EXTRA: \sloppy
+
+# ### HTML #####################################################################
+#+HTML_DOCTYPE: html5
+#+HTML_HEAD_EXTRA:
+#+HTML_HEAD_EXTRA:
+#+HTML_HEAD_EXTRA:
+#+HTML_HEAD_EXTRA:
+#+HTML_HEAD_EXTRA:
+#+HTML_HEAD_EXTRA:
+#+HTML_HEAD_EXTRA:
+#+HTML_HEAD_EXTRA:
+#+HTML_HEAD_EXTRA:
+#+HTML_HEAD_EXTRA:
+#+HTML_HEAD_EXTRA:
+#+HTML_HEAD_EXTRA:
+#+INFOJS_OPT: view:info toc:1 home:https://phundrak.fr/ toc:t
+#+HTML_HEAD_EXTRA:
+#+HTML_HEAD_EXTRA:
+#+HTML_HEAD_EXTRA:
+#+HTML_HEAD_EXTRA:
+
+* Table of Contents :TOC_4_gh:noexport:
+ :PROPERTIES:
+ :CUSTOM_ID: h-c7ab05d0-4c5f-4a4c-8603-4c79e264141c
+ :END:
+- [[#presentation][Presentation]]
+ - [[#fish-from-within-emacs][Fish from within Emacs]]
+ - [[#tramp-remote-access][Tramp remote access]]
+ - [[#regular-fish-shell-appearance][Regular fish shell appearance]]
+ - [[#global-variables][Global variables]]
+ - [[#abbreviations][Abbreviations]]
+ - [[#system-monitoring][System monitoring]]
+ - [[#system-management-packages-and-services][System management (packages and services)]]
+ - [[#package-mangaement][Package mangaement]]
+ - [[#service-management][Service management]]
+ - [[#development][Development]]
+ - [[#cmake][CMake]]
+ - [[#compilation][Compilation]]
+ - [[#docker][Docker]]
+ - [[#git][Git]]
+ - [[#prolog][Prolog]]
+ - [[#text-editors][Text editors]]
+ - [[#latex][LaTeX]]
+ - [[#some-security-measures][Some security measures]]
+ - [[#typos][Typos]]
+ - [[#misc][Misc]]
+ - [[#sudo][Sudo]]
+ - [[#exit][Exit]]
+ - [[#history][History]]
+ - [[#song-download-from-youtube][Song download from YouTube]]
+ - [[#mpv][MPV]]
+ - [[#compression][Compression]]
+ - [[#feh][Feh]]
+ - [[#ls][ls]]
+ - [[#networkmanager][NetworkManager]]
+ - [[#wget][Wget]]
+
+* Presentation
+ :PROPERTIES:
+ :CUSTOM_ID: h-c2560b46-7f97-472f-b898-5ab483832228
+ :HEADER-ARGS: :tangle config.fish :exports code
+ :END:
+ The file present in =~/.config/fish/config.fish= is the configuration file for
+ the [[https://fishshell.com/][fish shell]]. It contains custom functions, environment variables and
+ abbreviations.
+
+ Just in case, we might need sometimes to declare the fish function
+ =fish_title= as =true=, so let’s do so.
+ #+BEGIN_SRC fish
+ function fish_title
+ true
+ end
+ #+END_SRC
+
+** Fish from within Emacs
+ :PROPERTIES:
+ :CUSTOM_ID: h-97d738f4-1ea0-4f64-a31d-19643486a951
+ :END:
+ I sometimes call fish from within emacs, with =M-x ansi-term=. In this case,
+ the variable =TERM= needs to have the value =eterm-color=.
+ #+BEGIN_SRC fish
+ if test -n "$EMACS"
+ set -x TERM eterm-color
+ end
+ #+END_SRC
+
+** Tramp remote access
+ :PROPERTIES:
+ :CUSTOM_ID: h-6cad2cc9-aef6-4df4-90f9-97053e82072a
+ :END:
+ When accessing from a remote machine our computer from Emacs, tramp needs a
+ precise shell appearance: a simple =$= followed by a space after which to put
+ the commands it needs to execute, and nothing else. Due to this, let’s
+ deactivate and redefine some of the functions defining the appearance of
+ fish.
+ #+BEGIN_SRC fish
+ if test "$TERM" = "dumb"
+ function fish_prompt
+ echo "\$ "
+ end
+ function fish_right_prompt; end
+ function fish_greeting; end
+ function fish_title; end
+ end
+ #+END_SRC
+
+** Regular fish shell appearance
+ :PROPERTIES:
+ :CUSTOM_ID: h-a8434b29-c146-4141-b8f8-1b446c791907
+ :END:
+ Now, there is only one function I modify when it comes to the appearance of
+ fish when I’m the one using it: I simply “delete” the =fish_greeting=
+ function.
+ #+BEGIN_SRC fish
+ function fish_greeting; end
+ #+END_SRC
+
+** Global variables
+ :PROPERTIES:
+ :CUSTOM_ID: h-0eff37da-af9f-4546-8ad3-201961a2200f
+ :END:
+ Some global variables might sometimes be needed and need to be modified. This
+ is for example the case with my =PATH= variable in which I add Rust’s Cargo’s
+ binaries, Go’s binaries and my own executables. And of course, don’t forget
+ to add the already existing =PATH=.
+ #+BEGIN_SRC fish
+ set -gx PATH $HOME/.local/bin $HOME/go/bin $HOME/.cargo/bin $PATH
+ #+END_SRC
+
+ Sometimes, software will rely on =SUDO_ASKPASS= to get a GUI from which it
+ can get the sudo password. So, let’s declare it.
+ #+BEGIN_SRC fish
+ set -gx SUDO_ASKPASS ~/.local/bin/askpass
+ #+END_SRC
+
+ Now, let’s declare our editor of choice, EmacsClient. Now, we want it to run
+ in the terminal, since it will most often be just quick edits, nothing too
+ heavy, if it is called from the =EDITOR= variable (from Git, for example).
+ #+BEGIN_SRC fish
+ set -gx EDITOR emacsclient -c -nw
+ #+END_SRC
+
+ Finally, some development packages require the =PKG_CONFIG_PATH= to be set,
+ so let’s do so.
+ #+BEGIN_SRC fish
+ set -gx PKG_CONFIG_PATH /usr/local/lib/pkgconfig/ $PKG_CONFIG_PATH
+ #+END_SRC
+
+** Abbreviations
+ :PROPERTIES:
+ :CUSTOM_ID: h-740bd904-3e32-4c09-b0a4-bde16ae2e116
+ :END:
+*** System monitoring
+ :PROPERTIES:
+ :CUSTOM_ID: h-ec910a8c-9154-48a4-b4cd-df28cb4e54d9
+ :END:
+ Here I have some abbreviations which are quite useful when performing some
+ system monitoring. With =df=, we can get an overview of our filesystem
+ usage, while with =diskspace= we get some more precise information.
+ #+BEGIN_SRC fish
+ abbr df 'df -H'
+ abbr diskspace 'sudo df -h | grep -E "sd|lv|Size"'
+ #+END_SRC
+
+ =meminfo= is a call to =free= with sane defaults.
+ #+BEGIN_SRC fish
+ abbr meminfo 'free -m -l -t'
+ #+END_SRC
+
+ Similar to =meminfo=, we also have =gpumeminfo= so we can get a quick look
+ at the memory-related logs of our X session.
+ #+BEGIN_SRC fish
+ abbr gpumeminfo 'grep -i --color memory /var/log/Xorg.0.log'
+ #+END_SRC
+
+ I also declared =cpuinfo= an alias of =lscpu= in order to keep consistent
+ with =meminfo=.
+ #+BEGIN_SRC fish
+ abbr cpuinfo lscpu
+ #+END_SRC
+
+ =pscpu= gives us information on what the CPU is running right now, and
+ =pscpu10= limits that to the top 10 threads.
+ #+BEGIN_SRC fish
+ abbr pscpu 'ps auxf | sort -nr -k 3'
+ abbr pscpu10 'ps auxf | sort -nr -k 3 | head -10'
+ #+END_SRC
+
+ Similarly, =psmem= gives us information on the memory usage of the current
+ threads, and =psmem10= only the ten most important threads in terms of
+ memory usage.
+ #+BEGIN_SRC fish
+ abbr psmem 'ps auxf | sort -nr -k 4'
+ abbr psmem10 'ps auxf | sort -nr -k 4 | head -10'
+ #+END_SRC
+
+*** System management (packages and services)
+ :PROPERTIES:
+ :CUSTOM_ID: h-78ac23f0-960d-4f56-9cba-64413fd61885
+ :END:
+ I added some of these abbreviations due to how often I have to write the
+ whole thing.
+
+**** Package mangaement
+ :PROPERTIES:
+ :CUSTOM_ID: h-281a59aa-4ea0-47ab-a4cc-33fff8d38165
+ :END:
+ The first command is =remove= which removes a package from my system, as
+ well as its dependencies no longer needed.
+ #+BEGIN_SRC fish
+ abbr remove 'sudo pacman -Rscnd'
+ #+END_SRC
+
+ And if I want to install something, I just have to type =install=.
+ #+BEGIN_SRC fish
+ abbr install 'sudo pacman -Sy'
+ #+END_SRC
+
+ But if I just want to run =pacman= as sudo, then I could always just type
+ =p=.
+ #+BEGIN_SRC fish
+ abbr p 'sudo -A pacman'
+ #+END_SRC
+
+ Sometimes, I just want to purge my package manager’s cache, be it
+ =pacman='s or =yay='s. This is why I simply type =purge=.
+ #+BEGIN_SRC fish
+ abbr purge 'yay -Sc'
+ #+END_SRC
+
+ And if I want to simply seach among the =pacman= repos, I can type
+ =search=. Otherwise, if I want to include AUR results, I’ll use =yay=.
+ #+BEGIN_SRC fish
+ abbr search 'pacman -Ss'
+ #+END_SRC
+
+ To update everything from the official repos, I’ll sometimes type =update=
+ instead of the full command.
+ #+BEGIN_SRC fish
+ abbr update 'sudo pacman -Syu'
+ #+END_SRC
+
+**** Service management
+ :PROPERTIES:
+ :CUSTOM_ID: h-3a734119-ccee-4cdf-b04c-d55a37dea571
+ :END:
+ I don’t have the muscle memory of =systemctl=. So instead, I simply type
+ =c= when I want to do something user service related.
+ #+BEGIN_SRC fish
+ abbr s 'systemctl --user'
+ #+END_SRC
+
+ And if I want to manipulate system services, I can instead type a simple
+ capital =S=.
+ #+BEGIN_SRC fish
+ abbr S 'sudo systemctl'
+ #+END_SRC
+
+*** Development
+ :PROPERTIES:
+ :CUSTOM_ID: h-32ae38a2-41ad-438e-b619-220a63166115
+ :END:
+ A good amount of these commands are development related, especially when it
+ comes to compilation or Docker.
+
+**** CMake
+ :PROPERTIES:
+ :CUSTOM_ID: h-887c87aa-b100-4b27-9006-778fd7e3329c
+ :END:
+ I have the following abbreviations so I can quickly run CMake and create a
+ configuration for debug or release profiles.
+ #+BEGIN_SRC fish
+ abbr cdebug 'cmake -DCMAKE_BUILD_TYPE=Debug'
+ abbr crelease 'cmake -DCMAKE_BUILD_TYPE=Release'
+ #+END_SRC
+
+**** Compilation
+ :PROPERTIES:
+ :CUSTOM_ID: h-0beb47e5-d76a-4037-8f58-e8de141e3761
+ :END:
+ By default, I set =clang=, =clang++=, =gcc= and =g++= to the latest
+ standard and with the =-Wall= flag activated.
+ #+BEGIN_SRC fish :tangle
+ abbr clang 'clang -Wall'
+ abbr clang++ 'clang++ -Wall'
+ abbr g++ 'g++ -Wall -std=c++17'
+ abbr gcc 'gcc -Wall -std=c18'
+ #+END_SRC
+
+**** Docker
+ :PROPERTIES:
+ :CUSTOM_ID: h-91c7ff90-7b43-4802-be69-5d102281c6d3
+ :END:
+ And of course, when it comes to Docker Compose, I don’t have time to write
+ the full command, so I use these instead.
+ #+BEGIN_SRC fish
+ abbr dc docker-compose
+ abbr dcd 'docker-compose down'
+ abbr dcr 'docker-compose run --rm'
+ abbr dcu 'docker-compose up'
+ abbr dcub 'docker-compose up --build'
+ #+END_SRC
+
+**** Git
+ :PROPERTIES:
+ :CUSTOM_ID: h-e72347d4-590e-448c-bc33-0a70fa8ab35b
+ :END:
+ And let’s face it: we all at one point just wanted to commit our code
+ without thinking about the message, to just get over with it. Don’t worry,
+ I got you covered.
+ #+BEGIN_SRC fish :tangle
+ abbr randcommit 'git commit -m (curl -s whatthecommit.com/index.txt)'
+ #+END_SRC
+
+**** Prolog
+ :PROPERTIES:
+ :CUSTOM_ID: h-cbb6c31e-faaa-48c3-a83a-d1f143fdcb8d
+ :END:
+ When I launch =swipl=, I prefer to have my terminal cleaned before and
+ after it runs, I find it more clean.
+ #+BEGIN_SRC fish
+ abbr swipl 'clear && swipl -q && clear'
+ #+END_SRC
+
+**** Text editors
+ :PROPERTIES:
+ :CUSTOM_ID: h-51155e06-872d-4a12-9bf7-ae5eabc256ad
+ :END:
+ I greatly prefer to use Emacsclient as my main text editor; Emacs has
+ basically all I need. So, it’s only normal I have an abbreviation to launch
+ a new instance of it.
+ #+BEGIN_SRC fish
+ abbr e 'emacsclient -c'
+ #+END_SRC
+ However, in a graphical environment, this will launch a new graphical
+ window of Emacs. To launch a terminal instance, I’ll use =enw= (=nw= stands
+ for the option “nowindow” =-nw= of Emacs).
+ #+BEGIN_SRC fish
+ abbr enw 'emacsclient -c -nw'
+ #+END_SRC
+
+ I also have the abbreviation =vi= which refers to =vim=. I really should
+ learn =vi=, but I also really don’t feel like it.
+ #+BEGIN_SRC fish
+ abbr vi vim
+ #+END_SRC
+
+*** LaTeX
+ :PROPERTIES:
+ :CUSTOM_ID: h-a8f8a707-90d7-4784-982d-d959b183148e
+ :END:
+ Yes, although I use org-mode, I still have some use for LaTeX, especially
+ when it comes to PDF exports of my org files. Hence why I use the LaTeX
+ package manager. It is recommended to use =tllocalmgr= instead of =tlmgr=,
+ but I can never remember the command, and the latter is faster to type, so
+ time for an abbreviation.
+ #+BEGIN_SRC fish
+ abbr tlmgr tllocalmgr
+ #+END_SRC
+
+ #+BEGIN_SRC fish
+ abbr texhash 'sudo texhash'
+ #+END_SRC
+
+*** Some security measures
+ :PROPERTIES:
+ :CUSTOM_ID: h-dd97ea71-c43f-4b79-8bb7-1f857284b1b4
+ :END:
+ Some commands can be quite dangerous when not used properly, which is why I
+ added default flags and options so I can get warnings before things get
+ ugly.
+ #+BEGIN_SRC fish
+ abbr cp 'cp -i'
+ abbr ln 'ln -i'
+ abbr lns 'ln -si'
+ abbr mv 'mv -i'
+ abbr rm 'rm -I'
+ abbr rmd 'rm --preserve-root -Ir'
+ abbr rmdf 'rm --preserve-root -Irf'
+ abbr rmf 'rm --preserve-root -If'
+ #+END_SRC
+ The =-i= and =-I= add prompts in case we might not want to do what we asked
+ the shell to do. Notice =lns= which creates symlinks, =rmd= which removes
+ directories, =rmf= which forces deletion, and =rmdf= which forces the
+ delition of a directory. Notice also the =--preserve-root= which will
+ prevent me from accidentally removing the root folder. I added the same
+ option to =chgrp=, =chmod=, and =chown=.
+ #+BEGIN_SRC fish
+ abbr chgrp 'chgrp --preserve-root'
+ abbr chmod 'chmod --preserve-root'
+ abbr chown 'chown --preserve-root'
+ #+END_SRC
+
+*** Typos
+ :PROPERTIES:
+ :CUSTOM_ID: h-4c5a03cd-20a8-437e-87b7-af990780084e
+ :END:
+ Let’s admit it, we all make typos from time to time in the shell, and some
+ are recurrent enough we make abbreviations or aliases of the correct
+ command. Well, I have some of my abbreviations which were make exactly
+ because of this.
+
+ Sometimes for some reasons, my brain makes me write =clean= instead of
+ =clear=. So, let’s just replace the former by the latter.
+ #+BEGIN_SRC fish
+ abbr clean clear
+ #+END_SRC
+
+ I’m also very bad at typing =exit=.
+ #+BEGIN_SRC fish
+ abbr exi exit
+ abbr exti exit
+ #+END_SRC
+
+ And sometimes I suck at typing =htop=.
+ #+BEGIN_SRC fish
+ abbr hotp htop
+ #+END_SRC
+
+*** Misc
+ :PROPERTIES:
+ :CUSTOM_ID: h-3a237ec0-c535-42c7-9c60-3d083745b643
+ :END:
+ Finally, some miscellaneous abbreviations that don’t really fit into any of
+ the above categories.
+
+**** Sudo
+ :PROPERTIES:
+ :CUSTOM_ID: h-0955e2fc-ec25-41b6-814a-929fa3718dda
+ :END:
+ First, I make it so that =sudo= comes with the =-A= switch in order to call
+ my custom graphical script for getting my password (see
+ [[file:~/.local/bin/askpass][.local/bin/askpass]]). I also made it so =please= is an equivalent to =sudo
+ -A= as a joke.
+ #+BEGIN_SRC fish
+ abbr sudo 'sudo -A'
+ abbr please 'sudo -A'
+ #+END_SRC
+
+**** Exit
+ :PROPERTIES:
+ :CUSTOM_ID: h-8cf0e895-b919-41a8-ad3d-c5294dc507fd
+ :END:
+ Sometimes I find it easier to just type =q= instead of =exit=.
+ #+BEGIN_SRC fish
+ abbr q exit
+ #+END_SRC
+
+**** History
+ :PROPERTIES:
+ :CUSTOM_ID: h-162052c5-63c4-435a-b973-422346522c69
+ :END:
+ I also find it more intuitive and faster to just write =hist= instead of
+ =history=, so let’s declare that.
+ #+BEGIN_SRC fish
+ abbr hist history
+ #+END_SRC
+
+**** Song download from YouTube
+ :PROPERTIES:
+ :CUSTOM_ID: h-4bc663a9-b609-4c86-9a4d-a220013c67f9
+ :END:
+ When I want to download a song from YouTube, I’ll just use the command
+ =flac videoIdentifier= to get it through =youtube-dl=.
+ #+BEGIN_SRC fish
+ abbr flac 'youtube-dl -x --audio-format flac --audio-quality 0'
+ #+END_SRC
+
+**** MPV
+ :PROPERTIES:
+ :CUSTOM_ID: h-3fd5a7eb-4ed4-4b0b-87ca-28f36fb22793
+ :END:
+ When it comes to mpv, I do not want to force it to open a graphical window
+ if for example I want to listen to an audio file. I also do not want any
+ border on that window. So, I declared this abbreviation.
+ #+BEGIN_SRC fish
+ abbr mpv 'mpv --no-border --force-window=no'
+ #+END_SRC
+
+**** Compression
+ :PROPERTIES:
+ :CUSTOM_ID: h-05919be3-360a-45c6-8c89-76836375d55b
+ :END:
+ It seems it’s just like many other people, but I cannot for the life of me
+ remember the syntax of =tar=. So, I made the following abbreviations, and
+ one day hopefully, after seeing the abbreviations’ expansion over and over
+ I’ll remember the command like I did for the abbreviation of =remove= (see
+ [[#h-281a59aa-4ea0-47ab-a4cc-33fff8d38165][Package management]]).
+ #+BEGIN_SRC fish
+ abbr compress 'tar -czf'
+ abbr untar 'tar -xvzf'
+ #+END_SRC
+
+**** Feh
+ :PROPERTIES:
+ :CUSTOM_ID: h-41cfc583-14ba-4f15-9578-bc37b432a3ce
+ :END:
+ Some sane default options for =feh=, including auto-zoom to fit the picture
+ to the window, a borderless window, and again scale the image to fit the
+ window geometry.
+ #+BEGIN_SRC fish
+ abbr feh 'feh -Zx.'
+ #+END_SRC
+
+**** ls
+ :PROPERTIES:
+ :CUSTOM_ID: h-9980009d-3fc4-4e2e-861b-1af007212f8d
+ :END:
+ Yep, an abbreviation of =ls= called =lsl=. It allows me to view all the
+ files in a directory as a list with detailed, human-readable information.
+ #+BEGIN_SRC fish
+ abbr lsl 'ls -ahl'
+ #+END_SRC
+
+**** NetworkManager
+ :PROPERTIES:
+ :CUSTOM_ID: h-5f9d4866-3086-4ed9-9ff3-d80a0af36593
+ :END:
+ This is just =nmcli= with sane default options, that is a pretty output
+ with colors.
+ #+BEGIN_SRC fish
+ abbr nmcli 'nmcli -p -c auto'
+ #+END_SRC
+
+**** Wget
+ :PROPERTIES:
+ :CUSTOM_ID: h-74f84f1c-433d-488a-88a7-89915c1a3bd5
+ :END:
+ By default, continue a download that was interupted.
+ #+BEGIN_SRC fish
+ abbr wget 'wget -c'
+ #+END_SRC
diff --git a/.config/fish/config.org b/.config/fish/config.org
deleted file mode 100644
index 11d3552..0000000
--- a/.config/fish/config.org
+++ /dev/null
@@ -1,550 +0,0 @@
-#+TITLE: Phundrak’s dotfiles
-#+AUTHOR: Lucien "Phundrak” Cartier-Tilet
-#+EMAIL: phundrak@phundrak.fr
-#+OPTIONS: H:4 broken_links:mark email:t ^:{} auto-id:t
-
-# ### LaTeX ####################################################################
-#+LATEX_CLASS: conlang
-#+LaTeX_CLASS_OPTIONS: [a4paper,twoside]
-#+LATEX_HEADER_EXTRA: \usepackage{tocloft} \setlength{\cftchapnumwidth}{3em}
-#+LATEX_HEADER_EXTRA: \usepackage{xltxtra,fontspec,xunicode,svg}
-#+LATEX_HEADER_EXTRA: \usepackage[total={17cm,24cm}]{geometry}
-#+LATEX_HEADER_EXTRA: \setromanfont{Charis SIL}
-#+LATEX_HEADER_EXTRA: \usepackage{xcolor}
-#+LATEX_HEADER_EXTRA: \usepackage{hyperref}
-#+LATEX_HEADER_EXTRA: \hypersetup{colorlinks=true,linkbordercolor=red,linkcolor=blue,pdfborderstyle={/S/U/W 1}}
-#+LATEX_HEADER_EXTRA: \usepackage{multicol}
-#+LATEX_HEADER_EXTRA: \usepackage{indentfirst}
-#+LATEX_HEADER_EXTRA: \sloppy
-
-# ### HTML #####################################################################
-#+HTML_DOCTYPE: html5
-#+HTML_HEAD_EXTRA:
-#+HTML_HEAD_EXTRA:
-#+HTML_HEAD_EXTRA:
-#+HTML_HEAD_EXTRA:
-#+HTML_HEAD_EXTRA:
-#+HTML_HEAD_EXTRA:
-#+HTML_HEAD_EXTRA:
-#+HTML_HEAD_EXTRA:
-#+HTML_HEAD_EXTRA:
-#+HTML_HEAD_EXTRA:
-#+HTML_HEAD_EXTRA:
-#+HTML_HEAD_EXTRA:
-#+INFOJS_OPT: view:info toc:1 home:https://phundrak.fr/ toc:t
-#+HTML_HEAD_EXTRA:
-#+HTML_HEAD_EXTRA:
-#+HTML_HEAD_EXTRA:
-#+HTML_HEAD_EXTRA:
-
-* Table of Contents :TOC_4_gh:noexport:
- :PROPERTIES:
- :CUSTOM_ID: h-c7ab05d0-4c5f-4a4c-8603-4c79e264141c
- :END:
-- [[#presentation][Presentation]]
- - [[#fish-from-within-emacs][Fish from within Emacs]]
- - [[#tramp-remote-access][Tramp remote access]]
- - [[#regular-fish-shell-appearance][Regular fish shell appearance]]
- - [[#global-variables][Global variables]]
- - [[#abbreviations][Abbreviations]]
- - [[#system-monitoring][System monitoring]]
- - [[#system-management-packages-and-services][System management (packages and services)]]
- - [[#package-mangaement][Package mangaement]]
- - [[#service-management][Service management]]
- - [[#development][Development]]
- - [[#cmake][CMake]]
- - [[#compilation][Compilation]]
- - [[#docker][Docker]]
- - [[#git][Git]]
- - [[#prolog][Prolog]]
- - [[#text-editors][Text editors]]
- - [[#latex][LaTeX]]
- - [[#some-security-measures][Some security measures]]
- - [[#typos][Typos]]
- - [[#misc][Misc]]
- - [[#sudo][Sudo]]
- - [[#exit][Exit]]
- - [[#history][History]]
- - [[#song-download-from-youtube][Song download from YouTube]]
- - [[#mpv][MPV]]
- - [[#compression][Compression]]
- - [[#feh][Feh]]
- - [[#ls][ls]]
- - [[#networkmanager][NetworkManager]]
- - [[#wget][Wget]]
-
-* Presentation
- :PROPERTIES:
- :CUSTOM_ID: h-c2560b46-7f97-472f-b898-5ab483832228
- :HEADER-ARGS: :tangle yes
- :END:
- The file present in =~/.config/fish/config.fish= is the configuration file for
- the [[https://fishshell.com/][fish shell]]. It contains custom functions, environment variables and
- abbreviations.
-
- Just in case, we might need sometimes to declare the fish function
- =fish_title= as =true=, so let’s do so.
- #+BEGIN_SRC fish
- function fish_title
- true
- end
- #+END_SRC
-
-** Fish from within Emacs
- :PROPERTIES:
- :CUSTOM_ID: h-97d738f4-1ea0-4f64-a31d-19643486a951
- :END:
- I sometimes call fish from within emacs, with =M-x ansi-term=. In this case,
- the variable =TERM= needs to have the value =eterm-color=.
- #+BEGIN_SRC fish
- if test -n "$EMACS"
- set -x TERM eterm-color
- end
- #+END_SRC
-
-** Tramp remote access
- :PROPERTIES:
- :CUSTOM_ID: h-6cad2cc9-aef6-4df4-90f9-97053e82072a
- :END:
- When accessing from a remote machine our computer from Emacs, tramp needs a
- precise shell appearance: a simple =$= followed by a space after which to put
- the commands it needs to execute, and nothing else. Due to this, let’s
- deactivate and redefine some of the functions defining the appearance of
- fish.
- #+BEGIN_SRC fish
- if test "$TERM" = "dumb"
- function fish_prompt
- echo "\$ "
- end
- function fish_right_prompt; end
- function fish_greeting; end
- function fish_title; end
- end
- #+END_SRC
-
-** Regular fish shell appearance
- :PROPERTIES:
- :CUSTOM_ID: h-a8434b29-c146-4141-b8f8-1b446c791907
- :END:
- Now, there is only one function I modify when it comes to the appearance of
- fish when I’m the one using it: I simply “delete” the =fish_greeting=
- function.
- #+BEGIN_SRC fish
- function fish_greeting; end
- #+END_SRC
-
-** Global variables
- :PROPERTIES:
- :CUSTOM_ID: h-0eff37da-af9f-4546-8ad3-201961a2200f
- :END:
- Some global variables might sometimes be needed and need to be modified. This
- is for example the case with my =PATH= variable in which I add Rust’s Cargo’s
- binaries, Go’s binaries and my own executables. And of course, don’t forget
- to add the already existing =PATH=.
- #+BEGIN_SRC fish
- set -gx PATH $HOME/.local/bin $HOME/go/bin $HOME/.cargo/bin $PATH
- #+END_SRC
-
- Sometimes, software will rely on =SUDO_ASKPASS= to get a GUI from which it
- can get the sudo password. So, let’s declare it.
- #+BEGIN_SRC fish
- set -gx SUDO_ASKPASS ~/.local/bin/askpass
- #+END_SRC
-
- Now, let’s declare our editor of choice, EmacsClient. Now, we want it to run
- in the terminal, since it will most often be just quick edits, nothing too
- heavy, if it is called from the =EDITOR= variable (from Git, for example).
- #+BEGIN_SRC fish
- set -gx EDITOR emacsclient -c -nw
- #+END_SRC
-
- Finally, some development packages require the =PKG_CONFIG_PATH= to be set,
- so let’s do so.
- #+BEGIN_SRC fish
- set -gx PKG_CONFIG_PATH /usr/local/lib/pkgconfig/ $PKG_CONFIG_PATH
- #+END_SRC
-
-** Abbreviations
- :PROPERTIES:
- :CUSTOM_ID: h-740bd904-3e32-4c09-b0a4-bde16ae2e116
- :END:
-*** System monitoring
- :PROPERTIES:
- :CUSTOM_ID: h-ec910a8c-9154-48a4-b4cd-df28cb4e54d9
- :END:
- Here I have some abbreviations which are quite useful when performing some
- system monitoring. With =df=, we can get an overview of our filesystem
- usage, while with =diskspace= we get some more precise information.
- #+BEGIN_SRC fish
- abbr df 'df -H'
- abbr diskspace 'sudo df -h | grep -E "sd|lv|Size"'
- #+END_SRC
-
- =meminfo= is a call to =free= with sane defaults.
- #+BEGIN_SRC fish
- abbr meminfo 'free -m -l -t'
- #+END_SRC
-
- Similar to =meminfo=, we also have =gpumeminfo= so we can get a quick look
- at the memory-related logs of our X session.
- #+BEGIN_SRC fish
- abbr gpumeminfo 'grep -i --color memory /var/log/Xorg.0.log'
- #+END_SRC
-
- I also declared =cpuinfo= an alias of =lscpu= in order to keep consistent
- with =meminfo=.
- #+BEGIN_SRC fish
- abbr cpuinfo lscpu
- #+END_SRC
-
- =pscpu= gives us information on what the CPU is running right now, and
- =pscpu10= limits that to the top 10 threads.
- #+BEGIN_SRC fish
- abbr pscpu 'ps auxf | sort -nr -k 3'
- abbr pscpu10 'ps auxf | sort -nr -k 3 | head -10'
- #+END_SRC
-
- Similarly, =psmem= gives us information on the memory usage of the current
- threads, and =psmem10= only the ten most important threads in terms of
- memory usage.
- #+BEGIN_SRC fish
- abbr psmem 'ps auxf | sort -nr -k 4'
- abbr psmem10 'ps auxf | sort -nr -k 4 | head -10'
- #+END_SRC
-
-*** System management (packages and services)
- :PROPERTIES:
- :CUSTOM_ID: h-78ac23f0-960d-4f56-9cba-64413fd61885
- :END:
- I added some of these abbreviations due to how often I have to write the
- whole thing.
-
-**** Package mangaement
- :PROPERTIES:
- :CUSTOM_ID: h-281a59aa-4ea0-47ab-a4cc-33fff8d38165
- :END:
- The first command is =remove= which removes a package from my system, as
- well as its dependencies no longer needed.
- #+BEGIN_SRC fish
- abbr remove 'sudo pacman -Rscnd'
- #+END_SRC
-
- And if I want to install something, I just have to type =install=.
- #+BEGIN_SRC fish
- abbr install 'sudo pacman -Sy'
- #+END_SRC
-
- But if I just want to run =pacman= as sudo, then I could always just type
- =p=.
- #+BEGIN_SRC fish
- abbr p 'sudo -A pacman'
- #+END_SRC
-
- Sometimes, I just want to purge my package manager’s cache, be it
- =pacman='s or =yay='s. This is why I simply type =purge=.
- #+BEGIN_SRC fish
- abbr purge 'yay -Sc'
- #+END_SRC
-
- And if I want to simply seach among the =pacman= repos, I can type
- =search=. Otherwise, if I want to include AUR results, I’ll use =yay=.
- #+BEGIN_SRC fish
- abbr search 'pacman -Ss'
- #+END_SRC
-
- To update everything from the official repos, I’ll sometimes type =update=
- instead of the full command.
- #+BEGIN_SRC fish
- abbr update 'sudo pacman -Syu'
- #+END_SRC
-
-**** Service management
- :PROPERTIES:
- :CUSTOM_ID: h-3a734119-ccee-4cdf-b04c-d55a37dea571
- :END:
- I don’t have the muscle memory of =systemctl=. So instead, I simply type
- =c= when I want to do something user service related.
- #+BEGIN_SRC fish
- abbr s 'systemctl --user'
- #+END_SRC
-
- And if I want to manipulate system services, I can instead type a simple
- capital =S=.
- #+BEGIN_SRC fish
- abbr S 'sudo systemctl'
- #+END_SRC
-
-*** Development
- :PROPERTIES:
- :CUSTOM_ID: h-32ae38a2-41ad-438e-b619-220a63166115
- :END:
- A good amount of these commands are development related, especially when it
- comes to compilation or Docker.
-
-**** CMake
- :PROPERTIES:
- :CUSTOM_ID: h-887c87aa-b100-4b27-9006-778fd7e3329c
- :END:
- I have the following abbreviations so I can quickly run CMake and create a
- configuration for debug or release profiles.
- #+BEGIN_SRC fish
- abbr cdebug 'cmake -DCMAKE_BUILD_TYPE=Debug'
- abbr crelease 'cmake -DCMAKE_BUILD_TYPE=Release'
- #+END_SRC
-
-**** Compilation
- :PROPERTIES:
- :CUSTOM_ID: h-0beb47e5-d76a-4037-8f58-e8de141e3761
- :END:
- By default, I set =clang=, =clang++=, =gcc= and =g++= to the latest
- standard and with the =-Wall= flag activated.
- #+BEGIN_SRC fish :tangle
- abbr clang 'clang -Wall'
- abbr clang++ 'clang++ -Wall'
- abbr g++ 'g++ -Wall -std=c++17'
- abbr gcc 'gcc -Wall -std=c18'
- #+END_SRC
-
-**** Docker
- :PROPERTIES:
- :CUSTOM_ID: h-91c7ff90-7b43-4802-be69-5d102281c6d3
- :END:
- And of course, when it comes to Docker Compose, I don’t have time to write
- the full command, so I use these instead.
- #+BEGIN_SRC fish
- abbr dc docker-compose
- abbr dcd 'docker-compose down'
- abbr dcr 'docker-compose run --rm'
- abbr dcu 'docker-compose up'
- abbr dcub 'docker-compose up --build'
- #+END_SRC
-
-**** Git
- :PROPERTIES:
- :CUSTOM_ID: h-e72347d4-590e-448c-bc33-0a70fa8ab35b
- :END:
- And let’s face it: we all at one point just wanted to commit our code
- without thinking about the message, to just get over with it. Don’t worry,
- I got you covered.
- #+BEGIN_SRC fish :tangle
- abbr randcommit 'git commit -m (curl -s whatthecommit.com/index.txt)'
- #+END_SRC
-
-**** Prolog
- :PROPERTIES:
- :CUSTOM_ID: h-cbb6c31e-faaa-48c3-a83a-d1f143fdcb8d
- :END:
- When I launch =swipl=, I prefer to have my terminal cleaned before and
- after it runs, I find it more clean.
- #+BEGIN_SRC fish
- abbr swipl 'clear && swipl -q && clear'
- #+END_SRC
-
-**** Text editors
- :PROPERTIES:
- :CUSTOM_ID: h-51155e06-872d-4a12-9bf7-ae5eabc256ad
- :END:
- I greatly prefer to use Emacsclient as my main text editor; Emacs has
- basically all I need. So, it’s only normal I have an abbreviation to launch
- a new instance of it.
- #+BEGIN_SRC fish
- abbr e 'emacsclient -c'
- #+END_SRC
- However, in a graphical environment, this will launch a new graphical
- window of Emacs. To launch a terminal instance, I’ll use =enw= (=nw= stands
- for the option “nowindow” =-nw= of Emacs).
- #+BEGIN_SRC fish
- abbr enw 'emacsclient -c -nw'
- #+END_SRC
-
- I also have the abbreviation =vi= which refers to =vim=. I really should
- learn =vi=, but I also really don’t feel like it.
- #+BEGIN_SRC fish
- abbr vi vim
- #+END_SRC
-
-*** LaTeX
- :PROPERTIES:
- :CUSTOM_ID: h-a8f8a707-90d7-4784-982d-d959b183148e
- :END:
- Yes, although I use org-mode, I still have some use for LaTeX, especially
- when it comes to PDF exports of my org files. Hence why I use the LaTeX
- package manager. It is recommended to use =tllocalmgr= instead of =tlmgr=,
- but I can never remember the command, and the latter is faster to type, so
- time for an abbreviation.
- #+BEGIN_SRC fish
- abbr tlmgr tllocalmgr
- #+END_SRC
-
- #+BEGIN_SRC fish
- abbr texhash 'sudo texhash'
- #+END_SRC
-
-*** Some security measures
- :PROPERTIES:
- :CUSTOM_ID: h-dd97ea71-c43f-4b79-8bb7-1f857284b1b4
- :END:
- Some commands can be quite dangerous when not used properly, which is why I
- added default flags and options so I can get warnings before things get
- ugly.
- #+BEGIN_SRC fish
- abbr cp 'cp -i'
- abbr ln 'ln -i'
- abbr lns 'ln -si'
- abbr mv 'mv -i'
- abbr rm 'rm -I'
- abbr rmd 'rm --preserve-root -Ir'
- abbr rmdf 'rm --preserve-root -Irf'
- abbr rmf 'rm --preserve-root -If'
- #+END_SRC
- The =-i= and =-I= add prompts in case we might not want to do what we asked
- the shell to do. Notice =lns= which creates symlinks, =rmd= which removes
- directories, =rmf= which forces deletion, and =rmdf= which forces the
- delition of a directory. Notice also the =--preserve-root= which will
- prevent me from accidentally removing the root folder. I added the same
- option to =chgrp=, =chmod=, and =chown=.
- #+BEGIN_SRC fish
- abbr chgrp 'chgrp --preserve-root'
- abbr chmod 'chmod --preserve-root'
- abbr chown 'chown --preserve-root'
- #+END_SRC
-
-*** Typos
- :PROPERTIES:
- :CUSTOM_ID: h-4c5a03cd-20a8-437e-87b7-af990780084e
- :END:
- Let’s admit it, we all make typos from time to time in the shell, and some
- are recurrent enough we make abbreviations or aliases of the correct
- command. Well, I have some of my abbreviations which were make exactly
- because of this.
-
- Sometimes for some reasons, my brain makes me write =clean= instead of
- =clear=. So, let’s just replace the former by the latter.
- #+BEGIN_SRC fish
- abbr clean clear
- #+END_SRC
-
- I’m also very bad at typing =exit=.
- #+BEGIN_SRC fish
- abbr exi exit
- abbr exti exit
- #+END_SRC
-
- And sometimes I suck at typing =htop=.
- #+BEGIN_SRC fish
- abbr hotp htop
- #+END_SRC
-
-*** Misc
- :PROPERTIES:
- :CUSTOM_ID: h-3a237ec0-c535-42c7-9c60-3d083745b643
- :END:
- Finally, some miscellaneous abbreviations that don’t really fit into any of
- the above categories.
-
-**** Sudo
- :PROPERTIES:
- :CUSTOM_ID: h-0955e2fc-ec25-41b6-814a-929fa3718dda
- :END:
- First, I make it so that =sudo= comes with the =-A= switch in order to call
- my custom graphical script for getting my password (see
- [[file:~/.local/bin/askpass][.local/bin/askpass]]). I also made it so =please= is an equivalent to =sudo
- -A= as a joke.
- #+BEGIN_SRC fish
- abbr sudo 'sudo -A'
- abbr please 'sudo -A'
- #+END_SRC
-
-**** Exit
- :PROPERTIES:
- :CUSTOM_ID: h-8cf0e895-b919-41a8-ad3d-c5294dc507fd
- :END:
- Sometimes I find it easier to just type =q= instead of =exit=.
- #+BEGIN_SRC fish
- abbr q exit
- #+END_SRC
-
-**** History
- :PROPERTIES:
- :CUSTOM_ID: h-162052c5-63c4-435a-b973-422346522c69
- :END:
- I also find it more intuitive and faster to just write =hist= instead of
- =history=, so let’s declare that.
- #+BEGIN_SRC fish
- abbr hist history
- #+END_SRC
-
-**** Song download from YouTube
- :PROPERTIES:
- :CUSTOM_ID: h-4bc663a9-b609-4c86-9a4d-a220013c67f9
- :END:
- When I want to download a song from YouTube, I’ll just use the command
- =flac videoIdentifier= to get it through =youtube-dl=.
- #+BEGIN_SRC fish
- abbr flac 'youtube-dl -x --audio-format flac --audio-quality 0'
- #+END_SRC
-
-**** MPV
- :PROPERTIES:
- :CUSTOM_ID: h-3fd5a7eb-4ed4-4b0b-87ca-28f36fb22793
- :END:
- When it comes to mpv, I do not want to force it to open a graphical window
- if for example I want to listen to an audio file. I also do not want any
- border on that window. So, I declared this abbreviation.
- #+BEGIN_SRC fish
- abbr mpv 'mpv --no-border --force-window=no'
- #+END_SRC
-
-**** Compression
- :PROPERTIES:
- :CUSTOM_ID: h-05919be3-360a-45c6-8c89-76836375d55b
- :END:
- It seems it’s just like many other people, but I cannot for the life of me
- remember the syntax of =tar=. So, I made the following abbreviations, and
- one day hopefully, after seeing the abbreviations’ expansion over and over
- I’ll remember the command like I did for the abbreviation of =remove= (see
- [[#h-281a59aa-4ea0-47ab-a4cc-33fff8d38165][Package management]]).
- #+BEGIN_SRC fish
- abbr compress 'tar -czf'
- abbr untar 'tar -xvzf'
- #+END_SRC
-
-**** Feh
- :PROPERTIES:
- :CUSTOM_ID: h-41cfc583-14ba-4f15-9578-bc37b432a3ce
- :END:
- Some sane default options for =feh=, including auto-zoom to fit the picture
- to the window, a borderless window, and again scale the image to fit the
- window geometry.
- #+BEGIN_SRC fish
- abbr feh 'feh -Zx.'
- #+END_SRC
-
-**** ls
- :PROPERTIES:
- :CUSTOM_ID: h-9980009d-3fc4-4e2e-861b-1af007212f8d
- :END:
- Yep, an abbreviation of =ls= called =lsl=. It allows me to view all the
- files in a directory as a list with detailed, human-readable information.
- #+BEGIN_SRC fish
- abbr lsl 'ls -ahl'
- #+END_SRC
-
-**** NetworkManager
- :PROPERTIES:
- :CUSTOM_ID: h-5f9d4866-3086-4ed9-9ff3-d80a0af36593
- :END:
- This is just =nmcli= with sane default options, that is a pretty output
- with colors.
- #+BEGIN_SRC fish
- abbr nmcli 'nmcli -p -c auto'
- #+END_SRC
-
-**** Wget
- :PROPERTIES:
- :CUSTOM_ID: h-74f84f1c-433d-488a-88a7-89915c1a3bd5
- :END:
- By default, continue a download that was interupted.
- #+BEGIN_SRC fish
- abbr wget 'wget -c'
- #+END_SRC