commit 642ec4e2fe7e1670df205a84b7d6c8f8310101ef Author: Nathan Date: Fri Feb 18 15:44:19 2022 -0600 initial diff --git a/README.md b/README.md new file mode 100644 index 0000000..f601ab7 --- /dev/null +++ b/README.md @@ -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_.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 \ No newline at end of file diff --git a/change_to_tag b/change_to_tag new file mode 100755 index 0000000..d652de4 --- /dev/null +++ b/change_to_tag @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +leftwm-command "SendWorkspaceToTag $1 $2" diff --git a/conf/dunst.config b/conf/dunst.config new file mode 100644 index 0000000..698ebb2 --- /dev/null +++ b/conf/dunst.config @@ -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: + # bold + # italic + # strikethrough + # underline + # + # For a complete reference see + # . + # 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 = "%s %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" "italic body" +#dunstify -a "dunst tester" -u c "critical" "bold body" +#dunstify -a "dunst tester" "long body" "This is a notification with a very long body" diff --git a/conf/picom.config b/conf/picom.config new file mode 100644 index 0000000..8fbeb67 --- /dev/null +++ b/conf/picom.config @@ -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; }; +}; \ No newline at end of file diff --git a/conf/picom.default.config b/conf/picom.default.config new file mode 100644 index 0000000..af18dde --- /dev/null +++ b/conf/picom.default.config @@ -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; } +}; diff --git a/config.toml b/config.toml new file mode 100644 index 0000000..1cf85f6 --- /dev/null +++ b/config.toml @@ -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" diff --git a/down b/down new file mode 100755 index 0000000..ad3244b --- /dev/null +++ b/down @@ -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 & \ No newline at end of file diff --git a/down.jpg b/down.jpg new file mode 100644 index 0000000..da757f7 Binary files /dev/null and b/down.jpg differ diff --git a/fonts/Comfortaa/Comfortaa-Bold.ttf b/fonts/Comfortaa/Comfortaa-Bold.ttf new file mode 100644 index 0000000..ec3eadf Binary files /dev/null and b/fonts/Comfortaa/Comfortaa-Bold.ttf differ diff --git a/fonts/Comfortaa/Comfortaa-Light.ttf b/fonts/Comfortaa/Comfortaa-Light.ttf new file mode 100644 index 0000000..dea4cec Binary files /dev/null and b/fonts/Comfortaa/Comfortaa-Light.ttf differ diff --git a/fonts/Comfortaa/Comfortaa-Regular.ttf b/fonts/Comfortaa/Comfortaa-Regular.ttf new file mode 100644 index 0000000..5e81491 Binary files /dev/null and b/fonts/Comfortaa/Comfortaa-Regular.ttf differ diff --git a/fonts/Fantasque-Sans-Mono-Nerd-Font.ttf b/fonts/Fantasque-Sans-Mono-Nerd-Font.ttf new file mode 100644 index 0000000..5881730 Binary files /dev/null and b/fonts/Fantasque-Sans-Mono-Nerd-Font.ttf differ diff --git a/fonts/Feather.ttf b/fonts/Feather.ttf new file mode 100644 index 0000000..88bdfd0 Binary files /dev/null and b/fonts/Feather.ttf differ diff --git a/fonts/Hurmit-Nerd-Font-Mono.otf b/fonts/Hurmit-Nerd-Font-Mono.otf new file mode 100644 index 0000000..b548439 Binary files /dev/null and b/fonts/Hurmit-Nerd-Font-Mono.otf differ diff --git a/fonts/Iosevka-Nerd-Font.ttf b/fonts/Iosevka-Nerd-Font.ttf new file mode 100644 index 0000000..bbb351c Binary files /dev/null and b/fonts/Iosevka-Nerd-Font.ttf differ diff --git a/fonts/Material.ttf b/fonts/Material.ttf new file mode 100644 index 0000000..be66835 Binary files /dev/null and b/fonts/Material.ttf differ diff --git a/fonts/MaterialIcons-Regular.ttf b/fonts/MaterialIcons-Regular.ttf new file mode 100644 index 0000000..7015564 Binary files /dev/null and b/fonts/MaterialIcons-Regular.ttf differ diff --git a/fonts/Noto_Sans/NotoSans-Bold.ttf b/fonts/Noto_Sans/NotoSans-Bold.ttf new file mode 100644 index 0000000..54ad879 Binary files /dev/null and b/fonts/Noto_Sans/NotoSans-Bold.ttf differ diff --git a/fonts/Noto_Sans/NotoSans-BoldItalic.ttf b/fonts/Noto_Sans/NotoSans-BoldItalic.ttf new file mode 100644 index 0000000..530a828 Binary files /dev/null and b/fonts/Noto_Sans/NotoSans-BoldItalic.ttf differ diff --git a/fonts/Noto_Sans/NotoSans-Italic.ttf b/fonts/Noto_Sans/NotoSans-Italic.ttf new file mode 100644 index 0000000..27ff1ed Binary files /dev/null and b/fonts/Noto_Sans/NotoSans-Italic.ttf differ diff --git a/fonts/Noto_Sans/NotoSans-Regular.ttf b/fonts/Noto_Sans/NotoSans-Regular.ttf new file mode 100644 index 0000000..10589e2 Binary files /dev/null and b/fonts/Noto_Sans/NotoSans-Regular.ttf differ diff --git a/fonts/materialdesignicons-webfont.woff b/fonts/materialdesignicons-webfont.woff new file mode 100644 index 0000000..c98a100 Binary files /dev/null and b/fonts/materialdesignicons-webfont.woff differ diff --git a/installfonts.sh b/installfonts.sh new file mode 100755 index 0000000..5992588 --- /dev/null +++ b/installfonts.sh @@ -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 \ No newline at end of file diff --git a/polybar.colors b/polybar.colors new file mode 100644 index 0000000..f3f46c1 --- /dev/null +++ b/polybar.colors @@ -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 \ No newline at end of file diff --git a/polybar.config b/polybar.config new file mode 100644 index 0000000..5bf896c --- /dev/null +++ b/polybar.config @@ -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 diff --git a/polybar.liquid b/polybar.liquid new file mode 100644 index 0000000..a122d7f --- /dev/null +++ b/polybar.liquid @@ -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-} diff --git a/polybar.modules b/polybar.modules new file mode 100644 index 0000000..05d457a --- /dev/null +++ b/polybar.modules @@ -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 = +label-charging =  %percentage%% +format-charging-foreground = ${color.foreground} +format-charging-background = ${color.background} +;format-charging-underline = #a3c725 + +format-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 = " " +format = " " +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 =