1
0
Fork 0

feat: networking, swayimg, i3blocks

- prefer ethernet over wifi
- swayimg migrate to Lua config
- i3blocks migrate wifi to network-agnostic
This commit is contained in:
Oliver Ladner 2026-06-28 12:58:39 +02:00
commit 15f8b003e0
6 changed files with 183 additions and 287 deletions

View file

@ -0,0 +1,14 @@
[Match]
Name=enp1s0
[Link]
RequiredForOnline=routable
[Network]
DHCP=yes
[DHCPv4]
RouteMetric=100
[IPv6AcceptRA]
RouteMetric=100

View file

@ -0,0 +1,14 @@
[Match]
Name=wlan0
[Link]
RequiredForOnline=routable
[Network]
DHCP=yes
[DHCPv4]
RouteMetric=600
[IPv6AcceptRA]
RouteMetric=600

View file

@ -14,9 +14,9 @@ background=#2E8B57
command=echo " <b>$(date +'%A, %d %B %R %Z')</b> "
interval=10
[wifi]
[network]
markup=pango
command=~/bin/i3blocks/wifi
command=~/bin/i3blocks/network
interval=20
[cputemp]

View file

@ -1,274 +0,0 @@
# 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
window = #58228add
# 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 = 2000
# 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
antialiasing = box
# 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
border = #FFc000ff
# Shadow color of the selected tile (RGBA)
# shadow = #000000ff
shadow = #FFc000ff
################################################################################
# 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 = yes
# 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
Shift+f = exec mv "%" ~/data/local/_move/; skip_file
################################################################################
# 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
Shift+f = exec mv "%" ~/data/local/_move/; skip_file

View file

@ -0,0 +1,135 @@
-- Show near images
swayimg.imagelist.enable_adjacent(true)
swayimg.enable_overlay(false)
swayimg.text.set_size(16)
-- swayimg.text.set_foreground(0xbb000000)
-- swayimg.text.set_foreground(0xff00aa99)
-- swayimg.text.set_background(0xbbababab)
swayimg.text.set_background(0xbb2596be)
swayimg.text.hide()
swayimg.viewer.set_text("topleft", {
"File: {dir}/{name}",
"{sizehr}, {format}, {scale} of {frame.width}x{frame.height}",
"EXIF: {meta.Exif.Image.Model}",
})
swayimg.viewer.set_text("bottomright", {
"{list.index}/{list.total}",
})
swayimg.viewer.set_text("bottomleft", {})
swayimg.viewer.set_text("topright", {})
swayimg.enable_exif_orientation(true)
-- show file info
swayimg.viewer.on_key("i", function()
if swayimg.text.visible() then
swayimg.text.hide()
else
swayimg.text.set_timeout(0)
swayimg.text.show()
end
end)
-- Zoom scale of focused thumb
swayimg.gallery.set_selected_scale(1.5)
-- Delete marked files
swayimg.gallery.on_key("Ctrl+Delete", function()
local entries = swayimg.imagelist.get()
local marked = {}
for _, entry in ipairs(entries) do
if entry.mark then
table.insert(marked, entry.path)
end
end
for _, path in ipairs(marked) do
os.remove(path)
end
swayimg.imagelist.remove(marked)
swayimg.text.set_status("Deleted " .. #marked .. " marked file(s)")
end)
-- mark
swayimg.gallery.on_key("Space", function()
swayimg.gallery.mark_image()
end)
swayimg.viewer.on_key("Space", function()
swayimg.viewer.mark_image()
end)
--- random
swayimg.viewer.on_key("t", function()
swayimg.viewer.switch_image("random")
end)
-- rotate
swayimg.viewer.on_key("r", function()
swayimg.viewer.rotate(90)
end)
swayimg.viewer.on_key("Shift-r", function()
swayimg.viewer.rotate(270)
end)
-- quit
swayimg.viewer.on_key("q", function()
swayimg.exit()
end)
swayimg.gallery.on_key("q", function()
swayimg.exit()
end)
swayimg.viewer.on_key("j", function()
swayimg.viewer.switch_image("prev")
end)
swayimg.viewer.on_key("k", function()
swayimg.viewer.switch_image("next")
end)
swayimg.gallery.on_key("h", function()
swayimg.gallery.switch_image("left")
end)
swayimg.gallery.on_key("j", function()
swayimg.gallery.switch_image("down")
end)
swayimg.gallery.on_key("k", function()
swayimg.gallery.switch_image("up")
end)
swayimg.gallery.on_key("l", function()
swayimg.gallery.switch_image("right")
end)
-- Delete individual file
swayimg.gallery.on_key("Shift-d", function()
local image = swayimg.gallery.get_image()
os.remove(image.path)
swayimg.text.set_status("File " .. image.path .. " removed")
end)
swayimg.viewer.on_key("Shift-d", function()
local image = swayimg.viewer.get_image()
os.remove(image.path)
swayimg.text.set_status("File " .. image.path .. " removed")
end)
-- move image
local dest = os.getenv("HOME") .. "/data/local/"
local function move_image(path)
local filename = path:match("([^/]+)$")
os.execute(string.format("mv %q %q", path, dest .. filename))
swayimg.imagelist.remove(path)
swayimg.text.set_status("Moved: " .. filename)
end
swayimg.viewer.on_key("Shift-g", function()
local image = swayimg.viewer.get_image()
if image then
move_image(image.path)
swayimg.viewer.switch_image("next")
end
end)
swayimg.gallery.on_key("Shift-g", function()
local image = swayimg.gallery.get_image()
if image then
move_image(image.path)
end
end)

View file

@ -1,12 +1,19 @@
UNIT FILE STATE PRESET
chronyd.service enabled disabled
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
fstrim.timer enabled disabled
UNIT FILE STATE PRESET
chronyd.service enabled disabled
getty@.service enabled enabled
iwd.service enabled disabled
pulsesecure.service enabled disabled
sshd.service enabled disabled
systemd-network-generator.service enabled enabled
systemd-networkd-wait-online.service enabled enabled
systemd-networkd.service enabled enabled
systemd-resolved.service enabled enabled
systemd-networkd-resolve-hook.socket enabled disabled
systemd-networkd-varlink-metrics.socket enabled disabled
systemd-networkd-varlink.socket enabled disabled
systemd-networkd.socket enabled disabled
systemd-userdbd.socket enabled enabled
remote-fs.target enabled enabled
fstrim.timer enabled disabled
9 unit files listed.
16 unit files listed.