diff --git a/scripts/add-known-networks b/scripts/add-known-networks
old mode 100644
new mode 100755
diff --git a/scripts/ddrescue-tui b/scripts/ddrescue-tui
index ca58d192..f385e893 100755
--- a/scripts/ddrescue-tui
+++ b/scripts/ddrescue-tui
@@ -13,7 +13,7 @@ if [[ "$os_name" != "Linux" ]]; then
exit 1
fi
-source ./launch-in-tmux
+source launch-in-tmux
SESSION_NAME="ddrescue-tui"
WINDOW_NAME="ddrescue TUI"
diff --git a/scripts/hw-diags b/scripts/hw-diags
index 49dcc40b..011105fd 100755
--- a/scripts/hw-diags
+++ b/scripts/hw-diags
@@ -3,7 +3,7 @@
## Wizard Kit: HW Diagnostics Launcher
# TODO: Replace relative paths with absolute
-source ./launch-in-tmux
+source launch-in-tmux
SESSION_NAME="hw-diags"
WINDOW_NAME="Hardware Diagnostics"
diff --git a/scripts/mount-all-volumes b/scripts/mount-all-volumes
index fb703011..1e8b3353 100755
--- a/scripts/mount-all-volumes
+++ b/scripts/mount-all-volumes
@@ -2,6 +2,8 @@
"""Wizard Kit: Mount all volumes"""
# vim: sts=2 sw=2 ts=2
+import sys
+
import wk
@@ -19,6 +21,11 @@ def main():
wk.std.print_info('Results')
wk.std.print_report(report, indent=2)
+ # GUI mode
+ if 'gui' in sys.argv:
+ wk.std.pause('Press Enter to exit...')
+ wk.exe.popen_program(['nohup', 'thunar', '/media'])
+
if __name__ == '__main__':
if wk.std.PLATFORM != 'Linux':
diff --git a/scripts/upload-logs b/scripts/upload-logs
new file mode 100755
index 00000000..c31b6014
--- /dev/null
+++ b/scripts/upload-logs
@@ -0,0 +1,90 @@
+#!/usr/bin/env python3
+# vim: sts=2 sw=2 ts=2
+"""Wizard Kit: Upload Logs"""
+
+import datetime
+import os
+import pathlib
+
+import pytz
+import requests
+
+import wk
+
+
+# STATIC VARIABLES
+LOG_DIR = pathlib.Path('~/Logs').expanduser().resolve()
+PLATFORM = wk.std.PLATFORM.replace('Darwin', 'macOS')
+TIMEZONE = pytz.timezone(wk.cfg.main.LINUX_TIME_ZONE)
+NOW = datetime.datetime.now(tz=TIMEZONE)
+
+
+# Safety check
+if PLATFORM not in ('macOS', 'Linux'):
+ raise OSError(f'This script is not supported under {PLATFORM}')
+
+
+# Functions
+def main():
+ """Upload logs for review."""
+ lines = []
+ try_and_print = wk.std.TryAndPrint()
+
+ # Set log
+ wk.log.update_log_path(dest_name='Upload-Logs', timestamp=True)
+
+ # Instructions
+ wk.std.print_success(f'{wk.cfg.main.KIT_NAME_FULL}: Upload Logs')
+ wk.std.print_standard('')
+ wk.std.print_standard('Please state the reason for the review.')
+ wk.std.print_info(' End note with an empty line.')
+ wk.std.print_standard('')
+
+ # Get reason note
+ while True:
+ text = wk.std.input_text('> ')
+ if not text:
+ lines.append('')
+ break
+ lines.append(text)
+ with open(f'{LOG_DIR}/__reason__.txt', 'a') as _f:
+ _f.write('\n'.join(lines))
+
+ # Compress and upload logs
+ result = try_and_print.run(
+ message='Uploading logs...',
+ function=upload_log_dir,
+ reason='Review',
+ )
+ if not result['Failed']:
+ raise SystemExit(1)
+
+
+def upload_log_dir(reason='Testing'):
+ """Upload compressed log_dir to the crash server."""
+ server = wk.cfg.net.CRASH_SERVER
+ dest = pathlib.Path(f'~/{reason}_{NOW.strftime("%Y-%m-%dT%H%M%S%z")}.txz')
+ dest = dest.expanduser().resolve()
+ data = None
+
+ # Compress LOG_DIR (relative to parent dir)
+ os.chdir(LOG_DIR.parent)
+ cmd = ['tar', 'caf', dest.name, LOG_DIR.name]
+ proc = wk.exe.run_program(cmd, check=False)
+
+ # Upload compressed data
+ url = f'{server["Url"]}/{dest.name}'
+ result = requests.put(
+ url,
+ data=dest.read_bytes(),
+ headers=server['Headers'],
+ auth=(server['User'], server['Pass']),
+ )
+
+ # Check result
+ if not result.ok:
+ raise wk.std.GenericError('Failed to upload logs')
+
+
+if __name__ == '__main__':
+ main()
diff --git a/scripts/wk-exit b/scripts/wk-exit
new file mode 100755
index 00000000..3c100bc9
--- /dev/null
+++ b/scripts/wk-exit
@@ -0,0 +1,31 @@
+#!/bin/bash
+#
+## WizardKit: GUI exit script
+# Inspired by: https://github.com/cramermarius/rofi-menus/blob/master/scripts/powermenu.sh
+
+actions="Restart\nPoweroff\nLogout"
+temp_file="$(mktemp --suffix=.png)"
+
+# Show blurred background
+import -window root "${temp_file}"
+convert "${temp_file}" -blur 0x4 "${temp_file}"
+feh -F "${temp_file}" &
+feh_pid="$!"
+
+# Show menu
+selection="$(echo -e "$actions" | rofi -i -lines 3 -dmenu -p "Power Menu")"
+
+# Done
+kill "${feh_pid}"
+case $selection in
+ Logout)
+ wk-power-command logout
+ ;;
+ Poweroff)
+ wk-power-command poweroff
+ ;;
+ Restart)
+ wk-power-command reboot
+ ;;
+esac
+
diff --git a/scripts/wk/hw/ddrescue.py b/scripts/wk/hw/ddrescue.py
index 55ad30f5..f9b0d023 100644
--- a/scripts/wk/hw/ddrescue.py
+++ b/scripts/wk/hw/ddrescue.py
@@ -305,6 +305,13 @@ class State():
working_dir=self.working_dir,
))
+ def _get_clone_settings_path(self):
+ """get Clone settings file path, returns pathlib.Path obj."""
+ description = self.source.details['model']
+ if not description:
+ description = self.source.path.name
+ return pathlib.Path(f'{self.working_dir}/Clone_{description}.json')
+
def _fix_tmux_layout(self, forced=True):
"""Fix tmux layout based on cfg.ddrescue.TMUX_LAYOUT."""
layout = cfg.ddrescue.TMUX_LAYOUT
@@ -373,9 +380,7 @@ class State():
def _load_settings(self, discard_unused_settings=False):
"""Load settings from previous run, returns dict."""
settings = {}
- settings_file = pathlib.Path(
- f'{self.working_dir}/Clone_{self.source.details["model"]}.json',
- )
+ settings_file = self._get_clone_settings_path()
# Try loading JSON data
if settings_file.exists():
@@ -423,9 +428,7 @@ class State():
def _save_settings(self, settings):
"""Save settings for future runs."""
- settings_file = pathlib.Path(
- f'{self.working_dir}/Clone_{self.source.details["model"]}.json',
- )
+ settings_file = self._get_clone_settings_path()
# Try saving JSON data
try:
@@ -1694,8 +1697,9 @@ def main():
break
# Save results to log
- std.print_standard(' ')
- std.print_report(state.generate_report())
+ LOG.info('')
+ for line in state.generate_report():
+ LOG.info(' %s', std.strip_colors(line))
def mount_raw_image(path):
diff --git a/scripts/wk/os/linux.py b/scripts/wk/os/linux.py
index 253b1dd0..a62013ca 100644
--- a/scripts/wk/os/linux.py
+++ b/scripts/wk/os/linux.py
@@ -138,9 +138,9 @@ def mount_volumes(device_path=None, read_write=False, scan_corestorage=False):
# Attempt to mount volume
if not already_mounted:
- mount(vol.path, read_write=read_write)
- proc = run_program(cmd, check=False)
- if proc.returncode:
+ try:
+ mount(vol.path, read_write=read_write)
+ except RuntimeError:
result += 'Failed to mount'
report.append(std.color_string(result, 'RED'))
continue
diff --git a/setup/build_linux b/setup/build_linux
index 17547a33..27f9a055 100755
--- a/setup/build_linux
+++ b/setup/build_linux
@@ -10,18 +10,18 @@ set -o pipefail
# Prep
DATE="$(date +%F)"
DATETIME="$(date +%F_%H%M)"
-ROOT_DIR="$(realpath $(dirname "$0"))"
-BUILD_DIR="$ROOT_DIR/setup/BUILD_LINUX"
+ROOT_DIR="$(realpath $(dirname "$0")/..)"
+BUILD_DIR="$ROOT_DIR/setup/BUILD"
LIVE_DIR="$BUILD_DIR/live"
LOG_DIR="$BUILD_DIR/logs"
-OUT_DIR="$ROOT_DIR/setup/OUT_LINUX"
+OUT_DIR="$ROOT_DIR/setup/OUT"
REPO_DIR="$BUILD_DIR/repo"
SKEL_DIR="$LIVE_DIR/airootfs/etc/skel"
TEMP_DIR="$BUILD_DIR/temp"
MIRRORLIST_SOURCE='https://www.archlinux.org/mirrorlist/?country=US&protocol=http&protocol=https&ip_version=4&use_mirror_status=on'
-if which nano >/dev/null 2>&1; then
+if command -v nano >/dev/null 2>&1; then
EDITOR=nano
-elif which vim >/dev/null 2>&1; then
+elif command -v vim >/dev/null 2>&1; then
EDITOR=vim
else
EDITOR=vi
@@ -130,7 +130,7 @@ function copy_live_env() {
function run_elevated() {
prog="$1"
shift
- if which sudo >/dev/null 2>&1; then
+ if command -v sudo >/dev/null 2>&1; then
if ! sudo "$prog" $*; then
echo "ERROR: Failed to run '$prog'"
if ask "Retry?"; then
diff --git a/setup/linux/include/airootfs/etc/skel/.aliases b/setup/linux/include/airootfs/etc/skel/.aliases
index b0068be3..88eb4070 100644
--- a/setup/linux/include/airootfs/etc/skel/.aliases
+++ b/setup/linux/include/airootfs/etc/skel/.aliases
@@ -4,6 +4,7 @@ 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 cdtmp='cd $(mktemp -d)'
alias ddrescue='sudo ddrescue --ask --min-read-rate=64k -vvvv'
alias diff='colordiff -ur'
alias du='du -sch --apparent-size'
diff --git a/setup/linux/include_x/airootfs/etc/oblogout.conf b/setup/linux/include_x/airootfs/etc/oblogout.conf
deleted file mode 100644
index ea5606ef..00000000
--- a/setup/linux/include_x/airootfs/etc/oblogout.conf
+++ /dev/null
@@ -1,20 +0,0 @@
-[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 = /usr/local/bin/wk-power-command poweroff
-restart = /usr/local/bin/wk-power-command reboot
-logout = /usr/local/bin/wk-power-command logout
diff --git a/setup/linux/include_x/airootfs/etc/skel/.config/conky/base.conf b/setup/linux/include_x/airootfs/etc/skel/.config/conky/base.conf
new file mode 100644
index 00000000..36ce95bc
--- /dev/null
+++ b/setup/linux/include_x/airootfs/etc/skel/.config/conky/base.conf
@@ -0,0 +1,102 @@
+--[[
+WizardKit: Conky Config
+
+Based on the Bunsen Labs / Crunchbang Conky configs.
+]]
+
+conky.config = {
+ -- Window properties
+ background = true,
+ double_buffer = true,
+ own_window = true,
+ own_window_class = 'Conky',
+ own_window_hints = undecorated,below,skip_taskbar,skip_pager,sticky,
+ own_window_transparent = false,
+ own_window_type = 'desktop',
+ own_window_argb_value = 224,
+ own_window_argb_visual = true,
+
+ -- Borders & Graphs
+ border_inner_margin = 5,
+ border_outer_margin = 0,
+ border_width = 2,
+ draw_borders = false,
+ draw_graph_borders = true,
+ show_graph_range = false,
+ show_graph_scale = false,
+ stippled_borders = 5,
+
+ -- Colors
+ -- default_color 656667 # Waldorf original colour
+ -- default_color 7a7a7a # Flame & Bunsen Grey
+ -- default_color 929292 # Labs Grey
+ 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
+ default_color = 'C0C0C0', -- Silver
+ default_outline_color = 'black',
+ default_shade_color = 'black',
+
+ -- Font
+ draw_outline = false,
+ draw_shades = false,
+ extra_newline = false,
+ font = 'Inconsolata:bold:size=9',
+ uppercase = false,
+ use_xft = true,
+
+ -- Size & Placement
+ alignment = 'top_right',
+ gap_x = 20,
+ gap_y = 24,
+ maximum_width = 180,
+ minimum_height = 5,
+ minimum_width = 180,
+
+ -- Misc
+ cpu_avg_samples = 2,
+ net_avg_samples = 2,
+ no_buffers = true,
+ out_to_console = false,
+ out_to_ncurses = false,
+ out_to_stderr = false,
+ out_to_x = true,
+ update_interval = 1.0,
+ use_spacer = 'none',
+}
+
+conky.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 ${gap_x},${width} ${color} ${color}}
+RAM: ${mem} Used${alignr}${memmax}
+${memgraph ${gap_x},${width} ${color} ${color}}
+
+#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/setup/linux/include_x/airootfs/etc/skel/.config/i3/config b/setup/linux/include_x/airootfs/etc/skel/.config/i3/config
index 170cd333..91e754b8 100644
--- a/setup/linux/include_x/airootfs/etc/skel/.config/i3/config
+++ b/setup/linux/include_x/airootfs/etc/skel/.config/i3/config
@@ -77,7 +77,7 @@ bindsym $ctrl+$alt+i exec "hardinfo"
bindsym $ctrl+$alt+m exec "urxvt -title 'Mount All Volumes' -e mount-all-volumes gui"
bindsym $ctrl+$alt+s exec "urxvt -title 'Hardware Diagnostics' -e hw-diags --quick"
bindsym $ctrl+$alt+t exec "urxvt"
-bindsym $ctrl+$alt+v exec "urxvt -title 'Hardware Sensors' -e watch -c -n1 -t hw-sensors"
+bindsym $ctrl+$alt+v exec "urxvt -title 'Hardware Sensors' -e hw-sensors"
bindsym $ctrl+$alt+w exec "firefox"
bindsym $mod+d exec "urxvt -title 'Hardware Diagnostics' -e hw-diags"
bindsym $mod+f exec "thunar ~"
@@ -85,7 +85,7 @@ bindsym $mod+i exec "hardinfo"
bindsym $mod+m exec "urxvt -title 'Mount All Volumes' -e mount-all-volumes gui"
bindsym $mod+s exec "urxvt -title 'Hardware Diagnostics' -e hw-diags --quick"
bindsym $mod+t exec "urxvt"
-bindsym $mod+v exec "urxvt -title 'Hardware Sensors' -e watch -c -n1 -t hw-sensors"
+bindsym $mod+v exec "urxvt -title 'Hardware Sensors' -e hw-sensors"
bindsym $mod+w exec "firefox"
focus_follows_mouse no
diff --git a/setup/linux/include_x/airootfs/etc/skel/.config/openbox/rc.xml b/setup/linux/include_x/airootfs/etc/skel/.config/openbox/rc.xml
index a61daa47..28d9e8bd 100644
--- a/setup/linux/include_x/airootfs/etc/skel/.config/openbox/rc.xml
+++ b/setup/linux/include_x/airootfs/etc/skel/.config/openbox/rc.xml
@@ -334,7 +334,7 @@
- urxvt -title "Hardware Sensors" -e watch -c -n1 -t hw-sensors
+ urxvt -title "Hardware Sensors" -e hw-sensors
@@ -344,7 +344,7 @@
- oblogout
+ wk-exit
@@ -384,7 +384,7 @@
- urxvt -title "Hardware Sensors" -e watch -c -n1 -t hw-sensors
+ urxvt -title "Hardware Sensors" -e hw-sensors
@@ -394,7 +394,7 @@
- oblogout
+ wk-exit
diff --git a/setup/linux/include_x/airootfs/etc/skel/.conky_start b/setup/linux/include_x/airootfs/etc/skel/.conky_start
deleted file mode 100755
index c7230b17..00000000
--- a/setup/linux/include_x/airootfs/etc/skel/.conky_start
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/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/setup/linux/include_x/airootfs/etc/skel/.conkyrc_base b/setup/linux/include_x/airootfs/etc/skel/.conkyrc_base
deleted file mode 100644
index af09dd8f..00000000
--- a/setup/linux/include_x/airootfs/etc/skel/.conkyrc_base
+++ /dev/null
@@ -1,165 +0,0 @@
-# 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 24 ### 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 ${gap_x},${width} ${color} ${color}}
-RAM: ${mem} Used${alignr}${memmax}
-${memgraph ${gap_x},${width} ${color} ${color}}
-Disk I/O:
-${diskiograph ${gap_x},${width} ${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/setup/linux/include_x/airootfs/etc/skel/.start_desktop_apps b/setup/linux/include_x/airootfs/etc/skel/.start_desktop_apps
index d4a9abe2..d6d2b5ca 100755
--- a/setup/linux/include_x/airootfs/etc/skel/.start_desktop_apps
+++ b/setup/linux/include_x/airootfs/etc/skel/.start_desktop_apps
@@ -3,8 +3,7 @@
## Start desktop apps based on WM
# Start common apps
-feh --bg-fill "$HOME/.wallpaper"
-compton --backend xrender --xrender-sync --xrender-sync-fence &
+picom --backend xrender --xrender-sync --xrender-sync-fence &
sleep 1s
x0vncserver -display :0 -passwordfile $HOME/.vnc/passwd -AlwaysShared &
conky &
@@ -12,7 +11,7 @@ nm-applet &
volumeicon &
# Start WM specific apps
-if fgrep -q "i3" /proc/cmdline; then
+if ! [[ "${I3SOCK:-}" == "" ]]; then
# i3
i3-msg restart
else
diff --git a/setup/linux/include_x/airootfs/etc/skel/.update_conky b/setup/linux/include_x/airootfs/etc/skel/.update_conky
index 0e45e13d..b97a86c1 100755
--- a/setup/linux/include_x/airootfs/etc/skel/.update_conky
+++ b/setup/linux/include_x/airootfs/etc/skel/.update_conky
@@ -1,24 +1,36 @@
#!/bin/bash
+# vim: sts=2 sw=2 ts=2
+
+CONFIG_BASE="${HOME}/.config/conky/base.conf"
+CONFIG_NEW="${HOME}/.config/conky/new.conf"
+CONFIG_REAL="${HOME}/.config/conky/conky.conf"
IF_LIST=($(ip l \
| egrep '^[0-9]+:\s+(eth|en|wl)' \
| sed -r 's/^[0-9]+:\s+(\w+):.*/\1/' \
| sort))
-# Reset conkyrc to default
-rm "${HOME}/.conkyrc"
-cp "${HOME}/.conkyrc_base" "${HOME}/.conkyrc"
+# Build new config from the default
+rm "${CONFIG_NEW}"
+cp "${CONFIG_BASE}" "${CONFIG_NEW}"
-# Add interfaces to conkyrc
+# Add interfaces to conkyrc_new
for i in "${IF_LIST[@]}"; do
if [[ "${i:0:1}" == "e" ]]; then
- sed -i -r "s/#Network/Wired:\${alignr}\${addr $i}\n#Network/" $HOME/.conkyrc
+ sed -i -r "s/#Network/Wired:\${alignr}\${addr $i}\n#Network/" "${CONFIG_NEW}"
else
- sed -i -r "s/#Network/Wireless:\${alignr}\${addr $i}\n#Network/" $HOME/.conkyrc
+ sed -i -r "s/#Network/Wireless:\${alignr}\${addr $i}\n#Network/" "${CONFIG_NEW}"
fi
done
+sed -i -r "s/#Network//" "${CONFIG_NEW}"
-# Remove '#Network' line to prevent duplicating lines if this script is re-run
-sed -i -r "s/#Network//" $HOME/.conkyrc
+# Fix under i3
+if ! [[ "${I3SOCK:-}" == "" ]]; then
+ sed -i -r 's/(own_window_type)(.*)(desktop)/\1\2override/' "${CONKY_NEW}"
+fi
-# vim: sts=2 sw=2 ts=2
+# Replace config if there were changes
+if ! diff -q "${CONFIG_NEW}" "${CONFIG_REAL}" >/dev/null 2>&1; then
+ rm "${CONFIG_REAL}"
+ cp "${CONFIG_NEW}" "${CONFIG_REAL}"
+fi
diff --git a/setup/linux/include_x/airootfs/etc/skel/.update_x b/setup/linux/include_x/airootfs/etc/skel/.update_x
index e8829371..0202750e 100755
--- a/setup/linux/include_x/airootfs/etc/skel/.update_x
+++ b/setup/linux/include_x/airootfs/etc/skel/.update_x
@@ -91,6 +91,11 @@ xset -dpms
xrdb -merge $HOME/.Xresources
echo "Done"
+# Set wallpaper
+echo -n "Setting wallpaper... "
+feh --bg-fill "$HOME/.wallpaper"
+echo "Done"
+
# Start desktop apps for i3
if fgrep -q "i3" /proc/cmdline; then
i3-msg exec $HOME/.start_desktop_apps
diff --git a/setup/linux/include_x/airootfs/etc/skel/.zlogin b/setup/linux/include_x/airootfs/etc/skel/.zlogin
index 1b005d4d..65a23ed1 100644
--- a/setup/linux/include_x/airootfs/etc/skel/.zlogin
+++ b/setup/linux/include_x/airootfs/etc/skel/.zlogin
@@ -5,7 +5,6 @@ if [ "$(fgconsole 2>/dev/null)" -eq "1" ]; then
# Update settings if using i3
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
diff --git a/setup/linux/packages/live_add_x b/setup/linux/packages/live_add_x
index ab7d23b3..02ade591 100644
--- a/setup/linux/packages/live_add_x
+++ b/setup/linux/packages/live_add_x
@@ -24,7 +24,6 @@ mpv
network-manager-applet
noto-fonts
noto-fonts-cjk
-oblogout
openbox-patched
otf-font-awesome-4
papirus-icon-theme