├── .config ├── bspwm │ └── bspwmrc ├── compton │ └── compton.conf ├── rofi │ └── config ├── sxhkdc │ └── sxhkdrc └── termite │ └── config └── README.md /.config/bspwm/bspwmrc: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | 3 | sxhkd & 4 | 5 | bspc monitor -d I II III IV V VI VII 6 | 7 | bspc config border_width 1 8 | bspc config window_gap 10 9 | 10 | bspc config top_padding 35 11 | bspc config left_padding 2 12 | bspc config right_padding 2 13 | bspc config bottom_padding 2 14 | 15 | bspc config split_ratio 0.52 16 | bspc config borderless_monocle true 17 | bspc config gapless_monocle false 18 | bspc config focus_follows_pointer true 19 | 20 | bspc config pointer_modifier mod1 21 | bspc config pointer_action3 resize_side 22 | bspc config pointer_action3 resize_corner 23 | bspc config pointer_action1 move 24 | 25 | bspc rule -a Docky layer=above manage=on border=off focus=off locked=on 26 | bspc rule -a xfce4-notes floating=on 27 | bspc rule -a Firefox desktop=^1 follow=on 28 | bspc rule -a tellico desktop=^2 follow=on 29 | bspc rule -a quassel desktop=^6 follow=on 30 | bspc rule -a deluge desktop=^7 follow=on 31 | -------------------------------------------------------------------------------- /.config/compton/compton.conf: -------------------------------------------------------------------------------- 1 | # Thank you code_nomad: http://9m.no/ꪯ鵞 2 | 3 | ################################# 4 | # 5 | # Backend 6 | # 7 | ################################# 8 | 9 | # Backend to use: "xrender" or "glx". 10 | # GLX backend is typically much faster but depends on a sane driver. 11 | backend = "glx"; 12 | 13 | ################################# 14 | # 15 | # GLX backend 16 | # 17 | ################################# 18 | 19 | glx-no-stencil = true; 20 | 21 | # GLX backend: Copy unmodified regions from front buffer instead of redrawing them all. 22 | # My tests with nvidia-drivers show a 10% decrease in performance when the whole screen is modified, 23 | # but a 20% increase when only 1/4 is. 24 | # My tests on nouveau show terrible slowdown. 25 | # Useful with --glx-swap-method, as well. 26 | glx-copy-from-front = false; 27 | 28 | # GLX backend: Use MESA_copy_sub_buffer to do partial screen update. 29 | # My tests on nouveau shows a 200% performance boost when only 1/4 of the screen is updated. 30 | # May break VSync and is not available on some drivers. 31 | # Overrides --glx-copy-from-front. 32 | # glx-use-copysubbuffermesa = true; 33 | 34 | # GLX backend: Avoid rebinding pixmap on window damage. 35 | # Probably could improve performance on rapid window content changes, but is known to break things on some drivers (LLVMpipe). 36 | # Recommended if it works. 37 | # glx-no-rebind-pixmap = true; 38 | 39 | 40 | # GLX backend: GLX buffer swap method we assume. 41 | # Could be undefined (0), copy (1), exchange (2), 3-6, or buffer-age (-1). 42 | # undefined is the slowest and the safest, and the default value. 43 | # copy is fastest, but may fail on some drivers, 44 | # 2-6 are gradually slower but safer (6 is still faster than 0). 45 | # Usually, double buffer means 2, triple buffer means 3. 46 | # buffer-age means auto-detect using GLX_EXT_buffer_age, supported by some drivers. 47 | # Useless with --glx-use-copysubbuffermesa. 48 | # Partially breaks --resize-damage. 49 | # Defaults to undefined. 50 | glx-swap-method = "undefined"; 51 | 52 | ################################# 53 | # 54 | # Shadows 55 | # 56 | ################################# 57 | 58 | # Enabled client-side shadows on windows. 59 | shadow = true; 60 | # Don't draw shadows on DND windows. 61 | no-dnd-shadow = true; 62 | # Avoid drawing shadows on dock/panel windows. 63 | no-dock-shadow = true; 64 | # Zero the part of the shadow's mask behind the window. Fix some weirdness with ARGB windows. 65 | clear-shadow = true; 66 | # The blur radius for shadows. (default 12) 67 | shadow-radius = 12; 68 | # The left offset for shadows. (default -15) 69 | shadow-offset-x = -15; 70 | # The top offset for shadows. (default -15) 71 | shadow-offset-y = -15; 72 | # The translucency for shadows. (default .75) 73 | shadow-opacity = 0.75; 74 | 75 | # Set if you want different colour shadows 76 | # shadow-red = 0.0; 77 | # shadow-green = 0.0; 78 | # shadow-blue = 0.0; 79 | 80 | # 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 81 | # (most applications are fine, only apps that do weird things with xshapes or argb are affected). 82 | # 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 alt tab switcher. 83 | shadow-exclude = [ 84 | "! name~=''", 85 | "name = 'Notification'", 86 | "name = 'Plank'", 87 | "name = 'Docky'", 88 | "name = 'Kupfer'", 89 | "name = 'xfce4-notifyd'", 90 | "name *= 'VLC'", 91 | "name *= 'compton'", 92 | "name *= 'Chromium'", 93 | "name *= 'Chrome'", 94 | "class_g = 'Conky'", 95 | "class_g = 'Kupfer'", 96 | "class_g = 'Synapse'", 97 | "class_g ?= 'Notify-osd'", 98 | "class_g ?= 'Cairo-dock'", 99 | "class_g ?= 'Xfce4-notifyd'", 100 | "class_g ?= 'Xfce4-power-manager'", 101 | "_GTK_FRAME_EXTENTS@:c" 102 | ]; 103 | # Avoid drawing shadow on all shaped windows (see also: --detect-rounded-corners) 104 | shadow-ignore-shaped = false; 105 | 106 | ################################# 107 | # 108 | # Opacity 109 | # 110 | ################################# 111 | 112 | menu-opacity = 1; 113 | inactive-window-opacity = 1; 114 | inactive-opacity = 0.65; 115 | active-opacity = 1; 116 | frame-opacity = 1; 117 | inactive-opacity-override = false; 118 | alpha-step = 0.06; 119 | 120 | # Dim inactive windows. (0.0 - 1.0) 121 | # inactive-dim = 0.2; 122 | # Do not let dimness adjust based on window opacity. 123 | # inactive-dim-fixed = true; 124 | # Blur background of transparent windows. Bad performance with X Render backend. GLX backend is preferred. 125 | # blur-background = true; 126 | # Blur background of opaque windows with transparent frames as well. 127 | # blur-background-frame = true; 128 | # Do not let blur radius adjust based on window opacity. 129 | blur-background-fixed = false; 130 | blur-background-exclude = [ 131 | "window_type = 'dock'", 132 | "window_type = 'desktop'" 133 | ]; 134 | 135 | ################################# 136 | # 137 | # Fading 138 | # 139 | ################################# 140 | 141 | # Fade windows during opacity changes. 142 | fading = true; 143 | # The time between steps in a fade in milliseconds. (default 10). 144 | fade-delta = 7; 145 | # Opacity change between steps while fading in. (default 0.028). 146 | fade-in-step = 0.03; 147 | # Opacity change between steps while fading out. (default 0.03). 148 | fade-out-step = 0.03; 149 | # Fade windows in/out when opening/closing 150 | # no-fading-openclose = true; 151 | 152 | # Specify a list of conditions of windows that should not be faded. 153 | fade-exclude = [ ]; 154 | 155 | ################################# 156 | # 157 | # Other 158 | # 159 | ################################# 160 | 161 | # Try to detect WM windows and mark them as active. 162 | mark-wmwin-focused = false; 163 | # Mark all non-WM but override-redirect windows active (e.g. menus). 164 | mark-ovredir-focused = false; 165 | # Use EWMH _NET_WM_ACTIVE_WINDOW to determine which window is focused instead of using FocusIn/Out events. 166 | # Usually more reliable but depends on a EWMH-compliant WM. 167 | # use-ewmh-active-win = false; 168 | # Detect rounded corners and treat them as rectangular when --shadow-ignore-shaped is on. 169 | detect-rounded-corners = true; 170 | 171 | # Detect _NET_WM_OPACITY on client windows, useful for window managers not passing _NET_WM_OPACITY of client windows to frame windows. 172 | # This prevents opacity being ignored for some apps. 173 | # For example without this enabled my xfce4-notifyd is 100% opacity no matter what. 174 | detect-client-opacity = true; 175 | 176 | # Specify refresh rate of the screen. 177 | # If not specified or 0, compton will try detecting this with X RandR extension. 178 | refresh-rate = 0; 179 | 180 | # Set VSync method. VSync methods currently available: 181 | # none: No VSync 182 | # drm: VSync with DRM_IOCTL_WAIT_VBLANK. May only work on some drivers. 183 | # opengl: Try to VSync with SGI_video_sync OpenGL extension. Only work on some drivers. 184 | # opengl-oml: Try to VSync with OML_sync_control OpenGL extension. Only work on some drivers. 185 | # 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. 186 | # opengl-mswc: Try to VSync with MESA_swap_control OpenGL extension. Basically the same as opengl-swc above, except the extension we use. 187 | # (Note some VSync methods may not be enabled at compile time.) 188 | vsync = "opengl-swc"; 189 | 190 | # Enable DBE painting mode, intended to use with VSync to (hopefully) eliminate tearing. 191 | # Reported to have no effect, though. 192 | dbe = false; 193 | # Painting on X Composite overlay window. Recommended. 194 | paint-on-overlay = true; 195 | 196 | # Limit compton to repaint at most once every 1 / refresh_rate second to boost performance. 197 | # This should not be used with --vsync drm/opengl/opengl-oml as they essentially does --sw-opti's job already, 198 | # unless you wish to specify a lower refresh rate than the actual value. 199 | sw-opti = true; 200 | 201 | # Unredirect all windows if a full-screen opaque window is detected, to maximize performance for full-screen windows, like games. 202 | # Known to cause flickering when redirecting/unredirecting windows. 203 | # paint-on-overlay may make the flickering less obvious. 204 | unredir-if-possible = true; 205 | 206 | # Specify a list of conditions of windows that should always be considered focused. 207 | focus-exclude = ["name = 'rofi'"]; 208 | 209 | # Use WM_TRANSIENT_FOR to group windows, and consider windows in the same group focused at the same time. 210 | detect-transient = true; 211 | # Use WM_CLIENT_LEADER to group windows, and consider windows in the same group focused at the same time. 212 | # WM_TRANSIENT_FOR has higher priority if --detect-transient is enabled, too. 213 | detect-client-leader = true; 214 | 215 | ################################# 216 | # 217 | # Window type settings 218 | # 219 | ################################# 220 | 221 | wintypes: 222 | { 223 | tooltip = 224 | { 225 | # fade: Fade the particular type of windows. 226 | fade = true; 227 | # shadow: Give those windows shadow 228 | shadow = false; 229 | # opacity: Default opacity for the type of windows. 230 | opacity = 0.85; 231 | # focus: Whether to always consider windows of this type focused. 232 | focus = true; 233 | }; 234 | }; 235 | -------------------------------------------------------------------------------- /.config/rofi/config: -------------------------------------------------------------------------------- 1 | ! ------------------------------------------------------------------------------ 2 | ! Color theme 3 | ! ------------------------------------------------------------------------------ 4 | rofi.color-enabled: true 5 | rofi.color-window: #000000, #07ff00, #07ff00 6 | rofi.color-normal: #000000, #07ff00, #000000, #07ff00, #000000 7 | rofi.color-active: #000000, #ffffff, #000000, #ffffff, #000000 8 | rofi.color-urgent: #000000, #dc322f, #000000, #dc322f, #000000 9 | 10 | ! ------------------------------------------------------------------------------ 11 | ! Font 12 | ! ------------------------------------------------------------------------------ 13 | rofi.font: Hack Regular 12 14 | 15 | ! ------------------------------------------------------------------------------ 16 | ! Run modes displayed at the bottom of window 17 | ! ------------------------------------------------------------------------------ 18 | rofi.sidebar-mode: true 19 | 20 | ! ------------------------------------------------------------------------------ 21 | ! Separator style 22 | ! ------------------------------------------------------------------------------ 23 | rofi.separator-style: solid 24 | 25 | ! ------------------------------------------------------------------------------ 26 | ! Configuration Options 27 | ! ------------------------------------------------------------------------------ 28 | ! "Enabled modi" Set from: Default 29 | ! rofi.modi: window,run,ssh 30 | ! "Window width" Set from: Default 31 | ! rofi.width: 50 32 | ! "Number of lines" Set from: Default 33 | ! rofi.lines: 15 34 | ! "Opacity" 35 | ! rofi.opacity: 100 36 | ! "Number of columns" Set from: Default 37 | ! rofi.columns: 1 38 | ! "Font to use" Set from: Default 39 | ! rofi.font: mono 12 40 | ! "Color scheme for normal row" Set from: Default 41 | ! rofi.color-normal: #fdf6e3,#002b36,#eee8d5,#586e75,#eee8d5 42 | ! "Color scheme for urgent row" Set from: Default 43 | ! rofi.color-urgent: #fdf6e3,#dc322f,#eee8d5,#dc322f,#fdf6e3 44 | ! "Color scheme for active row" Set from: Default 45 | ! rofi.color-active: #fdf6e3,#268bd2,#eee8d5,#268bd2,#fdf6e3 46 | ! "Color scheme window" Set from: Default 47 | ! rofi.color-window: #fdf6e3,#002b36 48 | ! "Border width" Set from: Default 49 | ! rofi.bw: 1 50 | ! "Location on screen" Set from: Default 51 | ! rofi.location: 0 52 | ! "Padding" Set from: Default 53 | ! rofi.padding: 5 54 | ! "Y-offset relative to location" Set from: Default 55 | ! rofi.yoffset: 0 56 | ! "X-offset relative to location" Set from: Default 57 | ! rofi.xoffset: 0 58 | ! "Always show number of lines" Set from: Default 59 | ! rofi.fixed-num-lines: true 60 | ! "Terminal to use" Set from: Default 61 | ! rofi.terminal: rofi-sensible-terminal 62 | ! "Ssh client to use" Set from: Default 63 | ! rofi.ssh-client: ssh 64 | ! "Ssh command to execute" Set from: Default 65 | ! rofi.ssh-command: {terminal} -e {ssh-client} {host} 66 | ! "Run command to execute" Set from: Default 67 | ! rofi.run-command: {cmd} 68 | ! "Command to get extra run targets" Set from: Default 69 | ! rofi.run-list-command: 70 | ! "Run command to execute that runs in shell" Set from: Default 71 | ! rofi.run-shell-command: {terminal} -e {cmd} 72 | ! "Command executed on accep-entry-custom for window modus" Set from: Default 73 | ! rofi.window-command: xkill -id {window} 74 | ! "Disable history in run/ssh" Set from: Default 75 | ! rofi.disable-history: false 76 | ! "Use levenshtein sorting" Set from: Default 77 | ! rofi.levenshtein-sort: false 78 | ! "Set case-sensitivity" Set from: Default 79 | ! rofi.case-sensitive: false 80 | ! "Cycle through the results list" Set from: Default 81 | ! rofi.cycle: true 82 | ! "Enable sidebar-mode" Set from: Default 83 | ! rofi.sidebar-mode: false 84 | ! "Row height (in chars)" Set from: Default 85 | ! rofi.eh: 1 86 | ! "Enable auto select mode" Set from: Default 87 | ! rofi.auto-select: false 88 | ! "Parse hosts file for ssh mode" Set from: Default 89 | ! rofi.parse-hosts: false 90 | ! "Parse known_hosts file for ssh mode" Set from: Default 91 | ! rofi.parse-known-hosts: true 92 | ! "Set the modi to combine in combi mode" Set from: Default 93 | ! rofi.combi-modi: window,run 94 | ! "Set the matching algorithm. (normal, regex, glob, fuzzy)" Set from: Default 95 | ! rofi.matching: normal 96 | ! "Tokenize input string" Set from: Default 97 | ! rofi.tokenize: true 98 | ! "Monitor id to show on" Set from: Default 99 | ! rofi.m: -5 100 | ! "Margin between rows" Set from: Default 101 | ! rofi.line-margin: 2 102 | ! "Padding within rows" Set from: Default 103 | ! rofi.line-padding: 1 104 | ! "Pre-set filter" Set from: Default 105 | ! rofi.filter: 106 | ! "Separator style (none, dash, solid)" Set from: Default 107 | ! rofi.separator-style: dash 108 | ! "Hide scroll-bar" Set from: Default 109 | ! rofi.hide-scrollbar: false 110 | ! "Fullscreen" Set from: Default 111 | ! rofi.fullscreen: true 112 | ! "Fake transparency" Set from: Default 113 | ! rofi.fake-transparency: false 114 | ! "DPI" Set from: Default 115 | ! rofi.dpi: -1 116 | ! "Threads to use for string matching" Set from: Default 117 | ! rofi.threads: 0 118 | ! "Scrollbar width" Set from: Default 119 | ! rofi.scrollbar-width: 8 120 | ! "Scrolling method. (0: Page, 1: Centered)" Set from: Default 121 | ! rofi.scroll-method: 0 122 | ! "Background to use for fake transparency. (background or screenshot)" Set from: Default 123 | ! rofi.fake-background: screenshot 124 | ! "Window Format. w (desktop name), t (title), n (name), r (role), c (class)" Set from: Default 125 | ! rofi.window-format: {w} {c} {t} 126 | ! "Click outside the window to exit" Set from: Default 127 | ! rofi.click-to-exit: true 128 | ! "Indicate how it match by underlining it." Set from: Default 129 | ! rofi.show-match: true 130 | ! "Pidfile location" Set from: Default 131 | ! rofi.pid: /run/user/1000/rofi.pid 132 | ! "Paste primary selection" Set from: Default 133 | ! rofi.kb-primary-paste: Control+V,Shift+Insert 134 | ! "Paste clipboard" Set from: Default 135 | ! rofi.kb-secondary-paste: Control+v,Insert 136 | ! "Clear input line" Set from: Default 137 | ! rofi.kb-clear-line: Control+w 138 | ! "Beginning of line" Set from: Default 139 | ! rofi.kb-move-front: Control+a 140 | ! "End of line" Set from: Default 141 | ! rofi.kb-move-end: Control+e 142 | ! "Move back one word" Set from: Default 143 | ! rofi.kb-move-word-back: Alt+b 144 | ! "Move forward one word" Set from: Default 145 | ! rofi.kb-move-word-forward: Alt+f 146 | ! "Move back one char" Set from: Default 147 | ! rofi.kb-move-char-back: Left,Control+b 148 | ! "Move forward one char" Set from: Default 149 | ! rofi.kb-move-char-forward: Right,Control+f 150 | ! "Delete previous word" Set from: Default 151 | ! rofi.kb-remove-word-back: Control+Alt+h,Control+BackSpace 152 | ! "Delete next word" Set from: Default 153 | ! rofi.kb-remove-word-forward: Control+Alt+d 154 | ! "Delete next char" Set from: Default 155 | ! rofi.kb-remove-char-forward: Delete,Control+d 156 | ! "Delete previous char" Set from: Default 157 | ! rofi.kb-remove-char-back: BackSpace,Control+h 158 | ! "Delete till the end of line" Set from: Default 159 | ! rofi.kb-remove-to-eol: Control+k 160 | ! "Delete till the start of line" Set from: Default 161 | ! rofi.kb-remove-to-sol: Control+u 162 | ! "Accept entry" Set from: Default 163 | ! rofi.kb-accept-entry: Control+j,Control+m,Return,KP_Enter 164 | ! "Use entered text as command (in ssh/run modi)" Set from: Default 165 | ! rofi.kb-accept-custom: Control+Return 166 | ! "Use alternate accept command." Set from: Default 167 | ! rofi.kb-accept-alt: Shift+Return 168 | ! "Delete entry from history" Set from: Default 169 | ! rofi.kb-delete-entry: Shift+Delete 170 | ! "Switch to the next mode." Set from: Default 171 | ! rofi.kb-mode-next: Shift+Right,Control+Tab 172 | ! "Switch to the previous mode." Set from: Default 173 | ! rofi.kb-mode-previous: Shift+Left,Control+Shift+Tab 174 | ! "Go to the previous column" Set from: Default 175 | ! rofi.kb-row-left: Control+Page_Up 176 | ! "Go to the next column" Set from: Default 177 | ! rofi.kb-row-right: Control+Page_Down 178 | ! "Select previous entry" Set from: Default 179 | ! rofi.kb-row-up: Up,Control+p,Shift+Tab,Shift+ISO_Left_Tab 180 | ! "Select next entry" Set from: Default 181 | ! rofi.kb-row-down: Down,Control+n 182 | ! "Go to next row, if one left, accept it, if no left next mode." Set from: Default 183 | ! rofi.kb-row-tab: Tab 184 | ! "Go to the previous page" Set from: Default 185 | ! rofi.kb-page-prev: Page_Up 186 | ! "Go to the next page" Set from: Default 187 | ! rofi.kb-page-next: Page_Down 188 | ! "Go to the first entry" Set from: Default 189 | ! rofi.kb-row-first: Home,KP_Home 190 | ! "Go to the last entry" Set from: Default 191 | ! rofi.kb-row-last: End,KP_End 192 | ! "Set selected item as input text" Set from: Default 193 | ! rofi.kb-row-select: Control+space 194 | ! "Take a screenshot of the rofi window" Set from: Default 195 | ! rofi.kb-screenshot: Alt+S 196 | ! "Toggle case sensitivity" Set from: Default 197 | ! rofi.kb-toggle-case-sensitivity: grave,dead_grave 198 | ! "Toggle sort" Set from: Default 199 | ! rofi.kb-toggle-sort: Alt+grave 200 | ! "Quit rofi" Set from: Default 201 | ! rofi.kb-cancel: Escape,Control+g,Control+bracketleft 202 | ! "Custom keybinding 1" Set from: Default 203 | ! rofi.kb-custom-1: Alt+1 204 | ! "Custom keybinding 2" Set from: Default 205 | ! rofi.kb-custom-2: Alt+2 206 | ! "Custom keybinding 3" Set from: Default 207 | ! rofi.kb-custom-3: Alt+3 208 | ! "Custom keybinding 4" Set from: Default 209 | ! rofi.kb-custom-4: Alt+4 210 | ! "Custom Keybinding 5" Set from: Default 211 | ! rofi.kb-custom-5: Alt+5 212 | ! "Custom keybinding 6" Set from: Default 213 | ! rofi.kb-custom-6: Alt+6 214 | ! "Custom Keybinding 7" Set from: Default 215 | ! rofi.kb-custom-7: Alt+7 216 | ! "Custom keybinding 8" Set from: Default 217 | ! rofi.kb-custom-8: Alt+8 218 | ! "Custom keybinding 9" Set from: Default 219 | ! rofi.kb-custom-9: Alt+9 220 | ! "Custom keybinding 10" Set from: Default 221 | ! rofi.kb-custom-10: Alt+0 222 | ! "Custom keybinding 11" Set from: Default 223 | ! rofi.kb-custom-11: Alt+exclam 224 | ! "Custom keybinding 12" Set from: Default 225 | ! rofi.kb-custom-12: Alt+at 226 | ! "Csutom keybinding 13" Set from: Default 227 | ! rofi.kb-custom-13: Alt+numbersign 228 | ! "Custom keybinding 14" Set from: Default 229 | ! rofi.kb-custom-14: Alt+dollar 230 | ! "Custom keybinding 15" Set from: Default 231 | ! rofi.kb-custom-15: Alt+percent 232 | ! "Custom keybinding 16" Set from: Default 233 | ! rofi.kb-custom-16: Alt+dead_circumflex 234 | ! "Custom keybinding 17" Set from: Default 235 | ! rofi.kb-custom-17: Alt+ampersand 236 | ! "Custom keybinding 18" Set from: Default 237 | ! rofi.kb-custom-18: Alt+asterisk 238 | ! "Custom Keybinding 19" Set from: Default 239 | ! rofi.kb-custom-19: Alt+parenleft 240 | ! "The display name of this browser" Set from: Default 241 | ! rofi.display-ssh: 242 | ! "The display name of this browser" Set from: Default 243 | ! rofi.display-run: 244 | ! "The display name of this browser" Set from: Default 245 | ! rofi.display-drun: 246 | ! "The display name of this browser" Set from: Default 247 | ! rofi.display-window: 248 | ! "The display name of this browser" Set from: Default 249 | ! rofi.display-windowcd: 250 | ! "The display name of this browser" Set from: Default 251 | ! rofi.display-combi: 252 | -------------------------------------------------------------------------------- /.config/sxhkdc/sxhkdrc: -------------------------------------------------------------------------------- 1 | ########################### 2 | # wm independent hotkeys 3 | ########################### 4 | 5 | # terminal emulator 6 | alt + space 7 | termite 8 | 9 | # rofi program launcher 10 | alt + Return 11 | rofi -show drun 12 | 13 | # rofi program launcher 14 | alt + Tab 15 | rofi -show window 16 | 17 | # whisker menu 18 | {Super_L,Super_R} 19 | xfce4-popup-whiskermenu 20 | 21 | # thunar 22 | alt + f 23 | thunar 24 | 25 | # firefox 26 | alt + i 27 | firefox 28 | 29 | # tellico 30 | alt + t 31 | tellico 32 | 33 | ########################### 34 | # bspwm hotkeys 35 | ########################### 36 | 37 | # make sxhkd reload its configuration files 38 | alt + Escape 39 | pkill -USR1 -x sxhkd 40 | 41 | # reload bspwmrc configuration file 42 | alt + b 43 | pkill docky; /home/xfcebspwm/.config/bspwm/bspwmrc; docky 44 | 45 | # close window 46 | alt + q 47 | bspc node -c 48 | 49 | # move focused window to the next workspace and then switch to that workspace 50 | alt + shift + {Left,Right} 51 | id=$(bspc query --nodes --node); bspc node --to-desktop {prev,next}; bspc desktop --focus next; bspc node --focus ${id} 52 | 53 | # set the node flag to private 54 | #alt + p 55 | #bspc node -g private 56 | 57 | # === function keys === 58 | 59 | # rotate windows 60 | F1 61 | bspc node @/ -R 90 62 | 63 | # circulate windows 64 | F2 65 | bspc node @/ -C forward 66 | 67 | # flip windows horizontal 68 | F3 69 | bspc node @/ -F horizontal 70 | 71 | # flip windows vertical 72 | F4 73 | bspc node @/ -F vertical 74 | 75 | # alternate between the tiled and monocle layout 76 | F5 77 | bspc desktop -l next 78 | 79 | # balance windows 80 | F6 81 | bspc node @/ -B 82 | 83 | # Change window gap 84 | {F7,F8} 85 | bspc config -d focused window_gap $((`bspc config -d focused window_gap` {+,-} 2 )) 86 | 87 | # set the window state 88 | {F9,F10,F11,F12} 89 | bspc node -t {floating,tiled,pseudo_tiled,fullscreen} 90 | 91 | # === focus/swap === 92 | 93 | # focus the next/previous node 94 | alt + {Up,Down} 95 | bspc node -f {prev,next}.local.!above 96 | 97 | # focus the next/previous desktop 98 | alt + {Left,Right} 99 | bspc desktop -f {prev,next} 100 | -------------------------------------------------------------------------------- /.config/termite/config: -------------------------------------------------------------------------------- 1 | [options] 2 | scroll_on_output = false 3 | scroll_on_keystroke = true 4 | audible_bell = true 5 | mouse_autohide = false 6 | allow_bold = true 7 | dynamic_title = true 8 | urgent_on_bell = true 9 | clickable_url = true 10 | #font = Misc Tamsyn Regular 12 11 | font = Hack Regular 10 12 | #font = Luculent 10 13 | scrollback_lines = 10000 14 | search_wrap = true 15 | #icon_name = terminal 16 | #geometry = 640x480 17 | 18 | # "system", "on" or "off" 19 | cursor_blink = on 20 | 21 | # "block", "underline" or "ibeam" 22 | cursor_shape = block 23 | 24 | # $BROWSER is used by default if set, with xdg-open as a fallback 25 | #browser = firefox 26 | 27 | # set size hints for the window 28 | #size_hints = false 29 | 30 | # Hide links that are no longer valid in url select overlay mode 31 | filter_unmatched_urls = true 32 | 33 | # emit escape sequences for extra modified keys 34 | #modify_other_keys = false 35 | 36 | [colors] 37 | # Colors selected from terminal.sexy scheme /collection/x-dotshare with foreground et al changed to #00FF00 38 | # special 39 | foreground = #00FF00 40 | foreground_bold = #00FF00 41 | cursor = #00FF00 42 | background = #151515 43 | 44 | # black 45 | color0 = #101010 46 | color8 = #404040 47 | 48 | # red 49 | color1 = #e84f4f 50 | color9 = #d23d3d 51 | 52 | # green 53 | color2 = #b8d68c 54 | color10 = #a0cf5d 55 | 56 | # yellow 57 | color3 = #e1aa5d 58 | color11 = #f39d21 59 | 60 | # blue 61 | color4 = #7dc1cf 62 | color12 = #4e9fb1 63 | 64 | # magenta 65 | color5 = #9b64fb 66 | color13 = #8542ff 67 | 68 | # cyan 69 | color6 = #6d878d 70 | color14 = #42717b 71 | 72 | # white 73 | color7 = #dddddd 74 | color15 = #dddddd 75 | 76 | [hints] 77 | #font = Monospace 12 78 | #foreground = #dcdccc 79 | #background = #3f3f3f 80 | #active_foreground = #e68080 81 | #active_background = #3f3f3f 82 | #padding = 2 83 | #border = #3f3f3f 84 | #border_width = 0.5 85 | #roundness = 2.0 86 | 87 | # vim: ft=dosini cms=#%s 88 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # The n00b's guide to bspwm (with XFCE)... 2 | 3 | If you are interested in tiling WM's but you're also an id10t (like me) the following guide below will walk you through setting up the best (imho) tiling WM ( **bspwm** ) to run alongside XFCE. This setup is nice for n00b id10ts because it grants you all of the great features of a tiling WM without having to sacrifice the conveniences of a DE (in this case, XFCE). 4 | 5 | I've written this guide from the perspective of a user running Arch Linux (because that's the distro that I run and it's the best Linux distro around ;] ). However, these instructions should be applicable to any system running XFCE, regardless of the distribution. 6 | 7 | I **heavily** referenced this [guide](http://feeblenerd.blogspot.com/2015/11/pretty-i3-with-xfce.html) as I was getting this setup to work, substituting bspwm with i3, of course. This guide is a great resource, I had to make a few variations (outlined below) but this is a nice template to work off of when trying out different WM's under XFCE. 8 | 9 | **Table of Contents** 10 | - [[OPTIONAL] Create new user: xfcebspwm](https://github.com/bgdawes/bspwm-xfce-dotfiles/wiki#optional-create-new-user-xfcebspwm) 11 | - [Install bspwm, sxhkd, compton, and [OPTIONAL] rofi | Make directories | Copy Dots](https://github.com/bgdawes/bspwm-xfce-dotfiles/wiki#install-bspwm-sxhkd-compton-and-optional-rofi--make-directories--copy-dots) 12 | - [Deactivate xfwm4](https://github.com/bgdawes/bspwm-xfce-dotfiles/wiki#deactivate-xfwm4) 13 | - [Remove XFCE hotkeys](https://github.com/bgdawes/bspwm-xfce-dotfiles/wiki#remove-xfce-hotkeys) 14 | - [Autostart required applications in XFCE](https://github.com/bgdawes/bspwm-xfce-dotfiles/wiki#autostart-required-applications-in-xfce) 15 | - [Dotfile notes](https://github.com/bgdawes/bspwm-xfce-dotfiles/wiki#dotfile-notes) 16 | - [Additional notes](https://github.com/bgdawes/bspwm-xfce-dotfiles/wiki#additional-notes) 17 | 18 | 19 | ## [OPTIONAL] Create new user: xfcebspwm 20 | 21 | 22 | You may or may not want to do this step. If you've got a good setup already, I highly recommend doing this because any tweaks/changes/modifications you make won't fuck up your existing setup; then, once you're happy with your configurations, apply the same settings to any user you like. Creating another user is a nice way to make your own sandbox. 23 | 24 | 25 | - Create a new user 26 | 27 | `useradd -m -G wheel -s /bin/bash xfcebspwm` 28 | 29 | - Add a password 30 | 31 | `passwd xfcebspwm` 32 | 33 | 34 | 35 | ### Set XFCE to forget user settings 36 | 37 | If you do decide to create a new user (and you're running Arch), this step may also be necessary. There is a 'quirk' with Arch / XFCE respective to user settings described [here](https://forum.xfce.org/viewtopic.php?id=11509); following the steps below solved the problem for me. 38 | 39 | - Edit file: /etc/systemd/logind.conf 40 | - Uncomment line `#KillUserProcesses=no and change to ‘yes’` 41 | 42 | 43 | ## Install bspwm, sxhkd, compton, and [OPTIONAL] rofi | Make directories | Copy Dots 44 | bspwm relies on sxhkd to manipulate windows via assigned key bindings. sxhkd is a 'simple X hotkey daemon' or, in n00b terms, a program that assigns key bindings (i.e. hotkeys) to control windows in bspwm. sxhkd is coded incredibly well and could not be easier to configure once you understand how it works. compton is a 'standalone composite manager' or, in n00b terms, a program that makes your windows look cool. You need to install compton if you want fancy shadows, fading effects, transparency, etc. Lastly, rofi is a 'window switcher, run dialog, ssh-launcher and dmenu replacement'. Installing bspwm on top of XFCE really eliminates the need for a program to launch applications, however, I really like rofi to switch windows and use rofi primarily for this purpose. 45 | - If you're running Arch Linux, run the command below, otherwise install these packages however you have to source them according to your distribution: 46 | 47 | `pacman -S bspwm sxhkd compton rofi` 48 | 49 | - Create the following directories 50 | 51 | `mkdir ~/.config/bspwm/` 52 | 53 | `mkdir ~/.config/sxhkd/` 54 | 55 | `mkdir ~/.config/compton/` 56 | 57 | `mkdir ~/.config/rofi/` 58 | 59 | - Copy dotfiles to the directories you just created 60 | 61 | **IMPORTANT: MAKE SURE YOUR bspwmrc FILE IS EXECUTABLE - THIS IS THE BIGGEST ROOKIE MISTAKE** 62 | 63 | `chmod +x ~/.config/bspwm/bspwmrc` 64 | 65 | ## Deactivate xfwm4 66 | - Open 'Session and Startup' in XFCE settings manager and go to the 'Session' tab 67 | - Select xfwm4, click 'Immediately' and change it to the 'Never' option 68 | - Click the button: 'Save Session' 69 | 70 | ## Remove XFCE hotkeys 71 | - Open 'Keyboard', and click the 'Application Shortcuts' tab 72 | - Remove **ALL** keyboard shortcuts - if you don't do this, sxhkd won't work 73 | 74 | ## Autostart required applications in XFCE 75 | I'm pretty sure there is a more efficient / elegant way to initiate these applications by editing xprofile or some such but since I'm a n00b and lazy, leveraging XFCE to autostart these applications is the easiest / most convenient option. 76 | - Open 'Session and Startup' in XFCE settings manager 77 | - Navigate to 'Application Autostart' 78 | ### Add bspwm 79 | - Name: bspwm 80 | - Description: tiling-window-manager 81 | - Command: bspwm 82 | ### Add sxhkd 83 | - Name: sxhkd 84 | - Description: x-hotkey-daemon 85 | - Command: sxhkd 86 | ### Add compton 87 | - Name: compton 88 | - Description: composite-manager 89 | - Command: compton --config /home/xfcebspwm/.config/compton/compton.conf -b 90 | 91 | The --config flag directs compton to start using the config file located in the user's home directory. You need to spell out the full user directory path. XFCE will not accept '~' as a user's home directory. The -b flag sets compton to run in the background. 92 | 93 | ## Dotfile notes 94 | ### bspwm | bspwmrc 95 | There are a lot of resources out there to understand how this file works. For me, the most helpful guidance was understanding how this file controls mouse actions. The lines below allow the mouse to manipulate windows when the 'alt' key is drpressed: floating windows can be resized with the 'left click' button; floating windows can be moved with the 'right click' button; tiling windows can be resized with the 'left click' button. 96 | - bspc config pointer_modifier mod1 97 | - bspc config pointer_action1 resize_side 98 | - bspc config pointer_action1 resize_corner 99 | - bspc config pointer_action3 move 100 | 101 | The other settings I have in this file set the number of workspaces, window padding, etc. 102 | Lastly, I also like having a dock. I use [Docky](http://wiki.go-docky.com/index.php?title=Welcome_to_the_Docky_wiki). In order to set Docky to appear above all other windows, I set this rule: 103 | 104 | `bspc rule -a Docky layer=above manage=on border=off focus=off locked=on` 105 | 106 | I also have Docky locked with focus turned off, this helps me to prevent accidentally closing Docky. 107 | 108 | ### sxhkd | sxhkdrc 109 | sxhkd is great and it's also really easy to use. You assign a keybinding on one line and then in the line below, you indent, and then list the action you want to execute after pressing that keybinding. After reloading the config file (assigned to alt + Escape in my config file) the command will work or it won't. If it doesn't, something is wrong with the action you want to execute or there is a keybinding conflict. 110 | 111 | I like to leverage the function keys to execute the main features of bspwm and these are the settings I have defined in my sxhkdrc file: 112 | - F1: rotate windows 113 | - F2: circulate windows 114 | - F3: flip windows horizontal 115 | - F4: flip windows vertical 116 | - F5: alternate between the tiled and monocle layout 117 | - F6: balance windows 118 | - F7: increase window gap 119 | - F8: decrease window gap 120 | - F9: set the window state - floating 121 | - F10: set the window state - tiled 122 | - F11: set the window state - pseudo_tiled 123 | - F12: set the window state - fullscreen 124 | 125 | I've also set up some hotkeys to move through workspaces: 126 | - alt + left or right arrow 127 | 128 | And some hotkeys to cycle through windows on a workspace: 129 | - alt + up or down arrow 130 | 131 | **Note:** I haven't even scratched the surface of bspwm by using the small number of commands listed above. bspwm is such an incredibly versatile WM I'm almost ashamed to only be using these features. Explore the man page, search google, and look at other dots to fully leverage bspwm. Do better than me. You're worth it. 132 | 133 | ### compton | compton.conf 134 | I honestly don't know what 90% of the shit in this config file even does, the most important part of this file (for me) was to set inactive window transparency. I wanted to set all 'unfocused' windows to be transparent. To do this, I had to adjust the opacity settings: 135 | 136 | `#################################` 137 | `#` 138 | `# Opacity` 139 | `#` 140 | `#################################` 141 | `menu-opacity = 1;` 142 | `inactive-window-opacity = 1;` 143 | `inactive-opacity = 0.60;` 144 | `active-opacity = 1;` 145 | `frame-opacity = 1;` 146 | 147 | I also had to make sure these settings equaled 'false': 148 | 149 | `mark-wmwin-focused = false;` 150 | `mark-ovredir-focused = false;` 151 | 152 | ### rofi | config 153 | I really only use rofi to switch windows. 154 | **Note to anyone reading - please let me know if you have a cool way to switch windows other than rofi!!!** 155 | I've enabled rofi to run by hitting 'alt-tab' [to switch windows] and 'alt-return' [to run applications] both defined in sxhkdrc. Rofi was also always transparent, even when focused. To fix this, I had to add the following settings to **compton.conf**: 156 | 157 | `# Specify a list of conditions of windows that should always be considered focused.` 158 | 159 | `focus-exclude = ["name = 'rofi'"];` 160 | 161 | The [rofi website](https://davedavenport.github.io/rofi/p11-Generator.html) has a really cool page to generate a custom theme. I like black and green. I selected these colors then copypasta into the rofi dot. 162 | 163 | ### termite | config 164 | The only elements I really adjusted here were 'font' and '[colors]'. For font, set this to whatever you've got installed on your system that you like, for me, that is ['Hack'](https://www.archlinux.org/packages/extra/any/ttf-hack/). For colors, I really dig the website [terminal.sexy](http://terminal.sexy/). The color scheme I'm using is a very slight variation of '/collection/x-dotshare' with foreground et al changed to #00FF00. 165 | 166 | ## Additional notes 167 | bspwm uses roman numerals to name workspaces. I like this naming convention. To adjust this setting, open XFCE's settings manager, select workspaces, adjust the number of workspaces to match the number of workspaces you have defined in your bspwmrc file and rename them with roman numerals by simply clicking the 'workspace' name. 168 | 169 | I was a little confused about CaSe sensitivity respective to bspwmrc and sxhkdrc when launching applications. [I asked about this on the bspwm subreddit](https://www.reddit.com/r/bspwm/comments/6sqw66/case_sensitivity_bspwmrc_and_sxhkdrc/) and received a very helpful response: 170 | 171 | `From what i know, in the sxhkdrc file you use the same command that you use when starting the application. In my case for` 172 | `example, that could be firefox or firefox-esr. But, in the bspwmrc I use the the output of xprop second "WM_CLASS(STRING)". In my` 173 | `case, that's Firefox-esr.` 174 | 175 | `Or, with libreoffice, I would put libreoffice or loffice in the sxhkd file but i have` 176 | 177 | `bspc rule -a libreoffice-startcenter desktop=^3` 178 | 179 | `in my bspwmrc since that's the output from xprop.` 180 | 181 | `If you don't know about xprop, type xprop in the terminal and select the a window. The last string after "WM_CLASS(STRING)" is` 182 | `what I put in bspwmrc. On firefox, xprop says this for eaxmple:` 183 | 184 | `WM_CLASS(STRING) = "Navigator", "Firefox-esr"` 185 | 186 | `(It's the same when excluding shadows or changing opacity for specifik aplications with compton btw. You have to use the output` 187 | `from xprop. "urxvt" or "firefox-esr" won't work. It has to be Firefox-esr or URxvt.` 188 | 189 | `Hope that helps :)` 190 | 191 | `(Btw, if you want to start a GUI app from the terminal without terminal output and so on (and don't use rofi), put something like` 192 | 193 | `alias gimp='((gimp > /dev/null 2>&1)&)'` 194 | 195 | `in your .bash_aliases file.)` 196 | --------------------------------------------------------------------------------