diff --git a/.bashrc b/.bashrc index e09b4d4..99cf20b 100644 --- a/.bashrc +++ b/.bashrc @@ -56,19 +56,11 @@ if [ -n "$force_color_prompt" ]; then fi fi -#if [ "$color_prompt" = yes ]; then -# PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' -#else -# PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' -#fi -parse_git_branch() { - git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/' -} - +source ~/.local/scripts/git-prompt.sh if [ "$color_prompt" = yes ]; then - PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[01;31m\]$(parse_git_branch)\[\033[00m\]\$ ' + PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]$(__git_ps1 " (%s)") \n\$ ' else - PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w $(parse_git_branch)\$ ' + PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' fi unset color_prompt force_color_prompt @@ -126,7 +118,13 @@ if ! shopt -oq posix; then fi fi +PATH=$PATH:~/.local/bin/ +export WLR_DRM_NO_MODIFIERS=1 alias vim='nvim' alias ssh='ssh -XC' -alias xfreerdp='xfreerdp +clipboard /dynamic-resolution' +alias xfreerdp='xfreerdp +clipboard /dynamic-resolution ' + +# Set up fzf key bindings and fuzzy completion +eval "$(fzf --bash)" + diff --git a/.config/alacritty/alacritty.toml b/.config/alacritty/alacritty.toml index 2f10a5b..9d5b4de 100644 --- a/.config/alacritty/alacritty.toml +++ b/.config/alacritty/alacritty.toml @@ -1,13 +1,13 @@ -live_config_reload = true +general.live_config_reload = true [font] normal = { family = "JetBrainsMono NF", style = "Regular" } -size = 12 +size = 10 [window] -decorations = 'buttonless' -dynamic_padding = false +dynamic_padding = true opacity = 0.9 +decorations = "None" [colors] draw_bold_text_with_bright_colors = true diff --git a/.config/foot/foot.ini b/.config/foot/foot.ini new file mode 100644 index 0000000..b676834 --- /dev/null +++ b/.config/foot/foot.ini @@ -0,0 +1,240 @@ +# -*- conf -*- + +# shell=$SHELL (if set, otherwise user's default shell from /etc/passwd) +# term=foot (or xterm-256color if built with -Dterminfo=disabled) +term=xterm-256color +# login-shell=no +#include=/usr/share/foot/themes/jetbrains-darcula +#include=/usr/share/foot/themes/paper-color-dark + +app-id=foot # globally set wayland app-id. Default values are "foot" and "footclient" for desktop and server mode +title=foot +locked-title=no + +font=JetBrainsMono NF:size=10.5 +#font= :size=10 +# font-bold= +# font-italic= +# font-bold-italic= +# font-size-adjustment=0.5 +# line-height= +# letter-spacing=0 +# horizontal-letter-offset=0 +# vertical-letter-offset=0 +# underline-offset= +# underline-thickness= +# box-drawings-uses-font-glyphs=no +# dpi-aware=no + +# initial-window-size-pixels=700x500 # Or, +# initial-window-size-chars= +# initial-window-mode=windowed +pad=5x5 # optionally append 'center' +#resize-by-cells=yes +# resize-delay-ms=100 + +# bold-text-in-bright=no +# word-delimiters=,│`|:"'()[]{}<> +selection-target=primary +# workers= +# utmp-helper=/usr/lib/utempter/utempter # When utmp backend is ‘libutempter’ (Linux) +# utmp-helper=/usr/libexec/ulog-helper # When utmp backend is ‘ulog’ (FreeBSD) + +[environment] +# name=value + +[bell] +# urgent=no +# notify=no +# visual=no +# command= +# command-focused=no + +[desktop-notifications] +command=notify-send --wait --app-name ${app-id} --icon ${app-id} --category ${category} --urgency ${urgency} --expire-time ${expire-time} --hint STRING:image-path:${icon} --hint BOOLEAN:suppress-sound:${muted} --hint STRING:sound-name:${sound-name} --replace-id ${replace-id} ${action-argument} --print-id -- ${title} ${body} +# command-action-argument=--action ${action-name}=${action-label} +# close="" +# inhibit-when-focused=yes + + +[scrollback] +# lines=1000 +# multiplier=3.0 +# indicator-position=relative +# indicator-format="" + +[url] +launch=xdg-open ${url} +# label-letters=sadfjklewcmpgh +# osc8-underline=url-mode +# protocols=http, https, ftp, ftps, file, gemini, gopher +# uri-characters=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.,~:;/?#@!$&%*+="'()[] + +[cursor] +# style=block +# color= +# blink=no +# blink-rate=500 +# beam-thickness=1.5 +# underline-thickness= + +[mouse] +# hide-when-typing=no +# alternate-scroll-mode=yes + +[touch] +# long-press-delay=400 + +[colors] +alpha=0.9 +# background=242424 +# foreground=ffffff +# flash=7f7f00 +# flash-alpha=0.5 + +# Normal/regular colors (color palette 0-7) + regular0=242424 # black + regular1=f62b5a # red + regular2=47b413 # green + regular3=e3c401 # yellow + regular4=24acd4 # blue + regular5=f2affd # magenta + regular6=13c299 # cyan + regular7=e6e6e6 # white + +# Bright colors (color palette 8-15) + bright0=616161 # bright black + bright1=ff4d51 # bright red + bright2=35d450 # bright green + bright3=e9e836 # bright yellow + bright4=5dc5f8 # bright blue + bright5=feabf2 # bright magenta + bright6=24dfc4 # bright cyan + bright7=ffffff # bright white + +## dimmed colors (see foot.ini(5) man page) +# dim0= +# ... +# dim7= + +## The remaining 256-color palette +# 16 = <256-color palette #16> +# ... +# 255 = <256-color palette #255> + +## Misc colors +# selection-foreground= +# selection-background= +# jump-labels= # black-on-yellow +# scrollback-indicator= # black-on-bright-blue +# search-box-no-match= # black-on-red +# search-box-match= # black-on-yellow +# urls= + +[csd] +# preferred=server +# size=26 +# font= +# color= +# hide-when-maximized=no +# double-click-to-maximize=yes +# border-width=0 +# border-color= +# button-width=26 +# button-color= +# button-minimize-color= +# button-maximize-color= +# button-close-color= + +[key-bindings] +# scrollback-up-page=Shift+Page_Up +# scrollback-up-half-page=none +# scrollback-up-line=none +# scrollback-down-page=Shift+Page_Down +# scrollback-down-half-page=none +# scrollback-down-line=none +# scrollback-home=none +# scrollback-end=none +# clipboard-copy=Control+Shift+c XF86Copy +# clipboard-paste=Control+Shift+v XF86Paste +# primary-paste=Shift+Insert +# search-start=Control+Shift+r +# font-increase=Control+plus Control+equal Control+KP_Add +# font-decrease=Control+minus Control+KP_Subtract +# font-reset=Control+0 Control+KP_0 +# spawn-terminal=Control+Shift+n +# minimize=none +# maximize=none +# fullscreen=none +# pipe-visible=[sh -c "xurls | fuzzel | xargs -r firefox"] none +# pipe-scrollback=[sh -c "xurls | fuzzel | xargs -r firefox"] none +# pipe-selected=[xargs -r firefox] none +# pipe-command-output=[wl-copy] none # Copy last command's output to the clipboard +# show-urls-launch=Control+Shift+o +# show-urls-copy=none +# show-urls-persistent=none +# prompt-prev=Control+Shift+z +# prompt-next=Control+Shift+x +# unicode-input=Control+Shift+u +# noop=none + +[search-bindings] +# cancel=Control+g Control+c Escape +# commit=Return +# find-prev=Control+r +# find-next=Control+s +# cursor-left=Left Control+b +# cursor-left-word=Control+Left Mod1+b +# cursor-right=Right Control+f +# cursor-right-word=Control+Right Mod1+f +# cursor-home=Home Control+a +# cursor-end=End Control+e +# delete-prev=BackSpace +# delete-prev-word=Mod1+BackSpace Control+BackSpace +# delete-next=Delete +# delete-next-word=Mod1+d Control+Delete +# extend-char=Shift+Right +# extend-to-word-boundary=Control+w Control+Shift+Right +# extend-to-next-whitespace=Control+Shift+w +# extend-line-down=Shift+Down +# extend-backward-char=Shift+Left +# extend-backward-to-word-boundary=Control+Shift+Left +# extend-backward-to-next-whitespace=none +# extend-line-up=Shift+Up +# clipboard-paste=Control+v Control+Shift+v Control+y XF86Paste +# primary-paste=Shift+Insert +# unicode-input=none +# quit=none +# scrollback-up-page=Shift+Page_Up +# scrollback-up-half-page=none +# scrollback-up-line=none +# scrollback-down-page=Shift+Page_Down +# scrollback-down-half-page=none +# scrollback-down-line=none +# scrollback-home=none +# scrollback-end=none + +[url-bindings] +# cancel=Control+g Control+c Control+d Escape +# toggle-url-visible=t + +[text-bindings] +# \x03=Mod4+c # Map Super+c -> Ctrl+c + +[mouse-bindings] +# scrollback-up-mouse=BTN_WHEEL_BACK +# scrollback-down-mouse=BTN_WHEEL_FORWARD +# font-increase=Control+BTN_WHEEL_BACK +# font-decrease=Control+BTN_WHEEL_FORWARD +# selection-override-modifiers=Shift +# primary-paste=BTN_MIDDLE +# select-begin=BTN_LEFT +# select-begin-block=Control+BTN_LEFT +# select-extend=BTN_RIGHT +# select-extend-character-wise=Control+BTN_RIGHT +# select-word=BTN_LEFT-2 +# select-word-whitespace=Control+BTN_LEFT-2 +# select-quote = BTN_LEFT-3 +# select-row=BTN_LEFT-4 + +# vim: ft=dosini diff --git a/.config/hypr/hypridle.conf b/.config/hypr/hypridle.conf new file mode 100644 index 0000000..876c076 --- /dev/null +++ b/.config/hypr/hypridle.conf @@ -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 +} diff --git a/.config/hypr/hyprland.conf b/.config/hypr/hyprland.conf new file mode 100644 index 0000000..dfd2c4d --- /dev/null +++ b/.config/hypr/hyprland.conf @@ -0,0 +1,371 @@ + +# ####################################################################################### +# AUTOGENERATED HYPRLAND CONFIG. +# EDIT THIS CONFIG ACCORDING TO THE WIKI INSTRUCTIONS. +# ####################################################################################### + +autogenerated = 0 # remove this line to remove the warning + +# This is an example Hyprland config file. +# Refer to the wiki for more information. +# https://wiki.hypr.land/Configuring/ + +# Please note not all available settings / options are set here. +# For a full list, see the wiki + +# You can split this configuration into multiple files +# Create your files separately and then link them to this file like this: +# source = ~/.config/hypr/myColors.conf + + +################ +### MONITORS ### +################ + +# See https://wiki.hypr.land/Configuring/Monitors/ +monitor=,preferred,auto,auto +#exec-once = swaybg -i /usr/share/backgrounds/gnome/vnc-d.png + + +################### +### MY PROGRAMS ### +################### + +# See https://wiki.hypr.land/Configuring/Keywords/ + +# Set programs that you use +$terminal = kitty +$fileManager = nautilus +$menu = wofi --show drun -GI + + +################# +### AUTOSTART ### +################# + +# Autostart necessary processes (like notifications daemons, status bars, etc.) +# Or execute your favorite apps at launch like this: + +# exec-once = $terminal +# exec-once = nm-applet & +# 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 ### +############################# + +# See https://wiki.hypr.land/Configuring/Environment-variables/ + +env = XCURSOR_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 ### +##################### + +# Refer to https://wiki.hypr.land/Configuring/Variables/ + +# https://wiki.hypr.land/Configuring/Variables/#general +general { + gaps_in = 2 + gaps_out = 2 + + border_size = 1 + + # https://wiki.hypr.land/Configuring/Variables/#variable-types for info about colors + col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg + col.inactive_border = rgba(595959aa) + + # Set to true enable resizing windows by clicking and dragging on borders and gaps + resize_on_border = true + + # Please see https://wiki.hypr.land/Configuring/Tearing/ before you turn this on + allow_tearing = true + + #layout = dwindle + layout = hy3 +} + + +# https://wiki.hypr.land/Configuring/Variables/#decoration +decoration { + rounding = 6 + rounding_power = 3 + + # Change transparency of focused and unfocused windows + active_opacity = 1.0 + inactive_opacity = 1.0 + + shadow { + enabled = false + range = 4 + render_power = 3 + color = rgba(1a1a1aee) + } + + # https://wiki.hypr.land/Configuring/Variables/#blur + blur { + enabled = false + size = 3 + passes = 1 + + vibrancy = 0.1696 + } +} + +# https://wiki.hypr.land/Configuring/Variables/#animations +animations { + #enabled = yes, please :) + enabled = no + + + # 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 + + # Default animations, see https://wiki.hypr.land/Configuring/Animations/ + # NAME, ONOFF, SPEED, CURVE, [STYLE] + animation = global, 1, 10, default + animation = border, 1, 5.39, easeOutQuint + animation = windows, 1, 4.79, easeOutQuint + animation = windowsIn, 1, 4.1, easeOutQuint, popin 87% + animation = windowsOut, 1, 1.49, linear, popin 87% + animation = fadeIn, 1, 1.73, almostLinear + animation = fadeOut, 1, 1.46, almostLinear + animation = fade, 1, 3.03, quick + animation = layers, 1, 3.81, easeOutQuint + animation = layersIn, 1, 4, easeOutQuint, fade + animation = layersOut, 1, 1.5, linear, fade + animation = fadeLayersIn, 1, 1.79, almostLinear + animation = fadeLayersOut, 1, 1.39, almostLinear + animation = workspaces, 1, 1.94, almostLinear, fade + animation = workspacesIn, 1, 1.21, almostLinear, fade + animation = workspacesOut, 1, 1.94, almostLinear, fade + animation = zoomFactor, 1, 7, quick +} + +# 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 { + pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below + preserve_split = true # You probably want this +} + +# See https://wiki.hypr.land/Configuring/Master-Layout/ for more +master { + new_status = master +} + +# https://wiki.hypr.land/Configuring/Variables/#misc +misc { + force_default_wallpaper = 0 # Set to 0 or 1 to disable the anime mascot wallpapers + disable_hyprland_logo = true# If true disables the random hyprland logo / anime girl background. :( + vfr = true +} + +xwayland { + force_zero_scaling = true +} +env = GTK_SCALE,1 +env = XCURSOR_SIZE,32 + + +############# +### INPUT ### +############# + +# https://wiki.hypr.land/Configuring/Variables/#input +input { + kb_layout = us + kb_variant = + kb_model = + kb_options = + kb_rules = + + follow_mouse = 1 + + sensitivity = 0 # -1.0 - 1.0, 0 means no modification. + + touchpad { + natural_scroll = false + tap-to-click = false + } +} + +# See https://wiki.hypr.land/Configuring/Gestures +gesture = 3, horizontal, workspace + +# Example per-device config +# See https://wiki.hypr.land/Configuring/Keywords/#per-device-input-configs for more +device { + name = epic-mouse-v1 + sensitivity = -0.5 +} + + +################### +### KEYBINDINGS ### +################### + +# See https://wiki.hypr.land/Configuring/Keywords/ +$mainMod = SUPER # Sets "Windows" key as main modifier + +# Example binds, see https://wiki.hypr.land/Configuring/Binds/ for more +bind = $mainMod, RETURN, exec, $terminal +bind = $mainMod, D, exec, $menu +bind = $mainMod, F, fullscreen +bind = $mainMod, M, exec, hyprlock + +bind = $mainMod SHIFT, SPACE, togglefloating, +bind = $mainMod SHIFT, Q, hy3:killactive, +bind = $mainMod SHIFT, M, exit, +bind = $mainMod SHIFT, S, pin + + +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 +bind = $mainMod, h, hy3:movefocus, l +bind = $mainMod, j, hy3:movefocus, d +bind = $mainMod, k, hy3:movefocus, u +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] +bind = $mainMod, 1, workspace, 1 +bind = $mainMod, 2, workspace, 2 +bind = $mainMod, 3, workspace, 3 +bind = $mainMod, 4, workspace, 4 +bind = $mainMod, 5, workspace, 5 +bind = $mainMod, 6, workspace, 6 +bind = $mainMod, 7, workspace, 7 +bind = $mainMod, 8, workspace, 8 +bind = $mainMod, 9, workspace, 9 +bind = $mainMod, 0, workspace, 10 + +# Move active window to a workspace with mainMod + SHIFT + [0-9] +bind = $mainMod SHIFT, 1, hy3:movetoworkspace, 1 +bind = $mainMod SHIFT, 2, hy3:movetoworkspace, 2 +bind = $mainMod SHIFT, 3, hy3:movetoworkspace, 3 +bind = $mainMod SHIFT, 4, hy3:movetoworkspace, 4 +bind = $mainMod SHIFT, 5, hy3:movetoworkspace, 5 +bind = $mainMod SHIFT, 6, hy3:movetoworkspace, 6 +bind = $mainMod SHIFT, 7, hy3:movetoworkspace, 7 +bind = $mainMod SHIFT, 8, hy3:movetoworkspace, 8 +bind = $mainMod SHIFT, 9, hy3:movetoworkspace, 9 +bind = $mainMod SHIFT, 0, hy3:movetoworkspace, 10 + +# Example special workspace (scratchpad) +bind = $mainMod, MINUS, togglespecialworkspace, magic +bind = $mainMod SHIFT, MINUS, movetoworkspace, special:magic + +# Scroll through existing workspaces with mainMod + scroll +bind = $mainMod, mouse_down, workspace, e+1 +bind = $mainMod, mouse_up, workspace, e-1 + +# Move/resize windows with mainMod + LMB/RMB and dragging +bindm = $mainMod, mouse:272, movewindow +bindm = $mainMod, mouse:273, resizewindow + +# Laptop multimedia keys for volume and LCD brightness +bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+ +bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- +bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle +bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle +bindel = ,XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+ +bindel = ,XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%- + +# 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 ### +############################## + +# See https://wiki.hypr.land/Configuring/Window-Rules/ for more +# See https://wiki.hypr.land/Configuring/Workspace-Rules/ for workspace rules + +# Example windowrule +# windowrule = float,class:^(kitty)$,title:^(kitty)$ + +# Ignore maximize requests from apps. You'll probably like this. +#windowrule = suppressevent maximize, class:.* + +# Fix some dragging issues with XWayland +#windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0 diff --git a/.config/hypr/hyprlock.conf b/.config/hypr/hyprlock.conf new file mode 100644 index 0000000..c6e6470 --- /dev/null +++ b/.config/hypr/hyprlock.conf @@ -0,0 +1,20 @@ +background { + monitor = # monitor-agnostic + blur_passes = 1 + blur_size = 7 +} + +input-field { + monitor = + size = 20%, 5% + font_family = Noto Sans + dots_size = 0.08 +} + + +label { + monitor = + text = $TIME + font_size = 80 + position = 0, -10 +} diff --git a/.config/hypr/waybar/config.jsonc b/.config/hypr/waybar/config.jsonc new file mode 100644 index 0000000..694e374 --- /dev/null +++ b/.config/hypr/waybar/config.jsonc @@ -0,0 +1,118 @@ +// -*- mode: jsonc -*- +{ + "spacing": 2, // Gaps between modules (4px) + "modules-left": [ + "hyprland/workspaces", + "hyprland/mode", + "hyprland/scratchpad", + "hyprland/window" + ], + "modules-center": [ + //"sway/window" + "clock", + ], + "modules-right": [ + //"mpd", + "pulseaudio", + //"network", + "battery", + "tray" + //"custom/power" + ], + "sway/mode": { + "format": "{}" + }, + "sway/scratchpad": { + "format": "{icon} {count}", + "show-empty": false, + "format-icons": ["", ""], + "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": "{:%Y %B}\n{calendar}", + "format": "{:%c}", + //"format": "{:%R %p %Y-%m-%d}", + //"format-alt": "{:%Y-%m-%d}" + }, + "battery": { + "states": { + // "good": 95, + "warning": 30, + "critical": 15 + }, + //"format": "{time} {capacity}% {icon}", + "format": "{capacity}% {icon}", + "format-full": "{capacity}% {icon}", + "format-charging": "{capacity}% C", + "format-plugged": "{capacity}% P", + "format-alt": "{time} {icon}", + // "format-good": "", // An empty format will hide the module + // "format-full": "", + "format-icons": ["", "", "", "", ""] + }, + "battery#bat2": { + "bat": "BAT2" + }, + "power-profiles-daemon": { + "format": "{icon}", + "tooltip-format": "Power profile: {profile}\nDriver: {driver}", + "tooltip": true, + "format-icons": { + "default": "", + "performance": "", + "balanced": "", + "power-saver": "" + } + }, + "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}% {icon} {format_source}", + "format-bluetooth": "{volume}% {icon}  {format_source}", + "format-bluetooth-muted": " {icon}  {format_source}", + "format-muted": " {format_source}", + "format-source": "{volume}% ", + "format-source-muted": "", + "format-icons": { + "headphone": "", + "hands-free": "", + "headset": "", + "phone": "", + "portable": "", + "car": "", + "default": ["", "", ""] + }, + "on-click": "pavucontrol" + }, + "custom/media": { + "format": "{icon} {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 + } +} diff --git a/.config/hypr/waybar/style.css b/.config/hypr/waybar/style.css new file mode 100644 index 0000000..e1ecc95 --- /dev/null +++ b/.config/hypr/waybar/style.css @@ -0,0 +1,321 @@ +* { + /* `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: bold; +} + +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.focused { + background-color: #64727D; + /*box-shadow: inset 0 -3px #ffffff;*/ +} + +#workspaces button.urgent { + background-color: #eb4d4b; +} + +#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 { + margin: 0 4px; +} + +/* If workspaces is the leftmost module, omit left margin */ +.modules-left > widget:first-child > #workspaces { + margin-left: 0; +} + +/* If workspaces is the rightmost module, omit right margin */ +.modules-right > widget:last-child > #workspaces { + 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; +} diff --git a/.config/kitty/kitty.conf b/.config/kitty/kitty.conf index 32cdc91..507246e 100644 --- a/.config/kitty/kitty.conf +++ b/.config/kitty/kitty.conf @@ -1,10 +1,10 @@ -font_family 'JetBrainsMono NF' -font_size 10.5 +font_size 11.5 -text_composition_strategy legacy -modify_font cell_width 95% +#text_composition_strategy legacy +#modify_font cell_width 95% +#background_opacity 20 -cursor_trail 10 +cursor_trail 20 cursor_trail_start_threshold 0 shell_integration no-cursor cursor_trail_decay 0.01 0.15 @@ -14,3 +14,15 @@ cursor_blink true map cmd+c copy_to_clipboard map cmd+v paste_from_clipboard map shift+insert paste_from_clipboard + +linux_display_server wayland +wayland_enable_ime yes + + +# BEGIN_KITTY_FONTS +#font_family family="JetBrainsMono Nerd Font Mono" +font_family family="Fira Code" +bold_font auto +italic_font auto +bold_italic_font auto +# END_KITTY_FONTS diff --git a/.config/kitty/kitty.conf.bak b/.config/kitty/kitty.conf.bak new file mode 100644 index 0000000..cab7344 --- /dev/null +++ b/.config/kitty/kitty.conf.bak @@ -0,0 +1,20 @@ +#font_family 'JetBrainsMono NF' +font_family 'JetBrainsMonoNL NFM ExtraBold' +font_size 12 + +bold_font auto +italic_font auto +bold_italic_font auto + +text_composition_strategy legacy +modify_font cell_width 95% + +cursor_trail 10 +cursor_trail_start_threshold 0 +shell_integration no-cursor +cursor_trail_decay 0.01 0.15 +cursor_shape block + +linux_display_server wayland +wayland_enable_ime yes + diff --git a/.config/mango/autostart.sh b/.config/mango/autostart.sh new file mode 100755 index 0000000..8bff596 --- /dev/null +++ b/.config/mango/autostart.sh @@ -0,0 +1,30 @@ +#! /bin/bash + +set +e + +# wallpaper +#swaybg -i ~/.config/mango/wallpaper/room.png & + +# top bar +waybar -c ~/.config/mango/waybar/config.jsonc -s ~/.config/mango/waybar/style.css & + +# keep clipboard content +wl-clip-persist --clipboard regular --reconnect-tries 0 & + +# clipboard content manager +wl-paste --type text --watch cliphist store & + + +# START UP +systemctl --user start shikane & +systemctl --user start sway-audio-idle-inhibit & + +pipewire & +swaync & +dex -a & + +# screen record or share +dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=wlroots + +/usr/lib/xdg-desktop-portal-wlr & + diff --git a/.config/mango/config.conf b/.config/mango/config.conf new file mode 100644 index 0000000..9dc4728 --- /dev/null +++ b/.config/mango/config.conf @@ -0,0 +1,286 @@ +# More option see https://github.com/DreamMaoMao/mango/wiki/ + +# Window effect +blur=1 +blur_layer=0 +blur_optimized=1 +blur_params_num_passes = 2 +blur_params_radius = 5 +blur_params_noise = 0.02 +blur_params_brightness = 0.9 +blur_params_contrast = 0.9 +blur_params_saturation = 1.2 + +shadows = 1 +layer_shadows = 1 +shadow_only_floating = 1 +shadows_size = 5 +shadows_blur = 15 +shadows_position_x = 0 +shadows_position_y = 0 +shadowscolor= 0x000000ff + +border_radius=6 +no_radius_when_single=0 +focused_opacity=1.0 +unfocused_opacity=1.0 + +# Animation Configuration(support type:zoom,slide) +# tag_animation_direction: 0-horizontal,1-vertical +animations=1 +layer_animations=1 +animation_type_open=slide +animation_type_close=slide +animation_fade_in=1 +animation_fade_out=1 +tag_animation_direction=1 +zoom_initial_ratio=0.3 +zoom_end_ratio=0.8 +fadein_begin_opacity=0.5 +fadeout_begin_opacity=0.8 +animation_duration_move=200 +animation_duration_open=200 +animation_duration_tag=250 +animation_duration_close=200 +animation_curve_open=0.46,1.0,0.29,1 +animation_curve_move=0.46,1.0,0.29,1 +animation_curve_tag=0.46,1.0,0.29,1 +animation_curve_close=0.08,0.92,0,1 + +# Scroller Layout Setting +scroller_structs=20 +scroller_default_proportion=1.0 +scroller_focus_center=0 +scroller_prefer_center=0 +edge_scroller_pointer_focus=0 +scroller_default_proportion_single=1.0 +scroller_proportion_preset=1.0,1.0,1.0 + +# Master-Stack Layout Setting +new_is_master=0 +default_mfact=0.55 +default_nmaster=1 +smartgaps=0 + +# Overview Setting +hotarea_size=10 +enable_hotarea=0 +ov_tab_mode=1 +overviewgappi=5 +overviewgappo=30 + +# Misc +no_border_when_single=0 +axis_bind_apply_timeout=100 +focus_on_activate=1 +inhibit_regardless_of_visibility=0 +sloppyfocus=1 +warpcursor=1 +focus_cross_monitor=0 +focus_cross_tag=0 +enable_floating_snap=0 +snap_distance=30 +cursor_size=24 +drag_tile_to_tile=1 + +# keyboard +#repeat_rate=25 +repeat_rate=30 +repeat_delay=300 +numlockon=1 +xkb_rules_layout=us + +# Trackpad +# need relogin to make it apply +disable_trackpad=0 +tap_to_click=0 +tap_and_drag=1 +drag_lock=1 +trackpad_natural_scrolling=0 +disable_while_typing=1 +left_handed=0 +middle_button_emulation=0 +swipe_min_threshold=1 + +# mouse +# need relogin to make it apply +mouse_natural_scrolling=0 + +# Appearance +gappih=5 +gappiv=5 +gappoh=10 +gappov=10 +scratchpad_width_ratio=0.8 +scratchpad_height_ratio=0.9 +borderpx=1 +rootcolor=0x201b14ff +bordercolor=0x444444ff +focuscolor=0xc9b890ff +maxmizescreencolor=0x89aa61ff +urgentcolor=0xad401fff +scratchpadcolor=0x516c93ff +globalcolor=0xb153a7ff +overlaycolor=0x14a57cff + +# layout support: +# tile,scroller,grid,deck,monocle,center_tile,vertical_tile,vertical_scroller +tagrule=id:1,layout_name:tile +tagrule=id:2,layout_name:tile +tagrule=id:3,layout_name:tile +tagrule=id:4,layout_name:tile +tagrule=id:5,layout_name:tile +tagrule=id:6,layout_name:tile +tagrule=id:7,layout_name:tile +tagrule=id:8,layout_name:tile +tagrule=id:9,layout_name:tile + +# Key Bindings +# key name refer to `xev` or `wev` command output, +# mod keys name: super,ctrl,alt,shift,none + +bind=SUPER,period,incnmaster,+1 +bind=SUPER,comma,incnmaster,-1 + +# reload config +bind=SUPER,c,reload_config +bind=SUPER,c,spawn_shell, notify-send 'Reloading Config!' + +# menu and terminal +bind=SUPER,d,spawn,wofi --show drun -GI +bind=SUPER,Return,spawn,kitty + +# exit +#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+SHIFT,q,killclient, + +# switch window focus +#bind=SUPER,Tab,focusstack,next +#bind=ALT,Left,focusdir,left +#bind=ALT,Right,focusdir,right +#bind=ALT,Up,focusdir,up +#bind=ALT,Down,focusdir,down + +bind=SUPER,j,focusstack,next +bind=SUPER,k,focusstack,prev +bind=SUPER,h,focusdir,left +bind=SUPER,l,focusdir,right + +# swap window +bind=SUPER+SHIFT,k,exchange_client,up +bind=SUPER+SHIFT,j,exchange_client,down +bind=SUPER+SHIFT,h,exchange_client,left +bind=SUPER+SHIFT,l,exchange_client,right + +# switch window status +bind=SUPER,g,toggleglobal, +bind=ALT,Tab,toggleoverview, +bind=SUPER+SHIFT,space,togglefloating, +#bind=ALT,a,togglemaxmizescreen, +bind=SUPER,f,togglefullscreen, +#bind=ALT+SHIFT,f,togglefakefullscreen, +# +# +# Go through all the bookmarks +bind=SUPER,i,toggle_scratchpad, +bind=SUPER+SHIFT,i,minimized, +#bind=SUPER,o,toggleoverlay, +#bind=SUPER+SHIFT,I,restore_minimized + +# scroller layout +bind=ALT,e,set_proportion,1.0 +bind=ALT,x,switch_proportion_preset, + +# switcnext +bind=SUPER,n,switch_layout + +# Layouts +bind=SUPER,t,setlayout,tile +bind=SUPER,v,setlayout,vertical_grid +bind=SUPER,c,setlayout,spiral +bind=SUPER,s,setlayout,scroller +bind=SUPER,a,togglegaps + +# tag switch +bind=SUPER,1,comboview,1,0 +bind=SUPER,2,comboview,2,0 +bind=SUPER,3,comboview,3,0 +bind=SUPER,4,comboview,4,0 +bind=SUPER,5,comboview,5,0 +bind=SUPER,6,comboview,6,0 +bind=SUPER,7,comboview,7,0 +bind=SUPER,8,comboview,8,0 +bind=SUPER,9,comboview,9,0 +bind=SUPER,0,comboview,0,0 + +# tag: move client to the tag and focus it +# tagsilent: move client to the tag and not focus it +# bind=Alt,1,tagsilent,1 +bind=SUPER+SHIFT,1,tagsilent,1,0 +bind=SUPER+SHIFT,2,tagsilent,2,0 +bind=SUPER+SHIFT,3,tagsilent,3,0 +bind=SUPER+SHIFT,4,tagsilent,4,0 +bind=SUPER+SHIFT,5,tagsilent,5,0 +bind=SUPER+SHIFT,6,tagsilent,6,0 +bind=SUPER+SHIFT,7,tagsilent,7,0 +bind=SUPER+SHIFT,8,tagsilent,8,0 +bind=SUPER+SHIFT,9,tagsilent,9,0 +bind=SUPER+SHIFT,0,tagsilent,0,0 + +# monitor switch +bind=alt+shift,Left,focusmon,left +bind=alt+shift,Right,focusmon,right +bind=SUPER+Alt,Left,tagmon,left +bind=SUPER+Alt,Right,tagmon,right + +# gaps +bind=ALT+SHIFT,X,incgaps,1 +bind=ALT+SHIFT,Z,incgaps,-1 +bind=ALT+SHIFT,R,togglegaps + +# movewin +bind=CTRL+SHIFT,Up,movewin,+0,-50 +bind=CTRL+SHIFT,Down,movewin,+0,+50 +bind=CTRL+SHIFT,Left,movewin,-50,+0 +bind=CTRL+SHIFT,Right,movewin,+50,+0 + +# resizewin +#bind=none,Up,resizewin,+0,-50 +#bind=none,Down,resizewin,+0,+50 +#bind=none,Left,resizewin,-50,+0 +#bind=none,Right,resizewin,+50,+0 + +# Mouse Button Bindings +# NONE mode key only work in ov mode +mousebind=SUPER,btn_left,moveresize,curmove +mousebind=SUPER,btn_right,moveresize,curresize + +#mousebind=NONE,btn_middle,togglemaxmizescreen,0 +#mousebind=NONE,btn_left,toggleoverview,-1 +#mousebind=NONE,btn_right,killclient,0 + +# Axis Bindings +#axisbind=SUPER,UP,viewtoleft_have_client +#axisbind=SUPER,DOWN,viewtoright_have_client + + +# layer rule +layerrule=animation_type_open:zoom,layer_name:wofi +layerrule=animation_type_close:zoom,layer_name:wofi + +# Volume control +bind=none,XF86AudioRaiseVolume,spawn_shell,pactl set-sink-volume @DEFAULT_SINK@ +5% && pkill -RTMIN+10 i3blocks;, +bind=none,XF86AudioLowerVolume,spawn_shell,pactl set-sink-volume @DEFAULT_SINK@ -5% && pkill -RTMIN+10 i3blocks;, +bind=none,XF86AudioMute,spawn_shell,pactl set-sink-mute @DEFAULT_SINK@ toggle && pkill -RTMIN+10 i3blocks;, +bind=none,XF86AudioMicMute,spwan_shell,pactl set-source-mute @DEFAULT_SOURCE@ toggle;, + +bind=SUPER,bracketleft,spawn_shell,playerctl previous +bind=SUPER,bracketright,spawn_shell,playerctl next + +# Brightness Control +bind=none,XF86MonBrightnessDown,spawn_shell,brightnessctl set 2%- +bind=none,XF86MonBrightnessUp,spawn_shell,brightnessctl set 2%+ +bind=SUPER+SHIFT,p, spawn_shell, slurp | grim -g - - | tee ~/Pictures/$(date +%F-%s).png | wl-copy diff --git a/.config/mango/waybar/config.jsonc b/.config/mango/waybar/config.jsonc new file mode 100644 index 0000000..6fc30d1 --- /dev/null +++ b/.config/mango/waybar/config.jsonc @@ -0,0 +1,251 @@ +// -*- mode: jsonc -*- +{ + // "layer": "top", // Waybar at top layer + // "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": [ + "ext/workspaces", + "dwl/window", + "sway/mode", + "sway/scratchpad", + "custom/media" + ], + //"modules-center": [ + //"sway/window" + //], + "modules-right": [ + "mpd", + "custom/audio_idle_inhibitor", + "pulseaudio", + "network", + //"power-profiles-daemon", + //"cpu", + //"memory", + //"temperature", + //"backlight", + //"keyboard-state", + //"sway/language", + "battery", + //"battery#bat2", + "clock", + "tray" + //"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": { + "format": "{}" + }, + "sway/scratchpad": { + "format": "{icon} {count}", + "show-empty": false, + "format-icons": ["", ""], + "tooltip": true, + "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": " ", + "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": { + // "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": "{:%Y %B}\n{calendar}", + "format": "{:%r %Y-%m-%d}", + //"format": "{:%R %p %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": { + "states": { + // "good": 95, + "warning": 30, + "critical": 15 + }, + "format": "{time} {capacity}% {icon}", + "format-full": "{capacity}% {icon}", + "format-charging": "{capacity}% C", + "format-plugged": "{capacity}% P", + "format-alt": "{time} {icon}", + // "format-good": "", // An empty format will hide the module + // "format-full": "", + "format-icons": ["", "", "", "", ""] + }, + "battery#bat2": { + "bat": "BAT2" + }, + "power-profiles-daemon": { + "format": "{icon}", + "tooltip-format": "Power profile: {profile}\nDriver: {driver}", + "tooltip": true, + "format-icons": { + "default": "", + "performance": "", + "balanced": "", + "power-saver": "" + } + }, + "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-alt": "{ifname}: {ipaddr}/{cidr}" + }, + "pulseaudio": { + // "scroll-step": 1, // %, can be a float + "format": "{volume}% {icon} {format_source}", + "format-bluetooth": "{volume}% {icon}  {format_source}", + "format-bluetooth-muted": " {icon} {format_source}", + "format-muted": " {format_source}", + "format-source": "{volume}% ", + "format-source-muted": "", + "format-icons": { + "headphone": "", + "hands-free": "", + "headset": "", + "phone": "", + "portable": "", + "car": "", + "default": ["", "", ""] + }, + "on-click": "pavucontrol" + }, + "custom/media": { + "format": "{icon} {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 + }, + "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": "" + } + } +} diff --git a/.config/mango/waybar/style.css b/.config/mango/waybar/style.css new file mode 100644 index 0000000..adc6847 --- /dev/null +++ b/.config/mango/waybar/style.css @@ -0,0 +1,405 @@ +* { + /* `otf-font-awesome` is required to be installed for icons */ + /*font-family: FontAwesome, Roboto, Helvetica, Arial, sans-serif; */ + font-family: "JetBrainsMono NF"; + font-size: 13px; +} + +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;*/ +} + +window#waybar.termite { + background-color: #3F3F3F; +} + +window#waybar.chromium { + background-color: #000000; + border: none; +} + +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 5px; + background-color: transparent; + color: #ffffff; +} + +#workspaces button:hover { + background: rgba(0, 0, 0, 0.2); +} + +#workspaces button.focused { + background-color: #64727D; + box-shadow: inset 0 -3px #ffffff; +} + +#workspaces button.urgent { + background-color: #eb4d4b; +} + +#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 { + margin: 0 4px; +} + +/* If workspaces is the leftmost module, omit left margin */ +.modules-left > widget:first-child > #workspaces { + margin-left: 0; +} + +/* If workspaces is the rightmost module, omit right margin */ +.modules-right > widget:last-child > #workspaces { + 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; +} + +/*MANGO WORKSPACES */ +#workspaces { + border-style: solid; + border-color: #c9b890; + +} + +#workspaces button { + border: none; + background: none; + box-shadow: inherit; + text-shadow: inherit; + color: #ddca9e; +} + +#workspaces button.hidden { + color: #9e906f; + + background-color: transparent; +} + +#workspaces button.visible { + color: #ddca9e; +} + +#workspaces button:hover { + color: #d79921; +} + +#workspaces button.active { + background-color: #ddca9e; + color: #282828; +} + +#workspaces button.urgent { + background-color: #ef5e5e; + color: #282828; +} + +#tags { + background-color: transparent; +} + +#tags button { + color: #a585cd; +} + +#tags button:not(.occupied):not(.focused) { + font-size: 0; + min-width: 0; + min-height: 0; + margin: -17px; + padding: 0; + color: transparent; + background-color: transparent; +} + +#tags button.occupied { + background-color: #fff; + color: #cdc885; +} + +#tags button.focused { + background-color: rgb(186, 142, 213); + color: #fff; +} + +#tags button.urgent { + background: rgb(171, 101, 101); + color: #fff; +} +/* +#window { + background-color: rgb(237, 196, 147); + color: rgb(63, 37, 5); +} +*/ diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua index c4dc500..51b606e 100644 --- a/.config/nvim/init.lua +++ b/.config/nvim/init.lua @@ -1,13 +1,13 @@ require("config.lazy") -- colorscheme -vim.o.termguicolors = true ---vim.opt.winborder = 'rounded' ---vim.o.background = "dark" -- or "light" for light mode +-- vim.o.termguicolors = true +vim.opt.winborder = 'rounded' +vim.o.background = "dark" -- or "light" for light mode --vim.cmd("colorscheme gruvbox ") --vim.cmd("colorscheme retrobox") -vim.opt.clipboard = "unnamedplus" -- uses the clipboard register for all operations except yank. +-- vim.opt.clipboard = "unnamedplus" -- uses the clipboard register for all operations except yank. vim.cmd("set nocompatible") vim.cmd("syntax on") @@ -34,4 +34,3 @@ vim.cmd("set complete-=i") vim.cmd("au FileType python set fileformat=unix encoding=utf-8") vim.cmd("au FileType markdown,tex set spell spelllang=en_us") - diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json deleted file mode 100644 index b131fa6..0000000 --- a/.config/nvim/lazy-lock.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "black-metal-theme-neovim": { "branch": "main", "commit": "6d0207871387077f40d5396ab1ae90520e688d36" }, - "harpoon": { "branch": "master", "commit": "1bc17e3e42ea3c46b33c0bbad6a880792692a1b3" }, - "lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "80c0130c5f16b551865a69e832f1feadeedb5fbe" }, - "mason.nvim": { "branch": "main", "commit": "44d1e90e1f66e077268191e3ee9d2ac97cc18e65" }, - "mini.completion": { "branch": "main", "commit": "4d451f82f193f6751719935a63d16ccb79a76e0b" }, - "mini.nvim": { "branch": "main", "commit": "8dccba88fc4dce006ca0ad668067c9e0d5ce7702" }, - "nvim-lspconfig": { "branch": "master", "commit": "92ee7d42320edfbb81f3cad851314ab197fa324a" }, - "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, - "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" }, - "telescope.nvim": { "branch": "master", "commit": "84b9ba066d1860f7a586ce9cd732fd6c4f77d1d9" }, - "vim-tmux-navigator": { "branch": "master", "commit": "c45243dc1f32ac6bcf6068e5300f3b2b237e576a" } -} diff --git a/.config/nvim/lua/plugins/avante.lua b/.config/nvim/lua/plugins/avante.lua new file mode 100644 index 0000000..5cff134 --- /dev/null +++ b/.config/nvim/lua/plugins/avante.lua @@ -0,0 +1,63 @@ +return { + "yetone/avante.nvim", + -- if you want to build from source then do `make BUILD_FROM_SOURCE=true` + -- ⚠️ must add this setting! ! ! + build = vim.fn.has("win32") ~= 0 + and "powershell -ExecutionPolicy Bypass -File Build.ps1 -BuildFromSource false" + or "make", + event = "VeryLazy", + version = false, -- Never set this value to "*"! Never! + ---@module 'avante' + ---@type avante.Config + opts = { + -- add any opts here + -- this file can contain specific instructions for your project + instructions_file = "avante.md", + -- for example + provider = "ollama", + providers = { + ollama = { + model = "devstral-small-2:24b-32k", + --is_env_set = require("avante.providers.ollama").check_endpoint_alive, + }, + }, + }, + dependencies = { + "nvim-lua/plenary.nvim", + "MunifTanjim/nui.nvim", + --- The below dependencies are optional, + "nvim-mini/mini.pick", -- for file_selector provider mini.pick + "nvim-telescope/telescope.nvim", -- for file_selector provider telescope + "hrsh7th/nvim-cmp", -- autocompletion for avante commands and mentions + "ibhagwan/fzf-lua", -- for file_selector provider fzf + "stevearc/dressing.nvim", -- for input provider dressing + "folke/snacks.nvim", -- for input provider snacks + "nvim-tree/nvim-web-devicons", -- or echasnovski/mini.icons + "zbirenbaum/copilot.lua", -- for providers='copilot' + { + -- support for image pasting + "HakonHarnes/img-clip.nvim", + event = "VeryLazy", + opts = { + -- recommended settings + default = { + embed_image_as_base64 = false, + prompt_for_file_name = false, + drag_and_drop = { + insert_mode = true, + }, + -- required for Windows users + use_absolute_path = true, + }, + }, + }, + { + -- Make sure to set this up properly if you have lazy=true + 'MeanderingProgrammer/render-markdown.nvim', + opts = { + file_types = { "markdown", "Avante" }, + }, + ft = { "markdown", "Avante" }, + }, + }, +} diff --git a/.config/nvim/lua/plugins/colorscheme.lua b/.config/nvim/lua/plugins/colorscheme.lua index 83a3127..d139563 100644 --- a/.config/nvim/lua/plugins/colorscheme.lua +++ b/.config/nvim/lua/plugins/colorscheme.lua @@ -5,7 +5,7 @@ return { config = function() require("black-metal").setup({ -- optional configuration here - term_colors = true, + -- term_colors = true, }) require("black-metal").load() diff --git a/.config/nvim/lua/plugins/harpoon.lua b/.config/nvim/lua/plugins/harpoon.lua deleted file mode 100644 index 54db346..0000000 --- a/.config/nvim/lua/plugins/harpoon.lua +++ /dev/null @@ -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", "", function() ui.nav_file(1) end) - vim.keymap.set("n", "", function() ui.nav_file(2) end) - vim.keymap.set("n", "", function() ui.nav_file(3) end) - vim.keymap.set("n", "", function() ui.nav_file(4) end) - - -- Harpoon next and previous. - vim.keymap.set("n", "", function() ui.nav_next() end) - vim.keymap.set("n", "", function() ui.nav_prev() end) - - -- Harpoon user interface. - vim.keymap.set("n", "hq", ui.toggle_quick_menu) - vim.keymap.set("n", "ha", mark.add_file) - - end -} diff --git a/.config/nvim/lua/plugins/mason.lua b/.config/nvim/lua/plugins/mason.lua index cd7b751..c9f77a3 100644 --- a/.config/nvim/lua/plugins/mason.lua +++ b/.config/nvim/lua/plugins/mason.lua @@ -1,54 +1,52 @@ return { "mason-org/mason-lspconfig.nvim", - dependencies = { - {"mason-org/mason.nvim"}, - {'neovim/nvim-lspconfig'}, - - {'nvim-mini/mini.nvim'}, + dependencies = { + {"mason-org/mason.nvim"}, + {'neovim/nvim-lspconfig'}, + {'nvim-mini/mini.nvim'}, {'nvim-mini/mini.completion'}, - }, - config = function() - require("mason").setup() + }, + 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() + -- NOTE: this is meant to be backwards compatible with Neovim v0.9 + --- + -- Autocompletion + --- + --require('mini.snippets').setup() + require('mini.completion').setup() - --- - -- Language server configuration - --- + --- + -- 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', 'lua vim.diagnostic.goto_prev()') - vim.keymap.set('n', ']d', 'lua vim.diagnostic.goto_next()') - vim.keymap.set('n', 'd', 'lua vim.diagnostic.open_float()') - vim.keymap.set('n', '', 'lua vim.diagnostic.open_float()') - end + -- 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', 'lua vim.diagnostic.goto_prev()') + vim.keymap.set('n', ']d', 'lua vim.diagnostic.goto_next()') + vim.keymap.set('n', 'd', 'lua vim.diagnostic.open_float()') + vim.keymap.set('n', '', 'lua vim.diagnostic.open_float()') + 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 + 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', 'lua vim.lsp.buf.hover()') - bufmap('n', 'grr', 'lua vim.lsp.buf.references()') - bufmap('n', 'gri', 'lua vim.lsp.buf.implementation()') - bufmap('n', 'grn', 'lua vim.lsp.buf.rename()') - bufmap('n', 'gra', 'lua vim.lsp.buf.code_action()') - bufmap('n', 'gO', 'lua vim.lsp.buf.document_symbol()') - bufmap({'i', 's'}, '', 'lua vim.lsp.buf.signature_help()') - end, - }) + -- These keymaps are the defaults in Neovim v0.11 + bufmap('n', 'K', 'lua vim.lsp.buf.hover()') + bufmap('n', 'grr', 'lua vim.lsp.buf.references()') + bufmap('n', 'gri', 'lua vim.lsp.buf.implementation()') + bufmap('n', 'grn', 'lua vim.lsp.buf.rename()') + bufmap('n', 'gra', 'lua vim.lsp.buf.code_action()') + bufmap('n', 'gO', 'lua vim.lsp.buf.document_symbol()') + bufmap({'i', 's'}, '', 'lua vim.lsp.buf.signature_help()') + end, + }) end } diff --git a/.config/nvim/lua/plugins/outline.lua b/.config/nvim/lua/plugins/outline.lua new file mode 100644 index 0000000..cf04a5c --- /dev/null +++ b/.config/nvim/lua/plugins/outline.lua @@ -0,0 +1,12 @@ +return { + "hedyhli/outline.nvim", + config = function() + -- Example mapping to toggle outline + vim.keymap.set("n", "o", "Outline", + { desc = "Toggle Outline" }) + + require("outline").setup { + -- Your setup opts here (leave empty to use defaults) + } + end, +} diff --git a/.config/nvim/lua/plugins/treesitter.lua b/.config/nvim/lua/plugins/treesitter.lua index 5beadcf..6bede68 100644 --- a/.config/nvim/lua/plugins/treesitter.lua +++ b/.config/nvim/lua/plugins/treesitter.lua @@ -2,45 +2,6 @@ return { "nvim-treesitter/nvim-treesitter", build = ":TSUpdate", config = function() - require("nvim-treesitter.configs").setup { - -- 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, - - -- 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 } + require("nvim-treesitter").install({}) + end +} diff --git a/.config/nvim/settings.vim b/.config/nvim/settings.vim deleted file mode 100644 index 626ea0c..0000000 --- a/.config/nvim/settings.vim +++ /dev/null @@ -1,65 +0,0 @@ -set nocompatible -syntax on -filetype plugin on -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 -set number ruler -set showmatch -set ruler -set wrap -set showbreak=↳\ \ -set textwidth=79 -set hidden -set backspace=indent,eol,start -set hlsearch -set noswapfile -set mouse= "remove mouse -set clipboard=unnamedplus - -" Rendering -set ttyfast -set laststatus=1 -set t_Co=256 -set background=dark - -set colorcolumn=81 -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\+$/ - -" File settings -au FileType * - \ set tabstop=2 - \ softtabstop=2 - \ shiftwidth=2 - \ textwidth=79 - \ autoindent - \ smartindent - -"Python Specific Config -au FileType python -\ set fileformat=unix -\ tabstop=4 -\ softtabstop=4 -\ shiftwidth=4 -\ encoding=utf-8 - -au FileType markdown - \ set spell spelllang=en_us - \ tabstop=4 - \ softtabstop=4 - \ shiftwidth=4 - - diff --git a/.config/sway/config b/.config/sway/config index 06c5982..823e6ba 100644 --- a/.config/sway/config +++ b/.config/sway/config @@ -1,254 +1,92 @@ -# Default config for sway -# -# Copy this to ~/.config/sway/config and edit it to your liking. -# -# Read `man 5 sway` for a complete reference. +#font 'JetBrainsMono NF' 9 +#font 'JetBrainsMono Nerd Font Mono' 9 +font 'JetBrainsMonoNFM-Regular' 9 -font 'JetBrainsMono NF' 9 ### Variables -# -# Logo key. Use Mod1 for Alt. -set $mod Mod4 #set $mod Mod1 -# Home row direction keys, like vim +set $mod Mod4 + +#set $term kitty -1 +set $term kitty +#set $term ghostty + +set $menu wofi -S drun -GI + set $left h set $down j set $up k set $right l -# Your preferred terminal emulator -set $term kitty -# Your preferred application launcher -# Note: pass the final command to swaymsg so that the resulting window can be opened -# on the original workspace that the command was run on. -set $menu wofi -dGS drun - -include /etc/sway/config-vars.d/* - -### Output configuration -# -# Default wallpaper (more resolutions are available in /usr/share/backgrounds/sway/) -output * bg #000000 solid_color - -# Example configuration: -# - -output * scale 1.3 set $laptop eDP-1 -output $laptop scale 1.3 -#bindswitch --reload --locked lid:on output $laptop disable -#bindswitch --reload --locked lid:off output $laptop enable -#exec_always 'if grep -q open /proc/acpi/button/lid/LID0/state; then swaymsg output eDP-1 enable; else swaymsg output eDP-1 disable; fi' -#exec_always '/home/jozamudi/.config/sway/scripts/clamshell-mode.sh' - +include ~/.config/sway/config.d/* +### Output configuration # You can get the names of your outputs by running: swaymsg -t get_outputs +# 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 eDP-1 scale 1.7 +#output 'BNQ BenQ PD3200U S2N01233019' scale 1.5 +#exec_always shikanectl reload + +bindswitch --reload --locked lid:on output $laptop disable +bindswitch --reload --locked lid:off output $laptop enable +exec_always --no-startup-id '/home/jozamudi/.config/sway/scripts/clamshell-mode.sh' + +#input "1267:12792:ELAN067B:00_04F3:31F8_Touchpad" { +# dwt enabled +# tap enabled +# middle_emulation enabled +#} ### Idle configuration -# -# Example configuration: - -exec swayidle -w \ - timeout 300 'swaylock -f -c 000000' \ - timeout 600 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \ - before-sleep 'swaylock -f -c 000000' - -# -# This will lock your screen after 300 seconds of inactivity, then turn off -# your displays after another 300 seconds, and turn your screens back on when -# resumed. It will also lock your screen before your computer goes to sleep. - -### Input configuration -# -# Example configuration: -# -# input "2:14:SynPS/2_Synaptics_TouchPad" { -# dwt enabled -# tap enabled -# natural_scroll enabled -# middle_emulation enabled -# } -# -# You can get the names of your inputs by running: swaymsg -t get_inputs -# Read `man 5 sway-input` for more information about this section. - -### Key bindings -# Sound: -# bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle -# bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5% -# bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5% -# -# Basics: -# - # Start a terminal - bindsym $mod+Return exec $term - - # Kill focused window - bindsym $mod+Shift+q kill - - # Start your launcher - bindsym $mod+d exec $menu - - # Drag floating windows by holding down $mod and left mouse button. - # Resize them with right mouse button + $mod. - # Despite the name, also works for non-floating windows. - # Change normal to inverse to use left mouse button for resizing and right - # mouse button for dragging. - floating_modifier $mod normal - - # Reload the configuration file - bindsym $mod+Shift+c reload - - # Exit sway (logs you out of your Wayland session) - bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit' -# -# Moving around: -# - # Move your focus around - bindsym $mod+$left focus left - bindsym $mod+$down focus down - bindsym $mod+$up focus up - bindsym $mod+$right focus right - # Or use $mod+[up|down|left|right] - bindsym $mod+Left focus left - bindsym $mod+Down focus down - bindsym $mod+Up focus up - bindsym $mod+Right focus right - - # Move the focused window with the same, but add Shift - bindsym $mod+Shift+$left move left - bindsym $mod+Shift+$down move down - bindsym $mod+Shift+$up move up - bindsym $mod+Shift+$right move right - # Ditto, with arrow keys - bindsym $mod+Shift+Left move left - bindsym $mod+Shift+Down move down - bindsym $mod+Shift+Up move up - bindsym $mod+Shift+Right move right -# -# Workspaces: -# - # Switch to workspace - bindsym $mod+1 workspace number 1 - bindsym $mod+2 workspace number 2 - bindsym $mod+3 workspace number 3 - bindsym $mod+4 workspace number 4 - bindsym $mod+5 workspace number 5 - bindsym $mod+6 workspace number 6 - bindsym $mod+7 workspace number 7 - bindsym $mod+8 workspace number 8 - bindsym $mod+9 workspace number 9 - bindsym $mod+0 workspace number 10 - # Move focused container to workspace - bindsym $mod+Shift+1 move container to workspace number 1 - bindsym $mod+Shift+2 move container to workspace number 2 - bindsym $mod+Shift+3 move container to workspace number 3 - bindsym $mod+Shift+4 move container to workspace number 4 - bindsym $mod+Shift+5 move container to workspace number 5 - bindsym $mod+Shift+6 move container to workspace number 6 - bindsym $mod+Shift+7 move container to workspace number 7 - bindsym $mod+Shift+8 move container to workspace number 8 - bindsym $mod+Shift+9 move container to workspace number 9 - bindsym $mod+Shift+0 move container to workspace number 10 - # Note: workspaces can have any name you want, not just numbers. - # We just use 1-10 as the default. -# -# Layout stuff: -# - # You can "split" the current object of your focus with - # $mod+b or $mod+v, for horizontal and vertical splits - # respectively. - bindsym $mod+b splith - bindsym $mod+v splitv - - # Switch the current container between different layout styles - bindsym $mod+s layout stacking - bindsym $mod+w layout tabbed - bindsym $mod+e layout toggle split - - # Make the current focus fullscreen - bindsym $mod+f fullscreen - - # Toggle the current focus between tiling and floating mode - bindsym $mod+Shift+space floating toggle - - # Swap focus between the tiling area and the floating area - bindsym $mod+space focus mode_toggle - - # Move focus to the parent container - bindsym $mod+a focus parent -# -# Scratchpad: -# - # Sway has a "scratchpad", which is a bag of holding for windows. - # You can send windows there and get them back later. - - # Move the currently focused window to the scratchpad - bindsym $mod+Shift+minus move scratchpad - - # Show the next scratchpad window or hide the focused scratchpad window. - # If there are multiple scratchpad windows, this command cycles through them. - bindsym $mod+minus scratchpad show -# -# Resizing containers: -# -mode "resize" { - # left will shrink the containers width - # right will grow the containers width - # up will shrink the containers height - # down will grow the containers height - bindsym $left resize shrink width 10px - bindsym $down resize grow height 10px - bindsym $up resize shrink height 10px - bindsym $right resize grow width 10px - - # Ditto, with arrow keys - bindsym Left resize shrink width 10px - bindsym Down resize grow height 10px - bindsym Up resize shrink height 10px - bindsym Right resize grow width 10px - - # Return to default mode - bindsym Return mode "default" - bindsym Escape mode "default" -} -bindsym $mod+r mode "resize" - -# -# Status Bar: -# -# Read `man 5 sway-bar` for more information about this section. - -bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5% \ - && pkill -RTMIN+10 i3blocks; - -bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5% \ - && pkill -RTMIN+10 i3blocks; - -bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle \ - && pkill -RTMIN+10 i3blocks; - -bindsym XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle -bindsym XF86MonBrightnessDown exec brightnessctl set 10%- -bindsym XF86MonBrightnessUp exec brightnessctl set 10%+ - -bindsym $mod+Shift+p exec grimshot savecopy anything -bindsym $mod+Shift+s sticky toggle -bindsym $mod+m exec swaylock -c 0x000000 -bindsym $mod+Shift+m output eDP-1 toggle - -bindgesture swipe:right workspace prev -bindgesture swipe:left workspace next +#exec swayidle -w \ +# timeout 300 'swaylock -f -c 000000' \ +# timeout 600 'swaymsg "output * power off"' \ +# resume 'swaymsg "output * power on"' \ +# before-sleep 'swaylock -f -c 000000' -exec waybar -exec swaync +seat seat0 xcursor_theme Adwaita 35 + +#exec pipewire +exec swaync +exec shikane exec nm-applet exec blueman-applet -exec /home/jozamudi/.local/repos/shikane/target/release/shikane -exec wl-clipboard -# Enables inhibit_idle when playing audio -exec sway-audio-idle-inhibit +exec systemctl --user start hyperolkitagent +exec waybar -c ~/.config/sway/waybar/config.jsonc -s ~/.config/sway/waybar/style.css +exec flatpak run com.github.wwmm.easyeffects -w +exec xrdb -merge ~/.Xresources +exec wl-paste -t text --watch clipman store --no-persist + +exec hypridle +exec gsettings set org.gnome.desktop.interface color-scheme "prefer-dark" + +#exec mpd +#exec syncthing + +# Auto start .desktop files using dex +exec dex -a + +#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 +#exec easyeffects -w -l Laptop + +#default_border pixel 2 +#default_floating_border pixel 2 +exec systemctl --user import-environment XDG_SESSION_TYPE XDG_CURRENT_DESKTOP +exec dbus-update-activation-environment --systemd WAYLAND_DISPLAY DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP=sway XDG_SESSION_DESKTOP=sway -include /etc/sway/config.d/* diff --git a/.config/sway/config.d/keybinds b/.config/sway/config.d/keybinds new file mode 100644 index 0000000..c4bfa24 --- /dev/null +++ b/.config/sway/config.d/keybinds @@ -0,0 +1,156 @@ +### Key bindings +# Start a terminal +bindsym $mod+Return exec $term + +# Kill focused window +bindsym $mod+Shift+q kill + +# Start your launcher +bindsym $mod+d exec $menu + +# Drag floating windows by holding down $mod and left mouse button. +# Resize them with right mouse button + $mod. +# Despite the name, also works for non-floating windows. +# Change normal to inverse to use left mouse button for resizing and right +# mouse button for dragging. +floating_modifier $mod normal + +# Reload the configuration file +bindsym $mod+Shift+c reload + +# Exit sway (logs you out of your Wayland session) +bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit' +# +# Moving around: +# +# Move your focus around +bindsym $mod+$left focus left +bindsym $mod+$down focus down +bindsym $mod+$up focus up +bindsym $mod+$right focus right +# Or use $mod+[up|down|left|right] +bindsym $mod+Left focus left +bindsym $mod+Down focus down +bindsym $mod+Up focus up +bindsym $mod+Right focus right + +# Move the focused window with the same, but add Shift +bindsym $mod+Shift+$left move left +bindsym $mod+Shift+$down move down +bindsym $mod+Shift+$up move up +bindsym $mod+Shift+$right move right + +# Ditto, with arrow keys +bindsym $mod+Shift+Left move left +bindsym $mod+Shift+Down move down +bindsym $mod+Shift+Up move up +bindsym $mod+Shift+Right move right + +# Layout stuff: +# +# You can "split" the current object of your focus with +# $mod+b or $mod+v, for horizontal and vertical splits +# respectively. +bindsym $mod+b splith +bindsym $mod+v splitv + +# Switch the current container between different layout styles +bindsym $mod+s layout stacking +bindsym $mod+w layout tabbed +bindsym $mod+e layout toggle split + +# Make the current focus fullscreen +bindsym $mod+f fullscreen + +# Toggle the current focus between tiling and floating mode +bindsym $mod+Shift+space floating toggle + +# Swap focus between the tiling area and the floating area +bindsym $mod+space focus mode_toggle + +# Move focus to the parent container +bindsym $mod+a focus parent +# +# Scratchpad: +# +# Sway has a "scratchpad", which is a bag of holding for windows. +# You can send windows there and get them back later. + +# Move the currently focused window to the scratchpad +bindsym $mod+Shift+minus move scratchpad + +# Show the next scratchpad window or hide the focused scratchpad window. +# If there are multiple scratchpad windows, this command cycles through them. +bindsym $mod+minus scratchpad show +# +# Resizing containers: +# +mode "resize" { + # left will shrink the containers width + # right will grow the containers width + # up will shrink the containers height + # down will grow the containers height + bindsym $left resize shrink width 10px + bindsym $down resize grow height 10px + bindsym $up resize shrink height 10px + bindsym $right resize grow width 10px + + bindsym Shift+$left resize shrink width 40px + bindsym Shift+$down resize grow height 40px + bindsym Shift+$up resize shrink height 40px + bindsym Shift+$right resize grow width 40px + + # Ditto, with arrow keys + bindsym Left resize shrink width 10px + bindsym Down resize grow height 10px + bindsym Up resize shrink height 10px + bindsym Right resize grow width 10px + + # Return to default mode + bindsym Return mode "default" + bindsym Escape mode "default" +} + +bindsym $mod+r mode "resize" +bindsym $mod+Shift+s sticky toggle +#bindsym $mod+Shift+o exec 'playerctl pause && swaylock -c 0x0000' + +# Toggle laptop display +bindsym $mod+shift+m output $laptop toggle +bindsym $mod+m exec bash -c 'playerctl pause; swaymsg output $laptop power on; swaylock -f -c 000000' + +# play/pause media player +#bindsym XF86Favorites exec playerctl play-pause +bindsym $mod+bracketleft exec playerctl previous +bindsym $mod+bracketright exec playerctl next +bindsym $mod+backslash exec playerctl play-pause + + +bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5% \ + && pkill -RTMIN+10 i3blocks; + +bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5% \ + && pkill -RTMIN+10 i3blocks; + +bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle \ + && pkill -RTMIN+10 i3blocks; + +bindsym XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle + +bindsym XF86MonBrightnessDown exec brightnessctl set 2%- +bindsym XF86MonBrightnessUp exec brightnessctl set 2%+ + +bindsym $mod+shift+p exec slurp | \ + grim -g - - | \ + tee ~/Pictures/$(date +%F-%s).png | \ + wl-copy + +bindgesture swipe:right workspace prev +bindgesture swipe:left workspace next + + +# Custom App Keybinds +bindsym $mod+Shift+f exec firefox +bindsym $mod+Shift+n exec nautilus + + diff --git a/.config/sway/config.d/swayfx b/.config/sway/config.d/swayfx new file mode 100644 index 0000000..1039db9 --- /dev/null +++ b/.config/sway/config.d/swayfx @@ -0,0 +1,56 @@ +#smart_corner_radius on +gaps inner 2 + +default_border pixel 2 + +#corner_radius 8 +#blur enable +#blur_passes 2 +#blur_radius 2 +#layer_effects "waybar" "blur enable"; shadows enable +#shadows on +#shadow_blur_radius 5 + +#https://github.com/rkubosz/base16-sway + +set $base00 #031A16 +set $base01 #0B342D +set $base02 #184E45 +set $base03 #2B685E +set $base04 #5F9C92 +set $base05 #81B5AC +set $base06 #A7CEC8 +set $base07 #D2E7E4 +set $base08 #3E9688 +set $base09 #3E7996 +set $base0A #3E4C96 +set $base0B #883E96 +set $base0C #963E4C +set $base0D #96883E +set $base0E #4C963E +set $base0F #3E965B + +#set $base00 #000000 +#set $base01 #121212 +#set $base02 #222222 +#set $base03 #333333 +#set $base04 #999999 +#set $base05 #c1c1c1 +#set $base06 #999999 +#set $base07 #c1c1c1 +#set $base08 #5f8787 +#set $base09 #aaaaaa +#set $base0A #a06666 +#set $base0B #dd9999 +#set $base0C #aaaaaa +#set $base0D #888888 +#set $base0E #999999 +#set $base0F #444444 + +# Property Name Border BG Text Indicator Child Border +client.focused $base05 $base0D $base00 $base0D $base0D +client.focused_inactive $base01 $base01 $base05 $base03 $base01 +client.unfocused $base01 $base00 $base05 $base01 $base01 +client.urgent $base08 $base08 $base00 $base08 $base08 +client.placeholder $base00 $base00 $base05 $base00 $base00 +client.background $base07 diff --git a/.config/sway/config.d/windows b/.config/sway/config.d/windows new file mode 100644 index 0000000..4382ab1 --- /dev/null +++ b/.config/sway/config.d/windows @@ -0,0 +1,16 @@ +# Generated windows. +for_window [title="(?:Open|Save) (?:File|Folder|As)"] floating enable; +for_window [title="(?:Open|Save) (?:File|Folder|As)"] resize set 800 600 +for_window [window_role="pop-up"] floating enable +for_window [window_role="bubble"] floating enable +for_window [window_role="task_dialog"] floating enable +for_window [window_role="Preferences"] floating enable +for_window [window_type="dialog"] floating enable +for_window [window_type="menu"] floating enable + +for_window [shell="xwayland"] title_format "[XWayland] %title" +for_window [title="LUCID"] floating enable +for_window [title="Pydm|pydm"] floating enable +for_window [title="Form"] floating enable +for_window [title="zoom"] floating enable + diff --git a/.config/sway/config.d/workspaces b/.config/sway/config.d/workspaces new file mode 100644 index 0000000..d8466c6 --- /dev/null +++ b/.config/sway/config.d/workspaces @@ -0,0 +1,27 @@ +# Workspaces: +# Note: workspaces can have any name you want, not just numbers. +# We just use 1-10 as the default. + +# Switch to workspace +bindsym $mod+1 workspace number 1 +bindsym $mod+2 workspace number 2 +bindsym $mod+3 workspace number 3 +bindsym $mod+4 workspace number 4 +bindsym $mod+5 workspace number 5 +bindsym $mod+6 workspace number 6 +bindsym $mod+7 workspace number 7 +bindsym $mod+8 workspace number 8 +bindsym $mod+9 workspace number 9 +bindsym $mod+0 workspace number 10 + +# Move focused container to workspace +bindsym $mod+Shift+1 move container to workspace number 1 +bindsym $mod+Shift+2 move container to workspace number 2 +bindsym $mod+Shift+3 move container to workspace number 3 +bindsym $mod+Shift+4 move container to workspace number 4 +bindsym $mod+Shift+5 move container to workspace number 5 +bindsym $mod+Shift+6 move container to workspace number 6 +bindsym $mod+Shift+7 move container to workspace number 7 +bindsym $mod+Shift+8 move container to workspace number 8 +bindsym $mod+Shift+9 move container to workspace number 9 +bindsym $mod+Shift+0 move container to workspace number 10 diff --git a/.config/sway/scripts/clamshell-mode.sh b/.config/sway/scripts/clamshell-mode.sh index 994d67d..98de4c3 100644 --- a/.config/sway/scripts/clamshell-mode.sh +++ b/.config/sway/scripts/clamshell-mode.sh @@ -1,7 +1,7 @@ #!/bin/sh LAPTOP_OUTPUT="eDP-1" -LID_STATE_FILE="/proc/acpi/button/lid/LID0/state" +LID_STATE_FILE="/proc/acpi/button/lid/LID/state" read -r LS < "$LID_STATE_FILE" diff --git a/.config/sway/scripts/env.sh b/.config/sway/scripts/env.sh new file mode 100755 index 0000000..69dc141 --- /dev/null +++ b/.config/sway/scripts/env.sh @@ -0,0 +1,8 @@ +#!/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 diff --git a/.config/sway/scripts/screen-capture.sh b/.config/sway/scripts/screen-capture.sh new file mode 100644 index 0000000..aa2fe68 --- /dev/null +++ b/.config/sway/scripts/screen-capture.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +slur diff --git a/.config/sway/waybar/config.jsonc b/.config/sway/waybar/config.jsonc new file mode 100644 index 0000000..15df8ab --- /dev/null +++ b/.config/sway/waybar/config.jsonc @@ -0,0 +1,117 @@ +// -*- mode: jsonc -*- +{ + "spacing": 2, // Gaps between modules (4px) + "modules-left": [ + "sway/workspaces", + "sway/mode", + "sway/scratchpad", + "sway/window" + ], + //"modules-center": [ + //"sway/window" + //], + "modules-right": [ + //"mpd", + "pulseaudio", + //"network", + "battery", + "clock", + "tray" + //"custom/power" + ], + "sway/mode": { + "format": "{}" + }, + "sway/scratchpad": { + "format": "{icon} {count}", + "show-empty": false, + "format-icons": ["", ""], + "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": "{:%Y %B}\n{calendar}", + "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}% {icon}", + "format-full": "{capacity}% {icon}", + "format-charging": "{capacity}% C", + "format-plugged": "{capacity}% P", + "format-alt": "{time} {icon}", + // "format-good": "", // An empty format will hide the module + // "format-full": "", + "format-icons": ["", "", "", "", ""] + }, + "battery#bat2": { + "bat": "BAT2" + }, + "power-profiles-daemon": { + "format": "{icon}", + "tooltip-format": "Power profile: {profile}\nDriver: {driver}", + "tooltip": true, + "format-icons": { + "default": "", + "performance": "", + "balanced": "", + "power-saver": "" + } + }, + "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}% {icon} {format_source}", + "format-bluetooth": "{volume}% {icon}  {format_source}", + "format-bluetooth-muted": " {icon}  {format_source}", + "format-muted": " {format_source}", + "format-source": "{volume}% ", + "format-source-muted": "", + "format-icons": { + "headphone": "", + "hands-free": "", + "headset": "", + "phone": "", + "portable": "", + "car": "", + "default": ["", "", ""] + }, + "on-click": "pavucontrol" + }, + "custom/media": { + "format": "{icon} {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 + } +} diff --git a/.config/sway/waybar/style.css b/.config/sway/waybar/style.css new file mode 100644 index 0000000..e1ecc95 --- /dev/null +++ b/.config/sway/waybar/style.css @@ -0,0 +1,321 @@ +* { + /* `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: bold; +} + +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.focused { + background-color: #64727D; + /*box-shadow: inset 0 -3px #ffffff;*/ +} + +#workspaces button.urgent { + background-color: #eb4d4b; +} + +#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 { + margin: 0 4px; +} + +/* If workspaces is the leftmost module, omit left margin */ +.modules-left > widget:first-child > #workspaces { + margin-left: 0; +} + +/* If workspaces is the rightmost module, omit right margin */ +.modules-right > widget:last-child > #workspaces { + 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; +} diff --git a/.config/swaylock/config b/.config/swaylock/config new file mode 100644 index 0000000..58f3a9a --- /dev/null +++ b/.config/swaylock/config @@ -0,0 +1,15 @@ +ignore-empty-password + +clock +timestr=%R +datestr=%a, %e of %B + + +fade-in=0.2 + +#screenshots +effect-blur=20x2 +#effect-greyscale +effect-scale=0.3 + +indicator diff --git a/.config/systemd/user/default.target.wants/shikane.service b/.config/systemd/user/default.target.wants/shikane.service new file mode 120000 index 0000000..ba4513b --- /dev/null +++ b/.config/systemd/user/default.target.wants/shikane.service @@ -0,0 +1 @@ +/home/work/.config/systemd/user/shikane.service \ No newline at end of file diff --git a/.config/systemd/user/shikane.service b/.config/systemd/user/shikane.service new file mode 100644 index 0000000..6ada273 --- /dev/null +++ b/.config/systemd/user/shikane.service @@ -0,0 +1,10 @@ +[Unit] +Description=shikane + +[Service] +ExecStart=/usr/bin/shikane +Restart=always +RestartSec=1 + +[Install] +WantedBy=default.target diff --git a/.config/tmux/tmux.conf b/.config/tmux/tmux.conf index 5b0f32d..0a2d382 100644 --- a/.config/tmux/tmux.conf +++ b/.config/tmux/tmux.conf @@ -3,12 +3,13 @@ set -g default-terminal "xterm-256color" bind-key r source-file ~/.config/tmux/tmux.conf \; display "Reloaded!" +#set-option -g default-shell /bin/zsh + # remap prefix unbind C-b set -g prefix C-Space bind C-Space send-prefix - # set vi-mode set-window-option -g mode-keys vi # keybindings @@ -37,7 +38,6 @@ bind-key -T copy-mode-vi 'C-l' select-pane -R bind-key -T copy-mode-vi 'C-\' select-pane -l - set -g renumber-windows on set-option -g allow-rename off @@ -50,3 +50,10 @@ bind % split-window -h -c "#{pane_current_path}" set-option -g update-environment "SSH_AUTH_SOCK \ SSH_CONNECTION \ DISPLAY " + +# set -g status-position bottom +# set -g status-left " #{session_name} " +# set -g status-right "" +# set -g status-right-length 100 +# set -g status-style 'fg=default' + diff --git a/.config/waybar/config.jsonc b/.config/waybar/config.jsonc new file mode 100644 index 0000000..15df8ab --- /dev/null +++ b/.config/waybar/config.jsonc @@ -0,0 +1,117 @@ +// -*- mode: jsonc -*- +{ + "spacing": 2, // Gaps between modules (4px) + "modules-left": [ + "sway/workspaces", + "sway/mode", + "sway/scratchpad", + "sway/window" + ], + //"modules-center": [ + //"sway/window" + //], + "modules-right": [ + //"mpd", + "pulseaudio", + //"network", + "battery", + "clock", + "tray" + //"custom/power" + ], + "sway/mode": { + "format": "{}" + }, + "sway/scratchpad": { + "format": "{icon} {count}", + "show-empty": false, + "format-icons": ["", ""], + "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": "{:%Y %B}\n{calendar}", + "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}% {icon}", + "format-full": "{capacity}% {icon}", + "format-charging": "{capacity}% C", + "format-plugged": "{capacity}% P", + "format-alt": "{time} {icon}", + // "format-good": "", // An empty format will hide the module + // "format-full": "", + "format-icons": ["", "", "", "", ""] + }, + "battery#bat2": { + "bat": "BAT2" + }, + "power-profiles-daemon": { + "format": "{icon}", + "tooltip-format": "Power profile: {profile}\nDriver: {driver}", + "tooltip": true, + "format-icons": { + "default": "", + "performance": "", + "balanced": "", + "power-saver": "" + } + }, + "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}% {icon} {format_source}", + "format-bluetooth": "{volume}% {icon}  {format_source}", + "format-bluetooth-muted": " {icon}  {format_source}", + "format-muted": " {format_source}", + "format-source": "{volume}% ", + "format-source-muted": "", + "format-icons": { + "headphone": "", + "hands-free": "", + "headset": "", + "phone": "", + "portable": "", + "car": "", + "default": ["", "", ""] + }, + "on-click": "pavucontrol" + }, + "custom/media": { + "format": "{icon} {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 + } +} diff --git a/.config/waybar/style.css b/.config/waybar/style.css new file mode 100644 index 0000000..e1ecc95 --- /dev/null +++ b/.config/waybar/style.css @@ -0,0 +1,321 @@ +* { + /* `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: bold; +} + +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.focused { + background-color: #64727D; + /*box-shadow: inset 0 -3px #ffffff;*/ +} + +#workspaces button.urgent { + background-color: #eb4d4b; +} + +#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 { + margin: 0 4px; +} + +/* If workspaces is the leftmost module, omit left margin */ +.modules-left > widget:first-child > #workspaces { + margin-left: 0; +} + +/* If workspaces is the rightmost module, omit right margin */ +.modules-right > widget:last-child > #workspaces { + 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; +} diff --git a/.gitignore b/.gitignore index 275115e..48dabb8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1 @@ .config/nvim/lazy-lock.json - diff --git a/.zshrc b/.zshrc new file mode 100644 index 0000000..05aec0d --- /dev/null +++ b/.zshrc @@ -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' diff --git a/applications/Zoom.desktop b/applications/Zoom.desktop new file mode 100644 index 0000000..24a0de3 --- /dev/null +++ b/applications/Zoom.desktop @@ -0,0 +1,13 @@ +[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 diff --git a/applications/application.desktop b/applications/application.desktop new file mode 100644 index 0000000..489712c --- /dev/null +++ b/applications/application.desktop @@ -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 \ No newline at end of file diff --git a/applications/com.nextcloud.desktopclient.nextcloud.desktop b/applications/com.nextcloud.desktopclient.nextcloud.desktop new file mode 100644 index 0000000..8634b7d --- /dev/null +++ b/applications/com.nextcloud.desktopclient.nextcloud.desktop @@ -0,0 +1,209 @@ +[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 diff --git a/applications/defaults.list b/applications/defaults.list new file mode 100644 index 0000000..d415f51 --- /dev/null +++ b/applications/defaults.list @@ -0,0 +1,2 @@ +inode/directory=thunar.desktop +x-directory/normal=thunar.desktop diff --git a/applications/discord.desktop b/applications/discord.desktop new file mode 100644 index 0000000..1ec0ce1 --- /dev/null +++ b/applications/discord.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Name=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. +GenericName=Internet Messenger +Exec=/usr/lib/discord/Discord --enable-features=UseOzonePlatform --ozone-platform=wayland +#Exec=/usr/lib/discord/Discord +Icon=discord +Type=Application +Categories=Network;InstantMessaging; +Path=/usr/bin diff --git a/applications/feh.desktop b/applications/feh.desktop new file mode 100644 index 0000000..8007630 --- /dev/null +++ b/applications/feh.desktop @@ -0,0 +1,13 @@ +[Desktop Entry] +Name=Feh +Name[en_US]=feh +GenericName=Image viewer +GenericName[en_US]=Image viewer +Comment=Image viewer and cataloguer +Exec=feh --start-at %u +Terminal=false +Type=Application +Icon=feh +Categories=Graphics;2DGraphics;Viewer; +MimeType=image/bmp;image/gif;image/jpeg;image/jpg;image/pjpeg;image/png;image/tiff;image/webp;image/x-bmp;image/x-pcx;image/x-png;image/x-portable-anymap;image/x-portable-bitmap;image/x-portable-graymap;image/x-portable-pixmap;image/x-tga;image/x-xbitmap;image/heic; +NoDisplay=true diff --git a/applications/userapp-Firefox-DKWX72.desktop b/applications/userapp-Firefox-DKWX72.desktop new file mode 100644 index 0000000..a6294ce --- /dev/null +++ b/applications/userapp-Firefox-DKWX72.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Version=1.0 +Type=Application +NoDisplay=true +Exec=/usr/lib/firefox/firefox %u +Name=Firefox +Comment=Custom definition for Firefox diff --git a/scripts/kanshi-save-profile b/scripts/kanshi-save-profile new file mode 100755 index 0000000..0f2f7e4 --- /dev/null +++ b/scripts/kanshi-save-profile @@ -0,0 +1,16 @@ +#!/bin/bash + +name=$1 + +if [ -z "$name" ]; then + echo "Usage: $0 " + exit 1 +fi + +echo "Saving profile $name" + +echo -e "\nprofile $name {" >> ~/.config/kanshi/config +swaymsg -t get_outputs | \ + jq '.[] | " output '"'"'\(.make) \(.model) \(.serial)'"'"' mode \(.current_mode.width)x\(.current_mode.height) position \(.rect.x),\(.rect.y)"' -r \ + >> ~/.config/kanshi/config + diff --git a/scripts/vpn b/scripts/vpn new file mode 120000 index 0000000..0dcffb6 --- /dev/null +++ b/scripts/vpn @@ -0,0 +1 @@ +/home/jozamudi/Downloads/mullvad_config_linux_us_lax/vpn.sh \ No newline at end of file