feat: i3 configs

This commit is contained in:
Elias Renman
2024-02-01 00:03:56 +01:00
parent 85814083ce
commit 0884c0cdeb
37 changed files with 425 additions and 1377 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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%

View File

@@ -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
View 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 windows width.
# Pressing right will grow the windows width.
# Pressing up will shrink the windows height.
# Pressing down will grow the windows 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
View 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
View 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
View 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
View 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

View File

@@ -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

View File

@@ -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)

View File

@@ -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
}
}

View File

@@ -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

View File

@@ -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"

View File

@@ -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()

View File

@@ -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&deg=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' }'

View File

@@ -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;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

View File

@@ -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"
}

View File

@@ -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)

View File

@@ -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"));
}

View File

@@ -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

View File

@@ -1,9 +0,0 @@
hide_search=true
hide_scroll=true
insensitive=true
width=1
show=dmenu
lines=5
location=centre
x=870
y=455

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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)