#+TITLE: Phundrak’s dotfiles
#+setupfile: headers
#+OPTIONS: auto-id:t
#+HTML_HEAD_EXTRA: <meta name="description" content="Phundrak's dotfiles" />
#+HTML_HEAD_EXTRA: <meta property="og:title" content="Phundrak's dotfiles" />
#+HTML_HEAD_EXTRA: <meta property="og:description" content="Description of the dotfiles of Phundrak" />

* Presentation
  :PROPERTIES:
  :CUSTOM_ID: Presentation-981f2f04
  :END:
  This is my collection of dotfiles  for my daily GNU/Linux environment, tweaked
  to  my  liking. If  you  wish  to  get the  same  setup  as mine,  follow  the
  instructions below.

  For starters, here is the link to all the pages on my website that you might
  find interesting. I’ll describe them in more details below.
  - [[file:installation.org][Arch Linux bootstrap script]]
  - [[file:awesome.org][AwesomeWM configuration]]
  - [[file:bin.org][Custom scripts]]
  - [[file:spacemacs.org][Emacs (Spacemacs) configuration]]
  - [[file:fish.org][Fish shell configuration]]
  - [[file:i3.org][i3 configuration]] (deprecated)
  - [[file:nano.org][Nano configuration]] (deprecated)
  - [[file:ncmpcpp.org][ncmpcpp configuration]] (work in progress)
  - [[file:neofetch.org][Neofetch configuration]] (work in progress)
  - [[file:picom.org][Picom configuration]] (new fork of Compton)
  - [[file:polybar.org][Polybar configuration]] (deprecated)
  - [[file:rustfmt.org][Rustfmt configuration]]
  - [[file:tmux.org][Tmux configuration]]

  As you can  see, I personally use [[https://fishshell.com/][fish]]  as my shell of choice,  and [[https://www.gnu.org/software/emacs/][Emacs]] 27.1
  using [[http://spacemacs.org][Spacemacs]] (still  with Emacs keybinding in Insert mode  but with Evil in
  Normal mode) as my main text editor.

  When it  comes to  my graphical  UI, I  do not  have any  desktop environment.
  Instead, I have a tiling window manager, AwesomeWM. The historical first on my
  configuration is [[https://github.com/Airblader/i3][i3-gaps]],  an [[https://i3wm.org/][i3]] fork by  [[https://github.com/Airblader/i3][Airblader]] with which I  use two bars
  generated by [[https://polybar.github.io/][Polybar]]. It  used [[https://github.com/dylanaraps/pywal][pywal]] to define their color  scheme, as well as
  [[https://github.com/davatorium/rofi][rofi]]’s color scheme. My other TWM and the one I currently use is [[https://awesomewm.org/][AwesomeWM]].

  Finally, you can  find my configuration for my ErgodoxEZ  keyboard [[https://configure.ergodox-ez.com/ergodox-ez/layouts/5WrVw/latest/0][here]]. It is
  optimized for  usage with the  Bépo layout set as  a software layout,  and for
  shortcuts from i3.

* Screenshots
  :PROPERTIES:
  :CUSTOM_ID: Screenshots-51f1cef3
  :END:

  #+CAPTION: Desktop with Neofetch in the terminal
  [[./img/neofetch.png.webp]]

  #+CAPTION: Desktop with Emacs opened
  [[./img/emacs.png.webp]]

  #+CAPTION: Desktop with Rofi
  [[./img/rofi.png.webp]]

* Features
  :PROPERTIES:
  :CUSTOM_ID: Features-5ab2a2c0
  :END:
  - Emacs configuration perfectly tailored for my own use
  - Beautiful and comfy i3 and polybar configuration
  - And enough information  below to get basically the same  distro install as I
    have on my main computer and my travel laptop.

  Most of the org  files you will find in this repos are  the actual source code
  of  much   of  my  config  files.   For  instance,  the  bootstrap   found  in
  [[file:installation.org][installation.org]]   exports    almost   all    of   its   code    snippets   to
  [[file:.config/yadm/bootstrap][.config/yadm/bootstrap]]  thanks to  =M-x org-babel-tangle=  from within  Emacs.
  Below I will also  present and comment some of my short  config files which do
  not deserve to have a full org file dedicated to them.

** Tiling Window Managers
   :PROPERTIES:
   :CUSTOM_ID: Features-Tiling_Window_Managers-da221e37
   :END:
*** AwesomeWM
    :PROPERTIES:
    :CUSTOM_ID: Features-Tiling_Window_Managers-AwesomeWM-2eac61a9
    :END:
    AwesomeWM is the TWM I use the most on my computer between itself and i3. My
    configuration for it is documented  in detail in its corresponding document,
    which you can find [[file:awesome.org][here]].

*** i3 configuration (Deprecated)
    :PROPERTIES:
    :CUSTOM_ID: Features-Tiling_Window_Managers-i3_configuration-9c92e43c
    :END:
    The i3 configuration  is detailed in its corresponding README  which you can
    find [[file:i3.org][here]]. Be aware I do not use  i3 anymore, and I will not update it until
    I may someday use it again. This was deprecated on August 22nd, 2020.

** Polybar config (Deprecated)
   :PROPERTIES:
   :CUSTOM_ID: Features-Polybar_config_(Deprecated)-c8f95774
   :END:
   My annotated  polybar config can  be found  [[file:polybar.org][here]], if you  wish to use  it. Be
   aware I  do not use  polybar anymore, and  I will not  update it until  I may
   someday use it again. This was deprecated on August 22nd, 2020.

** Graphical tweaks
   :PROPERTIES:
   :CUSTOM_ID: Features-Graphical_tweaks-9879f6b0
   :END:
*** GTK Settings
    :PROPERTIES:
    :CUSTOM_ID: Features-Graphical_tweaks-GTK_Settings-752e9916
    :END:
**** GTK2
     :PROPERTIES:
     :CUSTOM_ID: Features-Graphical_tweaks-GTK_Settings-GTK2-74c9de24
     :END:
***** General configuration
      :PROPERTIES:
      :HEADER-ARGS: :tangle ~/.gtkrc-2.0
      :CUSTOM_ID: Features-Graphical_tweaks-GTK_Settings-GTK2-General_configuration-eb1f1f3c
      :END:
      This file is tangled at ~$HOME/.gtkrc-2.0~.  This is an equivalent for the
      GTK3 configuration  file you  will see  below, and it  shares most  of its
      settings. First,  let’s select the Nordic  theme for GTK2. Let’s  also set
      the icon theme.
      #+BEGIN_SRC conf-unix
        # -*- mode: unix-config -*-
        gtk-theme-name="Nordic"
        gtk-icon-theme-name="Flat-Remix-Dark"
      #+END_SRC

      #+BEGIN_SRC conf-unix
        gtk-xft-antialias=1
        gtk-xft-hinting=1
        gtk-xft-hintstyle="hintslight"
      #+END_SRC

      This changes the shortcuts in menu, let’s also make the menus snappier.
      #+BEGIN_SRC conf-unix
        gtk-can-change-accels=1
        gtk-menu-bar-popup-delay=0
        gtk-menu-popdown-delay=0
        gtk-menu-popup-delay=0
      #+END_SRC

***** Filechooser
      :PROPERTIES:
      :HEADER-ARGS: :tangle ~/.config/gtk-2.0/gtkfilechooser.ini
      :CUSTOM_ID: Features-Graphical_tweaks-GTK_Settings-GTK2-Filechooser-389f040d
      :END:
      #+BEGIN_SRC conf-unix
        [Filechooser Settings]
      #+END_SRC

      The first option alows  me to open the file chooser  in the current working
      directory:
      #+BEGIN_SRC conf-unix
        StartupMode=cwd
      #+END_SRC

      Next, setting the location mode to ~path-bar~ will show the path as buttons
      that can be clicked rather than the full path.
      #+BEGIN_SRC conf-unix
        LocationMode=path-bar
      #+END_SRC

      With this configuration, by default we won’t see hidden files.
      #+BEGIN_SRC conf-unix
        ShowHidden=true
      #+END_SRC

      And we'll also see the size of the visible files.
      #+BEGIN_SRC conf-unix
        ShowSizeColumn=true
      #+END_SRC

      Now, let’s  choose the geometry of  our file picker. These  two first lines
      set where the file picker appears:
      #+BEGIN_SRC conf-unix
        GeometryX=566
        GeometryY=202
      #+END_SRC

      And these two describe the size of the window:
      #+BEGIN_SRC conf-unix
        GeometryWidth=800
        GeometryHeight=400
      #+END_SRC

      With these two lines, we set how our  files are sorted: by name, and in the
      ascending order.
      #+BEGIN_SRC conf-unix
        SortColumn=name
        SortOrder=ascending
      #+END_SRC

      Our default view mode is a list of files:
      #+BEGIN_SRC conf-unix
        ViewMode=list-view
      #+END_SRC

      And finally, setting our icon view scale  to ~-1~ sets the icon view to the
      max size.
      #+BEGIN_SRC conf-unix
        IconViewScale=-1
      #+END_SRC

**** GTK3
     :PROPERTIES:
     :HEADER-ARGS: :tangle ~/.config/gtk-3.0/settings.ini
     :CUSTOM_ID: Features-Graphical_tweaks-GTK_Settings-GTK3-3d6cba86
     :END:
     The following file helps me choosing the aspect of various GTK+ 3 software,
     including their theme and icons. First, let’s declare the header:
     #+BEGIN_SRC conf-unix
       [Settings]
     #+END_SRC

     Now,  let’s hint  to  GTK that  I  prefer  dark themes.  This  can have  an
     influence  also  on some  websites  that  can  detect this  preference  and
     therefore set their own theme to dark by themselves.
     #+BEGIN_SRC conf-unix
       gtk-application-prefer-dark-theme = true
     #+END_SRC

     Next, the icon theme is the Flat Remix Dark icon theme:
     #+BEGIN_SRC conf-unix
       gtk-icon-theme-name = Flat-Remix-Dark
     #+END_SRC

     Now, the general theme for GTK3 is Nordic.
     #+BEGIN_SRC conf-unix
       gtk-theme-name = Nordic
     #+END_SRC

     #+BEGIN_SRC conf-unix
       gtk-can-change-accels=1
       gtk-menu-bar-popup-delay=0
       gtk-menu-popdown-delay=0
       gtk-menu-popup-delay=0
     #+END_SRC

     #+BEGIN_SRC conf-unix
       gtk-xft-antialias=1
       gtk-xft-hinting=1
       gtk-xft-hintstyle=hintslight
       # gtk-xft-rgba=rgb
     #+END_SRC

     Since window decorations are handled by  my WMs, I will leave this variable
     empty.
     #+BEGIN_SRC conf-unix
       gtk-decoration-layout=
     #+END_SRC

*** Picom (Compton)
    :PROPERTIES:
    :CUSTOM_ID: Features-Graphical_tweaks-Picom-b5b9a4dd
    :END:
    Picom is  a standalone compositor  for Xorg,  and the successor  to Compton,
    itself successor to  xcompmgr-dana, itself a fork of xcompmgr.  You can find
    my Picom configuration [[file:picom.org][here]].

*** Xresources
    :PROPERTIES:
    :HEADER-ARGS: :tangle ~/.Xresources :exports code
    :CUSTOM_ID: Features-Graphical_tweaks-Xresources-8b622de1
    :END:
    My Xresources file  is very short. Indeed, it only  contains two lines which
    are dedicated to my =st= terminal to set its font and shell. The font is set
    as follows.
    #+BEGIN_SRC conf
      st.font: Fantasque Sans Mono:size=10:antialias=true
    #+END_SRC
    I can also set the transparency of st (my terminal emulator) like so:
    #+BEGIN_SRC conf
      st.alpha: 0.65
    #+END_SRC

    Next is the  declaration of my color  theme. It is based on  the [[https://www.nordtheme.com/][Nord]] theme,
    from their [[https://github.com/arcticicestudio/nord-xresources/][Git repository]].
    #+BEGIN_SRC conf
      #define nord0 #2E3440
      #define nord1 #3B4252
      #define nord2 #434C5E
      #define nord3 #4C566A
      #define nord4 #D8DEE9
      #define nord5 #E5E9F0
      #define nord6 #ECEFF4
      #define nord7 #8FBCBB
      #define nord8 #88C0D0
      #define nord9 #81A1C1
      #define nord10 #5E81AC
      #define nord11 #BF616A
      #define nord12 #D08770
      #define nord13 #EBCB8B
      #define nord14 #A3BE8C
      #define nord15 #B48EAD

      ,*.foreground:   nord4
      ,*.background:   nord0
      ,*.cursorColor:  nord4
      ,*fading: 35
      ,*fadeColor: nord3

      ,*.color0: nord1
      ,*.color1: nord11
      ,*.color2: nord14
      ,*.color3: nord13
      ,*.color4: nord9
      ,*.color5: nord15
      ,*.color6: nord8
      ,*.color7: nord5
      ,*.color8: nord3
      ,*.color9: nord11
      ,*.color10: nord14
      ,*.color11: nord13
      ,*.color12: nord9
      ,*.color13: nord15
      ,*.color14: nord7
      ,*.color15: nord6
    #+END_SRC

** Text and source code editing
   :PROPERTIES:
   :CUSTOM_ID: Features-Text_and_source_code_editing-63cc66d5
   :END:
*** Emacs configuration
    :PROPERTIES:
    :CUSTOM_ID: Features-Text_and_source_code_editing-Emacs_configuration-ef937102
    :END:
    Emacs is  my main text editor,  which I use for  almost everything. Because,
    you know…
    #+begin_quote
    Emacs is a great operating system, it just lacks a good text editor.
    #+end_quote

    You can find my Emacs config, based on Spacemacs, in my [[https://labs.phundrak.com/phundrak/dotfiles/src/branch/master/.spacemacs][.spacemacs]] file, and
    my user configuration in my [[file:spacemacs.org][spacemacs.org]] file.

*** Nano (deprecated)
    :PROPERTIES:
    :CUSTOM_ID: Features-Text_and_source_code_editing-Nano-a9d4839f
    :END:
    Although  it is  a  very simple  piece  of software,  nano  does offer  some
    customization. Mine can be found in my  [[file:~/org/config-website/nano.org][nano.org]] file. Be aware I do not use
    nano anymore,  and I will not  update it until  I may someday use  it again.
    This was deprecated on August 28th, 2020.

*** Rustfmt
    :PROPERTIES:
    :CUSTOM_ID: Features-Text_and_source_code_editing-Rustfmt-2c4ac0b3
    :END:
    You can find my Rustfmt configuration [[file:rustfmt.org][here]].

** Custom scripts in =PATH=
   :PROPERTIES:
   :CUSTOM_ID: Features-Custom_scripts_in_=PATH=-043e8c8e
   :END:
   I have written some scripts that  help me daily accomplish some simple tasks,
   like mounting  and unmounting a drive  or Android device, an  emoji picker, a
   utility to set up my Wacom tablet, and  so on. You can find them stored in my
   [[file:bin.org][bin.org]] file  along with their detailed  explanation in the README  placed in
   the same folder  —which is actually their source code  once the org-mode file
   gets tangled.

** Fish configuration with useful abbreviations
   :PROPERTIES:
   :CUSTOM_ID: Features-Fish_configuration_with_useful_abbreviations-c71ffba0
   :END:
   You can also find  in my Fish shell configuration in  my [[file:~/org/config-website/fish.org][fish.org]] file, which
   contains my usual abbreviations.

** And some minor configuration files
   :PROPERTIES:
   :CUSTOM_ID: Features-And_some_minor_configuration_files-d5cec319
   :END:
*** Email signature
    :PROPERTIES:
    :HEADER-ARGS: :tangle ~/.signature
    :CUSTOM_ID: Features-And_some_minor_configuration_files-Email_signature-8c5f2218
    :END:
    This file gets inserted automatically at the end of my emails.
    #+BEGIN_SRC text
      Lucien “Phundrak” Cartier-Tilet
      https://phundrak.com (Français)
      https://phundrak.com/en (English)

      Sent from GNU/Emacs
    #+END_SRC

*** Global gitignore
    :PROPERTIES:
    :HEADER-ARGS: :tangle ~/.gitignore_global
    :CUSTOM_ID: Features-And_some_minor_configuration_files-Global_gitignore-42467108
    :END:
    Sometimes,  there are  some lines  that always  reappear in  gitignores. So,
    instead of  always adding  them, let git  now that some  elements are  to be
    ignored by default, hence the [[file:.gitignore_global][~/.gitignore_global]] file. First, we don’t want
    nano’s backup files.
    #+BEGIN_SRC text
      ~*
    #+END_SRC

    And object files and output binaries generated by =gcc= and the likes aren’t
    welcome either.
    #+BEGIN_SRC text
      ,*.out
      ,*.o
    #+END_SRC

** Tmux configuration
   :PROPERTIES:
   :CUSTOM_ID: Features-Tmux_configuration-ce76e030
   :END:
   You can find  my tmux configuration in [[file:tmux.org][tmux.org]]. It  depends on the submodule
   [[https://github.com/gpakosz/.tmux.git][.tmux]] by [[https://pempek.net/][Gregory Pakosz]].

* Dependencies
  :PROPERTIES:
  :CUSTOM_ID: Dependencies-ef5057dd
  :END:
  Of course, some dependencies are needed for  my dotfiles to work well. Here is
  a non-exhaustive list of software needed by these configuration files:
  - [[https://www.gnu.org/software/emacs/][GNU/Emacs]] >= 26.2
    - [[http://spacemacs.org][Spacemacs]] (develop branch)
    - My [[https://labs.phundrak.com/phundrak/conlang-layer][conlanging layer]]
    - [[https://github.com/venmos/w3m-layer][Venmos]]’ [[https://github.com/venmos/w3m-layer][w3m layer]]
  - The [[https://fishshell.com/][Fish shell]], using [[https://github.com/jorgebucaran/fisher][fisher]]
  - [[https://lukesmith.xyz/][Luke Smith]]’s [[https://github.com/LukeSmithxyz/st][fork]] of [[https://st.suckless.org/][st]]
  - [[https://resloved.info/][Resloved]]’s [[https://github.com/resloved/i3][i3-gaps-rounded]] fork of [[https://github.com/Airblader/i3][Airblader]]’s [[https://github.com/Airblader/i3][i3-gaps]], itself a fork of [[https://i3wm.org/][i3]]
  - [[https://github.com/yshui/compton][Compton]], more specificaly [[https://github.com/tryone144/compton][Tryone]]’s [[https://github.com/tryone144/compton][fork]]
  - [[https://github.com/dylanaraps/pywal/][pywal]]
  - [[https://tools.suckless.org/dmenu/][dmenu]]
  - [[https://github.com/enkore/j4-dmenu-desktop][j4-dmenu-desktop]]
  - [[https://github.com/davatorium/rofi][Rofi]]
  - [[https://github.com/gpoore/minted][minted]]
  - [[https://www.rust-lang.org/][Rust]] (stable and nightly)
  - [[https://www.latex-project.org/][LaTeX]] and [[http://xetex.sourceforge.net/][XeTeX]] (=texlive= packages on Arch Linux)
  - [[https://github.com/tmux/tmux][tmux]], based on [[https://github.com/gpakosz/.tmux][this repo]]’s configuration by [[https://pempek.net/][Grégory Pakosz]].
  - And a bunch of other stuff, see below
  And some other stuff scattered around in my dotfiles.

  BTW, I use Arch.

* Installation
  :PROPERTIES:
  :CUSTOM_ID: Installation-9ec2ae86
  :END:
  For an  installation walkthrough of my  Arch Linux installation, check  out my
  [[file:installation.org][installation.org]] file  where I  walk you  through the  first manual  steps and
  through the bootstrap you  can execute to automatically take care  of a lot of
  elements.

* Licence
  :PROPERTIES:
  :CUSTOM_ID: Licence-48911096
  :END:
  All of my  dotfiles (and my dotfiles  only) are available under  the GNU GPLv3
  Licence. Please  consult [[file:LICENCE.md]] for  more information. In  short: you
  are free to  access, edit and redistribute  all of my dotfiles  under the same
  licence and as allowed by the licence, and if you fuck up something, it’s your
  own responsibility.
