Full Code of WillPower3309/dotfiles for AI

master b49b127e051f cached
12 files
59.4 KB
16.9k tokens
1 requests
Download .txt
Repository: WillPower3309/dotfiles
Branch: master
Commit: b49b127e051f
Files: 12
Total size: 59.4 KB

Directory structure:
gitextract_g19so2w7/

├── .config/
│   ├── compton.conf
│   ├── conky/
│   │   ├── clock_rings.lua
│   │   └── conkyrc
│   ├── i3/
│   │   └── config
│   ├── rofi/
│   │   ├── config.rasi
│   │   └── config.rasiclear
│   └── spicetify/
│       ├── Themes/
│       │   └── custom_theme/
│       │       ├── color.ini
│       │       └── user.css
│       └── config.ini
├── .scripts/
│   └── wm.sh
├── .zshrc
└── README.md

================================================
FILE CONTENTS
================================================

================================================
FILE: .config/compton.conf
================================================
#################################
#
# Backend
#
#################################

# Backend to use: "xrender" or "glx".
# GLX backend is typically much faster but depends on a sane driver.
backend = "glx";

#################################
#
# GLX backend
#
#################################

glx-no-stencil = true;

# GLX backend: Copy unmodified regions from front buffer instead of redrawing them all.
# My tests with nvidia-drivers show a 10% decrease in performance when the whole screen is modified,
# but a 20% increase when only 1/4 is.
# My tests on nouveau show terrible slowdown.
# Useful with --glx-swap-method, as well.
glx-copy-from-front = false;

# GLX backend: Use MESA_copy_sub_buffer to do partial screen update.
# My tests on nouveau shows a 200% performance boost when only 1/4 of the screen is updated.
# May break VSync and is not available on some drivers.
# Overrides --glx-copy-from-front.
# glx-use-copysubbuffermesa = 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).
# Recommended if it works.
# glx-no-rebind-pixmap = true;


# GLX backend: GLX buffer swap method we assume.
# Could be undefined (0), copy (1), exchange (2), 3-6, or buffer-age (-1).
# undefined is the slowest and the safest, and the default value.
# copy is fastest, but may fail on some drivers,
# 2-6 are gradually slower but safer (6 is still faster than 0).
# Usually, double buffer means 2, triple buffer means 3.
# buffer-age means auto-detect using GLX_EXT_buffer_age, supported by some drivers.
# Useless with --glx-use-copysubbuffermesa.
# Partially breaks --resize-damage.
# Defaults to undefined.
glx-swap-method = "undefined";

#################################
#
# Shadows
#
#################################

# Enabled client-side shadows on windows.
shadow = false;
# Don't draw shadows on DND windows.
no-dnd-shadow = true;
# Avoid drawing shadows on dock/panel windows.
no-dock-shadow = true;
# Zero the part of the shadow's mask behind the window. Fix some weirdness with ARGB windows.
clear-shadow = true;
# The blur radius for shadows. (default 12)
shadow-radius = 12;
# The left offset for shadows. (default -15)
shadow-offset-x = -15;
# The top offset for shadows. (default -15)
shadow-offset-y = -15;
# The translucency for shadows. (default .75)
shadow-opacity = 0.65;

# Set if you want different colour shadows
# shadow-red = 0.0;
# shadow-green = 0.0;
# shadow-blue = 0.0;

# The shadow exclude options are helpful if you have shadows enabled. Due to the way compton draws its shadows, certain applications will have visual glitches
# (most applications are fine, only apps that do weird things with xshapes or argb are affected).
# This list includes all the affected apps I found in my testing. The "! name~=''" part excludes shadows on any "Unknown" windows, this prevents a visual glitch with the XFWM at  tab switcher.
shadow-exclude = [
    "! name~=''",
    "name = 'Notification'",
    "name = 'Plank'",
    "name = 'Docky'",
    "name = 'Kupfer'",
    "name = 'GLava'",
    "name = 'xfce4-notifyd'",
    "name *= 'VLC'",
    "name *= 'compton'",
    "name *= 'Chromium'",
    "name *= 'Chrome'",
    "class_g = 'Conky'",
    "class_g = 'Kupfer'",
    "class_g = 'Synapse'",
    "class_g ?= 'Notify-osd'",
    "class_g ?= 'Cairo-dock'",
    "class_g ?= 'Xfce4-notifyd'",
    "class_g ?= 'Xfce4-power-manager'",
    "_GTK_FRAME_EXTENTS@:c"
];
# Avoid drawing shadow on all shaped windows (see also: --detect-rounded-corners)
shadow-ignore-shaped = true;

#################################
#
# Opacity
#
#################################

menu-opacity = 1;
inactive-opacity = 1;
active-opacity = 1;
frame-opacity = 1;
inactive-opacity-override = false;
alpha-step = 0.06;

opacity-rule = [
	"85:class_g = 'Dolphin'",
	"85:class_g = 'Code'",
	"85:class_g = 'code'",
	"0:_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'" #FLASHFOCUS
]

# Dim inactive windows. (0.0 - 1.0)
#inactive-dim = 0.1;
# Do not let dimness adjust based on window opacity.
# inactive-dim-fixed = true;
# Blur background of transparent windows. Bad performance with X Render backend. GLX backend is preferred.
blur-background = true;
blur-method = "kawase";
blur-strength = 10;
# Blur background of opaque windows with transparent frames as well.
# blur-background-frame = true;
# Do not let blur radius adjust based on window opacity.
# blur-background-fixed = false;

blur-background-exclude = [
  "window_type = 'dock'",
  "class_g ?= 'Konsole'"
];

#################################
#
# Fading
#
#################################

# Fade windows during opacity changes.
fading = true;
# The time between steps in a fade in milliseconds. (default 10).
fade-delta = 4;
# Opacity change between steps while fading in. (default 0.028).
fade-in-step = 0.03;
# Opacity change between steps while fading out. (default 0.03).
fade-out-step = 0.03;
# Fade windows in/out when opening/closing
no-fading-openclose = false;

# Specify a list of conditions of windows that should not be faded.
fade-exclude = [ ];

#################################
#
# Other
#
#################################

# Try to detect WM windows and mark them as active.
mark-wmwin-focused = true;
# Mark all non-WM but override-redirect windows active (e.g. menus).
mark-ovredir-focused = true;
# Use EWMH _NET_WM_ACTIVE_WINDOW to determine which window is focused instead of using FocusIn/Out events.
# Usually more reliable but depends on a EWMH-compliant WM.
use-ewmh-active-win = true;
# Detect rounded corners and treat them as rectangular when --shadow-ignore-shaped is on.
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.
# This prevents opacity being ignored for some apps.
# For example without this enabled my xfce4-notifyd is 100% opacity no matter what.
detect-client-opacity = true;

# Specify refresh rate of the screen.
# If not specified or 0, compton will try detecting this with X RandR extension.
refresh-rate = 60;

# Set VSync method. VSync methods currently available:
# none: No VSync
# drm: VSync with DRM_IOCTL_WAIT_VBLANK. May only work on some drivers.
# opengl: Try to VSync with SGI_video_sync OpenGL extension. Only work on some drivers.
# opengl-oml: Try to VSync with OML_sync_control OpenGL extension. Only work on some drivers.
# opengl-swc: Try to VSync with SGI_swap_control OpenGL extension. Only work on some drivers. Works only with GLX backend. Known to be most effective on many drivers. Does not  actually control paint timing, only buffer swap is affected, so it doesn’t have the effect of --sw-opti unlike other methods. Experimental.
# opengl-mswc: Try to VSync with MESA_swap_control OpenGL extension. Basically the same as opengl-swc above, except the extension we use.
# (Note some VSync methods may not be enabled at compile time.)
vsync = "opengl-swc";

# Enable DBE painting mode, intended to use with VSync to (hopefully) eliminate tearing.
# Reported to have no effect, though.
dbe = false;
# Painting on X Composite overlay window. Recommended.
paint-on-overlay = true;

# Limit compton 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 = true;

# Unredirect all windows if a full-screen opaque window is detected, to maximize performance for full-screen windows, like games.
# Known to cause flickering when redirecting/unredirecting windows.
# paint-on-overlay may make the flickering less obvious.
unredir-if-possible = true;

# Specify a list of conditions of windows that should always be considered focused.
focus-exclude = [ ];

# Use WM_TRANSIENT_FOR to group windows, and consider windows in the same group focused at the same time.
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 = true;

#################################
#
# Window type settings
#
#################################

wintypes:
{
    tooltip =
    {
        # fade: Fade the particular type of windows.
        fade = true;
        # shadow: Give those windows shadow
        shadow = false;
        # opacity: Default opacity for the type of windows.
        opacity = 0.85;
        # focus: Whether to always consider windows of this type focused.
        focus = true;
    };
};


================================================
FILE: .config/conky/clock_rings.lua
================================================
--[[
Clock Rings by Linux Mint (2011) reEdited by despot77
This script draws percentage meters as rings, and also draws clock hands if you want! It is fully customisable; all options are described in the script. This script is based off a combination of my clock.lua script and my rings.lua script.
IMPORTANT: if you are using the 'cpu' function, it will cause a segmentation fault if it tries to draw a ring straight away. The if statement on line 145 uses a delay to make sure that this doesn't happen. It calculates the length of the delay by the number of updates since Conky started. Generally, a value of 5s is long enough, so if you update Conky every 1s, use update_num>5 in that if statement (the default). If you only update Conky every 2s, you should change it to update_num>3; conversely if you update Conky every 0.5s, you should use update_num>10. ALSO, if you change your Conky, is it best to use "killall conky; conky" to update it, otherwise the update_num will not be reset and you will get an error.
To call this script in Conky, use the following (assuming that you save this script to ~/scripts/rings.lua):
    lua_load ~/scripts/clock_rings.lua
    lua_draw_hook_pre clock_rings
    
Changelog:
+ v1.0 -- Original release (30.09.2009)
   v1.1p -- Jpope edit londonali1010 (05.10.2009)
*v 2011mint -- reEdit despot77 (18.02.2011)
]]

settings_table = {
    -- Hour
    {
        -- Edit this table to customise your rings.
        -- You can create more rings simply by adding more elements to settings_table.
        -- "name" is the type of stat to display; you can choose from 'cpu', 'memperc', 'fs_used_perc', 'battery_used_perc'.
        name='time',
        -- "arg" is the argument to the stat type, e.g. if in Conky you would write ${cpu cpu0}, 'cpu0' would be the argument. If you would not use an argument in the Conky variable, use ''.
        arg='%I.%M',
        -- "max" is the maximum value of the ring. If the Conky variable outputs a percentage, use 100.
        max=12,
        -- "bg_colour" is the colour of the base ring.
        bg_colour=0xffffff,
        -- "bg_alpha" is the alpha value of the base ring.
        bg_alpha=0.1,
        -- "fg_colour" is the colour of the indicator part of the ring.
        fg_colour=0xffffff,
        -- "fg_alpha" is the alpha value of the indicator part of the ring.
        fg_alpha=0.2,
        -- "x" and "y" are the x and y coordinates of the centre of the ring, relative to the top left corner of the Conky window.
        x=200, y=250,
        -- "radius" is the radius of the ring.
        radius=100,
        -- "thickness" is the thickness of the ring, centred around the radius.
        thickness=7,
        -- "start_angle" is the starting angle of the ring, in degrees, clockwise from top. Value can be either positive or negative.
        start_angle=0,
        -- "end_angle" is the ending angle of the ring, in degrees, clockwise from top. Value can be either positive or negative, but must be larger than start_angle.
        end_angle=360
    },
    -- Minute
    {
        name='time',
        arg='%M.%S',
        max=60,
        bg_colour=0xffffff,
        bg_alpha=0.1,
        fg_colour=0xffffff,
        fg_alpha=0.4,
        x=200, y=250,
        radius=120,
        thickness=7,
        start_angle=0,
        end_angle=360
    },
    -- Second
    {
        name='time',
        arg='%S',
        max=60,
        bg_colour=0xffffff,
        bg_alpha=0.1,
        fg_colour=0xffffff,
        fg_alpha=0.6,
        x=200, y=250,
        radius=140,
        thickness=7,
        start_angle=0,
        end_angle=360
    },
    -- Day
    {
        name='time',
        arg='%d',
        max=31,
        bg_colour=0xffffff,
        bg_alpha=0.1,
        fg_colour=0xffffff,
        fg_alpha=0.8,
        x=200, y=250,
        radius=170,
        thickness=7,
        start_angle=-90,
        end_angle=90
    },
    -- Month
    {
        name='time',
        arg='%m',
        max=12,
        bg_colour=0xffffff,
        bg_alpha=0.1,
        fg_colour=0xffffff,
        fg_alpha=1,
        x=200, y=250,
        radius=185,
        thickness=7,
        start_angle=-90,
        end_angle=90
    },
    {
        name='cpu',
        arg='cpu0',
        max=100,
        bg_colour=0xffffff,
        bg_alpha=0.2,
        fg_colour=0xffffff,
        fg_alpha=0.8,
        x=100, y=500,
        radius=45,
        thickness=7,
        start_angle=-90,
        end_angle=180
    },
    {
        name='memperc',
        arg='',
        max=100,
        bg_colour=0xffffff,
        bg_alpha=0.2,
        fg_colour=0xffffff,
        fg_alpha=0.8,
        x=150, y=600,
        radius=45,
        thickness=7,
        start_angle=-90,
        end_angle=180
    },
    {
        name='swapperc',
        arg='',
        max=100,
        bg_colour=0xffffff,
        bg_alpha=0.2,
        fg_colour=0xffffff,
        fg_alpha=0.8,
        x=200, y=700,
        radius=45,
        thickness=7,
        start_angle=-90,
        end_angle=180
    },
    {
        name='fs_used_perc',
        arg='/',
        max=100,
        bg_colour=0xffffff,
        bg_alpha=0.2,
        fg_colour=0xffffff,
        fg_alpha=0.8,
        x=250, y=800,
        radius=45,
        thickness=7,
        start_angle=-90,
        end_angle=180
    },
        {
        name='downspeedf',
        arg='eth0',
        max=100,
        bg_colour=0xffffff,
        bg_alpha=0.2,
        fg_colour=0xffffff,
        fg_alpha=0.8,
        x=300, y=905,
        radius=50,
        thickness=6,
        start_angle=-90,
        end_angle=180
    },
        {
        name='upspeedf',
        arg='eth0',
        max=100,
        bg_colour=0xffffff,
        bg_alpha=0.2,
        fg_colour=0xffffff,
        fg_alpha=0.8,
        x=300, y=905,
        radius=40,
        thickness=6,
        start_angle=-90,
        end_angle=180
    },
}

-- Use these settings to define the origin and extent of your clock.

clock_r=140

-- "clock_x" and "clock_y" are the coordinates of the centre of the clock, in pixels, from the top left of the Conky window.

clock_x=200
clock_y=250

show_seconds=true

require 'cairo'

function rgb_to_r_g_b(colour,alpha)
    return ((colour / 0x10000) % 0x100) / 255., ((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha
end

function draw_ring(cr,t,pt)
    local w,h=conky_window.width,conky_window.height
    
    local xc,yc,ring_r,ring_w,sa,ea=pt['x'],pt['y'],pt['radius'],pt['thickness'],pt['start_angle'],pt['end_angle']
    local bgc, bga, fgc, fga=pt['bg_colour'], pt['bg_alpha'], pt['fg_colour'], pt['fg_alpha']

    local angle_0=sa*(2*math.pi/360)-math.pi/2
    local angle_f=ea*(2*math.pi/360)-math.pi/2
    local t_arc=t*(angle_f-angle_0)

    -- Draw background ring

    cairo_arc(cr,xc,yc,ring_r,angle_0,angle_f)
    cairo_set_source_rgba(cr,rgb_to_r_g_b(bgc,bga))
    cairo_set_line_width(cr,ring_w)
    cairo_stroke(cr)
    
    -- Draw indicator ring

    cairo_arc(cr,xc,yc,ring_r,angle_0,angle_0+t_arc)
    cairo_set_source_rgba(cr,rgb_to_r_g_b(fgc,fga))
    cairo_stroke(cr)        
end

function draw_clock_hands(cr,xc,yc)
    local secs,mins,hours,secs_arc,mins_arc,hours_arc
    local xh,yh,xm,ym,xs,ys
    
    secs=os.date("%S")    
    mins=os.date("%M")
    hours=os.date("%I")
        
    secs_arc=(2*math.pi/60)*secs
    mins_arc=(2*math.pi/60)*mins+secs_arc/60
    hours_arc=(2*math.pi/12)*hours+mins_arc/12
        
    -- Draw hour hand
    
    xh=xc+0.7*clock_r*math.sin(hours_arc)
    yh=yc-0.7*clock_r*math.cos(hours_arc)
    cairo_move_to(cr,xc,yc)
    cairo_line_to(cr,xh,yh)
    
    cairo_set_line_cap(cr,CAIRO_LINE_CAP_ROUND)
    cairo_set_line_width(cr,5)
    cairo_set_source_rgba(cr,1.0,1.0,1.0,1.0)
    cairo_stroke(cr)
    
    -- Draw minute hand
    
    xm=xc+clock_r*math.sin(mins_arc)
    ym=yc-clock_r*math.cos(mins_arc)
    cairo_move_to(cr,xc,yc)
    cairo_line_to(cr,xm,ym)
    
    cairo_set_line_width(cr,3)
    cairo_stroke(cr)
    
    -- Draw seconds hand
    
    if show_seconds then
        xs=xc+clock_r*math.sin(secs_arc)
        ys=yc-clock_r*math.cos(secs_arc)
        cairo_move_to(cr,xc,yc)
        cairo_line_to(cr,xs,ys)
    
        cairo_set_line_width(cr,1)
        cairo_stroke(cr)
    end
end

function conky_clock_rings()
    local function setup_rings(cr,pt)
        local str=''
        local value=0
        
        str=string.format('${%s %s}',pt['name'],pt['arg'])
        str=conky_parse(str)
        
        value=tonumber(str)
        pct=value/pt['max']
        
        draw_ring(cr,pct,pt)
    end
    
    -- Check that Conky has been running for at least 5s

    if conky_window==nil then return end
    local cs=cairo_xlib_surface_create(conky_window.display,conky_window.drawable,conky_window.visual, conky_window.width,conky_window.height)
    
    local cr=cairo_create(cs)    
    
    local updates=conky_parse('${updates}')
    update_num=tonumber(updates)
    
    if update_num>5 then
        for i in pairs(settings_table) do
            setup_rings(cr,settings_table[i])
        end
    end
    
    draw_clock_hands(cr,clock_x,clock_y)
end

================================================
FILE: .config/conky/conkyrc
================================================
# Conky settings #
background yes
update_interval 1

cpu_avg_samples 2
net_avg_samples 2

override_utf8_locale yes

double_buffer yes
no_buffers yes

text_buffer_size 2048
#imlib_cache_size 0

temperature_unit fahrenheit

# Window specifications #

own_window yes
own_window_type override
own_window_transparent yes
own_window_hints undecorated,sticky,skip_taskbar,skip_pager,below

border_inner_margin 0
border_outer_margin 0

minimum_size 400 1000
maximum_width 400

alignment tr
gap_x 100
gap_y 80

# Graphics settings #
draw_shades no
draw_outline no
draw_borders no
draw_graph_borders no

# Text settings #
use_xft yes
xftfont SF Pro Text:size=8
xftalpha 0.5

uppercase no

temperature_unit celsius


default_color FFFFFF

# Lua Load  #
lua_load ~/.config/conky/clock_rings.lua
lua_draw_hook_pre clock_rings

TEXT
${voffset 450}
${color FFFFFF}${goto 45}${voffset 35}${cpu cpu0}%
${color FFFFFF}${goto 45}CPU
${color FFFFFF}${goto 95}${voffset 45}${memperc}%
${color FFFFFF}${goto 95}RAM
${color FFFFFF}${goto 140}${voffset 50}${swapperc}%
${color FFFFFF}${goto 140}Swap
${color FFFFFF}${goto 200}${voffset 50}${fs_used_perc /}%
${color FFFFFF}${goto 200}Disk
${color FFFFFF}${goto 260}${voffset 55}${downspeed eth0}
${color FFFFFF}${goto 260}${upspeed eth0}
${color FFFFFF}${goto 260}Net 


================================================
FILE: .config/i3/config
================================================
# >>> Plasma Integration <<<

# Try to kill the wallpaper set by Plasma (it takes up the entire workspace
# and hides everythiing)
exec --no-startup-id wmctrl -c Plasma
for_window [title="Desktop — Plasma"] kill; floating enable; border none

# Avoid tiling latte panel components
for_window [title="Latte Dock"] floating enable;

# Avoid tiling popups, dropdown windows from plasma
for_window [class="plasmashell"] floating enable
for_window [class="Plasma"] floating enable
for_window [class="krunner"] floating enable
for_window [class="Kmix"] floating enable
for_window [class="Klipper"] floating enable
for_window [class="Plasmoidviewer"] floating enable

# >>> Window Rules <<<

# >>> Avoid tiling for non-Plasma stuff <<<
for_window [window_role="pop-up"] floating enable
for_window [window_role="bubble"] floating enable
for_window [window_role="task_dialog"] floating enable
for_window [window_role="Preferences"] floating enable
for_window [window_role="About"] floating enable 
for_window [window_type="dialog"] floating enable
for_window [window_type="menu"] floating enable
for_window [title="Android Emulator"] floating enable #android emulator

#****************************************************************************

#	Keybinds

#****************************************************************************

set $mod Mod4

# Font for window titles. Will also be used by the bar unless a different font
# is used in the bar {} block below.
font pango:monospace 8

# 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:DejaVu Sans Mono 8

# Before i3 v4.8, we used to recommend this one as the default:
# font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
# The font above is very space-efficient, that is, it looks good, sharp and
# clear in small sizes. However, its unicode glyph coverage is limited, the old
# X core fonts rendering does not support right-to-left and this being a bitmap
# font, it doesn’t scale on retina/hidpi displays.

# Use Mouse+$mod to drag floating windows to their wanted position
floating_modifier $mod

# start a terminal
bindsym $mod+Return exec konsole

# kill focused window
bindsym $mod+Shift+q kill

# change focus
bindsym $mod+j focus left
bindsym $mod+k focus down
bindsym $mod+l focus up
bindsym $mod+semicolon focus right

# alternatively, you can use the cursor keys:
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right

# move focused window
bindsym $mod+Shift+j move left
bindsym $mod+Shift+k move down
bindsym $mod+Shift+l move up
bindsym $mod+Shift+semicolon move right

# alternatively, you can use the cursor keys:
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right

# split in horizontal orientation
bindsym $mod+h split h

# split in vertical orientation
bindsym $mod+v split v

# enter fullscreen mode for the focused container
bindsym $mod+f fullscreen toggle

# change container layout (stacked, tabbed, toggle split)
bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+e layout toggle split

# toggle tiling / floating
bindsym $mod+Shift+space floating toggle

# change focus between tiling / floating windows
bindsym $mod+space focus mode_toggle

# focus the parent container
bindsym $mod+a focus parent

# focus the child container
#bindsym $mod+d focus child

# 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 $ws6 "6"
set $ws7 "7"
set $ws8 "8"
set $ws9 "9"
set $ws10 "10"

# switch to workspace
bindsym $mod+1 workspace $ws1
bindsym $mod+2 workspace $ws2
bindsym $mod+3 workspace $ws3
bindsym $mod+4 workspace $ws4
bindsym $mod+5 workspace $ws5
bindsym $mod+6 workspace $ws6
bindsym $mod+7 workspace $ws7
bindsym $mod+8 workspace $ws8
bindsym $mod+9 workspace $ws9
bindsym $mod+0 workspace $ws10

# move focused container to workspace
bindsym $mod+Shift+1 move container to workspace $ws1
bindsym $mod+Shift+2 move container to workspace $ws2
bindsym $mod+Shift+3 move container to workspace $ws3
bindsym $mod+Shift+4 move container to workspace $ws4
bindsym $mod+Shift+5 move container to workspace $ws5
bindsym $mod+Shift+6 move container to workspace $ws6
bindsym $mod+Shift+7 move container to workspace $ws7
bindsym $mod+Shift+8 move container to workspace $ws8
bindsym $mod+Shift+9 move container to workspace $ws9
bindsym $mod+Shift+0 move container to workspace $ws10

# reload the configuration file
bindsym $mod+Shift+c reload
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
bindsym $mod+Shift+r restart
# exit i3 (logs you out of your X session)
bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'"

# resize window (you can also use the mouse for that)
mode "resize" {
        # These bindings trigger as soon as you enter the resize mode

        # Pressing left will shrink the window’s width.
        # Pressing right will grow the window’s width.
        # Pressing up will shrink the window’s height.
        # Pressing down will grow the window’s height.
        bindsym j resize shrink width 10 px or 10 ppt
        bindsym k resize grow height 10 px or 10 ppt
        bindsym l resize shrink height 10 px or 10 ppt
        bindsym semicolon resize grow width 10 px or 10 ppt

        # same bindings, but for the arrow keys
        bindsym Left resize shrink width 10 px or 10 ppt
        bindsym Down resize grow height 10 px or 10 ppt
        bindsym Up resize shrink height 10 px or 10 ppt
        bindsym Right resize grow width 10 px or 10 ppt

        # back to normal: Enter or Escape or $mod+r
        bindsym Return mode "default"
        bindsym Escape mode "default"
        bindsym $mod+r mode "default"
}

bindsym $mod+r mode "resize"


# rofi
bindsym $mod+d exec rofi -show drun

# flash current window
bindsym $mod+n exec --no-startup-id flash_window

#*********************************************************************************

#	Startup

#********************************************************************************

exec --no-startup-id feh --bg-scale ~/Documents/background.JPG
exec --no-startup-id compton
exec --no-startup-id ~/.scripts/feh-blur -b 12 -D 0
exec --no-startup-id flashfocus
#exec --no-startup-id conky -c ~/.config/conky/conkyrc

#********************************************************************************

#	Appearance

#********************************************************************************

# Theme colors
# class                   border  backgr. text    indic.   child_border
client.focused          #4c7899 #285577 #ffffff #2e9ef4   #285577
client.focused_inactive #333333 #5f676a #ffffff #484e50   #5f676a
client.unfocused        #333333 #222222 #888888 #292d2e   #222222
client.urgent           #2f343a #900000 #ffffff #900000   #900000
client.placeholder      #000000 #0c0c0c #ffffff #000000   #0c0c0c

# Configure border style <normal|1pixel|pixel xx|none|pixel>
new_window none
new_float normal

# Hide borders
hide_edge_borders none

# change borders
bindsym $mod+y border none
bindsym $mod+u border pixel 1
bindsym $mod+i border normal


#############################
### settings for i3-gaps: ###
#############################

# Set inner/outer gaps
gaps inner 15
gaps outer 5

# Activate smart borders (always)
smart_borders on


================================================
FILE: .config/rofi/config.rasi
================================================
configuration {
    display-drun:                   "Apps";
    display-window:                 "Window";
    show-icons:true;
}
 
* {
    lines: 15;
    columns: 1;
    background-color: #00000065;
    border-color: #00000000;
    text-color: #EFEFEF;
    font: "SF Pro Text 16";
}
 
#window {
    border: 0;
    border-radius: 4px;
    padding: 40;
    width: 30%;
    height: 50%;
}
 
#mainbox {
    background-color: #00000000;
    children: [inputbar, listview];
    spacing: 10px;
    /*margin: 20%;*/
    padding: 30px 0;
    border: 1px;
    border-color: @base0D;
}
 
 
#listview {
    background-color: #00000000;
    fixed-height: 0;
    border: 0px;
    spacing: 5px;
    scrollbar: false;
    padding: 10px 10px 0px;
}
 
#element {
    background-color: #00000000;
    border: 0;
    border-radius: 15px;
    padding: 3 0  3 4 ;
}
 
#element selected {
    background-color: #00a0e6;
    text-color: #EFEFEF;
}
 
 
#inputbar {
    children:   [ prompt,textbox-prompt-colon,entry,case-indicator ];
    background-color: #00000000;
}
 
#case-indicator {
    background-color: #00000000;
    spacing:    0;
}
#entry {
    background-color: #00000000;
    spacing:    0;
}
#prompt {
    background-color: #00000000;
    spacing:    0;
}
 
#textbox-prompt-colon {
    background-color: #00000000;
    expand:     false;
    str:        ":";
    margin:     0px 0.3em 0em 0em ;
}



================================================
FILE: .config/rofi/config.rasiclear
================================================
configuration {
/*	modi: "window,run,ssh";*/
	width: 1920;
	lines: 20;
/*	columns: 1;*/
/*	font: "mono 12";*/
/*	bw: 1;*/
	location: 0;
	padding: 50;
/*	yoffset: 0;*/
/*	xoffset: 0;*/
/*	fixed-num-lines: true;*/
	show-icons: true;
/*	terminal: "rofi-sensible-terminal";*/
/*	ssh-client: "ssh";*/
/*	ssh-command: "{terminal} -e {ssh-client} {host}";*/
/*	run-command: "{cmd}";*/
/*	run-list-command: "";*/
/*	run-shell-command: "{terminal} -e {cmd}";*/
/*	window-command: "xkill -id {window}";*/
/*	window-match-fields: "all";*/
/*	icon-theme: ;*/
/*	drun-match-fields: "name,generic,exec,categories";*/
/*	drun-show-actions: false;*/
/*	drun-display-format: "{name} [<span weight='light' size='small'><i>({generic})</i></span>]";*/
/*	disable-history: false;*/
/*	sort: false;*/
/*	sorting-method: ;*/
/*	case-sensitive: false;*/
/*	cycle: true;*/
	sidebar-mode: true;
	eh: 1;
/*	auto-select: false;*/
/*	parse-hosts: false;*/
/*	parse-known-hosts: true;*/
/*	combi-modi: "window,run";*/
/*	matching: "normal";*/
/*	tokenize: true;*/
/*	m: "-5";*/
	line-margin: 5;
/*	line-padding: 1;*/
/*	filter: ;*/
/*	separator-style: "dash";*/
	hide-scrollbar: true;
/*	fullscreen: false;*/
/*	fake-transparency: false;*/
/*	dpi: -1;*/
/*	threads: 0;*/
/*	scrollbar-width: 8;*/
/*	scroll-method: 0;*/
/*	fake-background: "screenshot";*/
/*	window-format: "{w}    {i}{c}   {t}";*/
/*	click-to-exit: true;*/
/*	show-match: true;*/
/*	theme: ;*/
/*	color-normal: ;*/
/*	color-urgent: ;*/
/*	color-active: ;*/
/*	color-window: ;*/
/*	max-history-size: 25;*/
/*	combi-hide-mode-prefix: false;*/
/*	matching-negate-char: '-' /* unsupported */;*/
/*	pid: "/run/user/1000/rofi.pid";*/
/*	display-window: ;*/
/*	display-windowcd: ;*/
/*	display-run: ;*/
/*	display-ssh: ;*/
/*	display-drun: ;*/
/*	display-combi: ;*/
/*	display-keys: ;*/
/*	kb-primary-paste: "Control+V,Shift+Insert";*/
/*	kb-secondary-paste: "Control+v,Insert";*/
/*	kb-clear-line: "Control+w";*/
/*	kb-move-front: "Control+a";*/
/*	kb-move-end: "Control+e";*/
/*	kb-move-word-back: "Alt+b,Control+Left";*/
/*	kb-move-word-forward: "Alt+f,Control+Right";*/
/*	kb-move-char-back: "Left,Control+b";*/
/*	kb-move-char-forward: "Right,Control+f";*/
/*	kb-remove-word-back: "Control+Alt+h,Control+BackSpace";*/
/*	kb-remove-word-forward: "Control+Alt+d";*/
/*	kb-remove-char-forward: "Delete,Control+d";*/
/*	kb-remove-char-back: "BackSpace,Shift+BackSpace,Control+h";*/
/*	kb-remove-to-eol: "Control+k";*/
/*	kb-remove-to-sol: "Control+u";*/
/*	kb-accept-entry: "Control+j,Control+m,Return,KP_Enter";*/
/*	kb-accept-custom: "Control+Return";*/
/*	kb-accept-alt: "Shift+Return";*/
/*	kb-delete-entry: "Shift+Delete";*/
/*	kb-mode-next: "Shift+Right,Control+Tab";*/
/*	kb-mode-previous: "Shift+Left,Control+ISO_Left_Tab";*/
/*	kb-row-left: "Control+Page_Up";*/
/*	kb-row-right: "Control+Page_Down";*/
/*	kb-row-up: "Up,Control+p,ISO_Left_Tab";*/
/*	kb-row-down: "Down,Control+n";*/
/*	kb-row-tab: "Tab";*/
/*	kb-page-prev: "Page_Up";*/
/*	kb-page-next: "Page_Down";*/
/*	kb-row-first: "Home,KP_Home";*/
/*	kb-row-last: "End,KP_End";*/
/*	kb-row-select: "Control+space";*/
/*	kb-screenshot: "Alt+S";*/
/*	kb-toggle-case-sensitivity: "grave,dead_grave";*/
/*	kb-toggle-sort: "Alt+grave";*/
/*	kb-cancel: "Escape,Control+g,Control+bracketleft";*/
/*	kb-custom-1: "Alt+1";*/
/*	kb-custom-2: "Alt+2";*/
/*	kb-custom-3: "Alt+3";*/
/*	kb-custom-4: "Alt+4";*/
/*	kb-custom-5: "Alt+5";*/
/*	kb-custom-6: "Alt+6";*/
/*	kb-custom-7: "Alt+7";*/
/*	kb-custom-8: "Alt+8";*/
/*	kb-custom-9: "Alt+9";*/
/*	kb-custom-10: "Alt+0";*/
/*	kb-custom-11: "Alt+exclam";*/
/*	kb-custom-12: "Alt+at";*/
/*	kb-custom-13: "Alt+numbersign";*/
/*	kb-custom-14: "Alt+dollar";*/
/*	kb-custom-15: "Alt+percent";*/
/*	kb-custom-16: "Alt+dead_circumflex";*/
/*	kb-custom-17: "Alt+ampersand";*/
/*	kb-custom-18: "Alt+asterisk";*/
/*	kb-custom-19: "Alt+parenleft";*/
/*	kb-select-1: "Super+1";*/
/*	kb-select-2: "Super+2";*/
/*	kb-select-3: "Super+3";*/
/*	kb-select-4: "Super+4";*/
/*	kb-select-5: "Super+5";*/
/*	kb-select-6: "Super+6";*/
/*	kb-select-7: "Super+7";*/
/*	kb-select-8: "Super+8";*/
/*	kb-select-9: "Super+9";*/
/*	kb-select-10: "Super+0";*/
/*	ml-row-left: "ScrollLeft";*/
/*	ml-row-right: "ScrollRight";*/
/*	ml-row-up: "ScrollUp";*/
/*	ml-row-down: "ScrollDown";*/
/*	me-select-entry: "MousePrimary";*/
/*	me-accept-entry: "MouseDPrimary";*/
/*	me-accept-custom: "Control+MouseDPrimary";*/
}

================================================
FILE: .config/spicetify/Themes/custom_theme/color.ini
================================================
[Base]
; Light green on Dark Blue background
main_fg                               = 00FF9C
secondary_fg                          = DEDEDE
main_bg                               = 2E2837
sidebar_and_player_bg                 = 2E2837
cover_overlay_and_shadow              = 000000
indicator_fg_and_button_bg            = 00FF9C
pressing_fg                           =  FF5C86
slider_bg                             = 3F3C45
sidebar_indicator_and_hover_button_bg = 00BF76
scrollbar_fg_and_selected_row_bg      = 615670
pressing_button_fg                    = DEDEDE
pressing_button_bg                    = 383145
selected_button                       = 00BF76
miscellaneous_bg                      = 3F3C45
miscellaneous_hover_bg                = 383145
preserve_1                            = FFFFFF


================================================
FILE: .config/spicetify/Themes/custom_theme/user.css
================================================
:root {
	--bar-height: 120px;
}

/*Round corner cover image*/
.card-image,
.card-placeholder-wrapper,
.card-image-content-wrapper,
.Card:not(.Card--artist) .Card__image,
.Card:not(.Card--artist) .Card__image-wrapper {
	border-radius: 10px !important;
	overflow: hidden !important
}

/*Hide some annoying elements like profile name and pic, upgrade button and device connect bar at bottom, new playlist button*/
.profile.content-top-bar__profile-link,
.upgrade-button,
.view-player .remote-playback-bar,
.NewPlaylistButton {
	display: none !important;
}


/*Exclude these elements from draggable property because it stops them from clickable*/
.profile-items-container,
.profile {
	-webkit-app-region: no-drag !important;
}

/*Thinner scrollbar*/
::-webkit-scrollbar {
	height: 6px !important;
	width: 6px !important;
	background-color: transparent;
}

/*Round corner scrollbar*/
::-webkit-scrollbar-thumb {
	border-radius: 3px !important;
}

/*Hide top and bottom buttons of scrollbar */
/*who uses those, lol*/
::-webkit-scrollbar-button {
	display: none !important;
}

/*Hide cover image overlay*/
.card-overlay {
	visibility: hidden !important;
}

/*Lift up cover when hovering on it*/
.card-image-content-wrapper,
.Card:not(.Card--artist) .Card__image-wrapper {
	transition-property: transform, box-shadow !important;
	transition-duration: 1s !important;
	transition-timing-function: cubic-bezier(.3,0,0,1) !important;
	box-shadow: 0 5px 20px rgba(0,0,0,0.1);
}

.card-image-hit-area:not(.no-hover):hover .card-image-content-wrapper,
.Card:not(.Card--artist) .Card__image-hit-area-counter-scale:hover .Card__image-wrapper {
	transform: translateY(-10px);
	box-shadow: 0 15px 30px rgba(0,0,0,0.3);
}

.card-image-hit-area .card-button-add,
.card-image-hit-area .card-button-play,
.card-image-hit-area .card-button-more,
.Card__image-hit-area .card-button-add,
.Card__image-hit-area .card-button-play,
.Card__image-hit-area .card-button-more,
.Card__image-hit-area .Card__play-button,
.Card__image-hit-area .Card__add-button,
.Card__image-hit-area .Card__more-button,
.Card__image-hit-area .Card__overlay  {
	transition-property: all !important;
	transition-duration: 1s !important;
	transition-timing-function: cubic-bezier(.3,0,0,1) !important;
	opacity: 0 !important;
}
.card-image-hit-area:not(.no-hover):hover .card-button-add,
.card-image-hit-area:not(.no-hover):hover .card-button-play,
.card-image-hit-area:not(.no-hover):hover .card-button-more,
.Card__image-hit-area:not(.no-hover):hover .card-button-add,
.Card__image-hit-area:not(.no-hover):hover .card-button-play,
.Card__image-hit-area:not(.no-hover):hover .card-button-more {
	opacity: 1 !important;
	transform: translateY(-10px);
}

.Card__image-hit-area:hover .Card__play-button,
.Card__image-hit-area:hover .Card__add-button,
.Card__image-hit-area:hover .Card__more-button,
.Card__image-hit-area:hover .Card__overlay {
	opacity: 1 !important;
}

.glue-page-header__content .glue-page-header__image-inner {
	border-radius: 10px;
	box-shadow: unset !important;
}

.glue-page-header__full-description-overlay {
	box-shadow: unset !important;
}

.card-placeholder-wrapper {
	background: transparent !important;
}

/*Spice up search input background*/
.SearchInput {
	color: var(--modspotify_main_fg);
}
.SearchInput__input {
	color: var(--modspotify_secondary_fg);
	background-color: rgba(var(--modspotify_rgb_scrollbar_fg_and_selected_row_bg), 0.5) !important;
	border-radius: 4px !important;
	padding-left: 34px;
}

.sidebar:hover .sidebar-navbar.sidebar-scroll-element {
	opacity: 1!important;
}

.view-player .player-controls-container,
.view-player .player-controls-container .controls {
	overflow: visible !important;
}

.view-player .player-controls-container .controls .button-play{
	height:50px !important;
	border-radius:50px !important;
	background: transparent !important;
	box-shadow:0 0 0 0 !important;
	width:50px !important;
	overflow: visible !important;
	box-shadow: 0 4px 15px rgba(0,0,0,0.2) !important;
	transition:none 0.3s cubic-bezier(.3,0,.7,1);
}

.view-player .player-controls-container .controls .button-play:before{
	font-size:18px !important;
	padding-left: 16px !important;
	padding-top: 9px !important;
}

.view-player .player-controls-container .controls .button-play:after {
	box-shadow: unset !important;
}

.view-player .player-controls-container {
	position: absolute !important;
	width: 100% !important;
}

.view-player .player-controls-container .controls {
	width: 100% !important;
	height: 100%  !important;
	align-items: center !important;
	margin-top : 0px !important;
}

/*
Hide the song duration and elapsed text. I dont know where to put those so I just hide them
*/
.view-player .player-controls-container .progress-container .elapsed,
.view-player .player-controls-container .progress-container .remaining {
	display: none !important;
}

/* Add round corner for Gerne and Mood cards */
.gc-image-container,
.gc-image {
	border-radius: 10px !important;
}

/*
Collage of 3 album covers is usually seen in Browse and Chart.
*/
.card-puff__image-wrapper,
.card-puff__info-container,
.card-puff__card-image {
	border-radius: 10px !important;
}

.card-puff__image-wrapper {
  overflow: visible;
}

.card-puff__card-image {
	box-shadow: 5px 0 30px rgba(0,0,0,0.7);
	overflow: visible;
}

.card-puff__title-container {
	background-color: transparent !important;
}

.card-puff.pressed .card-puff__image-wrapper,
.card-puff.pressed .card-puff__info-container {
	opacity: 0.7 !important;
}

.card-puff__title {
	padding: 5px 10px 5px 10px !important;
	background-color: var(--modspotify_main_bg) !important;
	border-radius: 4px;
	border: 2px solid var(--modspotify_main_fg);
}

/*
We use round corner on cover so they look weird in original
form, so I move last cover to the right 20px and first one to the left 20px
*/
.card-puff__card-image:nth-child(1) {
	right: 20px;
	box-shadow: 0 0 0 0 !important;
}

.card-puff__card-image:nth-child(3) {
	left: 20px;
}

.grid-overlay-label {
	top: 140px !important;
}

/**/
.glue-page-header__background-color {
	background-image: none !important;
	background: var(--modspotify_main_bg);
}

/* .glue-page-header__sticky {
  	padding-top: 60px !important;
} */

/*
Remove those title, cringy description and
meaningless followers number
*/

.carousel .card-info-subtitle-description,
.carousel .card-info-subtitle-metadata,
.carousel .card:not(.card-type-station).card-info-title,
.carousel .card.card-type-playlist.image-loaded .card-info-subtitle-description,
.carousel .card.card-type-playlist.image-loaded .card-info-subtitle-metadata {
	display: none !important;
}


/*
In top of Browse usually has bunch of Playlist or Album cards,
and they has .carousel as a wrapper and it hides anything that
overflows from its zone, aka our shadow and lifting animation.
*/
.carousel {
	overflow: visible !important;
}

/*
Button with text Play
*/
.button.button-green,
.GlueButton.GlueButton--style-green {
	color: var(--modspotify_main_bg) !important;
}

/*
Change text color in playlist
*/
.tl-explicit .label,
.tl-premium .label,
.tl-cell:not(.tl-number),
.tl-cell a:link,
.tl-highlight {
  color: var(--modspotify_secondary_fg);
}

.card-type-album .card-info-title,
.card-type-track .card-info-title,
.card-type-collection-album .card-info-title,
.card-type-episode .card-info-title {
  	font-size: 15px;
  	font-weight: 900 !important;
	text-align: center !important;
	width: 100% !important;
}

.card-type-album .card-info-subtitle-links,
.card-type-track .card-info-subtitle-links,
.card-type-collection-album .card-info-subtitle-links,
.card-type-episode .card-info-subtitle-links {
	text-align: center !important;
	width: 100% !important;
}

.tracklist-station-container::after {
	background: transparent !important;
}

.GlueHeader__background-overlay {
	background: var(--modspotify_main_bg) !important;
}

/* Move navigation buttons and search field to the right and down */
.browser-navigation-top-bar {
	margin-left: 40px !important;
	margin-top: 15px !important;
}

.SearchInput__input,
.SearchInput__searchIcon,
.SearchInput__clearButton {
	margin-top: 15px !important;
}

.content-top-bar__profile-menu-button {
	margin-top: 15px !important;
}

.body-container--windows:not(.with-buddy-list):not(.messagebar) .content-top-bar__profile {
	margin-right: 110px !important;
	margin-top: -5px;
}

/* Spice up Fullscreen mode */
#view-player .album-art .album-art__image {
	border-radius: 30px !important;
	box-shadow: 0 10px 70px rgba(var(--modspotify_rgb_cover_overlay_and_shadow),.5) !important;
}

#view-player .album-art .album-art__image .card-image-content-wrapper,
#view-player .album-art .album-art__image .card-image-content-wrapper .card-image {
	border-radius: 30px !important;
}

#video-player .album-art__foreground {
	flex-direction: row;
	text-align: left;	
}

#video-player .album-art__background {
	background-color: initial;
}

#video-player .album-art__track-details {
	padding-left: 50px;
	line-height: initial;
}

#video-player .album-art__track-title {
	font-size: 84px;
	margin-top: 0;
	line-height: initial;
}

#video-player .album-art__artist-name {
	font-size: 54px;
	margin-top: 0;
	line-height: initial;
}

/* Daily mixes */
.carousel .card-info-wrapper.card-info-with-description.card-info-with-metadata {
	height: 50px !important;
}

/* Remove section divider */
.section-divider {
	border-bottom: 0 !important;
}

/* Adjust Position of border active tab in Nav bar at top
and add little glowing effect
*/
.nav.navbar-nav {
	overflow: hidden !important;
}

.nav.navbar-nav a {
	overflow: visible !important;
}

.nav.navbar-nav a::after {
	bottom: 0px !important;
	width: 100% !important;
}

.nav.navbar-nav .active  a::after{
	box-shadow: 0 0px 20px !important;
}

.nav.navbar-nav a:focus:not(.button):active::after{
	background-color: var(--modspotify_pressing_fg) !important;
}

/* Notification bar */
#content-wrapper #view-message-bar {
	position: absolute !important;
	width: calc(100% - 160px) !important;
	margin-left: 80px !important;
	border-radius: 0 0 10px 10px !important;
}

/* Small cover Big cover mechanism */
.now-playing.cover-size-transition.active.image-expanded #now-playing-image-small {
    display: none;
}

.now-playing.cover-size-transition.active.image-expanded .cover-image-link-wrapper {
	flex: 0 1 10px;
}

#view-now-playing a.image {
	overflow: visible !important;
}

/* Profile arrow in top left */
.content-top-bar__profile-menu-button .dropdown {
	position: fixed !important;
    top: 10px !important;
	-webkit-app-region: no-drag !important;
}

/* [WINDOWS] Change Profile menu horizontal position */
body.body-container--windows .content-top-bar__profile-menu-button .dropdown {
	right: 190px !important;
}

body:not(.body-container--windows) .content-top-bar__profile-menu-button .dropdown {
	right: 20px !important;
}

/* Small tooltip */
#tooltip {
	box-shadow: 0 0 10px rgba(0,0,0,0.2) !important;
	border-radius: 5px !important;
	border: 2px solid var(--modspotify_main_fg);
	padding: 10px 10px;
}

.tooltip-arrow-top, .tooltip-arrow-bottom {
	display: none !important;
}

.lyrics-lines-container,
.message-container {
	color: #FFFFFF !important;
}

/* Home page */
.GlueCarousel__grid-wrapper::-webkit-scrollbar-thumb {
	display: none;
}

.GlueCard__info-wrapper,
.Card__info-wrapper {
	margin-bottom: 30px;
}

.card-horizontal-interior-wrapper .card-info-title {
	text-align: start !important;
}

.tl-row.selected:hover .tl-cell {
	background: var(--modspotify_scrollbar_fg_and_selected_row_bg) !important;
}

.GlueTableRow--is-selected {
	background-color: var(--modspotify_scrollbar_fg_and_selected_row_bg) !important;
}

.tracklist-podcast .tl-progress .row-progress__bar {
    background-color: var(--modspotify_main_fg);
}

.Header__background-color{
	background-color: var(--modspotify_main_bg) !important;
}

.Button--style-green,
.button.button-green, .button.button-white {
	border-radius: 4px;
	color: var(--modspotify_main_bg) !important;
}

.glue-page-header:not(.glue-page-header--album):not(.glue-page-header--playlist):not(.glue-page-header--artist):not(.glue-page-header--dailymix):not(.glue-page-header--user):not(.glue-page-header--show)
	.glue-page-header__content-inner .glue-page-header__title-text,
.HomeHeader .Header__content-inner .Header__title-text-inner,
.MadeForYouHeader .Header__content-inner .Header__title-text-inner,
.RecentlyPlayedPage__header .Header__content-inner .Header__title-text-inner {
	background-color: var(--modspotify_main_bg);
	padding: 5px 20px;
	border: 5px solid var(--modspotify_main_fg) !important;
	border-radius: 6px;
	box-shadow: 0 4px 12px 0 rgba(var(--modspotify_rgb_cover_overlay_and_shadow),.2);
	text-transform: uppercase;
}

.glue-page-header.glue-page-header--album .glue-page-header__content-inner .glue-page-header__title,
.glue-page-header.glue-page-header--artist .glue-page-header__content-inner .glue-page-header__title,
.glue-page-header.glue-page-header--dailymix .glue-page-header__content-inner .glue-page-header__title,
.glue-page-header.glue-page-header--playlist .glue-page-header__content-inner .glue-page-header__title {
	margin-top: 10px;
}

span.glue-page-header__title-text {
	color: var(--modspotify_main_fg);
}

.glue-page-header .glue-page-header__content-inner .glue-page-header__button {
	margin-top: 40px;
}

.glue-page-header__content-inner,
.glue-page-header__data,
.glue-page-header__title,
.Header__content-inner,
.Header__data,
.Header__title,
.Header__title-text,
.Header__title-text-inner {
	overflow: visible !important;
}

/*Force player bar to has fixed height*/
.view-player {
	height: var(--bar-height) !important;
	border-top: 0;
}

.view-player .now-playing {
	overflow: unset;
}

.view-player .cover-image-container {
	position: fixed !important;
	left: 0;
	bottom: 0;
}

.view-player .now-playing .cover-image-link,
.view-player .now-playing .cover-image-link figure {
	width: var(--bar-height);
	height: var(--bar-height);
}

#now-playing-image-small .cover-image {
    width: var(--bar-height);
    height: var(--bar-height);
}

.view-player .now-playing .cover-image-link-wrapper {
	flex: 0 1 calc(var(--bar-height) + 10px);
}

.text-container {
	z-index: 3;
}

.view-player .now-playing-container .button-add {
	color: var(--modspotify_main_fg) !important;
}

.progress-container .progress-bar,
.progress-container .inner {
	top: 0 !important;
	margin-top: 0 !important;
	height: 5px;
}

.progress-container .progress-bar-wrapper {
	top: 0 !important;
	height: 5px;
}

.progress-container {
	position: fixed !important;
	width: 100% !important;
	bottom: var(--bar-height) !important;
	margin : 0 !important;
}

.progress-container .inner {
	border-radius: 0 2px 2px 0 !important;
	background-color: var(--modspotify_main_fg) !important;
	box-shadow: 0 2px 2px 0 var(--modspotify_main_fg);
}

.glue-page-header__p2s-details,
.glue-page-header__p2s-followers {
	display: none;
}

.context-menu {
	border: 2px solid var(--modspotify_main_fg);
	box-shadow: 0 4px 12px 0 rgba(var(--modspotify_rgb_cover_overlay_and_shadow),.2);
	border-radius: 7px !important;
	overflow: hidden;
}

#menu-wrapper ::-webkit-scrollbar {
	display: none;
}

#menu-wrapper {
	border-right: 3px solid black;
    border-image: linear-gradient(0deg, transparent , var(--modspotify_scrollbar_fg_and_selected_row_bg) 40%, var(--modspotify_scrollbar_fg_and_selected_row_bg) 60%, transparent 90%) 2 90%;
}

.main-view-wrapper {
	overflow: unset;
}

.Button--style-icon-stroke:after,
.Button--style-icon-stroke:hover:after,
.Button--style-icon-stroke,
.glue-page-header__button .button-icon-with-stroke,
.glue-page-header__button .button-icon-with-stroke::after {
	box-shadow: unset;
}

.glue-page-header.glue-page-header--artist .glue-page-header__label {
	padding-top: 10px;
}

.glue-page-header.glue-page-header--artist.has-custom-image .glue-page-header__label {
	padding-top: 8px;
}

.glue-page-header__content .glue-page-header__label {
	margin-left: -2px;
	z-index: 2;
}

.glue-page-header__label span,
.Header__label span {
	background-color: var(--modspotify_main_fg);
    color: var(--modspotify_main_bg);
    padding: 2px 10px;
}

.glue-page-header__label .header-verified-check {
	background-color: transparent;
}

body.remotebar .view-player .player-bar-wrapper {
	height: 100%;
}

.SidebarListItem--is-active:after,
.RootlistItem--is-active:after,
/* For Linux */ #view-navigation-bar .item.active:after {
	background-color: transparent;
	background-image: linear-gradient(90deg, var(--modspotify_sidebar_indicator_and_hover_button_bg) , transparent);
	opacity: 0.2;
	bottom: unset;
	top: 5%;
	height: 90%;
	width: 100%
}

.Header__image-inner {
	box-shadow: unset;
} 


================================================
FILE: .config/spicetify/config.ini
================================================
[Setting]
overwrite_assets = 0
spotify_path     = /opt/spotify
prefs_path       = /home/will/.config/spotify/prefs
current_theme    = custom_theme
color_scheme     = 
inject_css       = 1
replace_colors   = 1

[Preprocesses]
disable_sentry     = 1
disable_ui_logging = 1
remove_rtl_rule    = 1
expose_apis        = 1

[AdditionalOptions]
lyric_always_show            = 0
lyric_force_no_sync          = 0
new_feedback_ui              = 0
search_in_sidebar            = 0
extensions                   = 
experimental_features        = 0
fastUser_switching           = 0
home                         = 0
visualization_high_framerate = 0
custom_apps                  = 
made_for_you_hub             = 0
radio                        = 0
song_page                    = 0

; DO NOT CHANGE!
[Backup]
version = 1.1.10.546.ge08ef575



================================================
FILE: .scripts/wm.sh
================================================
# Use i3 as the window manager instead of Kwin 
export KDEWM=/usr/bin/i3


================================================
FILE: .zshrc
================================================
# If you come from bash you might have to change your $PATH.
# export PATH=$HOME/bin:/usr/local/bin:$PATH

# Path to your oh-my-zsh installation.
  export ZSH="/home/willmckinnon/.oh-my-zsh"

# Set name of the theme to load --- if set to "random", it will
# load a random theme each time oh-my-zsh is loaded, in which case,
# to know which specific one was loaded, run: echo $RANDOM_THEME
# See https://github.com/robbyrussell/oh-my-zsh/wiki/Themes
ZSH_THEME="agnoster"

# Set list of themes to pick from when loading at random
# Setting this variable when ZSH_THEME=random will cause zsh to load
# a theme from this variable instead of looking in ~/.oh-my-zsh/themes/
# If set to an empty array, this variable will have no effect.
# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" )

# Uncomment the following line to use case-sensitive completion.
# CASE_SENSITIVE="true"

# Uncomment the following line to use hyphen-insensitive completion.
# Case-sensitive completion must be off. _ and - will be interchangeable.
# HYPHEN_INSENSITIVE="true"

# Uncomment the following line to disable bi-weekly auto-update checks.
# DISABLE_AUTO_UPDATE="true"

# Uncomment the following line to automatically update without prompting.
# DISABLE_UPDATE_PROMPT="true"

# Uncomment the following line to change how often to auto-update (in days).
# export UPDATE_ZSH_DAYS=13

# Uncomment the following line if pasting URLs and other text is messed up.
# DISABLE_MAGIC_FUNCTIONS=true

# Uncomment the following line to disable colors in ls.
# DISABLE_LS_COLORS="true"

# Uncomment the following line to disable auto-setting terminal title.
# DISABLE_AUTO_TITLE="true"

# Uncomment the following line to enable command auto-correction.
# ENABLE_CORRECTION="true"

# Uncomment the following line to display red dots whilst waiting for completion.
# COMPLETION_WAITING_DOTS="true"

# Uncomment the following line if you want to disable marking untracked files
# under VCS as dirty. This makes repository status check for large repositories
# much, much faster.
# DISABLE_UNTRACKED_FILES_DIRTY="true"

# Uncomment the following line if you want to change the command execution time
# stamp shown in the history command output.
# You can set one of the optional three formats:
# "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
# or set a custom format using the strftime function format specifications,
# see 'man strftime' for details.
# HIST_STAMPS="mm/dd/yyyy"

# Would you like to use another custom folder than $ZSH/custom?
# ZSH_CUSTOM=/path/to/new-custom-folder

# Which plugins would you like to load?
# Standard plugins can be found in ~/.oh-my-zsh/plugins/*
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.

plugins=(
    git
    zsh-syntax-highlighting
    zsh-autosuggestions
)

# plugin URLs:
# git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
# git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions

source $ZSH/oh-my-zsh.sh

# User configuration

# export MANPATH="/usr/local/man:$MANPATH"

# You may need to manually set your language environment
# export LANG=en_US.UTF-8

# Preferred editor for local and remote sessions
# if [[ -n $SSH_CONNECTION ]]; then
#   export EDITOR='vim'
# else
#   export EDITOR='mvim'
# fi

# Compilation flags
# export ARCHFLAGS="-arch x86_64"

# Set personal aliases, overriding those provided by oh-my-zsh libs,
# plugins, and themes. Aliases can be placed here, though oh-my-zsh
# users are encouraged to define aliases within the ZSH_CUSTOM folder.
# For a full list of active aliases, run `alias`.
#
# Example aliases
# alias zshconfig="mate ~/.zshrc"
# alias ohmyzsh="mate ~/.oh-my-zsh"


================================================
FILE: README.md
================================================
# dotfiles
Collection of Dotfiles for the Lovely Members of r/UnixPorn

![](/screenshot.png "")

## Contents ##
1. [Details](#details)
2. [Dependencies](#dependencies)
3. [Cool Things to Install](#coolinstall)
4. [Recommended Applications](#applications)
5. [Application Theming](#application-theming)
6. [Latte Dock](#dock)

<a name="details"></a>
## Details ##
- **OS**: Arch Linux
- **DE**: KDE Plasma
- **WM**: i3-gaps
- **Theme**: Arc Dark Transparent
- **Icons**: [McMojave-circle](https://store.kde.org/p/1305429/)
- **Shell**: ZSH
- **Terminal**: Konsole
- **Compositor**: [Compton (tryone)](https://aur.archlinux.org/packages/compton-tryone-git/)
- [**Wallpaper**](https://www.fabuloussavers.com/new_wallpaper/anime_sky_clouds_sunset-wallpapers-2560x1440.shtml)

<a name="dependencies"></a>
## Dependencies ##

**[Set Up KDE For i3](https://medium.com/@vishnu_mad/using-i3-window-manager-with-kde-plasma-c2ac70594d8): Best DE + best WM**
  - Must have splash screen set to "None" in KDE settings, otherwise feh will take a long time to set wallpaper
  - Remember to remove KDE shortcuts to avoid conflict with i3 shortcuts
  - KDE slows down computer, remove window effects that no longer apply with i3 / compton to speed it up
    - Settings -> Desktop Behaviour -> Desktop Effects: uncheck everything
    - Settings -> Display and Monitor -> Compositor: uncheck *enable compositor on startup*, set *Tearing Prevention* to *Never*

| Dependency    | Description             | Usage               |
|:-------------:|:-----------------------:| :------------------:|
| `plasma`      | Best DE, imo            | Desktop Environment |
| `i3-gaps`     | Best WM of a generation | Window Manager      |
|[Compton (tryone)](https://aur.archlinux.org/packages/compton-tryone-git/)|Fork of the best window compositor with added blur effects|Window Compositor|
| `rofi`        | Beatiful application launcher | Application Launcher |
|[oh-my-zsh](https://aur.archlinux.org/packages/oh-my-zsh-git/)|ZSH is a better looking bash alternative|Shell|
|[Latte Dock](https://store.kde.org/p/1169519)|Panel|Best dock / panel|
|[Hasklig Font](https://github.com/i-tu/Hasklig)|Beautiful terminal / text editor / IDE font|Monospace Font with Ligature Support|
|[San Francisco Font](https://aur.archlinux.org/packages/otf-san-francisco/)|Minimial, clean font used in macOS|System Font|
|[feh](https://wiki.archlinux.org/index.php/feh)|Sets Background|Background Setter|

<a name="coolinstall"></a>
## Cool Things to Install ##
- [Conky-Cairo](https://aur.archlinux.org/packages/conky-cairo/): Cool Desktop system monitor tool
  - Conky theme in dotfiles is set up to apear on a high DPI laptop display, may appear too large on 1920 x 1080 displays
- [Flashfocus](https://github.com/fennerm/flashfocus): Makes windows flash once when switched to active
- [Install Unimatrix](https://github.com/will8211/unimatrix): Cool terminal matrix text flow animation
- [Install pipes](https://aur.archlinux.org/packages/bash-pipes/): Cool pipe terminal animation
- [Install redshift](https://wiki.archlinux.org/index.php/Redshift): Changes screen tones for evening viewing
- [Unclutter](https://wiki.archlinux.org/index.php/Unclutter): auto hides cursor after set time

<a name="applications"></a>
## Recommended Applications ##
- Terminal: Termite
- File Manager: Dolphin
- Web Browser: Firefox with [Vimium](https://addons.mozilla.org/en-US/firefox/addon/vimium-ff/?src=search), [Stylus](https://addons.mozilla.org/en-US/firefox/addon/styl-us/?src=search), and [Dark Reader](https://addons.mozilla.org/en-US/firefox/addon/darkreader/)

<a name="application-theming"></a>
## Application Theming: ##
  - [Install a Good Looking Custom Transparent vscode](https://github.com/coler706/vscode), and [follow these settings guidelines](https://dev.to/selrond/tips-to-use-vscode-more-efficiently-3h6p)
  - [Set up This Firefox Theme](https://github.com/muckSponge/MaterialFox)
  - [Install Spicetify](https://github.com/khanhas/spicetify-cli): Make spotify sexy, guide below

### Spotify ###
1. Ensure [spicetify](https://github.com/khanhas/spicetify-cli) is installed
2. chown spotify directory: `sudo chown $USER -R /opt/spotify`
3. run `spicetify` once to generate config
4. `spicetify backup apply enable-devtool` to enable devtools
5. Place your color.ini and user.css in `~/.config/spicetify/Themes/<your theme name, whatever you want>` and edit `~/.config/spicetify/config.ini` to reflect this name
6. run `spicetify update restart`

### OhMyZsh ###
- Install Powerline Fonts
  - `git clone https://github.com/powerline/fonts.git`
  - `cd fonts`
  - `./install.sh`
  - set font
- Change theme to agnoster
  -`open ~/.zshrc`
  - Set ZSH_THEME="agnoster" and save the file
- Install Plugins (Note That ~/.zshrc edits are in repo)
  - Syntax Hilighting
    - `git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting`
    - Edit `~/.zshrc`, add `zsh-syntax-highlighting` to the plugins section
    - Reread config `source ~/.zshrc`
  - Autosuggestion
    - `git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions`
    - Edit `~/.zshrc`, add `zsh-autosuggestions` to the plugins section
    - Reread config `source ~/.zshrc`
- [Guide](https://www.freecodecamp.org/news/jazz-up-your-zsh-terminal-in-seven-steps-a-visual-guide-e81a8fd59a38/)

<a name="dock"></a>
## Latte Dock Setup ##
**Top Panel:**
- Mode: panel
- Widgets (in order):
  - Window Title Applet
  - Global Menu
    - GTK / Electron Global Menu Panel Support:
      - `sudo pacman -S appmenu-gtk-module appmenu-gtk-module`
      - `sudo pacman -S appmenu-gtk-module libdbusmenu-glib`
  - Spacer
  - Digital Clock
  - Spacer
  - Application Icons (Drag icons from application launcher to panel to add)
  - System Tray
  - User Switcher
Download .txt
gitextract_g19so2w7/

├── .config/
│   ├── compton.conf
│   ├── conky/
│   │   ├── clock_rings.lua
│   │   └── conkyrc
│   ├── i3/
│   │   └── config
│   ├── rofi/
│   │   ├── config.rasi
│   │   └── config.rasiclear
│   └── spicetify/
│       ├── Themes/
│       │   └── custom_theme/
│       │       ├── color.ini
│       │       └── user.css
│       └── config.ini
├── .scripts/
│   └── wm.sh
├── .zshrc
└── README.md
Condensed preview — 12 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (64K chars).
[
  {
    "path": ".config/compton.conf",
    "chars": 8739,
    "preview": "#################################\n#\n# Backend\n#\n#################################\n\n# Backend to use: \"xrender\" or \"glx\"."
  },
  {
    "path": ".config/conky/clock_rings.lua",
    "chars": 9153,
    "preview": "--[[\nClock Rings by Linux Mint (2011) reEdited by despot77\nThis script draws percentage meters as rings, and also draws "
  },
  {
    "path": ".config/conky/conkyrc",
    "chars": 1295,
    "preview": "# Conky settings #\nbackground yes\nupdate_interval 1\n\ncpu_avg_samples 2\nnet_avg_samples 2\n\noverride_utf8_locale yes\n\ndoub"
  },
  {
    "path": ".config/i3/config",
    "chars": 7726,
    "preview": "# >>> Plasma Integration <<<\n\n# Try to kill the wallpaper set by Plasma (it takes up the entire workspace\n# and hides ev"
  },
  {
    "path": ".config/rofi/config.rasi",
    "chars": 1388,
    "preview": "configuration {\n    display-drun:                   \"Apps\";\n    display-window:                 \"Window\";\n    show-icons"
  },
  {
    "path": ".config/rofi/config.rasiclear",
    "chars": 4414,
    "preview": "configuration {\n/*\tmodi: \"window,run,ssh\";*/\n\twidth: 1920;\n\tlines: 20;\n/*\tcolumns: 1;*/\n/*\tfont: \"mono 12\";*/\n/*\tbw: 1;*"
  },
  {
    "path": ".config/spicetify/Themes/custom_theme/color.ini",
    "chars": 798,
    "preview": "[Base]\n; Light green on Dark Blue background\nmain_fg                               = 00FF9C\nsecondary_fg                "
  },
  {
    "path": ".config/spicetify/Themes/custom_theme/user.css",
    "chars": 16679,
    "preview": ":root {\n\t--bar-height: 120px;\n}\n\n/*Round corner cover image*/\n.card-image,\n.card-placeholder-wrapper,\n.card-image-conten"
  },
  {
    "path": ".config/spicetify/config.ini",
    "chars": 824,
    "preview": "[Setting]\noverwrite_assets = 0\nspotify_path     = /opt/spotify\nprefs_path       = /home/will/.config/spotify/prefs\ncurre"
  },
  {
    "path": ".scripts/wm.sh",
    "chars": 73,
    "preview": "# Use i3 as the window manager instead of Kwin \nexport KDEWM=/usr/bin/i3\n"
  },
  {
    "path": ".zshrc",
    "chars": 3883,
    "preview": "# If you come from bash you might have to change your $PATH.\n# export PATH=$HOME/bin:/usr/local/bin:$PATH\n\n# Path to you"
  },
  {
    "path": "README.md",
    "chars": 5891,
    "preview": "# dotfiles\nCollection of Dotfiles for the Lovely Members of r/UnixPorn\n\n![](/screenshot.png \"\")\n\n## Contents ##\n1. [Deta"
  }
]

About this extraction

This page contains the full source code of the WillPower3309/dotfiles GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 12 files (59.4 KB), approximately 16.9k tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!