Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/lepisma/cfg

Config files
https://github.com/lepisma/cfg

dotfiles fish-configuration stumpwm

Last synced: 1 day ago
JSON representation

Config files

Awesome Lists containing this project

README

        

#+TITLE: cfg
#+AUTHOR: Abhinav Tushar

#+PROPERTY: header-args :exports both :results output

Configuration scripts and notes in literate style configuration using Org-Babel.
The configurations kept here are for the following machines:

1. ~euclid-red~ that runs Manjaro with StumpWM (X). This is primarily a keyboard
driven system (Legion Y720) and stays at my home workspace.
2. ~euclid-blue~ that runs Manjaro with GNOME (Wayland). This is a convertible
laptop (HP Spectre x360) that I use to move around, read, and take notes.
3. ~euclid-black~ is my Android based cell phone.
4. ~euclid-white~ is an M1 Macbook Air (2020) from my current workplace.
5. ~euclid-silver~ is a Raspberry PI 4 with Home Assistant OS used for home
automation and other home network applications.

Name prefix has a [[https://en.wikipedia.org/wiki/Pi_(film)][historical reason]]. There are a few other cloud machines other
than these. The repository itself has a few other items and assets that might
not be connected with the process in this org file.

* Basic packages & shell setup
My current OS is Manjaro across almost all Linux systems so this stage is common
across my two main machines.

#+BEGIN_SRC bash
uname -a
#+END_SRC

#+RESULTS:
: Linux euclid-red 5.15.89-1-MANJARO #1 SMP PREEMPT Wed Jan 18 20:37:11 UTC 2023 x86_64 GNU/Linux

Install ~yay~ before going ahead:

#+begin_src bash :dir /sudo::
pacman -S yay
#+end_src

For blue:
#+BEGIN_SRC bash
yay -S $(grep -vE "^\s*#" ./packages/manjaro.euclid-blue | tr "\n" " ")
#+END_SRC

For red:
#+BEGIN_SRC bash
yay -S $(grep -vE "^\s*#" ./packages/manjaro.euclid-red | tr "\n" " ")
#+END_SRC

Now that ~fish~ is installed, we will set it as the default shell.

#+BEGIN_SRC bash
chsh -s $(which fish)
#+END_SRC

Install fish packages

#+begin_src shell
# Install fisher
curl -sL https://git.io/fisher | source && fisher install jorgebucaran/fisher

for p in (cat ./fish/.config/fish/fishfile)
fisher install $p
end
#+end_src

#+BEGIN_SRC shell
stow -t ~/ fish
stow -t ~/ git
stow -t ~/ scripts
#+END_SRC

* Window Management
All of these are for the main machine running StumpWM.

#+BEGIN_SRC shell
stow -t ~/ stumpwm
stow -t ~/ polybar
stow -t ~/ dunst
stow -t ~/ picom
stow -t ~/ redshift
#+END_SRC

** Rofi
Use theme set up from [[https://github.com/adi1090x/rofi][here]] and the following colors.

#+begin_src
/* colors */
,* {
al: #00000000;
bg: #2E3440ff;
se: #374C6Bff;
fg: #D8DEE9cc;
ac: #81A1C1ff;
red: #434C5Eff;
green: #475C6Bff;
yellow: #8a9899ff;
blue: #42A5F5ff;
purple: #B48EADff;
cyan: #4DD0E1ff;
}
#+end_src

** Stumpwm

Need two sbcl setups. The one from main repo is going to run stumpwm with swank.
The following snip setups that. Needs quicklisp:

#+BEGIN_SRC shell
sbcl --eval "(ql:quickload '(clx-truetype swank stumpwm cl-strings inferior-shell))" --quit
mkdir -p ~/stumpwm
#+END_SRC

Clone the repo and use make from there on
#+BEGIN_SRC shell :dir ~/stumpwm/
git clone https://github.com/stumpwm/stumpwm
# Should checkout to some version
git clone https://github.com/stumpwm/stumpwm-contrib ./contrib
#+END_SRC

Here goes the xinitrc
#+BEGIN_SRC shell :tangle ~/.xinitrc
#!/bin/sh

xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --auto
exec stumpwm
#+END_SRC

#+BEGIN_SRC shell
chmod +x ~/.xinitrc
#+END_SRC

I might also need to disable the default display manager. See [[https://askubuntu.com/a/882436][this]].

There might be a font loading issue which is fixed by ~(xft:cache-fonts)~.

* Fonts
Few fonts are already installed when I install the basic packages. Rest are
listed here.

** Custom Iosevka
#+BEGIN_SRC shell :dir /sudo::
git clone [email protected]:lepisma/iosevka-lepisma /tmp/iosevka-lepisma
mkdir /usr/share/fonts/iosevka/
mv /tmp/iosevka-lepisma/ttf/patched/*ttf /usr/share/fonts/iosevka/
#+END_SRC

Override medium fonts
#+BEGIN_SRC shell :dir /sudo::/usr/share/fonts
yes | cp iosevka/iosevka-lepisma-regular.ttf iosevka/iosevka-lepisma-medium.ttf
yes | cp iosevka/iosevka-lepisma-italic.ttf iosevka/iosevka-lepisma-mediumitalic.ttf
yes | cp iosevka/iosevka-lepisma-oblique.ttf iosevka/iosevka-lepisma-mediumoblique.ttf

fc-cache -f
#+END_SRC

** Et book
#+BEGIN_SRC shell :dir /sudo::
git clone [email protected]:edwardtufte/et-book /tmp/et-book
mkdir /usr/share/fonts/et-book/
mv /tmp/et-book/et-book/*/*.ttf /usr/share/fonts/et-book/

fc-cache -f
#+END_SRC

** All the Icons
#+BEGIN_SRC elisp
(require 'all-the-icons)
(all-the-icons-install-fonts)
#+END_SRC

* Terminal
I use Konsole as the terminal emulator across machines.

#+BEGIN_SRC init :tangle ~/.local/share/konsole/lepisma.profile
[Appearance]
AntiAliasFonts=true
BoldIntense=true
ColorScheme=Nordic
Font=Iosevka,12,-1,5,50,0,0,0,0,0
LineSpacing=4
UseFontLineChararacters=false

[Cursor Options]
CursorShape=1

[General]
Command=/usr/bin/fish
DimWhenInactive=false
Directory=/home/lepisma/Desktop
LocalTabTitleFormat=%d | %n
Name=lepisma
Parent=FALLBACK/
RemoteTabTitleFormat=%d | %n
TerminalCenter=false
TerminalMargin=10

[Interaction Options]
AutoCopySelectedText=true

[Scrolling]
HistoryMode=2
ScrollBarPosition=2

[Terminal Features]
BlinkingCursorEnabled=true
UrlHintsModifiers=67108864
#+END_SRC

#+BEGIN_SRC shell
cp ./konsole/Nordic.colorscheme ~/.local/share/konsole/Nordic.colorscheme
#+END_SRC

* Languages
Programming language setup as needed. I only keep primary languages here and
rest as on-demand.

** Python setup
First set up [[https://github.com/pyenv/pyenv][pyenv]].

#+BEGIN_SRC shell
pip install -r ./packages/pip
#+END_SRC

IPython init

#+BEGIN_SRC python :tangle ~/.ipython/profile_default/startup/00-auto.py
get_ipython().magic("%load_ext autoreload")
get_ipython().magic("%autoreload 2")
#+END_SRC

** Node
I use node primarily for a few CLI tools listed [[./packages/node][here]].

* Email
** ~euclid-red~
On this machine, I use a combination of offlineimap and mu4e.

#+BEGIN_SRC shell
stow -t ~/ offlineimap
#+END_SRC

Create ~.authinfo.gpg~ file in ~~/~ with two items like the following for each
account:

#+begin_example
# -*- epa-file-encrypt-to: ("") -*-
machine imap.gmail.com name gmail-imap port 993 login <> password <> email <>
machine smtp.gmail.com name gmail-smtp port 465 login <> password <> email <>
#+end_example

#+begin_src ini :tangle ~/.local/share/applications/compose-mail.desktop
[Desktop Entry]
Type=Application
Name=Compose Mail
Exec=/home/lepisma/bin/compose-mail %u
StartupNotify=false
MimeType=x-scheme-handler/mailto
#+end_src

* Setup hardware
** Bluetooth sinks
Dumping commands. Need to enable bluetooth service and stuff.

#+begin_src shell
pacmd list-sinks | grep -e 'name:' -e 'index:'
pacmd set-default-sink
>>>>>>> ce96b50 (add example for authinfo entry)
#+end_src

** ~euclid-blue~
I have been using geary here and that works well.

* Default Programs
As a common item, I have a script ~www~ that dispatches urls to the right browser.
That's supposed to be set as the primary web handler.

#+BEGIN_SRC ini :tangle ~/.local/share/applications/www.desktop
[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
NoDisplay=true
Exec=/home/lepisma/bin/www
Name=www
Comment=Browser dispatch
#+END_SRC

Org protocol for capturing literature nodes
#+begin_src ini :tangle ~/.local/share/applications/org-protocol.desktop
[Desktop Entry]
Name=Org-Protocol
Exec=emacsclient %u
Icon=emacs-icon
Type=Application
Terminal=false
MimeType=x-scheme-handler/org-protocol
#+end_src

** ~euclid-red~
#+BEGIN_SRC shell
xdg-mime default feh.desktop image/jpeg
xdg-mime default feh.desktop image/png
xdg-mime default www.desktop x-scheme-handler/http
xdg-mime default www.desktop x-scheme-handler/https
xdg-mime default compose-mail.desktop x-scheme-handler/mailto
xdg-mime default org.kde.okular.desktop application/pdf
xdg-mime default org-protocol.desktop x-scheme-handler/org-protocol

handlr set inode/directory nautilus.desktop
handlr set .doc org.onlyoffice.desktopeditors.desktop
handlr set .docx org.onlyoffice.desktopeditors.desktop
#+END_SRC

** ~euclid-blue~
I don't have much customization here and I let GNOME handle most of items.

#+BEGIN_SRC shell
xdg-mime default www.desktop x-scheme-handler/http
xdg-mime default www.desktop x-scheme-handler/https
xdg-mime default org-protocol.desktop x-scheme-handler/org-protocol
#+END_SRC

* Hardware
Hardware specific configurations or installation steps.

** ~euclid-red~
*** Graphics Tablet
For Wacom One, run ~configure-tablet~.

*** Touchpad
Two finger for right click.

#+begin_src ini :tangle /sudo::/etc/X11/xorg.conf.d/99-synaptics-overrides.conf
Section "InputClass"
Identifier "touchpad overrides"
Driver "libinput"
MatchIsTouchpad "on"
Option "Tapping" "on"
Option "TappingButtonMap" "lrm"
EndSection
#+end_src

*** Keyboards
Swap keys on laptop's main board.

#+BEGIN_SRC ini :tangle ~/.Xmodmap
clear lock
clear control
keycode 66 = Control_L
add control = Control_L Control_R
#+END_SRC

*** Macropad
Installed KMonad and set up [[./keyboard/kmonad.service][the service]] for macropad.

*** Graphics Card
My laptop has Intel /and/ Nvidia card. I switch to just Nvidia drivers which works
well for me. Relevant portion for ~xinitrc~:

#+BEGIN_SRC shell
# Goes above exec stump..
xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --auto
#+END_SRC

*** Streamdeck
Import config from ~~./streamdeck~.

** ~euclid-blue~
*** Battery
Install ~tlp~ (already done in package installation), and enable the service.

#+begin_src shell
systemctl enable tlp.service
systemctl start tlp.service
#+end_src

*** Keyboard
Installed KMonad and set up [[./keyboard/kmonad.euclid-blue.service][this service]] for colemak-dh.

*** Touch Scrolling
Firefox needs some configuration to enable intuitive scrolling in touchscreen
laptops. [[https://superuser.com/questions/1151161/enable-touch-scrolling-in-firefox][Here]] is a guide.