restructuring
This commit is contained in:
94
home/.config/i3/compton.conf
Normal file
94
home/.config/i3/compton.conf
Normal file
@@ -0,0 +1,94 @@
|
||||
# Shadow
|
||||
shadow = true; # Enabled client-side shadows on windows.
|
||||
no-dock-shadow = true; # 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. Fix some weirdness with ARGB windows.
|
||||
shadow-radius = 7; # The blur radius for shadows. (default 12)
|
||||
shadow-offset-x = -7; # The left offset for shadows. (default -15)
|
||||
shadow-offset-y = -7; # The top offset for shadows. (default -15)
|
||||
shadow-opacity = 0.7; # The translucency for shadows. (default .75)
|
||||
# shadow-red = 0.0; # Red color value of shadow. (0.0 - 1.0, defaults to 0)
|
||||
# shadow-green = 0.0; # Green color value of shadow. (0.0 - 1.0, defaults to 0)
|
||||
# shadow-blue = 0.0; # Blue color value of shadow. (0.0 - 1.0, defaults to 0)
|
||||
shadow-exclude = [ "n:e:Notification" ]; # Exclude conditions for shadows.
|
||||
# shadow-exclude = "n:e:Notification";
|
||||
shadow-ignore-shaped = true; # Avoid drawing shadow on all shaped windows
|
||||
# (see also: --detect-rounded-corners)
|
||||
|
||||
# Opacity
|
||||
menu-opacity = 0.9; # The opacity for menus. (default 1.0)
|
||||
inactive-opacity = 0.94; # Default opacity of inactive windows. (0.0 - 1.0)
|
||||
# active-opacity = 0.8; # Default opacity for active windows. (0.0 - 1.0)
|
||||
# frame-opacity = 0.8; # Opacity of window titlebars and borders. (0.1 - 1.0)
|
||||
# inactive-opacity-override = true; # Let inactive opacity set by 'inactive-opacity' overrides
|
||||
# value of _NET_WM_OPACITY. Bad choice.
|
||||
alpha-step = 0.06; # XRender backend: Step size for alpha pictures. Increasing
|
||||
# it may result in less X resource usage,
|
||||
# Yet fading may look bad.
|
||||
# inactive-dim = 0.2; # Dim inactive windows. (0.0 - 1.0)
|
||||
# inactive-dim-fixed = true; # Do not let dimness adjust based on window opacity.
|
||||
# blur-background = true; # Blur background of transparent windows.
|
||||
# Bad performance with X Render backend.
|
||||
# GLX backend is preferred.
|
||||
# blur-background-frame = true; # Blur background of opaque windows with transparent
|
||||
# frames as well.
|
||||
blur-background-fixed = false; # Do not let blur radius adjust based on window opacity.
|
||||
blur-background-exclude = [ "window_type = 'dock'", "window_type = 'desktop'" ];
|
||||
# Exclude conditions for background blur.
|
||||
|
||||
# Fading
|
||||
fading = true; # Fade windows during opacity changes.
|
||||
# fade-delta = 30; # The time between steps in a fade in milliseconds. (default 10).
|
||||
fade-in-step = 0.03; # Opacity change between steps while fading in. (default 0.028).
|
||||
fade-out-step = 0.03; # Opacity change between steps while fading out. (default 0.03).
|
||||
# no-fading-openclose = true; # Avoid fade windows in/out when opening/closing.
|
||||
fade-exclude = [ ]; # Exclude conditions for fading.
|
||||
|
||||
# Other
|
||||
backend = "glx" # Backend to use: "xrender" or "glx". GLX backend is typically
|
||||
# much faster but depends on a sane driver.
|
||||
mark-wmwin-focused = true; # Try to detect WM windows and mark them as active.
|
||||
mark-ovredir-focused = true; # Mark all non-WM but override-redirect windows active (e.g. menus).
|
||||
use-ewmh-active-win = false; # 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.
|
||||
detect-rounded-corners = true; # Detect rounded corners and treat them as rectangular when --shadow-ignore-shaped is on.
|
||||
detect-client-opacity = true; # Detect _NET_WM_OPACITY on client windows, useful for window
|
||||
# managers not passing _NET_WM_OPACITY of client windows to frame
|
||||
# windows.
|
||||
refresh-rate = 0; # For --sw-opti: Specify refresh rate of the screen. 0 for auto.
|
||||
vsync = "opengl"; # "none", "drm", "opengl", "opengl-oml", "opengl-swc", "opengl-mswc"
|
||||
# See man page for more details.
|
||||
dbe = false; # Enable DBE painting mode. Rarely needed.
|
||||
paint-on-overlay = true; # Painting on X Composite overlay window. Recommended.
|
||||
sw-opti = false; # Limit compton to repaint at most once every 1 / refresh_rate.
|
||||
# Incompatible with certain VSync methods.
|
||||
unredir-if-possible = false; # Unredirect all windows if a full-screen opaque window is
|
||||
# detected, to maximize performance for full-screen windows.
|
||||
focus-exclude = [ ]; # A list of conditions of windows that should always be considered
|
||||
# focused.
|
||||
detect-transient = true; # Use WM_TRANSIENT_FOR to group windows, and consider windows in
|
||||
# the same group focused at the same time.
|
||||
detect-client-leader = true; # Use WM_CLIENT_LEADER to group windows.
|
||||
invert-color-include = [ ]; # Conditions for windows to be painted with inverted color.
|
||||
|
||||
# GLX backend # GLX backend fine-tune options. See man page for more info.
|
||||
# glx-no-stencil = true; # Recommended.
|
||||
glx-copy-from-front = false; # Useful with --glx-swap-method,
|
||||
# glx-use-copysubbuffermesa = true; # Recommended if it works. Breaks VSync.
|
||||
# glx-no-rebind-pixmap = true; # Recommended if it works.
|
||||
glx-swap-method = "undefined"; # See man page.
|
||||
|
||||
# Window type settings
|
||||
wintypes:
|
||||
{
|
||||
tooltip = { fade = true; shadow = false; opacity = 0.75; focus = true; };
|
||||
# fade: Fade the particular type of windows.
|
||||
# shadow: Give those windows shadow
|
||||
# opacity: Default opacity for the type of windows.
|
||||
# focus: Whether to always consider windows of this type focused.
|
||||
};
|
||||
|
||||
# Fullscreen windows should have no transparency
|
||||
opacity-rule = [ "100:_NET_WM_STATE@:32a = '_NET_WM_STATE_FULLSCREEN'" ];
|
391
home/.config/i3/config
Normal file
391
home/.config/i3/config
Normal file
@@ -0,0 +1,391 @@
|
||||
# TODO: Make this only run once, even if the user reloads i3-config (mod-shift-r)
|
||||
# tray icons(DP-0 is the primary display device's name,use the command "xrandr" to see.)
|
||||
exec --no-startup-id xrandr --output DP1 --primary
|
||||
# Put Apple Cinima Display on the right of DP-0
|
||||
exec --no-startup-id xrandr --output DP2 --left-of DP1
|
||||
# Third monitor
|
||||
#exec --no-startup-id xrandr --output VGA1 --left-of DP2
|
||||
exec --no-startup-id xrandr --output VGA1 --mode 1920x1200 --left-of DP2
|
||||
|
||||
|
||||
# Use the Super key as $mod, because Alt is used in tmux
|
||||
set $mod Mod4
|
||||
set $i3_path ~/.i3
|
||||
|
||||
new_window pixel 1
|
||||
new_float normal
|
||||
|
||||
hide_edge_borders none
|
||||
|
||||
bindsym $mod+u border none
|
||||
bindsym $mod+y border pixel 1
|
||||
bindsym $mod+n border normal
|
||||
|
||||
font xft:URWGothic-Book 11
|
||||
|
||||
floating_modifier $mod
|
||||
|
||||
# Default terminal
|
||||
bindsym $mod+Return exec --no-startup-id terminator
|
||||
|
||||
# Window kill command
|
||||
bindsym $mod+Shift+q kill
|
||||
|
||||
# start program launcher
|
||||
bindsym $mod+d exec --no-startup-id rofi -show run
|
||||
bindsym $mod+Tab exec --no-startup-id rofi -show window
|
||||
|
||||
# Alternate program launcher
|
||||
bindsym $mod+z exec --no-startup-id morc_menu
|
||||
|
||||
# Setup lockscreen
|
||||
bindsym $mod+p exec --no-startup-id i3lock-fancy -p
|
||||
|
||||
# Random wallpaper
|
||||
exec --no-startup-id $i3_path/wallpaper.sh&
|
||||
|
||||
################################################################################################
|
||||
## sound-section - DO NOT EDIT if you wish to automatically upgrade Alsa -> Pulseaudio later! ##
|
||||
################################################################################################
|
||||
|
||||
exec --no-startup-id volumeicon
|
||||
bindsym $mod+Ctrl+m exec terminal -e 'alsamixer'
|
||||
#exec --no-startup-id pulseaudio
|
||||
#exec --no-startup-id pa-applet
|
||||
#bindsym $mod+Ctrl+m exec pavucontrol
|
||||
|
||||
################################################################################################
|
||||
|
||||
# Screen brightness controls
|
||||
# bindsym XF86MonBrightnessUp exec "xbacklight -inc 10; notify-send 'brightness up'"
|
||||
# bindsym XF86MonBrightnessDown exec "xbacklight -dec 10; notify-send 'brightness down'"
|
||||
|
||||
# Keybinds
|
||||
bindsym $mod+Ctrl+b exec --no-startup-id xfce4-terminal -e 'bmenu'
|
||||
bindsym $mod+F2 exec --no-startup-id google-chrome-stable
|
||||
bindsym $mod+F3 exec --no-startup-id pcmanfm
|
||||
bindsym $mod+Shift+h exec xdg-open /usr/share/doc/manjaro/i3_help.pdf
|
||||
bindsym $mod+Ctrl+x --release exec --no-startup-id xkill
|
||||
|
||||
bindsym $mod+n --release exec --no-startup-id terminator -e nnn
|
||||
|
||||
bindsym Insert exec --no-startup-id maim -s ~/Pictures/$(date +%Y-%m-%d-%s).png #i3-scrot --select '%Y-%m-%d_$wx$h.png' # Selection -- CHange cursor?
|
||||
bindsym $mod+Insert exec --no-startup-id ~/.i3/screenshotter.sh #i3-scrot -w '%Y-%m-%d_$wx$h.png' # Window
|
||||
bindsym $mod+Shift+Insert --release exec --no-startup-id maim ~/Pictures/$(date +%Y-%m-%d).png #i3-scrot -d '%Y-%m-%d_$wx$h.png' # Fullscreen
|
||||
bindsym $mod+Ctrl+Insert exec --no-startup-id maim -s ~/Pictures/$(date +%Y-%m-%d).png&& pinta ~/Pictures/$(date +%Y-%m-%d-%s).png # screenshot and edit
|
||||
|
||||
# Screen recording
|
||||
bindsym Shift+Print exec --no-startup-id ~/.i3/screencast2gif.sh
|
||||
bindsym Print exec --no-startup-id "ffcast -q $(while slop -q -n -f '-g %g ';do :;done) rec ~/Videos/rec-%si-$(date +%Y-%m-%d-%s).mp4"
|
||||
bindsym $mod+Print exec --no-startup-id pkill -fxn '(/\S+)*ffmpeg\s.*\sx11grab\s.*'
|
||||
|
||||
# change focus
|
||||
bindsym $mod+j focus left
|
||||
bindsym $mod+k focus down
|
||||
bindsym $mod+l focus up
|
||||
bindsym $mod+semicolon focus right
|
||||
|
||||
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
|
||||
|
||||
bindsym $mod+Shift+Left move left
|
||||
bindsym $mod+Shift+Down move down
|
||||
bindsym $mod+Shift+Up move up
|
||||
bindsym $mod+Shift+Right move right
|
||||
|
||||
# workspace back and forth (with/without active container)
|
||||
workspace_auto_back_and_forth yes
|
||||
bindsym $mod+b workspace back_and_forth
|
||||
bindsym $mod+Shift+b move container to workspace back_and_forth; workspace back_and_forth
|
||||
|
||||
# split orientation
|
||||
bindsym $mod+h split h;exec notify-send 'tile horizontally'
|
||||
bindsym $mod+v split v;exec notify-send 'tile vertically'
|
||||
bindsym $mod+q split toggle
|
||||
|
||||
# toggle 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
|
||||
|
||||
# toggle sticky
|
||||
bindsym $mod+Shift+s sticky toggle
|
||||
|
||||
# focus the parent container
|
||||
bindsym $mod+a focus parent
|
||||
|
||||
# move the currently focused window to the scratchpad
|
||||
bindsym $mod+Shift+minus move scratchpad
|
||||
|
||||
# Show the next scratchpad window or hide the focused scratchpad window.
|
||||
# If there are multiple scratchpad windows, this command cycles through them.
|
||||
bindsym $mod+minus scratchpad show
|
||||
|
||||
# navigate workspaces next / previous
|
||||
bindsym $mod+Ctrl+Right workspace next
|
||||
bindsym $mod+Ctrl+Left workspace prev
|
||||
|
||||
# workspaces
|
||||
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|"
|
||||
|
||||
# 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
|
||||
|
||||
# Move focused container to workspace
|
||||
bindsym $mod+Ctrl+1 move container to workspace $ws1
|
||||
bindsym $mod+Ctrl+2 move container to workspace $ws2
|
||||
bindsym $mod+Ctrl+3 move container to workspace $ws3
|
||||
bindsym $mod+Ctrl+4 move container to workspace $ws4
|
||||
bindsym $mod+Ctrl+5 move container to workspace $ws5
|
||||
bindsym $mod+Ctrl+6 move container to workspace $ws6
|
||||
bindsym $mod+Ctrl+7 move container to workspace $ws7
|
||||
bindsym $mod+Ctrl+8 move container to workspace $ws8
|
||||
bindsym $mod+Ctrl+9 move container to workspace $ws9
|
||||
|
||||
# Move to workspace with focused container
|
||||
bindsym $mod+Shift+1 move container to workspace $ws1; workspace $ws1
|
||||
bindsym $mod+Shift+2 move container to workspace $ws2; workspace $ws2
|
||||
bindsym $mod+Shift+3 move container to workspace $ws3; workspace $ws3
|
||||
bindsym $mod+Shift+4 move container to workspace $ws4; workspace $ws4
|
||||
bindsym $mod+Shift+5 move container to workspace $ws5; workspace $ws5
|
||||
bindsym $mod+Shift+6 move container to workspace $ws6; workspace $ws6
|
||||
bindsym $mod+Shift+7 move container to workspace $ws7; workspace $ws7
|
||||
bindsym $mod+Shift+8 move container to workspace $ws8; workspace $ws8
|
||||
bindsym $mod+Shift+9 move container to workspace $ws9; workspace $ws9
|
||||
|
||||
# Assign window type to classes
|
||||
assign [class="^telegram-desktop"] $ws2
|
||||
assign [class="^Telegram"] $ws2
|
||||
assign [class="^Discord"] $ws2
|
||||
assign [class="^Spotify"] $ws6
|
||||
assign [class="^discord"] $ws2
|
||||
assign [class="^Steam"] $ws8
|
||||
assign [class="^Java"] $ws7
|
||||
assign [class="^Synergy"] $ws4
|
||||
assign [class="^AnyDesk"] $ws4
|
||||
assign [class="^Code"] $ws5
|
||||
|
||||
# Open specific applications in floating mode
|
||||
for_window [title="alsamixer"] floating enable border pixel 1
|
||||
for_window [class="Calamares"] floating enable border normal
|
||||
for_window [class="Clipgrab"] floating enable
|
||||
for_window [title="File Transfer*"] floating enable
|
||||
for_window [class="Galculator"] floating enable border pixel 1
|
||||
for_window [class="GParted"] floating enable border normal
|
||||
for_window [title="i3_help"] floating enable sticky enable border normal
|
||||
for_window [class="Lightdm-gtk-greeter-settings"] floating enable
|
||||
for_window [class="Lxappearance"] floating enable sticky enable border normal
|
||||
for_window [class="Manjaro-hello"] floating enable
|
||||
for_window [class="Manjaro Settings Manager"] floating enable border normal
|
||||
for_window [class="Pamac-manager"] floating enable
|
||||
for_window [class="qt5ct"] floating enable sticky enable border normal
|
||||
for_window [class="Qtconfig-qt4"] floating enable sticky enable border normal
|
||||
for_window [class="Simple-scan"] floating enable border normal
|
||||
for_window [class="(?i)virtualbox"] floating enable border normal
|
||||
for_window [class="Xfburn"] floating enable
|
||||
for_window [class="feh"] floating enable
|
||||
for_window [class="steamwebhelper"] floating enable
|
||||
for_window [class="terminator"] floating enable sticky enable
|
||||
for_window [class="^telegram-desktop"] floating enable sticky enable
|
||||
|
||||
# switch to workspace with urgent window automatically
|
||||
for_window [urgent=latest] focus
|
||||
|
||||
# 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'"
|
||||
|
||||
# Set shut down, restart and locking features
|
||||
bindsym $mod+0 mode "$mode_system"
|
||||
set $mode_system (l)ock, (e)xit, switch_(u)ser, (s)uspend, (h)ibernate, (r)eboot, (Shift+s)hutdown
|
||||
mode "$mode_system" {
|
||||
bindsym l exec --no-startup-id i3lock-fancy -p
|
||||
bindsym s exec --no-startup-id i3exit suspend, mode "default"
|
||||
bindsym u exec --no-startup-id i3exit switch_user, mode "default"
|
||||
bindsym e exec --no-startup-id i3exit logout, mode "default"
|
||||
#bindsym h exec --no-startup-id i3exit hibernate, mode "default"
|
||||
bindsym r exec --no-startup-id i3exit reboot, mode "default"
|
||||
bindsym Shift+s exec --no-startup-id i3exit shutdown, mode "default"
|
||||
|
||||
# exit system mode: "Enter" or "Escape"
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
}
|
||||
|
||||
# Resize window (you can also use the mouse for that)
|
||||
bindsym $mod+r mode "resize"
|
||||
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 5 px or 5 ppt
|
||||
bindsym k resize grow height 5 px or 5 ppt
|
||||
bindsym l resize shrink height 5 px or 5 ppt
|
||||
bindsym semicolon resize grow width 5 px or 5 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
|
||||
|
||||
# exit resize mode: Enter or Escape
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
}
|
||||
|
||||
# Autostart applications
|
||||
#exec --no-startup-id xfce4-panel --disable-wm-check
|
||||
exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
|
||||
exec --no-startup-id nm-applet
|
||||
exec --no-startup-id xfce4-power-manager
|
||||
exec --no-startup-id stalonetray
|
||||
exec --no-startup-id clipit
|
||||
exec_always --no-startup-id ff-theme-util
|
||||
exec_always --no-startup-id fix_xcursor
|
||||
exec --no-startup-id start_conky_mia
|
||||
#exec --no-startup-id i3-msg 'workspace $ws2; exec telegram-desktop'
|
||||
#exec --no-startup-id i3-msg 'workspace $ws2; exec discord'
|
||||
exec --no-startup-id xautolock -time 10 -locker blurlock
|
||||
|
||||
# Timeout to activate screensaver/lockscreen
|
||||
exec --no-startup-id xautolock -time 30 -locker i3lock-fancy -p
|
||||
|
||||
# Composition Manager (Transparency)
|
||||
#exec --no-startup-id xcompmgr -c -f -n
|
||||
exec --no-startup-id compton --config ~/.compton.conf
|
||||
|
||||
# Network Keyboard/Mouse/Clipboard
|
||||
exec --no-startup-id synergy
|
||||
# Personal VPN (PIA-manager)
|
||||
#exec --no-startup-id "/bin/sh /opt/pia/ruby/ruby.sh /opt/pia/pia_manager/run.rb"
|
||||
|
||||
#bar {
|
||||
# status_command i3status
|
||||
#}
|
||||
|
||||
bar {
|
||||
# status_command i3status -c ~/.config/i3/i3status.conf
|
||||
status_command i3blocks -c $i3_path/i3blocks.conf
|
||||
|
||||
position top
|
||||
# mode hide
|
||||
workspace_buttons yes
|
||||
tray_output DP-0
|
||||
tray_padding 0
|
||||
separator_symbol "|"
|
||||
|
||||
colors {
|
||||
background #222D31
|
||||
statusline #F9FAF9
|
||||
separator #454947
|
||||
|
||||
# border backgr. text
|
||||
focused_workspace #F9FAF9 #16a085 #292F34
|
||||
active_workspace #595B5B #353836 #FDF6E3
|
||||
inactive_workspace #595B5B #222D31 #EEE8D5
|
||||
binding_mode #16a085 #2C2C2C #F9FAF9
|
||||
urgent_workspace #16a085 #FDF6E3 #E5201D
|
||||
}
|
||||
|
||||
#height 30
|
||||
}
|
||||
|
||||
# Toggle visibility of status bar
|
||||
bindsym $mod+m bar mode toggle
|
||||
|
||||
# Theme colors
|
||||
# class border backgr. text indic. child_border
|
||||
client.focused #556064 #556064 #80FFF9 #FDF6E3
|
||||
client.focused_inactive #2F3D44 #2F3D44 #1ABC9C #454948
|
||||
client.unfocused #2F3D44 #2F3D44 #1ABC9C #454948
|
||||
client.urgent #CB4B16 #FDF6E3 #1ABC9C #268BD2
|
||||
client.placeholder #000000 #0c0c0c #ffffff #000000
|
||||
|
||||
client.background #2B2C2B
|
||||
|
||||
|
||||
# Gaps
|
||||
gaps inner 10
|
||||
gaps outer 4
|
||||
|
||||
smart_gaps on
|
||||
|
||||
smart_borders on
|
||||
|
||||
# Press $mod+Shift+g to enter the gap mode. Choose o or i for modifying outer/inner gaps. Press one of + / - (in-/decrement for current workspace) or 0 (remove gaps for current workspace). If you also press Shift with these keys, the change will be global for all workspaces.
|
||||
set $mode_gaps Gaps: (o) outer, (i) inner
|
||||
set $mode_gaps_outer Outer Gaps: +|-|0 (local), Shift + +|-|0 (global)
|
||||
set $mode_gaps_inner Inner Gaps: +|-|0 (local), Shift + +|-|0 (global)
|
||||
bindsym $mod+Shift+g mode "$mode_gaps"
|
||||
|
||||
mode "$mode_gaps" {
|
||||
bindsym o mode "$mode_gaps_outer"
|
||||
bindsym i mode "$mode_gaps_inner"
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
}
|
||||
mode "$mode_gaps_inner" {
|
||||
bindsym plus gaps inner current plus 5
|
||||
bindsym minus gaps inner current minus 5
|
||||
bindsym 0 gaps inner current set 0
|
||||
|
||||
bindsym Shift+plus gaps inner all plus 5
|
||||
bindsym Shift+minus gaps inner all minus 5
|
||||
bindsym Shift+0 gaps inner all set 0
|
||||
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
}
|
||||
mode "$mode_gaps_outer" {
|
||||
bindsym plus gaps outer current plus 5
|
||||
bindsym minus gaps outer current minus 5
|
||||
bindsym 0 gaps outer current set 0
|
||||
|
||||
bindsym Shift+plus gaps outer all plus 5
|
||||
bindsym Shift+minus gaps outer all minus 5
|
||||
bindsym Shift+0 gaps outer all set 0
|
||||
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
}
|
39
home/.config/i3/i3-dstatus.conf
Normal file
39
home/.config/i3/i3-dstatus.conf
Normal file
@@ -0,0 +1,39 @@
|
||||
# vim: filetype=yaml
|
||||
# This is an example configuration file for i3-dstatus.
|
||||
#
|
||||
# Make sure you are using a pango font by putting `pango:` before your i3 font
|
||||
# string to use the markup features
|
||||
---
|
||||
general:
|
||||
generators: [ focused-window, scratchpad, playerctl, clipboard, netifaces, disk, battery, clock ]
|
||||
separator-block-width: 25
|
||||
clock:
|
||||
format: '%h %d <b>%H:%M</b>'
|
||||
disk:
|
||||
'/':
|
||||
prefix: 'custom'
|
||||
format: '%free'
|
||||
clipboard:
|
||||
format: '<span size="small" font="FontAwesome"></span> %text'
|
||||
focused-window:
|
||||
truncate-length: 100
|
||||
netifaces:
|
||||
enp3s0:
|
||||
format-up: '%iface: %ip'
|
||||
format-down: '%iface: <b>down</b>'
|
||||
scratchpad:
|
||||
format: 'scratchpad: <b>%classes</b>'
|
||||
playerctl:
|
||||
format: '{{artist}} - {{title}}'
|
||||
check-http:
|
||||
sites: [ 'http://i3wm.org' ]
|
||||
interval: 600
|
||||
format-up: ''
|
||||
format-down: '<span color="red">%site is down (status: %status, %reason)</span>'
|
||||
github-repos:
|
||||
users: [ altdesktop ]
|
||||
interval: 600
|
||||
format: '<span color="yellow">★</span>%stars <small>?</small>%issues'
|
||||
battery:
|
||||
name: 'BAT0' # defaults to the first battery found
|
||||
format: '%name %percentage%'
|
82
home/.config/i3/i3blocks.conf
Normal file
82
home/.config/i3/i3blocks.conf
Normal file
@@ -0,0 +1,82 @@
|
||||
# i3blocks config file
|
||||
#
|
||||
# Please see man i3blocks for a complete reference!
|
||||
# The man page is also hosted at http://vivien.github.io/i3blocks
|
||||
#
|
||||
# List of valid properties:
|
||||
#
|
||||
# align
|
||||
# color
|
||||
# command
|
||||
# full_text
|
||||
# instance
|
||||
# interval
|
||||
# label
|
||||
# min_width
|
||||
# name
|
||||
# separator
|
||||
# separator_block_width
|
||||
# short_text
|
||||
# signal
|
||||
# urgent
|
||||
|
||||
# Global properties
|
||||
#
|
||||
# The top properties below are applied to every block, but can be overridden.
|
||||
# Each block command defaults to the script name to avoid boilerplate.
|
||||
#command=/usr/lib/i3blocks/$BLOCK_NAME
|
||||
command=~/bin/i3blocks/$BLOCK_NAME
|
||||
separator_block_width=15
|
||||
markup=pango
|
||||
|
||||
[scratchpad]
|
||||
interval=5
|
||||
|
||||
[gpu-load]
|
||||
interval=15
|
||||
label=⎚
|
||||
|
||||
[load_average]
|
||||
interval=15
|
||||
label=⨏
|
||||
|
||||
[cpu_usage]
|
||||
interval=persist
|
||||
label=💻
|
||||
|
||||
[cpu]
|
||||
interval=15
|
||||
label=🌡
|
||||
|
||||
[memory]
|
||||
interval=30
|
||||
label=
|
||||
|
||||
[bandwidth]
|
||||
command=~/bin/i3blocks/bandwidth -u Kb
|
||||
interval=persist
|
||||
#label=
|
||||
|
||||
#[disk]
|
||||
#interval=60
|
||||
#command=~/bin/i3blocks/disk /
|
||||
|
||||
#[disk]
|
||||
#interval=60
|
||||
#command=~/bin/i3blocks/disk /home 🏠
|
||||
|
||||
[spotify]
|
||||
label=
|
||||
color=#81b71a
|
||||
interval=5
|
||||
|
||||
[window]
|
||||
interval=1
|
||||
label=🗔
|
||||
|
||||
[clock]
|
||||
label=
|
||||
interval=30
|
||||
|
||||
[internet]
|
||||
interval=15
|
104
home/.config/i3/i3blocks/bandwidth
Executable file
104
home/.config/i3/i3blocks/bandwidth
Executable file
@@ -0,0 +1,104 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Copyright (C) 2015 James Murphy
|
||||
# Licensed under the terms of the GNU GPL v2 only.
|
||||
#
|
||||
# i3blocks blocklet script to monitor bandwidth usage
|
||||
|
||||
iface="${BLOCK_INSTANCE}"
|
||||
iface="${IFACE:-$iface}"
|
||||
dt="${DT:-3}"
|
||||
unit="${UNIT:-Mb}"
|
||||
LABEL="${LABEL:- }" # down arrow up arrow
|
||||
printf_command="${PRINTF_COMMAND:-"printf \"${LABEL}%-5.1f/%5.1f %s/s\\n\", rx, wx, unit;"}"
|
||||
|
||||
function default_interface {
|
||||
ip route | awk '/^default via/ {print $5; exit}'
|
||||
}
|
||||
|
||||
function check_proc_net_dev {
|
||||
if [ ! -f "/proc/net/dev" ]; then
|
||||
echo "/proc/net/dev not found"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
function list_interfaces {
|
||||
check_proc_net_dev
|
||||
echo "Interfaces in /proc/net/dev:"
|
||||
grep -o "^[^:]\\+:" /proc/net/dev | tr -d " :"
|
||||
}
|
||||
|
||||
while getopts i:t:u:p:lh opt; do
|
||||
case "$opt" in
|
||||
i) iface="$OPTARG" ;;
|
||||
t) dt="$OPTARG" ;;
|
||||
u) unit="$OPTARG" ;;
|
||||
p) printf_command="$OPTARG" ;;
|
||||
l) list_interfaces && exit 0 ;;
|
||||
h) printf \
|
||||
"Usage: bandwidth3 [-i interface] [-t time] [-u unit] [-p printf_command] [-l] [-h]
|
||||
Options:
|
||||
-i\tNetwork interface to measure. Default determined using \`ip route\`.
|
||||
-t\tTime interval in seconds between measurements. Default: 3
|
||||
-u\tUnits to measure bytes in. Default: Mb
|
||||
\tAllowed units: Kb, KB, Mb, MB, Gb, GB, Tb, TB
|
||||
\tUnits may have optional it/its/yte/ytes on the end, e.g. Mbits, KByte
|
||||
-p\tAwk command to be called after a measurement is made.
|
||||
\tDefault: printf \"<span font='FontAwesome'> </span>%%-5.1f/%%5.1f %%s/s\\\\n\", rx, wx, unit;
|
||||
\tExposed variables: rx, wx, tx, unit, iface
|
||||
-l\tList available interfaces in /proc/net/dev
|
||||
-h\tShow this help text
|
||||
" && exit 0;;
|
||||
esac
|
||||
done
|
||||
|
||||
check_proc_net_dev
|
||||
|
||||
iface="${iface:-$(default_interface)}"
|
||||
while [ -z "$iface" ]; do
|
||||
echo No default interface
|
||||
sleep "$dt"
|
||||
iface=$(default_interface)
|
||||
done
|
||||
|
||||
case "$unit" in
|
||||
Kb|Kbit|Kbits) bytes_per_unit=$((1024 / 8));;
|
||||
KB|KByte|KBytes) bytes_per_unit=$((1024));;
|
||||
Mb|Mbit|Mbits) bytes_per_unit=$((1024 * 1024 / 8));;
|
||||
MB|MByte|MBytes) bytes_per_unit=$((1024 * 1024));;
|
||||
Gb|Gbit|Gbits) bytes_per_unit=$((1024 * 1024 * 1024 / 8));;
|
||||
GB|GByte|GBytes) bytes_per_unit=$((1024 * 1024 * 1024));;
|
||||
Tb|Tbit|Tbits) bytes_per_unit=$((1024 * 1024 * 1024 * 1024 / 8));;
|
||||
TB|TByte|TBytes) bytes_per_unit=$((1024 * 1024 * 1024 * 1024));;
|
||||
*) echo Bad unit "$unit" && exit 1;;
|
||||
esac
|
||||
|
||||
scalar=$((bytes_per_unit * dt))
|
||||
init_line=$(cat /proc/net/dev | grep "^[ ]*$iface:")
|
||||
if [ -z "$init_line" ]; then
|
||||
echo Interface not found in /proc/net/dev: "$iface"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
init_received=$(awk '{print $2}' <<< $init_line)
|
||||
init_sent=$(awk '{print $10}' <<< $init_line)
|
||||
|
||||
(while true; do cat /proc/net/dev; sleep "$dt"; done) |\
|
||||
stdbuf -oL grep "^[ ]*$iface:" |\
|
||||
awk -v scalar="$scalar" -v unit="$unit" -v iface="$iface" '
|
||||
BEGIN{old_received='"$init_received"';old_sent='"$init_sent"'}
|
||||
{
|
||||
received=$2
|
||||
sent=$10
|
||||
rx=(received-old_received)/scalar;
|
||||
wx=(sent-old_sent)/scalar;
|
||||
tx=rx+wr;
|
||||
old_received=received;
|
||||
old_sent=sent;
|
||||
if(rx >= 0 && wx >= 0){
|
||||
'"$printf_command"';
|
||||
fflush(stdout);
|
||||
}
|
||||
}
|
||||
'
|
11
home/.config/i3/i3blocks/clock
Executable file
11
home/.config/i3/i3blocks/clock
Executable file
@@ -0,0 +1,11 @@
|
||||
#!/bin/sh
|
||||
|
||||
date '+%b %d (%a) %I:%M%p'
|
||||
|
||||
case $BLOCK_BUTTON in
|
||||
1) pgrep -x dunst >/dev/null && notify-send "$(cal --color=always | sed "s/..7m/<b><span color=\"red\">/;s/..27m/<\/span><\/b>/")" && notify-send "$(calcurse -d3)" ;;
|
||||
2) "$TERMINAL" -e calcurse ;;
|
||||
3) pgrep -x dunst >/dev/null && notify-send "<b>📅 Time/date module:</b>
|
||||
- Left click to show upcoming appointments for the next three days via \`calcurse -d3\` and show the month via \`cal\`
|
||||
- Middle click opens calcurse if installed" ;;
|
||||
esac
|
12
home/.config/i3/i3blocks/cpu
Executable file
12
home/.config/i3/i3blocks/cpu
Executable file
@@ -0,0 +1,12 @@
|
||||
#!/bin/sh
|
||||
|
||||
case $BLOCK_BUTTON in
|
||||
1) notify-send "<b>🖥 CPU hogs</b>:
|
||||
$(ps axch -o cmd:15,%cpu --sort=-%cpu | head)" ;;
|
||||
3) notify-send "<b>🖥 CPU module:</b>
|
||||
- Shows CPU temperature.
|
||||
- Click to show intensive processes.
|
||||
- % is of single core." ;;
|
||||
esac
|
||||
|
||||
sensors | awk '/temp1/ {print $2}'
|
BIN
home/.config/i3/i3blocks/cpu_usage
Executable file
BIN
home/.config/i3/i3blocks/cpu_usage
Executable file
Binary file not shown.
20
home/.config/i3/i3blocks/disk
Executable file
20
home/.config/i3/i3blocks/disk
Executable file
@@ -0,0 +1,20 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Status bar module for disk space
|
||||
# $1 should be drive mountpoint
|
||||
# $2 is optional icon, otherwise mountpoint will displayed
|
||||
|
||||
[ -z "$1" ] && exit
|
||||
|
||||
icon="$2"
|
||||
[ -z "$2" ] && icon="$1"
|
||||
|
||||
case $BLOCK_BUTTON in
|
||||
1) pgrep -x dunst >/dev/null && notify-send "<b>💽 Disk space:</b>
|
||||
$(df -h --output=target,used,size)" ;;
|
||||
3) pgrep -x dunst >/dev/null && notify-send "<b>💽 Hard drive space remaining:</b>
|
||||
- Shows used hard drive space.
|
||||
- Click to show all disk info." ;;
|
||||
esac
|
||||
|
||||
printf "%s: %s" "$icon" "$(df -h "$1" | awk ' /[0-9]/ {print $3 "/" $2}')"
|
67
home/.config/i3/i3blocks/gpu-load
Executable file
67
home/.config/i3/i3blocks/gpu-load
Executable file
@@ -0,0 +1,67 @@
|
||||
#! /usr/bin/perl
|
||||
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use utf8;
|
||||
use Getopt::Long;
|
||||
|
||||
# default values
|
||||
my $t_warn = $ENV{T_WARN} || 70;
|
||||
my $t_crit = $ENV{T_CRIT} || 90;
|
||||
my $gpu_usage = -1;
|
||||
my $gpu_mem = -1;
|
||||
my $gpu_video = -1;
|
||||
my $gpu_pcie = -1;
|
||||
|
||||
sub help {
|
||||
print "Usage: gpu-load [-w <warning>] [-c <critical>]\n";
|
||||
print "-w <percent>: warning threshold to become amber\n";
|
||||
print "-c <percent>: critical threshold to become red\n";
|
||||
exit 0;
|
||||
}
|
||||
|
||||
GetOptions("help|h" => \&help,
|
||||
"w=i" => \$t_warn,
|
||||
"c=i" => \$t_crit);
|
||||
|
||||
# Get GPU usage from nvidia-settings
|
||||
open (NVS, 'nvidia-settings -q GPUUtilization -t |') or die;
|
||||
while (<NVS>) {
|
||||
if (/^[a-zA-Z]*=(\d+), [a-zA-Z]*=(\d+), [a-zA-Z]*=(\d+), [a-zA-Z]*=(\d+)$/) {
|
||||
$gpu_usage = $1;
|
||||
$gpu_mem = $2;
|
||||
$gpu_video = $3;
|
||||
$gpu_pcie = $4;
|
||||
last;
|
||||
}
|
||||
}
|
||||
close(NVS);
|
||||
|
||||
$gpu_usage eq -1 and die 'Can\'t find GPU information';
|
||||
|
||||
# Print full_text, short_text
|
||||
printf "%.0f%% %.0f%% %.0f%% %.0f%%\n", $gpu_usage, $gpu_mem, $gpu_video, $gpu_pcie;
|
||||
printf "%.0f%%\n", $gpu_usage;
|
||||
|
||||
# Print color, if needed
|
||||
if ($gpu_usage >= $t_crit || $gpu_mem >= $t_crit || $gpu_video >= $t_crit || $gpu_pcie >= $t_crit) {
|
||||
print "#FF0000\n";
|
||||
exit 33;
|
||||
} elsif ($gpu_usage >= $t_warn || $gpu_mem >= $t_warn || $gpu_video >= $t_warn || $gpu_pcie >= $t_warn) {
|
||||
print "#FFBF00\n";
|
||||
}
|
||||
|
||||
exit 0;
|
9
home/.config/i3/i3blocks/internet
Executable file
9
home/.config/i3/i3blocks/internet
Executable file
@@ -0,0 +1,9 @@
|
||||
#!/bin/bash
|
||||
|
||||
if ping -c 1 1.1.1.1 > /dev/null 2>&1; then
|
||||
echo "😛"
|
||||
else
|
||||
echo "🤬"
|
||||
echo "$(date)" >> /tmp/internet-outages
|
||||
nfty send "Internet Outage"
|
||||
fi
|
34
home/.config/i3/i3blocks/load_average
Executable file
34
home/.config/i3/i3blocks/load_average
Executable file
@@ -0,0 +1,34 @@
|
||||
#!/bin/sh
|
||||
# Copyright (C) 2014 Julien Bonjean <julien@bonjean.info>
|
||||
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
load="$(cut -d ' ' -f1 /proc/loadavg)"
|
||||
cpus="$(nproc)"
|
||||
|
||||
# full text
|
||||
echo "$load"
|
||||
|
||||
# short text
|
||||
echo "$load"
|
||||
|
||||
# color if load is too high
|
||||
awk -v cpus=$cpus -v cpuload=$load '
|
||||
BEGIN {
|
||||
if (cpus <= cpuload) {
|
||||
print "#FF0000";
|
||||
exit 33;
|
||||
}
|
||||
}
|
||||
'
|
11
home/.config/i3/i3blocks/memory
Executable file
11
home/.config/i3/i3blocks/memory
Executable file
@@ -0,0 +1,11 @@
|
||||
#!/bin/sh
|
||||
|
||||
case $BLOCK_BUTTON in
|
||||
1) notify-send "<b>🧠 Memory hogs:</b>
|
||||
$(ps axch -o cmd:15,%mem --sort=-%mem | head)" ;;
|
||||
3) notify-send "<b>🧠 Memory module:</b>
|
||||
- Shows Memory Used/Total.
|
||||
- Click to show memory hogs." ;;
|
||||
esac
|
||||
|
||||
free -h | awk '/^Mem:/ {print $3 "/" $2}'
|
3
home/.config/i3/i3blocks/scratchpad
Executable file
3
home/.config/i3/i3blocks/scratchpad
Executable file
@@ -0,0 +1,3 @@
|
||||
#!/bin/bash
|
||||
|
||||
i3-dstatus scratchpad
|
35
home/.config/i3/i3blocks/spotify
Executable file
35
home/.config/i3/i3blocks/spotify
Executable file
@@ -0,0 +1,35 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
# Created by: https://github.com/firatakandere/i3blocks-spotify
|
||||
|
||||
import dbus
|
||||
import os
|
||||
import sys
|
||||
|
||||
|
||||
try:
|
||||
bus = dbus.SessionBus()
|
||||
spotify = bus.get_object("org.mpris.MediaPlayer2.spotify", "/org/mpris/MediaPlayer2")
|
||||
|
||||
|
||||
if os.environ.get('BLOCK_BUTTON'):
|
||||
control_iface = dbus.Interface(spotify, 'org.mpris.MediaPlayer2.Player')
|
||||
if (os.environ['BLOCK_BUTTON'] == '1'):
|
||||
control_iface.Previous()
|
||||
elif (os.environ['BLOCK_BUTTON'] == '2'):
|
||||
control_iface.PlayPause()
|
||||
elif (os.environ['BLOCK_BUTTON'] == '3'):
|
||||
control_iface.Next()
|
||||
|
||||
spotify_iface = dbus.Interface(spotify, 'org.freedesktop.DBus.Properties')
|
||||
props = spotify_iface.Get('org.mpris.MediaPlayer2.Player', 'Metadata')
|
||||
|
||||
if (sys.version_info > (3, 0)):
|
||||
print(str(props['xesam:artist'][0]) + " - " + str(props['xesam:title']))
|
||||
else:
|
||||
print(props['xesam:artist'][0] + " - " + props['xesam:title']).encode('utf-8')
|
||||
exit
|
||||
except dbus.exceptions.DBusException:
|
||||
exit
|
||||
|
||||
|
8
home/.config/i3/i3blocks/window
Executable file
8
home/.config/i3/i3blocks/window
Executable file
@@ -0,0 +1,8 @@
|
||||
#!/bin/bash
|
||||
|
||||
ACTIVE_WINDOW=$(xprop -id $(xprop -root _NET_ACTIVE_WINDOW | cut -d ' ' -f 5) WM_NAME | cut -d '"' -f 2)
|
||||
|
||||
if [[ "${ACTIVE_WINDOW}" != "" ]]; then
|
||||
echo "${ACTIVE_WINDOW}"
|
||||
echo ""
|
||||
fi
|
@@ -67,6 +67,8 @@ log_level err
|
||||
# * use_icon_hints - use icon window hints to
|
||||
# dtermine icon size
|
||||
|
||||
kludges force_icons_size
|
||||
|
||||
# max_geometry <geometry> # maximal tray dimensions; 0 in width/height means
|
||||
# no limit
|
||||
max_geometry 0x0
|
||||
@@ -76,7 +78,7 @@ no_shrink false
|
||||
|
||||
# parent_bg [<bool>] # whether to use pseudo-transparency
|
||||
# (looks better when reparented into smth like FvwmButtons)
|
||||
parent_bg true
|
||||
parent_bg false
|
||||
|
||||
# pixmap_bg <path_to_xpm> # use pixmap from specified xpm file for (tiled) background
|
||||
# pixmap_bg /home/user/.stalonetraybg.xpm
|
||||
@@ -130,7 +132,7 @@ window_strut auto
|
||||
|
||||
# window_type <type> # set the EWMH-compatible window type; one of:
|
||||
# desktop, dock, normal, toolbar, utility
|
||||
window_type normal
|
||||
window_type utility
|
||||
|
||||
# xsync [<bool>] # whether to operate on X server synchronously (SLOOOOW)
|
||||
xsync false
|
0
home/.local/share/applications/mimeapps.list
Normal file
0
home/.local/share/applications/mimeapps.list
Normal file
23
home/shell/aliases
Normal file
23
home/shell/aliases
Normal file
@@ -0,0 +1,23 @@
|
||||
# Common Aliases
|
||||
# These will be sourced into the main *sh config that's loaded
|
||||
|
||||
alias ls='ls --color=auto'
|
||||
alias ll='ls -l'
|
||||
alias la='ls -Alh'
|
||||
alias l='ls -C'
|
||||
alias ld='ls -ld'
|
||||
alias lo='ls -lh | sed -e 's/--x/1/g' -e 's/-w-/2/g' -e 's/-wx/3/g' -e 's/r--/4/g' -e 's/r-x/5/g' -e 's/rw-/6/g' -e 's/rwx/7/g' -e 's/---/0/g''
|
||||
alias back='cd $OLDPWD'
|
||||
alias clkear='clear'
|
||||
alias ckear='clear'
|
||||
alias reload='source ~/.zshrc'
|
||||
alias webshare='python -c "import SimpleHTTPServer;SimpleHTTPServer.test()"'
|
||||
alias ipa='ip addr|grep inet'
|
||||
alias cls='clear;ls'
|
||||
alias rvi='sudo -E vim'
|
||||
alias ta='tmux attach -t C0DE || tmux new -s C0DE'
|
||||
alias open='xdg-open'
|
||||
|
||||
|
||||
# Use `shred` if it exists, or just `rm -P`
|
||||
type "$shred" > /dev/null || alias shred='rm -P'
|
96
home/shell/bashrc
Normal file
96
home/shell/bashrc
Normal file
@@ -0,0 +1,96 @@
|
||||
# Include our shared environment stuff
|
||||
source ~/dotfiles/home/shell/env
|
||||
source ~/dotfiles/home/shell/aliases
|
||||
source ~/dotfiles/home/shell/functions
|
||||
|
||||
# Basic options
|
||||
export HISTCONTROL=ignoredups
|
||||
export COLORFGBG='default;default'
|
||||
|
||||
export LESS_TERMCAP_mb=$'\E[01;31m'
|
||||
export LESS_TERMCAP_md=$'\E[01;31m'
|
||||
export LESS_TERMCAP_me=$'\E[0m'
|
||||
export LESS_TERMCAP_se=$'\E[0m'
|
||||
export LESS_TERMCAP_so=$'\E[01;44;33m'
|
||||
export LESS_TERMCAP_ue=$'\E[0m'
|
||||
export LESS_TERMCAP_us=$'\E[01;32m'
|
||||
|
||||
shopt -s checkwinsize
|
||||
eval "$(dircolors -b /etc/dircolors)"
|
||||
|
||||
|
||||
# X Terminal titles
|
||||
case "$TERM" in
|
||||
xterm*|rxvt*)
|
||||
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"'
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
# Bash completion
|
||||
if [ -f /etc/bash_completion ]; then
|
||||
. /etc/bash_completion
|
||||
fi
|
||||
|
||||
echo "appending a '&' on the back of commands will run them in the background"
|
||||
echo "Don't forget ^s to pause commands and ^q to resume paused commands"
|
||||
|
||||
function timer_start {
|
||||
timer=${timer:-$SECONDS}
|
||||
}
|
||||
|
||||
function timer_stop {
|
||||
timer_show=$(($SECONDS - $timer))
|
||||
unset timer
|
||||
}
|
||||
|
||||
trap 'timer_start' DEBUG
|
||||
PROMPT_COMMAND=timer_stop
|
||||
|
||||
# Prompt
|
||||
# Black 0;30 Dark Gray 1;30
|
||||
# Blue 0;34 Light Blue 1;34
|
||||
# Green 0;32 Light Green 1;32
|
||||
# Cyan 0;36 Light Cyan 1;36
|
||||
# Red 0;31 Light Red 1;31
|
||||
# Purple 0;35 Light Purple 1;35
|
||||
# Brown 0;33 Yellow 1;33
|
||||
# Light Gray 0;37 White 1;37
|
||||
|
||||
BLACK='\[\033[0;30m\]'
|
||||
BLUE='\[\033[0;34m\]'
|
||||
GREEN='\[\033[0;32m\]'
|
||||
CYAN='\[\033[0;36m\]'
|
||||
RED='\[\033[0;31m\]'
|
||||
PURPLE='\[\033[0;35m\]'
|
||||
BROWN='\[\033[0;33m\]'
|
||||
LGRAY='\[\033[0;37m\]'
|
||||
DGRAY='\[\033[1;30m\]'
|
||||
LBLUE='\[\033[1;34m\]'
|
||||
LGREEN='\[\033[1;32m\]'
|
||||
LCYAN='\[\033[1;36m\]'
|
||||
LRED='\[\033[1;31m\]'
|
||||
LPURPLE='\[\033[1;35m\]'
|
||||
YELLOW='\[\033[1;33m\]'
|
||||
WHITE='\[\033[1;37m\]'
|
||||
|
||||
RBG='\e[41m'
|
||||
ALERT=${WHITE}${RBG} # Bold White on red background
|
||||
NC="\e[m" # Color Reset
|
||||
|
||||
PS1="\[\033]0;Bash | \u@\H:\w\007\]" # Add a dynamically changing window title - Shows current user@host:current directory (comment this and "$PS1" at beginning of next line when not an a terminal emulator)
|
||||
PS1="$PS1""${LGREEN}[${LPURPLE}\u${WHITE}@${LBLUE}\h${LGREEN}]-(${YELLOW}\w${LGREEN})"
|
||||
PS1="$PS1""\n [${LRED}\@ ${LGRAY}Last:${WHITE} \${timer_show}s ${LCYAN}Err:"
|
||||
|
||||
# Error code test - not working
|
||||
#if [[ \$? = "0" ]] # If last program exited with 0 (good exit)
|
||||
#then
|
||||
PS1="$PS1"" ${WHITE}\$?" # show white error code
|
||||
#else
|
||||
# PS1="$PS1"" ${LRED}\$?" # if last program exited with anything else, show red error code
|
||||
#fi
|
||||
|
||||
PS1="$PS1"" ${LPURPLE}BJobs:${PURPLE} \j ${LBLUE}Hist: ${LCYAN}\!${LGREEN}]\n ->${LGRAY} "
|
||||
#PS1="$PS1"" ${NC}"
|
48
home/shell/env
Normal file
48
home/shell/env
Normal file
@@ -0,0 +1,48 @@
|
||||
# Skip all this for non-interactive shells
|
||||
[[ -z "$PS1" ]] && return
|
||||
|
||||
# Force en_US UTF-8 environment
|
||||
export LC_ALL=en_US.UTF-8
|
||||
export LANG=en_US.UTF-8
|
||||
export LANGUAGE=en_US.UTF-8
|
||||
|
||||
# Terminal Editor
|
||||
export EDITOR=vim
|
||||
|
||||
# Paths
|
||||
export PATH=${HOME}/bin:$PATH:/usr/lib/wine/bin:/sbin:/usr/sbin:/usr/local/bin
|
||||
|
||||
# Give the path to the dotfiles
|
||||
export _DOTFILES="${HOME}/dotfiles"
|
||||
|
||||
# Allow automatic updates
|
||||
export DISABLE_DOTFILES_AUTO_UPDATE="FALSE"
|
||||
|
||||
# Set "true" to update without asking first
|
||||
export DISABLE_DOTFILES_UPDATE_PROMPT="FALSE"
|
||||
|
||||
# Update every 2 weeks (OMZ default)
|
||||
export UPDATE_DOTFILES_DAYS=13
|
||||
|
||||
# Whether or not to automatically connect to a TMUX session when opening the shell
|
||||
export ENABLE_TMUXAC="FALSE"
|
||||
|
||||
# If there is not an active tmux session, we probably want one
|
||||
# Otherwise, the shell will not open the session again (eg. opening tabs, new terminals)
|
||||
if $(tmux list-sessions >> /dev/null 2>&1); then
|
||||
export TMUXATT="TRUE"
|
||||
else
|
||||
export TMUXATT="FALSE"
|
||||
fi
|
||||
|
||||
# Automatically attach tmux session "C0DE"
|
||||
if [[ -z "$TMUX" && "$TMUXATT" != "TRUE" && "$ENABLE_TMUXAC" != "FALSE" ]]; then
|
||||
tmux attach -t C0DE || tmux new -s C0DE
|
||||
fi
|
||||
|
||||
# Enable shell-history for interactive shells
|
||||
# https://github.com/pawamoy/shell-history
|
||||
#if [[ $- == *i* ]] && command -v shellhistory-location &>/dev/null; then
|
||||
# . $(shellhistory-location)
|
||||
# shellhistory enable
|
||||
#fi
|
78
home/shell/functions
Normal file
78
home/shell/functions
Normal file
@@ -0,0 +1,78 @@
|
||||
# Functions gathered from around the internet
|
||||
# Takes 1st argument and attempts to extract them in the current directory
|
||||
extract () { # Extracts most common compressed files
|
||||
if [ -f $1 ] ; then
|
||||
case $1 in
|
||||
*.tar.bz2) tar xjf $1 ;;
|
||||
*.tar.gz) tar xzf $1 ;;
|
||||
*.bz2) bunzip2 $1 ;;
|
||||
*.rar) rar x $1 ;;
|
||||
*.gz) gunzip $1 ;;
|
||||
*.tar) tar xf $1 ;;
|
||||
*.tbz2) tar xjf $1 ;;
|
||||
*.tgz) tar xzf $1 ;;
|
||||
*.zip) unzip $1 ;;
|
||||
*.Z) uncompress $1 ;;
|
||||
*) echo "'$1' cannot be extracted via extract()" ;;
|
||||
esac
|
||||
else
|
||||
echo "'$1' is not a valid file"
|
||||
fi
|
||||
}
|
||||
# Takes 1st argument and makes a .tar.gz archive
|
||||
maketgz() { tar cvzf "${1%%/}.tar.gz" "${1%%/}/"; }
|
||||
# Takes 1st argument and makes a .zip archive
|
||||
makezip() { zip -r "${1%%/}.zip" "$1" ; }
|
||||
# Generate password - 1st argument is the number of characters, defaults to 20
|
||||
gpass() {
|
||||
local l=$1
|
||||
[ "$l" == "" ] && l=20
|
||||
tr -dc A-Za-z0-9-!@%^*_ < /dev/urandom | head -c ${l} | xargs
|
||||
}
|
||||
# Shows the current PS list for the signed in user - Not cygwin compatible
|
||||
myps() { ps $@ -u $USER -o pid,%cpu,%mem,bsdtime,command ; }
|
||||
# Searches the process list (ps) for 1st argument
|
||||
psgrep() {
|
||||
if [ ! -z $1 ] ; then
|
||||
echo "Grepping for processes matching $1..."
|
||||
ps aux | grep $1 | grep -v grep
|
||||
else
|
||||
echo "!! Need name to grep for"
|
||||
fi
|
||||
}
|
||||
# dirsize - finds directory sizes and lists them for the current directory
|
||||
dirsize (){
|
||||
du -shx * .[a-zA-Z0-9_]* 2> /dev/null | \
|
||||
egrep '^ *[0-9.]*[MG]' | sort -n > /tmp/list
|
||||
egrep '^ *[0-9.]*M' /tmp/list
|
||||
egrep '^ *[0-9.]*G' /tmp/list
|
||||
rm -rf /tmp/list
|
||||
}
|
||||
# Usage: up <Number of directories>. Blank for up one dir.
|
||||
up() {
|
||||
local d=""
|
||||
limit=$1
|
||||
for ((i=1; i <= limit; i++)); do
|
||||
d=$d/..
|
||||
done
|
||||
d=$(echo $d | sed 's/^\///')
|
||||
if [ -z "$d" ]; then
|
||||
d=..
|
||||
fi
|
||||
cd $d
|
||||
}
|
||||
# Usage: search <regex string>
|
||||
search () {
|
||||
grep -r "$1" | fzf
|
||||
}
|
||||
# Usage: replay <number of commands> to repeat. Blank for 1
|
||||
replay() {
|
||||
from="${1:-2}"
|
||||
to="${2:-1}"
|
||||
if [ "$from" -ne "$to" ]; then
|
||||
for i in `seq "$from" -1 "$(($to + 1))"`; do
|
||||
printf "$(fc -ln -${i} -${i}) && "
|
||||
done
|
||||
fi
|
||||
$(fc -ln -${to} -${to})
|
||||
}
|
81
home/shell/zshrc
Normal file
81
home/shell/zshrc
Normal file
@@ -0,0 +1,81 @@
|
||||
# Include our shared shell stuff
|
||||
source ~/dotfiles/home/shell/env
|
||||
source ~/dotfiles/home/shell/aliases
|
||||
source ~/dotfiles/home/shell/functions
|
||||
|
||||
# History Settings
|
||||
export HISTIGNORE="&:ls:[bf]g:exit:reset:clear:cd:cd ..:cd..:replay"
|
||||
export HISTSIZE=25000
|
||||
export HISTFILE=~/.zsh_history
|
||||
export SAVEHIST=10000
|
||||
setopt INC_APPEND_HISTORY
|
||||
setopt HIST_IGNORE_ALL_DUPS
|
||||
setopt HIST_IGNORE_SPACE
|
||||
setopt HIST_REDUCE_BLANKS
|
||||
setopt HIST_VERIFY
|
||||
|
||||
# Say how long a command took, if it took more than 15 seconds
|
||||
export REPORTTIME=15
|
||||
|
||||
# Prompts for confirmation after 'rm *' etc
|
||||
# Helps avoid mistakes like 'rm * o' when 'rm *.o' was intended
|
||||
setopt RM_STAR_WAIT
|
||||
|
||||
# Background processes aren't killed on exit of shell
|
||||
setopt AUTO_CONTINUE
|
||||
|
||||
# Don’t write over existing files with >, use >! instead
|
||||
setopt NOCLOBBER
|
||||
|
||||
# Don’t nice background processes
|
||||
setopt NO_BG_NICE
|
||||
|
||||
# Makes Alt-s insert a sudo at beginning of prompt
|
||||
function insert_sudo {
|
||||
if [[ $BUFFER != "sudo "* ]]; then
|
||||
BUFFER="sudo $BUFFER"; CURSOR+=6
|
||||
fi
|
||||
}
|
||||
zle -N insert-sudo insert_sudo
|
||||
bindkey "^[s" insert-sudo
|
||||
|
||||
# Check for updates...
|
||||
# Stolen and modified Oh-My-ZSH's update system
|
||||
if [ "$DISABLE_DOTFILES_AUTO_UPDATE" != "true" ]; then
|
||||
env ZSH=$ZSH _DOTFILES=$_DOTFILES DISABLE_UPDATE_PROMPT=$DISABLE_DOTFILES_UPDATE_PROMPT zsh -f $_DOTFILES/.bin/check_for_upgrade.sh
|
||||
fi
|
||||
|
||||
# Oh-My-ZSH Options below this line
|
||||
|
||||
# Define Oh-My-ZSH root
|
||||
ZSH=$HOME/.oh-my-zsh
|
||||
|
||||
# Would you like to use another custom folder than $ZSH/custom?
|
||||
ZSH_CUSTOM=$_DOTFILES/omz
|
||||
|
||||
# Theme for Oh-My-ZSH
|
||||
ZSH_THEME="darkblood"
|
||||
|
||||
# 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"
|
||||
|
||||
# Which plugins would you like to load? (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 \
|
||||
catimg \
|
||||
fancy-ctrl-z \
|
||||
emoji \
|
||||
aws \
|
||||
jsontools \
|
||||
zsh-syntax-highlighting) # zsh-syntax-highlighting must remain the last plugin
|
||||
|
||||
# Load oh-my-zsh
|
||||
source $ZSH/oh-my-zsh.sh
|
Reference in New Issue
Block a user