Go to file
2022-12-26 19:41:10 +01:00
readme.md text 2022-12-26 19:41:10 +01:00

Installing Arch on a 2015 Retina MacBook Pro

Disk formatting

/dev/sda * /dev/sda1 - EFI Partition * /dev/sda2 - dmcrypt encrypted partition BTRFS filesystem with: - @root -> / - @home -> /home - @snapshots -> /.snapshots - @swap -> /swap for swapfile /swap/swapfile ensure only root can access swapfile chmod 600 /swa/swapfile create swapfile that is bigger than my ram for hibernate-to-disk dd if=/dev/zero of=/swapfile bs=1M count=8196 status=progress - @tmp -> /var/tmp - @log -> /var/log

Configuration

I use sway as my window manager, this time I decided to try a display manager aswell which I usually dont bother with and just type sway after login, and went for lemurs, a lightweight TUI dm written in Rust.

In my sway configuration file I changed the keyboard layout and options to be able to use the Command keys as Control keys just like in macOS:

# ~/.config/sway/config

input * {
    xkb_layout "de"
	xkb_variant "mac"
    xkb_options "caps:escape, altwin:ctrl_win"
	repeat_rate 25
	repeat_delay 250
}

And enabled natural scrolling, tapping for left clicking and 2-finger tapping for right clicking on the touchpad like so:

# ~/.config/sway/config

input * {
	natural_scroll enabled
	scroll_factor 0.5
	pointer_accel 0
	tap enabled
	tap_button_map lrm
}

Usually I use dmenu for starting applications or running quick commands, but since I have my own build of dmenu with a handful of patches and commandline options which I didn't have access to from my laptop, I chose to instead install a fork of rofi with wayland support.

Coming from macOS, what I missed most right away were touchpad gestures for switching workspaces, scrolling, selecting and dragging. Thankfully touchpad drivers on other operating systems have come a long way and it is possible to get almost all of these gestures on linux aswell thru libinput and libinput-gestures.

# /etc/libinput-gestures.conf

gesture swipe left 	4 swaymsg workspace next
gesture swipe right 4 swaymsg workspace prev
gesture swipe down 	4 swaylock-wrapper
gesture pinch in 	4 rofi-wrapper

I use these options in my /etc/libinput-gestures.conf to switch between adjacent workspaces with 4-finger swipes, lock my screen by swiping down with 4 fingers, and opening rofi (through my own wrapper in ~/.local/bin/) with a 4-finger pinch.

I also use the swaylock-effecs fork of swaylock, though I just use the image option without any effects because of how long it takes to compute the gaussean blur.

Since I dont use a common display manager which automatically runs XDG autorun .desktop entries, I start libinput-gestures in my sway config:

# ~/.config/sway/config

exec_always libinput-gestures-setup restart

Then I installed macbook-lighter and followed the instructions in the README to be able to control the display backlight and keyboard leds with the function row keys:

# ~/.config/sway/config

bindsym XF86MonBrightnessUp exec "macbook-lighter-screen --inc 100"
bindsym XF86MonBrightnessDown exec "macbook-lighter-screen --dec 100"

bindsym XF86KbdBrightnessUp exec "macbook-lighter-kbd --inc 25"
bindsym XF86KbdBrightnessDown exec "macbook-lighter-kbd --dec 25"

I also added keybinds here to control the volume and mpd with their respective keys on the function row:

# ~/.config/sway/config

bindsym XF86AudioPrev exec "mpc prev"
bindsym XF86AudioNext exec "mpc next"
bindsym XF86AudioPlay exec "mpc toggle"

bindsym XF86AudioMute exec "pactl -- set-sink-mute $(pactl get-default-sink) toggle"
bindsym XF86AudioLowerVolume exec "pactl -- set-sink-volume $(pactl get-default-sink) -10%"
bindsym XF86AudioRaiseVolume exec "pactl -- set-sink-volume $(pactl get-default-sink) +10%"

I also installed and start dunst for desktop notifications, and gammastep to replace nightshift to make the display warmer at night:

# ~/.config/sway/config

exec_always gammastep -l lat:lon -t 6500k:4000k
exec dunst

For convenience I installed cmst to manage my wireless network connections and a polkit agent to be able to systemctl suspend or reboot without having to authenticate myself or use sudo:

# ~/.config/sway/config

exec polkit-dumb-agent
exec cmst -m

To conveniently manage my VPN (I use NordVPN), I wrote and use nordvpn-rofi.sh