diff --git a/dotfiles/.config/kanshi/config b/dotfiles/.config/kanshi/config
new file mode 100644
index 0000000..cbec542
--- /dev/null
+++ b/dotfiles/.config/kanshi/config
@@ -0,0 +1,4 @@
+profile {
+ output eDP-1 enable scale 2.5
+}
+
diff --git a/dotfiles/.config/river/init b/dotfiles/.config/river/init
new file mode 100755
index 0000000..12286c5
--- /dev/null
+++ b/dotfiles/.config/river/init
@@ -0,0 +1,190 @@
+#!/bin/sh
+
+# This is the example configuration file for river.
+#
+# If you wish to edit this, you will probably want to copy it to
+# $XDG_CONFIG_HOME/river/init or $HOME/.config/river/init first.
+#
+# See the river(1), riverctl(1), and rivertile(1) man pages for complete
+# documentation.
+
+riverctl xcursor-theme Adwaita 24
+
+# Note: the "Super" modifier is also known as Logo, GUI, Windows, Mod4, etc.
+
+# Super+Shift+Return to start an instance of foot (https://codeberg.org/dnkl/foot)
+riverctl map normal Super+Shift Return spawn foot
+
+# Super+Q to close the focused view
+riverctl map normal Super Q close
+
+# Super+Shift+E to exit river
+riverctl map normal Super+Shift E exit
+
+# Super+J and Super+K to focus the next/previous view in the layout stack
+riverctl map normal Super J focus-view next
+riverctl map normal Super K focus-view previous
+
+# Super+Shift+J and Super+Shift+K to swap the focused view with the next/previous
+# view in the layout stack
+riverctl map normal Super+Shift J swap next
+riverctl map normal Super+Shift K swap previous
+
+# Super+Period and Super+Comma to focus the next/previous output
+riverctl map normal Super Period focus-output next
+riverctl map normal Super Comma focus-output previous
+
+# Super+Shift+{Period,Comma} to send the focused view to the next/previous output
+riverctl map normal Super+Shift Period send-to-output next
+riverctl map normal Super+Shift Comma send-to-output previous
+
+# Super+Return to bump the focused view to the top of the layout stack
+riverctl map normal Super Return zoom
+
+# Super+H and Super+L to decrease/increase the main ratio of rivertile(1)
+riverctl map normal Super H send-layout-cmd rivertile "main-ratio -0.05"
+riverctl map normal Super L send-layout-cmd rivertile "main-ratio +0.05"
+
+# Super+Shift+H and Super+Shift+L to increment/decrement the main count of rivertile(1)
+riverctl map normal Super+Shift H send-layout-cmd rivertile "main-count +1"
+riverctl map normal Super+Shift L send-layout-cmd rivertile "main-count -1"
+
+# Super+Alt+{H,J,K,L} to move views
+riverctl map normal Super+Alt H move left 100
+riverctl map normal Super+Alt J move down 100
+riverctl map normal Super+Alt K move up 100
+riverctl map normal Super+Alt L move right 100
+
+# Super+Alt+Control+{H,J,K,L} to snap views to screen edges
+riverctl map normal Super+Alt+Control H snap left
+riverctl map normal Super+Alt+Control J snap down
+riverctl map normal Super+Alt+Control K snap up
+riverctl map normal Super+Alt+Control L snap right
+
+# Super+Alt+Shif+{H,J,K,L} to resize views
+riverctl map normal Super+Alt+Shift H resize horizontal -100
+riverctl map normal Super+Alt+Shift J resize vertical 100
+riverctl map normal Super+Alt+Shift K resize vertical -100
+riverctl map normal Super+Alt+Shift L resize horizontal 100
+
+# Super + Left Mouse Button to move views
+riverctl map-pointer normal Super BTN_LEFT move-view
+
+# Super + Right Mouse Button to resize views
+riverctl map-pointer normal Super BTN_RIGHT resize-view
+
+for i in $(seq 1 9)
+do
+ tags=$((1 << ($i - 1)))
+
+ # Super+[1-9] to focus tag [0-8]
+ riverctl map normal Super $i set-focused-tags $tags
+
+ # Super+Shift+[1-9] to tag focused view with tag [0-8]
+ riverctl map normal Super+Shift $i set-view-tags $tags
+
+ # Super+Ctrl+[1-9] to toggle focus of tag [0-8]
+ riverctl map normal Super+Control $i toggle-focused-tags $tags
+
+ # Super+Shift+Ctrl+[1-9] to toggle tag [0-8] of focused view
+ riverctl map normal Super+Shift+Control $i toggle-view-tags $tags
+done
+
+# Super+0 to focus all tags
+# Super+Shift+0 to tag focused view with all tags
+all_tags=$(((1 << 32) - 1))
+riverctl map normal Super 0 set-focused-tags $all_tags
+riverctl map normal Super+Shift 0 set-view-tags $all_tags
+
+# Super+Space to toggle float
+riverctl map normal Super Space toggle-float
+
+# Super+F to toggle fullscreen
+riverctl map normal Super F toggle-fullscreen
+
+# Super+{Up,Right,Down,Left} to change layout orientation
+riverctl map normal Super Up send-layout-cmd rivertile "main-location top"
+riverctl map normal Super Right send-layout-cmd rivertile "main-location right"
+riverctl map normal Super Down send-layout-cmd rivertile "main-location bottom"
+riverctl map normal Super Left send-layout-cmd rivertile "main-location left"
+
+# Declare a passthrough mode. This mode has only a single mapping to return to
+# normal mode. This makes it useful for testing a nested wayland compositor
+riverctl declare-mode passthrough
+
+# Super+F11 to enter passthrough mode
+riverctl map normal Super F11 enter-mode passthrough
+
+# Super+F11 to return to normal mode
+riverctl map passthrough Super F11 enter-mode normal
+
+riverctl map normal Super R spawn 'pidof bemenu-run || bemenu-run -i -n'
+
+# Various media key mapping examples for both normal and locked mode which do
+# not have a modifier
+for mode in normal locked
+do
+ # Eject the optical drive (well if you still have one that is)
+ riverctl map $mode None XF86Eject spawn 'eject -T'
+
+ # Control pulse audio volume with pamixer (https://github.com/cdemoulins/pamixer)
+ riverctl map -repeat $mode None XF86AudioRaiseVolume spawn 'amixer set "Master" 5%+'
+ riverctl map -repeat $mode None XF86AudioLowerVolume spawn 'amixer set "Master" 5%-'
+ riverctl map -repeat $mode None XF86AudioMute spawn 'amixer set "Master" toggle'
+
+ # Control MPRIS aware media players with playerctl (https://github.com/altdesktop/playerctl)
+ riverctl map $mode None XF86AudioMedia spawn 'playerctl play-pause'
+ riverctl map $mode None XF86AudioPlay spawn 'playerctl play-pause'
+ riverctl map $mode None XF86AudioPrev spawn 'playerctl previous'
+ riverctl map $mode None XF86AudioNext spawn 'playerctl next'
+
+ # Control screen backlight brighness with light (https://github.com/haikarainen/light)
+ riverctl map $mode None XF86MonBrightnessUp spawn 'light -A 5'
+ riverctl map $mode None XF86MonBrightnessDown spawn 'light -U 5'
+done
+
+# Set background and border color
+riverctl background-color 0x002b36
+riverctl border-color-focused 0x93a1a1
+riverctl border-color-unfocused 0x586e75
+
+# Set keyboard repeat rate
+riverctl set-repeat 50 300
+
+riverctl input 2:10:TPPS/2_Elan_TrackPoint accel-profile adaptive
+riverctl input 2:10:TPPS/2_Elan_TrackPoint pointer-accel -0.5
+
+# Make certain views start floating
+riverctl float-filter-add app-id float
+riverctl float-filter-add title "popup title with spaces"
+
+# Set app-ids and titles of views which should use client side decorations
+riverctl csd-filter-add app-id "gedit"
+
+# startup
+riverctl spawn "killall waybar"
+riverctl spawn "killall bemenu-run"
+riverctl spawn "/usr/libexec/pipewire-launcher"
+riverctl spawn "kanshi"
+#riverctl spawn "kill -HUP $(pidof waybar) && waybar"
+riverctl spawn "waybar"
+#riverctl spawn "sleep 5 && /usr/libexec/xdg-desktop-portal-wlr"
+
+# Set and exec into the default layout generator, rivertile.
+# River will send the process group of the init executable SIGTERM on exit.
+#riverctl default-layout rivertile
+#exec rivertile -view-padding 6 -outer-padding 6
+
+riverctl float-filter-add title 'Firefox — Sharing Indicator'
+riverctl float-filter-add title "Firefox — Sharing Indicator"
+#riverctl float-filter-add title Firefox — Sharing Indicator
+riverctl float-filter-add title 'Firefox — Sharing Indicator'
+riverctl float-filter-add title "Firefox — Sharing Indicator"
+riverctl float-filter-add title "Firefox — Sharing Indicator"
+riverctl float-filter-add title "Firefox — Sharing Indicator"
+riverctl float-filter-add title "Firefox — Sharing Indicator"
+riverctl float-filter-add title "Firefox — Sharing Indicator"
+
+riverctl default-layout rivertile
+exec rivertile -view-padding 6 -outer-padding 6
+
diff --git a/dotfiles/.config/river/init.bak b/dotfiles/.config/river/init.bak
new file mode 100755
index 0000000..0e2a8b0
--- /dev/null
+++ b/dotfiles/.config/river/init.bak
@@ -0,0 +1,170 @@
+#!/bin/sh
+
+# This is the example configuration file for river.
+#
+# If you wish to edit this, you will probably want to copy it to
+# $XDG_CONFIG_HOME/river/init or $HOME/.config/river/init first.
+#
+# See the river(1), riverctl(1), and rivertile(1) man pages for complete
+# documentation.
+
+riverctl xcursor-theme Adwaita 24
+
+# Note: the "Super" modifier is also known as Logo, GUI, Windows, Mod4, etc.
+
+# Super+Shift+Return to start an instance of foot (https://codeberg.org/dnkl/foot)
+riverctl map normal Super+Shift Return spawn foot
+
+# Super+Q to close the focused view
+riverctl map normal Super Q close
+
+# Super+Shift+E to exit river
+riverctl map normal Super+Shift E exit
+
+# Super+J and Super+K to focus the next/previous view in the layout stack
+riverctl map normal Super J focus-view next
+riverctl map normal Super K focus-view previous
+
+# Super+Shift+J and Super+Shift+K to swap the focused view with the next/previous
+# view in the layout stack
+riverctl map normal Super+Shift J swap next
+riverctl map normal Super+Shift K swap previous
+
+# Super+Period and Super+Comma to focus the next/previous output
+riverctl map normal Super Period focus-output next
+riverctl map normal Super Comma focus-output previous
+
+# Super+Shift+{Period,Comma} to send the focused view to the next/previous output
+riverctl map normal Super+Shift Period send-to-output next
+riverctl map normal Super+Shift Comma send-to-output previous
+
+# Super+Return to bump the focused view to the top of the layout stack
+riverctl map normal Super Return zoom
+
+# Super+H and Super+L to decrease/increase the main ratio of rivertile(1)
+riverctl map normal Super H send-layout-cmd rivertile "main-ratio -0.05"
+riverctl map normal Super L send-layout-cmd rivertile "main-ratio +0.05"
+
+# Super+Shift+H and Super+Shift+L to increment/decrement the main count of rivertile(1)
+riverctl map normal Super+Shift H send-layout-cmd rivertile "main-count +1"
+riverctl map normal Super+Shift L send-layout-cmd rivertile "main-count -1"
+
+# Super+Alt+{H,J,K,L} to move views
+riverctl map normal Super+Alt H move left 100
+riverctl map normal Super+Alt J move down 100
+riverctl map normal Super+Alt K move up 100
+riverctl map normal Super+Alt L move right 100
+
+# Super+Alt+Control+{H,J,K,L} to snap views to screen edges
+riverctl map normal Super+Alt+Control H snap left
+riverctl map normal Super+Alt+Control J snap down
+riverctl map normal Super+Alt+Control K snap up
+riverctl map normal Super+Alt+Control L snap right
+
+# Super+Alt+Shif+{H,J,K,L} to resize views
+riverctl map normal Super+Alt+Shift H resize horizontal -100
+riverctl map normal Super+Alt+Shift J resize vertical 100
+riverctl map normal Super+Alt+Shift K resize vertical -100
+riverctl map normal Super+Alt+Shift L resize horizontal 100
+
+# Super + Left Mouse Button to move views
+riverctl map-pointer normal Super BTN_LEFT move-view
+
+# Super + Right Mouse Button to resize views
+riverctl map-pointer normal Super BTN_RIGHT resize-view
+
+for i in $(seq 1 9)
+do
+ tags=$((1 << ($i - 1)))
+
+ # Super+[1-9] to focus tag [0-8]
+ riverctl map normal Super $i set-focused-tags $tags
+
+ # Super+Shift+[1-9] to tag focused view with tag [0-8]
+ riverctl map normal Super+Shift $i set-view-tags $tags
+
+ # Super+Ctrl+[1-9] to toggle focus of tag [0-8]
+ riverctl map normal Super+Control $i toggle-focused-tags $tags
+
+ # Super+Shift+Ctrl+[1-9] to toggle tag [0-8] of focused view
+ riverctl map normal Super+Shift+Control $i toggle-view-tags $tags
+done
+
+# Super+0 to focus all tags
+# Super+Shift+0 to tag focused view with all tags
+all_tags=$(((1 << 32) - 1))
+riverctl map normal Super 0 set-focused-tags $all_tags
+riverctl map normal Super+Shift 0 set-view-tags $all_tags
+
+# Super+Space to toggle float
+riverctl map normal Super Space toggle-float
+
+# Super+F to toggle fullscreen
+riverctl map normal Super F toggle-fullscreen
+
+# Super+{Up,Right,Down,Left} to change layout orientation
+riverctl map normal Super Up send-layout-cmd rivertile "main-location top"
+riverctl map normal Super Right send-layout-cmd rivertile "main-location right"
+riverctl map normal Super Down send-layout-cmd rivertile "main-location bottom"
+riverctl map normal Super Left send-layout-cmd rivertile "main-location left"
+
+# Declare a passthrough mode. This mode has only a single mapping to return to
+# normal mode. This makes it useful for testing a nested wayland compositor
+riverctl declare-mode passthrough
+
+# Super+F11 to enter passthrough mode
+riverctl map normal Super F11 enter-mode passthrough
+
+# Super+F11 to return to normal mode
+riverctl map passthrough Super F11 enter-mode normal
+
+riverctl map normal Super R spawn 'bemenu-run -i -n'
+
+# Various media key mapping examples for both normal and locked mode which do
+# not have a modifier
+for mode in normal locked
+do
+ # Eject the optical drive (well if you still have one that is)
+ riverctl map $mode None XF86Eject spawn 'eject -T'
+
+ # Control pulse audio volume with pamixer (https://github.com/cdemoulins/pamixer)
+ riverctl map $mode None XF86AudioRaiseVolume spawn 'pamixer -i 5'
+ riverctl map $mode None XF86AudioLowerVolume spawn 'pamixer -d 5'
+ riverctl map $mode None XF86AudioMute spawn 'pamixer --toggle-mute'
+
+ # Control MPRIS aware media players with playerctl (https://github.com/altdesktop/playerctl)
+ riverctl map $mode None XF86AudioMedia spawn 'playerctl play-pause'
+ riverctl map $mode None XF86AudioPlay spawn 'playerctl play-pause'
+ riverctl map $mode None XF86AudioPrev spawn 'playerctl previous'
+ riverctl map $mode None XF86AudioNext spawn 'playerctl next'
+
+ # Control screen backlight brighness with light (https://github.com/haikarainen/light)
+ riverctl map $mode None XF86MonBrightnessUp spawn 'light -A 5'
+ riverctl map $mode None XF86MonBrightnessDown spawn 'light -U 5'
+done
+
+# Set background and border color
+riverctl background-color 0x002b36
+riverctl border-color-focused 0x93a1a1
+riverctl border-color-unfocused 0x586e75
+
+# Set keyboard repeat rate
+riverctl set-repeat 50 300
+
+# Make certain views start floating
+riverctl float-filter-add app-id float
+riverctl float-filter-add title "popup title with spaces"
+
+# Set app-ids and titles of views which should use client side decorations
+riverctl csd-filter-add app-id "gedit"
+
+# startup
+riverctl spawn "/usr/libexec/pipewire-launcher"
+riverctl spawn "kanshi"
+#riverctl spawn "kill -HUP $(pidof waybar) && waybar"
+riverctl spawn "waybar"
+
+# Set and exec into the default layout generator, rivertile.
+# River will send the process group of the init executable SIGTERM on exit.
+riverctl default-layout rivertile
+exec rivertile -view-padding 6 -outer-padding 6
diff --git a/dotfiles/.config/river/sharing-float-one.sh b/dotfiles/.config/river/sharing-float-one.sh
new file mode 100755
index 0000000..a9798ab
--- /dev/null
+++ b/dotfiles/.config/river/sharing-float-one.sh
@@ -0,0 +1 @@
+riverctl float-filter-add title "Firefox — Sharing Indicator"
diff --git a/dotfiles/.config/river/sharing-float.sh b/dotfiles/.config/river/sharing-float.sh
new file mode 100755
index 0000000..23b6f99
--- /dev/null
+++ b/dotfiles/.config/river/sharing-float.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+riverctl float-filter-add title "Firefox — Sharing Indicator"
+#riverctl float-filter-add title Firefox — Sharing Indicator
+riverctl float-filter-add title 'Firefox — Sharing Indicator'
+riverctl float-filter-add title "Firefox — Sharing Indicator"
+riverctl float-filter-add title "Firefox — Sharing Indicator"
+riverctl float-filter-add title "Firefox — Sharing Indicator"
+riverctl float-filter-add title "Firefox — Sharing Indicator"
+riverctl float-filter-add title "Firefox — Sharing Indicator"
diff --git a/dotfiles/.config/sway/config b/dotfiles/.config/sway/config
new file mode 100644
index 0000000..4e98969
--- /dev/null
+++ b/dotfiles/.config/sway/config
@@ -0,0 +1,220 @@
+# Default config for sway
+#
+# Copy this to ~/.config/sway/config and edit it to your liking.
+#
+# Read `man 5 sway` for a complete reference.
+
+### Variables
+#
+# Logo key. Use Mod1 for Alt.
+set $mod Mod4
+# Home row direction keys, like vim
+set $left h
+set $down j
+set $up k
+set $right l
+# Your preferred terminal emulator
+set $term foot
+# Your preferred application launcher
+# Note: pass the final command to swaymsg so that the resulting window can be opened
+# on the original workspace that the command was run on.
+set $menu dmenu_path | dmenu | xargs swaymsg exec --
+
+### Output configuration
+#
+# Default wallpaper (more resolutions are available in /usr/share/backgrounds/sway/)
+output * bg /usr/share/backgrounds/sway/Sway_Wallpaper_Blue_1920x1080.png fill
+#
+# Example configuration:
+#
+# output HDMI-A-1 resolution 1920x1080 position 1920,0
+#
+# You can get the names of your outputs by running: swaymsg -t get_outputs
+
+### Idle configuration
+#
+# Example configuration:
+#
+# exec swayidle -w \
+# timeout 300 'swaylock -f -c 000000' \
+# timeout 600 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \
+# before-sleep 'swaylock -f -c 000000'
+#
+# 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.
+
+### Input configuration
+#
+# Example configuration:
+#
+# input "2:14:SynPS/2_Synaptics_TouchPad" {
+# dwt enabled
+# tap enabled
+# natural_scroll enabled
+# middle_emulation enabled
+# }
+#
+# You can get the names of your inputs by running: swaymsg -t get_inputs
+# Read `man 5 sway-input` for more information about this section.
+
+### Key bindings
+#
+# Basics:
+#
+ # Start a terminal
+ bindsym $mod+Return exec $term
+
+ # 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'
+#
+# Moving around:
+#
+ # Move your focus around
+ bindsym $mod+$left focus left
+ bindsym $mod+$down focus down
+ bindsym $mod+$up focus up
+ bindsym $mod+$right focus right
+ # Or use $mod+[up|down|left|right]
+ bindsym $mod+Left focus left
+ bindsym $mod+Down focus down
+ bindsym $mod+Up focus up
+ bindsym $mod+Right focus right
+
+ # Move the focused window with the same, but add Shift
+ bindsym $mod+Shift+$left move left
+ bindsym $mod+Shift+$down move down
+ bindsym $mod+Shift+$up move up
+ bindsym $mod+Shift+$right move right
+ # Ditto, with arrow keys
+ bindsym $mod+Shift+Left move left
+ bindsym $mod+Shift+Down move down
+ bindsym $mod+Shift+Up move up
+ bindsym $mod+Shift+Right move right
+#
+# Workspaces:
+#
+ # Switch to workspace
+ bindsym $mod+1 workspace number 1
+ bindsym $mod+2 workspace number 2
+ bindsym $mod+3 workspace number 3
+ bindsym $mod+4 workspace number 4
+ bindsym $mod+5 workspace number 5
+ bindsym $mod+6 workspace number 6
+ bindsym $mod+7 workspace number 7
+ bindsym $mod+8 workspace number 8
+ bindsym $mod+9 workspace number 9
+ bindsym $mod+0 workspace number 10
+ # Move focused container to workspace
+ bindsym $mod+Shift+1 move container to workspace number 1
+ bindsym $mod+Shift+2 move container to workspace number 2
+ bindsym $mod+Shift+3 move container to workspace number 3
+ bindsym $mod+Shift+4 move container to workspace number 4
+ bindsym $mod+Shift+5 move container to workspace number 5
+ bindsym $mod+Shift+6 move container to workspace number 6
+ bindsym $mod+Shift+7 move container to workspace number 7
+ bindsym $mod+Shift+8 move container to workspace number 8
+ bindsym $mod+Shift+9 move container to workspace number 9
+ bindsym $mod+Shift+0 move container to workspace number 10
+ # Note: workspaces can have any name you want, not just numbers.
+ # We just use 1-10 as the default.
+#
+# Layout stuff:
+#
+ # 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
+
+ # 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
+ bindsym $mod+a focus parent
+#
+# Scratchpad:
+#
+ # 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
+#
+# Resizing containers:
+#
+mode "resize" {
+ # left will shrink the containers width
+ # right will grow the containers width
+ # up will shrink the containers height
+ # down will grow the containers height
+ bindsym $left resize shrink width 10px
+ bindsym $down resize grow height 10px
+ bindsym $up resize shrink height 10px
+ bindsym $right resize grow width 10px
+
+ # Ditto, with arrow keys
+ bindsym Left resize shrink width 10px
+ bindsym Down resize grow height 10px
+ bindsym Up resize shrink height 10px
+ bindsym Right resize grow width 10px
+
+ # Return to default mode
+ bindsym Return mode "default"
+ bindsym Escape mode "default"
+}
+bindsym $mod+r mode "resize"
+
+#
+# Status Bar:
+#
+# Read `man 5 sway-bar` for more information about this section.
+bar {
+ position top
+
+ # When the status_command prints a new line to stdout, swaybar updates.
+ # The default just shows the current date and time.
+ status_command while date +'%Y-%m-%d %I:%M:%S %p'; do sleep 1; done
+
+ colors {
+ statusline #ffffff
+ background #323232
+ inactive_workspace #32323200 #32323200 #5c5c5c
+ }
+}
+
+include /etc/sway/config.d/*
+
+exec /usr/libexec/pipewire-launcher
+
diff --git a/dotfiles/.config/waybar/config b/dotfiles/.config/waybar/config
new file mode 100644
index 0000000..26e0016
--- /dev/null
+++ b/dotfiles/.config/waybar/config
@@ -0,0 +1,160 @@
+{
+ // "layer": "top", // Waybar at top layer
+ // "position": "bottom", // Waybar position (top|bottom|left|right)
+ "height": 30, // Waybar height (to be removed for auto height)
+ // "width": 1280, // Waybar width
+ "spacing": 4, // Gaps between modules (4px)
+ // Choose the order of the modules
+ "modules-left": ["river/tags", "river/mode", "custom/media"],
+ "modules-center": ["river/window"],
+ "modules-right": ["mpd", "idle_inhibitor", "pulseaudio", "network", "cpu", "memory", "temperature", "backlight", "keyboard-state", "sway/language", "battery", "battery#bat2", "clock", "tray"],
+ // Modules configuration
+ // "sway/workspaces": {
+ // "disable-scroll": true,
+ // "all-outputs": true,
+ // "format": "{name}: {icon}",
+ // "format-icons": {
+ // "1": "",
+ // "2": "",
+ // "3": "",
+ // "4": "",
+ // "5": "",
+ // "urgent": "",
+ // "focused": "",
+ // "default": ""
+ // }
+ // },
+ "keyboard-state": {
+ "numlock": true,
+ "capslock": true,
+ "format": "{name} {icon}",
+ "format-icons": {
+ "locked": "",
+ "unlocked": ""
+ }
+ },
+ "sway/mode": {
+ "format": "{}"
+ },
+ "mpd": {
+ "format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ",
+ "format-disconnected": "Disconnected ",
+ "format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ",
+ "unknown-tag": "N/A",
+ "interval": 2,
+ "consume-icons": {
+ "on": " "
+ },
+ "random-icons": {
+ "off": " ",
+ "on": " "
+ },
+ "repeat-icons": {
+ "on": " "
+ },
+ "single-icons": {
+ "on": "1 "
+ },
+ "state-icons": {
+ "paused": "",
+ "playing": ""
+ },
+ "tooltip-format": "MPD (connected)",
+ "tooltip-format-disconnected": "MPD (disconnected)"
+ },
+ "idle_inhibitor": {
+ "format": "{icon}",
+ "format-icons": {
+ "activated": "",
+ "deactivated": ""
+ }
+ },
+ "tray": {
+ // "icon-size": 21,
+ "spacing": 10
+ },
+ "clock": {
+ // "timezone": "America/New_York",
+ "tooltip-format": "{:%Y %B}\n{calendar}",
+ "format-alt": "{:%Y-%m-%d}",
+ "locale": "C"
+ },
+ "cpu": {
+ "format": "{usage}% ",
+ "tooltip": false
+ },
+ "memory": {
+ "format": "{}% "
+ },
+ "temperature": {
+ // "thermal-zone": 2,
+ // "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
+ "critical-threshold": 80,
+ // "format-critical": "{temperatureC}°C {icon}",
+ "format": "{temperatureC}°C {icon}",
+ "format-icons": ["", "", ""]
+ },
+ "backlight": {
+ // "device": "acpi_video1",
+ "format": "{percent}% {icon}",
+ "format-icons": ["", "", "", "", "", "", "", "", ""]
+ },
+ "battery": {
+ "states": {
+ // "good": 95,
+ "warning": 30,
+ "critical": 15
+ },
+ "format": "{capacity}% {icon}",
+ "format-charging": "{capacity}% ",
+ "format-plugged": "{capacity}% ",
+ "format-alt": "{time} {icon}",
+ // "format-good": "", // An empty format will hide the module
+ // "format-full": "",
+ "format-icons": ["", "", "", "", ""]
+ },
+ "battery#bat2": {
+ "bat": "BAT2"
+ },
+ "network": {
+ // "interface": "wlp2*", // (Optional) To force the use of this interface
+ "format-wifi": "{essid} ({signalStrength}%) ",
+ "format-ethernet": "{ipaddr}/{cidr} ",
+ "tooltip-format": "{ifname} via {gwaddr} ",
+ "format-linked": "{ifname} (No IP) ",
+ "format-disconnected": "Disconnected ⚠",
+ "format-alt": "{ifname}: {ipaddr}/{cidr}"
+ },
+ "pulseaudio": {
+ // "scroll-step": 1, // %, can be a float
+ "format": "{volume}% {icon} {format_source}",
+ "format-bluetooth": "{volume}% {icon} {format_source}",
+ "format-bluetooth-muted": " {icon} {format_source}",
+ "format-muted": " {format_source}",
+ "format-source": "{volume}% ",
+ "format-source-muted": "",
+ "format-icons": {
+ "headphone": "",
+ "hands-free": "",
+ "headset": "",
+ "phone": "",
+ "portable": "",
+ "car": "",
+ "default": ["", "", ""]
+ },
+ "on-click": "pavucontrol"
+ },
+ "custom/media": {
+ "format": "{icon} {}",
+ "return-type": "json",
+ "max-length": 40,
+ "format-icons": {
+ "spotify": "",
+ "default": "🎜"
+ },
+ "escape": true,
+ "exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder
+ // "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name
+ }
+}
+
diff --git a/dotfiles/.config/xdg-desktop-portal-wlr/config b/dotfiles/.config/xdg-desktop-portal-wlr/config
new file mode 100644
index 0000000..1696eab
--- /dev/null
+++ b/dotfiles/.config/xdg-desktop-portal-wlr/config
@@ -0,0 +1,4 @@
+[screencast]
+chooser_cmd=bemenu -i -n
+chooser_type=dmenu
+
diff --git a/global/etc/acpi/events/lenovo-mutemic b/global/etc/acpi/events/lenovo-mutemic
new file mode 100644
index 0000000..59ad29d
--- /dev/null
+++ b/global/etc/acpi/events/lenovo-mutemic
@@ -0,0 +1,2 @@
+event=button/micmute MICMUTE 00000080 00000000 K
+action=amixer --card 1 set 'Capture' toggle
diff --git a/global/etc/apk/repositories b/global/etc/apk/repositories
new file mode 100644
index 0000000..cbb8f9c
--- /dev/null
+++ b/global/etc/apk/repositories
@@ -0,0 +1,11 @@
+#/media/sda1/apks
+#http://alpine.sakamoto.pl/alpine/v3.16/main
+#http://alpine.sakamoto.pl/alpine/v3.16/community
+##http://alpine.sakamoto.pl/alpine/edge/main
+##http://alpine.sakamoto.pl/alpine/edge/community
+##http://alpine.sakamoto.pl/alpine/edge/testing
+http://mirror1.hs-esslingen.de/pub/Mirrors/alpine/edge/main
+http://mirror1.hs-esslingen.de/pub/Mirrors/alpine/edge/community
+http://mirror1.hs-esslingen.de/pub/Mirrors/alpine/edge/testing
+
+
diff --git a/global/etc/greetd/config.toml b/global/etc/greetd/config.toml
new file mode 100644
index 0000000..ee1f848
--- /dev/null
+++ b/global/etc/greetd/config.toml
@@ -0,0 +1,16 @@
+[terminal]
+# The VT to run the greeter on. Can be "next", "current" or a number
+# designating the VT.
+vt = 1
+
+# The default session, also known as the greeter.
+[default_session]
+
+# `agreety` is the bundled agetty/login-lookalike. You can replace `/bin/sh`
+# with whatever you want started, such as `sway`.
+command = "cage -s -- gtkgreet"
+
+# The user to run the command as. The privileges this user must have depends
+# on the greeter. A graphical greeter may for example require the user to be
+# in the `video` group.
+user = "greetd"
diff --git a/global/etc/greetd/environments b/global/etc/greetd/environments
new file mode 100644
index 0000000..91a8d35
--- /dev/null
+++ b/global/etc/greetd/environments
@@ -0,0 +1,3 @@
+inga-river
+inga-sway
+ash
diff --git a/global/etc/udev/rules.d/backlight.rules b/global/etc/udev/rules.d/backlight.rules
new file mode 100644
index 0000000..372703c
--- /dev/null
+++ b/global/etc/udev/rules.d/backlight.rules
@@ -0,0 +1,2 @@
+ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="amdgpu_bl0", RUN+="/bin/chgrp video /sys/class/backlight/%k/brightness"
+ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="amdgpu_bl0", RUN+="/bin/chmod g+w /sys/class/backlight/%k/brightness"
diff --git a/global/usr/local/bin/inga-river b/global/usr/local/bin/inga-river
new file mode 100755
index 0000000..d0da68e
--- /dev/null
+++ b/global/usr/local/bin/inga-river
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+export GDK_BACKEND=wayland,x11
+export MOZ_ENABLE_WAYLAND=1
+export CLUTTER_BACKEND=wayland
+export QT_QPA_PLATFORM=wayland-egl
+export ECORE_EVAS_ENGINE=wayland-egl
+export ELM_ENGINE=wayland_egl
+export SDL_VIDEODRIVER=wayland
+export _JAVA_AWT_WM_NONREPARENTING=1
+export NO_AT_BRIDGE=1
+export BEMENU_BACKEND=wayland
+
+dbus-run-session -- river $@
+
diff --git a/global/usr/local/bin/inga-sway b/global/usr/local/bin/inga-sway
new file mode 100755
index 0000000..d96e294
--- /dev/null
+++ b/global/usr/local/bin/inga-sway
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+export GDK_BACKEND=wayland,x11
+export MOZ_ENABLE_WAYLAND=1
+export CLUTTER_BACKEND=wayland
+export QT_QPA_PLATFORM=wayland-egl
+export ECORE_EVAS_ENGINE=wayland-egl
+export ELM_ENGINE=wayland_egl
+export SDL_VIDEODRIVER=wayland
+export _JAVA_AWT_WM_NONREPARENTING=1
+export NO_AT_BRIDGE=1
+export BEMENU_BACKEND=wayland
+
+dbus-run-session -- sway $@
+
diff --git a/global/usr/share/alsa/alsa.conf b/global/usr/share/alsa/alsa.conf
new file mode 100644
index 0000000..891d91d
--- /dev/null
+++ b/global/usr/share/alsa/alsa.conf
@@ -0,0 +1,658 @@
+#
+# ALSA library configuration file
+#
+
+# pre-load the configuration files
+
+@hooks [
+ {
+ func load
+ files [
+ "/var/lib/alsa/conf.d"
+ "/usr/etc/alsa/conf.d"
+ "/etc/alsa/conf.d"
+ "/etc/asound.conf|||/usr/etc/asound.conf"
+ "~/.asoundrc"
+ {
+ @func concat
+ strings [
+ {
+ @func getenv
+ vars [
+ XDG_CONFIG_HOME
+ ]
+ default "~/.config"
+ }
+ "/alsa/asoundrc"
+ ]
+ }
+ ]
+ errors false
+ }
+]
+
+# load card-specific configuration files (on request)
+
+cards.@hooks [
+ {
+ func load
+ files [
+ {
+ @func concat
+ strings [
+ { @func datadir }
+ "/cards/aliases.conf"
+ ]
+ }
+ ]
+ }
+ {
+ func load_for_all_cards
+ files [
+ {
+ @func concat
+ strings [
+ { @func datadir }
+ "/cards/"
+ { @func private_string }
+ ".conf"
+ ]
+ }
+ {
+ root {
+ @func private_integer
+ }
+ file {
+ @func concat
+ strings [
+ "/var/lib/alsa/card"
+ { @func private_integer }
+ ".conf.d"
+ ]
+ }
+ }
+ ]
+ table {
+ id {
+ @func concat
+ strings [
+ { @func private_integer }
+ ]
+ }
+ value {
+ @func concat
+ strings [
+ "cards."
+ { @func private_string }
+ ]
+ }
+ }
+ errors false
+ }
+]
+
+#
+# defaults
+#
+
+# show all name hints also for definitions without hint {} section
+defaults.namehint.showall off
+# show just basic name hints
+defaults.namehint.basic on
+# show extended name hints
+defaults.namehint.extended off
+#
+defaults.ctl.card 1
+defaults.pcm.card 1
+defaults.pcm.device 0
+defaults.pcm.subdevice -1
+defaults.pcm.nonblock 1
+defaults.pcm.compat 0
+defaults.pcm.minperiodtime 5000 # in us
+defaults.pcm.ipc_key 5678293
+defaults.pcm.ipc_gid audio
+defaults.pcm.ipc_perm 0660
+defaults.pcm.tstamp_type default
+defaults.pcm.dmix.max_periods 0
+defaults.pcm.dmix.channels 2
+defaults.pcm.dmix.rate 48000
+defaults.pcm.dmix.format unchanged
+defaults.pcm.dmix.card defaults.pcm.card
+defaults.pcm.dmix.device defaults.pcm.device
+defaults.pcm.dsnoop.card defaults.pcm.card
+defaults.pcm.dsnoop.device defaults.pcm.device
+defaults.pcm.front.card defaults.pcm.card
+defaults.pcm.front.device defaults.pcm.device
+defaults.pcm.rear.card defaults.pcm.card
+defaults.pcm.rear.device defaults.pcm.device
+defaults.pcm.center_lfe.card defaults.pcm.card
+defaults.pcm.center_lfe.device defaults.pcm.device
+defaults.pcm.side.card defaults.pcm.card
+defaults.pcm.side.device defaults.pcm.device
+defaults.pcm.surround21.card defaults.pcm.card
+defaults.pcm.surround21.device defaults.pcm.device
+defaults.pcm.surround40.card defaults.pcm.card
+defaults.pcm.surround40.device defaults.pcm.device
+defaults.pcm.surround41.card defaults.pcm.card
+defaults.pcm.surround41.device defaults.pcm.device
+defaults.pcm.surround50.card defaults.pcm.card
+defaults.pcm.surround50.device defaults.pcm.device
+defaults.pcm.surround51.card defaults.pcm.card
+defaults.pcm.surround51.device defaults.pcm.device
+defaults.pcm.surround71.card defaults.pcm.card
+defaults.pcm.surround71.device defaults.pcm.device
+defaults.pcm.iec958.card defaults.pcm.card
+defaults.pcm.iec958.device defaults.pcm.device
+defaults.pcm.modem.card defaults.pcm.card
+defaults.pcm.modem.device defaults.pcm.device
+defaults.pcm.file_format raw
+defaults.pcm.file_truncate true # truncate files via file or tee PCM
+defaults.rawmidi.card 0
+defaults.rawmidi.device 0
+defaults.rawmidi.subdevice -1
+defaults.hwdep.card 0
+defaults.hwdep.device 0
+defaults.timer.class 2
+defaults.timer.sclass 0
+defaults.timer.card 0
+defaults.timer.device 0
+defaults.timer.subdevice 0
+
+#
+# PCM interface
+#
+
+pcm.hw {
+ @args [ CARD DEV SUBDEV ]
+ @args.CARD {
+ type string
+ default {
+ @func getenv
+ vars [
+ ALSA_PCM_CARD
+ ALSA_CARD
+ ]
+ default {
+ @func refer
+ name defaults.pcm.card
+ }
+ }
+ }
+ @args.DEV {
+ type integer
+ default {
+ @func igetenv
+ vars [
+ ALSA_PCM_DEVICE
+ ]
+ default {
+ @func refer
+ name defaults.pcm.device
+ }
+ }
+ }
+ @args.SUBDEV {
+ type integer
+ default {
+ @func refer
+ name defaults.pcm.subdevice
+ }
+ }
+ type hw
+ card $CARD
+ device $DEV
+ subdevice $SUBDEV
+ hint {
+ show {
+ @func refer
+ name defaults.namehint.extended
+ }
+ description "Direct hardware device without any conversions"
+ }
+}
+
+pcm.plughw {
+ @args [ CARD DEV SUBDEV ]
+ @args.CARD {
+ type string
+ default {
+ @func getenv
+ vars [
+ ALSA_PCM_CARD
+ ALSA_CARD
+ ]
+ default {
+ @func refer
+ name defaults.pcm.card
+ }
+ }
+ }
+ @args.DEV {
+ type integer
+ default {
+ @func igetenv
+ vars [
+ ALSA_PCM_DEVICE
+ ]
+ default {
+ @func refer
+ name defaults.pcm.device
+ }
+ }
+ }
+ @args.SUBDEV {
+ type integer
+ default {
+ @func refer
+ name defaults.pcm.subdevice
+ }
+ }
+ type plug
+ slave.pcm {
+ type hw
+ card $CARD
+ device $DEV
+ subdevice $SUBDEV
+ }
+ hint {
+ show {
+ @func refer
+ name defaults.namehint.extended
+ }
+ description "Hardware device with all software conversions"
+ }
+}
+
+pcm.plug {
+ @args [ SLAVE ]
+ @args.SLAVE {
+ type string
+ }
+ type plug
+ slave.pcm $SLAVE
+}
+
+pcm.shm {
+ @args [ SOCKET PCM ]
+ @args.SOCKET {
+ type string
+ }
+ @args.PCM {
+ type string
+ }
+ type shm
+ server $SOCKET
+ pcm $PCM
+}
+
+pcm.tee {
+ @args [ SLAVE FILE FORMAT ]
+ @args.SLAVE {
+ type string
+ }
+ @args.FILE {
+ type string
+ }
+ @args.FORMAT {
+ type string
+ default {
+ @func refer
+ name defaults.pcm.file_format
+ }
+ }
+ type file
+ slave.pcm $SLAVE
+ file $FILE
+ format $FORMAT
+ truncate {
+ @func refer
+ name defaults.pcm.file_truncate
+ }
+}
+
+pcm.file {
+ @args [ FILE FORMAT ]
+ @args.FILE {
+ type string
+ }
+ @args.FORMAT {
+ type string
+ default {
+ @func refer
+ name defaults.pcm.file_format
+ }
+ }
+ type file
+ slave.pcm null
+ file $FILE
+ format $FORMAT
+ truncate {
+ @func refer
+ name defaults.pcm.file_truncate
+ }
+}
+
+pcm.null {
+ type null
+ hint {
+ show {
+ @func refer
+ name defaults.namehint.basic
+ }
+ description "Discard all samples (playback) or generate zero samples (capture)"
+ }
+}
+
+# redirect to load-on-demand extended pcm definitions
+pcm.cards cards.pcm
+
+pcm.default cards.pcm.default
+pcm.sysdefault cards.pcm.default
+pcm.front cards.pcm.front
+pcm.rear cards.pcm.rear
+pcm.center_lfe cards.pcm.center_lfe
+pcm.side cards.pcm.side
+pcm.surround21 cards.pcm.surround21
+pcm.surround40 cards.pcm.surround40
+pcm.surround41 cards.pcm.surround41
+pcm.surround50 cards.pcm.surround50
+pcm.surround51 cards.pcm.surround51
+pcm.surround71 cards.pcm.surround71
+pcm.iec958 cards.pcm.iec958
+pcm.spdif iec958
+pcm.hdmi cards.pcm.hdmi
+pcm.dmix cards.pcm.dmix
+pcm.dsnoop cards.pcm.dsnoop
+pcm.modem cards.pcm.modem
+pcm.phoneline cards.pcm.phoneline
+
+#
+# Control interface
+#
+
+ctl.default cards.ctl.default
+ctl.sysdefault cards.ctl.default
+
+ctl.hw {
+ @args [ CARD ]
+ @args.CARD {
+ type string
+ default {
+ @func getenv
+ vars [
+ ALSA_CTL_CARD
+ ALSA_CARD
+ ]
+ default {
+ @func refer
+ name defaults.ctl.card
+ }
+ }
+ }
+ type hw
+ card $CARD
+ hint.description "Direct control device"
+}
+
+ctl.shm {
+ @args [ SOCKET CTL ]
+ @args.SOCKET {
+ type string
+ }
+ @args.CTL {
+ type string
+ }
+ type shm
+ server $SOCKET
+ ctl $CTL
+}
+
+#
+# RawMidi interface
+#
+
+rawmidi.default {
+ type hw
+ card {
+ @func getenv
+ vars [
+ ALSA_RAWMIDI_CARD
+ ALSA_CARD
+ ]
+ default {
+ @func refer
+ name defaults.rawmidi.card
+ }
+ }
+ device {
+ @func igetenv
+ vars [
+ ALSA_RAWMIDI_DEVICE
+ ]
+ default {
+ @func refer
+ name defaults.rawmidi.device
+ }
+ }
+ hint.description "Default raw MIDI device"
+}
+
+rawmidi.hw {
+ @args [ CARD DEV SUBDEV ]
+ @args.CARD {
+ type string
+ default {
+ @func getenv
+ vars [
+ ALSA_RAWMIDI_CARD
+ ALSA_CARD
+ ]
+ default {
+ @func refer
+ name defaults.rawmidi.card
+ }
+ }
+ }
+ @args.DEV {
+ type integer
+ default {
+ @func igetenv
+ vars [
+ ALSA_RAWMIDI_DEVICE
+ ]
+ default {
+ @func refer
+ name defaults.rawmidi.device
+ }
+ }
+ }
+ @args.SUBDEV {
+ type integer
+ default -1
+ }
+ type hw
+ card $CARD
+ device $DEV
+ subdevice $SUBDEV
+ hint {
+ description "Direct rawmidi driver device"
+ device $DEV
+ }
+}
+
+rawmidi.virtual {
+ @args [ MERGE ]
+ @args.MERGE {
+ type string
+ default 1
+ }
+ type virtual
+ merge $MERGE
+}
+
+#
+# Sequencer interface
+#
+
+seq.default {
+ type hw
+ hint.description "Default sequencer device"
+}
+
+seq.hw {
+ type hw
+}
+
+#
+# HwDep interface
+#
+
+hwdep.default {
+ type hw
+ card {
+ @func getenv
+ vars [
+ ALSA_HWDEP_CARD
+ ALSA_CARD
+ ]
+ default {
+ @func refer
+ name defaults.hwdep.card
+ }
+ }
+ device {
+ @func igetenv
+ vars [
+ ALSA_HWDEP_DEVICE
+ ]
+ default {
+ @func refer
+ name defaults.hwdep.device
+ }
+ }
+ hint.description "Default hardware dependent device"
+}
+
+hwdep.hw {
+ @args [ CARD DEV ]
+ @args.CARD {
+ type string
+ default {
+ @func getenv
+ vars [
+ ALSA_HWDEP_CARD
+ ALSA_CARD
+ ]
+ default {
+ @func refer
+ name defaults.hwdep.card
+ }
+ }
+ }
+ @args.DEV {
+ type integer
+ default {
+ @func igetenv
+ vars [
+ ALSA_HWDEP_DEVICE
+ ]
+ default {
+ @func refer
+ name defaults.hwdep.device
+ }
+ }
+ }
+ type hw
+ card $CARD
+ device $DEV
+ hint {
+ description "Direct hardware dependent device"
+ device $DEV
+ }
+}
+
+#
+# Timer interface
+#
+
+timer_query.default {
+ type hw
+}
+
+timer_query.hw {
+ type hw
+}
+
+timer.default {
+ type hw
+ class {
+ @func refer
+ name defaults.timer.class
+ }
+ sclass {
+ @func refer
+ name defaults.timer.sclass
+ }
+ card {
+ @func refer
+ name defaults.timer.card
+ }
+ device {
+ @func refer
+ name defaults.timer.device
+ }
+ subdevice {
+ @func refer
+ name defaults.timer.subdevice
+ }
+ hint.description "Default timer device"
+}
+
+timer.hw {
+ @args [ CLASS SCLASS CARD DEV SUBDEV ]
+ @args.CLASS {
+ type integer
+ default {
+ @func refer
+ name defaults.timer.class
+ }
+ }
+ @args.SCLASS {
+ type integer
+ default {
+ @func refer
+ name defaults.timer.sclass
+ }
+ }
+ @args.CARD {
+ type string
+ default {
+ @func refer
+ name defaults.timer.card
+ }
+ }
+ @args.DEV {
+ type integer
+ default {
+ @func refer
+ name defaults.timer.device
+ }
+ }
+ @args.SUBDEV {
+ type integer
+ default {
+ @func refer
+ name defaults.timer.subdevice
+ }
+ }
+ type hw
+ class $CLASS
+ sclass $SCLASS
+ card $CARD
+ device $DEV
+ subdevice $SUBDEV
+ hint {
+ description "Direct timer device"
+ device $DEV
+ }
+}