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 |