From 58f56bc49d2a743d73276af3152c1b0fbf7cf291 Mon Sep 17 00:00:00 2001 From: Logan Gartner Date: Thu, 25 Mar 2021 00:33:49 -0600 Subject: [PATCH] Wayland support --- .config/.gitignore | 4 + .config/sway/config | 258 ++++++++++++++++++++++++++++++++++ .config/sway/import-gsettings | 15 ++ .config/waybar/config | 120 ++++++++++++++++ .config/waybar/launch.sh | 10 ++ .config/waybar/style.css | 72 ++++++++++ 6 files changed, 479 insertions(+) create mode 100644 .config/sway/config create mode 100755 .config/sway/import-gsettings create mode 100644 .config/waybar/config create mode 100755 .config/waybar/launch.sh create mode 100644 .config/waybar/style.css diff --git a/.config/.gitignore b/.config/.gitignore index baefbc8..54cb497 100644 --- a/.config/.gitignore +++ b/.config/.gitignore @@ -20,6 +20,10 @@ !picom/** !rofi/ !rofi/** +!sway/ +!sway/** +!waybar/ +!waybar/** !.gitignore polybar/default diff --git a/.config/sway/config b/.config/sway/config new file mode 100644 index 0000000..2f53b8d --- /dev/null +++ b/.config/sway/config @@ -0,0 +1,258 @@ +# 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 + +# 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 -- i3lock --nofork + +# 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 +#exec --no-startup-id nm-tray 2>&1 & + +# 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 + +# start a terminal +bindsym $mod+Return exec i3-sensible-terminal + +# kill focused window +bindsym $mod+Shift+q kill + +# start dmenu (a program launcher) +#bindsym $mod+d exec dmenu_run +#bindsym $mod+d exec jgmenu_run +#bindsym $mod+d exec source ~/.bashrc && j4-dmenu-desktop --dmenu="dmenu -i -nb '#2c2e33' -nf '#cccccc' -sf '#ffffff' -sb '#4285f4'" --term="i3-sensible-terminal" +bindsym $mod+d exec source ~/.bashrc && wofi --show drun --allow-images -G + +# There also is the (new) i3-dmenu-desktop which only displays applications +# shipping a .desktop file. It is a wrapper around dmenu, so you need that +# installed. +# bindsym $mod+d exec --no-startup-id i3-dmenu-desktop + +# change focus +bindsym $mod+j focus left +bindsym $mod+k focus down +bindsym $mod+l focus up +bindsym $mod+semicolon focus right + +# 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+semicolon 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+space floating toggle + +# change focus between tiling / floating windows +bindsym $mod+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 'Do you wish to logout?' -B 'Yes' '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 semicolon 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" + + +### Custom +#bindsym Ctrl+Mod1+l exec --no-startup-id loginctl lock-session +bindsym Ctrl+Mod1+l exec --no-startup-id swaylock +#bindsym Ctrl+Mod1+l exec --no-startup-id betterlockscreen -l -t "${USER}@${HOSTNAME}" --off 10 + +# Background +output "*" bg ~/Pictures/orion-nebula-5120x2880-hubble-space-telescope-nasa-hd-5k-1933.jpg fill + +# Move workspace over to neighboring monitors +bindsym $mod+Ctrl+Left move workspace to output left +bindsym $mod+Ctrl+Right move workspace to output right + +# xkill +bindsym $mod+Ctrl+q --release exec --no-startup-id xkill -display $DISPLAY + +# Screen brightness controls +bindsym XF86MonBrightnessUp exec xbacklight -inc 20 # increase screen brightness +bindsym XF86MonBrightnessDown exec xbacklight -dec 20 # decrease screen brightness + +# Touchpad controls +#bindsym XF86TouchpadToggle exec /some/path/toggletouchpad.sh # toggle touchpad + +# Media player controls +#bindsym XF86AudioPlay exec --no-startup-id playerctl play +bindsym XF86AudioPause exec --no-startup-id ~/.config/i3/toggleplay.sh +bindsym XF86AudioNext exec --no-startup-id playerctl next +bindsym XF86AudioPrev exec --no-startup-id playerctl previous + +#Screenshot +bindsym Print exec --no-startup-id flameshot gui -p ~/Pictures/Screenshots +bindsym Shift+Print exec --no-startup-id flameshot full -p ~/Pictures/Screenshots +bindsym Ctrl+Shift+Print exec --no-startup-id flameshot full -c + +# Start i3bar to display a workspace bar (plus the system information i3status +# finds out, if available) +#bar { +# status_command i3status +#} + +# Startup +exec_always --no-startup-id $HOME/.config/waybar/launch.sh 2>&1 +exec_always --no-startup-id ~/.config/i3/customalways.sh 2>&1 +exec_always --no-startup-id ~/.config/sway/import-gsettings + +#exec --no-startup-id QT_QPA_PLATFORMTHEME=qt5ct flameshot 2>&1 & +#exec --no-startup-id picom -b 2>&1 & +exec --no-startup-id dunst 2>&1 & +exec --no-startup-id kanshi & +exec --no-startup-id lxqt-policykit-agent 2>&1 & +exec --no-startup-id syncthing -no-browser -home="$HOME/.config/syncthing" 2>&1 & +exec --no-startup-id kdeconnect-indicator 2>&1 & +exec --no-startup-id xfce4-power-manager 2>&1 & +exec --no-startup-id xss-lock -- betterlockscreen -l -t "${USER}@${HOSTNAME}" --off 10 2>&1 & +exec --no-startup-id ~/.config/i3/customonce.sh 2>&1 + +# Borders +default_border pixel 0 +for_window [class=".*"] border pixel 0 + +focus_follows_mouse yes + +# Gaps +gaps inner 5 +gaps top 0 +gaps bottom 0 + +# Colors + +# class border bground text indicator child_border +client.focused #4285F4 #4285F4 #FFFFFF #4285F4 #2F60B0 +client.focused_inactive #3B3E44 #2C2E3A #FFFFFF #2C2E3A #10213C +client.unfocused #3B3E44 #2C2E33 #CCCCCC #2C2E33 #222222 +client.urgent #2F343A #900000 #FFFFFF #2F343A #900000 +client.placeholder #000000 #0C0C0C #FFFFFF #000000 #0C0C0C + +client.background #FFFFFF diff --git a/.config/sway/import-gsettings b/.config/sway/import-gsettings new file mode 100755 index 0000000..e1257df --- /dev/null +++ b/.config/sway/import-gsettings @@ -0,0 +1,15 @@ +#!/bin/sh + +# usage: import-gsettings +config="${XDG_CONFIG_HOME:-$HOME/.config}/gtk-3.0/settings.ini" +if [ ! -f "$config" ]; then exit 1; fi + +gnome_schema="org.gnome.desktop.interface" +gtk_theme="$(grep 'gtk-theme-name' "$config" | cut -d'=' -f2)" +icon_theme="$(grep 'gtk-icon-theme-name' "$config" | cut -d'=' -f2)" +cursor_theme="$(grep 'gtk-cursor-theme-name' "$config" | cut -d'=' -f2)" +font_name="$(grep 'gtk-font-name' "$config" | cut -d'=' -f2)" +gsettings set "$gnome_schema" gtk-theme "$gtk_theme" +gsettings set "$gnome_schema" icon-theme "$icon_theme" +gsettings set "$gnome_schema" cursor-theme "$cursor_theme" +gsettings set "$gnome_schema" font-name "$font_name" diff --git a/.config/waybar/config b/.config/waybar/config new file mode 100644 index 0000000..4a6bafa --- /dev/null +++ b/.config/waybar/config @@ -0,0 +1,120 @@ +{ + "layer": "bottom", + "position": "top", + "height": 20, + + "modules-left": ["sway/workspaces", "sway/mode"], + "modules-center": ["sway/window"], + //"modules-right": ["tray", "custom/spotify", "custom/weather", "custom/mail", "custom/storage", "backlight", "pulseaudio", "network", "idle_inhibitor", "battery", "clock"], + "modules-right": ["backlight", "pulseaudio", "idle_inhibitor", "battery", "clock", "tray"], + "sway/mode": { + "format": " {}" + }, + "sway/workspaces": { + "format": "{name}", + "disable-scroll": true + }, + "sway/window": { + "max-length": 80, + "tooltip": false + }, + "clock": { + "format": "{:%a %d %b %H:%M}", + "tooltip": false + }, + "battery": { + "format": "{capacity}% {icon}", + "format-alt": "{time} {icon}", + "format-icons": ["", "", "", "", ""], + "format-charging": "{capacity}% ", + "interval": 30, + "states": { + "warning": 25, + "critical": 10 + }, + "tooltip": false + }, + "network": { + "format": "{icon}", + "format-alt": "{ipaddr}/{cidr} {icon}", + "format-alt-click": "click-right", + "format-icons": { + "wifi": ["", "" ,""], + "ethernet": [""], + "disconnected": [""] + }, + "on-click": "termite -e nmtui", + "tooltip": false + }, + "pulseaudio": { + "format": "{icon}", + "format-alt": "{volume} {icon}", + "format-alt-click": "click-right", + "format-muted": "", + "format-icons": { + "phone": [" ", " ", " ", " "], + "default": ["", "", "", ""] + }, + "scroll-step": 10, + "on-click": "pavucontrol", + "tooltip": false + }, + "custom/spotify": { + "interval": 1, + "return-type": "json", + "exec": "~/.config/waybar/modules/spotify.sh", + "exec-if": "pgrep spotify", + "escape": true + }, + "custom/storage": { + "format": "{} ", + "format-alt": "{percentage}% ", + "format-alt-click": "click-right", + "return-type": "json", + "interval": 60, + "exec": "~/.config/waybar/modules/storage.sh" + }, + "backlight": { + "format": "{icon}", + "format-alt": "{percent}% {icon}", + "format-alt-click": "click-right", + "format-icons": ["", ""], + "on-scroll-down": "light -A 1", + "on-scroll-up": "light -U 1" + }, + "custom/weather": { + "format": "{}", + "format-alt": "{alt}: {}", + "format-alt-click": "click-right", + "interval": 1800, + "return-type": "json", + "exec": "~/.config/waybar/modules/weather.sh", + "exec-if": "ping wttr.in -c1" + }, + "idle_inhibitor": { + "format": "{icon}", + "format-icons": { + "activated": "", + "deactivated": "" + }, + "tooltip": false + }, + "custom/mail": { + "format": "", + "format-alt": "{alt} ", + "format-alt-click": "click-right", + "interval": 60, + "return-type": "json", + "exec": "~/.config/waybar/modules/mail.py", + "tooltip": false + }, + "custom/test": { + "format": "{}", + "exec": "/tmp/test blub", + "param": "blah", + "interval": 5 + }, + "tray": { + "icon-size": 16 + } +} diff --git a/.config/waybar/launch.sh b/.config/waybar/launch.sh new file mode 100755 index 0000000..720620c --- /dev/null +++ b/.config/waybar/launch.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env sh + +# Terminate already running bar instances +killall -q waybar + +# Wait until the processes have been shut down +while pgrep -x waybar >/dev/null; do sleep 1; done + +# Launch main +waybar diff --git a/.config/waybar/style.css b/.config/waybar/style.css new file mode 100644 index 0000000..70e4ba5 --- /dev/null +++ b/.config/waybar/style.css @@ -0,0 +1,72 @@ +* { + border: none; + border-radius: 0; + font-family: Sans; + font-size: 11px; + box-shadow: none; + text-shadow: none; + transition-duration: 0s; + min-height: 0; +} + +window { + color: rgba(217, 216, 216, 1); + background: rgba(35, 31, 32, 0.00); +} + +window#waybar.solo { + color: rgba(217, 216, 216, 1); + background: rgba(35, 31, 32, 0.85); +} + +#workspaces { + margin: 0 5px; +} + +#workspaces button { + padding: 0 5px; + color: rgba(217, 216, 216, 0.4); +} + +#workspaces button.visible { + color: rgba(217, 216, 216, 1); +} + +#workspaces button.focused { + border-top: 3px solid rgba(217, 216, 216, 1); + border-bottom: 3px solid rgba(217, 216, 216, 0); +} + +#workspaces button.urgent { + color: rgba(238, 46, 36, 1); +} + +#mode, #battery, #cpu, #memory, #network, #pulseaudio, #idle_inhibitor, #backlight, #custom-storage, #custom-spotify, #custom-weather, #custom-mail { + margin: 0px 6px 0px 10px; + min-width: 15px; +} + +#clock { + margin: 0px 16px 0px 10px; + min-width: 100px; +} + +#battery.warning { + color: rgba(255, 210, 4, 1); +} + +#battery.critical { + color: rgba(238, 46, 36, 1); +} + +#battery.charging { + color: rgba(217, 216, 216, 1); +} + +#custom-storage.warning { + color: rgba(255, 210, 4, 1); +} + +#custom-storage.critical { + color: rgba(238, 46, 36, 1); +}