feat: i3 configs
@@ -1,69 +0,0 @@
|
|||||||
|
|
||||||
#
|
|
||||||
# Executes
|
|
||||||
#
|
|
||||||
exec-once = wlsunset
|
|
||||||
exec-once = hyprpaper
|
|
||||||
exec-once = waybar
|
|
||||||
#
|
|
||||||
# Monitor
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Monitors/
|
|
||||||
#
|
|
||||||
monitor=,preferred,auto,auto
|
|
||||||
monitor=,addreserved,5,15,15,15
|
|
||||||
monitor=desc:Lenovo Group Limited LEN T32p-20 VNA8W4PX,preferred,auto,1.2
|
|
||||||
|
|
||||||
# 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/keymap.conf
|
|
||||||
source = ~/.config/hypr/rice.conf
|
|
||||||
|
|
||||||
# Some default env vars.
|
|
||||||
env = XCURSOR_SIZE,24
|
|
||||||
#
|
|
||||||
# Input
|
|
||||||
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
|
|
||||||
#
|
|
||||||
input {
|
|
||||||
kb_layout = se
|
|
||||||
kb_variant = mac
|
|
||||||
|
|
||||||
follow_mouse = 1
|
|
||||||
|
|
||||||
touchpad {
|
|
||||||
natural_scroll = no
|
|
||||||
clickfinger_behavior = yes
|
|
||||||
}
|
|
||||||
|
|
||||||
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
master {
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
|
||||||
new_is_master = true
|
|
||||||
}
|
|
||||||
|
|
||||||
gestures {
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
|
||||||
workspace_swipe = true
|
|
||||||
workspace_swipe_invert = false
|
|
||||||
}
|
|
||||||
|
|
||||||
# Example per-device config
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Keywords/#executing for more
|
|
||||||
device:epic-mouse-v1 {
|
|
||||||
sensitivity = -0.5
|
|
||||||
}
|
|
||||||
|
|
||||||
# Example windowrule v1
|
|
||||||
# windowrule = float, ^(alacritty)$
|
|
||||||
# Example windowrule v2
|
|
||||||
# windowrulev2 = float,class:^(alacritty)$,title:^(alacritty)$
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
preload = ~/wallpapers/forest-view.jpg
|
|
||||||
preload = ~/wallpapers/the-golden-sun.png
|
|
||||||
|
|
||||||
wallpaper = eDP-1,~/wallpapers/forest-view.jpg
|
|
||||||
wallpaper = ,~/wallpapers/the-golden-sun.png
|
|
||||||
@@ -1,87 +0,0 @@
|
|||||||
#
|
|
||||||
# Keybindings
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
|
||||||
$mainMod = SUPER
|
|
||||||
|
|
||||||
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
|
|
||||||
bind = $mainMod, T, exec, alacritty
|
|
||||||
bind = $mainMod, Q, killactive,
|
|
||||||
bind = $mainMod, M, exit,
|
|
||||||
bind = $mainMod, F, exec, thunar
|
|
||||||
bind = $mainMod, V, togglefloating,
|
|
||||||
bind = $mainMod, SPACE, exec, wofi --show drun --normal-window
|
|
||||||
bind = $mainMod, P, pseudo, # dwindle
|
|
||||||
bind = $mainMod, J, togglesplit, # dwindle
|
|
||||||
bind = $mainMod, L, exec, swaylock
|
|
||||||
|
|
||||||
# Move focus with mainMod + arrow keys
|
|
||||||
bind = $mainMod, left, movefocus, l
|
|
||||||
bind = $mainMod, right, movefocus, r
|
|
||||||
bind = $mainMod, up, movefocus, u
|
|
||||||
bind = $mainMod, down, movefocus, d
|
|
||||||
|
|
||||||
# Switch workspaces with mainMod + [0-9]
|
|
||||||
bind = $mainMod, 1, workspace, 1
|
|
||||||
bind = $mainMod, 2, workspace, 2
|
|
||||||
bind = $mainMod, 3, workspace, 3
|
|
||||||
bind = $mainMod, 4, workspace, 4
|
|
||||||
bind = $mainMod, 5, workspace, 5
|
|
||||||
bind = $mainMod, 6, workspace, 6
|
|
||||||
bind = $mainMod, 7, workspace, 7
|
|
||||||
bind = $mainMod, 8, workspace, 8
|
|
||||||
bind = $mainMod, 9, workspace, 9
|
|
||||||
bind = $mainMod, 0, workspace, 10
|
|
||||||
bind = $mainMod SHIFT, right, workspace, e+1
|
|
||||||
bind = $mainMod SHIFT, left, workspace, e-1
|
|
||||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
|
||||||
bind = $mainMod SHIFT, 1, movetoworkspace, 1
|
|
||||||
bind = $mainMod SHIFT, 2, movetoworkspace, 2
|
|
||||||
bind = $mainMod SHIFT, 3, movetoworkspace, 3
|
|
||||||
bind = $mainMod SHIFT, 4, movetoworkspace, 4
|
|
||||||
bind = $mainMod SHIFT, 5, movetoworkspace, 5
|
|
||||||
bind = $mainMod SHIFT, 6, movetoworkspace, 6
|
|
||||||
bind = $mainMod SHIFT, 7, movetoworkspace, 7
|
|
||||||
bind = $mainMod SHIFT, 8, movetoworkspace, 8
|
|
||||||
bind = $mainMod SHIFT, 9, movetoworkspace, 9
|
|
||||||
bind = $mainMod SHIFT, 0, movetoworkspace, 10
|
|
||||||
|
|
||||||
# Scroll through existing workspaces with mainMod + scroll
|
|
||||||
bind = $mainMod, mouse_down, workspace, e+1
|
|
||||||
bind = $mainMod, mouse_up, workspace, e-1
|
|
||||||
|
|
||||||
#
|
|
||||||
# Tabber
|
|
||||||
#
|
|
||||||
bind= $mainMod, tab, changegroupactive
|
|
||||||
#
|
|
||||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
|
||||||
bindm = $mainMod, mouse:272, movewindow
|
|
||||||
bindm = $mainMod, mouse:273, resizewindow
|
|
||||||
# Resize window with mainMod + CTRL + up, down, left, right
|
|
||||||
bind = $mainMod CTRL, right, resizeactive, 25 0
|
|
||||||
bind = $mainMod CTRL, left, resizeactive, -25 0
|
|
||||||
bind = $mainMod CTRL, up, resizeactive, 0 -25
|
|
||||||
bind = $mainMod CTRL, down, resizeactive, 0 25
|
|
||||||
#
|
|
||||||
# Media keys
|
|
||||||
#
|
|
||||||
binde=, XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
|
|
||||||
binde=, XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
|
|
||||||
binde=, XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
|
|
||||||
bind=, XF86AudioPlay, exec, playerctl play-pause
|
|
||||||
bind=, XF86AudioPause, exec, playerctl play-pause
|
|
||||||
bind=, XF86AudioNext, exec, playerctl next
|
|
||||||
bind=, XF86AudioPrev, exec, playerctl previous
|
|
||||||
|
|
||||||
#
|
|
||||||
# Hardware button mapping
|
|
||||||
# For example powerbutton
|
|
||||||
#
|
|
||||||
bind=,XF86PowerOff, exec, wlogout
|
|
||||||
# Laptop lid switch
|
|
||||||
bindl=,switch:on:Lid Switch,exec,swaylock
|
|
||||||
bindl=,switch:off:Lid Switch,exec,hyprctl keyword monitor "eDP-1, 3000x2000@60,0x0,auto"
|
|
||||||
bindl=,switch:on:Lid Switch,exec,hyprctl keyword monitor "eDP-1, disable"
|
|
||||||
# Screen brightness
|
|
||||||
bind=,XF86MonBrightnessDown,exec,brightnessctl set 5%-
|
|
||||||
bind=,XF86MonBrightnessUp,exec,brightnessctl set +5%
|
|
||||||
138
hypr/rice.conf
@@ -1,138 +0,0 @@
|
|||||||
|
|
||||||
#
|
|
||||||
# General settings
|
|
||||||
#
|
|
||||||
general {
|
|
||||||
gaps_in=10
|
|
||||||
gaps_out=0
|
|
||||||
border_size=3
|
|
||||||
col.inactive_border=rgba(f7768eff) rgba(73dacaff) 45deg
|
|
||||||
col.active_border=rgba(73dacaff) rgba(f7768eff) 45deg
|
|
||||||
no_border_on_floating = false
|
|
||||||
layout = dwindle
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# unscale XWayland
|
|
||||||
xwayland {
|
|
||||||
force_zero_scaling = true
|
|
||||||
}
|
|
||||||
|
|
||||||
# toolkit-specific scale
|
|
||||||
env = GDK_SCALE,2
|
|
||||||
env = XCURSOR_SIZE,32
|
|
||||||
|
|
||||||
misc {
|
|
||||||
disable_hyprland_logo = true
|
|
||||||
disable_splash_rendering = true
|
|
||||||
mouse_move_enables_dpms = true
|
|
||||||
enable_swallow = true
|
|
||||||
swallow_regex = ^(alacritty)$
|
|
||||||
}
|
|
||||||
|
|
||||||
decoration {
|
|
||||||
#
|
|
||||||
# Round corners
|
|
||||||
#
|
|
||||||
rounding = 3
|
|
||||||
|
|
||||||
#
|
|
||||||
# Opacity
|
|
||||||
#
|
|
||||||
active_opacity = 0.98
|
|
||||||
inactive_opacity = 0.65
|
|
||||||
#
|
|
||||||
# Blur
|
|
||||||
#
|
|
||||||
#
|
|
||||||
blur {
|
|
||||||
enabled = true
|
|
||||||
size = 2
|
|
||||||
passes = 2
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# Shadow
|
|
||||||
#
|
|
||||||
drop_shadow = true
|
|
||||||
shadow_ignore_window = true
|
|
||||||
shadow_offset = 2 2
|
|
||||||
shadow_range = 8
|
|
||||||
shadow_render_power = 10
|
|
||||||
col.shadow = rgba(00000055)
|
|
||||||
blurls = gtk-layer-shell
|
|
||||||
blurls = lockscreen
|
|
||||||
}
|
|
||||||
|
|
||||||
#
|
|
||||||
# Animation
|
|
||||||
#
|
|
||||||
animations {
|
|
||||||
enabled = true
|
|
||||||
#
|
|
||||||
# Bezier curve
|
|
||||||
#
|
|
||||||
bezier = overshot, 0.05, 0.5, 0.1, 1.05
|
|
||||||
bezier = smoothOut, 0.36, 0, 0.66, -0.56
|
|
||||||
bezier = smoothIn, 0.25, 0.8, 0.5, 0.5
|
|
||||||
|
|
||||||
animation = windows, 1, 5, overshot, slide
|
|
||||||
animation = windowsOut, 1, 4, smoothOut, slide
|
|
||||||
animation = windowsMove, 1, 4, default
|
|
||||||
animation = border, 1, 10, default
|
|
||||||
animation = fade, 1, 2, smoothIn
|
|
||||||
animation = fadeDim, 1, 2, smoothIn
|
|
||||||
animation = workspaces, 1, 6, default
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#
|
|
||||||
# Layouts
|
|
||||||
#
|
|
||||||
dwindle {
|
|
||||||
no_gaps_when_only = false
|
|
||||||
pseudotile = true # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
|
||||||
preserve_split = true # you probably want this
|
|
||||||
}
|
|
||||||
|
|
||||||
#
|
|
||||||
# Window rules
|
|
||||||
#
|
|
||||||
windowrule = float, file_progress
|
|
||||||
windowrule = float, confirm
|
|
||||||
windowrule = float, dialog
|
|
||||||
windowrule = float, download
|
|
||||||
windowrule = float, notification
|
|
||||||
windowrule = float, error
|
|
||||||
windowrule = float, splash
|
|
||||||
windowrule = float, confirmreset
|
|
||||||
windowrule = float, title:Open File
|
|
||||||
windowrule = float, title:branchdialog
|
|
||||||
windowrule = float, Lxappearance
|
|
||||||
windowrule = float, wofi
|
|
||||||
windowrule = float,viewnior
|
|
||||||
# windowrule = float,feh
|
|
||||||
windowrule = float, pavucontrol-qt
|
|
||||||
windowrule = float, pavucontrol
|
|
||||||
windowrulev2 = tile, title:^(.*)(Godot)(.*)$
|
|
||||||
# windowrule = float, file-roller
|
|
||||||
windowrule = fullscreen, wlogout
|
|
||||||
windowrule = float, title:wlogout
|
|
||||||
windowrule = fullscreen, title:wlogout
|
|
||||||
windowrule = idleinhibit focus, mpv
|
|
||||||
windowrule = idleinhibit fullscreen, firefox
|
|
||||||
windowrule = float, title:^(Media viewer)$
|
|
||||||
windowrule = float, title:^(Volume Control)$
|
|
||||||
windowrule = float, title:^(Picture-in-Picture)$
|
|
||||||
windowrule = size 800 600, title:^(Volume Control)$
|
|
||||||
windowrule = move 39% 420, title:^(Volume Control)$
|
|
||||||
windowrule = tile, title:^(.*)Aseprite(.*)$
|
|
||||||
|
|
||||||
windowrulev2 = workspace 1, class:^(alacritty)$
|
|
||||||
windowrulev2 = workspace 2, class:^(firefox)$
|
|
||||||
windowrulev2 = workspace 3, class:^(discord)$
|
|
||||||
windowrulev2 = workspace 3, title:^(Spotify)(.*)$
|
|
||||||
windowrulev2 = workspace 3, class:^(Slack)$
|
|
||||||
windowrulev2 = workspace special, class:^(thunar)$
|
|
||||||
windowrulev2 = workspace special, class:^(YouTube Music)$
|
|
||||||
219
i3/config
Normal file
@@ -0,0 +1,219 @@
|
|||||||
|
# This file has been auto-generated by i3-config-wizard(1).
|
||||||
|
# It will not be overwritten, so edit it as you like.
|
||||||
|
#
|
||||||
|
# Should you change your keyboard layout some time, delete
|
||||||
|
# this file and re-run i3-config-wizard(1).
|
||||||
|
#
|
||||||
|
|
||||||
|
# i3 config file (v4)
|
||||||
|
#
|
||||||
|
# Please see https://i3wm.org/docs/userguide.html for a complete reference!
|
||||||
|
|
||||||
|
set $mod Mod4
|
||||||
|
|
||||||
|
# Font for window titles. Will also be used by the bar unless a different font
|
||||||
|
# is used in the bar {} block below.
|
||||||
|
font pango:monospace 8
|
||||||
|
|
||||||
|
# This font is widely installed, provides lots of unicode glyphs, right-to-left
|
||||||
|
# text rendering and scalability on retina/hidpi displays (thanks to pango).
|
||||||
|
#font pango:DejaVu Sans Mono 8
|
||||||
|
|
||||||
|
# Start XDG autostart .desktop files using dex. See also
|
||||||
|
# https://wiki.archlinux.org/index.php/XDG_Autostart
|
||||||
|
exec --no-startup-id dex --autostart --environment i3
|
||||||
|
|
||||||
|
# The combination of xss-lock, nm-applet and pactl is a popular choice, so
|
||||||
|
# they are included here as an example. Modify as you see fit.
|
||||||
|
|
||||||
|
# xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the
|
||||||
|
# screen before suspend. Use loginctl lock-session to lock your screen.
|
||||||
|
exec --no-startup-id xss-lock --transfer-sleep-lock -- betterlockscreen --lock blur
|
||||||
|
|
||||||
|
# NetworkManager is the most popular way to manage wireless networks on Linux,
|
||||||
|
# and nm-applet is a desktop environment-independent system tray GUI for it.
|
||||||
|
exec --no-startup-id nm-applet
|
||||||
|
# Start polybar
|
||||||
|
exec sh ~/.config/polybar/startup.sh
|
||||||
|
|
||||||
|
# Start nitrogen for wallpaper support
|
||||||
|
exec always nitrogen --restore
|
||||||
|
|
||||||
|
# Use pactl to adjust volume in PulseAudio.
|
||||||
|
set $refresh_i3status killall -SIGUSR1 i3status
|
||||||
|
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status
|
||||||
|
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status
|
||||||
|
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status
|
||||||
|
bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status
|
||||||
|
|
||||||
|
# Use Mouse+$mod to drag floating windows to their wanted position
|
||||||
|
floating_modifier $mod
|
||||||
|
|
||||||
|
# move tiling windows via drag & drop by left-clicking into the title bar,
|
||||||
|
# or left-clicking anywhere into the window while holding the floating modifier.
|
||||||
|
tiling_drag modifier titlebar
|
||||||
|
|
||||||
|
# start a terminal
|
||||||
|
bindsym $mod+t exec alacritty
|
||||||
|
|
||||||
|
# kill focused window
|
||||||
|
bindsym $mod+q kill
|
||||||
|
|
||||||
|
# start dmenu (a program launcher)
|
||||||
|
bindsym $mod+space exec --no-startup-id rofi -show drun
|
||||||
|
# A more modern dmenu replacement is rofi:
|
||||||
|
# bindcode $mod+40 exec "rofi -modi drun,run -show drun"
|
||||||
|
# There also is i3-dmenu-desktop which only displays applications shipping a
|
||||||
|
# .desktop file. It is a wrapper around dmenu, so you need that installed.
|
||||||
|
# bindcode $mod+40 exec --no-startup-id i3-dmenu-desktop
|
||||||
|
|
||||||
|
# change focus
|
||||||
|
# alternatively, you can use the cursor keys:
|
||||||
|
bindsym $mod+Left focus left
|
||||||
|
bindsym $mod+Down focus down
|
||||||
|
bindsym $mod+Up focus up
|
||||||
|
bindsym $mod+Right focus right
|
||||||
|
|
||||||
|
# move focused window
|
||||||
|
bindsym $mod+Shift+j move left
|
||||||
|
bindsym $mod+Shift+k move down
|
||||||
|
bindsym $mod+Shift+l move up
|
||||||
|
bindsym $mod+Shift+odiaeresis move right
|
||||||
|
|
||||||
|
# alternatively, you can use the cursor 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
|
||||||
|
|
||||||
|
# split in horizontal orientation
|
||||||
|
bindsym $mod+h split h
|
||||||
|
|
||||||
|
# split in vertical orientation
|
||||||
|
bindsym $mod+v split v
|
||||||
|
|
||||||
|
# enter fullscreen mode for the focused container
|
||||||
|
bindsym $mod+f fullscreen toggle
|
||||||
|
|
||||||
|
# change container layout (stacked, tabbed, toggle split)
|
||||||
|
bindsym $mod+s layout stacking
|
||||||
|
bindsym $mod+w layout tabbed
|
||||||
|
bindsym $mod+e layout toggle split
|
||||||
|
|
||||||
|
# toggle tiling / floating
|
||||||
|
bindsym $mod+Shift+f floating toggle
|
||||||
|
|
||||||
|
# change focus between tiling / floating windows
|
||||||
|
bindsym $mod+Shift+space focus mode_toggle
|
||||||
|
|
||||||
|
# focus the parent container
|
||||||
|
bindsym $mod+a focus parent
|
||||||
|
|
||||||
|
# focus the child container
|
||||||
|
#bindsym $mod+d focus child
|
||||||
|
|
||||||
|
# Define names for default workspaces for which we configure key bindings later on.
|
||||||
|
# We use variables to avoid repeating the names in multiple places.
|
||||||
|
set $ws1 "1"
|
||||||
|
set $ws2 "2"
|
||||||
|
set $ws3 "3"
|
||||||
|
set $ws4 "4"
|
||||||
|
set $ws5 "5"
|
||||||
|
set $ws6 "6"
|
||||||
|
set $ws7 "7"
|
||||||
|
set $ws8 "8"
|
||||||
|
set $ws9 "9"
|
||||||
|
set $ws10 "10"
|
||||||
|
|
||||||
|
# switch to workspace
|
||||||
|
bindsym $mod+1 workspace number $ws1
|
||||||
|
bindsym $mod+2 workspace number $ws2
|
||||||
|
bindsym $mod+3 workspace number $ws3
|
||||||
|
bindsym $mod+4 workspace number $ws4
|
||||||
|
bindsym $mod+5 workspace number $ws5
|
||||||
|
bindsym $mod+6 workspace number $ws6
|
||||||
|
bindsym $mod+7 workspace number $ws7
|
||||||
|
bindsym $mod+8 workspace number $ws8
|
||||||
|
bindsym $mod+9 workspace number $ws9
|
||||||
|
bindsym $mod+0 workspace number $ws10
|
||||||
|
|
||||||
|
# move focused container to workspace
|
||||||
|
bindsym $mod+Shift+1 move container to workspace number $ws1
|
||||||
|
bindsym $mod+Shift+2 move container to workspace number $ws2
|
||||||
|
bindsym $mod+Shift+3 move container to workspace number $ws3
|
||||||
|
bindsym $mod+Shift+4 move container to workspace number $ws4
|
||||||
|
bindsym $mod+Shift+5 move container to workspace number $ws5
|
||||||
|
bindsym $mod+Shift+6 move container to workspace number $ws6
|
||||||
|
bindsym $mod+Shift+7 move container to workspace number $ws7
|
||||||
|
bindsym $mod+Shift+8 move container to workspace number $ws8
|
||||||
|
bindsym $mod+Shift+9 move container to workspace number $ws9
|
||||||
|
bindsym $mod+Shift+0 move container to workspace number $ws10
|
||||||
|
|
||||||
|
# reload the configuration file
|
||||||
|
bindsym $mod+Shift+c reload
|
||||||
|
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
|
||||||
|
bindsym $mod+Shift+r restart
|
||||||
|
# exit i3 (logs you out of your X session)
|
||||||
|
bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'"
|
||||||
|
|
||||||
|
# resize window (you can also use the mouse for that)
|
||||||
|
mode "resize" {
|
||||||
|
# These bindings trigger as soon as you enter the resize mode
|
||||||
|
|
||||||
|
# Pressing left will shrink the window’s width.
|
||||||
|
# Pressing right will grow the window’s width.
|
||||||
|
# Pressing up will shrink the window’s height.
|
||||||
|
# Pressing down will grow the window’s height.
|
||||||
|
bindsym j resize shrink width 10 px or 10 ppt
|
||||||
|
bindsym k resize grow height 10 px or 10 ppt
|
||||||
|
bindsym l resize shrink height 10 px or 10 ppt
|
||||||
|
bindsym odiaeresis resize grow width 10 px or 10 ppt
|
||||||
|
|
||||||
|
# same bindings, but for the arrow keys
|
||||||
|
bindsym Left resize shrink width 10 px or 10 ppt
|
||||||
|
bindsym Down resize grow height 10 px or 10 ppt
|
||||||
|
bindsym Up resize shrink height 10 px or 10 ppt
|
||||||
|
bindsym Right resize grow width 10 px or 10 ppt
|
||||||
|
|
||||||
|
# back to normal: Enter or Escape or $mod+r
|
||||||
|
bindsym Return mode "default"
|
||||||
|
bindsym Escape mode "default"
|
||||||
|
bindsym $mod+r mode "default"
|
||||||
|
}
|
||||||
|
|
||||||
|
bindsym $mod+r mode "resize"
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# --------
|
||||||
|
# Monitor settings
|
||||||
|
# --------
|
||||||
|
#
|
||||||
|
# Automatically turn off laptop monitor when the lid is closed
|
||||||
|
exec --no-startup-id xrandr --output eDP-1 --off --auto
|
||||||
|
exec --no-startup-id xset -dpms
|
||||||
|
exec --no-startup-id xset s off
|
||||||
|
|
||||||
|
# Automatically turn on laptop monitor when the lid is opened
|
||||||
|
exec --no-startup-id xrandr --output eDP-1 --auto
|
||||||
|
|
||||||
|
# Lockscreen
|
||||||
|
exec --no-startup-id betterlockscreen -w blur
|
||||||
|
bindsym $mod+L exec betterlockscreen --lock blur
|
||||||
|
#
|
||||||
|
# --------
|
||||||
|
# Rice config
|
||||||
|
# --------
|
||||||
|
#
|
||||||
|
|
||||||
|
# Gaps config
|
||||||
|
gaps inner 10
|
||||||
|
gaps top 5
|
||||||
|
gaps horizontal 15
|
||||||
|
gaps bottom 15
|
||||||
|
|
||||||
|
# remove top border
|
||||||
|
for_window [class="^.*"] border pixel 2
|
||||||
|
client.focused #73daca90 #73daca90 #fdf6e3 #cb4b16
|
||||||
|
client.focused_inactive #73daca60 #73daca60 #fdf6e3 #073642
|
||||||
|
client.unfocused #73daca60 #73daca60 #fdf6e3 #073642
|
||||||
9
nitrogen/bg-saved.cfg
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
[xin_1]
|
||||||
|
file=/home/elias/wallpapers/the-golden-sun.png
|
||||||
|
mode=5
|
||||||
|
bgcolor=#000000
|
||||||
|
|
||||||
|
[xin_0]
|
||||||
|
file=/home/elias/wallpapers/forest-view.jpg
|
||||||
|
mode=5
|
||||||
|
bgcolor=#000000
|
||||||
12
nitrogen/nitrogen.cfg
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
[geometry]
|
||||||
|
posx=4292
|
||||||
|
posy=57
|
||||||
|
sizex=1258
|
||||||
|
sizey=1338
|
||||||
|
|
||||||
|
[nitrogen]
|
||||||
|
view=icon
|
||||||
|
recurse=true
|
||||||
|
sort=alpha
|
||||||
|
icon_caps=false
|
||||||
|
dirs=/home/elias/wallpapers;
|
||||||
178
polybar/config.ini
Normal file
@@ -0,0 +1,178 @@
|
|||||||
|
;==========================================================
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; ██████╗ ██████╗ ██╗ ██╗ ██╗██████╗ █████╗ ██████╗
|
||||||
|
; ██╔══██╗██╔═══██╗██║ ╚██╗ ██╔╝██╔══██╗██╔══██╗██╔══██╗
|
||||||
|
; ██████╔╝██║ ██║██║ ╚████╔╝ ██████╔╝███████║██████╔╝
|
||||||
|
; ██╔═══╝ ██║ ██║██║ ╚██╔╝ ██╔══██╗██╔══██║██╔══██╗
|
||||||
|
; ██║ ╚██████╔╝███████╗██║ ██████╔╝██║ ██║██║ ██║
|
||||||
|
; ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; To learn more about how to configure Polybar
|
||||||
|
; go to https://github.com/polybar/polybar
|
||||||
|
;
|
||||||
|
; The README contains a lot of information
|
||||||
|
;
|
||||||
|
;==========================================================
|
||||||
|
|
||||||
|
[colors]
|
||||||
|
background = #282A2E
|
||||||
|
background-alt = #373B41
|
||||||
|
foreground = #C5C8C6
|
||||||
|
primary = #F0C674
|
||||||
|
secondary = #8ABEB7
|
||||||
|
alert = #A54242
|
||||||
|
disabled = #707880
|
||||||
|
|
||||||
|
[bar/example]
|
||||||
|
monitor=${env:MONITOR:}
|
||||||
|
width = 100%
|
||||||
|
height = 24pt
|
||||||
|
radius = 6
|
||||||
|
|
||||||
|
; dpi = 96
|
||||||
|
|
||||||
|
background = ${colors.background}
|
||||||
|
foreground = ${colors.foreground}
|
||||||
|
|
||||||
|
line-size = 3pt
|
||||||
|
|
||||||
|
border-size = 4pt
|
||||||
|
border-color = #00000000
|
||||||
|
|
||||||
|
padding-left = 0
|
||||||
|
padding-right = 1
|
||||||
|
|
||||||
|
module-margin = 1
|
||||||
|
|
||||||
|
separator = |
|
||||||
|
separator-foreground = ${colors.disabled}
|
||||||
|
|
||||||
|
font-0 = monospace;2
|
||||||
|
|
||||||
|
modules-left = xworkspaces xwindow
|
||||||
|
modules-right = filesystem pulseaudio xkeyboard memory cpu wlan eth date
|
||||||
|
|
||||||
|
cursor-click = pointer
|
||||||
|
cursor-scroll = ns-resize
|
||||||
|
|
||||||
|
enable-ipc = true
|
||||||
|
|
||||||
|
; wm-restack = generic
|
||||||
|
; wm-restack = bspwm
|
||||||
|
; wm-restack = i3
|
||||||
|
|
||||||
|
; override-redirect = true
|
||||||
|
|
||||||
|
[module/systray]
|
||||||
|
type = internal/tray
|
||||||
|
|
||||||
|
format-margin = 8pt
|
||||||
|
tray-spacing = 16pt
|
||||||
|
|
||||||
|
[module/xworkspaces]
|
||||||
|
type = internal/xworkspaces
|
||||||
|
|
||||||
|
label-active = %name%
|
||||||
|
label-active-background = ${colors.background-alt}
|
||||||
|
label-active-underline= ${colors.primary}
|
||||||
|
label-active-padding = 1
|
||||||
|
|
||||||
|
label-occupied = %name%
|
||||||
|
label-occupied-padding = 1
|
||||||
|
|
||||||
|
label-urgent = %name%
|
||||||
|
label-urgent-background = ${colors.alert}
|
||||||
|
label-urgent-padding = 1
|
||||||
|
|
||||||
|
label-empty = %name%
|
||||||
|
label-empty-foreground = ${colors.disabled}
|
||||||
|
label-empty-padding = 1
|
||||||
|
|
||||||
|
[module/xwindow]
|
||||||
|
type = internal/xwindow
|
||||||
|
label = %title:0:60:...%
|
||||||
|
|
||||||
|
[module/filesystem]
|
||||||
|
type = internal/fs
|
||||||
|
interval = 25
|
||||||
|
|
||||||
|
mount-0 = /
|
||||||
|
|
||||||
|
label-mounted = %{F#F0C674}%mountpoint%%{F-} %percentage_used%%
|
||||||
|
|
||||||
|
label-unmounted = %mountpoint% not mounted
|
||||||
|
label-unmounted-foreground = ${colors.disabled}
|
||||||
|
|
||||||
|
[module/pulseaudio]
|
||||||
|
type = internal/pulseaudio
|
||||||
|
|
||||||
|
format-volume-prefix = "VOL "
|
||||||
|
format-volume-prefix-foreground = ${colors.primary}
|
||||||
|
format-volume = <label-volume>
|
||||||
|
|
||||||
|
label-volume = %percentage%%
|
||||||
|
|
||||||
|
label-muted = muted
|
||||||
|
label-muted-foreground = ${colors.disabled}
|
||||||
|
|
||||||
|
[module/xkeyboard]
|
||||||
|
type = internal/xkeyboard
|
||||||
|
blacklist-0 = num lock
|
||||||
|
|
||||||
|
label-layout = %layout%
|
||||||
|
label-layout-foreground = ${colors.primary}
|
||||||
|
|
||||||
|
label-indicator-padding = 2
|
||||||
|
label-indicator-margin = 1
|
||||||
|
label-indicator-foreground = ${colors.background}
|
||||||
|
label-indicator-background = ${colors.secondary}
|
||||||
|
|
||||||
|
[module/memory]
|
||||||
|
type = internal/memory
|
||||||
|
interval = 2
|
||||||
|
format-prefix = "RAM "
|
||||||
|
format-prefix-foreground = ${colors.primary}
|
||||||
|
label = %percentage_used:2%%
|
||||||
|
|
||||||
|
[module/cpu]
|
||||||
|
type = internal/cpu
|
||||||
|
interval = 2
|
||||||
|
format-prefix = "CPU "
|
||||||
|
format-prefix-foreground = ${colors.primary}
|
||||||
|
label = %percentage:2%%
|
||||||
|
|
||||||
|
[network-base]
|
||||||
|
type = internal/network
|
||||||
|
interval = 5
|
||||||
|
format-connected = <label-connected>
|
||||||
|
format-disconnected = <label-disconnected>
|
||||||
|
label-disconnected = %{F#F0C674}%ifname%%{F#707880} disconnected
|
||||||
|
|
||||||
|
[module/wlan]
|
||||||
|
inherit = network-base
|
||||||
|
interface-type = wireless
|
||||||
|
label-connected = %{F#F0C674}%ifname%%{F-} %essid% %local_ip%
|
||||||
|
|
||||||
|
[module/eth]
|
||||||
|
inherit = network-base
|
||||||
|
interface-type = wired
|
||||||
|
label-connected = %{F#F0C674}%ifname%%{F-} %local_ip%
|
||||||
|
|
||||||
|
[module/date]
|
||||||
|
type = internal/date
|
||||||
|
interval = 1
|
||||||
|
|
||||||
|
date = %H:%M
|
||||||
|
date-alt = %Y-%m-%d %H:%M:%S
|
||||||
|
|
||||||
|
label = %date%
|
||||||
|
label-foreground = ${colors.primary}
|
||||||
|
|
||||||
|
[settings]
|
||||||
|
screenchange-reload = true
|
||||||
|
pseudo-transparency = true
|
||||||
|
|
||||||
|
; vim:ft=dosini
|
||||||
|
|
||||||
7
polybar/startup.sh
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
killall -q polybar
|
||||||
|
# Launch bar on each monitor, tray on primary
|
||||||
|
polybar --list-monitors | while IFS=$'\n' read line; do
|
||||||
|
monitor=$(echo $line | cut -d':' -f1)
|
||||||
|
primary=$(echo $line | cut -d' ' -f3)
|
||||||
|
MONITOR=$monitor polybar --reload "example" &
|
||||||
|
done
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
indicator-caps-lock
|
|
||||||
datestr=%A
|
|
||||||
|
|
||||||
scaling=fill
|
|
||||||
font=JetBrainsMono
|
|
||||||
font-size=20
|
|
||||||
indicator-radius=115
|
|
||||||
line-color=#3b4252
|
|
||||||
text-color=#d8dee9
|
|
||||||
inside-color=#2e344098
|
|
||||||
inside-ver-color=#5e81ac
|
|
||||||
line-ver-color=#5e81ac
|
|
||||||
ring-ver-color=#5e81ac98
|
|
||||||
ring-color=#4c566a
|
|
||||||
key-hl-color=#5e81ac
|
|
||||||
separator-color=#4c566a
|
|
||||||
layout-text-color=#eceff4
|
|
||||||
line-wrong-color=#d08770
|
|
||||||
|
|
||||||
screenshots
|
|
||||||
clock
|
|
||||||
indicator
|
|
||||||
indicator-thickness=7
|
|
||||||
effect-blur=7x5
|
|
||||||
effect-vignette=0.5:0.5
|
|
||||||
grace=2
|
|
||||||
fade-in=0.2
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
[Appearance]
|
|
||||||
color_scheme_path=/usr/share/qt5ct/colors/airy.conf
|
|
||||||
custom_palette=false
|
|
||||||
icon_theme=Papirus
|
|
||||||
standard_dialogs=default
|
|
||||||
style=kvantum-dark
|
|
||||||
|
|
||||||
[Fonts]
|
|
||||||
fixed=@Variant(\0\0\0@\0\0\0\x12\0\x43\0\x61\0n\0t\0\x61\0r\0\x65\0l\0l@$\0\0\0\0\0\0\xff\xff\xff\xff\x5\x1\0\x32\x10)
|
|
||||||
general=@Variant(\0\0\0@\0\0\0\x12\0\x43\0\x61\0n\0t\0\x61\0r\0\x65\0l\0l@$\0\0\0\0\0\0\xff\xff\xff\xff\x5\x1\0\x32\x10)
|
|
||||||
|
|
||||||
[Interface]
|
|
||||||
activate_item_on_single_click=1
|
|
||||||
buttonbox_layout=0
|
|
||||||
cursor_flash_time=1000
|
|
||||||
dialog_buttons_have_icons=1
|
|
||||||
double_click_interval=400
|
|
||||||
gui_effects=@Invalid()
|
|
||||||
keyboard_scheme=2
|
|
||||||
menus_have_icons=true
|
|
||||||
show_shortcuts_in_context_menus=true
|
|
||||||
stylesheets=@Invalid()
|
|
||||||
toolbutton_style=4
|
|
||||||
underline_shortcut=1
|
|
||||||
wheel_scroll_lines=3
|
|
||||||
|
|
||||||
[SettingsWindow]
|
|
||||||
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\a\x80\0\0\0\"\0\0\v:\0\0\x4\x1c\0\0\a\x80\0\0\0\"\0\0\xe\xff\0\0\x4\x37\0\0\0\0\x2\0\0\0\a\x80\0\0\a\x80\0\0\0\"\0\0\v:\0\0\x4\x1c)
|
|
||||||
231
waybar/config
@@ -1,231 +0,0 @@
|
|||||||
// Global
|
|
||||||
{
|
|
||||||
"layer": "top",
|
|
||||||
"position": "top",
|
|
||||||
"margin": 5,
|
|
||||||
|
|
||||||
// If height property would be not present, it'd be calculated dynamically
|
|
||||||
"height": 34,
|
|
||||||
|
|
||||||
"modules-left": [
|
|
||||||
"hyprland/workspaces",
|
|
||||||
],
|
|
||||||
|
|
||||||
"modules-center": [
|
|
||||||
"clock",
|
|
||||||
],
|
|
||||||
|
|
||||||
"modules-right": [
|
|
||||||
"tray",
|
|
||||||
// "idle_inhibitor",
|
|
||||||
"memory",
|
|
||||||
"cpu",
|
|
||||||
// "custom/keyboard-layout",
|
|
||||||
//"custom/PBPbattery",
|
|
||||||
// "backlight#icon",
|
|
||||||
"backlight#value",
|
|
||||||
"pulseaudio",
|
|
||||||
"pulseaudio#microphone",
|
|
||||||
"network",
|
|
||||||
"battery",
|
|
||||||
"custom/power",
|
|
||||||
],
|
|
||||||
|
|
||||||
// Modules
|
|
||||||
|
|
||||||
"idle_inhibitor": {
|
|
||||||
"format": "{icon} ",
|
|
||||||
"format-icons":{
|
|
||||||
"activated": "",
|
|
||||||
"deactivated": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
"battery": {
|
|
||||||
"states": {
|
|
||||||
// "good": 95,
|
|
||||||
"warning": 30,
|
|
||||||
"critical": 15
|
|
||||||
},
|
|
||||||
"format": "{capacity}% {icon} ",
|
|
||||||
"format-charging": "{capacity}% ",
|
|
||||||
"format-plugged": "{capacity}% ",
|
|
||||||
// "format-good": "", // An empty format will hide the module
|
|
||||||
// "format-full": "",
|
|
||||||
"format-icons": ["", "", "", "", ""]
|
|
||||||
},
|
|
||||||
|
|
||||||
"custom/PBPbattery": {
|
|
||||||
"exec": "sh ~/.config/waybar/scripts/PBPbattery.sh",
|
|
||||||
"format": "{}",
|
|
||||||
},
|
|
||||||
|
|
||||||
"clock": {
|
|
||||||
"interval": 10,
|
|
||||||
// "format-alt": " {:%e %b %Y}", // Icon: calendar-alt
|
|
||||||
"format": "{:%e %b %Y %H:%M} ",
|
|
||||||
"tooltip-format": "{:%e %B %Y}"
|
|
||||||
},
|
|
||||||
|
|
||||||
"cpu": {
|
|
||||||
"interval": 5,
|
|
||||||
"format": " {usage}% ({load})", // Icon: microchip
|
|
||||||
"states": {
|
|
||||||
"warning": 70,
|
|
||||||
"critical": 90,
|
|
||||||
},
|
|
||||||
"on-click": "alacritty -e 'btm'",
|
|
||||||
},
|
|
||||||
|
|
||||||
"custom/keyboard-layout": {
|
|
||||||
"exec": "swaymsg -t get_inputs | grep -m1 'xkb_active_layout_name' | cut -d '\"' -f4",
|
|
||||||
// Interval set only as a fallback, as the value is updated by signal
|
|
||||||
"interval": 30,
|
|
||||||
"format": " {}", // Icon: keyboard
|
|
||||||
// Signal sent by Sway key binding (~/.config/sway/key-bindings)
|
|
||||||
"signal": 1, // SIGHUP
|
|
||||||
"tooltip": false,
|
|
||||||
"on-click": "sh ~/.config/waybar/scripts/keyhint.sh",
|
|
||||||
},
|
|
||||||
|
|
||||||
"memory": {
|
|
||||||
"interval": 5,
|
|
||||||
"format": " {}%", // Icon: memory
|
|
||||||
"on-click": "alacritty -e 'btm'",
|
|
||||||
"states": {
|
|
||||||
"warning": 70,
|
|
||||||
"critical": 90
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
"network": {
|
|
||||||
"interval": 5,
|
|
||||||
"format-wifi": " ", // Icon: wifi
|
|
||||||
"format-ethernet": " ", // Icon: ethernet
|
|
||||||
"format-disconnected": "⚠ Disconnected",
|
|
||||||
"tooltip-format": "{ifname}: {ipaddr}",
|
|
||||||
"on-click": "alacritty -e 'nmtui'",
|
|
||||||
},
|
|
||||||
"network#vpn": {
|
|
||||||
"interface": "tun0",
|
|
||||||
"format": " ",
|
|
||||||
"format-disconnected": "⚠ Disconnected",
|
|
||||||
"tooltip-format": "{ifname}: {ipaddr}/{cidr}",
|
|
||||||
},
|
|
||||||
|
|
||||||
"hyprland/mode": {
|
|
||||||
"format": "{}",
|
|
||||||
"tooltip": false
|
|
||||||
},
|
|
||||||
|
|
||||||
"hyprland/window": {
|
|
||||||
"format": "{}",
|
|
||||||
"max-length": 120
|
|
||||||
},
|
|
||||||
|
|
||||||
"hyrpland/workspaces": {
|
|
||||||
"format": "{icon}",
|
|
||||||
"on-scroll-up": "hyprctl dispatch workspace e+1",
|
|
||||||
"on-scroll-down": "hyprctl dispatch workspace e-1"
|
|
||||||
},
|
|
||||||
|
|
||||||
"pulseaudio": {
|
|
||||||
"scroll-step": 1, // %, can be a float
|
|
||||||
"format": "{icon} {volume}%",
|
|
||||||
"format-bluetooth": "{volume}% {icon} {format_source}",
|
|
||||||
"format-bluetooth-muted": " {icon} {format_source}",
|
|
||||||
"format-muted": "",
|
|
||||||
"format-icons": {
|
|
||||||
"headphone": "",
|
|
||||||
"hands-free": "וֹ",
|
|
||||||
"headset": " ",
|
|
||||||
"phone": "",
|
|
||||||
"portable": "",
|
|
||||||
"car": "",
|
|
||||||
"default": [""]
|
|
||||||
},
|
|
||||||
"on-click": "pactl set-sink-mute @DEFAULT_SINK@ toggle",
|
|
||||||
"on-click-right": "pavucontrol",
|
|
||||||
"on-scroll-up": "pactl set-sink-volume @DEFAULT_SINK@ +2%",
|
|
||||||
"on-scroll-down": "pactl set-sink-volume @DEFAULT_SINK@ -2%",
|
|
||||||
},
|
|
||||||
|
|
||||||
"pulseaudio#microphone": {
|
|
||||||
"format": "{format_source}",
|
|
||||||
"format-source": " {volume}%",
|
|
||||||
"format-source-muted": " ",
|
|
||||||
"on-click": "pamixer --default-source -t",
|
|
||||||
"on-click-right": "pavucontrol",
|
|
||||||
"on-scroll-up": "pamixer --default-source -i 5",
|
|
||||||
"on-scroll-down": "pamixer --default-source -d 5",
|
|
||||||
"scroll-step": 5
|
|
||||||
},
|
|
||||||
|
|
||||||
// to use the weather module replace <your_location> with your city or town
|
|
||||||
// note: do not use spaces: new york would be newyork
|
|
||||||
"custom/weather": {
|
|
||||||
"exec": "sh ~/.config/waybar/scripts/weather.sh tampa",
|
|
||||||
"return-type": "json",
|
|
||||||
"interval": 600,
|
|
||||||
},
|
|
||||||
|
|
||||||
"tray": {
|
|
||||||
"icon-size": 18,
|
|
||||||
"spacing":10,
|
|
||||||
},
|
|
||||||
|
|
||||||
"backlight#icon": {
|
|
||||||
"format": "{icon}",
|
|
||||||
"on-scroll-down": "brightnessctl -c backlight set 1%-",
|
|
||||||
"on-scroll-up": "brightnessctl -c backlight set +1%"
|
|
||||||
},
|
|
||||||
|
|
||||||
"backlight#value" :{
|
|
||||||
"format": "{icon} {percent}%",
|
|
||||||
"format-icons": [" "],
|
|
||||||
"on-scroll-down": "brightnessctl -c backlight set 1%-",
|
|
||||||
"on-scroll-up": "brightnessctl -c backlight set +1%"
|
|
||||||
},
|
|
||||||
|
|
||||||
"custom/firefox": {
|
|
||||||
"format": " ",
|
|
||||||
"on-click": "exec firefox",
|
|
||||||
"tooltip": false
|
|
||||||
},
|
|
||||||
|
|
||||||
"custom/terminal": {
|
|
||||||
"format": " ",
|
|
||||||
"on-click": "exec alacritty",
|
|
||||||
"tooltip": false
|
|
||||||
},
|
|
||||||
|
|
||||||
"custom/files": {
|
|
||||||
"format": " ",
|
|
||||||
"on-click": "exec nautilus",
|
|
||||||
"tooltip": false
|
|
||||||
},
|
|
||||||
|
|
||||||
"custom/launcher": {
|
|
||||||
"format":" ",
|
|
||||||
"on-click": "exec wofi -c ~/.config/wofi/config -I",
|
|
||||||
"tooltip": false,
|
|
||||||
},
|
|
||||||
|
|
||||||
"custom/power": {
|
|
||||||
"format":"⏻",
|
|
||||||
"on-click": "exec wlogout",
|
|
||||||
"tooltip": false,
|
|
||||||
},
|
|
||||||
|
|
||||||
"custom/media": {
|
|
||||||
"format": "{icon} {}",
|
|
||||||
"return-type": "json",
|
|
||||||
"max-length": 40,
|
|
||||||
"format-icons": {
|
|
||||||
"spotify": "",
|
|
||||||
"default": ""
|
|
||||||
},
|
|
||||||
"escape": true,
|
|
||||||
"exec": "/usr/bin/python3 $HOME/.config/waybar/scripts/mediaplayer.py 2> /dev/null" // Script in resources folder
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
|
|
||||||
#!/bin/bash
|
|
||||||
#simple Shellscript for waybar/i3blocks/polybar on Pinebook pro
|
|
||||||
#05012020 geri123@gmx.net Gerhard S.
|
|
||||||
|
|
||||||
PERCENT=$(cat /sys/class/power_supply/cw2015-battery/capacity)
|
|
||||||
STATUS=$(cat /sys/class/power_supply/cw2015-battery/status)
|
|
||||||
case $((
|
|
||||||
$PERCENT >= 0 && $PERCENT <= 20 ? 1 :
|
|
||||||
$PERCENT > 20 && $PERCENT <= 40 ? 2 :
|
|
||||||
$PERCENT > 40 && $PERCENT <= 60 ? 3 :
|
|
||||||
$PERCENT > 60 && $PERCENT <= 80 ? 4 : 5)) in
|
|
||||||
#
|
|
||||||
(1) echo $STATUS:"":$PERCENT%;;
|
|
||||||
(2) echo $STATUS:"":$PERCENT%;;
|
|
||||||
(3) echo $STATUS:"":$PERCENT%;;
|
|
||||||
(4) echo $STATUS:"":$PERCENT%;;
|
|
||||||
(5) echo $STATUS:"":$PERCENT%;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
yad --title="EndeavourOS Sway-WM keybindings:" --no-buttons --geometry=400x345-15-400 --list --column=key: --column=description: --column=command: "ESC" "close this app" "" "=" "modkey" "(set mod Mod4)" "+enter" "Terminal" "(xfce4-terminal)" "+d" "Application Menu" "(wofi)" "+p" "Activities" "(wofi)" "+o" "" "Open Broswer" "+n" "" "Open Files" "+q" "close focused app" "(kill)" "[Shift]+Print-key" "screenshot" "(grim)" "+Shift+e" "power-menu" "(wofi)" "+t" "open keybinding helper" "full list"
|
|
||||||
@@ -1,127 +0,0 @@
|
|||||||
import argparse
|
|
||||||
import logging
|
|
||||||
import sys
|
|
||||||
import signal
|
|
||||||
import gi
|
|
||||||
import json
|
|
||||||
gi.require_version('Playerctl', '2.0')
|
|
||||||
from gi.repository import Playerctl, GLib
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
|
|
||||||
def write_output(text, player):
|
|
||||||
logger.info('Writing output')
|
|
||||||
|
|
||||||
output = {'text': text,
|
|
||||||
'class': 'custom-' + player.props.player_name,
|
|
||||||
'alt': player.props.player_name}
|
|
||||||
|
|
||||||
sys.stdout.write(json.dumps(output) + '\n')
|
|
||||||
sys.stdout.flush()
|
|
||||||
|
|
||||||
|
|
||||||
def on_play(player, status, manager):
|
|
||||||
logger.info('Received new playback status')
|
|
||||||
on_metadata(player, player.props.metadata, manager)
|
|
||||||
|
|
||||||
|
|
||||||
def on_metadata(player, metadata, manager):
|
|
||||||
logger.info('Received new metadata')
|
|
||||||
track_info = ''
|
|
||||||
|
|
||||||
if player.props.player_name == 'spotify' and \
|
|
||||||
'mpris:trackid' in metadata.keys() and \
|
|
||||||
':ad:' in player.props.metadata['mpris:trackid']:
|
|
||||||
track_info = 'AD PLAYING'
|
|
||||||
elif player.get_artist() != '' and player.get_title() != '':
|
|
||||||
track_info = '{artist} - {title}'.format(artist=player.get_artist(),
|
|
||||||
title=player.get_title())
|
|
||||||
else:
|
|
||||||
track_info = player.get_title()
|
|
||||||
|
|
||||||
if player.props.status != 'Playing' and track_info:
|
|
||||||
track_info = ' ' + track_info
|
|
||||||
write_output(track_info, player)
|
|
||||||
|
|
||||||
|
|
||||||
def on_player_appeared(manager, player, selected_player=None):
|
|
||||||
if player is not None and (selected_player is None or player.name == selected_player):
|
|
||||||
init_player(manager, player)
|
|
||||||
else:
|
|
||||||
logger.debug("New player appeared, but it's not the selected player, skipping")
|
|
||||||
|
|
||||||
|
|
||||||
def on_player_vanished(manager, player):
|
|
||||||
logger.info('Player has vanished')
|
|
||||||
sys.stdout.write('\n')
|
|
||||||
sys.stdout.flush()
|
|
||||||
|
|
||||||
|
|
||||||
def init_player(manager, name):
|
|
||||||
logger.debug('Initialize player: {player}'.format(player=name.name))
|
|
||||||
player = Playerctl.Player.new_from_name(name)
|
|
||||||
player.connect('playback-status', on_play, manager)
|
|
||||||
player.connect('metadata', on_metadata, manager)
|
|
||||||
manager.manage_player(player)
|
|
||||||
on_metadata(player, player.props.metadata, manager)
|
|
||||||
|
|
||||||
|
|
||||||
def signal_handler(sig, frame):
|
|
||||||
logger.debug('Received signal to stop, exiting')
|
|
||||||
sys.stdout.write('\n')
|
|
||||||
sys.stdout.flush()
|
|
||||||
# loop.quit()
|
|
||||||
sys.exit(0)
|
|
||||||
|
|
||||||
|
|
||||||
def parse_arguments():
|
|
||||||
parser = argparse.ArgumentParser()
|
|
||||||
|
|
||||||
# Increase verbosity with every occurrence of -v
|
|
||||||
parser.add_argument('-v', '--verbose', action='count', default=0)
|
|
||||||
|
|
||||||
# Define for which player we're listening
|
|
||||||
parser.add_argument('--player')
|
|
||||||
|
|
||||||
return parser.parse_args()
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
arguments = parse_arguments()
|
|
||||||
|
|
||||||
# Initialize logging
|
|
||||||
logging.basicConfig(stream=sys.stderr, level=logging.DEBUG,
|
|
||||||
format='%(name)s %(levelname)s %(message)s')
|
|
||||||
|
|
||||||
# Logging is set by default to WARN and higher.
|
|
||||||
# With every occurrence of -v it's lowered by one
|
|
||||||
logger.setLevel(max((3 - arguments.verbose) * 10, 0))
|
|
||||||
|
|
||||||
# Log the sent command line arguments
|
|
||||||
logger.debug('Arguments received {}'.format(vars(arguments)))
|
|
||||||
|
|
||||||
manager = Playerctl.PlayerManager()
|
|
||||||
loop = GLib.MainLoop()
|
|
||||||
|
|
||||||
manager.connect('name-appeared', lambda *args: on_player_appeared(*args, arguments.player))
|
|
||||||
manager.connect('player-vanished', on_player_vanished)
|
|
||||||
|
|
||||||
signal.signal(signal.SIGINT, signal_handler)
|
|
||||||
signal.signal(signal.SIGTERM, signal_handler)
|
|
||||||
signal.signal(signal.SIGPIPE, signal.SIG_DFL)
|
|
||||||
|
|
||||||
for player in manager.props.player_names:
|
|
||||||
if arguments.player is not None and arguments.player != player.name:
|
|
||||||
logger.debug('{player} is not the filtered player, skipping it'
|
|
||||||
.format(player=player.name)
|
|
||||||
)
|
|
||||||
continue
|
|
||||||
|
|
||||||
init_player(manager, player)
|
|
||||||
|
|
||||||
loop.run()
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
main()
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
LOC="$1"
|
|
||||||
# HTML encode string as %20
|
|
||||||
LOCATION=$(sed -e "s/ /%20/g" <<<"$LOC")
|
|
||||||
content=$(curl -sS "https://thisdavej.azurewebsites.net/api/weather/current?loc=$LOCATION°=C")
|
|
||||||
ICON=$(curl -s 'https://wttr.in/?format=1' | sed 's/[+0-9a-cA-Z°-]//g' )
|
|
||||||
# echo $ICON
|
|
||||||
TEMP=$(echo $content | jq -r '. | "\(.temperature)°\(.degType)"' | sed 's/"//g')
|
|
||||||
TOOLTIP=$(echo $content | jq -r '. | "\(.temperature)°\(.degType)\n\(.skytext)"' | sed 's/"//g')
|
|
||||||
CLASS=$(echo $content | jq .skytext)
|
|
||||||
echo '{"text": "'$TEMP'", "tooltip": "'$ICON $TOOLTIP $LOC'", "class": '$CLASS' }'
|
|
||||||
|
|
||||||
246
waybar/style.css
@@ -1,246 +0,0 @@
|
|||||||
/* =============================================================================
|
|
||||||
*
|
|
||||||
* Waybar configuration
|
|
||||||
*
|
|
||||||
* Configuration reference: https://github.com/Alexays/Waybar/wiki/Configuration
|
|
||||||
*
|
|
||||||
* =========================================================================== */
|
|
||||||
|
|
||||||
/* -----------------------------------------------------------------------------
|
|
||||||
* Keyframes
|
|
||||||
* -------------------------------------------------------------------------- */
|
|
||||||
|
|
||||||
/*
|
|
||||||
Arc-Dark Color Scheme
|
|
||||||
*/
|
|
||||||
@keyframes blink-warning {
|
|
||||||
70% {
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
to {
|
|
||||||
color: white;
|
|
||||||
background-color: orange;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes blink-critical {
|
|
||||||
70% {
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
to {
|
|
||||||
color: white;
|
|
||||||
background-color: red;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -----------------------------------------------------------------------------
|
|
||||||
* Base styles
|
|
||||||
* -------------------------------------------------------------------------- */
|
|
||||||
|
|
||||||
/* Reset all styles */
|
|
||||||
* {
|
|
||||||
border: none;
|
|
||||||
border-radius: 0;
|
|
||||||
min-height: 0;
|
|
||||||
margin: 1px;
|
|
||||||
padding: 0;
|
|
||||||
color: #66ACED;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* The whole bar */
|
|
||||||
window#waybar {
|
|
||||||
/* color: #dfdfdf; */
|
|
||||||
/* background-color: rgba(0,0,0,0.8); */
|
|
||||||
/* background-color: rgba(8,0,37,0.85); */
|
|
||||||
background-color: rgba(0,0,0,0);
|
|
||||||
/* font-family: JetBrains Mono Nerd Font; */
|
|
||||||
font-family: Intel One Mono Nerd Font;
|
|
||||||
font-size: 14px;
|
|
||||||
/* border-radius: 22px; */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Every modules */
|
|
||||||
#battery,
|
|
||||||
#clock,
|
|
||||||
#backlight,
|
|
||||||
#cpu,
|
|
||||||
#custom-keyboard-layout,
|
|
||||||
#memory,
|
|
||||||
#mode,
|
|
||||||
#custom-weather,
|
|
||||||
#network,
|
|
||||||
#pulseaudio,
|
|
||||||
#temperature,
|
|
||||||
#tray,
|
|
||||||
#idle_inhibitor,
|
|
||||||
#window,
|
|
||||||
#custom-power,
|
|
||||||
#workspaces,
|
|
||||||
#custom-media,
|
|
||||||
#custom-PBPbattery {
|
|
||||||
padding:0.25rem 0.75rem;
|
|
||||||
margin: 1px 6px;
|
|
||||||
background-color: rgba(0,0,0,0.8);
|
|
||||||
border-radius: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -----------------------------------------------------------------------------
|
|
||||||
* Modules styles
|
|
||||||
* -------------------------------------------------------------------------- */
|
|
||||||
|
|
||||||
#clock {
|
|
||||||
/* color: #ff4499; */
|
|
||||||
color: #73daca;
|
|
||||||
}
|
|
||||||
|
|
||||||
#custom-weather {
|
|
||||||
color: #ff4499;
|
|
||||||
}
|
|
||||||
|
|
||||||
#battery {
|
|
||||||
animation-timing-function: linear;
|
|
||||||
animation-iteration-count: infinite;
|
|
||||||
animation-direction: alternate;
|
|
||||||
}
|
|
||||||
|
|
||||||
#battery.warning {
|
|
||||||
color: orange;
|
|
||||||
}
|
|
||||||
|
|
||||||
#battery.critical {
|
|
||||||
color: red;
|
|
||||||
}
|
|
||||||
|
|
||||||
#battery.warning.discharging {
|
|
||||||
animation-name: blink-warning;
|
|
||||||
animation-duration: 3s;
|
|
||||||
}
|
|
||||||
|
|
||||||
#battery.critical.discharging {
|
|
||||||
animation-name: blink-critical;
|
|
||||||
animation-duration: 2s;
|
|
||||||
}
|
|
||||||
|
|
||||||
#cpu {
|
|
||||||
color: #f7768e;
|
|
||||||
}
|
|
||||||
|
|
||||||
#cpu.warning {
|
|
||||||
color: orange;
|
|
||||||
}
|
|
||||||
|
|
||||||
#cpu.critical {
|
|
||||||
color: red;
|
|
||||||
}
|
|
||||||
|
|
||||||
#memory {
|
|
||||||
animation-timing-function: linear;
|
|
||||||
animation-iteration-count: infinite;
|
|
||||||
animation-direction: alternate;
|
|
||||||
color: #f7768e;
|
|
||||||
}
|
|
||||||
|
|
||||||
#memory.warning {
|
|
||||||
color: orange;
|
|
||||||
}
|
|
||||||
|
|
||||||
#memory.critical {
|
|
||||||
color: red;
|
|
||||||
animation-name: blink-critical;
|
|
||||||
animation-duration: 2s;
|
|
||||||
padding-left:5px;
|
|
||||||
padding-right:5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#mode {
|
|
||||||
/* background: @highlight; */
|
|
||||||
/* background: #dfdfdf; */
|
|
||||||
border-bottom: 3px transparent;
|
|
||||||
color:#ff4499;
|
|
||||||
margin-left: 5px;
|
|
||||||
padding: 7px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#network.disconnected {
|
|
||||||
color: orange;
|
|
||||||
}
|
|
||||||
|
|
||||||
#pulseaudio {
|
|
||||||
color: #bb9af7;
|
|
||||||
border-left: 0px;
|
|
||||||
border-right: 0px;
|
|
||||||
margin-right: 0;
|
|
||||||
border-radius: 20px 0 0 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* #pulseaudio.muted { */
|
|
||||||
/* color: #ff4499; */
|
|
||||||
/* } */
|
|
||||||
/**/
|
|
||||||
#pulseaudio.microphone {
|
|
||||||
border-left: 0px;
|
|
||||||
border-right: 0px;
|
|
||||||
margin-left: 0;
|
|
||||||
padding-left: 0;
|
|
||||||
border-radius: 0 20px 20px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* #pulseaudio.microphone.muted { */
|
|
||||||
/* color: #ff4499; */
|
|
||||||
/* } */
|
|
||||||
|
|
||||||
|
|
||||||
#temperature.critical {
|
|
||||||
color: red;
|
|
||||||
}
|
|
||||||
|
|
||||||
#window {
|
|
||||||
font-weight: bold;
|
|
||||||
color: #f7768e;
|
|
||||||
}
|
|
||||||
|
|
||||||
#custom-media {
|
|
||||||
color: #bb9af7;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces {
|
|
||||||
font-size:16px;
|
|
||||||
background-color: rgba(0,0,0,0.8);
|
|
||||||
border-radius: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button {
|
|
||||||
border-bottom: 3px solid transparent;
|
|
||||||
margin-bottom: 0px;
|
|
||||||
color: #dfdfdf;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button.active {
|
|
||||||
border-bottom: 1px solid #ff4499;
|
|
||||||
margin-bottom: 1px;
|
|
||||||
padding-left:0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button.urgent {
|
|
||||||
border-color: #c9545d;
|
|
||||||
color: #c9545d;
|
|
||||||
}
|
|
||||||
|
|
||||||
#custom-power {
|
|
||||||
font-size:18px;
|
|
||||||
padding-right: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
#custom-launcher {
|
|
||||||
font-size:15px;
|
|
||||||
margin-left:15px;
|
|
||||||
margin-right:10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#backlight.icon {
|
|
||||||
padding-right:1px;
|
|
||||||
font-size: 13px;
|
|
||||||
}
|
|
||||||
|
Before Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 4.6 KiB |
|
Before Width: | Height: | Size: 5.6 KiB |
|
Before Width: | Height: | Size: 5.6 KiB |
|
Before Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 7.6 KiB |
|
Before Width: | Height: | Size: 7.6 KiB |
|
Before Width: | Height: | Size: 5.6 KiB |
|
Before Width: | Height: | Size: 5.6 KiB |
@@ -1,36 +0,0 @@
|
|||||||
{
|
|
||||||
"label" : "lock",
|
|
||||||
"action" : "swaylock",
|
|
||||||
"text" : "Lock",
|
|
||||||
"keybind" : "l"
|
|
||||||
}
|
|
||||||
{
|
|
||||||
"label" : "hibernate",
|
|
||||||
"action" : "systemctl hibernate",
|
|
||||||
"text" : "Hibernate",
|
|
||||||
"keybind" : "h"
|
|
||||||
}
|
|
||||||
{
|
|
||||||
"label" : "logout",
|
|
||||||
"action" : "loginctl terminate-user $USER",
|
|
||||||
"text" : "Logout",
|
|
||||||
"keybind" : "e"
|
|
||||||
}
|
|
||||||
{
|
|
||||||
"label" : "shutdown",
|
|
||||||
"action" : "systemctl poweroff",
|
|
||||||
"text" : "Shutdown",
|
|
||||||
"keybind" : "s"
|
|
||||||
}
|
|
||||||
{
|
|
||||||
"label" : "suspend",
|
|
||||||
"action" : "systemctl suspend",
|
|
||||||
"text" : "Suspend",
|
|
||||||
"keybind" : "u"
|
|
||||||
}
|
|
||||||
{
|
|
||||||
"label" : "reboot",
|
|
||||||
"action" : "systemctl reboot",
|
|
||||||
"text" : "Reboot",
|
|
||||||
"keybind" : "r"
|
|
||||||
}
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
# Wlogout
|
|
||||||
Make sure to link layout file with
|
|
||||||
```Bash
|
|
||||||
sudo ln ./wlogout/layout /etc/wlogout/layout
|
|
||||||
```
|
|
||||||
|
|
||||||
Icons borrowed with pride from
|
|
||||||
[gaesch](https://github.com/gasech/hyprland-dots/tree/main)
|
|
||||||
@@ -1,69 +0,0 @@
|
|||||||
window {
|
|
||||||
font-family: JetBrainsMono Nerd Font, monospace;
|
|
||||||
font-size: 12pt;
|
|
||||||
color: #cdd6f4;
|
|
||||||
background-color: rgba(30, 30, 46, 0.5);
|
|
||||||
}
|
|
||||||
|
|
||||||
button {
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-position: center;
|
|
||||||
background-size: 20%;
|
|
||||||
border: none;
|
|
||||||
color: #ced7f4;
|
|
||||||
text-shadow: none;
|
|
||||||
background-color: rgba(30, 30, 46, 0);
|
|
||||||
margin: 5px;
|
|
||||||
transition: box-shadow 0.2s ease-in-out, background-color 0.2s ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
button:hover {
|
|
||||||
background-color: rgba(49, 50, 68, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
button:focus {
|
|
||||||
background-color: #5e81ac;
|
|
||||||
color: #18182a;
|
|
||||||
text-shadow: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#lock {
|
|
||||||
background-image: image(url("./icons/lock.png"));
|
|
||||||
}
|
|
||||||
#lock:focus {
|
|
||||||
background-image: image(url("./icons/lock-hover.png"));
|
|
||||||
}
|
|
||||||
|
|
||||||
#logout {
|
|
||||||
background-image: image(url("./icons/logout.png"));
|
|
||||||
}
|
|
||||||
#logout:focus {
|
|
||||||
background-image: image(url("./icons/logout-hover.png"));
|
|
||||||
}
|
|
||||||
|
|
||||||
#suspend {
|
|
||||||
background-image: image(url("./icons/sleep.png"));
|
|
||||||
}
|
|
||||||
#suspend:focus {
|
|
||||||
background-image: image(url("./icons/sleep-hover.png"));
|
|
||||||
}
|
|
||||||
|
|
||||||
#shutdown {
|
|
||||||
background-image: image(url("./icons/power.png"));
|
|
||||||
}
|
|
||||||
#shutdown:focus {
|
|
||||||
background-image: image(url("./icons/power-hover.png"));
|
|
||||||
}
|
|
||||||
|
|
||||||
#reboot {
|
|
||||||
background-image: image(url("./icons/restart.png"));
|
|
||||||
}
|
|
||||||
#reboot:focus {
|
|
||||||
background-image: image(url("./icons/restart-hover.png"));
|
|
||||||
}
|
|
||||||
#hibernate {
|
|
||||||
background-image: image(url("./icons/hibernate.png"));
|
|
||||||
}
|
|
||||||
#hibernate:focus {
|
|
||||||
background-image: image(url("./icons/hibernate-hover.png"));
|
|
||||||
}
|
|
||||||
32
wofi/config
@@ -1,32 +0,0 @@
|
|||||||
# hide_scroll=true
|
|
||||||
# show=drun
|
|
||||||
# width=35%
|
|
||||||
# lines=15
|
|
||||||
# line_wrap=word
|
|
||||||
# term=alacritty
|
|
||||||
# allow_markup=true
|
|
||||||
# always_parse_args=true
|
|
||||||
# show_all=true
|
|
||||||
# print_command=true
|
|
||||||
# layer=overlay
|
|
||||||
# allow_images=true
|
|
||||||
# insensitive=true
|
|
||||||
# prompt=
|
|
||||||
# image_size=15
|
|
||||||
# display_generic=true
|
|
||||||
# location=center
|
|
||||||
|
|
||||||
width=700
|
|
||||||
height=350
|
|
||||||
show=drun
|
|
||||||
prompt=Search...
|
|
||||||
filter_rate=100
|
|
||||||
allow_markup=true
|
|
||||||
no_actions=true
|
|
||||||
halign=fill
|
|
||||||
orientation=vertical
|
|
||||||
content_halign=fill
|
|
||||||
insensitive=true
|
|
||||||
allow_images=true
|
|
||||||
image_size=30
|
|
||||||
gtk_dark=true
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
hide_search=true
|
|
||||||
hide_scroll=true
|
|
||||||
insensitive=true
|
|
||||||
width=1
|
|
||||||
show=dmenu
|
|
||||||
lines=5
|
|
||||||
location=centre
|
|
||||||
x=870
|
|
||||||
y=455
|
|
||||||
@@ -1,61 +0,0 @@
|
|||||||
/*
|
|
||||||
Arc-Dark Color Scheme
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* @define-color highlight #e30b9b; */
|
|
||||||
@define-color highlight #f7768e;
|
|
||||||
@define-color base1 rgba(0,0,0,0.2);
|
|
||||||
@define-color base2 rgba(0,0,0,0.8);
|
|
||||||
@define-color base3 rgba(0,0,0,0.1);
|
|
||||||
|
|
||||||
*{
|
|
||||||
font-family: JetBrains Mono Nerd Font;
|
|
||||||
}
|
|
||||||
|
|
||||||
window {
|
|
||||||
/* border: 1px solid @highlight; */
|
|
||||||
border-radius: 18px;
|
|
||||||
/* background: rgba(0,0,0,0); */
|
|
||||||
color: #bb9af7;
|
|
||||||
position: relative;
|
|
||||||
background: linear-gradient(to bottom right, #73daca, #f7768e);
|
|
||||||
padding: 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#input {
|
|
||||||
margin-bottom: 15px;
|
|
||||||
padding:3px;
|
|
||||||
border-radius: 5px;
|
|
||||||
border:none;
|
|
||||||
outline:none;
|
|
||||||
/* color: white; */
|
|
||||||
color: #bb9af7;
|
|
||||||
/* background: @base1; */
|
|
||||||
background-color: #0a0a0a;
|
|
||||||
}
|
|
||||||
|
|
||||||
#inner-box {
|
|
||||||
/* background: @base3; */
|
|
||||||
}
|
|
||||||
|
|
||||||
#outer-box {
|
|
||||||
margin: 3px;
|
|
||||||
padding:15px;
|
|
||||||
background-color: #0a0a0a;
|
|
||||||
border-radius: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#text {
|
|
||||||
padding: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* #entry:nth-child(even) { */
|
|
||||||
/* background-color: @base1; */
|
|
||||||
/* } */
|
|
||||||
|
|
||||||
#entry:selected {
|
|
||||||
color: black;
|
|
||||||
background-color: @highlight;
|
|
||||||
border:none;
|
|
||||||
outline:none;
|
|
||||||
}
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
/*
|
|
||||||
Arc-Dark Color Scheme
|
|
||||||
*/
|
|
||||||
|
|
||||||
@define-color highlight #f7768e;
|
|
||||||
@define-color base1 rgba(0,0,0,0.6);
|
|
||||||
@define-color base2 rgba(0,0,0,0.8);
|
|
||||||
@define-color base3 rgba(0,0,0,0.1);
|
|
||||||
|
|
||||||
*{
|
|
||||||
font-family: JetBrainsMono;
|
|
||||||
/* height: fit-content; */
|
|
||||||
}
|
|
||||||
|
|
||||||
#window {
|
|
||||||
border: 2px solid @highlight;
|
|
||||||
border-radius: 4px;
|
|
||||||
background-color: rgba(0,0,0,0);
|
|
||||||
color: #bb9af7;
|
|
||||||
padding: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#inner-box {
|
|
||||||
background-color: @base1;
|
|
||||||
/* background-color: @base2; */
|
|
||||||
}
|
|
||||||
|
|
||||||
#outer-box {
|
|
||||||
/*margin: 5px;
|
|
||||||
padding:5px 10px;
|
|
||||||
*/
|
|
||||||
border-radius: 4px;
|
|
||||||
margin-top: -32px;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#text {
|
|
||||||
padding: 5px;
|
|
||||||
/* color: white; */
|
|
||||||
}
|
|
||||||
|
|
||||||
#entry:nth-child(even) {
|
|
||||||
/* background-color: pink; */
|
|
||||||
}
|
|
||||||
|
|
||||||
#entry:selected {
|
|
||||||
color: black;
|
|
||||||
background-color: @highlight;
|
|
||||||
}
|
|
||||||
119
wofi/windows.py
@@ -1,119 +0,0 @@
|
|||||||
#!/bin/python3
|
|
||||||
import json
|
|
||||||
import subprocess
|
|
||||||
from argparse import ArgumentParser
|
|
||||||
|
|
||||||
ENTER = "\n"
|
|
||||||
|
|
||||||
|
|
||||||
def get_windows():
|
|
||||||
|
|
||||||
command = "swaymsg -t get_tree"
|
|
||||||
process = subprocess.Popen(
|
|
||||||
command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE
|
|
||||||
)
|
|
||||||
|
|
||||||
process = subprocess.Popen(
|
|
||||||
command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE
|
|
||||||
)
|
|
||||||
data = json.loads(process.communicate()[0])
|
|
||||||
|
|
||||||
# Select outputs that are active
|
|
||||||
windows = []
|
|
||||||
for output in data["nodes"]:
|
|
||||||
|
|
||||||
# The scratchpad (under __i3) is not supported
|
|
||||||
if output.get("name") != "__i3" and output.get("type") == "output":
|
|
||||||
workspaces = output.get("nodes", [])
|
|
||||||
for ws in workspaces:
|
|
||||||
if ws.get("type") == "workspace":
|
|
||||||
windows.extend(extract_nodes_iterative(ws))
|
|
||||||
return windows
|
|
||||||
|
|
||||||
|
|
||||||
# Extracts all windows from a sway workspace json object
|
|
||||||
def extract_nodes_iterative(workspace):
|
|
||||||
all_nodes = []
|
|
||||||
|
|
||||||
floating_nodes = workspace.get("floating_nodes", [])
|
|
||||||
|
|
||||||
for floating_node in floating_nodes:
|
|
||||||
all_nodes.append(floating_node)
|
|
||||||
|
|
||||||
nodes = workspace.get("nodes", [])
|
|
||||||
|
|
||||||
for node in nodes:
|
|
||||||
|
|
||||||
# Leaf node
|
|
||||||
if not node.get("nodes"):
|
|
||||||
all_nodes.append(node)
|
|
||||||
# Nested node, handled iterative
|
|
||||||
else:
|
|
||||||
for inner_node in node.get("nodes"):
|
|
||||||
nodes.append(inner_node)
|
|
||||||
|
|
||||||
return all_nodes
|
|
||||||
|
|
||||||
|
|
||||||
# Returns an array of all windows
|
|
||||||
def parse_windows(windows):
|
|
||||||
return [window.get("name") for window in windows]
|
|
||||||
|
|
||||||
|
|
||||||
# Returns a newline seperated UFT-8 encoded string of all windows for wofi
|
|
||||||
def build_wofi_string(windows):
|
|
||||||
return ENTER.join(windows).encode("UTF-8")
|
|
||||||
|
|
||||||
|
|
||||||
# Executes wofi with the given input string
|
|
||||||
def show_wofi(windows):
|
|
||||||
|
|
||||||
command = 'wofi -c ~/.config/wofi/menu -s ~/.config/wofi/style.css -p "Windows: " -d -i --hide-scroll'
|
|
||||||
|
|
||||||
process = subprocess.Popen(
|
|
||||||
command, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE
|
|
||||||
)
|
|
||||||
return process.communicate(input=windows)[0]
|
|
||||||
|
|
||||||
|
|
||||||
# Returns the sway window id of the window that was selected by the user inside wofi
|
|
||||||
def parse_id(windows, parsed_windows, selected):
|
|
||||||
if not selected:
|
|
||||||
return None
|
|
||||||
else:
|
|
||||||
selected = (selected.decode("UTF-8"))[:-1] # Remove new line character
|
|
||||||
window_index = int(
|
|
||||||
parsed_windows.index(selected)
|
|
||||||
) # Get index of selected window in the parsed window array
|
|
||||||
return str(
|
|
||||||
windows[window_index].get("id")
|
|
||||||
) # Get sway window id based on the index
|
|
||||||
|
|
||||||
|
|
||||||
# Switches the focus to the given id
|
|
||||||
def switch_window(id):
|
|
||||||
command = "swaymsg [con_id={}] focus".format(id)
|
|
||||||
|
|
||||||
process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE)
|
|
||||||
process.communicate()[0]
|
|
||||||
|
|
||||||
|
|
||||||
# Entry point
|
|
||||||
if __name__ == "__main__":
|
|
||||||
|
|
||||||
parser = ArgumentParser(description="Wofi based window switcher")
|
|
||||||
|
|
||||||
windows = get_windows()
|
|
||||||
|
|
||||||
parsed_windows = parse_windows(windows)
|
|
||||||
|
|
||||||
wofi_string = build_wofi_string(parsed_windows)
|
|
||||||
|
|
||||||
selected = show_wofi(wofi_string)
|
|
||||||
|
|
||||||
# Otherwise no point in running
|
|
||||||
if selected:
|
|
||||||
|
|
||||||
selected_id = parse_id(windows, parsed_windows, selected)
|
|
||||||
|
|
||||||
switch_window(selected_id)
|
|
||||||