From c26f33fd3438377344744d985c0a2470d5c6f04c Mon Sep 17 00:00:00 2001 From: Phuntsok Drak-pa Date: Wed, 23 Oct 2019 13:02:59 +0200 Subject: [PATCH] moved config.org to README.org --- .config/fish/README.org | 551 +++++++++++++++++++++++++++++++++++++++- .config/fish/config.org | 550 --------------------------------------- 2 files changed, 550 insertions(+), 551 deletions(-) mode change 120000 => 100644 .config/fish/README.org delete mode 100644 .config/fish/config.org 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