Split up configs into seperate packages

This commit is contained in:
natemaia
2018-12-13 22:02:16 -08:00
parent 98ae5d737b
commit ccdab4657c
67 changed files with 6 additions and 1570 deletions

90
base/.Xresources Normal file
View File

@ -0,0 +1,90 @@
! Base colors
*.foreground: #E1E1E1
*.background: #1c2023
*.cursorColor: #778899
*.color0: #1c2023
*.color1: #bf616a
*.color2: #a3be8c
*.color3: #ebcb8b
*.color4: #8fa1b3
*.color5: #b48ead
*.color6: #96b5b4
*.color7: #E1E1E1
*.color8: #919ba0
*.color9: #bf616a
*.color10: #a3be8c
*.color11: #ebcb8b
*.color12: #8fa1b3
*.color13: #b48ead
*.color14: #96b5b4
*.color15: #c0c5ce
! Rofi
rofi.font: monospace 12
rofi.padding: 20
rofi.line-padding: 2
rofi.color-enabled: true
rofi.hide-scrollbar: true
rofi.separator-style: solid
rofi.color-window: #1c2023, #919ba0, #1c2023
rofi.color-normal: #1c2023, #919ba0, #1c2023, #a4a4a4, #1c2023
rofi.color-urgent: argb:00000000, #f43753, argb:00000000, argb:00000000, #e29a49
rofi.color-active: argb:00000000, #49bbfb, argb:00000000, argb:00000000, #e29a49
rofi.kb-cancel: Escape,Alt+F1
! xterm
xterm*termName: xterm-256color
xterm*font: monospace
xterm*faceName: monospace:size=11
xterm*loginShell: true
xterm*vt100*geometry: 90x34
xterm*saveLines: 2000
xterm*charClass: 33:48,35:48,37:48,43:48,45-47:48,64:48,95:48,126:48
xterm*eightBitInput: false
! URxvt
URxvt*saveline: 15000
URxvt*termName: rxvt-256color
URxvt*iso14755: false
URxvt*depth: 32
URxvt*background: [95]#1C2023
URxvt*scrollBar: false
URxvt*scrollBar_right: false
URxvt*internalBorder: 0
URxvt*externalBorder: 0
URxvt*letterSpace: -1
URxvt.font: xft:monospace:size=11
URxvt.perl-ext-common: default,clipboard,url-select,keyboard-select
URxvt.copyCommand: xclip -i -selection clipboard
URxvt.pasteCommand: xclip -o -selection clipboard
URxvt.keysym.m-c: perl:clipboard:copy
URxvt.keysym.m-v: perl:clipboard:paste
URxvt.urlLauncher: exo-open
URxvt.underlineURLs: true
URxvt.urlButton: 1
URxvt.geometry: 90x34
URxvt.tabbed.tabbar-fg: 4
URxvt.tabbed.tabbar-bg: 16
URxvt.tabbed.tab-fg: 15
URxvt.tabbed.tab-bg: 4
URxvt*buffered: false
! UXTerm
UXTerm*termName: xterm-256color
UXTerm*cursorColor: white
UXTerm*VT100.geometry: 90x34
UXTerm*font: monospace
UXTerm*faceSize: 11
UXTerm*dynamicColors: true
UXTerm*utf8: 2
UXTerm*eightBitInput: true
UXTerm*saveLines: 10000
UXTerm*scrollKey: true
UXTerm*scrollTtyOutput: false
UXTerm*scrollBar: false
UXTerm*rightScrollBar: false
UXTerm*jumpScroll: true
UXTerm*multiScroll: true
UXTerm*toolBar: false

64
base/.config/compton.conf Normal file
View File

@ -0,0 +1,64 @@
# Shadow
shadow = true;
no-dnd-shadow = true;
no-dock-shadow = true;
shadow-radius = 7;
shadow-offset-x = -7;
shadow-offset-y = -7;
shadow-opacity = 0.60;
# Opacity
menu-opacity = 1.0;
inactive-opacity = 1.0;
active-opacity = 1.0;
inactive-opacity-override = false;
# Fade
fading = true;
fade-delta = 8.0;
fade-in-step = 0.03;
fade-out-step = 0.028;
alpha-step = 0.06;
# Backend
backend = "xrender";
vsync = "none";
mark-wmwin-focused = true;
unredir-if-possible = true;
detect-rounded-corners = true;
opacity-rule = [
"0:_NET_WM_STATE@:32a * = '_NET_WM_STATE_HIDDEN'"
];
shadow-exclude = [
"name *?= 'Notification'",
"class_g *?= 'jgmenu'",
"class_g *?= 'VirtualBox'",
"class_g *?= 'Conky'",
"class_g *?= 'Notify-osd'",
"class_g *?= 'cairo-dock'",
"class_g *?= 'trayer'",
"class_g *?= 'i3-frame'",
"class_g *?= 'firefox'",
"class_g *?= 'navigator'",
"class_g *?= 'Cairo-clock'",
"class_g *?= 'Cairo-dock'",
"class_g *?= 'plank'",
"class_g *?= 'Docky'",
"_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'",
"_GTK_FRAME_EXTENTS@:c"
];
focus-exclude = [
"class_g *?= 'Cairo-clock'",
"class_g *?= 'Virtualbox'",
"class_g *?= 'trayer'",
"_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'",
"name *?= 'Authy'"
];
wintypes:
{
tooltip = { fade = true; shadow = true; focus = true; };
};

369
base/.config/dunst/dunstrc Normal file
View File

@ -0,0 +1,369 @@
[global]
### Display ###
# Which monitor should the notifications be displayed on.
monitor = 0
# Display notification on focused monitor. Possible modes are:
# mouse: follow mouse pointer
# keyboard: follow window with keyboard focus
# none: don't follow anything
#
# "keyboard" needs a window manager that exports the
# _NET_ACTIVE_WINDOW property.
# This should be the case for almost all modern window managers.
#
# If this option is set to mouse or keyboard, the monitor option
# will be ignored.
follow = none
# The geometry of the window:
# [{width}]x{height}[+/-{x}+/-{y}]
# The geometry of the message window.
# The height is measured in number of notifications everything else
# in pixels. If the width is omitted but the height is given
# ("-geometry x2"), the message window expands over the whole screen
# (dmenu-like). If width is 0, the window expands to the longest
# message displayed. A positive x is measured from the left, a
# negative from the right side of the screen. Y is measured from
# the top and down respectively.
# The width can be negative. In this case the actual width is the
# screen width minus the width defined in within the geometry option.
geometry = "597x25+100+50"
# Show how many messages are currently hidden (because of geometry).
indicate_hidden = yes
# Shrink window if it's smaller than the width. Will be ignored if
# width is 0.
shrink = no
# The transparency of the window. Range: [0; 100].
# This option will only work if a compositing window manager is
# present (e.g. xcompmgr, compiz, etc.).
transparency = 0
# The height of the entire notification. If the height is smaller
# than the font height and padding combined, it will be raised
# to the font height and padding.
notification_height = 0
# Draw a line of "separator_height" pixel height between two
# notifications.
# Set to 0 to disable.
separator_height = 0
# Padding between text and separator.
padding = 8
# Horizontal padding.
horizontal_padding = 8
# Defines width in pixels of frame around the notification window.
# Set to 0 to disable.
frame_width = 1
# Defines color of the frame around the notification window.
frame_color = "#a4a4a4"
# Define a color for the separator.
# possible values are:
# * auto: dunst tries to find a color fitting to the background;
# * foreground: use the same color as the foreground;
# * frame: use the same color as the frame;
# * anything else will be interpreted as a X color.
separator_color = frame
# Sort messages by urgency.
sort = yes
# Don't remove messages, if the user is idle (no mouse or keyboard input)
# for longer than idle_threshold seconds.
# Set to 0 to disable.
# Transient notifications ignore this setting.
idle_threshold = 120
### Text ###
font = sans 10
# The spacing between lines. If the height is smaller than the
# font height, it will get raised to the font height.
line_height = 0
# Possible values are:
# full: Allow a small subset of html markup in notifications:
# <b>bold</b>
# <i>italic</i>
# <s>strikethrough</s>
# <u>underline</u>
#
# For a complete reference see
# <http://developer.gnome.org/pango/stable/PangoMarkupFormat.html>.
#
# strip: This setting is provided for compatibility with some broken
# clients that send markup even though it's not enabled on the
# server. Dunst will try to strip the markup but the parsing is
# simplistic so using this option outside of matching rules for
# specific applications *IS GREATLY DISCOURAGED*.
#
# no: Disable markup parsing, incoming notifications will be treated as
# plain text. Dunst will not advertise that it has the body-markup
# capability if this is set as a global setting.
#
# It's important to note that markup inside the format option will be parsed
# regardless of what this is set to.
markup = full
# The format of the message. Possible variables are:
# %a appname
# %s summary
# %b body
# %i iconname (including its path)
# %I iconname (without its path)
# %p progress value if set ([ 0%] to [100%]) or nothing
# %n progress value if set without any extra characters
# %% Literal %
# Markup is allowed
format = "<b>%s</b>\n%b"
# Alignment of message text.
# Possible values are "left", "center" and "right".
alignment = left
# Show age of message if message is older than show_age_threshold
# seconds.
# Set to -1 to disable.
show_age_threshold = 60
# Split notifications into multiple lines if they don't fit into
# geometry.
word_wrap = yes
# When word_wrap is set to no, specify where to make an ellipsis in long lines.
# Possible values are "start", "middle" and "end".
ellipsize = middle
# Ignore newlines '\n' in notifications.
ignore_newline = no
# Merge multiple notifications with the same content
stack_duplicates = true
# Hide the count of merged notifications with the same content
hide_duplicate_count = false
# Display indicators for URLs (U) and actions (A).
show_indicators = yes
### Icons ###
# Align icons left/right/off
icon_position = right
# Scale larger icons down to this size, set to 0 to disable
max_icon_size = 150
# Paths to default icons.
icon_path = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/
### History ###
# Should a notification popped up from history be sticky or timeout
# as if it would normally do.
sticky_history = yes
# Maximum amount of notifications kept in history
history_length = 200
### Misc/Advanced ###
# dmenu path.
dmenu = /usr/bin/dmenu -p dunst:
# Browser for opening urls in context menu.
browser = /usr/bin/firefox -new-tab
# Always run rule-defined scripts, even if the notification is suppressed
always_run_script = true
# Define the title of the windows spawned by dunst
title = Dunst
# Define the class of the windows spawned by dunst
class = Dunst
# Print a notification on startup.
# This is mainly for error detection, since dbus (re-)starts dunst
# automatically after a crash.
startup_notification = false
# Manage dunst's desire for talking
# Can be one of the following values:
# crit: Critical features. Dunst aborts
# warn: Only non-fatal warnings
# mesg: Important Messages
# info: all unimportant stuff
# debug: all less than unimportant stuff
verbosity = mesg
# Define the corner radius of the notification window
# in pixel size. If the radius is 0, you have no rounded
# corners.
# The radius will be automatically lowered if it exceeds half of the
# notification height to avoid clipping text and/or icons.
corner_radius = 0
### Legacy
# Use the Xinerama extension instead of RandR for multi-monitor support.
# This setting is provided for compatibility with older nVidia drivers that
# do not support RandR and using it on systems that support RandR is highly
# discouraged.
#
# By enabling this setting dunst will not be able to detect when a monitor
# is connected or disconnected which might break follow mode if the screen
# layout changes.
force_xinerama = false
### mouse
# Defines action of mouse event
# Possible values are:
# * none: Don't do anything.
# * do_action: If the notification has exactly one action, or one is marked as default,
# invoke it. If there are multiple and no default, open the context menu.
# * close_current: Close current notification.
# * close_all: Close all notifications.
mouse_left_click = close_current
mouse_middle_click = do_action
mouse_right_click = close_all
# Experimental features that may or may not work correctly. Do not expect them
# to have a consistent behaviour across releases.
[experimental]
# Calculate the dpi to use on a per-monitor basis.
# If this setting is enabled the Xft.dpi value will be ignored and instead
# dunst will attempt to calculate an appropriate dpi value for each monitor
# using the resolution and physical size. This might be useful in setups
# where there are multiple screens with very different dpi values.
per_monitor_dpi = false
[shortcuts]
# Shortcuts are specified as [modifier+][modifier+]...key
# Available modifiers are "ctrl", "mod1" (the alt-key), "mod2",
# "mod3" and "mod4" (windows-key).
# Xev might be helpful to find names for keys.
# Close notification.
close = ctrl+space
# Close all notifications.
close_all = ctrl+shift+space
# Redisplay last message(s).
# On the US keyboard layout "grave" is normally above TAB and left
# of "1". Make sure this key actually exists on your keyboard layout,
# e.g. check output of 'xmodmap -pke'
history = ctrl+grave
# Context menu.
context = ctrl+shift+period
[urgency_low]
# IMPORTANT: colors have to be defined in quotation marks.
# Otherwise the "#" and following would be interpreted as a comment.
background = "#1c2023"
foreground = "#a4a4a4"
timeout = 5
# Icon for notifications with low urgency, uncomment to enable
#icon = /path/to/icon
[urgency_normal]
background = "#1c2023"
foreground = "#a4a4a4"
timeout = 5
# Icon for notifications with normal urgency, uncomment to enable
#icon = /path/to/icon
[urgency_critical]
background = "#1c2023"
foreground = "#a4a4a4"
frame_color = "#a4a4a4"
timeout = 10
# Icon for notifications with critical urgency, uncomment to enable
#icon = /path/to/icon
# Every section that isn't one of the above is interpreted as a rules to
# override settings for certain messages.
# Messages can be matched by "appname", "summary", "body", "icon", "category",
# "msg_urgency" and you can override the "timeout", "urgency", "foreground",
# "background", "frame_color", "new_icon" and "format", "fullscreen".
# Shell-like globbing will get expanded.
#
# SCRIPTING
# You can specify a script that gets run when the rule matches by
# setting the "script" option.
# The script will be called as follows:
# script appname summary body icon urgency
# where urgency can be "LOW", "NORMAL" or "CRITICAL".
#
# NOTE: if you don't want a notification to be displayed, set the format
# to "".
# NOTE: It might be helpful to run dunst -print in a terminal in order
# to find fitting options for rules.
# fullscreen values
# show: show the notifications, regardless if there is a fullscreen window opened
# delay: displays the new notification, if there is no fullscreen window active
# If the notification is already drawn, it won't get undrawn.
# pushback: same as delay, but when switching into fullscreen, the notification will get
# withdrawn from screen again and will get delayed like a new notification
#[fullscreen_delay_everything]
# fullscreen = delay
#[fullscreen_show_critical]
# msg_urgency = critical
# fullscreen = show
#[espeak]
# summary = "*"
# script = dunst_espeak.sh
#[script-test]
# summary = "*script*"
# script = dunst_test.sh
#[ignore]
# # This notification will not be displayed
# summary = "foobar"
# format = ""
#[history-ignore]
# # This notification will not be saved in history
# summary = "foobar"
# history_ignore = yes
#[signed_on]
# appname = Pidgin
# summary = "*signed on*"
# urgency = low
#
#[signed_off]
# appname = Pidgin
# summary = *signed off*
# urgency = low
#
#[says]
# appname = Pidgin
# summary = *says*
# urgency = critical
#
#[twitter]
# appname = Pidgin
# summary = *twitter.com*
# urgency = normal
#
# vim: ft=cfg

View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<match target="font">
<!-- <edit mode="assign" name="hinting" > -->
<!-- <bool>true</bool> -->
<!-- </edit> -->
<!-- <edit mode="assign" name="hintstyle" > -->
<!-- <const>hintslight</const> -->
<!-- </edit> -->
<!-- <edit mode="assign" name="rgba" > -->
<!-- <const>rgb</const> -->
<!-- </edit> -->
<edit mode="assign" name="antialias" >
<bool>true</bool>
</edit>
<!-- <edit mode="assign" name="lcdfilter"> -->
<!-- <const>lcddefault</const> -->
<!-- </edit> -->
</match>
<alias>
<family>serif</family>
<prefer>
<family>DejaVu Serif</family>
</prefer>
</alias>
<alias>
<family>sans-serif</family>
<prefer>
<family>DejaVu Sans</family>
</prefer>
</alias>
<alias>
<family>sans</family>
<prefer>
<family>DejaVu Sans</family>
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>DejaVu Sans Mono</family>
</prefer>
</alias>
<alias>
<family>mono</family>
<prefer>
<family>DejaVu Sans Mono</family>
</prefer>
</alias>
</fontconfig>

View File

@ -0,0 +1,125 @@
# Geany Base16 Template
# Rob Loach (http://robloach.net)
#
# Copyright (c) 2013 Rob Loach
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
# Edited for use with ArchLabs Linux by Matthew Dobson (matt@archlabslinux.com) July 2018.
# Minor colour changes to suit default theme ArchLabs-dARK.
[theme_info]
name=ArchLabs-dARK
description=Based upon original colour scheme Base16 Twilight, ArchLabs-dARK provides carefully chosen syntax highlighting and a default set of sixteen colors suitable for a wide range of applications.
version=0.2.2
author=Rob Loach (http://robloach.net)
url=http://github.com/robloach/base16-geany
[named_styles]
default=#a4a4a4;#292929;false;false
error=#cf6a4c
# Editor Styles
#-------------------------------------------------------------------------------
selection=#838184;#5f5a60;false;true
current_line=;#464b50;true;false
brace_good=#f9ee98;;true;false
brace_bad=#cf6a4c;#464b50;true;false
margin_line_number=#5f5a60;#464b50;true;false
margin_folding=#5f5a60
fold_symbol_highlight=#323537
indent_guide=#464b50
caret=#a7a7a7
marker_line=#a4a4a4
marker_search=#a4a4a4;#8f9d6a;false;false
marker_mark=#a4a4a4;#8f9d6a;
call_tips=#838184;;false;false
white_space=#5f5a60;;true;false
# Programming languages
#-------------------------------------------------------------------------------
comment=#838184
comment_doc=#838184
comment_line=#838184
comment_line_doc=#838184
comment_doc_keyword=#838184;;true;false
comment_doc_keyword_error=#838184;;false;true
number=#8f9d6a
number_1=#cda869
number_2=#cda869
type=#f9ee98;;true
# Person.rb = Person
class=#f9ee98;;true
# Person.rb = initialize
# PHP
function=#7587a6;;false;false
parameter=#c3c3c3
keyword=#9b703f;;true;false
# Person.rb = class, include, def, end, attr_accessor, etc
# PHP = include_once(), if elseif else
keyword_1=#9b859d;;false;false
keyword_2=#cda869;;false;false
keyword_3=#a7a7a7;;false;false
keyword_4=#cda869;;false;true
identifier=#a7a7a7;;false;false
# Person.rb = ActiveModel::Conversion
identifier_1=#a7a7a7;;false;false
identifier_2=#a7a7a7;;false;false
identifier_3=#7587a6;;true;false
identifier_4=#9b859d;;false;false
string=#cda869
string_1=#8f9d6a
string_2=#8f9d6a
string_3=#a7a7a7
string_4=#7587a6
string_eol=#9b859d;;false;true
character=string_1
backtick=#f9ee98
here_doc=#f9ee98
scalar=#f9ee98
label=#c3c3c3;;true;false
# Person.rb = :name
# PHP = $_GET
preprocessor=#7587a6
regex=number_1
operator=#afc4db;;false;false
decorator=#7587a6;;false;false
other=#cf6a4c
# Markup-type languages
#-------------------------------------------------------------------------------
tag=#f9ee98;;true;false
tag_unknown=#cf6a4c;;true;false
tag_end=#f9ee98;;false;false
attribute=#cda869;;false;false
attribute_unknown=#8f9d6a;;false;false
value=#7587a6
entity=#f9ee98
# Diff
#-------------------------------------------------------------------------------
line_added=#8f9d6a
line_removed=#cf6a4c
line_changed=#7587a6

View File

@ -0,0 +1,122 @@
# Geany Base16 Template
# Rob Loach (http://robloach.net)
#
# Copyright (c) 2013 Rob Loach
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
[theme_info]
name=ArchLabs Dark
description=Based on Ocean providing carefully chosen syntax highlighting and a default set of sixteen colors suitable for a wide range of applications.
version=0.2.2
author=Rob Loach (http://robloach.net)
url=http://github.com/robloach/base16-geany
[named_styles]
default=#eff1f5;#2b303b;false;false
error=#bf616a
# Editor Styles
#-------------------------------------------------------------------------------
selection=#a7adba;#65737e;false;true
current_line=;#4f5b66;false;false
brace_good=#ebcb8b;;true;false
brace_bad=#bf616a;#4f5b66;true;false
margin_line_number=#65737e;#4f5b66;true;false
margin_folding=#65737e
fold_symbol_highlight=#343d46
indent_guide=#4f5b66
caret=#c0c5ce
marker_line=#eff1f5
marker_search=#eff1f5;#a3be8c;false;false
marker_mark=#eff1f5;#a3be8c;
call_tips=#a7adba;;false;false
white_space=#65737e;;true;false
# Programming languages
#-------------------------------------------------------------------------------
comment=#a7adba
comment_doc=#a7adba
comment_line=#a7adba
comment_line_doc=#a7adba
comment_doc_keyword=#a7adba;;true;false
comment_doc_keyword_error=#a7adba;;false;true
number=#a3be8c
number_1=#d08770
number_2=#d08770
type=#ebcb8b;;true
# Person.rb = Person
class=#ebcb8b;;true
# Person.rb = initialize
# PHP
function=#8fa1b3;;false;false
parameter=#dfe1e8
keyword=#ab7967;;true;false
# Person.rb = class, include, def, end, attr_accessor, etc
# PHP = include_once(), if elseif else
keyword_1=#b48ead;;false;false
keyword_2=#d08770;;false;false
keyword_3=#c0c5ce;;false;false
keyword_4=#d08770;;false;true
identifier=#c0c5ce;;false;false
# Person.rb = ActiveModel::Conversion
identifier_1=#c0c5ce;;false;false
identifier_2=#c0c5ce;;false;false
identifier_3=#8fa1b3;;true;false
identifier_4=#b48ead;;false;false
string=#d08770
string_1=#a3be8c
string_2=#a3be8c
string_3=#c0c5ce
string_4=#8fa1b3
string_eol=#b48ead;;false;true
character=string_1
backtick=#ebcb8b
here_doc=#ebcb8b
scalar=#ebcb8b
label=#dfe1e8;;true;false
# Person.rb = :name
# PHP = $_GET
preprocessor=#8fa1b3
regex=number_1
operator=#96b5b4;;false;false
decorator=#8fa1b3;;false;false
other=#bf616a
# Markup-type languages
#-------------------------------------------------------------------------------
tag=#ebcb8b;;true;false
tag_unknown=#bf616a;;true;false
tag_end=#ebcb8b;;false;false
attribute=#d08770;;false;false
attribute_unknown=#a3be8c;;false;false
value=#8fa1b3
entity=#ebcb8b
# Diff
#-------------------------------------------------------------------------------
line_added=#a3be8c
line_removed=#bf616a
line_changed=#8fa1b3

View File

@ -0,0 +1,114 @@
# Geany Base16 Template
# Rob Loach (http://robloach.net)
#
# Copyright (c) 2013 Rob Loach
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
[theme_info]
name=ArchLabs Light
description=Based on Ocean providing carefully chosen syntax highlighting and a default set of sixteen colors suitable for a wide range of applications.
version=0.2.2
author=Rob Loach (http://robloach.net)
url=http://github.com/robloach/base16-geany
[named_styles]
default=#4f5b66;#E0E0E0;false;false
error=#EF7878
# Editor Styles
#-------------------------------------------------------------------------------
selection=#a7adba;#bcbbb8;false;true
current_line=;#e5e3de;false;false
brace_good=#064768;;false;false
brace_bad=#EF7878;#4f5b66;false;false
margin_line_number=#65737e;#4f5b66;true;false
margin_folding=#65737e
fold_symbol_highlight=#343d46
indent_guide=#4f5b66
caret=#686c72
marker_line=#686c72
marker_search=#686c72;#064768;false;false
marker_mark=#686c72;#064768;
call_tips=#686c72;;false;false
white_space=#4d5966;;true;false
# Programming languages
#-------------------------------------------------------------------------------
comment=#a5a4a2
comment_doc=#a5a4a2
comment_line=#a5a4a2
comment_line_doc=#a5a4a2
comment_doc_keyword=#064768;;true;false
comment_doc_keyword_error=#72483b;;false;true
number=#4E88CF
number_1=#4E88CF
number_2=#4E88CF
type=#FF9157;;true
class=#FF9157;;true
function=#FF9157;;false;false
parameter=#064768
keyword=#78A078;;true;false
keyword_1=#78A078;;false;false
keyword_2=#78A078;;false;false
keyword_3=#78A078;;false;false
keyword_4=#AF86C8;;false;true
identifier=#CE9D00;;false;false
identifier_1=#CE9D00;;false;false
identifier_2=#AF86C8;;false;false
identifier_3=#AF86C8;;true;false
identifier_4=#AF86C8;;false;false
string=#4ec0e8
string_1=#4ec0e8
string_2=#4ec0e8
string_3=#4ec0e8
string_4=#4ec0e8
string_eol=#EF7878;;false;true
character=string_1
backtick=#4E88CF
here_doc=#4E88CF
scalar=#4E88CF
label=#4E88CF;;true;false
preprocessor=#4E88CF
regex=number_1
operator=#4E88CF;;false;false
decorator=#4E88CF;;false;false
other=#4E88CF
# Markup-type languages
#-------------------------------------------------------------------------------
tag=#FF9157;;true;false
tag_unknown=#EF7878;;true;false
tag_end=#FF9157;;false;false
attribute=#78a078;;false;false
attribute_unknown=#a56f5e;;false;false
value=#4E88CF
entity=#FF9157
# Diff
#-------------------------------------------------------------------------------
line_added=#78a078
line_removed=#EF7878
line_changed=#4E88CF

View File

@ -0,0 +1,218 @@
[geany]
default_open_path=
cmdline_new_files=true
notebook_double_click_hides_widgets=false
tab_close_switch_to_mru=false
tab_pos_sidebar=2
sidebar_pos=0
symbols_sort_mode=0
msgwin_orientation=0
highlighting_invert_all=false
pref_main_search_use_current_word=true
check_detect_indent=true
detect_indent_width=true
use_tab_to_indent=true
pref_editor_tab_width=4
indent_mode=2
indent_type=1
virtualspace=1
autocomplete_doc_words=true
completion_drops_rest_of_word=true
autocompletion_max_entries=30
autocompletion_update_freq=250
color_scheme=archlabs-dARK.conf
scroll_lines_around_cursor=8
mru_length=10
disk_check_timeout=30
show_editor_scrollbars=true
brace_match_ltgt=false
use_gtk_word_boundaries=true
complete_snippets_whilst_editing=false
use_atomic_file_saving=false
gio_unsafe_save_backup=false
use_gio_unsafe_file_saving=true
keep_edit_history_on_reload=true
show_keep_edit_history_on_reload_msg=true
indent_hard_tab_width=4
find_selection_type=0
extract_filetype_regex=-\\*-\\s*([^\\s]+)\\s*-\\*-
replace_and_find_by_default=true
show_symbol_list_expanders=true
compiler_tab_autoscroll=true
allow_always_save=false
statusbar_template=line: %l / %L col: %c sel: %s %w %t %mmode: %M encoding: %e filetype: %f scope: %S
new_document_after_close=false
msgwin_status_visible=true
msgwin_compiler_visible=true
msgwin_messages_visible=true
msgwin_scribble_visible=true
documents_show_paths=true
sidebar_page=0
pref_main_load_session=true
pref_main_project_session=true
pref_main_project_file_in_basedir=false
pref_main_save_winpos=true
pref_main_confirm_exit=false
pref_main_suppress_status_messages=false
switch_msgwin_pages=false
beep_on_errors=false
auto_focus=false
sidebar_symbol_visible=true
sidebar_openfiles_visible=true
editor_font=monospace 11
tagbar_font=monospace 10
msgwin_font=monospace 10
show_notebook_tabs=true
show_tab_cross=true
tab_order_ltr=true
tab_order_beside=false
tab_pos_editor=2
tab_pos_msgwin=0
use_native_windows_dialogs=false
show_indent_guide=true
show_white_space=false
show_line_endings=false
show_markers_margin=true
show_linenumber_margin=true
long_line_enabled=true
long_line_type=0
long_line_column=120
long_line_color=#ABC9ED
symbolcompletion_max_height=20
symbolcompletion_min_chars=2
use_folding=true
unfold_all_children=false
use_indicators=true
line_wrapping=true
auto_close_xml_tags=true
complete_snippets=true
auto_complete_symbols=true
pref_editor_disable_dnd=false
pref_editor_smart_home_key=true
pref_editor_newline_strip=true
line_break_column=100
auto_continue_multiline=true
comment_toggle_mark=~
scroll_stop_at_last_line=false
autoclose_chars=31
pref_editor_default_new_encoding=UTF-8
pref_editor_default_open_encoding=None
default_eol_character=2
pref_editor_new_line=true
pref_editor_ensure_convert_line_endings=false
pref_editor_replace_tabs=false
pref_editor_trail_space=true
pref_toolbar_show=true
pref_toolbar_append_to_menu=true
pref_toolbar_use_gtk_default_style=true
pref_toolbar_use_gtk_default_icon=true
pref_toolbar_icon_style=2
pref_toolbar_icon_size=1
pref_template_company=
pref_template_initial=
pref_template_version=1.0
pref_template_year=%Y
pref_template_date=%Y-%m-%d
pref_template_datetime=%d.%m.%Y %H:%M:%S %Z
context_action_cmd=
sidebar_visible=false
statusbar_visible=true
msgwindow_visible=true
fullscreen=false
scribble_text=Type here what you want, use it as a notice/scratch board
scribble_pos=57
treeview_position=150
msgwindow_position=960
geometry=50;70;1050;800;0;
custom_date_format=
pref_template_developer=
pref_template_mail=
[build-menu]
number_ft_menu_items=0
number_non_ft_menu_items=0
number_exec_menu_items=0
[search]
pref_search_hide_find_dialog=false
pref_search_always_wrap=false
pref_search_current_file_dir=true
find_all_expanded=false
replace_all_expanded=false
position_find_x=580
position_find_y=475
position_replace_x=670
position_replace_y=450
position_fif_x=-1
position_fif_y=-1
fif_regexp=false
fif_case_sensitive=true
fif_match_whole_word=false
fif_invert_results=false
fif_recursive=false
fif_extra_options=
fif_use_extra_options=false
fif_files=
fif_files_mode=0
find_regexp=false
find_regexp_multiline=false
find_case_sensitive=false
find_escape_sequences=false
find_match_whole_word=false
find_match_word_start=false
find_close_dialog=true
replace_regexp=false
replace_regexp_multiline=false
replace_case_sensitive=false
replace_escape_sequences=false
replace_match_whole_word=false
replace_match_word_start=false
replace_search_backwards=false
replace_close_dialog=true
[plugins]
load_plugins=true
custom_plugin_path=
active_plugins=;
[VTE]
send_cmd_prefix=
send_selection_unsafe=false
load_vte=true
font=UbuntuMono Nerd Font 10
scroll_on_key=true
scroll_on_out=true
enable_bash_keys=true
ignore_menu_bar_accel=false
follow_path=true
run_in_vte=false
skip_run_script=false
cursor_blinks=false
scrollback_lines=500
shell=/bin/bash
colour_fore=#FFFFFF
colour_back=#000000
last_dir=
[tools]
terminal_cmd=/usr/share/applications/exo-terminal-emulator.desktop
browser_cmd=/usr/share/applications/exo-web-browser.desktop
grep_cmd=grep
[printing]
print_cmd=
use_gtk_printing=true
print_line_numbers=true
print_page_numbers=true
print_page_header=true
page_header_basename=false
page_header_datefmt=%c
[project]
session_file=
project_file_path=
[files]
recent_files=
recent_projects=
current_page=-1

View File

@ -0,0 +1,14 @@
show_timezones = 1
show_week_numbers = 0
mark_today = 1
close_on_unfocus = 0
mainwindow_resizable = 1
mainwindow_sticky = 1
clock_label = Local
clock_tz =
mainwindow_decorated = 0
mainwindow_keep_above = 1
mainwindow_skip_taskbar = 1
mainwindow_yoffset = 30
mainwindow_xoffset = 0
clock_format = %a %d %b %H:%M

View File

@ -0,0 +1,16 @@
[Settings]
gtk-theme-name=ArchLabs-dARK
gtk-icon-theme-name=ArchLabs-Light
gtk-font-name=monospace 10
gtk-cursor-theme-name=ArchLabs-Light
gtk-cursor-theme-size=0
gtk-toolbar-style=GTK_TOOLBAR_ICONS
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
gtk-button-images=0
gtk-menu-images=0
gtk-enable-event-sounds=0
gtk-enable-input-feedback-sounds=0
gtk-xft-antialias=1
gtk-xft-hinting=1
gtk-xft-hintstyle=hintslight
gtk-xft-rgba=rgb

View File

@ -0,0 +1,6 @@
[dmenu]
dmenu_command = rofi -location 3 -yoffset 35 -xoffset -10 -width 37 -font "monospace 11" -padding 20 -line-padding 4 -password
[editor]
terminal = termite
gui_if_available = false

View File

@ -0,0 +1,4 @@
[xin_-1]
file=/usr/share/backgrounds/archlabs/archlabs.jpg
mode=0
bgcolor=#000000

View File

@ -0,0 +1,12 @@
[geometry]
posx=300
posy=100
sizex=900
sizey=800
[nitrogen]
view=icon
recurse=true
sort=alpha
icon_caps=true
dirs=/usr/share/backgrounds/

View File

@ -0,0 +1,149 @@
"""
A ranger color scheme
Made to be eye catchy while maintaining visibility, and base 0-7 colours.
Inspired by themes like Tomorrow, Dracula, Atom, and Spacemacs, but with my own twists
"""
from ranger.gui.colorscheme import ColorScheme
from ranger.gui.color import *
class jinx(ColorScheme):
"""
Defines colours used when colourscheme is enabled
"""
progress_bar_color = 96
def use(self, context):
"""
Main colour block with individual definitions
"""
fg, bg, attr = default_colors
if context.reset:
return default_colors
elif context.in_browser:
if context.selected:
attr = reverse
else:
attr = normal
if context.empty or context.error:
fg = 131
if context.border:
fg = 247
if context.image:
fg = 179
if context.video:
fg = 96
if context.audio:
fg = 117
if context.document:
fg = 38
if context.container:
fg = 108
if context.directory:
fg = 103
elif context.executable and not \
any((context.media, context.fifo, context.container, context.socket)):
fg = 67
if context.socket:
fg = 179
attr |= bold
if context.fifo or context.device:
fg = 214
attr |= bold
if context.link:
fg = 38 if context.good else 131
if context.tag_marker and not context.selected:
fg = 96
attr |= bold
if not context.selected and (context.cut or context.copied):
fg = 247
attr |= underline
if context.main_column:
if context.marked:
attr |= underline
fg = 131
if context.selected:
attr |= normal
if context.badinfo:
if attr & reverse:
bg = 96
else:
fg = 203
elif context.in_titlebar:
attr |= bold
if context.hostname:
fg = 203 if context.bad else 67
elif context.directory:
fg = 96
elif context.tab:
if context.good:
bg = 96
elif context.link:
fg = 117
elif context.in_statusbar:
if context.permissions:
if context.good:
fg = 67
elif context.bad:
fg = 203
if context.marked:
attr |= bold | reverse
fg = 96
if context.message:
if context.bad:
attr |= bold
fg = 96
if context.loaded:
bg = self.progress_bar_color
if context.vcsinfo:
fg = 38
attr &= ~bold
if context.vcscommit:
fg = 108
attr &= ~bold
if context.text:
fg = 254
if context.highlight:
attr |= reverse
if context.in_taskview:
if context.title:
fg = 67
if context.selected:
attr |= reverse
if context.loaded:
if context.selected:
fg = self.progress_bar_color
else:
bg = self.progress_bar_color
if context.vcsfile and not context.selected:
attr &= ~bold
if context.vcsconflict:
fg = 203
elif context.vcschanged:
fg = 174
elif context.vcsunknown:
fg = 174
elif context.vcsstaged:
fg = 108
elif context.vcssync:
fg = 108
elif context.vcsignored:
fg = default
elif context.vcsremote and not context.selected:
attr &= ~bold
if context.vcssync:
fg = 108
elif context.vcsbehind:
fg = 174
elif context.vcsahead:
fg = 67
elif context.vcsdiverged:
fg = 203
elif context.vcsunknown:
fg = 174
return fg, bg, attr

465
base/.config/ranger/rc.conf Normal file
View File

@ -0,0 +1,465 @@
# ===================================================================
# == Options
# ===================================================================
set viewmode miller
set column_ratios 1,2,4
set scroll_offset 8
set show_cursor false
set mouse_enabled true
set confirm_on_delete always
set colorscheme default
set shorten_title 4
set update_title true
# set update_tmux_title true
set tilde_in_titlebar true
set hostname_in_titlebar true
set max_history_size 20
set max_console_history_size 50
set save_console_history true
set open_all_images false
set preview_images false
set use_preview_script true
set preview_images_method w3m
set preview_script ~/.config/ranger/scope.sh
set automatically_count_files true
set preview_max_size 0
set preview_files true
set preview_directories true
set collapse_preview true
set unicode_ellipsis true
set padding_right false
set draw_borders true
set dirname_in_tabs true
set status_bar_on_top false
set draw_progress_bar_in_status_bar true
set display_size_in_main_column true
set display_size_in_status_bar false
set display_tags_in_all_columns true
set flushinput true
set autosave_bookmarks true
set autoupdate_cumulative_size false
# Enable this if key combinations with the Alt Key don't work for you. (Especially on xterm)
set xterm_alt_key false
set sort natural
set sort_reverse false
set sort_unicode false
set sort_case_insensitive true
set sort_directories_first true
set vcs_aware true
set vcs_backend_git enabled
set vcs_backend_hg disabled
set vcs_backend_bzr disabled
set vcs_backend_svn disabled
set cd_bookmarks true
set cd_tab_case sensitive
set cd_tab_fuzzy true
set show_selection_in_titlebar true
set idle_delay 2000
set metadata_deep_search false
set clear_filters_on_dir_change true
set line_numbers false
set one_indexed false
set save_tabs_on_exit true
set wrap_scroll false
set global_inode_type_filter
set show_hidden true
set show_hidden_bookmarks true
set hidden_filter ^\.|\.(?:pyc|pyo|bak|old|swp)$|^lost\+found$|^__(py)?cache__$
# ===================================================================
# == Local Options
# ===================================================================
# You can set local options that only affect a single directory.
# Examples:
# setlocal path=~/downloads sort mtime
# ===================================================================
# == Command Aliases in the Console
# ===================================================================
# aliases
alias e edit
alias q quit
alias q! quit!
alias qa quitall
alias qa! quitall!
alias qall quitall
alias qall! quitall!
alias setl setlocal
alias filter scout -prt
alias find scout -aeit
alias mark scout -mr
alias unmark scout -Mr
alias search scout -rs
alias search_inc scout -rts
alias travel scout -aefklst
# ===================================================================
# == Define keys for the browser
# ===================================================================
# Basic
map Q quitall
map q quit
copymap q ZZ ZQ
map R reload_cwd
map F set freeze_files!
map <C-r> reset
map <C-l> redraw_window
map <C-c> abort
map <Esc> change_mode normal
map ~ set viewmode!
map i display_file
map ? help
map W display_log
map w taskview_open
map S shell $SHELL
map : console
map ; console
map ! console shell%space
map @ console -p6 shell %%s
map # console shell -p%space
map s console shell%space
map f console find%space
map r chain draw_possible_programs; console open_with%%space
map cd console cd%space
# Tagging / Marking
map t tag_toggle
map ut tag_remove
map "<any> tag_toggle tag=%any
map <Space> mark_files toggle=True
map v toggle_visual_mode
map uv toggle_visual_mode reverse=True
map V mark_files all=True toggle=True
map uV mark_files all=True val=False
# For the nostalgics: Midnight Commander bindings
map <F1> help
map <F2> rename_append
map <F3> display_file
map <F4> edit
map <F5> copy
map <F6> cut
map <F7> console mkdir%space
map <F8> console delete
map <F10> exit
# In case you work on a keyboard with dvorak layout
map <UP> move up=1
map <DOWN> move down=1
map <LEFT> move left=1
map <RIGHT> move right=1
map <HOME> move to=0
map <END> move to=-1
map <PAGEDOWN> move down=1 pages=True
map <PAGEUP> move up=1 pages=True
map <CR> move right=1
map <DELETE> console delete
map <INSERT> console touch%space
# VIM like
copymap <Up> k
copymap <Down> j
copymap <Left> h
copymap <Right> l
copymap <Home> gg
copymap <End> G
copymap <PAGEDOWN> <C-F>
copymap <PAGEUP> <C-B>
map J move down=0.5 pages=True
map K move up=0.5 pages=True
# Jumping around
map L history_go 1
map H history_go -1
map ] move_parent 1
map [ move_parent -1
map } traverse
map ) jump_non
map E edit
# Better file renaming
map a rename_append
map cw eval fm.execute_console("bulkrename") if fm.thisdir.marked_items else fm.execute_console("rename_append")
map A eval fm.open_console('rename ' + fm.thisfile.relative_path.replace("%", "%%"))
map I eval fm.open_console('rename ' + fm.thisfile.relative_path.replace("%", "%%"), position=7)
# Open file in a new tmux pane
map eh eval import shlex; fm.run("tmux splitw -h rifle " + shlex.quote(fm.thisfile.basename))
map ev eval import shlex; fm.run("tmux splitw -v rifle " + shlex.quote(fm.thisfile.basename))
map ew eval import shlex; fm.run("tmux new-window rifle " + shlex.quote(fm.thisfile.basename))
map pp paste
map phl paste_hardlink
map pP paste append=True
map pr shell sudo cp %c %d
map po paste overwrite=True
map pht paste_hardlinked_subtree
map pL paste_symlink relative=True
map pl paste_symlink relative=False
map pO paste overwrite=True append=True
map dd cut
map ud uncut
map da cut mode=add
map dr cut mode=remove
map dt cut mode=toggle
map dc get_cumulative_size
map dD console delete
map DD shell rm -rf %s
# External Programs
map E edit
map du shell -p du --max-depth=1 -h --apparent-size
map dU shell -p du --max-depth=1 -h --apparent-size | sort -rh
map yp yank path
map yd yank dir
map yn yank name
map yy copy
map uy uncut
map ya copy mode=add
map yr copy mode=remove
map yt copy mode=toggle
map yd shell -f echo -n %d | xsel -i; xsel -o | xsel -i -b
map yn shell -f echo -n %f | xsel -i; xsel -o | xsel -i -b
map yp shell -f echo -n %d/%f | xsel -i; xsel -o | xsel -i -b
# Searching
map n search_next
map / console search%space
map f console scout -ftsea%space
# Sorting
map or set sort_reverse!
map os chain set sort=size; set sort_reverse=False
map ob chain set sort=basename; set sort_reverse=False
map on chain set sort=natural; set sort_reverse=False
map ot chain set sort=type; set sort_reverse=False
map oe chain set sort=extension; set sort_reverse=False
# Settings
map zi set preview_images!
map zp set preview_files!
map zP set preview_directories!
map zv set use_preview_script!
map zd set sort_directories_first!
map zc set collapse_preview!
map zI set flushinput!
map zm set mouse_enabled!
map zh set show_hidden!
map zf console filter%space
# Bookmarks
map `<any> enter_bookmark %any
map '<any> enter_bookmark %any
map \<any> set_bookmark %any
map u\<any> unset_bookmark %any
map \<bg> draw_bookmarks
copymap \<bg> u\<bg> `<bg> '<bg>
# Tabs
map tq tab_close
map tr tab_restore
map <TAB> tab_move 1
map <S-TAB> tab_move -1
map <A-Right> tab_move 1
map <A-Left> tab_move -1
map <A-l> tab_move 1
map <A-h> tab_move -1
map <C-n> tab_new
map <C-w> tab_close
map tn eval fm.tab_new('%d')
map uq tab_restore
map <a-1> tab_open 1
map <a-2> tab_open 2
map <a-3> tab_open 3
map <a-4> tab_open 4
map <a-5> tab_open 5
map <a-6> tab_open 6
map <a-7> tab_open 7
map <a-8> tab_open 8
map <a-9> tab_open 9
# Generate all the chmod bindings with some python help
eval for arg in "rwxXst": cmd("map +u{0} shell -f chmod u+{0} %s".format(arg))
eval for arg in "rwxXst": cmd("map +g{0} shell -f chmod g+{0} %s".format(arg))
eval for arg in "rwxXst": cmd("map +o{0} shell -f chmod o+{0} %s".format(arg))
eval for arg in "rwxXst": cmd("map +a{0} shell -f chmod a+{0} %s".format(arg))
eval for arg in "rwxXst": cmd("map +{0} shell -f chmod u+{0} %s".format(arg))
eval for arg in "rwxXst": cmd("map -u{0} shell -f chmod u-{0} %s".format(arg))
eval for arg in "rwxXst": cmd("map -g{0} shell -f chmod g-{0} %s".format(arg))
eval for arg in "rwxXst": cmd("map -o{0} shell -f chmod o-{0} %s".format(arg))
eval for arg in "rwxXst": cmd("map -a{0} shell -f chmod a-{0} %s".format(arg))
eval for arg in "rwxXst": cmd("map -{0} shell -f chmod u-{0} %s".format(arg))
# ===================================================================
# == Define keys for the console
# ===================================================================
# Basic
cmap <C-l> redraw_window
cmap <Tab> eval fm.ui.console.tab()
cmap <ESC> eval fm.ui.console.close()
cmap <CR> eval fm.ui.console.execute()
cmap <S-Tab> eval fm.ui.console.tab(-1)
copycmap <CR> <C-j>
copycmap <ESC> <C-c>
# Move around
cmap <Left> eval fm.ui.console.move(left=1)
cmap <Right> eval fm.ui.console.move(right=1)
cmap <Up> eval fm.ui.console.history_move(-1)
cmap <Down> eval fm.ui.console.history_move(1)
cmap <A-left> eval fm.ui.console.move_word(left=1)
cmap <A-right> eval fm.ui.console.move_word(right=1)
cmap <Home> eval fm.ui.console.move(right=0, absolute=True)
cmap <End> eval fm.ui.console.move(right=-1, absolute=True)
# Line Editing
cmap <C-y> eval fm.ui.console.paste()
cmap <Delete> eval fm.ui.console.delete(0)
cmap <C-w> eval fm.ui.console.delete_word()
cmap <C-k> eval fm.ui.console.delete_rest(1)
cmap <C-u> eval fm.ui.console.delete_rest(-1)
cmap <Backspace> eval fm.ui.console.delete(-1)
cmap <A-d> eval fm.ui.console.delete_word(backward=False)
cmap <allow_quantifiers> false
copycmap <Backspace> <Backspace2>
# ===================================================================
# == Pager Keybindings
# ===================================================================
# Movement
pmap <Up> pager_move up=1
pmap <Home> pager_move to=0
pmap <End> pager_move to=-1
pmap <Down> pager_move down=1
pmap <Left> pager_move left=4
pmap <Right> pager_move right=4
pmap <C-u> pager_move up=0.5 pages=True
pmap <C-d> pager_move down=0.5 pages=True
pmap <Pageup> pager_move up=1.0 pages=True
pmap <Pagedown> pager_move down=1.0 pages=True
copypmap <End> G
copypmap <C-d> d
copypmap <C-u> u
copypmap <Home> g
copypmap <Left> h
copypmap <Right> l
copypmap <Up> k <C-p>
copypmap <Down> j <C-n> <CR>
copypmap <Pageup> p b <C-B>
copypmap <Pagedown> n f <C-F> <Space>
# Basic
pmap E edit_file
pmap <ESC> pager_close
pmap <C-l> redraw_window
copypmap <ESC> q Q i <F3>
# ===================================================================
# == Taskview Keybindings
# ===================================================================
# Movement
tmap <up> taskview_move up=1
tmap <down> taskview_move down=1
tmap <home> taskview_move to=0
tmap <end> taskview_move to=-1
tmap <pagedown> taskview_move down=1.0 pages=True
tmap <pageup> taskview_move up=1.0 pages=True
tmap <C-d> taskview_move down=0.5 pages=True
tmap <C-u> taskview_move up=0.5 pages=True
copytmap <UP> k <C-p>
copytmap <DOWN> j <C-n> <CR>
copytmap <HOME> g
copytmap <END> G
copytmap <C-u> u
copytmap <PAGEDOWN> n f <C-F> <Space>
copytmap <PAGEUP> p b <C-B>
# Changing priority and deleting tasks
tmap J eval -q fm.ui.taskview.task_move(-1)
tmap K eval -q fm.ui.taskview.task_move(0)
tmap dd eval -q fm.ui.taskview.task_remove()
tmap <pagedown> eval -q fm.ui.taskview.task_move(-1)
tmap <pageup> eval -q fm.ui.taskview.task_move(0)
tmap <delete> eval -q fm.ui.taskview.task_remove()
# Basic
tmap <C-l> redraw_window
tmap <ESC> taskview_close
copytmap <ESC> q Q w <C-c>
# ===================================================================
# == Additional Keybinds
# ===================================================================
## New
map Nf console touch%space
map Nd console mkdir%space
## Set background
map sZ shell nitrogen --set-zoom-fill --head=0 --save %f
map sz shell nitrogen --set-zoom-fill --head=1 --save %f
map sS shell nitrogen --set-scaled --head=0 --save %f
map ss shell nitrogen --set-scaled --head=1 --save %f
map sF shell nitrogen --set-zoom-fill --head=-1 --save %f
map sf shell nitrogen --set-scaled --head=-1 --save %f
## Go / cd
map gh cd ~
map g/ cd /
map gE cd /etc
map gu cd /usr
map gb cd ~/bin
map gm cd ~/Music
map g. cd ~/.config
map gp cd ~/Pictures
map gd cd ~/Downloads
map gr cd ~/.config/ranger
map g? cd /usr/share/doc/ranger
## Move
map mD shell mv %s ~/Documents/
map md shell mv %s ~/Downloads/
map mp shell mv %s ~/Pictures/
map m. shell mv %s ~/.config/
map mv shell mv %s ~/Videos/
map mm shell mv %s ~/Music/
map mb shell mv %s ~/bin/
map mh shell mv %s ~/
## Copy
map YD shell cp -r %s ~/Documents/
map Yd shell cp -r %s ~/Downloads/
map Yp shell cp -r %s ~/Pictures/
map Y. shell cp -r %s ~/.config/
map Yv shell cp -r %s ~/Videos/
map Ym shell cp -r %s ~/Music/
map Yb shell cp -r %s ~/bin/
map Yh shell cp -r %s ~/

View File

@ -0,0 +1,158 @@
# vim: ft=cfg
#
# This is the configuration file of "rifle", ranger's file executor/opener.
# Each line consists of conditions and a command. For each line the conditions
# are checked and if they are met, the respective command is run.
#
# Syntax:
# <condition1> , <condition2> , ... = command
#
# The command can contain these environment variables:
# $1-$9 | The n-th selected file
# $@ | All selected files
#
# If you use the special command "ask", rifle will ask you what program to run.
#
# Prefixing a condition with "!" will negate its result.
# These conditions are currently supported:
# match <regexp> | The regexp matches $1
# ext <regexp> | The regexp matches the extension of $1
# mime <regexp> | The regexp matches the mime type of $1
# name <regexp> | The regexp matches the basename of $1
# path <regexp> | The regexp matches the absolute path of $1
# has <program> | The program is installed (i.e. located in $PATH)
# env <variable> | The environment variable "variable" is non-empty
# file | $1 is a file
# directory | $1 is a directory
# number <n> | change the number of this command to n
# terminal | stdin, stderr and stdout are connected to a terminal
# X | $DISPLAY is not empty (i.e. Xorg runs)
#
# There are also pseudo-conditions which have a "side effect":
# flag <flags> | Change how the program is run. See below.
# label <label> | Assign a label or name to the command so it can
# | be started with :open_with <label> in ranger
# | or `rifle -p <label>` in the standalone executable.
# else | Always true.
#
# Flags are single characters which slightly transform the command:
# f | Fork the program, make it run in the background.
# | New command = setsid $command >& /dev/null &
# r | Execute the command with root permissions
# | New command = sudo $command
# t | Run the program in a new terminal. If $TERMCMD is not defined,
# | rifle will attempt to extract it from $TERM.
# | New command = $TERMCMD -e $command
# Note: The "New command" serves only as an illustration, the exact
# implementation may differ.
# Note: When using rifle in ranger, there is an additional flag "c" for
# only running the current file even if you have marked multiple files.
# -- Alternative example for opening files using xdg-open
# Replace your rifle.conf with this file to use xdg-open as your file opener.
# This is, of course, adaptable for use with any other file opener.
# else = xdg-open "$1"
# You need an "editor" and "pager" in order to use certain functions in ranger:
# label editor = "$EDITOR" -- "$@"
# label pager = "$PAGER" -- "$@"
# -- End example
#-------------------------------------------
# Text
#
mime ^text, label editor = $EDITOR -- "$@"
mime ^text, label pager = $PAGER -- "$@"
!mime ^text, label editor, ext xml|json|csv|tex|py|pl|rb|js|sh|php = $EDITOR -- "$@"
!mime ^text, label pager, ext xml|json|csv|tex|py|pl|rb|js|sh|php = $PAGER -- "$@"
#-------------------------------------------
# Webpages
#
ext x?html?, X, flag f = firefox -- "$@"
ext x?html?, terminal = w3m "$@"
#-------------------------------------------
# Code
#
ext 1|5 = man "$1"
ext exe = wine "$1"
ext py = python -- "$1"
ext pl = perl -- "$1"
ext rb = ruby -- "$1"
ext js = node -- "$1"
ext sh = bash -- "$1"
ext php = php -- "$1"
name ^[mM]akefile$ = make
name ^PKGBUILD$ = makepkg --printsrcinfo >.SRCINFO && makepkg -f
#--------------------------------------------
# Audio without X
#
mime ^audio|ogg$, terminal, flag f, has mplayer2 = mplayer2 -- "$@"
mime ^audio|ogg$, terminal, flag f, has mpv = mpv -- "$@"
mime ^audio|ogg$, terminal, flag f, has mplayer = mplayer -- "$@"
ext midi?, terminal, flag f, has wildmidi = wildmidi -- "$@"
#--------------------------------------------
# Video/Audio with a GUI
#
ext gif, has mpv, X, flag f = mpv --loop -- "$1"
mime ^video|audio, has smplayer, X, flag f = smplayer "$@"
mime ^video, has mpv, X, flag f = mpv -- "$@"
mime ^video, has mpv, X, flag f = mpv --fs -- "$@"
mime ^video, has mplayer2, X, flag f = mplayer2 -- "$@"
mime ^video, has mplayer2, X, flag f = mplayer2 -fs -- "$@"
mime ^video, has mplayer, X, flag f = mplayer -- "$@"
mime ^video, has mplayer, X, flag f = mplayer -fs -- "$@"
mime ^video|audio, has vlc, X, flag f = vlc -- "$@"
# Without GUI:
ext gif, terminal, !X, has mpv, flag f = mpv --loop -- "$1"
mime ^video, terminal, !X, has mpv, flag f = mpv -- "$@"
mime ^video, terminal, !X, has mplayer2, flag f = mplayer2 -- "$@"
mime ^video, terminal, !X, has mplayer, flag f = mplayer -- "$@"
#-------------------------------------------
# Documents
#
ext pdf|djvu, has zathura, X, flag f = zathura -- "$@"
ext pdf|djvu, has evince, X, flag f = evince -- "$@"
ext pdf|djvu, has mupdf, X, flag f = mupdf "$@"
ext pdf|djvu, has mupdf-x11, X, flag f = mupdf-x11 "$@"
ext docx?, has catdoc, terminal = catdoc -- "$@" | "$PAGER"
ext sxc|xlsx?|xlt|xlw|gnm|gnumeric, has gnumeric, X, flag f = gnumeric -- "$@"
ext pptx?|od[dfgpst]|docx?|sxc, has libreoffice, X, flag f = libreoffice "$@"
ext xlsx?|xlt|xlw|gnm|gnumeric, has libreoffice, X, flag f = libreoffice "$@"
ext pptx?|od[dfgpst]|docx?|sxc, has soffice, X, flag f = soffice "$@"
ext xlsx?|xlt|xlw|gnm|gnumeric, has soffice, X, flag f = soffice "$@"
ext pptx?|od[dfgpst]|docx?|sxc, has ooffice, X, flag f = ooffice "$@"
ext xlsx?|xlt|xlw|gnm|gnumeric, has ooffice, X, flag f = ooffice "$@"
#-------------------------------------------
# Image Viewing:
#
mime ^image, has gpicview, X, flag f = gpicview -- "$@"
mime ^image, has feh, X, flag f = feh -- "$@"
mime ^image, has gimp, X, flag f = gimp -- "$@"
mime ^image/svg, has inkscape, X, flag f = inkscape -- "$@"
mime ^image/svg, has display, X, flag f = display -- "$@"
ext xcf, has gimp, X, flag f = gimp -- "$@"
#-------------------------------------------
# Archives
#
ext to|torrent, flag f, has deluge = deluge "$1"
ext to|torrent, flag f, has transmission = transmission "$1"
ext 7z|ace|ar|arc|xar|xpi|xz|zip|gz, has aunpack = aunpack -- "$@"
ext bz2?|cab|cpio|cpt|deb|dgc|dmg, has aunpack = aunpack -- "$@"
ext iso|jar|msi|pkg|rar|shar|tar|tgz, has aunpack = aunpack -- "$@"
label editor, !mime ^text, !ext xml|json|csv|tex|py|pl|rb|js|sh|php = $EDITOR -- "$@"
label pager, !mime ^text, !ext xml|json|csv|tex|py|pl|rb|js|sh|php = $PAGER -- "$@"
mime application/x-executable = "$1"

161
base/.config/ranger/scope.sh Executable file
View File

@ -0,0 +1,161 @@
#!/usr/bin/env bash
set -o noclobber -o noglob -o nounset -o pipefail
IFS=$'\n'
# If the option `use_preview_script` is set to `true`,
# then this script will be called and its output will be displayed in ranger.
# ANSI color codes are supported.
# STDIN is disabled, so interactive scripts won't work properly
# This script is considered a configuration file and must be updated manually.
# It will be left untouched if you upgrade ranger.
# Meanings of exit codes:
# code | meaning | action of ranger
# -----+------------+-------------------------------------------
# 0 | success | Display stdout as preview
# 1 | no preview | Display no preview at all
# 2 | plain text | Display the plain content of the file
# 3 | fix width | Don't reload when width changes
# 4 | fix height | Don't reload when height changes
# 5 | fix both | Don't ever reload
# 6 | image | Display the image `$IMAGE_CACHE_PATH` points to as an image preview
# 7 | image | Display the file directly as an image
# script arguments
FILE_PATH="${1}" # Full path of the highlighted file
PV_WIDTH="${2}" # Width of the preview pane (number of fitting characters)
PV_HEIGHT="${3}" # Height of the preview pane (number of fitting characters)
IMAGE_CACHE_PATH="${4}" # Full path that should be used to cache image preview
PV_IMAGE_ENABLED="${5}" # 'True' if image previews are enabled, 'False' otherwise.
FILE_EXTENSION="${FILE_PATH##*.}"
FILE_EXTENSION_LOWER="${FILE_EXTENSION,,}"
# Settings
HIGHLIGHT_SIZE_MAX=262143 # 256KiB
HIGHLIGHT_TABWIDTH=4
HIGHLIGHT_STYLE='pablo'
PYGMENTIZE_STYLE='autumn'
handle_extension() {
case "${FILE_EXTENSION_LOWER}" in
ace|arc|bz|bz2|cab|cpio|deb|gz|jar|lha|lz|lzh|lzma|lzo|tar|tbz|tbz2|tgz|tlz|txz|tzo|zip)
atool --list -- "${FILE_PATH}" && exit 5
bsdtar --list --file "${FILE_PATH}" && exit 5
exit 1
;;
xz|rpm)
bsdtar --list --file "${FILE_PATH}" && exit 5
exit 1
;;
rar)
unrar lt -p- -- "${FILE_PATH}" && exit 5
exit 1
;;
7z)
7z l -p -- "${FILE_PATH}" && exit 5
exit 1
;;
pdf)
pdftoppm -jpeg -singlefile "${FILE_PATH}" "${IMAGE_CACHE_PATH}" && exit 6
pdftotext -l 10 -nopgbrk -q -- "${FILE_PATH}" - && exit 5
exiftool "${FILE_PATH}" && exit 5
exit 1
;;
torrent)
transmission-show -- "${FILE_PATH}" && exit 5
exit 1
;;
odt|ods|odp|sxw)
odt2txt "${FILE_PATH}" && exit 5
exit 1
;;
htm|html|xhtml)
w3m -dump "${FILE_PATH}" && exit 5
lynx -dump -- "${FILE_PATH}" && exit 5
elinks -dump "${FILE_PATH}" && exit 5
esac
}
handle_image() {
local mimetype="${1}"
case "${mimetype}" in
image/svg+xml)
convert "${FILE_PATH}" "${IMAGE_CACHE_PATH}" && exit 6
exit 1
;;
image/*)
local orientation
orientation="$( identify -format '%[EXIF:Orientation]\n' -- "${FILE_PATH}" )"
if [[ -n "$orientation" && "$orientation" != 1 ]]; then
convert -- "${FILE_PATH}" -auto-orient "${IMAGE_CACHE_PATH}" && exit 6
fi
exit 7
;;
video/*)
ffmpegthumbnailer -i "${FILE_PATH}" -o "${IMAGE_CACHE_PATH}" -s 0 && exit 6
exit 1
;;
application/pdf)
pdftoppm -f 1 -l 1 -scale-to-x 1920 -scale-to-y -1 -singlefile -jpeg -tiffcompression \
jpeg -- "${FILE_PATH}" "${IMAGE_CACHE_PATH%.*}" && exit 6 || exit 1
esac
}
handle_mime() {
local mimetype="${1}"
case "${mimetype}" in
text/*|*/xml)
if [[ "$(stat --printf='%s' -- "${FILE_PATH}")" -gt "${HIGHLIGHT_SIZE_MAX}" ]]; then
exit 2
fi
if [[ "$(tput colors)" -ge 256 ]]; then
local highlight_format='xterm256'
else
local highlight_format='ansi'
fi
highlight --replace-tabs="${HIGHLIGHT_TABWIDTH}" --out-format="${highlight_format}" \
--style="${HIGHLIGHT_STYLE}" --force -- "${FILE_PATH}" && exit 5
exit 2
;;
image/*)
local orientation
orientation="$(identify -format '%[EXIF:Orientation]\n' -- "${FILE_PATH}")"
if [[ -n "$orientation" && "$orientation" != 1 ]]; then
convert -- "${FILE_PATH}" -auto-orient "${IMAGE_CACHE_PATH}" && exit 6
fi
exiftool "${FILE_PATH}" && exit 5
exit 1
;;
video/*)
ffmpegthumbnailer -i "${FILE_PATH}" -o "${IMAGE_CACHE_PATH}" -s 0 && exit 6
mediainfo "${FILE_PATH}" && exit 5
exiftool "${FILE_PATH}" && exit 5
exit 1
;;
audio/*)
mediainfo "${FILE_PATH}" && exit 5
exiftool "${FILE_PATH}" && exit 5
exit 1
esac
}
handle_fallback() {
echo '----- File Type Classification -----' && file --dereference --brief -- "${FILE_PATH}" && exit 5
exit 1
}
MIMETYPE="$( file --dereference --brief --mime-type -- "${FILE_PATH}" )"
if [[ "${PV_IMAGE_ENABLED}" == 'True' ]]; then
handle_image "${MIMETYPE}"
fi
handle_extension
handle_mime "${MIMETYPE}"
handle_fallback
exit 1

View File

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<channel name="xsettings" version="1.0">
<property name="Net" type="empty">
<property name="ThemeName" type="string" value="ArchLabs-dARK"/>
<property name="IconThemeName" type="string" value="ArchLabs-Light"/>
<property name="DoubleClickTime" type="empty"/>
<property name="DoubleClickDistance" type="empty"/>
<property name="DndDragThreshold" type="empty"/>
<property name="CursorBlink" type="empty"/>
<property name="CursorBlinkTime" type="empty"/>
<property name="SoundThemeName" type="empty"/>
<property name="EnableEventSounds" type="empty"/>
<property name="EnableInputFeedbackSounds" type="empty"/>
</property>
<property name="Xft" type="empty">
<property name="DPI" type="int" value="-1"/>
<property name="Antialias" type="int" value="1"/>
<property name="Hinting" type="int" value="1"/>
<property name="HintStyle" type="string" value="hintslight"/>
<property name="RGBA" type="string" value="rgb"/>
</property>
<property name="Gtk" type="empty">
<property name="CanChangeAccels" type="bool" value="false"/>
<property name="ColorPalette" type="empty"/>
<property name="FontName" type="string" value="sans 11"/>
<property name="IconSizes" type="empty"/>
<property name="KeyThemeName" type="empty"/>
<property name="ToolbarStyle" type="string" value="icons"/>
<property name="ToolbarIconSize" type="empty"/>
<property name="MenuImages" type="bool" value="true"/>
<property name="ButtonImages" type="bool" value="true"/>
<property name="MenuBarAccel" type="empty"/>
<property name="CursorThemeName" type="string" value="ArchLabs-Light"/>
<property name="CursorThemeSize" type="empty"/>
<property name="DecorationLayout" type="empty"/>
</property>
<property name="Xfce" type="empty">
<property name="LastCustomDPI" type="int" value="92"/>
</property>
</channel>

29
base/.gtkrc-2.0 Normal file
View File

@ -0,0 +1,29 @@
# DO NOT EDIT! This file will be overwritten by LXAppearance.
# Any customization should be done in ~/.gtkrc-2.0.mine instead.
gtk-theme-name="ArchLabs-dARK"
gtk-icon-theme-name="ArchLabs-Light"
gtk-font-name="monospace 11"
gtk-cursor-theme-name="ArchLabs-Light"
gtk-cursor-theme-size=0
gtk-toolbar-style=GTK_TOOLBAR_ICONS
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
gtk-button-images=0
gtk-menu-images=0
gtk-enable-event-sounds=0
gtk-enable-input-feedback-sounds=0
gtk-xft-antialias=1
gtk-xft-hinting=1
gtk-xft-hintstyle="hintslight"
gtk-xft-rgba="rgb"
style "xfdesktop-icon-view" {
XfdesktopIconView::label-alpha = 10
base[NORMAL] = "#000000"
base[SELECTED] = "#71B9FF"
base[ACTIVE] = "#71B9FF"
fg[NORMAL] = "#fcfcfc"
fg[SELECTED] = "#ffffff"
fg[ACTIVE] = "#ffffff"
}
widget_class "*XfdesktopIconView*" style "xfdesktop-icon-view"

102
base/.homepage/index.html Normal file
View File

@ -0,0 +1,102 @@
<!DOCTYPE html>
<html>
<head>
<title>ArchLabs Home</title>
<link rel="stylesheet" href="style.css">
<meta charset="utf-8">
<link rel="shortcut icon" href="res/logo-dark.png"/>
<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script src="script.js"></script>
</head>
<body>
<div class="stripe" style="background-color:#090909">
<div class="title">
<span>Official</span>
</div>
<div class="content">
<span class="item">
<a href="https://archlabsblog.wordpress.com">Official Website</a>
</span>
<span class="item">
<a href="https://forum.archlabslinux.com/">ArchLabs Forum</a>
</span>
<span class="item">
<a href="https://www.reddit.com/r/ArchLabsLinux/">ArchLabs Reddit</a>
</span>
<span class="item">
<a href="https://twitter.com/ArchLabsLinux">ArchLabs Twitter</a>
</span>
</div>
</div>
<div class="stripe" style="background-color:#9E3B58">
<div class="title">
<span>Openbox</span>
</div>
<div class="content">
<span class="item">
<a href="https://www.opendesktop.org/">Box Look</a>
</span>
<span class="item">
<a href="https://urukrama.wordpress.com/openbox-guide/">Urukrama's Openbox Guide+</a>
</span>
<span class="item">
<a href="https://forums.bunsenlabs.org/viewforum.php?id=9">Bunsenlabs Openbox Scripts etc.</a>
</span>
</div>
</div>
<div class="stripe" style="background-color:#1AADB5">
<div class="title">
<span>Wikis</span>
</div>
<div class="content">
<span class="item">
<a href="http://openbox.org/wiki/Main_Page">Openbox Wiki</a>
</span>
<span class="item">
<a href="https://wiki.archlinux.org/index.php/Openbox">Arch Wiki</a>
</span>
<span class="item">
<a href="https://i3wm.org/docs/">i3 Wiki</a>
</span>
</div>
</div>
<div class="stripe" style="background-color:#BA386F">
<div class="title">
<span>ArchLabs</span>
</div>
<div class="content">
<span class="item">
<a href="https://bitbucket.org/archlabslinux/iso/issues/new">Got an Issue?</a>
</span>
<span class="item">
<a href="https://forum.archlabslinux.com/">Got a Suggestion?</a>
</span>
</div>
</div>
<h2>
<div>
<img src="res/logo.png"></img>
</div>
</h2>
<h3>
<div>ArchLabs</div>
</h3>
<form method="get" action="https://www.duckduckgo.com">
<input type="text" name="q" placeholder="Search..." autofocus>
<p>
<span name="yt">arch.wiki</span>
<span name="sr">arch.forums</span>
<span name="a">arch.packages</span>
<span name="w">openbox.official</span>
</p>
</form>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

BIN
base/.homepage/res/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

47
base/.homepage/script.js Normal file
View File

@ -0,0 +1,47 @@
$(document).ready(function() {
//Search Bar
var $search = $("input[name='q']");
$("span[name='yt']").click(function() {
var curr = $search.val();
$search.val("!arch " + curr);
$search.focus();
});
$("span[name='sr']").click(function() {
var curr = $search.val();
$search.val("!archforums " + curr);
$search.focus();
});
$("span[name='a']").click(function() {
var curr = $search.val();
$search.val("!pkg " + curr);
$search.focus();
});
$("span[name='w']").click(function() {
var curr = $search.val();
$search.val("!openbox" + curr);
$search.focus();
});
//Tabs
$(".stripe").mouseenter(function() {
$(this).stop().animate({
width: '100vw'
});
$(this).find(".content").stop().fadeIn().children().show();
});
$(".stripe").mouseleave(function() {
$(this).stop().animate({
width: '40px'
});
$(this).find(".content").stop().fadeOut();
});
});

139
base/.homepage/style.css Normal file
View File

@ -0,0 +1,139 @@
@import url('https://fonts.googleapis.com/css?family=Open+Sans:300,400');
* {
margin: 0;
padding: 0;
font-family: "Ubuntu";
}
body {
width: 100vw;
height: 100vh;
background:url("res/archlabs02.png");
}
h2 {
width: 100vw;
position: absolute;
top: calc(90vh - 20px);
left: calc(85vh - 0px);
text-align: center;
font-weight: 300;
font-size: 35px;
}
h3 {
width: 100vw;
position: absolute;
top: calc(90vh - 0px);
left: calc(75vh - 0px);
text-align: center;
font-weight: 500;
font-size: 0px;
color: white;
}
form {
position: absolute;
left: 50%;
top: 40%;
width: 600px;
height: 50px;
transform: translateX(-50%);
font-weight: 300;
z-index: 1;
}
form p {
display: flex;
margin-top: 10px;
justify-content: space-between;
color: #ACB6BF;
padding-left: 5px;
padding-right: 5px;
}
form p span {
cursor: pointer;
transition: color 0.5s;
}
form p span:hover {
color: #ACB6BF;
}
input[type=text] {
width: 600px;
height: 50px;
border: 1px solid #a0a0a0;
border-radius: 2px;
padding: 10px;
font-weight: 300;
}
input[type=text]:focus {
border-color: #707070
}
.stripe {
position: relative;
width: 40px;
height: 25vh;
color: white;
z-index: 2;
}
.stripe .title {
position: relative;
width: 40px;
height: 100%;
float: left;
box-sizing: border-box;
}
.stripe .title span {
position: absolute;
top: 50%;
left: 50%;
display: block;
transform: translateX(-50%) translateY(-50%) rotate(-90deg);
font-weight: 400;
}
.stripe .content {
position: absolute;
left: calc(5vw + 40px);
width: calc(90vw - 40px);
display: none;
padding: 20px;
box-sizing: border-box;
height: 100%;
font-weight: 300;
display: flex;
justify-content: space-between;
}
.stripe .content div {
position: relative;
height: 100%;
width: 150px;
display: none;
}
.stripe .content div img {
position: absolute;
max-height: 100px;
max-width: 150px;
top: 50%;
transform: translateY(-50%);
}
.stripe .content span {
line-height: calc(25vh - 50px);
display: none;
}
.stripe .content span a {
text-decoration: none;
color: white;
}

0
base/.hushlogin Normal file
View File

515
base/.vim/colors/jinx.vim Normal file
View File

@ -0,0 +1,515 @@
" ------------------- jinx ---------------------- "
" Written by Nathaniel Maia, December 2017 "
" ----------------------------------------------- "
" vim:fdm=marker
" ---------- Setup and Checks ----------- " {{{1
if exists('syntax_on')
highlight clear
syntax reset
endif
let g:colors_name = 'jinx'
" Colors {{{1
" empty color dictionary
let s:jinx = {}
" NOTE: For those looking to edit the theme
"
" Color definition is done for both true color
" and 256 color. The format is in ['HEX', 256color, 16color]
"
" let s:jinx.black = ['#000000', 0, 0]
" completion menu, wildmenu, and status/tab lines
let s:jinx.menu_bgr = ['#4D5057', 238, 8]
let s:jinx.menu_fgr = ['#808080', 102, 15]
let s:jinx.menusel_bgr = ['#1F2326', 235, 0]
let s:jinx.menusel_fgr = ['#E1E1E1', 251, 7]
let s:jinx.menualt_fgr = ['#E1E1E1', 251, 7]
let s:jinx.menualt_bgr = ['#37383D', 237, 0]
let s:jinx.tabsel_bgr = ['#8DBC8D', 108, 2]
" terminal colours for :terminal {{{
let g:terminal_ansi_colors = [
\ '#4D545E', '#FF777A', '#8DBC8D', '#FFEB56', '#6699CC', '#CC99CC', '#5DD5FF', '#E1E1E1',
\ '#4D545E', '#FF777A', '#8DBC8D', '#FFEB56', '#6699CC', '#CC99CC', '#5DD5FF', '#E1E1E1'
\ ]
let s:i = 0
for s:color in g:terminal_ansi_colors
let g:terminal_color_{s:i} = s:color
let s:i += 1
endfor
"}}}
" background, foreground, line, visual selection, folds,
" and comments as well as standard 1-7 colors: red, green,
" yellow, blue, purple, cyan, and orange (instead of white)
if exists('g:jinx_colors') && g:jinx_colors =~? 'day' "{{{
set background=light
let s:jinx.fgr = ['#494949', 238, 0]
let s:jinx.bgr = ['#E1E1E1', 254, 7]
let s:jinx.line = ['#D0D0D0', 252, 15]
let s:jinx.select = ['#D0D0D0', 252, 15]
let s:jinx.folded = ['#B2B2B2', 249, 15]
let s:jinx.commnt = ['#808080', 244, 15]
let s:jinx.red = ['#EF7878', 210, 1]
let s:jinx.green = ['#78A078', 108, 2]
let s:jinx.yellow = ['#CE9D00', 178, 3]
let s:jinx.blue = ['#4E88CF', 32, 4]
let s:jinx.purple = ['#AF86C8', 140, 5]
let s:jinx.cyan = ['#00AFAF', 37, 6]
let s:jinx.orange = ['#E0914C', 166, 9]
let g:terminal_color_1 = '#EF7878'
let g:terminal_color_2 = '#78A078'
let g:terminal_color_3 = '#CE9D00'
let g:terminal_color_4 = '#4E88CF'
let g:terminal_color_5 = '#AF86C8'
let g:terminal_color_6 = '#00AFAF'
let g:terminal_color_9 = '#FF777A'
let g:terminal_color_10 = '#8DBC8D'
let g:terminal_color_11 = '#FFEB56'
let g:terminal_color_12 = '#6699CC'
let g:terminal_color_13 = '#CC99CC'
let g:terminal_color_14 = '#5DD5FF'
let g:terminal_ansi_colors = [
\ '#E1E1E1', '#EF7878', '#78A078', '#CE9D00', '#4E88CF', '#AF86C8', '#00AFAF', '#4D545E',
\ '#E1E1E1', '#FF777A', '#8DBC8D', '#FFEB56', '#6699CC', '#CC99CC', '#5DD5FF', '#4D545E'
\ ]
let s:i = 0
for s:color in g:terminal_ansi_colors
let g:terminal_color_{s:i} = s:color
let s:i += 1
endfor
elseif exists('g:jinx_colors') && g:jinx_colors =~? 'midnight'
let s:jinx.menu_bgr = ['#2c3135', 237, 0]
set background=dark
let s:jinx.fgr = ['#E1E1E1', 253, 7]
let s:jinx.bgr = ['#40464F', 234, 0]
let s:jinx.line = ['#2c3135', 237, 15]
let s:jinx.select = ['#2c3135', 237, 15]
let s:jinx.folded = ['#414449', 240, 15]
let s:jinx.commnt = ['#B9B9B9', 102, 15]
let s:jinx.red = ['#FF777A', 210, 1]
let s:jinx.green = ['#8DBC8D', 108, 2]
let s:jinx.yellow = ['#FFEB56', 220, 3]
let s:jinx.blue = ['#6699CC', 32, 4]
let s:jinx.purple = ['#CC99CC', 140, 5]
let s:jinx.cyan = ['#5DD5FF', 81, 6]
let s:jinx.orange = ['#FF9157', 208, 9]
else
" night
set background=dark
let s:jinx.fgr = ['#E1E1E1', 254, 7]
let s:jinx.bgr = ['#4D545E', 237, 0]
let s:jinx.line = ['#5F6772', 243, 8]
let s:jinx.select = ['#5F6772', 243, 1]
let s:jinx.folded = ['#414449', 239, 8]
let s:jinx.commnt = ['#B9B9B9', 250, 8]
let s:jinx.red = ['#FF777A', 210, 1]
let s:jinx.green = ['#8DBC8D', 108, 2]
let s:jinx.yellow = ['#FFEB56', 220, 3]
let s:jinx.blue = ['#6699CC', 32, 4]
let s:jinx.purple = ['#CC99CC', 140, 5]
let s:jinx.cyan = ['#5DD5FF', 81, 6]
let s:jinx.orange = ['#FF9157', 208, 9]
endif "}}}
function! <SID>HighLight(GRP, FG, BG, ATT) abort " {{{1
if a:FG !=# ''
let l:fg_col = get(s:jinx, a:FG)
let l:fg_true = l:fg_col[0]
if $TERM =~? 'linux' || &t_Co < 256
let l:fg_term = l:fg_col[2]
else
let l:fg_term = l:fg_col[1]
endif
exec 'highlight! '.a:GRP.' guifg='.l:fg_true.' ctermfg='.l:fg_term
endif
if a:BG !=# ''
let l:bg_col = get(s:jinx, a:BG)
let l:bg_true = l:bg_col[0]
if $TERM =~? 'linux' || &t_Co < 256
let l:bg_term = l:bg_col[2]
else
let l:bg_term = l:bg_col[1]
endif
exec 'highlight! '.a:GRP.' guibg='.l:bg_true.' ctermbg='.l:bg_term
endif
if a:ATT !=# '' && &t_Co >= 256
exec 'highlight! '.a:GRP.' gui='.a:ATT.' cterm='.a:ATT
endif
endfunction
" ---------- Highlight Groups ------------ " {{{1
" Editor {{{2
call <SID>HighLight('Title', 'commnt', 'bgr', 'bold')
call <SID>HighLight('Visual', '', 'select', '')
call <SID>HighLight('SignColumn', '', 'line', '')
call <SID>HighLight('CursorLine', '', 'line', 'none')
call <SID>HighLight('CursorColumn', '', 'line', '')
call <SID>HighLight('CursorLineNr', 'cyan', 'line', '')
call <SID>HighLight('LineNr', 'commnt', 'line', '')
call <SID>HighLight('ColorColumn', 'fgr', 'red', '')
call <SID>HighLight('Error', 'red', 'bgr', '')
call <SID>HighLight('ErrorMsg', 'red', 'bgr', '')
call <SID>HighLight('WarningMsg', 'red', 'bgr', '')
call <SID>HighLight('MatchParen', 'yellow', 'bgr', 'bold')
call <SID>HighLight('ModeMsg', 'cyan', 'bgr', '')
call <SID>HighLight('MoreMsg', 'cyan', 'bgr', '')
call <SID>HighLight('Directory', 'blue', 'bgr', '')
call <SID>HighLight('Question', 'green', 'bgr', '')
call <SID>HighLight('NonText', 'commnt', 'bgr', '')
call <SID>HighLight('SpecialKey', 'commnt', 'bgr', '')
call <SID>HighLight('Folded', 'commnt', 'folded', '')
call <SID>HighLight('Search', 'bgr', 'blue', '')
call <SID>HighLight('HLNext', 'bgr', 'red', 'bold')
call <SID>HighLight('Normal', 'fgr', 'bgr', '')
call <SID>HighLight('VertSplit', 'menu_bgr', 'menu_fgr', '')
" Tabline {{{2
call <SID>HighLight('TabLine', 'menusel_fgr', 'menu_bgr', 'none')
call <SID>HighLight('TabLineFill', 'menu_bgr', 'menu_bgr', '')
call <SID>HighLight('TabLineSel', 'menu_bgr', 'tabsel_bgr', 'bold')
call <SID>HighLight('WildMenu', 'menusel_fgr', 'menu_bgr', 'bold')
call <SID>HighLight('Pmenu', 'menusel_fgr', 'menu_bgr', 'bold')
call <SID>HighLight('PmenuSel', 'menusel_bgr', 'menusel_fgr', 'bold')
call <SID>HighLight('PmenuSbar', 'menu_fgr', 'menu_bgr', '')
call <SID>HighLight('PmenuThumb', 'menu_fgr', 'menu_bgr', '')
call <SID>HighLight('StatusLine', 'menu_bgr', 'menusel_fgr', '')
call <SID>HighLight('StatusLineNC', 'menu_bgr', 'menu_fgr', '')
" Spelling {{{2
call <SID>HighLight('SpellBad', '', '', 'underline')
call <SID>HighLight('SpellLocal', '', '', 'underline')
call <SID>HighLight('SpellRare', '', '', 'underline')
" Ctrl-P {{{2
call <SID>HighLight('CtrlPNoEntries', 'red', '', 'bold')
call <SID>HighLight('CtrlPMatch', 'blue', '', 'bold')
call <SID>HighLight('CtrlPLinePre', 'blue', 'menu_bgr', 'none')
call <SID>HighLight('CtrlPPrtBase', 'blue', '', 'none')
call <SID>HighLight('CtrlPPrtCursor', 'menu_fgr', 'menu_bgr', 'bold')
call <SID>HighLight('CtrlPMode1', 'menu_fgr', 'menu_bgr', 'bold')
call <SID>HighLight('CtrlPMode2', 'menu_fgr', 'menu_bgr', 'bold')
call <SID>HighLight('CtrlPStats', 'menu_fgr', 'menu_bgr', 'bold')
" ALE linter {{{2
call <SID>HighLight('ALEErrorSign', 'red', 'line', '')
call <SID>HighLight('ALEWarningSign', 'orange', 'line', '')
call <SID>HighLight('ALEError', 'red', '', 'underline')
call <SID>HighLight('ALEWarning', 'red', '', 'underline')
call <SID>HighLight('ALEStyleError', 'orange', '', 'underline')
call <SID>HighLight('ALEStyleWarning', 'orange', '', 'underline')
" Generic {{{2
call <SID>HighLight('Comment', 'commnt', '', '')
call <SID>HighLight('Todo', 'red', 'bgr', 'bold')
call <SID>HighLight('Float', 'cyan', '', '')
call <SID>HighLight('Character', 'cyan', '', '')
call <SID>HighLight('String', 'cyan', '', '')
call <SID>HighLight('Number', 'cyan', '', 'bold')
call <SID>HighLight('Boolean', 'cyan', '', 'bold')
call <SID>HighLight('Exception', 'blue', '', 'bold')
call <SID>HighLight('Include', 'blue', '', '')
call <SID>HighLight('Operator', 'blue', '', 'bold')
call <SID>HighLight('Label', 'green', '', '')
call <SID>HighLight('Repeat', 'green', '', '')
call <SID>HighLight('Statement', 'green', '', '')
call <SID>HighLight('Conditional', 'green', '', '')
call <SID>HighLight('Keyword', 'green', '', 'bold')
call <SID>HighLight('Structure', 'purple', '', 'bold')
call <SID>HighLight('StorageClass', 'purple', '', 'bold')
call <SID>HighLight('Type', 'purple', '', 'bold')
call <SID>HighLight('Tag', 'purple', '', 'bold')
call <SID>HighLight('Macro', 'purple', '', 'bold')
call <SID>HighLight('Special', 'purple', '', 'bold')
call <SID>HighLight('TypeDef', 'purple', '', 'bold')
call <SID>HighLight('Define', 'yellow', '', 'bold')
call <SID>HighLight('Constant', 'purple', '', 'bold')
call <SID>HighLight('PreProc', 'yellow', '', '')
call <SID>HighLight('Identifier', 'yellow', '', 'bold')
call <SID>HighLight('PreCondit', 'yellow', '', '')
call <SID>HighLight('Function', 'orange', '', 'bold')
call <SID>HighLight('Conceal', 'orange', '', '')
" Vim {{{2
call <SID>HighLight('vimCommand', 'green', '', 'bold')
call <SID>HighLight('vimVar', 'yellow', '', 'bold')
call <SID>HighLight('vimGroup', 'yellow', '', 'bold')
call <SID>HighLight('vimGroupName', 'yellow', '', 'bold')
call <SID>HighLight('VimFunction', 'orange', '', 'bold')
call <SID>HighLight('VimFunctionKey', 'orange', '', 'bold')
call <SID>HighLight('vimMapModKey', 'purple', '', 'bold')
call <SID>HighLight('vimBracket', 'purple', '', 'bold')
call <SID>HighLight('vimOption', 'purple', '', 'bold')
call <SID>HighLight('vimMapMod', 'purple', '', '')
call <SID>HighLight('vimNotation', 'purple', '', '')
" Shell {{{2
call <SID>HighLight('shSet', 'green', '', 'bold')
call <SID>HighLight('shLoop', 'green', '', 'bold')
call <SID>HighLight('shTestOpr', 'green', '', 'bold')
call <SID>HighLight('shConstant', 'yellow', '', 'bold')
call <SID>HighLight('shFunctionKey', 'orange', '', 'bold')
call <SID>HighLight('shStatement', 'green', '', 'bold')
call <SID>HighLight('shKeyword', 'purple', '', 'bold')
call <SID>HighLight('zshStatement', 'green', '', 'bold')
call <SID>HighLight('zshOption', 'green', '', 'bold')
call <SID>HighLight('zshFunction', 'orange', '', 'bold')
call <SID>HighLight('zshVariableDef', 'yellow', '', '')
call <SID>HighLight('zshOperator', 'blue', '', 'bold')
" C {{{2
call <SID>HighLight('cConditional', 'green', '', '')
call <SID>HighLight('cRepeat', 'purple', '', '')
call <SID>HighLight('cStorageClass', 'purple', '', '')
call <SID>HighLight('cType', 'yellow', '', '')
" PHP {{{2
call <SID>HighLight('phpMemberSelector', 'blue', '', '')
call <SID>HighLight('phpVarSelector', 'red', '', '')
call <SID>HighLight('phpConditional', 'green', '', '')
call <SID>HighLight('phpStatement', 'green', '', 'bold')
call <SID>HighLight('phpKeyword', 'purple', '', 'bold')
call <SID>HighLight('phpRepeat', 'purple', '', '')
" Ruby {{{2
call <SID>HighLight('rubyInclude', 'blue', '', '')
call <SID>HighLight('rubyAttribute', 'blue', '', '')
call <SID>HighLight('rubySymbol', 'green', '', '')
call <SID>HighLight('rubyStringDelimiter', 'green', '', '')
call <SID>HighLight('rubyRepeat', 'purple', '', '')
call <SID>HighLight('rubyControl', 'purple', '', '')
call <SID>HighLight('rubyConditional', 'purple', '', '')
call <SID>HighLight('rubyException', 'purple', '', '')
call <SID>HighLight('rubyCurlyBlock', 'orange', '', '')
call <SID>HighLight('rubyLocalVariableOrMethod', 'orange', '', '')
call <SID>HighLight('rubyInterpolationDelimiter', 'orange', '', '')
call <SID>HighLight('rubyAccess', 'yellow', '', '')
call <SID>HighLight('rubyConstant', 'yellow', '', '')
" Python {{{2
call <SID>HighLight('pythonRun', 'red', '', '')
call <SID>HighLight('pythonOperator', 'blue', '', 'bold')
call <SID>HighLight('pythonClass', 'blue', '', '')
call <SID>HighLight('pythonClassParameters', 'purple', '', '')
call <SID>HighLight('pythonParam', 'purple', '', '')
call <SID>HighLight('pythonDecorator', 'blue', '', 'bold')
call <SID>HighLight('pythonExClass', 'blue', '', '')
call <SID>HighLight('pythonException', 'blue', '', 'bold')
call <SID>HighLight('pythonExceptions', 'blue', '', 'bold')
call <SID>HighLight('pythonBrackets', 'blue', '', '')
call <SID>HighLight('pythonEscape', 'blue', '', '')
call <SID>HighLight('pythonImport', 'green', '', 'bold')
call <SID>HighLight('pythonRepeat', 'green', '', '')
call <SID>HighLight('pythonCoding', 'green', '', '')
call <SID>HighLight('pythonInclude', 'green', '', 'bold')
call <SID>HighLight('pythonPreCondit', 'green', '', '')
call <SID>HighLight('pythonStatement', 'green', '', 'bold')
call <SID>HighLight('pythonConditional', 'green', '', '')
call <SID>HighLight('pythonDef', 'yellow', '', 'bold')
call <SID>HighLight('pythonSelf', 'blue', '', 'bold')
call <SID>HighLight('pythonBuiltinType', 'purple', '', 'bold')
call <SID>HighLight('pythonBuiltin', 'purple', '', 'bold')
call <SID>HighLight('pythonBuiltinObj', 'purple', '', 'bold')
call <SID>HighLight('pythonBuiltinFunc', 'orange', '', 'bold')
call <SID>HighLight('pythonDot', 'orange', '', 'bold')
call <SID>HighLight('pythonLambda', 'orange', '', '')
call <SID>HighLight('pythonLambdaExpr', 'orange', '', '')
call <SID>HighLight('pythonFunction', 'orange', '', 'bold')
call <SID>HighLight('pythonDottedName', 'orange', '', '')
call <SID>HighLight('pythonBuiltinObjs', 'orange', '', '')
" LaTeX {{{2
call <SID>HighLight('texZone', 'red', '', 'none')
call <SID>HighLight('texStatement', 'blue', '', 'none')
call <SID>HighLight('texRefLabel', 'blue', '', 'none')
call <SID>HighLight('texRefZone', 'green', '', 'none')
call <SID>HighLight('texMath', 'orange', '', 'none')
call <SID>HighLight('texMathZoneX', 'orange', '', 'none')
call <SID>HighLight('texMathZoneA', 'orange', '', 'none')
call <SID>HighLight('texMathZoneB', 'orange', '', 'none')
call <SID>HighLight('texMathZoneC', 'orange', '', 'none')
call <SID>HighLight('texMathZoneD', 'orange', '', 'none')
call <SID>HighLight('texMathZoneE', 'orange', '', 'none')
call <SID>HighLight('texMathMatcher', 'orange', '', 'none')
call <SID>HighLight('texDelimiter', 'purple', '', 'none')
call <SID>HighLight('texComment', 'commnt', '', 'none')
" JavaScript {{{2
call <SID>HighLight('javaScriptNumber', 'cyan', '', 'bold')
call <SID>HighLight('javascriptNull', 'red', '', 'bold')
call <SID>HighLight('javascriptStatement', 'green', '', '')
call <SID>HighLight('javaScriptConditional', 'green', '', '')
call <SID>HighLight('javaScriptRepeat', 'purple', '', '')
call <SID>HighLight('javaScriptBraces', 'purple', '', 'bold')
call <SID>HighLight('javascriptGlobal', 'yellow', '', 'bold')
call <SID>HighLight('javaScriptFunction', 'orange', '', 'bold')
call <SID>HighLight('javaScriptMember', 'orange', '', 'bold')
" HTML {{{2
call <SID>HighLight('htmlTag', 'red', '', '')
call <SID>HighLight('htmlTagName', 'red', '', 'bold')
call <SID>HighLight('htmlLink', 'blue', '', 'bold')
call <SID>HighLight('htmlArg', 'green', '', 'bold')
call <SID>HighLight('htmlScriptTag', 'purple', '', 'bold')
call <SID>HighLight('htmlTitle', 'blue', '', 'bold')
call <SID>HighLight('htmlH1', 'blue', '', 'bold')
call <SID>HighLight('htmlH2', 'cyan', '', '')
call <SID>HighLight('htmlH3', 'cyan', '', '')
call <SID>HighLight('htmlH4', 'green', '', '')
call <SID>HighLight('htmlH5', 'green', '', '')
" YAML {{{2
call <SID>HighLight('yamlKey', 'red', '', '')
call <SID>HighLight('yamlAnchor', 'red', '', '')
call <SID>HighLight('yamlAlias', 'blue', '', '')
call <SID>HighLight('yamlDocumentHeader', 'green', '', '')
" Markdown {{{2
call <SID>HighLight('markdownHeadingRule', 'red', '', '')
call <SID>HighLight('markdownHeadingDelimiter', 'red', '', '')
call <SID>HighLight('markdownListMarker', 'blue', '', '')
call <SID>HighLight('markdownOrderedListMarker', 'blue', '', '')
call <SID>HighLight('markdownCode', 'purple', '', '')
call <SID>HighLight('markdownCodeBlock', 'purple', '', 'bold')
call <SID>HighLight('markdownCodeDelimiter', 'orange', '', 'bold')
call <SID>HighLight('markdownH1', 'blue', '', 'bold')
call <SID>HighLight('markdownH2', 'blue', '', 'bold')
call <SID>HighLight('markdownH3', 'cyan', '', '')
call <SID>HighLight('markdownH4', 'cyan', '', '')
call <SID>HighLight('markdownH5', 'green', '', '')
" ShowMarks {{{2
call <SID>HighLight('ShowMarksHLm', 'cyan', '', '')
call <SID>HighLight('ShowMarksHLl', 'orange', '', '')
call <SID>HighLight('ShowMarksHLo', 'purple', '', '')
call <SID>HighLight('ShowMarksHLu', 'yellow', '', '')
" Lua {{{2
call <SID>HighLight('luaRepeat', 'purple', '', '')
call <SID>HighLight('luaStatement', 'purple', '', '')
call <SID>HighLight('luaCond', 'green', '', '')
call <SID>HighLight('luaCondEnd', 'green', '', '')
call <SID>HighLight('luaCondStart', 'green', '', '')
call <SID>HighLight('luaCondElseif', 'green', '', '')
" Go {{{2
call <SID>HighLight('goDeclType', 'blue', '', '')
call <SID>HighLight('goLabel', 'purple', '', '')
call <SID>HighLight('goRepeat', 'purple', '', '')
call <SID>HighLight('goBuiltins', 'purple', '', '')
call <SID>HighLight('goStatement', 'purple', '', '')
call <SID>HighLight('goDirective', 'purple', '', '')
call <SID>HighLight('goDeclaration', 'purple', '', '')
call <SID>HighLight('goConditional', 'purple', '', '')
call <SID>HighLight('goTodo', 'yellow', '', '')
call <SID>HighLight('goConstants', 'orange', '', '')
" Clojure {{{2
call <SID>HighLight('clojureException', 'red', '', '')
call <SID>HighLight('clojureParen', 'cyan', '', '')
call <SID>HighLight('clojureCond', 'blue', '', '')
call <SID>HighLight('clojureFunc', 'blue', '', '')
call <SID>HighLight('clojureMeta', 'blue', '', '')
call <SID>HighLight('clojureMacro', 'blue', '', '')
call <SID>HighLight('clojureDeref', 'blue', '', '')
call <SID>HighLight('clojureQuote', 'blue', '', '')
call <SID>HighLight('clojureRepeat', 'blue', '', '')
call <SID>HighLight('clojureRepeat', 'blue', '', '')
call <SID>HighLight('clojureUnquote', 'blue', '', '')
call <SID>HighLight('clojureAnonArg', 'blue', '', '')
call <SID>HighLight('clojureDispatch', 'blue', '', '')
call <SID>HighLight('clojureString', 'green', '', '')
call <SID>HighLight('clojureRegexp', 'green', '', '')
call <SID>HighLight('clojureKeyword', 'green', '', '')
call <SID>HighLight('clojureDefine', 'purple', '', '')
call <SID>HighLight('clojureSpecial', 'purple', '', '')
call <SID>HighLight('clojureVariable', 'yellow', '', '')
call <SID>HighLight('clojureBoolean', 'orange', '', '')
call <SID>HighLight('clojureNumber', 'orange', '', '')
call <SID>HighLight('clojureConstant', 'orange', '', '')
call <SID>HighLight('clojureCharacter', 'orange', '', '')
" Scala {{{2
call <SID>HighLight('scalaPackage', 'red', '', '')
call <SID>HighLight('scalaVar', 'cyan', '', '')
call <SID>HighLight('scalaDefName', 'blue', '', '')
call <SID>HighLight('scalaBackTick', 'blue', '', '')
call <SID>HighLight('scalaMethodCall', 'blue', '', '')
call <SID>HighLight('scalaXml', 'green', '', '')
call <SID>HighLight('scalaString', 'green', '', '')
call <SID>HighLight('scalaBackTick', 'green', '', '')
call <SID>HighLight('scalaEmptyString', 'green', '', '')
call <SID>HighLight('scalaStringEscape', 'green', '', '')
call <SID>HighLight('scalaMultiLineString', 'green', '', '')
call <SID>HighLight('scalaTypeSpecializer', 'yellow', '', '')
call <SID>HighLight('scalaDefSpecializer', 'yellow', '', '')
call <SID>HighLight('scalaType', 'yellow', '', '')
call <SID>HighLight('scalaCaseType', 'yellow', '', '')
call <SID>HighLight('scalaAnnotation', 'orange', '', '')
call <SID>HighLight('scalaSymbol', 'orange', '', '')
call <SID>HighLight('scalaUnicode', 'orange', '', '')
call <SID>HighLight('scalaBoolean', 'orange', '', '')
call <SID>HighLight('scalaNumber', 'orange', '', '')
call <SID>HighLight('scalaChar', 'orange', '', '')
call <SID>HighLight('scalaImport', 'purple', '', '')
call <SID>HighLight('scalaDef', 'purple', '', '')
call <SID>HighLight('scalaVal', 'purple', '', '')
call <SID>HighLight('scalaClass', 'purple', '', '')
call <SID>HighLight('scalaTrait', 'purple', '', '')
call <SID>HighLight('scalaObject', 'purple', '', '')
call <SID>HighLight('scalaKeywordModifier', 'purple', '', '')
call <SID>HighLight('scalaDocComment', 'commnt', '', '')
call <SID>HighLight('scalaComment', 'commnt', '', '')
call <SID>HighLight('scalaDocTags', 'commnt', '', '')
call <SID>HighLight('scalaLineComment', 'commnt', '', '')
" Diff {{{2
call <SID>HighLight('DiffDelete', 'red', '', '')
call <SID>HighLight('DiffChange', 'blue', '', '')
call <SID>HighLight('DiffAdd', 'green', '', '')
call <SID>HighLight('DiffText', 'line', 'blue', 'bold')
" Cleanup {{{2
" Remove the highlight function as it's no longer needed.
" Will cause problems reloading the theme if not deleted.
delfunction <SID>HighLight

317
base/.vimrc Normal file
View File

@ -0,0 +1,317 @@
" Sane vim defaults for ArchLabs
" Arch defaults
runtime! archlinux.vim
" system clipboard (requires +clipboard)
set clipboard^=unnamed,unnamedplus
" additional settings
set modeline " enable vim modelines
set hlsearch " highlight search items
set incsearch " searches are performed as you type
set number " enable line numbers
set confirm " ask confirmation like save before quit.
set wildmenu " Tab completion menu when using command mode
set expandtab " Tab key inserts spaces not tabs
set softtabstop=4 " spaces to enter for each tab
set shiftwidth=4 " amount of spaces for indentation
set shortmess+=aAcIws " Hide or shorten certain messages
let g:netrw_altv = 1
let g:netrw_liststyle = 3
let g:netrw_browse_split = 3
" ------ leader mapping ------
let g:mapleader = "\<Space>"
" ------ enable additional features ------
" enable mouse
set mouse=a
if has('mouse_sgr')
" sgr mouse is better but not every term supports it
set ttymouse=sgr
endif
" syntax highlighting
syntax enable
set linebreak breakindent
set list listchars=tab:>>,trail:~
" midnight, night, or day
let g:jinx_colors = 'midnight'
try
colorscheme jinx
catch
colorscheme slate
endtry
if $TERM !=? 'linux'
set termguicolors
" true colors in terminals (neovim doesn't need this)
if !has('nvim') && !($TERM =~? 'xterm' || &term =~? 'xterm')
let $TERM = 'xterm-256color'
let &term = 'xterm-256color'
endif
if has('multi_byte') && $TERM !=? 'linux'
set listchars=tab:»»,trail:•
set fillchars=vert:┃ showbreak=
endif
endif
" change cursor shape for different editing modes, neovim does this by default
if !has('nvim')
if exists('$TMUX')
let &t_SI = "\<Esc>Ptmux;\<Esc>\e[5 q\<Esc>\\"
let &t_SR = "\<Esc>Ptmux;\<Esc>\e[4 q\<Esc>\\"
let &t_EI = "\<Esc>Ptmux;\<Esc>\e[2 q\<Esc>\\"
else
let &t_SI = "\e[6 q"
let &t_SR = "\e[4 q"
let &t_EI = "\e[2 q"
endif
endif
" ------ commands ------
command! D Explore
command! R call <SID>ranger()
command! Q call <SID>quitbuffer()
command! -nargs=1 B :call <SID>bufferselect("<args>")
command! W execute 'silent w !sudo tee % >/dev/null' | edit!
" ------ basic maps ------
" open ranger as a file chooser using the function below
nnoremap <leader>r :call <SID>ranger()<CR>
" match string to switch buffer
nnoremap <Leader>b :let b:buf = input('Match: ')<Bar>call <SID>bufferselect(b:buf)<CR>
" paste while in insert mode
inoremap <silent><C-v> <Esc>:set paste<CR>a<C-r>+<Esc>:set nopaste<CR>a
" change windows with ctrl+(hjkl)
nnoremap <C-J> <C-W><C-J>
nnoremap <C-K> <C-W><C-K>
nnoremap <C-L> <C-W><C-L>
nnoremap <C-H> <C-W><C-H>
" alt defaults
nnoremap 0 ^
nnoremap Y y$
nnoremap n nzzzv
nnoremap N Nzzzv
nnoremap <Tab> ==j
" re-visual text after changing indent
vnoremap > >gv
vnoremap < <gv
" toggle line numbers, nn (no number)
nnoremap <silent> <Leader>nn :set number!
" j = gj :: k = gk while preserving numbered jumps eg. 12j
nnoremap <buffer><silent><expr>j v:count ? 'j' : 'gj'
nnoremap <buffer><silent><expr>k v:count ? 'k' : 'gk'
" open a terminal in $PWD
nnoremap <silent> <Leader>tt :terminal<CR>
" tab control
nnoremap <silent> <M-j> :tabmove -1<CR>
nnoremap <silent> <M-k> :tabmove +1<CR>
nnoremap <silent> <Leader>te :tabnew<CR>
nnoremap <silent> <Leader>tn :tabnext<CR>
nnoremap <silent> <Leader>tf :tabfirst<CR>
nnoremap <silent> <Leader>tp :tabprevious<CR>
" close current buffer and/or tab
nnoremap <silent> <Leader>q :B<CR>:silent tabclose<CR>gT
nnoremap <silent> <Leader>tl :execute "tabn ".g:lasttab<CR>
" open a new tab in the current directory with netrw
nnoremap <silent> <Leader>- :tabedit <C-R>=expand("%:p:h")<CR><CR>
" split the window vertically and horizontally
nnoremap _ <C-W>s<C-W><Down>
nnoremap <Bar> <C-W>v<C-W><Right>
" ------ autocmd ------
let g:lasttab = 1
augroup save_last_tab
autocmd!
autocmd TabLeave * let g:lasttab = tabpagenr()
augroup END
" Reload changes if file changed outside of vim requires autoread
augroup load_changed_file
autocmd!
autocmd FocusGained,BufEnter * if mode() !=? 'c' | checktime | endif
autocmd FileChangedShellPost * echo "Changes loaded from source file"
augroup END
" when quitting a file, save the cursor position
augroup save_cursor_position
autocmd!
autocmd BufReadPost * call setpos(".", getpos("'\""))
augroup END
" when not running in a console or a terminal that doesn't support 256 colors
" enable cursorline in the currently active window and disable it in inactive ones
if $DISPLAY !=? '' && &t_Co == 256
augroup cursorline
autocmd!
autocmd VimEnter,WinEnter,BufWinEnter * setlocal cursorline
autocmd WinLeave * setlocal nocursorline
augroup END
endif
" ------ adv maps ------
" strip trailing whitespace, ss (strip space)
nnoremap <silent> <Leader>ss
\ :let b:_p = getpos(".") <Bar>
\ let b:_s = (@/ != '') ? @/ : '' <Bar>
\ %s/\s\+$//e <Bar>
\ let @/ = b:_s <Bar>
\ nohlsearch <Bar>
\ unlet b:_s <Bar>
\ call setpos('.', b:_p) <Bar>
\ unlet b:_p <CR>
" global replace
vnoremap <Leader>sw "hy
\ :let b:sub = input('global replacement: ') <Bar>
\ if b:sub !=? '' <Bar>
\ let b:rep = substitute(getreg('h'), '/', '\\/', 'g') <Bar>
\ execute '%s/'.b:rep."/".b:sub.'/g' <Bar>
\ unlet b:sub b:rep <Bar>
\ endif <CR>
nnoremap <Leader>sw
\ :let b:sub = input('global replacement: ') <Bar>
\ if b:sub !=? '' <Bar>
\ execute "%s/<C-r><C-w>/".b:sub.'/g' <Bar>
\ unlet b:sub <Bar>
\ endif <CR>
" prompt before each replace
vnoremap <Leader>cw "hy
\ :let b:sub = input('interactive replacement: ') <Bar>
\ if b:sub !=? '' <Bar>
\ let b:rep = substitute(getreg('h'), '/', '\\/', 'g') <Bar>
\ execute '%s/'.b:rep.'/'.b:sub.'/gc' <Bar>
\ unlet b:sub b:rep <Bar>
\ endif <CR>
nnoremap <Leader>cw
\ :let b:sub = input('interactive replacement: ') <Bar>
\ if b:sub !=? '' <Bar>
\ execute "%s/<C-r><C-w>/".b:sub.'/gc' <Bar>
\ unlet b:sub <Bar>
\ endif <CR>
" highlight long lines, ll (long lines)
let w:longlines = matchadd('ColorColumn', '\%'.&textwidth.'v', &textwidth)
nnoremap <silent> <Leader>ll
\ :if exists('w:longlines') <Bar>
\ silent! call matchdelete(w:longlines) <Bar>
\ echo 'Long line highlighting disabled'
\ <Bar> unlet w:longlines <Bar>
\ elseif &textwidth > 0 <Bar>
\ let w:longlines = matchadd('ColorColumn', '\%'.&textwidth.'v', &textwidth) <Bar>
\ echo 'Long line highlighting enabled'
\ <Bar> else <Bar>
\ let w:longlines = matchadd('ColorColumn', '\%80v', 81) <Bar>
\ echo 'Long line highlighting enabled'
\ <Bar> endif <CR>
" local keyword jump
nnoremap <Leader>fw
\ [I:let b:jump = input('Go To: ') <Bar>
\ if b:jump !=? '' <Bar>
\ execute "normal! ".b:jump."[\t" <Bar>
\ unlet b:jump <Bar>
\ endif <CR>
" quit the current buffer and switch to the next
" without this vim will leave you on an empty buffer after quiting the current
function! <SID>quitbuffer() abort
let l:bf = bufnr('%')
let l:pb = bufnr('#')
if buflisted(l:pb)
buffer #
else
bnext
endif
if bufnr('%') == l:bf
new
endif
if buflisted(l:bf)
execute('bdelete! ' . l:bf)
endif
endfunction
" switch active buffer based on pattern matching
" if more than one match is found then list the matches to choose from
function! <SID>bufferselect(pattern) abort
let l:bufcount = bufnr('$')
let l:currbufnr = 1
let l:nummatches = 0
let l:matchingbufnr = 0
" walk the buffer count
while l:currbufnr <= l:bufcount
if (bufexists(l:currbufnr))
let l:currbufname = bufname(l:currbufnr)
if (match(l:currbufname, a:pattern) > -1)
echo l:currbufnr.': '.bufname(l:currbufnr)
let l:nummatches += 1
let l:matchingbufnr = l:currbufnr
endif
endif
let l:currbufnr += 1
endwhile
" only one match
if (l:nummatches == 1)
execute ':buffer '.l:matchingbufnr
elseif (l:nummatches > 1)
" more than one match
let l:desiredbufnr = input('Enter buffer number: ')
if (strlen(l:desiredbufnr) != 0)
execute ':buffer '.l:desiredbufnr
endif
else
echoerr 'No matching buffers'
endif
endfunction
" open ranger as a file chooser
function! <SID>ranger()
let l:temp = tempname()
execute 'silent !xterm -e ranger --choosefiles='.shellescape(l:temp).' $PWD'
if !filereadable(temp)
redraw!
return
endif
let l:names = readfile(l:temp)
if empty(l:names)
redraw!
return
endif
execute 'edit '.fnameescape(l:names[0])
for l:name in l:names[1:]
execute 'argadd '.fnameescape(l:name)
endfor
redraw!
endfunction

19
base/.xinitrc Executable file
View File

@ -0,0 +1,19 @@
#!/bin/sh
# this file is executed when calling startx
# default arch xinit scripts
if [ -d /etc/X11/xinit/xinitrc.d ]; then
for f in /etc/X11/xinit/xinitrc.d/*.sh; do
[ -x "$f" ] && . "$f"
done
fi
# user init scripts and settings
[ -f /etc/X11/xinit/.Xmodmap ] && xmodmap /etc/X11/xinit/.Xmodmap
[ -f ~/.Xmodmap ] && xmodmap ~/.Xmodmap
[ -f ~/.Xresources ] && xrdb -merge ~/.Xresources
[ -f ~/.xprofile ] && . ~/.xprofile
# launch the session, don't put commands below the exec line
exec openbox-session

28
base/.xprofile Normal file
View File

@ -0,0 +1,28 @@
#!/bin/sh
# ~/.xprofile
# sourced at boot by both xinit and most display managers like lightdm
export XDG_CONFIG_HOME="$HOME/.config"
[ -d /sbin ] && PATH="$PATH:/sbin"
[ -d /usr/sbin ] && PATH="$PATH:/usr/sbin"
[ -d "$HOME/bin" ] && PATH="$HOME/bin:$PATH"
# restore the background
nitrogen --restore &
# keyring and polkit daemons
/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 &
gnome-keyring-daemon --start --components=pkcs11 &
# pressing super alone simulates Alt-F1
ksuperkey -e 'Super_L=Alt_L|F1' &
ksuperkey -e 'Super_R=Alt_L|F1' &
# display timeout and sleep
xset s 1200 1300
xset dpms 1200 1300 1400
# keyboard repeat rate
xset r rate 350 60

20
base/bin/check-network Executable file
View File

@ -0,0 +1,20 @@
#!/usr/bin/env bash
disconnect1="/"
disconnect2="\\"
wconnected=""
econnected=""
id="$(ip link | awk '/state UP/ {print $2}')"
while true; do
if ping -c 1 archlabslinux.com >/dev/null 2>&1 || ping -c 1 archlinux.org >/dev/null 2>&1; then
[[ $id == e* ]] && echo "$econnected" || echo "$wconnected"
sleep 25
else
echo "$disconnect1" # /
sleep 0.6
echo "$disconnect2" # \
sleep 0.6
fi
done

26
base/bin/polybar-trash Executable file
View File

@ -0,0 +1,26 @@
#!/usr/bin/env bash
TRASH_DIRECTORY="$BLOCK_INSTANCE"
if [[ $TRASH_DIRECTORY = "" ]]; then
TRASH_DIRECTORY="${XDG_DATA_HOME:-$HOME/.local/share}/Trash"
fi
if [[ $BLOCK_BUTTON -eq 1 ]]; then
xdg-open "$TRASH_DIRECTORY/files"
elif [[ $BLOCK_BUTTON -eq 3 ]]; then
rm -r "$TRASH_DIRECTORY/files"
rm -r "$TRASH_DIRECTORY/info"
mkdir "$TRASH_DIRECTORY/files"
mkdir "$TRASH_DIRECTORY/info"
fi
TRASH_COUNT=$(ls -U -1 "$TRASH_DIRECTORY/files" | wc -l)
URGENT_VALUE=30
echo "$TRASH_COUNT"
echo "$TRASH_COUNT"
echo ""
if [[ $TRASH_COUNT -ge $URGENT_VALUE ]]; then
exit 31
fi

98
base/bin/rofi_run Executable file
View File

@ -0,0 +1,98 @@
#!/usr/bin/env bash
NAME=$(basename "$0")
VER="0.4"
usage()
{
cat <<- EOF
USAGE: $NAME [OPTIONS]
OPTIONS:
-h,--help Display this message
-v,--version Display script version
-w,--window Switch between open windows
-r,--run Program launcher & run dialog
-q,--qalculate Persistant calculator dialog (requires libqalculate)
-c,--clipboard Select previous clipboard entries (requires greenclip)
-b,--browser Browser search by keyword (requires surfraw)
-l,--logout Session logout dialog
Without any options the run dialog will be opened.
EOF
}
for arg in "$@"; do
case $arg in
-h|--help)
usage
exit 0
;;
-v|--version)
echo -e "$NAME -- Version $VER"
exit 0
;;
-r|--run)
rofi -modi run,drun -show drun -line-padding 4 \
-columns 2 -padding 50 -hide-scrollbar \
-show-icons -drun-icon-theme "ArchLabs-Light"
;;
-w|--window)
rofi -modi window -show window -hide-scrollbar -padding 50 -line-padding 4
;;
-q|--qalculate)
hash qalc &>/dev/null || { echo "Requires 'libqalculate' installed"; exit 1; }
rofi -modi "calc:qalc +u8 -nocurrencies" -padding 50 \
-show "calc:qalc +u8 -nocurrencies" -line-padding 4 \
-hide-scrollbar
;;
-c|--clipboard)
hash greenclip &>/dev/null || { echo "Requires 'greenclip' installed"; exit 1; }
rofi -modi "clipboard:greenclip print" -padding 50 \
-line-padding 4 -show "clipboard:greenclip print" \
-hide-scrollbar
;;
-b|--browser)
hash surfraw &>/dev/null || { echo "Requires 'surfraw' installed"; exit 1; }
surfraw -browser="$BROWSER" "$(sr -elvi | awk -F'-' '{print $1}' |
sed '/:/d' | awk '{$1=$1};1' |
rofi -hide-scrollbar -kb-row-select 'Tab' \
-kb-row-tab 'Control+space' -dmenu \
-mesg 'Tab for Autocomplete' -i -p 'Web Search' \
-padding 50 -line-padding 4)"
;;
-l|--logout)
ANS="$(rofi -sep "|" -dmenu -i -p 'System' -width 20 \
-hide-scrollbar -line-padding 4 -padding 20 \
-lines 4 <<< " Lock| Logout| Reboot| Shutdown")"
case "$ANS" in
*Lock) i3lock-fancy ;;
*Logout) session-logout || pkill -15 -t tty"$XDG_VTNR" Xorg ;;
*Reboot) systemctl reboot ;;
*Shutdown) systemctl -i poweroff
esac
;;
*)
echo
echo "Option does not exist: $arg"
echo
exit 2
esac
done
(( $# == 0 )) && "$0" -r
exit 0

129
base/bin/toggle.sh Executable file
View File

@ -0,0 +1,129 @@
#!/usr/bin/env bash
NAME=$(basename "$0")
VER="0.4"
usage()
{
cat <<- EOF
USAGE: $NAME [OPTIONS [ADDITIONAL]]
OPTIONS:
-h,--help Display this message
-v,--version Display script version
-p,--polybar Toggle the configured polybar session, NO additional options
-c,--compton Toggle compton or daemon monitoring icon, can use toggle option
-r,--redshift Toggle redshift or daemon monitoring icon, can use toggle option
-f,--caffeine Toggle caffeine or daemon monitoring icon, can use toggle option
ADDITIONAL:
-t,--toggle Toggle the program off/on, without this flag a monitor process will be started
EOF
}
toggle_polybar()
{
if [[ $(pidof polybar) ]]; then
pkill polybar
else
al-polybar-session
fi
}
toggle_compton()
{
if (( opt == 1 )); then
if [[ $(pidof compton) ]]; then
al-compositor --stop
else
al-compositor --start
fi
exit 0
fi
on=""
off=""
while true; do
if [[ $(pidof compton) ]]; then
echo "$on"
else
echo "%{F#888888}$off"
fi
sleep 2
done
}
toggle_redshift()
{
if (( opt == 1 )); then
if [[ $(pidof redshift) ]]; then
pkill redshift
else
redshift &
fi
exit 0
fi
icon=""
while true; do
if [[ $(pidof redshift) ]]; then
temp=$(sed 's/K//g' <<< "$(grep -o '[0-9].*K' <<< "$(redshift -p 2>/dev/null)")")
fi
if [[ -z $temp ]]; then
echo " $icon " # Greyed out (not running)
elif [[ $temp -ge 5000 ]]; then
echo "%{F#8039A0} $icon " # Blue
elif [[ $temp -ge 4000 ]]; then
echo "%{F#F203F0} $icon " # Yellow
else
echo "%{F#FF5B6C} $icon " # Orange
fi
sleep 2
done
}
toggle_caffeine()
{
if (( opt == 1 )); then
if [[ $(pidof caffeine) ]]; then
killall caffeine
else
caffeine &
fi
exit 0
fi
on=""
off=""
while true; do
[[ $(pidof caffeine) ]] && echo "%{F#0000FF}$on" || echo "%{F#FF0000}$off"
sleep 2
done
}
# Catch command line options
case $1 in
-h|--help) usage ;;
-v|--version) echo -e "$NAME -- Version $VER" ;;
-p|--polybar) toggle_polybar ;;
-c|--compton)
[[ $2 =~ (-t|--toggle) ]] && opt=1
toggle_compton
;;
-r|--redshift)
[[ $2 =~ (-t|--toggle) ]] && opt=1
toggle_redshift
;;
-f|--caffeine)
[[ $2 =~ (-t|--toggle) ]] && opt=1
toggle_caffeine
;;
*) echo -e "Option does not exist: $1" && usage && exit 1
esac

42
base/bin/updates.sh Executable file
View File

@ -0,0 +1,42 @@
#!/usr/bin/env bash
BAR_ICON=""
NOTIFY_ICON=/usr/share/icons/gnome/32x32/apps/system-software-update.png
get_total_updates()
{
UPDATES=$(checkupdates 2>/dev/null | wc -l)
}
while true; do
# print the icon first to avoid gibberish in polybar
echo $BAR_ICON
get_total_updates
# notify user of updates
if hash notify-send >/dev/null 2>&1; then
if (( UPDATES > 50 )); then
notify-send -u critical -i $NOTIFY_ICON "Updates Available" "$UPDATES packages"
elif (( UPDATES > 25 )); then
notify-send -u normal -i $NOTIFY_ICON "Updates Available" "$UPDATES packages"
elif (( UPDATES > 2 )); then
notify-send -u low -i $NOTIFY_ICON "Updates Available" "$UPDATES packages"
fi
fi
# when there are updates available
# every 10 seconds another check for updates is done
while (( UPDATES > 0 )); do
(( UPDATES == 1 )) && echo "$UPDATES Update" || { (( UPDATES > 1 )) && echo "$UPDATES Updates"; }
sleep 10
get_total_updates
done
# when no updates are available, use a longer loop, this saves on CPU
# and network uptime, only checking once every 30 min for new updates
while (( UPDATES == 0 )); do
sleep 1800
get_total_updates
done
done