Before, sorry for my bad English.
English is just a languange, not a parameter for measuring your intelligence. So if you don't know English, it's okay. That doesn't undermine your intellectual faculties.
I've only been studying Linux for a few decades, I'm not an IT guy, developer or anything. So, if I have a mistake please correct it and not turn around to insult me.
- Machine : ThinkPad X270
- OS : Arch Linux
- Window Manager : i3wm
- Font : Fantasque Sans Mono Nerd Font
- Terminal : Alacritty
- Shell : Bash
- App Launcher : Rofi
- Notification : Dunst
- Text Editor : Vi iMproved
- File Manager : PcmanFM
- Colorscheme : Pywal
Some are for basic knowledge.
Set | Key | Exec |
---|---|---|
i3 | $super + q | Exit |
$super + Shift + R | Restart / Refresh window | |
$super + r | Resize | |
$super + h j k l | Move focus window | |
Global | $super + a | Application list |
$super + p | Powermenu | |
$super + n | Network | |
PrtSc | Screenshot | |
$super + Shift + Enter | Terminal |
Before that, allow me to make small talk first.
I used GNU/Linux more or less decades ago with Linux Mint, it was great! Gives me the impression that it's not too stiff when switching from Windows. I started to see some interesting views from some of the friends here. I decided to use i3wm on Linux Mint before migrating everything to Arch Linux.
Of course, everything seems stiff and heavy at first. However, we must open the door to potential experiences better. Not always closed and acting conservative but open on possibility.
Some very good guidelines (my version of course) for learning are.
i3 is my first wm and I absolutely love it! Especially the tabbed and stacking features. This can be used immediately when you first install i3wm in full and without the need for any configuration, i promise.
Actually, I used the enclosure to boot the SSD with Arch inside. Considering that the X270 has M.2 built in, I just wanted to let Windows 11 rest in peace without disturbing it. Until finally, problems came and I was forced to use dual boot on it.
Approximately, this is what my partition looks like now.
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 119.2G 0 disk
├─sda1 8:1 0 7.8G 0 part
├─sda2 8:2 0 100M 0 part
├─sda3 8:3 0 16M 0 part
├─sda4 8:4 0 91.1G 0 part
├─sda5 8:5 0 674M 0 part
├─sda6 8:6 0 1G 0 part /boot
└─sda7 8:7 0 18.5G 0 part /
Sure, sda6
and sda7
are part of Arch.
Oh no no! It looks like we're out of the documentation, let's move on~
I personally only use TTY to execute startx
. Some configuration scripts are in ~/.local/bin
you can configure those later. Fonts can be found in ~/.local/share/fonts
and several other settings can also be found in files starting with a dot (.
).
I assume you have successfully installed Arch and are currently on another Desktop Environment / Window Manager. We need several packages here, because I use Arch which means everything is under pacman. Oh, don't forget AUR! Do it all in one command.
$ sudo pacman -S i3-wm python-pywal alacritty dunst eza feh flameshot gucharmap imagemagick alsa-utils alsa-lib lxappearance pcmanfm wget git networkmanager xorg-xinit xorg-xset xclip libnotify dunst rofi xorg-server brightnessctl firefox
Cool, you're ready now!
Then.. what about the workspace? As in general, I don't stick to a few rules.
It's universal, I can open WPS on workspace 1 and terminal on workspace 4 (for example), sure. This is as random and free as possible configuration that I have. I previously used polybar as the bar. However, for several reasons, I want to take advantage of i3wm scratchpad feature to use the bar with the Bash script I write (stat-bar.sh
).
#!/bin/bash -e
# The MIT License (MIT)
# https://opensource.org/license/mit
# Copyright (c) 2024 Sukalaper
#
# Reference:
# https://github.com/dylanaraps/pure-bash-bible
# https://www.nerdfonts.com/cheat-sheet
# Make your own status bar
echo "An itsy bitsy status bar~"
echo "-------------------------"
# Battery
# Get value from /sys/class/power_supply/capacity
bat1=$(cat /sys/class/power_supply/BAT0/capacity)
bat2=$(cat /sys/class/power_supply/BAT1/capacity)
# Print output
[[ -n $bat1 && -n $bat2 ]] && { echo : $bat1; echo : $bat2; } || echo Something wrong..
# AC Status
# Get value from /sys/class/power_supply/AC/online
# If the value is 1, it is filled in and vice versa
charger_status=$(cat /sys/class/power_supply/AC/online)
# Print output
[[ $charger_status -eq 1 ]] && { echo : Charging; } || echo : Discharging
# Date
# Get value from $date
date_now=$(date)
# Print output
[[ -n $date_now ]] && { echo : $date_now; } || echo : $date_now not found
# Volume
# Get value from amixer
vol=$(awk -F"[][]" '/dB/ { print $2 }' <(amixer sget Master))
[[ -n $vol ]] && { echo : $vol; } || echo : not found
# Network
# Get value from nmcli and trim the name
# So the first 1-3 sentences are used
wifi_stat=$(nmcli connection show --active | awk '/wifi/ {printf "%s %s %s\n", $1, $2, $3}')
# Print output
[[ -n $wifi_stat ]] && { echo : $wifi_stat; } || echo : not found!
# Uptime
# Get value from $uptime and trim the output
# Until only hours:minutes are displayed
time_active=$(uptime | awk -F 'up' '{print $2}' | awk -F ',' '{print $1}' | sed 's/^[ \\t]*//')
# Print output
[[ -n $time_active ]] && { echo : $time_active; } || echo : -
# Sensors
# Show fan speed
# Get value fan from $sensors and trim the output
temp_fan=$(sensors | grep -i "fan" | awk '{print $2}')
# Print output
[[ -n $temp_fan ]] && { echo : $temp_fan RPM; } || echo : -
# Show temperature
# Get value temp from $sensors and trim the output
temp_now=$(sensors | grep -i "temp1" | tail -n1 | awk '{print $2}')
[[ -n $temp_now ]] && { echo : $temp_now; } || echo : -
This is a simple example, you can expand it further! If you want to change and configure, you can find some amazing icons here.