add stuff

This commit is contained in:
2026-02-16 20:00:12 +01:00
parent 2fb3eb1f52
commit 0a4ff4c504
25 changed files with 2633 additions and 186 deletions

View File

@ -390,7 +390,7 @@
"command": "-workbench.action.gotoLine"
},
{
"key": "ctrl+g",
"key": "alt+space",
"command": "relative-goto.goto"
},
{

View File

@ -1,9 +1,6 @@
{
//
// Appearance
"workbench.colorTheme": "Monokai Pro",
"workbench.iconTheme": "Monokai Pro Icons",
"editor.fontFamily": "Fira Code, Menlo, Monaco, 'Courier New', monospace",
"workbench.iconTheme": "Default Light Modern Icons",
"editor.fontFamily": "JetBrains Mono Semibold, Fira Code, Menlo, Monaco, 'Courier New', monospace",
"editor.fontSize": 18,
"editor.fontWeight": "normal",
"editor.fontLigatures": true,
@ -123,4 +120,13 @@
"python.defaultInterpreterPath": "/home/paul/.pyenv/versions/3.12.5/envs/wasteside-tools",
"editor.lineNumbers": "relative",
"github.copilot.nextEditSuggestions.enabled": true,
"json.schemaDownload.trustedDomains": {
"https://schemastore.azurewebsites.net/": true,
"https://raw.githubusercontent.com/": true,
"https://www.schemastore.org/": true,
"https://json.schemastore.org/": true,
"https://json-schema.org/": true,
"https://vicinae.com/schemas/config.json": true
},
"workbench.colorTheme": "Monokai Pro",
}

1
.config/_default.jsonc Symbolic link
View File

@ -0,0 +1 @@
vicinae/_default.jsonc

1
.config/appeareance.jsonc Symbolic link
View File

@ -0,0 +1 @@
vicinae/appeareance.jsonc

View File

@ -1,2 +1,2 @@
--enable-features=UseOzonePlatform
# --enable-features=UseOzonePlatform
--ozone-platform=wayland

View File

@ -0,0 +1,3 @@
lat: 52.375893
lng: 9.732010
dbusserver: true

View File

@ -4,7 +4,7 @@
### Display ###
# Which monitor should the notifications be displayed on.
monitor = DP-2
monitor = DP-1
# Display notification on focused monitor. Possible modes are:
# mouse: follow mouse pointer
@ -196,7 +196,8 @@
max_icon_size = 50
# Paths to default icons.
icon_path = /usr/share/icons/Adwaita/16x16/mimetypes/:/usr/share/icons/Papirus-Dark/16x16/actions/
icon_path = "/usr/share/icons/Adwaita/symbolic/actions:/home/paul/.config/dunst/icons"
# enable_recursive_icon_lookup = true
default_icon = "/home/paul/.config/dunst/default.svg"

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="#fff" d="M22.939 10.627L13.061.749a1.505 1.505 0 0 0-2.121 0l-9.879 9.878C.478 11.21 0 12.363 0 13.187v9c0 .826.675 1.5 1.5 1.5h9.227l-4.063-4.062a2 2 0 0 1-.664.113c-1.13 0-2.05-.92-2.05-2.05s.92-2.05 2.05-2.05s2.05.92 2.05 2.05c0 .233-.041.456-.113.665l3.163 3.163V9.928a2.05 2.05 0 0 1-1.15-1.84c0-1.13.92-2.05 2.05-2.05s2.05.92 2.05 2.05a2.05 2.05 0 0 1-1.15 1.84v8.127l3.146-3.146A2.05 2.05 0 0 1 18 12.239c1.13 0 2.05.92 2.05 2.05s-.92 2.05-2.05 2.05a2 2 0 0 1-.709-.13L12.9 20.602v3.088h9.6c.825 0 1.5-.675 1.5-1.5v-9c0-.825-.477-1.977-1.061-2.561z"/></svg>

After

Width:  |  Height:  |  Size: 659 B

1
.config/general.jsonc Symbolic link
View File

@ -0,0 +1 @@
vicinae/general.jsonc

View File

@ -16,8 +16,8 @@
################
# See https://wiki.hyprland.org/Configuring/Monitors/
monitor=DP-2,3440x1440@144,auto,auto
monitor=DP-3,1920x1080,-1080x-550,1,transform,1
monitor=DP-1,3440x1440@144,auto,auto
monitor=DP-2,1920x1080,-1080x-550,1,transform,1
monitor=HDMI-A-1,3440x1440@144,auto,auto
@ -31,6 +31,8 @@ monitor=HDMI-A-1,3440x1440@144,auto,auto
$terminal = alacritty
$fileManager = nautilus --new-window
$browser = firefox
$launcher = vicinae toggle
# $launcher = tofi-drun | xargs hyprctl dispatch exec --
#################
@ -44,14 +46,17 @@ exec-once = hyprpaper
exec-once = hypridle
exec-once = systemctl --user start hyprpolkitagent
exec-once = dunst
exec-once = wl-paste --type text --watch cliphist store # Stores only text data
# exec-once = wl-paste --type text --watch cliphist store # Stores only text data
exec-once = waybar
exec-once = darkman run
exec-once = vicinae server
# Open programs on special workspaces
exec-once = [ workspace special:term silent] $terminal
exec-once = [ workspace special:browser silent] $browser "https://web.whatsapp.com" "https://mail.google.com/mail/u/0/\##inbox/\##wasteside\##container-wasteside"
exec-once = [ workspace special:browser silent] $browser "ext+container:name=Meta&url=https://web.whatsapp.com" "ext+container:name=Wasteside&url=https://mail.google.com"
exec-once = [ workspace special:browser silent] gnome-calendar
exec-once = [ workspace special:music silent] $terminal -e spotify_player
exec-once = [ workspace special:music silent] $terminal -e wiremix
exec-once = [ workspace special:todo silent] clickup
exec-once = [ workspace special:files silent] $fileManager
exec-once = [ workspace special:files silent] localsend
@ -66,6 +71,9 @@ exec-once = ratbagctl list
exec-once = hyprpm enable Hyprspace
exec-once = hyprpm reload
# Custom scripts
exec-once = ~/code/ha-notifications/ha-notifications
#############################
### ENVIRONMENT VARIABLES ###
#############################
@ -74,10 +82,7 @@ exec-once = hyprpm reload
env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24
env = LIBVA_DRIVER_NAME,nvidia
env = XDG_SESSION_TYPE,wayland
env = GBM_BACKEND,nvidia-drm
env = __GLX_VENDOR_LIBRARY_NAME,nvidia
env = HYPRSHOT_DIR,/home/paul/screenshots
cursor {
@ -119,7 +124,7 @@ decoration {
active_opacity = 1.0
inactive_opacity = 1.0
dim_special = 0.9
dim_special = 0.7
# Deprecated v0.45 ?
# drop_shadow = true
@ -143,15 +148,16 @@ animations {
# Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
bezier = bz, 0.05, 0.9, 0.1, 1.05
animation = windows, 1, 7, myBezier
animation = windowsOut, 1, 7, default, popin 80%
animation = windows, 1, 4, bz
animation = windowsOut, 1, 4, default, popin 80%
animation = border, 1, 10, default
animation = borderangle, 1, 8, default
animation = fade, 1, 7, default
animation = workspaces, 1, 6, default
animation = specialWorkspaceIn, 1, 2, default
animation = workspaces, 1, 3, default
animation = specialWorkspace, 1, 2, default, fade
}
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
@ -169,6 +175,8 @@ master {
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. :(
close_special_on_empty = false
}
@ -183,14 +191,11 @@ input {
kb_model =
kb_options =
kb_rules =
numlock_by_default = true
follow_mouse = 2
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
touchpad {
natural_scroll = false
}
}
# https://wiki.hyprland.org/Configuring/Variables/#gestures
@ -205,6 +210,10 @@ device {
sensitivity = -0.5
}
binds {
hide_special_on_workspace_change = true
}
# cursor {
# no_warps = true
# }
@ -220,14 +229,15 @@ $mainMod = SUPER # Sets "Windows" key as main modifier
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
bind = $mainMod, T, exec, $terminal
bind = $mainMod, B, exec, $browser
bind = $mainMod, Return, exec, tofi-drun | xargs hyprctl dispatch exec --
bind = $mainMod, Return, exec, $launcher
bind = $mainMod, Q, killactive,
bind = $mainMod, F, fullscreen,
bind = $mainMod, M, splitratio, exact 0.6,
bind = $mainMod, mouse_down, splitratio, 0.1
bind = $mainMod, mouse_up, splitratio, -0.1
bind = $mainMod, E, exec, $fileManager
bind = $mainMod, V, exec, cliphist list | tofi | cliphist decode | wl-copy
# bind = $mainMod, V, exec, cliphist list | tofi | cliphist decode | wl-copy
bind = $mainMod, V, exec, vicinae vicinae://extensions/vicinae/clipboard/history
bind = $mainMod, X, togglefloating,
bind = $mainMod, P, pin, active
bind = $mainMod, J, togglesplit, # dwindle
@ -250,7 +260,7 @@ bind = $mainMod SHIFT, right, movewindow, r
bind = $mainMod SHIFT, up, movewindow, u
bind = $mainMod SHIFT, down, movewindow, d
# Switch workspaces of primary monitor with mainMod + [1-9]
# Switch workspaces of primary monitor with mainMod + [1-7]
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
@ -260,7 +270,7 @@ bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
# Switch workspaces of secondary monitor with mainMod + [F1-9]
# Switch workspaces of secondary monitor with mainMod + [F1-7]
bind = $mainMod, F1, workspace, 11
bind = $mainMod, F2, workspace, 12
bind = $mainMod, F3, workspace, 13
@ -268,9 +278,8 @@ bind = $mainMod, F4, workspace, 14
bind = $mainMod, F5, workspace, 15
bind = $mainMod, F6, workspace, 16
bind = $mainMod, F7, workspace, 17
bind = $mainMod, F8, workspace, 18
# Move active window to a workspace with mainMod + SHIFT + [1-9] (primary monitor)
# Move active window to a workspace with mainMod + SHIFT + [1-7] (primary monitor)
bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3
@ -279,7 +288,7 @@ bind = $mainMod SHIFT, 5, movetoworkspace, 5
bind = $mainMod SHIFT, 6, movetoworkspace, 6
bind = $mainMod SHIFT, 7, movetoworkspace, 7
# Move active window to a workspace with mainMod + SHIFT + [F1-F9] (secondary monitor)
# Move active window to a workspace with mainMod + SHIFT + [F1-F7] (secondary monitor)
bind = $mainMod SHIFT, F1, movetoworkspace, 11
bind = $mainMod SHIFT, F2, movetoworkspace, 12
bind = $mainMod SHIFT, F3, movetoworkspace, 13
@ -289,14 +298,20 @@ bind = $mainMod SHIFT, F6, movetoworkspace, 16
bind = $mainMod SHIFT, F7, movetoworkspace, 17
# Special workspaces (scratchpad)
# Special workspaces should only be opened on the primary monitor.
bind = $mainMod, F12, focusmonitor, DP-1
bind = $mainMod, F12, togglespecialworkspace, term
bind = $mainMod SHIFT, F12, movetoworkspace, special:term
bind = $mainMod, F11, focusmonitor, DP-1
bind = $mainMod, F11, togglespecialworkspace, browser
bind = $mainMod SHIFT, F11, movetoworkspace, special:browser
bind = $mainMod, F10, focusmonitor, DP-1
bind = $mainMod, F10, togglespecialworkspace, music
bind = $mainMod SHIFT, F10, movetoworkspace, special:music
bind = $mainMod, F9, focusmonitor, DP-1
bind = $mainMod, F9, togglespecialworkspace, todo
bind = $mainMod SHIFT, F9, movetoworkspace, special:todo
bind = $mainMod, F8, focusmonitor, DP-1
bind = $mainMod, F8, togglespecialworkspace, files
bind = $mainMod SHIFT, F8, movetoworkspace, special:files
@ -314,8 +329,8 @@ bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 10%-
# Requires playerctl
bindl = , XF86AudioNext, exec, playerctl next
bindl = , XF86AudioPause, exec, playerctl play-pause
bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioPause, exec, playerctl play-pause -a
bindl = , XF86AudioPlay, exec, playerctl play-pause -a
bindl = , XF86AudioPrev, exec, playerctl previous
##############################
@ -326,49 +341,103 @@ bindl = , XF86AudioPrev, exec, playerctl previous
# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
# Ignore maximize requests from apps. You'll probably like this.
windowrulev2 = suppressevent maximize, class:.*
windowrule = match:class .*, suppress_event maximize
# Fix some dragging issues with XWayland
windowrulev2 = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
# windowrulev2 = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
# Window rules to assign windows to workspaces
windowrulev2 = float,title:^(.*Extension: Bitwarden.*)$
windowrule = match:title ^(.*Extension: Bitwarden.*)$, float 1
# Always center ClickUp command bar
windowrulev2 = center, title:ClickUp Command Bar
windowrule = match:title ClickUp Command Bar, center 1
# Dont use floating mode for freerdp
windowrulev2 = tile, class:xfreerdp
windowrule = match:class ^(xfreerdp)$, tile 1
# Open audio settings in floating mode
windowrulev2 = float, class:org.pulseaudio.pavucontrol
windowrulev2 = size 500 1000, class:org.pulseaudio.pavucontrol
windowrulev2 = move 2841 61, class:org.pulseaudio.pavucontrol
windowrulev2 = pin, class:org.pulseaudio.pavucontrol
windowrule = match:class org.pulseaudio.pavucontrol, float 1, size 500 1000, move 2841 61, pin 1
# Same for bluetooth settings
windowrulev2 = float, initialTitle:overskride
windowrulev2 = size 765 765, initialTitle:overskride
windowrulev2 = move 2653 44, initialTitle:overskride
windowrulev2 = pin, initialTitle:overskride
windowrule = match:title overskride, float 1, size 765 765, move 2653 44, pin 1
# Change border color of pinned windows
windowrulev2 = bordercolor rgb(CC34A4) rgb(4B2D70), pinned:1
windowrule = match:pin 1, border_color rgb(CC34A4) rgb(4B2D70)
# Share Picker is always floating
windowrule = match:class com.paulaumann.hyprland-share-picker, float 1, center 1
# Waydroid is always floating and exact size
windowrule {
name = "waydroid"
match:initial_class = Waydroid
float = 1
size = 576 1024
}
# Vicinae is always floating and exact size
windowrule {
name = "vicinae"
match:initial_class = vicinae-server
float = 1
pin = 1
stay_focused = on
dim_around = on
no_anim = on
}
# Notification animation style
layerrule = animation slide, notifications
layerrule = match:namespace notifications, animation slide
# Fixes black border around screenshots due to animation after selection
layerrule {
name = no_anim_for_selection
match:namespace = selection
no_anim = on
}
# Blur behind certain layers
layerrule {
name = blur_waybar
match:namespace = waybar
blur = on
}
layerrule {
name = blur_tofi
match:namespace = launcher
blur = on
}
# layerrule {
# name = blur_vicinae
# match:namespace = vicinae
# blur = on
# ignore_alpha = on
# dim_around = on
# }
# layerrule {
# name = no_animation_for_vicinae
# match:namespace = vicinae
# no_anim = on
# }
# Workspace rules to assign workspaces to monitors
workspace = 1, monitor:DP-2, default:true
workspace = 2, monitor:DP-2
workspace = 3, monitor:DP-2
workspace = 4, monitor:DP-2
workspace = 5, monitor:DP-2
workspace = 11, monitor:DP-3, default:true
workspace = 12, monitor:DP-3
workspace = 13, monitor:DP-3
workspace = 14, monitor:DP-3
workspace = 15, monitor:DP-3
workspace = 1, monitor:DP-1, default:true
workspace = 2, monitor:DP-1
workspace = 3, monitor:DP-1
workspace = 4, monitor:DP-1
workspace = 5, monitor:DP-1
workspace = 11, monitor:DP-2, default:true
workspace = 12, monitor:DP-2
workspace = 13, monitor:DP-2
workspace = 14, monitor:DP-2
workspace = 15, monitor:DP-2
workspace = special:music, gapsout:40 1800 50 50
workspace = special:music, monitor:DP-2
workspace = special:term, gapsout:64
workspace = special:browser, gapsout:64
workspace = special:music, gapsout:64
workspace = special:todo, gapsout:64
workspace = special:files, gapsout:64

View File

@ -1,2 +1,13 @@
preload = ~/.config/hypr/img/gnome-background.webp
wallpaper = , ~/.config/hypr/img/gnome-background.webp
wallpaper {
monitor = DP-1
path = ~/.config/hypr/img/gnome-background.webp
fit_mode = cover
}
wallpaper {
monitor = DP-2
path = ~/.config/hypr/img/gnome-background.webp
fit_mode = cover
}
splash = false

1
.config/settings.json Symbolic link
View File

@ -0,0 +1 @@
vicinae/settings.json

View File

@ -0,0 +1,51 @@
theme = "dracula"
client_id = "7fed45e8d6ec4ff1b50e5464852fe136"
client_port = 8080
login_redirect_uri = "http://127.0.0.1:8989/login"
playback_format = """
{status} {track} • {artists} {liked}
{album}
{metadata}"""
notify_timeout_in_secs = 0
tracks_playback_limit = 50
app_refresh_duration_in_ms = 32
playback_refresh_duration_in_ms = 0
page_size_in_rows = 20
play_icon = "▶"
pause_icon = "▌▌"
liked_icon = "♥"
border_type = "Plain"
progress_bar_type = "Rectangle"
cover_img_length = 9
cover_img_width = 5
cover_img_scale = 1.0
cover_img_pixels = 64
enable_media_control = true
enable_streaming = "Always"
enable_notify = true
enable_cover_image_cache = true
default_device = "spotify-player"
notify_streaming_only = false
seek_duration_secs = 5
sort_artist_albums_by_type = false
[notify_format]
summary = "{track} • {artists}"
body = "{album}"
[layout]
playback_window_position = "Top"
playback_window_height = 6
[layout.library]
playlist_percent = 40
album_percent = 40
[device]
name = "spotify-player"
device_type = "speaker"
volume = 70
bitrate = 320
audio_cache = false
normalization = false
autoplay = false

11
.config/vicinae/.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,11 @@
{
"[json]": {
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll": "explicit"
}
},
"[jsonc]": {
"editor.formatOnSave": true
},
}

View File

@ -0,0 +1,186 @@
{
"$schema": "https://vicinae.com/schemas/config.json",
// A list of paths pointed to separate configuration files to source during loading.
// Note that values defined in the main configuration file always take precedence over imported
// files.
// Relative paths are accepted, and are relative to the configuration directory in which the importing configuration file is located.
"imports": [],
// Whether root search should also search files directly.
// File search is performed asynchrounously: files may take an instant to appear after a query is entered.
// Turning this on results in an increase in CPU usage when searching.
// Note that vicinae has a built-in file search command that can be used to perform file search in isolation, accompanied with
// rich content preview. This should be more than enough for most users.
"search_files_in_root": false,
// What vicinae should do when the "escape" key is pressed
// Supports "navigate_back" or "close_window"
"escape_key_behavior": "navigate_back",
// If the layer shell protocol is used to position the window and the keyboard interactivity is
// set to "exclusive" (the default) then this setting will have no effect. Either switch to "on_demand" interactivity
// or disable layer shell.
"close_on_focus_loss": false,
// Whether IME preedit strings should be searched in real time.
"consider_preedit": false,
// Reset the navigation state every time the window is closed
"pop_to_root_on_close": false,
// What favicon service to use when loading favicons is needed.
// Available values are: 'twenty' | 'google' | 'none'
// If this is set to 'none', favicon loading is disabled and a placeholder icon will be used when a favicon is expected.
"favicon_service": "twenty",
// EXPERIMENTAL!
// Enable specific editing motions in the main search bar and during navigation.
// This will probably be changed in future updates.
// Supports: 'default' | 'emacs'
"keybinding": "default",
"font": {
// The font family to use for the general vicinae UI.
// "auto" (recommended): uses the bundled Inter font
// "system": uses the system/platform default font
// Or specify any font family name (e.g. "Fira Sans")
"normal": {
"family": "auto",
// The point size of the font (unlike pixel size, the point size scales with resolution)
"size": 10.5
}
},
// The general vicinae theme as well as the system icon theme (used for applications and file icons) can be customized
// according to the system appearance.
// When editing the current theme through the vicinae GUI, it will modify the value that maps to the current system appearance.
"theme": {
"light": {
"name": "vicinae-light",
"icon_theme": "auto"
},
"dark": {
"name": "vicinae-dark",
"icon_theme": "auto"
}
},
"launcher_window": {
// Control the opacity of the main window.
// Opacity for other surfaces are controlled by the active theme.
"opacity": 0.95,
// Blur the window background.
// Only suported on Hyprland for now.
// May require a server restart to disable properly.
"blur": {
"enabled": true
},
// Dims everything behind the vicinae window.
// Only supported on Hyprland for now.
// May require a server restart to disable properly.
"dim_around": true,
// You can turn client side decorations off if you want to let your compositor draw the rounded
// borders and such. This usually gives better results, but is more complicated to setup, if at all possible.
"client_side_decorations": {
"enabled": true,
"rounding": 10,
"border_width": 2
},
// In compact mode, vicinae only shows a search bar in the root search if no query is entered, only expanding to its full size when searching.
// WARNING: compact mode works best when vicinae is rendered as a layer surface (the default if available), as opposed to a regular floating window.
// That's because the part that is not rendered in compact mode is still part of the full window size, allowing the window to be gracefully expanded without having to deal
// with a compositor window resize which can generate a lot of visual noise. Server side borders and blur will look notably out of place.
"compact_mode": {
"enabled": false
},
// The vicinae UI is designed to work best at the default size. If you change this it is highly recommended
// that you preserve a similar aspect ratio.
"size": {
"width": 770,
"height": 480
},
// EXPERIMENTAL - X11 ONLY!
// The name of the screen (as provided by a tool like xrandr) on which the vicinae window
// needs to be shown.
// e.g "eDP1", "DP-1"
"screen": "auto",
// Only for wayland compositors that support the 'wlr-layer-shell' protocol (https://wayland.app/protocols/wlr-layer-shell-unstable-v1)
// NOTE: layer shell support for the cosmic compositor is explicitly disabled as it is currently broken
"layer_shell": {
"enabled": true,
// 'exclusive' | 'on_demand'
// WARNING: 'exclusive' is known to break mouse stuff on popups (such as the action panel) on Hyprland
"keyboard_interactivity": "on_demand",
// either 'overlay' or 'top'.
// Other layers are not supported as they are unsuitable for a launcher.
// 'top' is recommended as using 'overlay' will make the vicinae window appear on top of IME popovers in some scenarios.
"layer": "top"
}
},
// How much memory (in MB) can be used to cache small image assets in memory directly
// The higher this value is the more memory vicinae will use. In exchange for this, you get lower cpu usage.
"pixmap_cache_mb": 50,
// Keybinds are serialized using a custom format.
// It is recommended to edit them through the settings GUI, which will write them to this file.
"keybinds": {
// common shortcuts
"open-search-filter": "control+P",
"open-settings": "control+,",
"toggle-action-panel": "control+B",
// used to assign shortcuts to generic actions
// if an extension provides a specific kind of action, it is encouraged to use shortcuts as defined here.
"action.copy": "control+shift+C",
"action.copy-name": "control+shift+.",
"action.copy-path": "control+shift+,",
"action.dangerous-remove": "control+shift+X",
"action.duplicate": "control+D",
"action.edit": "control+E",
"action.edit-secondary": "control+shift+E",
"action.move-down": "control+shift+ARROWDOWN",
"action.move-up": "control+shift+ARROWUP",
"action.new": "control+N",
"action.open": "control+O",
"action.pin": "control+shift+P",
"action.refresh": "control+R",
"action.remove": "control+X",
"action.save": "control+S"
},
// List of entrypoints that are tagged as "favorite".
// They show up on the very top of the root search when no search query is active.
// Each value is a serialized entrypoint ID.
"favorites": [
"clipboard:history"
],
// List of entrypoints to suggest as a fallback when no result matches the
// provided search query.
// Each value is a serialized entrypoint ID.
"fallbacks": [
"files:search"
],
// Every item that can be activated from the vicinae root search is referred as an entrypoint, or sometimes, in the case of extensions, as a "command".
// Entrypoints are always grouped under a provider.
// e,g applications entrypoints are all grouped under the "applications" provider
//
// The best way to interact with providers and entrypoints is through the graphical interface provided by the
// settings window ("extensions" tab). Every time a change is made through this GUI, the relevant values will be
// written to the "providers" object below (password preferences excluded).
//
// The exact list of available providers depends on what extensions have been installed.
"providers": {}
}

View File

@ -0,0 +1,22 @@
{
"$schema": "https://vicinae.com/schemas/config.json",
"launcher_window": {
// You can turn client side decorations off if you want to let your compositor draw the rounded
// borders and such. This usually gives better results, but is more complicated to setup, if at all possible.
"client_side_decorations": {
"enabled": false
},
// Only for wayland compositors that support the 'wlr-layer-shell' protocol (https://wayland.app/protocols/wlr-layer-shell-unstable-v1)
// NOTE: layer shell support for the cosmic compositor is explicitly disabled as it is currently broken
"layer_shell": {
"enabled": false,
// 'exclusive' | 'on_demand'
// WARNING: 'exclusive' is known to break mouse stuff on popups (such as the action panel) on Hyprland
"keyboard_interactivity": "on_demand",
// either 'overlay' or 'top'.
// Other layers are not supported as they are unsuitable for a launcher.
// 'top' is recommended as using 'overlay' will make the vicinae window appear on top of IME popovers in some scenarios.
"layer": "top"
}
}
}

View File

@ -0,0 +1,7 @@
{
"$schema": "https://vicinae.com/schemas/config.json",
// If the layer shell protocol is used to position the window and the keyboard interactivity is
// set to "exclusive" (the default) then this setting will have no effect. Either switch to "on_demand" interactivity
// or disable layer shell.
"close_on_focus_loss": false
}

View File

@ -0,0 +1,17 @@
// This configuration is merged with the default vicinae configuration file, which you can obtain by running the `vicinae config default` command.
// Every item defined in this file takes precedence over the values defined in the default config or any other imported file.
//
// You can make manual edits to this file, however you should keep in mind that this file may be written to by vicinae when a configuration change is made through the GUI.
// When that happens, any custom comments or formatting will be lost.
//
// If you want to maintain a configuration file with your own comments and formatting, you should create a separate file and add it to the 'imports' array.
//
// Learn more about configuration at https://docs.vicinae.com/config
{
"$schema": "https://vicinae.com/schemas/config.json",
"imports": [
"appeareance.jsonc",
"general.jsonc"
]
}

View File

@ -1,6 +1,6 @@
{
"layer": "top",
"output": "DP-2",
"output": "DP-1",
"modules-left": [
"custom/power",
"hyprland/workspaces",

View File

@ -0,0 +1,51 @@
# For documentation, FAQ, additional configuration options and technical help, visit: https://github.com/dockur/windows
name: "winapps" # Docker Compose Project Name.
# volumes:
# Create Volume 'data'.
# Located @ '/var/lib/docker/volumes/winapps_data/_data' (Docker).
# Located @ '/var/lib/containers/storage/volumes/winapps_data/_data' or '~/.local/share/containers/storage/volumes/winapps_data/_data' (Podman).
# data:
services:
windows:
image: ghcr.io/dockur/windows:latest
container_name: winapps # Created Docker VM Name.
environment:
# Version of Windows to configure. For valid options, visit:
# https://github.com/dockur/windows?tab=readme-ov-file#how-do-i-select-the-windows-version
# https://github.com/dockur/windows?tab=readme-ov-file#how-do-i-install-a-custom-image
VERSION: "11"
RAM_SIZE: "8G" # RAM allocated to the Windows VM.
CPU_CORES: "4" # CPU cores allocated to the Windows VM.
DISK_SIZE: "64G" # Size of the primary hard disk.
# DISK2_SIZE: "32G" # Uncomment to add an additional hard disk to the Windows VM. Ensure it is mounted as a volume below.
USERNAME: "paul" # Edit here to set a custom Windows username. The default is 'MyWindowsUser'.
PASSWORD: "nicerdicer" # Edit here to set a password for the Windows user. The default is 'MyWindowsPassword'.
HOME: "${HOME}" # Set path to Linux user home folder.
ARGUMENTS: "-cpu host,arch_capabilities=off"
ports:
- 8006:8006 # Map '8006' on Linux host to '8006' on Windows VM --> For VNC Web Interface @ http://127.0.0.1:8006.
- 3389:3389/tcp # Map '3389' on Linux host to '3389' on Windows VM --> For Remote Desktop Protocol (RDP).
- 3389:3389/udp # Map '3389' on Linux host to '3389' on Windows VM --> For Remote Desktop Protocol (RDP).
cap_add:
- NET_ADMIN # Add network permission
stop_grace_period: 120s # Wait 120 seconds before sending SIGTERM when attempting to shut down the Windows VM.
restart: on-failure # Restart the Windows VM if the exit code indicates an error.
volumes:
- ~/.winapps:/storage # Mount local folder 'data' to use as Windows 'C:' drive.
- ${HOME}:/shared # Mount Linux user home directory @ '\\host.lan\Data'.
#- /path/to/second/hard/disk:/storage2 # Uncomment to create a virtual second hard disk and mount it within the Windows VM. Ensure 'DISK2_SIZE' is specified above.
- ./oem:/oem # Enables automatic post-install execution of 'oem/install.bat', applying Windows registry modifications contained within 'oem/RDPApps.reg'.
#- /path/to/windows/install/media.iso:/custom.iso # Uncomment to use a custom Windows ISO. If specified, 'VERSION' (e.g. 'tiny11') will be ignored.
devices:
- /dev/kvm # Enable KVM.
- /dev/net/tun # Enable tuntap
# Uncomment to mount a disk directly within the Windows VM.
# WARNING: /dev/sdX paths may change after reboot. Use persistent identifiers!
# NOTE: 'disk1' will be mounted as the main drive. THIS DISK WILL BE FORMATTED BY DOCKER.
# All following disks (disk2, ...) WILL NOT BE FORMATTED.
# - /dev/disk/by-id/<id>:/disk1
# - /dev/disk/by-id/<id>:/disk2
# group_add: # uncomment this line and the next one for using rootless podman containers
# - keep-groups # to make /dev/kvm work with podman. needs "crun" installed, "runc" will not work! Add your user to the 'kvm' group or another that can access /dev/kvm.

1794
.config/winapps/setup.sh Executable file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,139 @@
##################################
# WINAPPS CONFIGURATION FILE #
##################################
# INSTRUCTIONS
# - Leading and trailing whitespace are ignored.
# - Empty lines are ignored.
# - Lines starting with '#' are ignored.
# - All characters following a '#' are ignored.
# [WINDOWS USERNAME]
RDP_USER="paul"
# [WINDOWS PASSWORD]
# NOTES:
# - If using FreeRDP v3.9.0 or greater, you *have* to set a password
RDP_PASS="nicerdicer"
# [WINDOWS DOMAIN]
# DEFAULT VALUE: '' (BLANK)
RDP_DOMAIN=""
# [WINDOWS IPV4 ADDRESS]
# NOTES:
# - If using 'libvirt', 'RDP_IP' will be determined by WinApps at runtime if left unspecified.
# DEFAULT VALUE:
# - 'docker': '127.0.0.1'
# - 'podman': '127.0.0.1'
# - 'libvirt': '' (BLANK)
RDP_IP="127.0.0.1"
# [VM NAME]
# NOTES:
# - Only applicable when using 'libvirt'
# - The libvirt VM name must match so that WinApps can determine VM IP, start the VM, etc.
# DEFAULT VALUE: 'RDPWindows'
VM_NAME="RDPWindows"
# [WINAPPS BACKEND]
# DEFAULT VALUE: 'docker'
# VALID VALUES:
# - 'docker'
# - 'podman'
# - 'libvirt'
# - 'manual'
WAFLAVOR="docker"
# [DISPLAY SCALING FACTOR]
# NOTES:
# - If an unsupported value is specified, a warning will be displayed.
# - If an unsupported value is specified, WinApps will use the closest supported value.
# DEFAULT VALUE: '100'
# VALID VALUES:
# - '100'
# - '140'
# - '180'
RDP_SCALE="100"
# [MOUNTING REMOVABLE PATHS FOR FILES]
# NOTES:
# - By default, `udisks` (which you most likely have installed) uses /run/media for mounting removable devices.
# This improves compatibility with most desktop environments (DEs).
# ATTENTION: The Filesystem Hierarchy Standard (FHS) recommends /media instead. Verify your system's configuration.
# - To manually mount devices, you may optionally use /mnt.
# REFERENCE: https://wiki.archlinux.org/title/Udisks#Mount_to_/media
REMOVABLE_MEDIA="/run/media"
# [ADDITIONAL FREERDP FLAGS & ARGUMENTS]
# NOTES:
# - You can try adding /network:lan to these flags in order to increase performance, however, some users have faced issues with this.
# DEFAULT VALUE: '/cert:tofu /sound /microphone +home-drive'
# VALID VALUES: See https://github.com/awakecoding/FreeRDP-Manuals/blob/master/User/FreeRDP-User-Manual.markdown
RDP_FLAGS="/cert:tofu /sound /microphone +home-drive"
# [DEBUG WINAPPS]
# NOTES:
# - Creates and appends to ~/.local/share/winapps/winapps.log when running WinApps.
# DEFAULT VALUE: 'true'
# VALID VALUES:
# - 'true'
# - 'false'
DEBUG="true"
# [AUTOMATICALLY PAUSE WINDOWS]
# NOTES:
# - This is currently INCOMPATIBLE with 'docker' and 'manual'.
# - See https://github.com/dockur/windows/issues/674
# DEFAULT VALUE: 'off'
# VALID VALUES:
# - 'on'
# - 'off'
AUTOPAUSE="off"
# [AUTOMATICALLY PAUSE WINDOWS TIMEOUT]
# NOTES:
# - This setting determines the duration of inactivity to tolerate before Windows is automatically paused.
# - This setting is ignored if 'AUTOPAUSE' is set to 'off'.
# - The value must be specified in seconds (to the nearest 10 seconds e.g., '30', '40', '50', etc.).
# - For RemoteApp RDP sessions, there is a mandatory 20-second delay, so the minimum value that can be specified here is '20'.
# - Source: https://techcommunity.microsoft.com/t5/security-compliance-and-identity/terminal-services-remoteapp-8482-session-termination-logic/ba-p/246566
# DEFAULT VALUE: '300'
# VALID VALUES: >=20
AUTOPAUSE_TIME="300"
# [FREERDP COMMAND]
# NOTES:
# - WinApps will attempt to automatically detect the correct command to use for your system.
# DEFAULT VALUE: '' (BLANK)
# VALID VALUES: The command required to run FreeRDPv3 on your system (e.g., 'xfreerdp', 'xfreerdp3', etc.).
FREERDP_COMMAND=""
# [TIMEOUTS]
# NOTES:
# - These settings control various timeout durations within the WinApps setup.
# - Increasing the timeouts is only necessary if the corresponding errors occur.
# - Ensure you have followed all the Troubleshooting Tips in the error message first.
# PORT CHECK
# - The maximum time (in seconds) to wait when checking if the RDP port on Windows is open.
# - Corresponding error: "NETWORK CONFIGURATION ERROR" (exit status 13).
# DEFAULT VALUE: '5'
PORT_TIMEOUT="5"
# RDP CONNECTION TEST
# - The maximum time (in seconds) to wait when testing the initial RDP connection to Windows.
# - Corresponding error: "REMOTE DESKTOP PROTOCOL FAILURE" (exit status 14).
# DEFAULT VALUE: '30'
RDP_TIMEOUT="30"
# APPLICATION SCAN
# - The maximum time (in seconds) to wait for the script that scans for installed applications on Windows to complete.
# - Corresponding error: "APPLICATION QUERY FAILURE" (exit status 15).
# DEFAULT VALUE: '60'
APP_SCAN_TIMEOUT="60"
# WINDOWS BOOT
# - The maximum time (in seconds) to wait for the Windows VM to boot if it is not running, before attempting to launch an application.
# DEFAULT VALUE: '120'
BOOT_TIMEOUT="120"

View File

@ -0,0 +1,30 @@
#!/usr/bin/env python3
import subprocess
from argparse import ArgumentParser
if __name__ == "__main__":
parser = ArgumentParser(description="GTK theme switcher")
parser.add_argument(
"mode",
help="The mode to switch the GTK theme to (e.g., 'dark' or 'light')",
)
args = parser.parse_args()
if args.mode not in ["dark", "light"]:
print("Invalid mode. Please choose 'dark' or 'light'.")
exit(1)
gtk_theme = "Adwaita-dark" if args.mode == "dark" else "Adwaita"
color_scheme = "prefer-dark" if args.mode == "dark" else "prefer-light"
# Set the GTK theme using gsettings
subprocess.run(
["gsettings", "set", "org.gnome.desktop.interface", "gtk-theme", gtk_theme],
check=True,
)
subprocess.run(
["gsettings", "set", "org.gnome.desktop.interface", "color-scheme", color_scheme],
check=True,
)

View File

@ -0,0 +1,39 @@
#!/usr/bin/env python3
import re
from argparse import ArgumentParser
from pathlib import Path
if __name__ == "__main__":
parser = ArgumentParser(description="VS Code theme switcher")
parser.add_argument(
"mode",
help="The mode to switch the VS Code theme to (e.g., 'dark' or 'light')",
)
args = parser.parse_args()
if args.mode not in ["dark", "light"]:
print("Invalid mode. Please choose 'dark' or 'light'.")
exit(1)
settings = Path.home() / ".config/Code/User/settings.json"
if not settings.exists():
print(f"VS Code settings file not found at {settings}")
exit(1)
# We just replace the theme name in the settings file using regex,
# this way we don't have to worry about jsonc parsing.
theme = "Monokai Pro" if args.mode == "dark" else "Monokai Pro Light"
with settings.open("r") as f:
content = f.read()
new_content = re.sub(
r'"workbench\.colorTheme"\s*:\s*".*?"',
f'"workbench.colorTheme": "{theme}"',
content,
)
with settings.open("w") as f:
f.write(new_content)

7
.zshrc
View File

@ -142,13 +142,14 @@ alias open="xdg-open"
alias lg="lazygit"
alias ccat="pygmentize -g -O style=monokai,linenos=1"
alias rm="echo Use the full path i.e. '/bin/rm', consider using: trash"
alias explain="gh copilot explain"
alias explain="copilot explain"
alias csv="csvlens"
alias wstmux="cd ~/code/wasteside/app && tmux new -A -s wasteside"
alias R="R --no-save"
# Python tkinter stuff
export PATH="/usr/local/opt/tcl-tk/bin:$PATH"
@ -158,6 +159,8 @@ export PATH="/usr/local/opt/tcl-tk/bin:$PATH"
# ws shortcuts
alias wsproddb="psql -h ep-shiny-brook-a23l5gzv-pooler.eu-central-1.aws.neon.tech -d neondb -U neondb_owner"
alias wsdevdb="psql -h ep-bitter-queen-a2jgwcaj-pooler.eu-central-1.aws.neon.tech -d verceldb -U default"
alias wsrecupdb="psql -h ep-icy-dew-aggbrr4l-pooler.c-2.eu-central-1.aws.neon.tech -d neondb -U neondb_owner"
alias wsrecupdevdb="psql -h ep-broad-base-ag8vy0hl-pooler.c-2.eu-central-1.aws.neon.tech -d neondb -U neondb_owner"
# Fix ls colors for synology directories
LS_COLORS+=':ow=01;33'
@ -170,6 +173,8 @@ HISTFILE=~/.histfile
HISTSIZE=10000
SAVEHIST=10000
export XDG_DATA_DIRS="$HOME/.local/share:$XDG_DATA_DIRS"
# Android tools
export ANDROID_SDK_ROOT="$HOME/.local/opt/android-sdk"
export ANDROID_HOME="$ANDROID_SDK_ROOT"