guest@dotshare [~/groups/wms/i3] $ ls solarized-everything-everywhere/ | cat

solarized everything everywhere

zylent Mar 01, 2017 (wms/i3)

.Xresources(raw, dl)

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
*customization: -color
Xterm.termName: xterm-256color
URxvt.termName: rxvt-256color
!-------------------------------------------------------------------------------
! Xft settings
!-------------------------------------------------------------------------------

Xft.dpi:                    96
Xft.antialias:              true
Xft.rgba:                   rgb
Xft.hinting:                true
Xft.hintstyle:              hintslight
Xft.lcdfilter:              lcddefault
!-------------------------------------------------------------------------------
! URxvt settings
!-------------------------------------------------------------------------------

URxvt.depth:                32
URxvt.geometry:             90x30
!URxvt.transparent:          true
!URxvt.fading:               0
URxvt.urgentOnBell:         true
URxvt.visualBell:           true
URxvt.loginShell:           true
URxvt.saveLines:            1000000
URxvt.internalBorder:       0
URxvt.lineSpace:            0

! do not scroll with output
URxv*scrollTtyOutput: false
! scroll with relation to buffer
URxvt*scrollWithBuffer: true
! scroll back to bottom with keypress
URxvt*scrollTtyKeypress: true

! Fonts
URxvt.allow_bold:           true 
URxvt.font: xft:Source Code Pro-11:hinting=True;antialias:True
URxvt.boldFont: xft:Source Code Pro-11:bold;hinting=True;antialias:True


! Fix font space
URxvt*letterSpace: -1

! Scrollbar
!URxvt.scrollStyle:          rxvt
URxvt.scrollBar:             false
!URxvt.scrollBar_right:      true 

! Perl extensions
URxvt.perl-ext-common:      default,matcher,keyboard-select
URxvt.matcher.button:       1
URxvt.urlLauncher:          firefox

! Cursor
URxvt.cursorBlink:          true
URxvt.cursorColor:          #657b83
URxvt.cursorUnderline:      false

! keyboard-select
URxvt.keysym.M-r: perl:keyboard-select:activate

! Pointer
URxvt.pointerBlank:         true

!! color stuff

#define S_base03        #002b36
#define S_base02        #073642
#define S_base01        #586e75
#define S_base00        #657b83
#define S_base0         #839496
#define S_base1         #93a1a1
#define S_base2         #eee8d5
#define S_base3         #fdf6e3

*background:            S_base03
*foreground:            S_base0
*fadeColor:             S_base03
*cursorColor:           S_base1
*pointerColorBackground:S_base01
*pointerColorForeground:S_base1

#define S_yellow        #b58900
#define S_orange        #cb4b16
#define S_red           #dc322f
#define S_magenta       #d33682
#define S_violet        #6c71c4
#define S_blue          #268bd2
#define S_cyan          #2aa198
#define S_green         #859900

!! black dark/light
*color0:                S_base02
*color8:                S_base03

!! red dark/light
*color1:                S_red
*color9:                S_orange

!! green dark/light
*color2:                S_green
*color10:               S_base01

!! yellow dark/light
*color3:                S_yellow
*color11:               S_base00

!! blue dark/light
*color4:                S_blue
*color12:               S_base0

!! magenta dark/light
*color5:                S_magenta
*color13:               S_violet

!! cyan dark/light
*color6:                S_cyan
*color14:               S_base1

!! white dark/light
*color7:                S_base2
*color15: S_base3

CLICK TO VIEW

x

userstyle.css(raw, dl)

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
@namespace html url(http://www.w3.org/1999/xhtml);
@namespace xul url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);
/*
    Austin's minimal firefox css
    Note: To enable the urlbar; search this css for:
       "make the url-bar visible" and "adjust margin-top to"
*/


:root {
    /* TAB VARIABLES */
    --bg-light: #073642; --bg-dark: #002b36;
    --fg-light: #93a1a1; --fg-dark: #839496;
    --tab-triangle-correction: 0px;
    --tab-height: 20px; --tab-icon-size: 12px; --tab-strip-margin: 0; --tab-overlap: -5px;
    --tab-fonts: "Source Code Pro",monospace; --tab-font-size: 8pt;
    --tab-text-align: center; /* left | center | right */
    --tab-triangle: none; /* block | none */

    /* URL VARIABLES */
    --url-background: var(--bg-light); --url-color: var(--fg-light);
    --url-height: 22px; --url-right-margin: 10px;
    --url-fonts: "Source Code Pro",monospace; --url-font-size: 8pt;
    --url-text-align: center; /* left | center | right */
    --url-position: fixed; /* absolute == top (under tabs) || fixed == bottom of browser */
    
    margin-bottom: 0 /*var(--url-height)*/ !important;
}

@-moz-document url(chrome://browser/content/browser.xul) {
    /* URL-BAR */
    #back-button, #forward-button, #back-button *, #forward-button *, #identity-box, #urlbar-reload-button, #urlbar-stop-button, #urlbar-go-button,
    #PanelUI-button, #bookmarks-menu-button, #downloads-button, #home-button, #stylish-toolbar-button, #abp-toolbarbutton,
    #notification-popup-box, #new-tab-button, #private-browsing-indicator, #search-container, #nav-bar-overflow-button,
    .tabs-newtab-button, .tab-close-button, .tab-close, .tab-throbber, .tab-background-start, .tab-background-end,
    #window-controls /*, #alltabs-button, #tabview-button, .tab-icon-image */, .tab-icon-image:not([pinned]) { display: none !important; }
    
    #titlebar-content {
       margin-top: 0 !important;
       background-color: var(--bg-dark) !important;
    }
    
    .tab-drop-indicator { margin-bottom: 0 !important; }
    
    #PopupAutoCompleteRichResult {
        display: none;
    }
    
    #nav-bar {
        position: var(--url-position) !important; bottom: 0 !important;
        width: 100% !important; height: var(--url-height) !important;
        min-height: var(--url-height) !important; max-height: var(--url-height) !important;
        margin: 0 0 0 0 !important;
    }
       #nav-bar-customization-target { width: 100% !important; }
          #urlbar-wrapper {
              width: 100% !important; margin-top: -1px !important; /* --- adjust margin-top to ~ -5px if you experience gap --- */
              position: absolute !important; top: 0 !important; left: 0 !important;
              border-bottom: 0px solid var(--bg-light) !important;
          }
             #urlbar {
                 border: none !important; border-radius: 0 !important;
                 margin: 0 0 0 0 !important; padding: 0 2px 0 2px !important;
                 width: calc(100% + var(--url-right-margin)) !important;
                 height: var(--url-height) !important; min-height: var(--url-height) !important;
                 background: var(--url-background) !important; color: var(--url-color) !important;
                 font-family: var(--url-fonts) !important; font-size: var(--url-font-size) !important;
                 text-align: var(--url-text-align) !important;
             }

    /* TABS */
    .tabbrowser-tab[fadein]:not([pinned]) { min-width: 50px !important; max-width: /*180px*/ 100% !important; }
    tab {
        font-family: var(--tab-fonts) !important;
        height: var(--tab-height) !important; min-height: var(--tab-height) !important;
        background: var(--bg-dark) !important; color: var(--fg-dark) !important;
        font-size: var(--tab-font-size); text-shadow: none !important; text-align: var(--tab-text-align) !important;
    }
    
    .tabbrowser-tab label { padding: 0 14px 0 14px !important; }
    
    #tabbrowser-tabs .tabbrowser-tab[pinned]            { width: 38px !important; }
    #tabbrowser-tabs .tabbrowser-tab[pinned] label      { display: none !important; }
    
    #tabbrowser-tabs .tabbrowser-tab .tab-icon-image {
        margin: 0 -10px 0 14px !important;
        width: var(--tab-icon-size) !important;
        height: var(--tab-icon-size) !important;
    }
    
    .tabbrowser-tab *, .tabs-newtab-button * {
        background: none !important; list-style-image: none !important;
        margin: 0 0 0 0 !important; padding: 0 0 0 0 !important;
        -moz-appearance: none !important;
    }
    
    #tabbrowser-tabs .tabbrowser-tab[pinned] .tab-stack { height: var(--tab-height) !important; width: 100% !important; }
    #tabbrowser-tabs .tabbrowser-arrowscrollbox .box-inherit.scrollbox-innerbox { max-height: var(--tab-height) !important; }
    .scrollbutton-up, .scrollbutton-down { border: none !important; }
    
    .tabbrowser-tab[selected="true"] .tab-stack {
        background: var(--bg-light) !important; color: var(--fg-light) !important;
        border-radius: 0px !important; position: relative !important;
        /*border-top: 1px solid #dc52a5 !important;/**/
    }
    
    .tabbrowser-tab[selected="true"]:before { /* Left Triangle (of selected tab) */
        content: '' !important; display: var(--tab-triangle);
        position: absolute !important; top: 0 !important; left: var(--tab-overlap) !important;
        width: 0 !important; height: 0 !important;
        border: none !important; z-index: 2 !important;
        
        border-top: var(--tab-height) solid var(--bg-dark) !important;
        border-right: calc(var(--tab-height)/2) solid var(--bg-light) !important;
        /**/
    }
    
    .tabbrowser-tab[selected="true"]:after { /* Right Triangle (of selected tab) */
        content: '' !important; display: var(--tab-triangle);
        position: absolute !important; top: 0 !important; right: var(--tab-overlap) !important;
        width: 0 !important; height: 0 !important;
        border: none !important; z-index: 2 !important;
        
        border-top: var(--tab-height) solid var(--bg-dark) !important;
        border-left: calc(var(--tab-height)/2) solid var(--bg-light) !important;
        /**/
    }
        
    #TabsToolbar, #tabbrowser-tabs {
        -moz-appearance: none !important;
        height: var(--tab-height) !important; min-height: var(--tab-height)!important;
        margin: 0 var(--tab-strip-margin) !important;
        background: var(--bg-dark) !important;
    }
    
    #TabsToolbar::after { display: none !important; }
    .tabbrowser-tab::before, .tabbrowser-tab::after { background: none !important; opacity: 1 !important; visibility: visible !important; }
    
    /*browser, #navigator-toolbox { -moz-appearance: none !important; background: transparent !important; }*/
    
    #navigator-toolbox::after { height: 0px !important; background: var(--bg-light) !important; }
    #liberator-separator { height: 0px !important; background: var(--bg-light) !important; border-top: 0 !important; }
    
    /* MENUS */
    menuitem + menuseparator, menu + menuseparator/*, .menu-iconic-left*/ { display: none !important; }
    /*menuitem > label { margin-left: var(--tab-height) !important; }*/
    menubar, menubutton, menulist, menu, menuitem {
        font-family: var(--tab-fonts) !important; font-size: var(--tab-font-size);
        height: var(--tab-height) !important;
    }

    /* HIDE ORANGE MENU BUTTON */
    #appmenu-toolbar-button, #appmenu-button-container { display: none !important; }
    
    /* HIDE STATUS BAR */
    #status-bar, #statusbar-display, statuspanel { display: none !important; }
    
    /* PRIVATE BROWSING ICON HIDE */
    #main-window[privatebrowsingmode=temporary] #private-browsing-indicator,
    #main-window[privatebrowsingmode=temporary] #private-browsing-indicator-titlebar { display: none !important; }
    
    /* Vimperator icon style */
    #liberator-statusline:not([customizing="true"]) { background: var(--bg-light); margin: -2px -2px !important; padding: 0 0 !important; height: 24px !important; }
    #liberator-statusline:not([customizing="true"]) :-moz-any(toolbarbutton) { height: 100% !important; }
    #tabview-button {
        list-style-image: url(http://twily.info/img/tabview-button.png?v=2) /* 16x16 px image */ !important;
        -moz-image-region: rect(0, 0, 0, 0) !important;
    }
    
    #liberator-completions { background: var(--bg-dark) !important; }

    /* Tabgroup margin top fix */
    #tab-view-deck #tab-view { margin: 24px 12px 12px 12px !important; }
    #tab-view-deck { background: var(--bg-light) !important; }
    
    window[sizemode="fullscreen"] #liberator-statusline { display: none !important; }
    window[sizemode="fullscreen"] #liberator-bottombar  {
        margin-top: -24px !important;
        transition: 1s ease !important; transition-delay: .3s !important;
    }
}


/* Tab Group Page Style (Ctrl+Shift+E) */
@-moz-document url(chrome://browser/content/tabview.html) {
    #content #bg, #actions, body { background: var(--bg-light) !important; }
    body * { color: var(--fg-light) !important; }
    
    body .groupItem, #content #actions, body .undo {
        background: var(--bg-dark) !important;
        border: 0 !important; border-radius: 0 !important; box-shadow: 0 0 0 0 !important;
    }
    #content #actions {
        opacity: 0 !important; display: none !important; /* block | none */
        transition: .3s ease-out !important;
    }
    #content #actions:hover { opacity: 1 !important; }
    
    body .appTabTrayContainer { border: 0 !important; }
    body .tab, body .tab .thumb {
        box-shadow: 0 0 0 0 !important; border: 0 !important; border-radius: 0 !important;
        background: transparent !important; padding : 0 !important;
    }
    body .tab .favicon { display: none !important; }
    body .groupItem .name { border: 0 !important; }
    body .tab .tab-title { padding-top: 2px !important; }
}

@-moz-document url("chrome://browser/content/browser.xul"),
               url("chrome://global/content/viewSource.xul") {
  .browserContainer findbar,

  #viewSource #FindToolbar { -moz-box-ordinal-group: 0; position: fixed !important; right: 20px; border: 1px solid threedshadow !important; border-top: none !important; background: var(--bg-dark) !important; }
                   body * { color: var(--fg-light) !important; }
}

/* AGENT_SHEET */
@-moz-document url-prefix(http://), url-prefix(https://), url-prefix(chrome://liberator/), url-prefix(file:///) {
    /* SCROLLBAR */
    scrollbar[orient="vertical"], scrollbar thumb[orient="vertical"], 
    scrollbar[orient="horizontal"], scrollbar thumb[orient="horizontal"] {
        display: block !important; /* none = hide || block = show */
    }
}


/* background color around/behind pictures opened in firefox (require html namespace on top) */
@-moz-document regexp("(https?://|file:///)(.*)\\.(jpeg|jpg|gif|png|apng|svg|bmp|webm|webp)") {
    body { background: var(--bg-light) !important; }
    img.decoded { background-color: transparent !important; }
}


/* About:Blank background */
@-moz-document url(about:blank) {
    html,body { background: var(--bg-dark) !important; }
}

/* about:stylish-edit toolbar style */
@-moz-document regexp("about:stylish-edit.*") {
    #main-area, textbox { background: var(--bg-light) !important; }
    textbox, grid, columns, rows, separator { border: 0 !important; }
    
    .devtools-toolbarbutton { background: var(--bg-dark) !important; color: var(--fg-light) !important; }
}

/*----- Fix for white flash on new tab -----*/
tabbrowser tabpanels, #appcontent > #content { background: var(--bg-light) !important; }
 

x

config(raw, dl)

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
#Austin's i3 config

#Modifier key for actions, I use windows
set $mod Mod4

# Font for window titles.
font pango:Source Code Pro 9

# set some nice colors      border		     background	     text
client.focused              #2aa198        #2aa198         #eee895
client.unfocused            #021215        #021215         #586e75
client.focused_inactive     #073642        #073642         #839496
client.urgent               #cb4b16        #dc322f         #fdf6e3
exec xrdb .Xresources


##Startup Programs
#autoname
exec_always ~/.i3/i3-autoname-workspaces.py &

# set bg 
exec --no-startup-id nitrogen --restore
# wireless
exec --no-startup-id nm-applet
# fix keyboard, repeat rate, xcape
exec setxkbmap -option ctrl:nocaps
exec --no-startup-id xcape
exec --no-startup-id xset r rate 400 33
# compton 
exec_always --no-startup-id compton --config ~/.config/compton.conf -b 
# pidgin
exec --no-startup-id pidgin
# clipit
exec clipit

## Floats
for_window [class="^.*"] border pixel 2
for_window [title="Screen Layout Editor"] floating enable 
for_window [title="Application Finder"] floating enable
for_window [instance="Download"] floating enable
for_window [window_role="plugin_ui"] floating enable
for_window [title="Menu Update"] floating enable
for_window [title="___"] floating enable

# Use mouse+$mod to drag floats
floating_modifier $mod

# gaps !only use for i3-gaps!
gaps inner 6
gaps outer 1
smart_gaps on
smart_borders on

# Volume controls, and screen brightness
bindsym XF86AudioRaiseVolume exec amixer -q sset Master 5%+ unmute
bindsym XF86AudioLowerVolume  exec amixer -q sset Master 5%- unmute
bindsym XF86AudioMute exec amixer -q sset Master toggle
bindsym XF86MonBrightnessUp exec xbacklight -inc 20 # increase screen brightness
bindsym XF86MonBrightnessDown exec xbacklight -dec 20 # decrease screen brightness
bindsym XF86Homepage exec firefox
bindsym XF86Tools exec terminator 

##Program Bindings
# start a terminal
bindsym $mod+Return exec urxvt256c-ml

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

# start dmenu/rofi 
#bindsym $mod+d exec dmenu_run -p "k:" -l 10 -fn 'Terminus-12' -nb '#021215' -nf '#657b83' -sb '#002b36' -sf '#93a1a1'
bindsym $mod+d exec "rofi -show combi -combi-modi run,ssh -modi combi"
bindsym $mod+e exec rofi -show window

# quickswitch
bindsym $mod+c exec /usr/bin/quickswitch.py

#fancy screen lock
bindsym $mod+Shift+w exec ~/.i3/pixelate_lock.sh
bindsym XF86Sleep exec ~/.i3/pixelate_lock.sh
#rename the current workspace
bindsym $mod+t exec ~/.i3/rename_workspace.sh

# datepaste
#bindsym $mod+e exec ~/.i3/date.sh

##Key Bindings
# change focus
bindsym $mod+h focus left
bindsym $mod+j focus down
bindsym $mod+k focus up
bindsym $mod+l focus right

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

# split in horizontal orientation
bindsym $mod+g split h
#split in vertical orientation 
bindsym $mod+v split v

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

# change container layout (stacked, tabbed, toggle split)
bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+f 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

# switch to workspace
bindsym $mod+1 workspace number 1
bindsym $mod+2 workspace number 2
bindsym $mod+3 workspace number 3
bindsym $mod+4 workspace number 4
bindsym $mod+5 workspace number 5
bindsym $mod+6 workspace number 6
bindsym $mod+7 workspace number 7
bindsym $mod+8 workspace number 8
bindsym $mod+9 workspace number 9
bindsym $mod+0 workspace number 10

# move focused container to workspace
bindsym $mod+Shift+1 move container to workspace number 1
bindsym $mod+Shift+2 move container to workspace number 2
bindsym $mod+Shift+3 move container to workspace number 3
bindsym $mod+Shift+4 move container to workspace number 4
bindsym $mod+Shift+5 move container to workspace number 5
bindsym $mod+Shift+6 move container to workspace number 6
bindsym $mod+Shift+7 move container to workspace number 7
bindsym $mod+Shift+8 move container to workspace number 8
bindsym $mod+Shift+9 move container to workspace number 9
bindsym $mod+Shift+0 move container to workspace number 10

bindsym $mod+Shift+Right move workspace to output right
bindsym $mod+Shift+Left move workspace to output left

##i3 bindings
# 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+p restart
# exit i3 (logs you out of your X session)
bindsym $mod+Shift+f 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'"
# Jump to urgent window
#bindsym $mod+x [urgent=latest] focus

# display management
set $mode_display Screen Management (w) WORK, (s) SOLO
mode "$mode_display" {
        bindsym w exec ~/.i3/work.sh
        bindsym s exec ~/.i3/notwork.sh

        # back to normal: Enter or Escape
        bindsym Return mode "default"
        bindsym Escape mode "default"

}

bindsym $mod+x mode "$mode_display"

# resize window
set $resize Resize Window 
mode "$resize" {
        bindsym h resize shrink width 10 px or 10 ppt
        bindsym j resize grow height 10 px or 10 ppt
        bindsym k resize shrink height 10 px or 10 ppt
        bindsym l resize grow width 10 px or 10 ppt

        # back to normal: Enter or Escape
        bindsym Return mode "default"
        bindsym Escape mode "default"
}

bindsym $mod+r mode "$resize"

# Start i3bar
bar {
    status_command i3blocks -c ~/.i3/i3blocks.conf
    position top
    height 18
    font pango:DejaVu Sans Mono, FontAwesome 10

	colors {
        background #021215
        statusline #93a1a1
        separator #2aa198

        # Type             border  background font
        focused_workspace  #2aa198 #073642 #eee895
        active_workspace   #073642 #002b36 #839496
        inactive_workspace #002b36 #021215 #586e75
        urgent_workspace   #cb4b16 #dc322f #fdf6e3
    }
}
# vim:filetype=i3
 

x

i3blocks.conf(raw, dl)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# i3blocks config file

# Global properties
align=center
color=#93a1a1
separator_block_width=0
separator=false
markup=pango

[volume]
label=
instance=Master
command=/usr/local/libexec/i3blocks/volume
interval=20
signal=1

[cpu]
label=
command=.i3/cpu_usage.pl
interval=-2

[memory]
label=
command=.i3/memory.sh
interval=10

[network]
command=.i3/bandwidth.sh 
interval=5

[battery]
command=.i3/battery.py
interval=30

[date]
label=
command=echo "<span background=\"#021215\" foreground=\"#2aa198\">$(date '+%A, %d %b %Y') </span>"
interval=3600

[time]
command=echo "<span background=\"#002b36\" foreground=\"#268bd2\">$(date +%H:%M)</span>"
interval=5
markup=pango
 

x

i3-autoname-workspaces.py(raw, dl)

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#!/usr/bin/env python3

# This script listens for i3 events and updates workspace names to show icons
# for running programs.  It contains icons for a few programs, but more can
# easily be added by inserting them into WINDOW_ICONS below.
#
# Dependencies
# * xorg-xprop - install through system package manager
# * i3ipc - install with pip
# * fontawesome - install with pip
#
# Installation:
# * Download this script and place it in ~/.config/i3/ (or anywhere you want)
# * Add "exec_always ~/.config/i3/i3-autoname-workspaces.py &" to your i3 config
# * Restart i3: "$ i3-msg restart"
#
# Configuration:
# The default i3 config's keybingings reference workspaces by name, which is an
# issue when using this script because the "names" are constantaly changing to
# show window icons.  Instead, you'll need to change the keybindings to
# reference workspaces by number.  Change lines like:
#   bindsym $mod+1 workspace 1
# To:
#   bindsym $mod+1 workspace number 1


import i3ipc
import subprocess as proc
import re
import signal
import sys
import fontawesome as fa

from util import *


# Add icons here for common programs you use.  The keys are the X window class
# (WM_CLASS) names (lower-cased) and the icons can be any text you want to
# display.
#
# Most of these are character codes for font awesome:
#   http://fortawesome.github.io/Font-Awesome/icons/
#
# If you're not sure what the WM_CLASS is for your application, you can use
# xprop (https://linux.die.net/man/1/xprop). Run `xprop | grep WM_CLASS`
# then click on the application you want to inspect.
WINDOW_ICONS = {
    'urxvt256c-ml': fa.icons['terminal'],
    'google-chrome': fa.icons['chrome'],
    'subl': fa.icons['code'],
    'spotify': fa.icons['spotify'], 
    'firefox': fa.icons['firefox'],
    'libreoffice': fa.icons['file-text-o'],
    'feh': fa.icons['picture-o'],
    'zathura': fa.icons['file-pdf-o'],
    'thunar': fa.icons['files-o'],
    'pcmanfm': fa.icons['files-o'],
    'pidgin': fa.icons['commenting'],
    'steam': fa.icons['steam'],
    'zenity': fa.icons['window-maximize'],
    'rambox': fa.icons['paper-plane'],
    'remmina': fa.icons['desktop'],
}

# This icon is used for any application not in the list above
DEFAULT_ICON = '*'


# Returns an array of the values for the given property from xprop.  This
# requires xorg-xprop to be installed.
def xprop(win_id, property):
    try:
        prop = proc.check_output(['xprop', '-id', str(win_id), property], stderr=proc.DEVNULL)
        prop = prop.decode('utf-8')
        return re.findall('"([^"]+)"', prop)
    except proc.CalledProcessError as e:
        print("Unable to get property for window '%d'" % win_id)
        return None

def icon_for_window(window):
    classes = xprop(window.window, 'WM_CLASS')
    if classes != None and len(classes) > 0:
        for cls in classes:
            cls = cls.lower() # case-insensitive matching
            if cls in WINDOW_ICONS:
                return WINDOW_ICONS[cls]
        print('No icon available for window with classes: %s' % str(classes))
    return DEFAULT_ICON

# renames all workspaces based on the windows present
# also renumbers them in ascending order, with one gap left between monitors
# for example: workspace numbering on two monitors: [1, 2, 3], [5, 6]
def rename_workspaces(i3):
    ws_infos = i3.get_workspaces()
    prev_output = ""
    n = 1
    for ws_index, workspace in enumerate(i3.get_tree().workspaces()):
        ws_info = ws_infos[ws_index]

        name_parts = parse_workspace_name(workspace.name)
        name_parts['icons'] = ' '.join([icon_for_window(w) for w in workspace.leaves()])

        # as we enumerate, leave one gap between each workspace
        if ws_info.output != prev_output and prev_output != "":
            n += 1 # leave a gap
        prev_output = ws_info.output

        # renumber workspace
        name_parts['num'] = n
        n += 1

        new_name = construct_workspace_name(name_parts)
        i3.command('rename workspace "%s" to "%s"' % (workspace.name, new_name))

# rename workspaces to just numbers and shortnames.
# called on exit to indicate that this script is no longer running.
def undo_window_renaming(i3):
    for workspace in i3.get_tree().workspaces():
        name_parts = parse_workspace_name(workspace.name)
        name_parts['icons'] = None
        new_name = construct_workspace_name(name_parts)
        i3.command('rename workspace "%s" to "%s"' % (workspace.name, new_name))
    i3.main_quit()
    sys.exit(0)


if __name__ == '__main__':
    i3 = i3ipc.Connection()

    # exit gracefully when ctrl+c is pressed
    for sig in [signal.SIGINT, signal.SIGTERM]:
        signal.signal(sig, lambda signal, frame: undo_window_renaming(i3))

    # call rename_workspaces() for relevant window events
    def window_event_handler(i3, e):
        if e.change in ['new', 'close', 'move']:
            rename_workspaces(i3)
    i3.on('window', window_event_handler)

    rename_workspaces(i3)

i3.main()
 

x

i3-rename-workspace.py(raw, dl)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/usr/bin/env python3

## This script is used to dynamically rename workspace names in i3.
# When run, it presents a text field popup using zenity, in which you can type a
# new name for the workspace. It is compatible with the i3-autoname-workspaces
# script and renames only the "shortname" of the workspace, keeping the number
# and window icons in place.
#
# Note that this script can be used without i3-autoname-workspaces.py
#
# Dependencies:
# * zenity - install with system package manager
# * i3ipc - install with pip

import i3ipc
import logging
import subprocess as proc
import re
import sys

from util import *


logging.basicConfig(level=logging.INFO)

i3 = i3ipc.Connection()
workspace = [w for w in i3.get_workspaces() if w.focused][0]
name_parts = parse_workspace_name(workspace.name)
logging.info("Current workspace shortname: '%s'" % name_parts['shortname'])

try:
    # use zenity to show a text box asking the user for a new workspace name
    prompt_title = "Rename Workspace:" if name_parts['shortname'] == None else "Rename Workspace '%s':" % name_parts['shortname']
    response = proc.check_output(['zenity', '--entry', "--text=%s" % prompt_title])
    new_shortname = response.decode('utf-8').strip()
    logging.info("New name from user: '%s'" % new_shortname)

    if ' ' in new_shortname:
        msg = "No spaces allowed in workspace names"
        logging.error(msg)
        proc.check_call(['zenity', '--error', '--text=%s' % msg])
        sys.exit(1)

except proc.CalledProcessError as e:
    logging.info("Cancelled by user, exiting...")

name_parts['shortname'] = new_shortname
new_name = construct_workspace_name(name_parts)

# get the current workspace and rename it
workspace = [w for w in i3.get_workspaces() if w.focused][0]
res = i3.command('rename workspace "%s" to "%s"' % (workspace.name, new_name))
 

x

pixelate_lock.sh(raw, dl)

1
2
3
4
5
6
7
8
#!/usr/bin/env sh

image_file=/tmp/screen_lock.png
resolution=$(xdpyinfo | grep dimensions | awk '{print $2}')
filters='noise=alls=20,scale=iw*.05:-1,scale=iw*20:-1:flags=neighbor' 
ffmpeg -y -loglevel 0 -s "$resolution" -f x11grab -i $DISPLAY -vframes 1 \
  -vf "$filters" "$image_file"
i3lock -e -i "$image_file"
 

x

compton.conf(raw, dl)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# Config wireframe stolen from here: https://github.com/nim-/dotfiles/blob/master/.config/compton.conf

#make compton great again
vsync = "drm";
refresh-rate = 60;

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

# Exclude conditions for shadows.
# Fix dual shadow on some gtk3 powered applications: "_GTK_FRAME_EXTENTS@:c"
shadow-exclude = [
	       "n:e:Notification",
	       "class_g = 'Gnome-screenshot'",
	       "class_g = 'Gnome-control-center'",
	       "class_g = 'Nautilus'"
	       ];
	       #"_GTK_FRAME_EXTENTS@:c"
	       
shadow-ignore-shaped = false;	# Avoid drawing shadow on all shaped windows (see also: --detect-rounded-corners)

# Opacity
shadow-opacity = 0.7;			# The translucency for shadows. (default .75)
active-opacity = 1.0;
menu-opacity = 1.0;			# The opacity for menus. (default 1.0)
inactive-opacity = 0.9;		# Opacity of inactive windows. (0.1 - 1.0)

blur-background-exclude = [ "window_type = 'dock'", "window_type = 'desktop'" ]; # Exclude conditions for background blur.

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

# Other
mark-wmwin-focused = true;	# Try to detect WM windows and mark them as active.
mark-ovredir-focused = true;
detect-rounded-corners = true;

# Window type settings
wintypes:
{
  tooltip = { fade = true; shadow = false; opacity = 0.75; };
};
 

x

dunstrc(raw, dl)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
[global]
    font = "Source Code Pro 8"
    allow_markup = yes
    format = "<b>%s</b>\n%b"
    sort = yes
    indicate_hidden = yes
    alignment = center
    bounce_freq = 0
    show_age_threshold = 60
    word_wrap = yes
    ignore_newline = no
    geometry = "200x5-6+30"
    transparency = 0
    idle_threshold = 120
    monitor = 0
    follow = keyboard
    sticky_history = yes
    line_height = 0
    separator_height = 2
    padding = 8
    horizontal_padding = 8
    separator_color = "#2aa198"
    startup_notification = false
    # https://github.com/knopwob/dunst/issues/26#issuecomment-36159395
    #icon_position = left
    #icon_folders = /usr/share/icons/elementary/actions/16/
    dmenu = /usr/bin/dmenu -p dunst:
    browser = /usr/bin/firefox -new-tab

[frame]
    width = 1
    color = "#2aa198"

[shortcuts]
    close = ctrl+space
    close_all = ctrl+shift+space
    history = ctrl+grave
    context = ctrl+shift+period

[urgency_low]
    background = "#002b36"
    foreground = "#93a1a1"
    timeout = 5

[urgency_normal]
    background = "#002b36"
    foreground = "#93a1a1"
    timeout = 20

[urgency_critical]
    background = "#002b36"
    foreground = "#93a1a1"
    timeout = 20
 

x

rofi_config(raw, dl)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#define bg   #32302f
#define fg   #ebdbb2
#define blk  #282828
#define bblk #928374
#define dred #cc241d
#define red  #fb4934
#define dgrn #98971a
#define grn  #b8bb26
#define dylw #d79921
#define ylw  #fabd2f
#define dblu #458588
#define blu  #83a598
#define dmag #b16286
#define mag  #d3869b
#define dcyn #689d6a
#define cyn  #8ec07c
#define dwht #a89984
#define wht #ebdbb2

rofi.bw:              2
rofi.color-enabled:   true
rofi.columns:         1
rofi.eh:              1
rofi.font:            Source Code Pro 12
rofi.fullscreen:      no
rofi.hide-scrollbar:  true
rofi.line-margin:     5
rofi.lines:           3
rofi.separator-style: none
rofi.sidebar-mode:    false
rofi.terminal:        terminator
rofi.ssh-client: ssh
rofi.ssh-command : {terminal} -e "{ssh-client} {host}"

rofi.color-normal: #20002b36, #839496, #20002b36, #40073642, #93a1a1
rofi.color-urgent: #BF002b36, #BF839496, #BF002b36, #BF073642, #BF93a1a1 
rofi.color-active: #BF002b36, #BF839496, #BF002b36, #BF073642, #BF93a1a1
rofi.color-window: #E6002b36, #BF2aa198, #BF2aa198
 

x

Notes

austins dotfiles

requires:
- i3-gaps (or i3 if you disable the gaps lines)
- i3-blocks
- nitrogen
- nm-applet
- urxvt256c
- xcape
- compton
- pidgin
- clipit
- acpi
- dunst
- vimfx for firefox
- stylish for firefox
- rofi (dmenu line in i3 config commented if you like dmenu)
- ffmpeg (used in lock script)
- i3ipc (python2 and python3)
- fontawesome (python2, python3, and system)
- source code pro (system)
- urxvt keyboard-select plugin (install to /usr/lib/urxvt/perl)
- vundle for vim (:BundleInstall on the plugins)