diff --git a/.config/fontconfig/50-user.conf b/.config/fontconfig/50-user.conf new file mode 120000 index 0000000..b12dcf1 --- /dev/null +++ b/.config/fontconfig/50-user.conf @@ -0,0 +1 @@ +50-user.conf \ No newline at end of file diff --git a/.config/fontconfig/fonts.conf b/.config/fontconfig/fonts.conf new file mode 100644 index 0000000..9fa0ca9 --- /dev/null +++ b/.config/fontconfig/fonts.conf @@ -0,0 +1,16 @@ + + + + + serif + Caladea + + + sans-serif + Adwaita Sans + + + monospace + Adwaita Mono + + diff --git a/.config/fuzzel/fuzzel.ini b/.config/fuzzel/fuzzel.ini index d9fce01..9f716b6 100644 --- a/.config/fuzzel/fuzzel.ini +++ b/.config/fuzzel/fuzzel.ini @@ -1,5 +1,5 @@ # output= -font=Adwaita Mono +font=monospace # dpi-aware=auto # use-bold=no prompt="" @@ -50,18 +50,18 @@ inner-pad=4 # enable-mouse=yes [colors] -background=191919E5 +background=191919ff text=ffffffff -message=999999ff +message=7f7f7fff prompt=999999ff placeholder=505050ff input=ffffffff match=7fc8ffff -selection=7f7f7f7f +selection=505050ff selection-text=ffffffff selection-match=7fc8ffff counter=999999ff -border=7f7f7fE5 +border=999999ff [border] width=2 diff --git a/.config/mako/config b/.config/mako/config index 6115111..5ba1dea 100644 --- a/.config/mako/config +++ b/.config/mako/config @@ -1,4 +1,4 @@ -font=Adwaita Sans 10 +font=sans-serif default-timeout=5000 @@ -7,6 +7,22 @@ anchor=top-center margin=12 padding=8 -background-color=#191919E5 -border-color=#505050 -progress-color=source #909090E5 +background-color=#505050E5 +border-color=#999999 +progress-color=source #7f7f7fE5 + +[urgency=low] +border-color=#7f7f7f + +[urgency=high] +border-color=#9b0000 +default-timeout=0 + +[category=status] +anchor=center +group-by=category +history=0 +format=%s\n%b +default-timeout=1000 + +# vim: ft=conf diff --git a/.config/niri/config.kdl b/.config/niri/config.kdl index 0079f09..48c6e27 100644 --- a/.config/niri/config.kdl +++ b/.config/niri/config.kdl @@ -344,9 +344,15 @@ window-rule { match app-id=r#"ipe$"# title="^Ipe: waiting$" open-floating true } + +window-rule { + match is-floating=true + baba-is-float true +} + // Example: block out two password managers from screen capture. // (This example rule is commented out with a "/-" in front.) -/-window-rule { +window-rule { match app-id=r#"^org\.keepassxc\.KeePassXC$"# match app-id=r#"^org\.gnome\.World\.Secrets$"# @@ -394,9 +400,9 @@ binds { // Example volume keys mappings for PipeWire & WirePlumber. // The allow-when-locked=true property makes them work even when the session is locked. // Using spawn-sh allows to pass multiple arguments together with the command. - XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+"; } - XF86AudioLowerVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-"; } - XF86AudioMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; } + XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 0.05+ && volumenotify.fish"; } + XF86AudioLowerVolume allow-when-locked=true { spawn-sh "wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 0.05- && volumenotify.fish"; } + XF86AudioMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle && volumenotify.fish"; } XF86AudioMicMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; } XF86AudioPlay allow-when-locked=true { spawn-sh "mpc toggle"; } @@ -405,8 +411,8 @@ binds { // Example brightness key mappings for brightnessctl. // You can use regular spawn with multiple arguments too (to avoid going through "sh"), // but you need to manually put each argument in separate "" quotes. - XF86MonBrightnessUp allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "+10%"; } - XF86MonBrightnessDown allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "10%-"; } + XF86MonBrightnessUp allow-when-locked=true { spawn-sh "brightnessctl --class=backlight set +5% && brightnessnotify.fish"; } + XF86MonBrightnessDown allow-when-locked=true { spawn-sh "brightnessctl --class=backlight set 5%- && brightnessnotify.fish"; } // Open/close the Overview: a zoomed-out view of workspaces and windows. // You can also move the mouse into the top-left hot corner, diff --git a/.config/waybar/config.jsonc b/.config/waybar/config.jsonc index 4c7fc9c..26f2038 100644 --- a/.config/waybar/config.jsonc +++ b/.config/waybar/config.jsonc @@ -1,85 +1,107 @@ { - "layer": "top", - "modules-left": ["niri/workspaces"], - "modules-center": ["niri/window"], - "modules-right": ["bluetooth", "network", "wireplumber#source", "wireplumber#sink", "battery", "clock"], + "layer": "top", + "modules-left": ["niri/workspaces"], + "modules-center": ["niri/window"], + "modules-right": ["bluetooth", "network", "wireplumber#source", "wireplumber#sink", "battery", "clock"], - - "inhibitor": { - "what": "handle-lid-switch", - "format": "{icon}", - "format-icons": { - "activated": "󰅶", - "deactivated": "󰾪" - }, - "tooltip": false - }, + + "inhibitor": { + "what": "handle-lid-switch", + "format": "{icon}", + "format-icons": { + "activated": "󰅶", + "deactivated": "󰾪" + }, + "tooltip": false + }, - "niri/window": { - "max-length": 100 - }, + "niri/window": { + "max-length": 100 + }, - "bluetooth": { - // "controller": "controller1", // specify the alias of the controller if there are more than 1 on the system - "format": "", - "format-disabled": "󰂲", // an empty format will hide the module - "format-connected": "󰂯", - "tooltip-format": "{controller_alias}\t{controller_address}", - "tooltip-format-connected": "{controller_alias}\t{controller_address}\n\n{device_enumerate}", - "tooltip-format-enumerate-connected": "{device_alias}\t{device_address}" - }, - - "network": { - "interface": "wlp2s0", - "format": "{ifname}", - "format-icons": ["󰤟", "󰤢", "󰤥", "󰤨"], - "format-wifi": "{icon}", - "format-ethernet": "󰈁", - "format-disconnected": "", //An empty format will hide the module. - "tooltip-format": "{ifname}", - "tooltip-format-wifi": "󰖩 {essid} ({signalStrength}%)", - "tooltip-format-ethernet": "󰈁 {ifname}", - "tooltip-format-disconnected": "Disconnected" - }, + "bluetooth": { + // "controller": "controller1", // specify the alias of the controller if there are more than 1 on the system + "format": "", + "format-disabled": "󰂲", // an empty format will hide the module + "format-connected": "󰂯", + "tooltip-format": "{controller_alias}\t{controller_address}", + "tooltip-format-connected": "{controller_alias}\t{controller_address}\n\n{device_enumerate}", + "tooltip-format-enumerate-connected": "{device_alias}\t{device_address}" + }, + + "network": { + "interface": "wlp2s0", + "format": "{ifname}", + "format-icons": ["󰤟", "󰤢", "󰤥", "󰤨"], + "format-wifi": "{icon}", + "format-ethernet": "󰈁", + "format-disconnected": "", //An empty format will hide the module. + "tooltip-format": "{ifname}", + "tooltip-format-wifi": "󰖩 {essid} ({signalStrength}%)", + "tooltip-format-ethernet": "󰈁 {ifname}", + "tooltip-format-disconnected": "Disconnected" + }, - "wireplumber#sink": { - "format": "{icon}", - "format-muted": "󰖁", - "format-icons": ["󰕿", "󰖀", "󰕾"], - "tooltip-format": "{node_name} ({volume}%)", - "on-click-right": "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle", - "scroll-step": 5 - }, - - "wireplumber#source": { - "node-type": "Audio/Source", - "format": "󰍬", - "format-muted": "󰍭", - "tooltip-format": "{node_name} ({volume}%)", - "on-click-right": "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle", - "scroll-step": 5 - }, - - "battery": { - "interval": 60, - "states": { - "warning": 30, - "critical": 15 - }, - "events": { - "on-discharging-warning": "notify-send -u normal 'Low Battery'", - "on-discharging-critical": "notify-send -u critical 'Very Low Battery'" - }, - "format": "{icon}", - "format-icons": ["󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"], - "format-charging": "󰂄", - "tooltip-format": "{time} ({capacity}%)" - }, + "wireplumber#sink": { + "format": "{icon}", + "format-muted": "󰖁", + "format-icons": ["󰕿", "󰖀", "󰕾"], + "tooltip-format": "{node_name} ({volume}%)", + "on-click-right": "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle", + "scroll-step": 5 + }, - "clock": { - "format-alt": "{:%a, %d. %b %H:%M}", - "tooltip": false - } + "wireplumber#source": { + "node-type": "Audio/Source", + "format": "󰍬", + "format-muted": "󰍭", + "tooltip-format": "{node_name} ({volume}%)", + "on-click-right": "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle", + "scroll-step": 5 + }, + + "battery": { + "interval": 60, + "states": { + "warning": 30, + "critical": 15 + }, + "events": { + "on-discharging-warning": "notify-send -u normal 'Low Battery'", + "on-discharging-critical": "notify-send -u critical 'Very Low Battery'" + }, + "format": "{icon}", + "format-icons": ["󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"], + "format-charging": "󰂄", + "tooltip-format": "Battery ({capacity}%)\n{power}W {time}" + }, + + "clock": { + "format": "{:%H:%M}", + "format-alt": "{:%A, %B %d, %Y (%R)}", + "tooltip-format": "{calendar}", + "calendar": { + "mode" : "year", + "mode-mon-col" : 3, + "weeks-pos" : "right", + "on-scroll" : 1, + "on-click-right": "mode", + "format": { + "months": "{}", + "days": "{}", + "weeks": "W{}", + "weekdays": "{}", + "today": "{}" + } + }, + "actions": { + "on-click-right": "mode", + "on-click-forward": "tz_up", + "on-click-backward": "tz_down", + "on-scroll-up": "shift_up", + "on-scroll-down": "shift_down" + } + } } diff --git a/.config/waybar/style.css b/.config/waybar/style.css index 0d5cfc8..a203a68 100644 --- a/.config/waybar/style.css +++ b/.config/waybar/style.css @@ -8,7 +8,7 @@ tooltip { font-weight: normal; background: rgba(25, 25, 25, 0.9); - border: solid 2px #505050; + border: solid 2px rgba(80, 80, 80, 0.9); border-radius: 0px; } diff --git a/.local/scripts/actionmenu.fish b/.local/scripts/actionmenu.fish index caeef0b..2b0569c 100755 --- a/.local/scripts/actionmenu.fish +++ b/.local/scripts/actionmenu.fish @@ -1,5 +1,6 @@ #!/usr/bin/env fish +# Select folders in current semester function open_semester set recent "/home/never/Documents/InNa/25_WiSe/" set options (ls $recent) @@ -8,6 +9,7 @@ function open_semester alacritty --working-directory $recent/$input end +# Open user directories function open_location set options "25_WiSe" "󰈙 Documents" "󰝚 Music" "󰋩 Pictures" "󰕧 Videos" "󰇚 Downloads" set input (menu $options) @@ -28,6 +30,7 @@ function open_location end end +# Open WueCampus Courses function open_course set options "Algorithmen und Datenstrukturen" "Modellbildung und Simulation" "Amateurfunkkurs" "Datenbanken" set input (menu $options) @@ -44,6 +47,7 @@ function open_course end end +# Select the default audio source function audio_source set dump (string trim -c '"' (pw-dump | jq '.[] | select(.info.props."media.class" == "Audio/Source")' | jq '.id, .info.props."node.description"')) @@ -63,6 +67,7 @@ function audio_source wpctl set-default $ids[$input] end +# Select the default audio sink function audio_sink set dump (string trim -c '"' (pw-dump | jq '.[] | select(.info.props."media.class" == "Audio/Sink")' | jq '.id, .info.props."node.description"')) @@ -82,6 +87,7 @@ function audio_sink wpctl set-default $ids[$input] end +# Select the network connection profile function network_connection set options (nmcli --terse --fields name connection show) set input (menu $options || exit) @@ -89,6 +95,7 @@ function network_connection notify-send "Connect to network $input" (nmcli connection up $input) end +# Select a paired bluetooth connection function bluetooth_connection set dump (bluetoothctl devices | string replace "Device " "" | string split -m 1 " ") @@ -108,18 +115,23 @@ function bluetooth_connection notify-send "Connect to bluetooth device $names[$input]" (bluetoothctl connect $ids[$input] | string collect) end +# Select the system color scheme preference function color_scheme set options "Light" "Dark" set input (menu $options) switch $input case $options[1] + niri msg action do-screen-transition dconf write /org/gnome/desktop/interface/color-scheme \'prefer-light\' case $options[2] + niri msg action do-screen-transition dconf write /org/gnome/desktop/interface/color-scheme \'prefer-dark\' end end + +# Select sub menu set options "󱂵 Open Location" "󰑴 Open WueCampus Course" "󰍬 Select Audio Source" "󰕾 Select Audio Sink" "󰂯 Select Bluetooth" "󰛳 Select Network" "󰔎 Color Scheme" set input (menu $options) diff --git a/.local/scripts/brightnessnotify.fish b/.local/scripts/brightnessnotify.fish new file mode 100755 index 0000000..8fc2a6c --- /dev/null +++ b/.local/scripts/brightnessnotify.fish @@ -0,0 +1,8 @@ +#!/usr/bin/env fish + +set brightness (brightnessctl --class=backlight get) +set max_brightness (brightnessctl --class=backlight max) + +set brightness (math --scale 0 --scale-mode round "($brightness / $max_brightness) * 100") + +notify-send -c 'status' -h int:value:$brightness "Brightness: $brightness%" diff --git a/.local/scripts/volumenotify.fish b/.local/scripts/volumenotify.fish new file mode 100755 index 0000000..0c884ab --- /dev/null +++ b/.local/scripts/volumenotify.fish @@ -0,0 +1,7 @@ +#!/usr/bin/env fish + +set volume (string match -r '[0-9]+.[0-9]+' (wpctl get-volume @DEFAULT_AUDIO_SINK@)) + +set volume (math --scale 0 --scale-mode round "$volume * 100") + +notify-send -c 'status' -h int:value:$volume "Volume: $volume%" diff --git a/README.md b/README.md index 574377f..4cc246f 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ stow ./ Install necessary software. ```sh -sudo dnf install fish niri waybar fuzzel mako swaylock swaybg swayidle alacritty +sudo dnf install fish niri brightnessctl waybar fuzzel mako swaylock swaybg swayidle alacritty ``` Change the shell to `fish`. @@ -51,6 +51,13 @@ Install the packages. sudo dnf install qt6-qtbase-devel qt6-qtbase-static qt6-qt3d-devel harfbuzz-devel qt6-qtsvg-devel qt6-qtspeech-devel ``` +### LuaKit +Build the develop branch of [Luakit](https://github.com/luakit/luakit). +Install the packages. +```sh +sudo dnf install gtk3-devel webkit2gtk4.1-devel sqlite3pp-devel luajit-devel lua5.1-filesystem +``` + ### mpd Install mpd. ```sh