# Continuing with my ThinkPad T60 and OpenBSD - 2021-04-16

It's been a couple of weeks since I've set up my ThinkPad T60 to be my
sorta daily driver, so I've had plenty of time to test things out on
it and configure it to my liking. At the same time as I'm learning
how to handle this old hardware, I'm learning all about OpenBSD. I
definitely still have about a million more things to learn, but in
the meantime I'm chronicling the setup of my ThinkPad T60 as resource
for myself and others.

In my last post about the ThinkPad T60, I said that I ordered some
new RAM and a new T7200 CPU for my laptop. I've since received both
of these items and upgraded my laptop...well sorta. When I received
my laptop, it had 1GB of RAM, which I assumed was from one stick of
RAM (even though I opened the laptop up probably 10 times before
placing my order), but apparently I had two 512MB RAM sticks in the
RAM slot. Whoops, so rather than going with my original plan of
having the maximum 3GB of RAM, I'm working with 2.5GB of RAM. So
far, though, it's been enough to get by and I can safely have 6 or
so Firefox tabs open. There will definitely be lag, especially if
there a couple of Google Docs links open, but nothing too extreme.
With the new 64-bit CPU, th first thing I did was to install a
64-bit of version of OpenBSD, which I did with ease and without any
errors installing `comp68.tgz` this time. Hooray! I then pretty much
followed the same basic installation steps I outlined in my first
post, so definitely check that out.

0New ThinkPad T60 and OpenBSD	thinkpadt60.txt

Luckily, suspend on lid close has worked pretty much out of the box
for me, so I didn't have to do anything to any special configuration.
Just in case you do, though, just stick this line in your
`/etc/sysctl.conf` file:

```
machdep.lidaction=1 
```

This will make it so that when your laptop lid shuts, OpenBSD
automatically suspends. I've found that this doesn't work for me
when my laptop is connected to the power adapter, so I've made it a
habit of just running 

```
$ zzz # Suspends laptop
```

or

```
$ ZZZ # Hibernates laptop
```

so that I know for sure my laptop will be suspended once I close it.
Otherwise I may close it while it's connected to the power adapter
instead of disconnecting it from the power adapter first. Luckily,
the ThinkPad T60 has a moon-shaped LED indicator that shows when
your laptop is suspended. Super cute!

I've gotten really used to just tapping my touchad to act as a
left-click, but that doesn't work on a fresh install. For a hot
second I thought that the Thinkpad T60 didn't support tapping, but
apparently all you need to do is ass this line in your
`/etc/wsconsctl.conf` file:

```
mouse.tp.tapping=1 # Activates touchpad tapping support
```

One thing I noticed straight away on this install was that there was
no sound being output from my speakers...whoops, looks like I forgot
to set up a `mixerctl` configuration file. That's as easy as:

```
1. # cp /etc/examples/mixerctl.conf /etc/
```

then putting

```
outputs.master=200
```

to set the output level of the laptop speakers. 200 is a bit low
sometimes, so experiment a bit. 255 seems to be good, but I don't
use the speakers often so I keep them low.

For changing the volume of the machine as a non-root user, you could use `sndioctl` and possibly map it to some specific buttons or keyboard configuration. I just run it straight from a terminal, as follows:

```
$ sndioctl output.level=+0.1 # This raises the volume by 10%

or

$ sndioctl output.level=0.8 # This sets the level to 80%
```

One odd thing is that on boot, I won't hear anything output from
the speakers. It's only after I've suspended my laptop then woken
it up from its slumber that the speakers output sound. I noticed
this yesterday so I haven't had a chance to investigate the causes,
but it's definitely a weird bug. 

With some of these basic configuration files out of the way, here
are some ways I've customized the install's looks.

I've shamelessly stolen crhenr's dotfiles from GitHub to make my
FVWM look very sleek.

https://github.com/crhenr/dotfiles

I've modified the install script as such:

```
#!/bin/sh

echo -n "Install additional software? [y/n] "
read install

echo -n "Move dotfiles to which user? "
read user

if [[ $install == y ]]; then
    pkg_add wireshark firefox gimp vlc transmission-gtk git vim nnn cmus
fi

echo "[*] Installing necessary software..."
pkg_add feh conky i3lock scrot rofi ImageMagick slim slim-themes

echo "[*] Copying dotfiles..."
cp .fvwmrc /home/$user/.fvwmrc
cp .conkyrc /home/$user/.conkyrc
cp .vimrc /home/$user/.vimrc
cp .Xdefaults /home/$user/.Xdefaults
mv .config /home/$user/

- echo "conky &" > /home/$user/.xinitrc
- echo "exec fvwm" >> /home/$user/.xinitrc
+ echo "conky &" > /home/$user/.xsession
+ echo "exec fvwm" >> /home/$user/.xsession

chown -R $user /home/$user

cp -R ./openbsd-dark /usr/local/share/slim/themes/
cat <<EOT >> /etc/rc.local
if [ -x /usr/local/bin/slim ]; then
    echo -n ' slim'; ( sleep 5; /usr/local/bin/slim -nodaemon ) &
fi

EOT
echo "[*] Change the variable current_theme in /etc/slim.conf to openbsd-dark"
echo "[*] Done."
```

I found that my `.xinitrc` file wasn't actually doing anything, and
that putting the same lines into `.xsession` had the desired effect.
(EDIT: This is because I use `xenodm` rather than `startx`). I also
went ahead and followed the script's instructions to change the
`current_theme` variable in `/etc/slim.conf` to `openbsd-dark`.

Make sure to modify the `*ShutdownVerifyCommand` as follows:

```
*ShutdownVerifyCommand        exec /usr/bin/doas /sbin/halt -p
```

Otherwise, this button in the menu won't actually shut the laptop
down.

Wala! Now my OpenBSD install looks beautiful and functions well
enough for basic use.

Since I'm on OpenBSD, most of the programs I use on a daily basis
aren't natively avaialable on it. One of these programs is Telegram,
which I use to communicate daily with my girlfriend. Telegram has a
web client, but Firefox on this machine struggles enough as-is, so I
wanted a command line solution. Luckily I found this Reddit post

https://archive.is/WgTUs

detailing how you can build `tdlib` and the command line telegram
client `tg` for OpenBSD. I followed the instructions and it worked
perfectly, it just took forever to build. Now I have a very fast,
extremely usable Telegram client with VIM keybindings on OpenBSD.

I'm also present on Matrix, but there are no Matrix clients available
on OpenBSD. (EDIT: I'm an idiot. Apparently `gomuks` is available in
both packages and ports. OOF). Luckily, `weechat` is available
on OpenBSD and it has a `weechat-matrix` plugin that lets it connect
to the Matrix network as a Matrix client! Perfect, and there are even
installation instructions here:

https://archive.is/a54F4

I followed these instructions and everything seemed just fine, up
until the very last step where you build `weechat-matrix` with

```
$ make install
```

Instead, you should use

```
$ gmake install
```

which got rid of all of the errors I had and worked just fine. Just
follow the rest of the instructions in that tutorial you should be
able to open Weechat and connect to the Matrix network.

If you have been in any encrypted channels and want to be able to
see the encrypted history, you'll need to somehow export your E2E
Room Keys. This is fairly trivial in Element, but other clients may
very. Once you export your keys and encrypt them with a passphrase,
move them over to your OpenBSD machine then import them into Weechat
using:

```
/olm import /path/to/keys <passphrase>
```

It should take a little bit to load them in, but you should be good
once it's done. You may need to verify yourself and people in
channels you're present in. You can verify everyone using:

```
/olm verify * *
```

or specific people using:

```
/olm verify @test:test.org *
```

That should give you a working Matrix client on OpenBSD.

While the GUI side of things may look and function just fine now,
I've found that I mostly deal with text. In class, I write notes in
Markdown files using `vim` and spend the rest of the time reading, either
physical books, PDFs, eBooks, plain-text websites, etc. So to
preserve my limited RAM and battery, I mostly stick to the TTY and
use `tmux` combined with `vim` for writing notes, `lynx` for
browsing the web, `epy` for reading ePUB files, `pdftotext` from the
`poppler-utils` package to convert PDFs into text files and read
them with `less`, and `bombadillo to browse geminispace. I've also
modified my `.tmux.conf` to look like this:

```
set -g status-right-length 100
set -g status-right "%d.%b.%Y %l:%M %p | #(apm -l)%"
```

The first line sets the length of the right side of the `tmux`
status bar to 100, while the second line sets the right side of the
status bar to display the date, current time, and current battery
percentage. For example:

```
[0] 0:ksh  1:ksh		16.Apr.2021  5:03 PM | 50%
```
This is all the configuration I've done so far, but it's given me a
usable system, especially considering that this is a 15-year-old
laptop. If anyone has any other suggestions on ways to configure my
system, throw them at me please!