diff --git a/.zshrc b/.zshrc new file mode 100644 index 0000000..00ca192 --- /dev/null +++ b/.zshrc @@ -0,0 +1,99 @@ + + +# Path to your oh-my-zsh installation. +# export ZSH="$HOME/.oh-my-zsh" + +# Set name of the theme to load --- if set to "random", it will +# load a random theme each time oh-my-zsh is loaded, in which case, +# to know which specific one was loaded, run: echo $RANDOM_THEME +# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes +#ZSH_THEME="robbyrussell" + +# Set list of themes to pick from when loading at random +# Setting this variable when ZSH_THEME=random will cause zsh to load +# a theme from this variable instead of looking in $ZSH/themes/ +# If set to an empty array, this variable will have no effect. +# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" ) + +# Uncomment the following line to use case-sensitive completion. +# CASE_SENSITIVE="true" + +# Uncomment the following line to use hyphen-insensitive completion. +# Case-sensitive completion must be off. _ and - will be interchangeable. +# HYPHEN_INSENSITIVE="true" + +# Uncomment one of the following lines to change the auto-update behavior +# zstyle ':omz:update' mode disabled # disable automatic updates +# zstyle ':omz:update' mode auto # update automatically without asking +# zstyle ':omz:update' mode reminder # just remind me to update when it's time + +# Uncomment the following line to change how often to auto-update (in days). +# zstyle ':omz:update' frequency 13 + +# Uncomment the following line if pasting URLs and other text is messed up. +# DISABLE_MAGIC_FUNCTIONS="true" + +# Uncomment the following line to disable colors in ls. +# DISABLE_LS_COLORS="true" + +# Uncomment the following line to disable auto-setting terminal title. +# DISABLE_AUTO_TITLE="true" + +# Uncomment the following line to enable command auto-correction. +# ENABLE_CORRECTION="true" + +# Uncomment the following line to display red dots whilst waiting for completion. +# You can also set it to another string to have that shown instead of the default red dots. +# e.g. COMPLETION_WAITING_DOTS="%F{yellow}waiting...%f" +# Caution: this setting can cause issues with multiline prompts in zsh < 5.7.1 (see #5765) +# COMPLETION_WAITING_DOTS="true" + +# Uncomment the following line if you want to disable marking untracked files +# under VCS as dirty. This makes repository status check for large repositories +# much, much faster. +# DISABLE_UNTRACKED_FILES_DIRTY="true" + +# Uncomment the following line if you want to change the command execution time +# stamp shown in the history command output. +# You can set one of the optional three formats: +# "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd" +# or set a custom format using the strftime function format specifications, +# see 'man strftime' for details. +# HIST_STAMPS="mm/dd/yyyy" + +# Would you like to use another custom folder than $ZSH/custom? +# ZSH_CUSTOM=/path/to/new-custom-folder + +# Which plugins would you like to load? +# Standard plugins can be found in $ZSH/plugins/ +# Custom plugins may be added to $ZSH_CUSTOM/plugins/ +# Example format: plugins=(rails git textmate ruby lighthouse) +# Add wisely, as too many plugins slow down shell startup. + +# source $ZSH/oh-my-zsh.sh + +alias du="ncdu" +alias cat="bat" +alias ls="lsd" +alias vi="~/.local/bin/lvim" + +eval "$(starship init zsh)" + +# To custom config.zshize prompt, run `p10k configure` or edit ~/.p10k.zsh. +# ___MY_VMOPTIONS_SHELL_FILE="${HOME}/.jetbrains.vmoptions.sh"; if [ -f "${___MY_VMOPTIONS_SHELL_FILE}" ]; then . "${___MY_VMOPTIONS_SHELL_FILE}"; fi + +bindkey "^[[1;5C" forward-word +bindkey "^[[1;5D" backward-word +bindkey "^[[P" delete-char + +source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh +source ~/.zsh/zsh-auto-notify/auto-notify.plugin.zsh +source ~/.zsh/zsh-you-should-use/you-should-use.plugin.zsh +source ~/.zsh/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh +source ~/.zsh/zsh-navigation-tools/zsh-navigation-tools.plugin.zsh + +autoload -U compinit; compinit +source ~/.zsh/zsh-fzf-tab/fzf-tab.plugin.zsh + +SAVEHIST=1000 +HISTFILE=~/.zsh_history diff --git a/bspwm/bspwmrc b/bspwm/bspwmrc index 33e72a3..f7068e3 100755 --- a/bspwm/bspwmrc +++ b/bspwm/bspwmrc @@ -23,16 +23,14 @@ bspc config split_ratio 0.52 bspc config borderless_monocle true bspc config gapless_monocle true -bspc config active_border_color "#ABC2AB" -bspc config normal_border_color "#478061" -bspc config urgent_border_color "#B58900" -bspc config presel_border_color "#26E2FF" +bspc config active_border_color "#FFBB53" +bspc config normal_border_color "#FEA3A1" -bash $HOME/.config/polybar/launch.sh & sxhkd & picom & nitrogen --restore & dunst & xsetroot -cursor_name left_ptr & -pipewire & -pipewire-pulse +pgrep -x polybar > /dev/null || polybar & +pgrep -x pipewire > /dev/null || pipewire & +pgrep -x pipewire-pulse > /dev/null || pipewire-pulse & diff --git a/bspwm/log b/bspwm/log new file mode 100644 index 0000000..e69de29 diff --git a/btop/btop.conf b/btop/btop.conf index 300fd64..8ebe4bb 100755 --- a/btop/btop.conf +++ b/btop/btop.conf @@ -8,7 +8,7 @@ color_theme = "Default" theme_background = False #* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false. -truecolor = False +truecolor = True #* Set to true to force tty mode regardless if a real tty has been detected or not. #* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols. @@ -32,7 +32,7 @@ rounded_corners = True #* "block" has half the resolution of braille but uses more common characters. #* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY. #* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view. -graph_symbol = "braille" +graph_symbol = "tty" # Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". graph_symbol_cpu = "default" @@ -53,7 +53,7 @@ graph_symbol_proc = "default" shown_boxes = "cpu mem net proc" #* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs. -update_ms = 100 +update_ms = 500 #* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct", #* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly. diff --git a/btop/btop.log b/btop/btop.log index b5c06c8..c3aa374 100755 --- a/btop/btop.log +++ b/btop/btop.log @@ -8,3 +8,8 @@ 2024/04/27 (01:33:15) | INFO: Logger set to INFO 2024/04/27 (01:33:17) | INFO: Logger set to INFO 2024/04/27 (01:33:17) | INFO: Logger set to DEBUG + +2024/09/20 (16:23:18) | ===> btop++ v.1.3.2 +2024/09/20 (16:23:18) | INFO: Logger set to INFO +2024/09/20 (16:23:19) | INFO: Logger set to DEBUG +2024/09/20 (16:23:19) | INFO: Logger set to INFO diff --git a/fish/config.fish b/fish/config.fish deleted file mode 100644 index c78ba1a..0000000 --- a/fish/config.fish +++ /dev/null @@ -1,10 +0,0 @@ -starship init fish | source - -alias du="ncdu" -alias cat="bat" -alias ls="lsd" -alias vi="~/.local/bin/lvim" - -if status is-interactive - # Commands to run in interactive sessions can go here -end diff --git a/fish/fish_variables b/fish/fish_variables deleted file mode 100644 index 52cd691..0000000 --- a/fish/fish_variables +++ /dev/null @@ -1,31 +0,0 @@ -# This file contains fish universal variable definitions. -# VERSION: 3.0 -SETUVAR __fish_initialized:3400 -SETUVAR fish_color_autosuggestion:brblack -SETUVAR fish_color_cancel:\x2dr -SETUVAR fish_color_command:blue -SETUVAR fish_color_comment:red -SETUVAR fish_color_cwd:green -SETUVAR fish_color_cwd_root:red -SETUVAR fish_color_end:green -SETUVAR fish_color_error:brred -SETUVAR fish_color_escape:brcyan -SETUVAR fish_color_history_current:\x2d\x2dbold -SETUVAR fish_color_host:normal -SETUVAR fish_color_host_remote:yellow -SETUVAR fish_color_normal:normal -SETUVAR fish_color_operator:brcyan -SETUVAR fish_color_param:cyan -SETUVAR fish_color_quote:yellow -SETUVAR fish_color_redirection:cyan\x1e\x2d\x2dbold -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:red -SETUVAR fish_color_user:brgreen -SETUVAR fish_color_valid_path:\x2d\x2dunderline -SETUVAR fish_key_bindings:fish_default_key_bindings -SETUVAR fish_pager_color_completion:normal -SETUVAR fish_pager_color_description:yellow\x1e\x2di -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_selected_background:\x2dr diff --git a/lvim/config.lua b/lvim/config.lua index f4954d8..3fd8e86 100644 --- a/lvim/config.lua +++ b/lvim/config.lua @@ -11,7 +11,6 @@ vim.list_extend(lvim.lsp.automatic_configuration.skipped_servers, { "rust_analyz require "plugins.init" require "mappings" -require "configs.noice" require "configs.nvimtree" require "configs.bufferline" require "configs.dropbar" diff --git a/lvim/lazy-lock.json b/lvim/lazy-lock.json index 783edad..739c332 100755 --- a/lvim/lazy-lock.json +++ b/lvim/lazy-lock.json @@ -38,6 +38,7 @@ "nord.nvim": { "branch": "main", "commit": "6d6bae56a002a4da507ba263776e9691f47deb5f" }, "nui.nvim": { "branch": "main", "commit": "61574ce6e60c815b0a0c4b5655b8486ba58089a1" }, "nvim-autopairs": { "branch": "master", "commit": "14e97371b2aab6ee70054c1070a123dfaa3e217e" }, + "nvim-bqf": { "branch": "main", "commit": "1b24dc6050c34e8cd377b6b4cd6abe40509e0187" }, "nvim-cmp": { "branch": "main", "commit": "cd2cf0c124d3de577fb5449746568ee8e601afc8" }, "nvim-colorizer.lua": { "branch": "master", "commit": "194ec600488f7c7229668d0e80bd197f3a2b84ff" }, "nvim-dap": { "branch": "master", "commit": "13ce59d4852be2bb3cd4967947985cb0ceaff460" }, diff --git a/lvim/lua/plugins/init.lua b/lvim/lua/plugins/init.lua index a781881..93053d6 100644 --- a/lvim/lua/plugins/init.lua +++ b/lvim/lua/plugins/init.lua @@ -19,6 +19,9 @@ lvim.plugins = { { 'rust-lang/rust.vim', }, + { + 'kevinhwang91/nvim-bqf' + }, { 'MunifTanjim/prettier.nvim' }, @@ -186,14 +189,21 @@ lvim.plugins = { { "folke/noice.nvim", event = "VeryLazy", + opts = { + routes = { + { + filter = { event = "notify", find = "No information available" }, + opts = { skip = true }, + }, + }, + presets = { + lsp_doc_border = true, + }, + }, dependencies = { - -- if you lazy-load any plugin below, make sure to add proper `module="..."` entries "MunifTanjim/nui.nvim", - -- OPTIONAL: - -- `nvim-notify` is only needed, if you want to use the notification view. - -- If not available, we use `mini` as the fallback "rcarriga/nvim-notify", - } - } + }, + }, } diff --git a/picom/picom.conf b/picom/picom.conf index d60714d..371d120 100644 --- a/picom/picom.conf +++ b/picom/picom.conf @@ -1,57 +1,3 @@ -################################# -# Animations # - -# !These animations WILL NOT work correctly for any other wm other than phyOS-dwm fork! - -# fly-in: Windows fly in from random directions to the screen -# maximize: Windows pop from center of the screen to their respective positions -# minimize: Windows minimize from their position to the center of the screen -# slide-in-center: Windows move from upper-center of the screen to their respective positions -# slide-out-center: Windows move to the upper-center of the screen -# slide-left: Windows are created from the right-most window position and slide leftwards -# slide right: Windows are created from the left-most window position and slide rightwards -# slide-down: Windows are moved from the top of the screen and slide downward -# slide-up: Windows are moved from their position to top of the screen -# squeeze: Windows are either closed or created to/from their center y-position (the animation is similar to a blinking eye) -# squeeze-bottom: Similar to squeeze, but the animation starts from bottom-most y-position -# zoom: Windows are either created or destroyed from/to their center (not the screen center) - -################################# - -#enable or disable animations -animations = true; -#change animation speed of windows in current tag e.g open window in current tag -animation-stiffness-in-tag = 250; -#change animation speed of windows when tag changes -animation-stiffness-tag-change = 90.0; - -animation-window-mass = 0.3; -animation-dampening = 15; -animation-clamping = true; - -#open windows -animation-for-open-window = "zoom"; -#minimize or close windows -animation-for-unmap-window = "zoom"; -#popup windows -animation-for-transient-window = "zoom"; #available options: slide-up, slide-down, slide-left, slide-right, squeeze, squeeze-bottom, zoom - -#set animation for windows being transitioned out while changings tags -animation-for-prev-tag = "minimize"; -#enables fading for windows being transitioned out while changings tags -enable-fading-prev-tag = true; - -#set animation for windows being transitioned in while changings tags -animation-for-next-tag = "slide-in-center"; -#enables fading for windows being transitioned in while changings tags -enable-fading-next-tag = true; - -animation-exclude = [ - "window_type = 'dock'", - "class_g = 'flameshot'", - "class_g = 'polybar'", -]; - ################################# # Shadows # ################################# @@ -96,17 +42,6 @@ shadow-offset-y = -20; # shadow-exclude = "n:e:Notification"; # # shadow-exclude = [] -shadow-exclude = [ - "name = 'Notification'", - "class_g = 'Conky'", - "class_g ?= 'Notify-osd'", - "class_g = 'Cairo-clock'", - "class_g = 'dwm'", - "class_g = 'chromium'", - "class_g *?= 'slop'", - "_GTK_FRAME_EXTENTS@:c" -]; - # Specify a list of conditions of windows that should have no shadow painted over, such as a dock window. # clip-shadow-above = [] @@ -129,18 +64,18 @@ shadow-exclude = [ # Fade windows in/out when opening/closing and when opacity changes, # unless no-fading-openclose is used. -fading = true; +fading = false; # Opacity change between steps while fading in. (0.01 - 1.0, defaults to 0.028) # fade-in-step = 0.028 -fade-in-step = 0.023; +fade-in-step = 0.028; # Opacity change between steps while fading out. (0.01 - 1.0, defaults to 0.03) # fade-out-step = 0.03 -fade-out-step = 0.023; +fade-out-step = 0.03; # The time between steps in fade step, in milliseconds. (> 0, defaults to 10) -fade-delta = 5 +fade-delta = 10 # Specify a list of conditions of windows that should not be faded. # fade-exclude = [] @@ -165,7 +100,6 @@ fade-delta = 5 # Let inactive opacity set by -i override the '_NET_WM_WINDOW_OPACITY' values of windows. # inactive-opacity-override = true -inactive-opacity-override = true; # Default opacity for active windows. (0.0 - 1.0, defaults to 1.0) # active-opacity = 1.0 @@ -175,9 +109,6 @@ inactive-opacity-override = true; # Specify a list of conditions of windows that should never be considered focused. # focus-exclude = [] -focus-exclude = [ -"class_g = 'Cairo-clock'" , -]; # Use fixed inactive dim value, instead of adjusting according to window opacity. # inactive-dim-fixed = 1.0 @@ -189,7 +120,7 @@ focus-exclude = [ # Sets the radius of rounded window corners. When > 0, the compositor will # round the corners of windows. Does not interact well with # `transparent-clipping`. -corner-radius = 2; +corner-radius = 10; # Exclude conditions for rounded corners. #rounded-corners-exclude = [ @@ -197,27 +128,9 @@ corner-radius = 2; # "window_type = 'desktop'" #]; -blur: { - method = "dual_kawase"; - strength = 9; - background = true; - background-frame = false; - background-fixed = false; -} - - # Exclude conditions for background blur. # blur-background-exclude = [] -blur-background-exclude = [ - "window_type = 'dock'", - "window_type = 'desktop'", - "_GTK_FRAME_EXTENTS@:c", - "class_g = 'Chromium'", - "class_g = 'Discord'", - "class_g = 'Dunst'", - "class_g = 'Peek'", - "class_g *?= 'slop'", -]; + ################################# # General Settings # @@ -229,220 +142,371 @@ blur-background-exclude = [ # Specify the backend to use: `xrender`, `glx`, `egl` or `xr_glx_hybrid`. # `xrender` is the default one. # -backend = "egl" - -# Use higher precision during rendering, and apply dither when presenting the -# rendered screen. Reduces banding artifacts, but might cause performance -# degradation. Only works with OpenGL. +backend = "glx" dithered-present = false; - -# Enable/disable VSync. vsync = true; - -# Enable remote control via D-Bus. See the *D-BUS API* section below for more details. -# dbus = false - -# Try to detect WM windows (a non-override-redirect window with no -# child that has 'WM_STATE') and mark them as active. -# -# mark-wmwin-focused = false -mark-wmwin-focused = true; - -# Mark override-redirect windows that doesn't have a child window with 'WM_STATE' focused. -# mark-ovredir-focused = false -mark-ovredir-focused = true; - -# Try to detect windows with rounded corners and don't consider them -# shaped windows. The accuracy is not very high, unfortunately. -# -# detect-rounded-corners = false -detect-rounded-corners = false; - -# Detect '_NET_WM_WINDOW_OPACITY' on client windows, useful for window managers -# not passing '_NET_WM_WINDOW_OPACITY' of client windows to frame windows. -# -# detect-client-opacity = false -detect-client-opacity = false; - -# Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window, -# rather than listening to 'FocusIn'/'FocusOut' event. Might have more accuracy, -# provided that the WM supports it. -# -use-ewmh-active-win = true; - -# Unredirect all windows if a full-screen opaque window is detected, -# to maximize performance for full-screen windows. Known to cause flickering -# when redirecting/unredirecting windows. -# -unredir-if-possible = false; - -# Delay before unredirecting the window, in milliseconds. Defaults to 0. -# unredir-if-possible-delay = 0 - -# Conditions of windows that shouldn't be considered full-screen for unredirecting screen. -# unredir-if-possible-exclude = [] - -# Use 'WM_TRANSIENT_FOR' to group windows, and consider windows -# in the same group focused at the same time. -# -# detect-transient = false +detect-client-opacity = true; detect-transient = true; - -# Use 'WM_CLIENT_LEADER' to group windows, and consider windows in the same -# group focused at the same time. This usually means windows from the same application -# will be considered focused or unfocused at the same time. -# 'WM_TRANSIENT_FOR' has higher priority if detect-transient is enabled, too. -# -# detect-client-leader = false - -# Resize damaged region by a specific number of pixels. -# A positive value enlarges it while a negative one shrinks it. -# If the value is positive, those additional pixels will not be actually painted -# to screen, only used in blur calculation, and such. (Due to technical limitations, -# with use-damage, those pixels will still be incorrectly painted to screen.) -# Primarily used to fix the line corruption issues of blur, -# in which case you should use the blur radius value here -# (e.g. with a 3x3 kernel, you should use `--resize-damage 1`, -# with a 5x5 one you use `--resize-damage 2`, and so on). -# May or may not work with *--glx-no-stencil*. Shrinking doesn't function correctly. -# -# resize-damage = 1 - -# Specify a list of conditions of windows that should be painted with inverted color. -# Resource-hogging, and is not well tested. -# -# invert-color-include = [] - -# GLX backend: Avoid using stencil buffer, useful if you don't have a stencil buffer. -# Might cause incorrect opacity when rendering transparent content (but never -# practically happened) and may not work with blur-background. -# My tests show a 15% performance boost. Recommended. -# -glx-no-stencil = true; - -# GLX backend: Avoid rebinding pixmap on window damage. -# Probably could improve performance on rapid window content changes, -# but is known to break things on some drivers (LLVMpipe, xf86-video-intel, etc.). -# Recommended if it works. -# -# glx-no-rebind-pixmap = false - -# Disable the use of damage information. -# This cause the whole screen to be redrawn every time, instead of the part of the screen -# has actually changed. Potentially degrades the performance, but might fix some artifacts. -# The opposing option is use-damage -# -# no-use-damage = false +detect-client-leader = true +glx-no-stencil = true +glx-no-rebind-pixmap = false use-damage = true; - -# Use X Sync fence to sync clients' draw calls, to make sure all draw -# calls are finished before picom starts drawing. Needed on nvidia-drivers -# with GLX backend for some users. -# -xrender-sync-fence = true; - -# GLX backend: Use specified GLSL fragment shader for rendering window contents. -# See `compton-default-fshader-win.glsl` and `compton-fake-transparency-fshader-win.glsl` -# in the source tree for examples. -# -window-shader-fg = "default"; - -# Force all windows to be painted with blending. Useful if you -# have a glx-fshader-win that could turn opaque pixels transparent. -# -# force-win-blend = true; - -# Do not use EWMH to detect fullscreen windows. -# Reverts to checking if a window is fullscreen based only on its size and coordinates. -# -# no-ewmh-fullscreen = false - -# Dimming bright windows so their brightness doesn't exceed this set value. -# Brightness of a window is estimated by averaging all pixels in the window, -# so this could comes with a performance hit. -# Setting this to 1.0 disables this behaviour. Requires --use-damage to be disabled. (default: 1.0) -# -# max-brightness = 1.0 - -# Make transparent windows clip other windows like non-transparent windows do, -# instead of blending on top of them. -# -transparent-clipping = false; - -# Specify a list of conditions of windows that should never have transparent -# clipping applied. Useful for screenshot tools, where you need to be able to -# see through transparent parts of the window. -# -# transparent-clipping-exclude = [] - -# Set the log level. Possible values are: -# "trace", "debug", "info", "warn", "error" -# in increasing level of importance. Case doesn't matter. -# If using the "TRACE" log level, it's better to log into a file -# using *--log-file*, since it can generate a huge stream of logs. -# -# log-level = "debug" +xrender-sync-fence = false log-level = "warn"; -# Set the log file. -# If *--log-file* is never specified, logs will be written to stderr. -# Otherwise, logs will to written to the given file, though some of the early -# logs might still be written to the stderr. -# When setting this option from the config file, it is recommended to use an absolute path. -# -# log-file = "/path/to/your/log/file" +rules = ({ + match = "WM_TRANSIENT_FOR@"; + animations = ({ + triggers = ["open", "show"]; + opacity = { + curve = "linear"; + duration = 0.15; + start = "window-raw-opacity-before"; + end = "window-raw-opacity"; + }; + blur-opacity = { + curve = "linear"; + duration = 0.1; + delay = 0.15; + start = "window-raw-opacity-before"; + end = "window-raw-opacity"; + }; + shadow-opacity = "opacity"; + scale-y = { + curve = "cubic-bezier(0.24, 0.64, 0.79, 0.98)"; + duration = 0.15; + start = 0.8; + end = 1; + }; + offset-y = "(-window-height/2) + (window-height/2) * scale-y"; + shadow-scale-y = "scale-y"; + shadow-offset-y = "offset-y"; + saved-image-blend = 0; + },{ + triggers = ["close", "hide"]; + opacity = { + curve = "linear"; + duration = 0.15; + start = "window-raw-opacity-before"; + end = "0"; + }; + blur-opacity = 0; + shadow-opacity = "opacity"; + scale-y = { + curve = "cubic-bezier(0.21, 0.02, 0.76, 0.36)"; + duration = 0.15; + start = 1; + end = 0.7; + }; + offset-y = "(-window-height/2) + (window-height/2) * scale-y"; + shadow-scale-y = "scale-y"; + shadow-offset-y = "offset-y"; + saved-image-blend = 0; + }); +}, { + match = "window_type = 'dropdown_menu' || window_type = 'popup_menu' || window_type = 'menu'"; + animations = ({ + triggers = ["open", "show"]; + opacity = { + curve = "linear"; + duration = 0.15; + start = "window-raw-opacity-before"; + end = "window-raw-opacity"; + }; + blur-opacity = { + curve = "linear"; + duration = 0.1; + delay = 0.15; + start = "window-raw-opacity-before"; + end = "window-raw-opacity"; + }; + shadow-opacity = "opacity"; + scale-y = { + curve = "cubic-bezier(0.24, 0.64, 0.79, 0.98)"; + duration = 0.15; + start = 0.8; + end = 1; + }; + shadow-scale-y = "scale-y"; + saved-image-blend = 0; -# Show all X errors (for debugging) -# show-all-xerrors = false + },{ + triggers = ["close", "hide"]; + opacity = { + curve = "linear"; + duration = 0.15; + start = "window-raw-opacity-before"; + end = "0"; + }; + blur-opacity = 0; + shadow-opacity = "opacity"; + scale-y = { + curve = "cubic-bezier(0.21, 0.02, 0.76, 0.36)"; + duration = 0.15; + start = 1; + end = 0.7; + }; + shadow-scale-y = "scale-y"; + saved-image-blend = 0; -# Write process ID to a file. -# write-pid-path = "/path/to/your/log/file" + }); +}, { + match = "window_type = 'dropdown_menu' || window_type = 'popup_menu' || window_type = 'menu'"; + opacity = 0.9; +}, { + match = "window_type = 'dock' || window_type = 'desktop'"; + blur-background = false; + corner-radius = 0; +}, { + match = "class_g *= 'i3lock' || _NET_WM_STATE@[1] = '_NET_WM_STATE_FULLSCREEN' || _NET_WM_STATE@[2] = '_NET_WM_STATE_FULLSCREEN' || _NET_WM_STATE@[3] = '_NET_WM_STATE_FULLSCREEN' || _NET_WM_STATE@[4] = '_NET_WM_STATE_FULLSCREEN'"; + shadow = false; + corner-radius = 0; + animations = ({ + triggers = ["open", "show"]; + opacity = { + curve = "linear"; + duration = 0.15; + start = "window-raw-opacity-before"; + end = "window-raw-opacity"; + }; + blur-opacity = { + curve = "linear"; + duration = 0.1; + delay = 0.15; + start = "window-raw-opacity-before"; + end = "window-raw-opacity"; + }; + shadow-opacity = "opacity"; + saved-image-blend = 0; -# Window type settings -# -# 'WINDOW_TYPE' is one of the 15 window types defined in EWMH standard: -# "unknown", "desktop", "dock", "toolbar", "menu", "utility", -# "splash", "dialog", "normal", "dropdown_menu", "popup_menu", -# "tooltip", "notification", "combo", and "dnd". -# -# Following per window-type options are available: :: -# -# fade, shadow::: -# Controls window-type-specific shadow and fade settings. -# -# opacity::: -# Controls default opacity of the window type. -# -# focus::: -# Controls whether the window of this type is to be always considered focused. -# (By default, all window types except "normal" and "dialog" has this on.) -# -# full-shadow::: -# Controls whether shadow is drawn under the parts of the window that you -# normally won't be able to see. Useful when the window has parts of it -# transparent, and you want shadows in those areas. -# -# clip-shadow-above::: -# Controls whether shadows that would have been drawn above the window should -# be clipped. Useful for dock windows that should have no shadow painted on top. -# -# redir-ignore::: -# Controls whether this type of windows should cause screen to become -# redirected again after been unredirected. If you have unredir-if-possible -# set, and doesn't want certain window to cause unnecessary screen redirection, -# you can set this to `true`. -# -wintypes: + },{ + triggers = ["close", "hide"]; + opacity = { + curve = "linear"; + duration = 0.15; + start = "window-raw-opacity-before"; + end = "0"; + }; + blur-opacity = 0; + shadow-opacity = "opacity"; + saved-image-blend = 0; + }); +}); + +animations = ({ + triggers = ["close", "hide"]; + opacity = { + curve = "linear"; + duration = 0.15; + start = "window-raw-opacity-before"; + end = "window-raw-opacity"; + }; + blur-opacity = "0"; + shadow-opacity = "opacity"; + offset-x = "(1 - scale-x) / 2 * window-width"; + offset-y = "(1 - scale-y) / 2 * window-height"; + scale-x = { + curve = "cubic-bezier(0.21, 0.02, 0.76, 0.36)"; + duration = 0.15; + start = 1; + end = 0.9; + }; + scale-y = "scale-x"; + shadow-scale-x = "scale-x"; + shadow-scale-y = "scale-y"; + shadow-offset-x = "offset-x"; + shadow-offset-y = "offset-y"; +}, { + triggers = ["open", "show"]; + opacity = { + curve = "linear"; + duration = 0.15; + start = "window-raw-opacity-before"; + end = "window-raw-opacity"; + }; + blur-opacity = { + curve = "linear"; + duration = 0.1; + delay = 0.15; + start = "window-raw-opacity-before"; + end = "window-raw-opacity"; + }; + shadow-opacity = "opacity"; + offset-x = "(1 - scale-x) / 2 * window-width"; + offset-y = "(1 - scale-y) / 2 * window-height"; + scale-x = { + curve = "cubic-bezier(0.24, 0.64, 0.79, 0.98)"; + duration = 0.15; + start = 0.95; + end = 1; + }; + scale-y = "scale-x"; + shadow-scale-x = "scale-x"; + shadow-scale-y = "scale-y"; + shadow-offset-x = "offset-x"; + shadow-offset-y = "offset-y"; +}, + +# Half Window Size Desktop Switch { - tooltip = { fade = true; shadow = true; opacity = 0.75; focus = true; full-shadow = false; }; - dock = { shadow = false; clip-shadow-above = true; } - dnd = { shadow = false; } - popup_menu = { opacity = 0.8; } - dropdown_menu = { opacity = 0.8; } -}; + triggers = ["workspace-out"]; + offset-y = { + curve = "cubic-bezier(0.21, 0.02, 0.76, 0.36)"; + duration = 0.15; + start = "0"; + end = "- window-height / 2"; + }; + scale-x = { + curve = "cubic-bezier(0.21, 0.02, 0.76, 0.36)"; + duration = 0.10; + start = "0"; + end = "- window-height / 2"; -opacity-rule = [ - "100:class_g = 'St' && focused", - "50:class_g = 'St' && !focused", - "100:fullscreen", -]; + } + shadow-offset-y = "offset-y"; + opacity = { + curve = "linear"; + duration = 0.15; + start = "window-raw-opacity-before"; + end = "window-raw-opacity"; + }; + blur-opacity = "0"; + shadow-opacity = "opacity"; +}, { + triggers = ["workspace-out-inverse"]; + offset-y = { + curve = "cubic-bezier(0.21, 0.02, 0.76, 0.36)"; + duration = 0.15; + start = "0"; + end = "window-height / 2"; + }; + shadow-offset-y = "offset-y"; + opacity = { + curve = "linear"; + duration = 0.15; + start = "window-raw-opacity-before"; + end = "window-raw-opacity"; + }; + blur-opacity = "0"; + shadow-opacity = "opacity"; +}, { + triggers = ["workspace-in"]; + offset-y = { + curve = "cubic-bezier(0.24, 0.64, 0.79, 0.98)"; + duration = 0.15; + start = "window-height / 2"; + end = "0"; + }; + shadow-offset-y = "offset-y"; + opacity = { + curve = "linear"; + duration = 0.15; + start = "0"; + end = "window-raw-opacity"; + }; + blur-opacity = { + curve = "linear"; + duration = 0.1; + delay = 0.15; + start = "0"; + end = "window-raw-opacity"; + }; + shadow-opacity = "opacity"; +}, { + triggers = ["workspace-in-inverse"]; + offset-y = { + curve = "cubic-bezier(0.24, 0.64, 0.79, 0.98)"; + duration = 0.15; + start = "- window-height / 2"; + end = "0"; + }; + shadow-offset-y = "offset-y"; + opacity = { + curve = "linear"; + duration = 0.15; + start = "0"; + end = "window-raw-opacity"; + }; + blur-opacity = { + curve = "linear"; + duration = 0.1; + delay = 0.15; + start = "0"; + end = "window-raw-opacity"; + }; + shadow-opacity = "opacity"; +}, +# { +# triggers = [ "geometry" ]; +# crop-width = { +# curve = "cubic-bezier(0.24, 0.64, 0.79, 0.98)"; +# duration = 0.5; +# start = "window-width-before"; +# end = "window-width"; +# }; +# } + +# Full Opaque Desktop Switch +#{ +# triggers = ["workspace-out"]; +# offset-y = { +# timing = "0.15s cubic-bezier(0.21, 0.02, 0.76, 0.36)"; +# start = "0"; +# end = "-window-monitor-height"; +# }; +# shadow-offset-y = "offset-y"; +# opacity = { +# timing = "0.2s linear"; +# start = "window-raw-opacity-before"; +# end = "window-raw-opacity-before"; +# }; +# blur-opacity = "opacity"; +# shadow-opacity = "opacity"; +#}, { +# triggers = ["workspace-out-inverse"]; +# offset-y = { +# timing = "0.15s cubic-bezier(0.21, 0.02, 0.76, 0.36)"; +# start = "0"; +# end = "window-monitor-height"; +# }; +# shadow-offset-y = "offset-y"; +# opacity = { +# timing = "0.2s linear"; +# start = "window-raw-opacity-before"; +# end = "window-raw-opacity-before"; +# }; +# blur-opacity = "opacity"; +# shadow-opacity = "opacity"; +#}, { +# triggers = ["workspace-in"]; +# offset-y = { +# timing = "0.15s cubic-bezier(0.24, 0.64, 0.79, 0.98)"; +# start = "window-monitor-height"; +# end = "0"; +# }; +# shadow-offset-y = "offset-y"; +# opacity = { +# timing = "0.2s linear"; +# start = "window-raw-opacity"; +# end = "window-raw-opacity"; +# }; +# blur-opacity = "opacity"; +# shadow-opacity = "opacity"; +#}, { +# triggers = ["workspace-in-inverse"]; +# offset-y = { +# timing = "0.15s cubic-bezier(0.24, 0.64, 0.79, 0.98)"; +# start = "-window-monitor-height"; +# end = "0"; +# }; +# shadow-offset-y = "offset-y"; +# opacity = { +# timing = "0.2s linear"; +# start = "window-raw-opacity"; +# end = "window-raw-opacity"; +# }; +# blur-opacity = "opacity"; +# shadow-opacity = "opacity"; +#} + +) diff --git a/polybar/config.ini b/polybar/config.ini index 7586fe7..36969e2 100644 --- a/polybar/config.ini +++ b/polybar/config.ini @@ -17,18 +17,18 @@ ;========================================================== [colors] -background = #282A2E -background-alt = #373B41 -foreground = #C5C8C6 -primary = #89A989 -secondary = #478061 +background = #353F5D +background-alt = #414D72 +foreground = #C8C7D1 +primary = #FFCC4D +secondary = #FF7FA3 alert = #A54242 disabled = #707880 [bar/example] width = 100% height = 18pt -radius = 7pt +radius = 11t ; dpi = 96 @@ -116,12 +116,16 @@ label-unmounted-foreground = ${colors.disabled} [module/pulseaudio] type = internal/pulseaudio -format-volume = %{F#89A989}%{F-} +ramp-volume-foreground = ${colors.primary} + +format-volume = label-volume = %percentage%% label-muted = 󰝟 muted +click-right = ~/.config/rofi/volume/launch.sh + ; Only applies if is used ramp-volume-0 = 󰕿 ramp-volume-1 = 󰖀 @@ -149,22 +153,25 @@ label = %percentage_used:2%% [module/cpu] type = internal/cpu interval = 2 -format-prefix = " " +format-prefix = " " format-prefix-foreground = ${colors.primary} label = %percentage:2%% [network-base] type = internal/network interval = 5 -format-connected = + + format-disconnected = -label-disconnected = %{F#89A989}󰲛 %{F#707880} disconnected +label-disconnected = 󰲛 disconnected [module/wlan] inherit = network-base interface-type = wireless -format-connected = %{F#89A989}%{F-} +ramp-signal-foreground = ${colors.primary} + +format-connected = label-connected = %essid% %local_ip% @@ -178,7 +185,14 @@ ramp-signal-5 = 󰤨 [module/eth] inherit = network-base interface-type = wired -label-connected = %{F#89A989}󰈀 %{F-} %local_ip% + +format-connected = %{} + +format-connected-prefix = 󰈀 +format-connected-prefix-foreground = ${colors.primary} + +label-connected = %local_ip% +label-connected-foreground = ${colors.foreground} [module/date] type = internal/date @@ -321,52 +335,9 @@ pseudo-transparency = true ; vim:ft=dosini ; [module/powermenu] -type = custom/menu +type = custom/text -expand-right = true +content = " " +content-foreground = ${colors.urgent} -format-spacing = 1 - -label-open = " " -label-open-foreground = ${colors.urgent} -label-close =  -label-close-foreground = ${colors.success} -label-separator = | -label-separator-foreground = ${colors.foreground} - -;Powermenu -menu-0-0 = "" -menu-0-0-exec = menu-open-1 -menu-0-0-foreground = ${colors.urgent} - -menu-0-1 = "󰤆" -menu-0-1-exec = menu-open-2 -menu-0-1-foreground = ${colors.urgent} - -menu-0-2 = "󰤄 " -menu-0-2-exec = menu-open-3 -menu-0-2-foreground = ${colors.warning} - -;Reboot -menu-1-0 = "Reboot" -menu-1-0-exec = loginctl reboot -menu-1-0-foreground = ${colors.urgent} -menu-1-1 = "Cancel " -menu-1-1-exec = menu-open-0 -menu-1-1-foreground = ${colors.success} - -;Shutdown -menu-2-0 = "Power off" -menu-2-0-exec = loginctl poweroff -menu-2-0-foreground = ${colors.urgent} -menu-2-1 = "Cancel " -menu-2-1-exec = menu-open-0 -menu-2-1-foreground = ${colors.success} - -;Sleep -menu-3-0 = "Sleep" -menu-3-0-exec = loginctl suspend -menu-3-0-foreground = ${colors.urgent} -menu-3-1 = "Cancel " -menu-3-1-exec = menu-open-0 -menu-3-1-foreground = ${colors.success} +click-left = ~/.config/rofi/power/launch.sh diff --git a/rofi/colors.rasi b/rofi/colors.rasi new file mode 100644 index 0000000..c369ef5 --- /dev/null +++ b/rofi/colors.rasi @@ -0,0 +1,8 @@ +* { + selected: #FFCC4D; + background: #353F5D; + foreground: #C8C7D1; + background-alt: #414D72; + urgent: #353F5D; + active: #FF7FA3; +} diff --git a/rofi/launcher/app_menu.rasi b/rofi/launcher/app_menu.rasi new file mode 100644 index 0000000..77c8cc2 --- /dev/null +++ b/rofi/launcher/app_menu.rasi @@ -0,0 +1,323 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,run,filebrowser,ssh,window"; + show-icons: false; + display-drun: " Apps"; + display-run: " Run"; + display-filebrowser: " Files"; + display-window: " Windows"; + display-ssh: " SSH"; + drun-display-format: "{name}"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ + +@import "../colors.rasi" + +* { + border-colour: var(selected); + handle-colour: var(selected); + background-colour: var(background); + foreground-colour: var(foreground); + alternate-background: var(background-alt); + normal-background: var(background); + normal-foreground: var(foreground); + urgent-background: var(urgent); + urgent-foreground: var(background); + active-background: var(active); + active-foreground: var(background); + selected-normal-background: var(selected); + selected-normal-foreground: var(background); + selected-urgent-background: var(active); + selected-urgent-foreground: var(background); + selected-active-background: var(urgent); + selected-active-foreground: var(background); + alternate-normal-background: var(background); + alternate-normal-foreground: var(foreground); + alternate-urgent-background: var(urgent); + alternate-urgent-foreground: var(background); + alternate-active-background: var(active); + alternate-active-foreground: var(background); +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 800px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 35px; + border-color: @border-colour; + cursor: "default"; + /* Backgroud Colors */ + background-color: @background-colour; + /* Backgroud Image */ + //background-image: url("/path/to/image.png", none); + /* Simple Linear Gradient */ + //background-image: linear-gradient(red, orange, pink, purple); + /* Directional Linear Gradient */ + //background-image: linear-gradient(to bottom, pink, yellow, magenta); + /* Angle Linear Gradient */ + //background-image: linear-gradient(45, cyan, purple, indigo); +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 20px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + children: [ "inputbar", "message", "custombox" ]; +} + +/*****----- A Custom Box -----*****/ +custombox { + spacing: 10px; + background-color: @background-colour; + text-color: @foreground-colour; + orientation: horizontal; + children: [ "mode-switcher", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 8px 12px; + border: 0px solid; + border-radius: 50%; + border-color: @border-colour; + background-color: @alternate-background; + text-color: @foreground-colour; + children: [ "textbox-prompt-colon", "entry" ]; +} + +prompt { + enabled: true; + background-color: inherit; + text-color: inherit; +} +textbox-prompt-colon { + enabled: true; + padding: 5px 0px; + expand: false; + str: ""; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + padding: 5px 0px; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search..."; + placeholder-color: inherit; +} +num-filtered-rows { + enabled: true; + expand: false; + background-color: inherit; + text-color: inherit; +} +textbox-num-sep { + enabled: true; + expand: false; + str: "/"; + background-color: inherit; + text-color: inherit; +} +num-rows { + enabled: true; + expand: false; + background-color: inherit; + text-color: inherit; +} +case-indicator { + enabled: true; + background-color: inherit; + text-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 8; + cycle: true; + dynamic: true; + scrollbar: true; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 5px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @handle-colour; + border-radius: 50%; + background-color: @alternate-background; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 10px; + border: 0px solid; + border-radius: 10px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: pointer; +} +element normal.normal { + background-color: var(normal-background); + text-color: var(normal-foreground); +} +element normal.urgent { + background-color: var(urgent-background); + text-color: var(urgent-foreground); +} +element normal.active { + background-color: var(active-background); + text-color: var(active-foreground); +} +element selected.normal { + background-color: var(selected-normal-background); + text-color: var(selected-normal-foreground); +} +element selected.urgent { + background-color: var(selected-urgent-background); + text-color: var(selected-urgent-foreground); +} +element selected.active { + background-color: var(selected-active-background); + text-color: var(selected-active-foreground); +} +element alternate.normal { + background-color: var(alternate-normal-background); + text-color: var(alternate-normal-foreground); +} +element alternate.urgent { + background-color: var(alternate-urgent-background); + text-color: var(alternate-urgent-foreground); +} +element alternate.active { + background-color: var(alternate-active-background); + text-color: var(alternate-active-foreground); +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 24px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + expand: false; + orientation: vertical; + spacing: 10px; + margin: 0px; + padding: 0px 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +button { + padding: 0px 20px 0px 20px; + border: 0px solid; + border-radius: 50%; + border-color: @border-colour; + background-color: @alternate-background; + text-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; + cursor: pointer; +} +button selected { + background-color: var(selected-normal-background); + text-color: var(selected-normal-foreground); +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +textbox { + padding: 12px; + border: 0px solid; + border-radius: 8px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: @foreground-colour; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; + placeholder-color: @foreground-colour; + blink: true; + markup: true; +} +error-message { + padding: 10px; + border: 2px solid; + border-radius: 8px; + border-color: @border-colour; + background-color: @background-colour; + text-color: @foreground-colour; +} diff --git a/rofi/launcher/launch.sh b/rofi/launcher/launch.sh new file mode 100755 index 0000000..23eeb4d --- /dev/null +++ b/rofi/launcher/launch.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +rofi -show drun -config ~/.config/rofi/launcher/app_menu.rasi -verbose diff --git a/rofi/power/bg.png b/rofi/power/bg.png new file mode 100644 index 0000000..a8a4e31 Binary files /dev/null and b/rofi/power/bg.png differ diff --git a/rofi/power/launch.sh b/rofi/power/launch.sh new file mode 100755 index 0000000..af0473d --- /dev/null +++ b/rofi/power/launch.sh @@ -0,0 +1,105 @@ +#!/usr/bin/env bash + +## Author : Aditya Shakya (adi1090x) +## Github : @adi1090x +# +## Rofi : Power Menu +# +## Available Styles +# +## style-1 style-2 style-3 style-4 style-5 + +# Current Theme +dir="$HOME/.config/rofi/power/power_menu.rasi" + +# CMDs +uptime="`uptime -p | sed -e 's/up //g'`" +host=`hostname` + +# Options +shutdown='⏻' +reboot='' +lock='' +suspend='' +logout='' +yes='' +no='' + +# Rofi CMD +rofi_cmd() { + rofi -dmenu \ + -mesg "󱑍 Uptime: $uptime" \ + -theme ${dir} +} + +# Confirmation CMD +confirm_cmd() { + rofi -theme-str 'window {location: center; anchor: center; fullscreen: false; width: 240px;}' \ + -theme-str 'listview {columns: 2; lines: 1;}' \ + -theme-str 'element-text {horizontal-align: 0.48;}' \ + -theme-str 'textbox {horizontal-align: 0.5;}' \ + -dmenu \ + -p 'Confirmation' \ + -mesg 'Are you Sure?' \ + -theme ${dir} +} + +# Ask for confirmation +confirm_exit() { + echo -e "$yes\n$no" | confirm_cmd +} + +# Pass variables to rofi dmenu +run_rofi() { + echo -e "$lock\n$suspend\n$logout\n$reboot\n$shutdown" | rofi_cmd +} + +# Execute Command +run_cmd() { + selected="$(confirm_exit)" + if [[ "$selected" == "$yes" ]]; then + if [[ $1 == '--shutdown' ]]; then + loginctl poweroff + elif [[ $1 == '--reboot' ]]; then + loginctl reboot + elif [[ $1 == '--suspend' ]]; then + loginctl suspend + elif [[ $1 == '--logout' ]]; then + if [[ "$DESKTOP_SESSION" == 'openbox' ]]; then + openbox --exit + elif [[ "$DESKTOP_SESSION" == 'bspwm' ]]; then + bspc quit + elif [[ "$DESKTOP_SESSION" == 'i3' ]]; then + i3-msg exit + elif [[ "$DESKTOP_SESSION" == 'plasma' ]]; then + qdbus org.kde.ksmserver /KSMServer logout 0 0 0 + fi + fi + else + exit 0 + fi +} + +# Actions +chosen="$(run_rofi)" +case ${chosen} in + $shutdown) + run_cmd --shutdown + ;; + $reboot) + run_cmd --reboot + ;; + $lock) + if [[ -x '/usr/bin/betterlockscreen' ]]; then + betterlockscreen -l + elif [[ -x '/usr/bin/i3lock' ]]; then + i3lock + fi + ;; + $suspend) + run_cmd --suspend + ;; + $logout) + run_cmd --logout + ;; +esac diff --git a/rofi/power/power_menu.rasi b/rofi/power/power_menu.rasi new file mode 100644 index 0000000..4e05afc --- /dev/null +++ b/rofi/power/power_menu.rasi @@ -0,0 +1,138 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + show-icons: false; +} + +/* +USE_BUTTONS=YES +*/ + +@import "../colors.rasi" + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 550px; + x-offset: 0px; + y-offset: 0px; + + padding: 0px; + border: 0px solid; + border-radius: 20px; + border-color: @selected; + cursor: "default"; + background-color: @background; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 0px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + children: [ "inputbar", "listview", "message" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 0px; + padding: 100px 80px; + background-color: transparent; + background-image: url("/home/doryan/.config/rofi/power/bg.png", width); + children: [ "textbox-prompt-colon", "dummy","prompt"]; +} + +dummy { + background-color: transparent; +} + +textbox-prompt-colon { + enabled: false; + expand: false; + str: "󰐥 System"; + padding: 12px; + border-radius: 100%; + background-color: @selected; + text-color: @foreground; +} +prompt { + enabled: false; + padding: 12px; + border-radius: 100%; + background-color: @active; + text-color: @foreground; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 5; + lines: 1; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 15px; + margin: 15px; + background-color: transparent; + cursor: "default"; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + padding: 23px 10px; + border-radius: 100%; + background-color: @background-alt; + text-color: @foreground; + cursor: pointer; +} +element-text { + font: "FiraCode Nerd Font Propo 28"; + background-color: transparent; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} +element selected.normal { + background-color: var(selected); + text-color: var(background); +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px 15px 15px 15px; + padding: 15px; + border-radius: 100%; + background-color: @background-alt; + text-color: @foreground; +} +textbox { + background-color: inherit; + text-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.48; +} diff --git a/rofi/volume/launch.sh b/rofi/volume/launch.sh new file mode 100755 index 0000000..9dae9cf --- /dev/null +++ b/rofi/volume/launch.sh @@ -0,0 +1,54 @@ +#!/usr/bin/env bash + +theme_path="$HOME/.config/rofi/volume/volume_menu.rasi" + +volume='' +microphone='' +pavucontrol='' + +rofi_cmd() { + rofi -theme "$theme_path" -dmenu -markup-rows +} + +# Microphone Info +amixer get Capture | grep '\[on\]' &>/dev/null +if [[ "$?" == 0 ]]; then + microphone='' +else + microphone='' +fi + +# Microphone Info +amixer get Master | grep '\[on\]' &>/dev/null +if [[ "$?" == 0 ]]; then + volume='' +else + volume='' +fi + +run_cmd() { + if [[ "$1" == '--opt1' ]]; then + amixer set Master toggle + elif [[ "$1" == '--opt2' ]]; then + amixer set Capture toggle + elif [[ "$1" == '--opt3' ]]; then + exec pavucontrol + fi +} + +run() { + echo -e "$volume\n$microphone\n$pavucontrol" | rofi_cmd +} + +chosen="$(run)" +case ${chosen} in + $volume) + run_cmd --opt1 + ;; + $microphone) + run_cmd --opt2 + ;; + $pavucontrol) + run_cmd --opt3 + ;; +esac diff --git a/rofi/volume/volume_menu.rasi b/rofi/volume/volume_menu.rasi new file mode 100644 index 0000000..0801f8b --- /dev/null +++ b/rofi/volume/volume_menu.rasi @@ -0,0 +1,83 @@ +/*****----- Configuration -----*****/ +configuration { + show-icons: false; +} + +/* +USE_BUTTONS=YES +*/ + +@import "../colors.rasi" + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: east; + anchor: east; + fullscreen: false; + width: 80px; + x-offset: -20px; + y-offset: 0px; + + padding: 0px; + border: 0px solid; + border-radius: 100%; + border-color: @selected; + cursor: "default"; + background-color: @background; +} + +mainbox { + background-color: transparent; + children: [ "listview" ]; +} + +inputbar { + enable: true; + background-color: transparent; + children: [ "textbox-prompt-colon", "dummy", "prompt" ]; +} + +promt { + enable: false; + background-color: transparent; +} + +textbox-prompt-colon { + enable: false; + background-color: transparent; +} + +dummy { + background-color: transparent; +} + +listview { + columns: 1; + lines: 3; + background-color: transparent; + spacing: 10px; + padding: 10px; +} + +element { + background-color: @background-alt; + text-color: @foreground; + border-radius: 100%; + cursor: pointer; + padding: 15px 0; +} + +element-text { + font: "FiraCode Nerd Font Propo 18"; + background-color: transparent; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} + +element selected.normal { + background-color: @selected; + text-color: @background; +} diff --git a/sxhkd/sxhkdrc b/sxhkd/sxhkdrc index b62c3c7..d65a36d 100644 --- a/sxhkd/sxhkdrc +++ b/sxhkd/sxhkdrc @@ -10,10 +10,9 @@ Print # terminal emulator super + Return tabbed -r 2 st -w '' -# program launcher + # program launcher super + d - rofi -show drun - - + ~/.config/rofi/launcher/launch.sh # make sxhkd reload its configuration files: super + Escape diff --git a/yazi/init.lua b/yazi/init.lua index f2983c4..606f974 100644 --- a/yazi/init.lua +++ b/yazi/init.lua @@ -41,3 +41,7 @@ setup { -- Available values: ui.Border.PLAIN, ui.Border.ROUNDED type = ui.Border.ROUNDED, } + +require("archivemount"):setup() +require("chmod") +require("starship").setup() diff --git a/yazi/keymap.toml b/yazi/keymap.toml new file mode 100644 index 0000000..f8473c4 --- /dev/null +++ b/yazi/keymap.toml @@ -0,0 +1,21 @@ +[[manager.prepend_keymap]] +on = "" +run = ''' + shell 'dragon -x -i -T "$1"' --confirm +''' + +[[manager.prepend_keymap]] +on = "y" +run = [ ''' + shell 'echo "$@" | xclip -i -selection clipboard -t text/uri-list' --confirm +''', "yank" ] + +[[manager.prepend_keymap]] +on = [ "m", "a" ] +run = "plugin archivemount --args=mount" +desc = "Mount selected archive" + +[[manager.prepend_keymap]] +on = [ "m", "u" ] +run = "plugin archivemount --args=unmount" +desc = "Unmount and save changes to original archive" diff --git a/yazi/plugins/archivemount.yazi b/yazi/plugins/archivemount.yazi new file mode 160000 index 0000000..354a4d6 --- /dev/null +++ b/yazi/plugins/archivemount.yazi @@ -0,0 +1 @@ +Subproject commit 354a4d6df9df6187f811c9e24598351e3180e195 diff --git a/yazi/plugins/chmod.yazi/init.lua b/yazi/plugins/chmod.yazi/init.lua new file mode 100644 index 0000000..bfb0970 --- /dev/null +++ b/yazi/plugins/chmod.yazi/init.lua @@ -0,0 +1,39 @@ +local selected_or_hovered = ya.sync(function() + local tab, paths = cx.active, {} + for _, u in pairs(tab.selected) do + paths[#paths + 1] = tostring(u) + end + if #paths == 0 and tab.current.hovered then + paths[1] = tostring(tab.current.hovered.url) + end + return paths +end) + +return { + entry = function() + ya.manager_emit("escape", { visual = true }) + + local urls = selected_or_hovered() + if #urls == 0 then + return ya.notify { title = "Chmod", content = "No file selected", level = "warn", timeout = 5 } + end + + local value, event = ya.input { + title = "Chmod:", + position = { "top-center", y = 3, w = 40 }, + } + if event ~= 1 then + return + end + + local status, err = Command("chmod"):arg(value):args(urls):spawn():wait() + if not status or not status.success then + ya.notify { + title = "Chmod", + content = string.format("Chmod with selected files failed, exit code %s", status and status.code or err), + level = "error", + timeout = 5, + } + end + end, +} diff --git a/yazi/plugins/starship.yazi b/yazi/plugins/starship.yazi new file mode 160000 index 0000000..20d5a4d --- /dev/null +++ b/yazi/plugins/starship.yazi @@ -0,0 +1 @@ +Subproject commit 20d5a4d4544124bade559b31d51ad41561dad92b diff --git a/yazi/yazi.toml b/yazi/yazi.toml index b75af7e..edc9e5f 100644 --- a/yazi/yazi.toml +++ b/yazi/yazi.toml @@ -2,5 +2,4 @@ show_hidden = true [preview] -image_uality = 90 - +image_quality = 70