+9
config/alacritty/alacritty.toml
+9
config/alacritty/alacritty.toml
+39
config/alacritty/flexoki-dark.toml
+39
config/alacritty/flexoki-dark.toml
···
1
+
[colors.bright]
2
+
black = "0x100F0F"
3
+
blue = "0x4385BE"
4
+
cyan = "0x3AA99F"
5
+
green = "0x879A39"
6
+
magenta = "0xCE5D97"
7
+
red = "0xD14D41"
8
+
white = "0xFFFCF0"
9
+
yellow = "0xD0A215"
10
+
11
+
[colors.cursor]
12
+
cursor = "0xFFFCF0"
13
+
text = "0xFFFCF0"
14
+
15
+
[colors.dim]
16
+
black = "0x100F0F"
17
+
blue = "0x205EA6"
18
+
cyan = "0x24837B"
19
+
green = "0x66800B"
20
+
magenta = "0xA02F6F"
21
+
red = "0xAF3029"
22
+
white = "0xFFFCF0"
23
+
yellow = "0xAD8301"
24
+
25
+
[colors.normal]
26
+
black = "0x100F0F"
27
+
blue = "0x205EA6"
28
+
cyan = "0x24837B"
29
+
green = "0x66800B"
30
+
magenta = "0xA02F6F"
31
+
red = "0xAF3029"
32
+
white = "0xFFFCF0"
33
+
yellow = "0xAD8301"
34
+
35
+
[colors.primary]
36
+
background = "0x282726"
37
+
bright_foreground = "0xFFFCF0"
38
+
dim_foreground = "0xFFFCF0"
39
+
foreground = "0xFFFCF0"
+39
config/alacritty/flexoki-light.toml
+39
config/alacritty/flexoki-light.toml
···
1
+
[colors.bright]
2
+
black = "#100F0F"
3
+
blue = "#4385BE"
4
+
cyan = "#3AA99F"
5
+
green = "#879A39"
6
+
magenta = "#CE5D97"
7
+
red = "#D14D41"
8
+
white = "#FFFCF0"
9
+
yellow = "#D0A215"
10
+
11
+
[colors.cursor]
12
+
cursor = "#100F0F"
13
+
text = "#FFFCF0"
14
+
15
+
[colors.dim]
16
+
black = "#100F0F"
17
+
blue = "#4385BE"
18
+
cyan = "#3AA99F"
19
+
green = "#879A39"
20
+
magenta = "#CE5D97"
21
+
red = "#D14D41"
22
+
white = "#FFFCF0"
23
+
yellow = "#D0A215"
24
+
25
+
[colors.normal]
26
+
black = "#100F0F"
27
+
blue = "#4385BE"
28
+
cyan = "#3AA99F"
29
+
green = "#879A39"
30
+
magenta = "#CE5D97"
31
+
red = "#D14D41"
32
+
white = "#FFFCF0"
33
+
yellow = "#D0A215"
34
+
35
+
[colors.primary]
36
+
background = "#FFFCF0"
37
+
bright_foreground = "#100F0F"
38
+
dim_foreground = "#100F0F"
39
+
foreground = "#100F0F"
+17
config/fuzzel/fuzzel.ini
+17
config/fuzzel/fuzzel.ini
···
1
+
font = Mononoki Nerd Font:size=12
2
+
anchor = top
3
+
y-margin = 8
4
+
icon-theme = "la-capitaine-icon-theme"
5
+
6
+
[colors]
7
+
background = FFFCF0FF
8
+
text = 100F0FFF
9
+
prompt = 100F0FFF
10
+
placeholder = 6F6E69FF
11
+
input = 100F0FFF
12
+
match = 66800BFF
13
+
selection = DAD8CEFF
14
+
selection-text = 6F6E69FF
15
+
selection-match = 66800BFF
16
+
border = E6E4D9FF
17
+
+11
config/mako/config
+11
config/mako/config
+224
config/niri/config.kdl
+224
config/niri/config.kdl
···
1
+
input {
2
+
focus-follows-mouse max-scroll-amount="0%"
3
+
workspace-auto-back-and-forth
4
+
5
+
keyboard {
6
+
xkb {
7
+
layout "us"
8
+
options "compose:caps"
9
+
}
10
+
11
+
numlock
12
+
}
13
+
14
+
touchpad {
15
+
tap
16
+
natural-scroll
17
+
accel-speed 0.2
18
+
accel-profile "flat"
19
+
}
20
+
}
21
+
22
+
output "eDP-1" {
23
+
mode "1920x1080@60.020"
24
+
scale 1
25
+
transform "normal"
26
+
}
27
+
28
+
layout {
29
+
gaps 16
30
+
always-center-single-column
31
+
center-focused-column "never"
32
+
background-color "transparent"
33
+
34
+
default-column-width {
35
+
proportion 0.5
36
+
}
37
+
38
+
preset-column-widths {
39
+
proportion 0.33333
40
+
proportion 0.5
41
+
proportion 0.66667
42
+
}
43
+
44
+
border {
45
+
width 3
46
+
active-color "#879A39"
47
+
inactive-color "#6F6E69"
48
+
}
49
+
50
+
focus-ring {
51
+
off
52
+
}
53
+
54
+
shadow {
55
+
on
56
+
softness 30
57
+
spread 5
58
+
offset x=0 y=5
59
+
color "#0007"
60
+
}
61
+
62
+
tab-indicator {
63
+
width 8
64
+
gap 6
65
+
length total-proportion=0.3
66
+
gaps-between-tabs 4
67
+
corner-radius 4
68
+
69
+
active-color "#879A39"
70
+
inactive-color "#E6E4D9"
71
+
}
72
+
73
+
}
74
+
75
+
overview {
76
+
workspace-shadow {
77
+
off
78
+
}
79
+
}
80
+
81
+
recent-windows {
82
+
highlight {
83
+
active-color "#E6E4D9FF"
84
+
urgent-color "#D14D41FF"
85
+
padding 20
86
+
corner-radius 8
87
+
}
88
+
}
89
+
90
+
91
+
spawn-at-startup "waybar"
92
+
spawn-at-startup "mako"
93
+
spawn-sh-at-startup "swaybg -m fill -i $(find ~/Pictures/Wallpapers/ -type f | shuf -n1)"
94
+
95
+
hotkey-overlay {
96
+
skip-at-startup
97
+
}
98
+
99
+
prefer-no-csd
100
+
101
+
screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"
102
+
103
+
environment {
104
+
QT_QPA_PLATFORM "wayland"
105
+
}
106
+
107
+
cursor {
108
+
xcursor-theme "capitaine-cursors-dark"
109
+
xcursor-size 32
110
+
}
111
+
112
+
window-rule {
113
+
match app-id=r#"zen$"# title="^Picture-in-Picture$"
114
+
open-floating true
115
+
}
116
+
117
+
window-rule {
118
+
match app-id=r#"^org\.keepassxc\.KeePassXC$"#
119
+
block-out-from "screen-capture"
120
+
}
121
+
122
+
window-rule {
123
+
geometry-corner-radius 8
124
+
clip-to-geometry true
125
+
}
126
+
127
+
layer-rule {
128
+
match namespace="^wallpaper$"
129
+
place-within-backdrop true
130
+
}
131
+
132
+
binds {
133
+
Mod+Return { spawn "alacritty"; }
134
+
Mod+D { spawn "fuzzel"; }
135
+
Mod+L { spawn "swaylock"; }
136
+
137
+
XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+ -l 1.0"; }
138
+
XF86AudioLowerVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-"; }
139
+
XF86AudioMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; }
140
+
XF86AudioMicMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; }
141
+
142
+
XF86AudioPlay allow-when-locked=true { spawn-sh "playerctl play-pause"; }
143
+
XF86AudioStop allow-when-locked=true { spawn-sh "playerctl stop"; }
144
+
XF86AudioPrev allow-when-locked=true { spawn-sh "playerctl previous"; }
145
+
XF86AudioNext allow-when-locked=true { spawn-sh "playerctl next"; }
146
+
147
+
XF86MonBrightnessUp allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "+10%"; }
148
+
XF86MonBrightnessDown allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "10%-"; }
149
+
150
+
Mod+O repeat=false { toggle-overview; }
151
+
Mod+Shift+Q repeat=false { close-window; }
152
+
153
+
Mod+Left { focus-column-left; }
154
+
Mod+Down { focus-window-down; }
155
+
Mod+Up { focus-window-up; }
156
+
Mod+Right { focus-column-right; }
157
+
158
+
Mod+Shift+Left { move-column-left; }
159
+
Mod+Shift+Down { move-window-down; }
160
+
Mod+Shift+Up { move-window-up; }
161
+
Mod+Shift+Right { move-column-right; }
162
+
163
+
Mod+U { focus-workspace-down; }
164
+
Mod+I { focus-workspace-up; }
165
+
Mod+Shift+U { move-column-to-workspace-down; }
166
+
Mod+Shift+I { move-column-to-workspace-up; }
167
+
168
+
Mod+1 { focus-workspace 1; }
169
+
Mod+2 { focus-workspace 2; }
170
+
Mod+3 { focus-workspace 3; }
171
+
Mod+4 { focus-workspace 4; }
172
+
Mod+5 { focus-workspace 5; }
173
+
Mod+6 { focus-workspace 6; }
174
+
Mod+7 { focus-workspace 7; }
175
+
Mod+8 { focus-workspace 8; }
176
+
Mod+9 { focus-workspace 9; }
177
+
Mod+Shift+1 { move-column-to-workspace 1; }
178
+
Mod+Shift+2 { move-column-to-workspace 2; }
179
+
Mod+Shift+3 { move-column-to-workspace 3; }
180
+
Mod+Shift+4 { move-column-to-workspace 4; }
181
+
Mod+Shift+5 { move-column-to-workspace 5; }
182
+
Mod+Shift+6 { move-column-to-workspace 6; }
183
+
Mod+Shift+7 { move-column-to-workspace 7; }
184
+
Mod+Shift+8 { move-column-to-workspace 8; }
185
+
Mod+Shift+9 { move-column-to-workspace 9; }
186
+
187
+
Mod+R { switch-preset-column-width; }
188
+
Mod+Shift+R { switch-preset-column-width-back; }
189
+
Mod+F { maximize-column; }
190
+
Mod+Shift+F { fullscreen-window; }
191
+
Mod+Ctrl+F { expand-column-to-available-width; }
192
+
Mod+C { center-column; }
193
+
Mod+Ctrl+C { center-visible-columns; }
194
+
195
+
Mod+Space { toggle-window-floating; }
196
+
Mod+Shift+Space { switch-focus-between-floating-and-tiling; }
197
+
198
+
199
+
Mod+BracketLeft { consume-or-expel-window-left; }
200
+
Mod+BracketRight { consume-or-expel-window-right; }
201
+
Mod+Comma { consume-window-into-column; }
202
+
Mod+Period { expel-window-from-column; }
203
+
Mod+W { toggle-column-tabbed-display; }
204
+
205
+
Mod+P { screenshot; }
206
+
Mod+Ctrl+Print { screenshot-screen; }
207
+
Mod+Alt+Print { screenshot-window; }
208
+
209
+
Mod+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; }
210
+
211
+
Mod+Shift+E { quit; }
212
+
Mod+Shift+P { power-off-monitors; }
213
+
}
214
+
215
+
gestures {
216
+
dnd-edge-workspace-switch {
217
+
trigger-height 30
218
+
}
219
+
220
+
hot-corners {
221
+
off
222
+
}
223
+
}
224
+
+18
config/waybar/config.jsonc
+18
config/waybar/config.jsonc
···
1
+
{
2
+
"layer": "top",
3
+
"modules-left": ["niri/workspaces"],
4
+
"modules-center": ["niri/window"],
5
+
"modules-right": ["network", "battery", "clock"],
6
+
"network": {
7
+
"interface": "wlan0",
8
+
"format": "{essid}",
9
+
"format-disconnected": "disconnected"
10
+
},
11
+
"battery": {
12
+
"format": "{capacity}% {icon}",
13
+
"format-icons": ["", "", "", "", ""]
14
+
},
15
+
"clock": {
16
+
"format-alt": "{:%a, %d. %b %H:%M}"
17
+
}
18
+
}
+37
config/waybar/flexoki-full.css
+37
config/waybar/flexoki-full.css
···
1
+
/*
2
+
* https://stephango.com/flexoki
3
+
*/
4
+
5
+
@define-color black #100f0f;
6
+
@define-color base-950 #1c1b1a;
7
+
@define-color base-900 #282726;
8
+
@define-color base-850 #343331;
9
+
@define-color base-800 #403e3c;
10
+
@define-color base-700 #575653;
11
+
@define-color base-600 #6f6e69;
12
+
@define-color base-500 #878580;
13
+
@define-color base-300 #b7b5ac;
14
+
@define-color base-200 #cecdc3;
15
+
@define-color base-150 #dad8ce;
16
+
@define-color base-100 #e6e4d9;
17
+
@define-color base-50 #f2f0e5;
18
+
@define-color paper #fffcf0;
19
+
20
+
@define-color red-600 #af3029;
21
+
@define-color orange-600 #bc5215;
22
+
@define-color yellow-600 #ad8301;
23
+
@define-color green-600 #66800b;
24
+
@define-color cyan-600 #24837b;
25
+
@define-color blue-600 #205ea6;
26
+
@define-color purple-600 #5e409d;
27
+
@define-color magenta-600 #a02f6f;
28
+
29
+
@define-color red-400 #d14d41;
30
+
@define-color orange-400 #da702c;
31
+
@define-color yellow-400 #d0a215;
32
+
@define-color green-400 #879a39;
33
+
@define-color cyan-400 #3aa99f;
34
+
@define-color blue-400 #4385be;
35
+
@define-color purple-400 #8b7ec8;
36
+
@define-color magenta-400 #ce5d97;
37
+
+31
config/waybar/flexoki-light.css
+31
config/waybar/flexoki-light.css
···
1
+
/*
2
+
* https://stephango.com/flexoki
3
+
*/
4
+
5
+
@define-color bg #fffcf0;
6
+
@define-color bg-2 #f2f0e5;
7
+
@define-color ui #e6e4d9;
8
+
@define-color ui-2 #dad8ce;
9
+
@define-color ui-3 #cecdc3;
10
+
@define-color tx-3 #b7b5ac;
11
+
@define-color tx-2 #6f6a69;
12
+
@define-color tx #100f0f;
13
+
14
+
@define-color re #af3029;
15
+
@define-color or #bc5215;
16
+
@define-color ye #ad8301;
17
+
@define-color gr #66800b;
18
+
@define-color cy #24937b;
19
+
@define-color bl #205ea6;
20
+
@define-color pu #5e409d;
21
+
@define-color ma #a02f6f;
22
+
23
+
@define-color re-2 #d14d41;
24
+
@define-color or-2 #da702c;
25
+
@define-color ye-2 #d0a215;
26
+
@define-color gr-2 #879a39;
27
+
@define-color cy-2 #3aa99f;
28
+
@define-color bl-2 #4385be;
29
+
@define-color pu-2 #8b7ec8;
30
+
@define-color ma-2 #ce5d97;
31
+
+65
config/waybar/style.css
+65
config/waybar/style.css
···
1
+
@import "flexoki-light.css";
2
+
3
+
* {
4
+
border: none;
5
+
border-radius: 0;
6
+
font-family: 'Mononoki Nerd Font';
7
+
font-size: 13px;
8
+
min-height: 0;
9
+
}
10
+
11
+
window#waybar {
12
+
background: @bg;
13
+
border-bottom: 3px solid @ui;
14
+
color: @tx;
15
+
}
16
+
17
+
tooltip {
18
+
background: @bg-2;
19
+
border: 1px solid @ui-2;
20
+
}
21
+
22
+
tooltip label {
23
+
color: @tx;
24
+
}
25
+
26
+
#network,
27
+
#battery,
28
+
#clock,
29
+
#workspaces button {
30
+
padding: 5px 10px;
31
+
background: @gr-2;
32
+
border-bottom: 3px solid @gr;
33
+
color: @tx;
34
+
}
35
+
36
+
#network,
37
+
#battery,
38
+
#clock {
39
+
margin-left: 4px;
40
+
}
41
+
42
+
#workspaces button {
43
+
background: transparent;
44
+
border-color: transparent;
45
+
padding: 5px;
46
+
}
47
+
48
+
#workspaces button.focused {
49
+
background: @gr-2;
50
+
border-color: @gr;
51
+
}
52
+
53
+
@keyframes blink {
54
+
to {
55
+
background: @re-2;
56
+
border-color: @re;
57
+
}
58
+
}
59
+
60
+
#battery.warning:not(.charging) {
61
+
background: @ye-2;
62
+
border-color: @ye;
63
+
animation: blink 0.5s steps(12) infinite alternate;
64
+
}
65
+
+74
install.sh
+74
install.sh
···
1
+
#!/usr/bin/env sh
2
+
3
+
set -eux
4
+
5
+
# Setup
6
+
setup-wayland-base
7
+
8
+
# Basics
9
+
apk add -y \
10
+
doas \
11
+
flatpak \
12
+
vim \
13
+
openssh
14
+
15
+
echo 'permit :wheel' > /etc/doas.d/doas.conf
16
+
17
+
# Desktop
18
+
apk add -y \
19
+
niri \
20
+
font-dejavu \
21
+
nerd-fonts-all \
22
+
alacritty \
23
+
nautilus \
24
+
fuzzel \
25
+
mako \
26
+
grim \
27
+
swayidle \
28
+
swaylockd \
29
+
swaybg \
30
+
brightnessctl \
31
+
wl-clipboard \
32
+
xwayland \
33
+
xdg-utils \
34
+
libnotify \
35
+
gnome-keyring \
36
+
capitaine-cursors
37
+
38
+
# Create manager
39
+
adduser manager
40
+
adduser manager wheel # doas
41
+
adduser manager plugdev # Allow WiFi management.
42
+
su -Dl manager
43
+
44
+
# Install basic apps
45
+
flatpak install -y flathub \
46
+
org.gnome.Epiphany \
47
+
org.scratchmark.Scratchmark \
48
+
dev.neovide.neovide \
49
+
org.keepassxc.KeePassXC \
50
+
net.ankiweb.Anki \
51
+
dev.vencord.Vesktop \
52
+
org.gnome.Fractal \
53
+
md.obsidian.Obsidian
54
+
55
+
# Allow Fractal to access gnome-keyring
56
+
flatpak --user override --talk-name=org.freedesktop.secrets org.gnome.Fractal
57
+
58
+
# Icon theme (La Capitaine)
59
+
mkdir -p ~/.icons/
60
+
cd ~/.icons/
61
+
git clone --depth=1 https://github.com/keeferrourke/la-capitaine-icon-theme.git
62
+
cd -
63
+
64
+
# Wallpaper
65
+
mkdir -p ~/Pictures/Wallpapers/
66
+
curl -Lo ~/Pictures/Wallpapers/forest1.png https://i.redd.it/4vztk5m7p9651.jpg
67
+
68
+
# Copy configs
69
+
mkdir -p ~/.config/
70
+
cp -r ./.config/* ~/.config/
71
+
72
+
# Git configuration
73
+
git config --global init.initialBranch main
74
+
+27
preinstall.sh
+27
preinstall.sh
···
1
+
#!/usr/bin/env sh
2
+
3
+
set -eux
4
+
5
+
# Network
6
+
apk add -y \
7
+
networkmanager \
8
+
networkmanager-tui
9
+
10
+
echo "[main]
11
+
dhcp=internal
12
+
plugins=ifupdown,keyfile
13
+
14
+
[ifupdown]
15
+
managed=true
16
+
17
+
[device]
18
+
wifi.scan-rand-mac-address=yes
19
+
wifi.backend=wpa_supplicant" > /etc/NetworkManager/NetworkManager.conf
20
+
21
+
rc-service networking stop
22
+
rc-service wpa_supplicant stop
23
+
rc-service networkmanager restart
24
+
rc-update add networkmanager default
25
+
rc-update del networking boot
26
+
rc-update del wpa_supplicant boot
27
+
+33
readme
+33
readme
···
1
+
elastic os
2
+
==========
3
+
4
+
Preconfigured Alpine spin with:
5
+
- Distrobox
6
+
- Niri
7
+
- Flatpak
8
+
9
+
Made for my personal uses! Odds are you won't like it.
10
+
11
+
Install
12
+
-------
13
+
14
+
Alpine:
15
+
16
+
# apk add -y git
17
+
# git clone https://tangled.org/emmeline.girlkisser.top/elastic
18
+
# cd elastic
19
+
# sh preinstall.sh
20
+
Make sure you're connected to internet again. preinstall
21
+
changes Alpine to use networkmanager.
22
+
# sh install.sh
23
+
# cd ..
24
+
# rm -rf elastic
25
+
# reboot
26
+
27
+
Then log in as `manager`. There shouldn't be a password.
28
+
29
+
Desktop
30
+
-------
31
+
32
+
Theme: https://stephango.com/flexoki
33
+
+12
scripts/rebuild.sh
+12
scripts/rebuild.sh