mirror of
				https://github.com/ItsDrike/dotfiles.git
				synced 2025-10-31 07:56:36 +00:00 
			
		
		
		
	Compare commits
	
		
			10 commits
		
	
	
		
			510d01ef47
			...
			ee9469230f
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| ee9469230f | |||
| fcf1762b1c | |||
| 409723adf6 | |||
| c51ae232c6 | |||
| bcff64f0fc | |||
| fbc693674d | |||
| 1abeb1e9ab | |||
| d68284ed85 | |||
| 35dceab233 | |||
| 3993fb896d | 
					 48 changed files with 118 additions and 139 deletions
				
			
		|  | @ -47,7 +47,7 @@ listener { | |||
| # On low battery, or after HibernateDelaySec (/etc/systemd/sleep.conf), the system | ||||
| # will enter full hibernation | ||||
| listener { | ||||
|   timeout = 600, | ||||
|   timeout = 600 | ||||
|   on-timeout = systemctl suspend-then-hibernate | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,11 +1,4 @@ | |||
| exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP XDG_SESSION_TYPE GTK_THEME QT_QPA_PLATFORMTHEME QT_STYLE_OVERRIDE | ||||
| exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP GTK_THEME QT_QPA_PLATFORMTHEME QT_STYLE_OVERRIDE | ||||
| 
 | ||||
| # Hyprland socket sometimes isn't yet loaded, sleep for sec | ||||
| exec-once = sleep 1 && systemctl --user start wayland-session.target   | ||||
| 
 | ||||
| exec-once = sleep 3 && vesktop | ||||
| # exec-once = sleep 3 && discord | ||||
| # exec-once = sleep 3 && webcord --start-minimized | ||||
| exec-once = uwsm finalize | ||||
| exec-once = uwsm app vesktop | ||||
| 
 | ||||
| # vi: ft=hyprlang | ||||
|  |  | |||
|  | @ -23,23 +23,22 @@ bind = SUPER_SHIFT, S, layoutmsg, togglesplit | |||
| # ### PROGRAMS ### | ||||
| # ################ | ||||
| 
 | ||||
| bind = SUPER, R, exec, wofi --show drun | ||||
| bind = SUPER_SHIFT, Return, exec, wofi --show run | ||||
| bind = SUPER_SHIFT, V, exec, clipman pick -t wofi | ||||
| bind = SUPER, R, exec, uwsm app -- $(uwsm app -- wofi --show drun --define=drun-print_desktop_file=true) | ||||
| bind = SUPER_SHIFT, V, exec, uwsm app -- clipman pick -t wofi | ||||
| 
 | ||||
| bind = SUPER, Return, exec, kitty | ||||
| bind = SUPER, X, exec, pcmanfm-qt | ||||
| bind = SUPER, B, exec, firefox | ||||
| bind = SUPER, C, exec, qalculate-gtk | ||||
| bind = , XF86Calculator, exec, qalculate-gtk | ||||
| bind = SUPER, Return, exec, uwsm app -- kitty | ||||
| bind = SUPER, X, exec, uwsm app -- pcmanfm-qt | ||||
| bind = SUPER, B, exec, uwsm app -- firefox | ||||
| bind = SUPER, C, exec, uwsm app -- qalculate-gtk | ||||
| bind = , XF86Calculator, exec, uwsm app -- qalculate-gtk | ||||
| 
 | ||||
| # ##################### | ||||
| # ### DE/WM CONTROL ### | ||||
| # ##################### | ||||
| 
 | ||||
| bind = SUPER_SHIFT, Q, exec, menuquit | ||||
| bind = SUPER_SHIFT, Q, exec, uwsm app -- menuquit | ||||
| bind = SUPER_CTRL, L, exec, loginctl lock-session | ||||
| bind = SUPER_SHIFT, L, exec, wlogout -p layer-shell | ||||
| bind = SUPER_SHIFT, L, exec, uwsm app -- wlogout -p layer-shell | ||||
| bind = SUPER_SHIFT, T, exec, toggle-idle | ||||
| 
 | ||||
| # ################### | ||||
|  | @ -63,8 +62,8 @@ bind = SUPER_ALT, Print, exec, ocr && notify-send "OCR" "Text copied to clipboar | |||
| 
 | ||||
| # XF86Favorites key for recording | ||||
| # (don't question me, I had it free) | ||||
| bind = , 164, exec, quick-record --notify toggle | ||||
| bind = SUPER, 164, exec, quick-record toggle | ||||
| bind = , 164, exec, uwsm app -- quick-record --notify toggle | ||||
| bind = SUPER, 164, exec, uwsm -- app quick-record toggle | ||||
| 
 | ||||
| # ##################### | ||||
| # ### NOTIFICATIONS ### | ||||
|  | @ -283,7 +282,7 @@ bind = CTRL, F10, pass, ^(com\.obsproject\.Studio)$ | |||
| 
 | ||||
| # Isolating group to prevent keybind capturing (for games etc) | ||||
| # SUPER + End | ||||
| bind = SUPER, End, exec, hyprctl dispatch submap isolate && notify-send "Keybind isolation" "Keybind isolation on" | ||||
| bind = SUPER, End, exec, hyprctl dispatch submap isolate && notify-send "Keybind isolation" "Keybind isolation on (Super + END to disable)" | ||||
| submap = isolate | ||||
| bind = SUPER, End, exec, hyprctl dispatch submap reset && notify-send "Keybind isolation" "Keybind isolation off" | ||||
| submap = reset | ||||
|  |  | |||
|  | @ -5,4 +5,5 @@ MONITOR_ID="$1" | |||
| MONITOR_NAME="$2" | ||||
| MONITOR_DESCRIPTION="$3" | ||||
| 
 | ||||
| eww open bar1 | ||||
| systemctl --user start eww-window@bar1.service | ||||
| #eww open bar1 | ||||
|  |  | |||
|  | @ -9,11 +9,15 @@ if [ "$MONITORS_AMT" -lt 1 ]; then | |||
| fi | ||||
| 
 | ||||
| if [ "$MONITORS_AMT" -eq 2 ]; then | ||||
|   eww open bar1 | ||||
|   systemctl --user start eww-window@bar1.service | ||||
|   #eww open bar1 | ||||
| fi | ||||
| 
 | ||||
| if [ "$MONITORS_AMT" -eq 1 ]; then | ||||
|   eww active-windows | grep "bar1" && eww close bar1 | ||||
|   if eww active-windows | grep "bar1"; then | ||||
|     systemctl --user stop eww-window@bar1.service | ||||
|     #eww close bar1 | ||||
|   fi | ||||
| fi | ||||
| 
 | ||||
| if [ "$MONITORS_AMT" -gt 2 ]; then | ||||
|  |  | |||
|  | @ -3,4 +3,5 @@ set -euo pipefail | |||
| 
 | ||||
| MONITOR_NAME="$1" | ||||
| 
 | ||||
| eww close bar1 | ||||
| systemctl --user stop eww-window@bar1.service | ||||
| # eww close bar1 | ||||
|  |  | |||
|  | @ -8,11 +8,10 @@ | |||
| # which means the XDG definitions will be ignored anyway, and | ||||
| # defining them may break programs when root is actually logged in. | ||||
| 
 | ||||
| 
 | ||||
| # Add all folders in ~/.local/bin into PATH | ||||
| # Some window managers require this line to be in profile not in .zshenv | ||||
| if [ -d "$HOME/.local/bin" ]; then | ||||
|     PATH+=":${$(find -L ~/.local/bin -type d | tr '\n' ':')%%:}" | ||||
|   PATH+=":$(find -L ~/.local/bin -type d | tr '\n' ':' | sed 's/:$//')" | ||||
| fi | ||||
| 
 | ||||
| if [ -d "$HOME/.local/share/npm/bin" ]; then | ||||
|  | @ -97,6 +96,7 @@ export NODE_REPL_HISTORY="$XDG_DATA_HOME/node_repl_history" | |||
| export DOTNET_CLI_HOME="$XDG_DATA_HOME/dotnet" | ||||
| export JUPYTER_CONFIG_DIR="$XDG_CONFIG_HOME/jupyter" | ||||
| export RYE_HOME="$XDG_CONFIG_HOME/rye" | ||||
| export OMNISHARPHOME="$XDG_CONFIG_HOME"/omnisharp | ||||
| 
 | ||||
| # Theming | ||||
| export GTK_THEME="Tokyonight-Dark" | ||||
|  |  | |||
|  | @ -1,13 +1,14 @@ | |||
| [Unit] | ||||
| Description="Show a notification when the battery is low" | ||||
| PartOf=graphical-session.target | ||||
| Description=Show a notification when the battery is low | ||||
| Requires=graphical-session.target | ||||
| 
 | ||||
| [Service] | ||||
| ExecStart=%h/.local/bin/scripts/gui/battery-notification | ||||
| Type=oneshot | ||||
| ExecStart=%h/.local/bin/scripts/gui/battery-notification | ||||
| RemainAfterExit=false | ||||
| Restart=on-failure | ||||
| RestartSec=3s | ||||
| Slice=background-graphical.slice | ||||
| 
 | ||||
| [Install] | ||||
| WantedBy=wm-ready.target | ||||
| WantedBy=graphical-session.target | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,9 +1,12 @@ | |||
| [Unit] | ||||
| Description="Timer for low battery notification sendout" | ||||
| Description=Timer for low battery notification sendout | ||||
| After=graphical-session.target | ||||
| Requires=graphical-session.target | ||||
| PartOf=graphical-session.target | ||||
| 
 | ||||
| [Timer] | ||||
| OnUnitActiveSec=20s | ||||
| 
 | ||||
| [Install] | ||||
| WantedBy=wm-ready.target | ||||
| WantedBy=graphical-session.target | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,10 +1,13 @@ | |||
| [Unit] | ||||
| Description="Clipboard clipboard manager" | ||||
| PartOf=graphical-session.target | ||||
| Description=Clipman clipboard manager | ||||
| After=graphical-session.target | ||||
| Requires=graphical-session.target | ||||
| 
 | ||||
| [Service] | ||||
| ExecStart=/usr/bin/wl-paste -t text --watch /usr/bin/clipman store --no-persist | ||||
| Restart=on-failure | ||||
| Slice=background-graphical.slice | ||||
| 
 | ||||
| [Install] | ||||
| WantedBy=wm-ready.target | ||||
| WantedBy=graphical-session.target | ||||
| 
 | ||||
|  |  | |||
|  | @ -0,0 +1 @@ | |||
| /usr/lib/systemd/user/systemd-lock-handler.service | ||||
|  | @ -1,10 +0,0 @@ | |||
| [Unit] | ||||
| Description="Dunst daemon" | ||||
| PartOf=graphical-session.target | ||||
| 
 | ||||
| [Service] | ||||
| ExecStart=/usr/bin/dunst | ||||
| Restart=on-failure | ||||
| 
 | ||||
| [Install] | ||||
| WantedBy=wm-ready.target | ||||
|  | @ -1,17 +1,18 @@ | |||
| [Unit] | ||||
| Description="Open %I eww window" | ||||
| PartOf=graphical-session.target | ||||
| Description=Open %I eww window | ||||
| After=graphical-session.target | ||||
| After=eww.service | ||||
| PartOf=eww.service | ||||
| 
 | ||||
| [Service] | ||||
| Type=oneshot | ||||
| ExecStartPre=/usr/bin/eww ping | ||||
| ExecStart=/usr/bin/eww open %i | ||||
| ExecStop=/usr/bin/eww close %i | ||||
| Type=oneshot | ||||
| RemainAfterExit=true | ||||
| Restart=on-failure | ||||
| RestartSec=3s | ||||
| Slice=background-graphical.slice | ||||
| 
 | ||||
| [Install] | ||||
| WantedBy=wm-ready.target | ||||
| WantedBy=graphical-session.target | ||||
|  |  | |||
|  | @ -1,11 +1,14 @@ | |||
| [Unit] | ||||
| Description="Eww daemon" | ||||
| PartOf=graphical-session.target | ||||
| Description=Eww daemon | ||||
| After=graphical-session.target | ||||
| After=pipewire.service | ||||
| Requires=graphical-session.target | ||||
| Requires=pipewire.service | ||||
| 
 | ||||
| [Service] | ||||
| ExecStart=/usr/bin/eww daemon --no-daemonize | ||||
| Restart=always | ||||
| RestartSec=3s | ||||
| Slice=background-graphical.slice | ||||
| 
 | ||||
| [Install] | ||||
| WantedBy=wm-ready.target | ||||
| WantedBy=graphical-session.target | ||||
|  |  | |||
|  | @ -1,14 +1,14 @@ | |||
| [Unit] | ||||
| Description="Show unread GitHub notifications" | ||||
| PartOf=graphical-session.target | ||||
| After=dunst.service | ||||
| Description=Show unread GitHub notifications | ||||
| Requires=graphical-session.target | ||||
| 
 | ||||
| [Service] | ||||
| ExecStart=%h/.local/bin/scripts/gui/gh-notification -vv | ||||
| Type=oneshot | ||||
| ExecStart=%h/.local/bin/scripts/gui/gh-notification -vv | ||||
| RemainAfterExit=false | ||||
| Restart=on-failure | ||||
| RestartSec=3s | ||||
| Slice=background-graphical.slice | ||||
| 
 | ||||
| [Install] | ||||
| WantedBy=wm-ready.target | ||||
| WantedBy=graphical-session.target | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,9 +1,12 @@ | |||
| [Unit] | ||||
| Description="Timer for GitHub notification sendout" | ||||
| Description=Timer for GitHub notification sendout | ||||
| After=graphical-session.target | ||||
| Requires=graphical-session.target | ||||
| PartOf=graphical-session.target | ||||
| 
 | ||||
| [Timer] | ||||
| OnUnitActiveSec=1m | ||||
| 
 | ||||
| [Install] | ||||
| WantedBy=wm-ready.target | ||||
| WantedBy=graphical-session.target | ||||
| 
 | ||||
|  |  | |||
|  | @ -0,0 +1,2 @@ | |||
| [Service] | ||||
| Environment="GNUPGHOME=%h/.local/share/gnupg" | ||||
|  | @ -0,0 +1 @@ | |||
| /usr/lib/systemd/user/hypridle.service | ||||
|  | @ -0,0 +1 @@ | |||
| /usr/lib/systemd/user/swaync.service | ||||
|  | @ -1,10 +0,0 @@ | |||
| [Unit] | ||||
| Description="Idle management daemon" | ||||
| PartOf=graphical-session.target | ||||
| 
 | ||||
| [Service] | ||||
| ExecStart=/usr/bin/stdbuf -oL /usr/bin/hypridle | ||||
| Restart=on-failure | ||||
| 
 | ||||
| [Install] | ||||
| WantedBy=wayland-session.target | ||||
|  | @ -0,0 +1,2 @@ | |||
| [Service] | ||||
| Slice=background-graphical.slice | ||||
|  | @ -1,10 +1,14 @@ | |||
| [Unit] | ||||
| Description="Daemon watching for Hyprland monitor updates" | ||||
| PartOf=graphical-session.target | ||||
| Description=Daemon watching for Hyprland monitor updates | ||||
| After=wayland-session@hyprland.desktop.target | ||||
| After=eww.service | ||||
| Requires=eww.service | ||||
| Requires=wayland-session@hyprland.desktop.target | ||||
| 
 | ||||
| [Service] | ||||
| ExecStart=%h/.local/bin/scripts/gui/hyprland/hyprland-monitord | ||||
| Restart=on-failure | ||||
| Slice=background-graphical.slice | ||||
| 
 | ||||
| [Install] | ||||
| WantedBy=wayland-session.target | ||||
| WantedBy=wayland-session@hyprland.desktop.target | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| [Unit] | ||||
| Description=Run hyprlock screenlocker on lock dbus event (using systemd-lock-handler) | ||||
| Requisite=wm-ready.target | ||||
| Requisite=graphical-session.target | ||||
| # if hyprlock exists cleanly, enter a 'unlock' target | ||||
| OnSuccess=unlock.target | ||||
| # When lock.target is stopped, stop this unit too | ||||
|  | @ -9,9 +9,10 @@ PartOf=lock.target | |||
| [Service] | ||||
| ExecStart=/usr/bin/hyprlock | ||||
| StandardOutput=journal | ||||
| ExecStop=/bin/kill -s SIGUSR1 $MAINPID | ||||
| ExecStopPost=/bin/loginctl unlock-session | ||||
| Restart=on-failure | ||||
| Slice=background-graphical.slice | ||||
| 
 | ||||
| [Install] | ||||
| WantedBy=lock.target | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,12 +0,0 @@ | |||
| [Unit] | ||||
| Description="Hyprpaper (Hyprland wallpaper daemon" | ||||
| PartOf=graphical-session.target | ||||
| After=graphical-session.target | ||||
| 
 | ||||
| [Service] | ||||
| Type=simple | ||||
| ExecStart=/usr/bin/hyprpaper | ||||
| Restart=on-failure | ||||
| 
 | ||||
| [Install] | ||||
| WantedBy=wayland-session.target | ||||
|  | @ -0,0 +1,3 @@ | |||
| [Service] | ||||
| ExecCondition=/lib/systemd/systemd-xdg-autostart-condition "Hyprland" "" | ||||
| Slice=background-graphical.slice | ||||
|  | @ -1,10 +1,12 @@ | |||
| [Unit] | ||||
| Description="PolicyKit authentication agent" | ||||
| PartOf=graphical-session.target | ||||
| After=graphical-session.target | ||||
| Requires=graphical-session.target | ||||
| 
 | ||||
| [Service] | ||||
| ExecStart=/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 | ||||
| Restart=on-failure | ||||
| Slice=background-graphical.slice | ||||
| 
 | ||||
| [Install] | ||||
| WantedBy=wm-ready.target | ||||
| WantedBy=graphical-session.target | ||||
|  |  | |||
|  | @ -4,8 +4,10 @@ Requisite=swaync.service | |||
| Before=lock.target | ||||
| 
 | ||||
| [Service] | ||||
| ExecStart=/usr/bin/swaync-client --inhibitor-add screen-locker | ||||
| Type=oneshot | ||||
| ExecStart=/usr/bin/swaync-client --inhibitor-add screen-locker | ||||
| Slice=background-graphical.slice | ||||
| 
 | ||||
| [Install] | ||||
| WantedBy=lock.target | ||||
| 
 | ||||
|  |  | |||
|  | @ -4,8 +4,9 @@ Requisite=swaync.service | |||
| After=unlock.target | ||||
| 
 | ||||
| [Service] | ||||
| ExecStart=/usr/bin/swaync-client --inhibitor-remove screen-locker | ||||
| Type=oneshot | ||||
| ExecStart=/usr/bin/swaync-client --inhibitor-remove screen-locker | ||||
| Slice=background-graphical.slice | ||||
| 
 | ||||
| [Install] | ||||
| WantedBy=unlock.target | ||||
|  |  | |||
|  | @ -1,10 +0,0 @@ | |||
| [Unit] | ||||
| Description="Swaync daemon" | ||||
| PartOf=graphical-session.target | ||||
| 
 | ||||
| [Service] | ||||
| ExecStart=/usr/bin/swaync | ||||
| Restart=on-failure | ||||
| 
 | ||||
| [Install] | ||||
| WantedBy=wayland-session.target | ||||
							
								
								
									
										2
									
								
								home/.config/systemd/user/swaync.service.d/override.conf
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								home/.config/systemd/user/swaync.service.d/override.conf
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,2 @@ | |||
| [Service] | ||||
| Slice=background-graphical.slice | ||||
|  | @ -1,6 +0,0 @@ | |||
| [Unit] | ||||
| Description=Waylnad compositor loaded and ready | ||||
| BindsTo=wm-ready.target | ||||
| Wants=xdg-desktop-portal.service | ||||
| Wants=xdg-desktop-portal-hyprland.service | ||||
| Wants=systemd-lock-handler.service | ||||
|  | @ -1 +0,0 @@ | |||
| /home/itsdrike/.config/systemd/user/hypridle.service | ||||
|  | @ -1,10 +1,12 @@ | |||
| [Unit] | ||||
| Description="Redshift and brightness control for Wayland" | ||||
| BindsTo=wayland-session.target | ||||
| Description=Redshift and brightness control for Wayland | ||||
| After=graphical-session.target | ||||
| Requires=graphical-session.target | ||||
| 
 | ||||
| [Service] | ||||
| ExecStart=/usr/bin/wl-gammarelay-rs run | ||||
| Restart=on-failure | ||||
| Slice=background-graphical.slice | ||||
| 
 | ||||
| [Install] | ||||
| WantedBy=wayland-session.target | ||||
| WantedBy=graphical-session.target | ||||
|  |  | |||
|  | @ -1,7 +0,0 @@ | |||
| [Unit] | ||||
| Description=Window Manager loaded and ready | ||||
| BindsTo=graphical-session.target | ||||
| Wants=wireplumber.service | ||||
| Wants=pipewire-pulse.socket | ||||
| Wants=usbguard-notifier.service | ||||
| Wants=gnome-keyring-daemon.service | ||||
							
								
								
									
										1
									
								
								home/.config/uwsm/default-id
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								home/.config/uwsm/default-id
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| hyprland-uwsm.desktop | ||||
							
								
								
									
										3
									
								
								home/.config/uwsm/env
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								home/.config/uwsm/env
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,3 @@ | |||
| #!/bin/bash | ||||
| 
 | ||||
| source "$HOME"/.config/shell/environment | ||||
|  | @ -1,18 +1,12 @@ | |||
| #!/usr/bin/env bash | ||||
| set -euo pipefail | ||||
| 
 | ||||
| idleprog="hypridle" # or swayidle | ||||
| serv="hypridle.service" | ||||
| 
 | ||||
| pid="$(pidof "$idleprog" || true)" | ||||
| if [ -n "$pid" ]; then | ||||
|   # is process suspended? | ||||
|   if ps -o stat= -p "$pid" | grep T >/dev/null; then | ||||
|     kill -CONT "$pid" | ||||
|     notify-send "Idle-Toggle" "Idle timeouts enabled" | ||||
|   else | ||||
|     kill -STOP "$pid" | ||||
| if systemctl --user is-active --quiet "$serv"; then | ||||
|   systemctl --user stop "$serv" | ||||
|   notify-send "Idle-Toggle" "Idle timeouts disabled" | ||||
|   fi | ||||
| else | ||||
|   notify-send "Idle-Toggle" "$idleprog not running!" | ||||
|   systemctl --user start "$serv" | ||||
|   notify-send "Idle-Toggle" "Idle timeouts enabled" | ||||
| fi | ||||
|  |  | |||
|  | @ -99,7 +99,8 @@ paru -S --noconfirm --needed \ | |||
| 
 | ||||
| # Wayland WM essentials | ||||
| paru -S --noconfirm --needed \ | ||||
|   wl-clipboard xdg-desktop-portal xdg-desktop-portal-gtk qt5-wayland qt6-wayland wev wl-gammarelay-rs wdisplays | ||||
|   wl-clipboard xdg-desktop-portal xdg-desktop-portal-gtk qt5-wayland qt6-wayland wev wl-gammarelay-rs wdisplays \ | ||||
|   uwsm | ||||
| 
 | ||||
| # Utilities | ||||
| paru -S --noconfirm --needed \ | ||||
|  |  | |||
|  | @ -7,7 +7,7 @@ vt = 1 | |||
| # If the user logs out, greetd will render the default session | ||||
| [initial_session] | ||||
| user = "itsdrike" | ||||
| command = "/usr/local/bin/greetd-session-wrapper Hyprland" | ||||
| command = "/usr/local/bin/greetd-session-wrapper uwsm start hyprland.desktop" | ||||
| 
 | ||||
| # The default session, also known as the greeter. | ||||
| [default_session] | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue