diff --git a/.config/fish/conf.d/puffer_fish_key_bindings.fish b/.config/fish/conf.d/puffer_fish_key_bindings.fish new file mode 100644 index 0000000..58d4d3d --- /dev/null +++ b/.config/fish/conf.d/puffer_fish_key_bindings.fish @@ -0,0 +1,25 @@ +status is-interactive || exit + +function _puffer_fish_key_bindings --on-variable fish_key_bindings + set -l modes + if test "$fish_key_bindings" = fish_default_key_bindings + set modes default insert + else + set modes insert default + end + + bind --mode $modes[1] . _puffer_fish_expand_dots + bind --mode $modes[1] ! _puffer_fish_expand_bang + bind --mode $modes[1] '$' _puffer_fish_expand_lastarg + bind --mode $modes[2] --erase . ! '$' +end + +_puffer_fish_key_bindings + +set -l uninstall_event puffer_fish_key_bindings_uninstall + +function _$uninstall_event --on-event $uninstall_event + bind -e . + bind -e ! + bind -e '$' +end diff --git a/.config/fish/fish_plugins b/.config/fish/fish_plugins index 618bfd8..840a2dd 100644 --- a/.config/fish/fish_plugins +++ b/.config/fish/fish_plugins @@ -4,3 +4,4 @@ derekstavis/fish-neovim catppuccin/fish jorgebucaran/autopair.fish joshmedeski/fish-lf-icons +nickeb96/puffer-fish diff --git a/.config/fish/fish_variables b/.config/fish/fish_variables index 996cc2b..a379394 100644 --- a/.config/fish/fish_variables +++ b/.config/fish/fish_variables @@ -7,45 +7,46 @@ SETUVAR _fisher_jorgebucaran_2F_autopair_2E_fish_files:\x7e/\x2econfig/fish/func SETUVAR _fisher_jorgebucaran_2F_fisher_files:\x7e/\x2econfig/fish/functions/fisher\x2efish\x1e\x7e/\x2econfig/fish/completions/fisher\x2efish SETUVAR _fisher_jorgebucaran_2F_nvm_2E_fish_files:\x7e/\x2econfig/fish/functions/_nvm_index_update\x2efish\x1e\x7e/\x2econfig/fish/functions/_nvm_list\x2efish\x1e\x7e/\x2econfig/fish/functions/_nvm_version_activate\x2efish\x1e\x7e/\x2econfig/fish/functions/_nvm_version_deactivate\x2efish\x1e\x7e/\x2econfig/fish/functions/nvm\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/nvm\x2efish\x1e\x7e/\x2econfig/fish/completions/nvm\x2efish SETUVAR _fisher_joshmedeski_2F_fish_2D_lf_2D_icons_files:\x7e/\x2econfig/fish/conf\x2ed/lf\x2dicons\x2efish -SETUVAR _fisher_plugins:jorgebucaran/fisher\x1ejorgebucaran/nvm\x2efish\x1ederekstavis/fish\x2dneovim\x1ecatppuccin/fish\x1ejorgebucaran/autopair\x2efish\x1ejoshmedeski/fish\x2dlf\x2dicons +SETUVAR _fisher_nickeb96_2F_puffer_2D_fish_files:\x7e/\x2econfig/fish/functions/_puffer_fish_expand_bang\x2efish\x1e\x7e/\x2econfig/fish/functions/_puffer_fish_expand_dots\x2efish\x1e\x7e/\x2econfig/fish/functions/_puffer_fish_expand_lastarg\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/puffer_fish_key_bindings\x2efish +SETUVAR _fisher_plugins:jorgebucaran/fisher\x1ejorgebucaran/nvm\x2efish\x1ederekstavis/fish\x2dneovim\x1ecatppuccin/fish\x1ejorgebucaran/autopair\x2efish\x1ejoshmedeski/fish\x2dlf\x2dicons\x1enickeb96/puffer\x2dfish SETUVAR _fisher_upgraded_to_4_4:\x1d -SETUVAR fish_color_autosuggestion:6e738d -SETUVAR fish_color_cancel:ed8796 -SETUVAR fish_color_command:8aadf4 -SETUVAR fish_color_comment:8087a2 -SETUVAR fish_color_cwd:eed49f +SETUVAR fish_color_autosuggestion:747369 +SETUVAR fish_color_cancel:\x2d\x2dreverse +SETUVAR fish_color_command:99cc99 +SETUVAR fish_color_comment:ffcc66 +SETUVAR fish_color_cwd:green SETUVAR fish_color_cwd_root:red -SETUVAR fish_color_end:f5a97f -SETUVAR fish_color_error:ed8796 -SETUVAR fish_color_escape:ee99a0 +SETUVAR fish_color_end:cc99cc +SETUVAR fish_color_error:f2777a +SETUVAR fish_color_escape:66cccc SETUVAR fish_color_gray:6e738d SETUVAR fish_color_history_current:\x2d\x2dbold -SETUVAR fish_color_host:8aadf4 -SETUVAR fish_color_host_remote:a6da95 -SETUVAR fish_color_keyword:ed8796 -SETUVAR fish_color_match:F28779 -SETUVAR fish_color_normal:cad3f5 -SETUVAR fish_color_operator:f5bde6 +SETUVAR fish_color_host:normal +SETUVAR fish_color_host_remote:\x1d +SETUVAR fish_color_keyword:\x1d +SETUVAR fish_color_match:6699cc +SETUVAR fish_color_normal:normal +SETUVAR fish_color_operator:6699cc SETUVAR fish_color_option:\x1d -SETUVAR fish_color_param:f0c6c6 -SETUVAR fish_color_quote:a6da95 -SETUVAR fish_color_redirection:f5bde6 -SETUVAR fish_color_search_match:\x2d\x2dbackground\x3d363a4f -SETUVAR fish_color_selection:\x2d\x2dbackground\x3d363a4f +SETUVAR fish_color_param:d3d0c8 +SETUVAR fish_color_quote:ffcc66 +SETUVAR fish_color_redirection:d3d0c8 +SETUVAR fish_color_search_match:bryellow\x1e\x2d\x2dbackground\x3dbrblack +SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack SETUVAR fish_color_status:ed8796 -SETUVAR fish_color_user:8bd5ca +SETUVAR fish_color_user:brgreen SETUVAR fish_color_valid_path:\x2d\x2dunderline SETUVAR fish_key_bindings:fish_default_key_bindings SETUVAR fish_pager_color_background:\x1d -SETUVAR fish_pager_color_completion:cad3f5 -SETUVAR fish_pager_color_description:6e738d -SETUVAR fish_pager_color_prefix:f5bde6 -SETUVAR fish_pager_color_progress:6e738d +SETUVAR fish_pager_color_completion:normal +SETUVAR fish_pager_color_description:B3A06D +SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline +SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan SETUVAR fish_pager_color_secondary_background:\x1d SETUVAR fish_pager_color_secondary_completion:\x1d SETUVAR fish_pager_color_secondary_description:\x1d SETUVAR fish_pager_color_secondary_prefix:\x1d -SETUVAR fish_pager_color_selected_background:\x1d +SETUVAR fish_pager_color_selected_background:\x2d\x2dbackground\x3dbrblack SETUVAR fish_pager_color_selected_completion:\x1d SETUVAR fish_pager_color_selected_description:\x1d SETUVAR fish_pager_color_selected_prefix:\x1d diff --git a/.config/fish/functions/_puffer_fish_expand_bang.fish b/.config/fish/functions/_puffer_fish_expand_bang.fish new file mode 100644 index 0000000..abe0bcb --- /dev/null +++ b/.config/fish/functions/_puffer_fish_expand_bang.fish @@ -0,0 +1,10 @@ +function _puffer_fish_expand_bang + switch (commandline -t) + case '!' + commandline -t $history[1] + commandline -f repaint + case '*' + commandline -i '!' + end +end + diff --git a/.config/fish/functions/_puffer_fish_expand_dots.fish b/.config/fish/functions/_puffer_fish_expand_dots.fish new file mode 100644 index 0000000..3c240b8 --- /dev/null +++ b/.config/fish/functions/_puffer_fish_expand_dots.fish @@ -0,0 +1,16 @@ +function _puffer_fish_expand_dots -d 'expand ... to ../.. etc' + set -l cmd (commandline --cut-at-cursor) + set -l split (string split ' ' $cmd) + switch $split[-1] + case './*'; commandline --insert '.' + case '*..' + # Only expand if the string consists of dots and slashes. + # We don't want to expand strings like `bazel build target/...`. + if string match --quiet --regex '^[/.]*$' $split[-1] + commandline --insert '/..' + else + commandline --insert '.' + end + case '*'; commandline --insert '.' + end +end diff --git a/.config/fish/functions/_puffer_fish_expand_lastarg.fish b/.config/fish/functions/_puffer_fish_expand_lastarg.fish new file mode 100644 index 0000000..a61b892 --- /dev/null +++ b/.config/fish/functions/_puffer_fish_expand_lastarg.fish @@ -0,0 +1,9 @@ +function _puffer_fish_expand_lastarg + switch (commandline -t) + case '!' + commandline -t "" + commandline -f history-token-search-backward + case '*' + commandline -i '$' + end +end diff --git a/.config/fish/functions/fish_prompt.fish b/.config/fish/functions/fish_prompt.fish index edefdb0..6a0948c 100644 --- a/.config/fish/functions/fish_prompt.fish +++ b/.config/fish/functions/fish_prompt.fish @@ -4,12 +4,12 @@ function fish_prompt --description 'Write out the prompt' prompt_login echo -n ':' - + # PWD set_color $fish_color_cwd echo -n (prompt_pwd) set_color normal - + set -q __fish_git_prompt_showdirtystate or set -g __fish_git_prompt_showdirtystate 1 set -q __fish_git_prompt_showuntrackedfiles diff --git a/.config/foot/foot.ini b/.config/foot/foot.ini index cd1e752..c853726 100644 --- a/.config/foot/foot.ini +++ b/.config/foot/foot.ini @@ -8,7 +8,9 @@ # title=foot # locked-title=no -font=JetBrainsMono Nerd Font Mono:size=13 +# font=JetBrainsMono Nerd Font Mono:size=13 + +font=FiraCode Nerd Font:size=13 # font=monospace:size=8 # font-bold= @@ -69,7 +71,7 @@ alternate-scroll-mode=yes [colors] -alpha = 0.95 +alpha = 0.85 foreground = d8dee9 background = 2e3440 @@ -77,6 +79,7 @@ background = 2e3440 # selection-foreground = d8dee9 # selection-background = 4c566a + regular0 = 3b4252 regular1 = bf616a regular2 = a3be8c diff --git a/.config/hypr/hyprland.conf b/.config/hypr/hyprland.conf index 300edd0..28e411e 100644 --- a/.config/hypr/hyprland.conf +++ b/.config/hypr/hyprland.conf @@ -47,12 +47,15 @@ input { general { # See https://wiki.hyprland.org/Configuring/Variables/ for more - gaps_in = 5 - gaps_out = 10 - border_size = 3 + gaps_in = 3 + gaps_out = 7 + border_size = 2 - col.active_border = rgb(88c0d0) 45deg - col.inactive_border = rgb(2e3440) + # col.active_border = rgb(88c0d0) 45deg + # col.inactive_border = rgb(2e3440) + + col.active_border = rgb(A7c080) 45deg + col.inactive_border = rgb(2d353b) layout = dwindle } @@ -123,7 +126,6 @@ windowrulev2 = workspace 2 silent,title:^(Kotatogram)$ windowrulev2 = size 641 1022,title:^(Kotatogram)$ windowrulev2 = move 25 45,title:^(Kotatogram)$ - windowrulev2 = workspace 1 silent,title:^(chromium-browser)$ $mainMod = SUPER diff --git a/.config/nvim/lua/core/options.lua b/.config/nvim/lua/core/options.lua index 3a542c1..33e9ca0 100644 --- a/.config/nvim/lua/core/options.lua +++ b/.config/nvim/lua/core/options.lua @@ -5,10 +5,23 @@ if ok then vim.notify = notify end - +-- Setup colorscheme local ok, err = pcall(function() - vim.g.diagnostic_sings = {"", "", "", ""} - + + local colorscheme = "everforest" + + if colorscheme == "nord" then + vim.g.diagnostic_sings = {"", "", "", ""} + end + + if colorscheme == "catppuccin-macchiato" then + vim.g.diagnostic_sings = {"", "", "", ""} + end + + if colorscheme == "everforest" then + vim.g.diagnostic_sings = {" ", " ", " ", " "} + end + -- vim.cmd('colorscheme catppuccin-macchiato') -- vim.cmd('colorscheme aquarium') opt.termguicolors = true @@ -25,7 +38,7 @@ opt.number = true opt.relativenumber = true vim.g.lsp_path = os.getenv("HOME") .. "/.local/share/nvim/mason/bin/" -vim.lsp.set_log_level("debug") +-- vim.lsp.set_log_level("debug") vim.g.mapleader = "," opt.list = true diff --git a/.config/nvim/lua/core/plugins.lua b/.config/nvim/lua/core/plugins.lua index 04a4ee8..9d183e8 100644 --- a/.config/nvim/lua/core/plugins.lua +++ b/.config/nvim/lua/core/plugins.lua @@ -17,36 +17,32 @@ require("lazy").setup({ "lewis6991/impatient.nvim", config = function() require('impatient') end }, - - -- Colorchemes + -- { - -- "gbprod/nord.nvim", - -- priority = 1000, + -- "gbprod/nord.nvim", -- config = function() -- vim.cmd.colorscheme "nord" -- end - -- }, - + -- }, + { - "ray-x/aurora", + "neanias/everforest-nvim", config = function() - vim.cmd.colorscheme "aurora" + vim.cmd.colorscheme "everforest" + require("everforest").setup() end }, - -- { - -- "andersevenrud/nordic.nvim", - -- config = function() - -- vim.cmd.colorscheme "nordic" - -- end - -- }, - -- use {"catppuccin/nvim", as = "catppuccin"} - -- use {"tiagovla/tokyodark.nvim"} - -- use {'Everblush/everblush.nvim',as = 'everblush'} - -- use {"frenzyexists/aquarium-vim"} - -- use {"rebelot/kanagawa.nvim"} - -- use {"projekt0n/github-nvim-theme"} - -- use {"Mofiqul/vscode.nvim"} + -- { "rebelot/kanagawa.nvim" }, + -- { "ellisonleao/gruvbox.nvim" }, + -- { "ray-x/aurora" }, + -- {"catppuccin/nvim"} + -- {"tiagovla/tokyodark.nvim"} + -- {'Everblush/everblush.nvim'} + -- {"frenzyexists/aquarium-vim"} + -- {"rebelot/kanagawa.nvim"} + -- {"projekt0n/github-nvim-theme"} + -- {"Mofiqul/vscode.nvim"} { "kyazdani42/nvim-tree.lua", diff --git a/.config/nvim/lua/plugins/dap.lua b/.config/nvim/lua/plugins/dap.lua index e20d342..b7e1a98 100644 --- a/.config/nvim/lua/plugins/dap.lua +++ b/.config/nvim/lua/plugins/dap.lua @@ -4,6 +4,22 @@ if not ok then return end +local keymap = vim.keymap.set + +keymap("n", "", dap.continue) +keymap("n", "", dap.step_over) +keymap("n", "", dap.step_into) +keymap("n", "", dap.step_out) +keymap("n", "b", dap.toggle_breakpoint) +keymap("n", "B", function() + dap.set_breakpoint{vim.fn.input("Breakpoint condition: ")} +end) +keymap("n", "lp", function() + dap.set_breakpoint{nil, nil, vim.fn.input('Log point message: ')} +end) +keymap("n", "dr", dap.repl.open) +keymap("n", "dl", dap.run_last) + -- dap.adapters.python = { -- type = "executable", -- command = diff --git a/Pictures/wallpapers/Anime/home.jpeg b/Pictures/wallpapers/Anime/home.jpeg deleted file mode 100644 index 70208cc..0000000 Binary files a/Pictures/wallpapers/Anime/home.jpeg and /dev/null differ diff --git a/Pictures/wallpapers/Gruvbox/staircase.jpg b/Pictures/wallpapers/Gruvbox/staircase.jpg deleted file mode 100644 index fc99574..0000000 Binary files a/Pictures/wallpapers/Gruvbox/staircase.jpg and /dev/null differ diff --git a/Pictures/wallpapers/Gruvbox/stairs.jpg b/Pictures/wallpapers/Gruvbox/stairs.jpg deleted file mode 100644 index 17fa814..0000000 Binary files a/Pictures/wallpapers/Gruvbox/stairs.jpg and /dev/null differ diff --git a/Themes/Nord/.config/dunst/dunstrc b/Themes/Nord/.config/dunst/dunstrc new file mode 100644 index 0000000..05b39bb --- /dev/null +++ b/Themes/Nord/.config/dunst/dunstrc @@ -0,0 +1,459 @@ +# See dunst(5) for all configuration options + +[global] + ### Display ### + + # Which monitor should the notifications be displayed on. + monitor = 0 + + # Display notification on focused monitor. Possible modes are: + # mouse: follow mouse pointer + # keyboard: follow window with keyboard focus + # none: don't follow anything + # + # "keyboard" needs a window manager that exports the + # _NET_ACTIVE_WINDOW property. + # This should be the case for almost all modern window managers. + # + # If this option is set to mouse or keyboard, the monitor option + # will be ignored. + follow = none + + ### Geometry ### + + # dynamic width from 0 to 300 + # width = (0, 300) + # constant width of 300 + width = (111,444) + + # The maximum height of a single notification, excluding the frame. + height = 200 + + # Position the notification in the top right corner + origin = top-right + + # Offset from the origin + offset = 10x50 + + # Scale factor. It is auto-detected if value is 0. + scale = 0 + + # Maximum number of notification (0 means no limit) + notification_limit = 0 + + ### Progress bar ### + + # Turn on the progess bar. It appears when a progress hint is passed with + # for example dunstify -h int:value:12 + progress_bar = true + + # Set the progress bar height. This includes the frame, so make sure + # it's at least twice as big as the frame width. + progress_bar_height = 10 + + # Set the frame width of the progress bar + progress_bar_frame_width = 1 + + # Set the minimum width for the progress bar + progress_bar_min_width = 150 + + # Set the maximum width for the progress bar + progress_bar_max_width = 300 + + # Show how many messages are currently hidden (because of + # notification_limit). + indicate_hidden = yes + + # The transparency of the window. Range: [0; 100]. + # This option will only work if a compositing window manager is + # present (e.g. xcompmgr, compiz, etc.). (X11 only) + transparency = 0 + + # Draw a line of "separator_height" pixel height between two + # notifications. + # Set to 0 to disable. + # If gap_size is greater than 0, this setting will be ignored. + separator_height = 2 + + # Padding between text and separator. + padding = 8 + + # Horizontal padding. + horizontal_padding = 8 + + # Padding between text and icon. + text_icon_padding = 0 + + # Defines width in pixels of frame around the notification window. + # Set to 0 to disable. + frame_width = 3 + + # Defines color of the frame around the notification window. + frame_color = "#16161E" + + # Size of gap to display between notifications - requires a compositor. + # If value is greater than 0, separator_height will be ignored and a border + # of size frame_width will be drawn around each notification instead. + # Click events on gaps do not currently propagate to applications below. + gap_size = 0 + + # Define a color for the separator. + # possible values are: + # * auto: dunst tries to find a color fitting to the background; + # * foreground: use the same color as the foreground; + # * frame: use the same color as the frame; + # * anything else will be interpreted as a X color. + separator_color = frame + + # Sort messages by urgency. + sort = yes + + # Don't remove messages, if the user is idle (no mouse or keyboard input) + # for longer than idle_threshold seconds. + # Set to 0 to disable. + # A client can set the 'transient' hint to bypass this. See the rules + # section for how to disable this if necessary + # idle_threshold = 120 + + ### Text ### + + font = Iosevka 10 + + # The spacing between lines. If the height is smaller than the + # font height, it will get raised to the font height. + line_height = 0 + + # Possible values are: + # full: Allow a small subset of html markup in notifications: + # bold + # italic + # strikethrough + # underline + # + # For a complete reference see + # . + # + # strip: This setting is provided for compatibility with some broken + # clients that send markup even though it's not enabled on the + # server. Dunst will try to strip the markup but the parsing is + # simplistic so using this option outside of matching rules for + # specific applications *IS GREATLY DISCOURAGED*. + # + # no: Disable markup parsing, incoming notifications will be treated as + # plain text. Dunst will not advertise that it has the body-markup + # capability if this is set as a global setting. + # + # It's important to note that markup inside the format option will be parsed + # regardless of what this is set to. + markup = full + + # The format of the message. Possible variables are: + # %a appname + # %s summary + # %b body + # %i iconname (including its path) + # %I iconname (without its path) + # %p progress value if set ([ 0%] to [100%]) or nothing + # %n progress value if set without any extra characters + # %% Literal % + # Markup is allowed + format = "%s\n%b" + + # Alignment of message text. + # Possible values are "left", "center" and "right". + alignment = left + + # Vertical alignment of message text and icon. + # Possible values are "top", "center" and "bottom". + vertical_alignment = center + + # Show age of message if message is older than show_age_threshold + # seconds. + # Set to -1 to disable. + show_age_threshold = 60 + + # Specify where to make an ellipsis in long lines. + # Possible values are "start", "middle" and "end". + ellipsize = middle + + # Ignore newlines '\n' in notifications. + ignore_newline = no + + # Stack together notifications with the same content + stack_duplicates = true + + # Hide the count of stacked notifications with the same content + hide_duplicate_count = false + + # Display indicators for URLs (U) and actions (A). + show_indicators = yes + + ### Icons ### + + # Recursive icon lookup. You can set a single theme, instead of having to + # define all lookup paths. + enable_recursive_icon_lookup = true + + # Set icon theme (only used for recursive icon lookup) + icon_theme = Adwaita + # You can also set multiple icon themes, with the leftmost one being used first. + # icon_theme = "Adwaita, breeze" + + # Align icons left/right/top/off + icon_position = left + + # Scale small icons up to this size, set to 0 to disable. Helpful + # for e.g. small files or high-dpi screens. In case of conflict, + # max_icon_size takes precedence over this. + min_icon_size = 32 + + # Scale larger icons down to this size, set to 0 to disable + max_icon_size = 100 + + # Paths to default icons (only neccesary when not using recursive icon lookup) + icon_path = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/ + + ### History ### + + # Should a notification popped up from history be sticky or timeout + # as if it would normally do. + sticky_history = yes + + # Maximum amount of notifications kept in history + history_length = 20 + + ### Misc/Advanced ### + + # dmenu path. + dmenu = /usr/bin/dmenu -p dunst: + + # Browser for opening urls in context menu. + browser = /usr/bin/xdg-open + + # Always run rule-defined scripts, even if the notification is suppressed + always_run_script = true + + # Define the title of the windows spawned by dunst + title = Dunst + + # Define the class of the windows spawned by dunst + class = Dunst + + # Define the corner radius of the notification window + # in pixel size. If the radius is 0, you have no rounded + # corners. + # The radius will be automatically lowered if it exceeds half of the + # notification height to avoid clipping text and/or icons. + corner_radius = 5 + + # Ignore the dbus closeNotification message. + # Useful to enforce the timeout set by dunst configuration. Without this + # parameter, an application may close the notification sent before the + # user defined timeout. + ignore_dbusclose = false + + ### Wayland ### + # These settings are Wayland-specific. They have no effect when using X11 + + # Uncomment this if you want to let notications appear under fullscreen + # applications (default: overlay) + # layer = top + + # Set this to true to use X11 output on Wayland. + force_xwayland = false + + ### Legacy + + # Use the Xinerama extension instead of RandR for multi-monitor support. + # This setting is provided for compatibility with older nVidia drivers that + # do not support RandR and using it on systems that support RandR is highly + # discouraged. + # + # By enabling this setting dunst will not be able to detect when a monitor + # is connected or disconnected which might break follow mode if the screen + # layout changes. + force_xinerama = false + + ### mouse + + # Defines list of actions for each mouse event + # Possible values are: + # * none: Don't do anything. + # * do_action: Invoke the action determined by the action_name rule. If there is no + # such action, open the context menu. + # * open_url: If the notification has exactly one url, open it. If there are multiple + # ones, open the context menu. + # * close_current: Close current notification. + # * close_all: Close all notifications. + # * context: Open context menu for the notification. + # * context_all: Open context menu for all notifications. + # These values can be strung together for each mouse event, and + # will be executed in sequence. + mouse_left_click = close_current + mouse_middle_click = do_action, close_current + mouse_right_click = close_all + +# Experimental features that may or may not work correctly. Do not expect them +# to have a consistent behaviour across releases. +[experimental] + # Calculate the dpi to use on a per-monitor basis. + # If this setting is enabled the Xft.dpi value will be ignored and instead + # dunst will attempt to calculate an appropriate dpi value for each monitor + # using the resolution and physical size. This might be useful in setups + # where there are multiple screens with very different dpi values. + per_monitor_dpi = false + + +[urgency_low] + # IMPORTANT: colors have to be defined in quotation marks. + # Otherwise the "#" and following would be interpreted as a comment. + background = "#1A1B26" + foreground = "#A9B1D6" + highlight = "#A9B1D6" + timeout = 6 + # Icon for notifications with low urgency, uncomment to enable + # default_icon = ~/.config/dunst/icons/notification.png + +[urgency_normal] + background = "#1A1B26" + foreground = "#A9B1D6" + highlight = "#A9B1D6" + timeout = 6 + # Icon for notifications with normal urgency, uncomment to enable + default_icon = /home/q/.config/dunst/icons/notification.png + +[urgency_critical] + background = "#1A1B26" + foreground = "#A9B1D6" + highlight = "#A9B1D6" + + timeout = 10 + # Icon for notifications with critical urgency, uncomment to enable + # default_icon = ~/.config/dunst/icons/notification.png + +# Every section that isn't one of the above is interpreted as a rules to +# override settings for certain messages. +# +# Messages can be matched by +# appname (discouraged, see desktop_entry) +# body +# category +# desktop_entry +# icon +# match_transient +# msg_urgency +# stack_tag +# summary +# +# and you can override the +# background +# foreground +# format +# frame_color +# fullscreen +# new_icon +# set_stack_tag +# set_transient +# set_category +# timeout +# urgency +# icon_position +# skip_display +# history_ignore +# action_name +# word_wrap +# ellipsize +# alignment +# hide_text +# +# Shell-like globbing will get expanded. +# +# Instead of the appname filter, it's recommended to use the desktop_entry filter. +# GLib based applications export their desktop-entry name. In comparison to the appname, +# the desktop-entry won't get localized. +# +# SCRIPTING +# You can specify a script that gets run when the rule matches by +# setting the "script" option. +# The script will be called as follows: +# script appname summary body icon urgency +# where urgency can be "LOW", "NORMAL" or "CRITICAL". +# +# NOTE: It might be helpful to run dunst -print in a terminal in order +# to find fitting options for rules. + +# Disable the transient hint so that idle_threshold cannot be bypassed from the +# client +#[transient_disable] +# match_transient = yes +# set_transient = no +# +# Make the handling of transient notifications more strict by making them not +# be placed in history. +#[transient_history_ignore] +# match_transient = yes +# history_ignore = yes + +# fullscreen values +# show: show the notifications, regardless if there is a fullscreen window opened +# delay: displays the new notification, if there is no fullscreen window active +# If the notification is already drawn, it won't get undrawn. +# pushback: same as delay, but when switching into fullscreen, the notification will get +# withdrawn from screen again and will get delayed like a new notification +#[fullscreen_delay_everything] +# fullscreen = delay +#[fullscreen_show_critical] +# msg_urgency = critical +# fullscreen = show + +#[espeak] +# summary = "*" +# script = dunst_espeak.sh + +#[script-test] +# summary = "*script*" +# script = dunst_test.sh + +#[ignore] +# # This notification will not be displayed +# summary = "foobar" +# skip_display = true + +#[history-ignore] +# # This notification will not be saved in history +# summary = "foobar" +# history_ignore = yes + +#[skip-display] +# # This notification will not be displayed, but will be included in the history +# summary = "foobar" +# skip_display = yes + +#[signed_on] +# appname = Pidgin +# summary = "*signed on*" +# urgency = low +# +#[signed_off] +# appname = Pidgin +# summary = *signed off* +# urgency = low +# +#[says] +# appname = Pidgin +# summary = *says* +# urgency = critical +# +#[gotify] +# appname = Gotify + +#[twitter] +# appname = Pidgin +# summary = *twitter.com* +# urgency = normal +# +#[stack-volumes] +# appname = "some_volume_notifiers" +# set_stack_tag = "volume" +# +# vim: ft=cfg diff --git a/Themes/Nord/.config/dunst/icons/battery-charged.png b/Themes/Nord/.config/dunst/icons/battery-charged.png new file mode 100644 index 0000000..5fdfed2 Binary files /dev/null and b/Themes/Nord/.config/dunst/icons/battery-charged.png differ diff --git a/Themes/Nord/.config/dunst/icons/battery-charging.png b/Themes/Nord/.config/dunst/icons/battery-charging.png new file mode 100644 index 0000000..62e23f2 Binary files /dev/null and b/Themes/Nord/.config/dunst/icons/battery-charging.png differ diff --git a/Themes/Nord/.config/dunst/icons/battery-full.png b/Themes/Nord/.config/dunst/icons/battery-full.png new file mode 100644 index 0000000..a6ed5f0 Binary files /dev/null and b/Themes/Nord/.config/dunst/icons/battery-full.png differ diff --git a/Themes/Nord/.config/dunst/icons/battery-low.png b/Themes/Nord/.config/dunst/icons/battery-low.png new file mode 100644 index 0000000..2563d04 Binary files /dev/null and b/Themes/Nord/.config/dunst/icons/battery-low.png differ diff --git a/Themes/Nord/.config/dunst/icons/cancel.png b/Themes/Nord/.config/dunst/icons/cancel.png new file mode 100644 index 0000000..32b2685 Binary files /dev/null and b/Themes/Nord/.config/dunst/icons/cancel.png differ diff --git a/Themes/Nord/.config/dunst/icons/ethernet.png b/Themes/Nord/.config/dunst/icons/ethernet.png new file mode 100644 index 0000000..eaf8ce5 Binary files /dev/null and b/Themes/Nord/.config/dunst/icons/ethernet.png differ diff --git a/Themes/Nord/.config/dunst/icons/no-connection.png b/Themes/Nord/.config/dunst/icons/no-connection.png new file mode 100644 index 0000000..fac4d51 Binary files /dev/null and b/Themes/Nord/.config/dunst/icons/no-connection.png differ diff --git a/Themes/Nord/.config/dunst/icons/notification.png b/Themes/Nord/.config/dunst/icons/notification.png new file mode 100644 index 0000000..20b70dd Binary files /dev/null and b/Themes/Nord/.config/dunst/icons/notification.png differ diff --git a/Themes/Nord/.config/dunst/icons/record.png b/Themes/Nord/.config/dunst/icons/record.png new file mode 100644 index 0000000..3cbc18d Binary files /dev/null and b/Themes/Nord/.config/dunst/icons/record.png differ diff --git a/Themes/Nord/.config/fish/completions/fisher.fish b/Themes/Nord/.config/fish/completions/fisher.fish new file mode 100644 index 0000000..6d23ce4 --- /dev/null +++ b/Themes/Nord/.config/fish/completions/fisher.fish @@ -0,0 +1,7 @@ +complete --command fisher --exclusive --long help --description "Print help" +complete --command fisher --exclusive --long version --description "Print version" +complete --command fisher --exclusive --condition __fish_use_subcommand --arguments install --description "Install plugins" +complete --command fisher --exclusive --condition __fish_use_subcommand --arguments update --description "Update installed plugins" +complete --command fisher --exclusive --condition __fish_use_subcommand --arguments remove --description "Remove installed plugins" +complete --command fisher --exclusive --condition __fish_use_subcommand --arguments list --description "List installed plugins matching regex" +complete --command fisher --exclusive --condition "__fish_seen_subcommand_from update remove" --arguments "(fisher list)" diff --git a/Themes/Nord/.config/fish/completions/nvm.fish b/Themes/Nord/.config/fish/completions/nvm.fish new file mode 100644 index 0000000..c0ab183 --- /dev/null +++ b/Themes/Nord/.config/fish/completions/nvm.fish @@ -0,0 +1,21 @@ +complete --command nvm --exclusive +complete --command nvm --exclusive --long version --description "Print version" +complete --command nvm --exclusive --long help --description "Print help" +complete --command nvm --long silent --description "Suppress standard output" + +complete --command nvm --exclusive --condition __fish_use_subcommand --arguments install --description "Download and activate the specified Node version" +complete --command nvm --exclusive --condition __fish_use_subcommand --arguments use --description "Activate a version in the current shell" +complete --command nvm --exclusive --condition __fish_use_subcommand --arguments list --description "List installed versions" +complete --command nvm --exclusive --condition __fish_use_subcommand --arguments list-remote --description "List versions available to install matching optional regex" +complete --command nvm --exclusive --condition __fish_use_subcommand --arguments current --description "Print the currently-active version" +complete --command nvm --exclusive --condition "__fish_seen_subcommand_from install" --arguments "( + test -e $nvm_data && string split ' ' <$nvm_data/.index +)" +complete --command nvm --exclusive --condition "__fish_seen_subcommand_from use" --arguments "(_nvm_list | string split ' ')" +complete --command nvm --exclusive --condition __fish_use_subcommand --arguments uninstall --description "Uninstall a version" +complete --command nvm --exclusive --condition "__fish_seen_subcommand_from uninstall" --arguments "( + _nvm_list | string split ' ' | string replace system '' +)" +complete --command nvm --exclusive --condition "__fish_seen_subcommand_from use uninstall" --arguments "( + set --query nvm_default_version && echo default +)" diff --git a/Themes/Nord/.config/fish/conf.d/autopair.fish b/Themes/Nord/.config/fish/conf.d/autopair.fish new file mode 100644 index 0000000..abb4bf3 --- /dev/null +++ b/Themes/Nord/.config/fish/conf.d/autopair.fish @@ -0,0 +1,39 @@ +status is-interactive || exit + +set --global autopair_left "(" "[" "{" '"' "'" +set --global autopair_right ")" "]" "}" '"' "'" +set --global autopair_pairs "()" "[]" "{}" '""' "''" + +function _autopair_fish_key_bindings --on-variable fish_key_bindings + set --query fish_key_bindings[1] || return + + test $fish_key_bindings = fish_default_key_bindings && + set --local mode default insert || + set --local mode insert default + + bind --mode $mode[-1] --erase \177 \b \t + + bind --mode $mode[1] \177 _autopair_backspace # macOS ⌫ + bind --mode $mode[1] \b _autopair_backspace + bind --mode $mode[1] \t _autopair_tab + + printf "%s\n" $autopair_pairs | while read --local left right --delimiter "" + bind --mode $mode[-1] --erase $left $right + if test $left = $right + bind --mode $mode[1] $left "_autopair_insert_same \\$left" + else + bind --mode $mode[1] $left "_autopair_insert_left \\$left \\$right" + bind --mode $mode[1] $right "_autopair_insert_right \\$right" + end + end +end + +_autopair_fish_key_bindings + +function _autopair_uninstall --on-event autopair_uninstall + string collect ( + bind --all | string replace --filter --regex -- "_autopair.*" --erase + set --names | string replace --filter --regex -- "^autopair" "set --erase autopair" + ) | source + functions --erase (functions --all | string match "_autopair_*") +end diff --git a/Themes/Nord/.config/fish/conf.d/lf-icons.fish b/Themes/Nord/.config/fish/conf.d/lf-icons.fish new file mode 100644 index 0000000..22e49d4 --- /dev/null +++ b/Themes/Nord/.config/fish/conf.d/lf-icons.fish @@ -0,0 +1,221 @@ +set -Ux LF_ICONS "\ +*.7z=:\ +*.aac=:\ +*.ace=:\ +*.alz=:\ +*.arc=:\ +*.arj=:\ +*.asf=:\ +*.atom=:\ +*.au=:\ +*.avi=:\ +*.bash=:\ +*.bash_history=:\ +*.bashprofile=:\ +*.bashrc=:\ +*.bmp=:\ +*.bz2=:\ +*.bz=:\ +*.c=:\ +*.cab=:\ +*.cc=:\ +*.cfg=:\ +*.cgm=:\ +*.clang-format=:\ +*.clj=:\ +*.cmd=:\ +*.coffee=:\ +*.cpio=:\ +*.cpp=:\ +*.css=:\ +*.d=:\ +*.dart=:\ +*.deb=:\ +*.dl=:\ +*.DS_Store=:\ +*.dwm=:\ +*.dz=:\ +*.ear=:\ +*.emf=:\ +*.env=:\ +*.erl=:\ +*.esd=:\ +*.exs=:\ +*.fish=:\ +*.flac=:\ +*.flc=:\ +*.fli=:\ +*.flv=:\ +*.fs=:\ +*.gif=:\ +*.git=:\ +*.gitattributes=:\ +*.gitconfig=:\ +*.github=:\ +*.gitignore=:\ +*.gitignore_global=:\ +*.gitkeep=:\ +*.gitmodules=:\ +*.gl=:\ +*.go=:\ +*.gz=:\ +*.h=:\ +*.hh=:\ +*.hidden=:\ +*.hpp=:\ +*.hs=:\ +*.html=:\ +*.hyper.js=:\ +*.jar=:\ +*.java=:\ +*.jl=:\ +*.jpeg=:\ +*.jpg=:\ +*.js=:\ +*.json=:\ +*.jsx=:\ +*.lha=:\ +*.lrz=:\ +*.lua=:\ +*.lz4=:\ +*.lz=:\ +*.lzh=:\ +*.lzma=:\ +*.lzo=:\ +*.m2v=:\ +*.m4a=:\ +*.m4v=:\ +*.map=:\ +*.md=:\ +*.mdx=:\ +*.mid=:\ +*.midi=:\ +*.mjpeg=:\ +*.mjpg=:\ +*.mka=:\ +*.mkv=:\ +*.mng=:\ +*.mov=:\ +*.mp3=:\ +*.mp4=:\ +*.mp4v=:\ +*.mpc=:\ +*.mpeg=:\ +*.mpg=:\ +*.nix=:\ +*.npmignore=:\ +*.npmrc=:\ +*.nuv=:\ +*.nvmrc=:\ +*.oga=:\ +*.ogg=:\ +*.ogm=:\ +*.ogv=:\ +*.ogx=:\ +*.opus=:\ +*.pbm=:\ +*.pcx=:\ +*.pdf=:\ +*.pgm=:\ +*.php=:\ +*.pl=:\ +*.png=:\ +*.ppm=:\ +*.pro=:\ +*.ps1=:\ +*.py=:\ +*.qt=:\ +*.ra=:\ +*.rar=:\ +*.rb=:\ +*.rm=:\ +*.rmvb=:\ +*.rpm=:\ +*.rs=:\ +*.rvm=:\ +*.rz=:\ +*.sar=:\ +*.scala=:\ +*.sh=:\ +*.skhdrc=:\ +*.sol=ﲹ:\ +*.spx=:\ +*.svg=:\ +*.svgz=:\ +*.swm=:\ +*.t7z=:\ +*.tar=:\ +*.taz=:\ +*.tbz2=:\ +*.tbz=:\ +*.tga=:\ +*.tgz=:\ +*.tif=:\ +*.tiff=:\ +*.tlz=:\ +*.tmux.conf=:\ +*.trash=:\ +*.ts=:\ +*.tsx=:\ +*.txz=:\ +*.tz=:\ +*.tzo=:\ +*.tzst=:\ +*.vim=:\ +*.vimrc=:\ +*.vob=:\ +*.vscode=:\ +*.war=:\ +*.wav=:\ +*.webm=:\ +*.wim=:\ +*.xbm=:\ +*.xcf=:\ +*.xpm=:\ +*.xspf=:\ +*.xwd=:\ +*.xz=:\ +*.yabairc=:\ +*.yaml=פּ:\ +*.yarn-integrity=:\ +*.yarnrc=:\ +*.yml=פּ:\ +*.yuv=:\ +*.z=:\ +*.zip=:\ +*.zoo=:\ +*.zprofile=:\ +*.zprofile=:\ +*.zsh=:\ +*.zsh_history=:\ +*.zshrc=:\ +*.zst=:\ +*bin=:\ +*config=:\ +*docker-compose.yml=:\ +*dockerfile=:\ +*gradle=:\ +*gruntfile.coffee=:\ +*gruntfile.js=:\ +*gruntfile.ls=:\ +*gulpfile.coffee=:\ +*gulpfile.js=:\ +*gulpfile.ls=:\ +*include=:\ +*lib=:\ +*localized=:\ +*node_modules=:\ +*package.json=:\ +*rubydoc=:\ +*tsconfig.json=:\ +*yarn.lock=:\ +di=:\ +dt=:\ +ex=:\ +fi=:\ +ln=:\ +or=:\ +ow=:\ +st=:\ +tw=:\ +" diff --git a/Themes/Nord/.config/fish/conf.d/nvm.fish b/Themes/Nord/.config/fish/conf.d/nvm.fish new file mode 100644 index 0000000..8aab50a --- /dev/null +++ b/Themes/Nord/.config/fish/conf.d/nvm.fish @@ -0,0 +1,28 @@ +function _nvm_install --on-event nvm_install + set --query nvm_mirror || set --universal nvm_mirror https://nodejs.org/dist + set --query XDG_DATA_HOME || set --local XDG_DATA_HOME ~/.local/share + set --universal nvm_data $XDG_DATA_HOME/nvm + + test ! -d $nvm_data && command mkdir -p $nvm_data + echo "Downloading the Node distribution index..." 2>/dev/null + _nvm_index_update +end + +function _nvm_update --on-event nvm_update + set --query nvm_mirror || set --universal nvm_mirror https://nodejs.org/dist + set --query XDG_DATA_HOME || set --local XDG_DATA_HOME ~/.local/share + set --universal nvm_data $XDG_DATA_HOME/nvm +end + +function _nvm_uninstall --on-event nvm_uninstall + command rm -rf $nvm_data + + set --query nvm_current_version && _nvm_version_deactivate $nvm_current_version + + set --names | string replace --filter --regex -- "^nvm" "set --erase nvm" | source + functions --erase (functions --all | string match --entire --regex -- "^_nvm_") +end + +if status is-interactive && set --query nvm_default_version && ! set --query nvm_current_version + nvm use --silent $nvm_default_version +end diff --git a/Themes/Nord/.config/fish/config.fish b/Themes/Nord/.config/fish/config.fish new file mode 100644 index 0000000..beab9a8 --- /dev/null +++ b/Themes/Nord/.config/fish/config.fish @@ -0,0 +1,49 @@ +if status --is-login + if test -z "$DISPLAY" -a $XDG_VTNR = 1 + exec Hyprland > ~/.hyprland.log + end +end + +if status is-interactive + set -x XDG_CONFIG_HOME "$HOME/.config" + set -x XDG_STATE_HOME "$HOME/.local/state" + set -x XDG_CACHE_HOME "$HOME/.cache" + + set -x DOCKER_CONFIG "$XDG_CONFIG_HOME/docker" + set -x CARGO_HOME "$XDG_DATA_HOME/cargo" + set -x RUSTUP_HOME "$XDG_DATA_HOME/rustup" + set -x WINEPREFIX "$XDG_DATA_HOME/wine" + set -x JUPYTER_CONFIG_DIR "$XDG_CONFIG_HOME/jupyter" + set -x ANDROID_HOME "$XDG_DATA_HOME/android" + + alias ls="lsd" + + alias v="vim" + alias nv="nvim" + + alias gc="git clone" + alias gst="git status" + alias bat="bat -p" + + alias la="lsd -la" + + set -U fish_user_paths $HOME/bin $fish_user_paths + set -U fish_user_paths $HOME/.local/bin $fish_user_paths + alias dotfiles="git --git-dir=/home/q/repos/dotfiles --work-tree=$HOME" + alias chromium-browser-stable="chromium-browser-stable --disable-gpu --disable-software-rasterizer" + + set -x PF_INFO "ascii title os kernel wm shell pkgs memory" + + set -x TERM "xterm-256color" + set -x EDITOR "nvim" + set -x VISUAL "nvim" + + set -x XDG_DATA_HOME $HOME/.local/share + + set srcdir "$HOME/.cache/" + set pkgdir "$HOME/.npm/" + alias npm="npm --cache $srcir/npm-cache" + + set fish_greeting + # Commands to run in interactive sessions can go here +end diff --git a/Themes/Nord/.config/fish/fish_plugins b/Themes/Nord/.config/fish/fish_plugins new file mode 100644 index 0000000..618bfd8 --- /dev/null +++ b/Themes/Nord/.config/fish/fish_plugins @@ -0,0 +1,6 @@ +jorgebucaran/fisher +jorgebucaran/nvm.fish +derekstavis/fish-neovim +catppuccin/fish +jorgebucaran/autopair.fish +joshmedeski/fish-lf-icons diff --git a/Themes/Nord/.config/fish/fish_variables b/Themes/Nord/.config/fish/fish_variables new file mode 100644 index 0000000..996cc2b --- /dev/null +++ b/Themes/Nord/.config/fish/fish_variables @@ -0,0 +1,54 @@ +# This file contains fish universal variable definitions. +# VERSION: 3.0 +SETUVAR --export LF_ICONS:\x2a\x2e7z\x3d\uf410\x3a\x2a\x2eaac\x3d\uf40f\x3a\x2a\x2eace\x3d\uf410\x3a\x2a\x2ealz\x3d\uf410\x3a\x2a\x2earc\x3d\uf410\x3a\x2a\x2earj\x3d\uf410\x3a\x2a\x2easf\x3d\uf40f\x3a\x2a\x2eatom\x3d\ue764\x3a\x2a\x2eau\x3d\uf40f\x3a\x2a\x2eavi\x3d\uf40f\x3a\x2a\x2ebash\x3d\uf489\x3a\x2a\x2ebash_history\x3d\uf489\x3a\x2a\x2ebashprofile\x3d\uf489\x3a\x2a\x2ebashrc\x3d\uf489\x3a\x2a\x2ebmp\x3d\uf40f\x3a\x2a\x2ebz2\x3d\uf410\x3a\x2a\x2ebz\x3d\uf410\x3a\x2a\x2ec\x3d\ue61e\x3a\x2a\x2ecab\x3d\uf410\x3a\x2a\x2ecc\x3d\ue61d\x3a\x2a\x2ecfg\x3d\ue615\x3a\x2a\x2ecgm\x3d\uf40f\x3a\x2a\x2eclang\x2dformat\x3d\ue615\x3a\x2a\x2eclj\x3d\ue768\x3a\x2a\x2ecmd\x3d\uf40d\x3a\x2a\x2ecoffee\x3d\ue751\x3a\x2a\x2ecpio\x3d\uf410\x3a\x2a\x2ecpp\x3d\ue61d\x3a\x2a\x2ecss\x3d\ue614\x3a\x2a\x2ed\x3d\ue7af\x3a\x2a\x2edart\x3d\ue798\x3a\x2a\x2edeb\x3d\uf410\x3a\x2a\x2edl\x3d\uf40f\x3a\x2a\x2eDS_Store\x3d\uf179\x3a\x2a\x2edwm\x3d\uf410\x3a\x2a\x2edz\x3d\uf410\x3a\x2a\x2eear\x3d\uf410\x3a\x2a\x2eemf\x3d\uf40f\x3a\x2a\x2eenv\x3d\uf444\x3a\x2a\x2eerl\x3d\ue7b1\x3a\x2a\x2eesd\x3d\uf410\x3a\x2a\x2eexs\x3d\ue62d\x3a\x2a\x2efish\x3d\uf489\x3a\x2a\x2eflac\x3d\uf40f\x3a\x2a\x2eflc\x3d\uf40f\x3a\x2a\x2efli\x3d\uf40f\x3a\x2a\x2eflv\x3d\uf40f\x3a\x2a\x2efs\x3d\ue7a7\x3a\x2a\x2egif\x3d\uf40f\x3a\x2a\x2egit\x3d\ue725\x3a\x2a\x2egitattributes\x3d\ue725\x3a\x2a\x2egitconfig\x3d\ue725\x3a\x2a\x2egithub\x3d\uf408\x3a\x2a\x2egitignore\x3d\ue725\x3a\x2a\x2egitignore_global\x3d\ue725\x3a\x2a\x2egitkeep\x3d\ue725\x3a\x2a\x2egitmodules\x3d\ue725\x3a\x2a\x2egl\x3d\uf40f\x3a\x2a\x2ego\x3d\ue627\x3a\x2a\x2egz\x3d\uf410\x3a\x2a\x2eh\x3d\ue61e\x3a\x2a\x2ehh\x3d\ue61d\x3a\x2a\x2ehidden\x3d\uf023\x3a\x2a\x2ehpp\x3d\ue61d\x3a\x2a\x2ehs\x3d\ue777\x3a\x2a\x2ehtml\x3d\ue60e\x3a\x2a\x2ehyper\x2ejs\x3d\uf489\x3a\x2a\x2ejar\x3d\uf410\x3a\x2a\x2ejava\x3d\ue738\x3a\x2a\x2ejl\x3d\ue624\x3a\x2a\x2ejpeg\x3d\uf40f\x3a\x2a\x2ejpg\x3d\uf40f\x3a\x2a\x2ejs\x3d\ue74e\x3a\x2a\x2ejson\x3d\ue60b\x3a\x2a\x2ejsx\x3d\ue7ba\x3a\x2a\x2elha\x3d\uf410\x3a\x2a\x2elrz\x3d\uf410\x3a\x2a\x2elua\x3d\ue620\x3a\x2a\x2elz4\x3d\uf410\x3a\x2a\x2elz\x3d\uf410\x3a\x2a\x2elzh\x3d\uf410\x3a\x2a\x2elzma\x3d\uf410\x3a\x2a\x2elzo\x3d\uf410\x3a\x2a\x2em2v\x3d\uf40f\x3a\x2a\x2em4a\x3d\uf40f\x3a\x2a\x2em4v\x3d\uf40f\x3a\x2a\x2emap\x3d\uf278\x3a\x2a\x2emd\x3d\ue609\x3a\x2a\x2emdx\x3d\ue609\x3a\x2a\x2emid\x3d\uf40f\x3a\x2a\x2emidi\x3d\uf40f\x3a\x2a\x2emjpeg\x3d\uf40f\x3a\x2a\x2emjpg\x3d\uf40f\x3a\x2a\x2emka\x3d\uf40f\x3a\x2a\x2emkv\x3d\uf40f\x3a\x2a\x2emng\x3d\uf40f\x3a\x2a\x2emov\x3d\uf40f\x3a\x2a\x2emp3\x3d\uf40f\x3a\x2a\x2emp4\x3d\uf40f\x3a\x2a\x2emp4v\x3d\uf40f\x3a\x2a\x2empc\x3d\uf40f\x3a\x2a\x2empeg\x3d\uf40f\x3a\x2a\x2empg\x3d\uf40f\x3a\x2a\x2enix\x3d\uf313\x3a\x2a\x2enpmignore\x3d\ue71e\x3a\x2a\x2enpmrc\x3d\ue71e\x3a\x2a\x2enuv\x3d\uf40f\x3a\x2a\x2envmrc\x3d\ue718\x3a\x2a\x2eoga\x3d\uf40f\x3a\x2a\x2eogg\x3d\uf40f\x3a\x2a\x2eogm\x3d\uf40f\x3a\x2a\x2eogv\x3d\uf40f\x3a\x2a\x2eogx\x3d\uf40f\x3a\x2a\x2eopus\x3d\uf40f\x3a\x2a\x2epbm\x3d\uf40f\x3a\x2a\x2epcx\x3d\uf40f\x3a\x2a\x2epdf\x3d\uf411\x3a\x2a\x2epgm\x3d\uf40f\x3a\x2a\x2ephp\x3d\ue608\x3a\x2a\x2epl\x3d\ue769\x3a\x2a\x2epng\x3d\uf40f\x3a\x2a\x2eppm\x3d\uf40f\x3a\x2a\x2epro\x3d\ue7a1\x3a\x2a\x2eps1\x3d\uf40d\x3a\x2a\x2epy\x3d\ue73c\x3a\x2a\x2eqt\x3d\uf40f\x3a\x2a\x2era\x3d\uf40f\x3a\x2a\x2erar\x3d\uf410\x3a\x2a\x2erb\x3d\ue739\x3a\x2a\x2erm\x3d\uf40f\x3a\x2a\x2ermvb\x3d\uf40f\x3a\x2a\x2erpm\x3d\uf410\x3a\x2a\x2ers\x3d\ue7a8\x3a\x2a\x2ervm\x3d\ue21e\x3a\x2a\x2erz\x3d\uf410\x3a\x2a\x2esar\x3d\uf410\x3a\x2a\x2escala\x3d\ue737\x3a\x2a\x2esh\x3d\uf40d\x3a\x2a\x2eskhdrc\x3d\uf179\x3a\x2a\x2esol\x3d\ufcb9\x3a\x2a\x2espx\x3d\uf40f\x3a\x2a\x2esvg\x3d\uf40f\x3a\x2a\x2esvgz\x3d\uf40f\x3a\x2a\x2eswm\x3d\uf410\x3a\x2a\x2et7z\x3d\uf410\x3a\x2a\x2etar\x3d\uf410\x3a\x2a\x2etaz\x3d\uf410\x3a\x2a\x2etbz2\x3d\uf410\x3a\x2a\x2etbz\x3d\uf410\x3a\x2a\x2etga\x3d\uf40f\x3a\x2a\x2etgz\x3d\uf410\x3a\x2a\x2etif\x3d\uf40f\x3a\x2a\x2etiff\x3d\uf40f\x3a\x2a\x2etlz\x3d\uf410\x3a\x2a\x2etmux\x2econf\x3d\uf489\x3a\x2a\x2etrash\x3d\uf1f8\x3a\x2a\x2ets\x3d\ue628\x3a\x2a\x2etsx\x3d\ue7ba\x3a\x2a\x2etxz\x3d\uf410\x3a\x2a\x2etz\x3d\uf410\x3a\x2a\x2etzo\x3d\uf410\x3a\x2a\x2etzst\x3d\uf410\x3a\x2a\x2evim\x3d\ue62b\x3a\x2a\x2evimrc\x3d\ue62b\x3a\x2a\x2evob\x3d\uf40f\x3a\x2a\x2evscode\x3d\ue70c\x3a\x2a\x2ewar\x3d\uf410\x3a\x2a\x2ewav\x3d\uf40f\x3a\x2a\x2ewebm\x3d\uf40f\x3a\x2a\x2ewim\x3d\uf410\x3a\x2a\x2exbm\x3d\uf40f\x3a\x2a\x2excf\x3d\uf40f\x3a\x2a\x2expm\x3d\uf40f\x3a\x2a\x2exspf\x3d\uf40f\x3a\x2a\x2exwd\x3d\uf40f\x3a\x2a\x2exz\x3d\uf410\x3a\x2a\x2eyabairc\x3d\uf179\x3a\x2a\x2eyaml\x3d\ufb44\x3a\x2a\x2eyarn\x2dintegrity\x3d\ue718\x3a\x2a\x2eyarnrc\x3d\ue718\x3a\x2a\x2eyml\x3d\ufb44\x3a\x2a\x2eyuv\x3d\uf40f\x3a\x2a\x2ez\x3d\uf410\x3a\x2a\x2ezip\x3d\uf410\x3a\x2a\x2ezoo\x3d\uf410\x3a\x2a\x2ezprofile\x3d\uf489\x3a\x2a\x2ezprofile\x3d\uf489\x3a\x2a\x2ezsh\x3d\uf489\x3a\x2a\x2ezsh_history\x3d\uf489\x3a\x2a\x2ezshrc\x3d\uf489\x3a\x2a\x2ezst\x3d\uf410\x3a\x2abin\x3d\ue5fc\x3a\x2aconfig\x3d\ue5fc\x3a\x2adocker\x2dcompose\x2eyml\x3d\uf308\x3a\x2adockerfile\x3d\uf308\x3a\x2agradle\x3d\ue70e\x3a\x2agruntfile\x2ecoffee\x3d\ue611\x3a\x2agruntfile\x2ejs\x3d\ue611\x3a\x2agruntfile\x2els\x3d\ue611\x3a\x2agulpfile\x2ecoffee\x3d\ue610\x3a\x2agulpfile\x2ejs\x3d\ue610\x3a\x2agulpfile\x2els\x3d\ue610\x3a\x2ainclude\x3d\ue5fc\x3a\x2alib\x3d\uf121\x3a\x2alocalized\x3d\uf179\x3a\x2anode_modules\x3d\ue718\x3a\x2apackage\x2ejson\x3d\ue718\x3a\x2arubydoc\x3d\ue73b\x3a\x2atsconfig\x2ejson\x3d\ue628\x3a\x2ayarn\x2elock\x3d\ue718\x3adi\x3d\uf115\x3adt\x3d\uf115\x3aex\x3d\uf427\x3afi\x3d\uf40e\x3aln\x3d\uf481\x3aor\x3d\uf481\x3aow\x3d\uf115\x3ast\x3d\uf115\x3atw\x3d\uf115\x3a +SETUVAR __fish_initialized:3400 +SETUVAR _fisher_catppuccin_2F_fish_files:\x7e/\x2econfig/fish/themes/Catppuccin\x20Frappe\x2etheme\x1e\x7e/\x2econfig/fish/themes/Catppuccin\x20Latte\x2etheme\x1e\x7e/\x2econfig/fish/themes/Catppuccin\x20Macchiato\x2etheme\x1e\x7e/\x2econfig/fish/themes/Catppuccin\x20Mocha\x2etheme +SETUVAR _fisher_jorgebucaran_2F_autopair_2E_fish_files:\x7e/\x2econfig/fish/functions/_autopair_backspace\x2efish\x1e\x7e/\x2econfig/fish/functions/_autopair_insert_left\x2efish\x1e\x7e/\x2econfig/fish/functions/_autopair_insert_right\x2efish\x1e\x7e/\x2econfig/fish/functions/_autopair_insert_same\x2efish\x1e\x7e/\x2econfig/fish/functions/_autopair_tab\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/autopair\x2efish +SETUVAR _fisher_jorgebucaran_2F_fisher_files:\x7e/\x2econfig/fish/functions/fisher\x2efish\x1e\x7e/\x2econfig/fish/completions/fisher\x2efish +SETUVAR _fisher_jorgebucaran_2F_nvm_2E_fish_files:\x7e/\x2econfig/fish/functions/_nvm_index_update\x2efish\x1e\x7e/\x2econfig/fish/functions/_nvm_list\x2efish\x1e\x7e/\x2econfig/fish/functions/_nvm_version_activate\x2efish\x1e\x7e/\x2econfig/fish/functions/_nvm_version_deactivate\x2efish\x1e\x7e/\x2econfig/fish/functions/nvm\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/nvm\x2efish\x1e\x7e/\x2econfig/fish/completions/nvm\x2efish +SETUVAR _fisher_joshmedeski_2F_fish_2D_lf_2D_icons_files:\x7e/\x2econfig/fish/conf\x2ed/lf\x2dicons\x2efish +SETUVAR _fisher_plugins:jorgebucaran/fisher\x1ejorgebucaran/nvm\x2efish\x1ederekstavis/fish\x2dneovim\x1ecatppuccin/fish\x1ejorgebucaran/autopair\x2efish\x1ejoshmedeski/fish\x2dlf\x2dicons +SETUVAR _fisher_upgraded_to_4_4:\x1d +SETUVAR fish_color_autosuggestion:6e738d +SETUVAR fish_color_cancel:ed8796 +SETUVAR fish_color_command:8aadf4 +SETUVAR fish_color_comment:8087a2 +SETUVAR fish_color_cwd:eed49f +SETUVAR fish_color_cwd_root:red +SETUVAR fish_color_end:f5a97f +SETUVAR fish_color_error:ed8796 +SETUVAR fish_color_escape:ee99a0 +SETUVAR fish_color_gray:6e738d +SETUVAR fish_color_history_current:\x2d\x2dbold +SETUVAR fish_color_host:8aadf4 +SETUVAR fish_color_host_remote:a6da95 +SETUVAR fish_color_keyword:ed8796 +SETUVAR fish_color_match:F28779 +SETUVAR fish_color_normal:cad3f5 +SETUVAR fish_color_operator:f5bde6 +SETUVAR fish_color_option:\x1d +SETUVAR fish_color_param:f0c6c6 +SETUVAR fish_color_quote:a6da95 +SETUVAR fish_color_redirection:f5bde6 +SETUVAR fish_color_search_match:\x2d\x2dbackground\x3d363a4f +SETUVAR fish_color_selection:\x2d\x2dbackground\x3d363a4f +SETUVAR fish_color_status:ed8796 +SETUVAR fish_color_user:8bd5ca +SETUVAR fish_color_valid_path:\x2d\x2dunderline +SETUVAR fish_key_bindings:fish_default_key_bindings +SETUVAR fish_pager_color_background:\x1d +SETUVAR fish_pager_color_completion:cad3f5 +SETUVAR fish_pager_color_description:6e738d +SETUVAR fish_pager_color_prefix:f5bde6 +SETUVAR fish_pager_color_progress:6e738d +SETUVAR fish_pager_color_secondary_background:\x1d +SETUVAR fish_pager_color_secondary_completion:\x1d +SETUVAR fish_pager_color_secondary_description:\x1d +SETUVAR fish_pager_color_secondary_prefix:\x1d +SETUVAR fish_pager_color_selected_background:\x1d +SETUVAR fish_pager_color_selected_completion:\x1d +SETUVAR fish_pager_color_selected_description:\x1d +SETUVAR fish_pager_color_selected_prefix:\x1d +SETUVAR fish_user_paths:/home/q/\x2elocal/bin\x1e/home/q/bin +SETUVAR nvm_data:/home/q/\x2elocal/share/nvm +SETUVAR nvm_mirror:https\x3a//nodejs\x2eorg/dist diff --git a/Themes/Nord/.config/fish/functions/_autopair_backspace.fish b/Themes/Nord/.config/fish/functions/_autopair_backspace.fish new file mode 100644 index 0000000..a43fa79 --- /dev/null +++ b/Themes/Nord/.config/fish/functions/_autopair_backspace.fish @@ -0,0 +1,9 @@ +function _autopair_backspace + set --local index (commandline --cursor) + set --local buffer (commandline) + + test $index -ge 1 && + contains -- (string sub --start=$index --length=2 -- "$buffer") $autopair_pairs && + commandline --function delete-char + commandline --function backward-delete-char +end diff --git a/Themes/Nord/.config/fish/functions/_autopair_insert_left.fish b/Themes/Nord/.config/fish/functions/_autopair_insert_left.fish new file mode 100644 index 0000000..f078e86 --- /dev/null +++ b/Themes/Nord/.config/fish/functions/_autopair_insert_left.fish @@ -0,0 +1,13 @@ +function _autopair_insert_left --argument-names left right + set --local buffer (commandline) + set --local before (commandline --cut-at-cursor) + + commandline --insert -- $left + + switch "$buffer" + case "$before"{," "\*,$autopair_right\*} + set --local index (commandline --cursor) + commandline --insert -- $right + commandline --cursor $index + end +end diff --git a/Themes/Nord/.config/fish/functions/_autopair_insert_right.fish b/Themes/Nord/.config/fish/functions/_autopair_insert_right.fish new file mode 100644 index 0000000..a0bd61c --- /dev/null +++ b/Themes/Nord/.config/fish/functions/_autopair_insert_right.fish @@ -0,0 +1,11 @@ +function _autopair_insert_right --argument-names key + set --local buffer (commandline) + set --local before (commandline --cut-at-cursor) + + switch "$buffer" + case "$before$key"\* + commandline --cursor (math (commandline --cursor) + 1) + case \* + commandline --insert -- $key + end +end diff --git a/Themes/Nord/.config/fish/functions/_autopair_insert_same.fish b/Themes/Nord/.config/fish/functions/_autopair_insert_same.fish new file mode 100644 index 0000000..27f971d --- /dev/null +++ b/Themes/Nord/.config/fish/functions/_autopair_insert_same.fish @@ -0,0 +1,20 @@ +function _autopair_insert_same --argument-names key + set --local buffer (commandline) + set --local index (commandline --cursor) + set --local next (string sub --start=(math $index + 1) --length=1 -- "$buffer") + + if test (math (count (string match --all --regex -- "$key" "$buffer")) % 2) = 0 + test $key = $next && commandline --cursor (math $index + 1) && return + + commandline --insert -- $key + + if test $index -lt 1 || + contains -- (string sub --start=$index --length=1 -- "$buffer") "" " " $autopair_left && + contains -- $next "" " " $autopair_right + commandline --insert -- $key + commandline --cursor (math $index + 1) + end + else + commandline --insert -- $key + end +end diff --git a/Themes/Nord/.config/fish/functions/_autopair_tab.fish b/Themes/Nord/.config/fish/functions/_autopair_tab.fish new file mode 100644 index 0000000..f2ab8eb --- /dev/null +++ b/Themes/Nord/.config/fish/functions/_autopair_tab.fish @@ -0,0 +1,7 @@ +function _autopair_tab + commandline --paging-mode && down-or-search && return + + string match --quiet --regex -- '\$[^\s]*"$' (commandline --current-token) && + commandline --function end-of-line --function backward-delete-char + commandline --function complete +end diff --git a/Themes/Nord/.config/fish/functions/_nvm_index_update.fish b/Themes/Nord/.config/fish/functions/_nvm_index_update.fish new file mode 100644 index 0000000..c1bbe28 --- /dev/null +++ b/Themes/Nord/.config/fish/functions/_nvm_index_update.fish @@ -0,0 +1,20 @@ +function _nvm_index_update + test ! -d $nvm_data && command mkdir -p $nvm_data + + set --local index $nvm_data/.index + + if not command curl --location --silent $nvm_mirror/index.tab >$index.temp + command rm -f $index.temp + echo "nvm: Can't update index, host unavailable: \"$nvm_mirror\"" >&2 + return 1 + end + + command awk -v OFS=\t ' + /v0.9.12/ { exit } # Unsupported + NR > 1 { + print $1 (NR == 2 ? " latest" : $10 != "-" ? " lts/" tolower($10) : "") + } + ' $index.temp >$index + + command rm -f $index.temp +end diff --git a/Themes/Nord/.config/fish/functions/_nvm_list.fish b/Themes/Nord/.config/fish/functions/_nvm_list.fish new file mode 100644 index 0000000..fb5ab0e --- /dev/null +++ b/Themes/Nord/.config/fish/functions/_nvm_list.fish @@ -0,0 +1,11 @@ +function _nvm_list + set --local versions $nvm_data/* + set --query versions[1] && + string match --entire --regex -- (string match --regex -- "v\d.+" $versions | + string escape --style=regex | + string join "|" + ) <$nvm_data/.index + + command --all node | + string match --quiet --invert --regex -- "^$nvm_data" && echo system +end diff --git a/Themes/Nord/.config/fish/functions/_nvm_version_activate.fish b/Themes/Nord/.config/fish/functions/_nvm_version_activate.fish new file mode 100644 index 0000000..f7dfef7 --- /dev/null +++ b/Themes/Nord/.config/fish/functions/_nvm_version_activate.fish @@ -0,0 +1,4 @@ +function _nvm_version_activate --argument-names ver + set --global --export nvm_current_version $ver + set --prepend PATH $nvm_data/$ver/bin +end diff --git a/Themes/Nord/.config/fish/functions/_nvm_version_deactivate.fish b/Themes/Nord/.config/fish/functions/_nvm_version_deactivate.fish new file mode 100644 index 0000000..24dd36e --- /dev/null +++ b/Themes/Nord/.config/fish/functions/_nvm_version_deactivate.fish @@ -0,0 +1,5 @@ +function _nvm_version_deactivate --argument-names ver + test "$nvm_current_version" = "$ver" && set --erase nvm_current_version + set --local index (contains --index -- $nvm_data/$ver/bin $PATH) && + set --erase PATH[$index] +end diff --git a/Themes/Nord/.config/fish/functions/fish_prompt.fish b/Themes/Nord/.config/fish/functions/fish_prompt.fish new file mode 100644 index 0000000..edefdb0 --- /dev/null +++ b/Themes/Nord/.config/fish/functions/fish_prompt.fish @@ -0,0 +1,56 @@ +function fish_prompt --description 'Write out the prompt' + set -l last_status $status + + prompt_login + + echo -n ':' + + # PWD + set_color $fish_color_cwd + echo -n (prompt_pwd) + set_color normal + + set -q __fish_git_prompt_showdirtystate + or set -g __fish_git_prompt_showdirtystate 1 + set -q __fish_git_prompt_showuntrackedfiles + or set -g __fish_git_prompt_showuntrackedfiles 1 + set -q __fish_git_prompt_showcolorhints + or set -g __fish_git_prompt_showcolorhints 1 + set -q __fish_git_prompt_color_untrackedfiles + or set -g __fish_git_prompt_color_untrackedfiles yellow + set -q __fish_git_prompt_char_untrackedfiles + or set -g __fish_git_prompt_char_untrackedfiles '?' + set -q __fish_git_prompt_color_invalidstate + or set -g __fish_git_prompt_color_invalidstate red + set -q __fish_git_prompt_char_invalidstate + or set -g __fish_git_prompt_char_invalidstate '!' + set -q __fish_git_prompt_color_dirtystate + or set -g __fish_git_prompt_color_dirtystate blue + set -q __fish_git_prompt_char_dirtystate + or set -g __fish_git_prompt_char_dirtystate '*' + set -q __fish_git_prompt_char_stagedstate + or set -g __fish_git_prompt_char_stagedstate '✚' + set -q __fish_git_prompt_color_cleanstate + or set -g __fish_git_prompt_color_cleanstate green + set -q __fish_git_prompt_char_cleanstate + or set -g __fish_git_prompt_char_cleanstate '✓' + set -q __fish_git_prompt_color_stagedstate + or set -g __fish_git_prompt_color_stagedstate yellow + set -q __fish_git_prompt_color_branch_dirty + or set -g __fish_git_prompt_color_branch_dirty red + set -q __fish_git_prompt_color_branch_staged + or set -g __fish_git_prompt_color_branch_staged yellow + set -q __fish_git_prompt_color_branch + or set -g __fish_git_prompt_color_branch green + set -q __fish_git_prompt_char_stateseparator + or set -g __fish_git_prompt_char_stateseparator '⚡' + fish_vcs_prompt '|%s' + echo + + if not test $last_status -eq 0 + set_color $fish_color_error + end + + echo -n '➤ ' + set_color normal +end diff --git a/Themes/Nord/.config/fish/functions/fisher.fish b/Themes/Nord/.config/fish/functions/fisher.fish new file mode 100644 index 0000000..a4666a1 --- /dev/null +++ b/Themes/Nord/.config/fish/functions/fisher.fish @@ -0,0 +1,240 @@ +function fisher --argument-names cmd --description "A plugin manager for Fish" + set --query fisher_path || set --local fisher_path $__fish_config_dir + set --local fisher_version 4.4.2 + set --local fish_plugins $__fish_config_dir/fish_plugins + + switch "$cmd" + case -v --version + echo "fisher, version $fisher_version" + case "" -h --help + echo "Usage: fisher install Install plugins" + echo " fisher remove Remove installed plugins" + echo " fisher update Update installed plugins" + echo " fisher update Update all installed plugins" + echo " fisher list [] List installed plugins matching regex" + echo "Options:" + echo " -v or --version Print version" + echo " -h or --help Print this help message" + echo "Variables:" + echo " \$fisher_path Plugin installation path. Default: $__fish_config_dir" | string replace --regex -- $HOME \~ + case ls list + string match --entire --regex -- "$argv[2]" $_fisher_plugins + case install update remove + isatty || read --local --null --array stdin && set --append argv $stdin + + set --local install_plugins + set --local update_plugins + set --local remove_plugins + set --local arg_plugins $argv[2..-1] + set --local old_plugins $_fisher_plugins + set --local new_plugins + + test -e $fish_plugins && set --local file_plugins (string match --regex -- '^[^\s]+$' <$fish_plugins) + + if ! set --query argv[2] + if test "$cmd" != update + echo "fisher: Not enough arguments for command: \"$cmd\"" >&2 && return 1 + else if ! set --query file_plugins + echo "fisher: \"$fish_plugins\" file not found: \"$cmd\"" >&2 && return 1 + end + set arg_plugins $file_plugins + end + + for plugin in $arg_plugins + set plugin (test -e "$plugin" && realpath $plugin || string lower -- $plugin) + contains -- "$plugin" $new_plugins || set --append new_plugins $plugin + end + + if set --query argv[2] + for plugin in $new_plugins + if contains -- "$plugin" $old_plugins + test "$cmd" = remove && + set --append remove_plugins $plugin || + set --append update_plugins $plugin + else if test "$cmd" = install + set --append install_plugins $plugin + else + echo "fisher: Plugin not installed: \"$plugin\"" >&2 && return 1 + end + end + else + for plugin in $new_plugins + contains -- "$plugin" $old_plugins && + set --append update_plugins $plugin || + set --append install_plugins $plugin + end + + for plugin in $old_plugins + contains -- "$plugin" $new_plugins || set --append remove_plugins $plugin + end + end + + set --local pid_list + set --local source_plugins + set --local fetch_plugins $update_plugins $install_plugins + set --local fish_path (status fish-path) + + echo (set_color --bold)fisher $cmd version $fisher_version(set_color normal) + + for plugin in $fetch_plugins + set --local source (command mktemp -d) + set --append source_plugins $source + + command mkdir -p $source/{completions,conf.d,themes,functions} + + $fish_path --command " + if test -e $plugin + command cp -Rf $plugin/* $source + else + set temp (command mktemp -d) + set repo (string split -- \@ $plugin) || set repo[2] HEAD + + if set path (string replace --regex -- '^(https://)?gitlab.com/' '' \$repo[1]) + set name (string split -- / \$path)[-1] + set url https://gitlab.com/\$path/-/archive/\$repo[2]/\$name-\$repo[2].tar.gz + else + set url https://api.github.com/repos/\$repo[1]/tarball/\$repo[2] + end + + echo Fetching (set_color --underline)\$url(set_color normal) + + if curl --silent -L \$url | tar -xzC \$temp -f - 2>/dev/null + command cp -Rf \$temp/*/* $source + else + echo fisher: Invalid plugin name or host unavailable: \\\"$plugin\\\" >&2 + command rm -rf $source + end + + command rm -rf \$temp + end + + set files $source/* && string match --quiet --regex -- .+\.fish\\\$ \$files + " & + + set --append pid_list (jobs --last --pid) + end + + wait $pid_list 2>/dev/null + + for plugin in $fetch_plugins + if set --local source $source_plugins[(contains --index -- "$plugin" $fetch_plugins)] && test ! -e $source + if set --local index (contains --index -- "$plugin" $install_plugins) + set --erase install_plugins[$index] + else + set --erase update_plugins[(contains --index -- "$plugin" $update_plugins)] + end + end + end + + for plugin in $update_plugins $remove_plugins + if set --local index (contains --index -- "$plugin" $_fisher_plugins) + set --local plugin_files_var _fisher_(string escape --style=var -- $plugin)_files + + if contains -- "$plugin" $remove_plugins + for name in (string replace --filter --regex -- '.+/conf\.d/([^/]+)\.fish$' '$1' $$plugin_files_var) + emit {$name}_uninstall + end + printf "%s\n" Removing\ (set_color red --bold)$plugin(set_color normal) " "$$plugin_files_var | string replace -- \~ ~ + set --erase _fisher_plugins[$index] + end + + command rm -rf (string replace -- \~ ~ $$plugin_files_var) + + functions --erase (string replace --filter --regex -- '.+/functions/([^/]+)\.fish$' '$1' $$plugin_files_var) + + for name in (string replace --filter --regex -- '.+/completions/([^/]+)\.fish$' '$1' $$plugin_files_var) + complete --erase --command $name + end + + set --erase $plugin_files_var + end + end + + if set --query update_plugins[1] || set --query install_plugins[1] + command mkdir -p $fisher_path/{functions,themes,conf.d,completions} + end + + for plugin in $update_plugins $install_plugins + set --local source $source_plugins[(contains --index -- "$plugin" $fetch_plugins)] + set --local files $source/{functions,themes,conf.d,completions}/* + + if set --local index (contains --index -- $plugin $install_plugins) + set --local user_files $fisher_path/{functions,themes,conf.d,completions}/* + set --local conflict_files + + for file in (string replace -- $source/ $fisher_path/ $files) + contains -- $file $user_files && set --append conflict_files $file + end + + if set --query conflict_files[1] && set --erase install_plugins[$index] + echo -s "fisher: Cannot install \"$plugin\": please remove or move conflicting files first:" \n" "$conflict_files >&2 + continue + end + end + + for file in (string replace -- $source/ "" $files) + command cp -Rf $source/$file $fisher_path/$file + end + + set --local plugin_files_var _fisher_(string escape --style=var -- $plugin)_files + + set --query files[1] && set --universal $plugin_files_var (string replace -- $source $fisher_path $files | string replace -- ~ \~) + + contains -- $plugin $_fisher_plugins || set --universal --append _fisher_plugins $plugin + contains -- $plugin $install_plugins && set --local event install || set --local event update + + printf "%s\n" Installing\ (set_color --bold)$plugin(set_color normal) " "$$plugin_files_var | string replace -- \~ ~ + + for file in (string match --regex -- '.+/[^/]+\.fish$' $$plugin_files_var | string replace -- \~ ~) + source $file + if set --local name (string replace --regex -- '.+conf\.d/([^/]+)\.fish$' '$1' $file) + emit {$name}_$event + end + end + end + + command rm -rf $source_plugins + + if set --query _fisher_plugins[1] + set --local commit_plugins + + for plugin in $file_plugins + contains -- (string lower -- $plugin) (string lower -- $_fisher_plugins) && set --append commit_plugins $plugin + end + + for plugin in $_fisher_plugins + contains -- (string lower -- $plugin) (string lower -- $commit_plugins) || set --append commit_plugins $plugin + end + + printf "%s\n" $commit_plugins >$fish_plugins + else + set --erase _fisher_plugins + command rm -f $fish_plugins + end + + set --local total (count $install_plugins) (count $update_plugins) (count $remove_plugins) + + test "$total" != "0 0 0" && echo (string join ", " ( + test $total[1] = 0 || echo "Installed $total[1]") ( + test $total[2] = 0 || echo "Updated $total[2]") ( + test $total[3] = 0 || echo "Removed $total[3]") + ) plugin/s + case \* + echo "fisher: Unknown command: \"$cmd\"" >&2 && return 1 + end +end + +if ! set --query _fisher_upgraded_to_4_4 + set --universal _fisher_upgraded_to_4_4 + if functions --query _fisher_list + set --query XDG_DATA_HOME[1] || set --local XDG_DATA_HOME ~/.local/share + command rm -rf $XDG_DATA_HOME/fisher + functions --erase _fisher_{list,plugin_parse} + fisher update >/dev/null 2>/dev/null + else + for var in (set --names | string match --entire --regex '^_fisher_.+_files$') + set $var (string replace -- ~ \~ $$var) + end + functions --erase _fisher_fish_postexec + end +end diff --git a/Themes/Nord/.config/fish/functions/nvm.fish b/Themes/Nord/.config/fish/functions/nvm.fish new file mode 100644 index 0000000..131a030 --- /dev/null +++ b/Themes/Nord/.config/fish/functions/nvm.fish @@ -0,0 +1,230 @@ +function nvm --description "Node version manager" + for silent in --silent -s + if set --local index (contains --index -- $silent $argv) + set --erase argv[$index] && break + end + set --erase silent + end + + set --local cmd $argv[1] + set --local ver $argv[2] + + if set --query silent && ! set --query cmd[1] + echo "nvm: Version number not specified (see nvm -h for usage)" >&2 + return 1 + end + + if ! set --query ver[1] && contains -- "$cmd" install use + for file in .nvmrc .node-version + set file (_nvm_find_up $PWD $file) && read ver <$file && break + end + + if ! set --query ver[1] + echo "nvm: Invalid version or missing \".nvmrc\" file" >&2 + return 1 + end + end + + set --local their_version $ver + + switch "$cmd" + case -v --version + echo "nvm, version 2.2.11" + case "" -h --help + echo "Usage: nvm install Download and activate the specified Node version" + echo " nvm install Install version from nearest .nvmrc file" + echo " nvm use Activate a version in the current shell" + echo " nvm use Activate version from nearest .nvmrc file" + echo " nvm list List installed versions" + echo " nvm list-remote List versions available to install" + echo " nvm list-remote List versions matching a given regular expression" + echo " nvm current Print the currently-active version" + echo " nvm uninstall Uninstall a version" + echo "Options:" + echo " -s or --silent Suppress standard output" + echo " -v or --version Print version" + echo " -h or --help Print this help message" + echo "Variables:" + echo " nvm_arch Override architecture, e.g. x64-musl" + echo " nvm_mirror Use a mirror of the Node binaries" + echo " nvm_default_version Set the default version for new shells" + echo " nvm_default_packages Install a list of packages every time you install a Node version" + case install + _nvm_index_update + + string match --entire --regex -- (_nvm_version_match $ver) <$nvm_data/.index | read ver alias + + if ! set --query ver[1] + echo "nvm: Invalid version number or alias: \"$their_version\"" >&2 + return 1 + end + + if test ! -e $nvm_data/$ver + set --local os (command uname -s | string lower) + set --local ext tar.gz + set --local arch (command uname -m) + + switch $os + case aix + set arch ppc64 + case sunos + case linux + case darwin + case {MSYS_NT,MINGW\*_NT}\* + set os win + set ext zip + case \* + echo "nvm: Unsupported operating system: \"$os\"" >&2 + return 1 + end + + switch $arch + case i\*86 + set arch x86 + case x86_64 + set arch x64 + case arm64 + string match --regex --quiet "v(?\d+)" $ver + if test "$os" = darwin -a $major -lt 16 + set arch x64 + end + case armv6 armv6l + set arch armv6l + case armv7 armv7l + set arch armv7l + case armv8 armv8l aarch64 + set arch arm64 + end + + set --query nvm_arch && set arch $nvm_arch + + set --local dir "node-$ver-$os-$arch" + set --local url $nvm_mirror/$ver/$dir.$ext + + command mkdir -p $nvm_data/$ver + + if ! set --query silent + echo -e "Installing Node \x1b[1m$ver\x1b[22m $alias" + echo -e "Fetching \x1b[4m$url\x1b[24m\x1b[7m" + end + + if ! command curl $silent --progress-bar --location $url | + command tar --extract --gzip --directory $nvm_data/$ver 2>/dev/null + command rm -rf $nvm_data/$ver + echo -e "\033[F\33[2K\x1b[0mnvm: Invalid mirror or host unavailable: \"$url\"" >&2 + return 1 + end + + set --query silent || echo -en "\033[F\33[2K\x1b[0m" + + if test "$os" = win + command mv $nvm_data/$ver/$dir $nvm_data/$ver/bin + else + command mv $nvm_data/$ver/$dir/* $nvm_data/$ver + command rm -rf $nvm_data/$ver/$dir + end + end + + if test $ver != "$nvm_current_version" + set --query nvm_current_version && _nvm_version_deactivate $nvm_current_version + _nvm_version_activate $ver + + set --query nvm_default_packages[1] && npm install --global $silent $nvm_default_packages + end + + set --query silent || printf "Now using Node %s (npm %s) %s\n" (_nvm_node_info) + case use + test $ver = default && set ver $nvm_default_version + _nvm_list | string match --entire --regex -- (_nvm_version_match $ver) | read ver __ + + if ! set --query ver[1] + echo "nvm: Can't use Node \"$their_version\", version must be installed first" >&2 + return 1 + end + + if test $ver != "$nvm_current_version" + set --query nvm_current_version && _nvm_version_deactivate $nvm_current_version + test $ver != system && _nvm_version_activate $ver + end + + set --query silent || printf "Now using Node %s (npm %s) %s\n" (_nvm_node_info) + case uninstall + if test -z "$ver" + echo "nvm: Not enough arguments for command: \"$cmd\"" >&2 + return 1 + end + + test $ver = default && test ! -z "$nvm_default_version" && set ver $nvm_default_version + + _nvm_list | string match --entire --regex -- (_nvm_version_match $ver) | read ver __ + + if ! set -q ver[1] + echo "nvm: Node version not installed or invalid: \"$their_version\"" >&2 + return 1 + end + + set --query silent || printf "Uninstalling Node %s %s\n" $ver (string replace ~ \~ "$nvm_data/$ver/bin/node") + + _nvm_version_deactivate $ver + + command rm -rf $nvm_data/$ver + case current + _nvm_current + case ls list + _nvm_list | _nvm_list_format (_nvm_current) $argv[2] + case lsr {ls,list}-remote + _nvm_index_update || return + _nvm_list | command awk ' + FILENAME == "-" && (is_local[$1] = FNR == NR) { next } { + print $0 (is_local[$1] ? " ✓" : "") + } + ' - $nvm_data/.index | _nvm_list_format (_nvm_current) $argv[2] + case \* + echo "nvm: Unknown command or option: \"$cmd\" (see nvm -h for usage)" >&2 + return 1 + end +end + +function _nvm_find_up --argument-names path file + test -e "$path/$file" && echo $path/$file || begin + test ! -z "$path" || return + _nvm_find_up (string replace --regex -- '/[^/]*$' "" $path) $file + end +end + +function _nvm_version_match --argument-names ver + string replace --regex -- '^v?(\d+|\d+\.\d+)$' 'v$1.' $ver | + string replace --filter --regex -- '^v?(\d+)' 'v$1' | + string escape --style=regex || + string lower '\b'$ver'(?:/\w+)?$' +end + +function _nvm_list_format --argument-names current regex + command awk -v current="$current" -v regex="$regex" ' + $0 ~ regex { + aliases[versions[i++] = $1] = $2 " " $3 + pad = (n = length($1)) > pad ? n : pad + } + END { + if (!i) exit 1 + while (i--) + printf((current == versions[i] ? " ▶ " : " ") "%"pad"s %s\n", + versions[i], aliases[versions[i]]) + } + ' +end + +function _nvm_current + command --search --quiet node || return + set --query nvm_current_version && echo $nvm_current_version || echo system +end + +function _nvm_node_info + set --local npm_path (string replace bin/npm-cli.js "" (realpath (command --search npm))) + test -f $npm_path/package.json || set --local npm_version_default (command npm --version) + command node --eval " + console.log(process.version) + console.log('$npm_version_default' ? '$npm_version_default': require('$npm_path/package.json').version) + console.log(process.execPath.replace(require('os').homedir(), '~')) + " +end diff --git a/Themes/Nord/.config/foot/foot.ini b/Themes/Nord/.config/foot/foot.ini new file mode 100644 index 0000000..cd1e752 --- /dev/null +++ b/Themes/Nord/.config/foot/foot.ini @@ -0,0 +1,232 @@ +# -*- conf -*- + +# shell=$SHELL (if set, otherwise user's default shell from /etc/passwd) +# term=foot (or xterm-256color if built with -Dterminfo=disabled) +# login-shell=no + +# app-id=foot +# title=foot +# locked-title=no + +font=JetBrainsMono Nerd Font Mono:size=13 + +# font=monospace:size=8 +# font-bold= +# font-italic= +# font-bold-italic= +# line-height= +# letter-spacing=0 +# horizontal-letter-offset=0 +# vertical-letter-offset=0 +# underline-offset= +# box-drawings-uses-font-glyphs=no +# dpi-aware=auto +# initial-window-size-pixels=700x500 # Or, +# initial-window-size-chars= +# initial-window-mode=windowed +# pad=2x2 # optionally append 'center' +# resize-delay-ms=100 + +# notify=notify-send -a ${app-id} -i ${app-id} ${title} ${body} + +# bold-text-in-bright=no +# word-delimiters=,│`|:"'()[]{}<> +# selection-target=primary +# workers= + +[environment] +# name=value + +[bell] +# urgent=no +# notify=no +# command= +# command-focused=no + +[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 +# beam-thickness=1.5 +# underline-thickness= + +[mouse] +hide-when-typing=no +alternate-scroll-mode=yes + +[colors] + +alpha = 0.95 + +foreground = d8dee9 +background = 2e3440 + +# selection-foreground = d8dee9 +# selection-background = 4c566a + +regular0 = 3b4252 +regular1 = bf616a +regular2 = a3be8c +regular3 = ebcb8b +regular4 = 81a1c1 +regular5 = b48ead +regular6 = 88c0d0 +regular7 = e5e9f0 + +bright0 = 4c566a +bright1 = bf616a +bright2 = a3be8c +bright3 = ebcb8b +bright4 = 81a1c1 +bright5 = b48ead +bright6 = 8fbcbb +bright7 = eceff4 + +dim0 = 373e4d +dim1 = 94545d +dim2 = 809575 +dim3 = b29e75 +dim4 = 68809a +dim5 = 8c738c +dim6 = 6d96a5 +dim7 = aeb3bb + + + + + +#background=141b1e +#foreground=dadada +#regular0=232a2d +#regular1=e57474 +#regular2=8ccf7e +#regular3=e5c76b +#regular4=67b0e8 +#regular5=c47fd5 +#regular6=6cbfbf +#regular7=b3b9b8 + +#bright0=2d3437 +#bright1=ef7e7e +#bright2=96d988 +#bright3=f4d67a +#bright4=71baf2 +#bright5=ce89df +#bright6=67cbe7 +#bright7=bdc3c2 + +## 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-typing=no +# 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 +# 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 +# show-urls-launch=Control+Shift+u +# show-urls-copy=none +# show-urls-persistent=none +# prompt-prev=Control+Shift+z +# prompt-next=Control+Shift+x +# unicode-input=none +# 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-to-word-boundary=Control+w +# extend-to-next-whitespace=Control+Shift+w +# clipboard-paste=Control+v Control+Shift+v Control+y XF86Paste +# primary-paste=Shift+Insert +# unicode-input=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] +# 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-row=BTN_LEFT-3 + +# vim: ft=dosini diff --git a/Themes/Nord/.config/hypr/hyprland.conf b/Themes/Nord/.config/hypr/hyprland.conf new file mode 100644 index 0000000..300edd0 --- /dev/null +++ b/Themes/Nord/.config/hypr/hyprland.conf @@ -0,0 +1,207 @@ +# This is an example Hyprland config file. +# +# Refer to the wiki for more information. + +# +# Please note not all available settings / options are set here. +# For a full list, see the wiki +# + +# See https://wiki.hyprland.org/Configuring/Monitors/ +monitor=,1920x1080,auto,1 + +# See https://wiki.hyprland.org/Configuring/Keywords/ for more + +# Execute your favorite apps at launch +# exec-once = waybar & hyprpaper & firefox + + +exec-once = swww init +exec-once = waybar +exec-once = light -S 50 +exec-once = kotatogram-desktop +exec-once = dunst -config ~/.config/dunst/dunstrc +exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 & +exec-once = /usr/bin/chromium-browser-stable --disable-gpu --disable-software-rasterizer +exec-once = $HOME/bin/battery-daemon & + +# Source a file (multi-file configs) +# source = ~/.config/hypr/myColors.conf + +# For all categories, see https://wiki.hyprland.org/Configuring/Variables/ +input { + kb_layout = us,ru,ua + kb_variant = + kb_model = + kb_options = grp:caps_toggle + kb_rules = + + follow_mouse = 1 + + touchpad { + natural_scroll = no + } + + sensitivity = 0 # -1.0 - 1.0, 0 means no modification. +} + +general { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + gaps_in = 5 + gaps_out = 10 + border_size = 3 + + col.active_border = rgb(88c0d0) 45deg + col.inactive_border = rgb(2e3440) + + layout = dwindle +} + +decoration { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + rounding = 10 + blur: 3 + + drop_shadow = yes + shadow_range = 4 + shadow_render_power = 3 + col.shadow = rgba(1a1a1aee) + + dim_inactive = 1 + dim_strength = 0.4 +} + +animations { + enabled = yes + + # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more + + bezier = myBezier, 0.05, 0.9, 0.1, 1.05 + + animation = windows, 1, 7, myBezier + animation = windowsOut, 1, 7, default, popin 80% + animation = border, 1, 10, default + animation = fade, 1, 7, default + animation = workspaces, 1, 6, default +} + +dwindle { + # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more + pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below + preserve_split = yes # you probably want this +} + +master { + # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more + new_is_master = true +} + +gestures { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + workspace_swipe = off +} + +# Example per-device config +# See https://wiki.hyprland.org/Configuring/Keywords/#executing for more +device:epic mouse V1 { + sensitivity = -0.5 +} + +# Example windowrule v1 +# windowrule = float, ^(kitty)$ +# Example windowrule v2 +# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ +# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more + +windowrulev2 = float,class:^(xdg-desktop-portal-gtk)$ +windowrulev2 = move 196 127,class:^(xdg-desktop-portal-gtk)$ +windowrulev2 = size 791 667,class:^(xdg-desktop-portal-gtk)$ + + +windowrulev2 = float,title:^(Kotatogram)$ +windowrulev2 = workspace 2 silent,title:^(Kotatogram)$ +windowrulev2 = size 641 1022,title:^(Kotatogram)$ +windowrulev2 = move 25 45,title:^(Kotatogram)$ + + +windowrulev2 = workspace 1 silent,title:^(chromium-browser)$ + +$mainMod = SUPER + +bind = $mainMod SHIFT, S,exec, bin/w-screenrecord + +# bindl=,switch:[switch name],exec,$HOME/bin/lockscreen + + +bind = $mainMod, C, killactive, +bind = $mainMod, X, exit, +bind = $mainMod, F, fullscreen, 2 +bind = $mainMod, S, togglefloating, +bind = $mainMod, P, pseudo, # dwindle +bind = $mainMod ALT, J, togglesplit, # dwindle + +# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more + +# Example volume button that allows press and hold +binde= ,F2, exec, pactl set-sink-volume @DEFAULT_SINK@ -1% +binde= ,F3, exec, pactl set-sink-volume @DEFAULT_SINK@ +1% + +bind = $mainMod, b, exec, foot -e bluetuith +bind = $mainMod, RETURN, exec, foot +bind = $mainMod, N, exec, foot -e lf +bind = $mainMod, M, exec, foot -e cmus +bind = $mainMod, d, exec, wofi --show drun -I -i +bind = ,Print, exec, makescreenshot +# bind = $mainMod, SHIFT, L, exec, lockscreen +bind = ALT, L, exec, lockscreen + +# not forget install xdg-desktop-portal 1.14.6 +# Modify file /usr/share/xdg-desktop-portal/portals/{}.portal UserIn=sway;wlroots + +# Move focus with mainMod + kjlh +bind = $mainMod, k, movefocus,u +bind = $mainMod, j, movefocus,d +bind = $mainMod, l, movefocus,r +bind = $mainMod, h, movefocus,l + +# 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, movetoworkspace, 1 +bind = $mainMod SHIFT, 2, movetoworkspace, 2 +bind = $mainMod SHIFT, 3, movetoworkspace, 3 +bind = $mainMod SHIFT, 4, movetoworkspace, 4 +bind = $mainMod SHIFT, 5, movetoworkspace, 5 +bind = $mainMod SHIFT, 6, movetoworkspace, 6 +bind = $mainMod SHIFT, 7, movetoworkspace, 7 +bind = $mainMod SHIFT, 8, movetoworkspace, 8 +bind = $mainMod SHIFT, 9, movetoworkspace, 9 +bind = $mainMod SHIFT, 0, movetoworkspace, 10 + +# Scroll through existing workspaces with mainMod + scroll +bind = $mainMod, mouse_down, workspace, e+1 +bind = $mainMod, mouse_up, workspace, e-1 + +# Move windows +bind = $mainMod SHIFT,k, movewindow, u +bind = $mainMod SHIFT,j, movewindow, d +bind = $mainMod SHIFT,l, movewindow, r +bind = $mainMod SHIFT,h, movewindow, l + +# Move/resize windows with mainMod + LMB/RMB and dragging +bindm = $mainMod, mouse:272, movewindow +bindm = $mainMod, mouse:273, resizewindow + +misc { + disable_hyprland_logo = true +} diff --git a/Themes/Nord/.config/hypr/scripts/kb_hypr b/Themes/Nord/.config/hypr/scripts/kb_hypr new file mode 100755 index 0000000..6f5d9f1 Binary files /dev/null and b/Themes/Nord/.config/hypr/scripts/kb_hypr differ diff --git a/Themes/Nord/.config/lf/colors b/Themes/Nord/.config/lf/colors new file mode 100644 index 0000000..b65d3f0 --- /dev/null +++ b/Themes/Nord/.config/lf/colors @@ -0,0 +1,174 @@ +# vim:ft=dircolors +# (This is not a dircolors file but it helps to highlight colors and comments) + +# default values from dircolors +# (entries with a leading # are not implemented in lf) +# #no 00 # NORMAL +# fi 00 # FILE +# #rs 0 # RESET +# di 01;34 # DIR +# ln 01;36 # LINK +# #mh 00 # MULTIHARDLINK +# pi 40;33 # FIFO +# so 01;35 # SOCK +# #do 01;35 # DOOR +# bd 40;33;01 # BLK +# cd 40;33;01 # CHR +# or 40;31;01 # ORPHAN +# #mi 00 # MISSING +# su 37;41 # SETUID +# sg 30;43 # SETGID +# #ca 30;41 # CAPABILITY +# tw 30;42 # STICKY_OTHER_WRITABLE +# ow 34;42 # OTHER_WRITABLE +# st 37;44 # STICKY +# ex 01;32 # EXEC + +# default values from lf (with matching order) +# ln 01;36 # LINK +# or 31;01 # ORPHAN +# tw 01;34 # STICKY_OTHER_WRITABLE +# ow 01;34 # OTHER_WRITABLE +# st 01;34 # STICKY +# di 01;34 # DIR +# pi 33 # FIFO +# so 01;35 # SOCK +# bd 33;01 # BLK +# cd 33;01 # CHR +# su 01;32 # SETUID +# sg 01;32 # SETGID +# ex 01;32 # EXEC +# fi 00 # FILE + +# file types (with matching order) +ln 01;36 # LINK +or 31;01 # ORPHAN +tw 34 # STICKY_OTHER_WRITABLE +ow 34 # OTHER_WRITABLE +st 01;34 # STICKY +di 01;34 # DIR +pi 33 # FIFO +so 01;35 # SOCK +bd 33;01 # BLK +cd 33;01 # CHR +su 01;32 # SETUID +sg 01;32 # SETGID +ex 01;32 # EXEC +fi 00 # FILE + +# archives or compressed (dircolors defaults) +*.tar 01;31 +*.tgz 01;31 +*.arc 01;31 +*.arj 01;31 +*.taz 01;31 +*.lha 01;31 +*.lz4 01;31 +*.lzh 01;31 +*.lzma 01;31 +*.tlz 01;31 +*.txz 01;31 +*.tzo 01;31 +*.t7z 01;31 +*.zip 01;31 +*.z 01;31 +*.dz 01;31 +*.gz 01;31 +*.lrz 01;31 +*.lz 01;31 +*.lzo 01;31 +*.xz 01;31 +*.zst 01;31 +*.tzst 01;31 +*.bz2 01;31 +*.bz 01;31 +*.tbz 01;31 +*.tbz2 01;31 +*.tz 01;31 +*.deb 01;31 +*.rpm 01;31 +*.jar 01;31 +*.war 01;31 +*.ear 01;31 +*.sar 01;31 +*.rar 01;31 +*.alz 01;31 +*.ace 01;31 +*.zoo 01;31 +*.cpio 01;31 +*.7z 01;31 +*.rz 01;31 +*.cab 01;31 +*.wim 01;31 +*.swm 01;31 +*.dwm 01;31 +*.esd 01;31 + +# image formats (dircolors defaults) +*.jpg 01;35 +*.jpeg 01;35 +*.mjpg 01;35 +*.mjpeg 01;35 +*.gif 01;35 +*.bmp 01;35 +*.pbm 01;35 +*.pgm 01;35 +*.ppm 01;35 +*.tga 01;35 +*.xbm 01;35 +*.xpm 01;35 +*.tif 01;35 +*.tiff 01;35 +*.png 01;35 +*.svg 01;35 +*.svgz 01;35 +*.mng 01;35 +*.pcx 01;35 +*.mov 01;35 +*.mpg 01;35 +*.mpeg 01;35 +*.m2v 01;35 +*.mkv 01;35 +*.webm 01;35 +*.ogm 01;35 +*.mp4 01;35 +*.m4v 01;35 +*.mp4v 01;35 +*.vob 01;35 +*.qt 01;35 +*.nuv 01;35 +*.wmv 01;35 +*.asf 01;35 +*.rm 01;35 +*.rmvb 01;35 +*.flc 01;35 +*.avi 01;35 +*.fli 01;35 +*.flv 01;35 +*.gl 01;35 +*.dl 01;35 +*.xcf 01;35 +*.xwd 01;35 +*.yuv 01;35 +*.cgm 01;35 +*.emf 01;35 +*.ogv 01;35 +*.ogx 01;35 + +# audio formats (dircolors defaults) +*.aac 00;36 +*.au 00;36 +*.flac 00;36 +*.m4a 00;36 +*.mid 00;36 +*.midi 00;36 +*.mka 00;36 +*.mp3 00;36 +*.mpc 00;36 +*.ogg 00;36 +*.ra 00;36 +*.wav 00;36 +*.oga 00;36 +*.opus 00;36 +*.spx 00;36 +*.xspf 00;36 diff --git a/Themes/Nord/.config/lf/icons b/Themes/Nord/.config/lf/icons new file mode 100644 index 0000000..8039c93 --- /dev/null +++ b/Themes/Nord/.config/lf/icons @@ -0,0 +1,357 @@ +# vim:ft=conf + +# These examples require Nerd Fonts or a compatible font to be used. +# See https://www.nerdfonts.com for more information. + +# default values from lf (with matching order) +# ln l # LINK +# or l # ORPHAN +# tw t # STICKY_OTHER_WRITABLE +# ow d # OTHER_WRITABLE +# st t # STICKY +# di d # DIR +# pi p # FIFO +# so s # SOCK +# bd b # BLK +# cd c # CHR +# su u # SETUID +# sg g # SETGID +# ex x # EXEC +# fi - # FILE + +# file types (with matching order) +ln  # LINK +or  # ORPHAN +tw t # STICKY_OTHER_WRITABLE +ow  # OTHER_WRITABLE +st t # STICKY +di  # DIR +pi p # FIFO +so s # SOCK +bd b # BLK +cd c # CHR +su u # SETUID +sg g # SETGID +ex  # EXEC +fi  # FILE + +# file extensions (vim-devicons) +*.styl  +*.sass  +*.scss  +*.htm  +*.html  +*.slim  +*.haml  +*.ejs  +*.css  +*.less  +*.md  +*.mdx  +*.markdown  +*.rmd  +*.json  +*.webmanifest  +*.js  +*.mjs  +*.jsx  +*.rb  +*.gemspec  +*.rake  +*.php  +*.py  +*.pyc  +*.pyo  +*.pyd  +*.coffee  +*.mustache  +*.hbs  +*.conf  +*.ini  +*.yml  +*.yaml  +*.toml  +*.bat  +*.mk  +*.jpg  +*.jpeg  +*.bmp  +*.png  +*.webp  +*.gif  +*.ico  +*.twig  +*.cpp  +*.c++  +*.cxx  +*.cc  +*.cp  +*.c  +*.cs  +*.h  +*.hh  +*.hpp  +*.hxx  +*.hs  +*.lhs  +*.nix  +*.lua  +*.java  +*.sh  +*.fish  +*.bash  +*.zsh  +*.ksh  +*.csh  +*.awk  +*.ps1  +*.ml λ +*.mli λ +*.diff  +*.db  +*.sql  +*.dump  +*.clj  +*.cljc  +*.cljs  +*.edn  +*.scala  +*.go  +*.dart  +*.xul  +*.sln  +*.suo  +*.pl  +*.pm  +*.t  +*.rss  +'*.f#'  +*.fsscript  +*.fsx  +*.fs  +*.fsi  +*.rs  +*.rlib  +*.d  +*.erl  +*.hrl  +*.ex  +*.exs  +*.eex  +*.leex  +*.heex  +*.vim  +*.ai  +*.psd  +*.psb  +*.ts  +*.tsx  +*.jl  +*.pp  +*.vue  +*.elm  +*.swift  +*.xcplayground  +*.tex ﭨ +*.r ﳒ +*.rproj 鉶 +*.sol ﲹ +*.pem  + +# file names (vim-devicons) (case-insensitive not supported in lf) +*gruntfile.coffee  +*gruntfile.js  +*gruntfile.ls  +*gulpfile.coffee  +*gulpfile.js  +*gulpfile.ls  +*mix.lock  +*dropbox  +*.ds_store  +*.gitconfig  +*.gitignore  +*.gitattributes  +*.gitlab-ci.yml  +*.bashrc  +*.zshrc  +*.zshenv  +*.zprofile  +*.vimrc  +*.gvimrc  +*_vimrc  +*_gvimrc  +*.bashprofile  +*favicon.ico  +*license  +*node_modules  +*react.jsx  +*procfile  +*dockerfile  +*docker-compose.yml  +*rakefile  +*config.ru  +*gemfile  +*makefile  +*cmakelists.txt  +*robots.txt ﮧ + +# file names (case-sensitive adaptations) +*Gruntfile.coffee  +*Gruntfile.js  +*Gruntfile.ls  +*Gulpfile.coffee  +*Gulpfile.js  +*Gulpfile.ls  +*Dropbox  +*.DS_Store  +*LICENSE  +*React.jsx  +*Procfile  +*Dockerfile  +*Docker-compose.yml  +*Rakefile  +*Gemfile  +*Makefile  +*CMakeLists.txt  + +# file patterns (vim-devicons) (patterns not supported in lf) +# .*jquery.*\.js$  +# .*angular.*\.js$  +# .*backbone.*\.js$  +# .*require.*\.js$  +# .*materialize.*\.js$  +# .*materialize.*\.css$  +# .*mootools.*\.js$  +# .*vimrc.*  +# Vagrantfile$  + +# file patterns (file name adaptations) +*jquery.min.js  +*angular.min.js  +*backbone.min.js  +*require.min.js  +*materialize.min.js  +*materialize.min.css  +*mootools.min.js  +*vimrc  +Vagrantfile  + +# archives or compressed (extensions from dircolors defaults) +*.tar  +*.tgz  +*.arc  +*.arj  +*.taz  +*.lha  +*.lz4  +*.lzh  +*.lzma  +*.tlz  +*.txz  +*.tzo  +*.t7z  +*.zip  +*.z  +*.dz  +*.gz  +*.lrz  +*.lz  +*.lzo  +*.xz  +*.zst  +*.tzst  +*.bz2  +*.bz  +*.tbz  +*.tbz2  +*.tz  +*.deb  +*.rpm  +*.jar  +*.war  +*.ear  +*.sar  +*.rar  +*.alz  +*.ace  +*.zoo  +*.cpio  +*.7z  +*.rz  +*.cab  +*.wim  +*.swm  +*.dwm  +*.esd  + +# image formats (extensions from dircolors defaults) +*.jpg  +*.jpeg  +*.mjpg  +*.mjpeg  +*.gif  +*.bmp  +*.pbm  +*.pgm  +*.ppm  +*.tga  +*.xbm  +*.xpm  +*.tif  +*.tiff  +*.png  +*.svg  +*.svgz  +*.mng  +*.pcx  +*.mov  +*.mpg  +*.mpeg  +*.m2v  +*.mkv  +*.webm  +*.ogm  +*.mp4  +*.m4v  +*.mp4v  +*.vob  +*.qt  +*.nuv  +*.wmv  +*.asf  +*.rm  +*.rmvb  +*.flc  +*.avi  +*.fli  +*.flv  +*.gl  +*.dl  +*.xcf  +*.xwd  +*.yuv  +*.cgm  +*.emf  +*.ogv  +*.ogx  + +# audio formats (extensions from dircolors defaults) +*.aac  +*.au  +*.flac  +*.m4a  +*.mid  +*.midi  +*.mka  +*.mp3  +*.mpc  +*.ogg  +*.ra  +*.wav  +*.oga  +*.opus  +*.spx  +*.xspf  + +# other formats +*.pdf  diff --git a/Themes/Nord/.config/lf/lfrc b/Themes/Nord/.config/lf/lfrc new file mode 100644 index 0000000..1c14a61 --- /dev/null +++ b/Themes/Nord/.config/lf/lfrc @@ -0,0 +1,228 @@ +set drawbox +set icons true +set ignorecase true + +# interpreter for shell commands +set shell sh +set shellopts '-eu' + +set previewer ctpv +set cleaner ctpvclear +&ctpv -d -s $id >> ~/temp/lf_ctpv.log +&ctpvquit $id >> ~/temp/lf_ctpvquit.log + +cmd edit-config ${{ + $EDITOR ~/.config/lf/lfrc + lf -remote "send $id source ~/.config/lf/lfrc" +}} + +cmd open &{{ + case $(file --mime-type "$f" -bL) in + text/*|application/json) lf -remote "send $id \$$EDITOR \"$fx\"";; + image/*) swayimg -f "$f";; + audio/*) lf -remote "send $id \$mpv --audio-display=no \"$fx\" && clear";; + video/*) mpv "$f";; + application/pdf|application/epub) zathura "$f";; + *) xdg-open "$f";; + esac +}} + +cmd setwallpaper %swww img "$f" --transition-type wipe --transition-fps 60 + +cmd fzf_jump ${{ + res="$(find . | fzf --reverse --header='Jump to location' | sed 's/\\/\\\\/g;s/"/\\"/g')" + if [ -d "$res" ] ; then + cmd="cd" + elif [ -f "$res" ] ; then + cmd="select" + else + exit 0 + fi + lf -remote "send $id $cmd \"$res\"" +}} + +cmd rg_search ${{ + res="$( \ + RG_PREFIX="rg --column --line-number --no-heading --color=always \ + --smart-case " + FZF_DEFAULT_COMMAND="$RG_PREFIX ''" \ + fzf --bind "change:reload:$RG_PREFIX {q} || true" \ + --ansi --layout=reverse --header 'Search in files' \ + | cut -d':' -f1 + )" + [ ! -z "$res" ] && lf -remote "send $id select \"$res\"" +}} + +cmd unarchive ${{ + set -f + case $f in + *.tar.bz|*.tar.bz2|*.tbz|*.tbz2) tar xjvf "$f";; + *.tar.gz|*.tgz) tar xzvf "$f";; + *.tar.xz|*.txz) tar xJvf "$f";; + *.zip) unzip "$f";; + *.rar) unrar x "$f";; + *.7z) 7z x "$f";; + esac +}} + +cmd tar ${{ + set -f + mkdir $1 + cp -r $fx $1 + tar czf $1.tar.gz $1 + rm -rf $1 +}} + +cmd zip ${{ + set -f + mkdir $1 + cp -r $fx $1 + zip -r $1.zip $1 + rm -rf $1 +}} + + +# Trash bindings +cmd move-to-trash ${{ + files=$(printf "$fx" | tr '\n' ';') + while [ "$files" ]; do + file=${files%%;*} + + trash-put "$(basename "$file")" + + if [ "$files" = "$file" ]; then + files='' + else + files="${files#*;}" + fi + done +}} + +cmd delete-from-trash ${{ + files=$(printf "$fx" | tr '\n' ';') + while [ "$files" ]; do + file=${files%%;*} + + if [[ "$(pwd)" == "$HOME/.local/share/Trash/files" ]]; then + rm -rf "$file" + fi + + if [ "$files" = "$file" ]; then + files='' + else + files="${files#*;}" + fi + done +}} + +# cmd trash ${{ +# files=$(printf "$fx" | tr '\n' ';') +# while [ "$files" ]; do +# file=${files%%;*} +# if [[ $PWD == "$HOME/.local/share/Trash/files" ]]; then +# rm -rf "$file" +# else +# trash-put "$(basename "$filename")" +# fi +# +# if [ "$files" = "$file" ]; then +# files='' +# else +# files="${files#*;}" +# fi +# done +# }} + +# lfrc + + +cmd trash-restore-list ${{ + ids="$(echo -ne '\n' | \ + trash-restore | \ + awk '$1 ~ /^[0-9]+/ {print $0}' | \ + fzf --multi | \ + awk '{print $1}' | \ + sed -z 's/\n/,/g;s/,$/\n/')" + echo $ids | trash-restore + clear +}} + +cmd restore-from-trash ${{ + files=$(printf "$fx" | tr '\n' ';') + while [ "$files" ]; do + file=${files%%;*} + + Id="$(echo -ne '\n'| + trash-restore ~ | + grep $(basename "$file") | + awk '{print $1}' + )" + + echo $Id | trash-restore ~ + + if [ "$files" = "$file" ]; then + files='' + else + files="${files#*;}" + fi + done +}} + +map m +map o +map n +map "'" +map '"' +map d +map e +map f +map t +map u +map a + +map ua unarchive + +map . set hidden! + +map md push %mkdir +map gp jump-prev + +map y copy +map p paste +map x cut + +map open + +map f :fzf_jump +map gf :rg_search + +map C edit-config +map bg setwallpaper + +map mt move-to-trash +map dt delete-from-trash +map tr restore-from-trash +map trl trash-restore-list + + +map R reload + +map gh cd ~ +map gd cd ~/Downloads +map gD cd ~/Documents + +map gc cd ~/.config +map gr cd ~/repos + +map gC cd ~/code + +map gp cd ~/Pictures +map gw cd ~/Pictures/wallpapers +map gs cd ~/Pictures/screenshots + +map gv cd ~/Videos +map gm cd ~/Music +map gA cd ~/Anime + +map gt cd ~/.local/share/Trash/files +map tc %rm -rf ~/.local/share/Trash/files/* diff --git a/Themes/Nord/.config/waybar/config b/Themes/Nord/.config/waybar/config new file mode 100644 index 0000000..f2a7734 --- /dev/null +++ b/Themes/Nord/.config/waybar/config @@ -0,0 +1,134 @@ +{ + "layer": "top", // Waybar at top layer + "position": "top", + + "height": 39, + "width": 1895, + "spacing": 3, + + "modules-left": ["hyprland/window", "pulseaudio","tray"], + "modules-center": ["wlr/workspaces"], + "modules-right": ["custom/cmus", "custom/weather", "custom/language", "clock", "battery"], + + "wlr/workspaces": { + "format": "{icon}", + "on-scroll-up": "hyprctl dispatch workspace e+1", + "on-scroll-down": "hyprctl dispatch workspace e-1", + "on-click": "activate", + "all-outputs": false, + "format": "{icon}", + + // "format-icons": { + // "1": "", + // "2": "", + // "3": "", + // "4": "", + // "5": "", + // "6": "", + // "urgent": "", + // "focused": "", + // "default": "" + //} + + "format-icons": { + "1": "", + "2": "", + "3": "", + "4": "", + "5": "", + "6": "", + "7": "", + "8": "", + "9": "", + "focused": " ", + "urgent": " ", + //"default": " ", + }, + "icon-size": 14 + }, + + "sway/mode": { + "format": "{}" + }, + + "tray": { + "spacing": 10, + "icon-size": 15 + }, + + "clock": { + "format": "{:%a, %d/%m/%Y %I:%M %p}", + }, + + "custom/cmus": { + "format": " {}", + "max-length": 45, + "interval": 10, + "exec": "cmus-remote -C \"format_print '%F'\"", + "exec-if": "pgrep cmus", + "on-click": "cmus-remote -u", + "on-scroll-up": "cmus-remote --next", + "on-scroll-down": "cmus-remote --prev", + "escape": true + }, + + "custom/weather": { + "format": "{}", + "exec": "~/.config/waybar/openweathermap-simple.sh", + // "exec": "curl 'https://wttr.in/?format=1'", + "interval": 3600 + }, + + "hyprland/window": { + "format": "{}", + "separate-outputs": false, + "max-length": 20 + }, + + "custom/language": { + "exec": "~/.config/hypr/scripts/kb_hypr", + "interval": 1, + "format": " {}", + }, + + "battery": { + "states": { + "good": 60, + "warning": 40, + "critical": 30 + }, + "format": "{icon} {capacity}%", + "format-charging": " {capacity}%", + "format-plugged": " {capacity}%", + "format-full": " full charged", + "format-warning": " {capacity}%", + "format-critical": " {capacity}%", + "format-alt": "{time} {icon}", + "format-icons": ["", "", "", "", ""] + }, + + "bluetooth": { + // "controller": "controller1", // specify the alias of the controller if there are more than 1 on the system + "format": " {status}", + "format-disabled": "", // an empty format will hide the module + "format-connected": " {device_alias} connected", + "tooltip-format": "{controller_alias}\t{controller_address}", + "tooltip-format-connected": "{controller_alias}\t{controller_address}\n\n{device_enumerate}", + "tooltip-format-enumerate-connected": "{device_alias}\t{device_address}" + }, + + "pulseaudio": { + "scroll-step": 1, + "format": "{volume}% {icon}", + "format-bluetooth": "{volume}% {icon} ", + "format-bluetooth-muted": " {icon} ", + "format-muted": "", + "format-source": "", + "format-source-muted": "", + "format-icons": { + "headphone": "", + "default": ["", "", ""] + }, + "on-click": "pkill pulsemixer; foot -e pulsemixer" + } +} diff --git a/Themes/Nord/.config/waybar/nord.css b/Themes/Nord/.config/waybar/nord.css new file mode 100644 index 0000000..45db4c3 --- /dev/null +++ b/Themes/Nord/.config/waybar/nord.css @@ -0,0 +1,11 @@ +@define-color background #2e3440; +@define-color foreground #eceff4; +@define-color white #e5e9f0; +@define-color black #3b4252; +@define-color red #bf616a; +@define-color blue #88c0d0; +@define-color green #a3be8c; +@define-color yellow #ebcb8b; +@define-color magenta #b48ead; +@define-color cyan #88c0d0; +@define-color orange #d08770; diff --git a/Themes/Nord/.config/waybar/openweathermap-simple.sh b/Themes/Nord/.config/waybar/openweathermap-simple.sh new file mode 100644 index 0000000..4f5d77b --- /dev/null +++ b/Themes/Nord/.config/waybar/openweathermap-simple.sh @@ -0,0 +1,75 @@ +#!/bin/sh + +get_icon() { + case $1 in + # Icons for weather-icons + 01d) icon="";; + 01n) icon="";; + 02d) icon="";; + 02n) icon="";; + 03*) icon="";; + 04*) icon="";; + 09d) icon="";; + 09n) icon="";; + 10d) icon="";; + 10n) icon="";; + 11d) icon="";; + 11n) icon="";; + 13d) icon="";; + 13n) icon="";; + 50d) icon="";; + 50n) icon="";; + *) icon=""; + + # Icons for Font Awesome 5 Pro + #01d) icon="";; + #01n) icon="";; + #02d) icon="";; + #02n) icon="";; + #03d) icon="";; + #03n) icon="";; + #04*) icon="";; + #09*) icon="";; + #10d) icon="";; + #10n) icon="";; + #11*) icon="";; + #13*) icon="";; + #50*) icon="";; + #*) icon=""; + esac + + echo $icon +} + +KEY="e434b5435a979de6e155570590bee89b" +CITY="Novosibirsk" +UNITS="metric" +SYMBOL="°" + +API="https://api.openweathermap.org/data/2.5" + +if [ -n "$CITY" ]; then + if [ "$CITY" -eq "$CITY" ] 2>/dev/null; then + CITY_PARAM="id=$CITY" + else + CITY_PARAM="q=$CITY" + fi + + weather=$(curl -sf "$API/weather?appid=$KEY&$CITY_PARAM&units=$UNITS") +else + location=$(curl -sf https://location.services.mozilla.com/v1/geolocate?key=geoclue) + + if [ -n "$location" ]; then + location_lat="$(echo "$location" | jq '.location.lat')" + location_lon="$(echo "$location" | jq '.location.lng')" + + weather=$(curl -sf "$API/weather?appid=$KEY&lat=$location_lat&lon=$location_lon&units=$UNITS") + fi +fi + +if [ -n "$weather" ]; then + weather_temp=$(echo "$weather" | jq ".main.temp" | cut -d "." -f 1) + weather_icon=$(echo "$weather" | jq -r ".weather[0].icon") + + echo "$(get_icon "$weather_icon")" "$weather_temp$SYMBOL" +fi diff --git a/Themes/Nord/.config/waybar/style.css b/Themes/Nord/.config/waybar/style.css new file mode 100644 index 0000000..a941b8d --- /dev/null +++ b/Themes/Nord/.config/waybar/style.css @@ -0,0 +1,194 @@ +* { + /* `otf-font-awesome` is required to be installed for icons */ + font-family: FontAwesome, JetBrainsMono, sans-serif; + font-size: 13px; +} + +@import "./nord.css"; + +window#waybar { + background-color: rgba(43, 48, 59, 0.0); + color: @foreground; + transition-property: background-color; + transition-duration: .5s; + padding: 0; + margin: 0; +} + +.modules-left > widget:first-child > #workspaces { + margin-left: 0; +} + +.modules-right > widget:last-child > #workspaces { + margin-right: 0; +} + + +button { + margin: 0; + padding: 10px; + background-color: @background; + color: #d8dee8; + border-radius: 8px; +} + +button:hover { + margin: 0; + padding: 10px; + background-color: @background; + color: #d8dee8; + border-radius: 8px; +} + +button:focus { + margin: 0; + padding: 10px; + background-color: @background; + color: #d8dee8; + border-radius: 8px; +} + + +#workspaces { + padding: 0 15px 0 15px; + margin: 5px 0 5px 0; + background-color: @background; + color: @white; + border-radius: 14px; + /* margin: 0; */ +} + +#workspaces button { + padding: 0 5px; + margin: 5px; + /* background-color: ; */ + color: #444b6a; +} + +#workspaces button:hover { + color: @background; +} + +#workspaces button.active { + background-color: @background; + color: @white; +} + +#workspaces button.urgent { + background-color: #eb4d4b; +} + + +#tray { + padding: 7px; + margin: 5px 0 5px 0; + background-color: @background; + color: #d8dee8; + border-radius: 10px; +} + +#tray > .passive { + -gtk-icon-effect: dim; +} + +#tray > .needs-attention { + -gtk-icon-effect: highlight; +} + + +#custom-cmus { + padding: 0 15px 0 15px; + margin: 5px 0 5px 0; + background-color: @background; + color: #b9f27c; + border-radius: 8px; +} + + +#window { + padding: 0 15px 0 15px; + margin: 5px 0 5px 0; + background-color: @background; + color: @white; + border-radius: 8px; +} + + +#clock { + padding: 0 15px 0 15px; + margin: 5px 0 5px 0; + background-color: @background; + color: @white; + border-radius: 8px; +} + + +#mode, +#custom-weather { + padding: 0 15px 0 15px; + margin: 5px 0 5px 0; + background-color: @background; + color: #d8dee8; + border-radius: 8px; +} + +@keyframes blink { + to { + background-color: #ffffff; + color: #000000; + } +} + +label:focus { + background-color: #ffffff; +} + +#custom-language { + background-color: @background; + padding: 0 15px 0 15px; + margin: 5px 0 5px 0; + border-radius: 8px; +} + + +#pulseaudio { + background-color: @background; + padding: 0 15px 0 15px; + margin: 5px 0 5px 0; + border-radius: 8px; +} + +#bluetooth { + background-color: @background; + padding: 0 15px 0 15px; + margin: 5px 0 5px 0; + border-radius: 8px; +} + +#battery { + padding: 0 15px 0 15px; + margin: 5px 0 5px 0; + border-radius: 8px; + color: @blue; + background: @background; +} + +#battery.charging, #battery.plugged { + color: @green; + background-color: @background; +} + +#battery.warning:not(.charging) { + background-color: @background; + color: @orange; +} + +#battery.critical:not(.charging) { + background-color: @barkground; + color: @red; + animation-name: blink; + animation-duration: 0.5s; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; +} diff --git a/images/rice.png b/Themes/Nord/rice.png similarity index 100% rename from images/rice.png rename to Themes/Nord/rice.png