diff --git a/dot_config/hypr/bindings.conf b/dot_config/hypr/bindings.conf index bd00368..c297766 100644 --- a/dot_config/hypr/bindings.conf +++ b/dot_config/hypr/bindings.conf @@ -28,6 +28,9 @@ bindd = SUPER SHIFT, X, X Post, exec, omarchy-launch-webapp "https://x.com/compo # unbind = SUPER, Space # bindd = SUPER, SPACE, Omarchy menu, exec, omarchy-menu +# create a new workspace +bindd = SUPER, grave, Create a mew workspace, exec, ~/.local/bin/new-workspace + # keybinds for special workspaces bindd = SUPER, S, Show/hide Slack, togglespecialworkspace, slack bindd = SUPER, period, Show/hide 1Password, togglespecialworkspace, 1password diff --git a/dot_config/hypr/monitors.conf b/dot_config/hypr/monitors.conf index e5a2173..6b9644d 100644 --- a/dot_config/hypr/monitors.conf +++ b/dot_config/hypr/monitors.conf @@ -4,7 +4,7 @@ # You must relaunch Hyprland after changing any envs (use Super+Esc, then Relaunch) # Optimized for retina-class 2x displays, like 13" 2.8K, 27" 5K, 32" 6K. -env = GDK_SCALE,2 +env = GDK_SCALE,1.5 monitor = , preferred, auto, auto # Good compromise for 27" or 32" 4K monitors (but fractional!) diff --git a/dot_config/mise/config.toml b/dot_config/mise/config.toml index a8c431a..0b41e4f 100644 --- a/dot_config/mise/config.toml +++ b/dot_config/mise/config.toml @@ -1,5 +1,6 @@ [settings] idiomatic_version_file_enable_tools = ["ruby"] +experimental = true [settings.ruby] ruby_build_opts = "CC=gcc-14 CXX=g++-14" @@ -17,3 +18,6 @@ yay = "latest" version = "latest" extras = "postgres,odbc" +[settings.python] +uv_venv_auto = true + diff --git a/dot_config/waybar/config.jsonc b/dot_config/waybar/config.jsonc new file mode 100644 index 0000000..143ac69 --- /dev/null +++ b/dot_config/waybar/config.jsonc @@ -0,0 +1,111 @@ +{ + "reload_style_on_change": true, + "layer": "top", + "position": "top", + "spacing": 0, + "height": 26, + "modules-left": ["custom/omarchy", "hyprland/workspaces"], + "modules-center": ["clock", "custom/update"], + "modules-right": [ + "group/tray-expander", + "bluetooth", + "network", + "pulseaudio", + "cpu", + "battery" + ], + "hyprland/workspaces": { + "on-click": "activate", + "format": "{id}", + }, + "custom/omarchy": { + "format": "\ue900", + "on-click": "omarchy-menu", + "tooltip-format": "Omarchy Menu\n\nSuper + Alt + Space" + }, + "custom/update": { + "format": "", + "exec": "omarchy-update-available", + "on-click": "omarchy-launch-floating-terminal-with-presentation omarchy-update", + "tooltip-format": "Omarchy update available", + "interval": 3600 + }, + + "cpu": { + "interval": 5, + "format": "󰍛", + "on-click": "alacritty -e btop" + }, + "clock": { + "format": "{:%A %H:%M}", + "format-alt": "{:%d %B W%V %Y}", + "tooltip": false, + "on-click-right": "omarchy-cmd-tzupdate" + }, + "network": { + "format-icons": ["󰤯", "󰤟", "󰤢", "󰤥", "󰤨"], + "format": "{icon}", + "format-wifi": "{icon}", + "format-ethernet": "󰀂", + "format-disconnected": "󰖪", + "tooltip-format-wifi": "{essid} ({frequency} GHz)\n⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}", + "tooltip-format-ethernet": "⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}", + "tooltip-format-disconnected": "Disconnected", + "interval": 3, + "spacing": 1, + "on-click": "alacritty --class=Impala -e impala" + }, + "battery": { + "format": "{capacity}% {icon}", + "format-discharging": "{icon}", + "format-charging": "{icon}", + "format-plugged": "", + "format-icons": { + "charging": ["󰢜", "󰂆", "󰂇", "󰂈", "󰢝", "󰂉", "󰢞", "󰂊", "󰂋", "󰂅"], + "default": ["󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"] + }, + "format-full": "󰂅", + "tooltip-format-discharging": "{power:>1.0f}W↓ {capacity}%", + "tooltip-format-charging": "{power:>1.0f}W↑ {capacity}%", + "interval": 5, + "on-click": "omarchy-menu power", + "states": { + "warning": 20, + "critical": 10 + } + }, + "bluetooth": { + "format": "", + "format-disabled": "󰂲", + "format-connected": "", + "tooltip-format": "Devices connected: {num_connections}", + "on-click": "blueberry" + }, + "pulseaudio": { + "format": "{icon}", + "on-click": "alacritty --class=Wiremix -e wiremix", + "on-click-right": "pamixer -t", + "tooltip-format": "Playing at {volume}%", + "scroll-step": 5, + "format-muted": "󰝟", + "format-icons": { + "default": ["", "", ""] + } + }, + "group/tray-expander": { + "orientation": "inherit", + "drawer": { + "transition-duration": 600, + "children-class": "tray-group-item" + }, + "modules": ["custom/expand-icon", "tray"] + }, + "custom/expand-icon": { + "format": " ", + "tooltip": false + }, + "tray": { + "icon-size": 12, + "spacing": 12 + } +} diff --git a/dot_config/waybar/style.css b/dot_config/waybar/style.css new file mode 100644 index 0000000..37a283e --- /dev/null +++ b/dot_config/waybar/style.css @@ -0,0 +1,67 @@ +@import "../omarchy/current/theme/waybar.css"; + +* { + background-color: @background; + /* color: @foreground; */ + + border: none; + border-radius: 0; + min-height: 0; + font-family: CaskaydiaMono Nerd Font; + font-size: 12px; +} + +.modules-left { + margin-left: 8px; +} + +.modules-right { + margin-right: 8px; +} + +#workspaces button { + all: initial; + padding: 0 6px; + margin: 0 1.5px; + min-width: 9px; +} + +#workspaces button.empty { + opacity: 0.5; +} + +#workspaces button.active { + color: #bfe28c; +} + +#tray, +#cpu, +#battery, +#network, +#bluetooth, +#pulseaudio, +#custom-omarchy, +#custom-update { + min-width: 12px; + margin: 0 7.5px; +} + +#custom-expand-icon { + margin-right: 7px; +} + +tooltip { + padding: 2px; +} + +#custom-update { + font-size: 10px; +} + +#clock { + margin-left: 8.75px; +} + +.hidden { + opacity: 0; +} diff --git a/dot_config/zed/settings.json b/dot_config/zed/settings.json new file mode 100644 index 0000000..ec7f1dc --- /dev/null +++ b/dot_config/zed/settings.json @@ -0,0 +1,51 @@ +// 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) +{ + "agent": { + "model_parameters": [], + "default_profile": "write" + }, + // "features": { + // "edit_prediction_provider": "none" + // }, + "always_treat_brackets_as_autoclosed": true, + "tab_size": 4, + "base_keymap": "SublimeText", + "format_on_save": "off", + "ui_font_size": 16, + "buffer_font_size": 15, + "theme": { + "mode": "system", + "light": "One Light", + "dark": "One Dark" + }, + "languages": { + "JSON": { + "tab_size": 2 + }, + "JSONC": { + "tab_size": 2 + }, + "Elixir": { + "tab_size": 2 + }, + "Markdown": { + "soft_wrap": "editor_width" + }, + "Jinja2": { + "remove_trailing_whitespace_on_save": false + }, + "YAML": { + "tab_size": 2 + } + }, + "file_types": { + "Markdown": ["svx"] + } +} diff --git a/dot_local/bin/executable_assign-workspace-monitors b/dot_local/bin/executable_assign-workspace-monitors new file mode 100644 index 0000000..005dff0 --- /dev/null +++ b/dot_local/bin/executable_assign-workspace-monitors @@ -0,0 +1,35 @@ +#!/usr/bin/python + +import json +import subprocess + +CONFIG = { + 'Samsung Electric Company LS27A800U HCJW301093': 1, + 'Seanix Technology Inc NX-EDG27X C6F0K3CN07UL': 2, + 'BOE 0x0BCA': 3 +} + + +p = subprocess.run( + ['hyprctl', 'monitors', '-j'], + capture_output=True, + check=True, + encoding='utf-8' +) +monitors = json.loads(p.stdout) +print('monitors:', monitors) + +if set(m['description'] for m in monitors) == CONFIG.keys(): + print('config matched, assigning:') + dispatches = [] + for m in monitors: + workspace = CONFIG[m['description']] + # move workspace to desired monitor + dispatches.append(f"dispatch moveworkspacetomonitor {workspace} {m['name']}") + # focus the workspace so that it's visible after moving + dispatches.append(f"workspace {workspace}") + cmd = ['hyprctl', '--batch', ' ; '.join(dispatches)] + print('\n'.join(cmd)) + subprocess.run(cmd, check=True) +else: + print('config not matched') diff --git a/dot_local/bin/executable_clear-downloads b/dot_local/bin/executable_clear-downloads new file mode 100644 index 0000000..50c85c6 --- /dev/null +++ b/dot_local/bin/executable_clear-downloads @@ -0,0 +1,4 @@ +#!/usr/bin/bash + +# clear all files in ~/Downloads older than 24h +fd --changed-before 1d --full-path ~/Downloads --exec-batch rm -rf diff --git a/dot_local/bin/executable_new-workspace b/dot_local/bin/executable_new-workspace new file mode 100644 index 0000000..3d04658 --- /dev/null +++ b/dot_local/bin/executable_new-workspace @@ -0,0 +1,7 @@ +#!/usr/bin/bash + +# current highest-numbered workspace +MAX_WORKSPACE=$(hyprctl workspaces -j | jq 'sort_by(.id) | reverse | .[0].id') + +hyprctl dispatch workspace $(($MAX_WORKSPACE + 1)) +