From 408a1d9f1ffee09ef87a2ff2ae70717acb7dfa1a Mon Sep 17 00:00:00 2001 From: Belal Elsabbagh Date: Wed, 18 Dec 2024 19:45:33 +0200 Subject: [PATCH] initial commit --- alacritty/alacritty.toml | 120 ++++++++++ btop/btop.conf | 248 ++++++++++++++++++++ hypr/hypridle.conf | 5 + hypr/hyprland.conf | 300 ++++++++++++++++++++++++ hypr/hyprpaper.conf | 4 + lazygit/config.yml | 3 + nvim | 1 + starship.toml | 46 ++++ tmux/tmux.conf | 60 +++++ waybar/colors.css | 12 + waybar/config | 109 +++++++++ waybar/style.css | 242 ++++++++++++++++++++ waybar/wittr.sh | 5 + yazi/flavors/dracula.yazi/flavor.toml | 318 ++++++++++++++++++++++++++ yazi/package.toml | 5 + yazi/theme.toml | 4 + yazi/yazi.toml | 2 + zed/keymap.json | 21 ++ zed/settings.json | 18 ++ 19 files changed, 1523 insertions(+) create mode 100644 alacritty/alacritty.toml create mode 100644 btop/btop.conf create mode 100755 hypr/hypridle.conf create mode 100755 hypr/hyprland.conf create mode 100755 hypr/hyprpaper.conf create mode 100644 lazygit/config.yml create mode 160000 nvim create mode 100644 starship.toml create mode 100644 tmux/tmux.conf create mode 100755 waybar/colors.css create mode 100755 waybar/config create mode 100755 waybar/style.css create mode 100755 waybar/wittr.sh create mode 100644 yazi/flavors/dracula.yazi/flavor.toml create mode 100644 yazi/package.toml create mode 100644 yazi/theme.toml create mode 100644 yazi/yazi.toml create mode 100644 zed/keymap.json create mode 100644 zed/settings.json diff --git a/alacritty/alacritty.toml b/alacritty/alacritty.toml new file mode 100644 index 0000000..8508c64 --- /dev/null +++ b/alacritty/alacritty.toml @@ -0,0 +1,120 @@ +[font] +size = 11.0 + +[font.bold] +family = "JetBrainsMono Nerd Font" +style = "Bold" + +[font.bold_italic] +family = "JetBrainsMono Nerd Font" +style = "Bold Italic" + +[font.italic] +family = "JetBrainsMono Nerd Font" +style = "Italic" + +[font.normal] +family = "JetBrainsMono Nerd Font" +style = "Regular" + +[font.offset] +x = 0 +y = 0 + +[selection] +save_to_clipboard = true +semantic_escape_chars = ",│`|:\"' ()[]{}<>" + +[window] +decorations = "none" +dynamic_title = true +startup_mode = "Maximized" + +[window.dimensions] +columns = 80 +lines = 24 + +[window.padding] +x = 2 +y = 2 +[env] +TERM = "xterm-256color" +# Dracula theme for Alacritty +# https://draculatheme.com/alacritty +# +# Color palette +# https://spec.draculatheme.com +# +# Instructions +# https://github.com/alacritty/alacritty/blob/master/extra/man/alacritty.5.scd + +[colors.primary] + +background = "#282a36" +foreground = "#f8f8f2" +bright_foreground = "#ffffff" + +[colors.cursor] + +text = "#282a36" +cursor = "#f8f8f2" + +[colors.vi_mode_cursor] + +text = "CellBackground" +cursor = "CellForeground" + +[colors.selection] + +text = "CellForeground" +background = "#44475a" + +[colors.normal] + +black = "#21222c" +red = "#ff5555" +green = "#50fa7b" +yellow = "#f1fa8c" +blue = "#bd93f9" +magenta = "#ff79c6" +cyan = "#8be9fd" +white = "#f8f8f2" + +[colors.bright] + +black = "#6272a4" +red = "#ff6e6e" +green = "#69ff94" +yellow = "#ffffa5" +blue = "#d6acff" +magenta = "#ff92df" +cyan = "#a4ffff" +white = "#ffffff" + +[colors.search.matches] + +foreground = "#44475a" +background = "#50fa7b" + +[colors.search.focused_match] + +foreground = "#44475a" +background = "#ffb86c" + +[colors.footer_bar] + +background = "#282a36" +foreground = "#f8f8f2" + +[colors.hints.start] + +foreground = "#282a36" +background = "#f1fa8c" + +[colors.hints.end] + +foreground = "#f1fa8c" +background = "#282a36" + +[general] +live_config_reload = true diff --git a/btop/btop.conf b/btop/btop.conf new file mode 100644 index 0000000..146c7eb --- /dev/null +++ b/btop/btop.conf @@ -0,0 +1,248 @@ +#? Config file for btop v. 1.4.0 + +#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes. +#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes" +color_theme = "/usr/share/btop/themes/dracula.theme" + +#* If the theme set background should be shown, set to False if you want terminal background transparency. +theme_background = True + +#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false. +truecolor = True + +#* Set to true to force tty mode regardless if a real tty has been detected or not. +#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols. +force_tty = False + +#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets. +#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box. +#* Use whitespace " " as separator between different presets. +#* Example: "cpu:0:default,mem:0:tty,proc:1:default cpu:0:braille,proc:0:tty" +presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty" + +#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists. +#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift. +vim_keys = False + +#* Rounded corners on boxes, is ignored if TTY mode is ON. +rounded_corners = True + +#* Default symbols to use for graph creation, "braille", "block" or "tty". +#* "braille" offers the highest resolution but might not be included in all fonts. +#* "block" has half the resolution of braille but uses more common characters. +#* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY. +#* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view. +graph_symbol = "braille" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_cpu = "default" + +# Graph symbol to use for graphs in gpu box, "default", "braille", "block" or "tty". +graph_symbol_gpu = "default" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_mem = "default" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_net = "default" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_proc = "default" + +#* Manually set which boxes to show. Available values are "cpu mem net proc" and "gpu0" through "gpu5", separate values with whitespace. +shown_boxes = "cpu mem net proc" + +#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs. +update_ms = 100 + +#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct", +#* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly. +proc_sorting = "memory" + +#* Reverse sorting order, True or False. +proc_reversed = False + +#* Show processes as a tree. +proc_tree = False + +#* Use the cpu graph colors in the process list. +proc_colors = True + +#* Use a darkening gradient in the process list. +proc_gradient = True + +#* If process cpu usage should be of the core it's running on or usage of the total available cpu power. +proc_per_core = False + +#* Show process memory as bytes instead of percent. +proc_mem_bytes = True + +#* Show cpu graph for each process. +proc_cpu_graphs = True + +#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate) +proc_info_smaps = False + +#* Show proc box on left side of screen instead of right. +proc_left = False + +#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop). +proc_filter_kernel = False + +#* In tree-view, always accumulate child process resources in the parent process. +proc_aggregate = False + +#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available. +#* Select from a list of detected attributes from the options menu. +cpu_graph_upper = "Auto" + +#* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available. +#* Select from a list of detected attributes from the options menu. +cpu_graph_lower = "Auto" + +#* If gpu info should be shown in the cpu box. Available values = "Auto", "On" and "Off". +show_gpu_info = "Auto" + +#* Toggles if the lower CPU graph should be inverted. +cpu_invert_lower = True + +#* Set to True to completely disable the lower CPU graph. +cpu_single_graph = False + +#* Show cpu box at bottom of screen instead of top. +cpu_bottom = False + +#* Shows the system uptime in the CPU box. +show_uptime = True + +#* Show cpu temperature. +check_temp = True + +#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors. +cpu_sensor = "Auto" + +#* Show temperatures for cpu cores also if check_temp is True and sensors has been found. +show_coretemp = True + +#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core. +#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine. +#* Format "x:y" x=core with wrong temp, y=core with correct temp, use space as separator between multiple entries. +#* Example: "4:0 5:1 6:3" +cpu_core_map = "" + +#* Which temperature scale to use, available values: "celsius", "fahrenheit", "kelvin" and "rankine". +temp_scale = "celsius" + +#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024. +base_10_sizes = False + +#* Show CPU frequency. +show_cpu_freq = True + +#* Draw a clock at top of screen, formatting according to strftime, empty string to disable. +#* Special formatting: /host = hostname | /user = username | /uptime = system uptime +clock_format = "%X" + +#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort. +background_update = True + +#* Custom cpu model name, empty string to disable. +custom_cpu_name = "" + +#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ". +#* Begin line with "exclude=" to change to exclude filter, otherwise defaults to "most include" filter. Example: disks_filter="exclude=/boot /home/user". +disks_filter = "" + +#* Show graphs instead of meters for memory values. +mem_graphs = True + +#* Show mem box below net box instead of above. +mem_below_net = False + +#* Count ZFS ARC in cached and available memory. +zfs_arc_cached = True + +#* If swap memory should be shown in memory box. +show_swap = True + +#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk. +swap_disk = True + +#* If mem box should be split to also show disks info. +show_disks = True + +#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar. +only_physical = True + +#* Read disks list from /etc/fstab. This also disables only_physical. +use_fstab = True + +#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool) +zfs_hide_datasets = False + +#* Set to true to show available disk space for privileged users. +disk_free_priv = False + +#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view. +show_io_stat = True + +#* Toggles io mode for disks, showing big graphs for disk read/write speeds. +io_mode = False + +#* Set to True to show combined read/write io graphs in io mode. +io_graph_combined = False + +#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ". +#* Example: "/mnt/media:100 /:20 /boot:1". +io_graph_speeds = "" + +#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False. +net_download = 100 + +net_upload = 100 + +#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest. +net_auto = True + +#* Sync the auto scaling for download and upload to whichever currently has the highest scale. +net_sync = True + +#* Starts with the Network Interface specified here. +net_iface = "" + +#* Show battery stats in top right if battery is present. +show_battery = True + +#* Which battery to use if multiple are present. "Auto" for auto detection. +selected_battery = "Auto" + +#* Show power stats of battery next to charge indicator. +show_battery_watts = True + +#* Set loglevel for "~/.config/btop/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG". +#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info. +log_level = "WARNING" + +#* Measure PCIe throughput on NVIDIA cards, may impact performance on certain cards. +nvml_measure_pcie_speeds = True + +#* Horizontally mirror the GPU graph. +gpu_mirror_graph = True + +#* Custom gpu0 model name, empty string to disable. +custom_gpu_name0 = "" + +#* Custom gpu1 model name, empty string to disable. +custom_gpu_name1 = "" + +#* Custom gpu2 model name, empty string to disable. +custom_gpu_name2 = "" + +#* Custom gpu3 model name, empty string to disable. +custom_gpu_name3 = "" + +#* Custom gpu4 model name, empty string to disable. +custom_gpu_name4 = "" + +#* Custom gpu5 model name, empty string to disable. +custom_gpu_name5 = "" diff --git a/hypr/hypridle.conf b/hypr/hypridle.conf new file mode 100755 index 0000000..4831f79 --- /dev/null +++ b/hypr/hypridle.conf @@ -0,0 +1,5 @@ +listener { + timeout = 300 # 5min + on-timeout = hyprctl dispatch dpms off # screen off when timeout has passed + on-resume = hyprctl dispatch dpms on # screen on when activity is detected after timeout has fired. +} diff --git a/hypr/hyprland.conf b/hypr/hyprland.conf new file mode 100755 index 0000000..a64fa32 --- /dev/null +++ b/hypr/hyprland.conf @@ -0,0 +1,300 @@ + +# ####################################################################################### +# AUTOGENERATED HYPR CONFIG. +# PLEASE USE THE CONFIG PROVIDED IN THE GIT REPO /examples/hypr.conf AND EDIT IT, +# OR EDIT THIS ONE ACCORDING TO THE WIKI INSTRUCTIONS. +# ####################################################################################### + + +# This is an example Hyprland config file. +# Refer to the wiki for more information. +# https://wiki.hyprland.org/Configuring/Configuring-Hyprland/ + +# 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 +env = XDG_CURRENT_DESKTOP,Hyprland +env = XDG_SESSION_TYPE,wayland +env = XDG_SESSION_DESKTOP,Hyprland +env = XDG_SCREENSHOTS_DIR,$HOME/Pictures/Screenshots + +env = LIBVA_DRIVER_NAME,nvidia +env = GBM_BACKEND,nvidia-drm +env = __GLX_VENDOR_LIBRARY_NAME,nvidia + +env = QT_AUTO_SCREEN_SCALE_FACTOR,1 +env = QT_QPA_PLATFORM,wayland;xcb +env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1 +env = QT_QPA_PLATFORMTHEME,qt5ct + +env = XCURSOR_SIZE,24 +################ +### MONITORS ### +################ + +# See https://wiki.hyprland.org/Configuring/Monitors/ +monitor=,preferred,auto,1 + + +################### +### MY PROGRAMS ### +################### + +# See https://wiki.hyprland.org/Configuring/Keywords/ + +# Set programs that you use +$terminal = alacritty +$fileManager = thunar +$menu = hyprlauncher +$browser = zen-browser + +################# +### 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 = ssh-agent & waybar & hyprpaper & kdeconnect-indicator & hypridle +exec-once = systemctl --user start hyprpolkitagent +############################# +### ENVIRONMENT VARIABLES ### +############################# + +# See https://wiki.hyprland.org/Configuring/Environment-variables/ + +env = XCURSOR_SIZE,24 +env = HYPRCURSOR_SIZE,24 + + +##################### +### LOOK AND FEEL ### +##################### + +# Refer to https://wiki.hyprland.org/Configuring/Variables/ + +# https://wiki.hyprland.org/Configuring/Variables/#general +general { + gaps_in = 5 + gaps_out = 20 + + border_size = 2 + col.active_border = rgb(44475a) rgb(bd93f9) 90deg + col.inactive_border = rgba(44475aaa) + col.nogroup_border = rgba(282a36dd) + col.nogroup_border_active = rgb(bd93f9) rgb(44475a) 90deg + + # Set to true enable resizing windows by clicking and dragging on borders and gaps + resize_on_border = false + + # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on + allow_tearing = false + + layout = dwindle + +} + +cursor { + no_hardware_cursors = true +} +# https://wiki.hyprland.org/Configuring/Variables/#decoration +decoration { + rounding = 10 + + # Change transparency of focused and unfocused windows + active_opacity = 1.0 + inactive_opacity = 1.0 + shadow { + enabled = true + range = 4 + render_power = 3 + color = rgba(1E202966) +} + # https://wiki.hyprland.org/Configuring/Variables/#blur + blur { + enabled = true + size = 3 + passes = 1 + vibrancy = 0.1696 + } +} + +# https://wiki.hyprland.org/Configuring/Variables/#animations +animations { + enabled = true + + # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more + + bezier = myBezier, 0.05, 0.9, 0.1, 1.05 + #bezier = myBezier, 0.33, 0.82, 0.9, -0.08 + + animation = windows, 1, 7, myBezier + animation = windowsOut, 1, 7, default, popin 80% + animation = border, 1, 10, default + animation = borderangle, 1, 8, default + animation = fade, 1, 7, default + animation = workspaces, 1, 6, default +} + +# See https://wiki.hyprland.org/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 + force_split = 2 +} + +# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more +master { + new_status = master +} + +# https://wiki.hyprland.org/Configuring/Variables/#misc +misc { + animate_manual_resizes = true + animate_mouse_windowdragging = true + enable_swallow = true + render_ahead_of_time = false + disable_hyprland_logo = true +} + + +############# +### INPUT ### +############# + +# https://wiki.hyprland.org/Configuring/Variables/#input +input { + kb_layout = us,eg + kb_variant = + kb_model = + kb_options = grp:alt_shift_toggle + kb_rules = + follow_mouse = 1 + sensitivity = 0 # -1.0 - 1.0, 0 means no modification. + touchpad { + natural_scroll = true + } +} + +# https://wiki.hyprland.org/Configuring/Variables/#gestures +gestures { + workspace_swipe = false +} + +# Example per-device config +# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more +device { + name = epic-mouse-v1 + sensitivity = -0.5 +} + + +#################### +### KEYBINDINGSS ### +#################### + +# See https://wiki.hyprland.org/Configuring/Keywords/ +$mainMod = SUPER # Sets "Windows" key as main modifier + + +exec-once = wl-paste --type text --watch cliphist store +exec-once = wl-paste --type image --watch cliphist store +bind = $mainMod, V, exec, cliphist list | wofi --dmenu | cliphist decode | wl-copy + +# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more +bind = $mainMod, Return, exec, $terminal +bind = $mainMod, Q, killactive, +bind = $mainMod ALT, Q, exit, +bind = $mainMod, E, exec, $fileManager +bind = $mainMod, B, exec, $browser +bind = $mainMod, T, togglefloating, +bind = $mainMod, F, fullscreen, +bind = $mainMod, R, exec, $menu +bind = $mainMod, P, pseudo, # dwindle +bind = $mainMod, J, togglesplit, # dwindle + +# Move focus with mainMod + arrow keys +bind = $mainMod, left, movefocus, l +bind = $mainMod, right, movefocus, r +bind = $mainMod, up, movefocus, u +bind = $mainMod, down, movefocus, d + +# Moving windows +bind = $mainMod SHIFT, left, swapwindow, l +bind = $mainMod SHIFT, right, swapwindow, r +bind = $mainMod SHIFT, up, swapwindow, u +bind = $mainMod SHIFT, down, swapwindow, d + +# Window resizing X Y +bind = $mainMod CTRL, left, resizeactive, -60 0 +bind = $mainMod CTRL, right, resizeactive, 60 0 +bind = $mainMod CTRL, up, resizeactive, 0 -60 +bind = $mainMod CTRL, down, resizeactive, 0 60 + +# 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, movetoworkspacesilent, 1 +bind = $mainMod SHIFT, 2, movetoworkspacesilent, 2 +bind = $mainMod SHIFT, 3, movetoworkspacesilent, 3 +bind = $mainMod SHIFT, 4, movetoworkspacesilent, 4 +bind = $mainMod SHIFT, 5, movetoworkspacesilent, 5 +bind = $mainMod SHIFT, 6, movetoworkspacesilent, 6 +bind = $mainMod SHIFT, 7, movetoworkspacesilent, 7 +bind = $mainMod SHIFT, 8, movetoworkspacesilent, 8 +bind = $mainMod SHIFT, 9, movetoworkspacesilent, 9 +bind = $mainMod SHIFT, 0, movetoworkspacesilent, 10 + +# 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 + +bind = , XF86MonBrightnessDown, exec, brightnessctl set 5%- +bind = , XF86MonBrightnessUp, exec, brightnessctl set 5%+ + +bindel = , XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ +bindel = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- +bindl = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle +# Requires playerctl +bindl = , XF86AudioPlay, exec, playerctl play-pause +bindl = , XF86AudioPrev, exec, playerctl previous +bindl = , XF86AudioNext, exec, playerctl next + +bind = $mainMod SHIFT, H, exec, $terminal -e sh -c "nvim ~/.config/hypr/hyprland.conf" +bind = $mainMod SHIFT, W, exec, $terminal -e sh -c "nvim ~/.config/waybar/config" + +bind = $mainMod SHIFT, S, exec, grimblast copysave area +############################## +### WINDOWS AND WORKSPACES ### +############################## + +# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more +# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules + +# Example windowrule v1 +# windowrule = float, ^(kitty)$ + +# Example windowrule v2 +# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ + +windowrulev2 = suppressevent maximize, class:.* # You'll probably like this. diff --git a/hypr/hyprpaper.conf b/hypr/hyprpaper.conf new file mode 100755 index 0000000..493bbc6 --- /dev/null +++ b/hypr/hyprpaper.conf @@ -0,0 +1,4 @@ +$path = ~/Pictures/Wallpapers/dracula-mnt-6272a4.png + +preload = $path +wallpaper = ,$path diff --git a/lazygit/config.yml b/lazygit/config.yml new file mode 100644 index 0000000..0e5e1c0 --- /dev/null +++ b/lazygit/config.yml @@ -0,0 +1,3 @@ +git: + log: + showGraph: always diff --git a/nvim b/nvim new file mode 160000 index 0000000..84195b8 --- /dev/null +++ b/nvim @@ -0,0 +1 @@ +Subproject commit 84195b87b5cb00ecd8e8131d4d9776bd1dfafe04 diff --git a/starship.toml b/starship.toml new file mode 100644 index 0000000..928b6d9 --- /dev/null +++ b/starship.toml @@ -0,0 +1,46 @@ +format = """ +$username\ +$hostname\ +$directory\ +$git_branch\ +$git_state\ +$git_status\ +$cmd_duration\ +$line_break\ +$python\ +$character""" + +[directory] +style = "blue" + +[character] +success_symbol = "[>](purple)" +error_symbol = "[>](red)" +vimcmd_symbol = "[<](green)" + +[git_branch] +format = "[$branch]($style)" +style = "bright-black" + +[git_status] +format = "[[(*$conflicted$untracked$modified$staged$renamed$deleted)](218) ($ahead_behind$stashed)]($style)" +style = "cyan" +conflicted = "" +untracked = "" +modified = "" +staged = "" +renamed = "" +deleted = "" +stashed = "≡" + +[git_state] +format = '\([$state( $progress_current/$progress_total)]($style)\) ' +style = "bright-black" + +[cmd_duration] +format = "[$duration]($style) " +style = "yellow" + +[python] +format = "[$virtualenv]($style) " +style = "bright-black" diff --git a/tmux/tmux.conf b/tmux/tmux.conf new file mode 100644 index 0000000..0e1ddc2 --- /dev/null +++ b/tmux/tmux.conf @@ -0,0 +1,60 @@ +set -g default-terminal "tmux-256color" +set -ag terminal-overrides ",xterm-256color:RGB" +set -g mouse on + +unbind C-b +set -g prefix C-Space +bind C-Space send-prefix + +# Vim style pane selection +bind h select-pane -L +bind j select-pane -D +bind k select-pane -U +bind l select-pane -R + +# Start windows and panes at 1, not 0 +set -g base-index 1 +set -g pane-base-index 1 +set-window-option -g pane-base-index 1 +set-option -g renumber-windows on + +# Use Alt-arrow keys without prefix key to switch panes +bind -n M-Left select-pane -L +bind -n M-Right select-pane -R +bind -n M-Up select-pane -U +bind -n M-Down select-pane -D + +# Shift arrow to switch windows +bind -n S-Left previous-window +bind -n S-Right next-window + +# Shift Alt vim keys to switch windows +bind -n M-H previous-window +bind -n M-L next-window + +set -g @plugin 'tmux-plugins/tpm' +set -g @plugin 'tmux-plugins/tmux-sensible' +set -g @plugin 'dracula/tmux' +set -g @plugin 'christoomey/vim-tmux-navigator' +set -g @plugin 'tmux-plugins/tmux-yank' + +# available plugins: battery, cpu-usage, git, gpu-usage, ram-usage, tmux-ram-usage, network, network-bandwidth, network-ping, ssh-session, attached-clients, network-vpn, weather, time, mpc, spotify-tui, playerctl, kubernetes-context, synchronize-panes +set -g @dracula-plugins "ram-usage time" +set -g @dracula-left-icon-padding 1 +set -g @dracula-show-left-icon "#S" + +# set vi-mode +set-window-option -g mode-keys vi +# keybindings +bind-key -T copy-mode-vi v send-keys -X begin-selection +bind-key -T copy-mode-vi C-v send-keys -X rectangle-toggle +bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel + +bind '"' split-window -v -c "#{pane_current_path}" +bind % split-window -h -c "#{pane_current_path}" + +set -g allow-passthrough all +set -ga update-environment TERM +set -ga update-environment TERM_PROGRAM + +run -b '~/.tmux/plugins/tpm/tpm' diff --git a/waybar/colors.css b/waybar/colors.css new file mode 100755 index 0000000..c1d5bda --- /dev/null +++ b/waybar/colors.css @@ -0,0 +1,12 @@ +@define-color background-darker rgba(30, 31, 41, 230); +@define-color background #282a36; +@define-color selection #44475a; +@define-color foreground #f8f8f2; +@define-color comment #6272a4; +@define-color cyan #8be9fd; +@define-color green #50fa7b; +@define-color orange #ffb86c; +@define-color pink #ff79c6; +@define-color purple #bd93f9; +@define-color red #ff5555; +@define-color yellow #f1fa8c; diff --git a/waybar/config b/waybar/config new file mode 100755 index 0000000..43fa62c --- /dev/null +++ b/waybar/config @@ -0,0 +1,109 @@ +{ + "layer": "top", + "position": "top", + "margin": "9 13 -10 18", + "height": 24, + "spacing": 4, + "output": "eDP-1", + "modules-left": [ + "hyprland/workspaces", + + "hyprland/language", + "tray" + ], + "modules-center": [ + "clock" + ], + "modules-right": [ + "network", +"backlight", + "pulseaudio", + "cpu", + "memory", + "battery", + ], + "hyprland/workspaces": { + "disable-scroll": true, + }, + "hyprland/window": { + "max-length": 128 + }, + "clock": { + "format": "{:%a, %d %b, %H:%M}", + "tooltip-format": "{calendar}" + }, + "hyprland/language": { + "format-en": "US", + "format-eg": "AR", + "on-click": "hyprctl switchxkblayout at-translated-set-2-keyboard next" + }, + + "battery": { + "interval": 2, + "states": { + "warning": 30, + "critical": 15 + }, + "format": "{capacity}% {icon}", + "format-charging": "{capacity}% ", + "format-plugged": "{capacity}% ", + "format-alt": "{time} {icon}", + "format-icons": ["", "", "", "", "", "", "", "", "", ""], + }, + "backlight": { + "device": "intel_backlight", + "reverse-scrolling": 1, + "format": "{percent}% {icon}", + "format-icons": [""], + "min-length": 7, + }, + + "tray": { + "icon-size": 16, + "spacing": 4 + }, + "pulseaudio": { + // "scroll-step": 1, // %, can be a float + "reverse-scrolling": 1, + "format": "{volume}% {icon}", + "format-bluetooth": "{volume}% {icon}", + "format-bluetooth-muted": " {icon}", + "format-muted": " {format_source}", + "format-icons": { + "headphone": "", + "hands-free": "", + "headset": "", + "phone": "", + "portable": "", + "car": "", + "default": ["", "", ""] + }, + "on-click": "pavucontrol", + "min-length": 7, + }, + "cpu": { + "interval": 2, + "format": "{usage}% ", + "min-length": 7 + }, + "memory": { + "interval": 2, + "format": "{used:0.1f}G ", + "max-length": 10, + "min-length": 8 +}, +"network": { + "interface": "wlp0s20f3", + "format": "{ifname}", + "format-wifi": "{bandwidthTotalBits} ", + "format-ethernet": "{ipaddr}/{cidr} 󰊗", + "format-disconnected": "", //An empty format will hide the module. + "tooltip-format": "{ifname} via {gwaddr} 󰊗", + "tooltip-format-wifi": "{essid}", + "tooltip-format-ethernet": "{ifname} ", + "tooltip-format-disconnected": "Disconnected", + "max-length": 50, + "min-length": 12, +} + +} diff --git a/waybar/style.css b/waybar/style.css new file mode 100755 index 0000000..6b0de9d --- /dev/null +++ b/waybar/style.css @@ -0,0 +1,242 @@ +@import url("./colors.css"); + +* { + border: none; + border-radius: 0; + font-family: FontAwesome, JetBrains Mono Nerd Font; + font-size: 10pt; + min-height: 16px; +} + +window#waybar { + background: transparent; + color: @foreground; + + padding: 2px; +} + +window#waybar.hidden { + opacity: 0.2; +} + + +#workspaces button { + padding: 0 10px; + background: @background; + color: @foreground; +} + +#workspaces button.urgent { + background-image: linear-gradient(0deg, @red, @background-darker); +} + +#clock { + padding: 4px; + background: @background; +} + + +#workspaces { + margin-right: 8px; + border-radius: 10px; + transition: none; + background: #383c4a; +} + +#workspaces button { + transition: none; + color: #7c818c; + background: transparent; + padding: 5px; + font-size: 18px; +} + +#workspaces button.persistent { + color: #7c818c; + font-size: 12px; +} + +/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */ +#workspaces button:hover { + transition: none; + box-shadow: inherit; + text-shadow: inherit; + border-radius: inherit; + color: #383c4a; + background-image: linear-gradient(0deg, @selection, @background-darker); +} + +#workspaces button.active { + background-image: linear-gradient(0deg, @purple, @selection); + color: white; + border-radius: inherit; +} + +#language { + padding: 0 8px; + border-radius: 10px; + transition: none; + border: 1px solid @purple; + color: @foreground; + background: @background; +} + +#keyboard-state { + margin-right: 8px; + padding-right: 16px; + border-radius: 0px 10px 10px 0px; + transition: none; + color: #ffffff; + background: #383c4a; +} + +#custom-pacman { + padding-left: 16px; + padding-right: 8px; + border-radius: 10px 0px 0px 10px; + transition: none; + color: #ffffff; + background: #383c4a; +} + +#custom-mail { + margin-right: 8px; + padding-right: 16px; + border-radius: 0px 10px 10px 0px; + transition: none; + color: #ffffff; + background: #383c4a; +} + +#submap { + padding: 0 8px; + border-radius: 10px; + transition: none; + color: #ffffff; + background: #383c4a; +} + +#clock { + padding: 0 8px; + border-radius: 10px; + border: 1px solid @purple; + transition: none; + color: #ffffff; + background: @background; +} + +#pulseaudio { + margin-right: 8px; + padding: 0 8px; + border: 1px solid @purple; + border-radius: 10px; + transition: none; + color: @foreground; + background: @background; +} + +#pulseaudio.muted { + background-color: @red; + color: #2a5c45; +} + +#memory { + margin-right: 8px; + padding: 0 8px; + border-radius: 10px; + border: 1px solid @purple; + transition: none; + color: @foreground; + background: @background; +} + +#cpu { + margin-right: 8px; + padding: 0 8px; + border-radius: 10px; + border: 1px solid @purple; + transition: none; + color: @foreground; + background: @background; +} + +#temperature { + margin-right: 8px; + padding-left: 16px; + padding-right: 16px; + border-radius: 10px; + transition: none; + color: @foreground; + background: @background; + +} + +#temperature.critical { + background-color: #eb4d4b; +} + +#backlight { + margin-right: 8px; + padding: 0 8px; + border-radius: 10px; + border: 1px solid @purple; + transition: none; + color: @foreground; + background: @background; +} + +#network { + margin-right: 8px; + padding: 0 8px; + border-radius: 10px; + border: 1px solid @purple; + transition: none; + color: @foreground; + background: @background; +} + +#battery { + margin-right: 8px; + padding: 0 8px; + border-radius: 10px; + transition: none; + color: #ffffff; + background: #383c4a; +} + +#battery.charging { + color: @background; + background-color: @green; +} + +#battery.warning:not(.charging) { + background-color: #ffbe61; + color: black; +} + +#battery.critical:not(.charging) { + background-color: #f53c3c; + color: #ffffff; + animation-name: blink; + animation-duration: 0.5s; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; +} + +#tray { + padding-left: 16px; + padding-right: 16px; + border-radius: 10px; + border: 1px solid @purple; + transition: none; + color: @foreground; + background: @background; +} + +@keyframes blink { + to { + background-color: #ffffff; + color: #000000; + } +} diff --git a/waybar/wittr.sh b/waybar/wittr.sh new file mode 100755 index 0000000..ad7d097 --- /dev/null +++ b/waybar/wittr.sh @@ -0,0 +1,5 @@ +#!/usr/bin/sh +req=$(curl -s wttr.in/CITY?format="%t|%l+(%c%f)+%h,+%C") +bar=$(echo $req | awk -F "|" '{print $1}') +tooltip=$(echo $req | awk -F "|" '{print $2}') +echo "{\"text\":\"$bar\", \"tooltip\":\"$tooltip\"}" diff --git a/yazi/flavors/dracula.yazi/flavor.toml b/yazi/flavors/dracula.yazi/flavor.toml new file mode 100644 index 0000000..58b0080 --- /dev/null +++ b/yazi/flavors/dracula.yazi/flavor.toml @@ -0,0 +1,318 @@ +# Theme Configuration +[theme] +# Theme metadata +name = "Dracula Pro" +author = "Enhanced Dracula Theme" +version = "2.0.0" +description = "A sophisticated dark theme based on Dracula color scheme" + +# Color palette definition +[theme.colors] +background = "#282a36" +current_line = "#44475a" +foreground = "#f8f8f2" +comment = "#6272a4" +purple = "#bd93f9" +green = "#50fa7b" +orange = "#ffb86c" +red = "#ff5555" +pink = "#ff79c6" +cyan = "#8be9fd" +yellow = "#f1fa8c" + +# Animation settings +[theme.animation] +frames_per_second = 60 +duration = 0.2 +easing = "easeInOutCubic" + +# Manager +[manager] +# Enhanced preview options +preview = { tab_size = 2, max_width = 100, max_height = 50, cache_size = 50, scroll_offset = 5 } +preview_ratios = [1, 4, 4] +preview_shown = true +preview_service = { image = "ueberzug", video = "ffmpegthumbnailer", pdf = "pdftoppm" } + +# Sophisticated hover effects +hovered = { fg = "#f8f8f2", bg = "#44475a", italic = true } + +# Enhanced markers with animations +marker_copied = { fg = "#282a36", bg = "#50fa7b" } + +# Dynamic loading indicators +loading_indicator_frames = "⣾⣽⣻⢿⡿⣟⣯⣷" +loading_style = { fg = "#bd93f9", bold = true } + +# Enhanced folder icons +folder_icons = { default = " ", open = " ", empty = " ", empty_open = " ", symlink = " ", symlink_open = " ", error = " " } + +file_size_units = ["B", "KB", "MB", "GB", "TB", "PB", "EB"] + +# Status +[status] +# Dynamic status bar +refresh_rate = 1000 +separator_open = "" +separator_close = "" + +# Progress bar styling +progress_bar_style = { fg = "#bd93f9", bg = "#44475a" } + +# Enhanced modes +mode_normal = { fg = "#282a36", bg = "#bd93f9", bold = true } + +# Input +[input] +# Advanced input styling +cursor_style = { fg = "#f8f8f2", bg = "#6272a4", blink = true, blink_interval = 500 } + +# History features +history_size = 100 +history_unique = true + +# Completion styling +completion_style = { selected_bg = "#44475a", selected_fg = "#f8f8f2", selected_bold = true, selected_italic = true } + +# Notify +[notify] +# Enhanced notification system +position = "top-right" +timeout = 5000 +max_width = 400 +max_height = 200 +margin = 10 +padding = 8 + +[notify.levels] +info = { fg = "#50fa7b", bg = "#282a36", icon = " ", timeout = 3000 } +warn = { fg = "#f1fa8c", bg = "#282a36", icon = " ", timeout = 5000 } +error = { fg = "#ff5555", bg = "#282a36", icon = " ", timeout = 7000 } +debug = { fg = "#6272a4", bg = "#282a36", icon = "󰃤 ", timeout = 2000 } + +[notify.animation] +enabled = true +duration = 200 +slide_in = "right" +fade_out = true + +[notify.border] +fg = "#bd93f9" +bg = "#282a36" +style = "rounded" + +[notify.overlay] +bg = "#282a36" +blend = 0.8 + +# File-specific styles +[filetype] +rules = [ + # Development Environment + { name = ".env*", fg = "#50fa7b", bold = true, prefix = "󰙪 " }, + { name = ".git*", fg = "#ff5555", italic = true, prefix = " " }, + { name = ".docker*", fg = "#8be9fd", bold = true, prefix = "󰡨 " }, + + # Configuration Files + { name = "*.{json,yaml,yml,toml,xml}", fg = "#8be9fd", italic = true, prefix = "󰘦 " }, + { name = "*.{ini,conf,cfg}", fg = "#6272a4", italic = true, prefix = " " }, + + # Web Development + { name = "*.{html,htm}", fg = "#ff79c6", italic = true, prefix = "󰌝 " }, + { name = "*.{css,scss,sass,less}", fg = "#bd93f9", italic = true, prefix = "󰌜 " }, + { name = "*.{jsx,tsx}", fg = "#8be9fd", italic = true, prefix = "󰜈 " }, + { name = "*.{js,ts}", fg = "#f1fa8c", italic = true, prefix = "󰌞 " }, + { name = "*.vue", fg = "#50fa7b", italic = true, prefix = "󰡄 " }, + { name = "*.svelte", fg = "#ff5555", italic = true, prefix = "󰓓 " }, + + # Backend Development + { name = "*.{py,pyc}", fg = "#50fa7b", italic = true, prefix = "󰌠 " }, + { name = "*.{rb,erb}", fg = "#ff5555", italic = true, prefix = "󰴭 " }, + { name = "*.{php,phar}", fg = "#bd93f9", italic = true, prefix = "󰌟 " }, + { name = "*.{java,jar}", fg = "#ff5555", italic = true, prefix = "󰬷 " }, + { name = "*.go", fg = "#8be9fd", italic = true, prefix = "󰟓 " }, + { name = "*.rs", fg = "#ff7043", italic = true, prefix = "󱘗 " }, + + # System Programming + { name = "*.{c,h}", fg = "#bd93f9", italic = true, prefix = "󰙱 " }, + { name = "*.{cpp,hpp}", fg = "#ff79c6", italic = true, prefix = "󰙲 " }, + { name = "*.{asm,s}", fg = "#ff5555", italic = true, prefix = "󰋖 " }, + + # Build Systems + { name = "*Makefile", fg = "#ff79c6", bold = true, prefix = "󰛕 " }, + { name = "*CMakeLists.txt", fg = "#ff79c6", bold = true, prefix = "󰔷 " }, + { name = "*.gradle", fg = "#8be9fd", bold = true, prefix = "󰏗 " }, + + # Package Managers + { name = "package.json", fg = "#ff5555", bold = true, prefix = "󰎙 " }, + { name = "package-lock.json", fg = "#ff5555", italic = true, prefix = "󰎙 " }, + { name = "composer.json", fg = "#ff79c6", bold = true, prefix = "󰎙 " }, + { name = "Cargo.toml", fg = "#ff7043", bold = true, prefix = "󱘗 " }, + + # Documentation + { name = "*.{md,mdx}", fg = "#f1fa8c", italic = true, prefix = "󰍔 " }, + { name = "*.rst", fg = "#f1fa8c", italic = true, prefix = "󰈙 " }, + { name = "*.pdf", fg = "#ff5555", bold = true, prefix = "󰈙 " }, + { name = "LICENSE*", fg = "#50fa7b", bold = true, prefix = "󰿃 " }, + { name = "README*", fg = "#50fa7b", bold = true, prefix = " " }, + + # Media with size categories + { name = "*.{jpg,jpeg,png,gif}", size = "< 1MB", fg = "#8be9fd", prefix = "󰋯 " }, + { name = "*.{jpg,jpeg,png,gif}", size = "< 10MB", fg = "#ffb86c", prefix = "󰋯 " }, + { name = "*.{jpg,jpeg,png,gif}", size = "> 10MB", fg = "#ff5555", prefix = "󰋯 " }, + + # Video files with duration indicator + { name = "*.{mp4,mkv}", duration = "< 10:00", fg = "#bd93f9", prefix = "󰕧 " }, + { name = "*.{mp4,mkv}", duration = "< 1:00:00", fg = "#ffb86c", prefix = "󰕧 " }, + { name = "*.{mp4,mkv}", duration = "> 1:00:00", fg = "#ff5555", prefix = "󰕧 " }, + + # Archives with compression ratio + { name = "*.{zip,gz,tar}", ratio = "< 0.5", fg = "#50fa7b", prefix = "󰀼 " }, + { name = "*.{zip,gz,tar}", ratio = "< 0.7", fg = "#f1fa8c", prefix = "󰀼 " }, + { name = "*.{zip,gz,tar}", ratio = "> 0.7", fg = "#ff5555", prefix = "󰀼 " }, + + # Special Directories + { name = "node_modules", fg = "#6272a4", prefix = "󰎙 " }, + { name = ".git", fg = "#ff5555", prefix = " " }, + { name = ".github", fg = "#bd93f9", prefix = " " }, + { name = "dist", fg = "#6272a4", prefix = "󰏗 " }, + { name = "build", fg = "#6272a4", prefix = "󱁤 " }, + + # Additional file types + # Audio files + { name = "*.{mp3,flac,m4a,wav,ogg}", fg = "#bd93f9", italic = true, prefix = "󰎈 " }, + + # Font files + { name = "*.{ttf,otf,woff,woff2}", fg = "#ff79c6", italic = true, prefix = "󰛖 " }, + + # Database files + { name = "*.{sql,sqlite,db}", fg = "#8be9fd", italic = true, prefix = "󰆼 " }, + + # Shell scripts + { name = "*.{sh,bash,zsh,fish}", fg = "#50fa7b", italic = true, prefix = "󰆍 " }, + + # Virtual environments + { name = "venv", fg = "#6272a4", prefix = "󰆧 " }, + { name = ".env", fg = "#50fa7b", prefix = "󰆧 " }, + + # Container files + { name = "*.dockerfile", fg = "#8be9fd", bold = true, prefix = "󰡨 " }, + { name = "docker-compose*.{yml,yaml}", fg = "#8be9fd", bold = true, prefix = "󰡨 " }, + + # Security files + { name = "*.{pem,crt,ca,key}", fg = "#ff5555", bold = true, prefix = "󰌋 " }, + + # Improved size-based rules for media + { name = "*.{jpg,jpeg,png,gif}", size = "< 100KB", fg = "#8be9fd", prefix = "󰋯 " }, + { name = "*.{jpg,jpeg,png,gif}", size = "< 1MB", fg = "#bd93f9", prefix = "󰋯 " }, + { name = "*.{jpg,jpeg,png,gif}", size = "< 10MB", fg = "#ffb86c", prefix = "󰋯 " }, + { name = "*.{jpg,jpeg,png,gif}", size = "> 10MB", fg = "#ff5555", prefix = "󰋯 " }, + + # Default Fallbacks + { name = "*", fg = "#f8f8f2" }, + { name = "*/", fg = "#bd93f9", bold = true, prefix = " " }, + + # Additional Development Files + { name = "*.{proto}", fg = "#bd93f9", italic = true, prefix = "󰯍 " }, + { name = "*.{graphql,gql}", fg = "#ff79c6", italic = true, prefix = "󰡷 " }, + { name = "*.{tf,tfvars}", fg = "#8be9fd", italic = true, prefix = "󱁢 " }, + + # Container and Cloud + { name = "*.{yaml,yml}", pattern = "^k8s|^kubernetes", fg = "#8be9fd", bold = true, prefix = "󱃾 " }, + { name = "*.{yaml,yml}", pattern = "^helm", fg = "#8be9fd", bold = true, prefix = "󰠿 " }, + + # Data Files + { name = "*.{csv,tsv}", fg = "#50fa7b", italic = true, prefix = "󰈛 " }, + { name = "*.{parquet,avro}", fg = "#bd93f9", italic = true, prefix = "󰋖 " }, + + # Size-based rules for documents + { name = "*.{pdf,epub,mobi}", size = "< 1MB", fg = "#8be9fd", prefix = "󰈙 " }, + { name = "*.{pdf,epub,mobi}", size = "< 10MB", fg = "#ffb86c", prefix = "󰈙 " }, + { name = "*.{pdf,epub,mobi}", size = "> 10MB", fg = "#ff5555", prefix = "󰈙 " }, + + # Additional Development Files + { name = "*.{sol}", fg = "#bd93f9", italic = true, prefix = "󰡪 " }, # Solidity files + { name = "*.{ex,exs}", fg = "#bd93f9", italic = true, prefix = "󰡁 " }, # Elixir files + { name = "*.{kt,kts}", fg = "#ff79c6", italic = true, prefix = "󱈙 " }, # Kotlin files + { name = "*.{swift}", fg = "#ff5555", italic = true, prefix = "󰛥 " }, # Swift files + + # Config Files + { name = "*.{nginx,nginx.conf}", fg = "#50fa7b", italic = true, prefix = "󰻭 " }, + { name = "*{webpack}*", fg = "#8be9fd", bold = true, prefix = "󰜫 " }, + + # ML/Data Science + { name = "*.{ipynb}", fg = "#ff79c6", italic = true, prefix = "󰠏 " }, + { name = "*.{pkl,pickle}", fg = "#50fa7b", italic = true, prefix = "󰜎 " }, + + # 3D/Graphics + { name = "*.{blend}", fg = "#ff79c6", italic = true, prefix = "󰂫 " }, + { name = "*.{fbx,obj,stl}", fg = "#8be9fd", italic = true, prefix = "󰆧 " }, + + # More granular size-based rules for media files + { name = "*.{jpg,jpeg,png,gif}", size = "< 50KB", fg = "#8be9fd", prefix = "󰋯 " }, + { name = "*.{jpg,jpeg,png,gif}", size = "< 500KB", fg = "#bd93f9", prefix = "󰋯 " }, + { name = "*.{jpg,jpeg,png,gif}", size = "< 2MB", fg = "#ffb86c", prefix = "󰋯 " }, + { name = "*.{jpg,jpeg,png,gif}", size = "< 20MB", fg = "#ff7043", prefix = "󰋯 " }, + { name = "*.{jpg,jpeg,png,gif}", size = "> 20MB", fg = "#ff5555", prefix = "󰋯 " }, + + # Size categories for video files + { name = "*.{mp4,mkv,avi,mov}", size = "< 100MB", fg = "#8be9fd", prefix = "󰕧 " }, + { name = "*.{mp4,mkv,avi,mov}", size = "< 1GB", fg = "#ffb86c", prefix = "󰕧 " }, + { name = "*.{mp4,mkv,avi,mov}", size = "> 1GB", fg = "#ff5555", prefix = "󰕧 " }, +] + +# Keybindings +[keys] +# Visual key hints +show_hints = true +hint_style = { fg = "#6272a4", bg = "#44475a", italic = true } + +# Command palette +command_palette = { bg = "#282a36", fg = "#f8f8f2", selected_bg = "#44475a", selected_fg = "#f8f8f2", border = "#bd93f9" } + +# Preview +[preview] +tab_size = 2 +max_width = 120 +max_height = 60 +cache_dir = "/tmp/yazi" + +[preview.image] +enabled = true +format = "rgb" +max_width = 1920 +max_height = 1080 +quality = 90 +animate = true +cache = true + +[preview.preview_service] +image = "ueberzug" +video = "ffmpegthumbnailer" +pdf = "pdftoppm" +epub = "epub-thumbnailer" +office = "libreoffice --headless --convert-to pdf" +markdown = "glow" + +[preview.syntax] +theme = "Dracula" +background = "#282a36" + +# Opener +[opener] +edit = [ + { exec = 'nvim "$@"', desc = "Edit with Neovim" }, + { exec = 'code "$@"', desc = "Edit with VS Code" } +] +open = [ + { exec = 'xdg-open "$@"', desc = "Open with system default" }, + { exec = 'firefox "$@"', desc = "Open in Firefox" } +] +reveal = [ + { exec = 'nautilus "$@"', desc = "Reveal in file manager" } +] + +# Enhanced preview features +max_preview_size = 10485760 # 10MB limit for preview +scroll_offset = 5 +scroll_smooth = true diff --git a/yazi/package.toml b/yazi/package.toml new file mode 100644 index 0000000..35ec514 --- /dev/null +++ b/yazi/package.toml @@ -0,0 +1,5 @@ +[plugin] +deps = [{ use = "yazi-rs/plugins:git", rev = "7afba3a" }, { use = "yazi-rs/plugins:diff", rev = "7afba3a" }] + +[flavor] +deps = [] diff --git a/yazi/theme.toml b/yazi/theme.toml new file mode 100644 index 0000000..a57338c --- /dev/null +++ b/yazi/theme.toml @@ -0,0 +1,4 @@ +[flavor] +dark = "dracula" +use = "dracula" + diff --git a/yazi/yazi.toml b/yazi/yazi.toml new file mode 100644 index 0000000..9592c34 --- /dev/null +++ b/yazi/yazi.toml @@ -0,0 +1,2 @@ +[manager] +ratio = [2,3,3] diff --git a/zed/keymap.json b/zed/keymap.json new file mode 100644 index 0000000..1d8c8bd --- /dev/null +++ b/zed/keymap.json @@ -0,0 +1,21 @@ +// Zed keymap +// +// For information on binding keys, see the Zed +// documentation: https://zed.dev/docs/key-bindings +// +// To see the default key bindings run `zed: open default keymap` +// from the command palette. +[ + { + "context": "Workspace", + "bindings": { + "space space": "file_finder::Toggle" + } + }, + { + "context": "Editor", + "bindings": { + // "j k": ["workspace::SendKeystrokes", "escape"] + } + } +] diff --git a/zed/settings.json b/zed/settings.json new file mode 100644 index 0000000..746c1fa --- /dev/null +++ b/zed/settings.json @@ -0,0 +1,18 @@ +// Zed settings +// +// For information on how to configure Zed, see the Zed +// documentation: https://zed.dev/docs/configuring-zed +// +// To see all of Zed's default settings without changing your +// custom settings, run `zed: open default settings` from the +// command palette (cmd-shift-p / ctrl-shift-p) +{ + "vim_mode": true, + "ui_font_size": 16, + "buffer_font_size": 14, + "theme": { + "mode": "system", + "light": "Dracula", + "dark": "One Dark" + } +}