37 Commits
Author SHA1 Message Date
jozamudi 63345e51e3 unify color palette, harden shikane service, misc sway/opencode updates
sway:
- config: re-apply shikane profile after every reload
  (exec_always shikanectl reload); restart waybar on reload
  (exec_always pkill+waybar); enable default_border pixel 2;
  add tlpctl power-saver at startup
- keybinds: disable floating_modifier (was "$mod normal") -
  experiment for windows popping out via accidental mod+click
- windows: case-insensitive pydm title match for floating rule
- swayfx + waybar style: unified 5-color palette (base00-0F) with
  doc headers; waybar theme restyled to match the sway palette
- waybar config: scratchpad module in left bar, "S{count}" format
- new quickshell shell.qml bar

systemd user units:
- shikane.service: bind to graphical-session/sway-session targets,
  Type=simple, Restart=on-failure (2s) with start limits so crashes
  recover without giving up permanently
- new sway-session.target and its wants/ symlinks

opencode:
- load AGENTS.md as instructions (new file)
- move OpenWebUI API key from hardcoded to {env:OPENWEBUI_API_KEY}
2026-09-28 14:04:22 -07:00
jozamudi e338d15922 add shikane-watchdog user service to auto-recover shikane deadlocks 2026-09-28 14:04:22 -07:00
jozamudi e3643c3ae2 fix(nvim): use clipboard:append for unnamedplus; add sway dbus-update script 2026-07-06 16:13:38 -07:00
jozamudi cc949db097 Fix sway session setup and migrate waybar to sway modules
- Start xdg-desktop-portal-wlr and sway-session.target for proper portal init
- Re-enable systemd/dbus environment import for Wayland session vars
- Move hypridle startup earlier
- Switch waybar left modules from hyprland/* to sway/*
2026-06-10 18:10:43 -07:00
jozamudi b4b2ca0d43 refactor: strip waybar icons, disable pseudotile/VFR, clean up configs
Waybar:
- Remove Nerd Font icons from battery, power, audio, media modules
- Switch power profile to text format, simplify all format strings
- Mango config: switch sway/* to hyprland/* modules, remove unused modules

Hyprland:
- Disable pseudotile and VFR

Sway:
- Fix clamshell script path (jozamudi -> work)
- Comment out gsettings, systemctl, dbus exec lines
- Delete unused env.sh script

Other:
- Delete nvim llm plugin and opencode coding-partner agent
- Delete Zoom and Nextcloud desktop entries
- Migrate Discord to Flatpak
- Rotate opencode API key
- Add extended-keys to tmux config
- Clear defaults.list
2026-06-03 10:11:06 -07:00
jozamudi b52849f1dc add opencode configuration with symlink support 2026-05-07 09:52:03 -07:00
jozamudi 8630f6318e chore: update waybar, nvim llm plugin, and sway config
- Replace sway window module with hyprland submap in waybar
- Move clock to right side and update display format
- Enable battery time display and update workspace button styling
- Update nvim llm plugin model ID, backend URL, and FIM tokens
- Uncomment default terminal and add GTK/Qt wayland env vars in sway
2026-05-04 16:59:40 -07:00
jozamudi 0784b17f26 feat(hyprland): replace sway modules with hyprland equivalents (submap, window) 2026-05-04 16:33:56 -07:00
jozamudi cd2d55137b fix(hyprland): switch workspaces module and add active workspace styling 2026-05-04 16:31:17 -07:00
jozamudi 2ad618af1b feat: nvim; llm inline llm autocomplete 2026-03-08 10:17:22 -07:00
jozamudi 7ebe8337b0 hyprlock: reduce input field size, move clock to bottom 2026-03-07 15:18:27 -08:00
jozamudi cad7412741 refactor: adjust hyprland, kitty, and nvim settings
- hyprland: add hy3 plugin config, prefer kitty terminal, change shift+exit to E
- kitty: reduce font size to 10.5
- nvim: change indent width to 2 spaces
- nvim: replace avante with parrot (Ollama provider)
- nvim: temporarily disable treesitter install
2026-03-07 15:12:35 -08:00
jozamudi 8e87a3a909 feat: hyprland; set env variables to prefer wayland. nvim; ai plugin 2026-02-10 15:04:26 -08:00
jozamudi 88af90e9ee Changes to be committed:
modified:   .config/hypr/hyprland.conf
	modified:   .config/nvim/lua/plugins/treesitter.lua
2026-02-08 09:11:24 -08:00
jozamudi b09ebf25d5 Changes to be committed:
modified:   .config/sway/config
	deleted:    .config/sway/waybar
	new file:   .config/sway/waybar/config.jsonc
	new file:   .config/sway/waybar/style.css
	new file:   .config/systemd/user/default.target.wants/shikane.service
	new file:   .config/systemd/user/shikane.service
	modified:   .zshrc
	new file:   applications/application.desktop
2026-02-06 10:28:14 -08:00
jozamudi e99e6b3d92 feat: use hyprile; zsh better prompt; 2026-02-05 22:25:36 -08:00
jozamudi fc10f8c36d Changes to be committed:
modified:   .config/hypr/hyprland.conf
	modified:   .config/kitty/kitty.conf
	modified:   .config/nvim/init.lua
	modified:   .config/nvim/lua/plugins/colorscheme.lua
	new file:   .config/nvim/lua/plugins/outline.lua
	modified:   .config/nvim/lua/plugins/treesitter.lua
2026-02-05 21:48:50 -08:00
jozamudi 9b066c7dd8 Changes to be committed:
modified:   .config/hypr/hyprland.conf
	modified:   .config/kitty/kitty.conf
	modified:   .zshrc
2026-02-05 09:49:45 -08:00
jozamudi 05c9fbada5 feat: zsh color 2026-01-26 09:23:33 -08:00
jozamudi fcdfa97317 feat: sway waybar config, and change font size for kitty 2026-01-24 20:16:01 -08:00
jozamudi 592db54a84 feat: hypridle and hyprlock 2026-01-24 20:16:01 -08:00
jozamudi 5d7301d01f merege 2026-01-20 09:27:00 -08:00
jozamudi b9888fa856 fix: nvim treesitter error, add hyperland lock keybind and some other cosmetic settings 2026-01-20 09:13:03 -08:00
jozamudi 33d2198ff6 fix: snippits leaving icons on autocomplete 2026-01-19 23:01:47 -08:00
jozamudi e72e7289d9 feat: screenshots, scaling, and h3:layout changes 2026-01-15 09:06:06 -08:00
jozamudi 0ff69d94b3 fix: xwayland scaling 2026-01-05 15:06:24 -08:00
jozamudi ee3428acd0 latest 2026-01-01 15:23:37 -08:00
jozamudi 087b6e8422 latest 2025-12-26 10:35:15 -08:00
jozamudi 685dcfa301 fix: gitignore 2025-12-26 10:34:05 -08:00
jozamudi 0d9fd45d34 feat: hyperland with i3 manual tiling 2025-12-25 07:51:28 -08:00
jozamudi 970a284ebc latest 2025-12-23 19:33:56 -08:00
jozamudi e2da3d9a20 feat: Waybar 2025-12-19 22:14:03 -08:00
jozamudi acd842c2aa latest lsp config with mason and autocomplete 2025-12-15 15:49:30 -08:00
jozamudi 798d6bb69c Add autoload autocommands for file change reload 2025-12-01 20:03:07 -08:00
jozamudi 833d17bc94 Update sway config to set Mod4 as mod key and other tweaks 2025-12-01 20:02:30 -08:00
jozamudi a1ef3c6e12 feat:new nvim config and some other stuff 2025-11-29 11:30:17 -08:00
jozamudi d524ebac95 latest 2025-11-21 08:19:00 -08:00
54 changed files with 2070 additions and 1074 deletions

No files matched your search

+34
View File
@@ -0,0 +1,34 @@
general {
lock_cmd = pidof hyprlock || hyprlock # avoid starting multiple hyprlock instances.
before_sleep_cmd = loginctl lock-session # lock before suspend.
after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display.
}
listener {
timeout = 150 # 2.5min.
on-timeout = brightnessctl -s set 10 # set monitor backlight to minimum, avoid 0 on OLED monitor.
on-resume = brightnessctl -r # monitor backlight restore.
}
# turn off keyboard backlight, comment out this section if you dont have a keyboard backlight.
listener {
timeout = 150 # 2.5min.
on-timeout = brightnessctl -sd rgb:kbd_backlight set 0 # turn off keyboard backlight.
on-resume = brightnessctl -rd rgb:kbd_backlight # turn on keyboard backlight.
}
listener {
timeout = 300 # 5min
on-timeout = loginctl lock-session # lock screen when timeout has passed
}
listener {
timeout = 330 # 5.5min
on-timeout = hyprctl dispatch dpms off # screen off when timeout has passed
on-resume = hyprctl dispatch dpms on && brightnessctl -r # screen on when activity is detected after timeout has fired.
}
listener {
timeout = 1800 # 30min
on-timeout = systemctl suspend # suspend pc
}
+208 -106
View File
@@ -1,15 +1,14 @@
# ####################################################################################### # #######################################################################################
# AUTOGENERATED HYPR CONFIG. # AUTOGENERATED HYPRLAND CONFIG.
# PLEASE USE THE CONFIG PROVIDED IN THE GIT REPO /examples/hypr.conf AND EDIT IT, # EDIT THIS CONFIG ACCORDING TO THE WIKI INSTRUCTIONS.
# OR EDIT THIS ONE ACCORDING TO THE WIKI INSTRUCTIONS.
# ####################################################################################### # #######################################################################################
autogenerated = 0 # remove this line to remove the warning autogenerated = 0 # remove this line to remove the warning
# This is an example Hyprland config file. # This is an example Hyprland config file.
# Refer to the wiki for more information. # Refer to the wiki for more information.
# https://wiki.hyprland.org/Configuring/Configuring-Hyprland/ # https://wiki.hypr.land/Configuring/
# Please note not all available settings / options are set here. # Please note not all available settings / options are set here.
# For a full list, see the wiki # For a full list, see the wiki
@@ -23,21 +22,22 @@ autogenerated = 0 # remove this line to remove the warning
### MONITORS ### ### MONITORS ###
################ ################
# See https://wiki.hyprland.org/Configuring/Monitors/ # See https://wiki.hypr.land/Configuring/Monitors/
monitor=DP-6,preferred,0x0,auto monitor=,preferred,auto,auto
monitor=eDP-1,preferred,0x2160,1.8 #exec-once = swaybg -i /usr/share/backgrounds/gnome/vnc-d.png
################### ###################
### MY PROGRAMS ### ### MY PROGRAMS ###
################### ###################
# See https://wiki.hyprland.org/Configuring/Keywords/ # See https://wiki.hypr.land/Configuring/Keywords/
# Set programs that you use # Set programs that you use
$terminal = footclient $terminal = kitty
$fileManager = dolphin #$terminal = foot
$menu = wofi --show drun $fileManager = nautilus
$menu = wofi --show drun -GI
################# #################
@@ -46,66 +46,102 @@ $menu = wofi --show drun
# Autostart necessary processes (like notifications daemons, status bars, etc.) # Autostart necessary processes (like notifications daemons, status bars, etc.)
# Or execute your favorite apps at launch like this: # Or execute your favorite apps at launch like this:
exec-once = waybar
exec-once = foot --server
exec-once = nextcloud-desktop-client.nextcoud
# exec-once = $terminal # exec-once = $terminal
# exec-once = nm-applet & # exec-once = nm-applet &
# exec-once = waybar & hyprpaper & firefox # exec-once = waybar & hyprpaper & firefox
exec-once = hypridle &
exec-once = nm-applet &
exec-once = blueman-applet &
exec-once = shikane &
exec-once = waybar -c ~/.config/hypr/waybar/config.jsonc -s ~/.config/hypr/waybar/style.css &
exec-once = hyprpm reload -n
exec-once = flatpak run com.github.wwmm.easyeffects -w &
exec-once = systemctl --user start hyprpolkitagent
exec-once = xrdb -merge ~/.Xresources
exec-once = gsettings set org.gnome.desktop.interface color-scheme "prefer-dark"
############################# #############################
### ENVIRONMENT VARIABLES ### ### ENVIRONMENT VARIABLES ###
############################# #############################
# See https://wiki.hyprland.org/Configuring/Environment-variables/ # See https://wiki.hypr.land/Configuring/Environment-variables/
env = XCURSOR_SIZE,24 env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24 env = HYPRCURSOR_SIZE,24
env = GDK_BACKEND,wayland,x11
env = QT_QPA_PLATFORM,wayland;xcb
env = ELECTRON_OZONE_PLATFORM_HINT,auto
###################
### 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 ### ### LOOK AND FEEL ###
##################### #####################
# Refer to https://wiki.hyprland.org/Configuring/Variables/ # Refer to https://wiki.hypr.land/Configuring/Variables/
# https://wiki.hyprland.org/Configuring/Variables/#general # https://wiki.hypr.land/Configuring/Variables/#general
general { general {
gaps_in = 2 gaps_in = 2
gaps_out = 2 gaps_out = 2
border_size = 1 border_size = 1
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors # https://wiki.hypr.land/Configuring/Variables/#variable-types for info about colors
col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
col.inactive_border = rgba(595959aa) col.inactive_border = rgba(595959aa)
# Set to true enable resizing windows by clicking and dragging on borders and gaps # Set to true enable resizing windows by clicking and dragging on borders and gaps
resize_on_border = true resize_on_border = true
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on # Please see https://wiki.hypr.land/Configuring/Tearing/ before you turn this on
allow_tearing = false allow_tearing = true
layout = dwindle #layout = dwindle
layout = hy3
} }
# https://wiki.hyprland.org/Configuring/Variables/#decoration
# https://wiki.hypr.land/Configuring/Variables/#decoration
decoration { decoration {
rounding = 10 rounding = 6
rounding_power = 3
# Change transparency of focused and unfocused windows # Change transparency of focused and unfocused windows
active_opacity = 1.0 active_opacity = 1.0
inactive_opacity = 1.0 inactive_opacity = 1.0
drop_shadow = true shadow {
shadow_range = 4 enabled = false
shadow_render_power = 3 range = 4
col.shadow = rgba(1a1a1aee) render_power = 3
color = rgba(1a1a1aee)
}
# https://wiki.hyprland.org/Configuring/Variables/#blur # https://wiki.hypr.land/Configuring/Variables/#blur
blur { blur {
enabled = true enabled = false
size = 3 size = 3
passes = 1 passes = 1
@@ -113,45 +149,95 @@ decoration {
} }
} }
# https://wiki.hyprland.org/Configuring/Variables/#animations # https://wiki.hypr.land/Configuring/Variables/#animations
animations { animations {
enabled = true #enabled = yes, please :)
enabled = no
# Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
bezier = myBezier, 0.05, 0.9, 0.1, 1.05 # Default curves, see https://wiki.hypr.land/Configuring/Animations/#curves
# NAME, X0, Y0, X1, Y1
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
bezier = quick, 0.15, 0, 0.1, 1
animation = windows, 1, 7, myBezier # Default animations, see https://wiki.hypr.land/Configuring/Animations/
animation = windowsOut, 1, 7, default, popin 80% # NAME, ONOFF, SPEED, CURVE, [STYLE]
animation = border, 1, 10, default animation = global, 1, 10, default
animation = borderangle, 1, 8, default animation = border, 1, 5.39, easeOutQuint
animation = fade, 1, 7, default animation = windows, 1, 4.79, easeOutQuint
animation = workspaces, 1, 6, default 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, 1.94, almostLinear, fade
animation = workspacesIn, 1, 1.21, almostLinear, fade
animation = workspacesOut, 1, 1.94, almostLinear, fade
animation = zoomFactor, 1, 7, quick
} }
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more # 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 { dwindle {
pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below #pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = true # You probably want this preserve_split = true # You probably want this
} }
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more # See https://wiki.hypr.land/Configuring/Master-Layout/ for more
master { master {
new_status = master new_status = master
} }
# https://wiki.hyprland.org/Configuring/Variables/#misc # https://wiki.hypr.land/Configuring/Variables/#misc
misc { misc {
force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers force_default_wallpaper = 0 # Set to 0 or 1 to disable the anime mascot wallpapers
disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :( disable_hyprland_logo = true# If true disables the random hyprland logo / anime girl background. :(
#vfr = true
} }
xwayland {
force_zero_scaling = true
}
env = GTK_SCALE,1
env = XCURSOR_SIZE,32
plugin {
hy3 {
tabs {
# height of the tab bar
height = 2 # default: 22
# render the window title on the bar
render_text = false # default: true
}
}
}
############# #############
### INPUT ### ### INPUT ###
############# #############
# https://wiki.hyprland.org/Configuring/Variables/#input # https://wiki.hypr.land/Configuring/Variables/#input
input { input {
kb_layout = us kb_layout = us
kb_variant = kb_variant =
@@ -165,64 +251,70 @@ input {
touchpad { touchpad {
natural_scroll = false natural_scroll = false
tap-to-click = false
} }
} }
# https://wiki.hyprland.org/Configuring/Variables/#gestures # See https://wiki.hypr.land/Configuring/Gestures
gestures { gesture = 3, horizontal, workspace
workspace_swipe = true
}
# Example per-device config # Example per-device config
# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more # See https://wiki.hypr.land/Configuring/Keywords/#per-device-input-configs for more
device { device {
name = epic-mouse-v1 name = epic-mouse-v1
sensitivity = -0.5 sensitivity = -0.5
} }
#################### ###################
### KEYBINDINGSS ### ### KEYBINDINGS ###
#################### ###################
# See https://wiki.hyprland.org/Configuring/Keywords/ # See https://wiki.hypr.land/Configuring/Keywords/
$mainMod = SUPER # Sets "Windows" key as main modifier $mainMod = SUPER # Sets "Windows" key as main modifier
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more # Example binds, see https://wiki.hypr.land/Configuring/Binds/ for more
bind = $mainMod, RETURN, exec, $terminal bind = $mainMod, RETURN, exec, $terminal
bind = $mainMod, R, exec, $menu bind = $mainMod, D, exec, $menu
bind = $mainMod, E, exec, $fileManager bind = $mainMod, F, fullscreen
bind = $mainMod, M, exec, hyprlock
#bind = $mainMod, J, togglesplit, # dwindle
bind = $mainMod, W, togglegroup,
bind = $mainMod SHIFT, SPACE, togglefloating, bind = $mainMod SHIFT, SPACE, togglefloating,
bind = $mainMod SHIFT, Q, killactive, bind = $mainMod SHIFT, Q, hy3:killactive,
bind = $mainMod SHIFT, M, exit, bind = $mainMod SHIFT, E, exit,
bind = $mainMod SHIFT, S, pin
# Move focus with hjkl
bind = $mainMod, h, movefocus, l
bind = $mainMod, l, movefocus, r
bind = $mainMod, k, movefocus, u
bind = $mainMod, j, movefocus, d
# Move focus with hjkl
bind = $mainMod SHIFT, h, movewindoworgroup, l
bind = $mainMod SHIFT, l, movewindoworgroup, r
bind = $mainMod SHIFT, k, movewindoworgroup, u
bind = $mainMod SHIFT, j, movewindoworgroup, d
# move inside of grouped windows
bind = $mainMod, n, changegroupactive, f
bind = $mainMod, p, changegroupactive, b
bind = $mainMod, B, hy3:makegroup, h
bind = $mainMod, V, hy3:makegroup, v
bind = $mainMod, W, hy3:makegroup, tab
bind = $mainMod, X, hy3:locktab
bind = $mainMod, R, hy3:changegroup, opposite
#bind = $mainMod SHIFT, A, hy3:changefocus, lower
#bind = $mainMod, A, hy3:changefocus, raise
#bind = $mainMod SHIFT, E, hy3:expand, base
#bind = $mainMod, E, hy3:expand, expand
# Move focus with mainMod + arrow keys # Move focus with mainMod + arrow keys
bind = $mainMod, left, movefocus, l bind = $mainMod, h, hy3:movefocus, l
bind = $mainMod, right, movefocus, r bind = $mainMod, j, hy3:movefocus, d
bind = $mainMod, up, movefocus, u bind = $mainMod, k, hy3:movefocus, u
bind = $mainMod, down, movefocus, d bind = $mainMod, l, hy3:movefocus, r
bind = $mainMod, left, hy3:movefocus, l
bind = $mainMod, down, hy3:movefocus, d
bind = $mainMod, up, hy3:movefocus, u
bind = $mainMod, right, hy3:movefocus, r
bind = $mainMod SHIFT, h, hy3:movewindow, l, once
bind = $mainMod SHIFT, j, hy3:movewindow, d, once
bind = $mainMod SHIFT, k, hy3:movewindow, u, once
bind = $mainMod SHIFT, l, hy3:movewindow, r, once
bind = $mainMod SHIFT, left, hy3:movewindow, l, once
bind = $mainMod SHIFT, down, hy3:movewindow, d, once
bind = $mainMod SHIFT, up, hy3:movewindow, u, once
bind = $mainMod SHIFT, right, hy3:movewindow, r, once
# Switch workspaces with mainMod + [0-9] # Switch workspaces with mainMod + [0-9]
bind = $mainMod, 1, workspace, 1 bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2 bind = $mainMod, 2, workspace, 2
@@ -236,24 +328,16 @@ bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10 bind = $mainMod, 0, workspace, 10
# Move active window to a workspace with mainMod + SHIFT + [0-9] # Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, 1, movetoworkspace, 1 bind = $mainMod SHIFT, 1, hy3:movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2 bind = $mainMod SHIFT, 2, hy3:movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3 bind = $mainMod SHIFT, 3, hy3:movetoworkspace, 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4 bind = $mainMod SHIFT, 4, hy3:movetoworkspace, 4
bind = $mainMod SHIFT, 5, movetoworkspace, 5 bind = $mainMod SHIFT, 5, hy3:movetoworkspace, 5
bind = $mainMod SHIFT, 6, movetoworkspace, 6 bind = $mainMod SHIFT, 6, hy3:movetoworkspace, 6
bind = $mainMod SHIFT, 7, movetoworkspace, 7 bind = $mainMod SHIFT, 7, hy3:movetoworkspace, 7
bind = $mainMod SHIFT, 8, movetoworkspace, 8 bind = $mainMod SHIFT, 8, hy3:movetoworkspace, 8
bind = $mainMod SHIFT, 9, movetoworkspace, 9 bind = $mainMod SHIFT, 9, hy3:movetoworkspace, 9
bind = $mainMod SHIFT, 0, movetoworkspace, 10 bind = $mainMod SHIFT, 0, hy3:movetoworkspace, 10
bind = $mainMod, F, fullscreen
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume @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 = ,XF86MonBrightnessDown, exec, brightnessctl set 5%-
bindel = ,XF86MonBrightnessUp ,exec ,brightnessctl set 5%+
# Example special workspace (scratchpad) # Example special workspace (scratchpad)
bind = $mainMod, MINUS, togglespecialworkspace, magic bind = $mainMod, MINUS, togglespecialworkspace, magic
@@ -267,18 +351,36 @@ bind = $mainMod, mouse_up, workspace, e-1
bindm = $mainMod, mouse:272, movewindow bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow 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%-
# 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
bindel = $mainMod, p, exec, grimshot --notify savecopy anything
bindel = $mainMod, m, exec, shikanectl reload
############################## ##############################
### WINDOWS AND WORKSPACES ### ### WINDOWS AND WORKSPACES ###
############################## ##############################
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more # See https://wiki.hypr.land/Configuring/Window-Rules/ for more
# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules # See https://wiki.hypr.land/Configuring/Workspace-Rules/ for workspace rules
# Example windowrule v1 # Example windowrule
# windowrule = float, ^(kitty)$ # windowrule = float,class:^(kitty)$,title:^(kitty)$
# Example windowrule v2 # Ignore maximize requests from apps. You'll probably like this.
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ #windowrule = suppressevent maximize, class:.*
windowrulev2 = suppressevent maximize, class:.* # You'll probably like this. # Fix some dragging issues with XWayland
#windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
+20
View File
@@ -0,0 +1,20 @@
background {
monitor = # monitor-agnostic
blur_passes = 1
blur_size = 7
}
input-field {
monitor =
size = 15%, 5%
font_family = Noto Sans
dots_size = 0.08
}
label {
monitor =
text = $TIME
font_size = 200
position = 0, 200
}
+103
View File
@@ -0,0 +1,103 @@
// -*- mode: jsonc -*-
{
"spacing": 2, // Gaps between modules (4px)
"modules-left": [
"hyprland/workspaces",
"hyprland/submap",
"hyprland/window"
],
//"modules-center": [
//"sway/window"
//],
"modules-right": [
//"mpd",
"pulseaudio",
//"network",
"battery",
"clock",
"tray"
//"custom/power"
],
"sway/mode": {
"format": "<span style=\"italic\">{}</span>"
},
"sway/scratchpad": {
"format": "{count}",
"show-empty": false,
"tooltip": true,
"tooltip-format": "{app}: {title}"
},
"tray": {
// "icon-size": 21,
"spacing": 10,
// "icons": {
// "blueman": "bluetooth",
// "TelegramDesktop": "$HOME/.local/share/icons/hicolor/16x16/apps/telegram.png"
// }
},
"clock": {
//"timezone": "America/Los_Angeles",
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
"format": "{:%r %Y-%m-%d}",
//"format": "{:%R %p %Y-%m-%d}",
//"format-alt": "{:%Y-%m-%d}"
},
"battery": {
"states": {
// "good": 95,
"warning": 30,
"critical": 15
},
"format": "{time} {capacity}%",
"format-full": "{capacity}%",
"format-charging": "{capacity}% C",
"format-plugged": "{capacity}% P",
"format-alt": "{time}",
// "format-good": "", // An empty format will hide the module
// "format-full": "",
},
"battery#bat2": {
"bat": "BAT2"
},
"power-profiles-daemon": {
"format": "{profile}",
"tooltip-format": "Power profile: {profile}\nDriver: {driver}",
"tooltip": true,
"format-icons": {"default": [""]}
},
"network": {
// "interface": "wlp2*", // (Optional) To force the use of this interface
//"format-wifi": "{essid} ({signalStrength}%)",
//"format-ethernet": "{ipaddr}/{cidr}",
//"tooltip-format": "{ifname} via {gwaddr}",
//"format-linked": "{ifname} (No IP)",
//"format-disconnected": "Disconnected",
"format-disconnected": "Disconnected",
"format-alt": "{ifname}: {ipaddr}/{cidr}"
},
"pulseaudio": {
// "scroll-step": 1, // %, can be a float
"format": "{volume}% {format_source}",
"format-bluetooth": "{volume}% {format_source}",
"format-bluetooth-muted": " {format_source}",
"format-muted": " {format_source}",
"format-source": "{volume}%",
"format-source-muted": "",
"format-icons": {
"default": [""]
},
"on-click": "pavucontrol"
},
"custom/media": {
"format": "{text}",
"return-type": "json",
"max-length": 40,
"format-icons": {
"spotify": "",
"default": ""
},
"escape": true,
"exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder
// "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name
}
}
+331
View File
@@ -0,0 +1,331 @@
* {
/* `otf-font-awesome` is required to be installed for icons */
/*font-family: FontAwesome, Roboto, Helvetica, Arial, sans-serif; */
/*font-family: "JetBrainsMono NF";*/
font-family: "JetBrainsMonoNFM-Regular";
font-size: 14px;
font-weight: normal;
}
window#waybar {
/*background-color: rgba(43, 48, 59, 0.5);
border-bottom: 3px solid rgba(100, 114, 125, 0.5); */
background-color: rgba(0, 0, 0, 1);
color: #ffffff;
transition-property: background-color;
transition-duration: .5s;
}
window#waybar.hidden {
opacity: 0.2;
}
window#waybar.empty {
/*background-color: transparent;*/
}
window#waybar.solo {
/*background-color: #FFFFFF;*/
}
button {
/* Use box-shadow instead of border so the text isn't offset */
box-shadow: inset 0 -3px transparent;
/* Avoid rounded borders under each button name */
border: none;
border-radius: 0;
}
/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
button:hover {
background: inherit;
box-shadow: inset 0 -3px #ffffff;
}
/* you can set a style on hover for any module like this */
#pulseaudio:hover {
/*background-color: #a37800;*/
}
#workspaces button {
padding: 0 4px;
background-color: transparent;
color: #ffffff;
}
#workspaces button:hover {
background: rgba(0, 0, 0, 0.2);
}
#workspaces button.active {
background-color: #eb4d4b;
box-shadow: inset 0 -3px #ffffff;
color: #ffffff;
font-weight: bold;
}
#workspaces button.urgent {
background-color: #eb4d4b;
}
#workspaces button.visible {
background-color: #64727D;
}
#workspaces button.empty {
background-color: transparent;
}
#mode {
background-color: #64727D;
box-shadow: inset 0 -3px #ffffff;
}
#clock,
#battery,
#cpu,
#memory,
#disk,
#temperature,
#backlight,
#network,
#pulseaudio,
#wireplumber,
#custom-media,
#tray,
#mode,
#idle_inhibitor,
#scratchpad,
#power-profiles-daemon,
#mpd {
padding: 0 10px;
color: #ffffff;
}
#window,
#workspaces-hyprland {
margin: 0 4px;
}
/* If workspaces is the leftmost module, omit left margin */
.modules-left > widget:first-child > #workspaces-hyprland {
margin-left: 0;
}
/* If workspaces is the rightmost module, omit right margin */
.modules-right > widget:last-child > #workspaces-hyprland {
margin-right: 0;
}
#clock {
/* background-color: #64727D;*/
}
#battery {
/*background-color: #ffffff;
color: #000000;*/
}
#battery.charging, #battery.plugged {
/*color: #ffffff;
background-color: #26A65B;*/
}
@keyframes blink {
to {
background-color: #ffffff;
color: #000000;
}
}
/* Using steps() instead of linear as a timing function to limit cpu usage */
#battery.critical:not(.charging) {
background-color: #f53c3c;
color: #ffffff;
animation-name: blink;
animation-duration: 0.5s;
animation-timing-function: steps(12);
animation-iteration-count: infinite;
animation-direction: alternate;
}
#power-profiles-daemon {
padding-right: 15px;
}
#power-profiles-daemon.performance {
background-color: #f53c3c;
color: #ffffff;
}
#power-profiles-daemon.balanced {
background-color: #2980b9;
color: #ffffff;
}
#power-profiles-daemon.power-saver {
background-color: #2ecc71;
color: #000000;
}
label:focus {
background-color: #000000;
}
#cpu {
background-color: #2ecc71;
color: #000000;
}
#memory {
background-color: #9b59b6;
}
#disk {
background-color: #964B00;
}
#backlight {
background-color: #90b1b1;
}
#network {
/*background-color: #2980b9;*/
}
#network.disconnected {
/*background-color: #f53c3c;*/
}
#pulseaudio {
/*background-color: #f1c40f;*/
/*color: #000000;*/
}
#pulseaudio.muted {
/*background-color: #90b1b1;*/
/*color: #2a5c45;*/
}
#wireplumber {
background-color: #fff0f5;
color: #000000;
}
#wireplumber.muted {
background-color: #f53c3c;
}
#custom-media {
background-color: #66cc99;
color: #2a5c45;
min-width: 100px;
}
#custom-media.custom-spotify {
background-color: #66cc99;
}
#custom-media.custom-vlc {
background-color: #ffa000;
}
#temperature {
background-color: #f0932b;
}
#temperature.critical {
background-color: #eb4d4b;
}
#tray {
/*background-color: #2980b9;*/
}
#tray > .passive {
-gtk-icon-effect: dim;
}
#tray > .needs-attention {
-gtk-icon-effect: highlight;
background-color: #eb4d4b;
}
#idle_inhibitor {
background-color: #2d3436;
}
#idle_inhibitor.activated {
background-color: #ecf0f1;
color: #2d3436;
}
#mpd {
background-color: #66cc99;
color: #2a5c45;
}
#mpd.disconnected {
background-color: #f53c3c;
}
#mpd.stopped {
background-color: #90b1b1;
}
#mpd.paused {
background-color: #51a37a;
}
#language {
background: #00b093;
color: #740864;
padding: 0 5px;
margin: 0 5px;
min-width: 16px;
}
#keyboard-state {
background: #97e1ad;
color: #000000;
padding: 0 0px;
margin: 0 5px;
min-width: 16px;
}
#keyboard-state > label {
padding: 0 5px;
}
#keyboard-state > label.locked {
background: rgba(0, 0, 0, 0.2);
}
#scratchpad {
background: rgba(0, 0, 0, 0.2);
}
#scratchpad.empty {
background-color: transparent;
}
#privacy {
padding: 0;
}
#privacy-item {
padding: 0 5px;
color: white;
}
#privacy-item.screenshare {
background-color: #cf5700;
}
#privacy-item.audio-in {
background-color: #1ca000;
}
#privacy-item.audio-out {
background-color: #0069d4;
}
+5 -10
View File
@@ -1,15 +1,10 @@
#font_family 'JetBrainsMono NF' font_size 10.5
# font_family 'JetBrainsMonoNL NFM ExtraBold'
font_size 11
# bold_font auto
# italic_font auto
# bold_italic_font auto
#text_composition_strategy legacy #text_composition_strategy legacy
#modify_font cell_width 95% #modify_font cell_width 95%
background_opacity 0.4 #background_opacity 20
cursor_trail 10 cursor_trail 20
cursor_trail_start_threshold 0 cursor_trail_start_threshold 0
shell_integration no-cursor shell_integration no-cursor
cursor_trail_decay 0.01 0.15 cursor_trail_decay 0.01 0.15
@@ -19,9 +14,9 @@ linux_display_server wayland
wayland_enable_ime yes wayland_enable_ime yes
# BEGIN_KITTY_FONTS # BEGIN_KITTY_FONTS
font_family family="JetBrainsMono Nerd Font Mono" #font_family family="JetBrainsMono Nerd Font Mono"
font_family family="Fira Code"
bold_font auto bold_font auto
italic_font auto italic_font auto
bold_italic_font auto bold_italic_font auto
+2
View File
@@ -25,4 +25,6 @@ dex -a &
# screen record or share # screen record or share
dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=wlroots dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=wlroots
/usr/lib/xdg-desktop-portal-wlr & /usr/lib/xdg-desktop-portal-wlr &
+28 -23
View File
@@ -2,7 +2,7 @@
# Window effect # Window effect
blur=1 blur=1
blur_layer=1 blur_layer=0
blur_optimized=1 blur_optimized=1
blur_params_num_passes = 2 blur_params_num_passes = 2
blur_params_radius = 5 blur_params_radius = 5
@@ -12,7 +12,7 @@ blur_params_contrast = 0.9
blur_params_saturation = 1.2 blur_params_saturation = 1.2
shadows = 1 shadows = 1
layer_shadows = 0 layer_shadows = 1
shadow_only_floating = 1 shadow_only_floating = 1
shadows_size = 5 shadows_size = 5
shadows_blur = 15 shadows_blur = 15
@@ -52,7 +52,7 @@ scroller_structs=20
scroller_default_proportion=1.0 scroller_default_proportion=1.0
scroller_focus_center=0 scroller_focus_center=0
scroller_prefer_center=0 scroller_prefer_center=0
edge_scroller_pointer_focus=1 edge_scroller_pointer_focus=0
scroller_default_proportion_single=1.0 scroller_default_proportion_single=1.0
scroller_proportion_preset=1.0,1.0,1.0 scroller_proportion_preset=1.0,1.0,1.0
@@ -64,8 +64,8 @@ smartgaps=0
# Overview Setting # Overview Setting
hotarea_size=10 hotarea_size=10
enable_hotarea=1 enable_hotarea=0
ov_tab_mode=0 ov_tab_mode=1
overviewgappi=5 overviewgappi=5
overviewgappo=30 overviewgappo=30
@@ -84,8 +84,9 @@ cursor_size=24
drag_tile_to_tile=1 drag_tile_to_tile=1
# keyboard # keyboard
repeat_rate=25 #repeat_rate=25
repeat_delay=600 repeat_rate=30
repeat_delay=300
numlockon=1 numlockon=1
xkb_rules_layout=us xkb_rules_layout=us
@@ -112,7 +113,7 @@ gappoh=10
gappov=10 gappov=10
scratchpad_width_ratio=0.8 scratchpad_width_ratio=0.8
scratchpad_height_ratio=0.9 scratchpad_height_ratio=0.9
borderpx=4 borderpx=1
rootcolor=0x201b14ff rootcolor=0x201b14ff
bordercolor=0x444444ff bordercolor=0x444444ff
focuscolor=0xc9b890ff focuscolor=0xc9b890ff
@@ -138,6 +139,9 @@ tagrule=id:9,layout_name:tile
# key name refer to `xev` or `wev` command output, # key name refer to `xev` or `wev` command output,
# mod keys name: super,ctrl,alt,shift,none # mod keys name: super,ctrl,alt,shift,none
bind=SUPER,period,incnmaster,+1
bind=SUPER,comma,incnmaster,-1
# reload config # reload config
bind=SUPER,c,reload_config bind=SUPER,c,reload_config
bind=SUPER,c,spawn_shell, notify-send 'Reloading Config!' bind=SUPER,c,spawn_shell, notify-send 'Reloading Config!'
@@ -147,7 +151,8 @@ bind=SUPER,d,spawn,wofi --show drun -GI
bind=SUPER,Return,spawn,kitty bind=SUPER,Return,spawn,kitty
# exit # exit
bind=SUPER+SHIFT,m,quit #bind=SUPER+SHIFT,e,quit
bind=SUPER+SHIFT,m,spawn_shell, wlr-randr --output eDP-1 --toggle
bind=SUPER,m,spawn_shell, playerctl pause; swaylock -f -c 000000 # lock bind=SUPER,m,spawn_shell, playerctl pause; swaylock -f -c 000000 # lock
bind=SUPER+SHIFT,q,killclient, bind=SUPER+SHIFT,q,killclient,
@@ -200,16 +205,16 @@ bind=SUPER,s,setlayout,scroller
bind=SUPER,a,togglegaps bind=SUPER,a,togglegaps
# tag switch # tag switch
bind=SUPER,1,view,1,0 bind=SUPER,1,comboview,1,0
bind=SUPER,2,view,2,0 bind=SUPER,2,comboview,2,0
bind=SUPER,3,view,3,0 bind=SUPER,3,comboview,3,0
bind=SUPER,4,view,4,0 bind=SUPER,4,comboview,4,0
bind=SUPER,5,view,5,0 bind=SUPER,5,comboview,5,0
bind=SUPER,6,view,6,0 bind=SUPER,6,comboview,6,0
bind=SUPER,7,view,7,0 bind=SUPER,7,comboview,7,0
bind=SUPER,8,view,8,0 bind=SUPER,8,comboview,8,0
bind=SUPER,9,view,9,0 bind=SUPER,9,comboview,9,0
bind=SUPER,0,view,0,0 bind=SUPER,0,comboview,0,0
# tag: move client to the tag and focus it # tag: move client to the tag and focus it
# tagsilent: move client to the tag and not focus it # tagsilent: move client to the tag and not focus it
@@ -243,10 +248,10 @@ bind=CTRL+SHIFT,Left,movewin,-50,+0
bind=CTRL+SHIFT,Right,movewin,+50,+0 bind=CTRL+SHIFT,Right,movewin,+50,+0
# resizewin # resizewin
bind=none,Up,resizewin,+0,-50 #bind=none,Up,resizewin,+0,-50
bind=none,Down,resizewin,+0,+50 #bind=none,Down,resizewin,+0,+50
bind=none,Left,resizewin,-50,+0 #bind=none,Left,resizewin,-50,+0
bind=none,Right,resizewin,+50,+0 #bind=none,Right,resizewin,+50,+0
# Mouse Button Bindings # Mouse Button Bindings
# NONE mode key only work in ov mode # NONE mode key only work in ov mode
+27 -175
View File
@@ -1,125 +1,32 @@
// -*- mode: jsonc -*- // -*- mode: jsonc -*-
{ {
// "layer": "top", // Waybar at top layer "spacing": 2, // Gaps between modules (4px)
// "position": "bottom", // Waybar position (top|bottom|left|right)
//"height": 10, // Waybar height (to be removed for auto height)
// "width": 1280, // Waybar width
"spacing": 6, // Gaps between modules (4px)
// Choose the order of the modules
"modules-left": [ "modules-left": [
"ext/workspaces", "hyprland/workspaces",
"dwl/window", "hyprland/submap",
"sway/mode", "hyprland/window"
"sway/scratchpad",
"custom/media"
], ],
//"modules-center": [ //"modules-center": [
//"sway/window" //"sway/window"
//], //],
"modules-right": [ "modules-right": [
"mpd", //"mpd",
"custom/audio_idle_inhibitor",
"pulseaudio", "pulseaudio",
"network", //"network",
//"power-profiles-daemon",
//"cpu",
//"memory",
//"temperature",
//"backlight",
//"keyboard-state",
//"sway/language",
"battery", "battery",
//"battery#bat2",
"clock", "clock",
"tray" "tray"
//"custom/power" //"custom/power"
], ],
"ext/workspaces": {
"format": "{icon}",
"ignore-hidden": true,
"on-click": "activate",
"on-click-right": "deactivate",
"sort-by-id": true,
},
"dwl/tags": {
"num-tags":9,
},
"dwl/window": {
//"format": "[{layout}]{title}"
"format": "[{layout}]"
},
// Modules configuration
// "sway/workspaces": {
// "disable-scroll": true,
// "all-outputs": true,
// "warp-on-scroll": false,
// "format": "{name}: {icon}",
// "format-icons": {
// "1": "",
// "2": "",
// "3": "",
// "4": "",
// "5": "",
// "urgent": "",
// "focused": "",
// "default": ""
// }
// },
"keyboard-state": {
"numlock": true,
"capslock": true,
"format": "{name} {icon}",
"format-icons": {
"locked": "",
"unlocked": ""
}
},
"sway/mode": { "sway/mode": {
"format": "<span style=\"italic\">{}</span>" "format": "<span style=\"italic\">{}</span>"
}, },
"sway/scratchpad": { "sway/scratchpad": {
"format": "{icon} {count}", "format": "{count}",
"show-empty": false, "show-empty": false,
"format-icons": ["", ""],
"tooltip": true, "tooltip": true,
"tooltip-format": "{app}: {title}" "tooltip-format": "{app}: {title}"
}, },
"mpd": {
"format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {title} ⸨{songPosition}|{queueLength}⸩% ",
"format-alt": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩% ",
"format-disconnected": "Disconnected ",
//"format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ",
"format-stopped": "",
//"unknown-tag": "N/A",
"unknown-tag": "",
"interval": 5,
"consume-icons": {
"on": " "
},
"random-icons": {
"off": "<span color=\"#f53c3c\"></span> ",
"on": " "
},
"repeat-icons": {
"on": " "
},
"single-icons": {
"on": "1 "
},
"state-icons": {
"paused": "",
"playing": ""
},
"tooltip-format": "MPD (connected)",
"tooltip-format-disconnected": "MPD (disconnected)"
},
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "",
"deactivated": ""
}
},
"tray": { "tray": {
// "icon-size": 21, // "icon-size": 21,
"spacing": 10, "spacing": 10,
@@ -135,117 +42,62 @@
//"format": "{:%R %p %Y-%m-%d}", //"format": "{:%R %p %Y-%m-%d}",
//"format-alt": "{:%Y-%m-%d}" //"format-alt": "{:%Y-%m-%d}"
}, },
"cpu": {
"format": "{usage}% ",
"tooltip": false
},
"memory": {
"format": "{}% "
},
"temperature": {
// "thermal-zone": 2,
// "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
"critical-threshold": 80,
// "format-critical": "{temperatureC}°C {icon}",
"format": "{temperatureC}°C {icon}",
"format-icons": ["", "", ""]
},
"backlight": {
// "device": "acpi_video1",
"format": "{percent}% {icon}",
"format-icons": ["", "", "", "", "", "", "", "", ""]
},
"battery": { "battery": {
"states": { "states": {
// "good": 95, // "good": 95,
"warning": 30, "warning": 30,
"critical": 15 "critical": 15
}, },
"format": "{time} {capacity}% {icon}", "format": "{time} {capacity}%",
"format-full": "{capacity}% {icon}", "format-full": "{capacity}%",
"format-charging": "{capacity}% C", "format-charging": "{capacity}% C",
"format-plugged": "{capacity}% P", "format-plugged": "{capacity}% P",
"format-alt": "{time} {icon}", "format-alt": "{time}",
// "format-good": "", // An empty format will hide the module // "format-good": "", // An empty format will hide the module
// "format-full": "", // "format-full": "",
"format-icons": ["", "", "", "", ""]
}, },
"battery#bat2": { "battery#bat2": {
"bat": "BAT2" "bat": "BAT2"
}, },
"power-profiles-daemon": { "power-profiles-daemon": {
"format": "{icon}", "format": "{profile}",
"tooltip-format": "Power profile: {profile}\nDriver: {driver}", "tooltip-format": "Power profile: {profile}\nDriver: {driver}",
"tooltip": true, "tooltip": true,
"format-icons": { "format-icons": {"default": [""]}
"default": "",
"performance": "",
"balanced": "",
"power-saver": ""
}
}, },
"network": { "network": {
// "interface": "wlp2*", // (Optional) To force the use of this interface // "interface": "wlp2*", // (Optional) To force the use of this interface
"format-wifi": "{essid} ({signalStrength}%) ", //"format-wifi": "{essid} ({signalStrength}%)",
"format-ethernet": "{ipaddr}/{cidr} ", //"format-ethernet": "{ipaddr}/{cidr}",
"tooltip-format": "{ifname} via {gwaddr} ", //"tooltip-format": "{ifname} via {gwaddr}",
"format-linked": "{ifname} (No IP) ", //"format-linked": "{ifname} (No IP)",
"format-disconnected": "Disconnected ⚠", //"format-disconnected": "Disconnected",
"format-disconnected": "Disconnected",
"format-alt": "{ifname}: {ipaddr}/{cidr}" "format-alt": "{ifname}: {ipaddr}/{cidr}"
}, },
"pulseaudio": { "pulseaudio": {
// "scroll-step": 1, // %, can be a float // "scroll-step": 1, // %, can be a float
"format": "{volume}% {icon} {format_source}", "format": "{volume}% {format_source}",
"format-bluetooth": "{volume}% {icon}  {format_source}", "format-bluetooth": "{volume}% {format_source}",
"format-bluetooth-muted": " {icon} {format_source}", "format-bluetooth-muted": " {format_source}",
"format-muted": " {format_source}", "format-muted": " {format_source}",
"format-source": "{volume}%", "format-source": "{volume}%",
"format-source-muted": "", "format-source-muted": "",
"format-icons": { "format-icons": {
"headphone": "", "default": [""]
"hands-free": "",
"headset": "",
"phone": "",
"portable": "",
"car": "",
"default": ["", "", ""]
}, },
"on-click": "pavucontrol" "on-click": "pavucontrol"
}, },
"custom/media": { "custom/media": {
"format": "{icon} {text}", "format": "{text}",
"return-type": "json", "return-type": "json",
"max-length": 40, "max-length": 40,
"format-icons": { "format-icons": {
"spotify": "", "spotify": "",
"default": "🎜" "default": ""
}, },
"escape": true, "escape": true,
"exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder "exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder
// "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name // "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name
},
"custom/power": {
"format" : "⏻ ",
"tooltip": false,
"menu": "on-click",
"menu-file": "$HOME/.config/waybar/power_menu.xml", // Menu file in resources folder
"menu-actions": {
"shutdown": "shutdown",
"reboot": "reboot",
"suspend": "systemctl suspend",
"hibernate": "systemctl hibernate"
}
},
"custom/audio_idle_inhibitor": {
"format": "{icon} ",
"exec": "sway-audio-idle-inhibit --dry-print-both-waybar",
"exec-if": "which sway-audio-idle-inhibit",
"return-type": "json",
"format-icons": {
"output": "",
"input": "",
"output-input": " ",
"none": ""
}
} }
} }
+13 -46
View File
@@ -1,55 +1,26 @@
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" require("config.lazy")
if not vim.loop.fs_stat(lazypath) then
vim.fn.system({
"git",
"clone",
"--filter=blob:none",
"https://github.com/folke/lazy.nvim.git",
"--branch=stable", -- latest stable release
lazypath,
})
end
vim.opt.rtp:prepend(lazypath)
-- coq used for completion
vim.g.coq_settings = {
auto_start = true,
xdg = true,
completion = {
always = false,
},
keymap = {
manual_complete = '<c-n>',
}
}
-- code completion
require('lazy').setup('plugins')
local coq = require 'coq'
require("mason").setup() -- used for automatically enabling lsp and coq
require("mason-lspconfig").setup()
-- Settings
--vim.cmd('source ~/.config/nvim/settings.vim')
-- colorscheme -- colorscheme
vim.o.termguicolors = true -- vim.o.termguicolors = true
vim.opt.winborder = 'rounded' vim.opt.winborder = 'rounded'
--vim.o.background = "dark" -- or "light" for light mode vim.o.background = "dark" -- or "light" for light mode
--vim.cmd("colorscheme gruvbox ") --vim.cmd("colorscheme gruvbox ")
--vim.cmd("colorscheme retrobox") --vim.cmd("colorscheme retrobox")
vim.opt.clipboard:append("unnamedplus") -- sync yank/delete/put with system clipboard
vim.cmd("set nocompatible") vim.cmd("set nocompatible")
vim.cmd("syntax on") vim.cmd("syntax on")
vim.cmd("filetype plugin indent on") vim.cmd("filetype plugin indent on")
vim.cmd("set number") vim.cmd("set number")
vim.cmd("set relativenumber") vim.cmd("set relativenumber")
vim.cmd("set expandtab") vim.cmd("set expandtab")
vim.cmd("set shiftwidth=4") vim.cmd("set shiftwidth=2")
vim.cmd("set softtabstop=4") vim.cmd("set softtabstop=2")
vim.cmd("set tabstop=4") vim.cmd("set tabstop=2")
vim.cmd("set smartindent") vim.cmd("set smartindent")
vim.cmd("set backspace=indent,eol,start") vim.cmd("set backspace=indent,eol,start")
vim.cmd("set colorcolumn=81") vim.cmd("set colorcolumn=81")
vim.cmd("set textwidth=80") vim.cmd("set textwidth=80")
@@ -57,13 +28,9 @@ vim.cmd("set wrap")
vim.cmd("set linebreak") vim.cmd("set linebreak")
vim.cmd("noswapfile") vim.cmd("noswapfile")
vim.cmd("set autoread")
vim.cmd("set complete-=i")
vim.cmd("au FileType python set fileformat=unix encoding=utf-8") vim.cmd("au FileType python set fileformat=unix encoding=utf-8")
vim.cmd("au FileType markdown,tex set spell spelllang=en_us") vim.cmd("au FileType markdown,tex set spell spelllang=en_us")
-- keymaps
vim.keymap.set('n', '<leader>/', ':nohlsearch<CR>')
vim.keymap.set('n', '<leader>b', ':buffers<CR>')
vim.keymap.set('n', 'bp', ':bp<CR>')
vim.keymap.set('n', 'bn', ':bn<CR>')
-16
View File
@@ -1,16 +0,0 @@
{
"black-metal-theme-neovim": { "branch": "main", "commit": "6d0207871387077f40d5396ab1ae90520e688d36" },
"copilot.vim": { "branch": "release", "commit": "da369d90cfd6c396b1d0ec259836a1c7222fb2ea" },
"coq_nvim": { "branch": "coq", "commit": "a63d28a9aa59c20a503ce38608fb6bc7cb3842f4" },
"harpoon": { "branch": "master", "commit": "1bc17e3e42ea3c46b33c0bbad6a880792692a1b3" },
"lazy.nvim": { "branch": "main", "commit": "1ea3c4085785f460fb0e46d2fe1ee895f5f9e7c1" },
"lualine.nvim": { "branch": "master", "commit": "b8c23159c0161f4b89196f74ee3a6d02cdc3a955" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "6bdb14f230de0904229ec367b410fb817e59b072" },
"mason.nvim": { "branch": "main", "commit": "ad7146aa61dcaeb54fa900144d768f040090bff0" },
"nvim-lspconfig": { "branch": "master", "commit": "ac98db2f9f06a56498ec890a96928774eae412c3" },
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
"nvim-web-devicons": { "branch": "master", "commit": "b8221e42cf7287c4dcde81f232f58d7b947c210d" },
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
"telescope.nvim": { "branch": "master", "commit": "776b509f80dd49d8205b9b0d94485568236d1192" },
"vim-tmux-navigator": { "branch": "master", "commit": "c45243dc1f32ac6bcf6068e5300f3b2b237e576a" }
}
+35
View File
@@ -0,0 +1,35 @@
-- Bootstrap lazy.nvim
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not (vim.uv or vim.loop).fs_stat(lazypath) then
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
if vim.v.shell_error ~= 0 then
vim.api.nvim_echo({
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
{ out, "WarningMsg" },
{ "\nPress any key to exit..." },
}, true, {})
vim.fn.getchar()
os.exit(1)
end
end
vim.opt.rtp:prepend(lazypath)
-- Make sure to setup `mapleader` and `maplocalleader` before
-- loading lazy.nvim so that mappings are correct.
-- This is also a good place to setup other settings (vim.opt)
--vim.g.mapleader = "/\"
--im.g.maplocalleader = "\\"
-- Setup lazy.nvim
require("lazy").setup({
spec = {
-- import your plugins
{ import = "plugins" },
},
-- Configure any other settings here. See the documentation for more details.
-- colorscheme that will be used when installing plugins.
-- install = { colorscheme = { "habamax" } },
-- automatically check for plugin updates
-- checker = { enabled = true },
})
+1 -1
View File
@@ -5,7 +5,7 @@ return {
config = function() config = function()
require("black-metal").setup({ require("black-metal").setup({
-- optional configuration here -- optional configuration here
term_colors = true, -- term_colors = true,
}) })
require("black-metal").load() require("black-metal").load()
-12
View File
@@ -1,12 +0,0 @@
return {
'github/copilot.vim',
config = function()
vim.keymap.set('i', '<C-J>', 'copilot#Accept("\\<CR>")', {
expr = true,
replace_keycodes = false
})
vim.keymap.set('i', '<C-L>', '<Plug>(copilot-accept-word)')
vim.g.copilot_enabled = 'v:false'
end
}
-23
View File
@@ -1,23 +0,0 @@
return {
'ThePrimeagen/harpoon',
config = function(_, opts)
require('harpoon').setup(opts)
local mark = require('harpoon'.. ".mark")
local ui = require('harpoon'.. ".ui")
-- Harpoon marked files 1 through 4.
vim.keymap.set("n", "<a-1>", function() ui.nav_file(1) end)
vim.keymap.set("n", "<a-2>", function() ui.nav_file(2) end)
vim.keymap.set("n", "<a-3>", function() ui.nav_file(3) end)
vim.keymap.set("n", "<a-4>", function() ui.nav_file(4) end)
-- Harpoon next and previous.
vim.keymap.set("n", "<a-n>", function() ui.nav_next() end)
vim.keymap.set("n", "<a-p>", function() ui.nav_prev() end)
-- Harpoon user interface.
vim.keymap.set("n", "<leader>hq", ui.toggle_quick_menu)
vim.keymap.set("n", "<leader>ha", mark.add_file)
end
}
-12
View File
@@ -1,12 +0,0 @@
return {
"mason-org/mason-lspconfig.nvim",
dependencies = {
"mason-org/mason.nvim",
"neovim/nvim-lspconfig",
"ms-jpq/coq_nvim", -- Optional (auto complete)
},
config = function()
--vim.lsp.config('lua_ls',coq.lsp_ensure_capabilities())
--vim.lsp.config('clangd',coq.lsp_ensure_capabilities())
end
}
-46
View File
@@ -1,46 +0,0 @@
return{
'nvim-lualine/lualine.nvim',
dependencies = { 'nvim-tree/nvim-web-devicons', opt = true },
config = function()
require('lualine').setup {
options = {
icons_enabled = true,
theme = 'auto',
component_separators = { left = '', right = ''},
section_separators = { left = '', right = ''},
disabled_filetypes = {
statusline = {},
winbar = {},
},
ignore_focus = {},
always_divide_middle = true,
globalstatus = false,
refresh = {
statusline = 1000,
tabline = 1000,
winbar = 1000,
}
},
sections = {
lualine_a = {'mode'},
lualine_b = {'branch', 'diff', 'diagnostics'},
lualine_c = {'filename'},
lualine_x = {'encoding', 'fileformat', 'filetype'},
lualine_y = {'progress'},
lualine_z = {'location'}
},
inactive_sections = {
lualine_a = {},
lualine_b = {},
lualine_c = {'filename'},
lualine_x = {'location'},
lualine_y = {},
lualine_z = {}
},
tabline = {},
winbar = {},
inactive_winbar = {},
extensions = {}
}
end
}
+53
View File
@@ -0,0 +1,53 @@
return {
"mason-org/mason-lspconfig.nvim",
dependencies = {
{"mason-org/mason.nvim"},
{'neovim/nvim-lspconfig'},
{'nvim-mini/mini.nvim'},
{'nvim-mini/mini.completion'},
},
config = function()
require("mason").setup()
require("mason-lspconfig").setup {}
-- NOTE: this is meant to be backwards compatible with Neovim v0.9
---
-- Autocompletion
---
--require('mini.snippets').setup()
require('mini.completion').setup()
---
-- Language server configuration
---
-- These keymaps are the defaults in Neovim v0.10
if vim.fn.has('nvim-0.11') == 0 then
-- NOTE: vim.diagnostic.goto_* methods are deprecated in v0.11
-- that's why we put these under a conditional block
vim.keymap.set('n', '[d', '<cmd>lua vim.diagnostic.goto_prev()<cr>')
vim.keymap.set('n', ']d', '<cmd>lua vim.diagnostic.goto_next()<cr>')
vim.keymap.set('n', '<C-w>d', '<cmd>lua vim.diagnostic.open_float()<cr>')
vim.keymap.set('n', '<C-w><C-d>', '<cmd>lua vim.diagnostic.open_float()<cr>')
end
vim.api.nvim_create_autocmd('LspAttach', {
callback = function(event)
local bufmap = function(mode, rhs, lhs)
vim.keymap.set(mode, rhs, lhs, {buffer = event.buf})
end
-- These keymaps are the defaults in Neovim v0.11
bufmap('n', 'K', '<cmd>lua vim.lsp.buf.hover()<cr>')
bufmap('n', 'grr', '<cmd>lua vim.lsp.buf.references()<cr>')
bufmap('n', 'gri', '<cmd>lua vim.lsp.buf.implementation()<cr>')
bufmap('n', 'grn', '<cmd>lua vim.lsp.buf.rename()<cr>')
bufmap('n', 'gra', '<cmd>lua vim.lsp.buf.code_action()<cr>')
bufmap('n', 'gO', '<cmd>lua vim.lsp.buf.document_symbol()<cr>')
bufmap({'i', 's'}, '<C-s>', '<cmd>lua vim.lsp.buf.signature_help()<cr>')
end,
})
end
}
+12
View File
@@ -0,0 +1,12 @@
return {
"hedyhli/outline.nvim",
config = function()
-- Example mapping to toggle outline
vim.keymap.set("n", "<leader>o", "<cmd>Outline<CR>",
{ desc = "Toggle Outline" })
require("outline").setup {
-- Your setup opts here (leave empty to use defaults)
}
end,
}
+2 -1
View File
@@ -1,5 +1,6 @@
-- plugins/telescope.lua:
return { return {
'nvim-telescope/telescope.nvim', tag = '0.1.2', 'nvim-telescope/telescope.nvim', tag = 'v0.1.9',
dependencies = { 'nvim-lua/plenary.nvim' }, dependencies = { 'nvim-lua/plenary.nvim' },
config = function() config = function()
local builtin = require('telescope.builtin') local builtin = require('telescope.builtin')
+2 -41
View File
@@ -2,45 +2,6 @@ return {
"nvim-treesitter/nvim-treesitter", "nvim-treesitter/nvim-treesitter",
build = ":TSUpdate", build = ":TSUpdate",
config = function() config = function()
require("nvim-treesitter.configs").setup { --require("nvim-treesitter").install({})
-- A list of parser names, or "all" (the five listed parsers should always be installed)
ensure_installed = { "c", "lua", "vim", "vimdoc", "python", "bash", "make" },
-- Install parsers synchronously (only applied to `ensure_installed`)
sync_install = false,
-- Automatically install missing parsers when entering buffer
-- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally
auto_install = true,
-- List of parsers to ignore installing (for "all")
ignore_install = { "javascript" },
---- If you need to change the installation directory of the parsers (see -> Advanced Setup)
-- parser_install_dir = "/some/path/to/store/parsers", -- Remember to run vim.opt.runtimepath:append("/some/path/to/store/parsers")!
highlight = {
enable = true,
-- NOTE: these are the names of the parsers and not the filetype. (for example if you want to
-- disable highlighting for the `tex` filetype, you need to include `latex` in this list as this is
-- the name of the parser)
-- list of language that will be disabled
-- disable = { "c", "rust" },
-- Or use a function for more flexibility, e.g. to disable slow treesitter highlight for large files
disable = function(lang, buf)
local max_filesize = 100 * 1024 -- 100 KB
local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf))
if ok and stats and stats.size > max_filesize then
return true
end end
end, }
-- Setting this to true will run `:h syntax` and tree-sitter at the same time.
-- Set this to `true` if you depend on 'syntax' being enabled (like for indentation).
-- Using this option may slow down your editor, and you may see some duplicate highlights.
-- Instead of true it can also be a list of languages
additional_vim_regex_highlighting = false,
},
}
end }
-56
View File
@@ -1,56 +0,0 @@
set nocompatible
syntax on
filetype plugin indent on
set number
set relativenumber
set expandtab
set shiftwidth=4
set softtabstop=4
set tabstop=4
set smartindent
set backspace=indent,eol,start
set colorcolumn=81
"hi ColorColumn ctermbg=lightgrey guibg=lightgrey
set textwidth=80
set wrap
set linebreak
set autoread " Set to auto read when a file is changed from the outside
set path+=**
set wildmenu
set showcmd
set wildmode=longest:full,full
set wildoptions=pum
set wildignore+=*/tmp/*,*.so,*.swp,*.zip
set wildignore+=*\\tmp\\*,*.exe
set number ruler
set showmatch
set showbreak=↳\ \
set hidden
set hlsearch
set noswapfile
set mouse= "remove mouse
"set clipboard=unnamedplus
" Rendering
set ttyfast
set laststatus=1
set t_Co=256
let &t_ut=''
"hi ColorColumn ctermbg=lightgrey guibg=lightgrey
" Show bad whitespace in an obvious but not obnoxious color
"highlight pythonSpaceError ctermbg=darkgreen guibg=darkgreen
"highlight BadWhitespace ctermbg=darkgreen guibg=darkgreen
"au BufNewFile,BufRead *.py,*.pyw,*.c,*.h,*.cc,*.hh,*.sh match BadWhitespace /\s\+$/
au FileType python
\ set fileformat=unix
\ encoding=utf-8
au FileType markdown,tex
\ set spell spelllang=en_us
-10
View File
@@ -1,10 +0,0 @@
Generative
ansible
CXI
HPLC
SED
brokhorst
MOXA
CONFIG
QRIX
EPS
Binary file not shown.
+3
View File
@@ -0,0 +1,3 @@
# Agent Instructions
If you're not sure about something, search it up on the web.
+22
View File
@@ -0,0 +1,22 @@
{
"$schema": "https://opencode.ai/config.json",
"instructions": ["AGENTS.md"],
"provider": {
"openwebui": {
"npm": "@ai-sdk/openai-compatible",
"name": "OpenWebUI",
"options": {
"baseURL": "https://ai.zamudio.dev/api",
"apiKey": "{env:OPENWEBUI_API_KEY}"
},
"models": {
"Qwen3.6-35B-A3B": {
"name": "Qwen3.6-35B-A3B"
},
"Qwen3.6-27B": {
"name": "Qwen3.6-27B"
}
}
}
}
}
+55 -23
View File
@@ -1,12 +1,13 @@
#font 'JetBrainsMono NF' 9 #font 'JetBrainsMono NF' 9
font 'JetBrainsMono Nerd Font Mono' 9 #font 'JetBrainsMono Nerd Font Mono' 9
font 'JetBrainsMonoNFM-Regular' 9
### Variables ### Variables
#set $mod Mod1 #set $mod Mod1
set $mod Mod4 set $mod Mod4
#set $term kitty -1
set $term kitty set $term kitty
#set $term foot
#set $term ghostty #set $term ghostty
set $menu wofi -S drun -GI set $menu wofi -S drun -GI
@@ -16,25 +17,26 @@ set $down j
set $up k set $up k
set $right l set $right l
#env GDK_BACKEND=wayland
#env QT_QPA_PLATFORM=wayland
set $laptop eDP-1 set $laptop eDP-1
include ~/.config/sway/config.d/* include ~/.config/sway/config.d/*
exec systemctl --user start sway-audio-idle-inhibit
exec systemctl --user start shikane
### Output configuration ### Output configuration
# You can get the names of your outputs by running: swaymsg -t get_outputs # You can get the names of your outputs by running: swaymsg -t get_outputs
# https://gitlab.com/w0lff/shikane for multitple display handling # https://gitlab.com/w0lff/shikane for multitple display handling
output * bg /home/jozamudi/Documents/Wallpapers/windows-11-stock-official-colorful-3840x2160-5658.jpg fill #output * bg /home/jozamudi/Documents/Wallpapers/windows-11-stock-official-colorful-3840x2160-5658.jpg fill
output eDP-1 scale 1.7 #output eDP-1 scale 1.7
#output 'BNQ BenQ PD3200U S2N01233019' scale 1.5 #output 'BNQ BenQ PD3200U S2N01233019' scale 1.5
#exec_always shikanectl reload #exec_always shikanectl reload
bindswitch --reload --locked lid:on output $laptop disable bindswitch --reload --locked lid:on output $laptop disable
bindswitch --reload --locked lid:off output $laptop enable bindswitch --reload --locked lid:off output $laptop enable
exec_always --no-startup-id '/home/jozamudi/.config/sway/scripts/clamshell-mode.sh' exec_always --no-startup-id '/home/work/.config/sway/scripts/clamshell-mode.sh'
# Re-apply shikane display profile (scaling) after every sway reload
exec_always --no-startup-id shikanectl reload
#input "1267:12792:ELAN067B:00_04F3:31F8_Touchpad" { #input "1267:12792:ELAN067B:00_04F3:31F8_Touchpad" {
# dwt enabled # dwt enabled
@@ -43,29 +45,59 @@ exec_always --no-startup-id '/home/jozamudi/.config/sway/scripts/clamshell-mode.
#} #}
### Idle configuration ### Idle configuration
exec swayidle -w \ #exec swayidle -w \
timeout 300 'swaylock -f -c 000000' \ # timeout 300 'swaylock -f -c 000000' \
timeout 600 'swaymsg "output * power off"' \ # timeout 600 'swaymsg "output * power off"' \
resume 'swaymsg "output * power on"' \ # resume 'swaymsg "output * power on"' \
before-sleep 'swaylock -f -c 000000' # before-sleep 'swaylock -f -c 000000'
seat seat0 xcursor_theme Adwaita 25 seat seat0 xcursor_theme Adwaita 35
exec systemctl --user start xdg-desktop-portal-wlr.service
#exec pipewire
exec swaync
exec_always --no-startup-id pkill -x waybar; waybar -c ~/.config/sway/waybar/config.jsonc -s ~/.config/sway/waybar/style.css
exec nm-applet
exec blueman-applet
exec hypridle
exec systemctl --user start hyperolkitagent
exec flatpak run com.github.wwmm.easyeffects -w
exec xrdb -merge ~/.Xresources
exec wl-paste -t text --watch clipman store --no-persist
exec tlpctl power-saver
#exec gsettings set org.gnome.desktop.interface color-scheme "prefer-dark"
#exec mpd
#exec syncthing
# Auto start .desktop files using dex # Auto start .desktop files using dex
exec pipewire
exec swaync
exec waybar
exec mpd
exec dex -a exec dex -a
#exec wl-paste -t text --watch clipman store --no-persist #exec wl-paste -t text --watch clipman store --no-persist
# There are two wl-paste processes running, one for the primary and one for the normal clipboard
exec wl-paste -t text --watch clipman store
exec wl-paste -p -t text --watch clipman store
# The keybind to select a clipping
bindsym $mod+y exec clipman --primary pick --tool wofi
# Clear all clippings
bindsym $mod+Shift+y exec clipman clear -a
# Remove a selected clipping
bindsym $mod+Mod1+y exec clipman clear --tool wofi
# Empty the current clipping
bindsym $mod+Ctrl+y exec : | wl-copy -p
#better audio #better audio
#exec easyeffects -w -l Laptop #exec easyeffects -w -l Laptop
default_border pixel 2 default_border pixel 2
default_floating_border pixel 2 #default_floating_border pixel 2
exec systemctl --user import-environment XDG_SESSION_TYPE XDG_CURRENT_DESKTOP exec systemctl --user import-environment XDG_SESSION_TYPE XDG_CURRENT_DESKTOP WAYLAND_DISPLAY SWAYSOCK
exec dbus-update-activation-environment --systemd WAYLAND_DISPLAY DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP=sway XDG_SESSION_DESKTOP=sway exec dbus-update-activation-environment --systemd WAYLAND_DISPLAY DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP=sway XDG_SESSION_DESKTOP=sway
# Activate graphical-session.target so xdg-desktop-portal (Requisite=graphical-session.target) can start
exec systemctl --user start sway-session.target
#exec --no-startup-id dbus-update-activation-environment --all
+3 -1
View File
@@ -13,7 +13,9 @@ bindsym $mod+d exec $menu
# Despite the name, also works for non-floating windows. # Despite the name, also works for non-floating windows.
# Change normal to inverse to use left mouse button for resizing and right # Change normal to inverse to use left mouse button for resizing and right
# mouse button for dragging. # mouse button for dragging.
floating_modifier $mod normal # DISABLED 2026-09-28: experiment for windows popping out (accidental mod+click)
#floating_modifier $mod normal
floating_modifier none
# Reload the configuration file # Reload the configuration file
bindsym $mod+Shift+c reload bindsym $mod+Shift+c reload
+66 -55
View File
@@ -1,56 +1,67 @@
#smart_corner_radius on #smart_corner_radius on
##gaps inner 6
## # ╔══════════════════════════════════════════════════════════════════╗
##default_border pixel 1 # ║ COLOR PALETTE ║
## # ║ To change colors: ║
##corner_radius 8 # ║ 1. Edit the $base00–$base0F values below ║
##blur enable # ║ 2. Mirror those hex values in ~/.config/sway/waybar/style.css ║
##blur_passes 2 # ║ (search for @define-color and replace the hex codes) ║
##blur_radius 2 # ║ 3. Run: swaymsg reload ║
##layer_effects "waybar" "blur enable"; shadows enable # ╚══════════════════════════════════════════════════════════════════╝
##shadows on
##shadow_blur_radius 5 gaps inner 2
## default_border pixel 2
###https://github.com/rkubosz/base16-sway
## # ╔══════════════════════════════════════════════════════════════════╗
###set $base00 #031A16 # ║ COLOR PALETTE (your 5 colors + black) ║
###set $base01 #0B342D # ║ ║
###set $base02 #184E45 # ║ To change colors: ║
###set $base03 #2B685E # ║ 1. Edit the $base00–$base0F hex values below ║
###set $base04 #5F9C92 # ║ 2. Mirror those hex values in ~/.config/sway/waybar/style.css ║
###set $base05 #81B5AC # ║ (search for @define-color and replace the hex codes) ║
###set $base06 #A7CEC8 # ║ 3. Run: swaymsg reload ║
###set $base07 #D2E7E4 # ╚══════════════════════════════════════════════════════════════════╝
###set $base08 #3E9688
###set $base09 #3E7996 set $base00 #000000
###set $base0A #3E4C96 set $base01 #111111
###set $base0B #883E96 set $base02 #222222
###set $base0C #963E4C set $base03 #333333
###set $base0D #96883E set $base04 #666666
###set $base0E #4C963E set $base05 #999999
###set $base0F #3E965B set $base06 #CCCCCC
## set $base07 #FFFFFF
##set $base00 #000000 set $base08 #999999
##set $base01 #121212 set $base09 #999999
##set $base02 #222222 set $base0A #CCCCCC
##set $base03 #333333 set $base0B #999999
##set $base04 #999999 set $base0C #CCCCCC
##set $base05 #c1c1c1 set $base0D #999999
##set $base06 #999999 set $base0E #CCCCCC
##set $base07 #c1c1c1 set $base0F #666666
##set $base08 #5f8787
##set $base09 #aaaaaa # base00-02=bg #3E3B33, base03=olive #8C9A6B, base04=peach #F3B49F, base05=rust #D9714C, base06-07=cream #FFE8DB
##set $base0A #a06666
##set $base0B #dd9999 #set $base00 #000000
##set $base0C #aaaaaa #set $base01 #121212
##set $base0D #888888 #set $base02 #222222
##set $base0E #999999 #set $base03 #333333
##set $base0F #444444 #set $base04 #999999
## #set $base05 #c1c1c1
### Property Name Border BG Text Indicator Child Border #set $base06 #999999
##client.focused $base05 $base0D $base00 $base0D $base0D #set $base07 #c1c1c1
##client.focused_inactive $base01 $base01 $base05 $base03 $base01 #set $base08 #5f8787
##client.unfocused $base01 $base00 $base05 $base01 $base01 #set $base09 #aaaaaa
##client.urgent $base08 $base08 $base00 $base08 $base08 #set $base0A #a06666
##client.placeholder $base00 $base00 $base05 $base00 $base00 #set $base0B #dd9999
##client.background $base07 #set $base0C #aaaaaa
#set $base0D #888888
#set $base0E #999999
#set $base0F #444444
# Property Name Border BG Text Indicator Child Border
client.focused #FFFFFF $base00 #FFFFFF #FFFFFF $base00
client.focused_inactive $base02 $base00 $base05 $base03 $base02
client.unfocused $base01 $base00 $base05 $base03 $base01
client.urgent #FFA14C #FFA14C $base00 #FFA14C #FFA14C
client.placeholder $base00 $base00 $base05 $base00 $base00
client.background $base00
+1 -1
View File
@@ -10,7 +10,7 @@ for_window [window_type="menu"] floating enable
for_window [shell="xwayland"] title_format "[XWayland] %title" for_window [shell="xwayland"] title_format "[XWayland] %title"
for_window [title="LUCID"] floating enable for_window [title="LUCID"] floating enable
for_window [title="Pydm|pydm"] floating enable for_window [title="(?i)pydm"] floating enable
for_window [title="Form"] floating enable for_window [title="Form"] floating enable
for_window [title="zoom"] floating enable for_window [title="zoom"] floating enable
+357
View File
@@ -0,0 +1,357 @@
import Quickshell._Window
import Quickshell.I3
import Quickshell.Services.UPower
import Quickshell.Services.Pipewire
import Quickshell.Services.SystemTray
import Quickshell
import Quickshell.Widgets
import QtQuick
import QtQuick.Layouts
import QtQuick.Controls as QQC2
FloatingWindow {
id: root
title: "Quickshell Bar"
visible: true
implicitWidth: 1920
implicitHeight: 40
property string mode: ""
property string windowTitle: ""
Component.onCompleted: {
I3.rawEvent.connect(handleRawEvent)
pollWindowTitle()
pinBar()
}
function pinBar() {
I3.dispatch('[title="Quickshell Bar"] floating enable')
I3.dispatch('[title="Quickshell Bar"] move absolute position 0 0')
I3.dispatch('[title="Quickshell Bar"] resize set 1920 40')
I3.dispatch('[title="Quickshell Bar"] sticky enable')
}
function handleRawEvent(event) {
if (event.type === "mode") {
root.mode = event.data === "default" ? "" : event.data
}
if (event.type === "window" || event.type === "workspace") {
pollWindowTitle()
}
}
function pollWindowTitle() {
try {
var ws = I3.focusedWorkspace
if (ws && ws.lastIpcObject) {
root.windowTitle = findFocusedTitle(ws.lastIpcObject.nodes || [])
}
} catch (e) { root.windowTitle = "" }
}
function findFocusedTitle(nodes) {
for (var i = 0; i < nodes.length; i++) {
var n = nodes[i]
if (n.focused && n.name && !["$external", "i3bar"].includes(n.name)) {
return n.name
}
if (n.nodes && findFocusedTitle(n.nodes)) return findFocusedTitle(n.nodes)
if (n.floating_nodes) {
for (var j = 0; j < n.floating_nodes.length; j++) {
var fn = n.floating_nodes[j]
if (fn.focused && fn.name && fn.name !== "$external") return fn.name
}
}
}
return ""
}
function wsColor(num) {
var colors = ["#eb4d4b", "#64727D", "#f7ca18", "#fb6f92",
"#2ecc71", "#2980b9", "#f7768e", "#667581"]
return colors[num % 8] || colors[0]
}
function updateBattery() {
if (!UPower.displayDevice || !UPower.displayDevice.isReady ||
!UPower.displayDevice.powerSupply) {
batteryLabel.text = ""
return
}
var dev = UPower.displayDevice
var pct = Math.round(dev.percentage)
var state = dev.state
batteryItem.isCritical = pct <= 15 && state === 2
if (state === 4) { batteryLabel.text = pct + "%"; return }
var timeStr = ""
var seconds = 0
if (state === 1 || state === 5) seconds = dev.timeToFull * 60
else if (state === 2 || state === 6) seconds = dev.timeToEmpty * 60
if (seconds > 0 && seconds < 86400) {
var h = Math.floor(seconds / 3600)
var m = Math.floor((seconds % 3600) / 60)
timeStr = h > 0 ? h + ":" + m.toString().padStart(2, '0') + " " : m + "m "
}
var suffix = ""
if (state === 1 || state === 5) suffix = " C"
else if (state === 3) suffix = " P"
batteryLabel.text = timeStr + pct + "%" + suffix
}
// Background
Rectangle {
anchors.fill: parent
color: "black"
z: 0
}
// Bar content
RowLayout {
anchors.fill: parent
anchors.leftMargin: 4
anchors.rightMargin: 4
anchors.top: parent.top
anchors.bottom: parent.bottom
spacing: 2
z: 1
// LEFT SECTION
Item {
Layout.fillWidth: true
Layout.maximumWidth: root.implicitWidth * 0.33
RowLayout {
anchors.fill: parent
spacing: 2
// Workspaces
RowLayout {
Layout.fillWidth: true
Layout.maximumWidth: 600
spacing: 2
Repeater {
model: I3.workspaces
delegate: QQC2.ToolButton {
id: wsBtn
property bool isFocused: modelData.focused
property int wsNum: modelData.number
text: modelData.name
visible: modelData.active || modelData.focused || modelData.urgent
highlighted: isFocused
checkable: true
checked: isFocused
down: isFocused
onClicked: {
if (modelData.activate) modelData.activate()
else I3.dispatch(`workspace ${modelData.name}`)
}
font.pixelSize: 14
font.bold: true
width: implicitWidth + 8
padding: 0
palette {
button: isFocused ? wsColor(wsNum) : "transparent"
buttonText: "#ffffff"
}
// Hover underline
background: Rectangle {
anchors.fill: parent
color: "transparent"
Rectangle {
anchors.bottom: parent.bottom
anchors.left: parent.left
anchors.right: parent.right
height: 3
color: wsBtn.hovered || wsBtn.isFocused ? "#ffffff" : "transparent"
}
}
}
}
}
// Mode indicator
QQC2.Label {
text: root.mode
visible: root.mode !== ""
color: "#64727D"
font.pixelSize: 14
font.bold: true
font.italic: true
padding: 10
}
// Window title
QQC2.Label {
text: root.windowTitle
visible: root.windowTitle !== ""
Layout.fillWidth: true
Layout.maximumWidth: 300
elide: Text.ElideMiddle
color: "#ffffff"
font.pixelSize: 14
font.bold: true
padding: 10
}
}
}
// Spacer
Item { Layout.fillWidth: true }
// RIGHT SECTION
RowLayout {
spacing: 2
// Volume
Item {
height: parent.height
QQC2.Label {
id: volumeLabel
anchors.fill: parent
anchors.leftMargin: 10
anchors.rightMargin: 10
anchors.verticalCenter: parent.verticalCenter
color: "#ffffff"
font.pixelSize: 14
font.bold: true
horizontalAlignment: Text.AlignHCenter
text: {
if (!Pipewire.ready || !Pipewire.defaultAudioSink) return ""
var sink = Pipewire.defaultAudioSink
var vol = sink.audio ? sink.audio.averageVolume * 100 : 0
var muted = sink.audio ? sink.audio.isMuted : false
return muted ? "Muted" : Math.round(vol) + "%"
}
MouseArea {
anchors.fill: parent
onClicked: Qt.shellCommand("pavucontrol")
onWheel: function(event) {
if (Pipewire.ready && Pipewire.defaultAudioSink &&
Pipewire.defaultAudioSink.audio) {
var v = Pipewire.defaultAudioSink.audio.averageVolume
var step = event.angleDelta.y > 0 ? 0.05 : -0.05
Pipewire.defaultAudioSink.audio.averageVolume =
Math.max(0, Math.min(1, v + step))
}
}
}
}
}
// Battery
Item {
id: batteryItem
height: parent.height
property bool isCritical: false
QQC2.Label {
id: batteryLabel
anchors.fill: parent
anchors.leftMargin: 10
anchors.rightMargin: 10
anchors.verticalCenter: parent.verticalCenter
color: batteryItem.isCritical ? "#f53c3c" : "#ffffff"
font.pixelSize: 14
font.bold: true
horizontalAlignment: Text.AlignHCenter
}
Timer {
interval: 5000
running: true
repeat: true
onTriggered: root.updateBattery()
}
Component.onCompleted: root.updateBattery()
}
// Clock
Item {
height: parent.height
QQC2.Label {
id: clockLabel
anchors.fill: parent
anchors.leftMargin: 10
anchors.rightMargin: 10
anchors.verticalCenter: parent.verticalCenter
color: "#ffffff"
font.pixelSize: 14
font.bold: true
horizontalAlignment: Text.AlignHCenter
}
Timer {
interval: 1000
running: true
repeat: true
onTriggered: {
var now = new Date()
var h = now.getHours()
var ampm = h >= 12 ? "PM" : "AM"
h = h % 12 || 12
var time = h + ":" + now.getMinutes().toString().padStart(2, '0') +
":" + now.getSeconds().toString().padStart(2, '0') + " " + ampm
var date = now.getFullYear() + "-" +
(now.getMonth()+1).toString().padStart(2, '0') + "-" +
now.getDate().toString().padStart(2, '0')
clockLabel.text = time + " " + date
}
}
}
// System Tray
Item {
id: trayContainer
height: parent.height
Repeater {
model: SystemTray.items
delegate: Item {
width: 24
height: trayContainer.height
IconImage {
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left
anchors.leftMargin: 2
width: 22
height: 22
source: modelData.iconName || ""
visible: source !== ""
MouseArea {
anchors.fill: parent
onClicked: function(mouse) {
if (modelData.hasMenu) {
modelData.display(QsWindowAttached.window, 0, 0)
} else {
modelData.activate()
}
}
}
}
}
}
}
}
}
}
+16
View File
@@ -0,0 +1,16 @@
#!/bin/bash
dbus-update-activation-environment --systemd \
WAYLAND_DISPLAY \
DISPLAY \
SWAYSOCK \
XDG_SESSION_DESKTOP=sway \
XDG_SESSION_CLASS=user \
XDG_SEAT=seat0 \
XCURSOR_THEME=Adwaita \
XCURSOR_SIZE=35 \
GDK_BACKEND=wayland \
SDL_VIDEODRIVER=wayland \
"QT_QPA_PLATFORM=wayland-egl;xcb" \
MOZ_ENABLE_WAYLAND=1 \
WLR_DRM_NO_MODIFIERS=1 \
XWAYLAND_NO_SCALE=1
-8
View File
@@ -1,8 +0,0 @@
#!/bin/bash
export MOZ_ENABLE_WAYLAND=1
export WLR_DRM_NO_MODIFIERS=1
export QT_QPA_PLATFORM="wayland-egl;xcb"
export SDL_VIDEODRIVER=wayland
export XDG_SESSION_TYPE=wayland
export XDG_CURRENT_DESKTOP=sway
+3
View File
@@ -0,0 +1,3 @@
#!/bin/bash
slur
+49
View File
@@ -0,0 +1,49 @@
#!/bin/sh
# shikane-watchdog: auto-recover shikane from its deadlock bug.
#
# Bug (shikane 1.1.1): if a variant application is discarded mid-way
# (e.g. by a failing DP atomic commit), the daemon gets stuck in
# VariantInProgress/Discarded and keeps logging
# [WARN shikane::variant] Received invalid input AtomicChangeDone at state Discarded
# `shikanectl reload` does not recover it; a service restart does
# (re-applies the active profile in ~1s).
#
# A healthy daemon's last state-machine line is "VariantApplied".
set -u
unit=shikane
stuck=0
logs3=$(journalctl --user -u "$unit" -q --since "-3min" 2>/dev/null)
[ -z "$logs3" ] && exit 0
latest3=$(printf '%s\n' "$logs3" | grep 'daemon::state_machine' | tail -1)
if [ -n "$latest3" ]; then
case "$latest3" in
*VariantApplied*)
: ;; # healthy
*)
# InProgress/Discarded within the last 3 min: only a deadlock
# if the WARN signature is present (a legitimate slow transition
# has no WARN)
printf '%s\n' "$logs3" | grep -q 'invalid input' && stuck=1
;;
esac
else
# No state change in the last 3 min — check the last known state
last10=$(journalctl --user -u "$unit" -q --since "-10min" 2>/dev/null \
| grep 'daemon::state_machine' | tail -1)
case "$last10" in
'' | *VariantApplied*)
: ;; # stable and applied, or nothing to check
*)
stuck=1 ;; # stuck in-progress/discarded for >3 min
esac
fi
if [ "$stuck" -eq 1 ]; then
echo "shikane-watchdog: shikane stuck, restarting" >&2
systemctl --user restart "$unit"
fi
+104
View File
@@ -0,0 +1,104 @@
// -*- mode: jsonc -*-
{
"spacing": 2, // Gaps between modules (4px)
"modules-left": [
"sway/workspaces",
"sway/submap",
"sway/scratchpad",
"sway/window"
],
//"modules-center": [
//"sway/window"
//],
"modules-right": [
//"mpd",
"pulseaudio",
//"network",
"battery",
"clock",
"tray"
//"custom/power"
],
"sway/mode": {
"format": "<span style=\"italic\">{}</span>"
},
"sway/scratchpad": {
"format": "S{count}",
"show-empty": false,
"tooltip": true,
"tooltip-format": "{app}: {title}"
},
"tray": {
// "icon-size": 21,
"spacing": 10,
// "icons": {
// "blueman": "bluetooth",
// "TelegramDesktop": "$HOME/.local/share/icons/hicolor/16x16/apps/telegram.png"
// }
},
"clock": {
//"timezone": "America/Los_Angeles",
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
"format": "{:%r %Y-%m-%d}",
//"format": "{:%R %p %Y-%m-%d}",
//"format-alt": "{:%Y-%m-%d}"
},
"battery": {
"states": {
// "good": 95,
"warning": 30,
"critical": 15
},
"format": "{time} {capacity}%",
"format-full": "{capacity}%",
"format-charging": "{capacity}% C",
"format-plugged": "{capacity}% P",
"format-alt": "{time}",
// "format-good": "", // An empty format will hide the module
// "format-full": "",
},
"battery#bat2": {
"bat": "BAT2"
},
"power-profiles-daemon": {
"format": "{profile}",
"tooltip-format": "Power profile: {profile}\nDriver: {driver}",
"tooltip": true,
"format-icons": {"default": [""]}
},
"network": {
// "interface": "wlp2*", // (Optional) To force the use of this interface
//"format-wifi": "{essid} ({signalStrength}%)",
//"format-ethernet": "{ipaddr}/{cidr}",
//"tooltip-format": "{ifname} via {gwaddr}",
//"format-linked": "{ifname} (No IP)",
//"format-disconnected": "Disconnected",
"format-disconnected": "Disconnected",
"format-alt": "{ifname}: {ipaddr}/{cidr}"
},
"pulseaudio": {
// "scroll-step": 1, // %, can be a float
"format": "{volume}% {format_source}",
"format-bluetooth": "{volume}% {format_source}",
"format-bluetooth-muted": " {format_source}",
"format-muted": " {format_source}",
"format-source": "{volume}%",
"format-source-muted": "",
"format-icons": {
"default": [""]
},
"on-click": "pavucontrol"
},
"custom/media": {
"format": "{text}",
"return-type": "json",
"max-length": 40,
"format-icons": {
"spotify": "",
"default": ""
},
"escape": true,
"exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder
// "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name
}
}
+347
View File
@@ -0,0 +1,347 @@
/*
* Waybar theme — unified with sway color palette.
*
* ╔══════════════════════════════════════════════════════════════════╗
* ║ COLOR PALETTE ║
* ║ To change colors: ║
* ║ 1. Edit the $base00–$base0F values in ║
* ║ ~/.config/sway/config.d/swayfx ║
* ║ 2. Mirror those hex values in the @define-color block below ║
* ║ 3. Run: swaymsg reload ║
* ╚══════════════════════════════════════════════════════════════════╝
*/
/* ── Palette (your 5 colors + black) ── */
@define-color bg #000000;
@define-color bg-dark #000000;
@define-color bg-mid #000000;
@define-color bg-light #333333;
@define-color fg-dim #666666;
@define-color fg #999999;
@define-color fg-bright #CCCCCC;
@define-color fg-max #FFFFFF;
@define-color teal #999999;
@define-color blue #999999;
@define-color indigo #CCCCCC;
@define-color magenta #999999;
@define-color red #CCCCCC;
@define-color yellow #999999;
@define-color orange #999999;
@define-color green #CCCCCC;
@define-color cyan #666666;
/* ── Semantic aliases ── */
@define-color highlight @blue;
@define-color accent @teal;
@define-color urgent @red;
@define-color warning @yellow;
@define-color success @green;
* {
font-family: "JetBrainsMonoNFM-Regular";
font-size: 14px;
font-weight: bold;
}
window#waybar {
background-color: @bg;
color: @fg;
transition-property: background-color;
transition-duration: .5s;
}
window#waybar.hidden {
opacity: 0.2;
}
/* ── Buttons ── */
button {
box-shadow: inset 0 -3px transparent;
border: none;
border-radius: 0;
}
button:hover {
background: inherit;
box-shadow: inset 0 -3px @fg-bright;
}
/* ── Workspaces ── */
#workspaces button {
padding: 0 4px;
color: @fg-dim;
}
#workspaces button:hover {
background: @bg-mid;
}
#workspaces button.focused {
background-color: @highlight;
color: @bg;
}
#workspaces button.urgent {
background-color: @urgent;
}
/* ── Mode indicator ── */
#mode {
background-color: @blue;
box-shadow: inset 0 -3px @fg-bright;
}
/* ── Common module spacing ── */
#clock,
#battery,
#cpu,
#memory,
#disk,
#temperature,
#backlight,
#network,
#pulseaudio,
#wireplumber,
#custom-media,
#tray,
#mode,
#idle_inhibitor,
#scratchpad,
#power-profiles-daemon,
#mpd {
padding: 0 10px;
color: @fg;
}
/* ── Window & workspace margins ── */
#window,
#workspaces {
margin: 0 4px;
}
.modules-left > widget:first-child > #workspaces {
margin-left: 0;
}
.modules-right > widget:last-child > #workspaces {
margin-right: 0;
}
/* ── Battery ── */
#battery.charging, #battery.plugged {
color: @teal;
}
@keyframes blink {
to {
background-color: @fg-bright;
color: @bg;
}
}
#battery.critical:not(.charging) {
background-color: @urgent;
color: @fg-max;
animation-name: blink;
animation-duration: 0.5s;
animation-timing-function: steps(12);
animation-iteration-count: infinite;
animation-direction: alternate;
}
/* ── Power profiles ── */
#power-profiles-daemon {
padding-right: 15px;
}
#power-profiles-daemon.performance {
background-color: @urgent;
color: @fg-max;
}
#power-profiles-daemon.balanced {
background-color: @blue;
color: @fg-max;
}
#power-profiles-daemon.power-saver {
background-color: @success;
color: @bg;
}
/* ── Scratchpad ── */
#scratchpad {
background-color: transparent;
color: @fg-dim;
opacity: 0.5;
padding: 0 6px;
}
#scratchpad:hover {
opacity: 0.8;
}
#scratchpad.empty {
background-color: transparent;
}
/* ── Clock ── */
#clock {
/* background-color: @highlight; */
}
/* ── Battery ── */
#battery {
/* background-color: @fg-max;
color: @bg; */
}
/* ── Tray ── */
#tray > .passive {
-gtk-icon-effect: dim;
}
#tray > .needs-attention {
-gtk-icon-effect: highlight;
background-color: @urgent;
}
/* ── Pulseaudio ── */
#pulseaudio:hover {
/* hover style optional */
}
#pulseaudio.muted {
color: @fg-dim;
}
/* ── Idle inhibitor ── */
#idle_inhibitor {
background-color: @bg-dark;
}
#idle_inhibitor.activated {
background-color: @fg-bright;
color: @bg-dark;
}
label:focus {
background-color: @bg;
}
/* ── Legacy module styles (if ever enabled) ── */
#cpu {
background-color: @success;
color: @bg;
}
#memory {
background-color: @magenta;
}
#disk {
background-color: @warning;
}
#backlight {
background-color: @bg-light;
}
#network.disconnected {
background-color: @urgent;
}
#wireplumber {
background-color: @fg-max;
color: @bg;
}
#wireplumber.muted {
background-color: @urgent;
}
#custom-media {
background-color: @cyan;
color: @bg-dark;
min-width: 100px;
}
#custom-media.custom-spotify {
background-color: @cyan;
}
#custom-media.custom-vlc {
background-color: @warning;
}
#temperature {
background-color: @warning;
}
#temperature.critical {
background-color: @urgent;
}
#mpd {
background-color: @cyan;
color: @bg-dark;
}
#mpd.disconnected {
background-color: @urgent;
}
#mpd.stopped {
background-color: @bg-light;
}
#mpd.paused {
background-color: @accent;
}
/* ── Privacy items ── */
#privacy {
padding: 0;
}
#privacy-item {
padding: 0 5px;
color: @fg-max;
}
#privacy-item.screenshare {
background-color: @orange;
}
#privacy-item.audio-in {
background-color: @success;
}
#privacy-item.audio-out {
background-color: @blue;
}
/* ── Language & keyboard ── */
#language {
background: @teal;
color: @bg;
padding: 0 5px;
margin: 0 5px;
min-width: 16px;
}
#keyboard-state {
background: @teal;
color: @bg;
padding: 0;
margin: 0 5px;
min-width: 16px;
}
#keyboard-state > label {
padding: 0 5px;
}
#keyboard-state > label.locked {
background: @bg-dark;
}
@@ -0,0 +1,6 @@
[Unit]
Description=shikane watchdog - restart shikane if its state machine is stuck
[Service]
Type=oneshot
ExecStart=/home/work/.config/sway/scripts/shikane-watchdog.sh
@@ -0,0 +1,10 @@
[Unit]
Description=Run shikane watchdog every 2 minutes
[Timer]
OnBootSec=2min
OnUnitInactiveSec=2min
AccuracySec=5s
[Install]
WantedBy=timers.target
+17
View File
@@ -0,0 +1,17 @@
[Unit]
Description=shikane
PartOf=graphical-session.target
After=graphical-session.target
Requisite=graphical-session.target
# Recover from crashes without giving up permanently
StartLimitIntervalSec=60
StartLimitBurst=10
[Service]
Type=simple
ExecStart=/usr/bin/shikane
Restart=on-failure
RestartSec=2
[Install]
WantedBy=sway-session.target
+6
View File
@@ -0,0 +1,6 @@
[Unit]
Description=sway compositor session
Documentation=man:systemd.special(7)
BindsTo=graphical-session.target
Wants=graphical-session-pre.target
After=graphical-session-pre.target
@@ -0,0 +1 @@
/home/work/.config/systemd/user/shikane.service
@@ -0,0 +1 @@
/home/work/.config/systemd/user/shikane-watchdog.timer
+7 -6
View File
@@ -1,9 +1,10 @@
set-option -sa terminal-overrides ",xterm*:Tc" set-option -sa terminal-overrides ",xterm*:Tc"
set -g default-terminal "xterm-256color" set -g default-terminal "xterm-256color"
set -g extended-keys on
bind-key r source-file ~/.config/tmux/tmux.conf \; display "Reloaded!" bind-key r source-file ~/.config/tmux/tmux.conf \; display "Reloaded!"
set-option -g default-shell /bin/zsh #set-option -g default-shell /bin/zsh
# remap prefix # remap prefix
unbind C-b unbind C-b
@@ -51,9 +52,9 @@ set-option -g update-environment "SSH_AUTH_SOCK \
SSH_CONNECTION \ SSH_CONNECTION \
DISPLAY " DISPLAY "
set -g status-position bottom # set -g status-position bottom
set -g status-left "#{session_name} " # set -g status-left " #{session_name} "
set -g status-right "" # set -g status-right ""
set -g status-right-length 100 # set -g status-right-length 100
set -g status-style 'fg=default' # set -g status-style 'fg=default'
+27 -160
View File
@@ -1,110 +1,32 @@
// -*- mode: jsonc -*- // -*- mode: jsonc -*-
{ {
// "layer": "top", // Waybar at top layer "spacing": 2, // Gaps between modules (4px)
// "position": "bottom", // Waybar position (top|bottom|left|right)
//"height": 10, // Waybar height (to be removed for auto height)
// "width": 1280, // Waybar width
"spacing": 6, // Gaps between modules (4px)
// Choose the order of the modules
"modules-left": [ "modules-left": [
"sway/workspaces", "hyprland/workspaces",
"sway/mode", "hyprland/submap",
"sway/scratchpad", "hyprland/window"
"custom/media"
], ],
//"modules-center": [ //"modules-center": [
//"sway/window" //"sway/window"
//], //],
"modules-right": [ "modules-right": [
"mpd", //"mpd",
"custom/audio_idle_inhibitor",
"pulseaudio", "pulseaudio",
"network", //"network",
//"power-profiles-daemon",
//"cpu",
//"memory",
//"temperature",
//"backlight",
//"keyboard-state",
//"sway/language",
"battery", "battery",
//"battery#bat2",
"clock", "clock",
"tray" "tray"
//"custom/power" //"custom/power"
], ],
// Modules configuration
// "sway/workspaces": {
// "disable-scroll": true,
// "all-outputs": true,
// "warp-on-scroll": false,
// "format": "{name}: {icon}",
// "format-icons": {
// "1": "",
// "2": "",
// "3": "",
// "4": "",
// "5": "",
// "urgent": "",
// "focused": "",
// "default": ""
// }
// },
"keyboard-state": {
"numlock": true,
"capslock": true,
"format": "{name} {icon}",
"format-icons": {
"locked": "",
"unlocked": ""
}
},
"sway/mode": { "sway/mode": {
"format": "<span style=\"italic\">{}</span>" "format": "<span style=\"italic\">{}</span>"
}, },
"sway/scratchpad": { "sway/scratchpad": {
"format": "{icon} {count}", "format": "{count}",
"show-empty": false, "show-empty": false,
"format-icons": ["", ""],
"tooltip": true, "tooltip": true,
"tooltip-format": "{app}: {title}" "tooltip-format": "{app}: {title}"
}, },
"mpd": {
"format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {title} ⸨{songPosition}|{queueLength}⸩% ",
"format-alt": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩% ",
"format-disconnected": "Disconnected ",
//"format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ",
"format-stopped": "",
//"unknown-tag": "N/A",
"unknown-tag": "",
"interval": 5,
"consume-icons": {
"on": " "
},
"random-icons": {
"off": "<span color=\"#f53c3c\"></span> ",
"on": " "
},
"repeat-icons": {
"on": " "
},
"single-icons": {
"on": "1 "
},
"state-icons": {
"paused": "",
"playing": ""
},
"tooltip-format": "MPD (connected)",
"tooltip-format-disconnected": "MPD (disconnected)"
},
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "",
"deactivated": ""
}
},
"tray": { "tray": {
// "icon-size": 21, // "icon-size": 21,
"spacing": 10, "spacing": 10,
@@ -120,117 +42,62 @@
//"format": "{:%R %p %Y-%m-%d}", //"format": "{:%R %p %Y-%m-%d}",
//"format-alt": "{:%Y-%m-%d}" //"format-alt": "{:%Y-%m-%d}"
}, },
"cpu": {
"format": "{usage}% ",
"tooltip": false
},
"memory": {
"format": "{}% "
},
"temperature": {
// "thermal-zone": 2,
// "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
"critical-threshold": 80,
// "format-critical": "{temperatureC}°C {icon}",
"format": "{temperatureC}°C {icon}",
"format-icons": ["", "", ""]
},
"backlight": {
// "device": "acpi_video1",
"format": "{percent}% {icon}",
"format-icons": ["", "", "", "", "", "", "", "", ""]
},
"battery": { "battery": {
"states": { "states": {
// "good": 95, // "good": 95,
"warning": 30, "warning": 30,
"critical": 15 "critical": 15
}, },
"format": "{time} {capacity}% {icon}", "format": "{time} {capacity}%",
"format-full": "{capacity}% {icon}", "format-full": "{capacity}%",
"format-charging": "{capacity}% C", "format-charging": "{capacity}% C",
"format-plugged": "{capacity}% P", "format-plugged": "{capacity}% P",
"format-alt": "{time} {icon}", "format-alt": "{time}",
// "format-good": "", // An empty format will hide the module // "format-good": "", // An empty format will hide the module
// "format-full": "", // "format-full": "",
"format-icons": ["", "", "", "", ""]
}, },
"battery#bat2": { "battery#bat2": {
"bat": "BAT2" "bat": "BAT2"
}, },
"power-profiles-daemon": { "power-profiles-daemon": {
"format": "{icon}", "format": "{profile}",
"tooltip-format": "Power profile: {profile}\nDriver: {driver}", "tooltip-format": "Power profile: {profile}\nDriver: {driver}",
"tooltip": true, "tooltip": true,
"format-icons": { "format-icons": {"default": [""]}
"default": "",
"performance": "",
"balanced": "",
"power-saver": ""
}
}, },
"network": { "network": {
// "interface": "wlp2*", // (Optional) To force the use of this interface // "interface": "wlp2*", // (Optional) To force the use of this interface
"format-wifi": "{essid} ({signalStrength}%) ", //"format-wifi": "{essid} ({signalStrength}%)",
"format-ethernet": "{ipaddr}/{cidr} ", //"format-ethernet": "{ipaddr}/{cidr}",
"tooltip-format": "{ifname} via {gwaddr} ", //"tooltip-format": "{ifname} via {gwaddr}",
"format-linked": "{ifname} (No IP) ", //"format-linked": "{ifname} (No IP)",
"format-disconnected": "Disconnected ⚠", //"format-disconnected": "Disconnected",
"format-disconnected": "Disconnected",
"format-alt": "{ifname}: {ipaddr}/{cidr}" "format-alt": "{ifname}: {ipaddr}/{cidr}"
}, },
"pulseaudio": { "pulseaudio": {
// "scroll-step": 1, // %, can be a float // "scroll-step": 1, // %, can be a float
"format": "{volume}% {icon} {format_source}", "format": "{volume}% {format_source}",
"format-bluetooth": "{volume}% {icon}  {format_source}", "format-bluetooth": "{volume}% {format_source}",
"format-bluetooth-muted": " {icon} {format_source}", "format-bluetooth-muted": " {format_source}",
"format-muted": " {format_source}", "format-muted": " {format_source}",
"format-source": "{volume}%", "format-source": "{volume}%",
"format-source-muted": "", "format-source-muted": "",
"format-icons": { "format-icons": {
"headphone": "", "default": [""]
"hands-free": "",
"headset": "",
"phone": "",
"portable": "",
"car": "",
"default": ["", "", ""]
}, },
"on-click": "pavucontrol" "on-click": "pavucontrol"
}, },
"custom/media": { "custom/media": {
"format": "{icon} {text}", "format": "{text}",
"return-type": "json", "return-type": "json",
"max-length": 40, "max-length": 40,
"format-icons": { "format-icons": {
"spotify": "", "spotify": "",
"default": "🎜" "default": ""
}, },
"escape": true, "escape": true,
"exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder "exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder
// "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name // "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name
},
"custom/power": {
"format" : "⏻ ",
"tooltip": false,
"menu": "on-click",
"menu-file": "$HOME/.config/waybar/power_menu.xml", // Menu file in resources folder
"menu-actions": {
"shutdown": "shutdown",
"reboot": "reboot",
"suspend": "systemctl suspend",
"hibernate": "systemctl hibernate"
}
},
"custom/audio_idle_inhibitor": {
"format": "{icon} ",
"exec": "sway-audio-idle-inhibit --dry-print-both-waybar",
"exec-if": "which sway-audio-idle-inhibit",
"return-type": "json",
"format-icons": {
"output": "",
"input": "",
"output-input": " ",
"none": ""
}
} }
} }
+20 -16
View File
@@ -1,8 +1,10 @@
* { * {
/* `otf-font-awesome` is required to be installed for icons */ /* `otf-font-awesome` is required to be installed for icons */
/*font-family: FontAwesome, Roboto, Helvetica, Arial, sans-serif; */ /*font-family: FontAwesome, Roboto, Helvetica, Arial, sans-serif; */
font-family: "JetBrainsMono NF"; /*font-family: "JetBrainsMono NF";*/
font-size: 13px; font-family: "JetBrainsMonoNFM-Regular";
font-size: 14px;
font-weight: bold;
} }
window#waybar { window#waybar {
@@ -25,14 +27,6 @@ window#waybar.solo {
/*background-color: #FFFFFF;*/ /*background-color: #FFFFFF;*/
} }
window#waybar.termite {
background-color: #3F3F3F;
}
window#waybar.chromium {
background-color: #000000;
border: none;
}
button { button {
/* Use box-shadow instead of border so the text isn't offset */ /* Use box-shadow instead of border so the text isn't offset */
@@ -54,7 +48,7 @@ button:hover {
} }
#workspaces button { #workspaces button {
padding: 0 5px; padding: 0 4px;
background-color: transparent; background-color: transparent;
color: #ffffff; color: #ffffff;
} }
@@ -63,15 +57,25 @@ button:hover {
background: rgba(0, 0, 0, 0.2); background: rgba(0, 0, 0, 0.2);
} }
#workspaces button.focused { #workspaces button.active {
background-color: #64727D; background-color: #eb4d4b;
box-shadow: inset 0 -3px #ffffff; box-shadow: inset 0 -3px #ffffff;
color: #ffffff;
font-weight: bold;
} }
#workspaces button.urgent { #workspaces button.urgent {
background-color: #eb4d4b; background-color: #eb4d4b;
} }
#workspaces button.visible {
background-color: #64727D;
}
#workspaces button.empty {
background-color: transparent;
}
#mode { #mode {
background-color: #64727D; background-color: #64727D;
box-shadow: inset 0 -3px #ffffff; box-shadow: inset 0 -3px #ffffff;
@@ -99,17 +103,17 @@ button:hover {
} }
#window, #window,
#workspaces { #workspaces-hyprland {
margin: 0 4px; margin: 0 4px;
} }
/* If workspaces is the leftmost module, omit left margin */ /* If workspaces is the leftmost module, omit left margin */
.modules-left > widget:first-child > #workspaces { .modules-left > widget:first-child > #workspaces-hyprland {
margin-left: 0; margin-left: 0;
} }
/* If workspaces is the rightmost module, omit right margin */ /* If workspaces is the rightmost module, omit right margin */
.modules-right > widget:last-child > #workspaces { .modules-right > widget:last-child > #workspaces-hyprland {
margin-right: 0; margin-right: 0;
} }
+5 -1
View File
@@ -1 +1,5 @@
./.config/nvim/lazy-lock.json .config/nvim/lazy-lock.json
.config/opencode/node_modules/
.config/opencode/package.json
.config/opencode/bun.lock
.config/opencode/package-lock.json
+36
View File
@@ -0,0 +1,36 @@
# Auto Complete
autoload -Uz compinit
compinit
# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
alias dir='dir --color=auto'
alias vdir='vdir --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
fi
# some more ls aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
# Alias
alias vim='nvim'
alias ssh='ssh -YC'
# Config
source <(fzf --zsh)
autoload -Uz vcs_info
precmd_vcs_info() { vcs_info }
precmd_functions+=( precmd_vcs_info )
setopt prompt_subst
RPROMPT='${vcs_info_msg_0_}'
#PROMPT='${vcs_info_msg_0_}%# '
PROMPT='%n@%c%# '
zstyle ':vcs_info:git:*' formats '%b'
+22
View File
@@ -11,3 +11,25 @@ stow .
``` ```
If stow is not installed use ./install.sh from .dotfiles repo If stow is not installed use ./install.sh from .dotfiles repo
# User services
## shikane-watchdog
`.config/systemd/user/shikane-watchdog.timer` (every 2 min, user unit)
runs `.config/sway/scripts/shikane-watchdog.sh`, which restarts the
`shikane` user service if its state machine is stuck.
Why: shikane 1.1.1 deadlocks when a profile application is discarded
mid-way (e.g. by a failing DP atomic commit on the external display).
The daemon then keeps logging
`[WARN shikane::variant] Received invalid input AtomicChangeDone at state Discarded`
and `shikanectl reload` no longer recovers it. The watchdog detects
that signature in the journal and runs `systemctl --user restart shikane`
(re-applies the active profile in ~1s). It never restarts a healthy
or legitimately transitioning daemon.
```console
systemctl --user status shikane-watchdog.timer # check it's active
systemctl --user disable --now shikane-watchdog.timer # disable
```
-13
View File
@@ -1,13 +0,0 @@
[Desktop Entry]
Name=Zoom Workplace
Comment=Zoom Video Conference
Exec=/usr/bin/zoom %U
Icon=Zoom
Terminal=false
Type=Application
Encoding=UTF-8
Categories=Network;Application;
StartupWMClass=zoom
MimeType=x-scheme-handler/zoommtg;x-scheme-handler/zoomus;x-scheme-handler/tel;x-scheme-handler/callto;x-scheme-handler/zoomphonecall;x-scheme-handler/zoomphonesms;x-scheme-handler/zoomcontactcentercall;application/x-zoom
X-KDE-Protocols=zoommtg;zoomus;tel;callto;zoomphonecall;zoomphonesms;zoomcontactcentercall;
Name[en_US]=Zoom Workplace
+8
View File
@@ -0,0 +1,8 @@
[Desktop Entry]
Type=Application
Name=myAppName
Icon=~/myApp/icon.xpm
Exec=~/myApp/launcher
Comment=brief description
Categories=Development;IDE;
Terminal=false
@@ -1,209 +0,0 @@
[Desktop Entry]
Categories=Utility;X-SuSE-SyncUtility;
Type=Application
Exec=nextcloud %u
Name=Nextcloud Desktop
Comment=Nextcloud desktop synchronization client
GenericName=Folder Sync
Icon=Nextcloud
Keywords=Nextcloud;syncing;file;sharing;
X-GNOME-Autostart-Delay=3
MimeType=application/vnd.nextcloud;x-scheme-handler/nc;
Actions=Quit;
# Translations
Comment[oc]=Nextcloud sincronizacion del client
GenericName[oc]=Dorsièr de Sincronizacion
Name[oc]=Nextcloud sincronizacion del client
Icon[oc]=Nextcloud
Comment[ar]=Nextcloud زبون مزامنة مكتبي
GenericName[ar]=مزامنة المجلد
Name[ar]=Nextcloud زبون مزامنة مكتبي
Icon[ar]=Nextcloud
Comment[bg_BG]=Nextcloud клиент за десктоп синхронизация
GenericName[bg_BG]=Синхронизиране на папката
Name[bg_BG]=Nextcloud клиент десктоп синхронизация
Icon[bg_BG]=Nextcloud
Comment[ca]=Client de sincronització d'escriptori Nextcloud
GenericName[ca]=Sincronització de carpetes
Name[ca]=Client de sincronització d'escriptori Nextcloud
Icon[ca]=Nextcloud
Comment[da]=Nextcloud skrivebordsklient til synkronisering
GenericName[da]=Mappesynkronisering
Name[da]=Nextcloud skrivebordsklient til synk
Icon[da]=Nextcloud
Comment[de]=Nextcloud Desktop-Synchronisationsclient
GenericName[de]=Ordner-Synchronisation
Name[de]=Nextcloud Desktop-Synchronisationsclient
Icon[de]=Nextcloud
Comment[ja_JP]=Nextcloud デスクトップ同期クライアント
GenericName[ja_JP]=フォルダー同期
Name[ja_JP]=Nextcloud デスクトップ同期クライアント
Icon[ja_JP]=Nextcloud
Comment[el]=Nextcloud συγχρονισμός επιφάνειας εργασίας πελάτη
GenericName[el]=Συγχρονισμός φακέλου
Name[el]=Nextcloud συγχρονισμός επιφάνειας εργασίας πελάτη
Icon[el]=Nextcloud
Comment[en_GB]=Nextcloud desktop synchronisation client
GenericName[en_GB]=Folder Sync
Name[en_GB]=Nextcloud desktop sync client
Icon[en_GB]=Nextcloud
Comment[es]=Nextcloud cliente de sincronización de escritorio
GenericName[es]=Sincronización de carpeta
Name[es]=Nextcloud cliente de sincronización de escritorio
Icon[es]=Nextcloud
Comment[de_DE]=Nextcloud Desktop-Synchronisationsclient
GenericName[de_DE]=Ordner-Synchronisation
Name[de_DE]=Nextcloud Desktop-Synchronisationsclient
Icon[de_DE]=Nextcloud
Comment[eu]=Nextcloud mahaigaineko sinkronizazio bezeroa
GenericName[eu]=Karpetaren sinkronizazioa
Name[eu]=Nextcloud mahaigaineko sinkronizazio bezeroa
Icon[eu]=Nextcloud
GenericName[fa]=همسان سازی پوشه‌ها
Name[fa]=nextcloud نسخه‌ی همسان سازی مشتری
Icon[fa]=Nextcloud
Comment[fr]=Synchronisez vos dossiers avec un serveur Nextcloud
GenericName[fr]=Synchronisation de dossier
Name[fr]=Client de synchronisation Nextcloud
Icon[fr]=Nextcloud
Comment[gl]=Nextcloud cliente de sincronización para escritorio
GenericName[gl]=Sincronizar Cartafol
Name[gl]=Nextcloud cliente de sincronización para escritorio
Icon[gl]=Nextcloud
Comment[he]=Nextcloud לקוח סנכון שולחן עבודה
GenericName[he]=סנכון תיקייה
Name[he]=Nextcloud לקוח סנכרון שולחן עבודה
Icon[he]=Nextcloud
Comment[ia]=Nextcloud cliente de synchronisation pro scriptorio
GenericName[ia]=Synchronisar Dossier
Name[ia]=Nextcloud cliente de synchronisation pro scriptorio
Icon[ia]=Nextcloud
Comment[id]=Klien sinkronisasi desktop Nextcloud
GenericName[id]=Folder Sync
Name[id]=Klien sync desktop Nextcloud
Icon[id]=Nextcloud
Comment[is]=Nextcloud skjáborðsforrit samstillingar
GenericName[is]=Samstilling möppu
Name[is]=Nextcloud skjáborðsforrit samstillingar
Icon[is]=Nextcloud
Comment[it]=Client di sincronizzazione del desktop di Nextcloud
GenericName[it]=Sincronizzazione cartella
Name[it]=Client di sincronizzazione del desktop di Nextcloud
Icon[it]=Nextcloud
Comment[ko]=Nextcloud 데스크톱 동기화 클라이언트
GenericName[ko]=폴더 동기화
Name[ko]=Nextcloud 데스크톱 동기화 클라이언트
Icon[ko]=Nextcloud
Comment[hu_HU]=Nextcloud asztali szinkronizációs kliens
GenericName[hu_HU]=Könyvtár szinkronizálás
Name[hu_HU]=Nextcloud asztali szinkr. kliens
Icon[hu_HU]=Nextcloud
Comment[af_ZA]=Nextcloud werkskermsinchroniseerkliënt
GenericName[af_ZA]=Vouersinchronisering
Name[af_ZA]=Nextcloud werkskermsinchroniseerkliënt
Icon[af_ZA]=Nextcloud
Comment[nl]=Nextcloud desktop synchronisatie client
GenericName[nl]=Mappen sync
Name[nl]=Nextcloud desktop sync client
Icon[nl]=Nextcloud
Comment[et_EE]=Nextcloud sünkroonimise klient töölauale
GenericName[et_EE]=Kaustade sünkroonimine
Name[et_EE]=Nextcloud sünkroonimise klient töölauale
Icon[et_EE]=Nextcloud
Comment[pl]=Nextcloud klient synchronizacji dla komputerów stacjonarnych
GenericName[pl]=Folder Synchronizacji
Name[pl]=Nextcloud klient synchronizacji dla komputerów stacjonarnych
Icon[pl]=Nextcloud
Comment[pt_BR]=Nextcloud cliente de sincronização do computador
GenericName[pt_BR]=Sincronização de Pasta
Name[pt_BR]=Nextcloud cliente de sincronização de desktop
Icon[pt_BR]=Nextcloud
Comment[cs_CZ]=Nextcloud počítačový synchronizační klient
GenericName[cs_CZ]=Synchronizace adresáře
Name[cs_CZ]=Nextcloud počítačový synchronizační klient
Icon[cs_CZ]=Nextcloud
Comment[ru]=Настольный клиент синхронизации Nextcloud
GenericName[ru]=Синхронизация каталогов
Name[ru]=Настольный клиент синхронизации Nextcloud
Icon[ru]=Nextcloud
Comment[sl]=Nextcloud ‒ Program za usklajevanje datotek z namizjem
GenericName[sl]=Usklajevanje map
Name[sl]=Nextcloud ‒ Program za usklajevanje datotek z namizjem
Icon[sl]=Nextcloud
Comment[sq]=Klient njëkohësimesh Nextcloud për desktop
GenericName[sq]=Njëkohësim Dosjesh
Name[sq]=Klient njëkohësimesh Nextcloud për desktop
Icon[sq]=Nextcloud
Comment[fi_FI]=Nextcloud työpöytäsynkronointisovellus
GenericName[fi_FI]=Kansion synkronointi
Name[fi_FI]=Nextcloud työpöytäsynkronointisovellus
Icon[fi_FI]=Nextcloud
Comment[sv]=Nextcloud desktop synkroniseringsklient
GenericName[sv]=Mappsynk
Name[sv]=Nextcloud desktop synk-klient
Icon[sv]=Nextcloud
Comment[tr]=Nextcloud masaüstü eşitleme istemcisi
GenericName[tr]=Dosya Eşitleme
Name[tr]=Nextcloud masaüstü eşitleme istemcisi
Icon[tr]=Nextcloud
Comment[uk]=Настільний клієнт синхронізації Nextcloud
GenericName[uk]=Синхронізація теки
Name[uk]=Настільний клієнт синхронізації Nextcloud
Icon[uk]=Nextcloud
Comment[ro]=Nextcloud client de sincronizare pe desktop
GenericName[ro]=Sincronizare director
Name[ro]=Nextcloud client de sincronizare pe desktop
Icon[ro]=Nextcloud
Comment[zh_CN]=Nextcloud 桌面同步客户端
GenericName[zh_CN]=文件夹同步
Name[zh_CN]=Nextcloud 桌面同步客户端
Icon[zh_CN]=Nextcloud
Comment[zh_HK]=桌面版同步客户端
Comment[zh_TW]=Nextcloud 桌面同步客戶端
GenericName[zh_TW]=資料夾同步
Name[zh_TW]=Nextcloud 桌面同步客戶端
Icon[zh_TW]=Nextcloud
Comment[es_AR]=Cliente de sincronización para escritorio Nextcloud
GenericName[es_AR]=Sincronización de directorio
Name[es_AR]=Cliente de sincronización para escritorio Nextcloud
Icon[es_AR]=Nextcloud
Comment[lt_LT]=Nextcloud darbalaukio sinchronizavimo programa
GenericName[lt_LT]=Katalogo sinchnorizacija
Name[lt_LT]=Nextcloud darbalaukio programa
Icon[lt_LT]=Nextcloud
Comment[th_TH]=Nextcloud ไคลเอนต์ประสานข้อมูลเดสก์ท็อป
GenericName[th_TH]=ประสานข้อมูลโฟลเดอร์
Name[th_TH]= Nextcloud ไคลเอนต์ประสานข้อมูลเดสก์ท็อป
Icon[th_TH]=Nextcloud
Comment[es_MX]=Cliente de escritorio para sincronziación de Nextcloud
GenericName[es_MX]=Sincronización de Carpetas
Name[es_MX]=Cliente de escritorio para sincronziación de Nextcloud
Icon[es_MX]=Nextcloud
Comment[nb_NO]=Nextcloud skrivebordssynkroniseringsklient
GenericName[nb_NO]=Mappesynkronisering
Name[nb_NO]=Nextcloud skrivebordssynkroniseringsklient
Icon[nb_NO]=Nextcloud
Comment[nn_NO]=Nextcloud klient for å synkronisera frå skrivebord
GenericName[nn_NO]=Mappe synkronisering
Name[nn_NO]=Nextcloud klient for å synkronisera frå skrivebord
Icon[nn_NO]=Nextcloud
Comment[pt_PT]=Nextcloud - Cliente de Sincronização para PC
GenericName[pt_PT]=Sincronizar Pasta
Name[pt_PT]=Nextcloud - Cliente de Sincronização para PC
Icon[pt_PT]=Nextcloud
Icon[km]=Nextcloud
Comment[lb]=Nextcloud Desktop Synchronisatioun Client
GenericName[lb]=Dossier Dync
Name[lb]=Nextcloud Desktop Sync Client
Icon[lb]=Nextcloud
Implements=org.freedesktop.CloudProviders
[org.freedesktop.CloudProviders]
BusName=com.nextcloudgmbh.Nextcloud
ObjectPath=/com/nextcloudgmbh/Nextcloud
[Desktop Action Quit]
Exec=nextcloud --quit
Name=Quit Nextcloud
Icon=nextcloud
-2
View File
@@ -1,2 +0,0 @@
inode/directory=thunar.desktop
x-directory/normal=thunar.desktop
+2 -1
View File
@@ -3,7 +3,8 @@ Name=Discord
StartupWMClass=discord StartupWMClass=discord
Comment=All-in-one voice and text chat for gamers that's free, secure, and works on both your desktop and phone. Comment=All-in-one voice and text chat for gamers that's free, secure, and works on both your desktop and phone.
GenericName=Internet Messenger GenericName=Internet Messenger
Exec=/usr/lib/discord/Discord --enable-features=UseOzonePlatform --ozone-platform=wayland Exec=/usr/bin/flatpak run --socket=wayland com.discordapp.Discord --enable-features=UseOzonePlatform --ozone-platform=wayland
#Exec=/usr/lib/discord/Discord --enable-features=UseOzonePlatform --ozone-platform=wayland
#Exec=/usr/lib/discord/Discord #Exec=/usr/lib/discord/Discord
Icon=discord Icon=discord
Type=Application Type=Application