initial
|
@ -0,0 +1,264 @@
|
||||||
|
# Catppuccin
|
||||||
|
*A [LeftWM](https://github.com/leftwm/leftwm) minimalistic theme inspired by the adorable [homonymous pastel theme](https://github.com/catppuccin)*
|
||||||
|
s
|
||||||
|
|
||||||
|
- [Catppuccin](#catppuccin)
|
||||||
|
- [Screenshots](#screenshots)
|
||||||
|
- [Dependencies](#dependencies)
|
||||||
|
- [Installation](#installation)
|
||||||
|
- [Configuration](#configuration)
|
||||||
|
- [Colors](#colors)
|
||||||
|
- [Applets](#applets)
|
||||||
|
- [Wallpapers](#wallpapers)
|
||||||
|
- [Polybar](#polybar)
|
||||||
|
- [Pulseaudio Control](#pulseaudio-control)
|
||||||
|
- [Systray](#systray)
|
||||||
|
- [Changelog](#changelog)
|
||||||
|
- [v0.1.2](#v012)
|
||||||
|
- [v0.1.1](#v011)
|
||||||
|
- [v0.1.0](#v010)
|
||||||
|
- [To do](#to-do)
|
||||||
|
- [Credit / Sources](#credit--sources)
|
||||||
|
|
||||||
|
|
||||||
|
# Screenshots
|
||||||
|
![screenshot1](./screenshots/screenshot1.png)
|
||||||
|
![screenshot2](./screenshots/screenshot2.png)
|
||||||
|
![launcher](./screenshots/launcher.png)
|
||||||
|
![launcher2](./screenshots/launcher2.png)
|
||||||
|
![powermenu](./screenshots/powermenu.png)
|
||||||
|
![powermenu2](./screenshots/powermenu2.png)
|
||||||
|
![layout](./screenshots/layout.png)
|
||||||
|
![layout2](./screenshots/layout2.png)
|
||||||
|
|
||||||
|
# Dependencies
|
||||||
|
|
||||||
|
- [LeftWM](https://github.com/leftwm/leftwm) - duh
|
||||||
|
|
||||||
|
`Fonts`
|
||||||
|
- Iosevka Nerd Font
|
||||||
|
- Roboto
|
||||||
|
- Noto Sans
|
||||||
|
- FontAwesome
|
||||||
|
|
||||||
|
Fee free to install some fonts from the theme root folder
|
||||||
|
```
|
||||||
|
./installfonts.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
In general it might be a good idea to install all [nerd fonts](https://www.nerdfonts.com/).
|
||||||
|
|
||||||
|
`Run by up script`
|
||||||
|
|
||||||
|
- polybar
|
||||||
|
- feh
|
||||||
|
- numlockx
|
||||||
|
- picom
|
||||||
|
|
||||||
|
`Run by polybar (and keybindings)`
|
||||||
|
|
||||||
|
- pavucontrol
|
||||||
|
- nm-connection-editor
|
||||||
|
- blueberry
|
||||||
|
- pamac
|
||||||
|
|
||||||
|
|
||||||
|
`Misc`
|
||||||
|
- alacritty (or change configs to match your terminal emulator)
|
||||||
|
- dunst / xfce4-notifyd (adapt *up* script accordingly)
|
||||||
|
- [papirus-icon-theme](https://github.com/PapirusDevelopmentTeam/papirus-icon-theme)
|
||||||
|
|
||||||
|
|
||||||
|
# Installation
|
||||||
|
1. Install all required dependencies
|
||||||
|
|
||||||
|
2. Clone the repository in ~/.config/leftwm/themes
|
||||||
|
|
||||||
|
```BASH
|
||||||
|
cd ~/.config/leftwm/themes
|
||||||
|
git clone https://github.com/di-effe/catppuccin.git
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Remove the symlink to your current theme if set
|
||||||
|
|
||||||
|
```BASH
|
||||||
|
rm ~/.config/leftwm/themes/current
|
||||||
|
```
|
||||||
|
4. Set this as your current theme
|
||||||
|
|
||||||
|
```BASH
|
||||||
|
ln -s ~/.config/leftwm/themes/catppuccin ~/.config/leftwm/themes/current
|
||||||
|
```
|
||||||
|
|
||||||
|
5. Restart your window manager
|
||||||
|
|
||||||
|
```Default shortcut
|
||||||
|
$MOD + Shift + r
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Configuration
|
||||||
|
|
||||||
|
## Colors
|
||||||
|
In a theme like this colors are spread all over the place and it's not fun keep track of everything, every time you want to change something. That's why I am using a custom color script to do the dirty job for me.
|
||||||
|
|
||||||
|
Colors are set each time the *UP* script run
|
||||||
|
|
||||||
|
```
|
||||||
|
source $SCRIPTPATH/scripts/colors.sh catppuccin
|
||||||
|
```
|
||||||
|
|
||||||
|
Two color themes are already available to choose from:
|
||||||
|
- catppuccin
|
||||||
|
- catppuccin2
|
||||||
|
|
||||||
|
Long story short `colors.sh` performs different tasks, mostly `sed`, in all files where colors are set.
|
||||||
|
The parameter after the script is communicating `colors.sh` to read from the colors variables from `scripts/colors_<THEME_NAME>.sh`, and by default that would be `scripts/colors_catppuccin.sh`
|
||||||
|
|
||||||
|
```
|
||||||
|
## Catppuccin theme
|
||||||
|
COLOR_BAR_BACKGROUND="#332E41"
|
||||||
|
COLOR_BAR_FOREGROUND="#B7E5E6"
|
||||||
|
COLOR_BACKGROUND="#332E41"
|
||||||
|
COLOR_FOREGROUND="#DFDEF1"
|
||||||
|
COLOR_FOREGROUND_DARK="#988BA2"
|
||||||
|
COLOR_PRIMARY="#C6AAE8"
|
||||||
|
COLOR_SECONDARY="#DFDEF1"
|
||||||
|
COLOR_ALTERNATE="#C6AAE8"
|
||||||
|
COLOR_INACTIVE="#6E6C7E"
|
||||||
|
COLOR_BORDER_ACTIVE="#C6AAE8"
|
||||||
|
COLOR_BORDER_INACTIVE="#1E1E28"
|
||||||
|
COLOR_BORDER_FLOATING="#F2CDCD"
|
||||||
|
COLOR_APPLET_BACKGROUND="#332E41"
|
||||||
|
COLOR_APPLET_BACKGROUND_LIGHT="#575268"
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
So, if you want to change colors manually comment the source `$SCRIPTPATH/scripts/colors.sh catppuccin` or your changes will be overwritten.
|
||||||
|
|
||||||
|
My suggestion, to avoid going crazy, would be to use the same method and
|
||||||
|
- create a custom color theme
|
||||||
|
- add your theme to the `themes=(catppuccin catppuccin2);` array in `colors.sh`
|
||||||
|
- optionally adapt `colors.sh` to your needs
|
||||||
|
|
||||||
|
|
||||||
|
## Applets
|
||||||
|
|
||||||
|
This theme doesn´t have a launcher and powermenu modules configured in Polybar, but you can configured a few keybindings to launch some Rofi applets.
|
||||||
|
|
||||||
|
For example you could add these to your `config.toml`
|
||||||
|
|
||||||
|
```
|
||||||
|
# Theme applets
|
||||||
|
|
||||||
|
# Launcher
|
||||||
|
[[keybind]]
|
||||||
|
command = "Execute"
|
||||||
|
value = "$HOME/.config/leftwm/themes/current/scripts/launcher.sh"
|
||||||
|
modifier = ["modkey"]
|
||||||
|
key = "space"
|
||||||
|
|
||||||
|
# Powermenu
|
||||||
|
[[keybind]]
|
||||||
|
command = "Execute"
|
||||||
|
value = "$HOME/.config/leftwm/themes/current/scripts/powermenu.sh"
|
||||||
|
modifier = ["modkey", "Shift"]
|
||||||
|
key = "p"
|
||||||
|
|
||||||
|
# Layout switcher
|
||||||
|
[[keybind]]
|
||||||
|
command = "Execute"
|
||||||
|
value = "$HOME/.config/leftwm/themes/current/scripts/layout.sh"
|
||||||
|
modifier = ["modkey", "Shift"]
|
||||||
|
key = "l"
|
||||||
|
```
|
||||||
|
|
||||||
|
Run a `leftwm-check` to ensure you don´t have multiple bindings on the same keys.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Wallpapers
|
||||||
|
|
||||||
|
*up* is configured with the options to
|
||||||
|
- set random wallpapers from the /wallpapers folder
|
||||||
|
- set ONE wallpaper for all displays
|
||||||
|
- set MULTIPLE wallpapers for all displays (default)
|
||||||
|
|
||||||
|
Uncomment what you prefer and comment the rest. It should be clear enough reading the file.
|
||||||
|
|
||||||
|
|
||||||
|
## Polybar
|
||||||
|
|
||||||
|
### Pulseaudio Control
|
||||||
|
This is an interesting module you might want to use, just keep in mind it will grab your device description from
|
||||||
|
|
||||||
|
```
|
||||||
|
pactl list sinks | grep device.description
|
||||||
|
```
|
||||||
|
|
||||||
|
and that is usually a very long string.
|
||||||
|
The pulseaudio-control module in *polybar.modules* has been configured to use fancier nicknames for speakers and headphone, but you have to replace my values with yours.
|
||||||
|
|
||||||
|
For speakers (without any wired or bluetooth headphone connected) check
|
||||||
|
```
|
||||||
|
pactl list sinks short | cut -f2
|
||||||
|
```
|
||||||
|
|
||||||
|
and use the output here
|
||||||
|
```
|
||||||
|
--sink-nickname "VALUE_DETECTED_HERE:蓼 Speakers"
|
||||||
|
```
|
||||||
|
|
||||||
|
For wired headphones, plug them, check again
|
||||||
|
```
|
||||||
|
pactl list sinks short | cut -f2
|
||||||
|
```
|
||||||
|
|
||||||
|
and use the output here
|
||||||
|
```
|
||||||
|
--sink-nickname "VALUE_DETECTED_HER: Headphones"
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### Systray
|
||||||
|
Systray has beed disabled by default in *polybar.config*
|
||||||
|
```
|
||||||
|
tray-position = none
|
||||||
|
```
|
||||||
|
If you want to use it change position and adjust the **tray-offset-x** value.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Changelog
|
||||||
|
|
||||||
|
## v0.1.2
|
||||||
|
- catppuccino 1.2 updates
|
||||||
|
|
||||||
|
## v0.1.1
|
||||||
|
- Multiple color themes
|
||||||
|
- catppuccin
|
||||||
|
- catppuccin2
|
||||||
|
- Updated documentation
|
||||||
|
- Minor changes
|
||||||
|
|
||||||
|
|
||||||
|
## v0.1.0
|
||||||
|
- First release
|
||||||
|
|
||||||
|
|
||||||
|
## To do
|
||||||
|
- [x] More color schemes from the catppuccin project
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Credit / Sources
|
||||||
|
|
||||||
|
- Polybar modules configuration style (plus snippets and scripts) from [Peter Dauwe](https://github.com/PeterDauwe) and [adi1090x](https://github.com/adi1090x/polybar-themes)
|
||||||
|
|
||||||
|
- Application launcher is based on the [rofi-themes-collection](https://github.com/lr-tech/rofi-themes-collection) by [LR Tech](https://github.com/lr-tech) covered by a GNU General Public License v3.0
|
||||||
|
|
||||||
|
- Powermenu is loosely based on the [rofi-themes](hhttps://github.com/adi1090x/rofi) by [adi1090x](https://github.com/adi1090x) covered by a GNU General Public License v3.0
|
||||||
|
|
||||||
|
- Wallpapers and color schemes by [catppuccin](https://github.com/catppuccin/), of course
|
|
@ -0,0 +1,2 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
leftwm-command "SendWorkspaceToTag $1 $2"
|
|
@ -0,0 +1,314 @@
|
||||||
|
[global]
|
||||||
|
frame_width = 1
|
||||||
|
frame_color = "#788388"
|
||||||
|
corner_radius = 4
|
||||||
|
font = Noto Sans 10
|
||||||
|
|
||||||
|
# Allow a small subset of html markup:
|
||||||
|
# <b>bold</b>
|
||||||
|
# <i>italic</i>
|
||||||
|
# <s>strikethrough</s>
|
||||||
|
# <u>underline</u>
|
||||||
|
#
|
||||||
|
# For a complete reference see
|
||||||
|
# <http://developer.gnome.org/pango/stable/PangoMarkupFormat.html>.
|
||||||
|
# If markup is not allowed, those tags will be stripped out of the
|
||||||
|
# message.
|
||||||
|
markup = yes
|
||||||
|
|
||||||
|
# The format of the message. Possible variables are:
|
||||||
|
# %a appname
|
||||||
|
# %s summary
|
||||||
|
# %b body
|
||||||
|
# %i iconname (including its path)
|
||||||
|
# %I iconname (without its path)
|
||||||
|
# %p progress value if set ([ 0%] to [100%]) or nothing
|
||||||
|
# Markup is allowed
|
||||||
|
format = "<b>%s</b> %p\n%b"
|
||||||
|
|
||||||
|
# Sort messages by urgency.
|
||||||
|
sort = yes
|
||||||
|
|
||||||
|
# Show how many messages are currently hidden (because of geometry).
|
||||||
|
indicate_hidden = yes
|
||||||
|
|
||||||
|
# Alignment of message text.
|
||||||
|
# Possible values are "left", "center" and "right".
|
||||||
|
alignment = left
|
||||||
|
|
||||||
|
# The frequency with wich text that is longer than the notification
|
||||||
|
# window allows bounces back and forth.
|
||||||
|
# This option conflicts with "word_wrap".
|
||||||
|
# Set to 0 to disable.
|
||||||
|
bounce_freq = 5
|
||||||
|
|
||||||
|
|
||||||
|
# Show age of message if message is older than show_age_threshold
|
||||||
|
# seconds.
|
||||||
|
# Set to -1 to disable.
|
||||||
|
show_age_threshold = 60
|
||||||
|
|
||||||
|
# Split notifications into multiple lines if they don't fit into
|
||||||
|
# geometry.
|
||||||
|
word_wrap = no
|
||||||
|
|
||||||
|
# Ignore newlines '\n' in notifications.
|
||||||
|
ignore_newline = no
|
||||||
|
|
||||||
|
|
||||||
|
# The geometry of the window:
|
||||||
|
# [{width}]x{height}[+/-{x}+/-{y}]
|
||||||
|
# The geometry of the message window.
|
||||||
|
# The height is measured in number of notifications everything else
|
||||||
|
# in pixels. If the width is omitted but the height is given
|
||||||
|
# ("-geometry x2"), the message window expands over the whole screen
|
||||||
|
# (dmenu-like). If width is 0, the window expands to the longest
|
||||||
|
# message displayed. A positive x is measured from the left, a
|
||||||
|
# negative from the right side of the screen. Y is measured from
|
||||||
|
# the top and down respectevly.
|
||||||
|
# The width can be negative. In this case the actual width is the
|
||||||
|
# screen width minus the width defined in within the geometry option.
|
||||||
|
geometry = "0x4-25+25"
|
||||||
|
|
||||||
|
# Shrink window if it's smaller than the width. Will be ignored if
|
||||||
|
# width is 0.
|
||||||
|
shrink = yes
|
||||||
|
|
||||||
|
# The transparency of the window. Range: [0; 100].
|
||||||
|
# This option will only work if a compositing windowmanager is
|
||||||
|
# present (e.g. xcompmgr, compiz, etc.).
|
||||||
|
transparency = 15
|
||||||
|
|
||||||
|
# Don't remove messages, if the user is idle (no mouse or keyboard input)
|
||||||
|
# for longer than idle_threshold seconds.
|
||||||
|
# Set to 0 to disable.
|
||||||
|
# default 120
|
||||||
|
idle_threshold = 120
|
||||||
|
|
||||||
|
# Which monitor should the notifications be displayed on.
|
||||||
|
monitor = 0
|
||||||
|
|
||||||
|
# Display notification on focused monitor. Possible modes are:
|
||||||
|
# mouse: follow mouse pointer
|
||||||
|
# keyboard: follow window with keyboard focus
|
||||||
|
# none: don't follow anything
|
||||||
|
#
|
||||||
|
# "keyboard" needs a windowmanager that exports the
|
||||||
|
# _NET_ACTIVE_WINDOW property.
|
||||||
|
# This should be the case for almost all modern windowmanagers.
|
||||||
|
#
|
||||||
|
# If this option is set to mouse or keyboard, the monitor option
|
||||||
|
# will be ignored.
|
||||||
|
follow = mouse
|
||||||
|
|
||||||
|
# Should a notification popped up from history be sticky or timeout
|
||||||
|
# as if it would normally do.
|
||||||
|
sticky_history = yes
|
||||||
|
|
||||||
|
# Maximum amount of notifications kept in history
|
||||||
|
history_length = 20
|
||||||
|
|
||||||
|
# Display indicators for URLs (U) and actions (A).
|
||||||
|
show_indicators = yes
|
||||||
|
|
||||||
|
# The height of a single line. If the height is smaller than the
|
||||||
|
# font height, it will get raised to the font height.
|
||||||
|
# This adds empty space above and under the text.
|
||||||
|
line_height = 0
|
||||||
|
|
||||||
|
# Draw a line of "separator_height" pixel height between two
|
||||||
|
# notifications.
|
||||||
|
# Set to 0 to disable.
|
||||||
|
separator_height = 1
|
||||||
|
|
||||||
|
# Padding between text and separator.
|
||||||
|
# padding = 8
|
||||||
|
padding = 8
|
||||||
|
|
||||||
|
# Horizontal padding.
|
||||||
|
horizontal_padding = 10
|
||||||
|
|
||||||
|
# Define a color for the separator.
|
||||||
|
# possible values are:
|
||||||
|
# * auto: dunst tries to find a color fitting to the background;
|
||||||
|
# * foreground: use the same color as the foreground;
|
||||||
|
# * frame: use the same color as the frame;
|
||||||
|
# * anything else will be interpreted as a X color.
|
||||||
|
separator_color = #263238
|
||||||
|
|
||||||
|
# Print a notification on startup.
|
||||||
|
# This is mainly for error detection, since dbus (re-)starts dunst
|
||||||
|
# automatically after a crash.
|
||||||
|
startup_notification = false
|
||||||
|
|
||||||
|
# dmenu path.
|
||||||
|
dmenu = /usr/bin/dmenu -p dunst:
|
||||||
|
|
||||||
|
# Browser for opening urls in context menu.
|
||||||
|
browser = firefox
|
||||||
|
|
||||||
|
# Align icons left/right/off
|
||||||
|
icon_position = left
|
||||||
|
|
||||||
|
# Paths to default icons.
|
||||||
|
#icon_path = /usr/share/icons/Adwaita/16x16/status/:/usr/share/icons/Adwaita/16x16/devices/:/usr/share/icons/Adwaita/16x16/emblems/:/usr/share/icons/Adwaita/16x16/actions/:/usr/share/icons/Adwaita/16x16/emotes/
|
||||||
|
icon_path = /usr/share/icons/Papirus-Dark/16x16/status/:/usr/share/icons/Papirus-Dark/16x16/devices/:/usr/share/icons/Papirus-Dark/16x16/emblems/:/usr/share/icons/Papirus-Dark/16x16/actions/
|
||||||
|
# Limit icons size.
|
||||||
|
max_icon_size=32
|
||||||
|
|
||||||
|
[shortcuts]
|
||||||
|
|
||||||
|
# Shortcuts are specified as [modifier+][modifier+]...key
|
||||||
|
# Available modifiers are "ctrl", "mod1" (the alt-key), "mod2",
|
||||||
|
# "mod3" and "mod4" (windows-key).
|
||||||
|
# Xev might be helpful to find names for keys.
|
||||||
|
|
||||||
|
# Close notification.
|
||||||
|
#close = mod1+space
|
||||||
|
|
||||||
|
# Close all notifications.
|
||||||
|
# close_all = ctrl+shift+space
|
||||||
|
#close_all = ctrl+mod1+space
|
||||||
|
|
||||||
|
# Redisplay last message(s).
|
||||||
|
# On the US keyboard layout "grave" is normally above TAB and left
|
||||||
|
# of "1".
|
||||||
|
#history = ctrl+mod4+h
|
||||||
|
|
||||||
|
# Context menu.
|
||||||
|
#context = ctrl+mod1+c
|
||||||
|
|
||||||
|
[urgency_low]
|
||||||
|
# IMPORTANT: colors have to be defined in quotation marks.
|
||||||
|
# Otherwise the "#" and following would be interpreted as a comment.
|
||||||
|
background = "#263238"
|
||||||
|
foreground = "#556064"
|
||||||
|
timeout = 10
|
||||||
|
|
||||||
|
[urgency_normal]
|
||||||
|
background = "#1E1F29"
|
||||||
|
foreground = "#F9FAF9"
|
||||||
|
timeout = 10
|
||||||
|
#icon = /usr/share/icons/Adwaita/16x16/status/dialog-information-symbolic.symbolic.png
|
||||||
|
|
||||||
|
[urgency_critical]
|
||||||
|
background = "#b71c1c"
|
||||||
|
foreground = "#F9FAF9"
|
||||||
|
timeout = 0
|
||||||
|
|
||||||
|
|
||||||
|
# Every section that isn't one of the above is interpreted as a rules to
|
||||||
|
# override settings for certain messages.
|
||||||
|
# Messages can be matched by "appname", "summary", "body", "icon", "category",
|
||||||
|
# "msg_urgency" and you can override the "timeout", "urgency", "foreground",
|
||||||
|
# "background", "new_icon" and "format".
|
||||||
|
# Shell-like globbing will get expanded.
|
||||||
|
#
|
||||||
|
# SCRIPTING
|
||||||
|
# You can specify a script that gets run when the rule matches by
|
||||||
|
# setting the "script" option.
|
||||||
|
# The script will be called as follows:
|
||||||
|
# script appname summary body icon urgency
|
||||||
|
# where urgency can be "LOW", "NORMAL" or "CRITICAL".
|
||||||
|
#
|
||||||
|
# NOTE: if you don't want a notification to be displayed, set the format
|
||||||
|
# to "".
|
||||||
|
# NOTE: It might be helpful to run dunst -print in a terminal in order
|
||||||
|
# to find fitting options for rules.
|
||||||
|
|
||||||
|
#[espeak]
|
||||||
|
# summary = "*"
|
||||||
|
# script = dunst_espeak.sh
|
||||||
|
|
||||||
|
#[script-test]
|
||||||
|
# summary = "*script*"
|
||||||
|
# script = dunst_test.sh
|
||||||
|
|
||||||
|
#[ignore]
|
||||||
|
# # This notification will not be displayed
|
||||||
|
# summary = "foobar"
|
||||||
|
# format = ""
|
||||||
|
|
||||||
|
#[signed_on]
|
||||||
|
# appname = Pidgin
|
||||||
|
# summary = "*signed on*"
|
||||||
|
# urgency = low
|
||||||
|
#
|
||||||
|
#[signed_off]
|
||||||
|
# appname = Pidgin
|
||||||
|
# summary = *signed off*
|
||||||
|
# urgency = low
|
||||||
|
#
|
||||||
|
#[says]
|
||||||
|
# appname = Pidgin
|
||||||
|
# summary = *says*
|
||||||
|
# urgency = critical
|
||||||
|
#
|
||||||
|
#[twitter]
|
||||||
|
# appname = Pidgin
|
||||||
|
# summary = *twitter.com*
|
||||||
|
# urgency = normal
|
||||||
|
#
|
||||||
|
#[Claws Mail]
|
||||||
|
# appname = claws-mail
|
||||||
|
# category = email.arrived
|
||||||
|
# urgency = normal
|
||||||
|
# background = "#2F899E"
|
||||||
|
# foreground = "#FFA247"
|
||||||
|
#
|
||||||
|
#[mute.sh]
|
||||||
|
# appname = mute
|
||||||
|
# category = mute.sound
|
||||||
|
# script = mute.sh
|
||||||
|
#
|
||||||
|
#[JDownloader]
|
||||||
|
# appname = JDownloader
|
||||||
|
# category = JD
|
||||||
|
# background = "#FFA247"
|
||||||
|
# foreground = "#FFFFFF"
|
||||||
|
#
|
||||||
|
#[newsbeuter]
|
||||||
|
# summary = *Feeds*
|
||||||
|
# background = "#A8EB41"
|
||||||
|
# foreground = "#FFFFFF"
|
||||||
|
#
|
||||||
|
#[irc]
|
||||||
|
# appname = weechat
|
||||||
|
# timeout = 0
|
||||||
|
# background = "#0033bb"
|
||||||
|
# foreground = "#dddddd"
|
||||||
|
#
|
||||||
|
#[weechat hl]
|
||||||
|
# appname = weechat
|
||||||
|
# category = weechat.HL
|
||||||
|
# background = "#FF5C47"
|
||||||
|
# foreground = "#FFFFFF"
|
||||||
|
#
|
||||||
|
#[weechat pn]
|
||||||
|
# appname = weechat
|
||||||
|
# category = weechat.PM
|
||||||
|
# background = "#D53B84"
|
||||||
|
# foreground = "#FFFFFF"
|
||||||
|
#
|
||||||
|
#[CMUS]
|
||||||
|
# appname = CMUS
|
||||||
|
# category = cmus
|
||||||
|
# background = "#6C4AB7"
|
||||||
|
# foreground = "#FFE756"
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# background = "#30AB70"
|
||||||
|
# foreground = "#F67245"
|
||||||
|
#
|
||||||
|
# vim: ft=cfg
|
||||||
|
|
||||||
|
#[speech]
|
||||||
|
#summary = "*"
|
||||||
|
#script = dunst-notify-speech.sh
|
||||||
|
|
||||||
|
|
||||||
|
# Tests
|
||||||
|
|
||||||
|
#dunstify -a "dunst tester" "normal" "<i>italic body</i>"
|
||||||
|
#dunstify -a "dunst tester" -u c "critical" "<b>bold body</b>"
|
||||||
|
#dunstify -a "dunst tester" "long body" "This is a notification with a very long body"
|
|
@ -0,0 +1,422 @@
|
||||||
|
#################################
|
||||||
|
# Shadows #
|
||||||
|
#################################
|
||||||
|
|
||||||
|
|
||||||
|
# Enabled client-side shadows on windows. Note desktop windows
|
||||||
|
# (windows with '_NET_WM_WINDOW_TYPE_DESKTOP') never get shadow,
|
||||||
|
# unless explicitly requested using the wintypes option.
|
||||||
|
#
|
||||||
|
# shadow = false
|
||||||
|
shadow = false;
|
||||||
|
|
||||||
|
# The blur radius for shadows, in pixels. (defaults to 12)
|
||||||
|
# shadow-radius = 12
|
||||||
|
# shadow-radius = 12;
|
||||||
|
|
||||||
|
# The opacity of shadows. (0.0 - 1.0, defaults to 0.75)
|
||||||
|
# shadow-opacity = .8
|
||||||
|
|
||||||
|
# The left offset for shadows, in pixels. (defaults to -15)
|
||||||
|
# shadow-offset-x = -16
|
||||||
|
# shadow-offset-x = -2;
|
||||||
|
|
||||||
|
# The top offset for shadows, in pixels. (defaults to -15)
|
||||||
|
# shadow-offset-y = 2
|
||||||
|
# shadow-offset-y = -0;
|
||||||
|
|
||||||
|
# Avoid drawing shadows on dock/panel windows. This option is deprecated,
|
||||||
|
# you should use the *wintypes* option in your config file instead.
|
||||||
|
#
|
||||||
|
# no-dock-shadow = false
|
||||||
|
|
||||||
|
# Don't draw shadows on drag-and-drop windows. This option is deprecated,
|
||||||
|
# you should use the *wintypes* option in your config file instead.
|
||||||
|
#
|
||||||
|
# no-dnd-shadow = false
|
||||||
|
|
||||||
|
# Red color value of shadow (0.0 - 1.0, defaults to 0).
|
||||||
|
# shadow-red = 0
|
||||||
|
|
||||||
|
# Green color value of shadow (0.0 - 1.0, defaults to 0).
|
||||||
|
# shadow-green = 0
|
||||||
|
|
||||||
|
# Blue color value of shadow (0.0 - 1.0, defaults to 0).
|
||||||
|
# shadow-blue = 0
|
||||||
|
|
||||||
|
# Do not paint shadows on shaped windows. Note shaped windows
|
||||||
|
# here means windows setting its shape through X Shape extension.
|
||||||
|
# Those using ARGB background is beyond our control.
|
||||||
|
# Deprecated, use
|
||||||
|
# shadow-exclude = 'bounding_shaped'
|
||||||
|
# or
|
||||||
|
# shadow-exclude = 'bounding_shaped && !rounded_corners'
|
||||||
|
# instead.
|
||||||
|
#
|
||||||
|
# shadow-ignore-shaped = ''
|
||||||
|
|
||||||
|
# Specify a list of conditions of windows that should have no shadow.
|
||||||
|
#
|
||||||
|
# examples:
|
||||||
|
# shadow-exclude = "n:e:Notification";
|
||||||
|
#
|
||||||
|
# shadow-exclude = []
|
||||||
|
shadow-exclude = [
|
||||||
|
"name = 'Notification'",
|
||||||
|
"class_g = 'Conky'",
|
||||||
|
"class_g ?= 'Notify-osd'",
|
||||||
|
"class_g = 'Cairo-clock'",
|
||||||
|
"class_g ?= 'Rofi'",
|
||||||
|
"_GTK_FRAME_EXTENTS@:c"
|
||||||
|
];
|
||||||
|
|
||||||
|
# Specify a X geometry that describes the region in which shadow should not
|
||||||
|
# be painted in, such as a dock window region. Use
|
||||||
|
# shadow-exclude-reg = "x10+0+0"
|
||||||
|
# for example, if the 10 pixels on the bottom of the screen should not have shadows painted on.
|
||||||
|
#
|
||||||
|
# shadow-exclude-reg = ""
|
||||||
|
|
||||||
|
# Crop shadow of a window fully on a particular Xinerama screen to the screen.
|
||||||
|
# xinerama-shadow-crop = false
|
||||||
|
|
||||||
|
|
||||||
|
#################################
|
||||||
|
# Fading #
|
||||||
|
#################################
|
||||||
|
|
||||||
|
# Fade windows in/out when opening/closing and when opacity changes,
|
||||||
|
# unless no-fading-openclose is used.
|
||||||
|
# fading = false
|
||||||
|
fading = true
|
||||||
|
|
||||||
|
# Opacity change between steps while fading in. (0.01 - 1.0, defaults to 0.028)
|
||||||
|
# fade-in-step = 0.028
|
||||||
|
fade-in-step = 0.03;
|
||||||
|
|
||||||
|
# Opacity change between steps while fading out. (0.01 - 1.0, defaults to 0.03)
|
||||||
|
# fade-out-step = 0.03
|
||||||
|
fade-out-step = 0.03;
|
||||||
|
|
||||||
|
# The time between steps in fade step, in milliseconds. (> 0, defaults to 10)
|
||||||
|
fade-delta = 3
|
||||||
|
|
||||||
|
# Specify a list of conditions of windows that should not be faded.
|
||||||
|
# fade-exclude = []
|
||||||
|
|
||||||
|
# Do not fade on window open/close.
|
||||||
|
# no-fading-openclose = false
|
||||||
|
|
||||||
|
# Do not fade destroyed ARGB windows with WM frame. Workaround of bugs in Openbox, Fluxbox, etc.
|
||||||
|
# no-fading-destroyed-argb = false
|
||||||
|
|
||||||
|
|
||||||
|
#################################
|
||||||
|
# Transparency / Opacity #
|
||||||
|
#################################
|
||||||
|
|
||||||
|
# Opacity of inactive windows. (0.1 - 1.0, defaults to 1.0)
|
||||||
|
# inactive-opacity = 1
|
||||||
|
inactive-opacity = 0.95;
|
||||||
|
|
||||||
|
# Opacity of window titlebars and borders. (0.1 - 1.0, disabled by default)
|
||||||
|
# frame-opacity = 1.0
|
||||||
|
frame-opacity = 1;
|
||||||
|
|
||||||
|
# Default opacity for dropdown menus and popup menus. (0.0 - 1.0, defaults to 1.0)
|
||||||
|
#menu-opacity = 1.0
|
||||||
|
opacity = 1.0
|
||||||
|
|
||||||
|
# Let inactive opacity set by -i override the '_NET_WM_OPACITY' values of windows.
|
||||||
|
# inactive-opacity-override = true
|
||||||
|
inactive-opacity-override = false;
|
||||||
|
|
||||||
|
# Default opacity for active windows. (0.0 - 1.0, defaults to 1.0)
|
||||||
|
# active-opacity = 1.0
|
||||||
|
|
||||||
|
# Dim inactive windows. (0.0 - 1.0, defaults to 0.0)
|
||||||
|
# inactive-dim = 0.0
|
||||||
|
|
||||||
|
# Specify a list of conditions of windows that should always 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
|
||||||
|
|
||||||
|
# Specify a list of opacity rules, in the format `PERCENT:PATTERN`,
|
||||||
|
# like `50:name *= "Firefox"`. picom-trans is recommended over this.
|
||||||
|
# Note we don't make any guarantee about possible conflicts with other
|
||||||
|
# programs that set '_NET_WM_WINDOW_OPACITY' on frame or client windows.
|
||||||
|
# example:
|
||||||
|
# opacity-rule = [ "80:class_g = 'URxvt'" ];
|
||||||
|
#
|
||||||
|
# opacity-rule = []
|
||||||
|
|
||||||
|
|
||||||
|
#################################
|
||||||
|
# Background-Blurring #
|
||||||
|
#################################
|
||||||
|
|
||||||
|
|
||||||
|
# Parameters for background blurring, see the *BLUR* section for more information.
|
||||||
|
# blur-method =
|
||||||
|
# blur-size = 12
|
||||||
|
#
|
||||||
|
# blur-deviation = false
|
||||||
|
|
||||||
|
# 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 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
|
||||||
|
|
||||||
|
|
||||||
|
# Use fixed blur strength rather than adjusting according to window opacity.
|
||||||
|
# blur-background-fixed = false
|
||||||
|
|
||||||
|
|
||||||
|
# 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 = ''
|
||||||
|
# blur-kern = "3x3box";
|
||||||
|
|
||||||
|
|
||||||
|
# Exclude conditions for background blur.
|
||||||
|
# blur-background-exclude = []
|
||||||
|
blur-background-exclude = [
|
||||||
|
"window_type = 'dock'",
|
||||||
|
"window_type = 'desktop'",
|
||||||
|
"_GTK_FRAME_EXTENTS@:c"
|
||||||
|
];
|
||||||
|
|
||||||
|
#################################
|
||||||
|
# General Settings #
|
||||||
|
#################################
|
||||||
|
|
||||||
|
# Daemonize process. Fork to background after initialization. Causes issues with certain (badly-written) drivers.
|
||||||
|
# daemon = false
|
||||||
|
|
||||||
|
# Specify the backend to use: `xrender`, `glx`, or `xr_glx_hybrid`.
|
||||||
|
# `xrender` is the default one.
|
||||||
|
#
|
||||||
|
# backend = 'glx'
|
||||||
|
backend = "glx";
|
||||||
|
|
||||||
|
# Enable/disable VSync.
|
||||||
|
# vsync = false
|
||||||
|
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 = false;
|
||||||
|
|
||||||
|
# Mark override-redirect windows that doesn't have a child window with 'WM_STATE' focused.
|
||||||
|
# mark-ovredir-focused = false
|
||||||
|
mark-ovredir-focused = false;
|
||||||
|
|
||||||
|
# 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 = true;
|
||||||
|
|
||||||
|
# Detect '_NET_WM_OPACITY' on client windows, useful for window managers
|
||||||
|
# not passing '_NET_WM_OPACITY' of client windows to frame windows.
|
||||||
|
#
|
||||||
|
# detect-client-opacity = false
|
||||||
|
# detect-client-opacity = true;
|
||||||
|
|
||||||
|
# Specify refresh rate of the screen. If not specified or 0, picom will
|
||||||
|
# try detecting this with X RandR extension.
|
||||||
|
#
|
||||||
|
# refresh-rate = 60
|
||||||
|
refresh-rate = 60
|
||||||
|
|
||||||
|
# Limit picom to repaint at most once every 1 / 'refresh_rate' second to
|
||||||
|
# boost performance. This should not be used with
|
||||||
|
# vsync drm/opengl/opengl-oml
|
||||||
|
# as they essentially does sw-opti's job already,
|
||||||
|
# unless you wish to specify a lower refresh rate than the actual value.
|
||||||
|
#
|
||||||
|
# sw-opti =
|
||||||
|
|
||||||
|
# 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 = false
|
||||||
|
|
||||||
|
# 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-transient = false
|
||||||
|
|
||||||
|
# Use 'WM_CLIENT_LEADER' to group windows, and consider windows in the same
|
||||||
|
# group focused at the same time. 'WM_TRANSIENT_FOR' has higher priority if
|
||||||
|
# detect-transient is enabled, too.
|
||||||
|
#
|
||||||
|
# detect-client-leader = false
|
||||||
|
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 everytime, 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
|
||||||
|
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 = false
|
||||||
|
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# glx-fshader-win = ''
|
||||||
|
|
||||||
|
# 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 = false
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
# 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"
|
||||||
|
log-level = "error";
|
||||||
|
|
||||||
|
# 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'
|
||||||
|
|
||||||
|
# Show all X errors (for debugging)
|
||||||
|
# show-all-xerrors = false
|
||||||
|
|
||||||
|
# Write process ID to a file.
|
||||||
|
# write-pid-path = '/path/to/your/log/file'
|
||||||
|
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# 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:
|
||||||
|
{
|
||||||
|
tooltip = { fade = true; opacity = 1.0; focus = true; full-shadow = false; };
|
||||||
|
popup_menu = { opacity = 1.0; }
|
||||||
|
dropdown_menu = { opacity = 1.0; }
|
||||||
|
dock = { shadow = false; };
|
||||||
|
};
|
|
@ -0,0 +1,448 @@
|
||||||
|
#################################
|
||||||
|
# Shadows #
|
||||||
|
#################################
|
||||||
|
|
||||||
|
|
||||||
|
# Enabled client-side shadows on windows. Note desktop windows
|
||||||
|
# (windows with '_NET_WM_WINDOW_TYPE_DESKTOP') never get shadow,
|
||||||
|
# unless explicitly requested using the wintypes option.
|
||||||
|
#
|
||||||
|
# shadow = false
|
||||||
|
shadow = true;
|
||||||
|
|
||||||
|
# The blur radius for shadows, in pixels. (defaults to 12)
|
||||||
|
# shadow-radius = 12
|
||||||
|
shadow-radius = 7;
|
||||||
|
|
||||||
|
# The opacity of shadows. (0.0 - 1.0, defaults to 0.75)
|
||||||
|
# shadow-opacity = .75
|
||||||
|
|
||||||
|
# The left offset for shadows, in pixels. (defaults to -15)
|
||||||
|
# shadow-offset-x = -15
|
||||||
|
shadow-offset-x = -7;
|
||||||
|
|
||||||
|
# The top offset for shadows, in pixels. (defaults to -15)
|
||||||
|
# shadow-offset-y = -15
|
||||||
|
shadow-offset-y = -7;
|
||||||
|
|
||||||
|
# Avoid drawing shadows on dock/panel windows. This option is deprecated,
|
||||||
|
# you should use the *wintypes* option in your config file instead.
|
||||||
|
#
|
||||||
|
# no-dock-shadow = false
|
||||||
|
|
||||||
|
# Don't draw shadows on drag-and-drop windows. This option is deprecated,
|
||||||
|
# you should use the *wintypes* option in your config file instead.
|
||||||
|
#
|
||||||
|
# no-dnd-shadow = false
|
||||||
|
|
||||||
|
# Red color value of shadow (0.0 - 1.0, defaults to 0).
|
||||||
|
# shadow-red = 0
|
||||||
|
|
||||||
|
# Green color value of shadow (0.0 - 1.0, defaults to 0).
|
||||||
|
# shadow-green = 0
|
||||||
|
|
||||||
|
# Blue color value of shadow (0.0 - 1.0, defaults to 0).
|
||||||
|
# shadow-blue = 0
|
||||||
|
|
||||||
|
# Do not paint shadows on shaped windows. Note shaped windows
|
||||||
|
# here means windows setting its shape through X Shape extension.
|
||||||
|
# Those using ARGB background is beyond our control.
|
||||||
|
# Deprecated, use
|
||||||
|
# shadow-exclude = 'bounding_shaped'
|
||||||
|
# or
|
||||||
|
# shadow-exclude = 'bounding_shaped && !rounded_corners'
|
||||||
|
# instead.
|
||||||
|
#
|
||||||
|
# shadow-ignore-shaped = ''
|
||||||
|
|
||||||
|
# Specify a list of conditions of windows that should have no shadow.
|
||||||
|
#
|
||||||
|
# examples:
|
||||||
|
# shadow-exclude = "n:e:Notification";
|
||||||
|
#
|
||||||
|
# shadow-exclude = []
|
||||||
|
shadow-exclude = [
|
||||||
|
"name = 'Notification'",
|
||||||
|
"class_g ?= 'Notify-osd'",
|
||||||
|
"name = 'Plank'",
|
||||||
|
"name = 'Docky'",
|
||||||
|
"name = 'Kupfer'",
|
||||||
|
"name = 'xfce4-notifyd'",
|
||||||
|
"name *= 'VLC'",
|
||||||
|
"name *= 'compton'",
|
||||||
|
"name *= 'Chromium'",
|
||||||
|
"name *= 'Chrome'",
|
||||||
|
"class_g = 'Firefox' && argb",
|
||||||
|
"class_g = 'Conky'",
|
||||||
|
"class_g = 'Kupfer'",
|
||||||
|
"class_g = 'Synapse'",
|
||||||
|
"class_g ?= 'Notify-osd'",
|
||||||
|
"class_g ?= 'Cairo-dock'",
|
||||||
|
"class_g = 'Cairo-clock'",
|
||||||
|
"class_g ?= 'Xfce4-notifyd'",
|
||||||
|
"class_g ?= 'Xfce4-power-manager'",
|
||||||
|
"_GTK_FRAME_EXTENTS@:c",
|
||||||
|
"class_g = 'Dunst'",
|
||||||
|
"class_g = 'slop'",
|
||||||
|
"class_g = 'Rofi'",
|
||||||
|
"_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'"
|
||||||
|
];
|
||||||
|
|
||||||
|
# Add this one too for ...
|
||||||
|
# "_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'"
|
||||||
|
# Add this one above to the list to have no shadow in Openbox menu
|
||||||
|
# "! name~=''",
|
||||||
|
|
||||||
|
# Specify a X geometry that describes the region in which shadow should not
|
||||||
|
# be painted in, such as a dock window region. Use
|
||||||
|
# shadow-exclude-reg = "x10+0+0"
|
||||||
|
# for example, if the 10 pixels on the bottom of the screen should not have shadows painted on.
|
||||||
|
#
|
||||||
|
# shadow-exclude-reg = ""
|
||||||
|
|
||||||
|
# Crop shadow of a window fully on a particular Xinerama screen to the screen.
|
||||||
|
# xinerama-shadow-crop = false
|
||||||
|
|
||||||
|
|
||||||
|
#################################
|
||||||
|
# Fading #
|
||||||
|
#################################
|
||||||
|
|
||||||
|
|
||||||
|
# Fade windows in/out when opening/closing and when opacity changes,
|
||||||
|
# unless no-fading-openclose is used.
|
||||||
|
# fading = false
|
||||||
|
fading = true
|
||||||
|
|
||||||
|
# Opacity change between steps while fading in. (0.01 - 1.0, defaults to 0.028)
|
||||||
|
# fade-in-step = 0.028
|
||||||
|
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.08;
|
||||||
|
|
||||||
|
# The time between steps in fade step, in milliseconds. (> 0, defaults to 10)
|
||||||
|
fade-delta = 8
|
||||||
|
|
||||||
|
# Specify a list of conditions of windows that should not be faded.
|
||||||
|
# fade-exclude = []
|
||||||
|
|
||||||
|
# Do not fade on window open/close.
|
||||||
|
no-fading-openclose = false
|
||||||
|
|
||||||
|
# Do not fade destroyed ARGB windows with WM frame. Workaround of bugs in Openbox, Fluxbox, etc.
|
||||||
|
no-fading-destroyed-argb = true
|
||||||
|
|
||||||
|
|
||||||
|
#################################
|
||||||
|
# Transparency / Opacity #
|
||||||
|
#################################
|
||||||
|
|
||||||
|
|
||||||
|
# Opacity of inactive windows. (0.1 - 1.0, defaults to 1.0)
|
||||||
|
# inactive-opacity = 1
|
||||||
|
inactive-opacity = 1;
|
||||||
|
|
||||||
|
# Opacity of window titlebars and borders. (0.1 - 1.0, disabled by default)
|
||||||
|
# frame-opacity = 1.0
|
||||||
|
frame-opacity = 0.9;
|
||||||
|
|
||||||
|
# Default opacity for dropdown menus and popup menus. (0.0 - 1.0, defaults to 1.0)
|
||||||
|
# menu-opacity = 1.0
|
||||||
|
|
||||||
|
# Let inactive opacity set by -i override the '_NET_WM_OPACITY' values of windows.
|
||||||
|
# inactive-opacity-override = true
|
||||||
|
inactive-opacity-override = false;
|
||||||
|
|
||||||
|
# Default opacity for active windows. (0.0 - 1.0, defaults to 1.0)
|
||||||
|
# active-opacity = 1.0
|
||||||
|
|
||||||
|
# Dim inactive windows. (0.0 - 1.0, defaults to 0.0)
|
||||||
|
# inactive-dim = 0.0
|
||||||
|
|
||||||
|
# Specify a list of conditions of windows that should always 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
|
||||||
|
|
||||||
|
# Specify a list of opacity rules, in the format `PERCENT:PATTERN`,
|
||||||
|
# like `50:name *= "Firefox"`. picom-trans is recommended over this.
|
||||||
|
# Note we don't make any guarantee about possible conflicts with other
|
||||||
|
# programs that set '_NET_WM_WINDOW_OPACITY' on frame or client windows.
|
||||||
|
# example:
|
||||||
|
# opacity-rule = [ "80:class_g = 'URxvt'" ];
|
||||||
|
#
|
||||||
|
opacity-rule = [ "80:class_g = 'Alacritty'" ]
|
||||||
|
|
||||||
|
|
||||||
|
#################################
|
||||||
|
# Background-Blurring #
|
||||||
|
#################################
|
||||||
|
|
||||||
|
|
||||||
|
# Parameters for background blurring, see the *BLUR* section for more information.
|
||||||
|
# blur-method =
|
||||||
|
# blur-size = 12
|
||||||
|
#
|
||||||
|
# blur-deviation = false
|
||||||
|
|
||||||
|
# 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 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
|
||||||
|
|
||||||
|
|
||||||
|
# Use fixed blur strength rather than adjusting according to window opacity.
|
||||||
|
# blur-background-fixed = false
|
||||||
|
|
||||||
|
|
||||||
|
# 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 = ''
|
||||||
|
blur-kern = "3x3box";
|
||||||
|
|
||||||
|
|
||||||
|
# Exclude conditions for background blur.
|
||||||
|
# blur-background-exclude = []
|
||||||
|
blur-background-exclude = [
|
||||||
|
"window_type = 'dock'",
|
||||||
|
"window_type = 'desktop'",
|
||||||
|
"_GTK_FRAME_EXTENTS@:c"
|
||||||
|
];
|
||||||
|
|
||||||
|
#################################
|
||||||
|
# General Settings #
|
||||||
|
#################################
|
||||||
|
|
||||||
|
# Daemonize process. Fork to background after initialization. Causes issues with certain (badly-written) drivers.
|
||||||
|
# daemon = false
|
||||||
|
|
||||||
|
# Specify the backend to use: `xrender`, `glx`, or `xr_glx_hybrid`.
|
||||||
|
# `xrender` is the default one.
|
||||||
|
#
|
||||||
|
# backend = "glx"
|
||||||
|
# backend = "xr_glx_hybrid"
|
||||||
|
backend = "glx";
|
||||||
|
|
||||||
|
# Enable/disable VSync.
|
||||||
|
vsync = true
|
||||||
|
#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 = true;
|
||||||
|
|
||||||
|
# Detect '_NET_WM_OPACITY' on client windows, useful for window managers
|
||||||
|
# not passing '_NET_WM_OPACITY' of client windows to frame windows.
|
||||||
|
#
|
||||||
|
# detect-client-opacity = false
|
||||||
|
detect-client-opacity = true;
|
||||||
|
|
||||||
|
# Specify refresh rate of the screen. If not specified or 0, picom will
|
||||||
|
# try detecting this with X RandR extension.
|
||||||
|
#
|
||||||
|
# refresh-rate = 60
|
||||||
|
refresh-rate = 0
|
||||||
|
|
||||||
|
# Limit picom to repaint at most once every 1 / 'refresh_rate' second to
|
||||||
|
# boost performance. This should not be used with
|
||||||
|
# vsync drm/opengl/opengl-oml
|
||||||
|
# as they essentially does sw-opti's job already,
|
||||||
|
# unless you wish to specify a lower refresh rate than the actual value.
|
||||||
|
#
|
||||||
|
# sw-opti =
|
||||||
|
|
||||||
|
# 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 = false
|
||||||
|
|
||||||
|
# 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-transient = true
|
||||||
|
|
||||||
|
# Use 'WM_CLIENT_LEADER' to group windows, and consider windows in the same
|
||||||
|
# group focused at the same time. 'WM_TRANSIENT_FOR' has higher priority if
|
||||||
|
# detect-transient is enabled, too.
|
||||||
|
#
|
||||||
|
# detect-client-leader = false
|
||||||
|
detect-client-leader = true
|
||||||
|
|
||||||
|
# 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 = false
|
||||||
|
|
||||||
|
# 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 everytime, 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
|
||||||
|
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 = false
|
||||||
|
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# glx-fshader-win = ''
|
||||||
|
|
||||||
|
# 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 = false
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
# 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"
|
||||||
|
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 = '~/.config/picom.log'
|
||||||
|
|
||||||
|
# Show all X errors (for debugging)
|
||||||
|
show-all-xerrors = true
|
||||||
|
|
||||||
|
# Write process ID to a file.
|
||||||
|
# write-pid-path = '/path/to/your/log/file'
|
||||||
|
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# 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:
|
||||||
|
{
|
||||||
|
tooltip = { fade = true; shadow = true; opacity = 0.9; focus = true; full-shadow = false; };
|
||||||
|
dock = { shadow = false; }
|
||||||
|
dnd = { shadow = false; }
|
||||||
|
popup_menu = { opacity = 0.9; }
|
||||||
|
dropdown_menu = { opacity = 0.9; }
|
||||||
|
};
|
|
@ -0,0 +1,323 @@
|
||||||
|
modkey = "Mod4"
|
||||||
|
mousekey = "Mod4"
|
||||||
|
workspaces = []
|
||||||
|
tags = ["1", "2", "3", "4", "5", "6"]
|
||||||
|
layouts = [
|
||||||
|
"LeftWiderRightStack",
|
||||||
|
"MainAndDeck",
|
||||||
|
"MainAndVertStack",
|
||||||
|
"MainAndHorizontalStack",
|
||||||
|
"GridHorizontal",
|
||||||
|
"EvenHorizontal",
|
||||||
|
"EvenVertical",
|
||||||
|
"Fibonacci",
|
||||||
|
"CenterMain",
|
||||||
|
"CenterMainBalanced",
|
||||||
|
"Monocle",
|
||||||
|
"RightWiderLeftStack",
|
||||||
|
]
|
||||||
|
layout_mode = "Workspace"
|
||||||
|
scratchpad = []
|
||||||
|
disable_current_tag_swap = false
|
||||||
|
focus_behaviour = "Sloppy"
|
||||||
|
focus_new_windows = true
|
||||||
|
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "Execute"
|
||||||
|
value = "dmenu_run -p 'Run: '"
|
||||||
|
modifier = ["modkey"]
|
||||||
|
key = "p"
|
||||||
|
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "Execute"
|
||||||
|
value = "firefox"
|
||||||
|
modifier = ["modkey", "Shift"]
|
||||||
|
key = "b"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "Execute"
|
||||||
|
value = "nemo"
|
||||||
|
modifier = ["modkey", "Shift"]
|
||||||
|
key = "e"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "Execute"
|
||||||
|
value = "alacritty"
|
||||||
|
modifier = ["modkey", "Shift"]
|
||||||
|
key = "Return"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "CloseWindow"
|
||||||
|
modifier = ["modkey", "Shift"]
|
||||||
|
key = "q"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "SoftReload"
|
||||||
|
modifier = ["modkey", "Shift"]
|
||||||
|
key = "r"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "Execute"
|
||||||
|
value = "loginctl kill-session $XDG_SESSION_ID"
|
||||||
|
modifier = ["modkey", "Shift"]
|
||||||
|
key = "x"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "Execute"
|
||||||
|
value = "slock"
|
||||||
|
modifier = ["modkey", "Control"]
|
||||||
|
key = "l"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "MoveToLastWorkspace"
|
||||||
|
modifier = ["modkey", "Shift"]
|
||||||
|
key = "w"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "SwapTags"
|
||||||
|
modifier = ["modkey"]
|
||||||
|
key = "w"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "MoveWindowUp"
|
||||||
|
modifier = ["modkey", "Shift"]
|
||||||
|
key = "k"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "MoveWindowDown"
|
||||||
|
modifier = ["modkey", "Shift"]
|
||||||
|
key = "j"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "MoveWindowTop"
|
||||||
|
modifier = ["modkey"]
|
||||||
|
key = "Return"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "FocusWindowUp"
|
||||||
|
modifier = ["modkey"]
|
||||||
|
key = "k"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "FocusWindowDown"
|
||||||
|
modifier = ["modkey"]
|
||||||
|
key = "j"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "NextLayout"
|
||||||
|
modifier = ["modkey", "Control"]
|
||||||
|
key = "k"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "PreviousLayout"
|
||||||
|
modifier = ["modkey", "Control"]
|
||||||
|
key = "j"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "FocusWorkspaceNext"
|
||||||
|
modifier = ["modkey"]
|
||||||
|
key = "l"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "FocusWorkspacePrevious"
|
||||||
|
modifier = ["modkey"]
|
||||||
|
key = "h"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "MoveWindowUp"
|
||||||
|
modifier = ["modkey", "Shift"]
|
||||||
|
key = "Up"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "MoveWindowDown"
|
||||||
|
modifier = ["modkey", "Shift"]
|
||||||
|
key = "Down"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "FocusWindowUp"
|
||||||
|
modifier = ["modkey"]
|
||||||
|
key = "Up"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "FocusWindowDown"
|
||||||
|
modifier = ["modkey"]
|
||||||
|
key = "Down"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "NextLayout"
|
||||||
|
modifier = ["modkey", "Control"]
|
||||||
|
key = "Up"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "PreviousLayout"
|
||||||
|
modifier = ["modkey", "Control"]
|
||||||
|
key = "Down"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "FocusWorkspaceNext"
|
||||||
|
modifier = ["modkey"]
|
||||||
|
key = "Right"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "FocusWorkspacePrevious"
|
||||||
|
modifier = ["modkey"]
|
||||||
|
key = "Left"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "GotoTag"
|
||||||
|
value = "1"
|
||||||
|
modifier = ["modkey"]
|
||||||
|
key = "1"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "GotoTag"
|
||||||
|
value = "2"
|
||||||
|
modifier = ["modkey"]
|
||||||
|
key = "2"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "GotoTag"
|
||||||
|
value = "3"
|
||||||
|
modifier = ["modkey"]
|
||||||
|
key = "3"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "GotoTag"
|
||||||
|
value = "4"
|
||||||
|
modifier = ["modkey"]
|
||||||
|
key = "4"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "GotoTag"
|
||||||
|
value = "5"
|
||||||
|
modifier = ["modkey"]
|
||||||
|
key = "5"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "GotoTag"
|
||||||
|
value = "6"
|
||||||
|
modifier = ["modkey"]
|
||||||
|
key = "6"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "GotoTag"
|
||||||
|
value = "7"
|
||||||
|
modifier = ["modkey"]
|
||||||
|
key = "7"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "GotoTag"
|
||||||
|
value = "8"
|
||||||
|
modifier = ["modkey"]
|
||||||
|
key = "8"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "GotoTag"
|
||||||
|
value = "9"
|
||||||
|
modifier = ["modkey"]
|
||||||
|
key = "9"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "MoveToTag"
|
||||||
|
value = "1"
|
||||||
|
modifier = ["modkey", "Shift"]
|
||||||
|
key = "1"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "MoveToTag"
|
||||||
|
value = "2"
|
||||||
|
modifier = ["modkey", "Shift"]
|
||||||
|
key = "2"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "MoveToTag"
|
||||||
|
value = "3"
|
||||||
|
modifier = ["modkey", "Shift"]
|
||||||
|
key = "3"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "MoveToTag"
|
||||||
|
value = "4"
|
||||||
|
modifier = ["modkey", "Shift"]
|
||||||
|
key = "4"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "MoveToTag"
|
||||||
|
value = "5"
|
||||||
|
modifier = ["modkey", "Shift"]
|
||||||
|
key = "5"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "MoveToTag"
|
||||||
|
value = "6"
|
||||||
|
modifier = ["modkey", "Shift"]
|
||||||
|
key = "6"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "MoveToTag"
|
||||||
|
value = "7"
|
||||||
|
modifier = ["modkey", "Shift"]
|
||||||
|
key = "7"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "MoveToTag"
|
||||||
|
value = "8"
|
||||||
|
modifier = ["modkey", "Shift"]
|
||||||
|
key = "8"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "MoveToTag"
|
||||||
|
value = "9"
|
||||||
|
modifier = ["modkey", "Shift"]
|
||||||
|
key = "9"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "IncreaseMainWidth"
|
||||||
|
value = "5"
|
||||||
|
modifier = ["modkey"]
|
||||||
|
key = "a"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "DecreaseMainWidth"
|
||||||
|
value = "5"
|
||||||
|
modifier = ["modkey"]
|
||||||
|
key = "x"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "ToggleFullScreen"
|
||||||
|
modifier = ["modkey"]
|
||||||
|
key = "f"
|
||||||
|
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "FocusNextTag"
|
||||||
|
modifier = ["modkey", "Shift"]
|
||||||
|
key = "Right"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "FocusPreviousTag"
|
||||||
|
modifier = ["modkey", "Shift"]
|
||||||
|
key = "Left"
|
||||||
|
|
||||||
|
|
||||||
|
# Theme applets
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "Execute"
|
||||||
|
value = "$HOME/.config/leftwm/themes/current/scripts/launcher.sh"
|
||||||
|
modifier = ["modkey"]
|
||||||
|
key = "space"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "Execute"
|
||||||
|
value = "$HOME/.config/leftwm/themes/current/scripts/powermenu.sh"
|
||||||
|
modifier = ["modkey", "Shift"]
|
||||||
|
key = "p"
|
||||||
|
|
||||||
|
[[keybind]]
|
||||||
|
command = "Execute"
|
||||||
|
value = "$HOME/.config/leftwm/themes/current/scripts/layout.sh"
|
||||||
|
modifier = ["modkey", "Shift"]
|
||||||
|
key = "l"
|
|
@ -0,0 +1,25 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )"
|
||||||
|
|
||||||
|
# Set background
|
||||||
|
if [ -x "$(command -v feh)" ]; then
|
||||||
|
feh --bg-fill $SCRIPTPATH/down.jpg
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "UnloadTheme" > $XDG_RUNTIME_DIR/leftwm/commands.pipe
|
||||||
|
|
||||||
|
|
||||||
|
# Kill procs
|
||||||
|
pkill picom &
|
||||||
|
pkill compton &
|
||||||
|
pkill polybar &
|
||||||
|
pkill nm-applet &
|
||||||
|
pkill pamac-tray &
|
||||||
|
pkill xfce4-power-manager &
|
||||||
|
pkill blueberry-tray &
|
||||||
|
pkill volumeicon &
|
||||||
|
pkill xfce4-notifyd &
|
||||||
|
pkill dunst &
|
||||||
|
pkill wired &
|
||||||
|
pkill sxhkd &
|
|
@ -0,0 +1,41 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Dirs
|
||||||
|
DIR=`pwd`
|
||||||
|
FONT_DIR="$HOME/.local/share/fonts"
|
||||||
|
|
||||||
|
# Install Fonts
|
||||||
|
install_fonts() {
|
||||||
|
echo -e "\n[*] Installing fonts..."
|
||||||
|
if [[ -d "$FONT_DIR" ]]; then
|
||||||
|
cp -rf $DIR/fonts/* "$FONT_DIR"
|
||||||
|
else
|
||||||
|
mkdir -p "$FONT_DIR"
|
||||||
|
cp -rf $DIR/fonts/* "$FONT_DIR"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Main
|
||||||
|
main() {
|
||||||
|
clear
|
||||||
|
cat <<- EOF
|
||||||
|
[*] Installing Fonts in $FONT_DIR
|
||||||
|
|
||||||
|
[1] Continue
|
||||||
|
[2] Exit
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
read -p "[?] Select Option : "
|
||||||
|
|
||||||
|
if [[ $REPLY == "1" ]]; then
|
||||||
|
install_fonts
|
||||||
|
elif [[ $REPLY == "2" ]]; then
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo -e "\n[!] Invalid Option, Exiting...\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
main
|
|
@ -0,0 +1,40 @@
|
||||||
|
;; ┌────────────────────────────────────────────────────────────┐
|
||||||
|
;; │░█▀█░█▀█░█░░░█░█░█▀▄░█▀█░█▀▄░░░░░░░░░█▀▀░█▀█░█░░░█▀█░█▀▄░█▀▀│
|
||||||
|
;; │░█▀▀░█░█░█░░░░█░░█▀▄░█▀█░█▀▄░░░░▀░░░░█░░░█░█░█░░░█░█░█▀▄░▀▀█│
|
||||||
|
;; │░▀░░░▀▀▀░▀▀▀░░▀░░▀▀░░▀░▀░▀░▀░░░░▀░░░░▀▀▀░▀▀▀░▀▀▀░▀▀▀░▀░▀░▀▀▀│
|
||||||
|
;; └────────────────────────────────────────────────────────────┘
|
||||||
|
|
||||||
|
|
||||||
|
[color]
|
||||||
|
;; Main colors
|
||||||
|
background = #332E41
|
||||||
|
foreground = #B7E5E6
|
||||||
|
;;foreground-alt = #9C9C9C
|
||||||
|
primary = #C6AAE8
|
||||||
|
secondary = #DFDEF1
|
||||||
|
alternate = #FFE70D
|
||||||
|
|
||||||
|
trans = #00000000
|
||||||
|
white = #FFFFFF
|
||||||
|
black = #000000
|
||||||
|
|
||||||
|
;; Material Colors
|
||||||
|
red = #e53935
|
||||||
|
pink = #d81b60
|
||||||
|
purple = #8e24aa
|
||||||
|
deep-purple = #5e35b1
|
||||||
|
indigo = #3949ab
|
||||||
|
blue = #1e88e5
|
||||||
|
light-blue = #039be5
|
||||||
|
cyan = #00acc1
|
||||||
|
teal = #00897b
|
||||||
|
green = #43a047
|
||||||
|
light-green = #7cb342
|
||||||
|
lime = #c0ca33
|
||||||
|
yellow = #fdd835
|
||||||
|
amber = #ffb300
|
||||||
|
orange = #fb8c00
|
||||||
|
deep-orange = #f4511e
|
||||||
|
brown = #6d4c41
|
||||||
|
grey = #757575
|
||||||
|
blue-gray = #546e7a
|
|
@ -0,0 +1,63 @@
|
||||||
|
;; ┌────────────────────────────────────────────────────────────┐
|
||||||
|
;; │░█▀█░█▀█░█░░░█░█░█▀▄░█▀█░█▀▄░░░░░░░░░█▀▀░█▀█░█▀█░█▀▀░▀█▀░█▀▀│
|
||||||
|
;; │░█▀▀░█░█░█░░░░█░░█▀▄░█▀█░█▀▄░░░░▀░░░░█░░░█░█░█░█░█▀▀░░█░░█░█│
|
||||||
|
;; │░▀░░░▀▀▀░▀▀▀░░▀░░▀▀░░▀░▀░▀░▀░░░░▀░░░░▀▀▀░▀▀▀░▀░▀░▀░░░▀▀▀░▀▀▀│
|
||||||
|
;; └────────────────────────────────────────────────────────────┘
|
||||||
|
|
||||||
|
;; File Inclusion
|
||||||
|
include-file = $HOME/.config/leftwm/themes/current/polybar.colors
|
||||||
|
include-file = $HOME/.config/leftwm/themes/current/polybar.modules
|
||||||
|
|
||||||
|
|
||||||
|
[bar/mainbar0]
|
||||||
|
inherit = bar/barbase
|
||||||
|
modules-left = workspace0
|
||||||
|
|
||||||
|
|
||||||
|
[bar/mainbar1]
|
||||||
|
inherit = bar/barbase
|
||||||
|
modules-left = workspace1
|
||||||
|
|
||||||
|
|
||||||
|
[bar/barbase]
|
||||||
|
width = ${env:width}
|
||||||
|
monitor = ${env:monitor}
|
||||||
|
offset-x = 15
|
||||||
|
offset-y = 4
|
||||||
|
height = 24
|
||||||
|
fixed-center = true
|
||||||
|
bottom = false
|
||||||
|
background = ${color.background}
|
||||||
|
foreground = ${color.foreground}
|
||||||
|
radius-top = 8
|
||||||
|
radius-bottom = 8
|
||||||
|
padding-left = 1
|
||||||
|
padding-right = 2
|
||||||
|
module-margin-left = 0
|
||||||
|
module-margin-right = 0
|
||||||
|
font-0 = "Iosevka Nerd Font:size=8;2"
|
||||||
|
font-1 = "Roboto:size=11:weight=bold;2"
|
||||||
|
font-2 = "Noto Sans:size=11;1"
|
||||||
|
font-3 = "FontAwesome:size=10"
|
||||||
|
font-4 = "Feather:size=9;2"
|
||||||
|
modules-right = arch-updates spacer date
|
||||||
|
border-bottom = 0
|
||||||
|
cursor-click = pointer
|
||||||
|
cursor-scroll = ns-resize
|
||||||
|
tray-position = none
|
||||||
|
|
||||||
|
|
||||||
|
[settings]
|
||||||
|
screenchange-reload = true
|
||||||
|
throttle-output = 5
|
||||||
|
throttle-output-for = 10
|
||||||
|
compositing-background = source
|
||||||
|
compositing-foreground = over
|
||||||
|
compositing-overline = over
|
||||||
|
compositing-underline = over
|
||||||
|
compositing-border = over
|
||||||
|
pseudo-transparency = true
|
||||||
|
|
||||||
|
[global/wm]
|
||||||
|
margin-top = 0
|
||||||
|
margin-bottom = 0
|
|
@ -0,0 +1,19 @@
|
||||||
|
{% for tag in workspace.tags %}
|
||||||
|
|
||||||
|
%{T1}
|
||||||
|
{% if tag.mine %}%{A1:$SCRIPTPATH/change_to_tag {{workspace.index}} {{tag.index}}:}%{F#C6AAE8} %{F-}%{A}
|
||||||
|
{% elsif tag.visible %}%{A1:$SCRIPTPATH/change_to_tag {{workspace.index}} {{tag.index}}:}%{F#C6AAE8} %{F-}%{A}
|
||||||
|
{% elsif tag.busy %}%{A1:$SCRIPTPATH/change_to_tag {{workspace.index}} {{tag.index}}:}%{F#DFDEF1} %{F-}%{A}
|
||||||
|
{% else tag.visible %}%{A1:$SCRIPTPATH/change_to_tag {{workspace.index}} {{tag.index}}:}%{F#DFDEF1} %{F-}%{A}
|
||||||
|
{% endif %}
|
||||||
|
%{T-}
|
||||||
|
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
%{T5}%{O20}%{T-}
|
||||||
|
|
||||||
|
%{T1}
|
||||||
|
%{A1:leftwm-command "NextLayout" :}%{A3:leftwm-command "PreviousLayout" :}
|
||||||
|
%{B#332E41}%{F#B7E5E6} {{ workspace.layout }} %{F-}%{B-}
|
||||||
|
%{A}%{A}
|
||||||
|
%{T-}
|
|
@ -0,0 +1,390 @@
|
||||||
|
;; ┌────────────────────────────────────────────────────────────────┐
|
||||||
|
;; │░█▀█░█▀█░█░░░█░█░█▀▄░█▀█░█▀▄░░░░░░░░░█▄█░█▀█░█▀▄░█░█░█░░░█▀▀░█▀▀│
|
||||||
|
;; │░█▀▀░█░█░█░░░░█░░█▀▄░█▀█░█▀▄░░░░▀░░░░█░█░█░█░█░█░█░█░█░░░█▀▀░▀▀█│
|
||||||
|
;; │░▀░░░▀▀▀░▀▀▀░░▀░░▀▀░░▀░▀░▀░▀░░░░▀░░░░▀░▀░▀▀▀░▀▀░░▀▀▀░▀▀▀░▀▀▀░▀▀▀│
|
||||||
|
;; └────────────────────────────────────────────────────────────────┘
|
||||||
|
|
||||||
|
###### List of available modules ######
|
||||||
|
;; arch-updates
|
||||||
|
;; battery
|
||||||
|
;; cpu
|
||||||
|
;; cpu-graph
|
||||||
|
;; date
|
||||||
|
;; ewmh
|
||||||
|
;; layout
|
||||||
|
;; layout0
|
||||||
|
;; layout1
|
||||||
|
;; launcher
|
||||||
|
;; mem
|
||||||
|
;; mem-graph
|
||||||
|
;; powermenu
|
||||||
|
;; pulseaudio
|
||||||
|
;; pulseaudio-control
|
||||||
|
;; spacer
|
||||||
|
;; spacer-dot
|
||||||
|
;; temperature
|
||||||
|
;; wlan
|
||||||
|
;; workspace0
|
||||||
|
;; workspace1
|
||||||
|
|
||||||
|
|
||||||
|
###### Modules ######
|
||||||
|
|
||||||
|
|
||||||
|
[module/arch-updates]
|
||||||
|
type = custom/script
|
||||||
|
exec = $HOME/.config/leftwm/themes/current/scripts/check-arch-updates.sh
|
||||||
|
interval = 1000
|
||||||
|
label = %output%
|
||||||
|
format-foreground = ${color.foreground}
|
||||||
|
format-background = ${color.background}
|
||||||
|
format-prefix-foreground = ${color.foreground}
|
||||||
|
click-left = alacritty -e sudo pacman -Syu
|
||||||
|
click-right = pamac-manager --updates
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[module/battery]
|
||||||
|
;https://github.com/jaagr/polybar/wiki/Module:-battery
|
||||||
|
type = internal/battery
|
||||||
|
battery = BAT1
|
||||||
|
adapter = AC0
|
||||||
|
full-at = 100
|
||||||
|
|
||||||
|
format-charging = <animation-charging> <label-charging>
|
||||||
|
label-charging = %percentage%%
|
||||||
|
format-charging-foreground = ${color.foreground}
|
||||||
|
format-charging-background = ${color.background}
|
||||||
|
;format-charging-underline = #a3c725
|
||||||
|
|
||||||
|
format-discharging = <ramp-capacity> <label-discharging>
|
||||||
|
label-discharging = %percentage%%
|
||||||
|
;format-discharging-underline = #c7ae25
|
||||||
|
format-discharging-foreground = ${color.foreground}
|
||||||
|
format-discharging-background = ${color.background}
|
||||||
|
|
||||||
|
format-full-prefix = " "
|
||||||
|
format-full-prefix-foreground = #a3c725
|
||||||
|
;format-full-underline = #a3c725
|
||||||
|
format-full-foreground = ${color.foreground}
|
||||||
|
format-full-background = ${color.background}
|
||||||
|
|
||||||
|
ramp-capacity-0 =
|
||||||
|
ramp-capacity-1 =
|
||||||
|
ramp-capacity-2 =
|
||||||
|
ramp-capacity-3 =
|
||||||
|
ramp-capacity-4 =
|
||||||
|
ramp-capacity-foreground = #c7ae25
|
||||||
|
|
||||||
|
animation-charging-0 =
|
||||||
|
animation-charging-1 =
|
||||||
|
animation-charging-2 =
|
||||||
|
animation-charging-3 =
|
||||||
|
animation-charging-4 =
|
||||||
|
animation-charging-foreground = #a3c725
|
||||||
|
animation-charging-framerate = 750
|
||||||
|
|
||||||
|
|
||||||
|
[module/bluetooth]
|
||||||
|
type = custom/script
|
||||||
|
exec = $HOME/.config/leftwm/themes/current/scripts/bluetooth.sh
|
||||||
|
interval = 2
|
||||||
|
click-left = blueberry
|
||||||
|
click-right = $HOME/.config/leftwm/themes/current/scripts/bluetooth_toggle.sh
|
||||||
|
format-padding = 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[module/cpu]
|
||||||
|
type = internal/cpu
|
||||||
|
interval = 2
|
||||||
|
;format-prefix = " "
|
||||||
|
;format-prefix-foreground = ${color.shade4}
|
||||||
|
;format-foreground = ${color.modulefg}
|
||||||
|
;format-background = ${color.shade6}
|
||||||
|
;format-underline = #f90000
|
||||||
|
label = CPU %percentage:2%%
|
||||||
|
|
||||||
|
|
||||||
|
[module/cpu-graph]
|
||||||
|
type = internal/cpu
|
||||||
|
interval = 0.08
|
||||||
|
;format = " <ramp-coreload>"
|
||||||
|
format = " <ramp-coreload>"
|
||||||
|
format-margin = 1
|
||||||
|
ramp-coreload-0 = ▁
|
||||||
|
ramp-coreload-0-foreground = ${color.foreground}
|
||||||
|
ramp-coreload-1 = ▂
|
||||||
|
ramp-coreload-1-foreground = ${color.foreground}
|
||||||
|
ramp-coreload-2 = ▃
|
||||||
|
ramp-coreload-2-foreground = ${color.light-green}
|
||||||
|
ramp-coreload-3 = ▄
|
||||||
|
ramp-coreload-3-foreground = ${color.green}
|
||||||
|
ramp-coreload-4 = ▅
|
||||||
|
ramp-coreload-4-foreground = ${color.yellow}
|
||||||
|
ramp-coreload-5 = ▆
|
||||||
|
ramp-coreload-5-foreground = ${color.yellow}
|
||||||
|
ramp-coreload-6 = ▇
|
||||||
|
ramp-coreload-6-foreground = ${color.red}
|
||||||
|
ramp-coreload-7 = █
|
||||||
|
ramp-coreload-7-foreground = ${color.red}
|
||||||
|
ramp-coreload-font = 3
|
||||||
|
format-background = ${color.background}
|
||||||
|
format-foreground = ${color.foreground}
|
||||||
|
format-underline =
|
||||||
|
format-padding = 1
|
||||||
|
|
||||||
|
|
||||||
|
[module/date]
|
||||||
|
type = internal/date
|
||||||
|
interval = 1.0
|
||||||
|
time = %a %H:%M
|
||||||
|
time-alt = %B %d, %Y
|
||||||
|
format = <label>
|
||||||
|
label = %time%
|
||||||
|
format-prefix = " "
|
||||||
|
|
||||||
|
|
||||||
|
[module/ewmh]
|
||||||
|
type = internal/xworkspaces
|
||||||
|
pin-workspaces = true
|
||||||
|
enable-click = true
|
||||||
|
enable-scroll = true
|
||||||
|
format = <label-state>
|
||||||
|
label-monitor = %name%
|
||||||
|
|
||||||
|
|
||||||
|
[module/layout]
|
||||||
|
type = custom/script
|
||||||
|
exec = leftwm-state -w "$index" -s "{{ workspace.layout }}"
|
||||||
|
tail = true
|
||||||
|
|
||||||
|
|
||||||
|
[module/layout0]
|
||||||
|
type = custom/script
|
||||||
|
format-prefix = " "
|
||||||
|
format-prefix-foreground = ${color..primary}
|
||||||
|
exec = leftwm-state -w 0 -s "{{ workspace.layout }}"
|
||||||
|
tail = true
|
||||||
|
click-left = leftwm-command "NextLayout"
|
||||||
|
click-right = leftwm-command "PreviousLayout"
|
||||||
|
|
||||||
|
|
||||||
|
[module/layout1]
|
||||||
|
type = custom/script
|
||||||
|
format-prefix = " "
|
||||||
|
format-prefix-foreground = ${color.primary}
|
||||||
|
exec = leftwm-state -w 1 -s "{{ workspace.layout }}"
|
||||||
|
tail = true
|
||||||
|
click-left = leftwm-command "NextLayout"
|
||||||
|
click-right = leftwm-command "PreviousLayout"
|
||||||
|
|
||||||
|
|
||||||
|
[module/launcher]
|
||||||
|
type = custom/text
|
||||||
|
content = ""
|
||||||
|
content-padding = 2
|
||||||
|
content-foreground = ${color.background}
|
||||||
|
content-background = ${color.primary}
|
||||||
|
click-left = $HOME/.config/leftwm/themes/current/rofi/launcher.sh
|
||||||
|
|
||||||
|
|
||||||
|
[module/mem]
|
||||||
|
type = internal/memory
|
||||||
|
interval = 2
|
||||||
|
label = MEM %percentage_used%%
|
||||||
|
|
||||||
|
|
||||||
|
[module/mem-graph]
|
||||||
|
type = internal/memory
|
||||||
|
|
||||||
|
; Seconds to sleep between updates
|
||||||
|
; Default: 1
|
||||||
|
interval = 2
|
||||||
|
; Available tags:
|
||||||
|
; <label> (default)
|
||||||
|
; <bar-used>
|
||||||
|
; <bar-free>
|
||||||
|
; <ramp-used>
|
||||||
|
; <ramp-free>
|
||||||
|
; <bar-swap-used>
|
||||||
|
; <bar-swap-free>
|
||||||
|
; <ramp-swap-used>
|
||||||
|
; <ramp-swap-free>
|
||||||
|
format = " <bar-used> <ramp-swap-used>"
|
||||||
|
|
||||||
|
;format = "<label>"
|
||||||
|
|
||||||
|
ramp-swap-used-0 = ▁
|
||||||
|
ramp-swap-used-1 = ▂
|
||||||
|
ramp-swap-used-2 = ▃
|
||||||
|
ramp-swap-used-3 = ▄
|
||||||
|
ramp-swap-used-4 = ▅
|
||||||
|
ramp-swap-used-5 = ▆
|
||||||
|
ramp-swap-used-6 = ▇
|
||||||
|
ramp-swap-used-7 = █
|
||||||
|
ramp-swap-used-0-foreground = ${color.foreground}
|
||||||
|
ramp-swap-used-1-foreground = ${color.light-green}
|
||||||
|
ramp-swap-used-2-foreground = ${color.green}
|
||||||
|
ramp-swap-used-3-foreground = ${color.yellow}
|
||||||
|
ramp-swap-used-4-foreground = ${color.red}
|
||||||
|
ramp-swap-used-5-foreground = ${color.red}
|
||||||
|
ramp-swap-used-6-foreground = ${color.red}
|
||||||
|
ramp-swap-used-7-foreground = ${color.red}
|
||||||
|
ramp-swap-used-font = 3
|
||||||
|
;ramp-swap-used-underline = ${color.foreground}
|
||||||
|
|
||||||
|
; Available tokens:
|
||||||
|
; %percentage_used% (default)
|
||||||
|
; %percentage_free%
|
||||||
|
; %gb_used%
|
||||||
|
; %gb_free%
|
||||||
|
; %gb_total%
|
||||||
|
; %mb_used%
|
||||||
|
; %mb_free%
|
||||||
|
; %mb_total%
|
||||||
|
; %percentage_swap_used%
|
||||||
|
; %percentage_swap_free%
|
||||||
|
; %mb_swap_total%
|
||||||
|
; %mb_swap_free%
|
||||||
|
; %mb_swap_used%
|
||||||
|
; %gb_swap_total%
|
||||||
|
; %gb_swap_free%
|
||||||
|
; %gb_swap_used%
|
||||||
|
|
||||||
|
label = " %percentage_used%%"
|
||||||
|
|
||||||
|
; Only applies if <bar-used> is used
|
||||||
|
|
||||||
|
bar-used-indicator =
|
||||||
|
bar-used-width = 10
|
||||||
|
bar-used-fill = ━
|
||||||
|
bar-used-empty = ━
|
||||||
|
bar-used-indicator-foreground = ${color.foreground}
|
||||||
|
bar-used-empty-foreground = ${color.foreground}
|
||||||
|
bar-used-foreground-0 = ${color.green}
|
||||||
|
bar-used-foreground-1 = ${color.yellow}
|
||||||
|
bar-used-foreground-2 = ${color.red}
|
||||||
|
|
||||||
|
; Only applies if <ramp-used> is used
|
||||||
|
ramp-used-0 = ▁
|
||||||
|
ramp-used-1 = ▂
|
||||||
|
ramp-used-2 = ▃
|
||||||
|
ramp-used-3 = ▄
|
||||||
|
ramp-used-4 = ▅
|
||||||
|
ramp-used-5 = ▆
|
||||||
|
ramp-used-6 = ▇
|
||||||
|
ramp-used-7 = █
|
||||||
|
ramp-used-0-foreground = ${color.foreground}
|
||||||
|
ramp-used-1-foreground = ${color.foreground}
|
||||||
|
ramp-used-2-foreground = ${color.light-green}
|
||||||
|
ramp-used-3-foreground = ${color.green}
|
||||||
|
ramp-used-4-foreground = ${color.yellow}
|
||||||
|
ramp-used-5-foreground = ${color.yellow}
|
||||||
|
ramp-used-6-foreground = ${color.red}
|
||||||
|
ramp-used-7-foreground = ${color.red}
|
||||||
|
ramp-used-font = 3
|
||||||
|
|
||||||
|
; Only applies if <ramp-free> is used
|
||||||
|
ramp-free-0 = ▁
|
||||||
|
ramp-free-1 = ▂
|
||||||
|
ramp-free-2 = ▃
|
||||||
|
ramp-free-3 = ▄
|
||||||
|
ramp-free-4 = ▅
|
||||||
|
ramp-free-5 = ▆
|
||||||
|
ramp-free-6 = ▇
|
||||||
|
ramp-free-7 = █
|
||||||
|
|
||||||
|
format-background = ${color.background}
|
||||||
|
format-foreground = ${color.foreground}
|
||||||
|
;format-underline = ${color.foreground
|
||||||
|
format-padding = 1
|
||||||
|
|
||||||
|
|
||||||
|
[module/powermenu]
|
||||||
|
type = custom/text
|
||||||
|
content = "襤"
|
||||||
|
content-padding = 2
|
||||||
|
content-foreground = ${color.background}
|
||||||
|
content-background = ${color.primary}
|
||||||
|
click-left = $HOME/.config/leftwm/themes/current/rofi/powermenu.sh
|
||||||
|
|
||||||
|
|
||||||
|
[module/pulseaudio]
|
||||||
|
type = internal/pulseaudio
|
||||||
|
format-volume = <ramp-volume> <label-volume>
|
||||||
|
label-volume = %percentage%%
|
||||||
|
ramp-volume-0 = 奄
|
||||||
|
ramp-volume-1 = 奔
|
||||||
|
ramp-volume-2 = 墳
|
||||||
|
label-muted = 婢 muted
|
||||||
|
label-muted-foreground = ${color..primary}
|
||||||
|
click-right = pavucontrol
|
||||||
|
|
||||||
|
|
||||||
|
[module/pulseaudio-control]
|
||||||
|
type = custom/script
|
||||||
|
tail = true
|
||||||
|
format-underline = ${colors.cyan}
|
||||||
|
label-padding = 0
|
||||||
|
label-foreground = ${colors.foreground}
|
||||||
|
|
||||||
|
# Icons mixed from Font Awesome 5 and Material Icons
|
||||||
|
# You can copy-paste your options for each possible action, which is more
|
||||||
|
# trouble-free but repetitive, or apply only the relevant ones (for example
|
||||||
|
# --sink-blacklist is only needed for next-sink).
|
||||||
|
exec = $HOME/.config/leftwm/themes/current/scripts/pulseaudio-control.sh --icons-volume " , " --icon-muted " " --sink-nicknames-from "device.description" --sink-nickname "alsa_output.pci-0000_07_00.6.iec958-stereo:蓼 Speakers" --sink-nickname "alsa_output.pci-0000_07_00.6.analog-stereo: Headphones" listen
|
||||||
|
click-right = exec pavucontrol &
|
||||||
|
click-left = $HOME/.config/leftwm/themes/current/scripts/pulseaudio-control.sh togmute
|
||||||
|
click-middle = $HOME/.config/leftwm/themes/current/scripts/pulseaudio-control.sh --sink-blacklist "alsa_output.pci-0000_01_00.1.hdmi-stereo-extra2" next-sink
|
||||||
|
scroll-up = $HOME/.config/leftwm/themes/current/scripts/pulseaudio-control.sh --volume-max 130 up
|
||||||
|
scroll-down = $HOME/.config/leftwm/themes/current/scripts/pulseaudio-control.sh --volume-max 130 down
|
||||||
|
|
||||||
|
|
||||||
|
[module/spacer]
|
||||||
|
type = custom/text
|
||||||
|
content = " "
|
||||||
|
|
||||||
|
[module/spacer-dot]
|
||||||
|
type = custom/text
|
||||||
|
content-foreground = ${color.grey}
|
||||||
|
content = "·"
|
||||||
|
|
||||||
|
[module/temperature]
|
||||||
|
type = internal/temperature
|
||||||
|
thermal-zone = 0
|
||||||
|
warn-temperature = 60
|
||||||
|
|
||||||
|
format = <label>
|
||||||
|
format-underline = #f50a4d
|
||||||
|
format-warn = <label-warn>
|
||||||
|
format-warn-underline = ${self.format-underline}
|
||||||
|
format-background = ${color.background}
|
||||||
|
format-foreground = ${color.foreground}
|
||||||
|
|
||||||
|
label = %temperature-c%
|
||||||
|
label-warn = %temperature-c%
|
||||||
|
label-warn-foreground = ${color.orange}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[module/wlan]
|
||||||
|
type = internal/network
|
||||||
|
interface = wlp5s0
|
||||||
|
interval = 3.0
|
||||||
|
|
||||||
|
format-connected = <label-connected>
|
||||||
|
format-connected-padding = 0
|
||||||
|
label-connected = "%{A1:nm-connection-editor:}直 %{A}"
|
||||||
|
|
||||||
|
|
||||||
|
[module/workspace0]
|
||||||
|
type = custom/script
|
||||||
|
exec = leftwm-state -w 0 -t "$SCRIPTPATH/polybar.liquid"
|
||||||
|
tail = true
|
||||||
|
|
||||||
|
|
||||||
|
[module/workspace1]
|
||||||
|
type = custom/script
|
||||||
|
exec = leftwm-state -w 1 -t "$SCRIPTPATH/polybar.liquid"
|
||||||
|
tail = true
|
After Width: | Height: | Size: 54 KiB |
After Width: | Height: | Size: 52 KiB |
After Width: | Height: | Size: 37 KiB |
After Width: | Height: | Size: 35 KiB |
After Width: | Height: | Size: 39 KiB |
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 332 KiB |
After Width: | Height: | Size: 338 KiB |
|
@ -0,0 +1,12 @@
|
||||||
|
#!/bin/sh
|
||||||
|
if [ $(bluetoothctl show | grep "Powered: yes" | wc -c) -eq 0 ]
|
||||||
|
then
|
||||||
|
echo "%{F#6E6C7E} Off %{F-}"
|
||||||
|
else
|
||||||
|
if [ $(echo info | bluetoothctl | grep 'Device' | wc -c) -eq 0 ]
|
||||||
|
then
|
||||||
|
echo " "
|
||||||
|
else
|
||||||
|
echo "%{F#C6AAE8} %{F-}"
|
||||||
|
fi
|
||||||
|
fi
|
|
@ -0,0 +1,7 @@
|
||||||
|
#!/bin/sh
|
||||||
|
if [ $(bluetoothctl show | grep "Powered: yes" | wc -c) -eq 0 ]
|
||||||
|
then
|
||||||
|
bluetoothctl power on
|
||||||
|
else
|
||||||
|
bluetoothctl power off
|
||||||
|
fi
|
|
@ -0,0 +1,11 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#source https://github.com/x70b1/polybar-scripts
|
||||||
|
#source https://github.com/polybar/polybar-scripts
|
||||||
|
|
||||||
|
if ! updates_arch=$(checkupdates 2> /dev/null | wc -l ); then
|
||||||
|
updates_arch=0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $updates_arch -gt 0 ]; then
|
||||||
|
echo %{F#C6AAE8} Arch: $updates_arch %{F-}
|
||||||
|
fi
|
|
@ -0,0 +1,62 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Checking that you are screwing up :)
|
||||||
|
theme=$1
|
||||||
|
if [ -z "$1" ]
|
||||||
|
then
|
||||||
|
# No theme supplied by UP script / falling back to Amber
|
||||||
|
theme="catppuccin"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Available themes array
|
||||||
|
themes=(catppuccin catppuccin2);
|
||||||
|
if [[ " "${themes[@]}" " == *" "$1" "* ]] ;then
|
||||||
|
echo "Good boy.."
|
||||||
|
else
|
||||||
|
# Invalid theme supplied by UP script / falling back to Amber
|
||||||
|
theme="catppuccin"
|
||||||
|
fi
|
||||||
|
|
||||||
|
source $HOME/.config/leftwm/themes/current/scripts/colors_$theme.sh
|
||||||
|
|
||||||
|
# Color files
|
||||||
|
THEME_FILE="$HOME/.config/leftwm/themes/current/theme.toml"
|
||||||
|
POLYBAR_FILE="$HOME/.config/leftwm/themes/current/polybar.colors"
|
||||||
|
LIQUID_POLYBAR_FILE="$HOME/.config/leftwm/themes/current/polybar.liquid"
|
||||||
|
ROFI_FILE="$HOME/.config/leftwm/themes/current/scripts/rasi/colors.rasi"
|
||||||
|
SCRIPT_BT_FILE="$HOME/.config/leftwm/themes/current/scripts/bluetooth.sh"
|
||||||
|
SCRIPT_CAU_FILE="$HOME/.config/leftwm/themes/current/scripts/check-arch-updates.sh"
|
||||||
|
|
||||||
|
# Change LeftWM theme colors
|
||||||
|
sed -i -e "s/default_border_color = '#.*/default_border_color = '$COLOR_BORDER_INACTIVE'/g" $THEME_FILE
|
||||||
|
sed -i -e "s/floating_border_color = '#.*/floating_border_color = '$COLOR_BORDER_FLOATING'/g" $THEME_FILE
|
||||||
|
sed -i -e "s/focused_border_color = '#.*/focused_border_color = '$COLOR_BORDER_ACTIVE'/g" $THEME_FILE
|
||||||
|
|
||||||
|
# Change rofi colors
|
||||||
|
sed -i -e "s/background: #.*/background: $COLOR_APPLET_BACKGROUND;/g" $ROFI_FILE
|
||||||
|
sed -i -e "s/background-light: #.*/background-light: $COLOR_APPLET_BACKGROUND_LIGHT;/g" $ROFI_FILE
|
||||||
|
sed -i -e "s/foreground: #.*/foreground: $COLOR_FOREGROUND;/g" $ROFI_FILE
|
||||||
|
sed -i -e "s/foreground-dark: #.*/foreground-dark: $COLOR_FOREGROUND_DARK;/g" $ROFI_FILE
|
||||||
|
sed -i -e "s/primary: #.*/primary: $COLOR_PRIMARY;/g" $ROFI_FILE
|
||||||
|
sed -i -e "s/bordercolor: #.*/bordercolor: $COLOR_BORDER_ACTIVE;/g" $ROFI_FILE
|
||||||
|
|
||||||
|
# Change polybar config colors
|
||||||
|
sed -i -e "s/background = #.*/background = $COLOR_BAR_BACKGROUND/g" $POLYBAR_FILE
|
||||||
|
sed -i -e "s/foreground = #.*/foreground = $COLOR_BAR_FOREGROUND/g" $POLYBAR_FILE
|
||||||
|
sed -i -e "s/primary = #.*/primary = $COLOR_PRIMARY/g" $POLYBAR_FILE
|
||||||
|
sed -i -e "s/secondary = #.*/secondary = $COLOR_SECONDARY/g" $POLYBAR_FILE
|
||||||
|
sed -i -e "s/alternate = #.*/alternate = $COLOR_ALTERNATE/g" $POLYBAR_FILEFILE
|
||||||
|
|
||||||
|
# Change polybar liquid colors
|
||||||
|
sed -i -e "/^{% if tag.mine %}/s/#[a-zA-Z0-9]\{6\}/$COLOR_PRIMARY/g" $LIQUID_POLYBAR_FILE
|
||||||
|
sed -i -e "/^{% elsif tag.visible %}/s/#[a-zA-Z0-9]\{6\}/$COLOR_PRIMARY/g" $LIQUID_POLYBAR_FILE
|
||||||
|
sed -i -e "/^{% elsif tag.busy %}/s/#[a-zA-Z0-9]\{6\}/$COLOR_SECONDARY/g" $LIQUID_POLYBAR_FILE
|
||||||
|
sed -i -e "/^{% else tag.visible %}%/s/#[a-zA-Z0-9]\{6\}/$COLOR_FOREGROUND/g" $LIQUID_POLYBAR_FILE
|
||||||
|
sed -i -e "s/%{B#[A-Za-z0-9_]*}%{F#[A-Za-z0-9_]*} {{ workspace.layout }}/%{B$COLOR_BAR_BACKGROUND}%{F$COLOR_BAR_FOREGROUND} {{ workspace.layout }}/g" $LIQUID_POLYBAR_FILE
|
||||||
|
|
||||||
|
# Change Bluetooth script colors
|
||||||
|
sed -i -e "s/%{F#[A-Za-z0-9_]*/%{F$COLOR_PRIMARY/g" $SCRIPT_BT_FILE
|
||||||
|
sed -i -e "s/%{F#[A-Za-z0-9_]*} Off/%{F$COLOR_INACTIVE} Off/g" $SCRIPT_BT_FILE
|
||||||
|
|
||||||
|
# Change Check Arch updates script colors
|
||||||
|
sed -i -e "s/%{F#[A-Za-z0-9_]*/%{F$COLOR_PRIMARY/g" $SCRIPT_CAU_FILE
|
|
@ -0,0 +1,17 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
## Catppuccin theme
|
||||||
|
COLOR_BAR_BACKGROUND="#332E41"
|
||||||
|
COLOR_BAR_FOREGROUND="#B7E5E6"
|
||||||
|
COLOR_BACKGROUND="#332E41"
|
||||||
|
COLOR_FOREGROUND="#DFDEF1"
|
||||||
|
COLOR_FOREGROUND_DARK="#988BA2"
|
||||||
|
COLOR_PRIMARY="#C6AAE8"
|
||||||
|
COLOR_SECONDARY="#DFDEF1"
|
||||||
|
COLOR_ALTERNATE="#C6AAE8"
|
||||||
|
COLOR_INACTIVE="#6E6C7E"
|
||||||
|
COLOR_BORDER_ACTIVE="#C6AAE8"
|
||||||
|
COLOR_BORDER_INACTIVE="#1E1E28"
|
||||||
|
COLOR_BORDER_FLOATING="#F2CDCD"
|
||||||
|
COLOR_APPLET_BACKGROUND="#332E41"
|
||||||
|
COLOR_APPLET_BACKGROUND_LIGHT="#575268"
|
|
@ -0,0 +1,17 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
## Catppuccin2 theme
|
||||||
|
COLOR_BAR_BACKGROUND="#332E41"
|
||||||
|
COLOR_BAR_FOREGROUND="#F5E0DC"
|
||||||
|
COLOR_BACKGROUND="#332E41"
|
||||||
|
COLOR_FOREGROUND="#DFDEF1"
|
||||||
|
COLOR_FOREGROUND_DARK="#988BA2"
|
||||||
|
COLOR_PRIMARY="#B7E5E6"
|
||||||
|
COLOR_SECONDARY="#DFDEF1"
|
||||||
|
COLOR_ALTERNATE="#B7E5E6"
|
||||||
|
COLOR_INACTIVE="#6E6C7E"
|
||||||
|
COLOR_BORDER_ACTIVE="#B7E5E6"
|
||||||
|
COLOR_BORDER_INACTIVE="#1E1E28"
|
||||||
|
COLOR_BORDER_FLOATING="#F2CDCD"
|
||||||
|
COLOR_APPLET_BACKGROUND="#332E41"
|
||||||
|
COLOR_APPLET_BACKGROUND_LIGHT="#575268"
|
|
@ -0,0 +1,2 @@
|
||||||
|
#!/bin/sh
|
||||||
|
printf "%.0f\n" $(free -m | grep Mem | awk '{print ($3/$2)*100}')
|
|
@ -0,0 +1,2 @@
|
||||||
|
#!/bin/sh
|
||||||
|
amixer -D pulse sget Master | grep 'Left:' | awk -F'[][]' '{ print $2 }' | tr -d '%' | head -1
|
|
@ -0,0 +1,24 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# SETTINGS ####################################################
|
||||||
|
# Possible positions:
|
||||||
|
# center
|
||||||
|
# north
|
||||||
|
# northeast
|
||||||
|
# east
|
||||||
|
# southeast
|
||||||
|
# south
|
||||||
|
# southwest
|
||||||
|
# west
|
||||||
|
# northwest
|
||||||
|
LOCATION="center"
|
||||||
|
###############################################################
|
||||||
|
|
||||||
|
LPATH="$( cd "$(dirname "$0")" ; pwd -P )"
|
||||||
|
|
||||||
|
# Rofi config
|
||||||
|
rofi_cmd="rofi -theme $LPATH/rasi/launcher.rasi"
|
||||||
|
|
||||||
|
# Main
|
||||||
|
$rofi_cmd -no-lazy-grab -show drun -modi drun \
|
||||||
|
-theme-str 'window {location: '$LOCATION';}'
|
|
@ -0,0 +1,46 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# SETTINGS ####################################################
|
||||||
|
# Possible positions:
|
||||||
|
# center
|
||||||
|
# north
|
||||||
|
# northeast
|
||||||
|
# east
|
||||||
|
# southeast
|
||||||
|
# south
|
||||||
|
# southwest
|
||||||
|
# west
|
||||||
|
# northwest
|
||||||
|
LOCATION="center"
|
||||||
|
###############################################################
|
||||||
|
|
||||||
|
LPATH="$( cd "$(dirname "$0")" ; pwd -P )"
|
||||||
|
WSACTIVE="$(leftwm-state -q -t $LPATH/misc/workspaceid.liquid)"
|
||||||
|
|
||||||
|
# Items to display
|
||||||
|
LAYOUT="$(leftwm-state -q -n -w $WSACTIVE -s "{{workspace.layout}}")"
|
||||||
|
PREV=""
|
||||||
|
NEXT=""
|
||||||
|
|
||||||
|
# Rofi config
|
||||||
|
rofi_cmd="rofi -theme $LPATH/rasi/layout.rasi"
|
||||||
|
display="$PREV\n$NEXT"
|
||||||
|
|
||||||
|
# Main
|
||||||
|
chosen="$(echo -e "$display" | \
|
||||||
|
$rofi_cmd -p "$LAYOUT" -dmenu \
|
||||||
|
-theme-str 'window {location: '$LOCATION';}' \
|
||||||
|
-selected-row 1\
|
||||||
|
)"
|
||||||
|
|
||||||
|
# Use choosen
|
||||||
|
case $chosen in
|
||||||
|
$PREV)
|
||||||
|
leftwm-command "PreviousLayout"
|
||||||
|
${0}
|
||||||
|
;;
|
||||||
|
$NEXT)
|
||||||
|
leftwm-command "NextLayout"
|
||||||
|
${0}
|
||||||
|
;;
|
||||||
|
esac
|
|
@ -0,0 +1,73 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
rm -f /tmp/screenshot*.png
|
||||||
|
|
||||||
|
# Take screenshot
|
||||||
|
scrot /tmp/screenshot.png
|
||||||
|
|
||||||
|
# Pixelate
|
||||||
|
convert /tmp/screenshot.png \
|
||||||
|
-scale 10% \
|
||||||
|
-scale 1000% \
|
||||||
|
-fill "#282828" \
|
||||||
|
-colorize 30% \
|
||||||
|
/tmp/lockscreen.png
|
||||||
|
|
||||||
|
# i3Lock
|
||||||
|
alpha="D9"
|
||||||
|
base03="#002b36"
|
||||||
|
base02="#212121"
|
||||||
|
base01="#586e75"
|
||||||
|
base00="#657b83"
|
||||||
|
base0="#839496"
|
||||||
|
base1="#93a1a1"
|
||||||
|
base2="#eee8d5"
|
||||||
|
base3="#fdf6e3"
|
||||||
|
yellow="#fdd835"
|
||||||
|
orange="#fb8c00"
|
||||||
|
red="#e53935"
|
||||||
|
magenta="#d33682"
|
||||||
|
violet="#8e24aa"
|
||||||
|
blue="#0DD7FF"
|
||||||
|
cyan="#00acc1"
|
||||||
|
green="#43a047"
|
||||||
|
amber="#ffb300"
|
||||||
|
white="#f5f5f5"
|
||||||
|
lime="#c0ca33"
|
||||||
|
black="#212121"
|
||||||
|
|
||||||
|
i3lock \
|
||||||
|
--image="/tmp/lockscreen.png" \
|
||||||
|
--insidever-color=$base02$alpha \
|
||||||
|
--insidewrong-color=$base02$alpha \
|
||||||
|
--inside-color=$base02$alpha \
|
||||||
|
--ringver-color=$green$alpha \
|
||||||
|
--ringwrong-color=$red$alpha \
|
||||||
|
--ringver-color=$green$alpha \
|
||||||
|
--ringwrong-color=$red$alpha \
|
||||||
|
--ring-color=$amber$alpha \
|
||||||
|
--line-uses-ring \
|
||||||
|
--keyhl-color=$blue$alpha \
|
||||||
|
--bshl-color=$orange$alpha \
|
||||||
|
--separator-color=$base01$alpha \
|
||||||
|
--verif-color=$green \
|
||||||
|
--wrong-color=$red \
|
||||||
|
--layout-color=$white \
|
||||||
|
--date-color=$white \
|
||||||
|
--time-color=$white \
|
||||||
|
--screen 1 \
|
||||||
|
--clock \
|
||||||
|
--indicator \
|
||||||
|
--time-str="%H:%M:%S" \
|
||||||
|
--date-str="%a %b %e %Y" \
|
||||||
|
--verif-text="Verifying..." \
|
||||||
|
--wrong-text="Auth Failed" \
|
||||||
|
--noinput="No Input" \
|
||||||
|
--lock-text="Locking..." \
|
||||||
|
--lockfailed="Lock Failed" \
|
||||||
|
--radius=120 \
|
||||||
|
--ring-width=15 \
|
||||||
|
--pass-media-keys \
|
||||||
|
--pass-screen-keys \
|
||||||
|
--pass-volume-keys \
|
|
@ -0,0 +1,14 @@
|
||||||
|
{% for tag in workspace.tags %}
|
||||||
|
|
||||||
|
{% if tag.mine %}
|
||||||
|
{{tag.index}},{{tag.name}},m;
|
||||||
|
{% elsif tag.visible %}
|
||||||
|
{{tag.index}},{{tag.name}},v;
|
||||||
|
{% elsif tag.busy %}
|
||||||
|
{{tag.index}},{{tag.name}},b;
|
||||||
|
{% else tag.visible %}
|
||||||
|
{{tag.index}},{{tag.name}},e;
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
|
{% endfor %}
|
|
@ -0,0 +1,9 @@
|
||||||
|
{% for ws in workspaces %}
|
||||||
|
{% for tag in ws.tags %}
|
||||||
|
{% if tag.mine %}
|
||||||
|
{% if tag.focused %}
|
||||||
|
{{ ws.index }}
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% endfor %}
|
|
@ -0,0 +1,156 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# SETTINGS ####################################################
|
||||||
|
# Feather font icons:
|
||||||
|
shutdown=""
|
||||||
|
reboot=""
|
||||||
|
lock=""
|
||||||
|
suspend=""
|
||||||
|
logout=""
|
||||||
|
#
|
||||||
|
# Possible positions:
|
||||||
|
# center
|
||||||
|
# north
|
||||||
|
# northeast
|
||||||
|
# east
|
||||||
|
# southeast
|
||||||
|
# south
|
||||||
|
# southwest
|
||||||
|
# west
|
||||||
|
# northwest
|
||||||
|
LOCATION="center"
|
||||||
|
#
|
||||||
|
CONFIRMATION_MSG="Are You Sure? : "
|
||||||
|
CONFIRMATION_OPT="Available Options: [y/yes] [n/no]"
|
||||||
|
###############################################################
|
||||||
|
|
||||||
|
LPATH="$( cd "$(dirname "$0")" ; pwd -P )"
|
||||||
|
|
||||||
|
# Rofi config
|
||||||
|
rofi_cmd="rofi -theme $LPATH/rasi/powermenu.rasi"
|
||||||
|
options="$shutdown\n$reboot\n$lock\n$suspend\n$logout"
|
||||||
|
|
||||||
|
|
||||||
|
# Confirmation
|
||||||
|
confirm_option() {
|
||||||
|
rofi -dmenu\
|
||||||
|
-i\
|
||||||
|
-no-fixed-num-lines\
|
||||||
|
-p "$CONFIRMATION_MSG"\
|
||||||
|
-theme $LPATH/rasi/confirm.rasi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Message
|
||||||
|
msg() {
|
||||||
|
rofi -theme "$LPATH/rasi/message.rasi" \
|
||||||
|
-e "$CONFIRMATION_OPT"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Main
|
||||||
|
chosen="$(echo -e "$options" | \
|
||||||
|
$rofi_cmd -dmenu \
|
||||||
|
-theme-str 'window {location: '$LOCATION';}' \
|
||||||
|
-selected-row 2\
|
||||||
|
)"
|
||||||
|
|
||||||
|
# Use choosen
|
||||||
|
case $chosen in
|
||||||
|
$lock)
|
||||||
|
confirm=$(confirm_option &)
|
||||||
|
if [[ $confirm == "yes" || \
|
||||||
|
$confirm == "YES" || \
|
||||||
|
$confirm == "y" || \
|
||||||
|
$confirm == "Y" ]]; \
|
||||||
|
then
|
||||||
|
$LPATH/misc/lockscreen
|
||||||
|
elif [[ $confirm == "no" || \
|
||||||
|
$confirm == "NO" || \
|
||||||
|
$confirm == "n" || \
|
||||||
|
$aconfirmns == "N" ]]; \
|
||||||
|
then
|
||||||
|
${0}
|
||||||
|
else
|
||||||
|
msg
|
||||||
|
${0}
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
$shutdown)
|
||||||
|
confirm=$(confirm_option &)
|
||||||
|
if [[ $confirm == "yes" || \
|
||||||
|
$confirm == "YES" || \
|
||||||
|
$confirm == "y" || \
|
||||||
|
$confirm == "Y" ]]; \
|
||||||
|
then
|
||||||
|
systemctl poweroff
|
||||||
|
elif [[ $confirm == "no" || \
|
||||||
|
$confirm == "NO" || \
|
||||||
|
$confirm == "n" || \
|
||||||
|
$aconfirmns == "N" ]]; \
|
||||||
|
then
|
||||||
|
${0}
|
||||||
|
else
|
||||||
|
msg
|
||||||
|
${0}
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
$reboot)
|
||||||
|
confirm=$(confirm_option &)
|
||||||
|
if [[ $confirm == "yes" || \
|
||||||
|
$confirm == "YES" || \
|
||||||
|
$confirm == "y" || \
|
||||||
|
$confirm == "Y" ]]; \
|
||||||
|
then
|
||||||
|
systemctl reboot
|
||||||
|
elif [[ $confirm == "no" || \
|
||||||
|
$confirm == "NO" || \
|
||||||
|
$confirm == "n" || \
|
||||||
|
$aconfirmns == "N" ]]; \
|
||||||
|
then
|
||||||
|
${0}
|
||||||
|
else
|
||||||
|
msg
|
||||||
|
${0}
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
$suspend)
|
||||||
|
confirm=$(confirm_option &)
|
||||||
|
if [[ $confirm == "yes" || \
|
||||||
|
$confirm == "YES" || \
|
||||||
|
$confirm == "y" || \
|
||||||
|
$confirm == "Y" ]]; \
|
||||||
|
then
|
||||||
|
mpc -q pause &
|
||||||
|
amixer set Master mute &
|
||||||
|
systemctl suspend
|
||||||
|
elif [[ $confirm == "no" || \
|
||||||
|
$confirm == "NO" || \
|
||||||
|
$confirm == "n" || \
|
||||||
|
$aconfirmns == "N" ]]; \
|
||||||
|
then
|
||||||
|
${0}
|
||||||
|
else
|
||||||
|
msg
|
||||||
|
${0}
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
$logout)
|
||||||
|
confirm=$(confirm_option &)
|
||||||
|
if [[ $confirm == "yes" || \
|
||||||
|
$confirm == "YES" || \
|
||||||
|
$confirm == "y" || \
|
||||||
|
$confirm == "Y" ]]; \
|
||||||
|
then
|
||||||
|
loginctl terminate-session ${XDG_SESSION_ID-}
|
||||||
|
elif [[ $confirm == "no" || \
|
||||||
|
$confirm == "NO" || \
|
||||||
|
$confirm == "n" || \
|
||||||
|
$aconfirmns == "N" ]]; \
|
||||||
|
then
|
||||||
|
${0}
|
||||||
|
else
|
||||||
|
msg
|
||||||
|
${0}
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
|
@ -0,0 +1,21 @@
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2019 Mario
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
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 OR COPYRIGHT HOLDERS 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.
|
|
@ -0,0 +1,519 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Polybar Pulseaudio Control v2.2.5 #
|
||||||
|
# https://github.com/marioortizmanero/polybar-pulseaudio-control #
|
||||||
|
##################################################################
|
||||||
|
|
||||||
|
# Defaults for configurable values, expected to be set by command-line arguments
|
||||||
|
AUTOSYNC="no"
|
||||||
|
COLOR_MUTED="%{F#6b6b6b}"
|
||||||
|
ICON_MUTED=
|
||||||
|
ICON_SINK=
|
||||||
|
NOTIFICATIONS="no"
|
||||||
|
OSD="no"
|
||||||
|
SINK_NICKNAMES_PROP=
|
||||||
|
VOLUME_STEP=2
|
||||||
|
VOLUME_MAX=130
|
||||||
|
# shellcheck disable=SC2016
|
||||||
|
FORMAT='$VOL_ICON ${VOL_LEVEL}% $ICON_SINK $SINK_NICKNAME'
|
||||||
|
declare -A SINK_NICKNAMES
|
||||||
|
declare -a ICONS_VOLUME
|
||||||
|
declare -a SINK_BLACKLIST
|
||||||
|
|
||||||
|
# Environment & global constants for the script
|
||||||
|
export LC_ALL=C # Some calls depend on English outputs of pactl
|
||||||
|
END_COLOR="%{F-}" # For Polybar colors
|
||||||
|
|
||||||
|
|
||||||
|
# Saves the currently default sink into a variable named `curSink`. It will
|
||||||
|
# return an error code when pulseaudio isn't running.
|
||||||
|
function getCurSink() {
|
||||||
|
if ! pactl info &>/dev/null; then return 1; fi
|
||||||
|
local curSinkName
|
||||||
|
|
||||||
|
curSinkName=$(pactl info | awk '/Default Sink: / {print $3}')
|
||||||
|
curSink=$(pactl list sinks | grep -B 4 -E "Name: $curSinkName\$" | sed -nE 's/^Sink #([0-9]+)$/\1/p')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Saves the sink passed by parameter's volume into a variable named `VOL_LEVEL`.
|
||||||
|
function getCurVol() {
|
||||||
|
VOL_LEVEL=$(pactl list sinks | grep -A 15 -E "^Sink #$1\$" | grep 'Volume:' | grep -E -v 'Base Volume:' | awk -F : '{print $3; exit}' | grep -o -P '.{0,3}%' | sed 's/.$//' | tr -d ' ')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Saves the name of the sink passed by parameter into a variable named
|
||||||
|
# `sinkName`.
|
||||||
|
function getSinkName() {
|
||||||
|
sinkName=$(pactl list sinks short | awk -v sink="$1" '{ if ($1 == sink) {print $2} }')
|
||||||
|
portName=$(pactl list sinks | grep -e 'Sink #' -e 'Active Port: ' | sed -n "/^Sink #$1\$/,+1p" | awk '/Active Port: / {print $3}')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Saves the name to be displayed for the sink passed by parameter into a
|
||||||
|
# variable called `SINK_NICKNAME`.
|
||||||
|
# If a mapping for the sink name exists, that is used. Otherwise, the string
|
||||||
|
# "Sink #<index>" is used.
|
||||||
|
function getNickname() {
|
||||||
|
getSinkName "$1"
|
||||||
|
unset SINK_NICKNAME
|
||||||
|
|
||||||
|
if [ -n "$sinkName" ] && [ -n "$portName" ] && [ -n "${SINK_NICKNAMES[$sinkName/$portName]}" ]; then
|
||||||
|
SINK_NICKNAME="${SINK_NICKNAMES[$sinkName/$portName]}"
|
||||||
|
elif [ -n "$sinkName" ] && [ -n "${SINK_NICKNAMES[$sinkName]}" ]; then
|
||||||
|
SINK_NICKNAME="${SINK_NICKNAMES[$sinkName]}"
|
||||||
|
elif [ -n "$sinkName" ] && [ -n "$SINK_NICKNAMES_PROP" ]; then
|
||||||
|
getNicknameFromProp "$SINK_NICKNAMES_PROP" "$sinkName"
|
||||||
|
# Cache that result for next time
|
||||||
|
SINK_NICKNAMES["$sinkName"]="$SINK_NICKNAME"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$SINK_NICKNAME" ]; then
|
||||||
|
SINK_NICKNAME="Sink #$1"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Gets sink nickname based on a given property.
|
||||||
|
function getNicknameFromProp() {
|
||||||
|
local nickname_prop="$1"
|
||||||
|
local for_name="$2"
|
||||||
|
|
||||||
|
SINK_NICKNAME=
|
||||||
|
while read -r property value; do
|
||||||
|
case "$property" in
|
||||||
|
Name:)
|
||||||
|
sink_name="$value"
|
||||||
|
unset sink_desc
|
||||||
|
;;
|
||||||
|
"$nickname_prop")
|
||||||
|
if [ "$sink_name" != "$for_name" ]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
SINK_NICKNAME="${value:3:-1}"
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done < <(pactl list sinks)
|
||||||
|
}
|
||||||
|
|
||||||
|
# Saves the status of the sink passed by parameter into a variable named
|
||||||
|
# `IS_MUTED`.
|
||||||
|
function getIsMuted() {
|
||||||
|
IS_MUTED=$(pactl list sinks | grep -E "^Sink #$1\$" -A 15 | awk '/Mute: / {print $2}')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Saves all the sink inputs of the sink passed by parameter into a string
|
||||||
|
# named `sinkInputs`.
|
||||||
|
function getSinkInputs() {
|
||||||
|
sinkInputs=$(pactl list sink-inputs | grep -B 4 "Sink: $1" | sed -nE 's/^Sink Input #([0-9]+)$/\1/p')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function volUp() {
|
||||||
|
# Obtaining the current volume from pulseaudio into $VOL_LEVEL.
|
||||||
|
if ! getCurSink; then
|
||||||
|
echo "PulseAudio not running"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
getCurVol "$curSink"
|
||||||
|
local maxLimit=$((VOLUME_MAX - VOLUME_STEP))
|
||||||
|
|
||||||
|
# Checking the volume upper bounds so that if VOLUME_MAX was 100% and the
|
||||||
|
# increase percentage was 3%, a 99% volume would top at 100% instead
|
||||||
|
# of 102%. If the volume is above the maximum limit, nothing is done.
|
||||||
|
if [ "$VOL_LEVEL" -le "$VOLUME_MAX" ] && [ "$VOL_LEVEL" -ge "$maxLimit" ]; then
|
||||||
|
pactl set-sink-volume "$curSink" "$VOLUME_MAX%"
|
||||||
|
elif [ "$VOL_LEVEL" -lt "$maxLimit" ]; then
|
||||||
|
pactl set-sink-volume "$curSink" "+$VOLUME_STEP%"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $OSD = "yes" ]; then showOSD "$curSink"; fi
|
||||||
|
if [ $AUTOSYNC = "yes" ]; then volSync; fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function volDown() {
|
||||||
|
# Pactl already handles the volume lower bounds so that negative values
|
||||||
|
# are ignored.
|
||||||
|
if ! getCurSink; then
|
||||||
|
echo "PulseAudio not running"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
pactl set-sink-volume "$curSink" "-$VOLUME_STEP%"
|
||||||
|
|
||||||
|
if [ $OSD = "yes" ]; then showOSD "$curSink"; fi
|
||||||
|
if [ $AUTOSYNC = "yes" ]; then volSync; fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function volSync() {
|
||||||
|
if ! getCurSink; then
|
||||||
|
echo "PulseAudio not running"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
getSinkInputs "$curSink"
|
||||||
|
getCurVol "$curSink"
|
||||||
|
|
||||||
|
# Every output found in the active sink has their volume set to the
|
||||||
|
# current one. This will only be called if $AUTOSYNC is `yes`.
|
||||||
|
for each in $sinkInputs; do
|
||||||
|
pactl set-sink-input-volume "$each" "$VOL_LEVEL%"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function volMute() {
|
||||||
|
# Switch to mute/unmute the volume with pactl.
|
||||||
|
if ! getCurSink; then
|
||||||
|
echo "PulseAudio not running"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
if [ "$1" = "toggle" ]; then
|
||||||
|
getIsMuted "$curSink"
|
||||||
|
if [ "$IS_MUTED" = "yes" ]; then
|
||||||
|
pactl set-sink-mute "$curSink" "no"
|
||||||
|
else
|
||||||
|
pactl set-sink-mute "$curSink" "yes"
|
||||||
|
fi
|
||||||
|
elif [ "$1" = "mute" ]; then
|
||||||
|
pactl set-sink-mute "$curSink" "yes"
|
||||||
|
elif [ "$1" = "unmute" ]; then
|
||||||
|
pactl set-sink-mute "$curSink" "no"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $OSD = "yes" ]; then showOSD "$curSink"; fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function nextSink() {
|
||||||
|
# The final sinks list, removing the blacklisted ones from the list of
|
||||||
|
# currently available sinks.
|
||||||
|
if ! getCurSink; then
|
||||||
|
echo "PulseAudio not running"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Obtaining a tuple of sink indexes after removing the blacklisted devices
|
||||||
|
# with their name.
|
||||||
|
sinks=()
|
||||||
|
local i=0
|
||||||
|
while read -r line; do
|
||||||
|
index=$(echo "$line" | cut -f1)
|
||||||
|
name=$(echo "$line" | cut -f2)
|
||||||
|
|
||||||
|
# If it's in the blacklist, continue the main loop. Otherwise, add
|
||||||
|
# it to the list.
|
||||||
|
for sink in "${SINK_BLACKLIST[@]}"; do
|
||||||
|
if [ "$sink" = "$name" ]; then
|
||||||
|
continue 2
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
sinks[$i]="$index"
|
||||||
|
i=$((i + 1))
|
||||||
|
done < <(pactl list short sinks | sort -n)
|
||||||
|
|
||||||
|
# If the resulting list is empty, nothing is done
|
||||||
|
if [ ${#sinks[@]} -eq 0 ]; then return; fi
|
||||||
|
|
||||||
|
# If the current sink is greater or equal than last one, pick the first
|
||||||
|
# sink in the list. Otherwise just pick the next sink avaliable.
|
||||||
|
local newSink
|
||||||
|
if [ "$curSink" -ge "${sinks[-1]}" ]; then
|
||||||
|
newSink=${sinks[0]}
|
||||||
|
else
|
||||||
|
for sink in "${sinks[@]}"; do
|
||||||
|
if [ "$curSink" -lt "$sink" ]; then
|
||||||
|
newSink=$sink
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
# The new sink is set
|
||||||
|
pactl set-default-sink "$newSink"
|
||||||
|
|
||||||
|
# Move all audio threads to new sink
|
||||||
|
local inputs
|
||||||
|
inputs="$(pactl list short sink-inputs | cut -f 1)"
|
||||||
|
for i in $inputs; do
|
||||||
|
pactl move-sink-input "$i" "$newSink"
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ $NOTIFICATIONS = "yes" ]; then
|
||||||
|
getNickname "$newSink"
|
||||||
|
|
||||||
|
if command -v dunstify &>/dev/null; then
|
||||||
|
notify="dunstify --replace 201839192"
|
||||||
|
else
|
||||||
|
notify="notify-send"
|
||||||
|
fi
|
||||||
|
$notify "PulseAudio" "Changed output to $SINK_NICKNAME" --icon=audio-headphones-symbolic &
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# This function assumes that PulseAudio is already running. It only supports
|
||||||
|
# KDE OSDs for now. It will show a system message with the status of the
|
||||||
|
# sink passed by parameter, or the currently active one by default.
|
||||||
|
function showOSD() {
|
||||||
|
if [ -z "$1" ]; then
|
||||||
|
curSink="$1"
|
||||||
|
else
|
||||||
|
getCurSink
|
||||||
|
fi
|
||||||
|
getCurVol "$curSink"
|
||||||
|
getIsMuted "$curSink"
|
||||||
|
qdbus org.kde.kded /modules/kosd showVolume "$VOL_LEVEL" "$IS_MUTED"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function listen() {
|
||||||
|
local firstRun=0
|
||||||
|
|
||||||
|
# Listen for changes and immediately create new output for the bar.
|
||||||
|
# This is faster than having the script on an interval.
|
||||||
|
pactl subscribe 2>/dev/null | {
|
||||||
|
while true; do
|
||||||
|
{
|
||||||
|
# If this is the first time just continue and print the current
|
||||||
|
# state. Otherwise wait for events. This is to prevent the
|
||||||
|
# module being empty until an event occurs.
|
||||||
|
if [ $firstRun -eq 0 ]; then
|
||||||
|
firstRun=1
|
||||||
|
else
|
||||||
|
read -r event || break
|
||||||
|
# Avoid double events
|
||||||
|
if ! echo "$event" | grep -e "on card" -e "on sink" -e "on server"; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
} &>/dev/null
|
||||||
|
output
|
||||||
|
done
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function output() {
|
||||||
|
if ! getCurSink; then
|
||||||
|
echo "PulseAudio not running"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
getCurVol "$curSink"
|
||||||
|
getIsMuted "$curSink"
|
||||||
|
|
||||||
|
# Fixed volume icons over max volume
|
||||||
|
local iconsLen=${#ICONS_VOLUME[@]}
|
||||||
|
if [ "$iconsLen" -ne 0 ]; then
|
||||||
|
local volSplit=$((VOLUME_MAX / iconsLen))
|
||||||
|
for i in $(seq 1 "$iconsLen"); do
|
||||||
|
if [ $((i * volSplit)) -ge "$VOL_LEVEL" ]; then
|
||||||
|
VOL_ICON="${ICONS_VOLUME[$((i-1))]}"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
else
|
||||||
|
VOL_ICON=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
getNickname "$curSink"
|
||||||
|
|
||||||
|
# Showing the formatted message
|
||||||
|
if [ "$IS_MUTED" = "yes" ]; then
|
||||||
|
# shellcheck disable=SC2034
|
||||||
|
VOL_ICON=$ICON_MUTED
|
||||||
|
echo "${COLOR_MUTED}$(eval echo "$FORMAT")${END_COLOR}"
|
||||||
|
else
|
||||||
|
eval echo "$FORMAT"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function usage() {
|
||||||
|
echo "\
|
||||||
|
Usage: $0 [OPTION...] ACTION
|
||||||
|
|
||||||
|
Options:
|
||||||
|
--autosync | --no-autosync
|
||||||
|
Whether to maintain same volume for all programs.
|
||||||
|
Default: $AUTOSYNC
|
||||||
|
--color-muted <rrggbb>
|
||||||
|
Color in which to format when muted.
|
||||||
|
Default: ${COLOR_MUTED:4:-1}
|
||||||
|
--notifications | --no-notifications
|
||||||
|
Whether to show notifications when changing sinks.
|
||||||
|
Default: $NOTIFICATIONS
|
||||||
|
--osd | --no-osd
|
||||||
|
Whether to display KDE's OSD message.
|
||||||
|
Default: $OSD
|
||||||
|
--icon-muted <icon>
|
||||||
|
Icon to use when muted.
|
||||||
|
Default: none
|
||||||
|
--icon-sink <icon>
|
||||||
|
Icon to use for sink.
|
||||||
|
Default: none
|
||||||
|
--format <string>
|
||||||
|
Use a format string to control the output.
|
||||||
|
Available variables:
|
||||||
|
* \$VOL_ICON
|
||||||
|
* \$VOL_LEVEL
|
||||||
|
* \$ICON_SINK
|
||||||
|
* \$SINK_NICKNAME
|
||||||
|
* \$IS_MUTED (yes/no)
|
||||||
|
Default: $FORMAT
|
||||||
|
--icons-volume <icon>[,<icon>...]
|
||||||
|
Icons for volume, from lower to higher.
|
||||||
|
Default: none
|
||||||
|
--volume-max <int>
|
||||||
|
Maximum volume to which to allow increasing.
|
||||||
|
Default: $VOLUME_MAX
|
||||||
|
--volume-step <int>
|
||||||
|
Step size when inc/decrementing volume.
|
||||||
|
Default: $VOLUME_STEP
|
||||||
|
--sink-blacklist <name>[,<name>...]
|
||||||
|
Sinks to ignore when switching.
|
||||||
|
Default: none
|
||||||
|
--sink-nicknames-from <prop>
|
||||||
|
pactl property to use for sink names, unless overriden by
|
||||||
|
--sink-nickname. Its possible values are listed under the 'Properties'
|
||||||
|
key in the output of \`pactl list sinks\`
|
||||||
|
Default: none
|
||||||
|
--sink-nickname <name>:<nick>
|
||||||
|
Nickname to assign to given sink name, taking priority over
|
||||||
|
--sink-nicknames-from. May be given multiple times, and 'name' is
|
||||||
|
exactly as listed in the output of \`pactl list sinks short | cut -f2\`.
|
||||||
|
Note that you can also specify a port name for the sink with
|
||||||
|
\`<name>/<port>\`.
|
||||||
|
Default: none
|
||||||
|
|
||||||
|
Actions:
|
||||||
|
help display this message and exit
|
||||||
|
output print the PulseAudio status once
|
||||||
|
listen listen for changes in PulseAudio to automatically update
|
||||||
|
this script's output
|
||||||
|
up, down increase or decrease the default sink's volume
|
||||||
|
mute, unmute mute or unmute the default sink's audio
|
||||||
|
togmute switch between muted and unmuted
|
||||||
|
next-sink switch to the next available sink
|
||||||
|
sync synchronize all the output streams volume to be the same as
|
||||||
|
the current sink's volume
|
||||||
|
|
||||||
|
Author:
|
||||||
|
Mario Ortiz Manero
|
||||||
|
More info on GitHub:
|
||||||
|
https://github.com/marioortizmanero/polybar-pulseaudio-control"
|
||||||
|
}
|
||||||
|
|
||||||
|
while [[ "$1" = --* ]]; do
|
||||||
|
unset arg
|
||||||
|
unset val
|
||||||
|
if [[ "$1" = *=* ]]; then
|
||||||
|
arg="${1//=*/}"
|
||||||
|
val="${1//*=/}"
|
||||||
|
shift
|
||||||
|
else
|
||||||
|
arg="$1"
|
||||||
|
# Support space-separated values, but also value-less flags
|
||||||
|
if [[ "$2" != --* ]]; then
|
||||||
|
val="$2"
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$arg" in
|
||||||
|
--autosync)
|
||||||
|
AUTOSYNC=yes
|
||||||
|
;;
|
||||||
|
--no-autosync)
|
||||||
|
AUTOSYNC=no
|
||||||
|
;;
|
||||||
|
--color-muted|--colour-muted)
|
||||||
|
COLOR_MUTED="%{F#$val}"
|
||||||
|
;;
|
||||||
|
--notifications)
|
||||||
|
NOTIFICATIONS=yes
|
||||||
|
;;
|
||||||
|
--no-notifications)
|
||||||
|
NOTIFICATIONS=no
|
||||||
|
;;
|
||||||
|
--osd)
|
||||||
|
OSD=yes
|
||||||
|
;;
|
||||||
|
--no-osd)
|
||||||
|
OSD=no
|
||||||
|
;;
|
||||||
|
--icon-muted)
|
||||||
|
ICON_MUTED="$val"
|
||||||
|
;;
|
||||||
|
--icon-sink)
|
||||||
|
# shellcheck disable=SC2034
|
||||||
|
ICON_SINK="$val"
|
||||||
|
;;
|
||||||
|
--icons-volume)
|
||||||
|
IFS=, read -r -a ICONS_VOLUME <<< "${val//[[:space:]]/}"
|
||||||
|
;;
|
||||||
|
--volume-max)
|
||||||
|
VOLUME_MAX="$val"
|
||||||
|
;;
|
||||||
|
--volume-step)
|
||||||
|
VOLUME_STEP="$val"
|
||||||
|
;;
|
||||||
|
--sink-blacklist)
|
||||||
|
IFS=, read -r -a SINK_BLACKLIST <<< "${val//[[:space:]]/}"
|
||||||
|
;;
|
||||||
|
--sink-nicknames-from)
|
||||||
|
SINK_NICKNAMES_PROP="$val"
|
||||||
|
;;
|
||||||
|
--sink-nickname)
|
||||||
|
SINK_NICKNAMES["${val//:*/}"]="${val//*:}"
|
||||||
|
;;
|
||||||
|
--format)
|
||||||
|
FORMAT="$val"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unrecognised option: $arg" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
up)
|
||||||
|
volUp
|
||||||
|
;;
|
||||||
|
down)
|
||||||
|
volDown
|
||||||
|
;;
|
||||||
|
togmute)
|
||||||
|
volMute toggle
|
||||||
|
;;
|
||||||
|
mute)
|
||||||
|
volMute mute
|
||||||
|
;;
|
||||||
|
unmute)
|
||||||
|
volMute unmute
|
||||||
|
;;
|
||||||
|
sync)
|
||||||
|
volSync
|
||||||
|
;;
|
||||||
|
listen)
|
||||||
|
listen
|
||||||
|
;;
|
||||||
|
next-sink)
|
||||||
|
nextSink
|
||||||
|
;;
|
||||||
|
output)
|
||||||
|
output
|
||||||
|
;;
|
||||||
|
help)
|
||||||
|
usage
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unrecognised action: $1" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
|
@ -0,0 +1,10 @@
|
||||||
|
/* colors */
|
||||||
|
|
||||||
|
* {
|
||||||
|
background: #332E41;
|
||||||
|
background-light: #575268;
|
||||||
|
foreground: #DFDEF1;
|
||||||
|
foreground-dark: #988BA2;
|
||||||
|
primary: #C6AAE8;
|
||||||
|
bordercolor: #C6AAE8;
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
@import "colors.rasi"
|
||||||
|
|
||||||
|
* {
|
||||||
|
background-color: @background-light;
|
||||||
|
text-color: @foreground;
|
||||||
|
font: "Iosevka Nerd Font 15";
|
||||||
|
}
|
||||||
|
|
||||||
|
window {
|
||||||
|
width: 240px;
|
||||||
|
padding: 15px;
|
||||||
|
border: 0px;
|
||||||
|
border-radius: 0px;
|
||||||
|
border-color: @background;
|
||||||
|
location: center;
|
||||||
|
y-offset: -20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
entry {
|
||||||
|
expand: true;
|
||||||
|
text-color: @primary;
|
||||||
|
}
|
|
@ -0,0 +1,95 @@
|
||||||
|
@import "colors.rasi"
|
||||||
|
|
||||||
|
|
||||||
|
configuration {
|
||||||
|
font: "Iosevka Nerd Font 12";
|
||||||
|
show-icons: true;
|
||||||
|
icon-theme: "Papirus";
|
||||||
|
display-drun: "Apps:";
|
||||||
|
drun-display-format: "{name}";
|
||||||
|
disable-history: false;
|
||||||
|
sidebar-mode: false;
|
||||||
|
}
|
||||||
|
|
||||||
|
* {
|
||||||
|
background-color: transparent;
|
||||||
|
text-color: @foreground;
|
||||||
|
|
||||||
|
margin: 0px;
|
||||||
|
padding: 0px;
|
||||||
|
spacing: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
window {
|
||||||
|
location: center;
|
||||||
|
width: 480;
|
||||||
|
y-offset: -200;
|
||||||
|
border-radius: 4px;
|
||||||
|
background-color: @background;
|
||||||
|
}
|
||||||
|
|
||||||
|
mainbox {
|
||||||
|
padding: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
inputbar {
|
||||||
|
background-color: @background;
|
||||||
|
border-color: @bordercolor;
|
||||||
|
|
||||||
|
border: 2px;
|
||||||
|
border-radius: 4px;
|
||||||
|
|
||||||
|
padding: 8px 16px;
|
||||||
|
spacing: 8px;
|
||||||
|
children: [ prompt, entry ];
|
||||||
|
}
|
||||||
|
|
||||||
|
prompt {
|
||||||
|
text-color: @foreground;
|
||||||
|
}
|
||||||
|
|
||||||
|
entry {
|
||||||
|
placeholder: "search";
|
||||||
|
placeholder-color: @foreground-dark;
|
||||||
|
}
|
||||||
|
|
||||||
|
message {
|
||||||
|
margin: 12px 0 0;
|
||||||
|
border-radius: 4px;
|
||||||
|
border-color: @bordercolor;
|
||||||
|
background-color: @background;
|
||||||
|
}
|
||||||
|
|
||||||
|
textbox {
|
||||||
|
padding: 8px 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
listview {
|
||||||
|
background-color: transparent;
|
||||||
|
|
||||||
|
margin: 12px 0 0;
|
||||||
|
lines: 8;
|
||||||
|
columns: 1;
|
||||||
|
|
||||||
|
fixed-height: false;
|
||||||
|
}
|
||||||
|
|
||||||
|
element {
|
||||||
|
padding: 8px 16px;
|
||||||
|
spacing: 8px;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
element selected normal, element selected active {
|
||||||
|
background-color: @primary;
|
||||||
|
text-color: @background;
|
||||||
|
}
|
||||||
|
|
||||||
|
element-icon {
|
||||||
|
size: 1em;
|
||||||
|
vertical-align: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
element-text {
|
||||||
|
text-color: inherit;
|
||||||
|
}
|
|
@ -0,0 +1,124 @@
|
||||||
|
/*
|
||||||
|
################################################
|
||||||
|
# Original design by Aditya Shakya (@adi1090x) #
|
||||||
|
################################################
|
||||||
|
*/
|
||||||
|
|
||||||
|
@import "colors.rasi"
|
||||||
|
|
||||||
|
configuration {
|
||||||
|
show-icons: false;
|
||||||
|
font: "Iosevka Nerd Font 12";
|
||||||
|
disable-history: false;
|
||||||
|
sidebar-mode: false;
|
||||||
|
}
|
||||||
|
|
||||||
|
* {
|
||||||
|
background-color: @background;
|
||||||
|
text-color: @foreground;
|
||||||
|
}
|
||||||
|
|
||||||
|
window {
|
||||||
|
transparency: "real";
|
||||||
|
border-radius: 0px;
|
||||||
|
location: center;
|
||||||
|
width: 400px;
|
||||||
|
x-offset: 0px;
|
||||||
|
y-offset: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
prompt {
|
||||||
|
enabled: true;
|
||||||
|
padding: 3px 10px 3px 10px;
|
||||||
|
background-color: @background-light;
|
||||||
|
text-color: @primary;
|
||||||
|
border: 2px 2px 3px 2px;
|
||||||
|
border-radius: 0px;
|
||||||
|
border-color: @primary;
|
||||||
|
}
|
||||||
|
|
||||||
|
textbox-prompt-colon {
|
||||||
|
expand: false;
|
||||||
|
str: " Layout";
|
||||||
|
background-color: @primary;
|
||||||
|
text-color: @background;
|
||||||
|
padding: 5px 5px 0px 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
inputbar {
|
||||||
|
children: [ textbox-prompt-colon, prompt ];
|
||||||
|
spacing: 0px;
|
||||||
|
background-color: @background;
|
||||||
|
text-color: @foreground;
|
||||||
|
expand: false;
|
||||||
|
border: 0px;
|
||||||
|
border-radius: 0px;
|
||||||
|
border-color: @primary;
|
||||||
|
margin: 0px;
|
||||||
|
padding: 0px;
|
||||||
|
position: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
listview {
|
||||||
|
columns: 3;
|
||||||
|
lines: 1;
|
||||||
|
spacing: 0;
|
||||||
|
cycle: true;
|
||||||
|
dynamic: true;
|
||||||
|
layout: vertical;
|
||||||
|
}
|
||||||
|
|
||||||
|
mainbox {
|
||||||
|
background-color: @background;
|
||||||
|
children: [ inputbar, listview ];
|
||||||
|
spacing: 12px;
|
||||||
|
margin: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
element {
|
||||||
|
background-color: @background-light;
|
||||||
|
text-color: @foreground;
|
||||||
|
orientation: vertical;
|
||||||
|
border-radius: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
element-text {
|
||||||
|
background-color: inherit;
|
||||||
|
text-color: inherit;
|
||||||
|
font: "Iosevka Nerd Font 30";
|
||||||
|
expand: true;
|
||||||
|
horizontal-align: 0.5;
|
||||||
|
vertical-align: 0.5;
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
element normal.urgent,
|
||||||
|
element alternate.urgent {
|
||||||
|
background-color: @off;
|
||||||
|
text-color: @background;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
element normal.active,
|
||||||
|
element alternate.active {
|
||||||
|
background-color: @on;
|
||||||
|
text-color: @background;
|
||||||
|
}
|
||||||
|
|
||||||
|
element selected {
|
||||||
|
background-color: @primary;
|
||||||
|
text-color: @background;
|
||||||
|
border: 0px;
|
||||||
|
border-radius: 4px;
|
||||||
|
border-color: @bordercolor;
|
||||||
|
}
|
||||||
|
|
||||||
|
element selected.urgent {
|
||||||
|
background-color: @on;
|
||||||
|
text-color: @background;
|
||||||
|
}
|
||||||
|
|
||||||
|
element selected.active {
|
||||||
|
background-color: @off;
|
||||||
|
color: @background;
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
@import "colors.rasi"
|
||||||
|
|
||||||
|
* {
|
||||||
|
background-color: @background-light;
|
||||||
|
text-color: @foreground;
|
||||||
|
font: "Iosevka Nerd Font 13";
|
||||||
|
}
|
||||||
|
|
||||||
|
window {
|
||||||
|
width: 300px;
|
||||||
|
padding: 15px;
|
||||||
|
border: 2px;
|
||||||
|
border-radius: 4px;
|
||||||
|
border-color: @primary;
|
||||||
|
location: center;
|
||||||
|
y-offset: -20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
entry {
|
||||||
|
expand: true;
|
||||||
|
text-color: @primary;
|
||||||
|
}
|
|
@ -0,0 +1,56 @@
|
||||||
|
@import "colors.rasi"
|
||||||
|
|
||||||
|
configuration {
|
||||||
|
font: "Feather 30";
|
||||||
|
disable-history: false;
|
||||||
|
sidebar-mode: false;
|
||||||
|
show-icons: false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
* {
|
||||||
|
background-color: @background;
|
||||||
|
text-color: @foreground;
|
||||||
|
}
|
||||||
|
|
||||||
|
window {
|
||||||
|
transparency: "real";
|
||||||
|
border-radius: 4px;
|
||||||
|
location: center;
|
||||||
|
width: 600px;
|
||||||
|
}
|
||||||
|
|
||||||
|
listview {
|
||||||
|
columns: 5;
|
||||||
|
lines: 1;
|
||||||
|
spacing: 12px;
|
||||||
|
cycle: true;
|
||||||
|
dynamic: true;
|
||||||
|
layout: vertical;
|
||||||
|
}
|
||||||
|
|
||||||
|
mainbox {
|
||||||
|
children: [ listview ];
|
||||||
|
spacing: 20px;
|
||||||
|
margin: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
element {
|
||||||
|
background-color: @background-light;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
element-text {
|
||||||
|
background-color: inherit;
|
||||||
|
text-color: inherit;
|
||||||
|
expand: true;
|
||||||
|
horizontal-align: 0.5;
|
||||||
|
vertical-align: 0.5;
|
||||||
|
margin: 20px 15px 20px 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
element selected {
|
||||||
|
text-color: @background;
|
||||||
|
background-color: @primary;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
{% for workspace in workspaces %}
|
||||||
|
{{workspace.w}} {{workspace.x}} {{workspace.y}}
|
||||||
|
{% endfor %}
|
|
@ -0,0 +1,5 @@
|
||||||
|
border_width = 4
|
||||||
|
margin = 15
|
||||||
|
default_border_color = '#1E1E28'
|
||||||
|
floating_border_color = '#F2CDCD'
|
||||||
|
focused_border_color = '#C6AAE8'
|
|
@ -0,0 +1,100 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
export SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )"
|
||||||
|
|
||||||
|
|
||||||
|
# [ COLOR SCHEME ] ###########################################################
|
||||||
|
# Available themes:
|
||||||
|
# - catppuccin
|
||||||
|
#
|
||||||
|
# NOTE:
|
||||||
|
# To avoid issues colors.sh will check the theme name provided below and try
|
||||||
|
# to fallback to the amber theme if what you provide is NULL or does not exist
|
||||||
|
# in the array on line 12.
|
||||||
|
source $SCRIPTPATH/scripts/colors.sh catppuccin
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
|
||||||
|
# [ BASIC ] ##################################################################
|
||||||
|
# down the last running theme
|
||||||
|
if [ -f "/tmp/leftwm-theme-down" ]; then
|
||||||
|
/tmp/leftwm-theme-down
|
||||||
|
rm /tmp/leftwm-theme-down
|
||||||
|
fi
|
||||||
|
ln -s $SCRIPTPATH/down /tmp/leftwm-theme-down
|
||||||
|
|
||||||
|
# set the theme.toml config
|
||||||
|
echo "LoadTheme $SCRIPTPATH/theme.toml" > $XDG_RUNTIME_DIR/leftwm/commands.pipe
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# [ RUN STUFF ] ##############################################################
|
||||||
|
# keybindings daemon (if it exist)
|
||||||
|
if [ -x "$(command -v sxhkd)" ]; then
|
||||||
|
sxhkd -c $HOME/.config/leftwm/sxhkd/sxhkdrc &
|
||||||
|
fi
|
||||||
|
|
||||||
|
# apps
|
||||||
|
numlockx on &
|
||||||
|
|
||||||
|
# notifications
|
||||||
|
if [ -x "$(command -v dunst)" ]; then
|
||||||
|
pkill dunst
|
||||||
|
dunst -config $HOME/.config/leftwm/themes/current/conf/dunst.config &
|
||||||
|
fi
|
||||||
|
#/usr/lib/xfce4/notifyd/xfce4-notifyd &
|
||||||
|
|
||||||
|
|
||||||
|
# picom (if it exists)
|
||||||
|
if [ -x "$(command -v picom)" ]; then
|
||||||
|
picom --config $HOME/.config/leftwm/themes/current/conf/picom.config &> /dev/null &
|
||||||
|
fi
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# [ WALLPAPERS ] #############################################################
|
||||||
|
# - Comment/uncomment the option you prefer
|
||||||
|
|
||||||
|
# 1) START - set random wallpapers -----------------------------------------+
|
||||||
|
if [ -x "$(command -v feh)" ]; then
|
||||||
|
feh --randomize --bg-fill "$SCRIPTPATH"/wallpapers/*
|
||||||
|
fi
|
||||||
|
# END ----------------------------------------------------------------------+
|
||||||
|
|
||||||
|
|
||||||
|
# 2) START - set ONE wallpaper for all displays ----------------------------+
|
||||||
|
#if [ -x "$(command -v feh)" ]; then
|
||||||
|
# feh --bg-fill "$SCRIPTPATH"/wallpapers/atlas-ark-gruvbox-simple-lines.png
|
||||||
|
#fi
|
||||||
|
# END ----------------------------------------------------------------------+
|
||||||
|
|
||||||
|
|
||||||
|
# 3) START - set MULTIPLE wallpapers for all displays ----------------------+
|
||||||
|
# NOTE: the last image path DO NOT end with "\"
|
||||||
|
#if [ -x "$(command -v feh)" ]; then
|
||||||
|
# feh --bg-fill \
|
||||||
|
# "$SCRIPTPATH"/wallpapers/blue_unicat.png \
|
||||||
|
# "$SCRIPTPATH"/wallpapers/pink_unicat.png
|
||||||
|
#fi
|
||||||
|
# END ----------------------------------------------------------------------+
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# [ START STATUSBAR ] #########################################################
|
||||||
|
pkill polybar &
|
||||||
|
index=0
|
||||||
|
monitor="$(polybar -m | grep +0+0 | sed s/:.*// | tac)"
|
||||||
|
leftwm-state -q -n -t $SCRIPTPATH/sizes.liquid | sed -r '/^\s*$/d' | \
|
||||||
|
while read -r width x y
|
||||||
|
do
|
||||||
|
barname="mainbar$index"
|
||||||
|
monitor="$(polybar -m | awk -v i="$(( index + 1 ))" 'NR==i{print}' | sed s/:.*// | tr -d '\n')"
|
||||||
|
monitor=$monitor width=$(( width - 30 )) polybar -c "$SCRIPTPATH"/polybar.config $barname &
|
||||||
|
let index=index+1
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
######################################################################
|
After Width: | Height: | Size: 269 KiB |
After Width: | Height: | Size: 125 KiB |
After Width: | Height: | Size: 107 KiB |