Initial commit
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"window.menuBarVisibility": "toggle",
|
||||
"security.workspace.trust.untrustedFiles": "open",
|
||||
"diffEditor.ignoreTrimWhitespace": false,
|
||||
"extensions.ignoreRecommendations": true,
|
||||
"chat.commandCenter.enabled": false,
|
||||
"[javascript]": {
|
||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||
},
|
||||
"workbench.editor.enablePreview": false,
|
||||
"diffEditor.maxComputationTime": 0,
|
||||
"diffEditor.hideUnchangedRegions.enabled": true,
|
||||
"claudeCode.preferredLocation": "panel",
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
--enable-features=UseOzonePlatform
|
||||
--ozone-platform=wayland
|
||||
--enable-wayland-ime
|
||||
@@ -0,0 +1,3 @@
|
||||
--enable-features=UseOzonePlatform
|
||||
--ozone-platform=wayland
|
||||
--enable-wayland-ime
|
||||
@@ -0,0 +1,7 @@
|
||||
file:///mnt/nase.meow/Data/Projects/Static/das_buero/lightcontrol lightcontrol
|
||||
file:///mnt/nase.meow/Data/Projects/Static/huttinger_web huttinger_web
|
||||
file:///mnt/nase.meow/Data/Projects/Static/tobiashuttinger tobiashuttinger
|
||||
file:///mnt/nase.meow/Data
|
||||
file:///mnt/nase.meow/Download
|
||||
file:///mnt/nase.meow/Media
|
||||
file:///mnt/nase.meow/Data/Projects
|
||||
@@ -0,0 +1,461 @@
|
||||
# https://wiki.hypr.land/Configuring/
|
||||
|
||||
# You can split this configuration into multiple files
|
||||
# Create your files separately and then link them to this file like this:
|
||||
# source = ~/.config/hypr/myColors.conf
|
||||
|
||||
################
|
||||
### MONITORS ###
|
||||
################
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Monitors/
|
||||
monitorv2 {
|
||||
output = DP-1
|
||||
mode = 3840x2160@60
|
||||
position = auto-left
|
||||
scale = 1.5
|
||||
bitdepth = 10
|
||||
icc = /home/tobias/scripts/set_gamma/LG_1_2020_D6500_sRGB.icm
|
||||
}
|
||||
|
||||
monitorv2 {
|
||||
output = DP-2
|
||||
mode = 3840x2160@60
|
||||
position = auto-right
|
||||
scale = 1.5
|
||||
bitdepth = 10
|
||||
icc = /home/tobias/scripts/set_gamma/LG_1_2020_D6500_sRGB.icm
|
||||
}
|
||||
|
||||
# Assign Workspace 1 to correct monitor and set cursor to that workspace on start
|
||||
#workspace=name:1, monitor:DP-2
|
||||
#exec-once = hyprctl dispatch workspace 1
|
||||
|
||||
debug {
|
||||
disable_logs = true
|
||||
|
||||
}
|
||||
|
||||
|
||||
# unscale XWayland
|
||||
xwayland {
|
||||
force_zero_scaling = true
|
||||
}
|
||||
|
||||
###################
|
||||
### MY PROGRAMS ###
|
||||
###################
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Keywords/
|
||||
|
||||
# Set programs that you use
|
||||
$terminal = kitty
|
||||
$fileManager = nautilus
|
||||
$menu = wofi --show drun
|
||||
|
||||
|
||||
#################
|
||||
### AUTOSTART ###
|
||||
#################
|
||||
|
||||
# Autostart necessary processes (like notifications daemons, status bars, etc.)
|
||||
# Or execute your favorite apps at launch like this:
|
||||
|
||||
exec-once = hyprpaper & waybar & swaync & hyprsunset
|
||||
exec-once = blueman-applet & nm-applet & pasystray
|
||||
exec-once = localsend --hidden
|
||||
exec-once = [workspace 1 silent] firefox
|
||||
exec-once = [workspace 2 silent] evolution
|
||||
|
||||
# Screen sharing conf
|
||||
exec-once=dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
|
||||
|
||||
#############################
|
||||
### ENVIRONMENT VARIABLES ###
|
||||
#############################
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Environment-variables/
|
||||
|
||||
# Cursor
|
||||
env = XCURSOR_SIZE,24
|
||||
env = HYPRCURSOR_SIZE,24
|
||||
env = XCURSOR_THEME,default
|
||||
|
||||
# Theme options
|
||||
env = ADWAITA_THEME,dark
|
||||
env = COLOR_SCHEME,prefer-dark
|
||||
|
||||
env = GDK_BACKEND,wayland,x11,*
|
||||
|
||||
env = XDG_CURRENT_DESKTOP,Hyprland
|
||||
env = XDG_SESSION_TYPE,wayland
|
||||
env = XDG_SESSION_DESKTOP,Hyprland
|
||||
|
||||
env = QT_AUTO_SCREEN_SCALE_FACTOR,1
|
||||
env = QT_QPA_PLATFORM,wayland;xcb
|
||||
env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1
|
||||
|
||||
# Setting wayland for var toolkits
|
||||
env = MOZ_ENABLE_WAYLAND,1
|
||||
env = ELECTRON_OZONE_PLATFORM_HINT,wayland
|
||||
env = CLUTTER_BACKEND,wayland
|
||||
env = SDL_VIDEODRIVER,wayland
|
||||
|
||||
#env = QT_STYLE_OVERRIDE,Adwaita-Dark
|
||||
|
||||
# This makes qt apps get dark mode preference via xdg portal, however no dark icon theme is set at least in kid3
|
||||
# disabled it for now because of a regression/bug in qt6 where dark theme isn't applied because prob. of this: https://bugreports.qt.io/browse/QTBUG-130884
|
||||
# env = QT_QPA_PLATFORMTHEME,xdgdesktopportal
|
||||
# as temp. fix, dont make qt apps ask xdg portal what theme/color scheme to use:
|
||||
env = QT_QPA_PLATFORMTHEME,gtk3
|
||||
|
||||
###################
|
||||
### PERMISSIONS ###
|
||||
###################
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Permissions/
|
||||
# Please note permission changes here require a Hyprland restart and are not applied on-the-fly
|
||||
# for security reasons
|
||||
|
||||
# ecosystem {
|
||||
# enforce_permissions = 1
|
||||
# }
|
||||
|
||||
# permission = /usr/(bin|local/bin)/grim, screencopy, allow
|
||||
# permission = /usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland, screencopy, allow
|
||||
# permission = /usr/(bin|local/bin)/hyprpm, plugin, allow
|
||||
|
||||
|
||||
#####################
|
||||
### LOOK AND FEEL ###
|
||||
#####################
|
||||
|
||||
# Refer to https://wiki.hypr.land/Configuring/Variables/
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#general
|
||||
general {
|
||||
gaps_in = 5
|
||||
gaps_out = 13
|
||||
|
||||
border_size = 2
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#variable-types for info about colors
|
||||
col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
|
||||
#col.active_border = rgba(29dbffee)
|
||||
col.inactive_border = rgba(595959aa)
|
||||
|
||||
# Set to true enable resizing windows by clicking and dragging on borders and gaps
|
||||
resize_on_border = false
|
||||
|
||||
# Please see https://wiki.hypr.land/Configuring/Tearing/ before you turn this on
|
||||
allow_tearing = false
|
||||
|
||||
layout = dwindle
|
||||
}
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#decoration
|
||||
decoration {
|
||||
rounding = 10
|
||||
rounding_power = 2
|
||||
|
||||
# Change transparency of focused and unfocused windows
|
||||
active_opacity = 1.0
|
||||
inactive_opacity = 1.0
|
||||
|
||||
#shadow {
|
||||
# enabled = true
|
||||
# range = 4
|
||||
# render_power = 3
|
||||
# color = rgba(1a1a1aee)
|
||||
#}
|
||||
|
||||
shadow {
|
||||
enabled = true
|
||||
range = 100
|
||||
render_power = 3
|
||||
color = rgba(00000050)
|
||||
scale = 0.99
|
||||
offset = 0 9
|
||||
|
||||
}
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#blur
|
||||
blur {
|
||||
enabled = true
|
||||
size = 8
|
||||
passes = 2
|
||||
vibrancy = 0.1696
|
||||
}
|
||||
|
||||
layerrule = blur on, match:namespace waybar
|
||||
layerrule = ignore_alpha 0, blur on, match:namespace wofi
|
||||
layerrule = ignore_alpha .3, blur on, match:namespace swaync-control-center
|
||||
layerrule = ignore_alpha .3, blur on, match:namespace swaync-notification-window
|
||||
}
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#animations
|
||||
animations {
|
||||
|
||||
enabled = yes, please :)
|
||||
#enabled = no
|
||||
# Default animations, see https://wiki.hypr.land/Configuring/Animations/ for more
|
||||
|
||||
bezier = easeOutQuint,0.23,1,0.32,1
|
||||
bezier = easeInOutCubic,0.65,0.05,0.36,1
|
||||
bezier = linear,0,0,1,1
|
||||
bezier = almostLinear,0.5,0.5,0.75,1.0
|
||||
bezier = quick,0.15,0,0.1,1
|
||||
bezier = smoothQuick,0.08,0.93,0,1
|
||||
|
||||
animation = global, 1, 10, default
|
||||
animation = border, 1, 5.39, easeOutQuint
|
||||
animation = windows, 1, 4.79, easeOutQuint
|
||||
animation = windowsIn, 1, 4.1, easeOutQuint, popin 87%
|
||||
animation = windowsOut, 1, 1.49, linear, popin 87%
|
||||
animation = fadeIn, 1, 1.73, almostLinear
|
||||
animation = fadeOut, 1, 1.46, almostLinear
|
||||
animation = fade, 1, 3.03, quick
|
||||
animation = layers, 1, 3.81, easeOutQuint
|
||||
animation = layersIn, 1, 4, easeOutQuint, fade
|
||||
animation = layersOut, 1, 1.5, linear, fade
|
||||
animation = fadeLayersIn, 1, 1.79, almostLinear
|
||||
animation = fadeLayersOut, 1, 1.39, almostLinear
|
||||
animation = workspaces, 1, 3, smoothQuick, slide
|
||||
animation = workspacesIn, 1, 3, smoothQuick, slide
|
||||
animation = workspacesOut, 1, 3, smoothQuick, slide
|
||||
}
|
||||
|
||||
# Ref https://wiki.hypr.land/Configuring/Workspace-Rules/
|
||||
# "Smart gaps" / "No gaps when only"
|
||||
# uncomment all if you wish to use that.
|
||||
# workspace = w[tv1], gapsout:0, gapsin:0
|
||||
# workspace = f[1], gapsout:0, gapsin:0
|
||||
# windowrule = bordersize 0, floating:0, onworkspace:w[tv1]
|
||||
# windowrule = rounding 0, floating:0, onworkspace:w[tv1]
|
||||
# windowrule = bordersize 0, floating:0, onworkspace:f[1]
|
||||
# windowrule = rounding 0, floating:0, onworkspace:f[1]
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Dwindle-Layout/ for more
|
||||
dwindle {
|
||||
preserve_split = true # You probably want this
|
||||
}
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Master-Layout/ for more
|
||||
master {
|
||||
new_status = master
|
||||
}
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#misc
|
||||
misc {
|
||||
force_default_wallpaper = 0 # Set to 0 or 1 to disable the anime mascot wallpapers
|
||||
disable_hyprland_logo = true # If true disables the random hyprland logo / anime girl background. :(
|
||||
anr_missed_pings = 3
|
||||
}
|
||||
|
||||
ecosystem {
|
||||
no_update_news = true
|
||||
no_donation_nag = true
|
||||
}
|
||||
|
||||
#cursor {
|
||||
# no_hardware_cursors = true
|
||||
# min_refresh_rate = 60
|
||||
#}
|
||||
|
||||
|
||||
|
||||
#############
|
||||
### INPUT ###
|
||||
#############
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#input
|
||||
input {
|
||||
kb_layout = de
|
||||
kb_variant =
|
||||
kb_model =
|
||||
kb_options =
|
||||
kb_rules =
|
||||
|
||||
follow_mouse = 1
|
||||
|
||||
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
|
||||
|
||||
scroll_factor = 0.04
|
||||
emulate_discrete_scroll = 1
|
||||
|
||||
touchpad {
|
||||
natural_scroll = true
|
||||
}
|
||||
}
|
||||
|
||||
# For configuring gestures, see:
|
||||
# https://wiki.hypr.land/Configuring/Gestures/
|
||||
|
||||
# Example per-device config
|
||||
# See https://wiki.hypr.land/Configuring/Keywords/#per-device-input-configs for more
|
||||
#device {
|
||||
# name = mx-anywhere-3s-mouse
|
||||
# scroll_factor = 0.08
|
||||
#}
|
||||
|
||||
|
||||
###################
|
||||
### KEYBINDINGS ###
|
||||
###################
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Keywords/
|
||||
$mainMod = SUPER # Sets "Windows" key as main modifier
|
||||
|
||||
# Example binds, see https://wiki.hypr.land/Configuring/Binds/ for more
|
||||
bind = $mainMod, T, exec, $terminal
|
||||
bind = $mainMod, Q, killactive,
|
||||
bind = $mainMod, M, exit,
|
||||
bind = $mainMod, F, exec, $fileManager
|
||||
bind = $mainMod, V, togglefloating,
|
||||
bind = $mainMod, Y, exec, $menu
|
||||
#bind = $mainMod, P, pseudo, # dwindle
|
||||
bind = $mainMod, J, layoutmsg, togglesplit # dwindle
|
||||
bind = $mainMod, N, exec,~/scripts/joplin.sh
|
||||
bind = $mainMod, B, exec, firefox
|
||||
|
||||
bind = $mainMod, E, exec,~/scripts/display_sleep.sh
|
||||
|
||||
# Move focus with mainMod + arrow keys
|
||||
bind = $mainMod, left, movefocus, l
|
||||
bind = $mainMod, right, movefocus, r
|
||||
bind = $mainMod, up, movefocus, u
|
||||
bind = $mainMod, down, movefocus, d
|
||||
|
||||
# Switch workspaces with mainMod + [0-9]
|
||||
bind = $mainMod, 1, workspace, 1
|
||||
bind = $mainMod, 2, workspace, 2
|
||||
bind = $mainMod, 3, workspace, 3
|
||||
bind = $mainMod, 4, workspace, 4
|
||||
bind = $mainMod, 5, workspace, 5
|
||||
bind = $mainMod, 6, workspace, 6
|
||||
bind = $mainMod, 7, workspace, 7
|
||||
bind = $mainMod, 8, workspace, 8
|
||||
bind = $mainMod, 9, workspace, 9
|
||||
bind = $mainMod, 0, workspace, 10
|
||||
|
||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||
bind = $mainMod SHIFT, 1, movetoworkspace, 1
|
||||
bind = $mainMod SHIFT, 2, movetoworkspace, 2
|
||||
bind = $mainMod SHIFT, 3, movetoworkspace, 3
|
||||
bind = $mainMod SHIFT, 4, movetoworkspace, 4
|
||||
bind = $mainMod SHIFT, 5, movetoworkspace, 5
|
||||
bind = $mainMod SHIFT, 6, movetoworkspace, 6
|
||||
bind = $mainMod SHIFT, 7, movetoworkspace, 7
|
||||
bind = $mainMod SHIFT, 8, movetoworkspace, 8
|
||||
bind = $mainMod SHIFT, 9, movetoworkspace, 9
|
||||
bind = $mainMod SHIFT, 0, movetoworkspace, 10
|
||||
|
||||
|
||||
# Resize windows with arrow keys
|
||||
binde = $mainMod SHIFT, left, resizeactive, -40 0
|
||||
binde = $mainMod SHIFT, right, resizeactive, 40 0
|
||||
binde = $mainMod SHIFT, up, resizeactive, 0 -40
|
||||
binde = $mainMod SHIFT, down, resizeactive, 0 40
|
||||
|
||||
# Example special workspace (scratchpad)
|
||||
bind = $mainMod, S, togglespecialworkspace, magic
|
||||
bind = $mainMod SHIFT, S, movetoworkspace, special:magic
|
||||
|
||||
# Scroll through existing workspaces with mainMod + scroll
|
||||
#bind = $mainMod, mouse_down, workspace, e+1
|
||||
#bind = $mainMod, mouse_up, workspace, e-1
|
||||
|
||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||
bindm = $mainMod, mouse:272, movewindow
|
||||
bindm = $mainMod, mouse:273, resizewindow
|
||||
|
||||
# Laptop multimedia keys for volume and LCD brightness
|
||||
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
|
||||
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
|
||||
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
|
||||
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
|
||||
bindel = ,XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+
|
||||
bindel = ,XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%-
|
||||
bindel = , code:238, exec, brightnessctl -d smc::kbd_backlight s +20
|
||||
bindel = , code:237, exec, brightnessctl -d smc::kbd_backlight s 20-
|
||||
|
||||
# Requires playerctl
|
||||
bindl = , XF86AudioNext, exec, playerctl next
|
||||
bindl = , XF86AudioPause, exec, playerctl play-pause
|
||||
bindl = , XF86AudioPlay, exec, playerctl play-pause
|
||||
bindl = , XF86AudioPrev, exec, playerctl previous
|
||||
|
||||
# Screenshots with hyprshot
|
||||
# Screenshot a window
|
||||
bind = $mainMod, PRINT, exec, hyprshot -m window
|
||||
# Screenshot a monitor
|
||||
bind = , PRINT, exec, hyprshot -m region
|
||||
# Screenshot a region
|
||||
bind = $shiftMod, PRINT, exec, hyprshot -m output
|
||||
|
||||
# Hyprpicker
|
||||
bind = $mainMod,P,exec,hyprpicker -a
|
||||
|
||||
##############################
|
||||
### WINDOWS AND WORKSPACES ###
|
||||
##############################
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Window-Rules/ for more
|
||||
# See https://wiki.hypr.land/Configuring/Workspace-Rules/ for workspace rules
|
||||
|
||||
# workspacerules
|
||||
workspace = name:1, monitor:DP-1, default:false
|
||||
workspace = name:2, monitor:DP-1, default:false
|
||||
workspace = name:3, monitor:DP-1, default:false
|
||||
workspace = name:4, monitor:DP-1, default:false
|
||||
workspace = name:5, monitor:DP-1, default:false
|
||||
|
||||
workspace = name:6, monitor:DP-2, default:false
|
||||
workspace = name:7, monitor:DP-2, default:false
|
||||
workspace = name:8, monitor:DP-2, default:false
|
||||
workspace = name:9, monitor:DP-2, default:false
|
||||
workspace = name:0, monitor:DP-2, default:false
|
||||
|
||||
# windowrules
|
||||
windowrule = float on, size 1100 700, match:class ^(org.gnome.Nautilus)$
|
||||
windowrule = float on, pin on, match:class ^(org.gnome.NautilusPreviewer)$
|
||||
windowrule = float on, match:class ^(org.gnome.Loupe)$
|
||||
|
||||
windowrule = float on, match:class ^(org.rncbc.qpwgraph)$
|
||||
|
||||
windowrule = float on, scroll_mouse 0.2, match:class ^(org.keepassxc.KeePassXC)$
|
||||
|
||||
windowrule = float on, size 1400 900, scroll_mouse 0.05, match:class ^(@joplin/app-desktop)$
|
||||
|
||||
windowrule = float on, size 1200 750, scroll_mouse 0.2, match:class ^(ferdium)$
|
||||
|
||||
windowrule = float on, size 1200 750, match:class ^(Element)$
|
||||
|
||||
windowrule = float on, size 1200 750, match:class ^(org.gnome.Fractal)$
|
||||
|
||||
#windowrule = suppressevent[activatefocus activate],initialClass:^(photoshop.exe)$
|
||||
|
||||
windowrule = no_initial_focus on, match:initial_class ^(photoshop.exe)$
|
||||
|
||||
#windowrule = noblur,initialClass:^(photoshop.exe)$
|
||||
#windowrule = noshadow,initialClass:^(photoshop.exe)$
|
||||
#windowrule = noanim,initialClass:^(photoshop.exe)$
|
||||
#windowrule = nodim,initialClass:^(photoshop.exe)$
|
||||
#windowrule = nomaxsize,initialClass:^(photoshop.exe)$
|
||||
|
||||
|
||||
# Per app scroll factor
|
||||
windowrule = scroll_mouse 0.3, match:class ^(code)$
|
||||
windowrule = scroll_mouse 0.2, match:class ^(org.gnome.Evolution)$
|
||||
windowrule = scroll_mouse 0.4, match:class ^(libreoffice-.*)$
|
||||
windowrule = scroll_mouse 0.2, match:class ^(virt-viewer)$
|
||||
windowrule = scroll_mouse 0.2, match:class ^(RapidRAW)$
|
||||
|
||||
# Ignore maximize requests from apps. You'll probably like this.
|
||||
windowrule = suppress_event maximize, match:class .*
|
||||
|
||||
# Fix some dragging issues with XWayland
|
||||
windowrule = no_focus on, match:class ^$, match:title ^$, match:xwayland 1, match:float 1, match:fullscreen 0, match:pin 0
|
||||
|
||||
# Shadow only for floating windows
|
||||
windowrule = no_shadow on, match:float 0
|
||||
@@ -0,0 +1,12 @@
|
||||
preload = /home/tobias/wall2.jpg
|
||||
ipc = false
|
||||
splash = false
|
||||
wallpaper {
|
||||
monitor = DP-1
|
||||
path = /home/tobias/wall2.jpg
|
||||
}
|
||||
|
||||
wallpaper {
|
||||
monitor = DP-2
|
||||
path = /home/tobias/wall2.jpg
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
max-gamma = 150
|
||||
|
||||
profile {
|
||||
time = 8:00
|
||||
identity = true
|
||||
}
|
||||
|
||||
profile {
|
||||
time = 22:00
|
||||
temperature = 3500
|
||||
gamma = 1.0
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
{
|
||||
"$schema": "https://joplinapp.org/schema/settings.json",
|
||||
"altInstanceId": "",
|
||||
"editor.codeView": true,
|
||||
"sync.target": 6,
|
||||
"sync.6.path": "https://files.70b1.de/joplin",
|
||||
"sync.6.username": "tobias",
|
||||
"richTextBannerDismissed": true,
|
||||
"locale": "de_DE",
|
||||
"ocr.enabled": false,
|
||||
"theme": 2,
|
||||
"themeAutoDetect": false,
|
||||
"layoutButtonSequence": 1,
|
||||
"notes.sortOrder.field": "user_updated_time",
|
||||
"notes.sortOrder.reverse": true,
|
||||
"notes.perFieldReverse": {
|
||||
"user_updated_time": true,
|
||||
"user_created_time": true,
|
||||
"title": false,
|
||||
"order": false,
|
||||
"todo_due": true,
|
||||
"todo_completed": true
|
||||
},
|
||||
"notes.listRendererId": "compact",
|
||||
"markdown.plugin.softbreaks": false,
|
||||
"markdown.plugin.typographer": false,
|
||||
"showTrayIcon": true,
|
||||
"style.editor.fontSize": 15,
|
||||
"style.editor.fontFamily": "SF Mono",
|
||||
"style.editor.monospaceFontFamily": "SF Mono",
|
||||
"style.editor.contentMaxWidth": 0,
|
||||
"ui.layout": {
|
||||
"key": "root",
|
||||
"children": [
|
||||
{
|
||||
"key": "sideBar",
|
||||
"width": 224,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"key": "noteList",
|
||||
"width": 297,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"key": "editor",
|
||||
"visible": true
|
||||
}
|
||||
],
|
||||
"visible": true
|
||||
},
|
||||
"noteVisiblePanes": [
|
||||
"editor"
|
||||
],
|
||||
"editor.inlineRendering": true,
|
||||
"editor.imageRendering": true,
|
||||
"api.token": "51dcd22d8da20ca9f2d709e9660c03893fbabc387b19d904c10bd1d5d2f77211bc9477baffbe500ac1eaa77aaaf1005280fce282bd72de36ef7a43626bacad4e",
|
||||
"spellChecker.languages": [
|
||||
"de"
|
||||
],
|
||||
"windowContentZoomFactor": 100
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,33 @@
|
||||
[General]
|
||||
ConfigVersion=2
|
||||
UpdateCheckMessageShown=true
|
||||
|
||||
[Browser]
|
||||
CustomProxyLocation=
|
||||
Enabled=true
|
||||
|
||||
[GUI]
|
||||
ApplicationTheme=dark
|
||||
CheckForUpdates=false
|
||||
CompactMode=false
|
||||
HidePreviewPanel=true
|
||||
MinimizeOnClose=true
|
||||
ShowTrayIcon=true
|
||||
TrayIconAppearance=monochrome-light
|
||||
|
||||
[KeeShare]
|
||||
Active="<?xml version=\"1.0\"?><KeeShare><Active/></KeeShare>\n"
|
||||
Own="<?xml version=\"1.0\"?><KeeShare><PrivateKey>MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCqbx6OoGAa2vC/qTRfKeu4TG0fVZTiiVZe3QsGgUYrHoexwLgqOr0bysWr2fMi5v2FVEeEs7zGRAXYtZJXscVRjK62BdIg8rJfg+bCD3Mzwf+FtNniT4eQOczR1csNNJ4ZvtVRO5znJ9ZGrOZIi+lEIsvEqFpDUcIE3YieYCx8/rsc2hdo8aksjs58yFv5xdfnSmcN3sL4mGGHOS+DHFCpWDqYORgRwBVJIo53zo4/ZDj3Ng8Kbi2KcaMS+yRqbSiLsOy0FCh9xTis0ZLIzsonT80rUBxMchs2rKFKXvoF0RGvCns3y6EsfLijdTQhQLAhgtvKTlBkPdoPfCdf3VidAgMBAAECggEACrw1EIbJhueDgo8F3XimgFVQCkk5t4svBYqmxyIdaVni8i9RaleI0ddT3B8+UVR7Y4qLdrBbk6F1PNEzBpML+rcByjVTpv+ifKGyR0bx2rC9h458quSXhV4eqJju0UYfLz/178fxeh3oQUtite8aIlCOxTRVeygLMINDt7YXF0hZ74f7LmjANYGIGTkzAdMfQdF4jZBrBZlsFdCFUeo7HfxQscSr89XwIDcvOSxawoexatiRzUtuMJjITM6lAtCVwO2Ldke6MBkkvZF6+RX0qp1a3P95K78ZEBof69LQ9/4LFDhVM2Xc7u4SZklk032m3wajHM4Bx56fHhO8o+brgQKBgQDNefwDmWxMdww/lgg/RBdSz6a/iIzdseAVSYUQj/2yFldfjOMQEpCHBd5tZz6h2hfFAlmvRnDmAJIEPAeXj5/bgbu08sGSCPAnhGtwJ+6dw0toNLoS3dAheK9wafpwm1WZDuVNCmXZHxXLayAVhg+Z4oA9JLKToOqbZJWyak8vhwKBgQDUV1Z3oaI5GKB5Za1+QjNp/sm1eNtJHsEfox+V3k9sc8hhHdsiQoqYy7414TViitoZgSQGGX6NPgfAOrzdIuOXXRonpFmBIkTkFyUcBQj+tj+W7QPLN4vZDC3PRHCkh1GbNsFfD++u8uvOMKfHe0lAIGeyR0Z95wVugA55cluXuwKBgB9HCk2h9RJOrNahB/BZdRNt+Hv/VTIJ+YpD/rVetcd+Dx7EW2v+53EmO417wdTxVdzvVqePmW/pdlCesqkne7X2MZSBv2VzZtsdFR2ldnUdXUUngYuNqDjwHgSGnVC21HjQA6eOhaJfUPn9/IxKM+XAzLSB+YzvWcb9sKvP8u3RAoGBALcNJ6Rv+bpA6a5dogfTKCF7HQZNTrUlRxVv+X2oLU3wLlDSfSN2u6ZnFe263Nu7mbMc6iI7/iXi0Km9uSzls8+72h1MiEBTe5IqBbq2+H8kO4NvhbK9itissB0bAgREB2zH8kFyKozmK7QPq8PDG22lwd8lpLZK3xrYWCIIHL+bAoGBAKVogLExSXSFHuIDqZGRKYQmMX3ta2eEHNSzVOn26+o3okkj1a9gZnOYC2gfvhSNrCLVtmC+2N/yOOhRqSZVfTaCNCWE//+l60aQD/N/RskDMB8WcnrrE3kQGmv1LSg0iiO5mQJeSoUO33/hr+A8FikOHnn7oj2yPYcOvkpYWhbQ</PrivateKey><PublicKey><Signer>tobias</Signer><Key>MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCqbx6OoGAa2vC/qTRfKeu4TG0fVZTiiVZe3QsGgUYrHoexwLgqOr0bysWr2fMi5v2FVEeEs7zGRAXYtZJXscVRjK62BdIg8rJfg+bCD3Mzwf+FtNniT4eQOczR1csNNJ4ZvtVRO5znJ9ZGrOZIi+lEIsvEqFpDUcIE3YieYCx8/rsc2hdo8aksjs58yFv5xdfnSmcN3sL4mGGHOS+DHFCpWDqYORgRwBVJIo53zo4/ZDj3Ng8Kbi2KcaMS+yRqbSiLsOy0FCh9xTis0ZLIzsonT80rUBxMchs2rKFKXvoF0RGvCns3y6EsfLijdTQhQLAhgtvKTlBkPdoPfCdf3VidAgMBAAECggEACrw1EIbJhueDgo8F3XimgFVQCkk5t4svBYqmxyIdaVni8i9RaleI0ddT3B8+UVR7Y4qLdrBbk6F1PNEzBpML+rcByjVTpv+ifKGyR0bx2rC9h458quSXhV4eqJju0UYfLz/178fxeh3oQUtite8aIlCOxTRVeygLMINDt7YXF0hZ74f7LmjANYGIGTkzAdMfQdF4jZBrBZlsFdCFUeo7HfxQscSr89XwIDcvOSxawoexatiRzUtuMJjITM6lAtCVwO2Ldke6MBkkvZF6+RX0qp1a3P95K78ZEBof69LQ9/4LFDhVM2Xc7u4SZklk032m3wajHM4Bx56fHhO8o+brgQKBgQDNefwDmWxMdww/lgg/RBdSz6a/iIzdseAVSYUQj/2yFldfjOMQEpCHBd5tZz6h2hfFAlmvRnDmAJIEPAeXj5/bgbu08sGSCPAnhGtwJ+6dw0toNLoS3dAheK9wafpwm1WZDuVNCmXZHxXLayAVhg+Z4oA9JLKToOqbZJWyak8vhwKBgQDUV1Z3oaI5GKB5Za1+QjNp/sm1eNtJHsEfox+V3k9sc8hhHdsiQoqYy7414TViitoZgSQGGX6NPgfAOrzdIuOXXRonpFmBIkTkFyUcBQj+tj+W7QPLN4vZDC3PRHCkh1GbNsFfD++u8uvOMKfHe0lAIGeyR0Z95wVugA55cluXuwKBgB9HCk2h9RJOrNahB/BZdRNt+Hv/VTIJ+YpD/rVetcd+Dx7EW2v+53EmO417wdTxVdzvVqePmW/pdlCesqkne7X2MZSBv2VzZtsdFR2ldnUdXUUngYuNqDjwHgSGnVC21HjQA6eOhaJfUPn9/IxKM+XAzLSB+YzvWcb9sKvP8u3RAoGBALcNJ6Rv+bpA6a5dogfTKCF7HQZNTrUlRxVv+X2oLU3wLlDSfSN2u6ZnFe263Nu7mbMc6iI7/iXi0Km9uSzls8+72h1MiEBTe5IqBbq2+H8kO4NvhbK9itissB0bAgREB2zH8kFyKozmK7QPq8PDG22lwd8lpLZK3xrYWCIIHL+bAoGBAKVogLExSXSFHuIDqZGRKYQmMX3ta2eEHNSzVOn26+o3okkj1a9gZnOYC2gfvhSNrCLVtmC+2N/yOOhRqSZVfTaCNCWE//+l60aQD/N/RskDMB8WcnrrE3kQGmv1LSg0iiO5mQJeSoUO33/hr+A8FikOHnn7oj2yPYcOvkpYWhbQ</Key></PublicKey></KeeShare>\n"
|
||||
QuietSuccess=true
|
||||
|
||||
[PasswordGenerator]
|
||||
AdditionalChars=
|
||||
ExcludedChars=
|
||||
Length=20
|
||||
LowerCase=true
|
||||
SpecialChars=false
|
||||
UpperCase=true
|
||||
|
||||
[Security]
|
||||
ClearClipboard=false
|
||||
LockDatabaseIdle=false
|
||||
@@ -0,0 +1,2 @@
|
||||
background_opacity .7
|
||||
window_margin_width 5
|
||||
@@ -0,0 +1,39 @@
|
||||
[Default Applications]
|
||||
image/jpeg=org.gnome.Loupe.desktop
|
||||
image/png=org.gnome.Loupe.desktop
|
||||
x-scheme-handler/tonsite=org.telegram.desktop._bed96f4b363d7710ea902a60dee70952.desktop
|
||||
hoppscotch=hoppscotch-handler.desktop
|
||||
x-scheme-handler/http=firefox.desktop
|
||||
application/xhtml+xml=firefox.desktop
|
||||
text/html=firefox.desktop
|
||||
x-scheme-handler/https=firefox.desktop
|
||||
application/x-desktop=code.desktop
|
||||
inode/directory=org.gnome.Nautilus.desktop
|
||||
text/plain=code.desktop
|
||||
audio/flac=mpv.desktop
|
||||
image/heif=org.gnome.Loupe.desktop
|
||||
image/webp=org.gnome.Loupe.desktop
|
||||
text/csv=libreoffice-calc.desktop
|
||||
audio/x-opus+ogg=mpv.desktop
|
||||
text/markdown=code.desktop
|
||||
|
||||
[Added Associations]
|
||||
image/jpeg=org.gnome.Loupe.desktop;
|
||||
image/png=org.gnome.Loupe.desktop;
|
||||
x-scheme-handler/tonsite=org.telegram.desktop._bed96f4b363d7710ea902a60dee70952.desktop;
|
||||
x-scheme-handler/http=firefox.desktop;
|
||||
application/xhtml+xml=firefox.desktop;
|
||||
text/html=firefox.desktop;
|
||||
x-scheme-handler/https=firefox.desktop;
|
||||
application/x-desktop=code.desktop;
|
||||
text/plain=code.desktop;
|
||||
audio/flac=mpv.desktop;
|
||||
image/heif=org.gnome.Loupe.desktop;
|
||||
application/octet-stream=code.desktop;
|
||||
image/webp=org.gnome.Loupe.desktop;
|
||||
text/csv=libreoffice-calc.desktop;
|
||||
application/sketch=lunacy.desktop;
|
||||
audio/x-opus+ogg=mpv.desktop;
|
||||
application/lunacy=lunacy.desktop;
|
||||
application/gzip=org.gnome.FileRoller.desktop;
|
||||
text/markdown=code.desktop;
|
||||
@@ -0,0 +1 @@
|
||||
hwdec=auto
|
||||
@@ -0,0 +1,6 @@
|
||||
context.modules = [
|
||||
{
|
||||
name = libpipewire-module-raop-discover
|
||||
args = { }
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,17 @@
|
||||
context.modules = [
|
||||
{ name = libpipewire-module-roc-sink
|
||||
args = {
|
||||
fec.code = rs8m
|
||||
#fec.code = disable
|
||||
remote.ip = 192.168.1.235
|
||||
remote.source.port = 10001
|
||||
remote.repair.port = 10002
|
||||
remote.control.port = 10003
|
||||
sink.name = "Studio Raspi"
|
||||
sink.props = {
|
||||
node.name = "studio-raspi-roc-sink"
|
||||
node.description = "Studio Raspi"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,349 @@
|
||||
* {
|
||||
all: unset;
|
||||
font-size: 14px;
|
||||
font-family: "SF Pro Display";
|
||||
transition: 200ms;
|
||||
}
|
||||
|
||||
trough highlight {
|
||||
background: #cdd6f4;
|
||||
}
|
||||
|
||||
scale trough {
|
||||
margin: 0rem 1rem;
|
||||
background-color: #313244;
|
||||
min-height: 8px;
|
||||
min-width: 70px;
|
||||
}
|
||||
|
||||
slider {
|
||||
background-color: #89b4fa;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background {
|
||||
box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.8), inset 0 0 0 1px #313244;
|
||||
border-radius: 10px;
|
||||
margin: 18px;
|
||||
background-color: rgba(21, 18, 27, .6);
|
||||
color: #cdd6f4;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification {
|
||||
padding: 7px;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification.critical {
|
||||
box-shadow: inset 0 0 7px 0 #f38ba8;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification .notification-content {
|
||||
margin: 7px;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification .notification-content .summary {
|
||||
color: #cdd6f4;
|
||||
font-weight: bold;
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification .notification-content .time {
|
||||
color: #a6adc8;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification .notification-content .body {
|
||||
color: #cdd6f4;
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * {
|
||||
min-height: 3.4em;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * .notification-action {
|
||||
border-radius: 10px;
|
||||
color: #cdd6f4;
|
||||
background-color: #313244;
|
||||
box-shadow: inset 0 0 0 1px #45475a;
|
||||
margin: 7px;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * .notification-action:hover {
|
||||
box-shadow: inset 0 0 0 1px #45475a;
|
||||
background-color: #313244;
|
||||
color: #cdd6f4;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * .notification-action:active {
|
||||
box-shadow: inset 0 0 0 1px #45475a;
|
||||
background-color: #74c7ec;
|
||||
color: #cdd6f4;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .close-button {
|
||||
margin: 7px;
|
||||
padding: 2px;
|
||||
border-radius: 6px;
|
||||
color: #1e1e2e;
|
||||
background-color: #f38ba8;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .close-button:hover {
|
||||
background-color: #eba0ac;
|
||||
color: #1e1e2e;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .close-button:active {
|
||||
background-color: #f38ba8;
|
||||
color: #1e1e2e;
|
||||
}
|
||||
|
||||
.control-center {
|
||||
box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.8), inset 0 0 0 1px #313244;
|
||||
border-radius: 10px;
|
||||
margin: 18px;
|
||||
background-color: rgba(21, 18, 27, .6);
|
||||
color: #cdd6f4;
|
||||
padding: 14px;
|
||||
}
|
||||
|
||||
.control-center .widget-title > label {
|
||||
color: #cdd6f4;
|
||||
font-size: 1.3em;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.control-center .widget-title button {
|
||||
border-radius: 10px;
|
||||
color: #cdd6f4;
|
||||
background-color: #313244;
|
||||
box-shadow: inset 0 0 0 1px #45475a;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
.control-center .widget-title button:hover {
|
||||
box-shadow: inset 0 0 0 1px #45475a;
|
||||
background-color: #585b70;
|
||||
color: #cdd6f4;
|
||||
}
|
||||
|
||||
.control-center .widget-title button:active {
|
||||
box-shadow: inset 0 0 0 1px #45475a;
|
||||
background-color: #74c7ec;
|
||||
color: #1e1e2e;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background {
|
||||
border-radius: 10px;
|
||||
color: #cdd6f4;
|
||||
background-color: #313244;
|
||||
box-shadow: inset 0 0 0 1px #45475a;
|
||||
margin-top: 14px;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification {
|
||||
padding: 7px;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification.critical {
|
||||
box-shadow: inset 0 0 7px 0 #f38ba8;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification .notification-content {
|
||||
margin: 7px;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification .notification-content .summary {
|
||||
color: #cdd6f4;
|
||||
font-weight: bold;
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification .notification-content .time {
|
||||
color: #a6adc8;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification .notification-content .body {
|
||||
color: #cdd6f4;
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification > *:last-child > * {
|
||||
min-height: 3.4em;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification > *:last-child > * .notification-action {
|
||||
border-radius: 10px;
|
||||
color: #cdd6f4;
|
||||
background-color: #11111b;
|
||||
box-shadow: inset 0 0 0 1px #45475a;
|
||||
margin: 7px;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification > *:last-child > * .notification-action:hover {
|
||||
box-shadow: inset 0 0 0 1px #45475a;
|
||||
background-color: #313244;
|
||||
color: #cdd6f4;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification > *:last-child > * .notification-action:active {
|
||||
box-shadow: inset 0 0 0 1px #45475a;
|
||||
background-color: #74c7ec;
|
||||
color: #cdd6f4;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .close-button {
|
||||
margin: 7px;
|
||||
padding: 2px;
|
||||
border-radius: 6.3px;
|
||||
color: #1e1e2e;
|
||||
background-color: #eba0ac;
|
||||
}
|
||||
|
||||
.close-button {
|
||||
border-radius: 6.3px;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .close-button:hover {
|
||||
background-color: #f38ba8;
|
||||
color: #1e1e2e;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .close-button:active {
|
||||
background-color: #f38ba8;
|
||||
color: #1e1e2e;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background:hover {
|
||||
box-shadow: inset 0 0 0 1px #45475a;
|
||||
background-color: #3f4054;
|
||||
color: #cdd6f4;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background:active {
|
||||
box-shadow: inset 0 0 0 1px #45475a;
|
||||
background-color: #74c7ec;
|
||||
color: #cdd6f4;
|
||||
}
|
||||
|
||||
.notification.critical progress {
|
||||
background-color: #f38ba8;
|
||||
}
|
||||
|
||||
.notification.low progress,
|
||||
.notification.normal progress {
|
||||
background-color: #89b4fa;
|
||||
}
|
||||
|
||||
.control-center-dnd {
|
||||
margin-top: 5px;
|
||||
border-radius: 10px;
|
||||
background: #313244;
|
||||
border: 1px solid #45475a;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.control-center-dnd:checked {
|
||||
background: #313244;
|
||||
}
|
||||
|
||||
.control-center-dnd slider {
|
||||
background: #45475a;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.widget-dnd {
|
||||
margin: 0px;
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
|
||||
.widget-dnd > switch {
|
||||
font-size: initial;
|
||||
border-radius: 8px;
|
||||
background: #313244;
|
||||
border: 1px solid #45475a;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.widget-dnd > switch:checked {
|
||||
background: #313244;
|
||||
}
|
||||
|
||||
.widget-dnd > switch slider {
|
||||
background: #45475a;
|
||||
border-radius: 8px;
|
||||
border: 1px solid #6c7086;
|
||||
}
|
||||
|
||||
.widget-mpris .widget-mpris-player {
|
||||
background: #313244;
|
||||
padding: 7px;
|
||||
}
|
||||
|
||||
.widget-mpris .widget-mpris-title {
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
|
||||
.widget-mpris .widget-mpris-subtitle {
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
|
||||
.widget-menubar > box > .menu-button-bar > button > label {
|
||||
font-size: 3rem;
|
||||
padding: 0.5rem 2rem;
|
||||
}
|
||||
|
||||
.widget-menubar > box > .menu-button-bar > :last-child {
|
||||
color: #f38ba8;
|
||||
}
|
||||
|
||||
.power-buttons button:hover,
|
||||
.powermode-buttons button:hover,
|
||||
.screenshot-buttons button:hover {
|
||||
background: #313244;
|
||||
}
|
||||
|
||||
.control-center .widget-label > label {
|
||||
color: #cdd6f4;
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
.widget-buttons-grid {
|
||||
padding-top: 1rem;
|
||||
}
|
||||
|
||||
.widget-buttons-grid > flowbox > flowboxchild > button label {
|
||||
font-size: 2.5rem;
|
||||
}
|
||||
|
||||
.widget-volume {
|
||||
padding-top: 1rem;
|
||||
}
|
||||
|
||||
.widget-volume label {
|
||||
font-size: 1.5rem;
|
||||
color: #74c7ec;
|
||||
}
|
||||
|
||||
.widget-volume trough highlight {
|
||||
background: #74c7ec;
|
||||
}
|
||||
|
||||
.widget-backlight trough highlight {
|
||||
background: #f9e2af;
|
||||
}
|
||||
|
||||
.widget-backlight label {
|
||||
font-size: 1.5rem;
|
||||
color: #f9e2af;
|
||||
}
|
||||
|
||||
.widget-backlight .KB {
|
||||
padding-bottom: 1rem;
|
||||
}
|
||||
|
||||
.image {
|
||||
padding-right: 0.5rem;
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
[Unit]
|
||||
Description=Shairport Sync - AirPlay Audio Receiver
|
||||
After=sound.target
|
||||
#Requires=avahi-daemon.service
|
||||
#After=avahi-daemon.service
|
||||
Wants=network-online.target
|
||||
After=network.target network-online.target
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/bin/shairport-sync --log-to-syslog
|
||||
#User=shairport-sync
|
||||
#Group=shairport-sync
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,217 @@
|
||||
{
|
||||
"layer": "top",
|
||||
"position": "top",
|
||||
"mod": "dock",
|
||||
"exclusive": true,
|
||||
"passthrough": false,
|
||||
"gtk-layer-shell": true,
|
||||
"height": 28,
|
||||
"modules-left": [
|
||||
"clock",
|
||||
"custom/weather",
|
||||
"hyprland/workspaces",
|
||||
"custom/apps",
|
||||
"custom/files"
|
||||
],
|
||||
"modules-center": [
|
||||
"hyprland/window"
|
||||
],
|
||||
"modules-right": [
|
||||
"tray",
|
||||
"custom/network",
|
||||
"temperature",
|
||||
"cpu",
|
||||
"memory",
|
||||
"battery",
|
||||
"custom/studio-sound",
|
||||
"bluetooth",
|
||||
"wireplumber",
|
||||
"custom/hyprsunset",
|
||||
"custom/notificationbar",
|
||||
"privacy"
|
||||
],
|
||||
"privacy": {
|
||||
"icon-spacing": 4,
|
||||
"icon-size": 13,
|
||||
"transition-duration": 250,
|
||||
"modules": [
|
||||
{
|
||||
"type": "screenshare",
|
||||
"tooltip": true,
|
||||
"tooltip-icon-size": 24
|
||||
},
|
||||
{
|
||||
"type": "audio-in",
|
||||
"tooltip": true,
|
||||
"tooltip-icon-size": 24
|
||||
}
|
||||
],
|
||||
"ignore-monitor": true
|
||||
},
|
||||
"hyprland/workspaces": {
|
||||
"format": "{icon}",
|
||||
"on-scroll-up": "hyprctl dispatch workspace e+1",
|
||||
"on-scroll-down": "hyprctl dispatch workspace e-1",
|
||||
"format-icons": {
|
||||
"1": "1",
|
||||
"2": "2",
|
||||
"3": "3",
|
||||
"4": "4",
|
||||
"5": "5"
|
||||
},
|
||||
"persistent_workspaces": {
|
||||
"*": 1
|
||||
}
|
||||
},
|
||||
"hyprland/window": {
|
||||
"format": "{}",
|
||||
"separate-outputs": true
|
||||
},
|
||||
"custom/apps": {
|
||||
"format": "Apps",
|
||||
"tooltip": false,
|
||||
"on-click": "wofi --show drun"
|
||||
},
|
||||
|
||||
"custom/files": {
|
||||
"format": "Files",
|
||||
"tooltip": false,
|
||||
"on-click": "nautilus"
|
||||
},
|
||||
"custom/weather": {
|
||||
"tooltip": true,
|
||||
"format": "{}",
|
||||
"interval": 3600,
|
||||
"exec": "~/.config/waybar/scripts/waybar-wttr.py",
|
||||
"return-type": "json"
|
||||
},
|
||||
|
||||
"temperature": {
|
||||
"thermal-zone": 2,
|
||||
"hwmon-path": "/sys/class/hwmon/hwmon5/temp1_input",
|
||||
"critical-threshold": 80,
|
||||
"format-critical": " {temperatureC}°C",
|
||||
"format": " {temperatureC}°C",
|
||||
"interval": 2,
|
||||
"tooltip": true
|
||||
},
|
||||
|
||||
"cpu": {
|
||||
"format": " {usage}%",
|
||||
"tooltip": true,
|
||||
"interval": 2,
|
||||
"states": {
|
||||
"warning": 70,
|
||||
"critical": 90
|
||||
}
|
||||
},
|
||||
"memory": {
|
||||
"format": " {}%",
|
||||
"format-alt": " {used:0.1f}G/{total:0.1f}G",
|
||||
"tooltip": true,
|
||||
"tooltip-format": "Used: {used:0.2f}GB ({percentage}%)\nAvailable: {avail:0.2f}GB\nTotal: {total:0.2f}GB",
|
||||
"interval": 2,
|
||||
"states": {
|
||||
"warning": 70,
|
||||
"critical": 90
|
||||
}
|
||||
},
|
||||
"tray": {
|
||||
"icon-size": 16,
|
||||
"spacing": 25,
|
||||
"icons": {
|
||||
"blueman": "/usr/share/icons/WhiteSur-dark/devices@2x/32/network-bluetooth.svg",
|
||||
"nm-applet": "/usr/share/icons/WhiteSur-dark/devices@2x/24/network-wired.svg",
|
||||
"pasystray": "/usr/share/icons/WhiteSur-dark/devices@2x/16/audio-speakers.svg"
|
||||
}
|
||||
},
|
||||
"custom/notificationbar": {
|
||||
"format": "",
|
||||
"on-click": "swaync-client -t"
|
||||
},
|
||||
"clock": {
|
||||
"timezone": "Europe/Berlin",
|
||||
"format": "{:%H:%M %a, %b %e}",
|
||||
"tooltip-format": "<big>{:%Y %B}</big>\n<tt>{calendar}</tt>"
|
||||
},
|
||||
"backlight": {
|
||||
"device": "intel_backlight",
|
||||
"format": "{icon} {percent}%",
|
||||
"format-icons": [
|
||||
"",
|
||||
"",
|
||||
""
|
||||
],
|
||||
"on-scroll-up": "brightnessctl -q set 1%+",
|
||||
"on-scroll-down": "brightnessctl -q set 1%-"
|
||||
},
|
||||
"battery": {
|
||||
"states": {
|
||||
"good": 95,
|
||||
"warning": 20,
|
||||
"critical": 10
|
||||
},
|
||||
"format": "{icon} {capacity}%",
|
||||
"format-charging": " {capacity}%",
|
||||
"format-plugged": " {capacity}%",
|
||||
"format-alt": "{time} {icon}",
|
||||
"format-icons": [
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
""
|
||||
]
|
||||
},
|
||||
"wireplumber": {
|
||||
"format": " {volume}%",
|
||||
"format-muted": "",
|
||||
"on-click": "qpwgraph",
|
||||
"max-volume": 100,
|
||||
"scroll-step": 0.2
|
||||
},
|
||||
|
||||
"custom/network": {
|
||||
"exec": "~/.config/waybar/scripts/network.sh",
|
||||
"return-type": "json",
|
||||
"interval": 2,
|
||||
"format": "{}"
|
||||
//"on-click": "nmcli device wifi list",
|
||||
//"on-click-right": "nm-connection-editor"
|
||||
},
|
||||
|
||||
"custom/hyprsunset": {
|
||||
"format": "{}",
|
||||
"exec": "~/.config/waybar/scripts/hyprsunset.sh",
|
||||
"on-click": "~/.config/waybar/scripts/hyprsunset.sh toggle",
|
||||
"signal": 8,
|
||||
"tooltip": true,
|
||||
"return-type": "json"
|
||||
},
|
||||
|
||||
"custom/studio-sound": {
|
||||
"format": "{}",
|
||||
"exec": "~/.config/waybar/scripts/studio-sound.py",
|
||||
"on-click": "~/.config/waybar/scripts/studio-sound.py toggle",
|
||||
"interval": 30,
|
||||
"return-type": "json",
|
||||
"tooltip": true
|
||||
},
|
||||
|
||||
"bluetooth": {
|
||||
"format": " {status}",
|
||||
"format-disabled": "",
|
||||
"format-connected": " {num_connections}",
|
||||
"tooltip-format": "{device_alias}",
|
||||
"tooltip-format-connected": " {device_enumerate}",
|
||||
"tooltip-format-enumerate-connected": "{device_alias}"
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Waybar Hyprsunset Module Script
|
||||
# Place this in ~/.config/waybar/scripts/hyprsunset.sh
|
||||
# Make executable: chmod +x ~/.config/waybar/scripts/hyprsunset.sh
|
||||
|
||||
TEMP=3500 # Default temperature when enabled
|
||||
STATE_FILE="/tmp/hyprsunset_state"
|
||||
|
||||
# Initialize state file if it doesn't exist
|
||||
if [ ! -f "$STATE_FILE" ]; then
|
||||
echo "disabled" > "$STATE_FILE"
|
||||
fi
|
||||
|
||||
get_status() {
|
||||
# Check if hyprsunset is currently active
|
||||
if [ -f "$STATE_FILE" ]; then
|
||||
state=$(cat "$STATE_FILE" 2>/dev/null)
|
||||
if [ "$state" = "enabled" ]; then
|
||||
echo "enabled"
|
||||
else
|
||||
echo "disabled"
|
||||
fi
|
||||
else
|
||||
echo "disabled"
|
||||
fi
|
||||
}
|
||||
|
||||
toggle_hyprsunset() {
|
||||
current_status=$(get_status)
|
||||
|
||||
if [ "$current_status" = "enabled" ]; then
|
||||
# Disable hyprsunset
|
||||
hyprctl hyprsunset identity
|
||||
echo "disabled" > "$STATE_FILE"
|
||||
else
|
||||
# Enable hyprsunset
|
||||
hyprctl hyprsunset temperature "$TEMP"
|
||||
echo "enabled" > "$STATE_FILE"
|
||||
fi
|
||||
|
||||
# Signal Waybar to update the module
|
||||
pkill -SIGRTMIN+8 waybar
|
||||
}
|
||||
|
||||
output_json() {
|
||||
status=$(get_status)
|
||||
|
||||
if [ "$status" = "enabled" ]; then
|
||||
printf '{"text":"","tooltip":"Sunset: ON (%sK)","class":"enabled"}\n' "$TEMP"
|
||||
else
|
||||
printf '{"text":"","tooltip":"Sunset: OFF","class":"disabled"}\n'
|
||||
fi
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
"toggle")
|
||||
toggle_hyprsunset
|
||||
;;
|
||||
*)
|
||||
output_json
|
||||
;;
|
||||
esac
|
||||
+112
@@ -0,0 +1,112 @@
|
||||
#!/bin/bash
|
||||
INTERFACE="br0"
|
||||
TEMP_FILE="/tmp/waybar_network_$INTERFACE"
|
||||
MAX_AGE=10
|
||||
|
||||
# Function to format bytes/s to human readable with max 2 digits
|
||||
format_rate() {
|
||||
local rate=$1
|
||||
local unit="K"
|
||||
local value
|
||||
|
||||
# Convert to KB/s first
|
||||
value=$(( (rate * 10) / 1024 ))
|
||||
|
||||
# If KB/s would be >= 1000 (100.0K), convert to MB/s
|
||||
if [ $value -ge 1000 ]; then
|
||||
unit="M"
|
||||
value=$(( (rate * 10) / 1048576 )) # 1024*1024
|
||||
|
||||
# If MB/s would be >= 1000 (100.0M), convert to GB/s
|
||||
if [ $value -ge 1000 ]; then
|
||||
unit="G"
|
||||
value=$(( (rate * 10) / 1073741824 )) # 1024*1024*1024
|
||||
fi
|
||||
fi
|
||||
|
||||
# Split into whole and decimal parts
|
||||
local whole=$((value / 10))
|
||||
local decimal=$((value % 10))
|
||||
|
||||
# Format with appropriate spacing
|
||||
if [ $whole -lt 10 ]; then
|
||||
printf "%d.%d%s" "$whole" "$decimal" "$unit"
|
||||
else
|
||||
printf "%2d%s" "$whole" "$unit"
|
||||
fi
|
||||
}
|
||||
|
||||
# Check if interface exists
|
||||
if [ ! -d "/sys/class/net/$INTERFACE" ]; then
|
||||
echo '{"text":" No Interface","tooltip":"Interface '$INTERFACE' not found"}'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Get current values
|
||||
RX_BYTES=$(cat /sys/class/net/$INTERFACE/statistics/rx_bytes)
|
||||
TX_BYTES=$(cat /sys/class/net/$INTERFACE/statistics/tx_bytes)
|
||||
CURRENT_TIME=$(date +%s)
|
||||
|
||||
# Check if temp file exists and is recent
|
||||
TEMP_FILE_VALID=0
|
||||
if [ -f "$TEMP_FILE" ]; then
|
||||
read PREV_RX PREV_TX PREV_TIME < "$TEMP_FILE"
|
||||
TIME_DIFF=$((CURRENT_TIME - PREV_TIME))
|
||||
|
||||
# Accept temp file if it's recent (0 seconds is OK, negative or too old is not)
|
||||
if [ $TIME_DIFF -ge 0 ] && [ $TIME_DIFF -le $MAX_AGE ]; then
|
||||
TEMP_FILE_VALID=1
|
||||
fi
|
||||
fi
|
||||
|
||||
# If no valid temp file, initialize
|
||||
if [ $TEMP_FILE_VALID -eq 0 ]; then
|
||||
echo "$RX_BYTES $TX_BYTES $CURRENT_TIME" > "$TEMP_FILE"
|
||||
echo '{"text":"'${INTERFACE}' ↑0.0K ↓0.0K","tooltip":"Upload: 0.0 KB/s\\nDownload: 0.0 KB/s"}'
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# If TIME_DIFF is 0, return the last calculated result without updating temp file
|
||||
if [ $TIME_DIFF -eq 0 ]; then
|
||||
# Try to read cached result from a secondary file
|
||||
CACHE_FILE="/tmp/waybar_network_cache_$INTERFACE"
|
||||
if [ -f "$CACHE_FILE" ]; then
|
||||
cat "$CACHE_FILE"
|
||||
exit 0
|
||||
else
|
||||
# No cache, show 0.0K
|
||||
echo '{"text":"'${INTERFACE}' ↑0.0K ↓0.0K","tooltip":"Upload: 0.0 KB/s\\nDownload: 0.0 KB/s"}'
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
# Calculate rates (bytes per second)
|
||||
RX_RATE=$(( (RX_BYTES - PREV_RX) / TIME_DIFF ))
|
||||
TX_RATE=$(( (TX_BYTES - PREV_TX) / TIME_DIFF ))
|
||||
|
||||
# Handle negative values (counter reset) or unrealistic high values
|
||||
if [ $RX_RATE -lt 0 ] || [ $RX_RATE -gt 1073741824 ]; then RX_RATE=0; fi
|
||||
if [ $TX_RATE -lt 0 ] || [ $TX_RATE -gt 1073741824 ]; then TX_RATE=0; fi
|
||||
|
||||
# Format rates with auto-scaling
|
||||
TX_FORMATTED=$(format_rate $TX_RATE)
|
||||
RX_FORMATTED=$(format_rate $RX_RATE)
|
||||
|
||||
# Calculate tooltip values (always in KB/s for consistency)
|
||||
RX_KB_TENTHS=$(( (RX_RATE * 10) / 1024 ))
|
||||
TX_KB_TENTHS=$(( (TX_RATE * 10) / 1024 ))
|
||||
RX_WHOLE=$((RX_KB_TENTHS / 10))
|
||||
RX_DECIMAL=$((RX_KB_TENTHS % 10))
|
||||
TX_WHOLE=$((TX_KB_TENTHS / 10))
|
||||
TX_DECIMAL=$((TX_KB_TENTHS % 10))
|
||||
|
||||
# Format output with auto-scaled units
|
||||
RESULT=$(printf '{"text":"'${INTERFACE}' ↑%4s ↓%4s","tooltip":"Upload: %d.%d KB/s\\nDownload: %d.%d KB/s"}' \
|
||||
"$TX_FORMATTED" "$RX_FORMATTED" \
|
||||
"$TX_WHOLE" "$TX_DECIMAL" "$RX_WHOLE" "$RX_DECIMAL")
|
||||
|
||||
echo "$RESULT"
|
||||
|
||||
# Store current values for next iteration AND cache the result
|
||||
echo "$RX_BYTES $TX_BYTES $CURRENT_TIME" > "$TEMP_FILE"
|
||||
echo "$RESULT" > "/tmp/waybar_network_cache_$INTERFACE"
|
||||
+78
@@ -0,0 +1,78 @@
|
||||
#!/bin/bash
|
||||
|
||||
INTERFACE="br0"
|
||||
TEMP_FILE="/tmp/waybar_network_$INTERFACE"
|
||||
MAX_AGE=10
|
||||
|
||||
# Check if interface exists
|
||||
if [ ! -d "/sys/class/net/$INTERFACE" ]; then
|
||||
echo '{"text":" No Interface","tooltip":"Interface '$INTERFACE' not found"}'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Get current values
|
||||
RX_BYTES=$(cat /sys/class/net/$INTERFACE/statistics/rx_bytes)
|
||||
TX_BYTES=$(cat /sys/class/net/$INTERFACE/statistics/tx_bytes)
|
||||
CURRENT_TIME=$(date +%s)
|
||||
|
||||
# Check if temp file exists and is recent
|
||||
TEMP_FILE_VALID=0
|
||||
if [ -f "$TEMP_FILE" ]; then
|
||||
read PREV_RX PREV_TX PREV_TIME < "$TEMP_FILE"
|
||||
TIME_DIFF=$((CURRENT_TIME - PREV_TIME))
|
||||
|
||||
# Accept temp file if it's recent (0 seconds is OK, negative or too old is not)
|
||||
if [ $TIME_DIFF -ge 0 ] && [ $TIME_DIFF -le $MAX_AGE ]; then
|
||||
TEMP_FILE_VALID=1
|
||||
fi
|
||||
fi
|
||||
|
||||
# If no valid temp file, initialize
|
||||
if [ $TEMP_FILE_VALID -eq 0 ]; then
|
||||
echo "$RX_BYTES $TX_BYTES $CURRENT_TIME" > "$TEMP_FILE"
|
||||
echo '{"text":"'${INTERFACE}' ↑ 0.0K ↓ 0.0K","tooltip":"Upload: 0.0 KB/s\\nDownload: 0.0 KB/s"}'
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# If TIME_DIFF is 0, return the last calculated result without updating temp file
|
||||
if [ $TIME_DIFF -eq 0 ]; then
|
||||
# Try to read cached result from a secondary file
|
||||
CACHE_FILE="/tmp/waybar_network_cache_$INTERFACE"
|
||||
if [ -f "$CACHE_FILE" ]; then
|
||||
cat "$CACHE_FILE"
|
||||
exit 0
|
||||
else
|
||||
# No cache, show 0.0K
|
||||
echo '{"text":"'${INTERFACE}' ↑ 0.0K ↓ 0.0K","tooltip":"Upload: 0.0 KB/s\\nDownload: 0.0 KB/s"}'
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
# Calculate rates (bytes per second)
|
||||
RX_RATE=$(( (RX_BYTES - PREV_RX) / TIME_DIFF ))
|
||||
TX_RATE=$(( (TX_BYTES - PREV_TX) / TIME_DIFF ))
|
||||
|
||||
# Handle negative values (counter reset) or unrealistic high values
|
||||
if [ $RX_RATE -lt 0 ] || [ $RX_RATE -gt 1073741824 ]; then RX_RATE=0; fi
|
||||
if [ $TX_RATE -lt 0 ] || [ $TX_RATE -gt 1073741824 ]; then TX_RATE=0; fi
|
||||
|
||||
# Convert to KB/s with one decimal place
|
||||
RX_KB_TENTHS=$(( (RX_RATE * 10) / 1024 ))
|
||||
TX_KB_TENTHS=$(( (TX_RATE * 10) / 1024 ))
|
||||
|
||||
# Split into whole and decimal parts
|
||||
RX_WHOLE=$((RX_KB_TENTHS / 10))
|
||||
RX_DECIMAL=$((RX_KB_TENTHS % 10))
|
||||
TX_WHOLE=$((TX_KB_TENTHS / 10))
|
||||
TX_DECIMAL=$((TX_KB_TENTHS % 10))
|
||||
|
||||
# Format output with fixed width
|
||||
RESULT=$(printf '{"text":"'${INTERFACE}' ↑%2d.%dK ↓%2d.%dK","tooltip":"Upload: %d.%d KB/s\\nDownload: %d.%d KB/s"}' \
|
||||
"$TX_WHOLE" "$TX_DECIMAL" "$RX_WHOLE" "$RX_DECIMAL" \
|
||||
"$TX_WHOLE" "$TX_DECIMAL" "$RX_WHOLE" "$RX_DECIMAL")
|
||||
|
||||
echo "$RESULT"
|
||||
|
||||
# Store current values for next iteration AND cache the result
|
||||
echo "$RX_BYTES $TX_BYTES $CURRENT_TIME" > "$TEMP_FILE"
|
||||
echo "$RESULT" > "/tmp/waybar_network_cache_$INTERFACE"
|
||||
+76
@@ -0,0 +1,76 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Waybar module for controlling Studio Sound power outlet
|
||||
Toggles power on click and shows current status
|
||||
"""
|
||||
|
||||
import json
|
||||
import requests
|
||||
import sys
|
||||
import os
|
||||
|
||||
STATUS_URL = 'http://192.168.1.75/cm?cmnd=status'
|
||||
TOGGLE_URL = 'http://192.168.1.75/ay?o=1'
|
||||
CACHE_FILE = '/tmp/studio_sound_status.json'
|
||||
TIMEOUT = 2 # seconds
|
||||
|
||||
def get_status():
|
||||
"""Fetch the current power status from the device"""
|
||||
try:
|
||||
response = requests.get(STATUS_URL, timeout=TIMEOUT)
|
||||
response.raise_for_status()
|
||||
data = response.json()
|
||||
return data.get('Status', {}).get('Power', 0) == 1
|
||||
except:
|
||||
# Return cached status if available
|
||||
if os.path.exists(CACHE_FILE):
|
||||
try:
|
||||
with open(CACHE_FILE, 'r') as f:
|
||||
cached = json.load(f)
|
||||
return cached.get('power', False)
|
||||
except:
|
||||
pass
|
||||
return False
|
||||
|
||||
def toggle_power():
|
||||
"""Toggle the power state"""
|
||||
try:
|
||||
requests.get(TOGGLE_URL, timeout=TIMEOUT)
|
||||
# Give device time to process
|
||||
import time
|
||||
time.sleep(0.5)
|
||||
return get_status()
|
||||
except:
|
||||
return False
|
||||
|
||||
def save_cache(power_state):
|
||||
"""Save current state to cache file"""
|
||||
try:
|
||||
with open(CACHE_FILE, 'w') as f:
|
||||
json.dump({'power': power_state}, f)
|
||||
except:
|
||||
pass
|
||||
|
||||
def main():
|
||||
# Check if this is a click event
|
||||
if len(sys.argv) > 1 and sys.argv[1] == 'toggle':
|
||||
power_state = toggle_power()
|
||||
else:
|
||||
power_state = get_status()
|
||||
|
||||
# Save to cache
|
||||
save_cache(power_state)
|
||||
|
||||
# Output JSON for waybar
|
||||
output = {
|
||||
"text": "Studio " if power_state else "Studio ",
|
||||
"tooltip": f"Studio Sound: {'ON' if power_state else 'OFF'}",
|
||||
"class": "studio-sound-on" if power_state else "studio-sound-off",
|
||||
"alt": "on" if power_state else "off"
|
||||
}
|
||||
|
||||
print(json.dumps(output))
|
||||
sys.stdout.flush()
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,213 @@
|
||||
* {
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
/*font-family: "SF Pro Display", "FontAwesome";*/
|
||||
font-family: "SF Mono", "FontAwesome";
|
||||
font-weight: 600;
|
||||
font-size: 13px;
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
background: rgba(21, 18, 27, 0.36);
|
||||
}
|
||||
|
||||
#privacy-item, #privacy-item > * {
|
||||
color: #ffae00;
|
||||
}
|
||||
|
||||
|
||||
tooltip {
|
||||
background: #1e1e2e;
|
||||
border-radius: 10px;
|
||||
border-width: 2px;
|
||||
border-style: solid;
|
||||
border-color: #11111b;
|
||||
}
|
||||
|
||||
.modules-left {
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.modules-right {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
#workspaces {
|
||||
margin-left: 10px;
|
||||
padding-right: 0px;
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
padding: 2px 10px;
|
||||
}
|
||||
|
||||
#workspaces button.active {
|
||||
background-color: rgba(0,0,0,0.3);
|
||||
}
|
||||
|
||||
#workspaces button:hover {
|
||||
box-shadow: none;
|
||||
text-shadow: none;
|
||||
background: none;
|
||||
background-color: rgba(255,255,255,0.1);
|
||||
}
|
||||
|
||||
|
||||
#custom-power_profile,
|
||||
#custom-weather,
|
||||
#custom-moon,
|
||||
#custom-wallpaper,
|
||||
#custom-studio-sound,
|
||||
#custom-apps,
|
||||
#custom-files,
|
||||
#custom-hyprsunset,
|
||||
#window,
|
||||
#clock,
|
||||
#battery,
|
||||
#pulseaudio,
|
||||
#custom-network,
|
||||
#bluetooth,
|
||||
#temperature,
|
||||
#cpu,
|
||||
#memory,
|
||||
#wireplumber,
|
||||
#workspaces,
|
||||
#tray,
|
||||
#custom-notificationbar,
|
||||
#backlight,
|
||||
#privacy {
|
||||
opacity: 0.95;
|
||||
padding: 0px 10px;
|
||||
margin: 0px;
|
||||
margin-top: 0px;
|
||||
/*border: 2px solid red;*/
|
||||
}
|
||||
|
||||
#custom-files {
|
||||
border-radius: 0px 10px 10px 0px;
|
||||
}
|
||||
|
||||
#wireplumber {
|
||||
min-width: 50px;
|
||||
}
|
||||
|
||||
#custom-network {
|
||||
min-width: 110px;
|
||||
border-radius: 10px 0px 0px 10px;
|
||||
}
|
||||
|
||||
#custom-studio-sound {
|
||||
border-radius: 10px 0px 0px 10px;
|
||||
min-width: 62px;
|
||||
}
|
||||
|
||||
#memory {
|
||||
min-width: 45px;
|
||||
color: #eba0ac;
|
||||
border-radius: 0px 10px 10px 0px;
|
||||
}
|
||||
|
||||
#cpu {
|
||||
min-width: 50px;
|
||||
color: #c3eba0;
|
||||
}
|
||||
|
||||
#temperature {
|
||||
min-width: 50px;
|
||||
color: #89b4fa;
|
||||
}
|
||||
|
||||
#backlight {
|
||||
border-radius: 10px 0px 0px 10px;
|
||||
}
|
||||
|
||||
#tray {
|
||||
border-radius: 10px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
#tray > .active,
|
||||
#tray > .passive {
|
||||
margin-right: 100px;
|
||||
padding-left: 100px;
|
||||
}
|
||||
|
||||
#custom-power_profile {
|
||||
color: #a6e3a1;
|
||||
border-left: 0px;
|
||||
border-right: 0px;
|
||||
}
|
||||
|
||||
#window {
|
||||
border-radius: 10px;
|
||||
margin-left: 60px;
|
||||
margin-right: 60px;
|
||||
}
|
||||
|
||||
#clock {
|
||||
border-radius: 10px 0px 0px 10px;
|
||||
border-right: 0px;
|
||||
}
|
||||
|
||||
#network {
|
||||
border-radius: 10px 0px 0px 10px;
|
||||
border-left: 0px;
|
||||
border-right: 0px;
|
||||
}
|
||||
|
||||
#bluetooth {
|
||||
min-width: 17px;
|
||||
}
|
||||
|
||||
#battery {
|
||||
margin-right: 0px;
|
||||
padding: 0 10px;
|
||||
border-left: 0px;
|
||||
}
|
||||
|
||||
#battery.warning {
|
||||
color: #FFA500;
|
||||
}
|
||||
|
||||
#battery.critical {
|
||||
color: #F00;
|
||||
}
|
||||
|
||||
/* Menu styling */
|
||||
menu {
|
||||
border-radius: 8px;
|
||||
background: rgba(43, 48, 59, 0.95);
|
||||
color: #ffffff;
|
||||
/*border: 1px solid rgba(100, 114, 125, 0.3);*/
|
||||
border-style: none;
|
||||
padding: 4px 0;
|
||||
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
|
||||
window decoration{
|
||||
border-style: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
menuitem {
|
||||
border-radius: 4px;
|
||||
padding: 8px 16px;
|
||||
margin: 2px 4px;
|
||||
transition: background-color 0.2s ease;
|
||||
}
|
||||
|
||||
menuitem:hover {
|
||||
background-color: rgba(100, 114, 125, 0.3);
|
||||
}
|
||||
|
||||
menuitem:selected {
|
||||
background-color: #64727D;
|
||||
}
|
||||
|
||||
/* Separator styling */
|
||||
separator {
|
||||
background-color: rgba(100, 114, 125, 0.3);
|
||||
margin: 4px 8px;
|
||||
}
|
||||
@@ -0,0 +1,167 @@
|
||||
* {
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
font-family: "SF Display";
|
||||
font-weight: bold;
|
||||
font-size: 12px;
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
background: rgba(21, 18, 27, 0);
|
||||
color: #cdd6f4;
|
||||
}
|
||||
|
||||
tooltip {
|
||||
background: #1e1e2e;
|
||||
border-radius: 10px;
|
||||
border-width: 2px;
|
||||
border-style: solid;
|
||||
border-color: #11111b;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
padding: 2px 5px;
|
||||
color: #636777;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
#workspaces button.active {
|
||||
background-color: #000;
|
||||
}
|
||||
|
||||
#workspaces button.focused {
|
||||
color: #a6adc8;
|
||||
background: #eba0ac;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
#workspaces button.urgent {
|
||||
color: #11111b;
|
||||
background: #a6e3a1;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
#workspaces button:hover {
|
||||
background: #11111b;
|
||||
color: #11111b;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
#custom-power_profile,
|
||||
#custom-weather,
|
||||
#custom-moon,
|
||||
#custom-wallpaper,
|
||||
#window,
|
||||
#clock,
|
||||
#battery,
|
||||
#pulseaudio,
|
||||
#network,
|
||||
#bluetooth,
|
||||
#temperature,
|
||||
#cpu,
|
||||
#memory,
|
||||
#workspaces,
|
||||
#tray,
|
||||
#backlight {
|
||||
background: #1e1e2e;
|
||||
opacity: 0.8;
|
||||
padding: 0px 10px;
|
||||
/* margin: 3px 0px; */
|
||||
margin: 0px;
|
||||
margin-top: 10px;
|
||||
border: 1px solid #181825;
|
||||
}
|
||||
|
||||
#memory {
|
||||
color: #eba0ac;
|
||||
}
|
||||
|
||||
#temperature {
|
||||
border-radius: 10px 0px 0px 10px;
|
||||
}
|
||||
|
||||
#custom-temperature.critical {
|
||||
color: #f00;
|
||||
}
|
||||
|
||||
#backlight {
|
||||
border-radius: 10px 0px 0px 10px;
|
||||
}
|
||||
|
||||
#tray {
|
||||
border-radius: 10px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
#workspaces {
|
||||
background: #1e1e2e;
|
||||
border-radius: 10px;
|
||||
margin-left: 10px;
|
||||
padding-right: 0px;
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
#custom-power_profile {
|
||||
color: #a6e3a1;
|
||||
border-left: 0px;
|
||||
border-right: 0px;
|
||||
}
|
||||
|
||||
#window {
|
||||
border-radius: 10px;
|
||||
margin-left: 60px;
|
||||
margin-right: 60px;
|
||||
}
|
||||
|
||||
#clock {
|
||||
color: #fab387;
|
||||
border-radius: 10px 0px 0px 10px;
|
||||
margin-left: 10px;
|
||||
border-right: 0px;
|
||||
}
|
||||
|
||||
#network {
|
||||
color: #f9e2af;
|
||||
border-radius: 10px 0px 0px 10px;
|
||||
border-left: 0px;
|
||||
border-right: 0px;
|
||||
}
|
||||
|
||||
#bluetooth {
|
||||
color: #89b4fa;
|
||||
border-radius: 0px 10px 10px 0px;
|
||||
margin-right: 10px
|
||||
}
|
||||
|
||||
#pulseaudio {
|
||||
color: #89b4fa;
|
||||
border-left: 0px;
|
||||
border-right: 0px;
|
||||
}
|
||||
|
||||
#pulseaudio.microphone {
|
||||
color: #cba6f7;
|
||||
border-left: 0px;
|
||||
border-right: 0px;
|
||||
border-radius: 0px 10px 10px 0px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
#battery {
|
||||
color: #a6e3a1;
|
||||
border-radius: 0 10px 10px 0;
|
||||
margin-right: 10px;
|
||||
border-left: 0px;
|
||||
}
|
||||
#battery.warning {
|
||||
color: #FFA500;
|
||||
}
|
||||
#battery.critical {
|
||||
color: #F00;
|
||||
}
|
||||
#custom-moon {
|
||||
border-radius: 0px 10px 10px 0px;
|
||||
border-right: 0px;
|
||||
margin-left: 0px;
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
mode=drun
|
||||
insensitive=true
|
||||
@@ -0,0 +1,54 @@
|
||||
window {
|
||||
margin: 0px;
|
||||
border: 2px solid #bd93f9;
|
||||
background-color: rgba(40,42,54,.5);
|
||||
border-radius: 13px;
|
||||
font-family: "SF Pro Display";
|
||||
}
|
||||
|
||||
#input {
|
||||
margin: 5px;
|
||||
border: none;
|
||||
color: #f8f8f2;
|
||||
background-color: #44475a;
|
||||
}
|
||||
|
||||
#inner-box {
|
||||
margin: 5px;
|
||||
border: none;
|
||||
background-color: rgba(40,42,54,.5);
|
||||
}
|
||||
|
||||
#outer-box {
|
||||
margin: 5px;
|
||||
border: none;
|
||||
background-color: rgba(40,42,54,.5);
|
||||
}
|
||||
|
||||
#scroll {
|
||||
margin: 0px;
|
||||
border: none;
|
||||
}
|
||||
|
||||
#text {
|
||||
margin: 5px;
|
||||
border: none;
|
||||
color: #f8f8f2;
|
||||
}
|
||||
|
||||
#entry.activatable #text {
|
||||
color: #282a36;
|
||||
}
|
||||
|
||||
#entry > * {
|
||||
color: #f8f8f2;
|
||||
}
|
||||
|
||||
#entry:selected {
|
||||
background-color: #44475a;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
#entry:selected #text {
|
||||
font-weight: bold;
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
[Desktop Entry]
|
||||
Name=Joplin
|
||||
Comment=Joplin - a note taking and to-do application with synchronization capabilities for Windows, macOS, Linux, Android and iOS.
|
||||
Exec=env XDG_CURRENT_DESKTOP=GNOME /opt/Joplin/joplin %U --enable-features=UseOzonePlatform --ozone-platform=wayland --enable-wayland-ime
|
||||
Icon=/usr/share/joplin-desktop/resources/build/icons/128x128.png
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Categories=Application;Office;
|
||||
StartupWMClass=Joplin
|
||||
@@ -0,0 +1,8 @@
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=Open Stage Control
|
||||
Comment=Libre and modular OSC / MIDI controller
|
||||
Exec=open-stage-control
|
||||
Icon=/opt/open-stage-control/resources/app/assets/logo.png
|
||||
Categories=Audio;AudioVideo;
|
||||
Terminal=false
|
||||
@@ -0,0 +1,2 @@
|
||||
# openframeworks
|
||||
export PG_OF_PATH=/home/tobias/ofx/of_v0.12.0_linux64gcc6_release
|
||||
@@ -0,0 +1,3 @@
|
||||
if [[ -z $WAYLAND_DISPLAY && $XDG_VTNR == 1 && $(tty) == /dev/tty1 ]]; then
|
||||
exec ~/scripts/start_hyprland.sh
|
||||
fi
|
||||
Executable
+46
@@ -0,0 +1,46 @@
|
||||
# git display, add ${vcs_info_msg_0_} to PROMPT
|
||||
#autoload -Uz vcs_info
|
||||
#zstyle ':vcs_info:*' enable git svn
|
||||
#precmd() {
|
||||
# vcs_info
|
||||
#}
|
||||
|
||||
export CLICOLOR=1
|
||||
export LSCOLORS=ExGxBxDxCxEgEdxbxgxcxd
|
||||
export TERM=xterm-256color
|
||||
|
||||
# prompt format and color
|
||||
PROMPT='%B%F{136}%n@%m%f%b %F{039}%.%f ❯ '
|
||||
#PROMPT='%B%F{002}%m%f%b:%F{039}%.%f %F{039}❯%f '
|
||||
|
||||
# autocompletion case insensitivity
|
||||
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}'
|
||||
autoload -Uz compinit && compinit -i
|
||||
|
||||
# plugins
|
||||
source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
|
||||
source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
|
||||
|
||||
# print all 256 color numbers to use in {}:
|
||||
# for code in {000..255}; do print -P -- "$code: %F{$code}Color%f"; done
|
||||
|
||||
# write a history file
|
||||
HISTFILE=~/.zsh_history
|
||||
HISTSIZE=10000
|
||||
SAVEHIST=10000
|
||||
setopt SHARE_HISTORY
|
||||
setopt HIST_IGNORE_SPACE
|
||||
|
||||
alias ls='ls --color=auto'
|
||||
alias grep='grep --color=auto'
|
||||
|
||||
#alias data="cd /volumes/data"
|
||||
#alias proj="cd /volumes/data/Data/Projects"
|
||||
|
||||
# enable jumping by words with ctrl+arrow keys
|
||||
#bindkey ";5C" forward-word
|
||||
#bindkey ";5D" backward-word
|
||||
|
||||
bindkey "^[[1;5C" forward-word
|
||||
bindkey "^[[1;5D" backward-word
|
||||
|
||||
Executable
+30
@@ -0,0 +1,30 @@
|
||||
#!/bin/zsh
|
||||
# This script puts the monitors to sleep via dpms.
|
||||
# Sth in hyprland crashes and creates high gpu usage, if hyprpaper is running
|
||||
# when a monitor is being turned off and on again.
|
||||
# Therefore, we kill hyprpaper when turning the monitor off and start it again when turning it on.
|
||||
|
||||
export STATUS_FILE="$XDG_RUNTIME_DIR/display.status"
|
||||
|
||||
enable_display() {
|
||||
printf "true" >"$STATUS_FILE"
|
||||
hyprctl dispatch dpms on
|
||||
sleep 1
|
||||
exec hyprpaper
|
||||
}
|
||||
|
||||
disable_display() {
|
||||
killall hyprpaper
|
||||
printf "false" >"$STATUS_FILE"
|
||||
hyprctl dispatch dpms off
|
||||
}
|
||||
|
||||
if ! [ -f "$STATUS_FILE" ]; then
|
||||
disable_display
|
||||
else
|
||||
if [ $(cat "$STATUS_FILE") = "true" ]; then
|
||||
disable_display
|
||||
elif [ $(cat "$STATUS_FILE") = "false" ]; then
|
||||
enable_display
|
||||
fi
|
||||
fi
|
||||
Executable
+8
@@ -0,0 +1,8 @@
|
||||
#!/bin/zsh
|
||||
JOPLIN_DEST=$(busctl --user list | grep "joplin" | awk '{print $1}' | sort -V | sed -n -e '2p')
|
||||
|
||||
if [ -n "$JOPLIN_DEST" ]; then
|
||||
busctl --user call "$JOPLIN_DEST" /StatusNotifierItem org.kde.StatusNotifierItem Activate ii 0 0
|
||||
else
|
||||
exec gtk-launch joplin.desktop
|
||||
fi
|
||||
Executable
+5
@@ -0,0 +1,5 @@
|
||||
#!/bin/zsh
|
||||
|
||||
#source ~/scripts/set_gamma/set_gamma_table.sh
|
||||
exec start-hyprland
|
||||
|
||||
Reference in New Issue
Block a user