diff --git a/.XResources b/.XResources new file mode 100644 index 000000000..768fdb0b4 --- /dev/null +++ b/.XResources @@ -0,0 +1,34 @@ +! ~/.Xresources + +! colors, defaults +"color0":"#282936" +"color1":"#ea51b2" +"color2":"#00f769" +"color3":"#ebff87" +"color4":"#62d6e8" +"color5":"#b45bcf" +"color6":"#a1efe4" +"color7":"#e9e9f4" +"color8":"#4d4f68" +"color9":"#ea51b2" +"color10":"#00f769" +"color11":"#ebff87" +"color12":"#62d6e8" +"color13":"#b45bcf" +"color14":"#a1efe4" +"color15":"#f7f7fb" + +! rofi +rofi.color-enabled: true +rofi.separator-style: solid +rofi.font: FONT SIZE +rofi.bw: 2 +rofi.columns: 1 +rofi.yoffset: 0 +rofi.fake-transparency: false +rofi.hide-scrollbar: true + +rofi.location: 0 +rofi.width: 30 +rofi.lines: 10 +rofi.fixed-num-lines: true diff --git a/.circleci/verify_install.sh b/.circleci/verify_install.sh new file mode 100755 index 000000000..937057d28 --- /dev/null +++ b/.circleci/verify_install.sh @@ -0,0 +1,240 @@ +#!/bin/bash + +info() { + printf "\\r [ \\033[00;34m..\\033[0m ] %s\\n" "${1}" +} + +user() { + printf "\\r [ \\033[0;33m??\\033[0m ] %s\\n" "${1}" +} + +success() { + printf "\\r\\033[2K [ \\033[00;32mOK\\033[0m ] %s\\n" "${1}" +} + +in_progress() { + printf "\\r [ \\033[00;34m\\u23F0\\033[0m ] %s\\r" "${1}" +} + +fail() { + printf "\\r\\033[2K [\\033[0;31mFAIL\\033[0m] %s\\n" "${1}" >&2 + exit 666 +} + +exists() { + command -v "$1" &>/dev/null +} + +retry() { + local n=1 + local max=50 + local delay=2 + + while true; do + if "$@"; then + break + else + if [[ $n -lt $max ]]; then + ((n++)) + sleep $delay + else + fail "The command has failed after $n attempts." + fi + fi + done +} + +validate_bin_accessible() ( + bins_to_check=( + # founations + nvim + zsh + terminator + # containers & stuff + docker + docker-compose + # git & utils + git + git-lfs + git-extras + exiftool + # gotta have python dawg + python2 + python3 + # node should be provided as well + node + # do not forget golang + go + # browsers + google-chrome-unstable + firefox + brave-browser-beta + # linters matter + shellcheck + yamllint + # utilities + purge-old-kernels + snap + http + tree + aria2c + ctags + htop + jq + ) + + for bin in "${bins_to_check[@]}"; do + if retry exists "${bin}"; then + success "${bin} is accessible via $(whereis "${bin}")" + else + fail "${bin} is not accessible" + fi + done +) + +validate_interactive_bins() ( + bins_to_check=( + pyenv + nodenv + goenv + jenv + fzf + ) + + for bin in "${bins_to_check[@]}"; do + bin_path="${HOME}/.${bin}/bin/${bin}" + + if [[ -s "${bin_path}" ]]; then + v_out=$($bin_path --version | tr "'${bin}'" ' ' | sed -e 's/^[[:space:]]*//') + success "${bin} is accessible via ${bin_path} with version ${v_out}" + else + fail "${bin} is not accessible" + fi + + if retry exists "${bin}"; then + success "${bin} is accessible via $(whereis "${bin}")" + else + fail "${bin} is not accessible" + fi + done +) + +validate_pyenv() ( + if [[ ! -s "${HOME}/.pyenv" ]]; then + fail "Failed to locate pyenv directory in \$HOME" + else + success "pyenv directory set" + + local venvs_to_check + venvs_to_check=( + neovim2 + neovim3 + ) + + for venv in "${venvs_to_check[@]}"; do + if ! "${HOME}/.pyenv/bin/pyenv" versions | grep -q "${venv}"; then + fail "Virtualenv ${venv} was not installed" + else + success "Virtualenv ${venv} :: $(${HOME}/.pyenv/bin/pyenv shell ${venv} | python --version) is installed" + fi + done + + zsh -mil -c "pyenv doctor" + if [[ ! -f "${HOME}/.pyenv/version" ]]; then + fail "pyenv did not set global system version" + fi + fi +) + +validate_nodenv() ( + if [[ ! -s "${HOME}/.nodenv" ]]; then + fail "Failed to locate nodenv directory in \$HOME" + else + success "nodenv directory set" + zsh -mil -c "npx -p @nodenv/nodenv-installer nodenv-doctor" + if [[ ! -f "${HOME}/.nodenv/version" ]]; then + fail "nodenv did not set global system version" + fi + fi + + local bins_to_check + bins_to_check=( + neovim-node-host + prettier + tsc + elm-language-server + bash-language-server + vim-language-server + docker-langserver + ) + for bin in "${bins_to_check[@]}"; do + bin_path="$(command -v "${bin}")" + + if [[ -s "${bin_path}" ]]; then + if $bin_path --version 2>/dev/null 1>/dev/null; then + v_out=$($bin_path --version | tr -d 'Version ' | tr "'${bin}'" ' ' | sed -e 's/^[[:space:]]*//') + else + v_out="?" + fi + success "${bin} is accessible via ${bin_path} with version ${v_out}" + else + fail "${bin} is not accessible" + fi + + done + +) + +validate_goenv() ( + if [[ ! -s "${HOME}/.goenv" ]]; then + fail "Failed to locate goenv directory in \$HOME" + else + success "goenv directory set" + if [[ ! -f "${HOME}/.goenv/version" ]]; then + fail "goenv did not set global system version" + fi + fi +) + +validate_jenv() ( + if [[ ! -s "${HOME}/.jenv" ]]; then + fail "Failed to locate jenv directory in \$HOME" + else + success "jenv directory set" + jenv doctor + if [[ ! -f "${HOME}/.jenv/version" ]]; then + fail "jenv did not set global system version" + fi + fi +) + +validate_git_config() ( + if [[ ! -f "${HOME}/.gitconfig.local" ]]; then + fail "Local git configuration not set" + else + success "git configured" + fi +) + +validate_wakatime_config() ( + if [[ ! -f "${HOME}/.wakatime.cfg" ]]; then + fail "Local wakatime configuration not set" + else + success "wakatime configured" + fi +) + +info 'Validating installation' +( + info "Path is [ $(echo "${PATH}" | tr ':' '\t\r\n') ]" + validate_git_config + validate_wakatime_config + validate_bin_accessible + validate_interactive_bins + validate_pyenv + validate_nodenv + validate_goenv + validate_jenv +) +info 'Validation successful' +screenfetch diff --git a/.gitmodules b/.gitmodules index f37c94f64..db8d94f0f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -18,17 +18,6 @@ url = https://github.com/nodenv/nodenv.git shallow = true branch = master -[submodule "dependencies/ctags"] - path = dependencies/ctags - url = https://github.com/universal-ctags/ctags.git - shallow = true - ignore = untracked - branch = master -[submodule "dependencies/dotbot_plugin_aptget"] - path = dependencies/dotbot_plugin_aptget - url = https://github.com/dein0s/dotbot_plugin_aptget.git - shallow = true - branch = master [submodule "dependencies/xxenv-latest"] path = dependencies/xxenv-latest url = https://github.com/momo-lab/xxenv-latest diff --git a/.installer/install_brave.sh b/.installer/install_brave.sh deleted file mode 100755 index 63c310826..000000000 --- a/.installer/install_brave.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -distro=$(lsb_release -si 2>&1) - -curl -s https://brave-browser-apt-beta.s3.brave.com/brave-core-nightly.asc | apt-key --keyring /etc/apt/trusted.gpg.d/brave-browser-beta.gpg add - - -if [[ "${distro}" == "LinuxMint" ]]; then - echo "deb [arch=amd64] https://brave-browser-apt-beta.s3.brave.com/ trusty main" | tee /etc/apt/sources.list.d/brave-browser-beta-trusty.list -elif [[ "${distro}" == "Ubuntu" ]]; then - source /etc/os-release - echo "deb [arch=amd64] https://brave-browser-apt-beta.s3.brave.com/ $UBUNTU_CODENAME main" | tee "/etc/apt/sources.list.d/brave-browser-beta-${UBUNTU_CODENAME}.list" -fi - -aptitude update -q -y -aptitude install -y -V -D -Z brave-browser-beta diff --git a/.installer/install_chrome.sh b/.installer/install_chrome.sh deleted file mode 100755 index c235c8a8a..000000000 --- a/.installer/install_chrome.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - -sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google.list' - -aptitude update -q -y -aptitude install -y -V -D -Z google-chrome-unstable diff --git a/.installer/install_ctags.sh b/.installer/install_ctags.sh deleted file mode 100755 index f0e1e3a31..000000000 --- a/.installer/install_ctags.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash - -CTAGS_DIR="${PWD}/dependencies/ctags" - -[ ! -d "${CTAGS_DIR}" ] && ( - cd "${K_DOTFILES_DIR}" || exit 2 - git submodule update --init --recursive - cd .. -) -[ ! -f "${HOME}/.gitconfig.local" ] && ( - touch "${HOME}/.gitconfig.local" -) - -aptitude purge exuberant-ctags -q -y - -cd "${CTAGS_DIR}" || exit 1 - -CURRENT_VERSION="$(git config --file "${HOME}/.gitconfig.local" --default '-1' --get ctags.version)" -REPO_VERSION="$(git log -n 1 --format=oneline | awk '{print $1}')" - -if [[ "${CURRENT_VERSION}" == "${REPO_VERSION}" ]]; then - echo "No need to install ctags again" -else - ./autogen.sh - ./configure --prefix="${HOME}/.local" - make clean - make - make install - git config --file="${HOME}/.gitconfig.local" ctags.version "${REPO_VERSION}" -fi -cd .. diff --git a/.installer/install_docker.sh b/.installer/install_docker.sh deleted file mode 100755 index b72379bb8..000000000 --- a/.installer/install_docker.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/bash - -# docker -aptitude remove \ - docker-ce \ - docker \ - docker.io \ - runc \ - containerd \ - -y -V -D -Z - -normal_install() { - aptitude install docker.io -y -V -D -Z -} - -custom_install() { - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - - add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu ${1} stable" - aptitude update -q -y - aptitude install docker-ce docker-ce-cli containerd.io -y -V -D -Z -} - -distro=$(lsb_release -cs) -case "${distro}" in - "focal") normal_install ;; - "eoan") normal_install ;; - *) custom_install "${distro}" -esac - -# enable service -systemctl enable --now docker - -# docker-compose -compose_version=$(git ls-remote https://github.com/docker/compose | grep refs/tags | grep -oP "[0-9]+\\.[0-9][0-9]+\\.[0-9]+$" | tail -n 1) -sh -c "curl -L https://github.com/docker/compose/releases/download/v${compose_version}/docker-compose-$(uname -s)-$(uname -m) > /usr/local/bin/docker-compose" -chmod +x /usr/local/bin/docker-compose diff --git a/.pam_environment b/.pam_environment new file mode 100644 index 000000000..1be26c6fb --- /dev/null +++ b/.pam_environment @@ -0,0 +1,2 @@ +XDG_CONFIG_HOME DEFAULT=@{HOME}/.config +XDG_CACHE_HOME DEFAULT=@{HOME}/.cache diff --git a/config/dunst/dunstrc b/config/dunst/dunstrc new file mode 100644 index 000000000..b786f1f2e --- /dev/null +++ b/config/dunst/dunstrc @@ -0,0 +1,90 @@ +[global] + monitor = 0 + + transparency = 32 + geometry = "300x5-30-20" + + indicate_hidden = yes + + notification_height = 0 + separator_height = 2 + padding = 8 + horizontal_padding = 8 + + corner_radius = 3 + frame_width = 3 + + frame_color = "#7f3fbf" + + separator_color = auto + + sort = yes + + idle_threshold = 120 + + ### Text ### + font = Noto Sans Regular 9 + alignment = right + line_height = 1 + word_wrap = yes + ellipsize = middle + markup = full + format = "%s\n%b" + + show_age_threshold = 60 + stack_duplicates = true + hide_duplicate_count = false + + ignore_newline = no + + show_indicators = yes + + ### Icons ### + icon_position = left + max_icon_size = 32 + + icon_path = /usr/share/icons/Paper/16x16/status/:/usr/share/icons/Paper/16x16/devices/:/usr/share/icons/Paper/16x16/apps/:/usr/share/pixmaps/ + + ### History ### + sticky_history = yes + history_length = 20 + + ### Misc/Advanced ### + + # dmenu path. + dmenu = /usr/bin/dmenu -p dunst: + browser = /usr/bin/brave-browser-nightly -new-tab + always_run_script = true + + title = Dunst + class = Dunst + + startup_notification = true + + verbosity = mesg + + ### mouse actions + mouse_left_click = close_current + mouse_middle_click = do_action + mouse_right_click = close_all + +[shortcuts] + close = ctrl+space + close_all = ctrl+shift+space + +[urgency_low] + background = "#222f3e" + foreground = "#c0c5ce" + timeout = 3 + +[urgency_normal] + background = "#222f3e" + foreground = "#c0c5ce" + frame_color = "#576574" + timeout = 3 + +[urgency_critical] + background = "#222f3e" + foreground = "#bf616a" + frame_color = "#576574" + timeout = 5 diff --git a/config/i3/config b/config/i3/config new file mode 100644 index 000000000..f24df87be --- /dev/null +++ b/config/i3/config @@ -0,0 +1,227 @@ +# i3 by and for kornicameister +# See http://i3wm.org/docs/userguide.html for guidence when lost + +# vim:filetype=i3 +# +###--- Settings---### +set $mod Mod4 +set $sup Mod1 +set $term alacritty +set $editor nvim +set $termexec -e $SHELL -i -c +floating_modifier $mod + +## fonts +font pango:Iosevka Nerd Font 9 + +## workspace settings +workspace_layout default # default stacking tabbed +workspace_auto_back_and_forth yes + +## gaps settings +smart_gaps on +gaps inner 7 +gaps outer -2 +hide_edge_borders both + +new_window pixel 3 +default_border pixel 3 + +## coloring +set_from_resource $bg i3wm.color0 #ff0000 +set_from_resource $bg-alt i3wm.color14 #ff0000 +set_from_resource $fg i3wm.color15 #ff0000 +set_from_resource $fg-alt i3wm.color2 #ff0000 +set_from_resource $hl i3wm.color13 #ff0000 + +client.focused $bg $bg $fg $bg $bg +client.focused_inactive $bg $bg $fg $bg $bg +client.unfocused $bg $bg $fg $bg $bg +client.urgent $bg $bg $fg $bg $bg +client.placeholder $bg $bg $fg $bg $bg +client.background $bg + +###--- Autostart ---### +exec_always --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 +exec_always --no-startup-id feh --bg-center "$HOME/.dotfiles/wallpapers/05_lake.jpg" +exec_always --no-startup-id wal --vte -R +exec_always --no-startup-id "$HOME/.config/polybar/launch.sh" +exec --no-startup-id wal-vtop +exec --no-startup-id picom -cC # compositor +exec --no-startup-id xset s 480 dpms 600 600 600 # powersavings for display: +exec --no-startup-id sleep 2 ; /usr/bin/dunst # notifications +exec --no-startup-id dex -a -s /etc/xdg/autostart/:~/.config/autostart # dex execute .desktop files + +# start a terminal: +bindsym $mod+Return exec i3-msg exec i3-sensible-terminal + +# kill focused window: +bindsym $mod+c kill + +# change focus: +bindsym $mod+j focus left +bindsym $mod+Left focus left + +bindsym $mod+k focus down +bindsym $mod+Down focus down + +bindsym $mod+u focus up +bindsym $mod+Up focus up + +bindsym $mod+ntilde focus right +bindsym $mod+Right focus right + +# move focused window: +bindsym $mod+Shift+j move left +bindsym $mod+Shift+Left move left + +bindsym $mod+Shift+k move down +bindsym $mod+Shift+Down move down + +bindsym $mod+Shift+l move up +bindsym $mod+Shift+Up move up + +bindsym $mod+Shift+ntilde move right +bindsym $mod+Shift+Right move right + +# split in horizontal orientation: +bindsym $mod+h split h + +# split in vertical orientation: +bindsym $mod+v split v + +# enter fullscreen mode for the focused container: +bindsym $mod+f fullscreen toggle + +# change container layout (stacked, tabbed, toggle split): +bindsym $mod+Shift+s layout stacking +bindsym $mod+Shift+w layout tabbed +bindsym $mod+Shift+e layout toggle split + +# toggle tiling / floating: +bindsym $mod+Shift+space floating toggle + +# change focus between tiling / floating windows: +bindsym $mod+space focus mode_toggle + +# focus the parent container: +bindsym $mod+a focus parent + +# focus the child container: +# bindsym $mod+d focus child + +# workspace-edit: +set $ws1 "1 " +set $ws2 "2 " +set $ws3 "3 " +set $ws4 "4 " +set $ws5 "5 " +set $ws6 "6 " +set $ws7 "7 " +set $ws8 "8 " +set $ws9 "" + +# resize floating windows with mouse scroll: +bindsym --whole-window --border $mod+button4 resize shrink height 5 px or 5 ppt +bindsym --whole-window --border $mod+button5 resize grow height 5 px or 5 ppt +bindsym --whole-window --border $mod+shift+button4 resize shrink width 5 px or 5 ppt +bindsym --whole-window --border $mod+shift+button5 resize grow width 5 px or 5 ppt + +# switch to workspace: +bindsym $mod+1 workspace $ws1 +bindsym $mod+2 workspace $ws2 +bindsym $mod+3 workspace $ws3 +bindsym $mod+4 workspace $ws4 +bindsym $mod+5 workspace $ws5 +bindsym $mod+6 workspace $ws6 +bindsym $mod+7 workspace $ws7 +bindsym $mod+8 workspace $ws8 +bindsym $mod+9 workspace $ws9 + +# move focused container to workspace: +bindsym $mod+Shift+1 move container to workspace $ws1 +bindsym $mod+Shift+2 move container to workspace $ws2 +bindsym $mod+Shift+3 move container to workspace $ws3 +bindsym $mod+Shift+4 move container to workspace $ws4 +bindsym $mod+Shift+5 move container to workspace $ws5 +bindsym $mod+Shift+6 move container to workspace $ws6 +bindsym $mod+Shift+7 move container to workspace $ws7 +bindsym $mod+Shift+8 move container to workspace $ws8 +bindsym $mod+Shift+9 move container to workspace $ws9 + +bindsym $mod+Shift+c reload +bindsym $mod+Shift+r restart + +# resize window (you can also use the mouse for that): +mode "resize" { + # These bindings trigger as soon as you enter the resize mode + + # Pressing left will shrink the window’s width. + # Pressing right will grow the window’s width. + # Pressing up will shrink the window’s height. + # Pressing down will grow the window’s height. + bindsym j resize shrink width 10 px or 10 ppt + bindsym k resize grow height 10 px or 10 ppt + bindsym l resize shrink height 10 px or 10 ppt + bindsym ntilde resize grow width 10 px or 10 ppt + + # same bindings, but for the arrow keys + bindsym Left resize shrink width 10 px or 10 ppt + bindsym Down resize grow height 10 px or 10 ppt + bindsym Up resize shrink height 10 px or 10 ppt + bindsym Right resize grow width 10 px or 10 ppt + + # back to normal: Enter or Escape + bindsym Return mode "default" + bindsym Escape mode "default" +} + +bindsym $mod+r mode "resize" + +# multimedia control +bindsym XF86AudioRaiseVolume exec volumectl raise +bindsym XF86AudioLowerVolume exec volumectl lower +bindsym XF86AudioMute exec volumectl mute + +bindsym XF86MonBrightnessUp exec lightctl raise +bindsym XF86MonBrightnessDown exec lightctl lower + +bindsym XF86AudioPlay exec playerctl play +bindsym XF86AudioPause exec playerctl pause +bindsym XF86AudioNext exec playerctl next +bindsym XF86AudioPrev exec playerctl previous + +exec_always --no-startup-id "avizo-service" +for_window [class="Avizo"] border pixel 0 floating enable + +# App shortcuts +bindsym $mod+b exec "/usr/bin/brave" +bindsym $mod+Shift+b exec "/usr/bin/brave --incognito" +bindsym $mod+n exec "/usr/bin/thunar" +bindsym $mod+l exec i3lock -i ~/.config/i3/i3-lock-screen.png -t -f +bindsym Print exec "scrot ~/%Y-%m-%d-%T-screenshot.png" + +# rofi bindings fancy application menu +bindsym $mod+i exec rofi \ + -modi drun \ + -show drun \ + -hide-scrollbar \ + -theme "${XDG_CONFIG_HOME}/rofi/launcher.rasi" +bindsym $mod+o exec rofi \ + -show window \ + -hide-scrollbar \ + -theme "${XDG_CONFIG_HOME}/rofi/launcher.rasi" + +# per window customizations +for_window [class="Spotify"] move to workspace $ws9 +for_window [class="jetbrains-pycharm" title="^ $"] floating enable +for_window [class="Yad" instance="yad"] floating enable +for_window [class="Galculator" instance="galculator"] floating enable +for_window [class="Blueberry.py" instance="blueberry.py"] floating enable +for_window [class="Xsane" instance="xsane"] floating enable +for_window [class="Pavucontrol" instance="pavucontrol"] floating enable +for_window [class="qt5ct" instance="qt5ct"] floating enable +for_window [class="Bluetooth-sendto" instance="bluetooth-sendto"] floating enable + + +for_window [class="Pamac-manager"] floating enable diff --git a/config/polybar/.gitignore b/config/polybar/.gitignore new file mode 100644 index 000000000..d1f90dc74 --- /dev/null +++ b/config/polybar/.gitignore @@ -0,0 +1,4 @@ +github.tkn +wired-interface +wireless-interface +battery diff --git a/config/polybar/config.ini b/config/polybar/config.ini new file mode 100644 index 000000000..74a52ec5a --- /dev/null +++ b/config/polybar/config.ini @@ -0,0 +1,443 @@ +;; based on +;; https://github.com/adi1090x/polybar-themes#cuts + +[global/wm] +margin-bottom = 0 +margin-top = 0 + +[color] +background = ${xrdb:background:#222} +background-alt = #8C080807 +foreground = ${xrdb:foreground:#222} +foreground-alt = ${xrdb:color4:#222} + +primary = ${xrdb:color4:#222} +secondary = ${xrdb:color5:#222} + +red = ${xrdb:color1:#FF5250} +green = ${xrdb:color2:#43a047} +yellow = ${xrdb:color3:#fdd835} + +active = ${xrdb:color10:#222} +inactive = ${xrdb:color11:#222} +alert = ${xrdb:color9:#222} + +[bar] +fill =  +empty =  +indicator = ⏽ +width = 10 +format = %{T4}%fill%%indicator%%empty%%{F-}%{T-} + +[bar/main] +enable-ipc = true + +width = 100% +height = 25 + +offset-x = 5% +offset-y = 5% + +background = ${color.background-alt} +foreground = ${color.foreground} + +dim-value = 1.0 + +line-size = 3 +line-color = ${color.primary} + +padding = 0 + +module-margin-left = 0 +module-margin-right = 0 + +font-0 = "Iosevka Nerd Font:pixelsize=9;3" +font-1 = "Iosevka Nerd Font:pixelsize=11;4" +font-2 = "Font Awesome 5 Free;8;4" + +[bar/top] +inherit = bar/main + +border-bottom-size = 2 +border-bottom-color = ${color.primary} + +modules-left = spotify sep workspaces +modules-center = title +modules-right = dunst sep updates github sep temperature-cpu battery sep keyboard sep date + +[bar/bottom] +inherit = bar/main + +bottom = true +border-top-size = 2 +border-top-color = ${color.primary} + +modules-left = cpu sep memory sep filesystem +modules-right = wired-network wireless-network sep pulseaudio brightness +modules-center = previous playpause next + +[settings] +vm-restack = i3 + +throttle-output = 5 +throttle-output-for = 10 +screenchange-reload = true +pseudo-transparency = false + +format-padding = 1 +format-foreground = ${color.foreground} +format-background = ${color.background-alt} + +content-foreground = ${color.primary} +content-background = ${color.secondary} + +compositing-background = source +compositing-foreground = over +compositing-overline = over +compositing-underline = over +compositing-border = over + +; modules +[module/previous] +type = custom/ipc +format-font = 3 + +hook-0 = echo "" +hook-1 = echo "  " + +click-left = "spotifyctl -q previous" + +[module/next] +type = custom/ipc +format-font = 3 + +hook-0 = echo "" +hook-1 = echo "  " +click-left = "spotifyctl -q next" + +[module/playpause] +type = custom/ipc +format-font = 3 + +hook-0 = echo "" +hook-1 = echo "  " +hook-2 = echo "  " + +click-left = "spotifyctl -q playpause" + +[module/spotify] +type = custom/ipc +hook-0 = echo "" +hook-1 = spotifyctl -q status --format '%artist%: %title%' +initial = 1 + +[module/keyboard] +type = internal/xkeyboard + +blacklist-0 = scroll lock + +format = +format-prefix =  + +label-layout = " %layout%" +label-indicator-on = %name% +label-indicator-on-foreground = ${color.foreground} + +[module/github] +type = internal/github + +token = ${file:~/.config/polybar/github.tkn} +user = kornicameister + +interval = 60 + +label = %notifications% +format =