diff --git a/.linux_items/.gitignore b/.linux_items/.gitignore new file mode 100644 index 00000000..5495eced --- /dev/null +++ b/.linux_items/.gitignore @@ -0,0 +1,2 @@ +wk_tmp +wk-repo diff --git a/.linux_items/archlive/airootfs/etc/default/ufw b/.linux_items/archlive/airootfs/etc/default/ufw new file mode 100644 index 00000000..665806f3 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/default/ufw @@ -0,0 +1,45 @@ +# /etc/default/ufw +# + +# Set to yes to apply rules to support IPv6 (no means only IPv6 on loopback +# accepted). You will need to 'disable' and then 'enable' the firewall for +# the changes to take affect. +IPV6=yes + +# Set the default input policy to ACCEPT, DROP, or REJECT. Please note that if +# you change this you will most likely want to adjust your rules. +DEFAULT_INPUT_POLICY="DROP" + +# Set the default output policy to ACCEPT, DROP, or REJECT. Please note that if +# you change this you will most likely want to adjust your rules. +DEFAULT_OUTPUT_POLICY="ACCEPT" + +# Set the default forward policy to ACCEPT, DROP or REJECT. Please note that +# if you change this you will most likely want to adjust your rules +DEFAULT_FORWARD_POLICY="DROP" + +# Set the default application policy to ACCEPT, DROP, REJECT or SKIP. Please +# note that setting this to ACCEPT may be a security risk. See 'man ufw' for +# details +DEFAULT_APPLICATION_POLICY="SKIP" + +# By default, ufw only touches its own chains. Set this to 'yes' to have ufw +# manage the built-in chains too. Warning: setting this to 'yes' will break +# non-ufw managed firewall rules +MANAGE_BUILTINS=no + +# +# IPT backend +# +# only enable if using iptables backend +IPT_SYSCTL=/etc/ufw/sysctl.conf + +# Extra connection tracking modules to load. Complete list can be found in +# net/netfilter/Kconfig of your kernel source. Some common modules: +# nf_conntrack_irc, nf_nat_irc: DCC (Direct Client to Client) support +# nf_conntrack_netbios_ns: NetBIOS (samba) client support +# nf_conntrack_pptp, nf_nat_pptp: PPTP over stateful firewall/NAT +# nf_conntrack_ftp, nf_nat_ftp: active FTP support +# nf_conntrack_tftp, nf_nat_tftp: TFTP support (server side) +IPT_MODULES="nf_conntrack_ftp nf_nat_ftp nf_conntrack_netbios_ns" + diff --git a/.linux_items/archlive/airootfs/etc/fstab b/.linux_items/archlive/airootfs/etc/fstab new file mode 100644 index 00000000..e69de29b diff --git a/.linux_items/archlive/airootfs/etc/locale.conf b/.linux_items/archlive/airootfs/etc/locale.conf new file mode 100644 index 00000000..01ec548f --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/locale.conf @@ -0,0 +1 @@ +LANG=en_US.UTF-8 diff --git a/.linux_items/archlive/airootfs/etc/locale.gen b/.linux_items/archlive/airootfs/etc/locale.gen new file mode 100644 index 00000000..a1b8ba14 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/locale.gen @@ -0,0 +1 @@ +en_US.UTF-8 UTF-8 \ No newline at end of file diff --git a/.linux_items/archlive/airootfs/etc/machine-id b/.linux_items/archlive/airootfs/etc/machine-id new file mode 100644 index 00000000..e69de29b diff --git a/.linux_items/archlive/airootfs/etc/motd b/.linux_items/archlive/airootfs/etc/motd new file mode 100644 index 00000000..dfba12f7 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/motd @@ -0,0 +1,9 @@ +Welcome to the WK Linux Toolbox + +Some common commands: +% hw-diags +% hw-info +% mount-all-volumes +% mount-backup-shares +% connect-to-network + diff --git a/.linux_items/archlive/airootfs/etc/oblogout.conf b/.linux_items/archlive/airootfs/etc/oblogout.conf new file mode 100644 index 00000000..4595c766 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/oblogout.conf @@ -0,0 +1,20 @@ +[settings] +usehal = false + +[looks] +opacity = 70 +bgcolor = black +buttontheme = foom +#buttons = cancel, logout, restart, shutdown, suspend, hibernate, lock +buttons = restart, shutdown, logout + +[shortcuts] +cancel = Escape +shutdown = S +restart = R +logout = L + +[commands] +shutdown = systemctl poweroff +restart = systemctl reboot +logout = openbox --exit diff --git a/.linux_items/archlive/airootfs/etc/polkit-1/rules.d/49-nopasswd_global.rules b/.linux_items/archlive/airootfs/etc/polkit-1/rules.d/49-nopasswd_global.rules new file mode 100644 index 00000000..ce304018 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/polkit-1/rules.d/49-nopasswd_global.rules @@ -0,0 +1,5 @@ +polkit.addRule(function(action, subject) { + if (subject.isInGroup("wheel")) { + return polkit.Result.YES; + } +}); diff --git a/.linux_items/archlive/airootfs/etc/skel/.Xresources b/.linux_items/archlive/airootfs/etc/skel/.Xresources new file mode 100644 index 00000000..68054af5 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/skel/.Xresources @@ -0,0 +1,64 @@ +! general settings +URxvt*saveline: 15000 +URxvt*termName: rxvt-256color +URxvt*iso14755: false + +! appearance +URxvt*depth: 32 +!URxvt*background: rgba:0000/0000/0000/AAAA +!URxvt*background: [80]#404552 +!URxvt*background: [100]#2f343f +!URxvt*foreground: #F8F8FF +!URxvt.underlineColor: #4682B4 +!URxvt.highlightColor: #4682B4 +!URxvt.throughColor: Blue +!URxvt*cursorColor: #dc8cc3 +!URxvt*cursorColor2: Black +URxvt*scrollBar: false +URxvt*scrollBar_right: false +URxvt*internalBorder: 0 +URxvt*externalBorder: 0 +!URxvt.colorIT: #87af5f +!URxvt.colorBD: #c5c8c6 +!URxvt.colorUL: #87afd7 +URxvt.geometry: 92x16 +URxvt.internalBorder: 8 +URxvt.shading: 10 +URxvt.transparent: true + +! Base16 Isotope +! Scheme: Jan T. Sott +!! Modified by 2Shirt + +*.foreground: #d0d0d0 +*.background: #000000 +*.cursorColor: #d0d0d0 + +*.color0: #000000 +*.color1: #ff0000 +*.color2: #33ff00 +*.color3: #ffd000 +*.color4: #0066ff +*.color5: #cc00ff +*.color6: #00ffff +*.color7: #d0d0d0 + +*.color8: #808080 +*.color9: #ff9900 +*.color10: #404040 +*.color11: #606060 +*.color12: #c0c0c0 +*.color13: #e0e0e0 +*.color14: #3300ff +*.color15: #ffffff + +! fonts +Xft.autohint: 0 +Xft.antialias: 1 +Xft.hinting: true +Xft.hintstyle: hintslight +Xft.rgba: rgb +Xft.lcdfilter: lcddefault +URxvt.font: xft:Inconsolata:size=12 +!URxvt.letterSpace: -3 + diff --git a/.linux_items/archlive/airootfs/etc/skel/.aliases b/.linux_items/archlive/airootfs/etc/skel/.aliases new file mode 100644 index 00000000..62185e55 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/skel/.aliases @@ -0,0 +1,36 @@ +alias 7z0='7z a -t7z -mx=0' +alias 7z1='7z a -t7z -mx=1' +alias 7z3='7z a -t7z -mx=3' +alias 7z5='7z a -t7z -mx=5' +alias 7z7='7z a -t7z -mx=7' +alias 7z9='7z a -t7z -mx=9' +alias diff='colordiff -ur' +alias du='du -sch --apparent-size' +alias fix-perms='find -type d -exec chmod 755 "{}" \; && find -type f -exec chmod 644 "{}" \;' +alias hw-info='sudo inxi -ACDdGlMmNopRsxxc 25' +alias less='less -S' +alias ls='ls --color=auto' +alias mkdir='mkdir -p' +alias mount='sudo mount' +alias mv='mv -nv' +alias photorec-sort='sudo photorec-sort' +alias photorec='sudo photorec' +alias q1='clear && ls -1' +alias q1a='clear && ls -1A' +alias q='clear && ls -lh' +alias qa='clear && ls -lAh' +alias qs='clear && ls' +alias qsa='clear && ls -A' +alias rm='rm -v' +alias rmdirs='find -depth -mindepth 1 -type d -exec rmdir "{}" --ignore-fail-on-non-empty \;' +alias rs='rsync -avhPS --stats --exclude-from="$HOME/.rsync_exclusions"' +alias rsz='rsync -avhzPS --stats --exclude-from="$HOME/.rsync_exclusions"' +alias sdu='sudo du -sch --apparent-size' +alias srmdirs='sudo find -depth -mindepth 1 -type d -exec rmdir "{}" --ignore-fail-on-non-empty \;' +alias srs='sudo rsync -avhPS --stats --exclude-from="$HOME/.rsync_exclusions"' +alias srsz='sudo rsync -avhzPS --stats --exclude-from="$HOME/.rsync_exclusions"' +alias start-wifi='sudo start-wifi' +alias td='tmux detach' +alias testdisk='sudo testdisk' +alias umount='sudo umount' +alias unmount='sudo umount' diff --git a/.linux_items/archlive/airootfs/etc/skel/.bash_logout b/.linux_items/archlive/airootfs/etc/skel/.bash_logout new file mode 100644 index 00000000..0e4e4f18 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/skel/.bash_logout @@ -0,0 +1,3 @@ +# +# ~/.bash_logout +# diff --git a/.linux_items/archlive/airootfs/etc/skel/.bash_profile b/.linux_items/archlive/airootfs/etc/skel/.bash_profile new file mode 100644 index 00000000..5545f007 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/skel/.bash_profile @@ -0,0 +1,5 @@ +# +# ~/.bash_profile +# + +[[ -f ~/.bashrc ]] && . ~/.bashrc diff --git a/.linux_items/archlive/airootfs/etc/skel/.bashrc b/.linux_items/archlive/airootfs/etc/skel/.bashrc new file mode 100644 index 00000000..cb37e84b --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/skel/.bashrc @@ -0,0 +1,14 @@ +# +# ~/.bashrc +# + +# If not running interactively, don't do anything +[[ $- != *i* ]] && return + +PS1='[\u@\h \W]\$ ' + +## Load aliases +. $HOME/.aliases + +# Update LS_COLORS +eval $(dircolors ~/.dircolors) diff --git a/.linux_items/archlive/airootfs/etc/skel/.config/Thunar/accels.scm b/.linux_items/archlive/airootfs/etc/skel/.config/Thunar/accels.scm new file mode 100644 index 00000000..45408e2a --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/skel/.config/Thunar/accels.scm @@ -0,0 +1,73 @@ +; Thunar GtkAccelMap rc-file -*- scheme -*- +; this file is an automated accelerator map dump +; +; (gtk_accel_path "/ThunarLauncher/sendto-desktop" "") +; (gtk_accel_path "/ThunarStandardView/create-folder" "n") +; (gtk_accel_path "/ThunarShortcutsPane/sendto-shortcuts" "") +; (gtk_accel_path "/ThunarWindow/view-side-pane-menu" "") +; (gtk_accel_path "/ThunarStandardView/paste-into-folder" "v") +; (gtk_accel_path "/ThunarWindow/open-home" "Home") +; (gtk_accel_path "/ThunarWindow/view-menu" "") +; (gtk_accel_path "/ThunarLauncher/open" "o") +; (gtk_accel_path "/ThunarWindow/go-menu" "") +; (gtk_accel_path "/ThunarActions/uca-action-1462127723240094-1" "") +; (gtk_accel_path "/ThunarWindow/open-file-system" "") +; (gtk_accel_path "/ThunarWindow/zoom-out" "minus") +; (gtk_accel_path "/ThunarStandardView/paste" "v") +; (gtk_accel_path "/ThunarLauncher/open-with-menu" "") +; (gtk_accel_path "/ThunarWindow/help-menu" "") +; (gtk_accel_path "/ThunarWindow/file-menu" "") +; (gtk_accel_path "/ThunarLauncher/open-with-other-in-menu" "") +; (gtk_accel_path "/ThunarWindow/detach-tab" "") +; (gtk_accel_path "/ThunarLauncher/open-in-new-tab" "p") +; (gtk_accel_path "/ThunarWindow/view-menubar" "m") +; (gtk_accel_path "/ThunarStandardView/back" "Left") +; (gtk_accel_path "/ThunarWindow/close-tab" "w") +; (gtk_accel_path "/ThunarWindow/view-as-compact-list" "3") +; (gtk_accel_path "/ThunarWindow/view-side-pane-tree" "e") +; (gtk_accel_path "/ThunarStandardView/restore" "") +; (gtk_accel_path "/ThunarWindow/open-network" "") +; (gtk_accel_path "/ThunarActions/Tap::create-archive" "") +; (gtk_accel_path "/ThunarWindow/new-tab" "t") +; (gtk_accel_path "/ThunarWindow/preferences" "") +; (gtk_accel_path "/ThunarStandardView/rename" "F2") +; (gtk_accel_path "/ThunarWindow/sendto-menu" "") +; (gtk_accel_path "/ThunarWindow/edit-menu" "") +; (gtk_accel_path "/ThunarLauncher/open-with-other" "") +; (gtk_accel_path "/ThunarWindow/view-location-selector-toolbar" "") +; (gtk_accel_path "/ThunarStandardView/invert-selection" "") +; (gtk_accel_path "/ThunarStandardView/make-link" "") +; (gtk_accel_path "/ThunarWindow/view-as-icons" "1") +; (gtk_accel_path "/ThunarWindow/new-window" "n") +; (gtk_accel_path "/ThunarStandardView/forward" "Right") +; (gtk_accel_path "/ThunarStandardView/move-to-trash" "") +; (gtk_accel_path "/ThunarStandardView/select-by-pattern" "s") +; (gtk_accel_path "/ThunarWindow/about" "") +; (gtk_accel_path "/ThunarStandardView/setup-columns" "") +; (gtk_accel_path "/ThunarWindow/contents" "F1") +; (gtk_accel_path "/ThunarWindow/open-desktop" "") +; (gtk_accel_path "/ThunarWindow/close-all-windows" "w") +; (gtk_accel_path "/ThunarWindow/zoom-in" "plus") +; (gtk_accel_path "/ThunarStandardView/duplicate" "") +; (gtk_accel_path "/ThunarWindow/open-parent" "Up") +; (gtk_accel_path "/ThunarWindow/view-side-pane-shortcuts" "b") +; (gtk_accel_path "/ThunarWindow/reload" "r") +; (gtk_accel_path "/ThunarWindow/open-templates" "") +; (gtk_accel_path "/ThunarStandardView/copy" "c") +; (gtk_accel_path "/ThunarWindow/view-location-selector-pathbar" "") +; (gtk_accel_path "/ThunarStandardView/properties" "Return") +; (gtk_accel_path "/ThunarStandardView/delete" "") +; (gtk_accel_path "/ThunarActions/Twp::setwallpaper" "") +; (gtk_accel_path "/ThunarWindow/empty-trash" "") +; (gtk_accel_path "/ThunarWindow/view-location-selector-menu" "") +; (gtk_accel_path "/ThunarLauncher/open-in-new-window" "o") +; (gtk_accel_path "/ThunarStandardView/cut" "x") +; (gtk_accel_path "/ThunarWindow/close-window" "q") +; (gtk_accel_path "/ThunarStandardView/select-all-files" "") +; (gtk_accel_path "/ThunarWindow/open-location" "l") +; (gtk_accel_path "/ThunarWindow/zoom-reset" "0") +; (gtk_accel_path "/ThunarWindow/view-statusbar" "") +; (gtk_accel_path "/ThunarWindow/show-hidden" "h") +; (gtk_accel_path "/ThunarWindow/view-as-detailed-list" "2") +; (gtk_accel_path "/ThunarActions/uca-action-1497008558378216-3" "") + diff --git a/.linux_items/archlive/airootfs/etc/skel/.config/Thunar/uca.xml b/.linux_items/archlive/airootfs/etc/skel/.config/Thunar/uca.xml new file mode 100644 index 00000000..d5eafe20 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/skel/.config/Thunar/uca.xml @@ -0,0 +1,24 @@ + + + + utilities-terminal + Open Terminal Here + 1462127723240094-1 + exo-open --working-directory %f --launch TerminalEmulator + Example for a custom action + * + + + + + edit-redo-symbolic + Remount Read-Write + 1497008558378216-3 + urxvt -T "Mount Tool" -e remount-rw %f + Remount Read-Write + * + + + + + diff --git a/.linux_items/archlive/airootfs/etc/skel/.config/dunst/dunstrc b/.linux_items/archlive/airootfs/etc/skel/.config/dunst/dunstrc new file mode 100644 index 00000000..6d56bc6f --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/skel/.config/dunst/dunstrc @@ -0,0 +1,322 @@ +[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 = mouse + + # 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 = "300x5-30+20" + + # 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 = 20 + + # 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 = 2 + + # 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 = 3 + + # Defines color of the frame around the notification window. + #frame_color = "#3300ff" + + # 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. + idle_threshold = 120 + + ### Text ### + + font = Inconsolata 8 + + # 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: + # bold + # italic + # strikethrough + # underline + # + # For a complete reference see + # . + # + # 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 + # Markup is allowed + format = "%s\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 + + # 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 = off + + # Scale larger icons down to this size, set to 0 to disable + max_icon_size = 32 + + # Paths to default icons. + icon_folders = /usr/share/icons/Papirus-Dark/16x16/status/:/usr/share/icons/Papirus-Dark/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 = 20 + + ### 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 + + ### 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 + +# 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. + frame_color = "#2d3036" + background = "#222222" + foreground = "#22ee22" + timeout = 5 + # Icon for notifications with low urgency, uncomment to enable + #icon = /path/to/icon + +[urgency_normal] + frame_color = "#2d3036" + background = "#222222" + foreground = "#e6d947" + timeout = 5 + # Icon for notifications with normal urgency, uncomment to enable + #icon = /path/to/icon + +[urgency_critical] + frame_color = "#2d3036" + background = "#800000" + foreground = "#ffffff" + timeout = 0 + # 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", "new_icon" and "format". +# 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. + +#[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 diff --git a/.linux_items/archlive/airootfs/etc/skel/.config/gtk-3.0/settings.ini b/.linux_items/archlive/airootfs/etc/skel/.config/gtk-3.0/settings.ini new file mode 100644 index 00000000..8ba66579 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/skel/.config/gtk-3.0/settings.ini @@ -0,0 +1,16 @@ +[Settings] +gtk-theme-name=Arc-Dark +gtk-icon-theme-name=Papirus-Dark +gtk-font-name=Noto Sans 11 +gtk-cursor-theme-name=Adwaita +gtk-cursor-theme-size=0 +gtk-toolbar-style=GTK_TOOLBAR_BOTH +gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR +gtk-button-images=1 +gtk-menu-images=1 +gtk-enable-event-sounds=1 +gtk-enable-input-feedback-sounds=1 +gtk-xft-antialias=1 +gtk-xft-hinting=1 +gtk-xft-hintstyle=hintslight +gtk-xft-rgba=rgb diff --git a/.linux_items/archlive/airootfs/etc/skel/.config/i3/config b/.linux_items/archlive/airootfs/etc/skel/.config/i3/config new file mode 100644 index 00000000..6cb3baa0 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/skel/.config/i3/config @@ -0,0 +1,314 @@ +# This file has been auto-generated by i3-config-wizard(1). +# It will not be overwritten, so edit it as you like. +# +# Should you change your keyboard layout some time, delete +# this file and re-run i3-config-wizard(1). +# + +# i3 config file (v4) +# +# Please see http://i3wm.org/docs/userguide.html for a complete reference! + +set $mod Mod4 + +# Configure border style +new_window pixel 1 +new_float normal + +# Hide borders +hide_edge_borders none + +# Pulse Audio controls +bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume 0 +5% #increase sound volume +bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume 0 -5% #decrease sound volume +bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute 0 toggle # mute sound + +# alt+tab navi +bindsym Mod1+Tab workspace next +bindsym Mod1+Shift+Tab workspace prev + +# change borders +bindsym $mod+u border none +bindsym $mod+y border pixel 1 +bindsym $mod+n border normal + +# Font for window titles. Will also be used by the bar unless a different font +# is used in the bar {} block below. +#font Inconsolata:monospace 8 +font pango:Noto Sans Mono 10, FontAwesome 10 + +# This font is widely installed, provides lots of unicode glyphs, right-to-left +# text rendering and scalability on retina/hidpi displays (thanks to pango). +#font pango:DejaVu Sans Mono 8 + +# Before i3 v4.8, we used to recommend this one as the default: +# font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1 +# The font above is very space-efficient, that is, it looks good, sharp and +# clear in small sizes. However, its unicode glyph coverage is limited, the old +# X core fonts rendering does not support right-to-left and this being a bitmap +# font, it doesn’t scale on retina/hidpi displays. + +# Use Mouse+$mod to drag floating windows to their wanted position +floating_modifier $mod + +# start a terminal +bindsym $mod+Return exec i3-sensible-terminal + +# kill focused window +bindsym $mod+Shift+q kill +bindsym $mod+q kill +bindsym Mod1+F4 kill + +# start dmenu (a program launcher) +#bindsym $mod+Shift+d exec dmenu_run +# There also is the (new) i3-dmenu-desktop which only displays applications +# shipping a .desktop file. It is a wrapper around dmenu, so you need that +# installed. +#bindsym $mod+Shift+d exec --no-startup-id i3-dmenu-desktop +bindsym $mod+r exec "rofi -combi-modi window,drun,run -show combi -modi combi" + +# misc app shortcuts +bindsym $mod+d exec "urxvt -title 'Hardware Diagnostics' -e hw-diags" +bindsym $mod+f exec "thunar ~" +bindsym $mod+i exec "hardinfo" +bindsym $mod+m exec "urxvt -title 'Mount All Volumes' -e mount-all-volumes" +bindsym $mod+s exec "urxvt -title 'Hardware Diagnostics' -e hw-diags foh" +bindsym $mod+t exec "urxvt" +bindsym $mod+v exec "urxvt -title 'Hardware Sensors' -e hw-diags-sensors" +bindsym $mod+w exec "firefox" + +focus_follows_mouse no + +# change focus +bindsym $mod+j focus left +bindsym $mod+k focus down +bindsym $mod+l focus up +bindsym $mod+semicolon focus right + +# alternatively, you can use the cursor keys: +bindsym $mod+Left focus left +bindsym $mod+Down focus down +bindsym $mod+Up focus up +bindsym $mod+Right focus right + +# move focused window +bindsym $mod+Shift+j move left +bindsym $mod+Shift+k move down +bindsym $mod+Shift+l move up +bindsym $mod+Shift+semicolon move right + +# alternatively, you can use the cursor keys: +bindsym $mod+Shift+Left move left +bindsym $mod+Shift+Down move down +bindsym $mod+Shift+Up move up +bindsym $mod+Shift+Right move right + +# workspace back and forth (with/without active container) +workspace_auto_back_and_forth yes +bindsym $mod+b workspace back_and_forth +bindsym $mod+Shift+b move container to workspace back_and_forth; workspace back_and_forth + +# split orientation +bindsym $mod+Shift+h split h +bindsym $mod+Shift+v split v + +# enter fullscreen mode for the focused container +bindsym $mod+Shift+f fullscreen toggle + +# change container layout (stacked, tabbed, toggle split) +bindsym $mod+Shift+s layout stacking +bindsym $mod+Shift+w layout tabbed +bindsym $mod+Shift+e layout toggle split + +# toggle tiling / floating +bindsym $mod+Shift+space floating toggle + +# change focus between tiling / floating windows +bindsym $mod+space focus mode_toggle + +# focus the parent container +#bindsym $mod+a focus parent + +# move the currently focused window to the scratchpad +bindsym $mod+Shift+minus move scratchpad + +# Show the next scratchpad window or hide the focused scratchpad window. +# If there are multiple scratchpad windows, this command cycles through them. +bindsym $mod+minus scratchpad show + +# focus the child container +#bindsym $mod+d focus child + +# Workspace names +set $ws1 "一" +set $ws2 "二" +set $ws3 "三" +set $ws4 "四" +set $ws5 "五" +set $ws6 "六" +set $ws7 "七" +set $ws8 "八" +set $ws9 "九" +set $ws10 "十" + +# switch to workspace +bindsym $mod+1 workspace $ws1 +bindsym $mod+2 workspace $ws2 +bindsym $mod+3 workspace $ws3 +bindsym $mod+4 workspace $ws4 +bindsym $mod+5 workspace $ws5 +bindsym $mod+6 workspace $ws6 +bindsym $mod+7 workspace $ws7 +bindsym $mod+8 workspace $ws8 +bindsym $mod+9 workspace $ws9 +bindsym $mod+0 workspace $ws10 + +# move focused container to workspace +bindsym $mod+Ctrl+1 move container to workspace $ws1 +bindsym $mod+Ctrl+2 move container to workspace $ws2 +bindsym $mod+Ctrl+3 move container to workspace $ws3 +bindsym $mod+Ctrl+4 move container to workspace $ws4 +bindsym $mod+Ctrl+5 move container to workspace $ws5 +bindsym $mod+Ctrl+6 move container to workspace $ws6 +bindsym $mod+Ctrl+7 move container to workspace $ws7 +bindsym $mod+Ctrl+8 move container to workspace $ws8 +bindsym $mod+Ctrl+9 move container to workspace $ws9 +bindsym $mod+Ctrl+0 move container to workspace $ws10 + +# move focused container to workspace and follow +bindsym $mod+Shift+1 move container to workspace $ws1; workspace $ws1 +bindsym $mod+Shift+2 move container to workspace $ws2; workspace $ws2 +bindsym $mod+Shift+3 move container to workspace $ws3; workspace $ws3 +bindsym $mod+Shift+4 move container to workspace $ws4; workspace $ws4 +bindsym $mod+Shift+5 move container to workspace $ws5; workspace $ws5 +bindsym $mod+Shift+6 move container to workspace $ws6; workspace $ws6 +bindsym $mod+Shift+7 move container to workspace $ws7; workspace $ws7 +bindsym $mod+Shift+8 move container to workspace $ws8; workspace $ws8 +bindsym $mod+Shift+9 move container to workspace $ws9; workspace $ws9 +bindsym $mod+Shift+0 move container to workspace $ws10; workspace $ws10 + +# Open specific applications in floating mode +for_window [title="Slack"] floating enable +for_window [title="Screen Layout Editor"] floating enable +for_window [class="Galculator"] floating enable border pixel 1 +for_window [class="Nitrogen"] floating enable sticky enable border normal +for_window [title="Hardware Diagnostics"] floating enable +for_window [title="Hardware Sensors"] floating enable +for_window [title="Mount All Volumes"] floating enable +for_window [title="Firefox"] floating enable border normal + +# switch to workspace with urgent window automatically +for_window [urgent=latest] focus + +# reload the configuration file +#bindsym $mod+Shift+c reload +# restart i3 inplace (preserves your layout/session, can be used to upgrade i3) +#bindsym $mod+Shift+r restart + +# resize window (you can also use the mouse for that) +mode "resize" { + # These bindings trigger as soon as you enter the resize mode + + # Pressing left will shrink the window’s width. + # Pressing right will grow the window’s width. + # Pressing up will shrink the window’s height. + # Pressing down will grow the window’s height. + bindsym j resize shrink width 10 px or 10 ppt + bindsym k resize grow height 10 px or 10 ppt + bindsym l resize shrink height 10 px or 10 ppt + bindsym semicolon resize grow width 10 px or 10 ppt + + # same bindings, but for the arrow keys + bindsym Left resize shrink width 10 px or 10 ppt + bindsym Down resize grow height 10 px or 10 ppt + bindsym Up resize shrink height 10 px or 10 ppt + bindsym Right resize grow width 10 px or 10 ppt + + # back to normal: Enter or Escape + bindsym Return mode "default" + bindsym Escape mode "default" +} + +bindsym $mod+Shift+r mode "resize" + +# "System" menu +bindsym $mod+x mode "$mode_system" +set $mode_system (l)ock, (e)xit, (r)eboot, (s)hutdown, (c)onfig, (i)3 +mode "$mode_system" { + bindsym l exec --no-startup-id i3lock, mode "default" + bindsym e exit, mode "default" + bindsym r exec reboot, mode "default" + bindsym s exec poweroff, mode "default" + bindsym c reload, mode "default" + bindsym i restart, mode "default" + + # exit system mode: "Enter" or "Escape" + bindsym Return mode "default" + bindsym Escape mode "default" +} + +############################# +### settings for i3-gaps: ### +############################# + +# Set inner/outer gaps +gaps inner 10 +gaps outer 4 + +# Additionally, you can issue commands with the following syntax. This is useful to bind keys to changing the gap size. +# gaps inner|outer current|all set|plus|minus +# gaps inner all set 10 +# gaps outer all plus 5 + +# Smart gaps (gaps used if only more than one container on the workspace) +smart_gaps on + +# Smart borders (draw borders around container only if it is not the only container on this workspace) +# on|no_gaps (on=always activate and no_gaps=only activate if the gap size to the edge of the screen is 0) +smart_borders on + +# Press $mod+Shift+g to enter the gap mode. Choose o or i for modifying outer/inner gaps. Press one of + / - (in-/decrement for current workspace) or 0 (remove gaps for current workspace). If you also press Shift with these keys, the change will be global for all workspaces. +set $mode_gaps Gaps: (o) outer, (i) inner +set $mode_gaps_outer Outer Gaps: +|-|0 (local), Shift + +|-|0 (global) +set $mode_gaps_inner Inner Gaps: +|-|0 (local), Shift + +|-|0 (global) +bindsym $mod+Shift+g mode "$mode_gaps" + +mode "$mode_gaps" { + bindsym o mode "$mode_gaps_outer" + bindsym i mode "$mode_gaps_inner" + bindsym Return mode "default" + bindsym Escape mode "default" +} +mode "$mode_gaps_inner" { + bindsym plus gaps inner current plus 5 + bindsym minus gaps inner current minus 5 + bindsym 0 gaps inner current set 0 + + bindsym Shift+plus gaps inner all plus 5 + bindsym Shift+minus gaps inner all minus 5 + bindsym Shift+0 gaps inner all set 0 + + bindsym Return mode "default" + bindsym Escape mode "default" +} +mode "$mode_gaps_outer" { + bindsym plus gaps outer current plus 5 + bindsym minus gaps outer current minus 5 + bindsym 0 gaps outer current set 0 + + bindsym Shift+plus gaps outer all plus 5 + bindsym Shift+minus gaps outer all minus 5 + bindsym Shift+0 gaps outer all set 0 + + bindsym Return mode "default" + bindsym Escape mode "default" +} + +# Start i3bar to display a workspace bar (plus the system information i3status +# finds out, if available) +bar { + position bottom + separator_symbol " " + status_command i3status + height 26 +} diff --git a/.linux_items/archlive/airootfs/etc/skel/.config/i3status/config b/.linux_items/archlive/airootfs/etc/skel/.config/i3status/config new file mode 100644 index 00000000..d36294a4 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/skel/.config/i3status/config @@ -0,0 +1,76 @@ +# i3status configuration file. +# see "man i3status" for documentation. + +# It is important that this file is edited as UTF-8. +# The following line should contain a sharp s: +# ß +# If the above line is not correctly displayed, fix your editor first! + +general { + colors = true + interval = 5 +} + +#order += "disk /" +order += "wireless _first_" +order += "ethernet _first_" +order += "cpu_usage" +order += "battery all" +order += "volume master" +order += "tztime local" +#order += "tztime utc" + +cpu_usage { + format = " %usage" + max_threshold = 90 + #format_above_threshold = " %usage" + degraded_threshold = 75 + #format_above_degraded_threshold = " %usage" +} + +wireless _first_ { + format_up = " (%quality at %essid) %ip" + format_down = " Down" +} + +ethernet _first_ { + # if you use %speed, i3status requires root privileges + format_up = " %ip" + format_down = " Down" +} + +battery all { + integer_battery_capacity = true + format = "%status %percentage" + format_down = "" + status_chr = "" + status_bat = "" + status_unk = "" + status_full = "" + path = "/sys/class/power_supply/BAT%d/uevent" + low_threshold = 25 + threshold_type = percentage +} + +volume master { + format = " %volume" + format_muted = " muted" + device = "pulse" +} + +tztime local { + format = "%F %H:%M" +} + +tztime utc { + format = "%H:%M" + timezone = "UTC" +} + +load { + format = "%1min" +} + +disk "/" { + format = "%avail" +} diff --git a/.linux_items/archlive/airootfs/etc/skel/.config/mimeapps.list b/.linux_items/archlive/airootfs/etc/skel/.config/mimeapps.list new file mode 100644 index 00000000..e8beceeb --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/skel/.config/mimeapps.list @@ -0,0 +1,25 @@ +[Added Associations] +application/pdf=mupdf.desktop; +application/vnd.adobe.flash.movie=mpv.desktop; +application/vnd.ms-asf=mpv.desktop; +audio/flac=mpv.desktop; +audio/mp4=mpv.desktop; +audio/mpeg=mpv.desktop; +audio/x-vorbis+ogg=mpv.desktop; +image/bmp=ristretto.desktop; +image/gif=ristretto.desktop; +image/jpeg=ristretto.desktop; +image/png=ristretto.desktop; +image/vnd.microsoft.icon=ristretto.desktop; +inode/directory=exo-file-manager.desktop +text/plain=mousepad.desktop; +video/mp4=mpv.desktop; +video/mpeg=mpv.desktop; +video/quicktime=mpv.desktop; +video/x-flv=mpv.desktop; +video/x-matroska=mpv.desktop; +video/x-msvideo=mpv.desktop; +video/x-ms-wmv=mpv.desktop; +x-scheme-handler/http=exo-web-browser.desktop +x-scheme-handler/https=exo-web-browser.desktop +x-scheme-handler/trash=exo-file-manager.desktop diff --git a/.linux_items/archlive/airootfs/etc/skel/.config/openbox/autostart b/.linux_items/archlive/airootfs/etc/skel/.config/openbox/autostart new file mode 100644 index 00000000..21fd52e5 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/skel/.config/openbox/autostart @@ -0,0 +1,19 @@ +# +# These things are run when an Openbox X Session is started. +# You may place a similar script in $HOME/.config/openbox/autostart +# to run user-specific things. +# + +# If you want to use GNOME config tools... +# +#if test -x /usr/lib/openbox/gnome-settings-daemon >/dev/null; then +# /usr/lib/openbox/gnome-settings-daemon & +#elif which gnome-settings-daemon >/dev/null 2>&1; then +# gnome-settings-daemon & +#fi + +# If you want to use XFCE config tools... +# +#xfce-mcs-manager & + +tint2 & diff --git a/.linux_items/archlive/airootfs/etc/skel/.config/openbox/environment b/.linux_items/archlive/airootfs/etc/skel/.config/openbox/environment new file mode 100644 index 00000000..3311bd6f --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/skel/.config/openbox/environment @@ -0,0 +1,10 @@ +# +# Set system-wide environment variables here for Openbox +# User-specific variables should be placed in $HOME/.config/openbox/environment +# + +# To set your language for displaying messages and time/date formats, use the following: +#LANG=en_CA.UTF8 + +# To set your keyboard layout, you need to modify your X config: +# http://www.google.com/search?q=how+to+set+keyboard+layout+xorg diff --git a/.linux_items/archlive/airootfs/etc/skel/.config/openbox/menu.xml b/.linux_items/archlive/airootfs/etc/skel/.config/openbox/menu.xml new file mode 100644 index 00000000..d0131dc3 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/skel/.config/openbox/menu.xml @@ -0,0 +1,240 @@ + + + + + + + urxvt -t "Hardware Diagnostics" -e hw-diags + + + hardinfo + + + Thunar + + + gparted + + + gsmartcontrol + + + urxvt -title "Network Diagnostics" -hold -e hw-diags-network + + + firefox + + + + + + idle + + + urxvt -e python + + + urxvt -e python2.7 + + + urxvt -e tclsh8.6 + + + + + urxvt -e hexedit + + + urxvt -e nano + + + urxvt -e vi + + + urxvt -e vim + + + + + urxvt -e alsamixer + + + mpv + + + pavucontrol + + + qv4l2 + + + + + bssh + + + bvnc + + + urxvt -e elinks + + + firefox + + + urxvt -e ftp + + + urxvt -e irssi + + + urxvt -e lftp + + + urxvt -e mail + + + exo-open --launch MailReader + + + urxvt -e talk + + + urxvt -e telnet + + + urxvt -e tkvnc + + + exo-open --launch WebBrowser + + + zenmap + + + /usr/share/zenmap/su-to-zenmap.sh + + + + + urxvt -e bc + + + urxvt -e dc + + + + + urxvt -e mc + + + thunar + + + urxvt + + + urxvtc + + + urxvt-tabbed + + + uurxvt + + + + + + + nm-connection-editor + + + + thunar-settings + + + exo-preferred-applications + + + tint2conf + + + + avahi-discover + + + /usr/lib/Thunar/ThunarBulkRename + + + urxvt -e conky + + + gparted + + + gsmartcontrol_polkit + + + urxvt -e htop + + + obmenu + + + urxvt -e pstree + + + urxvt -e /usr/bin/pstree.x11 + + + urxvt -e pstree.x11 + + + hardinfo + + + tint2 + + + urxvt -e top + + + veracrypt + + + + + xfce4-about + + + compton --xrender-sync-fence + + + urxvt -e cmatrix + + + exo-open --launch FileManager + + + urxvt -e info + + + exo-open --launch TerminalEmulator + + + urxvt -e xev + + + + + + + + + + + oblogout + + + diff --git a/.linux_items/archlive/airootfs/etc/skel/.config/openbox/rc.xml b/.linux_items/archlive/airootfs/etc/skel/.config/openbox/rc.xml new file mode 100644 index 00000000..a52cb7cc --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/skel/.config/openbox/rc.xml @@ -0,0 +1,806 @@ + + + + + 10 + 20 + + + yes + + no + + yes + + no + + 200 + + no + + + + Smart + +
yes
+ + Primary + + 1 + +
+ + + 4 + Triste-Orange + NLIMC + + yes + yes + + sans + 8 + + bold + + normal + + + + sans + 8 + + bold + + normal + + + + sans + 9 + + normal + + normal + + + + sans + 9 + + normal + + normal + + + + sans + 9 + + bold + + normal + + + + sans + 9 + + bold + + normal + + + + + + 1 + 1 + + Arch + + 875 + + + + yes + Nonpixel + + Center + + + + 10 + + 10 + + + + + + 0 + 0 + 0 + 0 + + + TopLeft + + 0 + 0 + no + Above + + Vertical + + no + 300 + + 300 + + Middle + + + + C-g + + + + left + no + + + + + right + no + + + + + up + no + + + + + down + no + + + + + left + no + + + + + right + no + + + + + up + no + + + + + down + no + + + + + + + + + + + + + + client-menu + + + + + + + + + + + + + + + + + + + + + + + + yes + yes + + + + + + + + + + + right + + + + + left + + + + + up + + + + + down + + + + + + root-menu + + + + + urxvt -title "Hardware Diagnostics" -e hw-diags + + + + + thunar + + + + + hardinfo + + + + + urxvt -title "Mount all Volumes" -e mount-all-volumes-foh + + + + + rofi -combi-modi window,drun,run -show combi -modi combi + + + + + urxvt -title "Hardware Diagnostics" -e hw-diags foh + + + + + urxvt + + + + + urxvt -title "Hardware Sensors" -e hw-diags-sensors + + + + + firefox + + + + + oblogout + + + + + 1 + + 500 + + 400 + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + previous + + + + + next + + + + + previous + + + + + next + + + + + previous + + + + + next + + + + + + + + + + + + + no + + + + + + + + + + + yes + + + + + + + + + + + + + + + + + + + + + + + client-menu + + + + + + + top + + + + + + + left + + + + + + + right + + + + + + + bottom + + + + + + + client-menu + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + client-menu + + + + + + + client-menu + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + vertical + + + + + horizontal + + + + + + + + + + + + + + + + + previous + + + + + next + + + + + previous + + + + + next + + + + + previous + + + + + next + + + + + + + + + + + + + + + + client-list-combined-menu + + + + + root-menu + + + + + + + previous + + + + + next + + + + + previous + + + + + next + + + + + + + + menu.xml + 200 + + no + + 100 + + 400 + + yes + + yes + + + + + +
diff --git a/.linux_items/archlive/airootfs/etc/skel/.config/rofi/config b/.linux_items/archlive/airootfs/etc/skel/.config/rofi/config new file mode 100644 index 00000000..5c27c752 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/skel/.config/rofi/config @@ -0,0 +1,11 @@ +! rofi theme +rofi.color-enabled: true +! bg border separator +rofi.color-window: argb:d02d3036, #2d3036, #d64937 +! bg fg bg-alt hl-bg hl-fg +rofi.color-normal: argb:d02d3036, #d8d8d8, argb:d02d3036, #2d3036, #d64937 +rofi.color-active: argb:d0222222, #d64937, argb:d0222222, #d64937, #d8d8d8 +rofi.color-urgent: argb:d0888888, #d8d8d8, argb:d0888888, #888888, #d64937 + +rofi.separator-style: solid +rofi.hide-scrollbar: true diff --git a/.linux_items/archlive/airootfs/etc/skel/.config/tint2/tint2rc b/.linux_items/archlive/airootfs/etc/skel/.config/tint2/tint2rc new file mode 100644 index 00000000..a0319768 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/skel/.config/tint2/tint2rc @@ -0,0 +1,250 @@ +#---- Generated by tint2conf 2152 ---- +# See https://gitlab.com/o9000/tint2/wikis/Configure for +# full documentation of the configuration options. +#------------------------------------- +# Gradients +#------------------------------------- +# Backgrounds +# Background 1: Active task, Active taskbar, Default task, Iconified task, Inactive desktop name, Inactive taskbar, Panel, Urgent task +rounded = 0 +border_width = 0 +border_sides = TBLR +background_color = #2d3036 100 +border_color = #2d3036 100 +background_color_hover = #2d3036 100 +border_color_hover = #2d3036 100 +background_color_pressed = #2d3036 100 +border_color_pressed = #2d3036 100 + +# Background 2: +rounded = 1 +border_width = 0 +border_sides = TBLR +background_color = #d8d8d8 30 +border_color = #d8d8d8 30 +background_color_hover = #d8d8d8 30 +border_color_hover = #d8d8d8 30 +background_color_pressed = #d8d8d8 30 +border_color_pressed = #d8d8d8 30 + +# Background 3: +rounded = 1 +border_width = 0 +border_sides = TBLR +background_color = #000000 0 +border_color = #000000 0 +background_color_hover = #000000 0 +border_color_hover = #000000 0 +background_color_pressed = #000000 0 +border_color_pressed = #000000 0 + +# Background 4: +rounded = 1 +border_width = 1 +border_sides = TBLR +background_color = #888888 20 +border_color = #ed2323 60 +background_color_hover = #888888 20 +border_color_hover = #ed2323 60 +background_color_pressed = #888888 20 +border_color_pressed = #ed2323 60 + +# Background 5: +rounded = 0 +border_width = 1 +border_sides = TBLR +background_color = #000000 0 +border_color = #000000 0 +background_color_hover = #000000 0 +border_color_hover = #000000 0 +background_color_pressed = #000000 0 +border_color_pressed = #000000 0 + +# Background 6: +rounded = 0 +border_width = 1 +border_sides = TBLR +background_color = #d8d8d8 8 +border_color = #d8d8d8 0 +background_color_hover = #d8d8d8 8 +border_color_hover = #d8d8d8 0 +background_color_pressed = #d8d8d8 8 +border_color_pressed = #d8d8d8 0 + +# Background 7: Tooltip +rounded = 3 +border_width = 0 +border_sides = TBLR +background_color = #222222 90 +border_color = #222222 90 +background_color_hover = #222222 90 +border_color_hover = #222222 90 +background_color_pressed = #222222 90 +border_color_pressed = #222222 90 + +# Background 8: +rounded = 1 +border_width = 1 +border_sides = TBLR +background_color = #888888 20 +border_color = #888888 20 +background_color_hover = #888888 20 +border_color_hover = #888888 20 +background_color_pressed = #888888 20 +border_color_pressed = #888888 20 + +# Background 9: Active desktop name, Clock +rounded = 1 +border_width = 1 +border_sides = TBLR +background_color = #d64937 100 +border_color = #d64937 100 +background_color_hover = #d64937 100 +border_color_hover = #d64937 100 +gradient_id_hover = 0 +background_color_pressed = #d64937 100 +border_color_pressed = #d64937 100 + +#------------------------------------- +# Panel +panel_items = TSC +panel_size = 100% 30 +panel_margin = 0 0 +panel_padding = 0 0 0 +panel_background_id = 1 +wm_menu = 1 +panel_dock = 0 +panel_position = bottom center horizontal +panel_layer = bottom +panel_monitor = all +primary_monitor_first = 0 +panel_shrink = 0 +autohide = 0 +autohide_show_timeout = 0.3 +autohide_hide_timeout = 1.5 +autohide_height = 6 +strut_policy = follow_size +panel_window_name = tint2 +disable_transparency = 0 +mouse_effects = 0 +font_shadow = 0 +mouse_hover_icon_asb = 100 0 10 +mouse_pressed_icon_asb = 100 0 0 + +#------------------------------------- +# Taskbar +taskbar_mode = single_desktop +taskbar_hide_if_empty = 0 +taskbar_padding = 2 2 0 +taskbar_background_id = 1 +taskbar_active_background_id = 1 +taskbar_name = 1 +taskbar_hide_inactive_tasks = 0 +taskbar_hide_different_monitor = 0 +taskbar_always_show_all_desktop_tasks = 1 +taskbar_name_padding = 5 2 +taskbar_name_background_id = 1 +taskbar_name_active_background_id = 9 +taskbar_name_font = Inconsolata 10 +taskbar_name_font_color = #a9a9a9 100 +taskbar_name_active_font_color = #ffffff 100 +taskbar_distribute_size = 1 +taskbar_sort_order = title +task_align = left + +#------------------------------------- +# Task +task_text = 1 +task_icon = 0 +task_centered = 1 +urgent_nb_of_blink = 20 +task_maximum_size = 200 30 +task_padding = 2 2 2 +task_font = Inconsolata 10 +task_tooltip = 1 +task_font_color = #a8adb5 100 +task_active_font_color = #ffffff 100 +task_urgent_font_color = #a8adb5 100 +task_iconified_font_color = #a8adb5 100 +task_icon_asb = 100 0 0 +task_active_icon_asb = 100 0 0 +task_urgent_icon_asb = 100 0 0 +task_iconified_icon_asb = 80 0 0 +task_background_id = 1 +task_active_background_id = 1 +task_urgent_background_id = 1 +task_iconified_background_id = 1 +mouse_left = toggle_iconify +mouse_middle = none +mouse_right = close +mouse_scroll_up = toggle +mouse_scroll_down = iconify + +#------------------------------------- +# System tray (notification area) +systray_padding = 4 2 3 +systray_background_id = 0 +systray_sort = right2left +systray_icon_size = 24 +systray_icon_asb = 100 0 0 +systray_monitor = 1 +systray_name_filter = + +#------------------------------------- +# Launcher +launcher_padding = 8 4 4 +launcher_background_id = 0 +launcher_icon_background_id = 0 +launcher_icon_size = 0 +launcher_icon_asb = 100 0 0 +launcher_icon_theme_override = 0 +startup_notifications = 0 +launcher_tooltip = 1 + +#------------------------------------- +# Clock +#time1_format = %a, %d %B @ %H:%M +time1_format = %F %H:%M +time2_format = +time1_font = Inconsolata 10 +time1_timezone = +time2_timezone = +clock_font_color = #ffffff 100 +clock_padding = 4 4 +clock_background_id = 9 +clock_tooltip = +clock_tooltip_timezone = +clock_lclick_command = +clock_rclick_command = +clock_mclick_command = +clock_uwheel_command = +clock_dwheel_command = + +#------------------------------------- +# Battery +battery_tooltip = 1 +battery_low_status = 20 +battery_low_cmd = notify-send "battery low" +bat1_font = Inconsolata 12 +bat2_font = Inconsolata 12 +battery_font_color = #b5b5b5 100 +battery_padding = 2 0 +battery_background_id = 0 +battery_hide = 96 +battery_lclick_command = +battery_rclick_command = +battery_mclick_command = +battery_uwheel_command = +battery_dwheel_command = +ac_connected_cmd = +ac_disconnected_cmd = + +#------------------------------------- +# Tooltip +tooltip_show_timeout = 0 +tooltip_hide_timeout = 0 +tooltip_padding = 2 2 +tooltip_background_id = 7 +tooltip_font_color = #d8d8d8 100 +tooltip_font = Inconsolata 12 + diff --git a/.linux_items/archlive/airootfs/etc/skel/.conky_start b/.linux_items/archlive/airootfs/etc/skel/.conky_start new file mode 100644 index 00000000..c7230b17 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/skel/.conky_start @@ -0,0 +1,10 @@ +#!/bin/bash + +CONKY_RC="$HOME/.conkyrc" +if [[ -f "/run/archiso/bootmnt/arch/conky.rc" ]]; then + CONKY_RC="/run/archiso/bootmnt/arch/conky.rc" +fi + +sleep 2s && conky -c "${CONKY_RC}" -dq +sleep 5s && killall conky -c "${CONKY_RC}" -dq + diff --git a/.linux_items/archlive/airootfs/etc/skel/.conkyrc b/.linux_items/archlive/airootfs/etc/skel/.conkyrc new file mode 100644 index 00000000..adfd5cbb --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/skel/.conkyrc @@ -0,0 +1,166 @@ +# For commands above TEXT check: +# http://conky.sourceforge.net/config_settings.html +# +# For commands available below TEXT check: +# http://conky.sourceforge.net/variables.html + +# Bunsen Labs Conky help threads +# http://crunchbang.org/forums/viewtopic.php?pid=371424#p371424 + +# beta tested by: smacz +# Enjoy! :) + +# pkill -xf "conky -q -c $HOME/.config/conky/BL-Default.conkyrc" & +### Begin Window Settings ##################### +own_window yes +#own_window_type override +own_window_transparent no +own_window_hints undecorated,below,skip_taskbar,skip_pager,sticky +own_window_colour 000000 +own_window_class Conky +#own_window_title Bunsen Labs Default Conky +own_window_title Default Conky + +### ARGB can be used for real transparency +### NOTE that a composite manager is required for real transparency. +### This option will not work as desired (in most cases) in conjunction with +### own_window_type normal +own_window_argb_visual yes # Options: yes or no + +### When ARGB visuals are enabled, this use this to modify the alpha value +### Use: own_window_type normal +### Use: own_window_transparent no +### Valid range is 0-255, where 0 is 0% opacity, and 255 is 100% opacity. +own_window_argb_value 224 + +minimum_size 180 0 ### width | height +maximum_width 180 + +gap_x 20 ### left | right +gap_y 45 ### up | down + +alignment tr +####################### End Window Settings ### +### Font Settings ############################# +# Use Xft (anti-aliased font and stuff) +use_xft yes +xftfont Inconsolata:bold:size=9 +#xftfont Liberation Sans:size=9 + +# Alpha of Xft font. Must be a value at or between 1 and 0 ### +xftalpha 1 +# Force UTF8? requires XFT ### +override_utf8_locale yes + +uppercase no +######################### End Font Settings ### +### Colour Settings ########################### +draw_shades no #yes +default_shade_color 000000 + +draw_outline no # amplifies text if yes +default_outline_color 000000 + +#default_color 656667 # Waldorf original colour +#default_color 7a7a7a # Flame & Bunsen Grey +#default_color 929292 # Labs Grey +default_color C0C0C0 # Silver +color0 B0E0E6 # PowderBlue +color1 778899 # LightSlateGray +color2 D8BFD8 # Thistle +color3 9ACD32 # YellowGreen +color4 FFA07A # LightSalmon +color5 FFDEAD # NavajoWhite +color6 00BFFF # DeepSkyBlue +color7 5F9EA0 # CadetBlue +color8 BDB76B # DarkKhaki +color9 CD5C5C # IndianRed +####################### End Colour Settings ### +### Borders Section ########################### +draw_borders no +# Stippled borders? +stippled_borders 5 +# border margins +border_inner_margin 5 +border_outer_margin 0 +# border width +border_width 2 +# graph borders +draw_graph_borders yes #no +#default_graph_size 15 40 +####################### End Borders Section ### +### Miscellaneous Section ##################### +# Boolean value, if true, Conky will be forked to background when started. +background yes + +# Adds spaces around certain objects to stop them from moving other things +# around, this only helps if you are using a mono font +# Options: right, left or none +use_spacer none + +# Default and Minimum size is 256 - needs more for single commands that +# "call" a lot of text IE: bash scripts +text_buffer_size 6144 + +# Subtract (file system) buffers from used memory? +no_buffers yes + +# change GiB to G and MiB to M +short_units yes + +# Like it says, ot pads the decimals on % values +# doesn't seem to work since v1.7.1 +pad_percents 2 + +# Imlib2 image cache size, in bytes. Default 4MiB Increase this value if you use +# $image lots. Set to 0 to disable the image cache. +imlib_cache_size 0 + +# Use the Xdbe extension? (eliminates flicker) +# It is highly recommended to use own window with this one +# so double buffer won't be so big. +double_buffer yes + +# Maximum size of user text buffer, i.e. layout below TEXT line in config file +# (default is 16384 bytes) +# max_user_text 16384 + +# Desired output unit of all objects displaying a temperature. Parameters are +# either "fahrenheit" or "celsius". The default unit is degree Celsius. +# temperature_unit Fahrenheit + +################# End Miscellaneous Section ### +#### ${font Monospace:bold:size=10}${alignc}${execpi 600 $HOME/.config/conky/scripts/bunsenweather.sh} +update_interval 1 + +TEXT +${color}${alignc}S Y S T E M I N F O +${hr} +Date:${alignr}${time %F} +Time:${alignr}${time %H:%M} +Uptime:${alignr}${uptime_short} + +CPU: ${if_match ${cpu cpu0}<10} ${cpu cpu0}\ +${else}${if_match ${cpu cpu0}<100} ${cpu cpu0}\ +${else}${cpu cpu0}${endif}${endif}% Used${alignr}${freq_g} GHz +${cpugraph cpu0 20,180 ${color} ${color}} +RAM: ${mem} Used${alignr}${memmax} +${memgraph 20,180 ${color} ${color}} +Disk I/O: +${diskiograph 20,180 ${color} ${color}} +Down: ${downspeed}${goto 115}Up:${alignr}${upspeed} + +#Network + +${alignc}S H O R T C U T K E Y S +${hr} +[Super] + d${alignr}HW Diagnostics +[Super] + f${alignr}File Manager +[Super] + i${alignr}HW Information +[Super] + m${alignr}Mount Volumes +[Super] + r${alignr}Run Dialog +[Super] + s${alignr}SMART Check +[Super] + t${alignr}Terminal +[Super] + v${alignr}View Temps +[Super] + w${alignr}Web Browser +[Super] + x${alignr}Logout diff --git a/.linux_items/archlive/airootfs/etc/skel/.dircolors b/.linux_items/archlive/airootfs/etc/skel/.dircolors new file mode 100644 index 00000000..ccb0d187 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/skel/.dircolors @@ -0,0 +1,193 @@ +# Configuration file for dircolors, a utility to help you set the +# LS_COLORS environment variable used by GNU ls with the --color option. +# Copyright (C) 1996-2017 Free Software Foundation, Inc. +# Copying and distribution of this file, with or without modification, +# are permitted provided the copyright notice and this notice are preserved. +# The keywords COLOR, OPTIONS, and EIGHTBIT (honored by the +# slackware version of dircolors) are recognized but ignored. +# Below are TERM entries, which can be a glob patterns, to match +# against the TERM environment variable to determine if it is colorizable. +TERM Eterm +TERM ansi +TERM *color* +TERM con[0-9]*x[0-9]* +TERM cons25 +TERM console +TERM cygwin +TERM dtterm +TERM gnome +TERM hurd +TERM jfbterm +TERM konsole +TERM kterm +TERM linux +TERM linux-c +TERM mlterm +TERM putty +TERM rxvt* +TERM screen* +TERM st +TERM terminator +TERM tmux* +TERM vt100 +TERM xterm* +# Below are the color init strings for the basic file types. A color init +# string consists of one or more of the following numeric codes: +# Attribute codes: +# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed +# Text color codes: +# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white +# Background color codes: +# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white +#NORMAL 00 # no color code at all +#FILE 00 # regular file: use no color at all +RESET 0 # reset to "normal" color +DIR 01;34 # directory +LINK 01;36 # symbolic link. (If you set this to 'target' instead of a + # numerical value, the color is as for the file pointed to.) +MULTIHARDLINK 00 # regular file with more than one link +FIFO 40;33 # pipe +SOCK 01;35 # socket +DOOR 01;35 # door +BLK 40;33;01 # block device driver +CHR 40;33;01 # character device driver +ORPHAN 40;31;01 # symlink to nonexistent file, or non-stat'able file ... +MISSING 00 # ... and the files they point to +SETUID 37;41 # file that is setuid (u+s) +SETGID 30;43 # file that is setgid (g+s) +CAPABILITY 30;41 # file with capability +STICKY_OTHER_WRITABLE 40;33;01 # dir that is sticky and other-writable (+t,o+w) +OTHER_WRITABLE 40;33 # dir that is other-writable (o+w) and not sticky +STICKY 37;44 # dir with the sticky bit set (+t) and not other-writable +# This is for files with execute permission: +EXEC 01;32 +# List any file extensions like '.gz' or '.tar' that you would like ls +# to colorize below. Put the extension, a space, and the color init string. +# (and any comments you want to add after a '#') +# If you use DOS-style suffixes, you may want to uncomment the following: +#.cmd 01;32 # executables (bright green) +#.exe 01;32 +#.com 01;32 +#.btm 01;32 +#.bat 01;32 +# Or if you want to colorize scripts even if they do not have the +# executable bit actually set. +#.sh 01;32 +#.csh 01;32 + # archives or compressed (bright red) +.tar 01;31 +.tgz 01;31 +.arc 01;31 +.arj 01;31 +.taz 01;31 +.lha 01;31 +.lz4 01;31 +.lzh 01;31 +.lzma 01;31 +.tlz 01;31 +.txz 01;31 +.tzo 01;31 +.t7z 01;31 +.zip 01;31 +.z 01;31 +.Z 01;31 +.dz 01;31 +.gz 01;31 +.lrz 01;31 +.lz 01;31 +.lzo 01;31 +.xz 01;31 +.zst 01;31 +.tzst 01;31 +.bz2 01;31 +.bz 01;31 +.tbz 01;31 +.tbz2 01;31 +.tz 01;31 +.deb 01;31 +.rpm 01;31 +.jar 01;31 +.war 01;31 +.ear 01;31 +.sar 01;31 +.rar 01;31 +.alz 01;31 +.ace 01;31 +.zoo 01;31 +.cpio 01;31 +.7z 01;31 +.rz 01;31 +.cab 01;31 +.wim 01;31 +.swm 01;31 +.dwm 01;31 +.esd 01;31 +# image formats +.jpg 01;35 +.jpeg 01;35 +.mjpg 01;35 +.mjpeg 01;35 +.gif 01;35 +.bmp 01;35 +.pbm 01;35 +.pgm 01;35 +.ppm 01;35 +.tga 01;35 +.xbm 01;35 +.xpm 01;35 +.tif 01;35 +.tiff 01;35 +.png 01;35 +.svg 01;35 +.svgz 01;35 +.mng 01;35 +.pcx 01;35 +.mov 01;35 +.mpg 01;35 +.mpeg 01;35 +.m2v 01;35 +.mkv 01;35 +.webm 01;35 +.ogm 01;35 +.mp4 01;35 +.m4v 01;35 +.mp4v 01;35 +.vob 01;35 +.qt 01;35 +.nuv 01;35 +.wmv 01;35 +.asf 01;35 +.rm 01;35 +.rmvb 01;35 +.flc 01;35 +.avi 01;35 +.fli 01;35 +.flv 01;35 +.gl 01;35 +.dl 01;35 +.xcf 01;35 +.xwd 01;35 +.yuv 01;35 +.cgm 01;35 +.emf 01;35 +# https://wiki.xiph.org/MIME_Types_and_File_Extensions +.ogv 01;35 +.ogx 01;35 +# audio formats +.aac 00;36 +.au 00;36 +.flac 00;36 +.m4a 00;36 +.mid 00;36 +.midi 00;36 +.mka 00;36 +.mp3 00;36 +.mpc 00;36 +.ogg 00;36 +.ra 00;36 +.wav 00;36 +# https://wiki.xiph.org/MIME_Types_and_File_Extensions +.oga 00;36 +.opus 00;36 +.spx 00;36 +.xspf 00;36 diff --git a/.linux_items/archlive/airootfs/etc/skel/.gstreamer-0.10/registry.x86_64.bin b/.linux_items/archlive/airootfs/etc/skel/.gstreamer-0.10/registry.x86_64.bin new file mode 100644 index 00000000..e7f302f4 Binary files /dev/null and b/.linux_items/archlive/airootfs/etc/skel/.gstreamer-0.10/registry.x86_64.bin differ diff --git a/.linux_items/archlive/airootfs/etc/skel/.gtkrc-2.0 b/.linux_items/archlive/airootfs/etc/skel/.gtkrc-2.0 new file mode 100644 index 00000000..b54a0f5f --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/skel/.gtkrc-2.0 @@ -0,0 +1,19 @@ +# DO NOT EDIT! This file will be overwritten by LXAppearance. +# Any customization should be done in ~/.gtkrc-2.0.mine instead. + +include "/home/wktech/.gtkrc-2.0.mine" +gtk-theme-name="Arc-Dark" +gtk-icon-theme-name="Papirus-Dark" +gtk-font-name="Noto Sans 11" +gtk-cursor-theme-name="Adwaita" +gtk-cursor-theme-size=0 +gtk-toolbar-style=GTK_TOOLBAR_BOTH +gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR +gtk-button-images=1 +gtk-menu-images=1 +gtk-enable-event-sounds=1 +gtk-enable-input-feedback-sounds=1 +gtk-xft-antialias=1 +gtk-xft-hinting=1 +gtk-xft-hintstyle="hintslight" +gtk-xft-rgba="rgb" diff --git a/.linux_items/archlive/airootfs/etc/skel/.local/share/notes/Notes/Notes b/.linux_items/archlive/airootfs/etc/skel/.local/share/notes/Notes/Notes new file mode 100644 index 00000000..e69de29b diff --git a/.linux_items/archlive/airootfs/etc/skel/.local/share/recently-used.xbel b/.linux_items/archlive/airootfs/etc/skel/.local/share/recently-used.xbel new file mode 100644 index 00000000..bedfa5f0 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/skel/.local/share/recently-used.xbel @@ -0,0 +1,16 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.linux_items/archlive/airootfs/etc/skel/.network_start b/.linux_items/archlive/airootfs/etc/skel/.network_start new file mode 100644 index 00000000..057cc627 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/skel/.network_start @@ -0,0 +1,4 @@ +#!/bin/bash + +connect-to-network + diff --git a/.linux_items/archlive/airootfs/etc/skel/.rsync_exclusions b/.linux_items/archlive/airootfs/etc/skel/.rsync_exclusions new file mode 100644 index 00000000..a3586dc8 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/skel/.rsync_exclusions @@ -0,0 +1,30 @@ +$RECYCLE.BIN +$Recycle.Bin +.AppleDB +.AppleDesktop +.AppleDouble +.com.apple.timemachine.supported +.dbfseventsd +.DocumentRevisions-V100* +.DS_Store +.fseventsd +.PKInstallSandboxManager +.Spotlight* +.SymAV* +.symSchedScanLockxz +.TemporaryItems +.Trash* +.vol +.VolumeIcon.icns +desktop.ini +Desktop DB +Desktop DF +hiberfil.sys +lost+found +Network Trash Folder +pagefile.sys +Recycled +RECYCLER +System Volume Information +Temporary Items +Thumbs.db \ No newline at end of file diff --git a/.linux_items/archlive/airootfs/etc/skel/.tmux.conf b/.linux_items/archlive/airootfs/etc/skel/.tmux.conf new file mode 100644 index 00000000..29cf429c --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/skel/.tmux.conf @@ -0,0 +1,2 @@ +set -g status off +set -g pane-active-border-fg white diff --git a/.linux_items/archlive/airootfs/etc/skel/.update_conky b/.linux_items/archlive/airootfs/etc/skel/.update_conky new file mode 100644 index 00000000..8fba9f91 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/skel/.update_conky @@ -0,0 +1,12 @@ +#!/bin/bash + +IF_LIST=($(ip l | egrep '^[0-9]+:\s+(eth|en|wl)' | sed -r 's/^[0-9]+:\s+(\w+):.*/\1/' | sort)) + + +for i in "${IF_LIST[@]}"; do + if [[ "${i:0:1}" == "e" ]]; then + sed -i -r "s/#Network/Wired:\${alignr}\${addr $i}\n#Network/" ~/.conkyrc + else + sed -i -r "s/#Network/Wireless:\${alignr}\${addr $i}\n#Network/" ~/.conkyrc + fi +done diff --git a/.linux_items/archlive/airootfs/etc/skel/.update_wallpaper b/.linux_items/archlive/airootfs/etc/skel/.update_wallpaper new file mode 100644 index 00000000..7bffa12b --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/skel/.update_wallpaper @@ -0,0 +1,21 @@ +#!/bin/bash + +BOOT_PATH="/run/archiso/bootmnt/arch/" +BURNED_IN="/usr/share/wallpaper/burned.in" +WALLPAPER="$HOME/.wallpaper.png" + +function link_wall() { + sudo rm "$WALLPAPER" + sudo ln -s "$1" "$WALLPAPER" +} + +# Check for wallpaper +## Checks BOOT_PATH and uses the BURNED_IN file if nothing is found +for f in "$BOOT_PATH"/{Arch,arch}.{jpg,png} "$BURNED_IN"; do + if [[ -f "$f" ]]; then + link_wall "$f" + break + fi +done + +feh --bg-fill "$WALLPAPER" diff --git a/.linux_items/archlive/airootfs/etc/skel/.urxvt_default_res b/.linux_items/archlive/airootfs/etc/skel/.urxvt_default_res new file mode 100644 index 00000000..1e146090 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/skel/.urxvt_default_res @@ -0,0 +1,10 @@ +#!/bin/bash + +XWIDTH="$(xrandr 2>/dev/null | grep '*' | sed -r 's/^\s+([0-9]+)x.*/\1/')" +XHEIGHT="$(xrandr 2>/dev/null | grep '*' | sed -r 's/^\s+[0-9]+x([0-9]+).*/\1/')" + +WIDTH="$(echo "${XWIDTH}*92/1024" | bc)" +HEIGHT="$(echo "${XHEIGHT}*32/768" | bc)" + +sed -i -r "s/(URxvt.geometry:\s+).*/\1${WIDTH}x${HEIGHT}+24+24/" ~/.Xresources +xrdb -merge ~/.Xresources diff --git a/.linux_items/archlive/airootfs/etc/skel/.vimrc b/.linux_items/archlive/airootfs/etc/skel/.vimrc new file mode 100644 index 00000000..d65c6a91 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/skel/.vimrc @@ -0,0 +1,64 @@ +" All system-wide defaults are set in $VIMRUNTIME/debian.vim (usually just +" /usr/share/vim/vimcurrent/debian.vim) and sourced by the call to :runtime +" you can find below. If you wish to change any of those settings, you should +" do it in this file (/etc/vim/vimrc), since debian.vim will be overwritten +" everytime an upgrade of the vim packages is performed. It is recommended to +" make changes after sourcing debian.vim since it alters the value of the +" 'compatible' option. + +" This line should not be removed as it ensures that various options are +" properly set to work with the Vim-related packages available in Debian. +runtime! debian.vim + +" Uncomment the next line to make Vim more Vi-compatible +" NOTE: debian.vim sets 'nocompatible'. Setting 'compatible' changes numerous +" options, so any other options should be set AFTER setting 'compatible'. +"set compatible + +" Vim5 and later versions support syntax highlighting. Uncommenting the next +" line enables syntax highlighting by default. +syntax on + +" If using a dark background within the editing area and syntax highlighting +" turn on this option as well +set background=dark + +" Uncomment the following to have Vim jump to the last position when +" reopening a file +"if has("autocmd") +" au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif +"endif + +" Uncomment the following to have Vim load indentation rules and plugins +" according to the detected filetype. +"if has("autocmd") +" filetype plugin indent on +"endif + +" The following are commented out as they cause vim to behave a lot +" differently from regular Vi. They are highly recommended though. +"set showcmd " Show (partial) command in status line. +set showmatch " Show matching brackets. +"set ignorecase " Do case insensitive matching +"set smartcase " Do smart case matching +"set incsearch " Incremental search +"set autowrite " Automatically save before commands like :next and :make +"set hidden " Hide buffers when they are abandoned +"set mouse=a " Enable mouse usage (all modes) + +" Source a global configuration file if available +if filereadable("/etc/vim/vimrc.local") + source /etc/vim/vimrc.local +endif + +" 2Shirt Stuff +set autoindent " align the new line indent with the previous line +set expandtab " insert spaces when hitting TABs +set shiftround " round indent to multiple of 'shiftwidth' +set shiftwidth=4 " operation >> indents 4 columns; << unindents 4 columns +set softtabstop=4 " insert/delete 4 spaces when hitting a TAB/BACKSPACE +set tabstop=4 " an hard TAB displays as 4 columns + +" Python Stuff. +au FileType python set textwidth=79 " lines longer than 79 columns will be broken + diff --git a/.linux_items/archlive/airootfs/etc/skel/.xinitrc b/.linux_items/archlive/airootfs/etc/skel/.xinitrc new file mode 100644 index 00000000..1ed2ec3e --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/skel/.xinitrc @@ -0,0 +1,19 @@ +#!/bin/sh + +dbus-update-activation-environment --systemd DISPLAY +xrdb -merge $HOME/.Xresources +xset s off +xset -dpms +eval $(ssh-agent) +export SSH_AUTH_SOCK +compton & +sleep 1s +conky -d +nm-applet & +cbatticon & +pasystray & +$HOME/.network_start & +$HOME/.urxvt_default_res & +$HOME/.update_wallpaper & +$HOME/.update_conky & +exec openbox-session diff --git a/.linux_items/archlive/airootfs/etc/skel/.zlogin b/.linux_items/archlive/airootfs/etc/skel/.zlogin new file mode 100644 index 00000000..5e685b31 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/skel/.zlogin @@ -0,0 +1,13 @@ +setterm -blank 0 -powerdown 0 +if [ "$(fgconsole 2>/dev/null)" -eq "1" ]; then + if ! fgrep -q "nox" /proc/cmdline; then + if fgrep -q "i3" /proc/cmdline; then + sed -i -r 's/#(own_window_type override)/\1/' ~/.conkyrc + sed -i -r 's/openbox-session/i3/' ~/.xinitrc + fi + startx + else + hw-diags cli + fi +fi + diff --git a/.linux_items/archlive/airootfs/etc/skel/.zshrc b/.linux_items/archlive/airootfs/etc/skel/.zshrc new file mode 100644 index 00000000..23320e13 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/skel/.zshrc @@ -0,0 +1,90 @@ +# If you come from bash you might have to change your $PATH. +# export PATH=$HOME/bin:/usr/local/bin:$PATH + +# Path to your oh-my-zsh installation. + export ZSH=$HOME/.oh-my-zsh + +# Set name of the theme to load. Optionally, if you set this to "random" +# it'll load a random theme each time that oh-my-zsh is loaded. +# See https://github.com/robbyrussell/oh-my-zsh/wiki/Themes +ZSH_THEME="lean" + +# Uncomment the following line to use case-sensitive completion. +# CASE_SENSITIVE="true" + +# Uncomment the following line to use hyphen-insensitive completion. Case +# sensitive completion must be off. _ and - will be interchangeable. +# HYPHEN_INSENSITIVE="true" + +# Uncomment the following line to disable bi-weekly auto-update checks. +DISABLE_AUTO_UPDATE="true" + +# Uncomment the following line to change how often to auto-update (in days). +# export UPDATE_ZSH_DAYS=13 + +# Uncomment the following line to disable colors in ls. +# DISABLE_LS_COLORS="true" + +# Uncomment the following line to disable auto-setting terminal title. +# DISABLE_AUTO_TITLE="true" + +# Uncomment the following line to enable command auto-correction. +# ENABLE_CORRECTION="true" + +# Uncomment the following line to display red dots whilst waiting for completion. +# COMPLETION_WAITING_DOTS="true" + +# Uncomment the following line if you want to disable marking untracked files +# under VCS as dirty. This makes repository status check for large repositories +# much, much faster. +# DISABLE_UNTRACKED_FILES_DIRTY="true" + +# Uncomment the following line if you want to change the command execution time +# stamp shown in the history command output. +# The optional three formats: "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd" +HIST_STAMPS="yyyy-mm-dd" + +# Would you like to use another custom folder than $ZSH/custom? +# ZSH_CUSTOM=/path/to/new-custom-folder + +# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*) +# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/ +# Example format: plugins=(rails git textmate ruby lighthouse) +# Add wisely, as too many plugins slow down shell startup. +plugins=(archlinux git sudo systemd tmux) +source $ZSH/oh-my-zsh.sh + +# User configuration + +# export MANPATH="/usr/local/man:$MANPATH" + +# You may need to manually set your language environment +# export LANG=en_US.UTF-8 + +# Preferred editor for local and remote sessions +# if [[ -n $SSH_CONNECTION ]]; then +# export EDITOR='vim' +# else +# export EDITOR='mvim' +# fi + +# Compilation flags +# export ARCHFLAGS="-arch x86_64" + +# ssh +# export SSH_KEY_PATH="~/.ssh/rsa_id" + +# Set personal aliases, overriding those provided by oh-my-zsh libs, +# plugins, and themes. Aliases can be placed here, though oh-my-zsh +# users are encouraged to define aliases within the ZSH_CUSTOM folder. +# For a full list of active aliases, run `alias`. +# +# Example aliases +# alias zshconfig="mate ~/.zshrc" +# alias ohmyzsh="mate ~/.oh-my-zsh" + +## Load aliases +. $HOME/.aliases + +## Update LS_COLORS +eval $(dircolors ~/.dircolors) diff --git a/.linux_items/archlive/airootfs/etc/systemd/system/dbus-org.freedesktop.NetworkManager.service b/.linux_items/archlive/airootfs/etc/systemd/system/dbus-org.freedesktop.NetworkManager.service new file mode 100644 index 00000000..e874a9b3 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/systemd/system/dbus-org.freedesktop.NetworkManager.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/NetworkManager.service \ No newline at end of file diff --git a/.linux_items/archlive/airootfs/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service b/.linux_items/archlive/airootfs/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service new file mode 100644 index 00000000..a7e5cd4e --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/NetworkManager-dispatcher.service \ No newline at end of file diff --git a/.linux_items/archlive/airootfs/etc/systemd/system/display-manager.service b/.linux_items/archlive/airootfs/etc/systemd/system/display-manager.service new file mode 100644 index 00000000..5595cea3 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/systemd/system/display-manager.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/lightdm.service \ No newline at end of file diff --git a/.linux_items/archlive/airootfs/etc/systemd/system/getty.target.wants/getty@tty1.service b/.linux_items/archlive/airootfs/etc/systemd/system/getty.target.wants/getty@tty1.service new file mode 100644 index 00000000..7bfe0808 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/systemd/system/getty.target.wants/getty@tty1.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/getty@.service \ No newline at end of file diff --git a/.linux_items/archlive/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf b/.linux_items/archlive/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf new file mode 100644 index 00000000..18966e67 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf @@ -0,0 +1,3 @@ +[Service] +ExecStart= +ExecStart=-/sbin/agetty --autologin wktech --noclear %I 38400 linux diff --git a/.linux_items/archlive/airootfs/etc/systemd/system/multi-user.target.wants/NetworkManager.service b/.linux_items/archlive/airootfs/etc/systemd/system/multi-user.target.wants/NetworkManager.service new file mode 100644 index 00000000..e874a9b3 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/systemd/system/multi-user.target.wants/NetworkManager.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/NetworkManager.service \ No newline at end of file diff --git a/.linux_items/archlive/airootfs/etc/systemd/system/multi-user.target.wants/rngd.service b/.linux_items/archlive/airootfs/etc/systemd/system/multi-user.target.wants/rngd.service new file mode 100644 index 00000000..5f6432cf --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/systemd/system/multi-user.target.wants/rngd.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/rngd.service \ No newline at end of file diff --git a/.linux_items/archlive/airootfs/etc/systemd/system/multi-user.target.wants/sshd.service b/.linux_items/archlive/airootfs/etc/systemd/system/multi-user.target.wants/sshd.service new file mode 100644 index 00000000..d21ebd9d --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/systemd/system/multi-user.target.wants/sshd.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/sshd.service \ No newline at end of file diff --git a/.linux_items/archlive/airootfs/etc/systemd/system/multi-user.target.wants/ufw.service b/.linux_items/archlive/airootfs/etc/systemd/system/multi-user.target.wants/ufw.service new file mode 100644 index 00000000..86a21504 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/systemd/system/multi-user.target.wants/ufw.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/ufw.service \ No newline at end of file diff --git a/.linux_items/archlive/airootfs/etc/udev/rules.d/99-udisks2.rules b/.linux_items/archlive/airootfs/etc/udev/rules.d/99-udisks2.rules new file mode 100644 index 00000000..996e4343 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/udev/rules.d/99-udisks2.rules @@ -0,0 +1,5 @@ +# UDISKS_FILESYSTEM_SHARED +# ==1: mount filesystem to a shared directory (/media/VolumeName) +# ==0: mount filesystem to a private directory (/run/media/$USER/VolumeName) +# See udisks(8) +ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{UDISKS_FILESYSTEM_SHARED}="1" diff --git a/.linux_items/archlive/airootfs/etc/udevil/udevil.conf b/.linux_items/archlive/airootfs/etc/udevil/udevil.conf new file mode 100644 index 00000000..b61d2c30 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/udevil/udevil.conf @@ -0,0 +1,336 @@ +############################################################################## +# +# udevil configuration file /etc/udevil/udevil.conf +# +# This file controls what devices, networks, and files users may mount and +# unmount via udevil (set suid). +# +# IMPORTANT: IT IS POSSIBLE TO CREATE SERIOUS SECURITY PROBLEMS IF THIS FILE +# IS MISCONFIGURED - EDIT WITH CARE +# +# Note: For greater control for specific users, including root, copy this +# file to /etc/udevil/udevil-user-USERNAME.conf replacing USERNAME with the +# desired username (eg /etc/udevil/udevil-user-jim.conf). +# +# Format: +# OPTION = VALUE[, VALUE, ...] +# +# DO NOT USE QUOTES except literally +# Lines beginning with # are ignored +# +############################################################################## + + +# To log all uses of udevil, set log_file to a file path: +# log_file = /var/log/udevil.log + +# Approximate number of days to retain log entries (0=forever, max=60): +log_keep_days = 10 + + +# allowed_types determines what fstypes can be passed by a user to the u/mount +# program, what device filesystems may be un/mounted implicitly, and what +# network filesystems may be un/mounted. +# It may also include the 'file' keyword, indicating that the user is allowed +# to mount files (eg an ISO file). The $KNOWN_FILESYSTEMS variable may +# be included to include common local filesystems as well as those listed in +# /etc/filesystems and /proc/filesystems. +# allowed_types_USERNAME, if present, is used to override allowed_types for +# the specific user 'USERNAME'. For example, to allow user 'jim' to mount +# only vfat filesystems, add: +# allowed_types_jim = vfat +# Setting allowed_types = * does NOT allow all types, as this is a security +# risk, but does allow all recognized types. +# allowed_types = $KNOWN_FILESYSTEMS, file, cifs, smbfs, nfs, curlftpfs, ftpfs, sshfs, davfs, tmpfs, ramfs +allowed_types = $KNOWN_FILESYSTEMS, file, cifs, smbfs, nfs, hfsplus, tmpfs + + +# allowed_users is a list of users permitted to mount and unmount with udevil. +# Wildcards (* or ?) may be used in the usernames. To allow all users, +# specify "allowed_users=*". UIDs may be included using the form UID=1000. +# For example: allowed_users = carl, UID=1000, pre* +# Also note that permission to execute udevil may be limited to users belonging +# to the group that owns /usr/bin/udevil, such as 'plugdev' or 'storage', +# depending on installation. +# allowed_users_FSTYPE, if present, is used to override allowed_users when +# mounting or unmounting a specific fstype (eg nfs, ext3, file). +# Note that when mounting a file, fstype will always be 'file' regardless of +# the internal fstype of the file. +# For example, to allow only user 'bob' to mount nfs shares, add: +# allowed_users_nfs = bob +# The root user is NOT automatically allowed to use udevil in some cases unless +# listed here (except for unmounting anything or mounting fstab devices). +allowed_users = * + + +# allowed_groups is a list of groups permitted to mount and unmount with +# udevil. The user MUST belong to at least one of these groups. Wildcards +# or GIDs may NOT be used in group names, but a single * may be used to allow +# all groups. +# Also note that permission to execute udevil may be limited to users belonging +# to the group that owns /usr/bin/udevil, such as 'plugdev' or 'storage', +# depending on installation. +# allowed_groups_FSTYPE, if present, is used to override allowed_groups when +# mounting or unmounting a specific fstype (eg nfs, ext3, file). For example, +# to allow only members of the 'network' group to mount smb and nfs shares, +# use both of these lines: +# allowed_groups_smbfs = network +# allowed_groups_nfs = network +# The root user is NOT automatically allowed to use udevil in some cases unless +# listed here (except for unmounting anything or mounting fstab devices). +allowed_groups = * + + +# allowed_media_dirs specifies the media directories in which user mount points +# may be located. The first directory which exists and does not contain a +# wildcard will be used as the default media directory (normally /media or +# /media/$USER). +# The $USER variable, if included, will be replaced with the username of the +# user running udevil. Wildcards may also be used in any directory EXCEPT the +# default. Wildcards will not match a /, except a /** suffix for recursion. +# allowed_media_dirs_FSTYPE, if present, is used to override allowed_media_dirs +# when mounting or unmounting a specific fstype (eg ext2, nfs). For example, +# to cause /media/network to be used as the default media directory for +# nfs and ftpfs mounts, use these two lines: +# allowed_media_dirs_nfs = /media/network, /media, /media/$USER +# allowed_media_dirs_ftpfs = /media/network, /media, /media/$USER +# NOTE: If you want only the user who mounted a device to have access to it +# and be allowed to unmount it, specify /media/$USER as the first +# allowed media directory (only /media/$USER is created on demand). +# IMPORTANT: If an allowed file is mounted to a media directory, the user may +# be permitted to unmount its associated loop device even though internal. +# INCLUDING /MNT HERE IS NOT RECOMMENDED. ALL ALLOWED MEDIA DIRECTORIES +# SHOULD BE OWNED AND WRITABLE ONLY BY ROOT. +allowed_media_dirs = /media + + +# allowed_devices is the first criteria for what block devices users may mount +# or unmount. If a device is not listed in allowed_devices, it cannot be +# un/mounted (unless in fstab). However, even if a device is listed, other +# factors may prevent its use. For example, access to system internal devices +# will be denied to normal users even if they are included in allowed_devices. +# allowed_devices_FSTYPE, if present, is used to override allowed_devices when +# mounting or unmounting a specific fstype (eg ext3, ntfs). For example, to +# prevent all block devices containing an ext4 filesystem from being +# un/mounted use: +# allowed_devices_ext4 = +# Note: Wildcards may be used, but a wildcard will never match a /, except +# for "allowed_devices=*" which allows any device. The recommended setting is +# allowed_devices = /dev/* +# WARNING: ALLOWING USERS TO MOUNT DEVICES OUTSIDE OF /dev CAN CAUSE SERIOUS +# SECURITY PROBLEMS. DO NOT ALLOW DEVICES IN /dev/shm +allowed_devices = /dev/* + + +# allowed_internal_devices causes udevil to treat any listed block devices as +# removable, thus allowing normal users to un/mount them (providing they are +# also listed in allowed_devices). +# allowed_internal_devices_FSTYPE, if present, is used to override +# allowed_internal_devices when mounting or unmounting a specific fstype +# (eg ext3, ntfs). For example, to allow block devices containing a vfat +# filesystem to be un/mounted even if they are system internal devices, use: +# allowed_internal_devices_vfat = /dev/sdb* +# Some removable esata drives look like internal drives to udevil. To avoid +# this problem, they can be treated as removable with this setting. +# WARNING: SETTING A SYSTEM DEVICE HERE CAN CAUSE SERIOUS SECURITY PROBLEMS. +allowed_internal_devices = /dev/* + + +# allowed_internal_uuids and allowed_internal_uuids_FSTYPE work similarly to +# allowed_internal_devices, except that UUIDs are specified instead of devices. +# For example, to allow un/mounting of an internal filesystem based on UUID: +# allowed_internal_uuids = cc0c4489-8def-1e5b-a304-ab87c3cb626c0 +# WARNING: SETTING A SYSTEM DEVICE HERE CAN CAUSE SERIOUS SECURITY PROBLEMS. +# allowed_internal_uuids = + + +# forbidden_devices is used to prevent block devices from being un/mounted +# even if other settings would allow them (except devices in fstab). +# forbidden_devices_FSTYPE, if present, is used to override +# forbidden_devices when mounting or unmounting a specific fstype +# (eg ext3, ntfs). For example, to prevent device /dev/sdd1 from being +# mounted when it contains an ntfs filesystem, use: +# forbidden_devices_ntfs = /dev/sdd1 +# NOTE: device node paths are canonicalized before being tested, so forbidding +# a link to a device will have no effect. +forbidden_devices = + + +# allowed_networks determines what hosts may be un/mounted by udevil users when +# using nfs, cifs, smbfs, curlftpfs, ftpfs, or sshfs. Hosts may be specified +# using a hostname (eg myserver.com) or IP address (192.168.1.100). +# Wildcards may be used in hostnames and IP addresses, but CIDR notation +# (192.168.1.0/16) is NOT supported. IP v6 is supported. For example: +# allowed_networks = 127.0.0.1, 192.168.1.*, 10.0.0.*, localmachine, *.okay.com +# Or, to prevent un/mounting of any network shares, set: +# allowed_networks = +# allowed_networks_FSTYPE, if present, is used to override allowed_networks +# when mounting or unmounting a specific network fstype (eg nfs, cifs, sshfs, +# curlftpfs). For example, to limit nfs and samba shares to only local +# networks, use these two lines: +# allowed_networks_nfs = 192.168.1.*, 10.0.0.* +# allowed_networks_cifs = 192.168.1.*, 10.0.0.* +allowed_networks = * + + +# forbidden_networks and forbidden_networks_FSTYPE are used to specify networks +# that are never allowed, even if other settings allow them (except fstab). +# NO REVERSE LOOKUP IS PERFORMED, so including bad.com will only have an effect +# if the user uses that hostname. IP lookup is always performed, so forbidding +# an IP address will also forbid all corresponding hostnames. +forbidden_networks = + + +# allowed_files is used to determine what files in what directories may be +# un/mounted. A user must also have read permission on a file to mount it. +# Note: Wildcards may be used, but a wildcard will never match a /, except +# for "allowed_files=*" which allows any file, and a /** suffix, which matches +# all files recursively. +# For example, to allow only files in the /share directory to be mounted, use: +# allowed_files = /share/* +# To allow all files in the /share directory AND all subdirectories use: +# allowed_files = /share/** +# NOTE: Specifying allowed_files_FSTYPE will NOT work because the fstype of +# files is always 'file'. +allowed_files = * + + +# forbidden_files is used to specify files that are never allowed, even if +# other settings allow them (except fstab). Specify a full path. +# Note: Wildcards may be used, but a wildcard will never match a /, except +# for "forbidden_files = *", or a /** suffix, which matches all recursively. +# NOTE: file paths are canonicalized before being tested, so forbidding +# a link to a file will have no effect. +forbidden_files = + + +# default_options specifies what options are always included when performing +# a mount, in addition to any options the user may specify. +# Note: When a device is present in /etc/fstab, and the user does not specify +# a mount point, the device is mounted with normal user permissions using +# the fstab entry, without these options. +# default_options_FSTYPE, if present, is used to override default_options +# when mounting a specific fstype (eg ext2, nfs). +# The variables $USER, $UID, and $GID are changed to the user's username, UID, +# and GID. +# FOR GOOD SECURITY, default_options SHOULD ALWAYS INCLUDE: nosuid,noexec,nodev +# WARNING: OPTIONS PRESENT OR MISSING CAN CAUSE SERIOUS SECURITY PROBLEMS. +default_options = nosuid, noexec, nodev, noatime +default_options_file = nosuid, noexec, nodev, noatime, uid=$UID, gid=$GID, ro +# mount iso9660 with 'ro' to prevent mount read-only warning +default_options_iso9660 = nosuid, noexec, nodev, noatime, uid=$UID, gid=$GID, ro, utf8 +default_options_udf = nosuid, noexec, nodev, noatime, uid=$UID, gid=$GID +default_options_vfat = nosuid, noexec, nodev, noatime, fmask=0133, dmask=0022, uid=$UID, gid=$GID, utf8 +default_options_exfat = nosuid, noexec, nodev, noatime, umask=0077, uid=$UID, gid=$GID, iocharset=utf8, namecase=0, nonempty +default_options_hfsplus = nosuid, noexec, nodev, ro, uid=$UID, gid=$GID +default_options_msdos = nosuid, noexec, nodev, noatime, fmask=0133, dmask=0022, uid=$UID, gid=$GID +default_options_umsdos = nosuid, noexec, nodev, noatime, fmask=0133, dmask=0022, uid=$UID, gid=$GID +default_options_ntfs = nosuid, noexec, nodev, noatime, fmask=0133, uid=$UID, gid=$GID, utf8 +default_options_cifs = nosuid, noexec, nodev, uid=$UID, gid=$GID +default_options_smbfs = nosuid, noexec, nodev, uid=$UID, gid=$GID +default_options_sshfs = nosuid, noexec, nodev, noatime, uid=$UID, gid=$GID, nonempty, allow_other +default_options_curlftpfs = nosuid, noexec, nodev, noatime, uid=$UID, gid=$GID, nonempty, allow_other +default_options_ftpfs = nosuid, noexec, nodev, noatime, uid=$UID, gid=$GID +default_options_davfs = nosuid, noexec, nodev, uid=$UID, gid=$GID +default_options_tmpfs = nosuid, noexec, nodev, noatime, uid=$UID, gid=$GID +default_options_ramfs = nosuid, noexec, nodev, noatime, uid=$UID, gid=$GID + + +# allowed_options determines all options that a user may specify when mounting. +# All the options used in default_options above must be included here too, or +# they will be rejected. If the user attempts to use an option not included +# here, an error will result. Wildcards may be used. +# allowed_options_FSTYPE, if present, is used to override allowed_options +# when mounting a specific fstype (eg ext2, nfs). +# The variables $USER, $UID, and $GID are changed to the user's username, UID, +# and GID. +# If you want to forbid remounts, remove 'remount' from here. +# WARNING: OPTIONS HERE CAN CAUSE SERIOUS SECURITY PROBLEMS - CHOOSE CAREFULLY +allowed_options = nosuid, noexec, nodev, noatime, fmask=0133, dmask=0022, uid=$UID, gid=$GID, ro, rw, sync, flush, iocharset=*, utf8, remount +allowed_options_nfs = nosuid, noexec, nodev, noatime, ro, rw, sync, remount, port=*, rsize=*, wsize=*, hard, proto=*, timeo=*, retrans=* +allowed_options_cifs = nosuid, noexec, nodev, ro, rw, remount, port=*, user=*, username=*, pass=*, password=*, guest, domain=*, uid=$UID, gid=$GID, credentials=* +allowed_options_smbfs = nosuid, noexec, nodev, ro, rw, remount, port=*, user=*, username=*, pass=*, password=*, guest, domain=*, uid=$UID, gid=$GID, credentials=* +allowed_options_sshfs = nosuid, noexec, nodev, noatime, ro, rw, uid=$UID, gid=$GID, nonempty, allow_other, idmap=user, BatchMode=yes, port=* +allowed_options_curlftpfs = nosuid, noexec, nodev, noatime, ro, rw, uid=$UID, gid=$GID, nonempty, allow_other, user=* +allowed_options_ftpfs = nosuid, noexec, nodev, noatime, ro, rw, port=*, user=*, pass=*, root=*, uid=$UID, gid=$GID +allowed_options_exfat = nosuid, noexec, nodev, noatime, fmask=0133, dmask=0022, uid=$UID, gid=$GID, umask=0077, namecase=*, ro, rw, sync, flush, iocharset=*, remount, nonempty + + +# mount_point_mode, if present and set to a non-empty value, will cause udevil +# to set the mode (permissions) on the moint point after mounting If not +# specified or if left empty, the mode is not changed. Mode must be octal +# starting with a zero (0755). +# mount_point_mode_FSTYPE, if present, is used to override mount_point_mode +# when mounting a specific fstype (eg ext2, nfs). +# NOT SETTING A MODE CAN HAVE SECURITY IMPLICATIONS FOR SOME FSTYPES +mount_point_mode = 0755 +# don't set a mode for some types: +mount_point_mode_sshfs = +mount_point_mode_curlftpfs = +mount_point_mode_ftpfs = + + +# Use the settings below to change the default locations of programs used by +# udevil, or (advanced topic) to redirect commands to your scripts. +# When substituting scripts, make sure they are root-owned and accept the +# options used by udevil (for example, the mount_program must accept --fake, +# -o, -v, and other options valid to mount.) +# Be sure to specify the full path and include NO OPTIONS or other arguments. +# These programs may also be specified as configure options when building +# udevil. +# THESE PROGRAMS ARE RUN AS ROOT +# mount_program = /bin/mount +# umount_program = /bin/umount +# losetup_program = /sbin/losetup +# setfacl_program = /usr/bin/setfacl + + +# validate_exec specifies a program or script which provides additional +# validation of a mount or unmount command, beyond the checks performed by +# udevil. The program is run as a normal user (if root runs udevil, +# validate_exec will NOT be run). The program is NOT run if the user is +# mounting a device without root priviledges (a device in fstab). +# The program is passed the username, a printable description of what is +# happening, and the entire udevil command line as the first three arguments. +# The program must return an exit status of 0 to allow the mount or unmount +# to proceed. If it returns non-zero, the user will be denied permission. +# For example, validate_exec might specify a script which notifies you +# of the command being run, or performs additional steps to authenticate the +# user. +# Specify a full path to the program, with NO options or arguments. +# validate_exec = + + +# validate_rootexec works similarly to validate_exec, except that the program +# is run as root. validate_rootexec will also be run if the root user runs +# udevil. If both validate_exec and validate_rootexec are specified, +# validate_rootexec will run first, followed by validate_exec. +# The program must return an exit status of 0 to allow the mount or unmount +# to proceed. If it returns non-zero, the user will be denied permission. +# Unless you are familiar with writing root scripts, it is recommended that +# rootexec settings NOT be used, as it is easy to inadvertently open exploits. +# THIS PROGRAM IS ALWAYS RUN AS ROOT, even if the user running udevil is not. +# validate_rootexec = + + +# success_exec is run after a successful mount, remount, or unmount. The +# program is run as a normal user (if root runs udevil, success_exec +# will NOT be run). +# The program is passed the username, a printable description of what action +# was taken, and the entire udevil command line as the first three arguments. +# The program's exit status is ignored. +# For example, success_exec might run a script which informs you of what action +# was taken, and might perform further actions. +# Specify a full path to the program, with NO options or arguments. +# success_exec = + + +# success_rootexec works similarly to success_exec, except that the program is +# run as root. success_rootexec will also be run if the root user runs udevil. +# If both success_exec and success_rootexec are specified, success_rootexec +# will run first, followed by success_exec. +# Unless you are familiar with writing root scripts, it is recommended that +# rootexec settings NOT be used, as it is easy to inadvertently open exploits. +# THIS PROGRAM IS ALWAYS RUN AS ROOT, even if the user running udevil is not. +# success_rootexec = + diff --git a/.linux_items/archlive/airootfs/etc/ufw/after.init b/.linux_items/archlive/airootfs/etc/ufw/after.init new file mode 100644 index 00000000..e89217d5 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/ufw/after.init @@ -0,0 +1,40 @@ +#!/bin/sh +# +# after.init: if executable, called by ufw-init. See 'man ufw-framework' for +# details. Note that output from these scripts is not seen via the +# the ufw command, but instead via ufw-init. +# +# Copyright 2013 Canonical Ltd. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 3, +# as published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +set -e + +case "$1" in +start) + # typically required + ;; +stop) + # typically required + ;; +status) + # optional + ;; +flush-all) + # optional + ;; +*) + echo "'$1' not supported" + echo "Usage: after.init {start|stop|flush-all|status}" + ;; +esac diff --git a/.linux_items/archlive/airootfs/etc/ufw/after.rules b/.linux_items/archlive/airootfs/etc/ufw/after.rules new file mode 100644 index 00000000..0d6c6461 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/ufw/after.rules @@ -0,0 +1,30 @@ +# +# rules.input-after +# +# Rules that should be run after the ufw command line added rules. Custom +# rules should be added to one of these chains: +# ufw-after-input +# ufw-after-output +# ufw-after-forward +# + +# Don't delete these required lines, otherwise there will be errors +*filter +:ufw-after-input - [0:0] +:ufw-after-output - [0:0] +:ufw-after-forward - [0:0] +# End required lines + +# don't log noisy services by default +-A ufw-after-input -p udp --dport 137 -j ufw-skip-to-policy-input +-A ufw-after-input -p udp --dport 138 -j ufw-skip-to-policy-input +-A ufw-after-input -p tcp --dport 139 -j ufw-skip-to-policy-input +-A ufw-after-input -p tcp --dport 445 -j ufw-skip-to-policy-input +-A ufw-after-input -p udp --dport 67 -j ufw-skip-to-policy-input +-A ufw-after-input -p udp --dport 68 -j ufw-skip-to-policy-input + +# don't log noisy broadcast +-A ufw-after-input -m addrtype --dst-type BROADCAST -j ufw-skip-to-policy-input + +# don't delete the 'COMMIT' line or these rules won't be processed +COMMIT diff --git a/.linux_items/archlive/airootfs/etc/ufw/after6.rules b/.linux_items/archlive/airootfs/etc/ufw/after6.rules new file mode 100644 index 00000000..0d996726 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/ufw/after6.rules @@ -0,0 +1,27 @@ +# +# rules.input-after +# +# Rules that should be run after the ufw command line added rules. Custom +# rules should be added to one of these chains: +# ufw6-after-input +# ufw6-after-output +# ufw6-after-forward +# + +# Don't delete these required lines, otherwise there will be errors +*filter +:ufw6-after-input - [0:0] +:ufw6-after-output - [0:0] +:ufw6-after-forward - [0:0] +# End required lines + +# don't log noisy services by default +-A ufw6-after-input -p udp --dport 137 -j ufw6-skip-to-policy-input +-A ufw6-after-input -p udp --dport 138 -j ufw6-skip-to-policy-input +-A ufw6-after-input -p tcp --dport 139 -j ufw6-skip-to-policy-input +-A ufw6-after-input -p tcp --dport 445 -j ufw6-skip-to-policy-input +-A ufw6-after-input -p udp --dport 546 -j ufw6-skip-to-policy-input +-A ufw6-after-input -p udp --dport 547 -j ufw6-skip-to-policy-input + +# don't delete the 'COMMIT' line or these rules won't be processed +COMMIT diff --git a/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-bittorent b/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-bittorent new file mode 100644 index 00000000..bdaa7431 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-bittorent @@ -0,0 +1,19 @@ +[Transmission] +title=Transmission +description=Transmission BitTorrent client +ports=51413/tcp + +[Deluge] +title=Deluge +description=Deluge BitTorrent client +ports=6881:6891/tcp + +[KTorrent] +title=KTorrent +description=KTorrent BitTorrent client +ports=6881/tcp|4444/udp + +[qBittorrent] +title=qBittorrent +description=qBittorrent BitTorrent client +ports=6881/tcp diff --git a/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-chat b/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-chat new file mode 100644 index 00000000..32b4fe70 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-chat @@ -0,0 +1,35 @@ +[PeopleNearby] +title=People Nearby +description=People Nearby (Bonjour/Salut) functionality in Empathy +ports=5353/udp|5298 + +[Bonjour] +title=Bonjour +description=Bonjour protocol +ports=5353/udp|5298 + +[MSN] +title=MSN Chat +description=MSN chat protocol (with file transfer and voice) +ports=1863|6891:6900/tcp|6901 + +[MSN SSL] +title=MSN Chat (SSL) +description=MSN chat protocol (SSL) +ports=443/tcp + +[AIM] +title=AIM Talk +description=AIM talk protocol +ports=5190/tcp + +[Yahoo] +title=Yahoo Chat +description=Yahoo chat protocol +ports=5050 + +[XMPP] +title=XMPP Chat +description=XMPP protocol (Jabber and Google Talk) +ports=5222/tcp|5269/tcp + diff --git a/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-directoryserver b/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-directoryserver new file mode 100644 index 00000000..90fa2f75 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-directoryserver @@ -0,0 +1,29 @@ +[Kerberos KDC] +title=Kerberos v5 KDC server +description=Kerberos v5 KDC server +ports=88 + +[Kerberos Admin] +title=Kerberos v5 admin +description=Kerberos v5 server +ports=749/tcp + +[Kerberos Password] +title=Kerberos v5 password +description=Kerberos v5 password +ports=464/udp + +[Kerberos Full] +title=Kerberos v5 server +description=Kerberos v5 server +ports=88,749/tcp|464/udp + +[LDAP] +title=LDAP server +description=LDAP server +ports=389/tcp + +[LDAPS] +title=LDAP server (LDAPS) +description=LDAP server (LDAPS) +ports=636/tcp diff --git a/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-dnsserver b/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-dnsserver new file mode 100644 index 00000000..7a617811 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-dnsserver @@ -0,0 +1,4 @@ +[DNS] +title=Internet Domain Name Server +description=Internet Domain Name Server +ports=53 diff --git a/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-fileserver b/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-fileserver new file mode 100644 index 00000000..6cb4c77b --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-fileserver @@ -0,0 +1,14 @@ +[CIFS] +title=SMB/CIFS server +description=SMB/CIFS server +ports=137,138/udp|139,445/tcp + +[NFS] +title=NFS server +description=NFS and portmap server. Will also need access to mountd, statd and possibly others +ports=2049,111/tcp|2049,111/udp + +[svnserve] +title=Subversion server +description=Subversion server for access to Subversion repositories. +ports=3690/tcp diff --git a/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-loginserver b/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-loginserver new file mode 100644 index 00000000..5f018530 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-loginserver @@ -0,0 +1,14 @@ +[Telnet] +title=Telnet server (insecure) +description=Telnet server (insecure) +ports=23/tcp + +[SSH] +title=SSH server +description=SSH server +ports=22/tcp + +[VNC] +title=VNC server +description=VNC server +ports=5900/tcp diff --git a/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-mailserver b/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-mailserver new file mode 100644 index 00000000..dd55cc07 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-mailserver @@ -0,0 +1,30 @@ +[POP3] +title=Mail server (POP3) +description=Mail server (POP3) +ports=110/tcp + +[POP3S] +title=Secure mail server (POP3S) +description=Secure mail server (POP3S) +ports=995/tcp + +[IMAP] +title=Mail server (IMAP) +description=Mail server (IMAP) +ports=143/tcp + +[IMAPS] +title=Secure mail server (IMAPS) +description=Secure mail server (IMAPS) +ports=993/tcp + +[SMTP] +title=Mail server (SMTP) +description=Mail server (SMTP) +ports=25/tcp + +[Mail submission] +title=Mail server (Submission) +description=Mail server (Submission) +ports=587/tcp + diff --git a/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-printserver b/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-printserver new file mode 100644 index 00000000..e634b612 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-printserver @@ -0,0 +1,9 @@ +[IPP] +title=Cups server (IPP) +description=Cups server (IPP) +ports=631 + +[LPD] +title=LPD server +description=LPD server +ports=515/tcp diff --git a/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-proxyserver b/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-proxyserver new file mode 100644 index 00000000..a598c980 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-proxyserver @@ -0,0 +1,9 @@ +[Socks] +title=Socks proxy +description=Socks proxy +ports=1080/tcp + +[Transparent Proxy] +title=Transparent proxy +description=Transparent proxy +ports=8081/tcp diff --git a/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-webserver b/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-webserver new file mode 100644 index 00000000..fab4b822 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-webserver @@ -0,0 +1,19 @@ +[WWW] +title=Web Server +description=Web server +ports=80/tcp + +[WWW Secure] +title=Web Server (HTTPS) +description=Web Server (HTTPS) +ports=443/tcp + +[WWW Full] +title=Web Server (HTTP,HTTPS) +description=Web Server (HTTP,HTTPS) +ports=80,443/tcp + +[WWW Cache] +title=Web Server (8080) +description=Web Server (8080) +ports=8080/tcp diff --git a/.linux_items/archlive/airootfs/etc/ufw/before.init b/.linux_items/archlive/airootfs/etc/ufw/before.init new file mode 100644 index 00000000..1348cb12 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/ufw/before.init @@ -0,0 +1,40 @@ +#!/bin/sh +# +# before.init: if executable, called by ufw-init. See 'man ufw-framework' for +# details. Note that output from these scripts is not seen via the +# the ufw command, but instead via ufw-init. +# +# Copyright 2013 Canonical Ltd. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 3, +# as published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +set -e + +case "$1" in +start) + # typically required + ;; +stop) + # typically required + ;; +status) + # optional + ;; +flush-all) + # optional + ;; +*) + echo "'$1' not supported" + echo "Usage: before.init {start|stop|flush-all|status}" + ;; +esac diff --git a/.linux_items/archlive/airootfs/etc/ufw/before.rules b/.linux_items/archlive/airootfs/etc/ufw/before.rules new file mode 100644 index 00000000..0addd54c --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/ufw/before.rules @@ -0,0 +1,77 @@ +# +# rules.before +# +# Rules that should be run before the ufw command line added rules. Custom +# rules should be added to one of these chains: +# ufw-before-input +# ufw-before-output +# ufw-before-forward +# + +# Don't delete these required lines, otherwise there will be errors +*filter +:ufw-before-input - [0:0] +:ufw-before-output - [0:0] +:ufw-before-forward - [0:0] +:ufw-not-local - [0:0] +# End required lines + + +# allow all on loopback +-A ufw-before-input -i lo -j ACCEPT +-A ufw-before-output -o lo -j ACCEPT + +# quickly process packets for which we already have a connection +-A ufw-before-input -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT +-A ufw-before-output -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT +-A ufw-before-forward -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT + +# drop INVALID packets (logs these in loglevel medium and higher) +-A ufw-before-input -m conntrack --ctstate INVALID -j ufw-logging-deny +-A ufw-before-input -m conntrack --ctstate INVALID -j DROP + +# ok icmp codes for INPUT +-A ufw-before-input -p icmp --icmp-type destination-unreachable -j ACCEPT +-A ufw-before-input -p icmp --icmp-type source-quench -j ACCEPT +-A ufw-before-input -p icmp --icmp-type time-exceeded -j ACCEPT +-A ufw-before-input -p icmp --icmp-type parameter-problem -j ACCEPT +-A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT + +# ok icmp code for FORWARD +-A ufw-before-forward -p icmp --icmp-type destination-unreachable -j ACCEPT +-A ufw-before-forward -p icmp --icmp-type source-quench -j ACCEPT +-A ufw-before-forward -p icmp --icmp-type time-exceeded -j ACCEPT +-A ufw-before-forward -p icmp --icmp-type parameter-problem -j ACCEPT +-A ufw-before-forward -p icmp --icmp-type echo-request -j ACCEPT + +# allow dhcp client to work +-A ufw-before-input -p udp --sport 67 --dport 68 -j ACCEPT + +# +# ufw-not-local +# +-A ufw-before-input -j ufw-not-local + +# if LOCAL, RETURN +-A ufw-not-local -m addrtype --dst-type LOCAL -j RETURN + +# if MULTICAST, RETURN +-A ufw-not-local -m addrtype --dst-type MULTICAST -j RETURN + +# if BROADCAST, RETURN +-A ufw-not-local -m addrtype --dst-type BROADCAST -j RETURN + +# all other non-local packets are dropped +-A ufw-not-local -m limit --limit 3/min --limit-burst 10 -j ufw-logging-deny +-A ufw-not-local -j DROP + +# allow MULTICAST mDNS for service discovery (be sure the MULTICAST line above +# is uncommented) +-A ufw-before-input -p udp -d 224.0.0.251 --dport 5353 -j ACCEPT + +# allow MULTICAST UPnP for service discovery (be sure the MULTICAST line above +# is uncommented) +-A ufw-before-input -p udp -d 239.255.255.250 --dport 1900 -j ACCEPT + +# don't delete the 'COMMIT' line or these rules won't be processed +COMMIT diff --git a/.linux_items/archlive/airootfs/etc/ufw/before6.rules b/.linux_items/archlive/airootfs/etc/ufw/before6.rules new file mode 100644 index 00000000..1102d3f7 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/ufw/before6.rules @@ -0,0 +1,138 @@ +# +# rules.before +# +# Rules that should be run before the ufw command line added rules. Custom +# rules should be added to one of these chains: +# ufw6-before-input +# ufw6-before-output +# ufw6-before-forward +# + +# Don't delete these required lines, otherwise there will be errors +*filter +:ufw6-before-input - [0:0] +:ufw6-before-output - [0:0] +:ufw6-before-forward - [0:0] +# End required lines + + +# allow all on loopback +-A ufw6-before-input -i lo -j ACCEPT +-A ufw6-before-output -o lo -j ACCEPT + +# drop packets with RH0 headers +-A ufw6-before-input -m rt --rt-type 0 -j DROP +-A ufw6-before-forward -m rt --rt-type 0 -j DROP +-A ufw6-before-output -m rt --rt-type 0 -j DROP + +# quickly process packets for which we already have a connection +-A ufw6-before-input -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT +-A ufw6-before-output -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT +-A ufw6-before-forward -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT + +# drop INVALID packets (logs these in loglevel medium and higher) +-A ufw6-before-input -m conntrack --ctstate INVALID -j ufw6-logging-deny +-A ufw6-before-input -m conntrack --ctstate INVALID -j DROP + +# ok icmp codes for INPUT (rfc4890, 4.4.1 and 4.4.2) +-A ufw6-before-input -p icmpv6 --icmpv6-type destination-unreachable -j ACCEPT +-A ufw6-before-input -p icmpv6 --icmpv6-type packet-too-big -j ACCEPT +# codes 0 and 1 +-A ufw6-before-input -p icmpv6 --icmpv6-type time-exceeded -j ACCEPT +# codes 0-2 +-A ufw6-before-input -p icmpv6 --icmpv6-type parameter-problem -j ACCEPT +-A ufw6-before-input -p icmpv6 --icmpv6-type echo-request -j ACCEPT +-A ufw6-before-input -p icmpv6 --icmpv6-type echo-reply -j ACCEPT +-A ufw6-before-input -p icmpv6 --icmpv6-type router-solicitation -m hl --hl-eq 255 -j ACCEPT +-A ufw6-before-input -p icmpv6 --icmpv6-type router-advertisement -m hl --hl-eq 255 -j ACCEPT +-A ufw6-before-input -p icmpv6 --icmpv6-type neighbor-solicitation -m hl --hl-eq 255 -j ACCEPT +-A ufw6-before-input -p icmpv6 --icmpv6-type neighbor-advertisement -m hl --hl-eq 255 -j ACCEPT +# IND solicitation +-A ufw6-before-input -p icmpv6 --icmpv6-type 141 -m hl --hl-eq 255 -j ACCEPT +# IND advertisement +-A ufw6-before-input -p icmpv6 --icmpv6-type 142 -m hl --hl-eq 255 -j ACCEPT +# MLD query +-A ufw6-before-input -p icmpv6 --icmpv6-type 130 -s fe80::/10 -j ACCEPT +# MLD report +-A ufw6-before-input -p icmpv6 --icmpv6-type 131 -s fe80::/10 -j ACCEPT +# MLD done +-A ufw6-before-input -p icmpv6 --icmpv6-type 132 -s fe80::/10 -j ACCEPT +# MLD report v2 +-A ufw6-before-input -p icmpv6 --icmpv6-type 143 -s fe80::/10 -j ACCEPT +# SEND certificate path solicitation +-A ufw6-before-input -p icmpv6 --icmpv6-type 148 -m hl --hl-eq 255 -j ACCEPT +# SEND certificate path advertisement +-A ufw6-before-input -p icmpv6 --icmpv6-type 149 -m hl --hl-eq 255 -j ACCEPT +# MR advertisement +-A ufw6-before-input -p icmpv6 --icmpv6-type 151 -s fe80::/10 -m hl --hl-eq 1 -j ACCEPT +# MR solicitation +-A ufw6-before-input -p icmpv6 --icmpv6-type 152 -s fe80::/10 -m hl --hl-eq 1 -j ACCEPT +# MR termination +-A ufw6-before-input -p icmpv6 --icmpv6-type 153 -s fe80::/10 -m hl --hl-eq 1 -j ACCEPT + +# ok icmp codes for OUTPUT (rfc4890, 4.4.1 and 4.4.2) +-A ufw6-before-output -p icmpv6 --icmpv6-type destination-unreachable -j ACCEPT +-A ufw6-before-output -p icmpv6 --icmpv6-type packet-too-big -j ACCEPT +# codes 0 and 1 +-A ufw6-before-output -p icmpv6 --icmpv6-type time-exceeded -j ACCEPT +# codes 0-2 +-A ufw6-before-output -p icmpv6 --icmpv6-type parameter-problem -j ACCEPT +-A ufw6-before-input -p icmpv6 --icmpv6-type echo-request -j ACCEPT +-A ufw6-before-input -p icmpv6 --icmpv6-type echo-reply -j ACCEPT +-A ufw6-before-output -p icmpv6 --icmpv6-type router-solicitation -m hl --hl-eq 255 -j ACCEPT +-A ufw6-before-output -p icmpv6 --icmpv6-type neighbor-advertisement -m hl --hl-eq 255 -j ACCEPT +-A ufw6-before-output -p icmpv6 --icmpv6-type neighbor-solicitation -m hl --hl-eq 255 -j ACCEPT +-A ufw6-before-output -p icmpv6 --icmpv6-type router-advertisement -m hl --hl-eq 255 -j ACCEPT +# IND solicitation +-A ufw6-before-output -p icmpv6 --icmpv6-type 141 -m hl --hl-eq 255 -j ACCEPT +# IND advertisement +-A ufw6-before-output -p icmpv6 --icmpv6-type 142 -m hl --hl-eq 255 -j ACCEPT +# MLD query +-A ufw6-before-output -p icmpv6 --icmpv6-type 130 -s fe80::/10 -j ACCEPT +# MLD report +-A ufw6-before-output -p icmpv6 --icmpv6-type 131 -s fe80::/10 -j ACCEPT +# MLD done +-A ufw6-before-output -p icmpv6 --icmpv6-type 132 -s fe80::/10 -j ACCEPT +# MLD report v2 +-A ufw6-before-output -p icmpv6 --icmpv6-type 143 -s fe80::/10 -j ACCEPT +# SEND certificate path solicitation +-A ufw6-before-output -p icmpv6 --icmpv6-type 148 -m hl --hl-eq 255 -j ACCEPT +# SEND certificate path advertisement +-A ufw6-before-output -p icmpv6 --icmpv6-type 149 -m hl --hl-eq 255 -j ACCEPT +# MR advertisement +-A ufw6-before-output -p icmpv6 --icmpv6-type 151 -s fe80::/10 -m hl --hl-eq 1 -j ACCEPT +# MR solicitation +-A ufw6-before-output -p icmpv6 --icmpv6-type 152 -s fe80::/10 -m hl --hl-eq 1 -j ACCEPT +# MR termination +-A ufw6-before-output -p icmpv6 --icmpv6-type 153 -s fe80::/10 -m hl --hl-eq 1 -j ACCEPT + +# ok icmp codes for FORWARD (rfc4890, 4.3.1) +-A ufw6-before-forward -p icmpv6 --icmpv6-type destination-unreachable -j ACCEPT +-A ufw6-before-forward -p icmpv6 --icmpv6-type packet-too-big -j ACCEPT +# codes 0 and 1 +-A ufw6-before-forward -p icmpv6 --icmpv6-type time-exceeded -j ACCEPT +# codes 0-2 +-A ufw6-before-forward -p icmpv6 --icmpv6-type parameter-problem -j ACCEPT +-A ufw6-before-forward -p icmpv6 --icmpv6-type echo-request -j ACCEPT +-A ufw6-before-forward -p icmpv6 --icmpv6-type echo-reply -j ACCEPT +# ok icmp codes for FORWARD (rfc4890, 4.3.2) +# Home Agent Address Discovery Reques +-A ufw6-before-input -p icmpv6 --icmpv6-type 144 -j ACCEPT +# Home Agent Address Discovery Reply +-A ufw6-before-input -p icmpv6 --icmpv6-type 145 -j ACCEPT +# Mobile Prefix Solicitation +-A ufw6-before-input -p icmpv6 --icmpv6-type 146 -j ACCEPT +# Mobile Prefix Advertisement +-A ufw6-before-input -p icmpv6 --icmpv6-type 147 -j ACCEPT + +# allow dhcp client to work +-A ufw6-before-input -p udp -s fe80::/10 --sport 547 -d fe80::/10 --dport 546 -j ACCEPT + +# allow MULTICAST mDNS for service discovery +-A ufw6-before-input -p udp -d ff02::fb --dport 5353 -j ACCEPT + +# allow MULTICAST UPnP for service discovery +-A ufw6-before-input -p udp -d ff02::f --dport 1900 -j ACCEPT + +# don't delete the 'COMMIT' line or these rules won't be processed +COMMIT diff --git a/.linux_items/archlive/airootfs/etc/ufw/sysctl.conf b/.linux_items/archlive/airootfs/etc/ufw/sysctl.conf new file mode 100644 index 00000000..87070322 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/ufw/sysctl.conf @@ -0,0 +1,57 @@ +# +# Configuration file for setting network variables. Please note these settings +# override /etc/sysctl.conf. If you prefer to use /etc/sysctl.conf, please +# adjust IPT_SYSCTL in /etc/default/ufw. +# + +# Uncomment this to allow this host to route packets between interfaces +#net/ipv4/ip_forward=1 +#net/ipv6/conf/default/forwarding=1 +#net/ipv6/conf/all/forwarding=1 + +# Turn on Source Address Verification in all interfaces to prevent some +# spoofing attacks +net/ipv4/conf/default/rp_filter=1 +net/ipv4/conf/all/rp_filter=1 + +# Do not accept IP source route packets (we are not a router) +net/ipv4/conf/default/accept_source_route=0 +net/ipv4/conf/all/accept_source_route=0 +net/ipv6/conf/default/accept_source_route=0 +net/ipv6/conf/all/accept_source_route=0 + +# Disable ICMP redirects. ICMP redirects are rarely used but can be used in +# MITM (man-in-the-middle) attacks. Disabling ICMP may disrupt legitimate +# traffic to those sites. +net/ipv4/conf/default/accept_redirects=0 +net/ipv4/conf/all/accept_redirects=0 +net/ipv6/conf/default/accept_redirects=0 +net/ipv6/conf/all/accept_redirects=0 + +# Ignore bogus ICMP errors +net/ipv4/icmp_echo_ignore_broadcasts=1 +net/ipv4/icmp_ignore_bogus_error_responses=1 +net/ipv4/icmp_echo_ignore_all=0 + +# Don't log Martian Packets (impossible packets) +net/ipv4/conf/default/log_martians=0 +net/ipv4/conf/all/log_martians=0 + +# Change to '1' to enable TCP/IP SYN cookies This disables TCP Window Scaling +# (http://lkml.org/lkml/2008/2/5/167) +net/ipv4/tcp_syncookies=0 + +#net/ipv4/tcp_fin_timeout=30 +#net/ipv4/tcp_keepalive_intvl=1800 + +# normally allowing tcp_sack is ok, but if going through OpenBSD 3.8 RELEASE or +# earlier pf firewall, should set this to 0 +net/ipv4/tcp_sack=1 + +# Uncomment this to turn off ipv6 autoconfiguration +#net/ipv6/conf/default/autoconf=0 +#net/ipv6/conf/all/autoconf=0 + +# Uncomment this to enable ipv6 privacy addressing +#net/ipv6/conf/default/use_tempaddr=2 +#net/ipv6/conf/all/use_tempaddr=2 diff --git a/.linux_items/archlive/airootfs/etc/ufw/ufw.conf b/.linux_items/archlive/airootfs/etc/ufw/ufw.conf new file mode 100644 index 00000000..28fe5341 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/ufw/ufw.conf @@ -0,0 +1,10 @@ +# /etc/ufw/ufw.conf +# + +# Set to yes to start on boot. If setting this remotely, be sure to add a rule +# to allow your remote connection before starting ufw. Eg: 'ufw allow 22/tcp' +ENABLED=yes + +# Please use the 'ufw' command to set the loglevel. Eg: 'ufw logging medium'. +# See 'man ufw' for details. +LOGLEVEL=low diff --git a/.linux_items/archlive/airootfs/etc/ufw/user.rules b/.linux_items/archlive/airootfs/etc/ufw/user.rules new file mode 100644 index 00000000..aa30960c --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/ufw/user.rules @@ -0,0 +1,39 @@ +*filter +:ufw-user-input - [0:0] +:ufw-user-output - [0:0] +:ufw-user-forward - [0:0] +:ufw-before-logging-input - [0:0] +:ufw-before-logging-output - [0:0] +:ufw-before-logging-forward - [0:0] +:ufw-user-logging-input - [0:0] +:ufw-user-logging-output - [0:0] +:ufw-user-logging-forward - [0:0] +:ufw-after-logging-input - [0:0] +:ufw-after-logging-output - [0:0] +:ufw-after-logging-forward - [0:0] +:ufw-logging-deny - [0:0] +:ufw-logging-allow - [0:0] +:ufw-user-limit - [0:0] +:ufw-user-limit-accept - [0:0] +### RULES ### + +### tuple ### allow any 22 0.0.0.0/0 any 0.0.0.0/0 in +-A ufw-user-input -p tcp --dport 22 -j ACCEPT +-A ufw-user-input -p udp --dport 22 -j ACCEPT + +### END RULES ### + +### LOGGING ### +-A ufw-after-logging-input -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10 +-A ufw-after-logging-forward -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10 +-I ufw-logging-deny -m conntrack --ctstate INVALID -j RETURN -m limit --limit 3/min --limit-burst 10 +-A ufw-logging-deny -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10 +-A ufw-logging-allow -j LOG --log-prefix "[UFW ALLOW] " -m limit --limit 3/min --limit-burst 10 +### END LOGGING ### + +### RATE LIMITING ### +-A ufw-user-limit -m limit --limit 3/minute -j LOG --log-prefix "[UFW LIMIT BLOCK] " +-A ufw-user-limit -j REJECT +-A ufw-user-limit-accept -j ACCEPT +### END RATE LIMITING ### +COMMIT diff --git a/.linux_items/archlive/airootfs/etc/ufw/user6.rules b/.linux_items/archlive/airootfs/etc/ufw/user6.rules new file mode 100644 index 00000000..47d96108 --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/ufw/user6.rules @@ -0,0 +1,39 @@ +*filter +:ufw6-user-input - [0:0] +:ufw6-user-output - [0:0] +:ufw6-user-forward - [0:0] +:ufw6-before-logging-input - [0:0] +:ufw6-before-logging-output - [0:0] +:ufw6-before-logging-forward - [0:0] +:ufw6-user-logging-input - [0:0] +:ufw6-user-logging-output - [0:0] +:ufw6-user-logging-forward - [0:0] +:ufw6-after-logging-input - [0:0] +:ufw6-after-logging-output - [0:0] +:ufw6-after-logging-forward - [0:0] +:ufw6-logging-deny - [0:0] +:ufw6-logging-allow - [0:0] +:ufw6-user-limit - [0:0] +:ufw6-user-limit-accept - [0:0] +### RULES ### + +### tuple ### allow any 22 ::/0 any ::/0 in +-A ufw6-user-input -p tcp --dport 22 -j ACCEPT +-A ufw6-user-input -p udp --dport 22 -j ACCEPT + +### END RULES ### + +### LOGGING ### +-A ufw6-after-logging-input -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10 +-A ufw6-after-logging-forward -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10 +-I ufw6-logging-deny -m conntrack --ctstate INVALID -j RETURN -m limit --limit 3/min --limit-burst 10 +-A ufw6-logging-deny -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10 +-A ufw6-logging-allow -j LOG --log-prefix "[UFW ALLOW] " -m limit --limit 3/min --limit-burst 10 +### END LOGGING ### + +### RATE LIMITING ### +-A ufw6-user-limit -m limit --limit 3/minute -j LOG --log-prefix "[UFW LIMIT BLOCK] " +-A ufw6-user-limit -j REJECT +-A ufw6-user-limit-accept -j ACCEPT +### END RATE LIMITING ### +COMMIT diff --git a/.linux_items/archlive/airootfs/etc/vconsole.conf b/.linux_items/archlive/airootfs/etc/vconsole.conf new file mode 100644 index 00000000..9cec5feb --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/vconsole.conf @@ -0,0 +1,2 @@ +KEYMAP=us +FONT=ter-u16n diff --git a/.linux_items/archlive/airootfs/etc/xdg/xfce4/kiosk/kioskrc b/.linux_items/archlive/airootfs/etc/xdg/xfce4/kiosk/kioskrc new file mode 100644 index 00000000..fec17f8a --- /dev/null +++ b/.linux_items/archlive/airootfs/etc/xdg/xfce4/kiosk/kioskrc @@ -0,0 +1,3 @@ +[xfce4-session] +SaveSession=None + diff --git a/.linux_items/archlive/airootfs/root/.automated_script.sh b/.linux_items/archlive/airootfs/root/.automated_script.sh new file mode 100644 index 00000000..81a98a1a --- /dev/null +++ b/.linux_items/archlive/airootfs/root/.automated_script.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +script_cmdline () +{ + local param + for param in $(< /proc/cmdline); do + case "${param}" in + script=*) echo "${param#*=}" ; return 0 ;; + esac + done +} + +automated_script () +{ + local script rt + script="$(script_cmdline)" + if [[ -n "${script}" && ! -x /tmp/startup_script ]]; then + if [[ "${script}" =~ ^http:// || "${script}" =~ ^ftp:// ]]; then + wget "${script}" --retry-connrefused -q -O /tmp/startup_script >/dev/null + rt=$? + else + cp "${script}" /tmp/startup_script + rt=$? + fi + if [[ ${rt} -eq 0 ]]; then + chmod +x /tmp/startup_script + /tmp/startup_script + fi + fi +} + +if [[ $(tty) == "/dev/tty1" ]]; then + automated_script +fi diff --git a/.linux_items/archlive/airootfs/root/.zlogin b/.linux_items/archlive/airootfs/root/.zlogin new file mode 100644 index 00000000..f598e43e --- /dev/null +++ b/.linux_items/archlive/airootfs/root/.zlogin @@ -0,0 +1 @@ +~/.automated_script.sh diff --git a/.linux_items/archlive/airootfs/root/customize_airootfs.sh b/.linux_items/archlive/airootfs/root/customize_airootfs.sh new file mode 100644 index 00000000..6d70438f --- /dev/null +++ b/.linux_items/archlive/airootfs/root/customize_airootfs.sh @@ -0,0 +1,72 @@ +#!/bin/bash + +set -e -u + +# Set hostname +echo "[customize_airootfs] INFO: Set hostname" +echo "wk-arch" > /etc/hostname +echo "127.0.1.1 wk-arch.localdomain wk-arch" >> /etc/hosts + +# Set locale +echo "[customize_airootfs] INFO: Set locale" +sed -i 's/#\(en_US\.UTF-8\)/\1/' /etc/locale.gen +locale-gen + +# Time Settings +echo "[customize_airootfs] INFO: Set time" +ln -sf /usr/share/zoneinfo/America/Los_Angeles /etc/localtime +sed -i 's/#FallbackNTP/NTP/' /etc/systemd/timesyncd.conf +#timedatectl set-ntp true + +# root user settings +echo "[customize_airootfs] INFO: Setup root user" +usermod -s /usr/bin/zsh root +cp -aT /etc/skel/ /root/ +rm /root/.ssh/id* +rm /root/.zlogin +chmod 700 /root +echo "root:Abracadabra" | chpasswd + +# wktech user settings +echo "[customize_airootfs] INFO: Setup wktech user" +groupadd -r autologin +useradd -m -s /bin/zsh -G autologin,power,storage,wheel -U wktech +echo "wktech:Abracadabra" | chpasswd + +# Enable sudo for %wheel +echo "[customize_airootfs] INFO: Enable sudo" +echo '%wheel ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers + +# Misc +echo "[customize_airootfs] INFO: Misc Settings" +#sed -i -r 's/extensions.autoDisableScopes", [0-9]+/extensions.autoDisableScopes", 0/' /usr/lib/firefox/browser/defaults/preferences/vendor.js +mkdir /media + +# Set mirrorlist +echo "[customize_airootfs] INFO: Setup pacman mirrorlist" +# Ranked on 2017-10-19 +echo 'Server = http://mirrors.cat.pdx.edu/archlinux/$repo/os/$arch' > /etc/pacman.d/mirrorlist +echo 'Server = http://mirrors.advancedhosters.com/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist +echo 'Server = http://archlinux.surlyjake.com/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist +echo 'Server = http://mirrors.acm.wpi.edu/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist +echo 'Server = https://archlinux.surlyjake.com/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist +echo 'Server = http://ca.us.mirror.archlinux-br.org/$repo/os/$arch' >> /etc/pacman.d/mirrorlist +echo 'Server = https://arlm.tyzoid.com/$repo/os/$arch' >> /etc/pacman.d/mirrorlist +echo 'Server = http://mirror.rackspace.com/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist +echo 'Server = http://il.us.mirror.archlinux-br.org/$repo/os/$arch' >> /etc/pacman.d/mirrorlist + +# journald settings (from archiso) +echo "[customize_airootfs] INFO: Setup journald" +sed -i 's/#\(Storage=\)auto/\1volatile/' /etc/systemd/journald.conf + +# logind settings (from archiso) +echo "[customize_airootfs] INFO: Setup logind" +sed -i 's/#\(HandleSuspendKey=\)suspend/\1ignore/' /etc/systemd/logind.conf +sed -i 's/#\(HandleHibernateKey=\)hibernate/\1ignore/' /etc/systemd/logind.conf +sed -i 's/#\(HandleLidSwitch=\)suspend/\1ignore/' /etc/systemd/logind.conf + +echo "[customize_airootfs] INFO: Setup systemd" +#systemctl enable pacman-init.service choose-mirror.service +#systemctl set-default graphical.target + +echo "[customize_airootfs] INFO: Completed." diff --git a/.linux_items/archlive/airootfs/root/install.txt b/.linux_items/archlive/airootfs/root/install.txt new file mode 100644 index 00000000..3c8f171c --- /dev/null +++ b/.linux_items/archlive/airootfs/root/install.txt @@ -0,0 +1,3 @@ +View this installation guide online at +https://wiki.archlinux.org/index.php/Installation_Guide + diff --git a/.linux_items/archlive/airootfs/usr/local/bin/apple_fans b/.linux_items/archlive/airootfs/usr/local/bin/apple_fans new file mode 100644 index 00000000..3bf21b42 --- /dev/null +++ b/.linux_items/archlive/airootfs/usr/local/bin/apple_fans @@ -0,0 +1,37 @@ +#!/bin/bash +# +## HW diagnostics - Prime95 + +SMCPATH="/sys/devices/platform/applesmc.768" +SET_MAX="True" + +function usage { + echo "Usage: $0 auto|max" + echo " e.g. $0 max" +} + +# Set mode +case $1 in + auto) + SET_MAX="False";; + max) + SET_MAX="True";; + *) + usage + exit 1;; +esac + +if [[ -e "$SMCPATH" ]]; then + if [[ "$SET_MAX" == "True" ]]; then + # Set fans to max RPM + for fan in $SMCPATH/fan*max; do + echo '1' | sudo tee ${fan:0:-4}_manual > /dev/null + cat $fan | sudo tee ${fan:0:-4}_output > /dev/null + done + else + # Set fans to auto + for fan in $SMCPATH/fan*manual; do + echo '0' | sudo tee $fan > /dev/null + done + fi +fi diff --git a/.linux_items/archlive/airootfs/usr/local/bin/arch.conf b/.linux_items/archlive/airootfs/usr/local/bin/arch.conf new file mode 100644 index 00000000..06d8c761 --- /dev/null +++ b/.linux_items/archlive/airootfs/usr/local/bin/arch.conf @@ -0,0 +1,44 @@ +## WK-Arch Settings ## + +# Backup options +declare -a BACKUP_1=( + "ServerOne" # Server name + "10.0.0.10" # IP + "Backups" # Share name + "backup" # User name + "Abracadabra" # Password +) +declare -a BACKUP_2=( + "ServerTwo" # Server name + "10.0.0.11" # IP + "Backups" # Share name + "backup" # User name + "Abracadabra" # Password +) +declare -a BACKUP_3=( + "" # Server name + "" # IP + "" # Share name + "" # User name + "" # Password +) +declare -a BACKUP_4=( + "" # Server name + "" # IP + "" # Share name + "" # User name + "" # Password +) + +# Hardware testing options +TEST_CPU_LENGTH="7" # Time in minutes to run Prime95 + +# Network options +WIFI_SSID="SomeWiFi" # Use the 2.4Ghz network for better compatability +WIFI_PASS="Abracadabra" + +# Results upload options +SKIP_UPLOAD="False" # Set to "True" to disable all uploads +DIAG_SERVER="10.0.0.10" # Use the IP and not the server name +DIAG_SHARE="/srv/ClientInfo" # Full path to shared folder (relative to the server's root) +DIAG_USER="wkdiag" # User used to connect to the server via SSH diff --git a/.linux_items/archlive/airootfs/usr/local/bin/connect-to-network b/.linux_items/archlive/airootfs/usr/local/bin/connect-to-network new file mode 100644 index 00000000..f18aeb52 --- /dev/null +++ b/.linux_items/archlive/airootfs/usr/local/bin/connect-to-network @@ -0,0 +1,64 @@ +#!/bin/bash +# +## Get connected to a network + +# 1. Checks if already online; skips if so +# 2. If no wired devices are present then reload kernel modules +# 3. If wireless devices are present, and we're still offline, then connect to WiFi + +die () { + echo "$0:" "$@" >&2 + exit 1 +} + +function test_connection() { + if ip a | grep -Eq '(10.[0-9]+|172.(1[6-9]|2[0-9]|3[0-1]).[0-9]+|192.168).[0-9]+.[0-9]+'; then + return 0 + else + return 1 + fi +} + +# Load settings +if [[ -f "/run/archiso/bootmnt/arch/arch.conf" ]]; then + source "/run/archiso/bootmnt/arch/arch.conf" || \ + die "ERROR: failed to load arch.conf (from /run/archiso/bootmnt/arch/)" +else + source "/usr/local/bin/arch.conf" || \ + die "ERROR: failed to load arch.conf (from /usr/local/bin/)" +fi + +# Init +WIFI_SSID="${WIFI_SSID}" +WIFI_PASS="${WIFI_PASS}" + +# Connect to network +if ! test_connection; then + # LAN + if ! ip l | grep -Eq '[0-9]+: +en'; then + ## Reload the tg3/broadcom driver (known fix for some Dell systems) + echo "No wired network adapters found; reloading drivers..." + sudo modprobe -r tg3 + sudo modprobe broadcom + sudo modprobe tg3 + sleep 5s + fi + + # WiFi + if ip l | grep -Eq '[0-9]+: +wl'; then + ## Skip if we're already connected (i.e. the code above worked) + if ! test_connection; then + echo "Attempting to connect to ${WIFI_SSID}..." + nmcli dev wifi connect "${WIFI_SSID}" password "${WIFI_PASS}" + sleep 5s + fi + fi +fi + +# Done +if test_connection; then + exit 0 +else + exit 1 +fi + diff --git a/.linux_items/archlive/airootfs/usr/local/bin/hw-diags b/.linux_items/archlive/airootfs/usr/local/bin/hw-diags new file mode 100644 index 00000000..ff0f2fe7 --- /dev/null +++ b/.linux_items/archlive/airootfs/usr/local/bin/hw-diags @@ -0,0 +1,135 @@ +#!/bin/bash +# +## WK HW diagnostics - Launcher + +MODE="$1" +SHOW_MENU="True" +if [[ "$MODE" =~ ^(all|cpu|drives|foh|smart|badblocks)$ ]]; then + SHOW_MENU="False" +fi + +SHOW_POWEROPTIONS="False" +if [[ "$MODE" =~ ^cli$ ]]; then + SHOW_POWEROPTIONS="True" +fi + +function pause() { + # Pause to review output + echo "" + echo "$1" + read +} + +function menu() { + while :; do + if [[ "$SHOW_MENU" == "False" ]]; then + break + else + clear + echo "Hardware Diagnostics" + echo "────────────────────" + echo "0: Quick drive test" + echo "1: All tests" + echo "2: Prime95" + echo "3: SMART & badblocks" + echo "4: SMART" + echo "5: badblocks" + echo "────────────────────" + #if [[ -n $DISPLAY ]] && [[ $(getconf LONG_BIT) -eq "64" ]]; then + # echo "6: Graphics Test - FurMark" + # echo "7: Graphics Test - Piano" + # echo "8: Graphics Test - Volplosion" + #fi + echo "A: Speaker Test" + if [[ -n $DISPLAY ]]; then + echo "K: Keyboard Test" + fi + echo "N: Network Test" + echo "────────────────────" + echo "M: Screen Saver - Matrix" + echo "P: Screen Saver - Pipes" + echo "────────────────────" + echo "Q: Quit" + if [[ "$SHOW_POWEROPTIONS" =~ ^True$ ]]; then + echo "R: Reboot" + echo "S: Shutdown" + fi + echo "" + read -r -p "Please make a selection: " MODE + + # Check input + case $MODE in + 0) + MODE=foh + break;; + 1) + MODE=all + break;; + 2) + MODE=cpu + break;; + 3) + MODE=drives + break;; + 4) + MODE=smart + break;; + 5) + MODE=badblocks + break;; + #6) + # if [[ -n $DISPLAY ]] && [[ $(getconf LONG_BIT) -eq "64" ]]; then + # gputest /fullscreen /test=fur + # fi + # ;; + #7) + # if [[ -n $DISPLAY ]] && [[ $(getconf LONG_BIT) -eq "64" ]]; then + # gputest /fullscreen /test=pixmark_piano + # fi + # ;; + #8) + # if [[ -n $DISPLAY ]] && [[ $(getconf LONG_BIT) -eq "64" ]]; then + # gputest /fullscreen /test=pixmark_volplosion + # fi + # ;; + a|A|audio|Audio) + clear + hw-diags-audio + pause "Press Enter to return to menu...";; + k|K|keyboard|Keyboard) + if [[ -n $DISPLAY ]]; then + xev + fi + ;; + m|M) + cmatrix -abs + reset + clear;; + n|N) + clear + hw-diags-network + pause "Press Enter to return to menu...";; + p|P) + pipes -t 0 -t 1 -t 2 -t 3 -p 5 -R -r 4000 + reset + clear;; + q|Q|quit|Quit) + exit 0;; + r|R) + sudo reboot;; + s|S) + sudo poweroff;; + esac + fi + done +} + +# Main Loop +while :; do + menu + tmux new-session -s 'hw-session' -n 'hw-window' "hw-diags-inner $MODE" + if [[ "$SHOW_MENU" == "False" ]]; then + break + fi +done + diff --git a/.linux_items/archlive/airootfs/usr/local/bin/hw-diags-audio b/.linux_items/archlive/airootfs/usr/local/bin/hw-diags-audio new file mode 100644 index 00000000..f46135fb --- /dev/null +++ b/.linux_items/archlive/airootfs/usr/local/bin/hw-diags-audio @@ -0,0 +1,12 @@ +#!/bin/bash +# +## WK HW diagnostics - Audio (Stereo) + +# Unmute and set volume +amixer -q set "Master" 80% unmute +amixer -q set "PCM" 90% unmute + +speaker-test -c 2 -l 1 -t pink +# speaker-test -c 2 -l 1 -t sine +speaker-test -c 2 -l 1 -t wav + diff --git a/.linux_items/archlive/airootfs/usr/local/bin/hw-diags-badblocks b/.linux_items/archlive/airootfs/usr/local/bin/hw-diags-badblocks new file mode 100644 index 00000000..817996d3 --- /dev/null +++ b/.linux_items/archlive/airootfs/usr/local/bin/hw-diags-badblocks @@ -0,0 +1,25 @@ +#!/bin/bash +# +## WK HW diagnostics - badblocks + +function usage { + echo "Usage: $0 log-dir device" + echo " e.g. $0 /tmp/tmp.7Mh5f1RhSL9001 /dev/sda" +} + +# Bail early +if [ ! -d "$1" ]; then + usage + exit 1 +fi +if [ ! -b "$2" ]; then + usage + exit 1 +fi + +# Run Badblocks +sudo badblocks -sv -e 1 "$2" +tmux capture-pane +tmux save-buffer "$1/bb_tmp.out" +grep -Ev '^$' "$1/bb_tmp.out" > "$1/${2##*/}_badblocks.log" +rm "$1/bb_tmp.out" diff --git a/.linux_items/archlive/airootfs/usr/local/bin/hw-diags-inner b/.linux_items/archlive/airootfs/usr/local/bin/hw-diags-inner new file mode 100644 index 00000000..45f83a9a --- /dev/null +++ b/.linux_items/archlive/airootfs/usr/local/bin/hw-diags-inner @@ -0,0 +1,518 @@ +#!/bin/bash +# +## WK HW Diagnostics - Main script + +die () { + echo "$0:" "$@" >&2 + exit 1 +} + +# Load settings +if [[ -f "/run/archiso/bootmnt/arch/arch.conf" ]]; then + source "/run/archiso/bootmnt/arch/arch.conf" || \ + die "ERROR: failed to load arch.conf (from /run/archiso/bootmnt/arch/)" +else + source "/usr/local/bin/arch.conf" || \ + die "ERROR: failed to load arch.conf (from /usr/local/bin/)" +fi + +# Get TICKET +## Inital SKIP_UPLOAD value loaded from arch.conf +SKIP_UPLOAD="${SKIP_UPLOAD}" +TICKET="" +while [[ "$TICKET" == "" ]]; do + if [[ "$1" == "foh" ]]; then + TICKET="foh-consult" + SKIP_UPLOAD="True" + else + echo -n "Please enter the Service Order #: " + read -r _ticket + if echo "$_ticket" | grep -Eq '^[1-9]+\S*$'; then + TICKET="$_ticket" + elif echo "$_ticket" | grep -Eq '^0'; then + SKIP_UPLOAD="True" + TICKET="$_ticket" + fi + fi +done + +# Init +## Tautologies left to show which settings are coming from arch.conf +DIAG_DATE="$(date "+%F_%H%M")" +DIAG_SERVER_AVAIL="False" +DIAG_SERVER="${DIAG_SERVER}" +DIAG_SHARE="${DIAG_SHARE}" +DIAG_DEST="${DIAG_SHARE}/${TICKET}" +DIAG_UPLOAD_NAME="HW-Diagnostics_${DIAG_DATE}" +DIAG_USER="${DIAG_USER}" +TMP_DIR="$(mktemp -d)" +ERRORS="False" +TEST_CPU="False" +TEST_CPU_LENGTH="${TEST_CPU_LENGTH}" +TEST_OVER="False" +TEST_SMART="False" +TEST_BADBLOCKS="False" +SKIP_SHORT_TEST="False" +LOG="$TMP_DIR/hw-diags.log" +OUT="$TMP_DIR/hw-diags.out" + +# Get list of drives to test (excluding any ARCH drives) + +## Some code borrowed from stackoverflow.com/a/10020397 +ARCH_DRIVES=($(ls -l /dev/disk/by-label | grep -iE 'ARCH.*[hs]d[a-z]' | sed -r 's#.*/([hs]d[a-z])[0-9]+#\1#' | sort | uniq)) +DRIVES=($(inxi -Dxx -c 0 | grep -E "ID-[0-9]+" | sed -r 's#.*/dev/([hsv]d[a-z]|nvme[0-9]n[0-9]).*#\1#' | sort)) +for d in "${ARCH_DRIVES[@]}"; do + DRIVES=(${DRIVES[@]//*$d*}) +done + +# Handle testing runs +if [[ "$SKIP_UPLOAD" != "True" ]]; then + # Connect to network + connect-to-network + + # Test connection to DIAG_SERVER + if ip a | grep -Eq '(10.[0-9]+|172.(1[6-9]|2[0-9]|3[0-1])|192.168).[0-9]+.[0-9]+' && \ + ping -c 1 -q $DIAG_SERVER >/dev/null 2>&1; then + DIAG_SERVER_AVAIL="True" + ssh-add + ssh $DIAG_USER@$DIAG_SERVER mkdir -p "$DIAG_DEST" + ssh $DIAG_USER@$DIAG_SERVER chmod 755 "$DIAG_DEST" + fi +fi + +# Setup Env +mkdir "$TMP_DIR" -p 2>/dev/null +pushd "$TMP_DIR" >/dev/null +touch "$OUT" +rm local.txt results.txt 2>/dev/null + +# Functions +CLEAR="\e[0m" +RED="\e[31m" +GREEN="\e[32m" +YELLOW="\e[33m" +BLUE="\e[34m" +function update_progress { + echo "HW Diagnostics" > "$LOG" + echo "${BLUE}HW Diagnostics${CLEAR}" > "$OUT" + echo "───────────────" >> "$LOG" + echo "───────────────" >> "$OUT" + + if [[ "$TEST_CPU" == "True" ]]; then + echo "" >> "$LOG" + echo "" >> "$OUT" + if [[ "$cpu_result" == "CS" ]]; then + echo "Prime95 CS" >> "$LOG" + echo "${BLUE}Prime95${CLEAR} ${GREEN}CS${CLEAR}" >> "$OUT" + elif [[ "$cpu_result" == "Working" ]]; then + echo "Prime95 Working" >> "$LOG" + echo "${BLUE}Prime95${CLEAR} ${YELLOW}Working${CLEAR}" >> "$OUT" + elif [[ "$cpu_result" == "Unknown" ]]; then + echo "Prime95 Unknown" >> "$LOG" + echo "${BLUE}Prime95${CLEAR} ${YELLOW}Unknown${CLEAR}" >> "$OUT" + else + echo "Prime95 NS" >> "$LOG" + echo "${BLUE}Prime95${CLEAR} ${RED}NS${CLEAR}" >> "$OUT" + fi + fi + + if [[ "$TEST_SMART" == "True" ]]; then + echo "" >> "$LOG" + echo "" >> "$OUT" + if [[ "$SKIP_SHORT_TEST" == "True" ]]; then + echo "SMART (Quick)" >> "$LOG" + echo "${BLUE}SMART${CLEAR} ${YELLOW}(Quick)${CLEAR}" >> "$OUT" + else + echo "SMART" >> "$LOG" + echo "${BLUE}SMART${CLEAR}" >> "$OUT" + fi + for d in "${DRIVES[@]}"; do + d_tmp="${d##*/}_smart_result" + eval "d_tmp=\$$d_tmp" + if [[ "$d_tmp" == "CS" ]]; then + echo "${d##*/} CS" >> "$LOG" + echo "${d##*/} ${GREEN}CS${CLEAR}" >> "$OUT" + elif [[ "$d_tmp" == "Working" ]]; then + echo "${d##*/} Working" >> "$LOG" + echo "${d##*/} ${YELLOW}Working${CLEAR}" >> "$OUT" + elif [[ "$d_tmp" == "Unknown" ]]; then + echo "${d##*/} Unknown" >> "$LOG" + echo "${d##*/} ${YELLOW}Unknown${CLEAR}" >> "$OUT" + elif [[ "$d_tmp" == "NS" ]]; then + echo "${d##*/} NS" >> "$LOG" + echo "${d##*/} ${RED}NS${CLEAR}" >> "$OUT" + else + echo "${d##*/}" >> "$LOG" + echo "${d##*/}" >> "$OUT" + fi + done + fi + + if [[ "$TEST_BADBLOCKS" == "True" ]]; then + echo "" >> "$LOG" + echo "" >> "$OUT" + echo "Badblocks" >> "$LOG" + echo "${BLUE}Badblocks${CLEAR}" >> "$OUT" + for d in "${DRIVES[@]}"; do + d_tmp="${d##*/}_badblocks_result" + eval "d_tmp=\$$d_tmp" + if [[ "$d_tmp" == "CS" ]]; then + echo "${d##*/} CS" >> "$LOG" + echo "${d##*/} ${GREEN}CS${CLEAR}" >> "$OUT" + elif [[ "$d_tmp" == "Working" ]]; then + echo "${d##*/} Working" >> "$LOG" + echo "${d##*/} ${YELLOW}Working${CLEAR}" >> "$OUT" + elif [[ "$d_tmp" == "Skipped" ]]; then + echo "${d##*/} Skipped" >> "$LOG" + echo "${d##*/} ${RED}Skipped${CLEAR}" >> "$OUT" + elif [[ "$d_tmp" == "NS" ]]; then + echo "${d##*/} NS" >> "$LOG" + echo "${d##*/} ${RED}NS${CLEAR}" >> "$OUT" + else + echo "${d##*/}" >> "$LOG" + echo "${d##*/}" >> "$OUT" + fi + done + fi + + if [[ "$TEST_OVER" == "True" ]]; then + echo "" >> "$LOG" + echo "" >> "$OUT" + echo "───────────────" >> "$LOG" + echo "───────────────" >> "$OUT" + + if [[ "$ERRORS" == "True" ]]; then + echo "HW: Error(s)" >> "$LOG" + echo "${RED}HW: Error(s)${CLEAR}" >> "$OUT" + else + echo "HW: Passed" >> "$LOG" + echo "${GREEN}HW: Passed${CLEAR}" >> "$OUT" + fi + fi + + # Update Server + if [[ "$DIAG_SERVER_AVAIL" == "True" ]]; then + rsync -aqz --chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r "$TMP_DIR/" $DIAG_USER@$DIAG_SERVER:"$DIAG_DEST/${DIAG_UPLOAD_NAME}/" --exclude '*.out' + fi +} + +# Select Tests +case "$1" in + all) + TEST_CPU="True" + TEST_SMART="True" + TEST_BADBLOCKS="True" + ;; + cpu) + TEST_CPU="True" + TEST_SMART="False" + TEST_BADBLOCKS="False" + ;; + drives) + TEST_CPU="False" + TEST_SMART="True" + TEST_BADBLOCKS="True" + ;; + foh) + TEST_CPU="False" + TEST_SMART="True" + TEST_BADBLOCKS="False" + SKIP_SHORT_TEST="True" + ;; + smart) + TEST_CPU="False" + TEST_SMART="True" + TEST_BADBLOCKS="False" + ;; + badblocks) + TEST_CPU="False" + TEST_SMART="False" + TEST_BADBLOCKS="True" + ;; +esac + +if [[ "$TEST_CPU" == "False" ]] && \ + [[ "$TEST_SMART" == "False" ]] && \ + [[ "$TEST_BADBLOCKS" == "False" ]]; then + echo -e "${YELLOW}Aborting HW diagnostics${CLEAR}" + exit 1 +fi + +# Configure display +tmux split-window -d -h -l 16 "hw-diags-progress $OUT" +update_progress + +# CPU +if [[ "$TEST_CPU" == "True" ]]; then + clear + CPU_ERRORS="False" + cpu_result="Working" + update_progress + apple_fans max + (sleep ${TEST_CPU_LENGTH}m && killall -s INT "mprime" >>/dev/null 2>&1) & + (sleep ${TEST_CPU_LENGTH}m && killall "hw-diags-sensors" >>/dev/null 2>&1) & + (sleep ${TEST_CPU_LENGTH}m && apple_fans auto >>/dev/null 2>&1) & + tmux split-window -d -v -l 10 "hw-diags-prime95 $TMP_DIR" + hw-diags-sensors "$TMP_DIR" 2>/dev/null + sleep 1s + # tmux kill-pane -t 1 + if [[ -f "results.txt" ]]; then + mv -nv results.txt "prime-results.txt" + if grep -q -iE '(error|fail)' "prime-results.txt"; then + cpu_result="NS" + CPU_ERRORS="True" + else + cpu_result="CS" + fi + elif [[ -f "prime.log" ]]; then + if grep -i 'completed' "prime.log" | grep -q -iv '0 errors, 0 warnings'; then + cpu_result="NS" + CPU_ERRORS="True" + else + cpu_result="CS" + fi + else + CPU_ERRORS="True" + cpu_result="Unknown" + fi + + update_progress + + if [[ "$CPU_ERRORS" == "True" ]]; then + ERRORS="True" + fi +fi + +# SMART +if [[ "$TEST_SMART" == "True" ]]; then + clear + echo "Checking SMART status..." + for d in "${DRIVES[@]}"; do + SMART_ERRORS="False" + tmp_device="${d##*/}" + eval "${tmp_device}_smart_result=Working" + inxi -Dxx | grep "/dev/${tmp_device}" | sed -r "s#.*/dev/${tmp_device} (.*)# \1#" > "${tmp_device}_report.out" + inxi -Dxxc 0 | grep "/dev/${tmp_device}" | sed -r "s#.*/dev/${tmp_device} (.*)# \1#" > "${tmp_device}_report.log" + update_progress + + # Attempt to enable SMART reporting + if sudo smartctl -s on "/dev/${tmp_device}" | grep -q 'device lacks SMART capability'; then + SMART_ERRORS="True" + eval "${tmp_device}_smart_result=Unknown" + echo " ${RED}ERROR: device lacks SMART capability${CLEAR}" >> "${tmp_device}_report.out" + echo " ERROR: device lacks SMART capability" >> "${tmp_device}_report.log" + sleep 1s + fi + + # Save current SMART values + sudo smartctl --all "/dev/${tmp_device}" >> "${tmp_device}-smart.log" + sudo smartctl -l error "/dev/${tmp_device}" >> "${tmp_device}-smart-err.log" + + # Check specific SMART results + sudo smartctl -A "/dev/${tmp_device}" | grep -E '^\s*(5|9|184|197|198)\s' >> "${tmp_device}-smart-attributes.log" + + # 5 - Reallocated Sectors + if grep -qE '^\s*5\s' "${tmp_device}-smart-attributes.log"; then + line="$(grep -E '^\s*5\s' "${tmp_device}-smart-attributes.log")" + value=$(echo "$line" | sed -r 's/.*\s([0-9]+).*/\1/') + echo " Reallocated Sectors: $value" >> "${tmp_device}_report.log" + if [[ "$value" -gt 0 ]]; then + SMART_ERRORS="True" + echo " ${RED}Reallocated Sectors: $value${CLEAR}" >> "${tmp_device}_report.out" + else + echo " ${GREEN}Reallocated Sectors: $value${CLEAR}" >> "${tmp_device}_report.out" + fi + fi + + # 9 - Power-on Hours (Warn, but don't prevent badblock scan) + if grep -qE '^\s*9\s' "${tmp_device}-smart-attributes.log"; then + line="$(grep -E '^\s*9\s' "${tmp_device}-smart-attributes.log")" + value=$(echo "$line" | sed -r 's/.*\s([0-9]+).*/\1/') + echo " Power-on Hours: $value" >> "${tmp_device}_report.log" + if [[ "$value" -gt 18000 ]]; then + #SMART_ERRORS="True" + echo " ${RED}Power-on Hours: $value (VERY OLD)${CLEAR}" >> "${tmp_device}_report.out" + elif [[ "$value" -gt 12000 ]]; then + echo " ${YELLOW}Power-on Hours: $value${CLEAR}" >> "${tmp_device}_report.out" + else + echo " ${GREEN}Power-on Hours: $value${CLEAR}" >> "${tmp_device}_report.out" + fi + fi + + # 184 - End-to-End Errors + if grep -qE '^\s*184\s' "${tmp_device}-smart-attributes.log"; then + line="$(grep -E '^\s*184\s' "${tmp_device}-smart-attributes.log")" + value=$(echo "$line" | sed -r 's/.*\s([0-9]+).*/\1/') + echo " End-to-End Errors: $value" >> "${tmp_device}_report.log" + if [[ "$value" -gt 0 ]]; then + SMART_ERRORS="True" + echo " ${RED}End-to-End Errors: $value${CLEAR}" >> "${tmp_device}_report.out" + else + echo " ${GREEN}End-to-End Errors: $value${CLEAR}" >> "${tmp_device}_report.out" + fi + fi + + # 197 - Current Pending Sectors + if grep -qE '^\s*197\s' "${tmp_device}-smart-attributes.log"; then + line="$(grep -E '^\s*197\s' "${tmp_device}-smart-attributes.log")" + value=$(echo "$line" | sed -r 's/.*\s([0-9]+).*/\1/') + echo " Current Pending Sectors: $value" >> "${tmp_device}_report.log" + if [[ "$value" -gt 0 ]]; then + SMART_ERRORS="True" + echo " ${RED}Current Pending Sectors: $value${CLEAR}" >> "${tmp_device}_report.out" + else + echo " ${GREEN}Current Pending Sectors: $value${CLEAR}" >> "${tmp_device}_report.out" + fi + fi + + # 198 - Offline Uncorrectable + if grep -qE '^\s*198\s' "${tmp_device}-smart-attributes.log"; then + line="$(grep -E '^\s*198\s' "${tmp_device}-smart-attributes.log")" + value=$(echo "$line" | sed -r 's/.*\s([0-9]+).*/\1/') + echo " Offline Uncorrectable: $value" >> "${tmp_device}_report.log" + if [[ "$value" -gt 0 ]]; then + SMART_ERRORS="True" + echo " ${RED}Offline Uncorrectable: $value${CLEAR}" >> "${tmp_device}_report.out" + else + echo " ${GREEN}Offline Uncorrectable: $value${CLEAR}" >> "${tmp_device}_report.out" + fi + fi + + if [[ "$SMART_ERRORS" == "False" ]] && [[ "$SKIP_SHORT_TEST" == "False" ]]; then + if sudo smartctl -c "/dev/${tmp_device}" >>/dev/null 2>&1; then + # Determine short-test polling time + wait_time=$(sudo smartctl -c "/dev/${tmp_device}" | grep -i 'polling time' | head -1 | sed -r 's/.*\( *([0-9]+)\).*/\1/') + wait_time=$(( wait_time + 5)) + + # Run short self-test + echo " Running SMART short self-test ($wait_time minutes)..." + sudo smartctl -t short "/dev/${tmp_device}" >/dev/null + sleep ${wait_time}m + sudo smartctl -l selftest "/dev/${tmp_device}" >> "${tmp_device}-smart-tests.log" + if grep '^#' "${tmp_device}-smart-tests.log" | head -1 | grep -iq 'completed without error'; then + echo " ${GREEN}Self-test: passed${CLEAR}" >> "${tmp_device}_report.out" + echo " Self-test: passed" >> "${tmp_device}_report.log" + else + echo " ${RED}Self-test: failed${CLEAR}" >> "${tmp_device}_report.out" + echo " Self-test: failed" >> "${tmp_device}_report.log" + SMART_ERRORS="True" + fi + else + echo " ${RED}ERROR: Unable to run SMART self-test.${CLEAR}" >> "${tmp_device}_report.out" + echo " ERROR: Unable to run SMART self-test." >> "${tmp_device}_report.log" + fi + fi + + if [[ "$SMART_ERRORS" == "False" ]]; then + eval "${tmp_device}_smart_result=CS" + else + ERRORS="True" + tmp_if="${tmp_device}_smart_result" + eval "tmp_if=\$$tmp_if" + if [[ "$tmp_if" != "Unknown" ]]; then + eval "${tmp_device}_smart_result=NS" + fi + fi + + update_progress + done +fi + +# Badblocks +if [[ "$TEST_BADBLOCKS" == "True" ]]; then + clear + for d in "${DRIVES[@]}"; do + # Get SMART results + tmp_device="${d##*/}" + d_smart="${tmp_device}_smart_result" + eval "d_smart=\$$d_smart" + + # Check SMART results + if [[ "$d_smart" == "NS" ]]; then + echo -e "${RED}Skipping drive: $tmp_device${CLEAR}" + eval "${tmp_device}_badblocks_result=Skipped" + else + eval "${tmp_device}_badblocks_result=Working" + update_progress + echo "Testing drive: ${tmp_device}" + + # Split and run + tmux split-window -v -l 7 "hw-diags-badblocks $TMP_DIR /dev/${tmp_device}" + + # Wait until done + sleep 2s + while pgrep -G 0 -U 0 -f "badblocks.*${tmp_device}" >/dev/null 2>&1; do + sleep 1s; + done + sleep 2s + + # Check log + if grep -Eiq 'Pass completed.*0/0/0 errors' "${tmp_device}_badblocks.log"; then + eval "${tmp_device}_badblocks_result=CS" + else + eval "${tmp_device}_badblocks_result=NS" + fi + update_progress + fi + done +fi + +# Result Screen +TEST_OVER="True" +update_progress +clear +echo "─── RESULTS ───" +if [[ "$TEST_CPU" == "True" ]]; then + echo -e "${BLUE}CPU:${CLEAR}" + if [[ -f "results.txt" ]]; then + echo "results.txt" + if grep -q -iE '(error|fail)' "prime-results.txt"; then + echo -e "${RED}$(grep -q -iE '(error|fail)' "prime-results.txt" | sed -r 's/^/ /' | tail -4)${CLEAR}" + else + sed -r 's/^/ /' "prime-results.txt" 2>/dev/null | tail -4 + fi + echo "" + fi + if [[ -f "prime.log" ]]; then + echo "prime.log" + if grep -i 'completed' "prime.log" | grep -q -iv '0 errors, 0 warnings'; then + echo -e "${RED}$(grep -i 'completed' "prime.log" | grep -iv '0 errors, 0 warnings' | sed -r 's/^/ /' | tail -4)${CLEAR}" + else + grep -i 'completed' "prime.log" | grep -i '0 errors, 0 warnings' | sed -r 's/^.*(Worker #[0-9]+).*(Torture.*)/ \1 \2/' | tail -4 + fi + fi +fi +if [[ "$TEST_SMART" == "True" ]] || \ + [[ "$TEST_BADBLOCKS" == "True" ]]; then + for d in "${DRIVES[@]}"; do + echo -e "${BLUE}Drive $d:${CLEAR}" + if [[ -f "${d##*/}_report.out" ]]; then + echo -e "$(cat "${d##*/}_report.out" 2>/dev/null)" + fi + if [[ -f "${d##*/}_badblocks.log" ]]; then + grep 'Pass completed, ' "${d##*/}_badblocks.log" 2>/dev/null | sed -r 's/^Pass completed, / /' 2>/dev/null + fi + echo "" + done +fi +update_progress + +# System info dump +sudo inxi -CDdGlMmNopRsc 0 | grep -Ev '(/dev/ram|No RAID devices|Display Server|multisession)' > "system_info.txt" + +# Cleanup +mkdir "$HOME/Tickets/$TICKET" -p 2>/dev/null +rsync -aS --chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r "$TMP_DIR/" "$HOME/Tickets/$TICKET/" +popd >/dev/null +cd "$HOME/Tickets" && tar czf "${DIAG_UPLOAD_NAME}.tgz" "$TICKET" + +# Update Server +if [[ "$DIAG_SERVER_AVAIL" == "True" ]]; then + rsync -aqz --chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r "${DIAG_UPLOAD_NAME}.tgz" $DIAG_USER@$DIAG_SERVER:"$DIAG_DEST/" +fi + +# End +echo -n "Press Enter to exit..." +read -r +killall hw-diags-progress >>/dev/null 2>&1 +exit 0 diff --git a/.linux_items/archlive/airootfs/usr/local/bin/hw-diags-network b/.linux_items/archlive/airootfs/usr/local/bin/hw-diags-network new file mode 100644 index 00000000..b1ba805d --- /dev/null +++ b/.linux_items/archlive/airootfs/usr/local/bin/hw-diags-network @@ -0,0 +1,73 @@ +#!/bin/bash +# +## WK HW diagnostics - Network + +function test_connection() { + cmd="a" + if [[ -e "/sys/class/net/$1" ]]; then + cmd="a show $1" + fi + if ip $cmd | grep -Eq '(10.[0-9]+|172.(1[6-9]|2[0-9]|3[0-1]).[0-9]+|192.168).[0-9]+.[0-9]+'; then + return 0 + else + return 1 + fi +} + + +CLEAR="\e[0m" +RED="\e[31m" +GREEN="\e[32m" +YELLOW="\e[33m" +BLUE="\e[34m" + +# Header +echo "WK HW Diagnostics - Network" +echo "" + +# Start Wifi if necessary +echo "Initializing..." +connect-to-network >/dev/null 2>&1 + +# Check network connection +echo -n "Network connection: " +if test_connection; then + echo -e "${GREEN}OK${CLEAR}" +else + echo -e "${RED}No access${CLEAR}" + exit 1 +fi + +# Check IP addresses +for d in /sys/class/net/*; do + device="$(basename $d)" + if [ "$device" != "lo" ]; then + if test_connection $device; then + ip="$(ip a show $device | egrep 'inet [0-9]' | sed -r 's#.*inet (.*?/[0-9]+).*#\1#')" + echo "$device: $ip" | awk '{printf " %-16s %s\n", $1, $2}' + fi + fi +done + +# Check internet connection +echo -n "Internet connection: " +if ping -c 2 -q 8.8.8.8 >/dev/null 2>&1; then + echo -e "${GREEN}OK${CLEAR}" +else + echo -e "${RED}No access${CLEAR}" + exit 1 +fi + +# Check DNS +echo -n "DNS Resolution: " +if ping -c 2 -q google.com >/dev/null 2>&1; then + echo -e "${GREEN}OK${CLEAR}" +else + echo -e "${RED}Unable to resolve google.com${CLEAR}" + exit 1 +fi + +# Check speed +echo "Speedtest:" +speedtest-cli --simple | awk '{printf " %-16s %6.2f %s\n", $1, $2, $3}' + diff --git a/.linux_items/archlive/airootfs/usr/local/bin/hw-diags-prime95 b/.linux_items/archlive/airootfs/usr/local/bin/hw-diags-prime95 new file mode 100644 index 00000000..4152a6a2 --- /dev/null +++ b/.linux_items/archlive/airootfs/usr/local/bin/hw-diags-prime95 @@ -0,0 +1,17 @@ +#!/bin/bash +# +## HW diagnostics - Prime95 + +function usage { + echo "Usage: $0 log-dir" + echo " e.g. $0 /tmp/tmp.7Mh5f1RhSL9001" +} + +# Bail early +if [ ! -d "$1" ]; then + usage + exit 1 +fi + +# Run Prime95 +mprime -t | grep -iv --line-buffered 'stress.txt' | tee -a "$1/prime.log" diff --git a/.linux_items/archlive/airootfs/usr/local/bin/hw-diags-progress b/.linux_items/archlive/airootfs/usr/local/bin/hw-diags-progress new file mode 100644 index 00000000..83505276 --- /dev/null +++ b/.linux_items/archlive/airootfs/usr/local/bin/hw-diags-progress @@ -0,0 +1,10 @@ +#!/bin/bash +# +## WK HW diagnostics - Progress + +# Loop forever +while :; do + clear + echo -e "$(cat "$1")" + sleep 1s +done diff --git a/.linux_items/archlive/airootfs/usr/local/bin/hw-diags-sensors b/.linux_items/archlive/airootfs/usr/local/bin/hw-diags-sensors new file mode 100644 index 00000000..649601a8 --- /dev/null +++ b/.linux_items/archlive/airootfs/usr/local/bin/hw-diags-sensors @@ -0,0 +1,42 @@ +#!/bin/bash +# +## WK HW diagnostics - Sensors + +LOG_DIR="$1" + +function usage { + echo "Usage: $0 log-dir" + echo " e.g. $0 /tmp/tmp.7Mh5f1RhSL9001" +} + +# Create directory if necessary +if [ ! -d "$LOG_DIR" ]; then + LOG_DIR="$(mktemp -d)" +fi + +# Run Sensor loop +if sensors >/dev/null 2>&1; then + while :; do + sensors -A | grep -E -i -v '(N/A|RPM|\d+\s+V\s+|^\s*$)' > "$LOG_DIR/sensors.out" 2>/dev/null + + # Colorize + # Blue: All temps (superseeded by other colors below) + sed -i -r 's#(\+[0-9]+\.[0-9].C)#\\e[34m\1\\e[0m#g' "$LOG_DIR/sensors.out" >/dev/null 2>&1 + # Green >= 60* C + sed -i -r 's#(\+6[0-9]\.[0-9].C)#\\e[32m\1\\e[0m#g' "$LOG_DIR/sensors.out" >/dev/null 2>&1 + # Yellow >= 70* C + sed -i -r 's#(\+7[0-9]\.[0-9].C)#\\e[33m\1\\e[0m#g' "$LOG_DIR/sensors.out" >/dev/null 2>&1 + # Orange >= 80* C + sed -i -r 's#(\+(8[0-9]|9[0-4])\.[0-9].C)#\\e[31\;1m\1\\e[0m#g' "$LOG_DIR/sensors.out" >/dev/null 2>&1 + # Red >= 95* C + sed -i -r 's#(\+(9[5-9]|1[0-9][0-9])\.[0-9].C)#\\e[31m\1\\e[0m#g' "$LOG_DIR/sensors.out" >/dev/null 2>&1 + + # Output data + clear + echo -e "$(cat "$LOG_DIR/sensors.out")" + sleep 1s + done +else + echo -e "\e[33mNo sensors found!\nPlease monitor temperatures manually\e[0m" + sleep 1h +fi diff --git a/.linux_items/archlive/airootfs/usr/local/bin/mount-all-volumes b/.linux_items/archlive/airootfs/usr/local/bin/mount-all-volumes new file mode 100644 index 00000000..b0eed90e --- /dev/null +++ b/.linux_items/archlive/airootfs/usr/local/bin/mount-all-volumes @@ -0,0 +1,28 @@ +#!/bin/bash +# +## Mount all volumes read-only + +# Mount all volumes +echo "Mounting all volumes" +regex="/dev/((h|s)d[a-z]|md)[0-9]+" +for volume in $(inxi -Dopxx | grep -E "$regex" | sed -r "s#.*($regex).*#\1#" | sort); do + if grep -q "$volume" /proc/mounts; then + if ! mount | grep "/run/archiso/bootmnt" | grep -q "$volume"; then + # Show what's already mounted except the WK_ARCH boot device + echo "$volume: (Already) mounted $(mount | grep "$volume" | sed -r 's/^\S+ (on.*) type .*/\1/') ($(df -h "$volume" | tail -1 | awk '{print $3, $4}' | sed -r 's/(K|M|G|T|) (.*[0-9])(K|M|G|T|)$/ \1b used, \2 \3b free/'))" + fi + else + if udevil mount -o ro $volume >/dev/null 2>&1; then + echo "$volume: Mounted $(mount | grep "$volume" | sed -r 's/^\S+ (on.*) type .*/\1/') ($(df -h "$volume" | tail -1 | awk '{print $3, $4}' | sed -r 's/(K|M|G|T|) (.*[0-9])(K|M|G|T|)$/ \1b used, \2 \3b free/'))" + else + echo "$volume: Failed to mount" + fi + fi +done + +# Open folder? +if echo "$0" | grep -iq foh; then + thunar /media +fi + +echo "Done." diff --git a/.linux_items/archlive/airootfs/usr/local/bin/mount-all-volumes-foh b/.linux_items/archlive/airootfs/usr/local/bin/mount-all-volumes-foh new file mode 100644 index 00000000..8ac53b0c --- /dev/null +++ b/.linux_items/archlive/airootfs/usr/local/bin/mount-all-volumes-foh @@ -0,0 +1 @@ +mount-all-volumes \ No newline at end of file diff --git a/.linux_items/archlive/airootfs/usr/local/bin/mount-backup-shares b/.linux_items/archlive/airootfs/usr/local/bin/mount-backup-shares new file mode 100644 index 00000000..9c6e9fad --- /dev/null +++ b/.linux_items/archlive/airootfs/usr/local/bin/mount-backup-shares @@ -0,0 +1,67 @@ +#!/bin/bash +# +## Mount NAS backup shares + +die () { + echo "$0:" "$@" >&2 + exit 1 +} + +# Load settings +if [[ -f "/run/archiso/bootmnt/arch/arch.conf" ]]; then + source "/run/archiso/bootmnt/arch/arch.conf" || \ + die "ERROR: failed to load arch.conf (from /run/archiso/bootmnt/arch/)" +else + source "/usr/local/bin/arch.conf" || \ + die "ERROR: failed to load arch.conf (from /usr/local/bin/)" +fi + +# Connect to a network +connect-to-network + +# Mount loop +echo "Mounting NAS backup shares" +for x in {1..4}; do + _skip="False" + + # Load Backup share info + eval "declare -a _backup=(\${BACKUP_$x[@]})" + _name="${_backup[0]}" + _ip="${_backup[1]}" + _share="${_backup[2]}" + _user="${_backup[3]}" + _pass="${_backup[4]}" + + # Check backup share info + if echo "$_name" | grep -Eq '^\s*$'; then + _skip="True"; + fi + if echo "$_ip" | grep -Eq '^\s*$'; then + _skip="True"; + fi + if echo "$_share" | grep -Eq '^\s*$'; then + _skip="True"; + fi + if echo "$_user" | grep -Eq '^\s*$'; then + _skip="True"; + fi + if echo "$_pass" | grep -Eq '^\s*$'; then + _skip="True"; + fi + + # Mount + if [[ "$_skip" == "False" ]]; then + sudo mkdir "/Backups/$_name" -p + if mountpoint -q "/Backups/$_name"; then + echo "$_name: (Already) mounted at /Backups/$_name ($(df -h "/Backups/$_name" | tail -1 | awk '{print $4}' | sed -r 's/([KMGT])/ \1b/') free)" + else + if sudo mount "//$_ip/$_share" "/Backups/$_name" -o username=$_user,password=$_pass 2>/dev/null; then + echo "$_name: Mounted at /Backups/$_name ($(df -h "/Backups/$_name" | tail -1 | awk '{print $4}' | sed -r 's/([KMGT])/ \1b/') free)" + else + rmdir "/Backups/$_name" -p 2>/dev/null + echo "$_name: Failed to mount" + fi + fi + fi +done + diff --git a/.linux_items/archlive/airootfs/usr/local/bin/msword-search b/.linux_items/archlive/airootfs/usr/local/bin/msword-search new file mode 100644 index 00000000..5917d660 --- /dev/null +++ b/.linux_items/archlive/airootfs/usr/local/bin/msword-search @@ -0,0 +1,38 @@ +#!/bin/bash + +TMP_FILE="$(mktemp)" + +IFS=$'\n' +for s in $*; do + REGEX="$s" + REGEX=$(echo "$REGEX" | sed -r 's/\s+/\\s\*/g') + + # Word Doc + for d in *doc; do + if antiword "$d" | grep -iqsP "($REGEX)"; then + echo "Possible match: $d" + echo "$d" >> "$TMP_FILE" + fi + done + + # Word Docx + for d in *docx; do + if unzip -p "$d" word/document.xml | grep -iqsP "($REGEX)"; then + echo "Possible match: $d" + echo "$d" >> "$TMP_FILE" + fi + done + +done + +# Cleanup results +if [[ -s "$TMP_FILE" ]]; then + sort -u "$TMP_FILE" >> "$HOME/msword-matches.txt" +fi +rm "$TMP_FILE" + +# Done +if [[ -s "$HOME/msword-matches.txt" ]]; then + echo "Found $(wc -l "$HOME/msword-matches.txt") possible matches" + echo "The results have been saved to $HOME" +fi \ No newline at end of file diff --git a/.linux_items/archlive/airootfs/usr/local/bin/remount-rw b/.linux_items/archlive/airootfs/usr/local/bin/remount-rw new file mode 100644 index 00000000..270f2287 --- /dev/null +++ b/.linux_items/archlive/airootfs/usr/local/bin/remount-rw @@ -0,0 +1,22 @@ +#!/bin/bash +# +## Remount volume read-write + +if ! mount | grep -q "$1"; then + echo "ERROR: Can't remount $1" + sleep 2s + exit 1 +fi + +DEVICE=$(mount | grep "$1" | cut -d' ' -f1) + +echo "Remounting: $DEVICE" +udevil umount $DEVICE +if udevil mount $DEVICE; then + echo "Done" +else + echo "Failed" +fi + +sleep 2s +exit 0 diff --git a/.linux_items/archlive/airootfs/usr/local/bin/wifi.conf b/.linux_items/archlive/airootfs/usr/local/bin/wifi.conf new file mode 100644 index 00000000..0b0d5850 --- /dev/null +++ b/.linux_items/archlive/airootfs/usr/local/bin/wifi.conf @@ -0,0 +1,9 @@ +ctrl_interface=/var/run/wpa_supplicant +eapol_version=1 +ap_scan=1 +fast_reauth=1 +network={ + ssid="SomeWiFi" + psk="Abracadabra" + priority=5 +} diff --git a/.linux_items/archlive/airootfs/usr/share/applications/Hardware Diagnostics.desktop b/.linux_items/archlive/airootfs/usr/share/applications/Hardware Diagnostics.desktop new file mode 100644 index 00000000..bd3e2196 --- /dev/null +++ b/.linux_items/archlive/airootfs/usr/share/applications/Hardware Diagnostics.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Name=Hardware Diagnostics +Comment=Hardware Diagnostics +Exec=urxvt -title "Hardware Diagnostics" -e hw-diags +Icon=utilities-system-monitor +Path=/usr/local/bin +Terminal=false +StartupNotify=false diff --git a/.linux_items/archlive/airootfs/usr/share/applications/Hardware Information.desktop b/.linux_items/archlive/airootfs/usr/share/applications/Hardware Information.desktop new file mode 100644 index 00000000..5481206d --- /dev/null +++ b/.linux_items/archlive/airootfs/usr/share/applications/Hardware Information.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Name=Hardware Information +Comment=Hardware Information +Exec=hardinfo +Icon=hardinfo +Path=/usr/local/bin +Terminal=false +StartupNotify=false diff --git a/.linux_items/archlive/airootfs/usr/share/applications/NetworkTest.desktop b/.linux_items/archlive/airootfs/usr/share/applications/NetworkTest.desktop new file mode 100644 index 00000000..4889b549 --- /dev/null +++ b/.linux_items/archlive/airootfs/usr/share/applications/NetworkTest.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Name=NetworkTest +Comment=Diagnose network connectivity +Exec=urxvt -title "Network Diagnostics" -hold -e hw-diags-network +Icon=network-workgroup +Path=/usr/local/bin +Terminal=false +StartupNotify=false diff --git a/.linux_items/archlive/airootfs/usr/share/applications/SpeedTest.desktop b/.linux_items/archlive/airootfs/usr/share/applications/SpeedTest.desktop new file mode 100644 index 00000000..d59dd602 --- /dev/null +++ b/.linux_items/archlive/airootfs/usr/share/applications/SpeedTest.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Name=SpeedTest +Comment= +Exec=urxvt -titile SpeedTest -hold -e speedtest +Icon=network-workgroup +Path=/usr/local/bin +Terminal=false +StartupNotify=false diff --git a/.linux_items/archlive/extra/arch/arch.conf b/.linux_items/archlive/extra/arch/arch.conf new file mode 100644 index 00000000..06d8c761 --- /dev/null +++ b/.linux_items/archlive/extra/arch/arch.conf @@ -0,0 +1,44 @@ +## WK-Arch Settings ## + +# Backup options +declare -a BACKUP_1=( + "ServerOne" # Server name + "10.0.0.10" # IP + "Backups" # Share name + "backup" # User name + "Abracadabra" # Password +) +declare -a BACKUP_2=( + "ServerTwo" # Server name + "10.0.0.11" # IP + "Backups" # Share name + "backup" # User name + "Abracadabra" # Password +) +declare -a BACKUP_3=( + "" # Server name + "" # IP + "" # Share name + "" # User name + "" # Password +) +declare -a BACKUP_4=( + "" # Server name + "" # IP + "" # Share name + "" # User name + "" # Password +) + +# Hardware testing options +TEST_CPU_LENGTH="7" # Time in minutes to run Prime95 + +# Network options +WIFI_SSID="SomeWiFi" # Use the 2.4Ghz network for better compatability +WIFI_PASS="Abracadabra" + +# Results upload options +SKIP_UPLOAD="False" # Set to "True" to disable all uploads +DIAG_SERVER="10.0.0.10" # Use the IP and not the server name +DIAG_SHARE="/srv/ClientInfo" # Full path to shared folder (relative to the server's root) +DIAG_USER="wkdiag" # User used to connect to the server via SSH diff --git a/.linux_items/archlive/extra/arch/conky.rc b/.linux_items/archlive/extra/arch/conky.rc new file mode 100644 index 00000000..bd492c9b --- /dev/null +++ b/.linux_items/archlive/extra/arch/conky.rc @@ -0,0 +1,165 @@ +# For commands above TEXT check: +# http://conky.sourceforge.net/config_settings.html +# +# For commands available below TEXT check: +# http://conky.sourceforge.net/variables.html + +# Bunsen Labs Conky help threads +# http://crunchbang.org/forums/viewtopic.php?pid=371424#p371424 + +# beta tested by: smacz +# Enjoy! :) + +# pkill -xf "conky -q -c $HOME/.config/conky/BL-Default.conkyrc" & +### Begin Window Settings ##################### +own_window yes +own_window_type normal +own_window_transparent no +own_window_hints undecorated,below,skip_taskbar,skip_pager,sticky +own_window_colour 000000 +own_window_class Conky +#own_window_title Bunsen Labs Default Conky +own_window_title Default Conky + +### ARGB can be used for real transparency +### NOTE that a composite manager is required for real transparency. +### This option will not work as desired (in most cases) in conjunction with +### own_window_type normal +own_window_argb_visual yes # Options: yes or no + +### When ARGB visuals are enabled, this use this to modify the alpha value +### Use: own_window_type normal +### Use: own_window_transparent no +### Valid range is 0-255, where 0 is 0% opacity, and 255 is 100% opacity. +own_window_argb_value 160 + +minimum_size 180 0 ### width | height +maximum_width 180 + +gap_x 20 ### left | right +gap_y 45 ### up | down + +alignment tr +####################### End Window Settings ### +### Font Settings ############################# +# Use Xft (anti-aliased font and stuff) +use_xft yes +xftfont Inconsolata:bold:size=9 +#xftfont Liberation Sans:size=9 + +# Alpha of Xft font. Must be a value at or between 1 and 0 ### +xftalpha 1 +# Force UTF8? requires XFT ### +override_utf8_locale yes + +uppercase no +######################### End Font Settings ### +### Colour Settings ########################### +draw_shades no #yes +default_shade_color 000000 + +draw_outline no # amplifies text if yes +default_outline_color 000000 + +#default_color 656667 # Waldorf original colour +#default_color 7a7a7a # Flame & Bunsen Grey +#default_color 929292 # Labs Grey +default_color C0C0C0 # Silver +color0 B0E0E6 # PowderBlue +color1 778899 # LightSlateGray +color2 D8BFD8 # Thistle +color3 9ACD32 # YellowGreen +color4 FFA07A # LightSalmon +color5 FFDEAD # NavajoWhite +color6 00BFFF # DeepSkyBlue +color7 5F9EA0 # CadetBlue +color8 BDB76B # DarkKhaki +color9 CD5C5C # IndianRed +####################### End Colour Settings ### +### Borders Section ########################### +draw_borders no +# Stippled borders? +stippled_borders 5 +# border margins +border_inner_margin 5 +border_outer_margin 0 +# border width +border_width 2 +# graph borders +draw_graph_borders yes #no +#default_graph_size 15 40 +####################### End Borders Section ### +### Miscellaneous Section ##################### +# Boolean value, if true, Conky will be forked to background when started. +background yes + +# Adds spaces around certain objects to stop them from moving other things +# around, this only helps if you are using a mono font +# Options: right, left or none +use_spacer none + +# Default and Minimum size is 256 - needs more for single commands that +# "call" a lot of text IE: bash scripts +text_buffer_size 6144 + +# Subtract (file system) buffers from used memory? +no_buffers yes + +# change GiB to G and MiB to M +short_units yes + +# Like it says, ot pads the decimals on % values +# doesn't seem to work since v1.7.1 +pad_percents 2 + +# Imlib2 image cache size, in bytes. Default 4MiB Increase this value if you use +# $image lots. Set to 0 to disable the image cache. +imlib_cache_size 0 + +# Use the Xdbe extension? (eliminates flicker) +# It is highly recommended to use own window with this one +# so double buffer won't be so big. +double_buffer yes + +# Maximum size of user text buffer, i.e. layout below TEXT line in config file +# (default is 16384 bytes) +# max_user_text 16384 + +# Desired output unit of all objects displaying a temperature. Parameters are +# either "fahrenheit" or "celsius". The default unit is degree Celsius. +# temperature_unit Fahrenheit + +################# End Miscellaneous Section ### +#### ${font Monospace:bold:size=10}${alignc}${execpi 600 $HOME/.config/conky/scripts/bunsenweather.sh} +update_interval 1 + +TEXT +${color}${alignc}S Y S T E M I N F O +${hr} +Date:${alignr}${time %F} +Time:${alignr}${time %H:%M} +Uptime:${alignr}${uptime_short} + +CPU: ${if_match ${cpu cpu0}<10} ${cpu cpu0}\ +${else}${if_match ${cpu cpu0}<100} ${cpu cpu0}\ +${else}${cpu cpu0}${endif}${endif}% Used${alignr}${freq_g} GHz +${cpugraph cpu0 20,180 ${color} ${color}} +RAM: ${mem} Used${alignr}${memmax} +${memgraph 20,180 ${color} ${color}} +Disk I/O: +${diskiograph 20,180 ${color} ${color}} +Down: ${downspeed}${goto 115}Up:${alignr}${upspeed} + +${alignc}S H O R T C U T K E Y S +${hr} +[Super] + d${alignr}HW Diagnostics +[Super] + f${alignr}File Manager +[Super] + h${alignr}Task Manager +[Super] + i${alignr}HW Information +[Super] + m${alignr}Mount Volumes +[Super] + r${alignr}Run Dialog +[Super] + s${alignr}SMART Check +[Super] + t${alignr}Terminal +[Super] + v${alignr}View Temps +[Super] + w${alignr}Web Browser +[Super] + x${alignr}Logout diff --git a/.linux_items/archlive/extra/arch/wifi.conf b/.linux_items/archlive/extra/arch/wifi.conf new file mode 100644 index 00000000..0b0d5850 --- /dev/null +++ b/.linux_items/archlive/extra/arch/wifi.conf @@ -0,0 +1,9 @@ +ctrl_interface=/var/run/wpa_supplicant +eapol_version=1 +ap_scan=1 +fast_reauth=1 +network={ + ssid="SomeWiFi" + psk="Abracadabra" + priority=5 +} diff --git a/.linux_items/archlive/mkinitcpio.conf b/.linux_items/archlive/mkinitcpio.conf new file mode 100644 index 00000000..2f46da49 --- /dev/null +++ b/.linux_items/archlive/mkinitcpio.conf @@ -0,0 +1,2 @@ +HOOKS="base udev memdisk archiso_shutdown archiso archiso_loop_mnt archiso_pxe_common archiso_pxe_nbd archiso_pxe_http archiso_pxe_nfs archiso_kms block pcmcia filesystems keyboard" +COMPRESSION="xz" diff --git a/.linux_items/archlive/packages.both b/.linux_items/archlive/packages.both new file mode 100644 index 00000000..31fa6dbf --- /dev/null +++ b/.linux_items/archlive/packages.both @@ -0,0 +1,153 @@ +aic94xx-firmware +alsa-utils +antiword +arch-install-scripts +bash-pipes +bc +bluez +bluez-utils +btrfs-progs +cbatticon +chntpw +cmatrix +colordiff +compton +conky +crda +curl +darkhttpd +ddrescue +dhclient +dialog +dmidecode +dmraid +dnsmasq +dnsutils +dos2unix +dosfstools +dunst +e2fsprogs +elinks +ethtool +exfat-utils +f2fs-tools +feh +ffmpeg +firefox +fsarchiver +gnome-keyring +gnu-netcat +gparted +gptfdisk +grub +gsmartcontrol +gtk-theme-arc-git +hardinfo +hdparm +hexedit +hfsprogs +htop +i3-gaps +i3lock-fancy-git +i3status +inxi +ipw2100-fw +ipw2200-fw +irssi +ldns +lftp +libewf +libinput +linux-atm +linux-firmware +lm_sensors +lsscsi +mc +mdadm +mediainfo +mesa-demos +mkvtoolnix-cli +mprime-bin +mpv +mtools +mupdf +ncdu +ndisc6 +network-manager-applet +networkmanager +nfs-utils +nilfs-utils +nmap +ntfs-3g +ntp +oblogout +openbox-patched +openconnect +openssh +openvpn +p7zip +papirus-icon-theme +partclone +parted +partimage +pasystray +pavucontrol +ppp +pptpclient +progsreiserfs +pulseaudio +qemu-guest-agent +reiserfsprogs +rfkill +rng-tools +rofi +rp-pppoe +rsync +rxvt-unicode +sdparm +sg3_utils +smartmontools +speedtest-cli +speedtouch +spice-vdagent +sudo +tcpdump +terminus-font +testdisk-wip +thunar +tint2 +tk +tmux +tree +ttf-font-awesome +ttf-inconsolata +udevil +udisks2 +ufw +unzip +usb_modeswitch +veracrypt +vim +virtualbox-guest-modules-arch +virtualbox-guest-utils +vpnc +wd719x-firmware +wget +wimlib +wireless_tools +wpa_actiond +wvdial +xf86-input-libinput +xf86-video-amdgpu +xf86-video-fbdev +xf86-video-intel +xf86-video-nouveau +xf86-video-vesa +xl2tpd +xorg-server +xorg-xdpyinfo +xorg-xev +xorg-xinit +xorg-xinput +zd1211-firmware +zsh diff --git a/.linux_items/archlive/packages.i686 b/.linux_items/archlive/packages.i686 new file mode 100644 index 00000000..e69de29b diff --git a/.linux_items/archlive/packages.x86_64 b/.linux_items/archlive/packages.x86_64 new file mode 100644 index 00000000..e69de29b diff --git a/.linux_items/archlive/pacman.conf b/.linux_items/archlive/pacman.conf new file mode 100644 index 00000000..06b23f70 --- /dev/null +++ b/.linux_items/archlive/pacman.conf @@ -0,0 +1,96 @@ +# +# /etc/pacman.conf +# +# See the pacman.conf(5) manpage for option and repository directives + +# +# GENERAL OPTIONS +# +[options] +# The following paths are commented out with their default values listed. +# If you wish to use different paths, uncomment and update the paths. +#RootDir = / +#DBPath = /var/lib/pacman/ +#CacheDir = /var/cache/pacman/pkg/ +#LogFile = /var/log/pacman.log +#GPGDir = /etc/pacman.d/gnupg/ +HoldPkg = pacman glibc +#XferCommand = /usr/bin/curl -C - -f %u > %o +#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u +#CleanMethod = KeepInstalled +#UseDelta = 0.7 +Architecture = auto + +# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup +#IgnorePkg = +#IgnoreGroup = + +#NoUpgrade = +#NoExtract = + +# Misc options +#UseSyslog +#Color +#TotalDownload +# We cannot check disk space from within a chroot environment +#CheckSpace +#VerbosePkgLists + +# By default, pacman accepts packages signed by keys that its local keyring +# trusts (see pacman-key and its man page), as well as unsigned packages. +SigLevel = Required DatabaseOptional +LocalFileSigLevel = Optional +#RemoteFileSigLevel = Required + +# NOTE: You must run `pacman-key --init` before first using pacman; the local +# keyring can then be populated with the keys of all official Arch Linux +# packagers with `pacman-key --populate archlinux`. + +# +# REPOSITORIES +# - can be defined here or included from another file +# - pacman will search repositories in the order defined here +# - local/custom mirrors can be added here or in separate files +# - repositories listed first will take precedence when packages +# have identical names, regardless of version number +# - URLs will have $repo replaced by the name of the current repo +# - URLs will have $arch replaced by the name of the architecture +# +# Repository entries are of the format: +# [repo-name] +# Server = ServerName +# Include = IncludePath +# +# The header [repo-name] is crucial - it must be present and +# uncommented to enable the repo. +# + +# The testing repositories are disabled by default. To enable, uncomment the +# repo name header and Include lines. You can add preferred servers immediately +# after the header, and they will be used before the default mirrors. + +[wk-repo] +SigLevel = Optional TrustAll +Server = file:///home/builduser/wk-arch/wk-repo + +#[testing] +#Include = /etc/pacman.d/mirrorlist + +[core] +Include = /etc/pacman.d/mirrorlist + +[extra] +Include = /etc/pacman.d/mirrorlist + +#[community-testing] +#Include = /etc/pacman.d/mirrorlist + +[community] +Include = /etc/pacman.d/mirrorlist + +# An example of a custom package repository. See the pacman manpage for +# tips on creating your own repositories. +#[custom] +#SigLevel = Optional TrustAll +#Server = file:///home/custompkgs + diff --git a/.linux_items/build-wk b/.linux_items/build-wk new file mode 100644 index 00000000..dcdefca8 --- /dev/null +++ b/.linux_items/build-wk @@ -0,0 +1,80 @@ +#!/bin/bash +#/srv/ArchBuilds +# Set Vars +LOG_DIR="/mnt/Build/logs" +OUT_DIR="/mnt/Build/isos" +TMP_DIR="/mnt/Scratch" +DATE="$(date +%F)" +DATETIME="$(date +%F_%H%M)" + +if [[ "$EUID" -eq 0 ]]; then + ## Elevated section ## + # Set permissions + echo "Setting permissions..." + chown root.root archlive -R + chmod 700 archlive/airootfs/etc/skel/.ssh + chmod 600 archlive/airootfs/etc/skel/.ssh/id_rsa + + # Modify build.sh + if ! grep -iq 'customize_iso' archlive/build.sh; then + sed -ir 's!run_once make_iso!# customize_iso\ncp -a ${script_path}/extra/* ${work_dir}/iso/\n\nrun_once make_iso!' archlive/build.sh + fi + + # Build ISO + mkdir $LOG_DIR + mkdir $OUT_DIR + mkdir $TMP_DIR + ./archlive/build.sh -N "wk-arch" -V "$DATE" -L "WK_ARCH" -w "$TMP_DIR" -o "$OUT_DIR" -v | tee -a "$LOG_DIR/$DATETIME.log" + + # Cleanup + echo "Removing temp files..." + rm "$TMP_DIR" -Rf | tee -a "$LOG_DIR/$DATETIME.log" + + echo "Reverting permissions..." + chown builduser.builduser archlive -R +else + ## Non-elevated section ## + # Prep + mkdir wk-repo + pushd wk-repo >/dev/null + BEFORE=$(date "+%F_%H%M%S") + mkdir _done/$BEFORE -p + find . -maxdepth 1 -not -name 'update' -and -not -name '_done' -exec mv -nv "{}" _done/$BEFORE/ \; + rmdir _done/* --ignore-fail-on-non-empty + sleep 1s + AFTER=$(date "+%F_%H%M%S") + + # Install Dependancies + sudo pacman -Syu base-devel libewf attr progsreiserfs --needed --noconfirm + #for p in lha; do + # echo "Installing dependancy: $p" + # curl -LsfO https://aur.archlinux.org/cgit/aur.git/snapshot/$p.tar.gz + # tar xf $p.tar.gz + # pushd $p >/dev/null + # makepkg -si --needed --noconfirm + # popd >/dev/null + # mv -n $p $p.tar.gz _done/$AFTER/ + #done + + # Build custom repo packages + mkdir _done/$AFTER + for p in aic94xx-firmware bash-pipes gtk-theme-arc-git hfsprogs i3-gaps i3lock-fancy-git mprime-bin openbox-patched papirus-icon-theme pasystray testdisk-wip ttf-font-awesome wd719x-firmware wimlib; do + echo "Building: $p" + curl -LsfO https://aur.archlinux.org/cgit/aur.git/snapshot/$p.tar.gz + tar xf $p.tar.gz + pushd $p >/dev/null + makepkg -s --noconfirm + popd >/dev/null + mv -n $p/*xz ./ + mv -n $p $p.tar.gz _done/$AFTER/ + done + + # Build custom repo database + for p in *xz; do + repo-add wk-repo.db.tar.gz $p + done + popd >/dev/null + + # Rerun script as root to start Archiso build process + sudo "$0" +fi