diff --git a/.wallpaper.png b/.wallpaper.png index 7283280..51ebabc 100644 Binary files a/.wallpaper.png and b/.wallpaper.png differ diff --git a/alacritty/.config/alacritty/alacritty.yml b/alacritty/.config/alacritty/alacritty.yml index 898c9e1..469f4aa 100644 --- a/alacritty/.config/alacritty/alacritty.yml +++ b/alacritty/.config/alacritty/alacritty.yml @@ -6,8 +6,8 @@ background_opacity: 1.0 window: padding: - x: 8 - y: 8 + x: 16 + y: 16 # Window title title: Terminal diff --git a/eww/.config/eww/eww.scss b/eww/.config/eww/eww.scss index 6be7e14..201b104 100644 --- a/eww/.config/eww/eww.scss +++ b/eww/.config/eww/eww.scss @@ -29,160 +29,119 @@ $anim-transition: 150ms; * { all: unset; //Unsets everything so you can style everything from scratch - font-family: "Fira Code"; - // color: $fg-color; + font-family: "Lato Mono"; } tooltip { - color: $fg-alt-color; + color: $fg-color; background-color: $bg-alt-color; + border-radius: 12px; } .bar-1, .bar-2 { - background-color: $bg-color; - color: $fg-alt-color; - border-right: solid 1px $border-color; + background-color: rgba(29, 31, 33, 0.65); } -.segment-end { +.main-cont { + padding-left: 1.5rem; + padding-right: 1.5rem; + padding-top: 1px; } -// Styles on classes (see eww.yuck for more information) -button { - transition-property: opacity, color; - transition-duration: $anim-transition; +.segment-start, +.segment-middle, +.segment-end { } -// Workspaces -.workspaces { - padding: .3rem; +.icon { + opacity: 1; + transition: opacity $anim-transition; } -.workspaces > button { - font-size: $font-size; - margin: 4px; +.icon:hover { + opacity: 0.6; } -.workspaces > button:hover { - color: $fg-sel-color; - opacity: 0.8; +.inactive, +.active { + font-size: 1.4rem; } -button.active { - // font-weight: bold; - color: $fg-sel-color; +.inactive { + color: $fg-alt-color; + transition: color $anim-transition; } - -button.inactive { - color: $fg-desel-color; +.active { + color: $fg-color; } -// Generic stuff -scale trough { - all: unset; - background-color: $bg-alt-color; - border-radius: 5px; - min-height: 60px; - min-width: 4px; - margin: 0.3rem 0 0.3rem 0; +// POWERMENU +.pm-inner { + padding-left: 6px; + padding-right: 6px; + margin-top: -1px; } -// Menu -.powermenu { - transition: color $anim-transition; - // border-right: solid 1px $border-color; - padding: 0.5rem 0.2rem 0.3rem 0.2rem; +.pm-inner button { + font-size: 16px; } -.quit, -.lock, -.reboot, .poweroff { - // padding: .5rem .2rem .3rem .2rem; -} - -// Colors for the buttons -.lock:hover { - color: $blue; -} -.quit:hover { - color: $green; -} -.reboot:hover { - color: $yellow; -} -.poweroff:hover { color: $red; } -.pm-active { - // background-color: $bg-alt-color; - // border-radius: 5px; +.reboot { + color: $yellow; } -.pm-inner { - padding: 0.2rem 0; +.logout { + color: $green; } -// Control -.control { - margin-bottom: $logo-size; - margin-bottom: 0.5rem; - font-family: Material Icons; - font-size: 1.6em; +.lock { + color: $blue; } +// ICON & LOGO .icon { - margin: 0 0.2rem; - font-size: $icon-size; - font-family: Material Icons; - padding: 0 1px; + font-size: 1.2rem; + padding-left: 6px; + padding-right: 6px; } -.icon:hover { - opacity: 0.6; +.logo { + font-weight: 600; } -// Volume stuff -.volbar trough highlight { - background-color: $fg-accent; - border-radius: 5px; +.logo-seperator { + border-left: 2px solid $fg-color; } -// Time .time { - // color: $fg-alt-color; - font-size: 11px; - font-weight: bold; - border-top: solid 2px $fg-alt-color; - padding-top: 1rem; - margin-bottom: 0.5rem; -} - -// Logo button -.logo { - margin: 0 0.8rem; - margin-top: 6px; - font-size: $logo-size; + font-size: 1rem; + font-weight: 600; } -.logo-seperator { - border-bottom: 2px solid $border-color; - padding-bottom: 0.4rem; +// Volume stuff +.vol { + padding-left: 0; } -// Color overrides -.red { - color: $red; - opacity: 0.8; +.volbar trough highlight { + background-color: $fg-accent; + border-radius: 8px; } -// Music widget -.musicmenu { - // background-color: $bg-alt-color; +scale trough { + all: unset; + background-color: $bg-alt-color; + border-radius: 8px; + min-height: 6px; + min-width: 70px; + margin: 0px 8px 0px 0px; } -.mm-inner { - color: $blue; +.red { + color: $red; } diff --git a/eww/.config/eww/eww.yuck b/eww/.config/eww/eww.yuck index dd3c2c3..7772268 100644 --- a/eww/.config/eww/eww.yuck +++ b/eww/.config/eww/eww.yuck @@ -1,169 +1,146 @@ -(defwidget bar [screen] - (box :orientation "v" - :vexpand "false" - :hexpand "false" - (box :class "segment-start" - :valign "start" - :halign "center" - :space-evenly false - :orientation "v" - :space-evenly false - (power :screen screen) - ) - (box :class "segment-mid" - :valign "center" - :halign "center" - :orientation "v" - :space-evenly false - (workspaces :wsp workspaces-data :screen screen) - ) - (box :class "segment-end" - :valign "end" - :halign "center" - :orientation "v" - :space-evenly true - (control :screen screen) - ) - ) +(defwidget bar-1 [screen] + (box :class "main-cont" + :orientation "h" + (box :class "segment-start" + :halign "start" + :valign "center" + (start-control :screen screen) + ) + (box :class "segment-center" + :halign "center" + :valign "center" + :space-evenly true + (mid-control) + ) + (box :class "segment-end" + :halign "end" + :valign "center" + (end-control) + ) + ) ) (defwidget bar-2 [screen] - (box :orientation "v" - :vexpand "false" - :hexpand "false" - (box :class "segment-start" - :valign "start" - :halign "center" - :space-evenly false - :orientation "v" - :space-evenly false - ;; (power :screen screen) - ) - (box :class "segment-mid" - :valign "center" - :halign "center" - :orientation "v" - :space-evenly false - (workspaces :wsp workspaces-data :screen screen) - ) - (box :class "segment-end" - :valign "end" - :halign "center" - :orientation "v" - :space-evenly true - (control-2 :screen screen) - ) - ) + (box :class "main-cont" + :orientation "h" + (box :class "segment-start" + :halign "start" + :valign "center" + (start-control :screen screen) + ) + (box :class "segment-center" + :halign "center" + :valign "center" + :space-evenly true + (mid-control) + ) + (box :class "segment-end" + :halign "end" + :valign "center" + ) + ) ) ;; Powermenu widget (defwidget power [] (eventbox ;;:onhover "${EWW_CMD} update power=true" :onhoverlost "${EWW_CMD} update power=false" - (box :orientation "v" + (box :orientation "h" :space-evenly "false" :vexpand "false" :class "powermenu ${power ? 'pm-active' : ''}" ;; Open menu button - (button :class "icon logo ${power ? 'logo-seperator' : ''}" - :tooltip "Open menu" - :onclick "${EWW_CMD} update power=true" "Λ") - (revealer :transition "slidedown" + (revealer :transition "slideleft" :reveal power :duration "450ms" - (box :orientation "v" + (box :orientation "h" :class "pm-inner" :space-evenly true - :halign "middle" - :spacing 6 + :valign "center" + :spacing 8 ;; Lock screen (button :class "icon lock" :tooltip "Lock screen" - :onclick "betterlockscreen -l" "") + :onclick "betterlockscreen -l" "󰌾") ;; Quit WM (goto login manager) - (button :class "icon quit" + (button :class "icon logout" :tooltip "Logout" - :onclick "loginctl kill-session $XDG_SESSION_ID" "") + :onclick "loginctl kill-session $XDG_SESSION_ID" "󰍃") ;; Reboot (button :class "icon reboot" :tooltip "Reboot" - :onclick "reboot" "") + :onclick "reboot" "󰑓") ;; Poweroff (button :class "icon poweroff" :tooltip "Poweroff" - :onclick "poweroff" "") + :onclick "poweroff" "󰐥") )) + (button :class "icon logo ${power ? 'logo-seperator' : ''}" + :tooltip "Open menu" + :onclick "${EWW_CMD} update power=true" "󰘧") ))) (defvar power false) ;; Control widget (container) -(defwidget control [] - (box :class "control" :spacing 12 :space-evenly false :orientation "v" - (music) - (volume) - (wifi) - (bat) - (time) +(defwidget start-control [screen] + (box :class "control" :spacing 16 :space-evenly false :orientation "h" + (workspaces :wsp workspaces-data :screen screen) ) ) - -(defwidget control-2 [] - (box :class "control" :spacing 12 :space-evenly false :orientation "v" - ;; (wifi) - ;; (bat) - ;; (music) - ;; (volume) +(defwidget mid-control [] + (box :class "control" :spacing 16 :space-evenly false :orientation "h" (time) ) ) +(defwidget end-control [] + (box :class "control" :spacing 16 :space-evenly false :orientation "h" + (music) + (bat) + (wifi) + (volume) + (power) + ) + ) ;; Clock Widget (defwidget time [] - (box :orientation "v" + (box :orientation "h" :class "time" - :valign "end" - (button :onclick "scripts/popup calendar" - :class "hour" hour) - (button :onclick "scripts/popup calendar" - :class "min" min) + :space-evenly "false" + :halign "center" (button :onclick "scripts/popup calendar" - :class "sec" sec) + :class "day" full-time) )) -(defpoll hour :interval "1s" "date '+%H'") -(defpoll min :interval "1s" "date '+%M'") -(defpoll sec :interval "1s" "date '+%S'") +(defpoll full-time :interval "1s" "date +'%d %B (%m), %Y - %A %H:%M:%S'") ;; Volume widget (defwidget volume [] - (eventbox :onhover "${EWW_CMD} update volume=true" - :onhoverlost "${EWW_CMD} update volume=false" - (box :orientation "v" - :space-evenly "false" - :spacing 2 - (revealer :transition "slideup" - :reveal volume - :duration "450ms" - (scale :class "volbar" - :value {current-volume != "" ? current-volume : "0"} - :orientation "v" - :flipped true - :tooltip "Volume: ${current-volume}%" - :max 101 - :min 0 - :onchange "amixer -D pulse sset Master {}%" - ) - ) - (button :onclick "amixer -D pulse set Master 1+ toggle" - :class "icon volume + ${muted-volume != 'on' ? 'red' : ''}" - :tooltip "Volume: ${current-volume}%" - {muted-volume != "on" ? "ﱝ" : "墳"} - ) - ))) + (eventbox :onhover "${EWW_CMD} update volume=true" + :onhoverlost "${EWW_CMD} update volume=false" + (box :class "" :space-evenly "false" :orientation "h" :spacing "4" + (revealer :transition "slideleft" + :reveal volume + :duration "350ms" + (scale :class "volbar" + :value current-volume + :flipped true + :orientation "h" + :max 100 + :min 0 + :onchange "amixer -D pulse sset Master {}%" ) + ) + (button :onclick "amixer -D pulse set Master 1+ toggle" + :tooltip "Volume on/off" + :class "icon vol" {muted-volume != "on" ? "󰝟" : "󰕾"} + ) + ) + ) +) (defvar volume false) (defpoll current-volume :interval "180ms" "amixer -D pulse sget Master | grep 'Left:' | awk -F'[][]' '{ print $2 }' | tr -d '%'") (defpoll muted-volume :interval "180ms" "amixer -D pulse sget Master | grep 'Left:' | awk -F'[][]' '{ print $4 }' | tr -d '%'") @@ -173,7 +150,7 @@ (box :orientation "v" :space-evenly "false" (label :class "icon bat" - :halign "middle" + :halign "center" :text battery :tooltip "Battery: ${battery-cappacity}%"))) (defpoll battery :interval "1s" "scripts/battery icon") @@ -193,7 +170,7 @@ ;; Workspaces container (defwidget workspaces [wsp] - (box :space-evenly true :spacing 4 :orientation "v" :class "workspaces" + (box :space-evenly true :spacing 16 :orientation "h" :class "workspaces" (for ws in wsp (workspace :data ws) ))) @@ -202,48 +179,47 @@ (defwidget workspace [data] (button :onclick "wmctrl -s ${data['index']}" :class {data["iscurrent"] == true ? "active" : "inactive"} - "${data['name']}" + ;; "${data['name']}" + :tooltip "Switch to workspace ${data['name']}" + {data["iscurrent"] == true ? "" : ""} )) (deflisten workspaces-data "scripts/workspace.py") ;; Music widget (defwidget music [] - (revealer :reveal {music-active == "true"} - (eventbox :onhover "${EWW_CMD} update music=true" - :onhoverlost "${EWW_CMD} update music=false" - (box :orientation "v" + (revealer :reveal {music-active == "true"} + (eventbox :onhover "${EWW_CMD} update music=true" + :onhoverlost "${EWW_CMD} update music=false" + (box :orientation "h" :space-evenly "false" - :vexpand "false" :class "musicmenu ${music ? 'mm-active' : ''}" - (revealer :transition "slideup" + (revealer :transition "slideleft" :reveal music :flipped true :duration "450ms" - (box :orientation "v" + (box :orientation "h" :class "mm-inner" :space-evenly true - :halign "middle" - :spacing 4 + :valign "center" + :spacing 8 - ;; Next - (button :class "icon next" + ;; Pause + (button :class "icon prev" :tooltip "Pause/play" - :onclick "playerctl next" "") + :onclick "playerctl previous" "") ;; Pause (button :class "icon pause" :tooltip "Pause/play" - :onclick "playerctl play-pause" {music-status == "Playing" ? "" : ""}) - - ;; Pause - (button :class "icon prev" + :onclick "playerctl play-pause" {music-status == "Playing" ? "󰏤" : "󰐊"}) + ;; Next + (button :class "icon next" :tooltip "Pause/play" - :onclick "playerctl previous" "") - + :onclick "playerctl next" "") )) ;; Open menu button (button :class "icon" - :tooltip "${title} - ${artist}" - :onclick "${EWW_CMD} update music=true" "") + :tooltip "Music" + :onclick "${EWW_CMD} update music=true" "󰎈") ) ))) @@ -263,23 +239,24 @@ :windowtype "dock" :geometry (geometry :x "0%" :y "0%" - :width "42px" - :height "100%" - :anchor "left center") - :reserve (struts :side "left" :distance "42px") + :width "100%" + :height "32px" + :anchor "top center") + :reserve (struts :side "top" :distance "32px") :hexpand "false" :vexpand "false" - (bar :screen 1)) + (bar-1 :screen 1)) (defwindow bar-2 :monitor 1 :windowtype "dock" :geometry (geometry :x "0%" :y "0%" - :width "42px" - :height "100%" - :anchor "left center") - :reserve (struts :side "left" :distance "42px") + :width "100%" + :height "32px" + :anchor "top center") + :reserve (struts :side "top" :distance "32px") :hexpand "false" :vexpand "false" (bar-2 :screen 2)) + diff --git a/nvim/.config/nvim/init.lua b/nvim/.config/nvim/init.lua index 8f67800..3033c25 100644 --- a/nvim/.config/nvim/init.lua +++ b/nvim/.config/nvim/init.lua @@ -14,7 +14,7 @@ local theme = require("onedark") theme.setup { -- Main options -- style = "warmer", -- Default theme style. Choose between "dark", "darker", "cool", "deep", "warm", "warmer" and "light" - transparent = false, -- Show/hide background + transparent = true, -- Show/hide background term_colors = true, -- Change terminal color as per the selected theme style ending_tildes = false, -- Show the end-of-buffer tildes. By default they are hidden cmp_itemkind_reverse = false, -- reverse item kind highlights in cmp menu diff --git a/nvim/.config/nvim/plugin/after/lsp.lua b/nvim/.config/nvim/plugin/after/lsp.lua index 60c2692..145a859 100644 --- a/nvim/.config/nvim/plugin/after/lsp.lua +++ b/nvim/.config/nvim/plugin/after/lsp.lua @@ -11,6 +11,7 @@ lsp.ensure_installed({ "clangd", "tailwindcss", "prismals", + "gopls", }) local cmp = require("cmp") @@ -37,8 +38,8 @@ lsp.on_attach(function(client, bufnr) vim.keymap.set("n", "K", function() vim.lsp.buf.hover() end, opts) vim.keymap.set("n", "vws", function() vim.lsp.buf.workspace_symbol() end, opts) vim.keymap.set("n", "vd", function() vim.diagnostic.open_float() end, opts) - vim.keymap.set("n", "[d", function() vim.diagnostic.goto_next() end, opts) - vim.keymap.set("n", "]d", function() vim.diagnostic.goto_prev() end, opts) + vim.keymap.set("n", "fd", function() vim.diagnostic.goto_next() end, opts) + vim.keymap.set("n", "ffd", function() vim.diagnostic.goto_prev() end, opts) vim.keymap.set("n", "vca", function() vim.lsp.buf.code_action() end, opts) vim.keymap.set("n", "vrr", function() vim.lsp.buf.references() end, opts) vim.keymap.set("n", "vrn", function() vim.lsp.buf.rename() end, opts) diff --git a/picom/.config/picom/picom.conf b/picom/.config/picom/picom.conf index 29d856a..16b2546 100644 --- a/picom/.config/picom/picom.conf +++ b/picom/.config/picom/picom.conf @@ -77,37 +77,31 @@ focus-exclude = [ "class_g = 'Cairo-clock'" ]; # Parameters for background blurring, see the *BLUR* section for more information. -# blur-method = "dual_kawase"; -# blur-strength = 8; -# blur-size = 2; - - -# -# blur-deviation = false -# -# blur-strength = 5 +blur-method = "dual_kawase"; +blur-strength = 400; +blur-size = 2; # Blur background of semi-transparent / ARGB windows. # Bad in performance, with driver-dependent behavior. # The name of the switch may change without prior notifications. # -# blur-background = false +# blur-background = true # Blur background of windows when the window frame is not opaque. # Implies: # blur-background # Bad in performance, with driver-dependent behavior. The name may change. # -# blur-background-frame = false +blur-background-frame = true # Use fixed blur strength rather than adjusting according to window opacity. -blur-background-fixed = false +blur-background-fixed = true # Specify the blur convolution kernel, with the following format: # example: -blur-kern = "5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1"; +# blur-kern = "5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1"; # # blur-kern = "" # blur-kern = "3x3box"; @@ -341,12 +335,14 @@ rounded-corners-exclude = [ # "class_g = 'URxvt'", # "class_g = 'XTerm'", # "class_g = 'kitty'", - "class_g = 'Alacritty'", - "class_g = 'discord'", - "class_g = 'Polybar'", + # "class_g = 'Alacritty'", + "class_g = 'eww-bar-1'", + "class_g = 'eww-bar-2'", + # "class_g = 'discord'", + # "class_g = 'Polybar'", # "class_g = 'code-oss'", # "class_g = 'TelegramDesktop'", - "class_g = 'firefox'", + # "class_g = 'firefox'", # "class_g = 'Thunderbird'" ]; round-borders = 0; diff --git a/preview.png b/preview.png index d485da9..7a089ac 100644 Binary files a/preview.png and b/preview.png differ diff --git a/rofi/.config/rofi/doomsidebar.rasi b/rofi/.config/rofi/doomsidebar.rasi index 3a14f6e..1a5e0a5 100644 --- a/rofi/.config/rofi/doomsidebar.rasi +++ b/rofi/.config/rofi/doomsidebar.rasi @@ -1,16 +1,17 @@ * { - text-color: #efefef; + text-color: #fff; background-color: rgba(1, 0, 0, 0); - dark: #282828; + dark: #000; border-color: #1d1f21; // Black blue: #81a2be; lightblue: #81a2be; cyan: #add9ff; lightcyan: #add9ff; - black: #1d1f21; - lightblack: #1d1f21; - blackop: #1d1f21aa; + black: #000; + lightblack: #111; + blackop: #000a; + lightblackop: #1119; red: #cc6666; lightred: #cc6666; green: #b5bd68; @@ -26,11 +27,11 @@ highlight: bold #ccc; } window { - /* height: 14em; */ - /* width: 24em; */ - height: 100%; - width: 100%; - location: west; + height: 14em; + width: 24em; + /*height: 100%;*/ + /*width: 100%;*/ + location: center; /* anchor: center; */ text-color: @lightwhite; } @@ -44,9 +45,8 @@ button selected { text-color: @lightgreen; } inputbar { - background-color: @black; text-color: @lightgreen; - padding: 0.4em 1em; + padding: 0.2em 1em; height: 32px; } entry { @@ -55,10 +55,10 @@ prompt { margin: 0 0.4em 0 0; } mainbox { - /* padding: 0.2em; */ + padding: 0.7em 0em; expand: true; - background-color: @blackop; - spacing: 1em; + background-color: @lightblackop; + spacing: 0.5em; } listview { padding: 0em 0.4em 0em 1em; @@ -74,7 +74,7 @@ element { border-radius: 2px; } element selected normal { - background-color: @blue; + text-color: @lightblue; } element normal active { text-color: @lightblue; diff --git a/zathura/.config/zathura/gruvbox-dark b/zathura/.config/zathura/gruvbox-dark index 88ebdcc..31e6b99 100644 --- a/zathura/.config/zathura/gruvbox-dark +++ b/zathura/.config/zathura/gruvbox-dark @@ -1,12 +1,12 @@ -set notification-error-bg "#181818" # bg +set notification-error-bg "#1d1f21" # bg set notification-error-fg "#fb4934" # bright:red -set notification-warning-bg "#181818" # bg +set notification-warning-bg "#1d1f21" # bg set notification-warning-fg "#fabd2f" # bright:yellow -set notification-bg "#181818" # bg +set notification-bg "#1d1f21" # bg set notification-fg "#b8bb26" # bright:green set completion-bg "#504945" # bg2 -set completion-fg "#ebdbb2" # fg +set completion-fg "#ffffff" # fg set completion-group-bg "#3c3836" # bg1 set completion-group-fg "#928374" # gray set completion-highlight-bg "#83a598" # bright:blue @@ -14,27 +14,27 @@ set completion-highlight-fg "#504945" # bg2 # Define the color in index mode set index-bg "#504945" # bg2 -set index-fg "#ebdbb2" # fg +set index-fg "#ffffff" # fg set index-active-bg "#83a598" # bright:blue set index-active-fg "#504945" # bg2 -set inputbar-bg "#181818" # bg -set inputbar-fg "#ebdbb2" # fg +set inputbar-bg "#1d1f21" # bg +set inputbar-fg "#ffffff" # fg -set statusbar-bg "#181818" # bg2 -set statusbar-fg "#ebdbb2" # fg +set statusbar-bg "#1d1f21" # bg2 +set statusbar-fg "#ffffff" # fg set highlight-color "#fabd2f" # bright:yellow set highlight-active-color "#fe8019" # bright:orange -set default-bg "#181818" # bg -set default-fg "#ebdbb2" # fg +set default-bg "#1d1f21" # bg +set default-fg "#ffffff" # fg set render-loading true -set render-loading-bg "#181818" # bg -set render-loading-fg "#ebdbb2" # fg +set render-loading-bg "#1d1f21" # bg +set render-loading-fg "#ffffff" # fg # Recolor book content's color -set recolor-lightcolor "#181818" # bg -set recolor-darkcolor "#ebdbb2" # fg +set recolor-lightcolor "#1d1f21" # bg +set recolor-darkcolor "#ffffff" # fg set recolor "true" # set recolor-keephue true # keep original color diff --git a/zsh/.zshrc b/zsh/.zshrc index 8255f57..736308c 100644 --- a/zsh/.zshrc +++ b/zsh/.zshrc @@ -115,3 +115,16 @@ export EDITOR=nvim export PYENV_ROOT="$HOME/.pyenv" command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init -)" + +# pnpm +export PNPM_HOME="/home/elal/.local/share/pnpm" +case ":$PATH:" in + *":$PNPM_HOME:"*) ;; + *) export PATH="$PNPM_HOME:$PATH" ;; +esac +# pnpm end + +# PYENV +export PYENV_ROOT="$HOME/.pyenv" +command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init -)"