add installer

This commit is contained in:
piotr 2022-02-07 01:02:58 +01:00
parent c0d14939c6
commit 00859c58f1
41 changed files with 3139 additions and 19 deletions

3
install.sh Executable file
View File

@ -0,0 +1,3 @@
#!/usr/bin/env bash
python3 setup.py install --optimize=1

View File

@ -7,13 +7,28 @@ This is going to be the nwg-shell installer, but it's in 5% ready. Please come b
import os
import sys
import argparse
from shutil import copy2, copytree
from nwg_shell.__about__ import __version__
dir_name = os.path.dirname(__file__)
config_home = os.getenv('XDG_CONFIG_HOME') if os.getenv('XDG_CONFIG_HOME') else os.path.join(os.getenv("HOME"),
".config")
def copy_from_skel(name, skip_confirmation=False):
a = input("Install/overwrite files in the '{}' directory? Y/n ".format(name)) if not skip_confirmation else "Y"
if a.strip().upper() != "Y":
print("'{}' directory skipped".format(name))
return
else:
src = os.path.join(dir_name, "skel/config/", name)
dst = os.path.join(config_home, name)
print("Copying '{}' content to '{}'".format(src, dst))
#copytree(src, dst, dirs_exist_ok=True)
def main():
parser = argparse.ArgumentParser()
parser.add_argument("-a",
@ -27,32 +42,46 @@ def main():
help="display version information")
args = parser.parse_args()
print("nwg-shell version {}\n".format(__version__))
print("This script installs/overwrites configs and style sheets for sway and nwg-shell components.")
if not args.all:
a = input("You will be prompted 'Y/n' at each step. Proceed? Y/n ")
if a.strip().upper() != "Y":
print("Installation cancelled")
sys.exit(0)
print("config_home = {}".format(config_home))
paths = []
bin_path = ""
for path in os.getenv("PATH").split(":"):
if path.startswith(os.getenv("HOME")) and os.path.exists(path):
paths.append(path)
if len(paths) == 1:
bin_path = paths[0]
else:
for i in range(len(paths)):
print("{}) {}".format(i + 1, paths[i]))
while bin_path == "":
i = input("Select folder to install scripts to: ")
try:
bin_path = paths[int(i) - 1]
except:
pass
print("Installing scripts to {}".format(bin_path))
a = input("Install helper scripts? Y/n ") if not args.all else "Y"
if a.strip().upper() == "Y" or args.all:
print("[ Scripts installation ]")
paths = []
bin_path = ""
for path in os.getenv("PATH").split(":"):
if path.startswith(os.getenv("HOME")) and os.path.exists(path):
paths.append(path)
if len(paths) == 0:
print("No directory in '{}' found on $PATH, dunno where to install scripts, sorry".format(os.getenv("HOME")))
sys.exit(1)
elif len(paths) == 1 or args.all:
bin_path = paths[0]
else:
print("More then 1 possible path for scripts found:")
for i in range(len(paths)):
print(" {}) {}".format(i + 1, paths[i]))
while bin_path == "":
i = input("Select folder to install scripts to: ")
try:
bin_path = paths[int(i) - 1]
except:
pass
src = os.path.join(dir_name, "skel/bin/")
for file in os.listdir(src):
print("Copying '{}' to {}".format(os.path.join(src, file), os.path.join(bin_path, file)))
#copy2(os.path.join(src, file), os.path.join(bin_path, file))
print("[ Configs installation ]")
for item in ["sway", "nwg-panel", "nwg-wrapper", "nwg-drawer", "nwg-dock", "nwg-bar", "swaync"]:
copy_from_skel(item, args.all)
if __name__ == '__main__':

13
nwg_shell/main.py Normal file
View File

@ -0,0 +1,13 @@
#!/usr/bin/python3
from nwg_shell.__about__ import __version__
def main():
print("nwg-shell version {}".format(__version__))
print("Run `nwg-shell-installer -a` to install all components from scratch or `nwg-shell-installer` to install"
"/overwrite selected components in interactive mode.")
if __name__ == '__main__':
main()

View File

@ -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" | sed 's/.*\s*=\s*//')"
icon_theme="$(grep 'gtk-icon-theme-name' "$config" | sed 's/.*\s*=\s*//')"
cursor_theme="$(grep 'gtk-cursor-theme-name' "$config" | sed 's/.*\s*=\s*//')"
font_name="$(grep 'gtk-font-name' "$config" | sed 's/.*\s*=\s*//')"
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"

27
nwg_shell/skel/bin/screenshot Executable file
View File

@ -0,0 +1,27 @@
#!/bin/bash
# Shortened version of https://github.com/moverest/sway-interactive-screenshot
# w/o rofi, for use with key bindings
list_geometry()
{
swaymsg -t get_tree | jq -r '.. | (.nodes? // empty)[] | select(.'"$1"' and .pid) | "\(.rect.x),\(.rect.y) \(.rect.width)x\(.rect.height)''"'
}
FOCUSED=$(list_geometry focused)
CHOICE=$1
DIR=${SCREENSHOT_DIR:=$HOME/Screenshots}
FILENAME="${DIR/#\~/$HOME}/$(date +'%Y-%m-%d-%H%M%S_screenshot.png')"
mkdir -p "$DIR"
case $CHOICE in
fullscreen) grim "$FILENAME" ;;
region) grim -g "$(slurp)" "$FILENAME" ;;
focused) grim -g "$FOCUSED" "$FILENAME" ;;
display) grim -o "$(swaymsg -t get_outputs | jq -r '.[] | select(.focused) | .name')" "$FILENAME"
;;
esac
wl-copy < "$FILENAME"
notify-send "Screenshot" "File saved as <i>'$FILENAME'</i> and copied to the clipboard." -i "$FILENAME"

View File

@ -0,0 +1,89 @@
#!/usr/bin/python
import os
import time
import subprocess
import argparse
# You may either use the full icon(s) path here, like e.g.:
# "/home/piotr/.config/nwg-panel/icons_light/arch-linux.svg"
# or just give the icon name, like below.
# The icon must either exist in your icon theme, or you may place `icon_name.svg`
# custom files in '~/.config/nwg-panel/icons_light/' and '~/.config/nwg-panel/icons_dark/'.
def check(interval):
# Avoid checking on each panel restart: check if the time given as `interval` passed first.
# Make sure if the path below matches your temp directory.
file = "/tmp/archlabs-updates"
if os.path.isfile(file):
if int(time.time() - os.stat(file).st_mtime) > interval:
arch, aur = check_updates()
save_string("{},{}".format(arch, aur), file)
else:
try:
vals = load_string(file).split(",")
arch, aur = int(vals[0]), int(vals[1])
except:
arch, aur = 0, 0
else:
arch, aur = check_updates()
save_string("{},{}".format(arch, aur), file)
if arch > 0 and aur > 0:
print("software-update-available")
print("{}/{}".format(arch, aur))
elif arch > 0:
print("software-update-available")
print("{}".format(arch))
elif aur > 0:
print("software-update-available")
print("{}".format(aur))
def main():
parser = argparse.ArgumentParser()
parser.add_argument("-i",
"--interval",
type=int,
default=900,
help="check Interval in seconds")
args = parser.parse_args()
check(args.interval)
def save_string(string, file):
try:
file = open(file, "wt")
file.write(string)
file.close()
except:
print("Error writing file '{}'".format(file))
def load_string(path):
try:
with open(path, 'r') as file:
data = file.read()
return data
except:
return ""
def check_updates():
arch, aur = 0, 0
try:
output = subprocess.check_output(["baph", "-c"]).decode("utf-8").split()
aur = int(output[0])
arch = int(output[1])
except Exception as e:
print(e)
return arch, aur
if __name__ == "__main__":
main()

6
nwg_shell/skel/bin/sway-update Executable file
View File

@ -0,0 +1,6 @@
#!/usr/bin/env bash
baph -u &&
rm /tmp/archlabs-updates;
echo Press enter to exit...; read;
swaymsg reload

View File

@ -0,0 +1,35 @@
window {
background-color: rgba (0, 0, 0, 0.0)
}
/* Outer bar container, takes all the window width/height */
#outer-box {
margin: 0px
}
/* Inner bar container, surrounds buttons */
#inner-box {
background-color: rgba (37, 37, 37, 0.95);
border-radius: 0px;
border-style: solid;
border-width: 1px;
border-color: rgba (0, 0, 0, 1.0);
padding: 5px;
margin: 5px
}
button, image {
background: none;
border: none;
box-shadow: none
}
button {
padding-left: 10px;
padding-right: 10px;
margin: 5px
}
button:hover {
background-color: rgba (255, 255, 255, 0.1)
}

View File

@ -0,0 +1,35 @@
window {
background-color: rgba (0, 0, 0, 0.0)
}
/* Outer bar container, takes all the window width/height */
#outer-box {
margin: 0px
}
/* Inner bar container, surrounds buttons */
#inner-box {
background: #31373A;
border-radius: 10px;
border-style: none;
border-width: 1px;
border-color: rgba (156, 142, 122, 0.7);
padding: 5px;
margin: 5px
}
button, image {
background: none;
border: none;
box-shadow: none
}
button {
padding-left: 5px;
padding-right: 5px;
margin: 5px
}
button:hover {
background-color: rgba (255, 255, 255, 0.1)
}

View File

@ -0,0 +1,35 @@
window {
background-color: rgba (0, 0, 0, 0.0)
}
/* Outer bar container, takes all the window width/height */
#outer-box {
margin: 0px
}
/* Inner bar container, surrounds buttons */
#inner-box {
background-color: rgba (23, 53, 63, 0.95);
border-radius: 0px;
border-style: none;
border-width: 1px;
border-color: rgba (156, 142, 122, 0.7);
padding: 5px;
margin: 5px
}
button, image {
background: none;
border: none;
box-shadow: none
}
button {
padding-left: 10px;
padding-right: 10px;
margin: 5px
}
button:hover {
background-color: rgba (255, 255, 255, 0.1)
}

View File

@ -0,0 +1,31 @@
window {
background-color: rgba (0, 0, 0, 0.0)
}
/* Outer bar container, takes all the window width/height */
#outer-box {
margin: 0px
}
/* Inner bar container, surrounds buttons */
#inner-box {
background: #27132e;
padding: 0px;
margin: 0px
}
button, image {
background: none;
border: none;
box-shadow: none
}
button {
padding-left: 10px;
padding-right: 10px;
margin: 5px
}
button:hover {
background-color: rgba (255, 255, 255, 0.1)
}

View File

@ -0,0 +1,35 @@
window {
background-color: rgba (37, 37, 37, 0.95);
border-style: none;
border-width: 1px;
border-color: rgba (0, 0, 0, 1.0);
}
#box {
/* Define attributes of the box surrounding icons here */
padding: 10px
}
button, image {
background: none;
border-style: none;
box-shadow: none;
color: #999
}
button {
padding: 4px;
margin-left: 4px;
margin-right: 4px;
color: #eee;
font-size: 12px
}
button:hover {
background-color: rgba (255, 255, 255, 0.15);
border-radius: 2px;
}
button:focus {
box-shadow: 0 0 2px;
}

View File

@ -0,0 +1,37 @@
window {
/*background-color: rgba (0, 0, 0, 0.8);*/
background: #31373A;
border-radius: 10px;
border-style: none;
border-width: 1px;
border-color: rgba (156, 142, 122, 0.7)
}
#box {
/* Define attributes of the box surrounding icons here */
padding: 10px
}
button, image {
background: none;
border-style: none;
box-shadow: none;
color: #999
}
button {
padding: 4px;
margin-left: 4px;
margin-right: 4px;
color: #eee;
font-size: 12px
}
button:hover {
background-color: rgba (255, 255, 255, 0.15);
border-radius: 2px;
}
button:focus {
box-shadow: 0 0 2px;
}

View File

@ -0,0 +1,35 @@
window {
background: #27132e;
border-style: none;
border-width: 1px;
border-color: rgba (156, 142, 122, 0.7)
}
#box {
/* Define attributes of the box surrounding icons here */
padding: 10px
}
button, image {
background: none;
border-style: none;
box-shadow: none;
color: #999
}
button {
padding: 4px;
margin-left: 4px;
margin-right: 4px;
color: #eee;
font-size: 12px
}
button:hover {
background-color: rgba (255, 255, 255, 0.15);
border-radius: 2px;
}
button:focus {
box-shadow: 0 0 2px;
}

View File

@ -0,0 +1,35 @@
window {
background: #27132e;
border-style: none;
border-width: 1px;
border-color: rgba (156, 142, 122, 0.7)
}
#box {
/* Define attributes of the box surrounding icons here */
padding: 10px
}
button, image {
background: none;
border-style: none;
box-shadow: none;
color: #999
}
button {
padding: 4px;
margin-left: 4px;
margin-right: 4px;
color: #eee;
font-size: 12px
}
button:hover {
background-color: rgba (255, 255, 255, 0.15);
border-radius: 2px;
}
button:focus {
box-shadow: 0 0 2px;
}

View File

@ -0,0 +1,34 @@
window {
background-color: rgba (20, 20, 20, 0.95);
color: #eeeeee
}
/* search entry */
entry {
background-color: rgba (0, 0, 0, 0.2)
}
button, image {
background: none;
border: none
}
button:hover {
background-color: rgba (255, 255, 255, 0.1)
}
/* in case you wanted to give category buttons a different look */
#category-button {
margin: 0 10px 0 10px
}
#pinned-box {
padding-bottom: 5px;
border-bottom: 1px dotted gray
}
#files-box {
padding: 5px;
border: 1px dotted gray;
border-radius: 15px
}

View File

@ -0,0 +1,34 @@
window {
background: #282828;
color: #eeeeee
}
/* search entry */
entry {
background-color: rgba (0, 0, 0, 0.2)
}
button, image {
background: none;
border: none
}
button:hover {
background-color: rgba (255, 255, 255, 0.1)
}
/* in case you wanted to give category buttons a different look */
#category-button {
margin: 0 10px 0 10px
}
#pinned-box {
padding-bottom: 5px;
border-bottom: 1px dotted gray
}
#files-box {
padding: 5px;
border: 1px dotted gray;
border-radius: 15px
}

View File

@ -0,0 +1,28 @@
window {
background-color: rgba (20, 1, 21, 0.9);
color: #eeeeee
}
entry {
background-color: rgba (0, 0, 0, 0.2)
}
button {
background: none;
border: none
}
button:hover {
background-color: rgba (255, 255, 255, 0.1)
}
#pinned-box {
padding-bottom: 5px;
border-bottom: 1px dotted gray
}
#files-box {
padding: 5px;
border: 1px dotted gray;
border-radius: 15px
}

View File

@ -0,0 +1,28 @@
window {
background-color: rgba (20, 1, 21, 0.9);
color: #eeeeee
}
entry {
background-color: rgba (0, 0, 0, 0.2)
}
button {
background: none;
border: none
}
button:hover {
background-color: rgba (255, 255, 255, 0.1)
}
#pinned-box {
padding-bottom: 5px;
border-bottom: 1px dotted gray
}
#files-box {
padding: 5px;
border: 1px dotted gray;
border-radius: 15px
}

View File

@ -0,0 +1,23 @@
window {
background-color: rgba (23, 53, 63, 0.95);
color: #eeeeee;
border-radius: 0px
}
list {
background: none;
border-radius: 15px
}
entry {
background-color: rgba (0, 0, 0, 0.2)
}
button {
background: none;
border: none
}
button:hover {
background-color: rgba (255, 255, 255, 0.1)
}

View File

@ -0,0 +1,289 @@
[
{
"name": "top",
"output": "",
"layer": "bottom",
"position": "top",
"width": "auto",
"height": 30,
"homogeneous": true,
"margin-top": 0,
"margin-bottom": 0,
"padding-horizontal": 0,
"padding-vertical": 0,
"spacing": 2,
"items-padding": 0,
"css-name": "panel-top",
"icons": "light",
"menu-start": "off",
"modules-left": [
"playerctl"
],
"modules-center": [
"clock"
],
"modules-right": [
"scratchpad",
"executor-updates",
"tray"
],
"controls": "right",
"controls-settings": {
"alignment": "right",
"components": [
"brightness",
"battery",
"volume"
],
"commands": {
"battery": "",
"net": "",
"bluetooth": "blueman-manager"
},
"custom-items": [
{
"name": "Wallpapers",
"icon": "azote",
"cmd": "azote"
},
{
"name": "Look & Feel",
"icon": "preferences-desktop-theme",
"cmd": "lxappearance; import-gsettings gtk-theme:gtk-theme-name icon-theme:gtk-icon-theme-name cursor-theme:gtk-cursor-theme-name"
},
{
"name": "Outputs",
"icon": "display",
"cmd": "wdisplays && sway-save-outputs"
},
{
"name": "Panel settings",
"icon": "nwg-panel",
"cmd": "nwg-panel-config"
},
{
"name": "Shell settings",
"icon": "nwg-shell",
"cmd": "nwg-shell-config"
}
],
"menu": {
"name": "Exit",
"icon": "system-shutdown-symbolic",
"items": [
{
"name": "Lock",
"cmd": "swaylock -f -c 000000"
},
{
"name": "Logout",
"cmd": "swaymsg exit"
},
{
"name": "Restart",
"cmd": "systemctl reboot"
},
{
"name": "Shutdown",
"cmd": "systemctl -i poweroff"
}
]
},
"show-values": false,
"interval": 1,
"icon-size": 18,
"hover-opens": false,
"leave-closes": true,
"css-name": "controls-window",
"net-interface": "wlo1",
"system-shutdown-symbolic": "system-shutdown",
"output-switcher": true,
"window-width": 320,
"window-margin": 0,
"root-css-name": "controls-overview",
"backlight-device": ""
},
"playerctl": {
"interval": 1,
"buttons": true,
"buttons-position": "left",
"chars": 50,
"css-name": "button-grid",
"icon-size": 16,
"button-css-name": "button-custom",
"label-css-name": "panel-top"
},
"clock": {
"format": "%a, %d. %b %H:%M:%S",
"interval": 1,
"on-right-click": "",
"tooltip-text": "",
"on-left-click": "",
"on-middle-click": "",
"on-scroll-up": "",
"on-scroll-down": "",
"css-name": "clock",
"root-css-name": "root-clock"
},
"executor-updates": {
"script": "sway-check-updates",
"interval": 900,
"icon-size": 16,
"on-left-click": "foot sway-update",
"tooltip-text": "",
"on-middle-click": "",
"on-right-click": "",
"on-scroll-up": "",
"on-scroll-down": "",
"css-name": "",
"root-css-name": "",
"icon-placement": "left"
},
"sway-taskbar": {},
"sway-workspaces": {},
"scratchpad": {},
"dwl-tags": {},
"tray": {
"icon-size": 16,
"root-css-name": "tray",
"inner-css-name": "inner-tray",
"smooth-scrolling-threshold": 0
},
"swaync": {
"tooltip-text": "Notifications",
"on-left-click": "swaync-client -t",
"on-middle-click": "",
"on-right-click": "",
"on-scroll-up": "",
"on-scroll-down": "",
"root-css-name": "root-executor",
"css-name": "executor",
"icon-placement": "left",
"icon-size": 16,
"interval": 1,
"always-show-icon": true
}
},
{
"name": "bottom",
"output": "",
"layer": "bottom",
"position": "bottom",
"height": 30,
"margin-top": 0,
"margin-bottom": 0,
"padding-horizontal": 6,
"padding-vertical": 0,
"spacing": 10,
"items-padding": 0,
"css-name": "panel-bottom",
"icons": "",
"menu-start": "off",
"width": "auto",
"controls": "off",
"controls-settings": {},
"scratchpad": {},
"clock": {},
"menu-start-settings": {},
"modules-left": [
"sway-taskbar"
],
"modules-center": [],
"modules-right": [
"executor-cpuav",
"executor-cpubar",
"executor-temp",
"executor-memory",
"executor-drives"
],
"sway-taskbar": {
"workspace-buttons": false,
"show-app-icon": true,
"show-layout": true,
"show-app-name": true,
"name-max-len": 15,
"workspaces-spacing": 0,
"task-padding": 0,
"all-outputs": false,
"image-size": 16,
"workspace-menu": [
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8"
],
"all-workspaces": true
},
"executor-cpubar": {
"script": "gopsuinfo -c g",
"interval": 2,
"tooltip-text": "",
"on-left-click": "",
"on-middle-click": "",
"on-right-click": "",
"on-scroll-up": "",
"on-scroll-down": "",
"css-name": "",
"icon-size": 16,
"icon-placement": "left"
},
"executor-cpuav": {
"script": "gopsuinfo -i a",
"interval": 2,
"tooltip-text": "CPU average load",
"on-left-click": "foot -e htop",
"on-middle-click": "",
"on-right-click": "",
"on-scroll-up": "",
"on-scroll-down": "",
"css-name": "",
"icon-size": 16,
"icon-placement": "right"
},
"executor-temp": {
"script": "gopsuinfo -i t",
"interval": 5,
"tooltip-text": "",
"on-left-click": "",
"on-middle-click": "",
"on-right-click": "",
"on-scroll-up": "",
"on-scroll-down": "",
"css-name": "",
"icon-size": 16,
"icon-placement": "left"
},
"executor-memory": {
"script": "gopsuinfo -i m",
"interval": 5,
"tooltip-text": "",
"on-left-click": "",
"on-middle-click": "",
"on-right-click": "",
"on-scroll-up": "",
"on-scroll-down": "",
"css-name": "",
"icon-size": 16,
"icon-placement": "left"
},
"executor-drives": {
"script": "gopsuinfo -i n",
"interval": 15,
"tooltip-text": "",
"on-left-click": "",
"on-middle-click": "",
"on-right-click": "",
"on-scroll-up": "",
"on-scroll-down": "",
"css-name": "",
"icon-size": 16,
"icon-placement": "left"
},
"playerctl": {},
"sway-workspaces": {}
}
]

View File

@ -0,0 +1,103 @@
/***** SUGGESTED TO CHANGE CAREFULLY *****/
/* Recommended if panel "height" unset or smaller then your theme default button height */
button {
margin: 2px;
background: none;
border: none
}
/* SwayTaskBar and SwayWorkspaces use custom widgets, that need this and the next name
to highlight currently focused task / workspace. */
#task-box {
padding-left: 4px;
padding-right: 4px
}
#task-box-focused {
background-color: rgba (255, 255, 255, 0.12);
padding-left: 4px;
padding-right: 4px
}
/***** MODIFY TO YOUR TASTE *****/
/* Sample button in sample config w/ no background nor border */
#button-custom {
background: rgba (0, 0, 0, 0.0);
border: 0
}
/* Top panel in sample config uses this name */
#panel-top {
background: #030303;
color: #eeeeee
}
/* Bottom panel in sample config uses this name */
#panel-bottom {
background-color: #030303;
color: #eeeeee
}
/* Controls window in sample config uses this name */
#controls-window {
background-color: rgba (37, 37, 37, 0.95);
border-radius: 0px;
border-style: solid;
border-width: 1px;
border-color: rgba (0, 0, 0, 1.0);
color: #eeeeee
}
/* Executors usually behave better in monospace fonts */
#executor-label {
font-family: monospace;
font-size: 16px
}
/* and so does the Clock */
#clock {
font-family: monospace;
font-size: 16px
}
/* Sample executor-weather uses "css-name": "weather" */
#weather {
font-size: 16px
}
/* dwl module */
#dwl-tag-box {
padding-top: 4px;
padding-bottom: 4px
}
#dwl-tag-occupied {
font-family: monospace;
color: #eee;
background-color: #006699;
padding-left: 3px;
padding-right: 3px;
}
#dwl-tag-free {
font-family: monospace;
color: #eee;
background-color: rgba (32, 50, 90, 1.0);
padding-left: 3px;
padding-right: 3px;
}
#dwl-tag-urgent {
font-family: monospace;
color: #eee;
background-color: #ee6600;
padding-left: 3px;
padding-right: 3px;
}
#dwl-tag-selected {
border: solid 2px;
border-color: #81a1c1
}

View File

@ -0,0 +1,217 @@
[
{
"name": "top",
"output": "",
"layer": "bottom",
"position": "top",
"height": 30,
"homogeneous": true,
"margin-top": 0,
"margin-bottom": 0,
"padding-horizontal": 0,
"padding-vertical": 0,
"spacing": 2,
"controls": "right",
"items-padding": 0,
"css-name": "panel-top",
"icons": "light",
"modules-left": [
"sway-workspaces"
],
"modules-center": [
"clock"
],
"modules-right": [
"executor-cpuav",
"executor-cpubar",
"scratchpad",
"executor-updates",
"tray"
],
"sway-taskbar": {},
"controls-settings": {
"alignment": "right",
"components": [
"brightness",
"battery",
"volume"
],
"commands": {
"battery": "",
"net": "nm-connection-editor",
"bluetooth": "blueman-manager"
},
"custom-items": [
{
"name": "Wallpapers",
"icon": "azote",
"cmd": "azote"
},
{
"name": "Look & Feel",
"icon": "preferences-desktop-theme",
"cmd": "lxappearance; import-gsettings"
},
{
"name": "Outputs",
"icon": "display",
"cmd": "wdisplays && sway-save-outputs"
},
{
"name": "Panel settings",
"icon": "nwg-panel",
"cmd": "nwg-panel-config"
},
{
"name": "Shell settings",
"icon": "nwg-shell",
"cmd": "nwg-shell-config"
}
],
"menu": {
"name": "Exit",
"icon": "system-shutdown-symbolic",
"items": [
{
"name": "Lock",
"cmd": "swaylock -f -c 000000"
},
{
"name": "Logout",
"cmd": "swaymsg exit"
},
{
"name": "Restart",
"cmd": "systemctl reboot"
},
{
"name": "Shutdown",
"cmd": "systemctl -i poweroff"
}
]
},
"show-values": false,
"interval": 1,
"icon-size": 18,
"hover-opens": false,
"leave-closes": true,
"css-name": "controls-window",
"net-interface": "wlo1",
"system-shutdown-symbolic": "system-shutdown",
"output-switcher": true,
"window-width": 320,
"window-margin": 6,
"backlight-device": "",
"root-css-name": "controls-overview"
},
"playerctl": {},
"clock": {
"format": "%a, %d. %b %H:%M:%S",
"interval": 1,
"on-right-click": "",
"tooltip-text": "",
"on-left-click": "",
"on-middle-click": "",
"on-scroll-up": "",
"on-scroll-down": "",
"css-name": "clock"
},
"executor-updates": {
"script": "sway-check-updates",
"interval": 900,
"icon-size": 16,
"on-left-click": "foot sway-update",
"tooltip-text": "",
"on-middle-click": "",
"on-right-click": "",
"on-scroll-up": "",
"on-scroll-down": "",
"css-name": "",
"root-css-name": "",
"icon-placement": "left"
},
"width": "auto",
"button-config": {
"command": "nwg-panel-config",
"icon": "nwg-panel",
"label": "",
"label-position": "right",
"css-name": "button-custom",
"icon-size": 16
},
"sway-workspaces": {
"numbers": [
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8"
],
"show-icon": true,
"image-size": 16,
"show-name": true,
"name-length": 20,
"mark-autotiling": false,
"mark-content": true,
"show-layout": true
},
"scratchpad": {
"css-name": "",
"icon-size": 20
},
"menu-start": "off",
"menu-start-settings": {},
"executor-cpuav": {
"script": "gopsuinfo -i a",
"tooltip-text": "average CPU load",
"on-left-click": "foot htop",
"on-middle-click": "",
"on-right-click": "",
"on-scroll-up": "",
"on-scroll-down": "",
"root-css-name": "",
"css-name": "",
"icon-placement": "right",
"icon-size": 16,
"interval": 3
},
"executor-cpubar": {
"script": "gopsuinfo -c g",
"tooltip-text": "",
"on-left-click": "",
"on-middle-click": "",
"on-right-click": "",
"on-scroll-up": "",
"on-scroll-down": "",
"root-css-name": "",
"css-name": "",
"icon-placement": "left",
"icon-size": 16,
"interval": 3
},
"dwl-tags": {},
"tray": {
"icon-size": 16,
"root-css-name": "tray",
"inner-css-name": "inner-tray",
"smooth-scrolling-threshold": 0
},
"swaync": {
"tooltip-text": "Notifications",
"on-left-click": "swaync-client -t",
"on-middle-click": "",
"on-right-click": "",
"on-scroll-up": "",
"on-scroll-down": "",
"root-css-name": "root-executor",
"css-name": "executor",
"icon-placement": "left",
"icon-size": 16,
"interval": 1,
"always-show-icon": true
}
}
]

View File

@ -0,0 +1,98 @@
/***** SUGGESTED TO CHANGE CAREFULLY *****/
/* Recommended if panel "height" unset or smaller then your theme default button height */
button {
margin: 2px
}
/* SwayTaskBar and SwayWorkspaces use custom widgets, that need this and the next name
to highlight currently focused task / workspace. */
#task-box {
padding-left: 4px;
padding-right: 4px
}
#task-box-focused {
background-color: rgba (255, 255, 255, 0.12);
padding-left: 4px;
padding-right: 4px
}
/***** MODIFY TO YOUR TASTE *****/
/* Sample button in sample config w/ no background nor border */
#button-custom {
background: rgba (0, 0, 0, 0.0);
border: 0
}
/* Top panel in sample config uses this name */
#panel-top {
background: #101010;
color: #eeeeee
}
/* Bottom panel in sample config uses this name */
#panel-bottom {
background: #3b4559;
color: #eeeeee
}
/* Controls window in sample config uses this name */
#controls-window {
border-radius: 10px;
background: #31373A;
color: #eeeeee
}
/* Executors usually behave better in monospace fonts */
#executor-label {
font-family: monospace
}
/* and so does the Clock */
#clock {
font-family: monospace;
font-size: 16px
}
/* Sample executor-weather uses "css-name": "weather" */
#weather {
font-size: 16px
}
/* dwl-tags module */
#dwl-tag-box {
padding-top: 4px;
padding-bottom: 4px
}
#dwl-tag-occupied {
font-family: monospace;
color: #eee;
background-color: #006699;
padding-left: 3px;
padding-right: 3px;
}
#dwl-tag-free {
font-family: monospace;
color: #eee;
background-color: rgba (32, 50, 90, 1.0);
padding-left: 3px;
padding-right: 3px;
}
#dwl-tag-urgent {
font-family: monospace;
color: #eee;
background-color: #ee6600;
padding-left: 3px;
padding-right: 3px;
}
#dwl-tag-selected {
border: solid 2px;
border-color: #81a1c1
}

View File

@ -0,0 +1,230 @@
[
{
"name": "bottom",
"output": "",
"layer": "bottom",
"position": "bottom",
"height": 36,
"width": "auto",
"margin-top": 0,
"margin-bottom": 0,
"padding-horizontal": 4,
"padding-vertical": 0,
"spacing": 2,
"controls": "right",
"items-padding": 0,
"css-name": "panel-bottom",
"icons": "",
"modules-left": [
"sway-taskbar"
],
"modules-center": [],
"modules-right": [
"executor-cpuavg",
"executor-cpubar",
"scratchpad",
"executor-updates",
"clock",
"tray"
],
"sway-taskbar": {
"workspace-buttons": false,
"show-app-icon": true,
"show-layout": true,
"show-app-name": false,
"name-max-len": 20,
"workspaces-spacing": 0,
"task-spacing": 0,
"all-outputs": true,
"workspace-menu": [
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8"
],
"image-size": 24,
"task-padding": 0,
"all-workspaces": true
},
"controls-settings": {
"alignment": "right",
"components": [
"brightness",
"battery",
"volume"
],
"commands": {
"battery": "",
"net": "",
"bluetooth": "blueman-manager"
},
"custom-items": [
{
"name": "Wallpapers",
"icon": "azote",
"cmd": "azote"
},
{
"name": "Look & Feel",
"icon": "preferences-desktop-theme",
"cmd": "lxappearance; import-gsettings gtk-theme:gtk-theme-name icon-theme:gtk-icon-theme-name cursor-theme:gtk-cursor-theme-name"
},
{
"name": "Outputs",
"icon": "display",
"cmd": "wdisplays && sway-save-outputs"
},
{
"name": "Panel settings",
"icon": "nwg-panel",
"cmd": "nwg-panel-config"
},
{
"name": "Shell settings",
"icon": "nwg-shell",
"cmd": "nwg-shell-config"
}
],
"menu": {
"name": "Exit",
"icon": "system-shutdown-symbolic",
"items": [
{
"name": "Lock",
"cmd": "swaylock -f -c 000000"
},
{
"name": "Logout",
"cmd": "swaymsg exit"
},
{
"name": "Restart",
"cmd": "systemctl reboot"
},
{
"name": "Shutdown",
"cmd": "systemctl -i poweroff"
}
]
},
"show-values": false,
"interval": 1,
"icon-size": 16,
"hover-opens": false,
"leave-closes": true,
"css-name": "controls-window",
"net-interface": "wlan0",
"system-shutdown-symbolic": "system-shutdown",
"output-switcher": true,
"window-width": 320,
"window-margin": 0,
"root-css-name": "controls-overview",
"backlight-device": ""
},
"playerctl": {},
"clock": {
"format": "%H:%M:%S",
"interval": 1,
"on-right-click": "",
"tooltip-text": "",
"on-left-click": "",
"on-middle-click": "",
"on-scroll-up": "",
"on-scroll-down": "",
"css-name": "clock",
"root-css-name": "root-clock"
},
"executor-updates": {
"script": "sway-check-updates",
"interval": 900,
"icon-size": 16,
"on-left-click": "foot sway-update",
"tooltip-text": "",
"on-middle-click": "",
"on-right-click": "",
"on-scroll-up": "",
"on-scroll-down": "",
"css-name": "",
"root-css-name": "",
"icon-placement": "left"
},
"sway-workspaces": {},
"scratchpad": {
"css-name": "",
"icon-size": 20
},
"menu-start": "left",
"menu-start-settings": {
"cmd-lock": "swaylock -f -c 000000",
"cmd-logout": "swaymsg exit",
"cmd-restart": "systemctl reboot",
"cmd-shutdown": "systemctl -i poweroff",
"autohide": true,
"file-manager": "thunar",
"height": 0,
"icon-size-large": 32,
"icon-size-small": 16,
"icon-size-button": 18,
"margin-bottom": 0,
"margin-left": 0,
"margin-right": 8,
"margin-top": 8,
"padding": 2,
"terminal": "foot",
"width": 0
},
"executor-cpubar": {
"script": "gopsuinfo -i g",
"tooltip-text": "",
"on-left-click": "",
"on-middle-click": "",
"on-right-click": "",
"on-scroll-up": "",
"on-scroll-down": "",
"root-css-name": "",
"css-name": "",
"icon-placement": "left",
"icon-size": 16,
"interval": 3
},
"executor-cpuavg": {
"script": "gopsuinfo -i a",
"tooltip-text": "",
"on-left-click": "",
"on-middle-click": "",
"on-right-click": "",
"on-scroll-up": "",
"on-scroll-down": "",
"root-css-name": "",
"css-name": "",
"icon-placement": "right",
"icon-size": 14,
"interval": 3
},
"dwl-tags": {},
"tray": {
"icon-size": 16,
"root-css-name": "tray",
"inner-css-name": "inner-tray",
"smooth-scrolling-threshold": 0
},
"swaync": {
"tooltip-text": "Notifications",
"on-left-click": "swaync-client -t",
"on-middle-click": "",
"on-right-click": "",
"on-scroll-up": "",
"on-scroll-down": "",
"root-css-name": "root-executor",
"css-name": "executor",
"icon-placement": "left",
"icon-size": 16,
"interval": 1,
"always-show-icon": true
}
}
]

View File

@ -0,0 +1,100 @@
/***** SUGGESTED TO CHANGE CAREFULLY *****/
/* Recommended if panel "height" unset or smaller then your theme default button height */
button {
margin: 2px;
background: none;
border: none
}
/* SwayTaskBar and SwayWorkspaces use custom widgets, that need this and the next name
to highlight currently focused task / workspace. */
#task-box {
padding-left: 4px;
padding-right: 4px
}
#task-box-focused {
background-color: rgba (255, 255, 255, 0.12);
padding-left: 4px;
padding-right: 4px
}
/***** MODIFY TO YOUR TASTE *****/
/* Sample button in sample config w/ no background nor border */
#button-custom {
background: rgba (0, 0, 0, 0.0);
border: 0
}
/* Top panel in sample config uses this name */
#panel-top {
background: #030303;
color: #eeeeee
}
/* Bottom panel in sample config uses this name */
#panel-bottom {
background-color: #213540;
color: #eeeeee
}
/* Controls window in sample config uses this name */
#controls-window {
border-radius: 0px;
background-color: rgba (23, 53, 63, 0.95);
color: #eeeeee
}
/* Executors usually behave better in monospace fonts */
#executor-label {
font-family: monospace;
font-size: 16px
}
/* and so does the Clock */
#clock {
font-family: monospace;
font-size: 16px
}
/* Sample executor-weather uses "css-name": "weather" */
#weather {
font-size: 16px
}
/* dwl module */
#dwl-tag-box {
padding-top: 4px;
padding-bottom: 4px
}
#dwl-tag-occupied {
font-family: monospace;
color: #eee;
background-color: #006699;
padding-left: 3px;
padding-right: 3px;
}
#dwl-tag-free {
font-family: monospace;
color: #eee;
background-color: rgba (32, 50, 90, 1.0);
padding-left: 3px;
padding-right: 3px;
}
#dwl-tag-urgent {
font-family: monospace;
color: #eee;
background-color: #ee6600;
padding-left: 3px;
padding-right: 3px;
}
#dwl-tag-selected {
border: solid 2px;
border-color: #81a1c1
}

View File

@ -0,0 +1,178 @@
[
{
"name": "top",
"output": "",
"layer": "top",
"position": "top",
"height": 30,
"width": "auto",
"margin-top": 0,
"margin-bottom": 0,
"padding-horizontal": 0,
"padding-vertical": 0,
"spacing": 2,
"controls": "right",
"items-padding": 0,
"css-name": "panel-top",
"icons": "",
"modules-left": [
"sway-workspaces"
],
"modules-center": [
"clock"
],
"modules-right": [
"scratchpad",
"executor-updates",
"tray"
],
"controls-settings": {
"alignment": "right",
"components": [
"brightness",
"battery",
"volume"
],
"commands": {
"battery": "",
"net": "",
"bluetooth": "blueman-manager"
},
"custom-items": [
{
"name": "Wallpapers",
"icon": "azote",
"cmd": "azote"
},
{
"name": "Look & Feel",
"icon": "preferences-desktop-theme",
"cmd": "lxappearance; import-gsettings gtk-theme:gtk-theme-name icon-theme:gtk-icon-theme-name cursor-theme:gtk-cursor-theme-name"
},
{
"name": "Outputs",
"icon": "display",
"cmd": "wdisplays && sway-save-outputs"
},
{
"name": "Panel settings",
"icon": "nwg-panel",
"cmd": "nwg-panel-config"
},
{
"name": "Shell settings",
"icon": "nwg-shell",
"cmd": "nwg-shell-config"
}
],
"menu": {
"name": "Exit",
"icon": "system-shutdown-symbolic",
"items": [
{
"name": "Lock",
"cmd": "swaylock -f -c 000000"
},
{
"name": "Logout",
"cmd": "swaymsg exit"
},
{
"name": "Restart",
"cmd": "systemctl reboot"
},
{
"name": "Shutdown",
"cmd": "systemctl -i poweroff"
}
]
},
"show-values": false,
"interval": 1,
"icon-size": 18,
"hover-opens": false,
"leave-closes": true,
"css-name": "controls-window",
"net-interface": "wlo1",
"system-shutdown-symbolic": "system-shutdown",
"output-switcher": true,
"window-width": 320,
"window-margin": 0,
"root-css-name": "controls-overview",
"backlight-device": ""
},
"clock": {
"format": "%a, %d. %b %H:%M:%S",
"interval": 1,
"on-right-click": "",
"tooltip-text": "",
"on-left-click": "",
"on-middle-click": "",
"on-scroll-up": "",
"on-scroll-down": "",
"css-name": "clock"
},
"executor-updates": {
"script": "sway-check-updates",
"interval": 900,
"icon-size": 16,
"on-left-click": "foot sway-update",
"tooltip-text": "",
"on-middle-click": "",
"on-right-click": "",
"on-scroll-up": "",
"on-scroll-down": "",
"css-name": "",
"root-css-name": "",
"icon-placement": "left"
},
"sway-workspaces": {
"numbers": [
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8"
],
"show-icon": true,
"image-size": 16,
"show-name": true,
"name-length": 20,
"mark-autotiling": false,
"mark-content": true,
"show-layout": true
},
"scratchpad": {
"css-name": "",
"icon-size": 20
},
"menu-start": "off",
"menu-start-settings": {},
"playerctl": {},
"sway-taskbar": {},
"dwl-tags": {},
"tray": {
"icon-size": 16,
"root-css-name": "tray",
"inner-css-name": "inner-tray",
"smooth-scrolling-threshold": 0
},
"swaync": {
"tooltip-text": "Notifications",
"on-left-click": "swaync-client -t",
"on-middle-click": "",
"on-right-click": "",
"on-scroll-up": "",
"on-scroll-down": "",
"root-css-name": "root-executor",
"css-name": "executor",
"icon-placement": "left",
"icon-size": 16,
"interval": 1,
"always-show-icon": true
}
}
]

View File

@ -0,0 +1,102 @@
/***** SUGGESTED TO CHANGE CAREFULLY *****/
/* Recommended if panel "height" unset or smaller then your theme default button height */
button {
margin: 2px
}
#button-start {
background: none;
border: 0px
}
/* WindowBox in SwayTaskBar is a custom widget, that needs this and the next name
to highlight currently focused task */
#task-box {
padding-left: 4px;
padding-right: 4px
}
#task-box-focused {
background-color: rgba (255, 255, 255, 0.12);
padding-left: 4px;
padding-right: 4px
}
/***** MODIFY TO YOUR TASTE *****/
/* Sample button in sample config w/ no background nor border */
#button-custom {
background: rgba (0, 0, 0, 0.0);
border: 0px
}
/* Top panel in sample config uses this name */
#panel-top {
background-color: rgba (11, 11, 11, 0.9);
color: #eeeeee
}
/* Bottom panel in sample config uses this name */
#panel-bottom {
background-color: rgba (0, 0, 0, 0.9);
color: #eeeeee
}
/* Controls window in sample config uses this name */
#controls-window {
border-radius: 0px;
background: #27132e;
color: #eeeeee
}
/* Executors usually behave better in monospace fonts */
#executor-label {
font-family: monospace
}
/* and so does the Clock */
#clock {
font-family: monospace;
font-size: 14px
}
/* Sample executor-weather uses "css-name": "weather" */
#weather {
font-size: 14px
}
/* dwl-tags */
#dwl-tag-box {
padding-top: 4px;
padding-bottom: 4px
}
#dwl-tag-occupied {
font-family: monospace;
color: #eee;
background-color: #006699;
padding-left: 3px;
padding-right: 3px;
}
#dwl-tag-free {
font-family: monospace;
color: #eee;
background-color: #333;
padding-left: 3px;
padding-right: 3px;
}
#dwl-tag-urgent {
font-family: monospace;
color: #eee;
background-color: #ee6600;
padding-left: 3px;
padding-right: 3px;
}
#dwl-tag-selected {
border: solid 2px;
border-color: #81a1c1
}

View File

@ -0,0 +1,17 @@
window {
background-color: rgba (0, 0, 0, 0.0);
}
#box-outer {
/* Define attributes of the box surrounding icons here */
background-color: rgba (255, 255, 255, 0.0)
}
#box-inner {
background-color: rgba (0, 0, 0, 0.4);
/*border-radius: 0px;
border-style: solid;
border-width: 1px;
border-color: rgba (204, 204, 204, 0.5);*/
padding: 20px
}

View File

@ -0,0 +1,34 @@
<span face="monospace" foreground="#eeeeee" size="medium">Terminal emulator Mod+t
Web browser Mod+w
Text editor Mod+e
File manager Mod+f
Dock show/hide Mod+d
Notification center Mod+c
Application launcher Alt+F1|Ctrl+Space
Kill task Alt+q
Exit menu Mod+x
Reload sway Mod+Shift+C
Switch workspace Mod+number
Move to workspace Mod+Shift+number
Move focus Mod+arrow
Move container Mod+Shift+arrow
Previous workspace Mod+Alt+left
Next workspace Mod+Alt+rigth
Toggle split Mod+Tab
Toggle layout Alt+Tab
Toggle floating Mod+Shift+Space
Fullscreen Mod+Shift+F
Resize container Alt+arrow
Change inner gaps Mod+plus/minus
Change outer gaps Mod+Shift+plus/minus
Move to scratchpad Mod+Shift+Z
Show scratchpad Mod+Z
Screenshot display Ctrl+PrtScr
Screenshot region Shift+Ctrl+PrtScr
Screenshot window Mod+Shift+Ctrl+PrtScr
Show/hide help Alt+h
Move help to front/back Alt+Shift+H</span>

View File

@ -0,0 +1,7 @@
exec swaync -s /home/piotr/.config/swaync/preset-0.css
exec nm-applet --indicator
exec_always autotiling
exec_always nwg-drawer -r -s preset-0.css -term foot
exec_always nwg-panel -c preset-0 -s preset-0.css
exec_always nwg-shell-check-updates
exec nwg-shell-config

View File

@ -0,0 +1,333 @@
# ArchLabs sway config
#
# Read `man 5 sway` for reference.
# border & title
for_window [title="^.*"] border pixel 1, title_format "<b> %class >> %title </b>"
default_border pixel 1
# gaps
gaps inner 4
gaps outer 0
smart_gaps on
# font
font pango:monospace 11
# mod key used for most binds
# Mod1 = Alt
# Mod4 = Super
set $Mod Mod4
# direction keys
set $up l
set $down k
set $left j
set $right semicolon
# The file we include below is created and will be overwritten by nwg-shell-config GUI!
#
include ~/.config/sway/variables
############### Apply GTK settings ##################
exec_always import-gsettings
############### Autostart ##################
exec systemctl --user import-environment DISPLAY WAYLAND_DISPLAY SWAYSOCK
exec hash dbus-update-activation-environment 2>/dev/null && \
dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK
exec /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
exec ~/.azotebg
# The files we include below are created and will be overwritten by nwg-shell-config GUI!
#
include ~/.config/sway/outputs
include ~/.config/sway/autostart
#
output * adaptive_sync on
# monitors (edit & unhash)
# set $Mon1 eDP-1
# set $Mon2 HDMI-A-1
### Turn off screen on lid closed
set $laptop eDP-1
bindswitch lid:on output $laptop disable
bindswitch lid:off output $laptop enable
### Idle configuration
exec swayidle -w \
timeout 3000 'swaylock -f -c 212121' \
timeout 3300 'swaymsg "output * dpms off"' \
resume 'swaymsg "output * dpms on"' \
before-sleep 'swaylock -f -c 212121'
#
# This will lock your screen after 3000 seconds of inactivity, then turn off
# your displays after another 3300 seconds, and turn your screens back on when
# resumed. It will also lock your screen before your computer goes to sleep.
############### Input configuration ##################
#
# Example configuration:
#
# input "2:14:SynPS/2_Synaptics_TouchPad" {
# dwt enabled
# tap enabled
# middle_emulation enabled
# }
# You can get the names of your inputs by running: swaymsg -t get_inputs
# Read `man 5 sway-input` for more information about this section.
# enable touchpad speed and features
input "type:touchpad" {
tap enabled
dwt enabled
drag enabled
scroll_factor 0.7
pointer_accel 0.2
accel_profile adaptive
}
# disable acceleration for mice
input "type:mouse" {
accel_profile flat
}
# keyboard layout and repeat settings
input "type:keyboard" {
xkb_layout $lang
repeat_delay 300
repeat_rate 40
}
# numlock on/off
# input * xkb_numlock enabled
############# Bindings ##################
# kill focused window
bindsym $Mod+Shift+q kill
bindsym Mod1+q kill
bindsym Mod1+F4 kill
# core applications
bindsym $Mod+Return exec $term
bindsym Mod1+Shift+Return exec $term
bindsym Control+Shift+t exec $term
bindsym $Mod+t exec $term
bindsym $Mod+d exec $dock
bindsym $Mod+e exec $editor
bindsym $Mod+w exec $browser
bindsym Control+space exec $launcher
bindsym Mod1+F1 exec $launcher
bindsym $Mod+f exec $filemanager
bindsym $Mod+c exec swaync-client -t
# Exit menu
bindsym $Mod+x exec $exit
# Exit sway (default way to log you out of your Wayland session)
bindsym $Mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit'
# screenshot
bindsym Print exec screenshot fullscreen
bindsym Control+Print exec screenshot display
bindsym Shift+Control+Print exec grim -g "$(slurp)" - | swappy -f -
bindsym $Mod+Shift+Control+Print exec screenshot focused
# audio
bindsym XF86AudioPlay exec playerctl play-pause
bindsym XF86AudioNext exec playerctl next
bindsym XF86AudioPrev exec playerctl previous
bindsym XF86AudioStop exec playerctl stop
bindsym XF86AudioMute exec pamixer -t
bindsym XF86AudioRaiseVolume exec pamixer -i 2
bindsym XF86AudioLowerVolume exec pamixer -d 2
# backlight
bindsym XF86MonBrightnessUp exec light -A 5
bindsym XF86MonBrightnessDown exec light -U 5
# Reload the configuration file
bindsym $Mod+Shift+c reload
########### Workspace Bindings ###############
# switch to workspace
bindsym $Mod+1 workspace number 1
bindsym $Mod+2 workspace number 2
bindsym $Mod+3 workspace number 3
bindsym $Mod+4 workspace number 4
bindsym $Mod+5 workspace number 5
bindsym $Mod+6 workspace number 6
bindsym $Mod+7 workspace number 7
bindsym $Mod+8 workspace number 8
# switch to workspace - numpad alternatives
bindsym $Mod+Mod2+KP_1 workspace number 1
bindsym $Mod+Mod2+KP_2 workspace number 2
bindsym $Mod+Mod2+KP_3 workspace number 3
bindsym $Mod+Mod2+KP_4 workspace number 4
bindsym $Mod+Mod2+KP_5 workspace number 5
bindsym $Mod+Mod2+KP_6 workspace number 6
bindsym $Mod+Mod2+KP_7 workspace number 7
bindsym $Mod+Mod2+KP_8 workspace number 8
# switch to next or previous workspace
bindsym $Mod+Mod1+Left workspace prev
bindsym $Mod+Mod1+Right workspace next
# move focused container to workspace
bindsym $Mod+Shift+1 move container to workspace number 1; workspace number 1
bindsym $Mod+Shift+2 move container to workspace number 2; workspace number 2
bindsym $Mod+Shift+3 move container to workspace number 3; workspace number 3
bindsym $Mod+Shift+4 move container to workspace number 4; workspace number 4
bindsym $Mod+Shift+5 move container to workspace number 5; workspace number 5
bindsym $Mod+Shift+6 move container to workspace number 6; workspace number 6
bindsym $Mod+Shift+7 move container to workspace number 7; workspace number 7
bindsym $Mod+Shift+8 move container to workspace number 8; workspace number 8
# move focused container to workspace - numpad alternatives
bindsym $Mod+Shift+Mod2+KP_End move container to workspace number 1; workspace number 1
bindsym $Mod+Shift+Mod2+KP_Down move container to workspace number 2; workspace number 2
bindsym $Mod+Shift+Mod2+KP_Next move container to workspace number 3; workspace number 3
bindsym $Mod+Shift+Mod2+KP_Left move container to workspace number 4; workspace number 4
bindsym $Mod+Shift+Mod2+KP_Begin move container to workspace number 5; workspace number 5
bindsym $Mod+Shift+Mod2+KP_Right move container to workspace number 6; workspace number 7
bindsym $Mod+Shift+Mod2+KP_Home move container to workspace number 7; workspace number 7
bindsym $Mod+Shift+Mod2+KP_Up move container to workspace number 8; workspace number 8
# Workspace to monitor assignment (edit & unhash)
# workspace 1 output $Mon1
# workspace 2 output $Mon1
# workspace 3 output $Mon1
# workspace 4 output $Mon1
# workspace 5 output $Mon1
# workspace 6 output $Mon1
# workspace 7 output $Mon1
# workspace 8 output $Mon1
############ Container/Window control ############
# Scratchpad, Floating
bindsym $Mod+space floating toggle
floating_modifier Mod1 normal
# 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+z 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+z scratchpad show
# change focus
bindsym $Mod+$left focus left
bindsym $Mod+$down focus down
bindsym $Mod+$up focus up
bindsym $Mod+$right 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 focus to the parent container
bindsym $Mod+p focus parent
# move focused window
bindsym $Mod+Shift+$left move left
bindsym $Mod+Shift+$down move down
bindsym $Mod+Shift+$up move up
bindsym $Mod+Shift+$right move right
# alternatively, you can use the cursor keys:
bindsym $Mod+Shift+Up move up
bindsym $Mod+Shift+Down move down
bindsym $Mod+Shift+Left move left
bindsym $Mod+Shift+Right move right
# Resizing containers
mode "resize" {
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"
# Size
bindsym Mod1+Up resize shrink height 10 px or 1 ppt
bindsym Mod1+Down resize grow height 10 px or 1 ppt
bindsym Mod1+Left resize shrink width 10 px or 1 ppt
bindsym Mod1+Right resize grow width 10 px or 1 ppt
# layout toggle
bindsym Mod1+Tab layout toggle tabbed split
bindsym $Mod+Tab layout toggle splitv splith
# switch to workspace with urgent window
for_window [urgent="latest"] focus
focus_on_window_activation focus
# container layout
bindsym $Mod+h split h
bindsym $Mod+v split v
bindsym $Mod+Shift+t layout tabbed
bindsym $Mod+Shift+s layout stacking
bindsym $Mod+Shift+h layout toggle split
default_orientation horizontal
# make the current focus fullscreen
bindsym $Mod+Shift+f fullscreen
# show/hide help
bindsym Mod1+h exec pkill -f -12 nwg-wrapper
# move help to front/back
bindsym Mod1+Shift+h exec pkill -f -10 nwg-wrapper
############### Border & Gaps ###############
# changing border style
bindsym $Mod+n border normal
bindsym $Mod+y border pixel 1
bindsym $Mod+u border none
# change gaps
bindsym $Mod+plus gaps inner current plus 5
bindsym $Mod+minus gaps inner current minus 5
bindsym $Mod+Shift+plus gaps outer current plus 5
bindsym $Mod+Shift+minus gaps outer current minus 5
bindsym $Mod+Control+plus gaps inner all plus 5
bindsym $Mod+Control+minus gaps inner all minus 5
bindsym $Mod+Control+Shift+plus gaps outer all plus 5
bindsym $Mod+Control+Shift+minus gaps outer all minus 5
############ application settings ############
# focus, floating, & sticky
for_window [app_id="(?i)(?:blueman-manager|azote|gnome-disks|nwg-shell-config)"] floating enable
for_window [app_id="(?i)(?:pavucontrol|nm-connection-editor|gsimplecal|galculator)"] floating enable
for_window [class="(?i)(?:lxappearance)"] floating enable
for_window [app_id="(?i)(?:firefox|chromium)"] border none
for_window [title="(?i)(?:copying|deleting|moving)"] floating enable
popup_during_fullscreen smart

View File

View File

@ -0,0 +1,4 @@
set $lang us
set $term foot
set $exit nwg-bar -s preset-0.css
set $launcher nwg-drawer

View File

@ -0,0 +1,17 @@
{
"positionX": "right",
"positionY": "top",
"timeout": 10,
"timeout-low": 5,
"timeout-critical": 0,
"notification-window-width": 400,
"keyboard-shortcuts": true,
"image-visibility": "always",
"transition-time": 200,
"hide-on-clear": true,
"hide-on-action": true,
"control-center-margin-top": 0,
"control-center-margin-bottom": 0,
"control-center-margin-right": 0,
"control-center-margin-left": 0
}

View File

@ -0,0 +1,151 @@
/*
* vim: ft=less
*/
@define-color border-color rgb(7, 7, 7);
@define-color bg rgb(58, 58, 58);
@define-color bg-hover rgb(68, 68, 68);
@define-color bg-focus rgba(255, 255, 255, 0.07);
@define-color bg-selected rgb(0, 128, 255);
.notification-row {
outline: none;
}
.notification-row:hover {
background: @bg-focus;
}
.notification {
border-radius: 3px;
margin: 6px 6px;
box-shadow: 0px 2px 4px 2px rgba(0, 0, 0, 0.3);
padding: 0;
}
.notification-content {
background: transparent;
padding: 6px;
border-radius: 3px;
}
.close-button {
background: rgba(0, 0, 0, 0.7);
color: white;
text-shadow: none;
padding: 0px;
box-shadow: 0px 2px 4px 2px rgba(0, 0, 0, 0.3);
border-radius: 100%;
}
.close-button:hover {
background: rgb(30, 30, 30);
transition: all 0.15s ease-in-out;
}
.notification-default-action,
.notification-action {
padding: 4px;
margin: 0;
box-shadow: none;
background: @bg;
border: 1px solid @border-color;
}
.notification-default-action:hover,
.notification-action:hover {
background: @bg-hover;
}
.notification-default-action {
border-radius: 3px;
}
/* When alternative actions are visible */
.notification-default-action:not(:only-child) {
border-bottom-left-radius: 0px;
border-bottom-right-radius: 0px;
}
.notification-action {
border-radius: 0px;
border-top: none;
border-right: none;
}
/* add bottom border radius to eliminate clipping */
.notification-action:first-child {
border-bottom-left-radius: 10px;
}
.notification-action:last-child {
border-bottom-right-radius: 10px;
border-right: 1px solid @border-color;
}
.image {
}
.body-image {
margin-top: 6px;
background-color: white;
border-radius: 3px;
}
.summary {
color: white;
text-shadow: none;
}
.time {
color: white;
text-shadow: none;
}
.body {
background: transparent;
color: white;
text-shadow: none;
}
.top-action-title {
color: #eee;
text-shadow: none;
padding: 10px
}
.control-center-clear-all {
color: white;
text-shadow: none;
background: @bg;
border: 1px solid @border-color;
box-shadow: none;
border-radius: 3px;
}
.control-center-clear-all:hover {
background: @bg-hover;
}
.control-center-dnd {
border-radius: 3px;
background: @bg;
border: 1px solid @border-color;
box-shadow: none;
}
.control-center-dnd:checked {
background: @bg-selected;
}
.control-center-dnd slider {
background: @bg-hover;
}
.control-center {
background-color: rgba (20, 20, 20, 0.95);
}
.control-center-list {
background: transparent;
padding: 6px
}
.floating-notifications {
background: transparent;
}

View File

@ -0,0 +1,151 @@
/*
* vim: ft=less
*/
@define-color border-color rgb(7, 7, 7);
@define-color bg #31373A;
@define-color bg-hover rgb(68, 68, 68);
@define-color bg-focus rgba(255, 255, 255, 0.07);
@define-color bg-selected rgb(0, 128, 255);
.notification-row {
outline: none;
}
.notification-row:hover {
background: @bg-focus;
}
.notification {
border-radius: 10px;
margin: 6px 6px;
box-shadow: 0px 2px 4px 2px rgba(0, 0, 0, 0.3);
padding: 0;
}
.notification-content {
background: transparent;
padding: 6px;
border-radius: 10px;
}
.close-button {
background: rgba(0, 0, 0, 0.7);
color: white;
text-shadow: none;
padding: 0px;
box-shadow: 0px 2px 4px 2px rgba(0, 0, 0, 0.3);
border-radius: 100%;
}
.close-button:hover {
background: rgb(30, 30, 30);
transition: all 0.15s ease-in-out;
}
.notification-default-action,
.notification-action {
padding: 4px;
margin: 0;
box-shadow: none;
background: @bg;
border: 1px solid @border-color;
}
.notification-default-action:hover,
.notification-action:hover {
background: @bg-hover;
}
.notification-default-action {
border-radius: 10px;
}
/* When alternative actions are visible */
.notification-default-action:not(:only-child) {
border-bottom-left-radius: 0px;
border-bottom-right-radius: 0px;
}
.notification-action {
border-radius: 0px;
border-top: none;
border-right: none;
}
/* add bottom border radius to eliminate clipping */
.notification-action:first-child {
border-bottom-left-radius: 10px;
}
.notification-action:last-child {
border-bottom-right-radius: 10px;
border-right: 1px solid @border-color;
}
.image {
}
.body-image {
margin-top: 6px;
background-color: white;
border-radius: 10px;
}
.summary {
color: white;
text-shadow: none;
}
.time {
color: white;
text-shadow: none;
}
.body {
background: transparent;
color: white;
text-shadow: none;
}
.top-action-title {
color: #eee;
text-shadow: none;
padding: 10px
}
.control-center-clear-all {
color: white;
text-shadow: none;
background: @bg;
border: 1px solid @border-color;
box-shadow: none;
border-radius: 10px;
}
.control-center-clear-all:hover {
background: @bg-hover;
}
.control-center-dnd {
border-radius: 10px;
background: @bg;
border: 1px solid @border-color;
box-shadow: none;
}
.control-center-dnd:checked {
background: @bg-selected;
}
.control-center-dnd slider {
background: @bg-hover;
}
.control-center {
background-color: #282828;
}
.control-center-list {
background: transparent;
padding: 6px
}
.floating-notifications {
background: transparent;
}

View File

@ -0,0 +1,151 @@
/*
* vim: ft=less
*/
@define-color border-color rgb(7, 7, 7);
@define-color bg rgb(23, 53, 63);
@define-color bg-hover rgb(33, 63, 73);
@define-color bg-focus rgba(255, 255, 255, 0.07);
@define-color bg-selected rgb(0, 128, 255);
.notification-row {
outline: none;
}
.notification-row:hover {
background: @bg-focus;
}
.notification {
border-radius: 3px;
margin: 6px 6px;
box-shadow: 0px 2px 4px 2px rgba(0, 0, 0, 0.3);
padding: 0;
}
.notification-content {
background: transparent;
padding: 6px;
border-radius: 3px;
}
.close-button {
background: rgba(0, 0, 0, 0.7);
color: white;
text-shadow: none;
padding: 0px;
box-shadow: 0px 2px 4px 2px rgba(0, 0, 0, 0.3);
border-radius: 100%;
}
.close-button:hover {
background: rgb(30, 30, 30);
transition: all 0.15s ease-in-out;
}
.notification-default-action,
.notification-action {
padding: 4px;
margin: 0;
box-shadow: none;
background: @bg;
border: 1px solid @border-color;
}
.notification-default-action:hover,
.notification-action:hover {
background: @bg-hover;
}
.notification-default-action {
border-radius: 3px;
}
/* When alternative actions are visible */
.notification-default-action:not(:only-child) {
border-bottom-left-radius: 0px;
border-bottom-right-radius: 0px;
}
.notification-action {
border-radius: 0px;
border-top: none;
border-right: none;
}
/* add bottom border radius to eliminate clipping */
.notification-action:first-child {
border-bottom-left-radius: 10px;
}
.notification-action:last-child {
border-bottom-right-radius: 10px;
border-right: 1px solid @border-color;
}
.image {
}
.body-image {
margin-top: 6px;
background-color: white;
border-radius: 3px;
}
.summary {
color: white;
text-shadow: none;
}
.time {
color: white;
text-shadow: none;
}
.body {
background: transparent;
color: white;
text-shadow: none;
}
.top-action-title {
color: #eee;
text-shadow: none;
padding: 10px
}
.control-center-clear-all {
color: white;
text-shadow: none;
background: @bg;
border: 1px solid @border-color;
box-shadow: none;
border-radius: 3px;
}
.control-center-clear-all:hover {
background: @bg-hover;
}
.control-center-dnd {
border-radius: 3px;
background: @bg;
border: 1px solid @border-color;
box-shadow: none;
}
.control-center-dnd:checked {
background: @bg-selected;
}
.control-center-dnd slider {
background: @bg-hover;
}
.control-center {
background-color: rgba (20, 1, 21, 0.9)
}
.control-center-list {
background: transparent;
padding: 6px
}
.floating-notifications {
background: transparent;
}

View File

@ -0,0 +1,151 @@
/*
* vim: ft=less
*/
@define-color border-color rgb(7, 7, 7);
@define-color bg #37233e;
@define-color bg-hover #47334e;
@define-color bg-focus rgba(255, 255, 255, 0.07);
@define-color bg-selected rgb(0, 128, 255);
.notification-row {
outline: none;
}
.notification-row:hover {
background: @bg-focus;
}
.notification {
border-radius: 0px;
margin: 6px 6px;
box-shadow: 0px 2px 4px 2px rgba(0, 0, 0, 0.3);
padding: 0;
}
.notification-content {
background: transparent;
padding: 6px;
border-radius: 0px;
}
.close-button {
background: rgba(0, 0, 0, 0.7);
color: white;
text-shadow: none;
padding: 0px;
box-shadow: 0px 2px 4px 2px rgba(0, 0, 0, 0.3);
border-radius: 100%;
}
.close-button:hover {
background: rgb(30, 30, 30);
transition: all 0.15s ease-in-out;
}
.notification-default-action,
.notification-action {
padding: 4px;
margin: 0;
box-shadow: none;
background: @bg;
border: 1px solid @border-color;
}
.notification-default-action:hover,
.notification-action:hover {
background: @bg-hover;
}
.notification-default-action {
border-radius: 0px;
}
/* When alternative actions are visible */
.notification-default-action:not(:only-child) {
border-bottom-left-radius: 0px;
border-bottom-right-radius: 0px;
}
.notification-action {
border-radius: 0px;
border-top: none;
border-right: none;
}
/* add bottom border radius to eliminate clipping */
.notification-action:first-child {
border-bottom-left-radius: 10px;
}
.notification-action:last-child {
border-bottom-right-radius: 10px;
border-right: 1px solid @border-color;
}
.image {
}
.body-image {
margin-top: 6px;
background-color: white;
border-radius: 0px;
}
.summary {
color: white;
text-shadow: none;
}
.time {
color: white;
text-shadow: none;
}
.body {
background: transparent;
color: white;
text-shadow: none;
}
.top-action-title {
color: #eee;
text-shadow: none;
padding: 10px
}
.control-center-clear-all {
color: white;
text-shadow: none;
background: @bg;
border: 1px solid @border-color;
box-shadow: none;
border-radius: 0px;
}
.control-center-clear-all:hover {
background: @bg-hover;
}
.control-center-dnd {
border-radius: 0px;
background: @bg;
border: 1px solid @border-color;
box-shadow: none;
}
.control-center-dnd:checked {
background: @bg-selected;
}
.control-center-dnd slider {
background: @bg-hover;
}
.control-center {
background-color: rgba (20, 1, 21, 0.9);
}
.control-center-list {
background: transparent;
padding: 6px
}
.floating-notifications {
background: transparent;
}

View File

@ -0,0 +1,149 @@
/*
* vim: ft=less
*/
@define-color border-color rgb(7, 7, 7);
@define-color bg rgb(58, 58, 58);
@define-color bg-hover rgb(68, 68, 68);
@define-color bg-focus rgba(68, 68, 68, 0.6);
@define-color bg-selected rgb(0, 128, 255);
.notification-row {
outline: none;
}
.notification-row:focus,
.notification-row:hover {
background: @bg-focus;
}
.notification {
border-radius: 10px;
margin: 6px 12px;
box-shadow: 0px 2px 4px 2px rgba(0, 0, 0, 0.3);
padding: 0;
}
.notification-content {
background: transparent;
padding: 6px;
border-radius: 10px;
}
.close-button {
background: black;
color: white;
text-shadow: none;
padding: 0 2px;
box-shadow: 0px 2px 4px 2px rgba(0, 0, 0, 0.3);
border-radius: 100%;
}
.close-button:hover {
background: rgb(30, 30, 30);
transition: all 0.15s ease-in-out;
}
.notification-default-action,
.notification-action {
padding: 4px;
margin: 0;
box-shadow: none;
background: @bg;
border: 1px solid @border-color;
}
.notification-default-action:hover,
.notification-action:hover {
background: @bg-hover;
}
.notification-default-action {
border-radius: 10px;
}
/* When alternative actions are visible */
.notification-default-action:not(:only-child) {
border-bottom-left-radius: 0px;
border-bottom-right-radius: 0px;
}
.notification-action {
border-radius: 0px;
border-top: none;
border-right: none;
}
/* add bottom border radius to eliminate clipping */
.notification-action:first-child {
border-bottom-left-radius: 10px;
}
.notification-action:last-child {
border-bottom-right-radius: 10px;
border-right: 1px solid @border-color;
}
.image {
}
.body-image {
margin-top: 6px;
background-color: white;
border-radius: 10px;
}
.summary {
color: white;
text-shadow: none;
}
.time {
color: white;
text-shadow: none;
}
.body {
background: transparent;
color: white;
text-shadow: none;
}
.top-action-title {
color: white;
text-shadow: none;
}
.control-center-clear-all {
color: white;
text-shadow: none;
background: @bg;
border: 1px solid @border-color;
box-shadow: none;
border-radius: 10px;
}
.control-center-clear-all:hover {
background: @bg-hover;
}
.control-center-dnd {
border-radius: 10px;
background: @bg;
border: 1px solid @border-color;
box-shadow: none;
}
.control-center-dnd:checked {
background: @bg-selected;
}
.control-center-dnd slider {
background: @bg-hover;
}
.control-center {
background: rgba(0, 0, 0, 0.7);
}
.control-center-list {
background: transparent;
}
.floating-notifications {
background: transparent;
}

31
setup.py Normal file
View File

@ -0,0 +1,31 @@
import os
from setuptools import setup, find_packages
def read(f_name):
return open(os.path.join(os.path.dirname(__file__), f_name)).read()
setup(
name='nwg-shell',
version='0.0.1',
description='GTK3-based shell for sway Wayland compositor',
packages=find_packages(),
include_package_data=True,
package_data={
"": ["skel/*"]
},
url='https://github.com/nwg-piotr/nwg-shell',
license='MIT',
author='Piotr Miller',
author_email='nwg.piotr@gmail.com',
python_requires='>=3.6.0',
install_requires=[],
entry_points={
'gui_scripts': [
'nwg-shell = nwg_shell.main:main',
'nwg-shell-installer = nwg_shell.installer:main'
]
}
)