Initial commit

This commit is contained in:
the_4n0nym0u53 2021-10-02 20:59:11 +00:00
commit 6d08af082a
17 changed files with 2117 additions and 0 deletions

24
LICENSE Normal file
View File

@ -0,0 +1,24 @@
This is free and unencumbered software released into the public domain.
Anyone is free to copy, modify, publish, use, compile, sell, or
distribute this software, either in source code form or as a compiled
binary, for any purpose, commercial or non-commercial, and by any
means.
In jurisdictions that recognize copyright laws, the author or authors
of this software dedicate any and all copyright interest in the
software to the public domain. We make this dedication for the benefit
of the public at large and to the detriment of our heirs and
successors. We intend this dedication to be an overt act of
relinquishment in perpetuity of all present and future rights to this
software under copyright law.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
For more information, please refer to <https://unlicense.org>

33
README.md Normal file
View File

@ -0,0 +1,33 @@
# My dotfiles
This is a collection of some of my dotfiles for my Artix Linux system.
You can install these dotfiles by cloning this repository and executing `install.sh`.
Make sure you have `git` and `stow` installed.
```bash
$ git clone https://github.com/theanonymousexyz/dotfiles.git
$ cd dotfiles
$ chmod +x install.sh
$ ./install.sh
```
These dotfiles depend on the following software packages:
- `alacritty`
- `doas`\*
- `mako`
- `neovim`
- `pavucontrol`
- `pipewire`/`pulseaudio`
- `playerctl`
- `python`
- `sway`
- `swaylock`
- `waybar`
- `sway-launcher-desktop`
\* If you prefer `sudo`, then change all instances if `doas` to `sudo`. They're mainly in the sway config file and my `autostart.sh` script.
Also, you need to make a `doas`/`sudo` rule that allows you to execute `poweroff` and `reboot` without a password, otherwise the keybindings for those won't work.

View File

@ -0,0 +1,51 @@
window:
padding:
x: 4
y: 4
decorations: none
title: Alacritty
dynamic_title: true
gtk_theme_variant: dark
scrolling:
history: 10000
font:
normal:
family: MesloLGS NF
size: 10.0
draw_bold_text_with_bright_colors: false
colors:
primary:
background: '#0a0a0a'
foreground: '#f4f4f4'
cursor:
text: CellBackground
cursor: CellForeground
selection:
text: CellBackground
background: CellForeground
normal:
black: '#0a0a0a'
red: '#ce0000'
green: '#29ab00'
yellow: '#ffa700'
blue: '#0060e5'
magenta: '#ce00ce'
cyan: '#66e6e6'
white: '#f4f4f4'
bright:
black: '#4c4c4c'
red: '#ff0000'
green: '#69c44c'
yellow: '#ffc14c'
blue: '#4c8fec'
magenta: '#dc4cdc'
cyan: '#93eded'
white: '#ffffff'
background_opacity: 0.8
cursor:
style:
shape: Block
blinking: Never
mouse:
hide_when_typing: true

View File

@ -0,0 +1,6 @@
#!/bin/bash
env SUDO_USER=$USER doas protonvpn c --cc DK
# Uncomment to use sudo instead of doas, comment the above
#sudo protonvpn c --cc DK
sway-launcher-desktop autostart

19
mako/.config/mako/config Normal file
View File

@ -0,0 +1,19 @@
sort=-time
layer=overlay
background-color=#0a0a0acc
border-size=2
border-color=#ffa700
border-radius=12
icons=1
max-icon-size=64
default-timeout=10000
ignore-timeout=1
[urgency=low]
border-color=#0060e5
default-timeout=5000
[urgency=high]
border-color=#ce0000
default-timeout=0

View File

@ -0,0 +1,3 @@
set runtimepath^=~/.vim runtimepath+=~/.vim/after
let &packpath = &runtimepath
source ~/.vimrc

File diff suppressed because it is too large Load Diff

46
nvim/.vimrc Normal file
View File

@ -0,0 +1,46 @@
set nocompatible
filetype off
syntax on
filetype plugin indent on
set modelines=0
set number
set ruler
set encoding=utf-8
set wrap
set textwidth=79
set formatoptions=tcqrn1
set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab
set noshiftround
set scrolloff=3
set backspace=indent,eol,start
set matchpairs+=<:> " use % to jump between pairs
runtime! macros/matchit.vim
nnoremap j gj
nnoremap k gk
set hidden
set ttyfast
set laststatus=2
set showmode
set showcmd
nnoremap / /\v
vnoremap / /\v
set hlsearch
set incsearch
set ignorecase
set smartcase
set showmatch
map <leader><space> :let @/=''<cr> " clear search
inoremap <F1> <ESC>:set invfullscreen<CR>a
nnoremap <F1> :set invfullscreen<CR>
vnoremap <F1> :set invfullscreen<CR>
map <leader>q gqip
set listchars=tab:▸\ ,eol
map <leader>l :set list!<CR> " Toggle tabs and EOL
set t_Co=256
set background=dark
let g:solarized_termcolors=256
let g:solarized_termtrans=1
colorscheme solarized

210
sway/.config/sway/config Normal file
View File

@ -0,0 +1,210 @@
# Default config for sway
#
# Copy this to ~/.config/sway/config and edit it to your liking.
#
# Read `man 5 sway` for a complete reference.
### Variables
#
# Logo key. Use Mod1 for Alt.
set $mod Mod4
# Home row direction keys, like vim (changed to arrow keys on 2021-08-28)
set $left Left
set $down Down
set $up Up
set $right Right
# Your preferred terminal emulator
set $term alacritty
# Your preferred application launcher
# Note: pass the final command to swaymsg so that the resulting window can be opened
# on the original workspace that the command was run on.
set $menu exec $term --class launcher -t "Application Launcher" -e env HIST_FILE="" /usr/bin/sway-launcher-desktop
### Output configuration
#
# Default wallpaper (more resolutions are available in /usr/share/backgrounds/sway/)
output * bg ~/Pictures/Wallpapers/jonatan-pie-3l3RwQdHRHg-unsplash.jpg fill
#
# Example configuration:
#
# output HDMI-A-1 resolution 1920x1080 position 1920,0
#
# You can get the names of your outputs by running: swaymsg -t get_outputs
### Idle configuration
#
# Example configuration:
#
exec swayidle -w \
timeout 600 'swaylock' \
timeout 1200 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \
before-sleep 'swaylock'
#
# This will lock your screen after 300 seconds of inactivity, then turn off
# your displays after another 300 seconds, and turn your screens back on when
# resumed. It will also lock your screen before your computer goes to sleep.
### Input configuration
#
# Example configuration:
#
# input "2:14:SynPS/2_Synaptics_TouchPad" {
# dwt enabled
# tap enabled
# natural_scroll enabled
# middle_emulation enabled
# }
#
# You can get the names of your inputs by running: swaymsg -t get_inputs
# Read `man 5 sway-input` for more information about this section.
### Key bindings
#
# Basics:
#
# Start a terminal
bindsym $mod+Return exec $term
# Kill focused window
bindsym $mod+q kill
# Start your launcher
bindsym $mod+d exec $menu
# Drag floating windows by holding down $mod and left mouse button.
# Resize them with right mouse button + $mod.
# Despite the name, also works for non-floating windows.
# Change normal to inverse to use left mouse button for resizing and right
# mouse button for dragging.
floating_modifier $mod normal
# Reload the configuration file
bindsym $mod+Shift+c reload
# Lock the screen
bindsym $mod+l exec swaylock
# Exit sway (logs you out of your Wayland session)
bindsym $mod+Shift+e exec swaynag -t warning -m 'Log out?' -b 'Yes' 'swaymsg exit'
# Reboot
bindsym $mod+Shift+r exec swaynag -t warning -m 'Reboot?' -b 'Yes' 'doas reboot'
# Uncomment to use sudo instead of doas, comment the above
#bindsym $mod+Shift+r exec swaynag -t warning -m 'Reboot?' -b 'Yes' 'sudo reboot'
# Power off
bindsym $mod+Shift+q exec swaynag -t warning -m 'Shut down?' -b 'Yes' 'doas poweroff'
# Uncomment to use sudo instead of doas, comment the above
#bindsym $mod+Shift+q exec swaynag -t warning -m 'Shut down?' -b 'Yes' 'sudo poweroff'
#
# Screenshotting:
#
bindsym Print exec grimshot --notify save output
bindsym Shift+Print exec grimshot --notify save area
bindsym Ctrl+Print exec grimshot --notify copy output
bindsym Shift+Ctrl+Print exec grimshot --notify copy area
#
# Moving around:
#
# Move your focus around
bindsym $mod+$left focus left
bindsym $mod+$down focus down
bindsym $mod+$up focus up
bindsym $mod+$right focus right
# Move the focused window with the same, but add Shift
bindsym $mod+Shift+$left move left
bindsym $mod+Shift+$down move down
bindsym $mod+Shift+$up move up
bindsym $mod+Shift+$right move right
#
# Workspaces:
#
# Switch to workspace
bindsym $mod+1 workspace number 1
bindsym $mod+2 workspace number 2
bindsym $mod+3 workspace number 3
bindsym $mod+4 workspace number 4
bindsym $mod+5 workspace number 5
bindsym $mod+6 workspace number 6
bindsym $mod+7 workspace number 7
bindsym $mod+8 workspace number 8
bindsym $mod+9 workspace number 9
bindsym $mod+0 workspace number 10
# Move focused container to workspace
bindsym $mod+Shift+1 move container to workspace number 1; workspace number 1
bindsym $mod+Shift+2 move container to workspace number 2; workspace number 2
bindsym $mod+Shift+3 move container to workspace number 3; workspace number 3
bindsym $mod+Shift+4 move container to workspace number 4; workspace number 4
bindsym $mod+Shift+5 move container to workspace number 5; workspace number 5
bindsym $mod+Shift+6 move container to workspace number 6; workspace number 6
bindsym $mod+Shift+7 move container to workspace number 7; workspace number 7
bindsym $mod+Shift+8 move container to workspace number 8; workspace number 8
bindsym $mod+Shift+9 move container to workspace number 9; workspace number 9
bindsym $mod+Shift+0 move container to workspace number 10; workspace number 10
# Note: workspaces can have any name you want, not just numbers.
# We just use 1-10 as the default.
#
# Layout stuff:
#
# You can "split" the current object of your focus with
# $mod+b or $mod+v, for horizontal and vertical splits
# respectively.
bindsym $mod+b splith
bindsym $mod+v splitv
# Switch the current container between different layout styles
bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+e layout toggle split
# Make the current focus fullscreen
bindsym $mod+f fullscreen
# Toggle the current focus between tiling and floating mode
bindsym $mod+Shift+space floating toggle
# Swap focus between the tiling area and the floating area
bindsym $mod+space focus mode_toggle
# Move focus to the parent container
bindsym $mod+a focus parent
#
# Scratchpad:
#
# Sway has a "scratchpad", which is a bag of holding for windows.
# You can send windows there and get them back later.
# Move the currently focused window to the scratchpad
bindsym $mod+Shift+minus move scratchpad
# Show the next scratchpad window or hide the focused scratchpad window.
# If there are multiple scratchpad windows, this command cycles through them.
bindsym $mod+minus scratchpad show
#
# Resizing containers:
#
mode "resize" {
# left will shrink the containers width
# right will grow the containers width
# up will shrink the containers height
# down will grow the containers height
bindsym $left resize shrink width 10px
bindsym $down resize grow height 10px
bindsym $up resize shrink height 10px
bindsym $right resize grow width 10px
# Return to default mode
bindsym Return mode "default"
bindsym Escape mode "default"
}
bindsym $mod+r mode "resize"
# Status Bar:
bar {
swaybar_command waybar
}
include ~/.config/sway/config.d/*

View File

@ -0,0 +1,24 @@
###############################
# #
# APPEARANCE #
# #
###############################
default_border pixel 2
hide_edge_borders smart
gaps inner 8
gaps outer 10
### COLORS ###
# border, bground and text only apply to window titlebars
# class border bground text indicator child_border
client.focused #0060E5 #000000 #FFFFFF #0043A0 #0060E5
client.focused_inactive #222222 #000000 #FFFFFF #111111 #222222
client.unfocused #222222 #000000 #FFFFFF #000000 #222222
client.urgent #900000 #000000 #FFFFFF #0043A0 #900000
client.placeholder #0C0C0C #000000 #FFFFFF #0043A0 #0C0C0C
client.background #FFFFFF

View File

@ -0,0 +1,36 @@
###############################
# #
# BEHAVIOR #
# #
###############################
# Application autostart
exec mako
exec ~/.scripts/autostart.sh
# Window focus doesn't follow mouse
focus_follows_mouse no
# Mouse doesn't move to workspace on workspace change
mouse_warping none
# Workspace 10 always on second monitor (I use this for Spotify, feel free to change)
workspace 10 output "DP-2"
### APPLICATION SPECIFIC ###
# Config for sway-launcher-desktop
for_window [app_id="^launcher$"] floating enable, resize set 30 ppt 60 ppt, border pixel 4
# Floating window for KeePassXC-Browser popup
for_window [title="^Unlock Database - KeePassXC$"] floating enable, resize set 40 ppt 55 ppt,
# Nextcloud main status window (when clicking on tray icon)
for_window [title="^Nextcloud$"] floating enable, border none,
# NoScript pop-ups in Tor Browser
for_window [title="about:blank - - Tor Browser"] floating enable,
# About Tor Browser window
for_window [title="^About Tor Browser$"] floating enable,

View File

@ -0,0 +1,45 @@
###############################
# #
# INPUT DEVICES #
# #
###############################
input type:keyboard {
xkb_layout dk
}
input type:touchpad {
drag enabled
natural_scroll enabled
scroll_factor 0.5
tap enabled
}
input type:pointer {
accel_profile flat # I hate mouse acceleration
natural_scroll disabled
}
### DEVICE SPECIFIC ###
input 6940:6958:Corsair_Corsair_Gaming_M65_Pro_RGB_Mouse {
pointer_accel -0.5
}
### KEYBINDS ###
# PipeWire controls
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume 0 +2%
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume 0 -2%
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute 0 toggle
bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute 0 toggle
# Media player controls
bindsym XF86AudioPlay exec playerctl play-pause
bindsym XF86AudioStop exec playerctl stop
bindsym XF86AudioNext exec playerctl next
bindsym XF86AudioPrev exec playerctl previous
# Sreen brightness controls
bindsym XF86MonBrightnessUp exec light -A 5
bindsym XF86MonBrightnessDown exec light -U 5

View File

@ -0,0 +1,29 @@
clock
show-failed-attempts
indicator
indicator-radius=128
indicator-thickness=8
screenshots
effect-blur=9x5
effect-vignette=0.4:0.8
ring-color=0060e5
ring-clear-color=0060e5
ring-ver-color=29ab00
ring-wrong-color=ce0000
separator-color=0060e5
line-uses-ring
inside-color=00000095
inside-clear-color=00000095
inside-ver-color=00000095
inside-wrong-color=00000095
text-color=ffa700
text-caps-lock-color=ffa700
text-clear-color=ffa700
text-ver-color=29ab00
text-wrong-color=ce0000
key-hl-color=66e6e6
bs-hl-color=ce00ce
fade-in=0.2
grace=2
grace-no-mouse
ignore-empty-password

View File

@ -0,0 +1,123 @@
{
"layer": "top", // Waybar at top layer
"position": "top", // Waybar position (top|bottom|left|right)
"height": 24, // Waybar height (to be removed for auto height)
// "width": 1280, // Waybar width
// Choose the order of the modules
"modules-left": ["idle_inhibitor", "sway/workspaces", "tray", "custom/media", "sway/mode"],
"modules-center": ["sway/window"],
"modules-right": ["custom/pvpn", "network", "pulseaudio", "cpu", "memory", "battery", "clock"],
// Modules configuration
"sway/workspaces": {
"disable-scroll": true,
//"all-outputs": true,
/* "format": "{name}{icon}", */
"format-icons": {
"1": " \uf120", // terminal
"2": " \uf121", // code
"3": " \ue007", // firefox-browser
"4": " \uf3ed", // shield-alt
"5": " \uf0c0", // users
"6": " \uf086", // comments
"7": "",
"8": "",
"9": "",
"10": " \uf51f", // compact-disc
}
},
"sway/window": {
"max-length": 64
},
"sway/mode": {
"format": "<span style=\"italic\">{}</span>"
},
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "\uf06e", // eye
"deactivated": "\uf070" // eye-slash
},
"tooltip": false
},
"tray": {
"icon-size": 14,
"spacing": 8
},
"clock": {
"timezone": "Europe/Copenhagen",
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
"format": "{:%Y-%m-%d \uf783 %T \uf017}", // calendar-day, clock
"interval": 1
},
"cpu": {
"format": "{usage}% \uf2db", // microchip
"tooltip": true
},
"memory": {
"format": "{}% \uf538"
},
"temperature": {
//"thermal-zone": 2,
"hwmon-path": "/sys/class/hwmon/hwmon5/temp1_input",
"critical-threshold": 90,
"format-critical": "Critical! {temperatureC}°C {icon}",
"format": "{temperatureC}°C {icon}",
"format-icons": ["\uf2cb", "\uf76b", "\uf769"], // thermometer-empty, temperature-low, temperature-high
"tooltip": true
},
"battery": {
"states": {
"good": 95,
"warning": 20,
"critical": 10
},
"format": "{capacity}% {icon}",
"format-charging": "{capacity}% \uf5e7", // charging-station
"format-plugged": "{capacity}% \uf1e6", // plug
"format-alt": "{time} {icon}",
"format-icons": ["\uf244", "\uf243", "\uf242", "\uf241", "\uf240"] // battery-empty, battery-quarter, battery-half, battery-three-quarters, battery-full
},
"network": {
// "interface": "wlp2*", // (Optional) To force the use of this interface
"format-wifi": "{essid} ({signalStrength}%) ",
"format-ethernet": "{ifname}: {ipaddr}/{cidr} ",
"format-linked": "{ifname} (No IP) ",
"format-disconnected": "Disconnected \uf071" // exclamation-triangle
},
"pulseaudio": {
"scroll-step": 2, // %, can be a float
"format": "{volume}% {icon} {format_source}",
"format-bluetooth": "{volume}% {icon} {format_source}",
"format-bluetooth-muted": " {icon} {format_source}",
"format-muted": " {format_source}",
"format-source": "{volume}% ",
"format-source-muted": "",
"format-icons": {
"headphone": "",
"hands-free": "",
"headset": "",
"phone": "",
"portable": "",
"car": "",
"default": ["", "", ""]
},
"on-click": "/usr/bin/pavucontrol"
},
"custom/media": {
"format": "{icon} {}",
"return-type": "json",
"max-length": 64,
"format-icons": {
"chromium": "\uf1bc", // spotify (I use Spotify in my browser)
},
"escape": true,
// "exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder
"exec": "$HOME/.config/waybar/mediaplayer.py --player chromium 2> /dev/null" // Filter player based on name
},
"custom/pvpn": { // Custom status module for ProtonVPN
"format": "ProtonVPN {}",
"exec": "$HOME/.config/waybar/pvpn.sh",
"return-type": "json",
"interval": 5
}
}

View File

@ -0,0 +1,127 @@
#!/usr/bin/env python3
import argparse
import logging
import sys
import signal
import gi
import json
gi.require_version('Playerctl', '2.0')
from gi.repository import Playerctl, GLib
logger = logging.getLogger(__name__)
def write_output(text, player):
logger.info('Writing output')
output = {'text': text,
'class': 'custom-' + player.props.player_name,
'alt': player.props.player_name}
sys.stdout.write(json.dumps(output) + '\n')
sys.stdout.flush()
def on_play(player, status, manager):
logger.info('Received new playback status')
on_metadata(player, player.props.metadata, manager)
def on_metadata(player, metadata, manager):
logger.info('Received new metadata')
track_info = ''
if player.props.player_name == 'spotify' and \
'mpris:trackid' in metadata.keys() and \
':ad:' in player.props.metadata['mpris:trackid']:
track_info = 'AD PLAYING'
elif player.get_artist() != '' and player.get_title() != '':
track_info = '{artist} - {title}'.format(artist=player.get_artist(),
title=player.get_title())
else:
track_info = player.get_title()
if player.props.status != 'Playing' and track_info:
track_info = '' + track_info
write_output(track_info, player)
def on_player_appeared(manager, player, selected_player=None):
if player is not None and (selected_player is None or player.name == selected_player):
init_player(manager, player)
else:
logger.debug("New player appeared, but it's not the selected player, skipping")
def on_player_vanished(manager, player):
logger.info('Player has vanished')
sys.stdout.write('\n')
sys.stdout.flush()
def init_player(manager, name):
logger.debug('Initialize player: {player}'.format(player=name.name))
player = Playerctl.Player.new_from_name(name)
player.connect('playback-status', on_play, manager)
player.connect('metadata', on_metadata, manager)
manager.manage_player(player)
on_metadata(player, player.props.metadata, manager)
def signal_handler(sig, frame):
logger.debug('Received signal to stop, exiting')
sys.stdout.write('\n')
sys.stdout.flush()
# loop.quit()
sys.exit(0)
def parse_arguments():
parser = argparse.ArgumentParser()
# Increase verbosity with every occurence of -v
parser.add_argument('-v', '--verbose', action='count', default=0)
# Define for which player we're listening
parser.add_argument('--player')
return parser.parse_args()
def main():
arguments = parse_arguments()
# Initialize logging
logging.basicConfig(stream=sys.stderr, level=logging.DEBUG,
format='%(name)s %(levelname)s %(message)s')
# Logging is set by default to WARN and higher.
# With every occurrence of -v it's lowered by one
logger.setLevel(max((3 - arguments.verbose) * 10, 0))
# Log the sent command line arguments
logger.debug('Arguments received {}'.format(vars(arguments)))
manager = Playerctl.PlayerManager()
loop = GLib.MainLoop()
manager.connect('name-appeared', lambda *args: on_player_appeared(*args, arguments.player))
manager.connect('player-vanished', on_player_vanished)
signal.signal(signal.SIGINT, signal_handler)
signal.signal(signal.SIGTERM, signal_handler)
for player in manager.props.player_names:
if arguments.player is not None and arguments.player != player.name:
logger.debug('{player} is not the filtered player, skipping it'
.format(player=player.name)
)
continue
init_player(manager, player)
loop.run()
if __name__ == '__main__':
main()

15
waybar/.config/waybar/pvpn.sh Executable file
View File

@ -0,0 +1,15 @@
#!/bin/sh
STATUS=`protonvpn status | awk '{print "\\\n"$0}'`
TOOLTIP=`echo -E ${STATUS} | cut -c 3-`
CLASS=`echo ${STATUS} | grep 'Status' | awk '{print $2}'`
TEXT=""
if [ $CLASS == "Connected" ]; then
TEXT="\uf084" # key
else
TEXT="\uf071" # exclamation-triangle
fi
echo "{\"text\": \"${TEXT}\", \"tooltip\": \"${TOOLTIP}\", \"class\": \"${CLASS}\"}"

View File

@ -0,0 +1,209 @@
* {
border: none;
border-radius: 0;
/* `otf-font-awesome` is required to be installed for icons */
/* Find Ubuntu Condensed font somewhere and install it in your system, it is NOT installed by default */
font-family: "Ubuntu Condensed", "Font Awesome 5 Free Solid", "Font Awesome 5 Free Regular", "Font Awesome 5 Brands Regular", sans-serif;
font-size: 15px;
min-height: 0;
}
window#waybar {
background-color: rgba(10, 10, 10, 0.8);
color: #66e6e6;
transition-property: background-color;
transition-duration: .5s;
}
window#waybar.hidden {
opacity: 0.8;
}
#workspaces button {
padding: 0 2px;
margin: 0 2px;
color: #664200;
/* Use box-shadow instead of border so the text isn't offset */
box-shadow: inset 0 -2px #664200;
}
/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
#workspaces button:hover {
background: transparent;
color: #b27400;
box-shadow: inset 0 -2px #b27400;
}
#workspaces button.focused {
color: #ffa700;
box-shadow: inset 0 -2px #ffa700;
}
#workspaces button.urgent {
background-color: #eb4d4b;
}
#mode {
color: #0060e5;
box-shadow: inset 0 -2px #0060e5;
}
#clock,
#battery,
#cpu,
#memory,
#disk,
#temperature,
#backlight,
#network,
#pulseaudio,
#custom-media,
#tray,
#mode,
#idle_inhibitor,
#mpd,
#custom-pvpn{
padding: 0 5px;
margin: 0 3px;
color: #ffffff;
}
#window {
margin: 0 12px;
}
/* If workspaces is the leftmost module, omit left margin */
.modules-left > widget:first-child > #workspaces {
margin-left: 0;
}
/* If workspaces is the rightmost module, omit right margin */
.modules-right > widget:last-child > #workspaces {
margin-right: 0;
}
#clock {
color: #ffa700;
box-shadow: inset 0 -2px #ffa700;
}
#battery {
color: #66e6e6;
box-shadow: inset 0 -2px #66e6e6;
}
#battery.charging, #battery.plugged {
color: #29ab00;
box-shadow: inset 0 -2px #29ab00;
}
@keyframes blink {
to {
background-color: #ffffff;
color: #000000;
}
}
#battery.critical:not(.charging) {
background-color: #f53c3c;
color: #ffffff;
animation-name: blink;
animation-duration: 0.5s;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}
label:focus {
background-color: #000000;
}
#cpu {
color: #29ab00;
box-shadow: inset 0 -2px #29ab00;
}
#memory {
color: #ce00ce;
box-shadow: inset 0 -2px #ce00ce;
}
#disk {
background-color: #964B00;
}
#backlight {
color: #66e6e6;
box-shadow: inset 0 -2px #66e6e6;
}
#network {
color: #0060e5;
box-shadow: inset 0 -2px #0060e5;
}
#network.disconnected {
color: #ce0000;
box-shadow: inset 0 -2px #ce0000;
}
#pulseaudio {
color: #ffa700;
box-shadow: inset 0 -2px #ffa700;
}
#pulseaudio.muted {
color: #ffa700;
box-shadow: inset 0 -2px #ffa700;
}
#custom-media {
background-color: transparent;
color: #ffa700;
box-shadow: inset 0 -2px #ffa700;
}
#custom-media.custom-chromium {
background-color: transparent;
color: #29ab00;
box-shadow: inset 0 -2px #29ab00;
}
#custom-media.custom-vlc {
background-color: #ffa000;
}
#tray {
color: #66e6e6;
box-shadow: inset 0 -2px #66e6e6;
}
#tray > .passive {
-gtk-icon-effect: dim;
}
#tray > .needs-attention {
-gtk-icon-effect: highlight;
background-color: #eb4d4b;
}
#idle_inhibitor {
color: #003072;
box-shadow: inset 0 -2px #003072;
}
#idle_inhibitor.activated {
color: #0060e5;
box-shadow: inset 0 -2px #0060e5;
}
#custom-pvpn {
color: #ce0000;
box-shadow: inset 0 -2px #ce0000;
}
#custom-pvpn.Connected {
color: #29ab00;
box-shadow: inset 0 -2px #29ab00;
}