big cleanup
This commit is contained in:
parent
533f88f4cd
commit
c7c6606d14
81 changed files with 0 additions and 8334 deletions
|
@ -1,33 +0,0 @@
|
|||
$black: #BLACK;
|
||||
$black_a: #BLCKA;
|
||||
|
||||
$red: #RED;
|
||||
$red_a: #RDA;
|
||||
|
||||
$green: #GREEN;
|
||||
$green_a: #GRNA;
|
||||
|
||||
$yellow: #YELLOW;
|
||||
$yellow_a: #YLWA;
|
||||
|
||||
$blue: #BLUE;
|
||||
$blue_a: #BLUA;
|
||||
|
||||
$magenta: #MAGENTA;
|
||||
$magenta_a: #MGNA;
|
||||
|
||||
$cyan: #CYAN;
|
||||
$cyan_a: #CYNA;
|
||||
|
||||
$white: #WHITE;
|
||||
$white_a: #WHTA;
|
||||
|
||||
$fg: #FG;
|
||||
$bg: #BG;
|
||||
|
||||
$border: $yellow_a;
|
||||
$shadow: $black_a;
|
||||
$base: $bg;
|
||||
$bg1: $black;
|
||||
$text: $fg;
|
||||
$outline: $yellow_a;
|
|
@ -1,136 +0,0 @@
|
|||
exec-once = eww open bar
|
||||
exec-once = swayidle timeout 300 'gtklock'
|
||||
exec-once = swayidle timeout 900 'systemctl suspend'
|
||||
exec-once = ckb-next -c -b
|
||||
exec-once = swaybg -i #BGIMAGE -m fill
|
||||
exec-once = xrdb -l ~/.Xresources
|
||||
exec-once = swayosd --max-volume 100
|
||||
exec-once = keepassxc
|
||||
exec-once = swaync
|
||||
exec = eww reload
|
||||
exec = gsettings set org.gnome.desktop.interface gtk-theme '#GTKTHEME'
|
||||
exec = gsettings set org.gnome.desktop.interface font-name '#FONT'
|
||||
exec = gsettings set org.gnome.desktop.interface icon-theme '#ICONTHEME'
|
||||
|
||||
input {
|
||||
kb_layout=us
|
||||
kb_options=caps:escape,escape:caps
|
||||
sensitivity=0.0
|
||||
accel_profile=flat
|
||||
force_no_accel=true
|
||||
numlock_by_default=true
|
||||
}
|
||||
|
||||
general {
|
||||
layout=dwindle
|
||||
border_size=#THICK
|
||||
gaps_in=#GAPSIN
|
||||
gaps_out=#GAPSOUT
|
||||
resize_on_border=true
|
||||
hover_icon_on_border=true
|
||||
col.active_border=0xff#ACTIVEBORDER
|
||||
col.inactive_border=0xff#BORDER
|
||||
}
|
||||
|
||||
dwindle {
|
||||
preserve_split=true
|
||||
pseudotile=true
|
||||
use_active_for_splits=true
|
||||
no_gaps_when_only=false
|
||||
}
|
||||
|
||||
decoration {
|
||||
rounding=#ROUND
|
||||
blur=0
|
||||
# screen_shader=/home/bolt/Code/desktop.frag
|
||||
}
|
||||
|
||||
misc {
|
||||
vfr=true
|
||||
vrr=0
|
||||
mouse_move_enables_dpms=true
|
||||
key_press_enables_dpms=true
|
||||
}
|
||||
|
||||
animations {
|
||||
enabled=1
|
||||
bezier=overshot,0.05,0.9,0.1,1.1
|
||||
bezier=smooth,0.06,0.94,0.1,1.0
|
||||
bezier=slosmooth,0.1,0.89,0.14,0.96
|
||||
animation=windows,1,6,overshot,popin
|
||||
animation=workspaces,1,6,smooth,slidevert
|
||||
animation=specialWorkspace,1,6,overshot,slide
|
||||
}
|
||||
|
||||
misc {
|
||||
disable_hyprland_logo=true
|
||||
disable_splash_rendering=true
|
||||
}
|
||||
|
||||
monitor=,highrr,auto,1
|
||||
|
||||
windowrule=noanim,^(wlogout)$
|
||||
windowrule=workspace special silent,^(keepassxc)$
|
||||
windowrulev2 = workspace special silent, title:(KeePassXC)$
|
||||
windowrule=dimaround,^(fuzzel)$
|
||||
|
||||
|
||||
bindm=SUPER,mouse:272,movewindow
|
||||
bindm=SUPER,mouse:273,resizewindow
|
||||
bind=SUPER,Return,exec,kitty
|
||||
bind=SUPER,E,exec,thunar
|
||||
bind=SUPER,F,exec,firefox
|
||||
bind=SUPER_SHIFT,F,exec,nyxt
|
||||
bind=SUPER,D,exec,fuzzel
|
||||
bind=SUPER,N,exec,swaync-client -t
|
||||
|
||||
bind=SUPER_SHIFT,Q,killactive
|
||||
bind=SUPER_SHIFT,space,fullscreen,0
|
||||
bind=SUPER,space,togglefloating
|
||||
bind=SUPER,space,centerwindow
|
||||
bind=SUPER,c,centerwindow
|
||||
|
||||
|
||||
bind=SUPER,h,movefocus,l
|
||||
bind=SUPER,l,movefocus,r
|
||||
bind=SUPER,j,movefocus,d
|
||||
bind=SUPER,k,movefocus,u
|
||||
bind=SUPER_SHIFT,h,movewindow,l
|
||||
bind=SUPER_SHIFT,l,movewindow,r
|
||||
bind=SUPER_SHIFT,j,movewindow,d
|
||||
bind=SUPER_SHIFT,k,movewindow,u
|
||||
|
||||
bind=SUPER,s,togglesplit
|
||||
bind=SUPER,a,changegroupactive,f
|
||||
bind=SUPER,z,changegroupactive,b
|
||||
bind=SUPER,x,togglegroup
|
||||
|
||||
bind=SUPER,1,workspace,1
|
||||
bind=SUPER,2,workspace,2
|
||||
bind=SUPER,3,workspace,3
|
||||
bind=SUPER,4,workspace,4
|
||||
bind=SUPER_SHIFT,1,movetoworkspacesilent,1
|
||||
bind=SUPER_SHIFT,2,movetoworkspacesilent,2
|
||||
bind=SUPER_SHIFT,3,movetoworkspacesilent,3
|
||||
bind=SUPER_SHIFT,4,movetoworkspacesilent,4
|
||||
|
||||
bind=SUPER_CTRL,h,resizeactive,-40 0
|
||||
bind=SUPER_CTRL,l,resizeactive,40 0
|
||||
bind=SUPER_CTRL,j,resizeactive,0 -40
|
||||
bind=SUPER_CTRL,k,resizeactive,0 40
|
||||
|
||||
bind=SUPER,minus,togglespecialworkspace
|
||||
bind=SUPER_SHIFT,minus,movetoworkspace,special
|
||||
|
||||
bind=SUPER_SHIFT,S,exec,grim -g "$(slurp)" -t png -o "$HOME/Pictures/$(date +%F_%H-%m-%S).png" && notify-send "Screenshot taken."
|
||||
bind=SUPER_SHIFT_CTRL,S,exec,kooha
|
||||
bind=SUPER_SHIFT,E,exec,wlogout
|
||||
bind=,XF86AudioMute,exec,swayosd --output-volume mute-toggle
|
||||
bind=,XF86AudioRaiseVolume,exec,swayosd --output-volume raise
|
||||
bind=,XF86AudioLowerVolume,exec,swayosd --output-volume lower
|
||||
bind=,XF86AudioStop,exec,playerctl stop
|
||||
bind=,XF86AudioPlay,exec,playerctl play-pause
|
||||
bind=,XF86AudioPrev,exec,playerctl previous
|
||||
bind=,XF86AudioNext,exec,playerctl next
|
||||
bind=,XF86MonBrightnessUp,exec,swayosd --brightness raise
|
||||
bind=,XF86MonBrightnessDown,exec,swayosd --brightness lower
|
|
@ -1,58 +0,0 @@
|
|||
let {
|
||||
$workspaces = {
|
||||
type = "workspaces"
|
||||
all_monitors = false
|
||||
}
|
||||
|
||||
$focused = { type = "focused" }
|
||||
|
||||
$mpris = {
|
||||
type = "music"
|
||||
player_type = "mpris"
|
||||
|
||||
on_click_middle = "playerctl play-pause"
|
||||
on_scroll_up = "playerctl volume +5"
|
||||
on_scroll_down = "playerctl volume -5"
|
||||
|
||||
}
|
||||
|
||||
$sys_info = {
|
||||
type = "sys_info"
|
||||
|
||||
interval.memory = 30
|
||||
interval.cpu = 1
|
||||
interval.temps = 5
|
||||
interval.disks = 300
|
||||
interval.networks = 3
|
||||
|
||||
format = [
|
||||
" {cpu_percent}% | {temp_c:k10temp_Tccd1}°C"
|
||||
" {memory_used} / {memory_total} GB ({memory_percent}%)"
|
||||
"| {swap_used} / {swap_total} GB ({swap_percent}%)"
|
||||
" {disk_used:/} / {disk_total:/} GB ({disk_percent:/}%)"
|
||||
"李 {net_down:enp39s0} / {net_up:enp3s0} Mbps"
|
||||
"猪 {load_average:1} | {load_average:5} | {load_average:15}"
|
||||
" {uptime}"
|
||||
]
|
||||
}
|
||||
|
||||
$tray = { type = "tray" }
|
||||
|
||||
$clock = { type = "clock" }
|
||||
|
||||
$button = { type = "button" name="power-btn" label = "" on_click = "!wlogout" }
|
||||
|
||||
$left = [ $workspaces ]
|
||||
$center = [ $focused ]
|
||||
$right = [ $mpris $sys_info $button $clock ]
|
||||
}
|
||||
in {
|
||||
anchor_to_edges = true
|
||||
position = "top"
|
||||
height = 16
|
||||
icon_theme = "Papirus-Dark"
|
||||
|
||||
start = $left
|
||||
center = $center
|
||||
end = $right
|
||||
}
|
|
@ -1,201 +0,0 @@
|
|||
@define-color color_bg #BG;
|
||||
@define-color color_bg_dark #DARKBG;
|
||||
@define-color color_border #BORDER;
|
||||
@define-color color_border_active #ACTIVEBORDER;
|
||||
@define-color color_text #TEXT;
|
||||
@define-color color_urgent #URGENT;
|
||||
|
||||
/* -- base styles -- */
|
||||
|
||||
* {
|
||||
font-family: #FONT, sans-serif;
|
||||
font-size: #SZFONTpx;
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
box, menubar, button {
|
||||
background-color: @color_bg;
|
||||
background-image: none;
|
||||
}
|
||||
|
||||
button, label {
|
||||
color: @color_text;
|
||||
}
|
||||
|
||||
button:hover {
|
||||
background-color: @color_bg_dark;
|
||||
}
|
||||
|
||||
#bar {
|
||||
border-top: 1px solid @color_border;
|
||||
}
|
||||
|
||||
.popup {
|
||||
border: 1px solid @color_border;
|
||||
padding: 1em;
|
||||
}
|
||||
|
||||
|
||||
/* -- clipboard -- */
|
||||
|
||||
.clipboard {
|
||||
margin-left: 5px;
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
.popup-clipboard .item {
|
||||
padding-bottom: 0.3em;
|
||||
border-bottom: 1px solid @color_border;
|
||||
}
|
||||
|
||||
|
||||
/* -- clock -- */
|
||||
|
||||
.clock {
|
||||
font-weight: bold;
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
.popup-clock .calendar-clock {
|
||||
color: @color_text;
|
||||
font-size: 2.5em;
|
||||
padding-bottom: 0.1em;
|
||||
}
|
||||
|
||||
.popup-clock .calendar {
|
||||
background-color: @color_bg;
|
||||
color: @color_text;
|
||||
}
|
||||
|
||||
.popup-clock .calendar .header {
|
||||
padding-top: 1em;
|
||||
border-top: 1px solid @color_border;
|
||||
font-size: 1.5em;
|
||||
}
|
||||
|
||||
.popup-clock .calendar:selected {
|
||||
background-color: @color_border_active;
|
||||
}
|
||||
|
||||
|
||||
/* -- launcher -- */
|
||||
|
||||
.launcher .item {
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
.launcher .item:not(.focused):hover {
|
||||
background-color: @color_bg_dark;
|
||||
}
|
||||
|
||||
.launcher .open {
|
||||
border-bottom: 1px solid @color_text;
|
||||
}
|
||||
|
||||
.launcher .focused {
|
||||
border-bottom: 2px solid @color_border_active;
|
||||
}
|
||||
|
||||
.launcher .urgent {
|
||||
border-bottom-color: @color_urgent;
|
||||
}
|
||||
|
||||
.popup-launcher {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.popup-launcher .popup-item:not(:first-child) {
|
||||
border-top: 1px solid @color_border;
|
||||
}
|
||||
|
||||
|
||||
/* -- music -- */
|
||||
|
||||
.music:hover * {
|
||||
background-color: @color_bg_dark;
|
||||
}
|
||||
|
||||
.popup-music .album-art {
|
||||
margin-right: 1em;
|
||||
}
|
||||
|
||||
.popup-music .icon-box {
|
||||
margin-right: 0.4em;
|
||||
}
|
||||
|
||||
.popup-music .title .icon, .popup-music .title .label {
|
||||
font-size: 1.7em;
|
||||
}
|
||||
|
||||
.popup-music .controls *:disabled {
|
||||
color: @color_border;
|
||||
}
|
||||
|
||||
.popup-music .volume .slider slider {
|
||||
border-radius: 100%;
|
||||
}
|
||||
|
||||
.popup-music .volume .icon {
|
||||
margin-left: 4px;
|
||||
}
|
||||
|
||||
.popup-music .progress .slider slider {
|
||||
border-radius: 100%;
|
||||
}
|
||||
|
||||
/* -- script -- */
|
||||
|
||||
.script {
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
|
||||
/* -- sys_info -- */
|
||||
|
||||
.sysinfo {
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.sysinfo .item {
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
|
||||
/* -- tray -- */
|
||||
|
||||
.tray {
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
|
||||
/* -- workspaces -- */
|
||||
|
||||
.workspaces .item.focused {
|
||||
box-shadow: inset 0 -3px;
|
||||
background-color: @color_bg_dark;
|
||||
}
|
||||
|
||||
.workspaces .item:hover {
|
||||
box-shadow: inset 0 -3px;
|
||||
}
|
||||
|
||||
|
||||
/* -- custom: power menu -- */
|
||||
|
||||
.popup-power-menu #header {
|
||||
font-size: 1.4em;
|
||||
padding-bottom: 0.4em;
|
||||
margin-bottom: 0.6em;
|
||||
border-bottom: 1px solid @color_border;
|
||||
}
|
||||
|
||||
.popup-power-menu .power-btn {
|
||||
border: 1px solid @color_border;
|
||||
padding: 0.6em 1em;
|
||||
}
|
||||
|
||||
.popup-power-menu #buttons > *:nth-child(1) .power-btn {
|
||||
margin-right: 1em;
|
||||
}
|
||||
|
|
@ -1 +0,0 @@
|
|||
/nix/store/yj1wxm9hh8610iyzqnz75kvs6xl8j3my-source
|
|
@ -1 +0,0 @@
|
|||
/nix/store/c11mar1bsnkdiynb2x8nrp2i0661asww-nix-shell-env
|
File diff suppressed because one or more lines are too long
|
@ -1 +0,0 @@
|
|||
use flake
|
|
@ -1,15 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
ckb-next -c -b &
|
||||
mullvad connect &
|
||||
xrdb -l ~/.Xresources &
|
||||
wlr-randr --output HDMI-A-1 --transform 90
|
||||
wlr-randr --output DP-1 --pos 1080,450 --adaptive-sync enabled
|
||||
|
||||
# for later..
|
||||
# gsettings set org.gnome.desktop.interface gtk-theme '${rice.gtk-theme.name}'";}
|
||||
# gsettings set org.gnome.desktop.interface font-name '${rice.fonts.sans.name}'";}
|
||||
# gsettings set org.gnome.desktop.interface icon-theme '${rice.icons.name}'";}
|
||||
|
||||
dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY XDG_CURRENT_DESKTOP XDG_SESSION_TYPE NIXOS_OZONE_WL
|
||||
systemctl --user start qtile-session.target
|
|
@ -1,305 +0,0 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import importlib
|
||||
import subprocess
|
||||
import sys
|
||||
import os
|
||||
from typing import List
|
||||
|
||||
from libqtile.log_utils import logger
|
||||
from libqtile import bar, hook, layout, qtile, utils, widget
|
||||
from libqtile.backend import base
|
||||
from libqtile.lazy import lazy
|
||||
from libqtile.config import Key, Match, Screen, Click, Drag, Group, ScratchPad, DropDown, Screen
|
||||
|
||||
from lib import centre_float, go_to_group, send_to_next_screen
|
||||
|
||||
# from smartfloat import SmartFloat
|
||||
|
||||
# import qtile_extras.widget as extra_widgets
|
||||
|
||||
assert qtile is not None
|
||||
|
||||
from typing import Any
|
||||
from libqtile.core.manager import Qtile
|
||||
|
||||
from libqtile.backend.wayland import InputConfig
|
||||
|
||||
|
||||
wl_input_rules = {
|
||||
"type:keyboard": InputConfig(kb_options="caps:escape"),
|
||||
"*": InputConfig(accel_profile="flat", pointer_accel=0.0),
|
||||
}
|
||||
mod = "mod4"
|
||||
|
||||
|
||||
class Apps:
|
||||
term = "kitty"
|
||||
launcher = "fuzzel"
|
||||
browser = "firefox"
|
||||
fm = "thunar"
|
||||
logout = "wlogout"
|
||||
noti = "swaync-client -t"
|
||||
ss = "slurp | grim -g - -t png /home/$(whoami)/screenshots/$(date +%F_%H-%m-%S).png"
|
||||
screenrec = "kooha"
|
||||
passmgr = "keepassxc"
|
||||
music = "strawberry"
|
||||
|
||||
|
||||
class OSD:
|
||||
mute = "volumectl %"
|
||||
vol_up = "volumectl -u up"
|
||||
vol_down = "volumectl -u down"
|
||||
next = "playerctl next"
|
||||
prev = "playerctl previous"
|
||||
stop = "playerctl stop"
|
||||
play = "playerctl play-pause"
|
||||
brightup = "lightctl up"
|
||||
brightdown = "lightctl down"
|
||||
|
||||
|
||||
keys = [
|
||||
Key([mod], "return", lazy.spawn(Apps.term)),
|
||||
Key([mod], "d", lazy.spawn(Apps.launcher)),
|
||||
Key([mod], "f", lazy.spawn(Apps.browser)),
|
||||
Key([mod], "e", lazy.spawn(Apps.fm)),
|
||||
Key([mod], "n", lazy.spawn(Apps.noti)),
|
||||
Key([mod, "shift"], "s", lazy.spawn(Apps.ss, shell=True)),
|
||||
Key([mod, "control", "shift"], "s", lazy.spawn(Apps.screenrec)),
|
||||
Key([], "XF86AudioMute", lazy.spawn(OSD.mute)),
|
||||
Key([], "XF86AudioRaiseVolume", lazy.spawn(OSD.vol_up)),
|
||||
Key([], "XF86AudioLowerVolume", lazy.spawn(OSD.vol_down)),
|
||||
Key([], "XF86AudioStop", lazy.spawn(OSD.stop)),
|
||||
Key([], "XF86AudioPlay", lazy.spawn(OSD.play)),
|
||||
Key([], "XF86AudioPrev", lazy.spawn(OSD.prev)),
|
||||
Key([], "XF86AudioNext", lazy.spawn(OSD.next)),
|
||||
Key([], "XF86MonBrightnessUp", lazy.spawn(OSD.brightup)),
|
||||
Key([], "XF86MonBrightnessDown", lazy.spawn(OSD.brightdown)),
|
||||
Key([mod, "shift"], "q", lazy.window.kill()),
|
||||
Key([mod], "c", lazy.window.center()),
|
||||
Key([mod], "s", lazy.layout.toggle_split()),
|
||||
Key([mod], "h", lazy.layout.left(), desc="Move focus to left"),
|
||||
Key([mod], "l", lazy.layout.right(), desc="Move focus to right"),
|
||||
Key([mod], "j", lazy.layout.down(), desc="Move focus down"),
|
||||
Key([mod], "k", lazy.layout.up(), desc="Move focus up"),
|
||||
Key(
|
||||
[mod, "shift"], "h", lazy.layout.shuffle_left(), desc="Move window to the left"
|
||||
),
|
||||
Key(
|
||||
[mod, "shift"],
|
||||
"l",
|
||||
lazy.layout.shuffle_right(),
|
||||
desc="Move window to the right",
|
||||
),
|
||||
Key([mod, "shift"], "j", lazy.layout.shuffle_down(), desc="Move window down"),
|
||||
Key([mod, "shift"], "k", lazy.layout.shuffle_up(), desc="Move window up"),
|
||||
Key([mod, "control"], "h", lazy.layout.grow_left(), desc="Grow window to the left"),
|
||||
Key(
|
||||
[mod, "control"], "l", lazy.layout.grow_right(), desc="Grow window to the right"
|
||||
),
|
||||
Key([mod, "control"], "j", lazy.layout.grow_down(), desc="Grow window down"),
|
||||
Key([mod, "control"], "k", lazy.layout.grow_up(), desc="Grow window up"),
|
||||
Key([mod], "space", lazy.window.toggle_floating()),
|
||||
Key([mod, "shift"], "space", lazy.window.toggle_fullscreen()),
|
||||
Key([mod], "Tab", lazy.next_screen()),
|
||||
]
|
||||
|
||||
|
||||
keys.append(
|
||||
Key([mod, "shift"], "Tab", lazy.function(send_to_next_screen()))
|
||||
)
|
||||
|
||||
groups = []
|
||||
land_groups = "123"
|
||||
port_groups = "456"
|
||||
# groups.extend([Group(str(i), screen_affinity=(i+1)%2) for i in range(1,7)])
|
||||
groups.extend([Group(i, screen_affinity=1) for i in land_groups])
|
||||
groups.extend([Group(i, screen_affinity=0) for i in port_groups])
|
||||
|
||||
for i in groups:
|
||||
keys.extend(
|
||||
[
|
||||
# mod1 + letter of group = switch to group
|
||||
Key(
|
||||
[mod],
|
||||
i.name,
|
||||
lazy.function(go_to_group(land_groups, port_groups, i.name)),
|
||||
# lazy.group[i.name].toscreen(),
|
||||
desc="Switch to group {}".format(i.name),
|
||||
),
|
||||
# mod1 + shift + letter of group = move focused window to group
|
||||
Key(
|
||||
[mod, "shift"],
|
||||
i.name,
|
||||
lazy.window.togroup(i.name),
|
||||
desc="move focused window to group {}".format(i.name),
|
||||
),
|
||||
]
|
||||
)
|
||||
|
||||
groups.append(
|
||||
ScratchPad(
|
||||
"scratch",
|
||||
[
|
||||
DropDown(
|
||||
"term",
|
||||
Apps.term,
|
||||
width=2.0 / 3.0,
|
||||
height=2.0 / 3.0,
|
||||
x=1.0 / 6.0,
|
||||
y=1.0 / 6.0,
|
||||
),
|
||||
DropDown(
|
||||
"pass",
|
||||
Apps.passmgr,
|
||||
width=1.0 / 2.0,
|
||||
height=2.0 / 3.0,
|
||||
x=1.0 / 4.0,
|
||||
y=1.0 / 6.0,
|
||||
),
|
||||
DropDown(
|
||||
"music",
|
||||
Apps.music,
|
||||
width=2.0 / 3.0,
|
||||
height=2.0 / 3.0,
|
||||
x=1.0 / 6.0,
|
||||
y=1.0 / 6.0,
|
||||
),
|
||||
DropDown(
|
||||
"logout",
|
||||
Apps.logout,
|
||||
width=2.0 / 3.0,
|
||||
height=2.0 / 3.0,
|
||||
x=1.0 / 6.0,
|
||||
y=1.0 / 6.0,
|
||||
)
|
||||
],
|
||||
)
|
||||
)
|
||||
|
||||
keys.extend(
|
||||
[
|
||||
Key([mod], "grave", lazy.group["scratch"].dropdown_toggle("term")),
|
||||
Key([mod], "minus", lazy.group["scratch"].dropdown_toggle("pass")),
|
||||
Key([mod], "equal", lazy.group["scratch"].dropdown_toggle("music")),
|
||||
Key([mod, "shift"], "e", lazy.group["scratch"].dropdown_toggle("logout")),
|
||||
]
|
||||
)
|
||||
|
||||
layout_theme = dict(
|
||||
margin=#GAPS,
|
||||
border_width=#BORDERWIDTH,
|
||||
border_focus=[ "#BORDERCOL", "#BORDERFOCUS", "#BORDERCOL", ],
|
||||
border_normal=["#BORDERCOL", "#BORDERCOL", "#BORDERCOL", ],
|
||||
)
|
||||
|
||||
layouts = [
|
||||
layout.Bsp(fair=False, margin_on_single=#SINGLE_GAP, border_on_single=True, **layout_theme),
|
||||
# layout.SmartFloat(**layout_theme),
|
||||
]
|
||||
|
||||
widget_defaults = dict(
|
||||
font="#FONTFACE",
|
||||
fontsize=#FONTSIZE,
|
||||
background="#BGCOL",
|
||||
foreground="#FGCOL",
|
||||
)
|
||||
|
||||
mouse = [
|
||||
Drag(
|
||||
[mod],
|
||||
"Button1",
|
||||
lazy.window.set_position_floating(),
|
||||
start=lazy.window.get_position(),
|
||||
),
|
||||
Drag(
|
||||
[mod], "Button3", lazy.window.set_size_floating(), start=lazy.window.get_size()
|
||||
),
|
||||
]
|
||||
|
||||
screens = [
|
||||
Screen(),
|
||||
Screen(
|
||||
top=bar.Bar(
|
||||
[
|
||||
widget.GroupBox(**widget_defaults),
|
||||
widget.WindowTabs(**widget_defaults),
|
||||
widget.Spacer(),
|
||||
widget.CurrentLayout(**widget_defaults),
|
||||
widget.Volume(**widget_defaults),
|
||||
widget.Systray(**widget_defaults),
|
||||
widget.Clock(**widget_defaults),
|
||||
],
|
||||
16,
|
||||
)
|
||||
)
|
||||
]
|
||||
|
||||
dgroups_key_binder = None
|
||||
dgroups_app_rules: List[str] = []
|
||||
follow_mouse_focus = True
|
||||
bring_front_click = False
|
||||
cursor_warp = True
|
||||
focus_on_window_activation = "smart"
|
||||
auto_fullscreen = True
|
||||
floats_kept_above = True
|
||||
|
||||
floating_layout = layout.Floating(
|
||||
float_rules=[
|
||||
*layout.Floating.default_float_rules,
|
||||
],
|
||||
**layout_theme,
|
||||
)
|
||||
|
||||
|
||||
@hook.subscribe.startup
|
||||
def autostart():
|
||||
home = os.path.expanduser("~/.config/qtile/autostart.sh")
|
||||
subprocess.Popen([home])
|
||||
|
||||
|
||||
# window management hooks
|
||||
|
||||
@hook.subscribe.client_new
|
||||
def float_firefox(client):
|
||||
wm_class = client.get_wm_class()
|
||||
if wm_class and "firefox" in wm_class and client.name == "Library":
|
||||
client.enable_floating()
|
||||
|
||||
|
||||
# @hook.subscribe.client_new
|
||||
# def fullscreen_wlogout(client):
|
||||
# if client.name == "wlogout":
|
||||
# client.enable_floating()
|
||||
# client.bring_to_front()
|
||||
|
||||
|
||||
@hook.subscribe.focus_change
|
||||
def always_front():
|
||||
win = qtile.current_window
|
||||
if win is not None and win.floating:
|
||||
win.bring_to_front()
|
||||
|
||||
|
||||
@hook.subscribe.float_change
|
||||
def centre_floated():
|
||||
win = qtile.current_window
|
||||
if (
|
||||
win is not None
|
||||
and win.floating
|
||||
and not win.maximized
|
||||
and not win.wants_to_fullscreen
|
||||
and not win.fullscreen
|
||||
):
|
||||
qtile.function(centre_float(win, 1.0/6.0*5.0, 1.0/8.0*7.0))
|
||||
|
||||
# @hook.subscribe.client_new
|
||||
# def round_and_transparent(client):
|
||||
# logger.warning(client)
|
||||
# logger.warning(type(client))
|
||||
# logger.warning(client.rounding)
|
||||
# logger.warning(client.opacity)
|
||||
# client.rounding = 8
|
||||
# client.opacity = 0.85
|
78
home/dots/qtile/flake.lock
generated
78
home/dots/qtile/flake.lock
generated
|
@ -1,78 +0,0 @@
|
|||
{
|
||||
"nodes": {
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1704290814,
|
||||
"narHash": "sha256-LWvKHp7kGxk/GEtlrGYV68qIvPHkU9iToomNFGagixU=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "70bdadeb94ffc8806c0570eb5c2695ad29f0e421",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-23.05",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-unstable": {
|
||||
"locked": {
|
||||
"lastModified": 1704842529,
|
||||
"narHash": "sha256-OTeQA+F8d/Evad33JMfuXC89VMetQbsU4qcaePchGr4=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "eabe8d3eface69f5bb16c18f8662a702f50c20d5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs",
|
||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||
"utils": "utils"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"utils": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1701680307,
|
||||
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
|
@ -1,36 +0,0 @@
|
|||
{
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.05";
|
||||
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
||||
utils.url = "github:numtide/flake-utils";
|
||||
};
|
||||
|
||||
outputs = {
|
||||
self,
|
||||
nixpkgs,
|
||||
nixpkgs-unstable,
|
||||
utils,
|
||||
...
|
||||
}:
|
||||
utils.lib.eachDefaultSystem (
|
||||
system: let
|
||||
stable = import nixpkgs {inherit system;};
|
||||
unstable = import nixpkgs-unstable {inherit system;};
|
||||
in {
|
||||
devShell = with unstable;
|
||||
with unstable.python3Packages;
|
||||
mkShell {
|
||||
buildInputs = [
|
||||
python-lsp-server
|
||||
mypy
|
||||
pylsp-mypy
|
||||
black
|
||||
pydantic
|
||||
# coconut
|
||||
# python3Packages.qtile-extras
|
||||
python3Packages.qtile
|
||||
];
|
||||
};
|
||||
}
|
||||
);
|
||||
}
|
|
@ -1,53 +0,0 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
from typing import Callable
|
||||
from libqtile.log_utils import logger
|
||||
from libqtile.core.manager import Qtile
|
||||
|
||||
def centre_float(win, greater: float, lesser: float) -> Callable:
|
||||
def _inner(qtile: Qtile) -> None:
|
||||
win.bring_to_front()
|
||||
info = qtile.current_screen.info()
|
||||
width = info["width"]
|
||||
height = info["height"]
|
||||
if height > width:
|
||||
width, height = (width*lesser, height*greater)
|
||||
else:
|
||||
width, height = (width*greater, height*lesser)
|
||||
win.set_size_floating(int(width), int(height))
|
||||
win.center()
|
||||
return _inner
|
||||
|
||||
|
||||
def go_to_group(land_groups: str, port_groups: str, name: str) -> Callable:
|
||||
def _inner(qtile: Qtile) -> None:
|
||||
if len(qtile.screens) == 1:
|
||||
qtile.groups_map[name].toscreen()
|
||||
return
|
||||
if name in land_groups:
|
||||
qtile.focus_screen(1)
|
||||
qtile.groups_map[name].toscreen()
|
||||
elif name in port_groups:
|
||||
qtile.focus_screen(0)
|
||||
qtile.groups_map[name].toscreen()
|
||||
|
||||
return _inner
|
||||
|
||||
|
||||
def send_to_next_screen() -> Callable:
|
||||
def _inner(qtile: Qtile) -> None:
|
||||
win = qtile.current_window
|
||||
if win is not None:
|
||||
screen_to_send = (qtile.current_screen.index+1)%len(qtile.get_screens())
|
||||
win.toscreen(screen_to_send)
|
||||
qtile.focus_screen(screen_to_send)
|
||||
if (
|
||||
win.floating
|
||||
and not win.maximized
|
||||
and not win.wants_to_fullscreen
|
||||
and not win.fullscreen
|
||||
):
|
||||
qtile.function(centre_float(win, 1.0/6.0*5.0, 1.0/8.0*7.0))
|
||||
return _inner
|
|
@ -1,166 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
# This is the example configuration file for river.
|
||||
#
|
||||
# If you wish to edit this, you will probably want to copy it to
|
||||
# $XDG_CONFIG_HOME/river/init or $HOME/.config/river/init first.
|
||||
#
|
||||
# See the river(1), riverctl(1), and kile(1) man pages for complete
|
||||
# documentation.
|
||||
|
||||
# Note: the "Super" modifier is also known as Logo, GUI, Windows, Mod4, etc.
|
||||
|
||||
# MY BINDS
|
||||
|
||||
riverctl map normal Super Return spawn kitty
|
||||
riverctl map normal Super D spawn fuzzel
|
||||
riverctl map normal Super E spawn thunar
|
||||
riverctl map normal Super F spawn firefox
|
||||
riverctl map normal Super+Shift E spawn wlogout
|
||||
riverctl map normal Super+Shift S spawn grim -g "$(slurp)" -t png -o ~/Pictures/$(date +%F_%H-%m-%S).png && notify-send "Screenshot taken."
|
||||
riverctl map normal Super+Shift+Ctrl S spawn kooha
|
||||
|
||||
# Super+Q to close the focused view
|
||||
riverctl map normal Super+Shift Q close
|
||||
|
||||
# Super+J and Super+K to focus the next/previous view in the layout stack
|
||||
riverctl map normal Super J focus-view next
|
||||
riverctl map normal Super K focus-view previous
|
||||
|
||||
# Super+Shift+J and Super+Shift+K to swap the focused view with the next/previous
|
||||
# view in the layout stack
|
||||
riverctl map normal Super+Shift J swap next
|
||||
riverctl map normal Super+Shift K swap previous
|
||||
|
||||
# Super+Period and Super+Comma to focus the next/previous output
|
||||
riverctl map normal Super Period focus-output next
|
||||
riverctl map normal Super Comma focus-output previous
|
||||
|
||||
# Super+Shift+{Period,Comma} to send the focused view to the next/previous output
|
||||
riverctl map normal Super+Shift Period send-to-output next
|
||||
riverctl map normal Super+Shift Comma send-to-output previous
|
||||
|
||||
# Super+Return to bump the focused view to the top of the layout stack
|
||||
riverctl map normal Super+Shift Return zoom
|
||||
|
||||
# Super+H and Super+L to decrease/increase the main ratio of kile(1)
|
||||
riverctl map normal Super H send-layout-cmd kile "main-ratio -0.05"
|
||||
riverctl map normal Super L send-layout-cmd kile "main-ratio +0.05"
|
||||
|
||||
# Super+Shift+H and Super+Shift+L to increment/decrement the main count of kile(1)
|
||||
riverctl map normal Super+Shift H send-layout-cmd kile "main-count +1"
|
||||
riverctl map normal Super+Shift L send-layout-cmd kile "main-count -1"
|
||||
|
||||
# Super+Alt+{H,J,K,L} to move views
|
||||
riverctl map normal Super+Alt H move left 100
|
||||
riverctl map normal Super+Alt J move down 100
|
||||
riverctl map normal Super+Alt K move up 100
|
||||
riverctl map normal Super+Alt L move right 100
|
||||
|
||||
# Super+Alt+Control+{H,J,K,L} to snap views to screen edges
|
||||
riverctl map normal Super+Alt+Control H snap left
|
||||
riverctl map normal Super+Alt+Control J snap down
|
||||
riverctl map normal Super+Alt+Control K snap up
|
||||
riverctl map normal Super+Alt+Control L snap right
|
||||
|
||||
# Super+Alt+Shift+{H,J,K,L} to resize views
|
||||
riverctl map normal Super+Alt+Shift H resize horizontal -100
|
||||
riverctl map normal Super+Alt+Shift J resize vertical 100
|
||||
riverctl map normal Super+Alt+Shift K resize vertical -100
|
||||
riverctl map normal Super+Alt+Shift L resize horizontal 100
|
||||
|
||||
# Super + Left Mouse Button to move views
|
||||
riverctl map-pointer normal Super BTN_LEFT move-view
|
||||
|
||||
# Super + Right Mouse Button to resize views
|
||||
riverctl map-pointer normal Super BTN_RIGHT resize-view
|
||||
|
||||
# Super + Middle Mouse Button to toggle float
|
||||
riverctl map-pointer normal Super BTN_MIDDLE toggle-float
|
||||
|
||||
for i in $(seq 1 9)
|
||||
do
|
||||
tags=$((1 << ($i - 1)))
|
||||
|
||||
# Super+[1-9] to focus tag [0-8]
|
||||
riverctl map normal Super $i set-focused-tags $tags
|
||||
|
||||
# Super+Shift+[1-9] to tag focused view with tag [0-8]
|
||||
riverctl map normal Super+Shift $i set-view-tags $tags
|
||||
|
||||
# Super+Control+[1-9] to toggle focus of tag [0-8]
|
||||
riverctl map normal Super+Control $i toggle-focused-tags $tags
|
||||
|
||||
# Super+Shift+Control+[1-9] to toggle tag [0-8] of focused view
|
||||
riverctl map normal Super+Shift+Control $i toggle-view-tags $tags
|
||||
done
|
||||
|
||||
# Super+0 to focus all tags
|
||||
# Super+Shift+0 to tag focused view with all tags
|
||||
all_tags=$(((1 << 32) - 1))
|
||||
riverctl map normal Super 0 set-focused-tags $all_tags
|
||||
riverctl map normal Super+Shift 0 set-view-tags $all_tags
|
||||
|
||||
# Super+Space to toggle float
|
||||
riverctl map normal Super Space toggle-float
|
||||
|
||||
# Super+F to toggle fullscreen
|
||||
riverctl map normal Super+Shift Space toggle-fullscreen
|
||||
|
||||
# Super+{Up,Right,Down,Left} to change layout orientation
|
||||
riverctl map normal Super Up send-layout-cmd kile "main-location top"
|
||||
riverctl map normal Super Right send-layout-cmd kile "main-location right"
|
||||
riverctl map normal Super Down send-layout-cmd kile "main-location bottom"
|
||||
riverctl map normal Super Left send-layout-cmd kile "main-location left"
|
||||
|
||||
# Declare a passthrough mode. This mode has only a single mapping to return to
|
||||
# normal mode. This makes it useful for testing a nested wayland compositor
|
||||
riverctl declare-mode passthrough
|
||||
|
||||
# Super+F11 to enter passthrough mode
|
||||
riverctl map normal Super F11 enter-mode passthrough
|
||||
|
||||
# Super+F11 to return to normal mode
|
||||
riverctl map passthrough Super F11 enter-mode normal
|
||||
|
||||
# Various media key mapping examples for both normal and locked mode which do
|
||||
# not have a modifier
|
||||
for mode in normal locked
|
||||
do
|
||||
# Eject the optical drive (well if you still have one that is)
|
||||
riverctl map $mode None XF86Eject spawn 'eject -T'
|
||||
|
||||
# Control pulse audio volume with pamixer (https://github.com/cdemoulins/pamixer)
|
||||
riverctl map $mode None XF86AudioRaiseVolume spawn 'swayosd --output-volume raise'
|
||||
riverctl map $mode None XF86AudioLowerVolume spawn 'swayosd --output-volume lower'
|
||||
riverctl map $mode None XF86AudioMute spawn 'swayosd --output-volume mute-toggle'
|
||||
|
||||
# Control MPRIS aware media players with playerctl (https://github.com/altdesktop/playerctl)
|
||||
riverctl map $mode None XF86AudioMedia spawn 'playerctl play-pause'
|
||||
riverctl map $mode None XF86AudioPlay spawn 'playerctl play-pause'
|
||||
riverctl map $mode None XF86AudioPrev spawn 'playerctl previous'
|
||||
riverctl map $mode None XF86AudioNext spawn 'playerctl next'
|
||||
|
||||
# Control screen backlight brightness with light (https://github.com/haikarainen/light)
|
||||
riverctl map $mode None XF86MonBrightnessUp spawn 'light -A 5'
|
||||
riverctl map $mode None XF86MonBrightnessDown spawn 'light -U 5'
|
||||
done
|
||||
|
||||
# Set background and border color
|
||||
riverctl background-color 0x#BGCOLOUR
|
||||
riverctl border-color-focused 0x#BORDERCOLOUR
|
||||
riverctl border-color-unfocused 0x#UNFOCUSEDCOLOUR
|
||||
|
||||
# Set keyboard repeat rate
|
||||
riverctl set-repeat 50 300
|
||||
|
||||
# Make all views with an app-id that starts with "float" and title "foo" start floating.
|
||||
# riverctl rule-add float -app-id 'float*' -title 'foo'
|
||||
|
||||
# Make all views with app-id "bar" and any title use client-side decorations
|
||||
# riverctl rule-add csd -app-id "bar"
|
||||
|
||||
# Set the default layout generator to be kile and start it.
|
||||
# River will send the process group of the init executable SIGTERM on exit.
|
||||
riverctl default-layout kile
|
||||
kile &
|
|
@ -1,7 +0,0 @@
|
|||
const ver Vertical
|
||||
const hor Horizontal
|
||||
|
||||
const vsplit (ver | hor ([1 - 0.5] *hsplit))
|
||||
const hsplit (hor | ver ([1 - 0.5] *vsplit))
|
||||
|
||||
const default vsplit
|
|
@ -1,62 +0,0 @@
|
|||
{
|
||||
"$schema": "~/.config/swaync/configSchema.json",
|
||||
|
||||
"positionX": "center",
|
||||
"positionY": "bottom",
|
||||
"control-center-positionX": "none",
|
||||
"control-center-positionY": "top",
|
||||
"control-center-margin-top": 8,
|
||||
"control-center-margin-bottom": 8,
|
||||
"control-center-margin-right": 8,
|
||||
"control-center-margin-left": 8,
|
||||
"control-center-width": 600,
|
||||
"control-center-height": 400,
|
||||
"fit-to-screen": false,
|
||||
|
||||
"layer": "overlay",
|
||||
"cssPriority": "user",
|
||||
"notification-icon-size": 64,
|
||||
"notification-body-image-height": 100,
|
||||
"notification-body-image-width": 200,
|
||||
"timeout": 6,
|
||||
"timeout-low": 6,
|
||||
"timeout-critical": 0,
|
||||
"notification-window-width": 400,
|
||||
"keyboard-shortcuts": true,
|
||||
"image-visibility": "when-available",
|
||||
"transition-time": 200,
|
||||
"hide-on-clear": true,
|
||||
"hide-on-action": true,
|
||||
"script-fail-notify": true,
|
||||
|
||||
"widgets": [
|
||||
"inhibitors",
|
||||
"title",
|
||||
"dnd",
|
||||
"mpris",
|
||||
"notifications"
|
||||
],
|
||||
"widget-config": {
|
||||
"inhibitors": {
|
||||
"text": "Inhibitors",
|
||||
"button-text": "Clear All",
|
||||
"clear-all-button": true
|
||||
},
|
||||
"title": {
|
||||
"text": "Notifications",
|
||||
"clear-all-button": false,
|
||||
"button-text": "Clear All"
|
||||
},
|
||||
"dnd": {
|
||||
"text": "Do Not Disturb"
|
||||
},
|
||||
"label": {
|
||||
"max-lines": 5,
|
||||
"text": "Label Text"
|
||||
},
|
||||
"mpris": {
|
||||
"image-size": 96,
|
||||
"image-radius": 0
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,523 +0,0 @@
|
|||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"title": "SwayNotificationCenter JSON schema",
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"$schema": {
|
||||
"type": "string",
|
||||
"description": "Pointer to the schema against which this document should be validated."
|
||||
},
|
||||
"positionX": {
|
||||
"type": "string",
|
||||
"description": "Horizontal position of control center and notification window",
|
||||
"default": "right",
|
||||
"enum": ["right", "left", "center"]
|
||||
},
|
||||
"layer": {
|
||||
"type": "string",
|
||||
"description": "Layer of control center window",
|
||||
"default": "top",
|
||||
"enum": ["background", "bottom", "top", "overlay"]
|
||||
},
|
||||
"cssPriority": {
|
||||
"type": "string",
|
||||
"description": "Which GTK priority to use when loading the default and user CSS files. Pick \"user\" to override XDG_CONFIG_HOME/gtk-3.0/gtk.css",
|
||||
"default": "application",
|
||||
"enum": ["application", "user"]
|
||||
},
|
||||
"positionY": {
|
||||
"type": "string",
|
||||
"description": "Vertical position of control center and notification window",
|
||||
"default": "top",
|
||||
"enum": ["top", "bottom"]
|
||||
},
|
||||
"control-center-positionX": {
|
||||
"type": "string",
|
||||
"description": "Optional: Horizontal position of the control center. Supersedes positionX if not set to `none`",
|
||||
"default": "none",
|
||||
"enum": ["right", "left", "center", "none"]
|
||||
},
|
||||
"control-center-positionY": {
|
||||
"type": "string",
|
||||
"description": "Optional: Vertical position of the control center. Supersedes positionY if not set to `none`",
|
||||
"default": "none",
|
||||
"enum": ["top", "bottom", "none"]
|
||||
},
|
||||
"control-center-margin-top": {
|
||||
"type": "integer",
|
||||
"description": "The margin (in pixels) at the top of the notification center. 0 to disable",
|
||||
"default": 0
|
||||
},
|
||||
"control-center-margin-bottom": {
|
||||
"type": "integer",
|
||||
"description": "The margin (in pixels) at the bottom of the notification center. 0 to disable",
|
||||
"default": 0
|
||||
},
|
||||
"control-center-margin-right": {
|
||||
"type": "integer",
|
||||
"description": "The margin (in pixels) at the right of the notification center. 0 to disable",
|
||||
"default": 0
|
||||
},
|
||||
"control-center-margin-left": {
|
||||
"type": "integer",
|
||||
"description": "The margin (in pixels) at the left of the notification center. 0 to disable",
|
||||
"default": 0
|
||||
},
|
||||
"notification-icon-size": {
|
||||
"type": "integer",
|
||||
"description": "The notification icon size (in pixels)",
|
||||
"default": 64,
|
||||
"minimum": 16
|
||||
},
|
||||
"notification-body-image-height": {
|
||||
"type": "integer",
|
||||
"description": "The notification body image height (in pixels)",
|
||||
"default": 100,
|
||||
"minimum": 100
|
||||
},
|
||||
"notification-body-image-width": {
|
||||
"type": "integer",
|
||||
"description": "The notification body image width (in pixels)",
|
||||
"default": 200,
|
||||
"minimum": 200
|
||||
},
|
||||
"timeout": {
|
||||
"type": "integer",
|
||||
"description": "The notification timeout for notifications with normal priority",
|
||||
"default": 10
|
||||
},
|
||||
"timeout-low": {
|
||||
"type": "integer",
|
||||
"description": "The notification timeout for notifications with low priority",
|
||||
"default": 5
|
||||
},
|
||||
"timeout-critical": {
|
||||
"type": "integer",
|
||||
"description": "The notification timeout for notifications with critical priority. 0 to disable",
|
||||
"default": 0
|
||||
},
|
||||
"notification-window-width": {
|
||||
"type": "integer",
|
||||
"description": "Width of the notification in pixels",
|
||||
"default": 500
|
||||
},
|
||||
"fit-to-screen": {
|
||||
"type": "boolean",
|
||||
"description": "If the control center should expand to both edges of the screen",
|
||||
"default": true
|
||||
},
|
||||
"control-center-height": {
|
||||
"type": "integer",
|
||||
"description": "Height of the control center in pixels. Ignored when 'fit-to-screen' is set to 'true'",
|
||||
"default": 600,
|
||||
"minimum": 300
|
||||
},
|
||||
"control-center-width": {
|
||||
"type": "integer",
|
||||
"description": "Width of the control center in pixels",
|
||||
"default": 500,
|
||||
"minimum": 300
|
||||
},
|
||||
"keyboard-shortcuts": {
|
||||
"type": "boolean",
|
||||
"description": "If control center should use keyboard shortcuts",
|
||||
"default": true
|
||||
},
|
||||
"image-visibility": {
|
||||
"type": "string",
|
||||
"description": "An explanation about the purpose of this instance.",
|
||||
"default": "when-available",
|
||||
"enum": ["always", "when-available", "never"]
|
||||
},
|
||||
"transition-time": {
|
||||
"type": "integer",
|
||||
"description": "The notification animation duration. 0 to disable",
|
||||
"default": 200
|
||||
},
|
||||
"hide-on-clear": {
|
||||
"type": "boolean",
|
||||
"description": "Hides the control center after pressing \"Clear All\"",
|
||||
"default": false
|
||||
},
|
||||
"hide-on-action": {
|
||||
"type": "boolean",
|
||||
"description": "Hides the control center when clicking on notification action",
|
||||
"default": true
|
||||
},
|
||||
"script-fail-notify": {
|
||||
"type": "boolean",
|
||||
"description": "Sends a notification if a script fails to run",
|
||||
"default": true
|
||||
},
|
||||
"scripts": {
|
||||
"type": "object",
|
||||
"description": "Which scripts to check and potentially run for every notification. If the notification doesn't include one of the properties, that property will be ignored. All properties (except for exec) use regex. If all properties match the given notification, the script will be run. Only the first matching script will be run.",
|
||||
"minProperties": 1,
|
||||
"additionalProperties": false,
|
||||
"patternProperties": {
|
||||
"^.{1,}$": {
|
||||
"type": "object",
|
||||
"description": "Your script object.",
|
||||
"required": ["exec"],
|
||||
"minProperties": 2,
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"exec": {
|
||||
"type": "string",
|
||||
"description": "The script to run. Can also run regular shell commands."
|
||||
},
|
||||
"app-name": {
|
||||
"type": "string",
|
||||
"description": "The app-name. Uses Regex."
|
||||
},
|
||||
"desktop-entry": {
|
||||
"type": "string",
|
||||
"description": "The desktop-entry. Uses Regex."
|
||||
},
|
||||
"summary": {
|
||||
"type": "string",
|
||||
"description": "The summary of the notification. Uses Regex."
|
||||
},
|
||||
"body": {
|
||||
"type": "string",
|
||||
"description": "The body of the notification. Uses Regex."
|
||||
},
|
||||
"urgency": {
|
||||
"type": "string",
|
||||
"description": "The urgency of the notification.",
|
||||
"default": "Normal",
|
||||
"enum": ["Low", "Normal", "Critical"]
|
||||
},
|
||||
"category": {
|
||||
"type": "string",
|
||||
"description": "Which category the notification belongs to. Uses Regex."
|
||||
},
|
||||
"run-on": {
|
||||
"type": "string",
|
||||
"description": "Whether to run the script on an action being activated, or when the notification is received.",
|
||||
"enum": ["action", "receive"],
|
||||
"default": "receive"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"notification-visibility": {
|
||||
"type": "object",
|
||||
"description": "Set the visibility of each incoming notification. If the notification doesn't include one of the properties, that property will be ignored. All properties (except for state) use regex. If all properties match the given notification, the notification will be follow the provided state. Only the first matching object will be used.",
|
||||
"minProperties": 1,
|
||||
"additionalProperties": false,
|
||||
"patternProperties": {
|
||||
"^.{1,}$": {
|
||||
"type": "object",
|
||||
"description": "Your script object.",
|
||||
"required": ["state"],
|
||||
"minProperties": 2,
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"state": {
|
||||
"type": "string",
|
||||
"description": "The notification visibility state.",
|
||||
"default": "enabled",
|
||||
"enum": ["ignored", "muted", "enabled", "transient"]
|
||||
},
|
||||
"app-name": {
|
||||
"type": "string",
|
||||
"description": "The app-name. Uses Regex."
|
||||
},
|
||||
"desktop-entry": {
|
||||
"type": "string",
|
||||
"description": "The desktop-entry. Uses Regex."
|
||||
},
|
||||
"summary": {
|
||||
"type": "string",
|
||||
"description": "The summary of the notification. Uses Regex."
|
||||
},
|
||||
"body": {
|
||||
"type": "string",
|
||||
"description": "The body of the notification. Uses Regex."
|
||||
},
|
||||
"urgency": {
|
||||
"type": "string",
|
||||
"description": "The urgency of the notification.",
|
||||
"default": "Normal",
|
||||
"enum": ["Low", "Normal", "Critical"]
|
||||
},
|
||||
"override-urgency": {
|
||||
"type": "string",
|
||||
"description": "The new urgency of the notification (optional)",
|
||||
"default": "unset",
|
||||
"enum": ["unset", "low", "normal", "critical"]
|
||||
},
|
||||
"category": {
|
||||
"type": "string",
|
||||
"description": "Which category the notification belongs to. Uses Regex."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"widgets": {
|
||||
"type": "array",
|
||||
"description": "Which order and which widgets to display. If the \"notifications\" widget isn't specified, it will be placed at the bottom.",
|
||||
"default": ["inhibitors", "title", "dnd", "notifications"],
|
||||
"items": {
|
||||
"type": "string",
|
||||
// Sadly can't use regex and enums at the same time. Fix in the future?
|
||||
"pattern": "^[a-zA-Z0-9_-]{1,}(#[a-zA-Z0-9_-]{1,}){0,1}?$"
|
||||
}
|
||||
},
|
||||
"widget-config": {
|
||||
"type": "object",
|
||||
"description": "Configure specific widget properties.",
|
||||
"additionalProperties": false,
|
||||
"patternProperties": {
|
||||
// New widgets go here
|
||||
"^title(#[a-zA-Z0-9_-]{1,}){0,1}?$": {
|
||||
// References the widget structure from "widgets" below
|
||||
"$ref": "#/widgets/title"
|
||||
},
|
||||
"^dnd(#[a-zA-Z0-9_-]{1,}){0,1}?$": {
|
||||
"$ref": "#/widgets/dnd"
|
||||
},
|
||||
"^label(#[a-zA-Z0-9_-]{1,}){0,1}?$": {
|
||||
"$ref": "#/widgets/label"
|
||||
},
|
||||
"^mpris(#[a-zA-Z0-9_-]{1,}){0,1}?$": {
|
||||
"$ref": "#/widgets/mpris"
|
||||
},
|
||||
"^buttons-grid(#[a-zA-Z0-9_-]{1,}){0,1}?$": {
|
||||
"$ref": "#/widgets/buttons-grid"
|
||||
},
|
||||
"^menubar(#[a-zA-Z0-9_-]{1,}){0,1}?$": {
|
||||
"$ref": "#/widgets/menubar"
|
||||
},
|
||||
"^volume(#[a-zA-Z0-9_-]{1,}){0,1}?$": {
|
||||
"$ref": "#/widgets/volume"
|
||||
},
|
||||
"^backlight(#[a-zA-Z0-9_-]{1,}){0,1}?$": {
|
||||
"$ref": "#/widgets/backlight"
|
||||
},
|
||||
"^inhibitors(#[a-zA-Z0-9_-]{1,}){0,1}?$": {
|
||||
// References the widget structure from "widgets" below
|
||||
"$ref": "#/widgets/inhibitors"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"widgets": {
|
||||
// New widgets go here
|
||||
"title": {
|
||||
"type": "object",
|
||||
"description": "Control Center Title Widget",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"text": {
|
||||
"type": "string",
|
||||
"description": "The title of the widget",
|
||||
"default": "Notifications"
|
||||
},
|
||||
"clear-all-button": {
|
||||
"type": "boolean",
|
||||
"description": "Wether to display a \"Clear All\" button",
|
||||
"default": true
|
||||
},
|
||||
"button-text": {
|
||||
"type": "string",
|
||||
"description": "\"Clear All\" button text",
|
||||
"default": "Clear All"
|
||||
}
|
||||
}
|
||||
},
|
||||
"dnd": {
|
||||
"type": "object",
|
||||
"description": "Control Center Do Not Disturb Widget",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"text": {
|
||||
"type": "string",
|
||||
"description": "The title of the widget",
|
||||
"default": "Do Not Disturb"
|
||||
}
|
||||
}
|
||||
},
|
||||
"label": {
|
||||
"type": "object",
|
||||
"description": "A generic widget that allows the user to add custom text",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"text": {
|
||||
"type": "string",
|
||||
"description": "The text content of the widget",
|
||||
"default": "Label Text"
|
||||
},
|
||||
"max-lines": {
|
||||
"type": "integer",
|
||||
"description": "The maximum lines",
|
||||
"default": 5
|
||||
}
|
||||
}
|
||||
},
|
||||
"mpris": {
|
||||
"type": "object",
|
||||
"description": "A widget that displays multiple music players",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"image-size": {
|
||||
"type": "integer",
|
||||
"description": "The size of the album art",
|
||||
"default": 96
|
||||
},
|
||||
"image-radius": {
|
||||
"type": "integer",
|
||||
"description": "The border radius of the album art",
|
||||
"default": 12
|
||||
}
|
||||
}
|
||||
},
|
||||
"buttons-grid": {
|
||||
"type": "object",
|
||||
"description": "A widget to add a grid of buttons that execute shell commands",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"actions": {
|
||||
"type": "array",
|
||||
"description": "A list of actions containing a label and a command",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"label": {
|
||||
"type": "string",
|
||||
"description": "Text to be displayed in button",
|
||||
"default": "label"
|
||||
},
|
||||
"command": {
|
||||
"type": "string",
|
||||
"description": "Command to be executed on click",
|
||||
"default": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"menubar": {
|
||||
"type": "object",
|
||||
"description": "A bar that contains action-buttons and buttons to open a dropdown with action-buttons",
|
||||
"additionalProperties": false,
|
||||
"patternProperties": {
|
||||
"^menu(#[a-zA-Z0-9_-]{1,}){0,1}?$": {
|
||||
"type": "object",
|
||||
"description": "A button that opens a dropdown with action-buttons",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"label": {
|
||||
"type": "string",
|
||||
"description": "Text to be displayed in button",
|
||||
"default": "Menu"
|
||||
},
|
||||
"position": {
|
||||
"type": "string",
|
||||
"description": "Horizontal position of the button in the bar",
|
||||
"default": "right",
|
||||
"enum": ["right", "left"]
|
||||
},
|
||||
"animation_type": {
|
||||
"type": "string",
|
||||
"default": "slide_down",
|
||||
"description": "Animation type for menu",
|
||||
"enum": ["slide_down", "slide_up", "none"]
|
||||
},
|
||||
"animation_duration":{
|
||||
"type": "integer",
|
||||
"default": 250,
|
||||
"description": "Duration of animation in milliseconds"
|
||||
},
|
||||
"actions": {
|
||||
"$ref" : "#/widgets/buttons-grid/properties/actions"
|
||||
}
|
||||
}
|
||||
},
|
||||
"^buttons(#[a-zA-Z0-9_-]{1,}){0,1}?$": {
|
||||
"type": "object",
|
||||
"description": "A list of action-buttons to be displayed in the topbar",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"position": {
|
||||
"type": "string",
|
||||
"description": "Horizontal position of the button in the bar",
|
||||
"default": "right",
|
||||
"enum": ["right", "left"]
|
||||
},
|
||||
"actions": {
|
||||
"$ref" : "#/widgets/buttons-grid/properties/actions"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"volume": {
|
||||
"type": "object",
|
||||
"description": "Slider to control pulse volume",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"label": {
|
||||
"type": "string",
|
||||
"description": "Text displayed in front of the volume slider",
|
||||
"default": "Volume"
|
||||
}
|
||||
}
|
||||
},
|
||||
"backlight": {
|
||||
"type": "object",
|
||||
"description": "Slider to control monitor brightness",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"label": {
|
||||
"type": "string",
|
||||
"description": "Text displayed in front of the backlight slider",
|
||||
"default": "Brightness"
|
||||
},
|
||||
"device": {
|
||||
"type": "string",
|
||||
"description": "Name of monitor (find possible devices using `ls /sys/class/backlight` or `ls /sys/class/leds`)",
|
||||
"default": "intel_backlight"
|
||||
},
|
||||
"subsystem": {
|
||||
"type": "string",
|
||||
"description": "Kernel subsystem for brightness control",
|
||||
"default": "backlight",
|
||||
"enum": ["backlight", "leds"]
|
||||
},
|
||||
"min": {
|
||||
"type": "integer",
|
||||
"default": 0,
|
||||
"description": "Lowest possible value for brightness"
|
||||
}
|
||||
}
|
||||
},
|
||||
"inhibitors": {
|
||||
"type": "object",
|
||||
"description": "Control Center Inhibitors Widget",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"text": {
|
||||
"type": "string",
|
||||
"description": "The title of the widget",
|
||||
"default": "Inhibitors"
|
||||
},
|
||||
"clear-all-button": {
|
||||
"type": "boolean",
|
||||
"description": "Wether to display a \"Clear All\" button",
|
||||
"default": true
|
||||
},
|
||||
"button-text": {
|
||||
"type": "string",
|
||||
"description": "\"Clear All\" button text",
|
||||
"default": "Clear All"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,348 +0,0 @@
|
|||
/*
|
||||
* vim: ft=less
|
||||
*/
|
||||
|
||||
@define-color cc-bg #PANELBG;
|
||||
|
||||
@define-color noti-border-color #COLBORDER;
|
||||
@define-color noti-bg #NOTIBGNORM;
|
||||
@define-color noti-bg-hover #NOTIBGHOVER;
|
||||
@define-color noti-bg-focus #NOTIBGFOCUS;
|
||||
@define-color noti-close-bg #NOTIBGCLOSE;
|
||||
@define-color noti-close-bg-hover #NOTIBGHVERCLOSE;
|
||||
|
||||
@define-color bg-selected #BGSELECTED;
|
||||
|
||||
* {
|
||||
font-family: "#FONT", sans-serif;
|
||||
}
|
||||
|
||||
.notification-row {
|
||||
transition: all 200ms ease;
|
||||
outline: none;
|
||||
margin-bottom: 4px;
|
||||
border-radius: #ROUNDINGpx;
|
||||
}
|
||||
|
||||
.control-center .notification-row:focus,
|
||||
.control-center .notification-row:hover {
|
||||
opacity: 1;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.notification-row:focus .notification,
|
||||
.notification-row:hover .notification {
|
||||
// box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.5);
|
||||
// box-shadow: 0px 0px 0px 3px @bg-selected;
|
||||
}
|
||||
|
||||
.control-center .notification {
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.control-center .notification-row {
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.notification {
|
||||
transition: all 200ms ease;
|
||||
border-radius: #ROUNDINGpx;
|
||||
margin: 6px 6px;
|
||||
// box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.5);
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/* Uncomment to enable specific urgency colors
|
||||
.low {
|
||||
background: yellow;
|
||||
padding: 6px;
|
||||
border-radius: 24px;
|
||||
}
|
||||
|
||||
.normal {
|
||||
background: green;
|
||||
padding: 6px;
|
||||
border-radius: 24px;
|
||||
}
|
||||
|
||||
.critical {
|
||||
background: red;
|
||||
padding: 6px;
|
||||
border-radius: 24px;
|
||||
}
|
||||
*/
|
||||
|
||||
.notification-content {
|
||||
background: transparent;
|
||||
padding: 6px;
|
||||
border-radius: #ROUNDINGpx;
|
||||
}
|
||||
|
||||
.close-button {
|
||||
background: @noti-close-bg;
|
||||
color: white;
|
||||
text-shadow: none;
|
||||
padding: 0;
|
||||
border-radius: 100%;
|
||||
margin-top: 10px;
|
||||
margin-right: 10px;
|
||||
box-shadow: none;
|
||||
border: none;
|
||||
min-width: 24px;
|
||||
min-height: 24px;
|
||||
}
|
||||
|
||||
.close-button:hover {
|
||||
box-shadow: none;
|
||||
background: @noti-close-bg-hover;
|
||||
transition: all 0.15s ease-in-out;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.notification-default-action,
|
||||
.notification-action {
|
||||
padding: 4px;
|
||||
margin: 0;
|
||||
box-shadow: none;
|
||||
background: @noti-bg;
|
||||
border: #BORDERpx solid @noti-border-color;
|
||||
color: white;
|
||||
transition: all 200ms ease;
|
||||
}
|
||||
|
||||
.notification-default-action:hover,
|
||||
.notification-action:hover {
|
||||
-gtk-icon-effect: none;
|
||||
background: @noti-bg-hover;
|
||||
}
|
||||
|
||||
.notification-default-action {
|
||||
border-radius: #ROUNDINGpx;
|
||||
}
|
||||
|
||||
/* 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: #ROUNDINGpx;
|
||||
border-top: none;
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
/* add bottom border radius to eliminate clipping */
|
||||
.notification-action:first-child {
|
||||
border-bottom-left-radius: #ROUNDINGpx;
|
||||
}
|
||||
|
||||
.notification-action:last-child {
|
||||
border-bottom-right-radius: #ROUNDINGpx;
|
||||
border-right: #BORDERpx solid @noti-border-color;
|
||||
}
|
||||
|
||||
.image {
|
||||
}
|
||||
|
||||
.body-image {
|
||||
margin-top: 6px;
|
||||
background-color: white;
|
||||
border-radius: #ROUNDINGpx;
|
||||
}
|
||||
|
||||
.summary {
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
background: transparent;
|
||||
color: white;
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
.time {
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
background: transparent;
|
||||
color: white;
|
||||
text-shadow: none;
|
||||
margin-right: 18px;
|
||||
}
|
||||
|
||||
.body {
|
||||
font-size: 15px;
|
||||
font-weight: normal;
|
||||
background: transparent;
|
||||
color: white;
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
.control-center {
|
||||
background: @cc-bg;
|
||||
border-radius: #ROUNDINGpx;
|
||||
background-clip: border-box;
|
||||
padding: 4px;
|
||||
// box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.3), 0 1px 3px 1px rgba(0, 0, 0, 0.7),
|
||||
// 0 2px 6px 2px rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
|
||||
.control-center-list {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.control-center-list-placeholder {
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.floating-notifications {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
/* Window behind control center and on all other monitors */
|
||||
.blank-window {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
/*** Widgets ***/
|
||||
|
||||
/* Title widget */
|
||||
.widget-title {
|
||||
margin: 8px;
|
||||
font-size: 1.3rem;
|
||||
}
|
||||
.widget-title > button {
|
||||
font-size: initial;
|
||||
color: white;
|
||||
text-shadow: none;
|
||||
background: @noti-bg;
|
||||
border: #BORDERpx solid @noti-border-color;
|
||||
box-shadow: none;
|
||||
border-radius: #ROUNDINGpx;
|
||||
}
|
||||
.widget-title > button:hover {
|
||||
background: @noti-bg-hover;
|
||||
}
|
||||
|
||||
/* DND widget */
|
||||
.widget-dnd {
|
||||
margin: 8px;
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
.widget-dnd > switch {
|
||||
font-size: initial;
|
||||
border-radius: #ROUNDINGpx;
|
||||
background: @noti-bg;
|
||||
border: #BORDERpx solid @noti-border-color;
|
||||
box-shadow: none;
|
||||
}
|
||||
.widget-dnd > switch:checked {
|
||||
background: @bg-selected;
|
||||
}
|
||||
.widget-dnd > switch slider {
|
||||
background: @noti-bg-hover;
|
||||
border-radius: #ROUNDINGpx;
|
||||
}
|
||||
|
||||
/* Label widget */
|
||||
.widget-label {
|
||||
margin: 8px;
|
||||
}
|
||||
.widget-label > label {
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
|
||||
/* Mpris widget */
|
||||
.widget-mpris {
|
||||
/* The parent to all players */
|
||||
}
|
||||
.widget-mpris-player {
|
||||
padding: 8px;
|
||||
margin: 8px;
|
||||
background-color: @noti-bg;
|
||||
border-radius: #ROUNDINGpx;
|
||||
}
|
||||
.widget-mpris-title {
|
||||
font-weight: bold;
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
.widget-mpris-subtitle {
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
|
||||
/* Buttons widget */
|
||||
.widget-buttons-grid {
|
||||
padding: 8px;
|
||||
margin: 8px;
|
||||
border-radius: #ROUNDINGpx;
|
||||
background-color: @noti-bg;
|
||||
}
|
||||
|
||||
.widget-buttons-grid>flowbox>flowboxchild>button{
|
||||
background: @noti-bg;
|
||||
border-radius: #ROUNDINGpx;
|
||||
}
|
||||
|
||||
.widget-buttons-grid>flowbox>flowboxchild>button:hover {
|
||||
background: @noti-bg-hover;
|
||||
}
|
||||
|
||||
/* Menubar widget */
|
||||
.widget-menubar>box>.menu-button-bar>button {
|
||||
border: none;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
/* .AnyName { Name defined in config after #
|
||||
background-color: @noti-bg;
|
||||
padding: 8px;
|
||||
margin: 8px;
|
||||
border-radius: 24px;
|
||||
}
|
||||
|
||||
.AnyName>button {
|
||||
background: transparent;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.AnyName>button:hover {
|
||||
background-color: @noti-bg-hover;
|
||||
} */
|
||||
|
||||
.topbar-buttons>button { /* Name defined in config after # */
|
||||
border: none;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
/* Volume widget */
|
||||
|
||||
.widget-volume {
|
||||
background-color: @noti-bg;
|
||||
padding: 8px;
|
||||
margin: 8px;
|
||||
border-radius: #ROUNDINGpx;
|
||||
}
|
||||
|
||||
/* Backlight widget */
|
||||
.widget-backlight {
|
||||
background-color: @noti-bg;
|
||||
padding: 8px;
|
||||
margin: 8px;
|
||||
border-radius: #ROUNDINGpx;
|
||||
}
|
||||
|
||||
/* Title widget */
|
||||
.widget-inhibitors {
|
||||
margin: 8px;
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
.widget-inhibitors > button {
|
||||
font-size: initial;
|
||||
color: white;
|
||||
text-shadow: none;
|
||||
background: @noti-bg;
|
||||
border: #BORDERpx solid @noti-border-color;
|
||||
box-shadow: none;
|
||||
border-radius: #ROUNDINGpx;
|
||||
}
|
||||
.widget-inhibitors > button:hover {
|
||||
background: @noti-bg-hover;
|
||||
}
|
|
@ -1,83 +0,0 @@
|
|||
# nix fix
|
||||
import sys
|
||||
import os.path
|
||||
if os.path.exists(f"{$HOME}/.nix-profile") and not __xonsh__.env.get("NIX_PATH"):
|
||||
$NIX_REMOTE="daemon"
|
||||
$NIX_USER_PROFILE_DIR="/nix/var/nix/profiles/per-user/" + $USER
|
||||
$NIX_PROFILES="/nix/var/nix/profiles/default " + $HOME + "/.nix-profile"
|
||||
$NIX_SSL_CERT_FILE="/etc/ssl/certs/ca-certificates.crt"
|
||||
$NIX_PATH="nixpkgs=/nix/var/nix/profiles/per-user/root/channels/nixpkgs:/nix/var/nix/profiles/per-user/root/channels"
|
||||
$PATH += [f"{$HOME}/.nix-profile/bin", "/nix/var/nix/profiles/default/bin"]
|
||||
|
||||
|
||||
new_paths = [#NEWPATHS]
|
||||
# new_paths = new_paths + list(map(lambda s: str(s.resolve()), p"~/.local/lib/".glob("python*/site-packages")))
|
||||
for p in new_paths:
|
||||
if p not in sys.path:
|
||||
sys.path.append(p)
|
||||
$PYTHONPATH.append(p)
|
||||
|
||||
# prompt
|
||||
execx($(/run/current-system/sw/bin/starship init xonsh --print-full-init))
|
||||
|
||||
# zjump
|
||||
execx($(zoxide init xonsh), 'exec', __xonsh__.ctx, filename='zoxide')
|
||||
|
||||
# envs
|
||||
$AUTO_CONTINUE = True
|
||||
$AUTO_CD = True
|
||||
$DOTGLOB = True
|
||||
$GLOB_SORTED = True
|
||||
$INDENT = ' '
|
||||
$AUTO_SUGGEST = True
|
||||
$AUTO_SUGGEST_IN_COMPLETIONS = True
|
||||
$VI_MODE = True
|
||||
$XONSH_AUTOPAIR = True
|
||||
$XONSH_COPY_ON_DELETE = True
|
||||
$ALIAS_COMPLETIONS_OPTIONS_BY_DEFAULT = True
|
||||
$CASE_SENSITIVE_COMPLETIONS = False
|
||||
$COMPLETIONS_BRACKETS = True
|
||||
$COMPLETION_IN_THREAD = True
|
||||
|
||||
# aliases
|
||||
def la_alias(dir=""):
|
||||
exa -lha --icons --group-directories-first --color=always @(dir) | do_culr
|
||||
|
||||
def l_alias(dir=""):
|
||||
exa -lh --icons --group-directories-first --color=always @(dir) | do_culr
|
||||
|
||||
def p_alias(opts=""):
|
||||
ps ww @(opts) | do_culr
|
||||
|
||||
def mnt_alias():
|
||||
mount | column -t | do_culr
|
||||
def fresh_alias():
|
||||
clear
|
||||
echo
|
||||
~/.nix/header.sh
|
||||
|
||||
aliases["fresh"] = fresh_alias
|
||||
aliases["icat"] = [ "kitty", "+kitten", "icat" ]
|
||||
aliases["chmox"] = [ "chmod", "+x" ]
|
||||
aliases["gs"] = [ "git", "status" ]
|
||||
aliases["gcl"] = [ "git", "clone" ]
|
||||
aliases["ga"] = [ "git", "add" ]
|
||||
aliases["gcb"] = [ "git", "checkout", "-b" ]
|
||||
aliases["gco"] = [ "git", "checkout" ]
|
||||
aliases["gl"] = [ "git", "pull" ]
|
||||
aliases["gp"] = [ "git", "push" ]
|
||||
aliases["gd"] = [ "git", "diff" ]
|
||||
aliases["gcam"] = [ "git", "commit", "-am" ]
|
||||
aliases["gcm"] = [ "git", "commit", "-m" ]
|
||||
aliases["gr"] = [ "git", "restore" ]
|
||||
aliases["gm"] = [ "git", "merge" ]
|
||||
aliases["p"] = p_alias
|
||||
aliases["l"] = l_alias
|
||||
aliases["la"] = la_alias
|
||||
aliases["mnt"] = mnt_alias
|
||||
aliases["zz"] = [ "z", "$(xplr)" ]
|
||||
aliases["do_culr"] = [ "culr", "-t", "80", "-o", "roygbiv-split" ]
|
||||
# alias kaboom='printf "type any input if you wish to update\n\npress enter to continue\n"; read upgrade; if [ -n "$upgrade" ]; then echo upgrading..; sudo nix-channel --update; else echo no upgrade!; fi; sudo nixos-rebuild switch -j9 && rm ~/.gtkrc-2.0; home-manager switch && sudo nix-collect-garbage && nix-store --optimise'
|
||||
|
||||
# greet
|
||||
fresh
|
|
@ -1,63 +0,0 @@
|
|||
# nix fix
|
||||
import os.path
|
||||
if os.path.exists(f"{$HOME}/.nix-profile") and not __xonsh__.env.get("NIX_PATH"):
|
||||
$NIX_REMOTE="daemon"
|
||||
$NIX_USER_PROFILE_DIR="/nix/var/nix/profiles/per-user/" + $USER
|
||||
$NIX_PROFILES="/nix/var/nix/profiles/default " + $HOME + "/.nix-profile"
|
||||
$NIX_SSL_CERT_FILE="/etc/ssl/certs/ca-certificates.crt"
|
||||
$NIX_PATH="nixpkgs=/nix/var/nix/profiles/per-user/root/channels/nixpkgs:/nix/var/nix/profiles/per-user/root/channels"
|
||||
$PATH += [f"{$HOME}/.nix-profile/bin", "/nix/var/nix/profiles/default/bin"]
|
||||
|
||||
# prompt
|
||||
execx($(/run/current-system/sw/bin/starship init xonsh --print-full-init))
|
||||
|
||||
# envs
|
||||
$AUTO_CONTINUE = True
|
||||
$AUTO_CD = True
|
||||
$DOTGLOB = True
|
||||
$GLOB_SORTED = True
|
||||
$INDENT = ' '
|
||||
$AUTO_SUGGEST = True
|
||||
$AUTO_SUGGEST_IN_COMPLETIONS = True
|
||||
$VI_MODE = True
|
||||
$XONSH_AUTOPAIR = True
|
||||
$XONSH_COPY_ON_DELETE = True
|
||||
$ALIAS_COMPLETIONS_OPTIONS_BY_DEFAULT = True
|
||||
$CASE_SENSITIVE_COMPLETIONS = False
|
||||
$COMPLETIONS_BRACKETS = True
|
||||
$COMPLETION_IN_THREAD = True
|
||||
|
||||
# aliases
|
||||
def la_culr(dir=""):
|
||||
exa -lha --icons --group-directories-first --color=always @(dir) | culr -t 80 -o roygbiv-split
|
||||
|
||||
def ls_culr(dir=""):
|
||||
exa -lh --icons --group-directories-first --color=always @(dir) | culr -t 80 -o roygbiv-split
|
||||
|
||||
def ps_culr(opts=""):
|
||||
ps ww @(opts) | culr -t 80 -o roygbiv-split
|
||||
|
||||
aliases["fresh"] = [ "clear;", "echo;", "~/.nix/header.sh" ]
|
||||
aliases["icat"] = [ "kitty", "+kitten", "icat" ]
|
||||
aliases["chmox"] = [ "chmod", "+x" ]
|
||||
aliases["gs"] = [ "git", "status" ]
|
||||
aliases["gcl"] = [ "git", "clone" ]
|
||||
aliases["ga"] = [ "git", "add" ]
|
||||
aliases["gcb"] = [ "git", "checkout", "-b" ]
|
||||
aliases["gco"] = [ "git", "checkout" ]
|
||||
aliases["gl"] = [ "git", "pull" ]
|
||||
aliases["gp"] = [ "git", "push" ]
|
||||
aliases["gd"] = [ "git", "diff" ]
|
||||
aliases["gcam"] = [ "git", "commit", "-am" ]
|
||||
aliases["gcm"] = [ "git", "commit", "-m" ]
|
||||
aliases["gr"] = [ "git", "restore" ]
|
||||
aliases["gm"] = [ "git", "merge" ]
|
||||
aliases["l"] = [ "ls_culr" ]
|
||||
aliases["la"] = [ "la_culr" ]
|
||||
aliases["p"] = [ "ps_culr" ]
|
||||
aliases["mnt"] = [ "mount", "|", "column", "-t", "|", "culr", "-t", "80", "-o", "roygbiv-split" ]
|
||||
aliases["zz"] = [ "z", "$(xplr)" ]
|
||||
# alias kaboom='printf "type any input if you wish to update\n\npress enter to continue\n"; read upgrade; if [ -n "$upgrade" ]; then echo upgrading..; sudo nix-channel --update; else echo no upgrade!; fi; sudo nixos-rebuild switch -j9 && rm ~/.gtkrc-2.0; home-manager switch && sudo nix-collect-garbage && nix-store --optimise'
|
||||
|
||||
# greet
|
||||
fresh
|
Loading…
Add table
Add a link
Reference in a new issue