mirror of
https://github.com/starr-dusT/dotfiles.git
synced 2025-02-19 19:27:31 -08:00
add initial hyprland/waybar config
This commit is contained in:
parent
082ffb235e
commit
5451722654
97
home/dot_config/hypr/hyprland.conf
Normal file
97
home/dot_config/hypr/hyprland.conf
Normal file
@ -0,0 +1,97 @@
|
||||
# See https://wiki.hyprland.org/Configuring/Monitors/
|
||||
monitor=,preferred,auto,auto
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
||||
$mod = SUPER
|
||||
$term = kitty
|
||||
$e = & hyprctl dispatch submap reset
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
||||
|
||||
# Execute your favorite apps at launch
|
||||
# exec-once = waybar & hyprpaper & firefox
|
||||
|
||||
# Source a file (multi-file configs)
|
||||
source = ~/.config/hypr/workspaces.conf
|
||||
source = ~/.config/hypr/keybinds.conf
|
||||
source = ~/.config/hypr/windows.conf
|
||||
source = ~/.config/hypr/start.conf
|
||||
|
||||
# Some default env vars.
|
||||
env = XCURSOR_SIZE,24
|
||||
|
||||
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
|
||||
input {
|
||||
kb_layout = us
|
||||
kb_variant =
|
||||
kb_model =
|
||||
kb_options =
|
||||
kb_rules =
|
||||
|
||||
follow_mouse = 1
|
||||
|
||||
touchpad {
|
||||
natural_scroll = no
|
||||
}
|
||||
|
||||
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
|
||||
}
|
||||
|
||||
general {
|
||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||
|
||||
gaps_in = 2
|
||||
gaps_out = 2
|
||||
border_size = 2
|
||||
col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
|
||||
col.inactive_border = rgba(595959aa)
|
||||
|
||||
layout = master
|
||||
|
||||
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
|
||||
allow_tearing = false
|
||||
}
|
||||
|
||||
decoration {
|
||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||
|
||||
rounding = 2
|
||||
|
||||
blur {
|
||||
enabled = true
|
||||
size = 3
|
||||
passes = 1
|
||||
}
|
||||
|
||||
drop_shadow = yes
|
||||
shadow_range = 4
|
||||
shadow_render_power = 3
|
||||
col.shadow = rgba(1a1a1aee)
|
||||
}
|
||||
|
||||
animations {
|
||||
# animations are bloat ;)
|
||||
enabled = no
|
||||
}
|
||||
|
||||
master {
|
||||
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
||||
new_is_master = false
|
||||
mfact = 0.5
|
||||
}
|
||||
|
||||
gestures {
|
||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||
workspace_swipe = off
|
||||
}
|
||||
|
||||
misc {
|
||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||
force_default_wallpaper = 0 # Set to 0 to disable the anime mascot wallpapers
|
||||
}
|
||||
|
||||
# Example per-device config
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/#executing for more
|
||||
device:epic-mouse-v1 {
|
||||
sensitivity = -0.5
|
||||
}
|
88
home/dot_config/hypr/keybinds.conf
Normal file
88
home/dot_config/hypr/keybinds.conf
Normal file
@ -0,0 +1,88 @@
|
||||
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
|
||||
bind = $mod SHIFT, return, exec, $term
|
||||
bind = $mod, d, killactive,
|
||||
bind = $mod, t, togglefloating,
|
||||
bind = $mod, f, fullscreen,
|
||||
|
||||
# Audio
|
||||
bindl = , XF86AudioRaiseVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ +2%
|
||||
bindl = , XF86AudioLowerVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ -2%
|
||||
bindl = , XF86AudioMute, exec, pactl set-sink-mute @DEFAULT_SINK@ toggle
|
||||
|
||||
# Utility commands
|
||||
bind = $mod, x, submap, utility
|
||||
submap = utility
|
||||
bind = , q, exit,
|
||||
binde = , h, resizeactive, -50 0
|
||||
binde = , j, resizeactive, 0 50
|
||||
binde = , k, resizeactive, 0 -50
|
||||
binde = , l, resizeactive, 50 0
|
||||
bind = , escape, submap, reset
|
||||
submap = reset
|
||||
|
||||
# Power commands
|
||||
bind = $mod, p, submap, [r]eboot | [s]hutdown
|
||||
submap = [r]eboot | [s]hutdown
|
||||
bind = , s, exec, shutdown now
|
||||
bind = , r, exec, reboot
|
||||
bind = , escape, submap, reset
|
||||
submap = reset
|
||||
|
||||
# Master and stack
|
||||
bind = $mod, j, layoutmsg, cyclenext
|
||||
bind = $mod, k, layoutmsg, cycleprev
|
||||
bind = $mod SHIFT, j, layoutmsg, swapnext
|
||||
bind = $mod SHIFT, k, layoutmsg, swapprev
|
||||
bind = $mod, h, focuscurrentorlast
|
||||
bind = $mod, m, layoutmsg, focusmaster
|
||||
bind = $mod SHIFT, m, layoutmsg, swapwithmaster
|
||||
bind = $mod, tab, layoutmsg, orientationcycle
|
||||
bind = $mod, period, layoutmsg, addmaster
|
||||
bind = $mod, comma, layoutmsg, removemaster
|
||||
|
||||
# Switch workspaces
|
||||
bind = $mod, 1, workspace, name:I
|
||||
bind = $mod, 2, workspace, name:II
|
||||
bind = $mod, 3, workspace, name:III
|
||||
bind = $mod, 4, workspace, name:IV
|
||||
bind = $mod, q, workspace, name:V
|
||||
bind = $mod, w, workspace, name:VI
|
||||
bind = $mod, e, workspace, name:VII
|
||||
bind = $mod, r, workspace, name:VIII
|
||||
bind = $mod, s, moveworkspacetomonitor,name:X current
|
||||
bind = $mod, s, workspace, name:X
|
||||
|
||||
# Move active window to a workspace
|
||||
bind = $mod SHIFT, 1, movetoworkspacesilent, name:I
|
||||
bind = $mod SHIFT, 2, movetoworkspacesilent, name:II
|
||||
bind = $mod SHIFT, 3, movetoworkspacesilent, name:III
|
||||
bind = $mod SHIFT, 4, movetoworkspacesilent, name:IV
|
||||
bind = $mod SHIFT, q, movetoworkspacesilent, name:V
|
||||
bind = $mod SHIFT, w, movetoworkspacesilent, name:VI
|
||||
bind = $mod SHIFT, e, movetoworkspacesilent, name:VII
|
||||
bind = $mod SHIFT, r, movetoworkspacesilent, name:VIII
|
||||
|
||||
# Scroll through existing workspaces with mod + scroll
|
||||
bind = $mod, mouse_down, workspace, e+1
|
||||
bind = $mod, mouse_up, workspace, e-1
|
||||
|
||||
# Move/resize windows with mod + LMB/RMB and dragging
|
||||
bindm = $mod, mouse:272, movewindow
|
||||
bindm = $mod, mouse:273, resizewindow
|
||||
|
||||
# Open applications
|
||||
bind = $mod, a, submap, launcher
|
||||
submap = launcher
|
||||
bind = , r, exec, $term --title launcher -e ~/bin/linux-app-launcher $e
|
||||
bind = , escape, submap, reset
|
||||
submap = reset
|
||||
|
||||
bind = $mod, o, submap, open
|
||||
submap = open
|
||||
bind = , b, exec, chromium $e
|
||||
bind = , o, exec, obsidian $e
|
||||
bind = , s, exec, steam $e
|
||||
bind = , d, exec, discord $e
|
||||
bind = , m, exec, mpv $(wl-paste) $e
|
||||
bind = , escape, submap, reset
|
||||
submap = reset
|
4
home/dot_config/hypr/start.conf
Normal file
4
home/dot_config/hypr/start.conf
Normal file
@ -0,0 +1,4 @@
|
||||
# autostart with hyprland
|
||||
exec-once = waybar
|
||||
exec = ~/.config/sway/scripts/idle.sh
|
||||
exec = swaybg -i ~/media/pictures/wallpapers/random_wallpapers/sulphur-mountain.jpg
|
1
home/dot_config/hypr/windows.conf
Normal file
1
home/dot_config/hypr/windows.conf
Normal file
@ -0,0 +1 @@
|
||||
windowrulev2 = float, size 40% 40%, center, title:^(launcher)$
|
14
home/dot_config/hypr/workspaces.conf
Normal file
14
home/dot_config/hypr/workspaces.conf
Normal file
@ -0,0 +1,14 @@
|
||||
# Monitor definitions
|
||||
$pri = HDMI-A-1
|
||||
$sec = DP-3
|
||||
|
||||
# Workspace settings
|
||||
workspace = name:I, default:true, monitor:$pri
|
||||
workspace = name:II, monitor:$pri
|
||||
workspace = name:III, monitor:$pri
|
||||
workspace = name:IV, monitor:$pri
|
||||
workspace = name:V, default:true, monitor:$sec
|
||||
workspace = name:VI, monitor:$sec
|
||||
workspace = name:VII, monitor:$sec
|
||||
workspace = name:VIII, monitor:$sec
|
||||
workspace = name:X, default:true, on-created-empty:kitty
|
@ -1,123 +0,0 @@
|
||||
// -*- mode: json -*-
|
||||
|
||||
{
|
||||
"layer": "top",
|
||||
"position": "bottom",
|
||||
|
||||
"modules-left": [
|
||||
"sway/workspaces",
|
||||
"custom/right-arrow-dark"
|
||||
],
|
||||
"modules-center": [
|
||||
"custom/left-arrow-dark",
|
||||
"clock#1",
|
||||
"custom/left-arrow-light",
|
||||
"custom/left-arrow-dark",
|
||||
"clock#2",
|
||||
"custom/right-arrow-dark",
|
||||
"custom/right-arrow-light",
|
||||
"clock#3",
|
||||
"custom/right-arrow-dark"
|
||||
],
|
||||
"modules-right": [
|
||||
"custom/left-arrow-dark",
|
||||
"pulseaudio",
|
||||
"custom/left-arrow-light",
|
||||
"custom/left-arrow-dark",
|
||||
"memory",
|
||||
"custom/left-arrow-light",
|
||||
"custom/left-arrow-dark",
|
||||
"cpu",
|
||||
"custom/left-arrow-light",
|
||||
"custom/left-arrow-dark",
|
||||
"battery",
|
||||
"custom/left-arrow-light",
|
||||
"custom/left-arrow-dark",
|
||||
"disk",
|
||||
"custom/left-arrow-light",
|
||||
"custom/left-arrow-dark",
|
||||
"tray"
|
||||
],
|
||||
|
||||
"custom/left-arrow-dark": {
|
||||
"format": "",
|
||||
"tooltip": false
|
||||
},
|
||||
"custom/left-arrow-light": {
|
||||
"format": "",
|
||||
"tooltip": false
|
||||
},
|
||||
"custom/right-arrow-dark": {
|
||||
"format": "",
|
||||
"tooltip": false
|
||||
},
|
||||
"custom/right-arrow-light": {
|
||||
"format": "",
|
||||
"tooltip": false
|
||||
},
|
||||
|
||||
"sway/workspaces": {
|
||||
"disable-scroll": true,
|
||||
"format": "{name}"
|
||||
},
|
||||
|
||||
"clock#1": {
|
||||
"format": "{:%a}",
|
||||
"tooltip": false
|
||||
},
|
||||
"clock#2": {
|
||||
"format": "{:%H:%M}",
|
||||
"tooltip": false
|
||||
},
|
||||
"clock#3": {
|
||||
"format": "{:%m-%d}",
|
||||
"tooltip": false
|
||||
},
|
||||
|
||||
"pulseaudio": {
|
||||
"format": "{icon} {volume:2}%",
|
||||
"format-bluetooth": "{icon} {volume}%",
|
||||
"format-muted": "MUTE",
|
||||
"format-icons": {
|
||||
"headphones": "",
|
||||
"default": [
|
||||
"",
|
||||
""
|
||||
]
|
||||
},
|
||||
"scroll-step": 5,
|
||||
"on-click": "pamixer -t",
|
||||
"on-click-right": "pavucontrol"
|
||||
},
|
||||
"memory": {
|
||||
"interval": 5,
|
||||
"format": "Mem {}%"
|
||||
},
|
||||
"cpu": {
|
||||
"interval": 5,
|
||||
"format": "CPU {usage:2}%"
|
||||
},
|
||||
"battery": {
|
||||
"states": {
|
||||
"good": 95,
|
||||
"warning": 30,
|
||||
"critical": 15
|
||||
},
|
||||
"format": "{icon} {capacity}%",
|
||||
"format-icons": [
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
""
|
||||
]
|
||||
},
|
||||
"disk": {
|
||||
"interval": 5,
|
||||
"format": "Disk {percentage_used:2}%",
|
||||
"path": "/"
|
||||
},
|
||||
"tray": {
|
||||
"icon-size": 20
|
||||
}
|
||||
}
|
67
home/dot_config/waybar/config.tmpl
Normal file
67
home/dot_config/waybar/config.tmpl
Normal file
@ -0,0 +1,67 @@
|
||||
{
|
||||
"layer": "top",
|
||||
|
||||
// Choose the order of the modules
|
||||
"modules-left": ["hyprland/workspaces", "hyprland/submap", "hyprland/window"],
|
||||
"modules-center": ["clock"],
|
||||
"modules-right": ["tray", "custom/separator", "network", "custom/separator", "cpu", "custom/separator", "memory", "custom/separator", "pulseaudio", "custom/separator", "custom/disk"],
|
||||
|
||||
"hyprland/workspaces": {
|
||||
"format": "{icon}",
|
||||
"on-scroll-up": "hyprctl dispatch workspace e+1",
|
||||
"on-scroll-down": "hyprctl dispatch workspace e-1"
|
||||
},
|
||||
"hyprland/window": {
|
||||
"format": "{}",
|
||||
"max-length": 50,
|
||||
},
|
||||
"hyprland/submap": {
|
||||
"format": " {}"
|
||||
},
|
||||
"custom/disk": {
|
||||
"format": " <span color=\"{{ .themes.gruvbox.red }}\">{}</span>G ",
|
||||
"interval": 30,
|
||||
"exec": "df -h --output=avail / | awk 'NR==2 {sub(/.$/, \"\", $1); print $1}'",
|
||||
},
|
||||
"cpu": {
|
||||
"format": " <span color=\"{{ .themes.gruvbox.red }}\">{usage}</span>%",
|
||||
"tooltip": false
|
||||
},
|
||||
"memory": {
|
||||
"format": " <span color=\"{{ .themes.gruvbox.red }}\">{used:0.1f}</span>G"
|
||||
},
|
||||
"network": {
|
||||
"format-wifi": "({signalStrength}%) ",
|
||||
"format-ethernet": "<span color=\"{{ .themes.gruvbox.green }}\">{ifname}</span>",
|
||||
"tooltip-format": "{ifname} via {gwaddr}",
|
||||
"format-linked": "{ifname} (No IP) ?",
|
||||
"format-disconnected": "",
|
||||
"on-click": "nm-connection-editor"
|
||||
},
|
||||
"pulseaudio": {
|
||||
"format": "{icon} <span color=\"{{ .themes.gruvbox.red }}\">{volume}</span>% {format_source}",
|
||||
"format-muted": " {format_source}",
|
||||
"format-bluetooth": "{icon} <span color=\"{{ .themes.gruvbox.red }}\">{volume}</span>% {format_source}",
|
||||
"format-bluetooth-muted": " {format_source}",
|
||||
|
||||
"format-source": " <span color=\"{{ .themes.gruvbox.red }}\">{volume}</span>%",
|
||||
"format-source-muted": "",
|
||||
|
||||
"format-icons": {
|
||||
"default": ["", "", ""]
|
||||
},
|
||||
"on-click": "pactl set-sink-mute @DEFAULT_SINK@ toggle",
|
||||
},
|
||||
"clock": {
|
||||
"interval": 1,
|
||||
"format": " {:%Y-%m-%d %H:%M:%S}"
|
||||
},
|
||||
"tray": {
|
||||
"spacing": 10
|
||||
},
|
||||
"custom/separator": {
|
||||
"format": " | ",
|
||||
"interval": "once",
|
||||
"tooltip": false
|
||||
},
|
||||
}
|
3
home/dot_config/waybar/scripts/executable_idle.sh
Normal file
3
home/dot_config/waybar/scripts/executable_idle.sh
Normal file
@ -0,0 +1,3 @@
|
||||
swayidle -w \
|
||||
timeout 300 'hyprctl dispatch dpms off' \
|
||||
resume 'hyprctl dispatch dpms on' \
|
@ -1,74 +0,0 @@
|
||||
* {
|
||||
font-size: 20px;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
background: #292b2e;
|
||||
color: #fdf6e3;
|
||||
}
|
||||
|
||||
#custom-right-arrow-dark,
|
||||
#custom-left-arrow-dark {
|
||||
color: #1a1a1a;
|
||||
}
|
||||
#custom-right-arrow-light,
|
||||
#custom-left-arrow-light {
|
||||
color: #292b2e;
|
||||
background: #1a1a1a;
|
||||
}
|
||||
|
||||
#workspaces,
|
||||
#clock.1,
|
||||
#clock.2,
|
||||
#clock.3,
|
||||
#pulseaudio,
|
||||
#memory,
|
||||
#cpu,
|
||||
#battery,
|
||||
#disk,
|
||||
#tray {
|
||||
background: #1a1a1a;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
padding: 0 2px;
|
||||
color: #fdf6e3;
|
||||
}
|
||||
#workspaces button.focused {
|
||||
color: #268bd2;
|
||||
}
|
||||
#workspaces button:hover {
|
||||
box-shadow: inherit;
|
||||
text-shadow: inherit;
|
||||
}
|
||||
#workspaces button:hover {
|
||||
background: #1a1a1a;
|
||||
border: #1a1a1a;
|
||||
padding: 0 3px;
|
||||
}
|
||||
|
||||
#pulseaudio {
|
||||
color: #268bd2;
|
||||
}
|
||||
#memory {
|
||||
color: #2aa198;
|
||||
}
|
||||
#cpu {
|
||||
color: #6c71c4;
|
||||
}
|
||||
#battery {
|
||||
color: #859900;
|
||||
}
|
||||
#disk {
|
||||
color: #b58900;
|
||||
}
|
||||
|
||||
#clock,
|
||||
#pulseaudio,
|
||||
#memory,
|
||||
#cpu,
|
||||
#battery,
|
||||
#disk {
|
||||
padding: 0 10px;
|
||||
}
|
134
home/dot_config/waybar/style.css.tmpl
Normal file
134
home/dot_config/waybar/style.css.tmpl
Normal file
@ -0,0 +1,134 @@
|
||||
/* Colors */
|
||||
@define-color bg {{ .themes.gruvbox.bg0 }};
|
||||
@define-color bg2 {{ .themes.gruvbox.bg1 }};
|
||||
@define-color bg3 {{ .themes.gruvbox.bg2 }};
|
||||
@define-color fg {{ .themes.gruvbox.fg }};
|
||||
@define-color red {{ .themes.gruvbox.red }};
|
||||
@define-color green {{ .themes.gruvbox.green }};
|
||||
@define-color yellow {{ .themes.gruvbox.yellow }};
|
||||
@define-color blue0 {{ .themes.gruvbox.blue0 }};
|
||||
@define-color blue1 {{ .themes.gruvbox.blue1 }};
|
||||
@define-color purple0 {{ .themes.gruvbox.purple0 }};
|
||||
@define-color purple1 {{ .themes.gruvbox.purple1 }};
|
||||
@define-color cyan {{ .themes.gruvbox.cyan }};
|
||||
|
||||
* {
|
||||
font-family: JetBrains Mono, Symbols Nerd Font Mono;
|
||||
font-size: 12px;
|
||||
border-radius: 0;
|
||||
border: none;
|
||||
}
|
||||
tooltip {
|
||||
background: @bg;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
/* background-color: rgba(16, 20, 25,0.5); */
|
||||
background-color: @bg;
|
||||
transition-property: background-color;
|
||||
transition-duration: .5s;
|
||||
}
|
||||
|
||||
window#waybar.hidden {
|
||||
opacity: 0.2;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
min-width: 20px;
|
||||
color: @fg;
|
||||
padding: 0 5px;
|
||||
}
|
||||
|
||||
#workspaces button.visible {
|
||||
background-color: @purple1;
|
||||
}
|
||||
|
||||
#workspaces button.active {
|
||||
background-color: @purple0;
|
||||
}
|
||||
|
||||
#workspaces button.urgent {
|
||||
background-color: @red;
|
||||
}
|
||||
|
||||
#submap {
|
||||
background-color: @blue1;
|
||||
padding: 0 5px;
|
||||
}
|
||||
|
||||
#battery,
|
||||
#cpu,
|
||||
#memory,
|
||||
#network,
|
||||
#pulseaudio,
|
||||
#pulseaudio#mic,
|
||||
#custom-swayidle,
|
||||
#mode {
|
||||
padding: 0 6px;
|
||||
}
|
||||
|
||||
#window {
|
||||
color: @yellow;
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
|
||||
@keyframes blink {
|
||||
to {
|
||||
background-color: #ffffff;
|
||||
color: #000000;
|
||||
}
|
||||
}
|
||||
|
||||
#clock {
|
||||
color: @fg;
|
||||
padding: 0 10px;
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
#cpu {
|
||||
color: @fg;
|
||||
}
|
||||
|
||||
#custom-disk {
|
||||
color: @fg;
|
||||
}
|
||||
|
||||
#memory {
|
||||
color: @fg;
|
||||
}
|
||||
|
||||
#network {
|
||||
color: @fg;
|
||||
}
|
||||
|
||||
#network.disconnected {
|
||||
color: @red;
|
||||
}
|
||||
|
||||
#pulseaudio {
|
||||
color: @fg;
|
||||
}
|
||||
|
||||
#pulseaudio.mic {
|
||||
color: @fg;
|
||||
}
|
||||
|
||||
#custom-swayidle {
|
||||
color: @fg;
|
||||
}
|
||||
|
||||
#tray {
|
||||
padding: 0 6px;
|
||||
}
|
||||
|
||||
|
||||
#scratchpad {
|
||||
color: @fg;
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
#scratchpad.empty {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
@ -59,6 +59,12 @@ in {
|
||||
p7zip
|
||||
pavucontrol
|
||||
borgbackup
|
||||
waybar
|
||||
(pkgs.waybar.overrideAttrs (oldAttrs: {
|
||||
mesonFlags = oldAttrs.mesonFlags ++ [ "-Dexperimental=true" ];
|
||||
})
|
||||
)
|
||||
|
||||
] ++ [
|
||||
];
|
||||
|
||||
@ -103,5 +109,9 @@ in {
|
||||
enable = true;
|
||||
wrapperFeatures.gtk = true;
|
||||
};
|
||||
programs.hyprland = {
|
||||
enable = true;
|
||||
xwayland.enable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
@ -22,6 +22,8 @@ in {
|
||||
mgba
|
||||
sunshine
|
||||
moonlight-qt
|
||||
prismlauncher
|
||||
jdk17
|
||||
];
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user