Set up laptop, add support for i3+plasma, clean up configs

This commit is contained in:
2024-03-12 15:25:33 -07:00
parent 793d8579a3
commit 40192af6e2
18 changed files with 469 additions and 638 deletions
+3
View File
@@ -0,0 +1,3 @@
#!/bin/sh
export KDEWM=/usr/bin/sway
/usr/bin/startplasma-wayland
-129
View File
@@ -1,129 +0,0 @@
##############
# compositor #
##############
# transparency
# uncomment one of them to be used
# options could need changes, related to used GPU and drivers.
# to find the right setting consult the archwiki or ask at the forum.
#
# xcompmgr: https://wiki.archlinux.org/title/Xcompmgr
# manpage: https://man.archlinux.org/man/xcompmgr.1.en
# install xcompmgr package to use it (yay -S xcompmgr)
#exec --no-startup-id xcompmgr -C -n &
# or an more specialized config like this:
#exec --no-startup-id xcompmgr -c -C -t-5 -l-5 -r4.2 -o.55 &
#
# or:
#
# picom: https://wiki.archlinux.org/title/Picom
# manpage: https://man.archlinux.org/man/picom.1.en
# The default configuration is available in /etc/xdg/picom.conf
# For modifications, it can be copied to ~/.config/picom/picom.conf or ~/.config/picom.conf
# install picom package (yay -S picom)
# start using default config
# exec_always --no-startup-id picom -b
#
# for custom config:
exec_always --no-startup-id picom -b --config ~/.config/picom.conf
#############################################
# autostart applications/services on login: #
#############################################
#get auth work with polkit-gnome
exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
# dex execute .desktop files + apps using /etc/xdg/autostart.
# when second to i3 a DE is installed or mixed usage of i3 + xfce4 or GNOME
# in this cases better disable dex and use manual starting apps using xdg/autostart
# if enabled you should comment welcome app.
# https://github.com/jceb/dex
#exec --no-startup-id dex -a -s /etc/xdg/autostart/:~/.config/autostart/
exec --no-startup-id dex --autostart --environment i3
# start welcome app
#exec --no-startup-id sh /usr/share/endeavouros/scripts/welcome --startdelay=3
# num lock activated
exec --no-startup-id numlockx on
# configure multiple keyboard layouts and hotkey to switch (Alt+CAPSLOCK in this example)
#exec --no-startup-id setxkbmap -layout 'us,sk' -variant altgr-intl,qwerty -option 'grp:alt_caps_toggle'
# start conky:
exec_always --no-startup-id conky -c ~/.config/conky/conkyrc-stats
# start a script to setup displays
# uncomment the next line, use arandr to setup displays and save the file as default:
exec --no-startup-id ~/.screenlayout/default.sh
# set wallpaper
# exec --no-startup-id sleep 2 && nitrogen --restore
exec --no-startup-id sleep 1 && feh --bg-fill --randomize ~/wallpapers
# set powersavings for display:
# xset dpms {standby_time} {suspend_time} {off_time}
exec --no-startup-id xset dpms 600 0 0
# disable power saving (for example if using xscreensaver)
#exec --no-startup-id xset -dpms
# use xautolock to use autosuspend rules for mobile devices
# https://wiki.archlinux.org/title/Session_lock#xautolock
#exec --no-startup-id xautolock -time 60 -locker "systemctl suspend"
# xscreensaver
# https://www.jwz.org/xscreensaver
#exec --no-startup-id xscreensaver --no-splash
# Desktop notifications
# dunst config used ~/.config/dunst/dunstrc
# set alternative config if needed:
#exec --no-startup-id /usr/bin/dunst --config ~/.config/dunst/dunstrc
# may need to run dbus-launch explicitly:
#exec --no-startup-id dbus-launch /usr/bin/dunst
exec --no-startup-id /usr/bin/dunst
# alternative if you installed aside with XFCE4:
# exec --no-startup-id /usr/lib/xfce4/notifyd/xfce4-notifyd &
# autotiling script
# https://github.com/nwg-piotr/autotiling
# `yay -S autotiling ;) (it is in AUR)
exec_always --no-startup-id autotiling
# Autostart apps as you like
#exec --no-startup-id sleep 2 && xfce4-terminal
#exec --no-startup-id sleep 7 && firefox https://github.com/endeavouros-team/endeavouros-i3wm-setup/blob/main/force-knowledge.md
exec --no-startup-id sleep 7 && firefox https://todo.bradina.haus/
exec --no-startup-id sleep 7 && Plexamp.AppImage
assign [class="Plexamp"] 2
exec --no-startup-id sleep 7 && element-desktop-nightly
assign [class="Element-Nightly"] 2
#exec --no-startup-id openrgb
# Scratchpad with notes
exec --no-startup-id alacritty --title notebook -e zsh -c 'tmuxinator start notes'
for_window [class="^Alacritty$" title="notebook"] move scratchpad, scratchpad hide
# automatic set focus new window if it opens on another workspace than the current:
#for_window [class=Alacritty] focus
#for_window [class=(?i)firefox] focus
#for_window [class=Thunar] focus
#exec --no-startup-id sleep 3 && thunar
###############
# system tray #
###############
# if you do not use dex: exec --no-startup-id dex --autostart --environment i3
# you need to have tray apps started manually one by one:
# start blueberry app for managing bluetooth devices from tray:
#exec --no-startup-id blueberry-tray
# networkmanager-applet
exec --no-startup-id nm-applet
# clipman-applet
exec --no-startup-id xfce4-clipman
+24 -21
View File
@@ -1,24 +1,27 @@
# exec --no-startup-id ~/set_once.sh
# This file is a modified version based on default i3-config-wizard config
# source is available here:
# https://raw.githubusercontent.com/endeavouros-team/endeavouros-i3wm-setup/master/.config/i3/config
# Maintainer: joekamprad [joekamprad //a_t// endeavouros.com]
# https://endeavouros.com
#
# iconic font icon search: https://fontawesome.com/v4.7/cheatsheet/
#
# --> to update this run the following command (will backup existing setup file)
# wget --backups=1 https://raw.githubusercontent.com/endeavouros-team/endeavouros-i3wm-setup/main/.config/i3/config -P ~/.config/i3/
#
# Endeavouros-i3 config file
# Source for complete framework of our i3 config and theming here: https://github.com/endeavouros-team/endeavouros-i3wm-setup
# EndeavourOS wiki holds some Information also: https://discovery.endeavouros.com/window-tiling-managers/i3-wm/
# Please see http://i3wm.org/docs/userguide.html for the official i3 reference!
#######################
# config starts here: #
#######################
include workspace.conf
include keybindings.conf
include autostart.conf
include theme.conf
####################
# Shared variables #
####################
# Define names for default workspaces for which we configure key bindings later on.
# We use variables to avoid repeating the names in multiple places.
#set $ws1 "1:"
#set $ws2 "2:"
#set $ws3 "3:"
#set $ws4 "4:"
#set $ws5 "5:"
set $ws1 "1"
set $ws2 "2"
set $ws3 "3"
set $ws4 "4"
set $ws5 "5"
set $ws6 "6"
set $ws7 "7"
set $ws8 "8"
set $ws9 "9"
set $ws10 "10"
# Include configs
include config.d/*.conf
+40
View File
@@ -0,0 +1,40 @@
##############
# compositor #
##############
# transparency
# picom: https://wiki.archlinux.org/title/Picom
# manpage: https://man.archlinux.org/man/picom.1.en
# Enable if not using compositor included with plasma
#exec_always --no-startup-id picom --experimental-backends -b --config ~/.config/picom.conf
##################
# window manager #
##################
# Only enable when using i3 without a DE (eg plasma)
# dex execute .desktop files + apps using /etc/xdg/autostart.
#exec --no-startup-id dex --autostart --environment i3
################
# applications #
################
#exec_always --no-startup-id conky -c ~/.config/conky/conkyrc-stats
#exec --no-startup-id sleep 7 && firefox https://todo.bradina.haus/
#exec --no-startup-id sleep 7 && Plexamp.AppImage
#assign [class="Plexamp"] 2
#exec --no-startup-id sleep 7 && element-desktop-nightly
#assign [class="Element-Nightly"] 2
#exec --no-startup-id openrgb
# automatic set focus new window if it opens on another workspace than the current:
#for_window [class=Alacritty] focus
#for_window [class=(?i)firefox] focus
#for_window [class=Thunar] focus
#exec --no-startup-id sleep 3 && thunar
+63
View File
@@ -0,0 +1,63 @@
#############################################
# autostart applications/services on login: #
#############################################
#get auth work with polkit-gnome
exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
# num lock activated
exec --no-startup-id numlockx on
# start a script to setup displays
# use arandr to setup displays and save the file as default:
exec --no-startup-id ~/.screenlayout/default.sh
# set wallpaper
exec --no-startup-id sleep 1 && feh --bg-fill --randomize ~/wallpapers
# set powersavings for display if not handled by DE:
# Usage: xset dpms {standby_time} {suspend_time} {off_time}
# exec --no-startup-id xset dpms 600 0 0
# disable power saving (for example if using xscreensaver)
#exec --no-startup-id xset -dpms
# use xautolock to use autosuspend rules for mobile devices
# https://wiki.archlinux.org/title/Session_lock#xautolock
#exec --no-startup-id xautolock -time 60 -locker "systemctl suspend"
# xscreensaver
# https://www.jwz.org/xscreensaver
#exec --no-startup-id xscreensaver --no-splash
# Desktop notifications
# dunst config used ~/.config/dunst/dunstrc
# may need to run dbus-launch explicitly:
#exec --no-startup-id dbus-launch /usr/bin/dunst
exec --no-startup-id /usr/bin/dunst
# autotiling script
# https://github.com/nwg-piotr/autotiling
# `yay -S autotiling ;) (it is in AUR)
# exec_always --no-startup-id autotiling
# Scratchpad with notes
# `tmuxinator open notes` first for this to work
exec --no-startup-id alacritty --title notebook -e zsh -c 'tmuxinator start notes'
for_window [class="^Alacritty$" title="notebook"] move scratchpad, scratchpad hide
###############
# system tray #
###############
# if you do not use dex: exec --no-startup-id dex --autostart --environment i3
# you need to have tray apps started manually one by one:
# start blueberry app for managing bluetooth devices from tray:
#exec --no-startup-id blueberry-tray
# networkmanager-applet
exec --no-startup-id nm-applet
# clipman-applet
exec --no-startup-id xfce4-clipman
@@ -169,12 +169,17 @@ bindsym $mod+q kill
#bindsym --release button2 kill
# exit-menu
bindsym $mod+Shift+e exec --no-startup-id ~/.config/i3/scripts/powermenu
#bindsym $mod+Shift+e exec --no-startup-id ~/.config/i3/scripts/powermenu
# using plasma's logout screen instead of i3's
bindsym $mod+Shift+t exec --no-startup-id qdbus6 org.kde.LogoutPrompt /LogoutPrompt org.kde.LogoutPrompt.promptLogout
#bindsym $mod+Shift+t exec --no-startup-id loginctl kill-session "$USER"
bindsym $mod+Shift+e exec --no-startup-id kill -9 -1
# Lock the system
# lock with a picture:
#bindsym $mod+l exec --no-startup-id i3lock -i ~/.config/i3/i3-lock-screen.png -p default|win -t
# lock by blurring the screen:
# TODO: Update to use plasma lock
bindsym $mod+Delete exec --no-startup-id ~/.config/i3/scripts/blur-lock
# reload the configuration file
@@ -193,8 +198,8 @@ bindsym F1 exec --no-startup-id ~/.config/i3/scripts/keyhint-2
#bindsym XF86MonBrightnessUp exec --no-startup-id xbacklight +10 && notify-send "Brightness - $(xbacklight -get | cut -d '.' -f 1)%"
#bindsym XF86MonBrightnessDown exec --no-startup-id xbacklight -10 && notify-send "Brightness - $(xbacklight -get | cut -d '.' -f 1)%"
# Backlight setting using dunst osc
bindsym XF86MonBrightnessUp exec --no-startup-id ~/.config/i3/scripts/volume_brightness.sh brightness_up
bindsym XF86MonBrightnessDown exec --no-startup-id ~/.config/i3/scripts/volume_brightness.sh brightness_down
#bindsym XF86MonBrightnessUp exec --no-startup-id ~/.config/i3/scripts/volume_brightness.sh brightness_up
#bindsym XF86MonBrightnessDown exec --no-startup-id ~/.config/i3/scripts/volume_brightness.sh brightness_down
# change focus
bindsym $mod+h focus left
@@ -249,14 +254,17 @@ bindsym $mod+a focus parent
bindsym $mod+Shift+n exec --no-startup-id ~/.config/i3/scripts/empty_workspace
# Multimedia Keys
# TODO: These will only work if plasma is installed, update to add compatibility with bare i3
# volume
# use meta keys without showing osc
#bindsym XF86AudioRaiseVolume exec --no-startup-id amixer -D pulse sset Master 5%+ && pkill -RTMIN+1 i3blocks
#bindsym XF86AudioLowerVolume exec --no-startup-id amixer -D pulse sset Master 5%- && pkill -RTMIN+1 i3blocks
# use meta keys showing osc using dunst
bindsym XF86AudioRaiseVolume exec --no-startup-id ~/.config/i3/scripts/volume_brightness.sh volume_up
bindsym XF86AudioLowerVolume exec --no-startup-id ~/.config/i3/scripts/volume_brightness.sh volume_down
#bindsym XF86AudioRaiseVolume exec --no-startup-id ~/.config/i3/scripts/volume_brightness.sh volume_up
#bindsym XF86AudioLowerVolume exec --no-startup-id ~/.config/i3/scripts/volume_brightness.sh volume_down
bindsym XF86AudioRaiseVolume exec --no-startup-id qdbus6 org.kde.kglobalaccel /component/kmix invokeShortcut "increase_volume"
bindsym XF86AudioLowerVolume exec --no-startup-id qdbus6 org.kde.kglobalaccel /component/kmix invokeShortcut "decrease_volume"
# gradular volume control
bindsym $mod+XF86AudioRaiseVolume exec --no-startup-id amixer -D pulse sset Master 1%+ && pkill -RTMIN+1 i3blocks
@@ -265,14 +273,16 @@ bindsym $mod+XF86AudioLowerVolume exec --no-startup-id amixer -D pulse sset Mast
# mute
#bindsym XF86AudioMute exec --no-startup-id amixer sset Master toggle && killall -USR1 i3blocks
# use meta keys showing osc using dunst
bindsym XF86AudioMute exec --no-startup-id ~/.config/i3/scripts/volume_brightness.sh volume_mute
#bindsym XF86AudioMute exec --no-startup-id ~/.config/i3/scripts/volume_brightness.sh volume_mute
bindsym XF86AudioMute exec --no-startup-id qdbus6 org.kde.kglobalaccel /component/kmix invokeShortcut "mute"
# mic mute toggle
bindsym XF86AudioMicMute exec amixer sset Capture toggle
#bindsym XF86AudioMicMute exec amixer sset Capture toggle
bindsym XF86AudioMicMute exec --no-startup-id qdbus6 org.kde.kglobalaccel /component/kmix invokeShortcut "mic_mute"
# audio control
# TODO: Play pause doesn't work
bindsym XF86AudioPlay exec --no-startup-id playerctl play
# TODO: Play pause doesn't work on desktop
bindsym XF86AudioPlay exec --no-startup-id playerctl play-pause
bindsym XF86AudioPause exec --no-startup-id playerctl pause
bindsym XF86AudioNext exec --no-startup-id playerctl next
bindsym XF86AudioPrev exec --no-startup-id playerctl previous
@@ -286,12 +296,11 @@ bindsym --whole-window $mod+button2 kill
bindsym $mod+p exec --no-startup-id /usr/local/bin/switch-audio-port
## App shortcuts
# TODO: dolphin/thunar, Spectacle/scrot
bindsym $mod+w exec /usr/bin/firefox
bindsym $mod+n exec /usr/bin/thunar
bindsym Print exec scrot ~/%Y-%m-%d-%T-screenshot.png && notify-send "Screenshot saved to ~/$(date +"%Y-%m-%d-%T")-screenshot.png"
# bindsym $mod+w exec --no-startup-id /usr/bin/firefox
# bindsym $mod+n exec --no-startup-id /usr/bin/thunar
# bindsym Print exec --no-startup-id scrot ~/%Y-%m-%d-%T-screenshot.png && notify-send "Screenshot saved to ~/$(date +"%Y-%m-%d-%T")-screenshot.png"
bindsym $mod+n exec /usr/bin/dolphin
bindsym Print exec scrot ~/Pictures/Screenshots/%Y-%m-%d-%T-screenshot.png && notify-send "Screenshot saved to ~/Pictures/Screenshots/$(date +"%Y-%m-%d-%T")-screenshot.png"
bindsym $mod+Print exec Spectacle
# Power Profiles menu switcher (rofi)
bindsym $mod+Shift+p exec --no-startup-id ~/.config/i3/scripts/power-profiles
@@ -1,21 +1,18 @@
# Font for window titles. Will also be used by the bar unless a different font
# is used in the bar {} block below.
# This font is widely installed, provides lots of unicode glyphs, right-to-left
# text rendering and scalability on retina/hidpi displays (thanks to pango).
#font pango: Noto Sans Regular 10
#font pango: Source Code Pro for Powerline 10
font pango: Liberation Sans Regular 10
#font pango: Hack 10
#border indicator on windows:
new_window pixel 5
# border indicator on windows:
# larger borders are helpful to resize windows with the mouse
default_border pixel 5
# thin borders
# hide_edge_borders both
# Set inner/outer gaps
gaps inner 20
gaps outer 20
gaps inner 10
gaps outer 10
# show window title bars (not officially supported with i3gaps)
#default_border normal
@@ -42,17 +39,16 @@ for_window [window_role="About"] floating enable
# Plasma
for_window [class="yakuake"] floating enable;
for_window [class="lattedock"] floating enable;
for_window [class="systemsettings"] floating enable;
for_window [class="plasmashell"] floating enable;
for_window [class="Kmix"] floating enable; border none
for_window [class="kruler"] floating enable; border none
for_window [class="Plasma"] floating enable; border none
for_window [class="Klipper"] floating enable; border none
for_window [class="krunner"] floating enable; border none
for_window [class="Plasmoidviewer"] floating enable; border none
for_window [title="plasma-desktop"] floating enable; border none
#for_window [class="plasmashell" window_type="notification"] floating enable, border none, move position 1450px 20px
for_window [class="plasmashell" window_type="notification"] floating enable, border none, move position 2050px 35px
for_window [title="win7"] floating enable; border none
for_window [class="krunner"] floating enable; border none
for_window [class="Kmix"] floating enable; border none
for_window [class="Klipper"] floating enable; border none
for_window [class="Plasmoidviewer"] floating enable; border none
for_window [class="plasmashell" window_type="notification"] floating enable, border none, move position 70 ppt 81 ppt
no_focus [class="plasmashell" window_type="notification"]
for_window [window_role="pop-up"] floating enable
@@ -63,8 +59,8 @@ for_window [window_type="dialog"] floating enable
for_window [window_type="menu"] floating enable
for_window [instance="__scratchpad"] floating enable
# set border of floating window
#for_window [class="Alacritty"] border pixel 10
# Kill existing Plasma desktop window if it exists
for_window [title="Desktop @ QRect.*"] kill; floating enable; border none
# set size of floating window
#for_window [window_role="(?i)GtkFileChooserDialog"] resize set 640 480 #to set size of file choose dialog
@@ -88,12 +84,13 @@ set $purple #b16286
set $aqua #689d6a
set $gray #a89984
set $darkgray #1d2021
set $white #ebdbb2
# gruvbox
# class border backgr text indicator child_border
client.focused $blue $blue $darkgray $purple $darkgray
client.unfocused $darkgray $darkgray $yellow $purple $darkgray
client.focused_inactive $darkgray $darkgray $yellow $purple $darkgray
client.focused $blue $blue $darkgray $aqua $darkgray
client.unfocused $darkgray $darkgray $yellow $aqua $darkgray
client.focused_inactive $darkgray $darkgray $yellow $aqua $darkgray
client.urgent $red $red $white $red $red
############################################
@@ -103,10 +100,15 @@ client.urgent $red $red $white $red $red
# Start i3bar to display a workspace bar
# (plus the system information i3status finds out, if available)
bar {
# Don't show the bar since we're using plasma bar, comment if using i3 on its own
mode invisible
#mode hide
hidden_state hide
modifier Mod4
# TODO: Figure out how to add an applications menu button on the left of bar
# font pango: Source Code Pro (monospace) 10 #Noto Sans Regular 10
font pango: Source Code Pro for Powerline 10
#font pango: Hack Bold 10
status_command i3blocks -c ~/.config/i3/i3blocks.conf
position bottom
#tray_padding 0
@@ -143,12 +145,6 @@ bar {
# output HDMI-0
# position bottom
#
# When strip_workspace_numbers is set to yes,
# any workspace that has a name of the form
# “[n][:][NAME]” will display only the name.
#strip_workspace_numbers yes
##strip_workspace_name no
#
# colors {
# separator $purple
# background $darkbluetrans
@@ -17,30 +17,12 @@ workspace_layout default
# configuration for workspace behaviour: #
##########################################
# Define names for default workspaces for which we configure key bindings later on.
# We use variables to avoid repeating the names in multiple places.
#set $ws1 "1:"
#set $ws2 "2:"
#set $ws3 "3:"
#set $ws4 "4:"
#set $ws5 "5:"
set $ws1 "1"
set $ws2 "2"
set $ws3 "3"
set $ws4 "4"
set $ws5 "5"
set $ws6 "6"
set $ws7 "7"
set $ws8 "8"
set $ws9 "9"
set $ws10 "10"
# use workspaces on different displays:
# where you have to replace VGA-0/HDMI-0 with the names for your displays
# you can get from xrandr command
workspace $ws1 output DP-2
workspace $ws3 output DP-2
workspace $ws5 output DP-2
workspace $ws2 output DP-4
workspace $ws4 output DP-4
workspace $ws6 output DP-4
#workspace $ws1 output DP-2
#workspace $ws3 output DP-2
#workspace $ws5 output DP-2
#workspace $ws2 output DP-4
#workspace $ws4 output DP-4
#workspace $ws6 output DP-4
+1 -1
View File
@@ -1,4 +1,4 @@
I3_CONFIG=$HOME/.config/i3/config
I3_CONFIG=$HOME/.config/i3/config.d/keybindings.conf
mod_key=$(sed -nre 's/^set \$mod (.*)/\1/p' ${I3_CONFIG})
grep "^bindsym" ${I3_CONFIG} \
| sed "s/-\(-\w\+\)\+//g;s/\$mod/${mod_key}/g;s/Mod1/Alt/g;s/exec //;s/bindsym //;s/^\s\+//;s/^\([^ ]\+\) \(.\+\)$/\2: \1/;s/^\s\+//" \
+7
View File
@@ -0,0 +1,7 @@
# Example / default config at /etc/libinput-gestures.conf
gesture swipe up xdotool key super+f
gesture swipe down xdotool key super+N
gesture swipe left xdotool key super+shift+Tab
gesture swipe right xdotool key super+Tab
gesture pinch in xdotool key super+t
gesture pinch out xdotool key super+d
+101
View File
@@ -0,0 +1,101 @@
# Source: https://www.reddit.com/r/kde/comments/p822c2/perfect_kde_plasma_compositing_combo_kwin_picom/
# https://gist.github.com/crnisamuraj/2cd9bae3e658004d3e506492b1d9442b
### Fading
fading = true;
fade-in-step = 0.06;
fade-out-ste = 0.06;
fade-delta = 3;
fade-exclude = [
"class_g = 'yakuake'"
]
### Opacity
opacity-rule = [
"96:class_g = 'plasmashell'"
];
### Shadows
shadow = true;
shadow-exclude = [
"class_g = 'yakuake'",
"class_g = 'lattedock'",
"_GTK_FRAME_EXTENTS@:c",
"QTILE_INTERNAL@:c",
"name = 'cpt_frame_xcb_window'",
"class_g ?= 'zoom'",
"_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'",
"_NET_WM_OPAQUE_REGION@:c",
"class_g = 'TelegramDesktop' && argb",
# "class_g = 'firefox' && argb",
"class_g = 'firefox' && window_type = 'popup_menu'",
"class_g = 'firefox' && window_type = 'utility'",
"class_g = 'firefox' && window_type = 'tooltip'",
]
xinerama-shadow-crop = true;
### Blur
blur:{
method = "dual_kawase";
strength = 6;
# background-frame = true;
# background-fixed = true;
}
blur-background-exclude = [
# "window_type = 'desktop'",
"_GTK_FRAME_EXTENTS@:c",
"class_g ?= 'zoom'",
# "class_g = 'firefox' && argb",
"class_g = 'firefox' && window_type = 'popup_menu'",
"class_g = 'firefox' && window_type = 'utility'",
];
### Wintypes
wintypes:{
# normal = { blur-background = true; };
splash = { blur-background = false; };
# popup_menu = { opacity = 0.8; shadow = false; full-shadow = false; };
# dropdown_menu = { opacity = 0.8; shadow = false; };
dock = { shadow = false; clip-shadow-above = true; };
tooltip = { fade = true; shadow = true; opacity = 0.9; focus = true; full-shadow = false; };
menu = { blur-background = false; };
};
### Backend
backend = "glx";
#backend = "xrender";
vsync = false;
glx-no-stencil = true;
glx-no-rebind-pixmap = true;
xrender-sync-fence = true;
unredir-if-possible = true;
dbus=true;
### Corners
detect-rounded-corners = true;
corner-radius = 9;
rounded-corners-exclude = [
# "class_g = 'lattedock'",
"window_type = 'dock'",
"window_type = 'desktop'",
# "window_type = 'popup_menu'",
"window_type = 'tooltip'",
];
round-borders = 9;
detect-client-opacity = true;
detect-transient = true;
detect-client-leader = true;
mark-wmwin-focused = true;
mark-ovredir-focused = true;
use-ewmh-active-win = true;
#transparrent-clipping = true;
+52 -407
View File
@@ -1,431 +1,76 @@
#################################
# 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;
# 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
# Hex string color value of shadow (#000000 - #FFFFFF, defaults to #000000). This option will override options set shadow-(red/green/blue)
# shadow-color = "#000000"
# 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'",
"_GTK_FRAME_EXTENTS@:c"
];
# Specify a list of conditions of windows that should have no shadow painted over, such as a dock window.
# clip-shadow-above = []
# 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 monitor to that monitor. This is
# currently implemented using the X RandR extension.
# crop-shadow-to-monitor = false
#################################
# Fading #
#################################
# Fade windows in/out when opening/closing and when opacity changes,
# unless no-fading-openclose is used.
# fading = false
# Source: https://www.reddit.com/r/kde/comments/p822c2/perfect_kde_plasma_compositing_combo_kwin_picom/
# https://gist.github.com/crnisamuraj/2cd9bae3e658004d3e506492b1d9442b
### Fading
fading = true;
fade-in-step = 0.06;
fade-out-ste = 0.06;
fade-delta = 3;
fade-exclude = [
"class_g = 'yakuake'"
]
# 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 = 10
# 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 = 0.9;
# Let inactive opacity set by -i override the '_NET_WM_WINDOW_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 never 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 = []
#################################
# Corners #
#################################
# Sets the radius of rounded window corners. When > 0, the compositor will
# round the corners of windows. Does not interact well with
# `transparent-clipping`.
corner-radius = 0
# Exclude conditions for rounded corners.
rounded-corners-exclude = [
"window_type = 'dock'",
"window_type = 'desktop'"
### Opacity
opacity-rule = [
"98:class_g = 'plasmashell'"
];
#################################
# Background-Blurring #
#################################
### Shadows
shadow = true;
shadow-exclude = [
"class_g = 'lattedock'",
"_GTK_FRAME_EXTENTS@:c"
]
xinerama-shadow-crop = true;
# Parameters for background blurring, see the *BLUR* section for more information.
# blur-method =
# blur-size = 12
#
# blur-deviation = false
#
# blur-strength = 5
### Blur
blur:{
#method = "kernel";
method = "dual_kawase";
deviation = true;
}
# 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 #
#################################
# Enable remote control via D-Bus. See the man page for more details.
# dbus = true
### Wintypes
wintypes:{
normal = { blur-background = true; };
splash = { blur-background = false; };
popup_menu = { opacity = 0.9; };
dropdown_menu = { opacity = 0.8; };
dock = { shadow = false; clip-shadow-above = true; };
tooltip = { fade = true; shadow = true; opacity = 0.9; focus = true; full-shadow = false; };
};
# Daemonize process. Fork to background after initialization. Causes issues with certain (badly-written) drivers.
# daemon = false
# Specify the backend to use: `xrender`, `glx`, `egl` or `xr_glx_hybrid`.
# `xrender` is the default one.
#
# backend = "glx"
backend = "xrender";
# Use higher precision during rendering, and apply dither when presenting the
# rendered screen. Reduces banding artifacts, but might cause performance
# degradation. Only works with OpenGL.
dithered-present = false;
# Enable/disable VSync.
# vsync = false
### Backend
backend = "glx";
#backend = "xrender";
vsync = true;
# 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;
glx-no-stencil = true;
glx-no-rebind-pixmap = true;
xrender-sync-fence = true;
# Mark override-redirect windows that doesn't have a child window with 'WM_STATE' focused.
# mark-ovredir-focused = false
mark-ovredir-focused = true;
dbus=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
### Corners
detect-rounded-corners = true;
corner-radius = 6;
rounded-corners-exclude = [
"window_type = 'dock'",
"window_type = 'desktop'",
"window_type = 'popup_menu'"
];
# Detect '_NET_WM_WINDOW_OPACITY' on client windows, useful for window managers
# not passing '_NET_WM_WINDOW_OPACITY' of client windows to frame windows.
#
# detect-client-opacity = false
detect-client-opacity = true;
# 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. This usually means windows from the same application
# will be considered focused or unfocused at the same time.
# 'WM_TRANSIENT_FOR' has higher priority if detect-transient is enabled, too.
#
# 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 every time, 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. Read the man page for a detailed explanation of the interface.
#
# window-shader-fg = "default"
# Use rules to set per-window shaders. Syntax is SHADER_PATH:PATTERN, similar
# to opacity-rule. SHADER_PATH can be "default". This overrides window-shader-fg.
#
# window-shader-fg-rule = [
# "my_shader.frag:window_type != 'dock'"
# ]
# 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
# Specify a list of conditions of windows that should never have transparent
# clipping applied. Useful for screenshot tools, where you need to be able to
# see through transparent parts of the window.
#
# transparent-clipping-exclude = []
# 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 = "/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.
#
# clip-shadow-above:::
# Controls whether shadows that would have been drawn above the window should
# be clipped. Useful for dock windows that should have no shadow painted on top.
#
# 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.75; focus = true; full-shadow = false; };
dock = { shadow = false; clip-shadow-above = true; }
dnd = { shadow = false; }
popup_menu = { opacity = 0.8; }
dropdown_menu = { opacity = 0.8; }
};
mark-wmwin-focused = true;
mark-ovredir-focused = true;
use-ewmh-active-win = true;
detect-client-leader = true;
-11
View File
@@ -1,11 +0,0 @@
[Install]
WantedBy=plasma-workspace.target
[Unit]
Description=Plasma Custom Window Manager
Before=plasma-workspace.target
[Service]
ExecStart=/usr/bin/i3
Slice=session.slice
Restart=on-failure
+96 -3
View File
@@ -19,6 +19,19 @@
# TODO: Put installer script in path
#
# TODO: Setup fingerprint reader
# Copy /etc/pam.d/ configs
# auth sufficient pam_fprintd.so
# /etc/pam.d/[kde, kde-fingerprint, login, sddm, sudo, i3lock, etc?]
#
# TODO: Setup touchpad gestures
# yay -S libinput-gestures
# sudo gpasswd -a "$USER" input
# libinput-gestures-setup autostart
# Need to logout here or otherwise reload groups
# libinput-gestures-setup start
# Config in .config/libinput-gestures.conf
# TODO: Install gruvbox themes
# cd dotfiles && git submodule update --init
# mkdir ~/dotfiles/config/themes ~/dotfiles/config/icons
@@ -72,9 +85,19 @@ gtk-3.0
powerline
xfce4
picom.conf
picom-extended.conf
libinput-gestures.conf
"
bin="
startplasma-sway-wayland
"
systemd_services="
plasma-i3.service
"
xsessions="
plasma-i3.desktop
"
wayland_sessions="
plasma-sway.desktop
"
arch="
"
@@ -139,6 +162,16 @@ function link_dotfiles {
fi
fi
done
for file in $bin; do
if [[ -f bin/$file && -x $file ]]; then
if [[ -f /usr/local/bin/$file ]]; then
echo "Skipping: $file because /usr/local/bin/$file already exists"
else
echo "Copying: $file ($config_dir/bin/$file -> /usr/local/bin/$file)"
sudo cp $config_dir/bin/$file /usr/local/bin/$file
fi
fi
done
for file in $systemd_services; do
if [[ -f systemd/user/$file || -d systemd/user/$file ]]; then
if [[ -f ~/.config/systemd/user/$file || -d ~/.config/systemd/user/$file ]]; then
@@ -146,6 +179,8 @@ function link_dotfiles {
else
echo "Linking: $file ($config_dir/systemd/user/$file -> ~/.config/systemd/user/$file)"
ln -s $config_dir/systemd/user/$file ~/.config/systemd/user/$file
# TODO: Probably should also enable the service
#systemctl --user enable --now $file
fi
fi
done
@@ -282,8 +317,66 @@ function setup_system_configs() {
if [[ $(service_enabled bluetooth.service) == 0 ]]; then
echo
echo "Enabling Bluetooth"
sudo systemctl enable bluetooth.service
sudo systemctl start bluetooth.service
sudo systemctl enable --now bluetooth.service
fi
if [[ $(program_installed syncthing) == 1 ]]; then
echo
echo "Enabling Syncthing"
systemctl enable --user --now syncthing.service
echo "Configure syncthing here:"
echo "http://localhost:8384"
fi
setup_sessions
setup_plasma_i3
}
function setup_sessions() {
echo
echo -n "Would you like to install X11 / Wayland sessions? (y/n) "
read response
if [[ "$response" == 'y' ]] || [[ "$response" == 'Y' ]]; then
# Check if xsessions directory exists
if [[ -d /usr/share/xsessions ]]; then
for file in $xsessions; do
if [[ -f xsessions/$file ]]; then
if [[ -f /usr/share/xsessions/$file ]]; then
echo "Skipping: $file because /usr/share/xsessions/$file already exists"
else
echo "Copying: $file ($config_dir/xsessions/$file -> /usr/share/xsessions/$file)"
sudo cp $config_dir/xsessions/$file /usr/share/xsessions/$file
fi
fi
done
fi
# Check if wayland_sessions directory exists
if [[ -d /usr/share/xsessions ]]; then
for file in $wayland_sessions; do
if [[ -f wayland_sessions/$file ]]; then
if [[ -f /usr/share/wayland_sessions/$file ]]; then
echo "Skipping: $file because /usr/share/wayland_sessions/$file already exists"
else
echo "Copying: $file ($config_dir/wayland_sessions/$file -> /usr/share/wayland_sessions/$file)"
sudo cp $config_dir/wayland_sessions/$file /usr/share/wayland_sessions/$file
fi
fi
done
fi
fi
}
function setup_plasma_i3() {
echo
echo -n "Would you like to run plasma alongside i3? (y/n) "
read response
if [[ "$response" == 'y' ]] || [[ "$response" == 'Y' ]]; then
echo "Disabling plasma systemd autostart"
if [[ $(program_installed kwriteconfig5) == 1 ]]; then
kwriteconfig5 --file startkderc --group General --key systemdBoot false
fi
if [[ $(program_installed kwriteconfig6) == 1 ]]; then
kwriteconfig6 --file startkderc --group General --key systemdBoot false
fi
fi
}
+15
View File
@@ -6,6 +6,10 @@ cifs-utils
neovim
tmux
wget
feh
dmenu
rofi
scrot
# clipboard manager
xclip
# set numlock
@@ -14,6 +18,8 @@ python-pip
# ag - fuzzy search anywhere, `,mag` in nvim!
the_silver_searcher
tree
arandr
nodejs
# zsh shell instead of bash
zsh
@@ -23,6 +29,12 @@ zsh-syntax-highlighting
github-cli
gnome-keyring
# needed for certain hardware support
linux-firmware
# media key support
playerctl
# bluetooth support
bluez
bluez-utils
@@ -40,6 +52,9 @@ xorg-xev
# for sending keystrokes from i3, currently unused
xdotool
# syncing files, requires configuration
syncthing
# flatpak support
flatpak
+1
View File
@@ -8,6 +8,7 @@ rofi-greenclip
tmuxinator
# fonts with powerline glyphs
# TODO: This fails on install because of conflict with ttf-hack
powerline-fonts-git
# transparency
+7
View File
@@ -0,0 +1,7 @@
[Desktop Entry]
Exec=/usr/lib/plasma-dbus/run-session-if-needed /usr/local/bin/startplasma-sway-wayland
TryExec=/usr/local/bin/startplasma-sway-wayland
Name=Plasma with Sway (Wayland)
Comment=Plasma with Sway (Wayland)
DesktopNames=KDE
X-KDE-PluginInfo-Version=6.0.1
+6
View File
@@ -0,0 +1,6 @@
[Desktop Entry]
Type=XSession
Exec=env KDEWM=/usr/bin/i3 /usr/bin/startplasma-x11
DesktopNames=KDE
Name=Plasma with i3
Comment=Plasma with i3