Compare commits
17 Commits
af6f77583a
...
sway
| Author | SHA1 | Date | |
|---|---|---|---|
| 706ebf89a4 | |||
| ed8606cedc | |||
| 2e15fe1ddc | |||
| 3e2970ee70 | |||
| 94e7858450 | |||
| 3d34eb5fb3 | |||
| 0d19a7953f | |||
| 1ecaacc50c | |||
| 1895a40420 | |||
| 681dd4cd04 | |||
| 0134b654e9 | |||
| ed7270d498 | |||
| a19383b870 | |||
| b4d41eb3dd | |||
| 4201757f65 | |||
| f5f1536d33 | |||
| 9974368b5a |
8
.config/fish/conf.d/start_hyprland.fish
Normal file
8
.config/fish/conf.d/start_hyprland.fish
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
# Start X at login
|
||||||
|
if status --is-login
|
||||||
|
if test -z "$DISPLAY" -a $XDG_VTNR = 2
|
||||||
|
exec start-hyprland
|
||||||
|
# pour activer le partage d'écran mais provoque des bugs.
|
||||||
|
#exec env XDG_CURRENT_DESKTOP=sway dbus-run-session sway
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -1,17 +1,18 @@
|
|||||||
function fisher --argument-names cmd --description "A plugin manager for Fish"
|
function fisher --argument-names cmd --description "A plugin manager for Fish"
|
||||||
set --query fisher_path || set --local fisher_path $__fish_config_dir
|
set --query fisher_path || set --local fisher_path $__fish_config_dir
|
||||||
set --local fisher_version 4.4.5
|
set --local fisher_version 4.4.8
|
||||||
set --local fish_plugins $__fish_config_dir/fish_plugins
|
set --local fish_plugins $__fish_config_dir/fish_plugins
|
||||||
|
|
||||||
switch "$cmd"
|
switch "$cmd"
|
||||||
case -v --version
|
case -v --version
|
||||||
echo "fisher, version $fisher_version"
|
echo "fisher, version $fisher_version"
|
||||||
case "" -h --help
|
case "" -h --help
|
||||||
echo "Usage: fisher install <plugins...> Install plugins"
|
echo "Usage: fisher install <plugins...> Install plugins"
|
||||||
echo " fisher remove <plugins...> Remove installed plugins"
|
echo " fisher remove <plugins...> Remove installed plugins"
|
||||||
echo " fisher update <plugins...> Update installed plugins"
|
echo " fisher uninstall <plugins...> Remove installed plugins (alias)"
|
||||||
echo " fisher update Update all installed plugins"
|
echo " fisher update <plugins...> Update installed plugins"
|
||||||
echo " fisher list [<regex>] List installed plugins matching regex"
|
echo " fisher update Update all installed plugins"
|
||||||
|
echo " fisher list [<regex>] List installed plugins matching regex"
|
||||||
echo "Options:"
|
echo "Options:"
|
||||||
echo " -v, --version Print version"
|
echo " -v, --version Print version"
|
||||||
echo " -h, --help Print this help message"
|
echo " -h, --help Print this help message"
|
||||||
@@ -19,9 +20,11 @@ function fisher --argument-names cmd --description "A plugin manager for Fish"
|
|||||||
echo " \$fisher_path Plugin installation path. Default: $__fish_config_dir" | string replace --regex -- $HOME \~
|
echo " \$fisher_path Plugin installation path. Default: $__fish_config_dir" | string replace --regex -- $HOME \~
|
||||||
case ls list
|
case ls list
|
||||||
string match --entire --regex -- "$argv[2]" $_fisher_plugins
|
string match --entire --regex -- "$argv[2]" $_fisher_plugins
|
||||||
case install update remove
|
case install update remove uninstall
|
||||||
isatty || read --local --null --array stdin && set --append argv $stdin
|
isatty || read --local --null --array stdin && set --append argv $stdin
|
||||||
|
|
||||||
|
test "$cmd" = uninstall && set cmd remove
|
||||||
|
|
||||||
set --local install_plugins
|
set --local install_plugins
|
||||||
set --local update_plugins
|
set --local update_plugins
|
||||||
set --local remove_plugins
|
set --local remove_plugins
|
||||||
@@ -38,6 +41,8 @@ function fisher --argument-names cmd --description "A plugin manager for Fish"
|
|||||||
echo "fisher: \"$fish_plugins\" file not found: \"$cmd\"" >&2 && return 1
|
echo "fisher: \"$fish_plugins\" file not found: \"$cmd\"" >&2 && return 1
|
||||||
end
|
end
|
||||||
set arg_plugins $file_plugins
|
set arg_plugins $file_plugins
|
||||||
|
else if test "$cmd" = install && ! set --query old_plugins[1]
|
||||||
|
set --append arg_plugins $file_plugins
|
||||||
end
|
end
|
||||||
|
|
||||||
for plugin in $arg_plugins
|
for plugin in $arg_plugins
|
||||||
@@ -86,6 +91,7 @@ function fisher --argument-names cmd --description "A plugin manager for Fish"
|
|||||||
if test -e $plugin
|
if test -e $plugin
|
||||||
command cp -Rf $plugin/* $source
|
command cp -Rf $plugin/* $source
|
||||||
else
|
else
|
||||||
|
set resp (command mktemp)
|
||||||
set temp (command mktemp -d)
|
set temp (command mktemp -d)
|
||||||
set repo (string split -- \@ $plugin) || set repo[2] HEAD
|
set repo (string split -- \@ $plugin) || set repo[2] HEAD
|
||||||
|
|
||||||
@@ -98,8 +104,13 @@ function fisher --argument-names cmd --description "A plugin manager for Fish"
|
|||||||
|
|
||||||
echo Fetching (set_color --underline)\$url(set_color normal)
|
echo Fetching (set_color --underline)\$url(set_color normal)
|
||||||
|
|
||||||
if command curl -q --silent -L \$url | command tar -xzC \$temp -f - 2>/dev/null
|
set http (command curl -q --silent -L -o \$resp -w %{http_code} \$url)
|
||||||
|
|
||||||
|
if test \"\$http\" = 200 && command tar -xzC \$temp -f \$resp 2>/dev/null
|
||||||
command cp -Rf \$temp/*/* $source
|
command cp -Rf \$temp/*/* $source
|
||||||
|
else if test \"\$http\" = 403
|
||||||
|
echo fisher: GitHub API rate limit exceeded \(HTTP 403\) >&2
|
||||||
|
command rm -rf $source
|
||||||
else
|
else
|
||||||
echo fisher: Invalid plugin name or host unavailable: \\\"$plugin\\\" >&2
|
echo fisher: Invalid plugin name or host unavailable: \\\"$plugin\\\" >&2
|
||||||
command rm -rf $source
|
command rm -rf $source
|
||||||
|
|||||||
@@ -44,16 +44,14 @@ $menu = pgrep -x wofi >/dev/null 2>&1 || wofi --gtk-dark --show drun
|
|||||||
# Autostart necessary processes (like notifications daemons, status bars, etc.)
|
# Autostart necessary processes (like notifications daemons, status bars, etc.)
|
||||||
# Or execute your favorite apps at launch like this:
|
# Or execute your favorite apps at launch like this:
|
||||||
|
|
||||||
# exec-once = $terminal
|
|
||||||
# exec-once = nm-applet &
|
|
||||||
# exec-once = waybar & hyprpaper & firefox
|
|
||||||
exec-once = waybar --config ~/.config/waybar/config.hyprland
|
exec-once = waybar --config ~/.config/waybar/config.hyprland
|
||||||
exec-once = foot --server
|
exec-once = foot --server
|
||||||
exec-once = blueman-applet
|
exec-once = blueman-applet
|
||||||
exec-once = nm-applet --indicator
|
exec-once = nm-applet --indicator
|
||||||
exec-once = nextcloud --background
|
exec-once = nextcloud --background
|
||||||
exec-once = keepassxc
|
exec-once = keepassxc
|
||||||
|
exec-once = sleep 2 && hyprpm reload
|
||||||
|
exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
|
||||||
|
|
||||||
#############################
|
#############################
|
||||||
### ENVIRONMENT VARIABLES ###
|
### ENVIRONMENT VARIABLES ###
|
||||||
@@ -63,7 +61,13 @@ exec-once = keepassxc
|
|||||||
|
|
||||||
env = XCURSOR_SIZE,24
|
env = XCURSOR_SIZE,24
|
||||||
env = HYPRCURSOR_SIZE,24
|
env = HYPRCURSOR_SIZE,24
|
||||||
|
env = LIBVA_DRIVER_NAME,nvidia
|
||||||
|
env = __GLX_VENDOR_LIBRARY_NAME,nvidia
|
||||||
|
|
||||||
|
# lspci -d ::03xx
|
||||||
|
# ls -l /dev/dri/by-path
|
||||||
|
|
||||||
|
env = AQ_DRM_DEVICES,/dev/dri/card1:/dev/dri/card0
|
||||||
|
|
||||||
###################
|
###################
|
||||||
### PERMISSIONS ###
|
### PERMISSIONS ###
|
||||||
@@ -104,11 +108,15 @@ general {
|
|||||||
|
|
||||||
# Please see https://wiki.hypr.land/Configuring/Tearing/ before you turn this on
|
# Please see https://wiki.hypr.land/Configuring/Tearing/ before you turn this on
|
||||||
allow_tearing = false
|
allow_tearing = false
|
||||||
|
|
||||||
|
resize_on_border = true
|
||||||
|
|
||||||
# layout = dwindle
|
# layout = dwindle
|
||||||
layout = hy3
|
layout = hy3
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Pro monitors
|
||||||
|
# hyperctrl monitors
|
||||||
monitorv2 {
|
monitorv2 {
|
||||||
output = desc:Najing CEC Panda FPD Technology CO. ltd 0x0056
|
output = desc:Najing CEC Panda FPD Technology CO. ltd 0x0056
|
||||||
mode = 1920x1080@60.00
|
mode = 1920x1080@60.00
|
||||||
@@ -123,6 +131,22 @@ monitorv2 {
|
|||||||
scale = auto
|
scale = auto
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Personnals monitors
|
||||||
|
|
||||||
|
monitorv2 {
|
||||||
|
output = desc:BOE 0x090F
|
||||||
|
mode = 1920x1080@144.00
|
||||||
|
position = auto
|
||||||
|
scale = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
monitorv2 {
|
||||||
|
output = desc:Samsung Electric Company LC34G55T HNTW606264
|
||||||
|
mode = 3440x1440@60
|
||||||
|
position = auto
|
||||||
|
scale = auto
|
||||||
|
}
|
||||||
|
|
||||||
# https://wiki.hypr.land/Configuring/Variables/#decoration
|
# https://wiki.hypr.land/Configuring/Variables/#decoration
|
||||||
decoration {
|
decoration {
|
||||||
rounding = 0
|
rounding = 0
|
||||||
@@ -302,17 +326,11 @@ bind = $mainMod SHIFT, code:19, movetoworkspace, 10
|
|||||||
bind = $mainMod SHIFT, code:20, movetoworkspace, 11
|
bind = $mainMod SHIFT, code:20, movetoworkspace, 11
|
||||||
bind = $mainMod SHIFT, code:21, movetoworkspace, 12
|
bind = $mainMod SHIFT, code:21, movetoworkspace, 12
|
||||||
|
|
||||||
#bind = $mainMod SHIFT, left, hy3:movewindow, l
|
|
||||||
#bind = $mainMod SHIFT, right, hy3:movewindow, r
|
|
||||||
#bind = $mainMod SHIFT, up, hy3:movewindow, u
|
|
||||||
#bind = $mainMod SHIFT, down, hy3:movewindow, d
|
|
||||||
|
|
||||||
bind = $mainMod, left, hy3:movefocus, l
|
bind = $mainMod, left, hy3:movefocus, l
|
||||||
bind = $mainMod, right, hy3:movefocus, r
|
bind = $mainMod, right, hy3:movefocus, r
|
||||||
bind = $mainMod, up, hy3:movefocus, u
|
bind = $mainMod, up, hy3:movefocus, u
|
||||||
bind = $mainMod, down, hy3:movefocus, d
|
bind = $mainMod, down, hy3:movefocus, d
|
||||||
|
|
||||||
|
|
||||||
bind = $mainMod SHIFT, left, hy3:movewindow, l
|
bind = $mainMod SHIFT, left, hy3:movewindow, l
|
||||||
bind = $mainMod SHIFT, right, hy3:movewindow, r
|
bind = $mainMod SHIFT, right, hy3:movewindow, r
|
||||||
bind = $mainMod SHIFT, up, hy3:movewindow, u
|
bind = $mainMod SHIFT, up, hy3:movewindow, u
|
||||||
@@ -332,13 +350,12 @@ bind = $mainMod SHIFT, S, movetoworkspace, special:magic
|
|||||||
bind = $mainMod, V, hy3:makegroup, v
|
bind = $mainMod, V, hy3:makegroup, v
|
||||||
bind = $mainMod, H, hy3:makegroup, h
|
bind = $mainMod, H, hy3:makegroup, h
|
||||||
|
|
||||||
|
|
||||||
# Scroll through existing workspaces with mainMod + scroll
|
# Scroll through existing workspaces with mainMod + scroll
|
||||||
bind = $mainMod, mouse_down, workspace, e+1
|
bind = $mainMod, mouse_down, workspace, e+1
|
||||||
bind = $mainMod, mouse_up, workspace, e-1
|
bind = $mainMod, mouse_up, workspace, e-1
|
||||||
|
|
||||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||||
bindm = $mainMod, mouse:272, movewindow
|
rindm = $mainMod, mouse:272, movewindow
|
||||||
bindm = $mainMod, mouse:273, resizewindow
|
bindm = $mainMod, mouse:273, resizewindow
|
||||||
|
|
||||||
# Laptop multimedia keys for volume and LCD brightness
|
# Laptop multimedia keys for volume and LCD brightness
|
||||||
@@ -355,6 +372,15 @@ bindl = , XF86AudioPause, exec, playerctl play-pause
|
|||||||
bindl = , XF86AudioPlay, exec, playerctl play-pause
|
bindl = , XF86AudioPlay, exec, playerctl play-pause
|
||||||
bindl = , XF86AudioPrev, exec, playerctl previous
|
bindl = , XF86AudioPrev, exec, playerctl previous
|
||||||
|
|
||||||
|
bind = $mainMod, R,submap,resize
|
||||||
|
submap=resize
|
||||||
|
binde = , right, resizeactive, 10 0
|
||||||
|
binde = , left, resizeactive, -10 0
|
||||||
|
binde = , up, resizeactive, 0 -10
|
||||||
|
binde = , down, resizeactive, 0 10
|
||||||
|
bind = , Escape,submap,reset
|
||||||
|
submap=reset
|
||||||
|
|
||||||
##############################
|
##############################
|
||||||
### WINDOWS AND WORKSPACES ###
|
### WINDOWS AND WORKSPACES ###
|
||||||
##############################
|
##############################
|
||||||
@@ -362,11 +388,35 @@ bindl = , XF86AudioPrev, exec, playerctl previous
|
|||||||
# See https://wiki.hypr.land/Configuring/Window-Rules/ for more
|
# See https://wiki.hypr.land/Configuring/Window-Rules/ for more
|
||||||
# See https://wiki.hypr.land/Configuring/Workspace-Rules/ for workspace rules
|
# See https://wiki.hypr.land/Configuring/Workspace-Rules/ for workspace rules
|
||||||
|
|
||||||
# Example windowrule
|
# Example windowrules that are useful
|
||||||
# windowrule = float,class:^(kitty)$,title:^(kitty)$
|
|
||||||
|
|
||||||
# Ignore maximize requests from apps. You'll probably like this.
|
windowrule {
|
||||||
windowrule = suppressevent maximize, class:.*
|
# Ignore maximize requests from all apps. You'll probably like this.
|
||||||
|
name = suppress-maximize-events
|
||||||
|
match:class = .*
|
||||||
|
|
||||||
# Fix some dragging issues with XWayland
|
suppress_event = maximize
|
||||||
windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
|
}
|
||||||
|
|
||||||
|
windowrule {
|
||||||
|
# Fix some dragging issues with XWayland
|
||||||
|
name = fix-xwayland-drags
|
||||||
|
match:class = ^$
|
||||||
|
match:title = ^$
|
||||||
|
match:xwayland = true
|
||||||
|
match:float = true
|
||||||
|
match:fullscreen = false
|
||||||
|
match:pin = false
|
||||||
|
|
||||||
|
no_focus = true
|
||||||
|
}
|
||||||
|
|
||||||
|
# Hyprland-run windowrule
|
||||||
|
windowrule {
|
||||||
|
name = move-hyprland-run
|
||||||
|
|
||||||
|
match:class = hyprland-run
|
||||||
|
|
||||||
|
move = 20 monitor_h-120
|
||||||
|
float = yes
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
background {
|
background {
|
||||||
monitor =
|
monitor =
|
||||||
# path = ~/.config/hypr/hyprlock/relaxed_mario.png
|
|
||||||
blur_passes = 3
|
blur_passes = 3
|
||||||
contrast = 0.8916
|
contrast = 0.8916
|
||||||
brightness = 0.8172
|
brightness = 0.8172
|
||||||
@@ -19,8 +18,8 @@ input-field {
|
|||||||
inner_color = rgba(255, 255, 255, 0.1)
|
inner_color = rgba(255, 255, 255, 0.1)
|
||||||
font_color = rgb(200, 200, 200)
|
font_color = rgb(200, 200, 200)
|
||||||
fade_on_empty = false
|
fade_on_empty = false
|
||||||
font_family = SF Pro Display Bold
|
font_family = FiraCode Nerd Font
|
||||||
placeholder_text = <i><span foreground="##ffffff99">🔒 Enter Pass</span></i>
|
placeholder_text = <i><span foreground="##ffffff99">Enter Pass</span></i>
|
||||||
hide_input = false
|
hide_input = false
|
||||||
position = 0, -210
|
position = 0, -210
|
||||||
halign = center
|
halign = center
|
||||||
|
|||||||
7
.config/hypr/hyprpaper.conf
Normal file
7
.config/hypr/hyprpaper.conf
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
splash = off
|
||||||
|
|
||||||
|
wallpaper {
|
||||||
|
monitor =
|
||||||
|
path = ~/nextcloud/perso/images/wallpapers/travelling-through-galaxies-scifi-27.jpg
|
||||||
|
fit_mode = cover
|
||||||
|
}
|
||||||
@@ -31,3 +31,6 @@ Length=32
|
|||||||
|
|
||||||
[SSHAgent]
|
[SSHAgent]
|
||||||
Enabled=true
|
Enabled=true
|
||||||
|
|
||||||
|
[Security]
|
||||||
|
LockDatabaseIdle=false
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
syntax on
|
syntax on
|
||||||
set nocompatible
|
set nocompatible
|
||||||
set encoding=utf8
|
set encoding=utf8
|
||||||
|
|
||||||
"set mouse=a
|
"set mouse=a
|
||||||
set hidden
|
set hidden
|
||||||
|
|
||||||
@@ -23,11 +23,13 @@ set background=dark
|
|||||||
|
|
||||||
set ruler " Affiche la position du curseur
|
set ruler " Affiche la position du curseur
|
||||||
set number " Affiche le numéro des lignes
|
set number " Affiche le numéro des lignes
|
||||||
"set cursorline " Surligne la ligne en cours
|
set relativenumber
|
||||||
|
set cursorline " Surligne la ligne en cours
|
||||||
set wrap
|
set wrap
|
||||||
|
|
||||||
set scrolloff=5
|
set scrolloff=5
|
||||||
|
|
||||||
|
set confirm
|
||||||
|
|
||||||
set ignorecase
|
set ignorecase
|
||||||
set smartcase
|
set smartcase
|
||||||
@@ -66,6 +68,7 @@ set shiftwidth=4
|
|||||||
set softtabstop=4
|
set softtabstop=4
|
||||||
set tabstop=4
|
set tabstop=4
|
||||||
|
|
||||||
|
|
||||||
autocmd Filetype html setlocal ts=2 sw=2 expandtab
|
autocmd Filetype html setlocal ts=2 sw=2 expandtab
|
||||||
autocmd Filetype css setlocal ts=2 sw=2 expandtab
|
autocmd Filetype css setlocal ts=2 sw=2 expandtab
|
||||||
autocmd Filetype scss setlocal ts=2 sw=2 expandtab
|
autocmd Filetype scss setlocal ts=2 sw=2 expandtab
|
||||||
|
|||||||
58
.config/waybar/config.hyprland
Normal file
58
.config/waybar/config.hyprland
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
{
|
||||||
|
"font-familly": "FiraCode Nerd Font",
|
||||||
|
"height": 30, // Waybar height (to be removed for auto height)
|
||||||
|
"spacing": 1, // Gaps between modules (4px)
|
||||||
|
"modules-left": ["hyprland/workspaces"],
|
||||||
|
"modules-center": ["clock"],
|
||||||
|
"modules-right": ["tray", "pulseaudio", "battery"],
|
||||||
|
"tray": {
|
||||||
|
"icon-size": 16,
|
||||||
|
"spacing": 4
|
||||||
|
},
|
||||||
|
"clock": {
|
||||||
|
"timezone": "Europe/Paris",
|
||||||
|
"format": "{:%d-%m-%Y - %H:%M}",
|
||||||
|
},
|
||||||
|
"battery": {
|
||||||
|
"states": {
|
||||||
|
// "good": 95,
|
||||||
|
"warning": 30,
|
||||||
|
"critical": 15
|
||||||
|
},
|
||||||
|
"format": "{capacity}% {icon}",
|
||||||
|
"format-charging": "{capacity}% ",
|
||||||
|
"format-plugged": "{capacity}% ",
|
||||||
|
"format-alt": "{time} {icon}",
|
||||||
|
"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-bluetooth": "{volume}% {icon} {format_source}",
|
||||||
|
"format-bluetooth-muted": " {icon} {format_source}",
|
||||||
|
"format-muted": " {format_source}",
|
||||||
|
"format-icons": {
|
||||||
|
"headphone": "",
|
||||||
|
"hands-free": "",
|
||||||
|
"headset": "",
|
||||||
|
"phone": "",
|
||||||
|
"portable": "",
|
||||||
|
"car": "",
|
||||||
|
"default": ["", "", ""]
|
||||||
|
},
|
||||||
|
"on-click": "pavucontrol"
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
@@ -63,6 +63,10 @@ button:hover {
|
|||||||
box-shadow: inset 0 -3px #ffffff;
|
box-shadow: inset 0 -3px #ffffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#workspaces button.active {
|
||||||
|
border-bottom: 3px solid #3ec395;
|
||||||
|
}
|
||||||
|
|
||||||
#workspaces button.urgent {
|
#workspaces button.urgent {
|
||||||
background-color: #eb4d4b;
|
background-color: #eb4d4b;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user