diff --git a/.config/sway/config b/.config/sway/config new file mode 100644 index 0000000..ef18edf --- /dev/null +++ b/.config/sway/config @@ -0,0 +1,264 @@ +# Config for sway + +# +### Variables +# +set { + $mod Mod4 + $left h + $down j + $up k + $right l + $term kitty + $menu rofi -show drun -icon-theme "Papirus-Dark" -show-icons | xargs swaymsg exec -- + $gnome-schema org.gnome.desktop.interface + $gtk_theme "Adapta-Nokto-Eta" + $icon_theme "Papirus-Dark" + $bg ~/Pictures/drain.jpg + $lockscreen exec '~/.local/bin/lockscreen' +} + +# +### Autoruns +# +exec_always --no-startup-id { + gsettings set $gnome-schema gtk-theme $gtk_theme + gsettings set $gnome-schema icon-theme $icon_theme + mako --anchor bottom-right > /tmp/mako.log 2>&1 + swayidle -w timeout 1200 "$lockscreen"\ + timeout 1201 'swaymsg "output * dpms off"'\ + resume 'swaymsg "output * dpms on"'\ + before-sleep "$lockscreen" +} + +# +### Output configuration +# +# Set desktop background +output * bg $bg fill + +# +### Key bindings +# +# Basics: +# + # Start a terminal + bindsym $mod+Return exec $term + + # Kill focused window + bindsym $mod+Shift+q kill + + # Start your launcher + bindsym $mod+d exec $menu + + # Drag floating windows by holding down $mod and left mouse button. + # Resize them with right mouse button + $mod. + # Despite the name, also works for non-floating windows. + # Change normal to inverse to use left mouse button for resizing and right + # mouse button for dragging. + floating_modifier $mod normal + + # Reload the configuration file + bindsym $mod+Shift+c reload + + # Exit sway (logs you out of your Wayland session) + bindsym $mod+Shift+e exec swaynag -t warning -m 'Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit' + + #Lock the session + bindsym Control+Shift+l $lockscreen + +# +# Program shortcuts +# +bindsym { + $mod+c exec gnome-calculator +} + +# +# Moving around: +# + # Move your focus around + bindsym $mod+$left focus left + bindsym $mod+$down focus down + bindsym $mod+$up focus up + bindsym $mod+$right focus right + # Or use $mod+[up|down|left|right] + bindsym $mod+Left focus left + bindsym $mod+Down focus down + bindsym $mod+Up focus up + bindsym $mod+Right focus right + + # Move the focused window with the same, but add Shift + bindsym $mod+Shift+$left move left + bindsym $mod+Shift+$down move down + bindsym $mod+Shift+$up move up + bindsym $mod+Shift+$right move right + # Ditto, with arrow 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 +# +# Workspaces: +# + # Switch to workspace + bindsym $mod+1 workspace 1 + bindsym $mod+2 workspace 2 + bindsym $mod+3 workspace 3 + bindsym $mod+4 workspace 4 + bindsym $mod+5 workspace 5 + bindsym $mod+6 workspace 6 + bindsym $mod+7 workspace 7 + bindsym $mod+8 workspace 8 + bindsym $mod+9 workspace 9 + bindsym $mod+0 workspace 10 + bindsym $mod+t workspace tg + # Move focused container to workspace + bindsym $mod+Shift+1 move container to workspace 1 + bindsym $mod+Shift+2 move container to workspace 2 + bindsym $mod+Shift+3 move container to workspace 3 + bindsym $mod+Shift+4 move container to workspace 4 + bindsym $mod+Shift+5 move container to workspace 5 + bindsym $mod+Shift+6 move container to workspace 6 + bindsym $mod+Shift+7 move container to workspace 7 + bindsym $mod+Shift+8 move container to workspace 8 + bindsym $mod+Shift+9 move container to workspace 9 + bindsym $mod+Shift+0 move container to workspace 10 +# +# Layout stuff: +# + # You can "split" the current object of your focus with + # $mod+b or $mod+v, for horizontal and vertical splits + # respectively. + bindsym $mod+b splith + bindsym $mod+v splitv + + # Switch the current container between different layout styles + bindsym $mod+s layout stacking + bindsym $mod+w layout tabbed + bindsym $mod+e layout toggle split + + # Make the current focus fullscreen + bindsym $mod+f fullscreen + + # Toggle the current focus between tiling and floating mode + bindsym $mod+Shift+space floating toggle + + # Swap focus between the tiling area and the floating area + bindsym $mod+space focus mode_toggle + + # Move focus to the parent container + bindsym $mod+a focus parent + +# +# Media keys and screenshots +# + + bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5% + bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5% + bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle + bindsym XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle + bindsym XF86MonBrightnessDown exec brightnessctl set 5%- + bindsym XF86MonBrightnessUp exec brightnessctl set +5% + bindsym print exec grim ~/Pictures/Screenshots/grim-$(date +'%Y-%m-%d_%H-%M-%S').png + bindsym Shift+print exec grim -g "$(slurp)" ~/Pictures/Screenshots/grim-$(date +'%Y-%m-%d_%H-%M-%S').png + +# +# Scratchpad: +# + # Sway has a "scratchpad", which is a bag of holding for windows. + # You can send windows there and get them back later. + + # Move the currently focused window to the scratchpad + bindsym $mod+Shift+minus move scratchpad + + # Show the next scratchpad window or hide the focused scratchpad window. + # If there are multiple scratchpad windows, this command cycles through them. + bindsym $mod+minus scratchpad show +# +# Resizing containers: +# +mode "resize" { + # left will shrink the containers width + # right will grow the containers width + # up will shrink the containers height + # down will grow the containers height + bindsym $left resize shrink width 10px + bindsym $down resize grow height 10px + bindsym $up resize shrink height 10px + bindsym $right resize grow width 10px + + # Ditto, with arrow keys + bindsym Left resize shrink width 10px + bindsym Down resize grow height 10px + bindsym Up resize shrink height 10px + bindsym Right resize grow width 10px + + # Return to default mode + bindsym Return mode "default" + bindsym Escape mode "default" +} +bindsym $mod+r mode "resize" + +# +### Input +# +focus_follows_mouse yes +focus_wrapping false +popup_during_fullscreen leave_fullscreen + +# +### Look and feel +# +# Gaps +# +gaps inner 2 +gaps outer 4 +# +# Title Bar +# +titlebar_padding 1 +font "Noto Sans Mono 8" +# +# Font +# +font pango:Noto Sans 12px +# +# Borders +# +default_border pixel 2 +default_floating_border pixel 2 +# +# Status Bar: +# +bar { + position top + swaybar_command waybar +} +# +# Floating windows +# +for_window [class="pop-up"] floating enable; border normal $border +for_window [window_role="pop-up"] floating enable; border normal $border +for_window [window_role="task_dialog"] floating enable; border normal $border +for_window [class="matplotlib"] floating enable; border normal $border +for_window [title="ImageMagick.*"] { + floating enable; + border normal $border + title_format " %title" +} +for_window [app_id="nm-connection-editor"] { + floating enable + resize set width 882px + resize set height 600px +} +for_window [app_id="pavucontrol"] { + floating enable + resize set width 882px + resize set height 600px +} +for_window [title="Calculator"] floating enable; border pixel 2 + + + +include /etc/sway/config.d/* diff --git a/.config/waybar/config b/.config/waybar/config new file mode 100644 index 0000000..80c57ee --- /dev/null +++ b/.config/waybar/config @@ -0,0 +1,159 @@ +{ + "layer": "top", // Waybar at top layer + "position": "top", // Waybar position (top|bottom|left|right) + "height": 20, // Waybar height (to be removed for auto height) + // "width": 1280, // Waybar width + // Choose the order of the modules + "modules-left": ["sway/workspaces", "sway/mode"], + "modules-center": ["sway/window"], + "modules-right": ["pulseaudio", "network", "cpu", "memory", "temperature", "backlight", "battery", "battery#bat2", "clock#date", "clock#time", "tray"], +// Modules configuration +// "sway/workspaces": { +// "disable-scroll": true, +// "all-outputs": true, +// "format": "{name} {icon}", +// "format-icons": { +// "1": "", +// "2": "", +// "3": "", +// "4": "", +// "5": "", +// "urgent": "", +// "focused": "", +// "default": "" +// } +// }, + "sway/mode": { + "format": "{}" + }, + "mpd": { + "format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ", + "format-disconnected": "Disconnected ", + "format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ", + "unknown-tag": "N/A", + "interval": 2, + "consume-icons": { + "on": " " + }, + "random-icons": { + "off": " ", + "on": " " + }, + "repeat-icons": { + "on": " " + }, + "single-icons": { + "on": "1 " + }, + "state-icons": { + "paused": "", + "playing": "" + }, + "tooltip-format": "MPD (connected)", + "tooltip-format-disconnected": "MPD (disconnected)" + }, + "idle_inhibitor": { + "format": "{icon}", + "format-icons": { + "activated": "", + "deactivated": "" + } + }, + "tray": { + // "icon-size": 21, + "spacing": 10 + }, + //"clock": { + // // "timezone": "America/New_York", + // "tooltip-format": "{:%Y %B}\n{calendar}", + // "format-alt": "{:%Y-%m-%d}" + //}, + "clock#time": { + "interval": 1, + "format": "{:%H:%M:%S}", + "tooltip": false + }, + "clock#date": { + "interval": 10, + "format": "{:%a %b %e %Y}", + "tooltip": false + }, + "cpu": { + "format": " {usage}%", + "tooltip": false + }, + "memory": { + "format": "{}%" + }, + "temperature": { + // "thermal-zone": 2, + // "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input", + "critical-threshold": 80, + // "format-critical": "{temperatureC}°C {icon}", + "format": "{icon} {temperatureC}°C", + "format-icons": ["", "", ""] + }, + "backlight": { + // "device": "acpi_video1", + "interval": 5, + "format": "{icon} {percent}%", + "format-icons": ["", ""] + }, + "battery": { + "states": { + // "good": 95, + "warning": 30, + "critical": 15 + }, + "format": "{capacity}% {icon}", + "format-charging": " {capacity}%", + "format-plugged": " {capacity}%", + "format-alt": "{icon}{time}", + // "format-good": "", // An empty format will hide the module + // "format-full": "", + "format-icons": ["", "", "", "", ""] + }, + "battery#bat2": { + "bat": "BAT2" + }, + "network": { + // "interface": "wlp2*", // (Optional) To force the use of this interface + "format-wifi": " {essid} ({signalStrength}%)", + //"format-ethernet": "{ifname}: {ipaddr}/{cidr} ", + "format-ethernet": " {ipaddr}/{cidr}", + "format-linked": " {ifname} (No IP)", + "format-disconnected": "Disconnected ⚠", + "format-alt": "{ifname}" + }, + "pulseaudio": { + // "scroll-step": 1, // %, can be a float + "format": "{icon} {volume}% {format_source}", + "format-bluetooth": "{volume}% {icon} {format_source}", + "format-bluetooth-muted": " {icon} {format_source}", + "format-muted": " {format_source}", + "format-source": " {volume}%", + "format-source-muted": "", + "format-icons": { + "headphone": "", + "hands-free": "", + "headset": "", + "phone": "", + "portable": "", + "car": "", + "default": ["", "", ""] + }, + "on-click": "pavucontrol" + }, + "custom/media": { + "format": "{icon} {}", + "return-type": "json", + "max-length": 40, + "format-icons": { + "spotify": "", + "default": "🎜" + }, + "escape": true, + "exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder + // "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name + } +} diff --git a/.config/waybar/style.css b/.config/waybar/style.css new file mode 100644 index 0000000..d327e81 --- /dev/null +++ b/.config/waybar/style.css @@ -0,0 +1,215 @@ +* { + border: none; + border-radius: 0; + /* `otf-font-awesome` is required to be installed for icons */ + font-family: Roboto, Helvetica, Arial, sans-serif; + font-size: 13px; + min-height: 0; +} + +window#waybar { + background-color: transparent; + /*background-color: rgba(43, 48, 59, 0.5);*/ + /* border-bottom: 3px solid rgba(100, 114, 125, 0.5); */ + color: #ffffff; + transition-property: background-color; + transition-duration: .5s; +} + +window#waybar.hidden { + opacity: 0.2; +} + +/* +window#waybar.empty { + background-color: transparent; +} +window#waybar.solo { + background-color: #FFFFFF; +} +*/ + +window#waybar.termite { + background-color: #3F3F3F; +} + +window#waybar.chromium { + background-color: #000000; + border: none; +} + +#workspaces button { + padding: 0 5px; + background-color: transparent; + color: #ffffff; + /* border-bottom: 3px solid transparent; */ +} + +/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */ +#workspaces button:hover { + background: rgba(0, 0, 0, 0.2); + box-shadow: inherit; + /* border-bottom: 3px solid #ffffff; */ +} + +#workspaces button.focused { + background-color: #64727D; + /* border-bottom: 3px solid #ffffff; */ +} + +#workspaces button.urgent { + background-color: #eb4d4b; +} + +#mode { + background-color: #64727D; + border-bottom: 3px solid #ffffff; +} + +#clock, +#battery, +#cpu, +#memory, +#temperature, +#backlight, +#network, +#pulseaudio, +#custom-media, +#tray, +#mode, +#idle_inhibitor, +#mpd { + padding: 0 10px; + margin: 0 4px; + color: #ffffff; +} + +#clock { + padding: 1px; + background-color: transparent; +} + +#battery { + padding: 1px; + background-color: transparent; + color: #ffffff; +} + +#battery.charging { + color: #26A65B; + /* background-color: #26A65B; */ +} + +@keyframes blink { + to { + background-color: #ffffff; + color: #000000; + } +} + +#battery.critical:not(.charging) { + background-color: #f53c3c; + color: #ffffff; + animation-name: blink; + animation-duration: 0.5s; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; +} + +label:focus { + background-color: #000000; +} + +#cpu { + padding: 1px; + /* background-color: #2ecc71; */ + color: #fff; +} + +#memory { + padding: 1px; + /* background-color: #9b59b6; */ +} + +#backlight { + padding: 1px; + /* background-color: #90b1b1; */ +} + +#network { + padding: 1px; + /* background-color: #2980b9; */ +} + +#network.disconnected { + /* background-color: #f53c3c; */ +} + +#pulseaudio { + padding: 1px; + /* background-color: #f1c40f; */ + /* color: #000000; */ +} + +#pulseaudio.muted { + /* background-color: #90b1b1; */ + /* color: #2a5c45; */ +} + +#custom-media { + padding: 1px; + /* background-color: #66cc99; */ + /* color: #2a5c45; */ + /* min-width: 100px; */ +} + +#custom-media.custom-spotify { + background-color: #66cc99; +} + +#custom-media.custom-vlc { + background-color: #ffa000; +} + +#temperature { + padding: 1px; + /* background-color: #f0932b; */ +} + +#temperature.critical { + background-color: #eb4d4b; +} + +#tray { + padding: 1px; + /* background-color: #2980b9; */ +} + +#idle_inhibitor { + padding: 1px; + /* background-color: #2d3436; */ +} + +#idle_inhibitor.activated { + /* background-color: #ecf0f1; */ + /* color: #2d3436; */ +} + +#mpd { + padding: 1px; + /* background-color: #66cc99; */ + /* color: #2a5c45; */ +} + +#mpd.disconnected { + /* background-color: #f53c3c; */ +} + +#mpd.stopped { + /* background-color: #90b1b1; */ +} + +#mpd.paused { + /* background-color: #51a37a; */ +}