diff --git a/MangoHud/MangoHud.conf b/MangoHud/MangoHud.conf index 7dab9d8..a5d0eef 100644 --- a/MangoHud/MangoHud.conf +++ b/MangoHud/MangoHud.conf @@ -2,27 +2,26 @@ legacy_layout=false -background_alpha=0.6 -round_corners=0 -background_alpha=0.6 +background_alpha=0.4 +round_corners=10 +background_alpha=0.4 background_color=000000 -font_size=22 +font_size=19 text_color=FFFFFF -position=top-left +position=top-center toggle_hud=Shift_R+F12 - -table_columns=4 -gpu_text=780M +pci_dev=0:04:00.0 +table_columns=3 +gpu_text=Vega 12 gpu_stats -gpu_core_clock -gpu_mem_clock gpu_temp -cpu_text=r7 7840U +gpu_color=2E9762 +cpu_text=r7 7730U cpu_stats - -cpu_mhz cpu_temp + +cpu_color=2E97CB vram vram_color=AD64C1 ram @@ -32,15 +31,17 @@ fps_limit_method=late toggle_fps_limit=Shift_L+F1 fps_limit=0 +#offset=0 vsync=3 gl_vsync=-1 -af=0 -picmip=0 + + output_folder=/home/tanveer log_duration=30 autostart_log=0 -log_interval=100 -toggle_logging==Shift_L+F2 +log_interval=500 +toggle_logging=none + diff --git a/dunst/dunstrc b/dunst/dunstrc index 28cbdba..df4297b 100644 --- a/dunst/dunstrc +++ b/dunst/dunstrc @@ -27,7 +27,7 @@ width = 360 # The maximum height of a single notification, excluding the frame. - height = 400 + height = (0, 300) # Position the notification in the top right corner origin = top-center diff --git a/env.example b/env.example index b3f228a..2235abd 100644 --- a/env.example +++ b/env.example @@ -12,16 +12,6 @@ ntfy_creds() { NTFY_TOPIC= } -jellyfin_creds() { - # unload - [ "$1" = "unload" ] && unset JF_TOKEN JF_BASE_URL JF_USER_ID && return 0 - - # load - JF_TOKEN= - JF_BASE_URL= - JF_USER_ID= -} - nextcloud_creds() { # unload [ "$1" = "unload" ] && unset NC_URL NC_USER NC_TOKEN NC_SHARE_PATH NC_FOLDER_ID && return 0 diff --git a/eww/eww.yuck b/eww/eww.yuck index 2dab981..4b8f07d 100644 --- a/eww/eww.yuck +++ b/eww/eww.yuck @@ -16,7 +16,7 @@ :monitor 0 :geometry (geometry :x "30px" :y "30px" - :width "32%" + :width "28%" :height "200px" :anchor "top right") :stacking "bg" diff --git a/glow/glow.yml b/glow/glow.yml new file mode 100644 index 0000000..271e9a1 --- /dev/null +++ b/glow/glow.yml @@ -0,0 +1,8 @@ +# style name or JSON path (default "auto") +style: "auto" +# mouse support (TUI-mode only) +mouse: false +# use pager to display markdown +pager: false +# word-wrap at width +width: 80 diff --git a/hypr/hyprland.conf b/hypr/hyprland.conf index 6eccd82..6bef436 100644 --- a/hypr/hyprland.conf +++ b/hypr/hyprland.conf @@ -1,5 +1,6 @@ # See https://wiki.hyprland.org/Configuring/Monitors/ -monitor=eDP-1,highrr,auto,1.5,vrr,0,bitdepth,10 +#monitor=eDP-1,highrr,auto,1,vrr,0,bitdepth,10 +monitor=eDP-1,highrr,auto,1 $hypr_dir="$HOME/.config/hypr" $accent=6FAAFF @@ -55,7 +56,7 @@ general { gaps_in = 1 gaps_out = 1 - border_size = 3 + border_size = 2 col.active_border = rgb($accent) col.inactive_border = rgba(484848aa) resize_on_border=false @@ -118,7 +119,12 @@ misc { } xwayland { - force_zero_scaling = false + force_zero_scaling = false +} + +ecosystem { + no_update_news = true + no_donation_nag = true } # See https://wiki.hyprland.org/Configuring/Keywords/ for more @@ -168,7 +174,6 @@ bindm = $mainMod, mouse:273, resizewindow #applications shortcuts bind = $mainMod, F4, exec, $HOME/repos_scripts/ani-new -bind = $mainMod, F5, exec, $hypr_dir/wifi bind = $mainMod, return, exec, [workspace 2] foot bind = $mainMod, Q, exec, $hypr_dir/dmenu_run_history bind = $mainMod, G, exec, $hypr_dir/rungame @@ -176,33 +181,33 @@ bind = $mainMod, SPACE, exec, $hypr_dir/bemoji bind = $mainMod, A, exec, [workspace 1] $browser bind = $mainMod, C, exec, [workspace 3] zeditor bind = $mainMod, E, exec, [workspace 3] pcmanfm -bind = $mainMod, B, exec, $hypr_dir/bkmark "add" bind = $mainMod, I, exec, $hypr_dir/bkmark bind = $mainMod SHIFT, I, exec, $hypr_dir/bkmark "copy" +bind = $mainMod, B, exec, $hypr_dir/bkmark "add" bind = $mainMod SHIFT, B, exec, $hypr_dir/bkmark "rm" -#bind = $mainMod SHIFT, L, exit, +bind = $mainMod SHIFT, L, exit, bind = $mainMod, L, exec, loginctl lock-session -bind = $mainMod, F11, exec, $hypr_dir/info -#bind = $mainMod, F10, exec, $hypr_dir/bluetooth -bind = $mainMod, F6, exec, $hypr_dir/workspace -bind = $mainMod SHIFT, F6, exec, $hypr_dir/workspace "toggle" -bind = $mainMod, F1, exec, $hypr_dir/screenshot 'selclip' -bind = $mainMod SHIFT, F1, exec, $hypr_dir/screenshot 'fullclip' -bind = ,Print, exec, $hypr_dir/screenshot 'fullsave' +bind = $mainMod SHIFT, Print, exec, $hypr_dir/screenshot 'fullclip' +bind = $mainMod,Print, exec, $hypr_dir/screenshot 'fullsave' bind = $mainMod, F12, exec, $hypr_dir/date bind = $mainMod, Delete, exec, $hypr_dir/workspace 'list' -#media keys -binde =, XF86AudioLowerVolume, exec, $hypr_dir/volume set-volume -l 1.4 @DEFAULT_AUDIO_SINK@ 2%- -binde =, XF86AudioRaiseVolume, exec, $hypr_dir/volume set-volume -l 1.4 @DEFAULT_AUDIO_SINK@ 2%+ -binde =, XF86AudioMute, exec, $hypr_dir/volume set-mute @DEFAULT_AUDIO_SINK@ toggle +#xf86 keys +binde =, XF86AudioLowerVolume, exec, $hypr_dir/volume set-volume -l 1.4 @DEFAULT_SINK@ 2%- +binde =, XF86AudioRaiseVolume, exec, $hypr_dir/volume set-volume -l 1.4 @DEFAULT_SINK@ 2%+ +binde =, XF86AudioMute, exec, $hypr_dir/volume set-mute @DEFAULT_SINK@ toggle +binde =, XF86AudioMicMute, exec, $hypr_dir/volume set-mute @DEFAULT_SOURCE@ toggle binde =, XF86AudioPlay, exec, echo cycle pause | socat - "/tmp/yt-music/yt-music-mpvsocket" binde =, XF86AudioPause, exec, echo cycle pause | socat - "/tmp/yt-music/yt-music-mpvsocket" -binde =, XF86Launch2, exec, $HOME/repos_scripts/yt-music search_play #why not :) -binde =, XF86AudioNext, exec, $HOME/repos_scripts/yt-music play_next -binde =, XF86AudioPrev, exec, $HOME/repos_scripts/yt-music play_next menu +binde = $mainMod, XF86Favorites, exec, $HOME/repos_scripts/yt-music search_play #why not :) +binde =, XF86HangupPhone, exec, $HOME/repos_scripts/yt-music play_next +binde =, XF86PickupPhone, exec, $HOME/repos_scripts/yt-music play_next menu binde =, XF86MonBrightnessUp, exec, $hypr_dir/brightness '+' binde =, XF86MonBrightnessDown, exec, $hypr_dir/brightness '-' +bind = , XF86SelectiveScreenshot, exec, $hypr_dir/screenshot 'selclip' +bind = , XF86Display, exec, $hypr_dir/workspace "toggle" +bind = , XF86NotificationCenter, exec, $hypr_dir/info +bind = $mainMod, F8, exec, $hypr_dir/wifi #windows rules windowrulev2 = workspace 1,class:^(google-chrome)$ @@ -232,7 +237,7 @@ exec-once = dbus-update-activation-environment --systemd --all exec-once = hypridle exec-once = ssh-agent exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 -exec-once = swaybg -i $HOME/.config/wall/4.jpg -m fill -exec-once = xrdb -merge $HOME/.config/.Xresource +exec-once = swaybg -i $HOME/.config/wall/1.png -m fill exec-once = $hypr_dir/workspace 'focus' exec-once = $hypr_dir/battery +exec-once = $hypr_dir/themes diff --git a/hypr/hyprlock.conf b/hypr/hyprlock.conf index ea44f9b..dd2bd80 100644 --- a/hypr/hyprlock.conf +++ b/hypr/hyprlock.conf @@ -1,10 +1,15 @@ $foreground = rgb($GLOBAL_ACCENT) +#general { +# enable_fingerprint = true +# fingerprint_ready_message = Slap yo finger +# fingerprint_present_message = Scanning... +#} + background { monitor = color = rgb(0,0,0) - hide_cursor = true #path = screenshot #blur_passes = 4 @@ -35,9 +40,9 @@ input-field { outer_color = $foreground inner_color = rgb(0,0,0) font_color = $foreground - fade_on_empty = true + fade_on_empty = false fade_timeout = 1000 - placeholder_text = Input Password... # Text rendered in the input box when it's empty. + placeholder_text = Type Your Password... # Text rendered in the input box when it's empty. hide_input = false rounding = -1 check_color = rgb(204, 136, 34) @@ -50,7 +55,7 @@ input-field { invert_numlock = false swap_font_color = false - position = 0, -300 + position = 0, -400 halign = center valign = center } diff --git a/hypr/rungame b/hypr/rungame index a78b420..b14b8b2 100755 --- a/hypr/rungame +++ b/hypr/rungame @@ -2,7 +2,7 @@ gamedir="$HOME/games" -games=$(find "$gamedir" -maxdepth 2 -type f -name '*.exe' -executable | sed "s|$gamedir/||g;/[U|u]nin.*/d") +games=$(find "$gamedir" -maxdepth 5 -type f -name '*.exe' -executable | sed "s|$gamedir/||g;/[U|u]nin.*/d") [ -z "$games" ] && notify-send -e -u critical "No games installed" && exit 1 game=$(printf '%s\n' "$games" | bemenu --fn 'IBM Plex Sans 15' -i -c -W 0.5 -B 3 -p "PLAY GAME: " -l 15 -P ">> " --bdr="#$GLOBAL_ACCENT" --tf="#$GLOBAL_ACCENT" --hf="#$GLOBAL_ACCENT") @@ -17,4 +17,8 @@ notify-send -e -h "string:x-canonical-private-synchronous:${0##*/}" -i "wine" "L trap 'wineserver -k' INT HUP -WINEFSYNC=1 WINEESYNC=1 MANGOHUD=1 gamemoderun wine "$gamename" +#DXVK_CONFIG=dxgi.hideAmdGpu=True WINEFSYNC=1 WINEESYNC=1 MANGOHUD=1 gamescope -W 1280 -H 800 -r 60 -- gamemoderun wine "$gamename" + +#hyprctl keyword monitor "eDP-1",'1280x800@120','auto','1' +WINEFSYNC=1 WINEESYNC=1 MANGOHUD=1 gamemoderun wine "$gamename" -windowed +#hyprctl keyword monitor "eDP-1",highrr,'auto','1.5' diff --git a/hypr/themes b/hypr/themes new file mode 100755 index 0000000..93896fe --- /dev/null +++ b/hypr/themes @@ -0,0 +1,5 @@ +#!/bin/sh + +gsettings set org.gnome.desktop.interface gtk-theme Materia-dark +gsettings set org.gnome.desktop.interface icon-theme ePapirus-Dark +gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark' diff --git a/hypr/workspace b/hypr/workspace index fc07326..bc55f6a 100755 --- a/hypr/workspace +++ b/hypr/workspace @@ -2,9 +2,10 @@ setup_dual_monitor() { monitor=$(hyprctl monitors | sed -nE 's|.*(HDMI-A-[0-9]).*|\1|p') + [ -z "$monitor" ] && monitor=$(hyprctl monitors | sed -nE 's|.* (DP-[0-9]).*|\1|p') if [ -n "$monitor" ]; then notify-send -e "Setting up dual monitor workflow" - hyprctl keyword monitor "$(hyprctl monitors | sed -nE 's|.*(HDMI-A-[0-9]).*|\1|p')",highres,auto,1 + hyprctl keyword monitor "$monitor",highres,auto,1 hyprctl dispatch moveworkspacetomonitor "1 0" hyprctl dispatch moveworkspacetomonitor "2 0" hyprctl dispatch moveworkspacetomonitor "3 1" @@ -16,7 +17,7 @@ setup_dual_monitor() { handle_it() { [ -z "$1" ] || notify-send -e "$1" - choice=$(printf "Mirror\nExtend" | bemenu --fn 'IBM Plex Sans 15' -i -c -W 0.2 -B 3 -l 20 -p "what to do??: " -m 1 --bdr="#$GLOBAL_ACCENT" --tf="#$GLOBAL_ACCENT" --hf="#$GLOBAL_ACCENT") + choice=$(printf "Extend\nMirror" | bemenu --fn 'IBM Plex Sans 15' -i -c -W 0.2 -B 3 -l 20 -p "what to do??: " -m 1 --bdr="#$GLOBAL_ACCENT" --tf="#$GLOBAL_ACCENT" --hf="#$GLOBAL_ACCENT") [ -z "$choice" ] && return 0 notify-send -e "${choice}ing screen" if [ "$choice" = "Extend" ]; then diff --git a/mimeapps.list b/mimeapps.list index 0e30475..31098f8 100644 --- a/mimeapps.list +++ b/mimeapps.list @@ -38,6 +38,7 @@ application/x-extension-xhtml=firefox.desktop application/x-extension-xht=firefox.desktop application/x-bittorrent=torrent.desktop x-scheme-handler/magnet=torrent.desktop +hoppscotch=hoppscotch-handler.desktop [Added Associations] video/x-matroska=mpv.desktop; @@ -59,3 +60,4 @@ video/mpeg=firefox.desktop; x-scheme-handler/magnet=torrent.desktop; application/x-bittorrent=torrent.desktop; application/x-desktop=nvim.desktop; +application/x-php=firefox.desktop; diff --git a/nvim/lazy-lock.json b/nvim/lazy-lock.json index ba90fd2..6094798 100644 --- a/nvim/lazy-lock.json +++ b/nvim/lazy-lock.json @@ -1,26 +1,26 @@ { - "LuaSnip": { "branch": "master", "commit": "2737edc9e674e537dc0a97e3405658d57d2d31ed" }, + "LuaSnip": { "branch": "master", "commit": "33b06d72d220aa56a7ce80a0dd6f06c70cd82b9d" }, "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, "cmp-cmdline": { "branch": "main", "commit": "d250c63aa13ead745e3a40f61fdd3470efde3923" }, - "cmp-nvim-lsp": { "branch": "main", "commit": "39e2eda76828d88b773cc27a3f61d2ad782c922d" }, + "cmp-nvim-lsp": { "branch": "main", "commit": "99290b3ec1322070bcfb9e846450a46f6efa50f0" }, "cmp-nvim-lua": { "branch": "main", "commit": "f12408bdb54c39c23e67cab726264c10db33ada8" }, "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, "cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" }, - "friendly-snippets": { "branch": "main", "commit": "de8fce94985873666bd9712ea3e49ee17aadb1ed" }, - "lazy.nvim": { "branch": "main", "commit": "60cf258a9ae7fffe04bb31141141a91845158dcc" }, + "friendly-snippets": { "branch": "main", "commit": "efff286dd74c22f731cdec26a70b46e5b203c619" }, + "lazy.nvim": { "branch": "main", "commit": "7e6c863bc7563efbdd757a310d17ebc95166cef3" }, "lualine.nvim": { "branch": "master", "commit": "2a5bae925481f999263d6f5ed8361baef8df4f83" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "4d0e5b49363cac187326998b96aa6a2884e0e89b" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "2daa8921b7afdcfa47419a21ea343c3df6d74fa0" }, "mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" }, "monokai-pro.nvim": { "branch": "main", "commit": "8ba1fea7774e7c522b006091a9adb32b5cef95b9" }, - "nvim-autopairs": { "branch": "master", "commit": "ee297f215e95a60b01fde33275cc3c820eddeebe" }, - "nvim-cmp": { "branch": "main", "commit": "f17d9b4394027ff4442b298398dfcaab97e40c4f" }, + "nvim-autopairs": { "branch": "master", "commit": "b464658e9b880f463b9f7e6ccddd93fb0013f559" }, + "nvim-cmp": { "branch": "main", "commit": "b555203ce4bd7ff6192e759af3362f9d217e8c89" }, "nvim-colorizer.lua": { "branch": "master", "commit": "a065833f35a3a7cc3ef137ac88b5381da2ba302e" }, - "nvim-dap": { "branch": "master", "commit": "8517126e9323e346f6a99b3b594c5a940b914dcd" }, - "nvim-dap-python": { "branch": "master", "commit": "3e3dd98d4d83715c9e0e429b4a5da7bd706e6ceb" }, - "nvim-lspconfig": { "branch": "master", "commit": "4cb925e96288a71409a86c84fd97f4434a95453e" }, + "nvim-dap": { "branch": "master", "commit": "a6070b4e9e9a8ff1bc513c3748eff27080b0f44a" }, + "nvim-dap-python": { "branch": "master", "commit": "34282820bb713b9a5fdb120ae8dd85c2b3f49b51" }, + "nvim-lspconfig": { "branch": "master", "commit": "f1405c1ea5d7a1051a8ced3110d7cf3b8524041b" }, "nvim-parinfer": { "branch": "master", "commit": "5ca09287ab3f4144f78ff7977fabc27466f71044" }, - "nvim-treesitter": { "branch": "master", "commit": "d105f2cb7bdd1a920dce959da45035dc121bce2d" }, + "nvim-treesitter": { "branch": "master", "commit": "2a75d8065cff33216e106b651eb0f58b90375717" }, "packer.nvim": { "branch": "master", "commit": "ea0cc3c59f67c440c5ff0bbe4fb9420f4350b9a3" }, "plenary.nvim": { "branch": "master", "commit": "2d9b06177a975543726ce5c73fca176cedbffe9d" }, - "telescope.nvim": { "branch": "master", "commit": "85922dde3767e01d42a08e750a773effbffaea3e" } + "telescope.nvim": { "branch": "master", "commit": "2eca9ba22002184ac05eddbe47a7fe2d5a384dfc" } } diff --git a/qt5ct/qt5ct.conf b/qt5ct/qt5ct.conf deleted file mode 100644 index a3e3549..0000000 --- a/qt5ct/qt5ct.conf +++ /dev/null @@ -1,32 +0,0 @@ -[Appearance] -color_scheme_path=/usr/share/qt5ct/colors/darker.conf -custom_palette=true -icon_theme=ePapirus-Dark -standard_dialogs=xdgdesktopportal -style=Fusion - -[Fonts] -fixed="IBM Plex Sans,11,-1,5,50,0,0,0,0,0" -general="IBM Plex Sans,11,-1,5,50,0,0,0,0,0" - -[Interface] -activate_item_on_single_click=1 -buttonbox_layout=0 -cursor_flash_time=1000 -dialog_buttons_have_icons=1 -double_click_interval=400 -gui_effects=@Invalid() -keyboard_scheme=2 -menus_have_icons=true -show_shortcuts_in_context_menus=true -stylesheets=/usr/share/qt5ct/qss/fusion-fixes.qss -toolbutton_style=4 -underline_shortcut=1 -wheel_scroll_lines=3 - -[SettingsWindow] -geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x3\xb7\0\0\x4\xa7\0\0\0\0\0\0\0\0\0\0\x3\xbf\0\0\x4\xaf\0\0\0\0\x2\0\0\0\a\x80\0\0\0\0\0\0\0\0\0\0\x3\xb7\0\0\x4\xa7) - -[Troubleshooting] -force_raster_widgets=1 -ignored_applications=@Invalid() diff --git a/qt6ct/qt6ct.conf b/qt6ct/qt6ct.conf deleted file mode 100644 index 42439ba..0000000 --- a/qt6ct/qt6ct.conf +++ /dev/null @@ -1,32 +0,0 @@ -[Appearance] -color_scheme_path=/usr/share/qt6ct/colors/darker.conf -custom_palette=true -icon_theme=ePapirus-Dark -standard_dialogs=default -style=Fusion - -[Fonts] -fixed="IBM Plex Sans,12,-1,5,500,0,0,0,0,0,0,0,0,0,0,1,Medium" -general="IBM Plex Sans,12,-1,5,500,0,0,0,0,0,0,0,0,0,0,1,Medium" - -[Interface] -activate_item_on_single_click=1 -buttonbox_layout=0 -cursor_flash_time=1000 -dialog_buttons_have_icons=1 -double_click_interval=400 -gui_effects=@Invalid() -keyboard_scheme=2 -menus_have_icons=true -show_shortcuts_in_context_menus=true -stylesheets=@Invalid() -toolbutton_style=4 -underline_shortcut=1 -wheel_scroll_lines=3 - -[SettingsWindow] -geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x3\xb7\0\0\x4\xa7\0\0\0\0\0\0\0\0\0\0\x3\xbf\0\0\x4\xaf\0\0\0\0\x2\0\0\0\a\x80\0\0\0\0\0\0\0\0\0\0\x3\xb7\0\0\x4\xa7) - -[Troubleshooting] -force_raster_widgets=1 -ignored_applications=@Invalid() diff --git a/systemd/user/default.target.wants/podman.service b/systemd/user/default.target.wants/podman.service deleted file mode 120000 index a4c951f..0000000 --- a/systemd/user/default.target.wants/podman.service +++ /dev/null @@ -1 +0,0 @@ -/usr/lib/systemd/user/podman.service \ No newline at end of file diff --git a/zed/settings.json b/zed/settings.json index 93a2946..599a3b9 100644 --- a/zed/settings.json +++ b/zed/settings.json @@ -38,8 +38,9 @@ "buffer_font_size": 14, "ui_font_family": "IBM Plex Sans", "buffer_font_family": "Helvetica", + "format_on_save": "off", "theme": { - "mode": "system", + "mode": "dark", "light": "Base16 Monokai", "dark": "Base16 Monokai" }, diff --git a/zed/tasks.json b/zed/tasks.json index cbb8337..adde162 100644 --- a/zed/tasks.json +++ b/zed/tasks.json @@ -4,7 +4,7 @@ "command": "php artisan serve", "use_new_terminal": false, "allow_concurrent_runs": false, - "reveal": "always", + "reveal": "never", "hide": "never", "shell": "system" }, @@ -19,7 +19,7 @@ }, { "label": "Laravel Sail Start", - "command": "./vendor/bin/sail up", + "command": "systemctl is-active docker.socket && ./vendor/bin/sail up", "use_new_terminal": false, "allow_concurrent_runs": true, "reveal": "always", @@ -28,7 +28,7 @@ }, { "label": "Laravel Sail NPM Start", - "command": "./vendor/bin/sail npm run dev", + "command": "systemctl is-active docker.socket && ./vendor/bin/sail npm run dev", "use_new_terminal": false, "allow_concurrent_runs": true, "reveal": "always", diff --git a/zsh/completions/_tailscale b/zsh/completions/_tailscale new file mode 100644 index 0000000..b833510 --- /dev/null +++ b/zsh/completions/_tailscale @@ -0,0 +1,198 @@ +#compdef tailscale +compdef _tailscale tailscale + +# Copyright 2013-2023 The Cobra Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# zsh completion for tailscale -*- shell-script -*- + +__tailscale_debug() +{ + local file="$BASH_COMP_DEBUG_FILE" + if [[ -n ${file} ]]; then + echo "$*" >> "${file}" + fi +} + +_tailscale() +{ + local shellCompDirectiveError=1 + local shellCompDirectiveNoSpace=2 + local shellCompDirectiveNoFileComp=4 + local shellCompDirectiveFilterFileExt=8 + local shellCompDirectiveFilterDirs=16 + local shellCompDirectiveKeepOrder=32 + + local lastParam lastChar flagPrefix requestComp out directive comp lastComp noSpace keepOrder + local -a completions + + __tailscale_debug "\n========= starting completion logic ==========" + __tailscale_debug "CURRENT: ${CURRENT}, words[*]: ${words[*]}" + + # The user could have moved the cursor backwards on the command-line. + # We need to trigger completion from the $CURRENT location, so we need + # to truncate the command-line ($words) up to the $CURRENT location. + # (We cannot use $CURSOR as its value does not work when a command is an alias.) + words=("${=words[1,CURRENT]}") + __tailscale_debug "Truncated words[*]: ${words[*]}," + + lastParam=${words[-1]} + lastChar=${lastParam[-1]} + __tailscale_debug "lastParam: ${lastParam}, lastChar: ${lastChar}" + + # For zsh, when completing a flag with an = (e.g., tailscale -n=) + # completions must be prefixed with the flag + setopt local_options BASH_REMATCH + if [[ "${lastParam}" =~ '-.*=' ]]; then + # We are dealing with a flag with an = + flagPrefix="-P ${BASH_REMATCH}" + fi + + # Prepare the command to obtain completions + requestComp="${words[1]} completion __complete --descs=true --flags=true -- ${words[2,-1]}" + if [ "${lastChar}" = "" ]; then + # If the last parameter is complete (there is a space following it) + # We add an extra empty parameter so we can indicate this to the go completion code. + __tailscale_debug "Adding extra empty parameter" + requestComp="${requestComp} \"\"" + fi + + __tailscale_debug "About to call: eval ${requestComp}" + + # Use eval to handle any environment variables and such + out=$(eval ${requestComp} 2>/dev/null) + __tailscale_debug "completion output: ${out}" + + # Extract the directive integer following a : from the last line + local lastLine + while IFS='\n' read -r line; do + lastLine=${line} + done < <(printf "%s\n" "${out[@]}") + __tailscale_debug "last line: ${lastLine}" + + if [ "${lastLine[1]}" = : ]; then + directive=${lastLine[2,-1]} + # Remove the directive including the : and the newline + local suffix + (( suffix=${#lastLine}+2)) + out=${out[1,-$suffix]} + else + # There is no directive specified. Leave $out as is. + __tailscale_debug "No directive found. Setting do default" + directive=0 + fi + + __tailscale_debug "directive: ${directive}" + __tailscale_debug "completions: ${out}" + __tailscale_debug "flagPrefix: ${flagPrefix}" + + if [ $((directive & shellCompDirectiveError)) -ne 0 ]; then + __tailscale_debug "Completion received error. Ignoring completions." + return + fi + + while IFS='\n' read -r comp; do + if [ -n "$comp" ]; then + # If requested, completions are returned with a description. + # The description is preceded by a TAB character. + # For zsh's _describe, we need to use a : instead of a TAB. + # We first need to escape any : as part of the completion itself. + comp=${comp//:/\\:} + + local tab="$(printf '\t')" + comp=${comp//$tab/:} + + __tailscale_debug "Adding completion: ${comp}" + completions+=${comp} + lastComp=$comp + fi + done < <(printf "%s\n" "${out[@]}") + + if [ $((directive & shellCompDirectiveNoSpace)) -ne 0 ]; then + __tailscale_debug "Activating nospace." + noSpace="-S ''" + fi + + if [ $((directive & shellCompDirectiveKeepOrder)) -ne 0 ]; then + __tailscale_debug "Activating keep order." + keepOrder="-V" + fi + + if [ $((directive & shellCompDirectiveFilterFileExt)) -ne 0 ]; then + # File extension filtering + local filteringCmd + filteringCmd='_files' + for filter in ${completions[@]}; do + if [ ${filter[1]} != '*' ]; then + # zsh requires a glob pattern to do file filtering + filter="\*.$filter" + fi + filteringCmd+=" -g $filter" + done + filteringCmd+=" ${flagPrefix}" + + __tailscale_debug "File filtering command: $filteringCmd" + _arguments '*:filename:'"$filteringCmd" + elif [ $((directive & shellCompDirectiveFilterDirs)) -ne 0 ]; then + # File completion for directories only + local subdir + subdir="${completions[1]}" + if [ -n "$subdir" ]; then + __tailscale_debug "Listing directories in $subdir" + pushd "${subdir}" >/dev/null 2>&1 + else + __tailscale_debug "Listing directories in ." + fi + + local result + _arguments '*:dirname:_files -/'" ${flagPrefix}" + result=$? + if [ -n "$subdir" ]; then + popd >/dev/null 2>&1 + fi + return $result + else + __tailscale_debug "Calling _describe" + if eval _describe $keepOrder "completions" completions $flagPrefix $noSpace; then + __tailscale_debug "_describe found some completions" + + # Return the success of having called _describe + return 0 + else + __tailscale_debug "_describe did not find completions." + __tailscale_debug "Checking if we should do file completion." + if [ $((directive & shellCompDirectiveNoFileComp)) -ne 0 ]; then + __tailscale_debug "deactivating file completion" + + # We must return an error code here to let zsh know that there were no + # completions found by _describe; this is what will trigger other + # matching algorithms to attempt to find completions. + # For example zsh can match letters in the middle of words. + return 1 + else + # Perform file completion + __tailscale_debug "Activating file completion" + + # We must return the result of this command, so it must be the + # last command, or else we must store its result to return it. + _arguments '*:filename:_files'" ${flagPrefix}" + fi + fi + fi +} + +# don't run the completion function when being source-ed or eval-ed +if [ "$funcstack[1]" = "_tailscale" ]; then + _tailscale +fi diff --git a/zsh/zshrc b/zsh/zshrc index fe5c382..551bf24 100644 --- a/zsh/zshrc +++ b/zsh/zshrc @@ -75,13 +75,22 @@ mpv_jellyfin() { headless_add() { set -x #define ur preferred port - PORT="11000" - + for PORT in {11000..11100};do + ! ss -tln | grep -q ":$PORT" && break + done + # check existing headless display - headless=$(hyprctl monitors | sed -nE 's|.*(HEADLESS-[0-9]).*|\1|p') + [ -z "$1" ] && headless=$(hyprctl monitors | sed -nE 's|.*(HEADLESS-[0-9]*).*|\1|p') #create, if not exists - [ -z "$headless" ] && hyprctl output create headless | grep -q "ok" && headless=$(hyprctl monitors | sed -nE 's|.*(HEADLESS-[0-9]).*|\1|p') && printf '\n\nCreate Headless Display: %s' "$headless" + if [ -z "$headless" ];then + hyprctl output create headless | grep -q "ok" + for i in $(hyprctl monitors | sed -nE 's|.*(HEADLESS-[0-9]*).*|\1|p');do + pgrep -af "wayvnc --output=$i" && continue + headless=$i + done + printf '\n\nCreate Headless Display: %s' "$headless" + fi #there is issue [ -z "$headless" ] && printf "Something went wrong\n" && return 1 @@ -98,12 +107,14 @@ headless_add() { #device fps for wayvnc device_fps=$(printf '%s' "$RES" | cut -d'@' -f2) + position=$(printf 'auto\nauto-left' | fzf --prompt="Which position? >") + # set resolution,fps, and scaling - hyprctl keyword monitor $headless,$RES,'auto','1' + hyprctl keyword monitor $headless,$RES,$position,'1' # kill existing wayvnc and start a new one - pgrep -af "wayvnc" && killall wayvnc - setsid -f wayvnc --output="$headless" --max-fps="$device_fps" 0.0.0.0 $PORT + #pgrep -af "wayvnc" && killall wayvnc + setsid -f wayvnc --output="$headless" --socket="/tmp/$headless" --max-fps="$device_fps" 0.0.0.0 $PORT #reverse port forward to device, and start VNC adb -s "$device" reverse tcp:$PORT tcp:$PORT @@ -117,9 +128,10 @@ headless_add() { headless_rm() { set -x - pgrep -af "wayvnc" && killall wayvnc - headless=$(hyprctl monitors | sed -nE 's|.*(HEADLESS-[0-9]).*|\1|p') + headless=$(hyprctl monitors | sed -nE 's|.*(HEADLESS-[0-9]*).*|\1|p' | fzf --prompt="Select Which Device to Remove >" -0 -1) [ -n "$headless" ] && hyprctl output remove $headless + pid=$(pgrep -af "wayvnc --output=$headless" | cut -d' ' -f1) + kill -9 $pid unset headless set +x } @@ -129,7 +141,7 @@ get_cookies() { logdir="/tmp" if [ ! -f "$HOME/.config/google-chrome/Default/Cookies" ];then cp "$(find "$HOME/.mozilla" -type f -iname 'cookies.sqlite' | head -1)" "$logdir/cookies.sqlite" - sqlite3 "$logdir/cookies.sqlite" "SELECT name, value FROM moz_cookies WHERE host='.youtube.com' and name NOT like 'ST-%' and name NOT like 'VISITOR%' and name NOT like 'PREF%';" | tr '|\n' '=;' + sqlite3 "$logdir/cookies.sqlite" "SELECT name, value FROM moz_cookies WHERE host='$1';" | tr '|\n' '=;' rm "$logdir/cookies.sqlite" return 0 fi