#+TITLE: Dotfiles - Manjaro Linux :DRAWER: #+STARTUP: overview #+LANGUAGE: en #+EMAIL: dehaeze.thomas@gmail.com #+AUTHOR: Dehaeze Thomas #+HTML_LINK_HOME: ./index.html #+HTML_LINK_UP: ./index.html #+HTML_HEAD: #+HTML_HEAD: #+HTML_HEAD: #+HTML_HEAD: #+HTML_HEAD: #+HTML_HEAD: :END: * Links to literate configs Desktop Configuration: - Windows Manager: [[file:bspwm.org][BSPWM]] and [[file:i3.org][I3]] - Hotkey Manager: [[file:sxhkd.org][SXHKD]] - Status Bar: [[file:polybar.org][Polybar]] - Launcher: [[file:rofi.org][Rofi]] - Compositor: [[file:compositor.org][Picom]] - Notification Manager: [[file:notifications.org][Dunst]] - [[file:systemd.org][Systemd]] - [[file:xconfig.org][X configuration]] Editors: - [[file:vim.org][Vim]] - [[./doom.org][Doom Emacs]] (old [[file:spacemacs.org][Spacacemacs]] configuration) Command Line: - [[file:bash.org][Bash]] and [[file:zsh.org][ZSH]] - Terminal: [[file:termite.org][Termite]] - Terminal Multiplexer [[file:tmux.org][TMUX]] Multimedia: - [[file:image.org][Image]] - [[file:music.org][Music]] - [[file:video.org][Video]] Internet Related: - Bookmark Manager: [[file:bookmarks.org][Buku]] - Web Browser: [[file:qutebrowser.org][Qutebrowser]] PDF Reader: - [[file:zathura.org][Zathura]] File Managers: - GUI: [[file:pcmanfm.org][Pcmanfm]] - Terminal based: [[file:ranger.org][Ranger]] Organization: - [[file:calendar.org][Calendar]] - [[file:mail.org][Mail]] - [[file:contacts.org][Contacts]] - RSS-Reader: [[file:newsboat.org][Newsboat]] Others: - [[file:applications.org][Desktop Applications]] - [[file:matlab.org][Matlab]] - Some useful [[file:binaries.org][Binaries]] - Some useful [[file:scripts.org][Scripts]] - [[file:git.org][Git]] Configuration - [[file:gtk.org][GTK]] - [[file:config.org][Other Config]] * Package Manager: yay https://github.com/Jguer/yay ** Installation #+begin_src bash sudo pacman -S yay #+end_src ** CheatSheet | Command | Usage | |---------------------+-----------------------------| | =yay= | Perform system upgrade | | =yay -Ss = | Search | | =yay -S = | Install | | =yay -Si = | Get informations | | =yay -Rs = | Uninstall | | =yay -Yc= | Clean unneeded dependencies | To check all installed packages: =pacman -Qq | fzf --preview 'pacman -Qil {}' --layout=reverse --bind 'enter:execute(pacman -Qil {} | less)'= * Git Setup https://git-scm.com/ ** Installation #+begin_src bash yay -S git #+end_src ** Configuration [[file:git.org][Git]] Configuration: - =~/.gitconfig= - =~/.gitignore_global= ** Diff-So-Fancy https://github.com/so-fancy/diff-so-fancy *** Installation #+begin_src bash yay -S diff-so-fancy #+end_src *** Configuration #+begin_src bash git config --global core.pager "diff-so-fancy | less --tabs=4 -RFX" #+end_src ** Credential Helper setup with Pass This is explained in a further part: [[*Integration with Git][Integration of Pass with Git]]. * Terminal https://github.com/thestinger/termite ** Termite *** Installation #+begin_src bash yay -S termite #+end_src *** Configuration [[file:dotfiles/termite.org][termite.org]] - =~/.config/termite/config= *** Cheatsheet | Command | Usage | |--------------------+----------------------------| | =ctrl-shift-x= | activate url hints mode | | =ctrl-shift-c= | copy to CLIPBOARD | | =ctrl-shift-v= | paste from CLIPBOARD | | =ctrl-shift-space= | start selection mode | | =ctrl-shift-up= | scroll up a line | | =ctrl-shift-down= | scroll down a line | | =ctrl-+= | increase font size | | =ctrl--= | decrease font size | | =ctrl-== | reset font size to default | ** Unicode Rxvt *** Installation #+begin_src bash yay -S rxvt-unicode #+end_src *** Configuration Most of Urxvt configuration is done in =~/.Xresources= * Shell: Bash and ZSH https://wiki.archlinux.org/index.php/Bash ** Installation #+begin_src bash yay -S bash bash-completion zsh #+end_src ** Configuration [[file:bash.org][Bash]] configuration: - =~/.bashrc= - =~/.bash_profile= - =~/.config/bash/= - =~/.profile= * Terminal Multiplexer: Tmux https://github.com/tmux/tmux ** Installation #+begin_src bash yay -S tmux #+end_src ** Configuration [[file:tmux.org][TMUX]] configuration ** Ressources - https://github.com/gpakosz/.tmux - https://gist.github.com/MohamedAlaa/2961058 - https://blog.bugsnag.com/tmux-and-vim/ - https://github.com/tmux-plugins/tmux-resurrect - https://github.com/rothgar/awesome-tmux - https://thoughtbot.com/upcase/tmux ** Cheatsheet | Command | Usage | |----------------+-------------------------------| | =ctrl-spc= | Prefix | | =c= | New pane | | =/=, =-= | Split Vertically/Horizontally | | =s= | Change session | | =p=, =n= | Previous/Next Pane | | =ctrl-h,j,k,l= | Move between windows | * Fonts ** Installation #+begin_src bash yay -S nerd-fonts-complete #+end_src or just #+begin_src bash yay -S nerd-fonts-hack #+end_src #+begin_src bash yay -S ttf-inconsolata ttf-linux-libertine ttf-emojione #+end_src ** Default fonts Default font used: - Monospace Font: =Hack Nerd Font Mono= - Serif Font: =Hack Nerd Font= - Sans Font: =Hack Nerd Font= List all fonts available: =fc-list= ** Select font #+begin_src bash yay -S gtk2fontsel #+end_src * Text Editors ** Neovim https://github.com/neovim/neovim *** Installation #+begin_src bash yay -S neovim #+end_src *** Configuration [[file:vim.org][Vim]] configuration ** Emacs https://www.gnu.org/software/emacs/ *** Installation #+begin_src bash yay -S emacs #+end_src *** Configuration [[./doom.org][Doom Emacs]] configuration *** SpellCheck with Aspell #+begin_src bash yay -S aspell aspell-en aspell-fr #+end_src * SSH setup ** Generating a new SSH key #+begin_src bash ssh-keygen -t rsa -b 4096 -C "dehaeze.thomas@gmail.com" #+end_src ** Start the ssh-agent in the background #+begin_src bash eval "$(ssh-agent -s)" #+end_src ** Add the SSH key to the ssh-agent #+begin_src bash ssh-add ~/.ssh/id_rsa #+end_src * GnuPG https://gnupg.org/ ** Install the gnupg package: #+begin_src bash yay -S gnupg #+end_src ** Create a key pair #+begin_src bash gpg --full-gen-key #+end_src ** Configure the gpg-agent to cache the passphrase Edit the following file =~/.gnupg/gpg-agent.conf= #+begin_src conf max-cache-ttl 60480000 default-cache-ttl 60480000 #+end_src * Launcher - Rofi https://github.com/DaveDavenport/rofi Alternative: - =dmenu= is sometimes used ** Installation #+begin_src bash yay -S rofi #+end_src ** Setup rofi as a dmenu replacement Setup rofi as a dmenu replacement in =~/.i3/config=: #+begin_src bindsym $mod+d exec --no-startup-id rofi -show run #+end_src ** Run sudo commands with rofi https://github.com/DaveDavenport/rofi/issues/584#issuecomment-384555551 Use ~sudo -A~, that will open a rofi prompt to ask for the password. For that to work, we need to add the following code to =~/.profile=: #+begin_src bash export SUDO_ASKPASS=~/bin/askpass-rofi #+end_src The =askpass= script is: #+begin_src bash #!/bin/sh # Take password prompt from STDIN, print password to STDOUT # the sed piece just removes the colon from the provided # prompt: rofi -p already gives us a colon rofi -dmenu \ -password \ -no-fixed-num-lines \ -p "$(printf "$1" | sed s/://)" #+end_src * Password Manager: Pass https://www.passwordstore.org/ ** Install the pass package #+begin_src bash yay -S pass #+end_src ** Initialize the password store as a git repository #+begin_src bash pass git init pass git remote add origin https://github.com/tdehaeze/pass.git #+end_src ** Gui Manager https://github.com/IJHack/qtpass #+begin_src bash yay -S qtpass #+end_src ** Integration with Rofi https://github.com/carnager/rofi-pass *** Installation #+begin_src bash yay -S rofi-pass #+end_src Then we can add a shortcut to =rofi-pass= on i3 config. *** Alternative https://github.com/ibizaman/pass-clip #+begin_src bash yay -S pass-clip #+end_src ** Integration with Browsers This is explained [[*Integration with Pass: the password manager][here]]. ** Integration with Git https://github.com/languitar/pass-git-helper *** Installation #+begin_src bash yay -S pass-git-helper #+end_src *** Configuration First, add the relation between repository addresses and entries in =pass=. This is done in the following config file =.config/pass-git-helper/git-pass-mapping.ini=: #+begin_src [github.com*] target=github.com/tdehaeze #+end_src Then, add the credential helper on the git configuration file =~/.gitconfig= and add the default username for the repositories adresses. #+begin_src [credential] helper = !pass-git-helper $@ [credential "https://github.com"] username = tdehaeze #+end_src ** Integration with other programs Integrate pass in other programs is usually very easy, here are few examples: - =~/.msmtprc=: - =passwordeval "pass email/dehaeze.thomas@gmail.com"= - =~/.mbsyncrc= - =PassCmd "pass email/dehaeze.thomas@gmail.com"= ** Alternative - Bitwarden Bitwarden https://github.com/bitwarden/cli #+begin_src bash yay -Ss bitwarden-bin bitwarden-cli-bin #+end_src * Bookmark Manager: Buku https://github.com/jarun/Buku ** Installation #+begin_src bash yay -S buku #+end_src ** Integration with Rofi https://github.com/carnager/buku_run *** Installation #+begin_src bash wget https://raw.githubusercontent.com/carnager/buku_run/master/buku_run -o ~/bin/buku_run chmod +x ~/bin/buku_run #+end_src *** Configuration The configuration file is here: =~/.config/buku_run/config= ** Integration with qutebrowser [[*Integration with Buku][Integration with Buku]] ** Synchronization with a git repository The database is stored in =~/.local/share/buku/bookmarks.db=. We initialize a git repository in this folder: #+begin_src bash cd ~/.local/share/buku/bookmarks.db git init #+end_src Then we create a script that will automatically add =bookmarks.db= and push to some repository: =~/scripts/buku_git_push.sh=. To automatically run the script every day, a systemd unit is used: =~/.config/systemd/user/bukugit.timer= and =~/.config/systemd/user/bukugit.service= #+begin_src bash systemctl start --user bukugit.timer systemctl enable --user bukugit.timer #+end_src ** Import Bookmarks from Firefox and Chrome From Firefox, export the bookmarks as html file. Then import the bookmark file using =buku -i bookmarks.html=. This will add a tag with current date to all bookmarks imported. To remove them, use: =buku --replace '2018dec20' ''= ** Web Interface Run: #+begin_src bash bukuserver run --host 127.0.0.1 --port 5001 #+end_src And then browse to http://127.0.0.1:5001. ** Cheatsheet | Command | Usage | |--------------+------------------------| | =buku= | Run buku interactively | | =buku -p= | List all bookmarks | | =buku -w id= | Edit bookmark | | =buku -d id= | Delete bookmark | | =buku -s <>= | Search bookmarks | ** Alternatives - https://github.com/RadhiFadlillah/shiori - https://karl-voit.at/2014/08/10/bookmarks-with-orgmode/ * Browser: qutebrowser https://github.com/qutebrowser/qutebrowser ** Installation #+begin_src bash yay -S qutebrowser #+end_src ** View Pdf inside qutebrowser with pdfjs *** Installation #+begin_src bash yay -S pdfjs #+end_src *** Usage When opening a pdf file on qutebrowser, you'll be ask for options: | Command | Usage | |------------+-------------------| | == | Download the file | | =Ctrl-x= | Download and open | | =Ctrl-p= | Open with pdf.js | | =Alt-y= | Yank the url | ** Integration with Pass: the password manager Add the key-binding on =~/.config/qutebrowser/config.py= #+begin_src config.bind(',p', 'spawn --userscript password_fill') #+end_src The =password_fill= script can be found on [[https://github.com/qutebrowser/qutebrowser/blob/master/misc/userscripts/password_fill][github.com]]. It is configured using the =~/.config/qutebrowser/password_fill_rc= file. ** Integration with Buku Custom key binding in =~/.config/qutebrowser/config.py= #+begin_src # Add current page to Buku (Bookmark Manager) config.bind('B', 'spawn buku -a {url}') #+end_src ** Spell Checking #+begin_src bash /usr/share/qutebrowser/scripts/dictcli.py install fr-FR /usr/share/qutebrowser/scripts/dictcli.py install en-US #+end_src * Monitors #+begin_src bash yay -S xorg-xrandr arandr #+end_src [[https://wiki.archlinux.org/index.php/Xrandr][Xrandr]] is used in shell scripts ([[https://github.com/Ventto/mons][mons]] could be used as a layer on top of Xrandr). [[https://christian.amsuess.com/tools/arandr/][Arandr]] is a GUI application to manage monitors. * Sound Setup #+begin_src bash yay -S pulseaudio pavucontrol #+end_src * Music Setup ** Sound Server - Pulse Audio https://wiki.archlinux.org/index.php/PulseAudio Install #+begin_src bash yay -S pulseaudio pulseaudio-alsa pulseaudio-bluetooth #+end_src If sound is not working, should run =pulseaudio --kill= to kill the deamon and then =pulseaudio --daemonize= to run it again. https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Running/ ** Audio Server - MPD https://wiki.archlinux.org/index.php/Music_Player_Daemon => Now Mopidy is used instead of MPD *** Installation #+begin_src bash yay -S mpd #+end_src *** Automatic Startup #+begin_src bash systemctl start --user mpd.service systemctl enable --user mpd.service #+end_src *** Command line interface to MPD - MPC https://github.com/MusicPlayerDaemon/mpc To install mpc: =yay -S mpc=. | Command | Usage | |--------------+--------------------| | =mpc update= | Update the library | | =mpc rescan= | Rescan the library | ** Audio Server with Spotify - Mopidy https://github.com/mopidy/mopidy https://medium.com/@theos.space/using-mopidy-with-spotify-and-ncmpcpp-44352f4a2ce8 #+begin_src bash yay -S mopidy mopidy-spotify mopidy-mpd #+end_src To update local files: #+begin_src bash mopidy local scan #+end_src If mopidy is used, MPD should be disabled. (=systemctl disable --user mpd.service=) ** MPD Client - ncmpcpp https://wiki.archlinux.org/index.php/Ncmpcpp *** Installation #+begin_src bash yay -S ncmpcpp #+end_src *** Config The main config is located here: =~/.ncmpcpp/config=. The key bindings can be configured here: =~/.ncmpcpp/bindings=. *** Cheatsheet https://pkgbuild.com/~jelle/ncmpcpp/ | Command | Usage | |---------+-------| ** Library Manager - beets https://github.com/beetbox/beets *** Installation #+begin_src bash yay -S beets #+end_src *** Configuration Configuration folder: =~/.config/beets/= *** Cheatsheet | Command | Usage | |------------------------+-------------------------------| | =beet import = | Import folder to Music folder | * Movies ** Media Player - MPV *** Installation #+begin_src bash yay -S mpv #+end_src *** Key Bindings The configuration is set in =/.config/mpv/input.conf=. *** CheatSheet | Command | Usage | |---------+-------| ** Chromecast with CATT https://github.com/skorokithakis/catt *** Installation #+begin_src bash yay -S catt #+end_src *** Usage to cast videos to chromecast | Command | Usage | |----------------------------------------------------------+--------------------------| | catt cast "https://www.youtube.com/watch?v=dQw4w9WgXcQ" | Cast youtube video | | catt cast ./myvideo.mp4 | Cast local video | | catt add ./myvideo.mp4 | Add a video to the queue | | catt cast -s ./mysubtitle.srt /myvideo.mp4 | Add sub title | | catt cast_site https://en.wikipedia.org/wiki/Rickrolling | Cast website | *** Usage for controlling the device | Command | Usage | |--------------+---------------------------------------------------------------| | ffwd | Fastforward a video by TIME duration | | rewind | Rewind a video by TIME duration | | seek | Seek the video to TIME position | | scan | Scan the local network and show all Chromecasts and their IPs | | status | Show some information about the currently-playing video | | pause | Pause a video | | play | Resume a video after it has been paused | | stop | Stop playing | | skip | Skip to end of content | | save | Save the current state of the Chromecast for later use | | restore | Return Chromecast to saved state | | volume | Set the volume to LVL [0-100] | | volumedown | Turn down volume by a DELTA increment | | volumeup | Turn up volume by a DELTA increment | * Contact Manager ** Google Conctacts: Khard https://github.com/scheibler/khard #+begin_src bash yay -Ss khard #+end_src This is the command line interface for contact management. Contact synchronization: Vdirsyncer is used for contact synchronization with Google. To search with Khard: =khard = ** Mu #+begin_src bash yay -Ss mu #+end_src This looks for contacts in all indexed emails. =mu cfind = * Connect with Phone #+begin_src bash yay -S kdeconnect #+end_src * Chat Application - Weechat https://weechat.org/files/doc/stable/weechat_user.en.html https://wiki.archlinux.org/index.php/WeeChat https://gist.github.com/pascalpoitras/8406501 ** Installation #+begin_src bash yay -S weechat #+end_src Then we install some dependencies #+begin_src bash yay -S tcl lua ruby #+end_src ** Enable mouse support #+begin_src text /mouse enable #+end_src ** Scripts | highmon.pl | | | colorize_nicks.py | | | go.py | | | autosort.py | | | buddylist.pl | | | colorize_lines.pl | | | multiline.pl | | ** Theme https://www.bfoliver.com/technology/2017/07/15/weechat/ https://alexjj.com/blog/2016/9/setting-up-weechat/ #+begin_src conf /set weechat.look.prefix_same_nick "⤷" /set weechat.look.prefix_error "⚠" /set weechat.look.prefix_action "⚡" /set weechat.look.bar_more_down "▼▼" /set weechat.look.bar_more_left "◀◀" /set weechat.look.bar_more_right "▶▶" /set weechat.look.bar_more_up "▲▲" /set weechat.look.prefix_suffix "╡" /set weechat.color.chat_nick_colors red,green,brown,blue,magenta,cyan,white,lightred,lightgreen,yellow,lightblue,lightmagenta,lightcyan /set weechat.color.separator 31 /set buffers.color.current_fg 31 /set buffers.color.current_bg white /set buffers.color.hotlist_message_fg 229 /set buffers.color.hotlist_private_fg 121 /set buffers.color.hotlist_highlight_fg 163 /set buffers.color.number 239 /set buffers.color.number_char 245 /set weechat.bar.title.conditions "${inactive}" /set weechat.bar.title.color_fg black /set weechat.bar.title.color_bg 31 #Or white if 31 does nothing #+end_src ** Configuration https://hugo.md/post/the-perfect-weechat-setup-2/ https://robots.thoughtbot.com/weechat-for-slacks-irc-gateway Use the command =/fset= ** Multi-line messages Solution is provided here: https://github.com/wee-slack/wee-slack/issues/118 It uses [[https://weechat.org/scripts/source/multiline.pl.html/][multiline.pl]] script. Then alt-enter is bound to insert a new line: #+begin_src conf /set plugins.var.perl.multiline.magic_paste_only on /key bind meta-ctrl-M /input insert \x0a #+end_src And enter is bound to =magic_enter= that directly sends the message if its one line, and if its multiple line, waits a little bit and then sends the message: #+begin_src conf /key bind ctrl-M /input magic_enter #+end_src ** Send message using =$EDITOR= https://github.com/keith/edit-weechat #+begin_src bash mkdir -p ~/.weechat/python/autoload cd ~/.weechat/python/autoload wget https://raw.githubusercontent.com/keith/edit-weechat/master/edit.py #+end_src Then, on weechat, type =/edit=. ** CheatSheet | Command | Usage | |-----------+------------------| | =Ctlr-N= | Next channel | | =Ctlr-P= | Previous channel | | =Esc-n= | Toggle nicklist | | =alt-ent= | New line | ** Slack Integration https://github.com/wee-slack/wee-slack *** Installation #+begin_src bash yay -S python2-websocket-client #+end_src #+begin_src bash cd ~/.weechat/python wget https://raw.githubusercontent.com/wee-slack/wee-slack/master/wee_slack.py ln -s ../wee_slack.py autoload #+end_src *** Add your Slack API key(s) Log in to Slack: #+begin_src conf /slack register #+end_src This command prints a link you should open in your browser to authorize WeeChat with Slack. Once you've accomplished this, copy the "code" portion of the URL in the browser and pass it to this command: #+begin_src conf /slack register [CODE_FROM_URL] #+end_src Your Slack team is now added, and you can complete setup by restarting the wee-slack script. #+begin_src conf /python reload slack #+end_src If you don't want to store your API token in plaintext you can use the secure features of weechat: #+begin_src conf /secure passphrase this is a super secret password /secure set slack_token [YOUR_SLACK_TOKEN] /set plugins.var.python.slack.slack_api_token ${sec.data.slack_token} #+end_src ** Aspell https://blog.qoba.lt/using_aspell_in_weechat.html ** Notifications https://github.com/s3rvac/weechat-notify-send ** Deamon and Client Weechat is started with the systemd service =weechat=. It runs weechat inside tmux. * Redshift http://jonls.dk/redshift/ #+begin_src bash yay -S redshift #+end_src * Mail Setup [[file:mail.org][Link]] to the mail setup. ** Synchronize Mailboxes - Mbsync http://isync.sourceforge.net/ https://wiki.archlinux.org/index.php/Isync *** Installation #+begin_src bash yay -S isync #+end_src *** Configuration =~/.mbsyncrc= *** Automation using systemd **** Retreive New mails - =~/scripts/checkmail.sh= - =~/.config/systemd/user/checkmail.service= - =~/.config/systemd/user/checkmail.timer= #+begin_src bash systemctl --user enable checkmail.timer systemctl --user start checkmail.timer #+end_src **** Synchronize all the mailboxes - =~/.config/systemd/user/syncmail.service= - =~/.config/systemd/user/syncmail.timer= #+begin_src bash systemctl --user enable syncmail.timer systemctl --user start syncmail.timer #+end_src ** Send Mails - Msmtp https://marlam.de/msmtp/ *** Installation #+begin_src bash yay -S msmtp #+end_src ** Mail Index, Search and Tagging - Mu https://github.com/djcb/mu ** Mail Client - NeoMutt https://github.com/neomutt/neomutt *** Installation #+begin_src bash yay -S neomutt #+end_src *** Display html mails #+begin_src bash yay -S w3m #+end_src *** Open PDF from mail =~/scripts/openfile.sh= *** Open Url from mail #+begin_src bash yay -S urlview #+end_src *** Ressources - http://therandymon.com/woodnotes/mutt/using-mutt.html - https://ankursinha.in/2017/12/16/transitioning-to-neomutt-and-friends-for-e-mail.html - https://github.com/LukeSmithxyz/mutt-wizard ** Notification system A script (=~/scripts/checkmail.sh=) is used to retreive new mails and use =notify=send= is there are new received mails. * File Manager Configuration files: - GUI: [[file:pcmanfm.org][Pcmanfm]] - Terminal based: [[file:ranger.org][Ranger]] ** Ranger https://github.com/ranger/ranger *** Installation #+begin_src bash yay -S ranger #+end_src *** Configuration The configuration file is =~/.config/ranger/rc.conf=. *** Display pdf All the display of the files are defined in =~/.config/ranger/scope.sh=. It seems that Ranger is not working well with Termite. The screen is not refreshing after viewing one image ([[https://github.com/ranger/ranger/issues/859][Github Issue]]). It works better with Urxvt. ** GUI File Manager: pcmanfm https://wiki.archlinux.org/index.php/PCManFM * Image viewer ** sxiv https://github.com/muennich/sxiv https://www.youtube.com/watch?v=GYW9i_u5PYs *** Installation #+begin_src bash yay -S sxiv #+end_src *** Open Gif #+begin_src bash sxiv -a file.gif #+end_src *** Cheatsheet | Command | Usage | |--------------+--------------------------| | =-t= | Start in Thumbmail mode | | =f= | Toggle fullscreen | | =Return= | Switch to thumbmail mode | | =<=, =>= | Rotate the image | | =\vert=, =_= | Flip the image | | =n=, =p= | Next, Previous image | * HotKeyManager - SXHKD #+begin_src bash yay -S sxhkd #+end_src Configuration file: [[file:sxhkd.org][SXHKD]]. * Windows Manager - i3 [[file:i3.org][Link]] to the documentation ** Installation #+begin_src bash yay -S i3-gaps #+end_src ** Configuration =~/.i3/config= * Polybar https://polybar.github.io/ [[file:polybar.org][Link]] to the documentation. ** Installation #+begin_src bash yay -S polybar #+end_src * Compositor - Picom https://wiki.archlinux.org/index.php/Picom [[file:compositor.org][Link]] to the documentation. ** Installation #+begin_src bash yay -S picom #+end_src ** Configuration =~/.config/picom/picom.conf= ** Automatic run as daemon Compton is run from =.xprofile= config in the background: #+begin_src bash picom --daemon #+end_src * Notification Manager - Dunst https://github.com/dunst-project/dunst https://wiki.archlinux.org/index.php/Dunst ** Installation #+begin_src bash yay -S dunst dunstify #+end_src ** Configuration =~/.config/dunst/dunstrc= ** Usage #+begin_src bash dunstify --replace=16549 "AppName" "Message" #+end_src The number =--replace= can be used with an ID to merge notifications from the same application for instance. * Office Suite ** WPS Office #+begin_src bash yay -S wps-office wps-office-extension-french-dictionary ttf-wps-fonts #+end_src Alternatives are: - open-office ** Minimap SpreadSheet - SC-IM https://github.com/andmarti1424/sc-im https://www.youtube.com/watch?v=K_8_gazN7h0 It permits to open Excel files on the terminal very quickly. #+begin_src bash yay -S sc-im #+end_src * Managing Theme ** GTK Themes Gtk2 themes are managed using the file =~/.gtkrc-2.0= while Gtk3 themes are managed using =~/.config/gtk-3.0/settings.ini=. *** Gui Manager To customize the look of the system using GUI application, run ~lxappearance~. Installation: #+begin_src bash yay -S lxappearance #+end_src *** Icons and themes #+begin_src bash yay -S zukitwo-themes faenza-icon-theme #+end_src #+begin_src bash yay -S arc-gtk-theme #+end_src ** QT Themes Run ~qt5ct~ to manage QT Themes. ** XFT Themes Some configuration are located in =~/.Xresources=. * Advanced config ** Printer https://wiki.archlinux.org/index.php/CUPS Web based administration: http://localhost:631/ =system-config-printer= Check the queue #+begin_src bash lpq lpq -a # on all queues #+end_src Clear the queue #+begin_src bash lprm # remove last entry only lprm - # remove all entries #+end_src Print a file #+begin_src bash lpr -P printer_name filename.pdf #+end_src List available printers #+begin_src bash lpstat -a #+end_src Stats about the printer #+begin_src bash lpstat -p printer_name #+end_src ** Kernel Management https://wiki.manjaro.org/index.php/Manjaro_Kernels | Command | Usage | |-------------------+--------------------------------| | =mhwd-kernel -li= | Determine which kernel is used | | | Change current kernel | ** Power Management Tool: Powertop https://wiki.archlinux.org/index.php/Powertop https://wiki.manjaro.org/index.php?title=Power_Savings =PowerTop= a diagnostic tool used to identify and report issues with power consumption and management. #+begin_src bash yay -S powertop #+end_src =TLP= is used for Power Management. #+begin_src bash yay -S tlp sudo systemctl enable tlp sudo systemctl start tlp sudo systemctl enable tlp-sleep sudo systemctl start tlp-sleep sudo tlp start #+end_src =Thermald= is used to automatically handle CPU frequency scaling according to system load. #+begin_src bash yay -S thermald sudo systemctl enable thermald sudo systemctl start thermald #+end_src ** Lid open/close https://wiki.archlinux.org/index.php/Power_management Should automatic show lock screen =/etc/systemd/logind.conf= ** Automatically Mount devices - Udiskie udiskie - Mount and unmount disks (https://github.com/coldfix/udiskie) #+begin_src bash yay -S udiskie #+end_src Automatically run =udiskie= on startup. ** Format disks https://gparted.org/ =sudo gparted= to format disks Using command line: - https://www.digitalocean.com/community/tutorials/how-to-partition-and-format-storage-devices-in-linux ** Bluetooth Bluetooth manager: https://github.com/blueman-project/blueman =blueman-manager= * LaTeX ** Installation #+begin_src bash yay -S texlive-most #+end_src Biber support for the bibliography: #+begin_src bash yay -S biber #+end_src Support for source code using minted: #+begin_src bash yay -S minted #+end_src ** Personnal classes/packages Every custom class or packages can be put under =~/texmf/tex/latex/local/= folder. In order for LaTeX to be aware of new packages/classes, run =sudo texhash= each time a new custom package is added. ** From screenshot to latex math formula https://mathpix.com/ *** Installation #+begin_src bash yay -S mathpix-snipping-tool #+end_src * Mathematical Software ** Insect https://github.com/sharkdp/insect *** Installation #+begin_src bash yay -S insect #+end_src *** Usage | Command | Usage | |-----------------+--------------| | =3 m/s to km/h= | Convert Unit | ** Matlab https://wiki.archlinux.org/index.php/MATLAB#Installation [[file:matlab.org][Link]] to the configuration. *** Installation #+begin_src bash yay -S matlab #+end_src If there is a problem when opening a Simulink file, check the solution [[https://fr.mathworks.com/matlabcentral/answers/361053-can-t-reload-usr-local-matlab-r2017b-bin-glnxa64-libmwdastudio-so][here]]. ** SageMath http://www.sagemath.org/ https://wiki.archlinux.org/index.php/SageMath *** Installation #+begin_src bash yay -S sagemath #+end_src *** Usage Run =sage -n jupyter= to run jupyter notebooks *** Documentation http://doc.sagemath.org/html/en/reference/plotting/sage/plot/plot.html#sage.plot.plot.plot http://doc.sagemath.org/html/en/reference/calculus/sage/symbolic/expression.html http://doc.sagemath.org/html/en/reference/calculus/sage/symbolic/assumptions.html * Download Manager ** Torrent Client - deluge https://github.com/deluge-torrent/deluge https://wiki.archlinux.org/index.php/Deluge *** Installation #+begin_src bash yay -S deluge #+end_src *** Configuration =~/.config/deluge/= *** Command Line Interface https://whatbox.ca/wiki/deluge_console_documentation Start the daemon using =deluge -d=. Then run the CLI client using =deluge-console=. ** Youtube-dl #+begin_src bash yay -S youtube-dl #+end_src *** Download best audio #+begin_src bash youtube-dl -f bestaudio url #+end_src *** Download best video with audio #+begin_src bash youtube-dl -f best url #+end_src * Default Applications https://wiki.archlinux.org/index.php/Default_applications https://www.guyrutenberg.com/2018/01/20/set-default-application-using-xdg-mime/ ** Mailcap file ** XDG-OPEN =~/.config/mimeapps.list= * Desktop files [[file:applications.org][Desktop Applications]] =~/.local/share/applications/= * Bibliography Management - https://github.com/JabRef/jabref - https://github.com/t-wissmann/rofi-bibbrowser I am using a plain bibtex file with =org-ref= ([[https://github.com/jkitchin/org-ref][link]]). ** Alternatives: GUI: - Zotero - Mendeley Command line based: - [[https://github.com/papis/papis][Papis]] * Calendar [[file:calendar.org][Link]] to configuration ** Vdirsyncer - Sync calendars https://github.com/pimutils/vdirsyncer *** Installation #+begin_src bash yay -S vdirsyncer #+end_src #+begin_src bash sudo pip install requests-oauthlib #+end_src *** Cheatsheet | Command | Usage | |-------------------+-------------| | =vdirsyncer sync= | Synchronize | *** Automation - Systemd First, run #+begin_src bash vdirsyncer discover google_calendar #+end_src #+begin_src bash systemctl --user enable vdirsyncer.timer systemctl --user start vdirsyncer.timer #+end_src To check the status of the service: #+begin_src bash systemctl --user status vdirsyncer.service #+end_src ** Calendar Client - Khal https://github.com/pimutils/khal *** Installation #+begin_src bash yay -S khal #+end_src *** Import ICS files #+begin_src bash khal import even.ics #+end_src * RSS Reader GUI Alternatives: - http://www.rssowl.org/ - https://github.com/jangernert/FeedReader With Emacs: - http://pragmaticemacs.com/emacs/read-your-rss-feeds-in-emacs-with-elfeed/ On the phone: - https://feedly.com/i/my ** Newsboat [[file:newsboat.org][Link]] to configuration. https://github.com/newsboat/newsboat https://wiki.archlinux.org/index.php/Newsboat *** Installation #+begin_src bash yay -S newboat #+end_src *** Configuration https://newsboat.org/releases/2.12/docs/newsboat.html =~/.newsboat/= *** CheatSheet https://newsboat.org/releases/2.12/docs/newsboat.html#available-operations * Task Manager ** OrgMode and Emacs ** Wunderline https://itsfoss.com/linux-client-wunderlist/ http://wayneashleyberry.github.io/wunderline/ *** Installation #+begin_src bash yay -S wunderline #+end_src *** Cheatsheet Add a task with: - =wunderline add = | Options | Usage | |-----------------+-------| | =--today= | | | =--tomorrow= | | | =--note = | | Other commands: - =wunderline inbox= - =wunderline today= * Background manager: nitrogen https://github.com/l3ib/nitrogen/ ** Configuration =~/.config/nitrogen/nitrogen.cfg= ** Wallpapers =~/scripts/wallpaper.sh=: script to automatically change wallpaper each x minutes. * PDF Reader: Zathura https://pwmt.org/projects/zathura/ ** Installation #+begin_src bash yay -S zathura #+end_src Then add dependecies to view specific files: #+begin_src bash yay -S zathura-pdf-mupdf zathura-djvu zathura-ps zathura-cb #+end_src It seems that mupdf is better that poppler to view pdf. ** Configuration =~/.config/zathura/zathurarc= ** Cheatsheet | Command | Usage | |---------+----------------------------| | =p= | Print the current pdf | | =tab= | Show the outline | | =r= | Reload | | =J/K= | Next/previous page | | =H/L= | Zoom in/out | | =a= | Fit height | | =s= | Fit width | | =D= | Double page | | =f= | Follow link | | =i= | Night Mode | | =gg= | Go to page n | | =mm= | Mark current location to m | | ='m= | Goto location m | ** Multi-monitor pdf presentation - pdfpc https://github.com/pdfpc/pdfpc pdfpc is a great tool for showing pdf presentations. It support: - screen splitting - support for videos in pdf presentations - support for notes - support for annotations *** Installation #+begin_src bash yay -S pdfpc #+end_src *** Video support #+begin_src bash yay -S gst-plugins-ugly gst-plugins-good gst-plugins-base-libs gst-plugins-base gst-plugins-bad gst-libav #+end_src *** Usage #+begin_src bash pdfpc filename.pdf #+end_src * Theme manager The idea would be to have a command that changes the theme of all the system. There would be at least one light and one dark theme. Applications that could change: - [ ] terminal: https://github.com/khamer/base16-termite. TODO: this does not seems to work. Some is takken from config of termite, some from xresources. Also when reload the terminal is does not make the colors well: https://github.com/thestinger/termite/issues/273 It seems the color is due to this part of the script. Should then source this file somehow. #+begin_src bash BASE16_SHELL="$HOME/.base16-manager/chriskempson/base16-shell/" [ -n "$PS1" ] && \ [ -s "$BASE16_SHELL/profile_helper.sh" ] && \ eval "$("$BASE16_SHELL/profile_helper.sh")" #+end_src - [X] shell: https://github.com/chriskempson/base16-shell - [X] ranger: uses colors of the shell - [X] vim: https://github.com/chriskempson/base16-vim - [ ] emacs: https://github.com/belak/base16-emacs - [X] zathura: https://github.com/nicodebo/base16-zathura - [ ] neomutt: https://github.com/josephholsten/base16-mutt - [X] ncmpcpp: uses colors of terminal (termite) defined in =~/.config/termite/config= - [X] polybar: uses colors of Xresources: =~/.Xressources.d/colors= - [ ] dunst: https://github.com/khamer/base16-dunst - [ ] fzf: https://github.com/nicodebo/base16-fzf - [ ] i3: https://github.com/khamer/base16-i3 - [ ] qutebrowser: https://github.com/theova/base16-qutebrowser - [ ] rofi: https://gitlab.com/0xdec/base16-rofi - [ ] background: use custom script - [ ] tmux - [ ] GUI file manager? Possible theme managers: - https://github.com/mjswensen/themer - https://github.com/dylanaraps/pywal ** Base16 https://github.com/chriskempson/base16 http://chriskempson.com/projects/base16/ https://www.youtube.com/watch?v=QcOxU1sOOuw *** Base16 Philosophy Define colors according to rules: http://chriskempson.com/projects/base16/ Then we can use these colors multiple applications. *** Base16-shell https://github.com/chriskempson/base16-shell This changes the shell colors. This should be added to =~/.bashrc=: #+begin_src bash # Base16 Shell BASE16_SHELL="$HOME/.config/base16-shell/" [ -n "$PS1" ] && \ [ -s "$BASE16_SHELL/profile_helper.sh" ] && \ eval "$("$BASE16_SHELL/profile_helper.sh")" #+end_src *** Base16-manager https://github.com/AuditeMarlow/base16-manager This help changes many applications colors at once. * Graphical Editor - https://inkscape.org/ - Tikz * VPN Setup with NordVPN https://aur.archlinux.org/packages/nordvpn-bin/ https://wiki.archlinux.org/index.php/NordVPN ** Installation #+begin_src bash yay -S nordvpn-bin #+end_src ** Configuration #+begin_src bash sudo systemctl enable nordvpnd.service sudo systemctl start nordvpnd.service #+end_src ** Usage | Command | Usage | |---------------------------+-------| | =nordvpn login= | | | =nordvpn connect country= | | | =nordvpn disconnect= | | | =nordvpn status= | | | =nordvpn countries= | | ** Alternative: Use NordVPM with openVPN Instead https://github.com/nstinus/nordvpn https://github.com/jotyGill/openpyn-nordvpn https://nordvpn.com/fr/tutorials/linux/openvpn/ * Others ** Reddit on terminal: rtv #+begin_src bash yay -S rtv #+end_src ** Interact with API - GUI: https://github.com/getinsomnia/insomnia - CLI: https://github.com/jakubroztocil/httpie ** Take Screenshot https://github.com/naelstrof/maim #+begin_src bash yay -S maim #+end_src #+begin_src bash man maim #+end_src ** Utilities #+begin_src bash yay -S fd ripgrep pdf2svg pdftk #+end_src #+begin_src bash yay -S unclutter #+end_src ** Trash =trash-cli= is used to manage the trash. It is integrated with Ranger. * Usefull commands ** Find files or directories - https://github.com/sharkdp/fd - https://github.com/BurntSushi/ripgrep - https://github.com/ggreer/the\_silver\_searcher - find - fzf ** Show informations about the machine - [[https://github.com/dylanaraps/neofetch][neofetch]] ** Work with PDF =pdftk= ** Separate PDF =pdfseparate -f 1 -l 6 file.pdf split%d.pdf= Will create =split1.pdf= to =split6.pdf= files corresponding to correct pages of =file.pdf=. ** Readline https://wiki.archlinux.org/index.php/Keyboard_shortcuts | Keyboard | Shortcut Description | |----------+----------------------| | Ctrl+l | Clear the screen | *** Cursor Movement | Keyboard | Shortcut Description | |----------+----------------------------------------| | =Ctrl+b= | Move cursor one character to the left | | =Ctrl+f= | Move cursor one character to the right | | =Alt+b= | Move cursor one word to the left | | =Alt+f= | Move cursor one word to the right | | =Ctrl+a= | Move cursor to start of the line | | =Ctrl+e= | Move cursor to end of the line | *** Copy & Paste | Keyboard | Shortcut Description | |--------------+---------------------------------------------------| | =Ctrl+u= | Cut everything from line start to cursor | | =Ctrl+k= | Cut everything from the cursor to end of the line | | =Alt+d= | Cut the current word after the cursor | | =Ctrl+w= | Cut the current word before the cursor | | =Ctrl+y= | Paste the previous cut text | | =Alt+y= | Paste the second latest cut text | | =Alt+Ctrl+y= | Paste the first argument of the previous command | | =Alt+./= | Paste the last argument of the previous command | *** History | Keyboard | Shortcut Description | |----------+---------------------------------------| | =Ctrl+p= | Move to the previous line | | =Ctrl+n= | Move to the next line | | =Ctrl+s= | Search | | =Ctrl+r= | Reverse search | | =Ctrl+j= | End search | | =Ctrl+g= | Abort search (restores original line) | | =Alt+r= | Restores all changes made to line | *** Completion | Keyboard | Shortcut Description | |----------+---------------------------------| | =Tab= | Auto-complete a name | | =Alt+?= | List all possible completions | | =Alt+*= | Insert all possible completions | ** Google translate from the command line #+begin_src bash yay -S translate-shell #+end_src #+begin_src bash trans englishwork en:fr #+end_src ** Others | [[https://github.com/tldr-pages/tldr][tldr]] | Community-driven man pages | | [[https://github.com/dutchcoders/transfer.sh][transfer.sh]] | upload and share files from the command line | | [[https://github.com/timvisee/ffsend][ffsend]] | share files from the command line | | [[https://github.com/chubin/wttr.in][wttr.in]] | weather in terminal | | [[https://github.com/michael-lazar/rtv][rtv]] | Reddit in terminal | | awk | https://linuxhandbook.com/awk-command-tutorial/ | | [[https://github.com/rupa/z][z]] | Jump around | | [[https://github.com/nvbn/thefuck][thefuck]] | Magnificent app which corrects your previous console command | | [[https://github.com/mrzool/bash-sensible][bash-sensible]] | An attempt at saner Bash defaults | | [[https://github.com/greg-js/arch-wiki-man][awman]] | Arch Wiki man pages - Arch wiki offline | | [[https://github.com/amanusk/s-tui/][s-tui]] | Terminal based CPU stress and monitoring utility | | [[https://github.com/nicolargo/glances][glances]] | A top/htop alternative | | [[https://github.com/asciinema/asciinema][asciinema]] | Reccord you terminal | | [[https://dev.yorhel.nl/ncdu][ncdu]] | See what takes place on the disk | | [[https://github.com/haikarainen/light][light]] | Program to easily change brightness on backlight-controllers | | [[https://github.com/naelstrof/maim][maim]] | Take screenshots | |-----------------------------------+-------------------------------------------| | Command | Description | |-----------------------------------+-------------------------------------------| | =meteo= | Get the meteo | | =sudo cputhrottle PID %PROC= | Limiter l'accès au proc pour un processus | | =nmap -sP “192.168.1.*"= | Check all ip addresses on local netword | | =rsync -a --progress source dest= | Copy folders with stats | | =du -sh folder= | Return the size of the folder | | =df -h= | Report disk usage | |-----------------------------------+-------------------------------------------| ** Archive and Extract Use =apack= and =aunpack=: | | | |-------------------------------+-----------------------------------| | =aunpack foobar.tar.gz= | extract all files from archive | | =apack myarchive.zip foo bar= | create a zip archive of two files | ** Hardware | =dmesg= | Detected hardware and boot messages | | =lshw= | Display information on hardware | | =lsusb -tv= | Show usb devices | ** Network | =ip addr show= | Show all network interfaces and ip address | | =ethtooo eth0= | Tool to show ethernet status | | =netstat -tulp= | List all active listening ports | * Bash Snippets ** For loop #+begin_src bash for file in ./*; do command ${file}; done #+end_src * Some notes To improve the startup time. #+begin_src bash sudo systemctl disable apparmor sudo systemctl disable snapd sudo systemctl disable systemd-backlight@backlight\:intel_backlight.service #+end_src * Ressources ** Dotfiles - https://github.com/LukeSmithxyz/voidrice - https://github.com/wincent/wincent - https://github.com/korolr/dotfiles - https://github.com/Shougo/shougo-s-github - https://github.com/addy-dclxvi/almighty-dotfiles ** Linux Softwares - [[https://github.com/k4m4/terminals-are-sexy][terminalare.sexy]] - [[https://www.reddit.com/r/vim/comments/3tluqr/my_list_of_applications_with_vi_keybindings/][the big list of vim like software]] - https://github.com/jlevy/the-art-of-command-line - https://github.com/herrbischoff/awesome-command-line-apps - https://github.com/luongvo209/Awesome-Linux-Software - https://wiki.archlinux.org/index.php/List_of_applications - https://ambrevar.xyz/power-apps/ - https://enchiridion.red/2019/1/18/desktop-apps/