feat: add all configs
This commit is contained in:
commit
0267199f6e
23 changed files with 1673 additions and 0 deletions
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
**/.env
|
||||||
|
**/.env*
|
||||||
|
**/.local/share/fonts/*
|
||||||
92
README.md
Normal file
92
README.md
Normal file
|
|
@ -0,0 +1,92 @@
|
||||||
|
# Arch Linux
|
||||||
|
|
||||||
|
My custom Arch Linux configuration for the [MINIX NEO Z100-0dB][minix100].
|
||||||
|
|
||||||
|
## Blog post about this
|
||||||
|
|
||||||
|
Some background on the intention is available in my blog post.
|
||||||
|
|
||||||
|
## Repository contents
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ tree -a -I .git -F
|
||||||
|
./
|
||||||
|
├── etc/
|
||||||
|
│ ├── default/
|
||||||
|
│ │ └── useradd # ZSH as default shell
|
||||||
|
│ ├── iwd/
|
||||||
|
│ │ └── main.conf # Fix IPV4 DHCP
|
||||||
|
│ └── pacman.d/
|
||||||
|
│ └── mirrorlist # Arch mirrors near me
|
||||||
|
├── generate_pkglist.sh*
|
||||||
|
├── generate_systemd_enabled.sh*
|
||||||
|
├── home/
|
||||||
|
│ └── oli/
|
||||||
|
│ ├── bin/
|
||||||
|
│ │ └── vnc.sh # VNC config explained above
|
||||||
|
│ ├── .config/
|
||||||
|
│ │ ├── fastfetch/
|
||||||
|
│ │ │ └── config.jsonc # Minimal fastfetch config
|
||||||
|
│ │ ├── fontconfig/
|
||||||
|
│ │ │ └── fonts.conf # Set default fonts for Sway/Wayland
|
||||||
|
│ │ ├── htop/
|
||||||
|
│ │ │ └── htoprc
|
||||||
|
│ │ ├── mako/
|
||||||
|
│ │ │ └── config # Notifications
|
||||||
|
│ │ ├── pipewire/
|
||||||
|
│ │ │ └── pipewire.conf # Audio
|
||||||
|
│ │ ├── sway/
|
||||||
|
│ │ │ ├── config # Sway
|
||||||
|
│ │ │ └── status.sh* # swaybar output
|
||||||
|
│ │ ├── swaylock/
|
||||||
|
│ │ │ └── config # Lock screen
|
||||||
|
│ │ └── wayvnc/
|
||||||
|
│ │ └── config
|
||||||
|
│ └── .local/
|
||||||
|
│ └── share/
|
||||||
|
│ └── fonts/
|
||||||
|
│ ├── BerkeleyMono[...]-BoldOblique.ttf # https://usgraphics.com
|
||||||
|
│ ├── BerkeleyMono[...]-Bold.ttf # https://usgraphics.com
|
||||||
|
│ ├── BerkeleyMono[...]-Oblique.ttf # https://usgraphics.com
|
||||||
|
│ └── BerkeleyMono[...]-Regular.ttf # https://usgraphics.com
|
||||||
|
├── pkglist.txt # List of installed packages
|
||||||
|
├── README.md
|
||||||
|
├── root/
|
||||||
|
│ └── aufii.sh* # Generates EFI boot stub
|
||||||
|
├── systemd_enabled.txt # List of enabled services (system-wide)
|
||||||
|
└── systemd_enabled_user.txt # List of enabled user services
|
||||||
|
```
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
Follow the [official Installation guide][guide].
|
||||||
|
|
||||||
|
```shell
|
||||||
|
pacstrap -K /mnt base linux linux-firmware intel-ucode efibootmgr iwd neovim openssh git curl xfsprogs
|
||||||
|
```
|
||||||
|
|
||||||
|
- initramfs generation is needed `mkinitcpio -P`
|
||||||
|
- Use `root/aufii.sh` to generate/execute the [efibootmgr][efi] command
|
||||||
|
|
||||||
|
## Using it
|
||||||
|
|
||||||
|
### Fonts
|
||||||
|
|
||||||
|
Are managed by fontconfig.
|
||||||
|
|
||||||
|
### VNC
|
||||||
|
|
||||||
|
| Type | Name | Purpose | Details |
|
||||||
|
| ------- | -------- | -------------- | -------------------------------- |
|
||||||
|
| Package | `wayvnc` | VNC server | `~/.config/wayvnc/config` |
|
||||||
|
| File | SSH key | VNC encryption | `~/.config/wayvnc/rsa_key.pem\*` |
|
||||||
|
|
||||||
|
Packages:
|
||||||
|
|
||||||
|
- `wayvnc`. Running `~/bin/vnc.sh` allows to connect to an already
|
||||||
|
established sway session. On macOS, you can use the RealVNC client. Keys are
|
||||||
|
switched, Alt on Linux is Cmd on macOS.
|
||||||
|
|
||||||
|
[minix100]: https://www.minix.com.hk/products/minix-z100-0db-fanless-mini-pc
|
||||||
|
[guide]: https://wiki.archlinux.org/title/Installation_guide
|
||||||
|
[efi]: https://wiki.archlinux.org/title/EFI_boot_stub
|
||||||
27
etc/default/useradd
Normal file
27
etc/default/useradd
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
# Default values for useradd(8)
|
||||||
|
#
|
||||||
|
# The SHELL variable specifies the default login shell on your
|
||||||
|
# system.
|
||||||
|
SHELL=/usr/bin/zsh
|
||||||
|
|
||||||
|
# The default group for users
|
||||||
|
GROUP=users
|
||||||
|
|
||||||
|
# The default home directory.
|
||||||
|
HOME=/home
|
||||||
|
|
||||||
|
# The number of days after a password expires until the account is permanently
|
||||||
|
# disabled
|
||||||
|
INACTIVE=-1
|
||||||
|
|
||||||
|
# The default expire date
|
||||||
|
EXPIRE=
|
||||||
|
|
||||||
|
# The SKEL variable specifies the directory containing "skeletal" user files;
|
||||||
|
# in other words, files such as a sample .profile that will be copied to the
|
||||||
|
# new user's home directory when it is created.
|
||||||
|
SKEL=/etc/skel
|
||||||
|
|
||||||
|
# Defines whether the mail spool should be created while
|
||||||
|
# creating the account
|
||||||
|
CREATE_MAIL_SPOOL=no
|
||||||
2
etc/iwd/main.conf
Normal file
2
etc/iwd/main.conf
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
[General]
|
||||||
|
EnableNetworkConfiguration=True
|
||||||
33
etc/pacman.d/mirrorlist
Normal file
33
etc/pacman.d/mirrorlist
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
################################################################################
|
||||||
|
################# Arch Linux mirrorlist generated by Reflector #################
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
# With: reflector @/etc/xdg/reflector/reflector.conf
|
||||||
|
# When: 2025-09-13 20:58:10 UTC
|
||||||
|
# From: https://archlinux.org/mirrors/status/json/
|
||||||
|
# Retrieved: 2025-09-13 20:57:25 UTC
|
||||||
|
# Last Check: 2025-09-13 20:04:54 UTC
|
||||||
|
|
||||||
|
Server = https://mirror.init7.net/archlinux/$repo/os/$arch
|
||||||
|
Server = https://mirror.puzzle.ch/archlinux/$repo/os/$arch
|
||||||
|
#Server = https://mirrors.kernel.org/archlinux/$repo/os/$arch
|
||||||
|
#Server = https://de.arch.niranjan.co/$repo/os/$arch
|
||||||
|
#Server = https://archlinux.richard-neumann.de/$repo/os/$arch
|
||||||
|
#Server = https://us.arch.niranjan.co/$repo/os/$arch
|
||||||
|
#Server = https://mirror.pseudoform.org/$repo/os/$arch
|
||||||
|
#Server = https://mirror.moson.org/arch/$repo/os/$arch
|
||||||
|
#Server = https://london.mirror.pkgbuild.com/$repo/os/$arch
|
||||||
|
#Server = https://al.arch.niranjan.co/$repo/os/$arch
|
||||||
|
#Server = https://at.arch.niranjan.co/$repo/os/$arch
|
||||||
|
#Server = https://at.arch.mirror.kescher.at/$repo/os/$arch
|
||||||
|
#Server = https://berlin.mirror.pkgbuild.com/$repo/os/$arch
|
||||||
|
#Server = https://mirror.ubrco.de/archlinux/$repo/os/$arch
|
||||||
|
#Server = https://arch.phinau.de/$repo/os/$arch
|
||||||
|
#Server = https://mirror.sunred.org/archlinux/$repo/os/$arch
|
||||||
|
#Server = https://mirror.theash.xyz/arch/$repo/os/$arch
|
||||||
|
#Server = https://arch.mirror.constant.com/$repo/os/$arch
|
||||||
|
#Server = https://johannesburg.mirror.pkgbuild.com/$repo/os/$arch
|
||||||
|
#Server = https://losangeles.mirror.pkgbuild.com/$repo/os/$arch
|
||||||
|
#Server = https://singapore.mirror.pkgbuild.com/$repo/os/$arch
|
||||||
|
#Server = https://sydney.mirror.pkgbuild.com/$repo/os/$arch
|
||||||
|
#Server = https://taipei.mirror.pkgbuild.com/$repo/os/$arch
|
||||||
3
generate_pkglist.sh
Executable file
3
generate_pkglist.sh
Executable file
|
|
@ -0,0 +1,3 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
sudo pacman -Qqe > pkglist.txt
|
||||||
3
generate_systemd_enabled.sh
Executable file
3
generate_systemd_enabled.sh
Executable file
|
|
@ -0,0 +1,3 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
sudo systemctl list-unit-files --state=enabled > systemd_enabled.txt
|
||||||
|
systemctl list-unit-files --user --state=enabled > systemd_enabled_user.txt
|
||||||
63
home/oli/.config/fastfetch/config.jsonc
Normal file
63
home/oli/.config/fastfetch/config.jsonc
Normal file
|
|
@ -0,0 +1,63 @@
|
||||||
|
{
|
||||||
|
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
|
||||||
|
"logo": {
|
||||||
|
"source": "arch_small", // fastfetch --list-logos or --print-logos
|
||||||
|
"width": 5,
|
||||||
|
"padding": {
|
||||||
|
"top": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"display": {
|
||||||
|
"separator": " "
|
||||||
|
},
|
||||||
|
"modules": [
|
||||||
|
"break",
|
||||||
|
// "title",
|
||||||
|
{
|
||||||
|
"type": "terminal",
|
||||||
|
"key": "TERM",
|
||||||
|
// "keyColor": "33"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "kernel",
|
||||||
|
"key": "KRNL",
|
||||||
|
// "keyColor": "33"
|
||||||
|
},
|
||||||
|
// {
|
||||||
|
// "type": "host",
|
||||||
|
// "format": "MINIX {2} {3}",
|
||||||
|
// "key": "host ",
|
||||||
|
// // "keyColor": "33"
|
||||||
|
// },
|
||||||
|
{
|
||||||
|
"type": "wifi",
|
||||||
|
"format": "{7} ({4}, {13} GHz)",
|
||||||
|
"key": "WIFI",
|
||||||
|
// "keyColor": "33"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "packages",
|
||||||
|
"format": "{}",
|
||||||
|
"key": "PKGS",
|
||||||
|
// "keyColor": "33"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "uptime",
|
||||||
|
// "format": "{1}d{2}h{3}m",
|
||||||
|
"format": "{10}",
|
||||||
|
"key": "UPTM",
|
||||||
|
// "keyColor": "33"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "memory",
|
||||||
|
"key": "MEMR",
|
||||||
|
// "keyColor": "33"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "swap",
|
||||||
|
"key": "SWAP",
|
||||||
|
// "keyColor": "33" // = color3
|
||||||
|
},
|
||||||
|
"break"
|
||||||
|
]
|
||||||
|
}
|
||||||
24
home/oli/.config/fontconfig/fonts.conf
Normal file
24
home/oli/.config/fontconfig/fonts.conf
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
<?xml version='1.0'?>
|
||||||
|
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
|
||||||
|
<fontconfig>
|
||||||
|
<alias>
|
||||||
|
<family>sans-serif</family>
|
||||||
|
<prefer>
|
||||||
|
<family>SF Pro Text</family>
|
||||||
|
</prefer>
|
||||||
|
</alias>
|
||||||
|
|
||||||
|
<alias>
|
||||||
|
<family>serif</family>
|
||||||
|
<prefer>
|
||||||
|
<family>SF Pro Text</family>
|
||||||
|
</prefer>
|
||||||
|
</alias>
|
||||||
|
|
||||||
|
<alias>
|
||||||
|
<family>monospace</family>
|
||||||
|
<prefer>
|
||||||
|
<family>BerkeleyMono Nerd Font Mono</family>
|
||||||
|
</prefer>
|
||||||
|
</alias>
|
||||||
|
</fontconfig>
|
||||||
64
home/oli/.config/htop/htoprc
Normal file
64
home/oli/.config/htop/htoprc
Normal file
|
|
@ -0,0 +1,64 @@
|
||||||
|
# Beware! This file is rewritten by htop when settings are changed in the interface.
|
||||||
|
# The parser is also very primitive, and not human-friendly.
|
||||||
|
htop_version=3.4.1-3.4.1
|
||||||
|
config_reader_min_version=3
|
||||||
|
fields=0 48 17 18 38 39 40 2 46 47 49 1
|
||||||
|
hide_kernel_threads=1
|
||||||
|
hide_userland_threads=0
|
||||||
|
hide_running_in_container=0
|
||||||
|
shadow_other_users=1
|
||||||
|
show_thread_names=0
|
||||||
|
show_program_path=1
|
||||||
|
highlight_base_name=1
|
||||||
|
highlight_deleted_exe=1
|
||||||
|
shadow_distribution_path_prefix=0
|
||||||
|
highlight_megabytes=1
|
||||||
|
highlight_threads=1
|
||||||
|
highlight_changes=0
|
||||||
|
highlight_changes_delay_secs=5
|
||||||
|
find_comm_in_cmdline=1
|
||||||
|
strip_exe_from_cmdline=1
|
||||||
|
show_merged_command=0
|
||||||
|
header_margin=1
|
||||||
|
screen_tabs=1
|
||||||
|
detailed_cpu_time=0
|
||||||
|
cpu_count_from_one=0
|
||||||
|
show_cpu_usage=1
|
||||||
|
show_cpu_frequency=1
|
||||||
|
show_cpu_temperature=1
|
||||||
|
degree_fahrenheit=0
|
||||||
|
show_cached_memory=1
|
||||||
|
update_process_names=0
|
||||||
|
account_guest_in_cpu_meter=0
|
||||||
|
color_scheme=0
|
||||||
|
enable_mouse=1
|
||||||
|
delay=15
|
||||||
|
hide_function_bar=0
|
||||||
|
header_layout=two_50_50
|
||||||
|
column_meters_0=AllCPUs Memory Swap
|
||||||
|
column_meter_modes_0=1 1 1
|
||||||
|
column_meters_1=Tasks LoadAverage GPU
|
||||||
|
column_meter_modes_1=2 2 1
|
||||||
|
tree_view=1
|
||||||
|
sort_key=46
|
||||||
|
tree_sort_key=46
|
||||||
|
sort_direction=-1
|
||||||
|
tree_sort_direction=-1
|
||||||
|
tree_view_always_by_pid=0
|
||||||
|
all_branches_collapsed=0
|
||||||
|
screen:Main=PID USER PRIORITY NICE M_VIRT M_RESIDENT M_SHARE STATE PERCENT_CPU PERCENT_MEM TIME Command
|
||||||
|
.sort_key=PERCENT_CPU
|
||||||
|
.tree_sort_key=PERCENT_CPU
|
||||||
|
.tree_view_always_by_pid=0
|
||||||
|
.tree_view=1
|
||||||
|
.sort_direction=-1
|
||||||
|
.tree_sort_direction=-1
|
||||||
|
.all_branches_collapsed=0
|
||||||
|
screen:I/O=PID USER IO_PRIORITY IO_RATE IO_READ_RATE IO_WRITE_RATE PERCENT_SWAP_DELAY PERCENT_IO_DELAY Command
|
||||||
|
.sort_key=IO_READ_RATE
|
||||||
|
.tree_sort_key=PID
|
||||||
|
.tree_view_always_by_pid=0
|
||||||
|
.tree_view=0
|
||||||
|
.sort_direction=-1
|
||||||
|
.tree_sort_direction=1
|
||||||
|
.all_branches_collapsed=0
|
||||||
29
home/oli/.config/mako/config
Normal file
29
home/oli/.config/mako/config
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
sort=-time
|
||||||
|
layer=top
|
||||||
|
background-color=#162422
|
||||||
|
text-color=#53847d
|
||||||
|
border-color=#000055
|
||||||
|
border-size=4
|
||||||
|
border-radius=0
|
||||||
|
padding=15
|
||||||
|
width=450
|
||||||
|
icons=0
|
||||||
|
markup=1
|
||||||
|
default-timeout=7000
|
||||||
|
ignore-timeout=1
|
||||||
|
font=BerkeleyMono Nerd Font Mono 12
|
||||||
|
format=<b>%s</b> <i>%a</i>\n%b
|
||||||
|
|
||||||
|
[urgency=low]
|
||||||
|
background-color=#5a5a5a
|
||||||
|
text-color=#a3a3a3
|
||||||
|
border-color=#00000000
|
||||||
|
|
||||||
|
[urgency=critical]
|
||||||
|
background-color=#720000
|
||||||
|
text-color=#f0f0f0
|
||||||
|
border-color=#00000000
|
||||||
|
|
||||||
|
# highlight notifications from scripts
|
||||||
|
[app-name=script]
|
||||||
|
border-color=#000099
|
||||||
371
home/oli/.config/pipewire/pipewire.conf
Normal file
371
home/oli/.config/pipewire/pipewire.conf
Normal file
|
|
@ -0,0 +1,371 @@
|
||||||
|
# Daemon config file for PipeWire version "1.4.8" #
|
||||||
|
#
|
||||||
|
# Copy and edit this file in /etc/pipewire for system-wide changes
|
||||||
|
# or in ~/.config/pipewire for local changes.
|
||||||
|
#
|
||||||
|
# It is also possible to place a file with an updated section in
|
||||||
|
# /etc/pipewire/pipewire.conf.d/ for system-wide changes or in
|
||||||
|
# ~/.config/pipewire/pipewire.conf.d/ for local changes.
|
||||||
|
#
|
||||||
|
|
||||||
|
context.properties = {
|
||||||
|
## Configure properties in the system.
|
||||||
|
#library.name.system = support/libspa-support
|
||||||
|
#context.data-loop.library.name.system = support/libspa-support
|
||||||
|
#support.dbus = true
|
||||||
|
#link.max-buffers = 64
|
||||||
|
link.max-buffers = 16 # version < 3 clients can't handle more
|
||||||
|
#mem.warn-mlock = false
|
||||||
|
#mem.allow-mlock = true
|
||||||
|
#mem.mlock-all = false
|
||||||
|
#clock.power-of-two-quantum = true
|
||||||
|
#log.level = 2
|
||||||
|
#cpu.zero.denormals = false
|
||||||
|
|
||||||
|
#loop.rt-prio = -1 # -1 = use module-rt prio, 0 disable rt
|
||||||
|
#loop.class = data.rt
|
||||||
|
#thread.affinity = [ 0 1 ] # optional array of CPUs
|
||||||
|
#context.num-data-loops = 1 # -1 = num-cpus, 0 = no data loops
|
||||||
|
#
|
||||||
|
#context.data-loops = [
|
||||||
|
# { loop.rt-prio = -1
|
||||||
|
# loop.class = [ data.rt audio.rt ]
|
||||||
|
# #library.name.system = support/libspa-support
|
||||||
|
# thread.name = data-loop.0
|
||||||
|
# #thread.affinity = [ 0 1 ] # optional array of CPUs
|
||||||
|
# }
|
||||||
|
#]
|
||||||
|
|
||||||
|
core.daemon = true # listening for socket connections
|
||||||
|
core.name = pipewire-0 # core name and socket name
|
||||||
|
|
||||||
|
## Properties for the DSP configuration.
|
||||||
|
#default.clock.rate = 48000
|
||||||
|
#default.clock.allowed-rates = [ 48000 ]
|
||||||
|
#default.clock.quantum = 1024
|
||||||
|
#default.clock.min-quantum = 32
|
||||||
|
#default.clock.max-quantum = 2048
|
||||||
|
#default.clock.quantum-limit = 8192
|
||||||
|
#default.clock.quantum-floor = 4
|
||||||
|
#default.video.width = 640
|
||||||
|
#default.video.height = 480
|
||||||
|
#default.video.rate.num = 25
|
||||||
|
#default.video.rate.denom = 1
|
||||||
|
#
|
||||||
|
#settings.check-quantum = false
|
||||||
|
#settings.check-rate = false
|
||||||
|
}
|
||||||
|
|
||||||
|
context.properties.rules = [
|
||||||
|
{ matches = [ { cpu.vm.name = !null } ]
|
||||||
|
actions = {
|
||||||
|
update-props = {
|
||||||
|
# These overrides are only applied when running in a vm.
|
||||||
|
default.clock.min-quantum = 1024
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
context.spa-libs = {
|
||||||
|
#<factory-name regex> = <library-name>
|
||||||
|
#
|
||||||
|
# Used to find spa factory names. It maps an spa factory name
|
||||||
|
# regular expression to a library name that should contain
|
||||||
|
# that factory.
|
||||||
|
#
|
||||||
|
audio.convert.* = audioconvert/libspa-audioconvert
|
||||||
|
avb.* = avb/libspa-avb
|
||||||
|
api.alsa.* = alsa/libspa-alsa
|
||||||
|
api.v4l2.* = v4l2/libspa-v4l2
|
||||||
|
api.libcamera.* = libcamera/libspa-libcamera
|
||||||
|
api.bluez5.* = bluez5/libspa-bluez5
|
||||||
|
api.vulkan.* = vulkan/libspa-vulkan
|
||||||
|
api.jack.* = jack/libspa-jack
|
||||||
|
support.* = support/libspa-support
|
||||||
|
video.convert.* = videoconvert/libspa-videoconvert
|
||||||
|
#filter.graph = filter-graph/libspa-filter-graph
|
||||||
|
#videotestsrc = videotestsrc/libspa-videotestsrc
|
||||||
|
#audiotestsrc = audiotestsrc/libspa-audiotestsrc
|
||||||
|
}
|
||||||
|
|
||||||
|
context.modules = [
|
||||||
|
#{ name = <module-name>
|
||||||
|
# ( args = { <key> = <value> ... } )
|
||||||
|
# ( flags = [ ( ifexists ) ( nofail ) ] )
|
||||||
|
# ( condition = [ { <key> = <value> ... } ... ] )
|
||||||
|
#}
|
||||||
|
#
|
||||||
|
# Loads a module with the given parameters.
|
||||||
|
# If ifexists is given, the module is ignored when it is not found.
|
||||||
|
# If nofail is given, module initialization failures are ignored.
|
||||||
|
# If condition is given, the module is loaded only when the context
|
||||||
|
# properties all match the match rules.
|
||||||
|
#
|
||||||
|
|
||||||
|
# Uses realtime scheduling to boost the audio thread priorities. This uses
|
||||||
|
# RTKit if the user doesn't have permission to use regular realtime
|
||||||
|
# scheduling. You can also clamp utilisation values to improve scheduling
|
||||||
|
# on embedded and heterogeneous systems, e.g. Arm big.LITTLE devices.
|
||||||
|
# use module.rt.args = { ... } to override the arguments.
|
||||||
|
{ name = libpipewire-module-rt
|
||||||
|
args = {
|
||||||
|
nice.level = -11
|
||||||
|
rt.prio = 88
|
||||||
|
#rt.time.soft = -1
|
||||||
|
#rt.time.hard = -1
|
||||||
|
#uclamp.min = 0
|
||||||
|
#uclamp.max = 1024
|
||||||
|
}
|
||||||
|
flags = [ ifexists nofail ]
|
||||||
|
condition = [ { module.rt = !false } ]
|
||||||
|
}
|
||||||
|
|
||||||
|
# The native communication protocol.
|
||||||
|
{ name = libpipewire-module-protocol-native
|
||||||
|
args = {
|
||||||
|
# List of server Unix sockets, and optionally permissions
|
||||||
|
#sockets = [ { name = "pipewire-0" }, { name = "pipewire-0-manager" } ]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# The profile module. Allows application to access profiler
|
||||||
|
# and performance data. It provides an interface that is used
|
||||||
|
# by pw-top and pw-profiler.
|
||||||
|
# use module.profiler.args = { ... } to override the arguments.
|
||||||
|
{ name = libpipewire-module-profiler
|
||||||
|
args = {
|
||||||
|
#profile.interval.ms = 0
|
||||||
|
}
|
||||||
|
condition = [ { module.profiler = !false } ]
|
||||||
|
}
|
||||||
|
|
||||||
|
# Allows applications to create metadata objects. It creates
|
||||||
|
# a factory for Metadata objects.
|
||||||
|
{ name = libpipewire-module-metadata
|
||||||
|
condition = [ { module.metadata = !false } ]
|
||||||
|
}
|
||||||
|
|
||||||
|
# Creates a factory for making devices that run in the
|
||||||
|
# context of the PipeWire server.
|
||||||
|
{ name = libpipewire-module-spa-device-factory
|
||||||
|
condition = [ { module.spa-device-factory = !false } ]
|
||||||
|
}
|
||||||
|
|
||||||
|
# Creates a factory for making nodes that run in the
|
||||||
|
# context of the PipeWire server.
|
||||||
|
{ name = libpipewire-module-spa-node-factory
|
||||||
|
condition = [ { module.spa-node-factory = !false } ]
|
||||||
|
}
|
||||||
|
|
||||||
|
# Allows creating nodes that run in the context of the
|
||||||
|
# client. Is used by all clients that want to provide
|
||||||
|
# data to PipeWire.
|
||||||
|
{ name = libpipewire-module-client-node
|
||||||
|
condition = [ { module.client-node = !false } ]
|
||||||
|
}
|
||||||
|
|
||||||
|
# Allows creating devices that run in the context of the
|
||||||
|
# client. Is used by the session manager.
|
||||||
|
{ name = libpipewire-module-client-device
|
||||||
|
condition = [ { module.client-device = !false } ]
|
||||||
|
}
|
||||||
|
|
||||||
|
# The portal module monitors the PID of the portal process
|
||||||
|
# and tags connections with the same PID as portal
|
||||||
|
# connections.
|
||||||
|
{ name = libpipewire-module-portal
|
||||||
|
flags = [ ifexists nofail ]
|
||||||
|
condition = [ { module.portal = !false } ]
|
||||||
|
}
|
||||||
|
|
||||||
|
# The access module can perform access checks and block
|
||||||
|
# new clients.
|
||||||
|
{ name = libpipewire-module-access
|
||||||
|
args = {
|
||||||
|
# Socket-specific access permissions
|
||||||
|
#access.socket = { pipewire-0 = "default", pipewire-0-manager = "unrestricted" }
|
||||||
|
|
||||||
|
# Deprecated legacy mode (not socket-based),
|
||||||
|
# for now enabled by default if access.socket is not specified
|
||||||
|
#access.legacy = true
|
||||||
|
}
|
||||||
|
condition = [ { module.access = !false } ]
|
||||||
|
}
|
||||||
|
|
||||||
|
# Makes a factory for wrapping nodes in an adapter with a
|
||||||
|
# converter and resampler.
|
||||||
|
{ name = libpipewire-module-adapter
|
||||||
|
condition = [ { module.adapter = !false } ]
|
||||||
|
}
|
||||||
|
|
||||||
|
# Makes a factory for creating links between ports.
|
||||||
|
# use module.link-factory.args = { ... } to override the arguments.
|
||||||
|
{ name = libpipewire-module-link-factory
|
||||||
|
args = {
|
||||||
|
#allow.link.passive = false
|
||||||
|
}
|
||||||
|
condition = [ { module.link-factory = !false } ]
|
||||||
|
}
|
||||||
|
|
||||||
|
# Provides factories to make session manager objects.
|
||||||
|
{ name = libpipewire-module-session-manager
|
||||||
|
condition = [ { module.session-manager = !false } ]
|
||||||
|
}
|
||||||
|
|
||||||
|
# Use libcanberra to play X11 Bell
|
||||||
|
{ name = libpipewire-module-x11-bell
|
||||||
|
args = {
|
||||||
|
#sink.name = "@DEFAULT_SINK@"
|
||||||
|
#sample.name = "bell-window-system"
|
||||||
|
#x11.display = null
|
||||||
|
#x11.xauthority = null
|
||||||
|
}
|
||||||
|
flags = [ ifexists nofail ]
|
||||||
|
condition = [ { module.x11.bell = !false } ]
|
||||||
|
}
|
||||||
|
# The JACK DBus detection module. When jackdbus is started, this
|
||||||
|
# will automatically make PipeWire become a JACK client.
|
||||||
|
# use module.jackdbus-detect.args = { ... } to override the arguments.
|
||||||
|
{ name = libpipewire-module-jackdbus-detect
|
||||||
|
args = {
|
||||||
|
#jack.library = libjack.so.0
|
||||||
|
#jack.server = null
|
||||||
|
#jack.client-name = PipeWire
|
||||||
|
#jack.connect = true
|
||||||
|
#tunnel.mode = duplex # source|sink|duplex
|
||||||
|
source.props = {
|
||||||
|
#audio.channels = 2
|
||||||
|
#midi.ports = 1
|
||||||
|
#audio.position = [ FL FR ]
|
||||||
|
# extra sink properties
|
||||||
|
}
|
||||||
|
sink.props = {
|
||||||
|
#audio.channels = 2
|
||||||
|
#midi.ports = 1
|
||||||
|
#audio.position = [ FL FR ]
|
||||||
|
# extra sink properties
|
||||||
|
}
|
||||||
|
}
|
||||||
|
flags = [ ifexists nofail ]
|
||||||
|
condition = [ { module.jackdbus-detect = !false } ]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
context.objects = [
|
||||||
|
#{ factory = <factory-name>
|
||||||
|
# ( args = { <key> = <value> ... } )
|
||||||
|
# ( flags = [ ( nofail ) ] )
|
||||||
|
# ( condition = [ { <key> = <value> ... } ... ] )
|
||||||
|
#}
|
||||||
|
#
|
||||||
|
# Creates an object from a PipeWire factory with the given parameters.
|
||||||
|
# If nofail is given, errors are ignored (and no object is created).
|
||||||
|
# If condition is given, the object is created only when the context properties
|
||||||
|
# all match the match rules.
|
||||||
|
#
|
||||||
|
#{ factory = spa-node-factory args = { factory.name = videotestsrc node.name = videotestsrc node.description = videotestsrc node.param.Props = { patternType = 1 } } }
|
||||||
|
#{ factory = spa-device-factory args = { factory.name = api.jack.device foo=bar } flags = [ nofail ] }
|
||||||
|
#{ factory = spa-device-factory args = { factory.name = api.alsa.enum.udev } }
|
||||||
|
#{ factory = spa-node-factory args = { factory.name = api.alsa.seq.bridge node.name = Internal-MIDI-Bridge } }
|
||||||
|
#{ factory = adapter args = { factory.name = audiotestsrc node.name = my-test node.description = audiotestsrc node.param.Props = { live = false }} }
|
||||||
|
#{ factory = spa-node-factory args = { factory.name = api.vulkan.compute.source node.name = my-compute-source } }
|
||||||
|
|
||||||
|
# A default dummy driver. This handles nodes marked with the "node.always-process"
|
||||||
|
# property when no other driver is currently active. JACK clients need this.
|
||||||
|
{ factory = spa-node-factory
|
||||||
|
args = {
|
||||||
|
factory.name = support.node.driver
|
||||||
|
node.name = Dummy-Driver
|
||||||
|
node.group = pipewire.dummy
|
||||||
|
node.sync-group = sync.dummy
|
||||||
|
priority.driver = 200000
|
||||||
|
#clock.id = monotonic # realtime | tai | monotonic-raw | boottime
|
||||||
|
#clock.name = "clock.system.monotonic"
|
||||||
|
}
|
||||||
|
condition = [ { factory.dummy-driver = !false } ]
|
||||||
|
}
|
||||||
|
{ factory = spa-node-factory
|
||||||
|
args = {
|
||||||
|
factory.name = support.node.driver
|
||||||
|
node.name = Freewheel-Driver
|
||||||
|
priority.driver = 190000
|
||||||
|
node.group = pipewire.freewheel
|
||||||
|
node.sync-group = sync.dummy
|
||||||
|
node.freewheel = true
|
||||||
|
#freewheel.wait = 10
|
||||||
|
}
|
||||||
|
condition = [ { factory.freewheel-driver = !false } ]
|
||||||
|
}
|
||||||
|
|
||||||
|
# This creates a new Source node. It will have input ports
|
||||||
|
# that you can link, to provide audio for this source.
|
||||||
|
#{ factory = adapter
|
||||||
|
# args = {
|
||||||
|
# factory.name = support.null-audio-sink
|
||||||
|
# node.name = "my-mic"
|
||||||
|
# node.description = "Microphone"
|
||||||
|
# media.class = "Audio/Source/Virtual"
|
||||||
|
# audio.position = "FL,FR"
|
||||||
|
# monitor.passthrough = true
|
||||||
|
# }
|
||||||
|
#}
|
||||||
|
|
||||||
|
# This creates a single PCM source device for the given
|
||||||
|
# alsa device path hw:0. You can change source to sink
|
||||||
|
# to make a sink in the same way.
|
||||||
|
#{ factory = adapter
|
||||||
|
# args = {
|
||||||
|
# factory.name = api.alsa.pcm.source
|
||||||
|
# node.name = "alsa-source"
|
||||||
|
# node.description = "PCM Source"
|
||||||
|
# media.class = "Audio/Source"
|
||||||
|
# api.alsa.path = "hw:0"
|
||||||
|
# api.alsa.period-size = 1024
|
||||||
|
# api.alsa.headroom = 0
|
||||||
|
# api.alsa.disable-mmap = false
|
||||||
|
# api.alsa.disable-batch = false
|
||||||
|
# audio.format = "S16LE"
|
||||||
|
# audio.rate = 48000
|
||||||
|
# audio.channels = 2
|
||||||
|
# audio.position = "FL,FR"
|
||||||
|
# }
|
||||||
|
#}
|
||||||
|
|
||||||
|
# Use the metadata factory to create metadata and some default values.
|
||||||
|
#{ factory = metadata
|
||||||
|
# args = {
|
||||||
|
# metadata.name = my-metadata
|
||||||
|
# metadata.values = [
|
||||||
|
# { key = default.audio.sink value = { name = somesink } }
|
||||||
|
# { key = default.audio.source value = { name = somesource } }
|
||||||
|
# ]
|
||||||
|
# }
|
||||||
|
#}
|
||||||
|
]
|
||||||
|
|
||||||
|
context.exec = [
|
||||||
|
#{ path = <program-name>
|
||||||
|
# ( args = "<arguments>" | [ <arg1> <arg2> ... ] )
|
||||||
|
# ( condition = [ { <key> = <value> ... } ... ] )
|
||||||
|
#}
|
||||||
|
#
|
||||||
|
# Execute the given program with arguments.
|
||||||
|
# If condition is given, the program is executed only when the context
|
||||||
|
# properties all match the match rules.
|
||||||
|
#
|
||||||
|
# You can optionally start the session manager here,
|
||||||
|
# but it is better to start it as a systemd service.
|
||||||
|
# Run the session manager with -h for options.
|
||||||
|
#
|
||||||
|
#{ path = "/usr/bin/pipewire-media-session" args = ""
|
||||||
|
# condition = [ { exec.session-manager = !false } ] }
|
||||||
|
#
|
||||||
|
# You can optionally start the pulseaudio-server here as well
|
||||||
|
# but it is better to start it as a systemd service.
|
||||||
|
# It can be interesting to start another daemon here that listens
|
||||||
|
# on another address with the -a option (eg. -a tcp:4713).
|
||||||
|
#
|
||||||
|
#{ path = "/usr/bin/pipewire" args = [ "-c" "pipewire-pulse.conf" ]
|
||||||
|
# condition = [ { exec.pipewire-pulse = !false } ] }
|
||||||
|
]
|
||||||
222
home/oli/.config/sway/config
Normal file
222
home/oli/.config/sway/config
Normal file
|
|
@ -0,0 +1,222 @@
|
||||||
|
# Mod1 = Alt
|
||||||
|
# Mod4 = Windows key
|
||||||
|
set $mod Mod1
|
||||||
|
set $left h
|
||||||
|
set $down j
|
||||||
|
set $up k
|
||||||
|
set $right l
|
||||||
|
set $term alacritty
|
||||||
|
set $browser firefox
|
||||||
|
set $menu wmenu-run -i -p '>' -l 4 -f "BerkeleyMono Nerd Font Mono 12"
|
||||||
|
set $file thunar
|
||||||
|
|
||||||
|
set $ws1 1 web
|
||||||
|
set $ws2 2 term
|
||||||
|
set $ws3 3 file
|
||||||
|
set $ws4 4 blog
|
||||||
|
set $ws5 5 media
|
||||||
|
set $ws7 6 other
|
||||||
|
|
||||||
|
default_border pixel 5
|
||||||
|
default_floating_border pixel 5
|
||||||
|
gaps inner 8
|
||||||
|
# Hide border when only 1 window
|
||||||
|
hide_edge_borders smart
|
||||||
|
|
||||||
|
set {
|
||||||
|
$bg #243936
|
||||||
|
#$focused #ffde21
|
||||||
|
$text #c0c8c6
|
||||||
|
$active #66ac9f
|
||||||
|
}
|
||||||
|
# border background text indicator childborder
|
||||||
|
client.focused $bg $bg $text $active $active
|
||||||
|
|
||||||
|
output * bg ~/data/local/wallpaper/abstract.jpg fill
|
||||||
|
# output HDMI-A-1 resolution 1920x1080 position 1920,0
|
||||||
|
# You can get the names of your outputs by running: swaymsg -t get_outputs
|
||||||
|
|
||||||
|
# BSP-style window tiling
|
||||||
|
exec_always autotiling
|
||||||
|
|
||||||
|
# This will lock your screen after 300 seconds of inactivity, then turn off
|
||||||
|
# your displays after another 300 seconds, and turn your screens back on when
|
||||||
|
# resumed. It will also lock your screen before your computer goes to sleep.
|
||||||
|
exec swayidle -w \
|
||||||
|
timeout 300 'swaylock -f -c 000000' \
|
||||||
|
timeout 330 'swaymsg "output * power off"' resume 'swaymsg "output * power on"' \
|
||||||
|
before-sleep 'swaylock -f -c 000000'
|
||||||
|
|
||||||
|
# Clipboard manager
|
||||||
|
#exec wl-paste -t text --watch clipman store --no-persist
|
||||||
|
exec wl-paste --watch cliphist store
|
||||||
|
bindsym $mod+ctrl+v exec cliphist list | wmenu -l 3 | cliphist decode | wl-copy && wl-paste --no-newline | xargs -I {} wtype {}
|
||||||
|
|
||||||
|
# Notifications
|
||||||
|
|
||||||
|
### Input configuration
|
||||||
|
input type:keyboard {
|
||||||
|
xkb_layout "us"
|
||||||
|
xkb_variant intl
|
||||||
|
repeat_delay 250
|
||||||
|
repeat_rate 50
|
||||||
|
}
|
||||||
|
|
||||||
|
input type:pointer {
|
||||||
|
#accel_profile "flat" # disable mouse acceleration (enabled by default; to set it manually, use "adaptive" instead of "flat")
|
||||||
|
accel_profile "adaptive" # disable mouse acceleration (enabled by default; to set it manually, use "adaptive" instead of "flat")
|
||||||
|
pointer_accel -0.85 # set mouse sensitivity (between -1 and 1)
|
||||||
|
}
|
||||||
|
|
||||||
|
# Read `man 5 sway-input` for more information about this section.
|
||||||
|
|
||||||
|
### Key bindings
|
||||||
|
bindsym $mod+Return exec $term
|
||||||
|
bindsym $mod+G exec $browser
|
||||||
|
bindsym $mod+T exec $file
|
||||||
|
|
||||||
|
# Kill focused window
|
||||||
|
bindsym $mod+Shift+q kill
|
||||||
|
|
||||||
|
# Start your launcher
|
||||||
|
bindsym $mod+d exec $menu
|
||||||
|
|
||||||
|
# Drag floating windows by holding down $mod and left mouse button.
|
||||||
|
# Resize them with right mouse button + $mod.
|
||||||
|
# Despite the name, also works for non-floating windows.
|
||||||
|
# Change normal to inverse to use left mouse button for resizing and right
|
||||||
|
# mouse button for dragging.
|
||||||
|
floating_modifier $mod normal
|
||||||
|
|
||||||
|
# Reload the configuration file
|
||||||
|
bindsym $mod+Shift+c reload
|
||||||
|
|
||||||
|
# Exit sway (logs you out of your Wayland session)
|
||||||
|
bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit'
|
||||||
|
|
||||||
|
# Lock screen
|
||||||
|
bindsym $mod+o exec 'swaylock -f'
|
||||||
|
# Focus window
|
||||||
|
bindsym $mod+$left focus left
|
||||||
|
bindsym $mod+$down focus down
|
||||||
|
bindsym $mod+$up focus up
|
||||||
|
bindsym $mod+$right focus right
|
||||||
|
bindsym $mod+Left focus left
|
||||||
|
bindsym $mod+Down focus down
|
||||||
|
bindsym $mod+Up focus up
|
||||||
|
bindsym $mod+Right focus right
|
||||||
|
|
||||||
|
# Move focused window
|
||||||
|
bindsym $mod+Shift+$left move left
|
||||||
|
bindsym $mod+Shift+$down move down
|
||||||
|
bindsym $mod+Shift+$up move up
|
||||||
|
bindsym $mod+Shift+$right move right
|
||||||
|
bindsym $mod+Shift+Left move left
|
||||||
|
bindsym $mod+Shift+Down move down
|
||||||
|
bindsym $mod+Shift+Up move up
|
||||||
|
bindsym $mod+Shift+Right move right
|
||||||
|
|
||||||
|
# Switch workspace
|
||||||
|
bindsym $mod+1 workspace $ws1
|
||||||
|
bindsym $mod+2 workspace $ws2
|
||||||
|
bindsym $mod+3 workspace $ws3
|
||||||
|
bindsym $mod+4 workspace $ws4
|
||||||
|
bindsym $mod+5 workspace $ws5
|
||||||
|
bindsym $mod+6 workspace $ws6
|
||||||
|
bindsym $mod+7 workspace $ws7
|
||||||
|
# Move focused container to workspace
|
||||||
|
bindsym $mod+Shift+1 move container to workspace $ws1
|
||||||
|
bindsym $mod+Shift+2 move container to workspace $ws2
|
||||||
|
bindsym $mod+Shift+3 move container to workspace $ws3
|
||||||
|
bindsym $mod+Shift+4 move container to workspace $ws4
|
||||||
|
bindsym $mod+Shift+5 move container to workspace $ws5
|
||||||
|
bindsym $mod+Shift+6 move container to workspace $ws6
|
||||||
|
bindsym $mod+Shift+7 move container to workspace $ws7
|
||||||
|
bindsym ctrl+alt+shift+n workspace next
|
||||||
|
bindsym ctrl+alt+shift+p workspace prev
|
||||||
|
|
||||||
|
# LAYOUT
|
||||||
|
# You can "split" the current object of your focus with
|
||||||
|
# $mod+b or $mod+v, for horizontal and vertical splits
|
||||||
|
# respectively.
|
||||||
|
bindsym $mod+b splith
|
||||||
|
bindsym $mod+v splitv
|
||||||
|
|
||||||
|
# Switch the current container between different layout styles
|
||||||
|
#bindsym $mod+s layout stacking
|
||||||
|
#bindsym $mod+w layout tabbed
|
||||||
|
#bindsym $mod+e layout toggle split
|
||||||
|
|
||||||
|
# Make the current focus fullscreen
|
||||||
|
bindsym $mod+f fullscreen
|
||||||
|
|
||||||
|
# Zen mode
|
||||||
|
bindsym $mod+z floating toggle; resize set width 1750 height 1000; move position center
|
||||||
|
|
||||||
|
# Toggle the current focus between tiling and floating mode
|
||||||
|
bindsym $mod+Shift+space floating toggle
|
||||||
|
|
||||||
|
# Swap focus between the tiling area and the floating area
|
||||||
|
bindsym $mod+space focus mode_toggle
|
||||||
|
|
||||||
|
# Move focus to the parent container
|
||||||
|
# XXX: what is this for
|
||||||
|
#bindsym $mod+a focus parent
|
||||||
|
|
||||||
|
# Sway has a "scratchpad", which is a bag of holding for windows.
|
||||||
|
# You can send windows there and get them back later.
|
||||||
|
# Move the currently focused window to the scratchpad
|
||||||
|
bindsym $mod+Shift+minus move scratchpad
|
||||||
|
|
||||||
|
# Show the next scratchpad window or hide the focused scratchpad window.
|
||||||
|
# If there are multiple scratchpad windows, this command cycles through them.
|
||||||
|
bindsym $mod+minus scratchpad show
|
||||||
|
|
||||||
|
bindsym ctrl+alt+shift+a resize shrink width 10px
|
||||||
|
bindsym ctrl+alt+shift+s resize grow height 10px
|
||||||
|
bindsym ctrl+alt+shift+w resize shrink height 10px
|
||||||
|
bindsym ctrl+alt+shift+d resize grow width 10px
|
||||||
|
|
||||||
|
# Resizing containers:
|
||||||
|
mode "RESIZE" {
|
||||||
|
bindsym $left resize shrink width 80px
|
||||||
|
bindsym $down resize grow height 20px
|
||||||
|
bindsym $up resize shrink height 20px
|
||||||
|
bindsym $right resize grow width 80px
|
||||||
|
# Return to default mode
|
||||||
|
bindsym Return mode "default"
|
||||||
|
bindsym Escape mode "default"
|
||||||
|
}
|
||||||
|
bindsym ctrl+alt+shift+r mode "RESIZE"
|
||||||
|
|
||||||
|
# Volume control with PipeWire
|
||||||
|
# https://github.com/xkbcommon/libxkbcommon/blob/master/include/xkbcommon/xkbcommon-keysyms.h
|
||||||
|
# Get the device ID with `wpctl status` or use @DEFAULT_AUDIO_SINK@
|
||||||
|
bindsym --locked XF86AudioMute exec wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
|
||||||
|
bindsym --locked XF86AudioLowerVolume exec wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.01-
|
||||||
|
bindsym --locked XF86AudioRaiseVolume exec wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.01+
|
||||||
|
# FIXME: https://wiki.archlinux.org/title/MPRIS
|
||||||
|
# bindsym --locked XF86AudioPause exec wpctl set-mute 48 toggle
|
||||||
|
|
||||||
|
# Screenshot
|
||||||
|
bindsym Mod4+Shift+4 exec grimshot --notify save area
|
||||||
|
bindsym Mod4+Shift+Space exec grimshot --notify save window
|
||||||
|
|
||||||
|
# man 5 sway-bar
|
||||||
|
bar {
|
||||||
|
position bottom
|
||||||
|
font BerkeleyMono Nerd Font Mono
|
||||||
|
status_command ~/.config/sway/status.sh
|
||||||
|
|
||||||
|
colors {
|
||||||
|
statusline #869795
|
||||||
|
background #ffffff00
|
||||||
|
inactive_workspace #32323200 #32323200 #6c7e7c
|
||||||
|
focused_workspace #2d4844 #2d4844 #d5dad9
|
||||||
|
urgent_workspace #b4b479 #b4b479 #121c1b
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for_window [title="galculator"] floating enable
|
||||||
|
|
||||||
|
include /etc/sway/config.d/*
|
||||||
184
home/oli/.config/sway/status.sh
Executable file
184
home/oli/.config/sway/status.sh
Executable file
|
|
@ -0,0 +1,184 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# Status bar for Sway
|
||||||
|
# Needs a .env.homeassistant with an API token in ~/.config/sway/.env.homeassistant
|
||||||
|
# XXX is it possible to display a motd, but keep it longer than the rest in here?
|
||||||
|
# TODO:
|
||||||
|
# - HA optimize API calls: https://community.home-assistant.io/t/get-limited-number-of-states-entities-when-using-api-states/830323
|
||||||
|
# man 7 swaybar-protocol
|
||||||
|
|
||||||
|
homeassistant_url="http://10.7.1.11:8123/api/states"
|
||||||
|
|
||||||
|
common() {
|
||||||
|
bg_ok="#66ac9f"
|
||||||
|
bg_ok_trans="#00000000"
|
||||||
|
text_dark="#36454f"
|
||||||
|
text_light="#c0c8c6"
|
||||||
|
warn1="#facc15"
|
||||||
|
warn2="#cc8d22"
|
||||||
|
crit="#710f3d"
|
||||||
|
. ~/.config/sway/.env.homeassistant
|
||||||
|
echo -n "{"
|
||||||
|
echo -n "\"separator_block_width\":10,"
|
||||||
|
echo -n "\"separator\":false,"
|
||||||
|
echo -n "\"color\":\"$fg\","
|
||||||
|
echo -n "\"background\":\"$bg\","
|
||||||
|
echo -n "\"name\":\"$name\","
|
||||||
|
echo -n "\"full_text\":\" $stat\","
|
||||||
|
echo -n "},"
|
||||||
|
}
|
||||||
|
|
||||||
|
temp_cpu() {
|
||||||
|
local name="cpu"
|
||||||
|
local cpu=$(expr $(cat /sys/class/thermal/thermal_zone2/temp) / 1000)
|
||||||
|
if [[ $(echo "$cpu >= 55" | bc -l ) == "1" ]] && [[ $(echo "$cpu < 65" | bc -l ) == "1" ]]; then
|
||||||
|
local bg=$warn1
|
||||||
|
local fg=$text_dark
|
||||||
|
elif [[ $(echo "$cpu >= 65" | bc -l ) == "1" ]] && [[ $(echo "$cpu < 75" | bc -l ) == "1" ]]; then
|
||||||
|
local bg=$warn2
|
||||||
|
local fg=$text_dark
|
||||||
|
elif [[ $(echo "$cpu >= 75" | bc -l ) == "1" ]]; then
|
||||||
|
local bg=$crit
|
||||||
|
local fg=$text_light
|
||||||
|
else
|
||||||
|
local bg=$bg_ok_trans
|
||||||
|
local fg=$text_light
|
||||||
|
fi
|
||||||
|
icon=""
|
||||||
|
local stat=$icon\ $cpu\ °C" "
|
||||||
|
common
|
||||||
|
}
|
||||||
|
|
||||||
|
mem(){
|
||||||
|
local name="mem"
|
||||||
|
local memused=$(free | grep Mem | awk '{printf "%.1f\n", $3/$2 * 100.0}')
|
||||||
|
local memproc=$(basename "$(ps --no-headers -A --sort -rss -o cmd | head -1 | awk {'print $1'})")
|
||||||
|
if [[ $(echo "$memused >= 50" | bc -l ) == "1" ]] && [[ $(echo "$memused < 60" | bc -l ) == "1" ]]; then
|
||||||
|
local bg=$warn1
|
||||||
|
local fg=$text_dark
|
||||||
|
elif [[ $(echo "$memused >= 60" | bc -l ) == "1" ]] && [[ $(echo "$memused < 70" | bc -l ) == "1" ]]; then
|
||||||
|
local bg=$warn2
|
||||||
|
local fg=$text_dark
|
||||||
|
elif [[ $(echo "$memused >= 70" | bc -l ) == "1" ]]; then
|
||||||
|
local bg=$crit
|
||||||
|
local fg=$text_light
|
||||||
|
else
|
||||||
|
local bg=$bg_ok_trans
|
||||||
|
local fg=$text_light
|
||||||
|
fi
|
||||||
|
icon=""
|
||||||
|
local stat=$icon\ $memused\ %\ [$memproc]" "
|
||||||
|
common
|
||||||
|
}
|
||||||
|
|
||||||
|
wifi() {
|
||||||
|
local name="wifi"
|
||||||
|
# orig = negative number
|
||||||
|
local wifidbm_orig=$(iwctl station wlan0 show | awk '/[[:space:]]RSSI/{print $2}')
|
||||||
|
local wifidbm=$((wifidbm_orig * -1))
|
||||||
|
if [[ $(echo "$wifidbm >= 50" | bc -l ) == "1" ]] && [[ $(echo "$wifidbm < 60" | bc -l ) == "1" ]]; then
|
||||||
|
local bg=$warn1
|
||||||
|
local fg=$text_dark
|
||||||
|
elif [[ $(echo "$wifidbm >= 60" | bc -l ) == "1" ]] && [[ $(echo "$wifidbm < 70" | bc -l ) == "1" ]]; then
|
||||||
|
local bg=$warn2
|
||||||
|
local fg=$text_dark
|
||||||
|
elif [[ $(echo "$wifidbm >= 70" | bc -l ) == "1" ]]; then
|
||||||
|
local bg=$crit
|
||||||
|
local fg=$text_light
|
||||||
|
else
|
||||||
|
local bg=$bg_ok_trans
|
||||||
|
local fg=$text_light
|
||||||
|
fi
|
||||||
|
icon=""
|
||||||
|
local stat=$icon\ -$wifidbm\ dBm" "
|
||||||
|
common
|
||||||
|
}
|
||||||
|
|
||||||
|
mydate() {
|
||||||
|
local bg=$bg_ok_trans
|
||||||
|
local fg=$bg_ok
|
||||||
|
local name="id_time"
|
||||||
|
local icon=""
|
||||||
|
local stat=$icon\ $(date +'%A, %d %B %R %Z')
|
||||||
|
common
|
||||||
|
}
|
||||||
|
|
||||||
|
loadavg() {
|
||||||
|
local bg=$bg_ok_trans
|
||||||
|
local fg=$text_light
|
||||||
|
local name="loadavg"
|
||||||
|
icon=""
|
||||||
|
local stat=$icon\ $(awk {'print $1,$2,$3'} /proc/loadavg)
|
||||||
|
common
|
||||||
|
}
|
||||||
|
|
||||||
|
temp_indoor() {
|
||||||
|
local bg=$bg_ok_trans
|
||||||
|
local fg=$text_light
|
||||||
|
local name="temp_indoor"
|
||||||
|
local ha_indoor=$(curl -s -H "Authorization: Bearer $ha_token" -H "Content-Type: application/json" $homeassistant_url/sensor.vindstyrka_oli_temperature | jq -r '.state')
|
||||||
|
icon=""
|
||||||
|
local stat=$icon\ $ha_indoor\ °C" "
|
||||||
|
common
|
||||||
|
}
|
||||||
|
|
||||||
|
humid_indoor() {
|
||||||
|
local bg=$bg_ok_trans
|
||||||
|
local fg=$text_light
|
||||||
|
local name="temp_indoor"
|
||||||
|
local ha_indoor=$(curl -s -H "Authorization: Bearer $ha_token" -H "Content-Type: application/json" $homeassistant_url/sensor.vindstyrka_oli_humidity | jq -r '.state')
|
||||||
|
icon=""
|
||||||
|
local stat=$icon\ $ha_indoor\ %" "
|
||||||
|
common
|
||||||
|
}
|
||||||
|
|
||||||
|
powerdraw() {
|
||||||
|
local bg=$bg_ok_trans
|
||||||
|
local fg=$text_light
|
||||||
|
local name="temp_indoor"
|
||||||
|
local ha_indoor=$(curl -s -H "Authorization: Bearer $ha_token" -H "Content-Type: application/json" $homeassistant_url/sensor.inspelning_oli_power | jq -r '.state')
|
||||||
|
icon=""
|
||||||
|
local stat=$icon\ $ha_indoor\ W" "
|
||||||
|
common
|
||||||
|
}
|
||||||
|
|
||||||
|
audio_volume() {
|
||||||
|
local name="audio"
|
||||||
|
local volume=$(wpctl get-volume @DEFAULT_AUDIO_SINK@ | awk {'print $NF*100'})
|
||||||
|
if [[ $(echo "$volume >= 50" | bc -l ) == "1" ]] && [[ $(echo "$volume < 60" | bc -l ) == "1" ]]; then
|
||||||
|
local bg=$warn1
|
||||||
|
local fg=$text_dark
|
||||||
|
elif [[ $(echo "$volume >= 60" | bc -l ) == "1" ]] && [[ $(echo "$volume < 70" | bc -l ) == "1" ]]; then
|
||||||
|
local bg=$warn2
|
||||||
|
local fg=$text_dark
|
||||||
|
elif [[ $(echo "$volume >= 70" | bc -l ) == "1" ]]; then
|
||||||
|
local bg=$crit
|
||||||
|
local fg=$text_light
|
||||||
|
else
|
||||||
|
local bg=$bg_ok_trans
|
||||||
|
local fg=$text_light
|
||||||
|
fi
|
||||||
|
icon=""
|
||||||
|
local stat=$icon\ $volume\ %" "
|
||||||
|
common
|
||||||
|
}
|
||||||
|
|
||||||
|
# header
|
||||||
|
echo '{ "version": 1 , "click_events":false}'
|
||||||
|
echo '[[],'
|
||||||
|
|
||||||
|
while :
|
||||||
|
do
|
||||||
|
echo -n "["
|
||||||
|
mydate
|
||||||
|
loadavg
|
||||||
|
temp_indoor
|
||||||
|
humid_indoor
|
||||||
|
powerdraw
|
||||||
|
temp_cpu
|
||||||
|
mem
|
||||||
|
wifi
|
||||||
|
audio_volume
|
||||||
|
echo -n "],"
|
||||||
|
sleep 5
|
||||||
|
done
|
||||||
268
home/oli/.config/swayimg/config
Normal file
268
home/oli/.config/swayimg/config
Normal file
|
|
@ -0,0 +1,268 @@
|
||||||
|
# Any of these options can be overridden using the --config argument
|
||||||
|
# on the command line, for instance:
|
||||||
|
# $ swayimg --config="general.mode=gallery"
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# General configuration
|
||||||
|
################################################################################
|
||||||
|
[general]
|
||||||
|
# Mode at startup (viewer/slideshow/gallery)
|
||||||
|
mode = viewer
|
||||||
|
# Window size (fullscreen/image, or absolute size)
|
||||||
|
size = 1280,720
|
||||||
|
# Sway/Hyprland only: Window position (auto or absolute coordinates, e.g. 10,20)
|
||||||
|
position = auto
|
||||||
|
# Sway/Hyprland only: create floating window above the currently focused one
|
||||||
|
overlay = no
|
||||||
|
# Use window decoration (yes/no)
|
||||||
|
decoration = no
|
||||||
|
# Action performed by SIGUSR1 signal (same format as for key bindings)
|
||||||
|
sigusr1 = reload
|
||||||
|
# Action performed by SIGUSR2 signal (same format as for key bindings)
|
||||||
|
sigusr2 = next_file
|
||||||
|
# Application ID and window class name
|
||||||
|
app_id = swayimg
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Viewer mode configuration
|
||||||
|
################################################################################
|
||||||
|
[viewer]
|
||||||
|
# Window background color (auto/extend/mirror/RGBA)
|
||||||
|
window = #00000000
|
||||||
|
# Background for transparent images (grid/RGBA)
|
||||||
|
transparency = grid
|
||||||
|
# Default image scale (optimal/width/height/fit/fill/real/keep)
|
||||||
|
scale = optimal
|
||||||
|
# Initial image position on the window (center/top/bottom/free/...)
|
||||||
|
position = center
|
||||||
|
# Anti-aliasing mode (none/box/bilinear/bicubic/mks13)
|
||||||
|
antialiasing = mks13
|
||||||
|
# Loop image list: jump to first image when end of list is reached (yes/no)
|
||||||
|
loop = yes
|
||||||
|
# Number of previously viewed images to store in cache
|
||||||
|
history = 1
|
||||||
|
# Number of preloaded images (read ahead)
|
||||||
|
preload = 1
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Slideshow mode configuration
|
||||||
|
################################################################################
|
||||||
|
[slideshow]
|
||||||
|
# Slideshow image display time (seconds)
|
||||||
|
time = 3
|
||||||
|
# Window background color (auto/extend/mirror/RGBA)
|
||||||
|
window = auto
|
||||||
|
# Background for transparent images (grid/RGBA)
|
||||||
|
transparency = #000000ff
|
||||||
|
# Default image scale (optimal/width/height/fit/fill/real)
|
||||||
|
scale = fit
|
||||||
|
# Initial image position on the window (center/top/bottom/free/...)
|
||||||
|
position = center
|
||||||
|
# Anti-aliasing mode (none/box/bilinear/bicubic/mks13)
|
||||||
|
antialiasing = mks13
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Gallery mode configuration
|
||||||
|
################################################################################
|
||||||
|
[gallery]
|
||||||
|
# Height and width of each thumbnail (pixels)
|
||||||
|
size = 200
|
||||||
|
# Max number of invisible thumbnails stored in memory cache
|
||||||
|
cache = 500
|
||||||
|
# Load not only visible but also adjacent thumbnails
|
||||||
|
preload = yes
|
||||||
|
# Enable/disable storing thumbnails in persistent storage (yes/no)
|
||||||
|
pstore = yes
|
||||||
|
# Fill the entire tile with thumbnail (yes/no)
|
||||||
|
fill = yes
|
||||||
|
# Anti-aliasing mode for thumbnails (none/box/bilinear/bicubic/mks13)
|
||||||
|
antialiasing = mks13
|
||||||
|
# Background color of the window (RGBA)
|
||||||
|
window = #00000000
|
||||||
|
# Background color of non-selected tiles (RGBA)
|
||||||
|
background = #202020ff
|
||||||
|
# Background color of the selected tile (RGBA)
|
||||||
|
select = #404040ff
|
||||||
|
# Border color of the selected tile (RGBA)
|
||||||
|
border = #000000ff
|
||||||
|
# Shadow color of the selected tile (RGBA)
|
||||||
|
shadow = #000000ff
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Image list configuration
|
||||||
|
################################################################################
|
||||||
|
[list]
|
||||||
|
# Default order (none/alpha/numeric/mtime/size/random)
|
||||||
|
order = alpha
|
||||||
|
# Reverse order (yes/no)
|
||||||
|
reverse = no
|
||||||
|
# Read directories recursively (yes/no)
|
||||||
|
recursive = no
|
||||||
|
# Add files from the same directory as the first file (yes/no)
|
||||||
|
all = no
|
||||||
|
# Enable file system monitoring for adding new images to the list (yes/no)
|
||||||
|
fsmon = yes
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Font configuration
|
||||||
|
################################################################################
|
||||||
|
[font]
|
||||||
|
# Font name
|
||||||
|
name = monospace
|
||||||
|
# Font size (pt)
|
||||||
|
size = 14
|
||||||
|
# Font color (RGBA)
|
||||||
|
color = #ccccccff
|
||||||
|
# Shadow color (RGBA)
|
||||||
|
shadow = #000000d0
|
||||||
|
# Background color (RGBA)
|
||||||
|
background = #00000000
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Image meta info scheme (format, size, EXIF, etc.)
|
||||||
|
################################################################################
|
||||||
|
[info]
|
||||||
|
# Show on startup (yes/no)
|
||||||
|
show = no
|
||||||
|
# Timeout to hide info (seconds, 0 to always show)
|
||||||
|
info_timeout = 0
|
||||||
|
# Timeout to hide status message (seconds)
|
||||||
|
status_timeout = 3
|
||||||
|
|
||||||
|
# Display scheme for viewer mode (position = content)
|
||||||
|
[info.viewer]
|
||||||
|
top_left = +name,+format,+filesize,+imagesize,+exif
|
||||||
|
top_right = index
|
||||||
|
bottom_left = scale,frame
|
||||||
|
bottom_right = status
|
||||||
|
|
||||||
|
# Display scheme for slideshow mode (position = content)
|
||||||
|
[info.slideshow]
|
||||||
|
top_left = none
|
||||||
|
top_right = none
|
||||||
|
bottom_left = none
|
||||||
|
bottom_right = dir,status
|
||||||
|
|
||||||
|
# Display scheme for gallery mode (position = content)
|
||||||
|
[info.gallery]
|
||||||
|
top_left = none
|
||||||
|
top_right = index
|
||||||
|
bottom_left = none
|
||||||
|
bottom_right = name,status
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Viewer mode key binding configuration: key = action [parameters]
|
||||||
|
################################################################################
|
||||||
|
[keys.viewer]
|
||||||
|
F1 = help
|
||||||
|
Home = first_file
|
||||||
|
End = last_file
|
||||||
|
Prior = prev_file
|
||||||
|
Next = next_file
|
||||||
|
Space = next_file
|
||||||
|
Shift+r = rand_file
|
||||||
|
Shift+d = prev_dir
|
||||||
|
d = next_dir
|
||||||
|
Shift+o = prev_frame
|
||||||
|
o = next_frame
|
||||||
|
c = skip_file
|
||||||
|
s = mode slideshow
|
||||||
|
n = animation
|
||||||
|
f = fullscreen
|
||||||
|
Return = mode gallery
|
||||||
|
g = mode gallery
|
||||||
|
Left = prev_file
|
||||||
|
Right = next_file
|
||||||
|
Up = step_up 10
|
||||||
|
Down = step_down 10
|
||||||
|
Equal = zoom +10
|
||||||
|
Plus = zoom +10
|
||||||
|
Minus = zoom -10
|
||||||
|
w = zoom width
|
||||||
|
Shift+w = zoom height
|
||||||
|
z = zoom fit
|
||||||
|
Shift+z = zoom fill
|
||||||
|
0 = zoom real
|
||||||
|
BackSpace = zoom optimal
|
||||||
|
j = prev_file
|
||||||
|
k = next_file
|
||||||
|
Alt+s = zoom
|
||||||
|
bracketleft = rotate_left
|
||||||
|
bracketright = rotate_right
|
||||||
|
m = flip_vertical
|
||||||
|
Shift+m = flip_horizontal
|
||||||
|
a = antialiasing
|
||||||
|
r = reload
|
||||||
|
i = info
|
||||||
|
Shift+Delete = exec rm -f '%' && echo "File removed: %"; skip_file
|
||||||
|
Escape = exit
|
||||||
|
q = exit
|
||||||
|
# Mouse related
|
||||||
|
ScrollLeft = step_right 5
|
||||||
|
ScrollRight = step_left 5
|
||||||
|
ScrollUp = prev_file
|
||||||
|
ScrollDown = next_file
|
||||||
|
Ctrl+ScrollUp = zoom +10
|
||||||
|
Ctrl+ScrollDown = zoom -10
|
||||||
|
Shift+ScrollUp = prev_file
|
||||||
|
Shift+ScrollDown = next_file
|
||||||
|
Alt+ScrollUp = prev_frame
|
||||||
|
Alt+ScrollDown = next_frame
|
||||||
|
MouseLeft = drag
|
||||||
|
MouseSide = prev_file
|
||||||
|
MouseExtra = next_file
|
||||||
|
MouseRight = info
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Slideshow mode key binding configuration: key = action [parameters]
|
||||||
|
################################################################################
|
||||||
|
[keys.slideshow]
|
||||||
|
F1 = help
|
||||||
|
Home = first_file
|
||||||
|
End = last_file
|
||||||
|
Prior = prev_file
|
||||||
|
Next = next_file
|
||||||
|
Shift+r = rand_file
|
||||||
|
Shift+d = prev_dir
|
||||||
|
d = next_dir
|
||||||
|
Space = pause
|
||||||
|
i = info
|
||||||
|
f = fullscreen
|
||||||
|
Return = mode
|
||||||
|
Escape = exit
|
||||||
|
q = exit
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Gallery mode key binding configuration: key = action [parameters]
|
||||||
|
################################################################################
|
||||||
|
[keys.gallery]
|
||||||
|
F1 = help
|
||||||
|
Home = first_file
|
||||||
|
End = last_file
|
||||||
|
Left = step_left
|
||||||
|
Right = step_right
|
||||||
|
Up = step_up
|
||||||
|
Down = step_down
|
||||||
|
Prior = page_up
|
||||||
|
Next = page_down
|
||||||
|
c = skip_file
|
||||||
|
s = mode slideshow
|
||||||
|
f = fullscreen
|
||||||
|
Return = mode viewer
|
||||||
|
a = antialiasing
|
||||||
|
r = reload
|
||||||
|
i = info
|
||||||
|
Equal = thumb +20
|
||||||
|
Plus = thumb +20
|
||||||
|
Minus = thumb -20
|
||||||
|
Shift+Delete = exec rm -f '%' && echo "File removed: %"; skip_file
|
||||||
|
Escape = exit
|
||||||
|
q = exit
|
||||||
|
# Mouse related
|
||||||
|
ScrollLeft = step_right
|
||||||
|
ScrollRight = step_left
|
||||||
|
ScrollUp = step_up
|
||||||
|
ScrollDown = step_down
|
||||||
|
Ctrl+ScrollUp = thumb +20
|
||||||
|
Ctrl+ScrollDown = thumb -20
|
||||||
|
MouseLeft = mode viewer
|
||||||
5
home/oli/.config/swaylock/config
Normal file
5
home/oli/.config/swaylock/config
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
color=123524
|
||||||
|
#show-keyboard-layout
|
||||||
|
indicator-idle-visible
|
||||||
|
indicator-radius=75
|
||||||
|
indicator-thickness=45
|
||||||
7
home/oli/.config/wayvnc/config
Normal file
7
home/oli/.config/wayvnc/config
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
use_relative_paths=true
|
||||||
|
address=0.0.0.0
|
||||||
|
enable_auth=true
|
||||||
|
username=foo
|
||||||
|
password=bar
|
||||||
|
# ssh-keygen -m pem -f ~/.config/wayvnc/rsa_key.pem -t rsa -N ""
|
||||||
|
rsa_private_key_file=rsa_key.pem
|
||||||
12
home/oli/bin/alert.sh
Executable file
12
home/oli/bin/alert.sh
Executable file
|
|
@ -0,0 +1,12 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# Send notifications to mako
|
||||||
|
# Priorities: low, normal, critical
|
||||||
|
# FIXME: this totally ignores escaping strings
|
||||||
|
app=script
|
||||||
|
prio=$1
|
||||||
|
title=$2
|
||||||
|
msg=$3
|
||||||
|
|
||||||
|
notify-send -a $app -u "$prio" "$title" "$msg"
|
||||||
|
|
||||||
7
home/oli/bin/vnc.sh
Normal file
7
home/oli/bin/vnc.sh
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
export WLR_BACKENDS=headless
|
||||||
|
export WLR_RENDERER=pixman
|
||||||
|
export WLR_LIBINPUT_NO_DEVICES=1
|
||||||
|
nohup sway &
|
||||||
|
WAYLAND_DISPLAY=wayland-1 wayvnc 0.0.0.0
|
||||||
92
pkglist.txt
Normal file
92
pkglist.txt
Normal file
|
|
@ -0,0 +1,92 @@
|
||||||
|
alacritty
|
||||||
|
alsa-utils
|
||||||
|
autotiling
|
||||||
|
aws-cli-v2
|
||||||
|
base
|
||||||
|
base-devel
|
||||||
|
bc
|
||||||
|
bind
|
||||||
|
cliphist
|
||||||
|
cmake
|
||||||
|
cpio
|
||||||
|
curl
|
||||||
|
darkman
|
||||||
|
efibootmgr
|
||||||
|
fastfetch
|
||||||
|
ffmpegthumbnailer
|
||||||
|
firefox
|
||||||
|
fortune-mod
|
||||||
|
fzf
|
||||||
|
galculator
|
||||||
|
git
|
||||||
|
glow
|
||||||
|
graphviz
|
||||||
|
grim
|
||||||
|
gvfs
|
||||||
|
gvfs-smb
|
||||||
|
htop
|
||||||
|
imv
|
||||||
|
intel-ucode
|
||||||
|
iwd
|
||||||
|
jq
|
||||||
|
keepassxc
|
||||||
|
linux
|
||||||
|
linux-firmware
|
||||||
|
mako
|
||||||
|
man-db
|
||||||
|
mc
|
||||||
|
namcap
|
||||||
|
ncdu
|
||||||
|
neovim
|
||||||
|
nodejs
|
||||||
|
npm
|
||||||
|
openssh
|
||||||
|
pipewire-alsa
|
||||||
|
pipewire-audio
|
||||||
|
pkgstats
|
||||||
|
pnpm
|
||||||
|
powertop
|
||||||
|
prettyping
|
||||||
|
pulse-secure
|
||||||
|
pwgen
|
||||||
|
ripgrep
|
||||||
|
ristretto
|
||||||
|
rpmextract
|
||||||
|
signal-desktop
|
||||||
|
slurp
|
||||||
|
speedtest-cli
|
||||||
|
stress-ng
|
||||||
|
sudo
|
||||||
|
sway
|
||||||
|
sway-contrib
|
||||||
|
swaybg
|
||||||
|
swayidle
|
||||||
|
swayimg
|
||||||
|
swaylock
|
||||||
|
sysstat
|
||||||
|
thunar
|
||||||
|
thunar-archive-plugin
|
||||||
|
thunar-volman
|
||||||
|
tmux
|
||||||
|
tree
|
||||||
|
tree-sitter-cli
|
||||||
|
ttf-liberation
|
||||||
|
unzip
|
||||||
|
uv
|
||||||
|
vlc
|
||||||
|
vlc-plugin-ffmpeg
|
||||||
|
vlc-plugin-x264
|
||||||
|
w3m
|
||||||
|
wavemon
|
||||||
|
wayvnc
|
||||||
|
webkit2gtk
|
||||||
|
wget
|
||||||
|
which
|
||||||
|
whois
|
||||||
|
wmenu
|
||||||
|
wtype
|
||||||
|
xdg-desktop-portal
|
||||||
|
xfsprogs
|
||||||
|
xorg-xwayland
|
||||||
|
zsh
|
||||||
|
zsh-syntax-highlighting
|
||||||
144
root/aufii.sh
Executable file
144
root/aufii.sh
Executable file
|
|
@ -0,0 +1,144 @@
|
||||||
|
#!/bin/bash
|
||||||
|
### Automatically generate UEFI-boot entries
|
||||||
|
usage() { printf "Usage:\t aufii \naufii is a simple interactive tool to automatically generate UEFI boot entries. It generates efibootmgr commands and exports them to a small executable. You can safely run the script as it does write nothing without further confirmation. \n [-h]\t<display help>\n "; 1>&2; exit 1; }
|
||||||
|
|
||||||
|
|
||||||
|
# Compose [and execute] efibootmgr commands
|
||||||
|
while getopts :h OPT; do
|
||||||
|
case ${OPT} in
|
||||||
|
h)
|
||||||
|
usage;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
shift $((OPTIND-1))
|
||||||
|
read -r -p "Simple interactive tool to create UEFI-boot entries. No changes will be written to disk before confirmation. Start now (y/N)? " CHOICE
|
||||||
|
if [ "${CHOICE}" != "y" ]; then
|
||||||
|
printf "Exiting\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ...
|
||||||
|
echo ...
|
||||||
|
read -r -p "Please specify EFI partition: " str
|
||||||
|
|
||||||
|
# Detect partitions
|
||||||
|
#EFI=$(blkid | grep EFI | awk -F ':' '{print $1}')
|
||||||
|
|
||||||
|
EFI=${str}
|
||||||
|
EFIU=$(blkid | grep "${EFI}" | awk -F '"' '{print $2}')
|
||||||
|
|
||||||
|
## Check if drive is /dev/nvmeXXX or /dev/sdXX
|
||||||
|
if [ "${EFI:5:4}" == "nvme" ]; then
|
||||||
|
DISK=$(echo "${EFI}" | awk -F 'p' '{print $1}')
|
||||||
|
PART=$(echo "${EFI}" | awk -F 'p' '{print $2}')
|
||||||
|
else
|
||||||
|
DISK=$(echo "${EFI::-1}")
|
||||||
|
PART=$(echo "${EFI: -1}")
|
||||||
|
fi
|
||||||
|
|
||||||
|
AROT=$(lsblk| grep -w "/"|awk -F ' ' '{print $1}'|tail -c4)
|
||||||
|
ROOT=$(blkid | grep "${AROT}"| awk -F '"' '{print $2}')
|
||||||
|
SWAP=$(blkid | grep swap | awk -F '"' '{print $2}')
|
||||||
|
P_S=$(blkid | grep "${SWAP}" | awk -F ':' '{print $1}')
|
||||||
|
P_E=$(blkid | grep "${EFI}" | awk -F ':' '{print $1}')
|
||||||
|
P_R=$(blkid | grep "${ROOT}"| awk -F ':' '{print $1}')
|
||||||
|
|
||||||
|
echo ...
|
||||||
|
echo ...
|
||||||
|
read -r -p "Include microcode (amd/intel/no)? (a/i/n) " CHOICE
|
||||||
|
case ${CHOICE} in
|
||||||
|
a)
|
||||||
|
echo "Including amd-ucode"
|
||||||
|
UCODE="initrd=\amd-ucode.img"
|
||||||
|
echo ...
|
||||||
|
echo ...;;
|
||||||
|
i)
|
||||||
|
echo "Including intel-ucode"
|
||||||
|
UCODE="initrd=\intel-ucode.img"
|
||||||
|
echo ...
|
||||||
|
echo ...;;
|
||||||
|
n)
|
||||||
|
echo "Not using microcode"
|
||||||
|
echo ...
|
||||||
|
echo ...;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Choose kernel
|
||||||
|
read -r -p "Choose your kernel: linux, linux-hardened, linux-lts, linux-zen (l/h/s/z) " CHOICE
|
||||||
|
case ${CHOICE} in
|
||||||
|
l)
|
||||||
|
echo "kernel is linux"
|
||||||
|
echo ...
|
||||||
|
echo ...
|
||||||
|
KERN="";;
|
||||||
|
h)
|
||||||
|
echo "kernel is linux-hardened"
|
||||||
|
echo ...
|
||||||
|
echo ...
|
||||||
|
KERN="-hardened";;
|
||||||
|
p)
|
||||||
|
echo "kernel is linux-lts"
|
||||||
|
echo ...
|
||||||
|
echo ...
|
||||||
|
KERN="-lts";;
|
||||||
|
z)
|
||||||
|
echo "kernel is linux-zen"
|
||||||
|
echo ...
|
||||||
|
echo ...
|
||||||
|
KERN="-zen";;
|
||||||
|
esac
|
||||||
|
shift $((OPTIND-1))
|
||||||
|
|
||||||
|
# Name
|
||||||
|
read -r -p "Please label the boot entry (e.g. Arch-Linux): " str
|
||||||
|
## empty strings as boot entries may crash uefi menus
|
||||||
|
if [ ! -z "$str" -a "$str" != " " ]; then
|
||||||
|
NAME=${str}
|
||||||
|
else
|
||||||
|
printf "Setting \"Arch-Linux\" label\n\n"
|
||||||
|
NAME="Arch-Linux"
|
||||||
|
fi
|
||||||
|
|
||||||
|
shift $((OPTIND-1))
|
||||||
|
|
||||||
|
# Compose commands
|
||||||
|
FLBK=$(echo "efibootmgr --disk ${DISK} --part ${PART} --create --label \"${NAME}-Fallback\" --loader /vmlinuz-linux${KERN} --unicode 'root=UUID=${ROOT} resume=UUID=${SWAP} rw ${UCODE} initrd=\initramfs-linux${KERN}-fallback.img'")
|
||||||
|
LINX=$(echo "efibootmgr --disk ${DISK} --part ${PART} --create --label \"${NAME}\" --loader /vmlinuz-linux${KERN} --unicode 'root=UUID=${ROOT} resume=UUID=${SWAP} rw ${UCODE} initrd=\initramfs-linux${KERN}.img'")
|
||||||
|
|
||||||
|
# Prompt detected partitions and composed commands
|
||||||
|
printf "Partitions detected:\nEFI:\t${P_E}\t${EFIU}\nRoot:\t${P_R}\t${ROOT}\nSwap:\t${P_S}\t${SWAP}\n"
|
||||||
|
echo ...
|
||||||
|
echo ...
|
||||||
|
echo "Composed commands:"
|
||||||
|
echo ...
|
||||||
|
echo "${FLBK}"
|
||||||
|
echo ...
|
||||||
|
echo "${LINX}"
|
||||||
|
echo ...
|
||||||
|
echo "To add additional kernel parameters just choose the first option in the next step and edit the file before executing it."
|
||||||
|
echo ...
|
||||||
|
echo ...
|
||||||
|
# Write to disk and execute or abort
|
||||||
|
write_exec (){
|
||||||
|
echo "#!/bin/bash" > UEFI_gen${KERN}
|
||||||
|
echo "${FLBK}" >> UEFI_gen${KERN}
|
||||||
|
echo "${LINX}" >> UEFI_gen${KERN}
|
||||||
|
echo "exit 0" >> UEFI_gen${KERN}
|
||||||
|
echo "# See man efibootmgr" >> UEFI_gen${KERN}
|
||||||
|
chmod +x UEFI_gen${KERN}
|
||||||
|
printf "Commands written to file UEFI_gen${KERN}\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
read -r -p "Create executable, create and execute (sets UEFI boot entries) or abort (c/ce/a)? " CHOICE
|
||||||
|
case ${CHOICE} in
|
||||||
|
c) # write to file
|
||||||
|
write_exec;;
|
||||||
|
ce) # write to file and execute it
|
||||||
|
write_exec
|
||||||
|
./UEFI_gen${KERN}
|
||||||
|
printf "Changes written, poweroff and restart, don't reboot.\n";;
|
||||||
|
a) # abort
|
||||||
|
printf "Aborted, no changes written to disk.\n";;
|
||||||
|
esac
|
||||||
|
shift $((OPTIND-1))
|
||||||
|
exit 0
|
||||||
10
systemd_enabled.txt
Normal file
10
systemd_enabled.txt
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
UNIT FILE STATE PRESET
|
||||||
|
getty@.service enabled enabled
|
||||||
|
iwd.service enabled disabled
|
||||||
|
pulsesecure.service enabled disabled
|
||||||
|
sshd.service enabled disabled
|
||||||
|
systemd-resolved.service enabled enabled
|
||||||
|
systemd-userdbd.socket enabled enabled
|
||||||
|
remote-fs.target enabled enabled
|
||||||
|
|
||||||
|
7 unit files listed.
|
||||||
8
systemd_enabled_user.txt
Normal file
8
systemd_enabled_user.txt
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
UNIT FILE STATE PRESET
|
||||||
|
darkman.service enabled enabled
|
||||||
|
pipewire.service enabled enabled
|
||||||
|
wireplumber.service enabled enabled
|
||||||
|
p11-kit-server.socket enabled enabled
|
||||||
|
pipewire.socket enabled enabled
|
||||||
|
|
||||||
|
5 unit files listed.
|
||||||
Loading…
Add table
Add a link
Reference in a new issue