Compare commits
122 Commits
main
..
d2356a5780
| Author | SHA1 | Date | |
|---|---|---|---|
| d2356a5780 | |||
| 862b36d537 | |||
| e3f2d42017 | |||
| 2b40012443 | |||
| 70114784a5 | |||
| 3823aa438a | |||
| 2f3109d113 | |||
| 7e891fac9d | |||
| a94b8cdd72 | |||
| b1ae3a7587 | |||
| 4f20bdfa1b | |||
| c43e589235 | |||
| f3a3ac63ea | |||
| 4f31769802 | |||
| ab5a35a133 | |||
| faeef04ca4 | |||
| 87f5c39a9a | |||
| bd29c74d21 | |||
| eb70ee7a34 | |||
| 816ff990b3 | |||
| cda28a2c4e | |||
| 1ff0e3624f | |||
| f70ebba7e7 | |||
| ca482245cc | |||
| e4d66c9d33 | |||
| 98cc0c08df | |||
| 27d66493e4 | |||
| 6056038b75 | |||
| 728c68443f | |||
| ddd5693145 | |||
| d6295f8ffe | |||
| 014b9ef105 | |||
| c8973bf074 | |||
| 9cc6be2325 | |||
| f6d9521865 | |||
| 3a53fbb0c6 | |||
| 8d74bee2ff | |||
| 4b359afdd0 | |||
| 465ba8e053 | |||
| edb1db9a9a | |||
| cc22d3e9bd | |||
| 3376d6fef1 | |||
| 654e944da4 | |||
| 5cf45dfeaf | |||
| 1bbb64f38e | |||
| 64a9fc4de1 | |||
| 2d95d3be8f | |||
| 3c9c23736e | |||
| 94ef15e9c7 | |||
| f2ee698fee | |||
| d5aa46dcfd | |||
| c62b6f3b59 | |||
| 2813734dda | |||
| 942bc475e0 | |||
| 28be7abaf1 | |||
| 4f96f32c1c | |||
| 248f352e16 | |||
| 163a649dc7 | |||
| c30490aa1d | |||
| c11d9ec25e | |||
| c3fb8f360f | |||
| ed2535b802 | |||
| fb140bea72 | |||
| 33ef2544dc | |||
| 4b8f122376 | |||
| df6dc122f2 | |||
| b765c5cdae | |||
| 3629d24b1b | |||
| 9339b24808 | |||
| 5e8d188871 | |||
| 4fd3e43e0d | |||
| d8bc4a66cf | |||
| 30f9aff49e | |||
| 190b3d921b | |||
| 11632e72d7 | |||
| fa0ea0098e | |||
| 579764ca76 | |||
| 51b3161124 | |||
| 18a1defd65 | |||
| f7ac9cc7e7 | |||
| c40019a72d | |||
| 2d1f720578 | |||
| 119b8aa669 | |||
| 2b7447ba26 | |||
| e0bb2b3c66 | |||
| e70fdaabd5 | |||
| 4522811da1 | |||
| ec22eacbdb | |||
| 4031be218c | |||
| e280bd7a49 | |||
| 2954ce5af9 | |||
| cd7a290d61 | |||
| 89982bae39 | |||
| 9327ed23ac | |||
| 79a2c832b4 | |||
| 6a36811590 | |||
| 2e0dd78f68 | |||
| 861a9c6257 | |||
| 210e409428 | |||
| 44039bbd1b | |||
| a1bbcdc804 | |||
| 22a74506fd | |||
| 5d7318ec32 | |||
| cf676808c9 | |||
| 66ca4dcb98 | |||
| ea1716957b | |||
| 2e560c9f2b | |||
| c21d7415f5 | |||
| e3c61c5bcd | |||
| af3c665a43 | |||
| 8b52914683 | |||
| b3e9f7584f | |||
| 1a2572870f | |||
| d32c913a40 | |||
| b8fa688e52 | |||
| ea3ce8d023 | |||
| dd7325da39 | |||
| 195c315714 | |||
| b91b43b56d | |||
| a64f2253b6 | |||
| 7f21a0fc7b | |||
| 87aca38811 |
@@ -11,6 +11,8 @@
|
|||||||
ntp_server: chrony
|
ntp_server: chrony
|
||||||
dig: dig
|
dig: dig
|
||||||
neofetch: neofetch
|
neofetch: neofetch
|
||||||
|
lightdm: lightdm
|
||||||
|
sddm: sddm
|
||||||
|
|
||||||
- name: General | Facts | Package | Parrot OS Fixes
|
- name: General | Facts | Package | Parrot OS Fixes
|
||||||
set_fact:
|
set_fact:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
# Define file, folder, and other facts per OS.
|
# Define file, folder, and other facts per OS.
|
||||||
|
|
||||||
- name: General | Facts | System | Global
|
- name: General | Facts | System | Global [1/2]
|
||||||
set_fact:
|
set_fact:
|
||||||
lynis_install_dir: /usr/local/src/lynis
|
lynis_install_dir: /usr/local/src/lynis
|
||||||
dwm_install_dir: /usr/local/src/dwm
|
dwm_install_dir: /usr/local/src/dwm
|
||||||
@@ -10,7 +10,14 @@
|
|||||||
x_desktops: /usr/share/xsessions
|
x_desktops: /usr/share/xsessions
|
||||||
git_repo_http: https://{{ git_host }}/{{ git_user }}/{{ git_project }}
|
git_repo_http: https://{{ git_host }}/{{ git_user }}/{{ git_project }}
|
||||||
git_repo_ssh: ssh://git@{{ git_host }}:{{ git_ssh_port }}/{{ git_user }}/{{ git_project }}
|
git_repo_ssh: ssh://git@{{ git_host }}:{{ git_ssh_port }}/{{ git_user }}/{{ git_project }}
|
||||||
|
shared_rc_install_dir: ~/.git-env-shared
|
||||||
|
notify_log: "ansible.notify.log"
|
||||||
|
|
||||||
|
- name: General | Facts | System | Global [2/2]
|
||||||
|
set_fact:
|
||||||
|
shared_rc_bin: "{{ shared_rc_install_dir }}/bin-shared"
|
||||||
|
notify_log_file: /var/log/{{ notify_log }}
|
||||||
|
notify_log_file_wip: /tmp/{{ notify_log }}.wip
|
||||||
|
|
||||||
- name: General | Facts | System | Linux
|
- name: General | Facts | System | Linux
|
||||||
set_fact:
|
set_fact:
|
||||||
|
|||||||
+9
-6
@@ -20,7 +20,7 @@ static const char *colors[][3] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/* tagging */
|
/* tagging */
|
||||||
static const char *tags[] = { "1:", "2:", "3:", "4:", "5:", "6:", "7:", "8:", "9:" };
|
static const char *tags[] = { "1 : ", "2 : ", "3 : ", "4 : ", "5 : ", "6 : ", "7 : ", "8 : ", "9 : " };
|
||||||
|
|
||||||
static const Rule rules[] = {
|
static const Rule rules[] = {
|
||||||
/* xprop(1):
|
/* xprop(1):
|
||||||
@@ -46,7 +46,7 @@ static const Layout layouts[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/* key definitions */
|
/* key definitions */
|
||||||
#define MODKEY Mod1Mask
|
#define MODKEY Mod4Mask
|
||||||
#define TAGKEYS(KEY,TAG) \
|
#define TAGKEYS(KEY,TAG) \
|
||||||
{ MODKEY, KEY, view, {.ui = 1 << TAG} }, \
|
{ MODKEY, KEY, view, {.ui = 1 << TAG} }, \
|
||||||
{ MODKEY|ControlMask, KEY, toggleview, {.ui = 1 << TAG} }, \
|
{ MODKEY|ControlMask, KEY, toggleview, {.ui = 1 << TAG} }, \
|
||||||
@@ -69,13 +69,16 @@ static const char *raisevolcmd[] = {"amixer","-q","sset","Master","1%+",NULL};
|
|||||||
static Key keys[] = {
|
static Key keys[] = {
|
||||||
/* modifier key function argument */
|
/* modifier key function argument */
|
||||||
{ MODKEY, XK_p, spawn, {.v = dmenucmd } },
|
{ MODKEY, XK_p, spawn, {.v = dmenucmd } },
|
||||||
|
{ MODKEY, XK_d, spawn, {.v = dmenucmd } },
|
||||||
|
{ MODKEY, XK_b, spawn, {.v = dmenucmd } },
|
||||||
|
{ MODKEY, XK_space, spawn, {.v = dmenucmd } },
|
||||||
{ MODKEY|ShiftMask, XK_Return, spawn, {.v = termcmd } },
|
{ MODKEY|ShiftMask, XK_Return, spawn, {.v = termcmd } },
|
||||||
{ MODKEY, XK_Return, spawn, {.v = termcmd } },
|
{ MODKEY, XK_Return, spawn, {.v = termcmd } },
|
||||||
{ MODKEY, XK_b, togglebar, {0} },
|
//{ MODKEY, XK_b, togglebar, {0} },
|
||||||
{ MODKEY, XK_j, focusstack, {.i = +1 } },
|
{ MODKEY, XK_j, focusstack, {.i = +1 } },
|
||||||
{ MODKEY, XK_k, focusstack, {.i = -1 } },
|
{ MODKEY, XK_k, focusstack, {.i = -1 } },
|
||||||
{ MODKEY, XK_i, incnmaster, {.i = +1 } },
|
{ MODKEY, XK_i, incnmaster, {.i = +1 } },
|
||||||
{ MODKEY, XK_d, incnmaster, {.i = -1 } },
|
//{ MODKEY, XK_d, incnmaster, {.i = -1 } },
|
||||||
{ MODKEY, XK_h, setmfact, {.f = -0.05} },
|
{ MODKEY, XK_h, setmfact, {.f = -0.05} },
|
||||||
{ MODKEY, XK_l, setmfact, {.f = +0.05} },
|
{ MODKEY, XK_l, setmfact, {.f = +0.05} },
|
||||||
{ MODKEY, XK_Return, zoom, {0} },
|
{ MODKEY, XK_Return, zoom, {0} },
|
||||||
@@ -84,8 +87,8 @@ static Key keys[] = {
|
|||||||
{ MODKEY, XK_t, setlayout, {.v = &layouts[0]} },
|
{ MODKEY, XK_t, setlayout, {.v = &layouts[0]} },
|
||||||
{ MODKEY, XK_f, setlayout, {.v = &layouts[1]} },
|
{ MODKEY, XK_f, setlayout, {.v = &layouts[1]} },
|
||||||
{ MODKEY, XK_m, setlayout, {.v = &layouts[2]} },
|
{ MODKEY, XK_m, setlayout, {.v = &layouts[2]} },
|
||||||
{ MODKEY, XK_space, setlayout, {0} },
|
//{ MODKEY, XK_space, setlayout, {0} },
|
||||||
{ MODKEY|ShiftMask, XK_space, togglefloating, {0} },
|
//{ MODKEY|ShiftMask, XK_space, togglefloating, {0} },
|
||||||
{ MODKEY, XK_0, view, {.ui = ~0 } },
|
{ MODKEY, XK_0, view, {.ui = ~0 } },
|
||||||
{ MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } },
|
{ MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } },
|
||||||
{ MODKEY, XK_comma, focusmon, {.i = -1 } },
|
{ MODKEY, XK_comma, focusmon, {.i = -1 } },
|
||||||
|
|||||||
@@ -12,12 +12,16 @@ if [[ -z "$HOSTNAME" ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
EXTRA="$1"
|
EXTRA="$1"
|
||||||
TAG="System"
|
|
||||||
DATE="`date "+%Y%m%d-%H%M%S"`"
|
DATE="`date "+%Y%m%d-%H%M%S"`"
|
||||||
BACKUP_DIR="/srv/backup"
|
BACKUP_DIR="/srv/backup"
|
||||||
BASENAME="Backup"
|
BASENAME="Backup"
|
||||||
|
|
||||||
|
TAG="System"
|
||||||
BACKUP="$BACKUP_DIR/$BASENAME.$DATE.$HOSTNAME.$TAG.zip"
|
BACKUP="$BACKUP_DIR/$BASENAME.$DATE.$HOSTNAME.$TAG.zip"
|
||||||
|
|
||||||
|
TAG2="Data"
|
||||||
|
BACKUP2="${BACKUP//$TAG/$TAG2}"
|
||||||
|
|
||||||
## Initialization ##
|
## Initialization ##
|
||||||
|
|
||||||
echo "*** Creating Backup Directory ***"
|
echo "*** Creating Backup Directory ***"
|
||||||
@@ -31,15 +35,19 @@ sudo chown -Rv root:root "$BACKUP_DIR"
|
|||||||
echo "*** Removing Old Backups ***"
|
echo "*** Removing Old Backups ***"
|
||||||
cd "$BACKUP_DIR"
|
cd "$BACKUP_DIR"
|
||||||
sudo mv -v "$BASENAME"*"$TAG"* TRASH/
|
sudo mv -v "$BASENAME"*"$TAG"* TRASH/
|
||||||
|
sudo mv -v "$BASENAME"*"$TAG2"* TRASH/
|
||||||
sudo rm -v TRASH/*
|
sudo rm -v TRASH/*
|
||||||
|
|
||||||
## Main
|
## Main
|
||||||
|
|
||||||
|
# System Backup
|
||||||
|
|
||||||
echo "*** Creating backup at '$BACKUP' ***"
|
echo "*** Creating backup at '$BACKUP' ***"
|
||||||
sudo zip -rv "$BACKUP" \
|
sudo zip -rv "$BACKUP" \
|
||||||
/etc /var/{log,mail,spool} /srv /boot \
|
/etc /var/{log,mail,spool} /srv /boot \
|
||||||
/usr/local/etc $EXTRA \
|
/usr/local/etc $EXTRA \
|
||||||
-x "/srv/backup/*" -x "/srv/sftp/*"
|
-x "/srv/backup/*" -x "/srv/sftp/*" \
|
||||||
|
-x "*/.gradle/" -x "*/app/build/*"
|
||||||
status="$?"
|
status="$?"
|
||||||
|
|
||||||
if [[ "$status" != 0 ]]; then
|
if [[ "$status" != 0 ]]; then
|
||||||
@@ -54,4 +62,27 @@ else
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
echo -e "\n\n"
|
||||||
|
sleep 5
|
||||||
|
|
||||||
|
# Data Backup
|
||||||
|
|
||||||
|
echo "*** Creating backup at '$BACKUP2' ***"
|
||||||
|
sudo zip -rv "$BACKUP2" \
|
||||||
|
/root /home /srv/sftp \
|
||||||
|
-x "*/.gradle/" -x "*/app/build/*"
|
||||||
|
status="$?"
|
||||||
|
|
||||||
|
if [[ "$status" != 0 ]]; then
|
||||||
|
echo "*** ERROR: Failed to create '$BACKUP2', file may be incorrect. ***"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -e "$BACKUP2" ]]; then
|
||||||
|
ls -alh "$BACKUP2"
|
||||||
|
echo "*** '$BACKUP2' created successfully! ***"
|
||||||
|
else
|
||||||
|
echo "*** '$BACKUP2' not found! ***"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# 2023-12-04 Hyperling
|
# 2023-12-04 Hyperling
|
||||||
# Lower resolution of audio and convert to mp3. Also
|
# Lower the resolution of audio and convert to mp3.
|
||||||
# Also see: compress-video.sh
|
# Also see: compress-video.sh
|
||||||
|
|
||||||
## Setup ##
|
## Setup ##
|
||||||
@@ -36,7 +36,8 @@ function usage() {
|
|||||||
Compress audio to mp3. Can handle folders and work recursively.
|
Compress audio to mp3. Can handle folders and work recursively.
|
||||||
|
|
||||||
Parameters:
|
Parameters:
|
||||||
-q QUALITY : Integer for the maximum length of either media dimension.
|
-q QUALITY : Integer for audio bitrate to transcode to.
|
||||||
|
Defaults to 256k. No lower than 192k suggested.
|
||||||
-l LOCATION : The specific media or folder which needs compressed.
|
-l LOCATION : The specific media or folder which needs compressed.
|
||||||
-r : Recursively shrink media based on the location passed.
|
-r : Recursively shrink media based on the location passed.
|
||||||
-f : Force the media to be shrunk even if a file already exists for it.
|
-f : Force the media to be shrunk even if a file already exists for it.
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ size=2000
|
|||||||
|
|
||||||
# Strings
|
# Strings
|
||||||
tag="shrunk"
|
tag="shrunk"
|
||||||
|
use_tag="Y"
|
||||||
date_YYYYMMDD="`date "+%Y%m%d"`"
|
date_YYYYMMDD="`date "+%Y%m%d"`"
|
||||||
location="."
|
location="."
|
||||||
search="ls"
|
search="ls"
|
||||||
@@ -28,7 +29,7 @@ function usage() {
|
|||||||
# Parameters:
|
# Parameters:
|
||||||
# 1) The exit status to use.
|
# 1) The exit status to use.
|
||||||
status=$1
|
status=$1
|
||||||
echo "Usage: $PROG [-s SIZE] [-l LOCATION] [-A | [-r] [-f] [-d] [-c]] [-h] [-x] [-t]" >&2
|
echo "Usage: $PROG [-s SIZE] [-l LOCATION] [-A | [-r] [-f] [-d] [-c] [-e | -t] [-h] [-x] [-n]" >&2
|
||||||
cat <<- EOF
|
cat <<- EOF
|
||||||
Compress JPG or PNG image(s). Can handle folders and work recursively.
|
Compress JPG or PNG image(s). Can handle folders and work recursively.
|
||||||
|
|
||||||
@@ -42,17 +43,18 @@ function usage() {
|
|||||||
-F : FORCE the image to be shrunk even if the file is already shrunk.
|
-F : FORCE the image to be shrunk even if the file is already shrunk.
|
||||||
-d : Delete the original image if the compressed image is smaller.
|
-d : Delete the original image if the compressed image is smaller.
|
||||||
-c : Clean the filename of underscores, dashes, 'IMG', etc.
|
-c : Clean the filename of underscores, dashes, 'IMG', etc.
|
||||||
|
-e | -t : Format timestamp to the expanded model.
|
||||||
-A : Resursively Force, Delete, and Clean.
|
-A : Resursively Force, Delete, and Clean.
|
||||||
-h : Display this usage text.
|
-h : Display this usage text.
|
||||||
-x : Enable BASH debugging.
|
-x : Enable BASH debugging.
|
||||||
-t : Format timestamp.
|
-n : No file extension.
|
||||||
EOF
|
EOF
|
||||||
exit $status
|
exit $status
|
||||||
}
|
}
|
||||||
|
|
||||||
## Parameters ##
|
## Parameters ##
|
||||||
|
|
||||||
while getopts ":s:l:rfFdcAhxt" opt; do
|
while getopts ":s:l:rfFdcetAhxn" opt; do
|
||||||
case $opt in
|
case $opt in
|
||||||
s) in_size="$OPTARG" && size="$in_size" ;;
|
s) in_size="$OPTARG" && size="$in_size" ;;
|
||||||
l) location="$OPTARG" ;;
|
l) location="$OPTARG" ;;
|
||||||
@@ -62,10 +64,11 @@ while getopts ":s:l:rfFdcAhxt" opt; do
|
|||||||
d) delete="Y" ;;
|
d) delete="Y" ;;
|
||||||
c) clean="Y" ;;
|
c) clean="Y" ;;
|
||||||
e) expand="Y" ;;
|
e) expand="Y" ;;
|
||||||
A) recurse="Y" && search="find" && force="Y" && delete="Y" && expand="Y" ;;
|
t) expand="Y" ;;
|
||||||
|
A) recurse="Y" && search="find" && force="Y" && delete="Y" ;;
|
||||||
h) usage 0 ;;
|
h) usage 0 ;;
|
||||||
x) set -x ;;
|
x) set -x ;;
|
||||||
t) format_time="Y" ;;
|
n) use_tag="N" ;;
|
||||||
*) echo "ERROR: Option $OPTARG not recognized." >&2 && usage 1 ;;
|
*) echo "ERROR: Option $OPTARG not recognized." >&2 && usage 1 ;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
@@ -114,6 +117,12 @@ $search "$location" | sort | while read image; do
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
new_image="${image//.$extension/}.$tag-$date_YYYYMMDD.$size.$extension"
|
new_image="${image//.$extension/}.$tag-$date_YYYYMMDD.$size.$extension"
|
||||||
|
if [[ "$use_tag" == "N" ]]; then
|
||||||
|
new_image="$image"
|
||||||
|
new_image="${new_image//.$extension/}"
|
||||||
|
new_image="${new_image//.$tag/}"
|
||||||
|
new_image="$new_image.$tag.$extension"
|
||||||
|
fi
|
||||||
|
|
||||||
## Clean Filename ##
|
## Clean Filename ##
|
||||||
# Prevent directory from having its name cleaned too.
|
# Prevent directory from having its name cleaned too.
|
||||||
@@ -132,9 +141,7 @@ $search "$location" | sort | while read image; do
|
|||||||
# Date Data
|
# Date Data
|
||||||
new_image_exp="${TEMP:0:4}-${TEMP:4:2}-${TEMP:6:2}"
|
new_image_exp="${TEMP:0:4}-${TEMP:4:2}-${TEMP:6:2}"
|
||||||
# Time Data
|
# Time Data
|
||||||
if [[ "$format_time" == "Y" ]]; then
|
new_image_exp="${new_image_exp}_${TEMP:8:2}-${TEMP:10:2}-${TEMP:12:2}"
|
||||||
new_image_exp="${new_image_exp}_${TEMP:8:2}-${TEMP:10:2}-${TEMP:12:2}"
|
|
||||||
fi
|
|
||||||
# Remainder Data
|
# Remainder Data
|
||||||
if [[ "${TEMP:14:1}" == "." ]]; then
|
if [[ "${TEMP:14:1}" == "." ]]; then
|
||||||
SEP=""
|
SEP=""
|
||||||
@@ -156,7 +163,7 @@ $search "$location" | sort | while read image; do
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Skip if a compressed image was already created today.
|
# Skip if a compressed image was already created today.
|
||||||
if [[ -e "$new_image" || -e $new_image_clean ]]; then
|
if [[ (-e "$new_image" || -e $new_image_clean) && $use_tag == "Y" ]]; then
|
||||||
echo " SKIP: Image has already been shrunk previously, moving on."
|
echo " SKIP: Image has already been shrunk previously, moving on."
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -0,0 +1,255 @@
|
|||||||
|
# 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 https://i3wm.org/docs/userguide.html for a complete reference!
|
||||||
|
|
||||||
|
set $mod Mod4
|
||||||
|
|
||||||
|
# Font for window titles. Will also be used by the bar unless a different font
|
||||||
|
# is used in the bar {} block below.
|
||||||
|
font pango:monospace 8
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
# Start XDG autostart .desktop files using dex. See also
|
||||||
|
# https://wiki.archlinux.org/index.php/XDG_Autostart
|
||||||
|
exec --no-startup-id dex --autostart --environment i3
|
||||||
|
|
||||||
|
# The combination of xss-lock, nm-applet and pactl is a popular choice, so
|
||||||
|
# they are included here as an example. Modify as you see fit.
|
||||||
|
|
||||||
|
# xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the
|
||||||
|
# screen before suspend. Use loginctl lock-session to lock your screen.
|
||||||
|
exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork
|
||||||
|
|
||||||
|
# NetworkManager is the most popular way to manage wireless networks on Linux,
|
||||||
|
# and nm-applet is a desktop environment-independent system tray GUI for it.
|
||||||
|
exec --no-startup-id nm-applet
|
||||||
|
|
||||||
|
# Use pactl to adjust volume in PulseAudio.
|
||||||
|
set $refresh_i3status killall -SIGUSR1 i3status
|
||||||
|
#bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status
|
||||||
|
#bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status
|
||||||
|
#bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status
|
||||||
|
#bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status
|
||||||
|
|
||||||
|
# Use Mouse+$mod to drag floating windows to their wanted position
|
||||||
|
floating_modifier $mod
|
||||||
|
|
||||||
|
# move tiling windows via drag & drop by left-clicking into the title bar,
|
||||||
|
# or left-clicking anywhere into the window while holding the floating modifier.
|
||||||
|
tiling_drag modifier titlebar
|
||||||
|
|
||||||
|
# start a terminal
|
||||||
|
bindsym $mod+Return exec st
|
||||||
|
# Used to be i3-sensible-terminal, but was calling gnome-terminal :c
|
||||||
|
|
||||||
|
# kill focused window
|
||||||
|
#bindsym $mod+Shift+q kill
|
||||||
|
bindsym $mod+q kill
|
||||||
|
|
||||||
|
# start dmenu (a program launcher)
|
||||||
|
bindsym $mod+d exec --no-startup-id dmenu_run
|
||||||
|
bindsym $mod+b exec --no-startup-id dmenu_run
|
||||||
|
bindsym $mod+space exec --no-startup-id dmenu_run
|
||||||
|
# A more modern dmenu replacement is rofi:
|
||||||
|
# bindcode $mod+40 exec "rofi -modi drun,run -show drun"
|
||||||
|
# There also is i3-dmenu-desktop which only displays applications shipping a
|
||||||
|
# .desktop file. It is a wrapper around dmenu, so you need that installed.
|
||||||
|
# bindcode $mod+40 exec --no-startup-id i3-dmenu-desktop
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
# split in horizontal orientation
|
||||||
|
bindsym $mod+h split h
|
||||||
|
|
||||||
|
# split in vertical orientation
|
||||||
|
bindsym $mod+v split v
|
||||||
|
|
||||||
|
# enter fullscreen mode for the focused container
|
||||||
|
bindsym $mod+f fullscreen toggle
|
||||||
|
|
||||||
|
# change container layout (stacked, tabbed, toggle split)
|
||||||
|
bindsym $mod+s layout stacking
|
||||||
|
bindsym $mod+w layout tabbed
|
||||||
|
bindsym $mod+e layout toggle split
|
||||||
|
|
||||||
|
# toggle tiling / floating
|
||||||
|
bindsym $mod+Shift+space floating toggle
|
||||||
|
|
||||||
|
# change focus between tiling / floating windows
|
||||||
|
#bindsym $mod+space focus mode_toggle
|
||||||
|
|
||||||
|
# focus the parent container
|
||||||
|
bindsym $mod+a focus parent
|
||||||
|
|
||||||
|
# focus the child container
|
||||||
|
#bindsym $mod+d focus child
|
||||||
|
|
||||||
|
## Brightness ##
|
||||||
|
# Use the bracket keys to change the brightness.
|
||||||
|
# light requires sudo privileges unless video group and udev are configured.
|
||||||
|
bindsym $mod+bracketleft exec --no-startup-id "light -U 5; notify-send 'Brightness Down' $(light -G)"
|
||||||
|
bindsym $mod+bracketright exec --no-startup-id "light -A 5; notify-send 'Brightness Up' $(light -G)"
|
||||||
|
bindsym shift+$mod+bracketleft exec --no-startup-id "light -U 25; notify-send 'Brightness Down' $(light -G)"
|
||||||
|
bindsym shift+$mod+bracketright exec --no-startup-id "light -A 25; notify-send 'Brightness Up' $(light -G)"
|
||||||
|
|
||||||
|
# Also get the actual brightness keys to work!!
|
||||||
|
bindsym XF86MonBrightnessUp exec --no-startup-id "light -A 5; notify-send 'Brightness Up' $(light -G)"
|
||||||
|
bindsym XF86MonBrightnessDown exec --no-startup-id "light -U 5; notify-send 'Brightness Down' $(light -G)"
|
||||||
|
bindsym shift+XF86MonBrightnessUp exec --no-startup-id "light -A 25; notify-send 'Brightness Up' $(light -G)"
|
||||||
|
bindsym shift+XF86MonBrightnessDown exec --no-startup-id "light -U 25; notify-send 'Brightness Down' $(light -G)"
|
||||||
|
|
||||||
|
## Volume ##
|
||||||
|
# The volume function is from https://git.hyperling.com/me/env-ansible
|
||||||
|
# TBD: Why is the displayed volume not showing up like `light -G` above?
|
||||||
|
|
||||||
|
# Use the comma and period keys to change volume.
|
||||||
|
bindsym $mod+comma exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume -5 && notify-send "Volume Down" $(vol-d)'
|
||||||
|
bindsym $mod+period exec --no-startup-id bash -c "source /usr/local/bin/volume.function && volume +5 && notify-send 'Volume Up' $(vol-d)"
|
||||||
|
bindsym shift+$mod+comma exec --no-startup-id bash -c "source /usr/local/bin/volume.function && volume -25 && notify-send 'Volume Down' $(vol-d)"
|
||||||
|
bindsym shift+$mod+period exec --no-startup-id bash -c "source /usr/local/bin/volume.function && volume +25 && notify-send 'Volume Up' $(vol-d)"
|
||||||
|
|
||||||
|
# Actual volume keys.
|
||||||
|
bindsym XF86AudioMute exec --no-startup-id bash -c "source /usr/local/bin/volume.function && volume mute && notify-send 'Volume Muted' $(vol-d)"
|
||||||
|
bindsym XF86AudioRaiseVolume exec --no-startup-id bash -c "source /usr/local/bin/volume.function && volume +5 && notify-send 'Volume Up' $(vol-d)"
|
||||||
|
bindsym XF86AudioLowerVolume exec --no-startup-id bash -c "source /usr/local/bin/volume.function && volume -5 && notify-send 'Volume Down' $(vol-d)"
|
||||||
|
bindsym shift+XF86AudioRaiseVolume exec --no-startup-id bash -c "source /usr/local/bin/volume.function && volume +25 && notify-send 'Volume Up' $(vol-d)"
|
||||||
|
bindsym shift+XF86AudioLowerVolume exec --no-startup-id bash -c "source /usr/local/bin/volume.function && volume -25 && notify-send 'Volume Down' $(vol-d)"
|
||||||
|
|
||||||
|
|
||||||
|
# Define names for default workspaces for which we configure key bindings later on.
|
||||||
|
# We use variables to avoid repeating the names in multiple places.
|
||||||
|
# Command Line
|
||||||
|
set $ws1 "1 - CMD"
|
||||||
|
# Web Surfing
|
||||||
|
set $ws2 "2 - WEB"
|
||||||
|
# Programming
|
||||||
|
set $ws3 "3 - PRG"
|
||||||
|
# Flutter
|
||||||
|
set $ws4 "4 - FLT"
|
||||||
|
# Chats
|
||||||
|
set $ws5 "5 - CHT"
|
||||||
|
# Editors
|
||||||
|
set $ws6 "6 - EDT"
|
||||||
|
# Entertainment
|
||||||
|
set $ws7 "7 - ENT"
|
||||||
|
# Music
|
||||||
|
set $ws8 "8 - MUS"
|
||||||
|
# Videos
|
||||||
|
set $ws9 "9 - VID"
|
||||||
|
# VPNs
|
||||||
|
set $ws10 "10 - VPN"
|
||||||
|
|
||||||
|
# switch to workspace
|
||||||
|
bindsym $mod+1 workspace number $ws1
|
||||||
|
bindsym $mod+2 workspace number $ws2
|
||||||
|
bindsym $mod+3 workspace number $ws3
|
||||||
|
bindsym $mod+4 workspace number $ws4
|
||||||
|
bindsym $mod+5 workspace number $ws5
|
||||||
|
bindsym $mod+6 workspace number $ws6
|
||||||
|
bindsym $mod+7 workspace number $ws7
|
||||||
|
bindsym $mod+8 workspace number $ws8
|
||||||
|
bindsym $mod+9 workspace number $ws9
|
||||||
|
bindsym $mod+0 workspace number $ws10
|
||||||
|
|
||||||
|
# move focused container to workspace
|
||||||
|
bindsym $mod+Shift+1 move container to workspace number $ws1
|
||||||
|
bindsym $mod+Shift+2 move container to workspace number $ws2
|
||||||
|
bindsym $mod+Shift+3 move container to workspace number $ws3
|
||||||
|
bindsym $mod+Shift+4 move container to workspace number $ws4
|
||||||
|
bindsym $mod+Shift+5 move container to workspace number $ws5
|
||||||
|
bindsym $mod+Shift+6 move container to workspace number $ws6
|
||||||
|
bindsym $mod+Shift+7 move container to workspace number $ws7
|
||||||
|
bindsym $mod+Shift+8 move container to workspace number $ws8
|
||||||
|
bindsym $mod+Shift+9 move container to workspace number $ws9
|
||||||
|
bindsym $mod+Shift+0 move container to workspace number $ws10
|
||||||
|
|
||||||
|
## Keep certain programs in certain tabs. ##
|
||||||
|
assign [class="(?i)Navigator"] $ws2
|
||||||
|
assign [class="(?i).*Firefox.*"] $ws2
|
||||||
|
|
||||||
|
assign [class="(?i).*Codium.*"] $ws3
|
||||||
|
|
||||||
|
assign [class="(?i).*Code.*"] $ws4
|
||||||
|
|
||||||
|
assign [class="(?i).*VPN.*"] $ws10
|
||||||
|
assign [class="(?i).*Mullvad.*"] $ws10
|
||||||
|
|
||||||
|
# reload the configuration file
|
||||||
|
bindsym $mod+Shift+c reload
|
||||||
|
|
||||||
|
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
|
||||||
|
bindsym $mod+Shift+r restart
|
||||||
|
|
||||||
|
# exit i3 (logs you out of your X session)
|
||||||
|
bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'"
|
||||||
|
bindsym $mod+Shift+q exit
|
||||||
|
|
||||||
|
# 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 or $mod+r
|
||||||
|
bindsym Return mode "default"
|
||||||
|
bindsym Escape mode "default"
|
||||||
|
bindsym $mod+r mode "default"
|
||||||
|
}
|
||||||
|
|
||||||
|
bindsym $mod+r mode "resize"
|
||||||
|
|
||||||
|
# Start i3bar to display a workspace bar (plus the system information i3status
|
||||||
|
# finds out, if available)
|
||||||
|
bar {
|
||||||
|
status_command i3status
|
||||||
|
}
|
||||||
|
|
||||||
|
## Startup Applications ##
|
||||||
|
|
||||||
|
exec st
|
||||||
|
#exec firefox-flatpak
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,22 @@
|
|||||||
|
# title
|
||||||
|
|
||||||
|
NAME
|
||||||
|
|
||||||
|
# desc
|
||||||
|
|
||||||
|
CONTENT
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Recorded and edited YYYY-MM-DD.
|
||||||
|
Recorded YYYY-MM-DD, edited YYYY-MM-DD.
|
||||||
|
|
||||||
|
[blog.hyperling.com/TBD](https://blog.hyperling.com/TBD)
|
||||||
|
|
||||||
|
# tags
|
||||||
|
|
||||||
|
-
|
||||||
|
,
|
||||||
|
,
|
||||||
|
,
|
||||||
|
,
|
||||||
@@ -21,6 +21,19 @@
|
|||||||
- include_tasks: facts/general/user.yml
|
- include_tasks: facts/general/user.yml
|
||||||
|
|
||||||
|
|
||||||
|
####### Start #######
|
||||||
|
|
||||||
|
- name: Main | Start
|
||||||
|
block:
|
||||||
|
|
||||||
|
- name: Main | Start | Notify | Touch File
|
||||||
|
include_tasks: tasks/general/acct_mgmt/notify.yml
|
||||||
|
|
||||||
|
- name: Main | Start | Notify | Add Message
|
||||||
|
shell : echo "'Ansible' 'Provisioning started @ `date`'" >> "{{ notify_log_file }}"
|
||||||
|
|
||||||
|
when: workstation == true
|
||||||
|
|
||||||
####### NixOS #######
|
####### NixOS #######
|
||||||
# Install the .nix files and do a little data setup.
|
# Install the .nix files and do a little data setup.
|
||||||
|
|
||||||
@@ -111,13 +124,21 @@
|
|||||||
- include_tasks: tasks/workstation/freebsd/software/gpu.yml
|
- include_tasks: tasks/workstation/freebsd/software/gpu.yml
|
||||||
when: ansible_system == "FreeBSD" and bsd_gpu == true
|
when: ansible_system == "FreeBSD" and bsd_gpu == true
|
||||||
|
|
||||||
|
# Window Managers without true Desktop Environments #
|
||||||
|
- include_tasks: tasks/workstation/shared/software/dwm.yml
|
||||||
|
|
||||||
|
- include_tasks: tasks/workstation/linux/software/i3.yml
|
||||||
|
|
||||||
|
# Polished Desktop Environments #
|
||||||
- include_tasks: tasks/workstation/freebsd/software/gnome.yml
|
- include_tasks: tasks/workstation/freebsd/software/gnome.yml
|
||||||
when: ansible_system == "FreeBSD"
|
when: ansible_system == "FreeBSD"
|
||||||
|
|
||||||
- include_tasks: tasks/workstation/linux/software/gnome.yml
|
- include_tasks: tasks/workstation/linux/software/gnome.yml
|
||||||
when: ansible_system == "Linux"
|
when: ansible_system == "Linux"
|
||||||
|
|
||||||
- include_tasks: tasks/workstation/shared/software/dwm.yml
|
- include_tasks: tasks/workstation/linux/software/cinnamon.yml
|
||||||
|
|
||||||
|
- include_tasks: tasks/workstation/linux/software/lxqt.yml
|
||||||
|
|
||||||
# Software Tasks #
|
# Software Tasks #
|
||||||
- include_tasks: tasks/workstation/linux/software/packages.yml
|
- include_tasks: tasks/workstation/linux/software/packages.yml
|
||||||
@@ -158,6 +179,10 @@
|
|||||||
|
|
||||||
- include_tasks: tasks/workstation/shared/settings/services.yml
|
- include_tasks: tasks/workstation/shared/settings/services.yml
|
||||||
|
|
||||||
|
- include_tasks: tasks/workstation/linux/software/tlp.yml
|
||||||
|
|
||||||
|
- include_tasks: tasks/workstation/shared/settings/templates.yml
|
||||||
|
|
||||||
# Final Tasks (SLOW) #
|
# Final Tasks (SLOW) #
|
||||||
- include_tasks: tasks/workstation/linux/software/flutter.yml
|
- include_tasks: tasks/workstation/linux/software/flutter.yml
|
||||||
when: ansible_system == "Linux"
|
when: ansible_system == "Linux"
|
||||||
@@ -246,8 +271,25 @@
|
|||||||
####### Reporting #######
|
####### Reporting #######
|
||||||
# Provide information for analysis.
|
# Provide information for analysis.
|
||||||
|
|
||||||
- include_tasks: tasks/general/software/telegraf.yml
|
- name: Main | Reporting
|
||||||
|
block:
|
||||||
|
|
||||||
- include_tasks: tasks/general/tests/services.yml
|
- include_tasks: tasks/general/software/telegraf.yml
|
||||||
- include_tasks: tasks/general/tests/lynis.yml
|
|
||||||
- include_tasks: tasks/general/tests/nmap.yml
|
- include_tasks: tasks/general/tests/services.yml
|
||||||
|
- include_tasks: tasks/general/tests/lynis.yml
|
||||||
|
- include_tasks: tasks/general/tests/nmap.yml
|
||||||
|
|
||||||
|
|
||||||
|
####### Finish #######
|
||||||
|
|
||||||
|
- name: Main | Finish
|
||||||
|
block:
|
||||||
|
|
||||||
|
- name: Main | Finish | Notify | Touch File
|
||||||
|
include_tasks: tasks/general/acct_mgmt/notify.yml
|
||||||
|
|
||||||
|
- name: Main | Finish | Notify | Add Message
|
||||||
|
shell : echo "'Ansible' 'Provisioning finished @ `date`'" >> "{{ notify_log_file }}"
|
||||||
|
|
||||||
|
when: workstation == true
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ function usage {
|
|||||||
-g : Enable the General config with test contents.
|
-g : Enable the General config with test contents.
|
||||||
-w : Enable the Workstation config with test contents.
|
-w : Enable the Workstation config with test contents.
|
||||||
-s : Enable the Server config with test contents.
|
-s : Enable the Server config with test contents.
|
||||||
-f : Display this system's facts.
|
-f : Display this system's facts.
|
||||||
-h : Display this help text.
|
-h : Display this help text.
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
@@ -130,6 +130,7 @@ echo "Installed!"
|
|||||||
if [[ "$show_facts" == "Y" ]]; then
|
if [[ "$show_facts" == "Y" ]]; then
|
||||||
echo "Showing Ansible Facts"
|
echo "Showing Ansible Facts"
|
||||||
ansible localhost -m setup --connection=local
|
ansible localhost -m setup --connection=local
|
||||||
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#echo "Adding Ansible Collections..."
|
#echo "Adding Ansible Collections..."
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
# Create and manage permissions for notify log.
|
||||||
|
|
||||||
|
- name: General | Notify | Update File
|
||||||
|
shell: "{{ item }}"
|
||||||
|
loop:
|
||||||
|
- touch "{{ notify_log_file }}"
|
||||||
|
- chmod 777 "{{ notify_log_file }}"
|
||||||
@@ -101,22 +101,48 @@
|
|||||||
; Slows down the rate of services such as telegraf and cron.
|
; Slows down the rate of services such as telegraf and cron.
|
||||||
; Default: false
|
; Default: false
|
||||||
;
|
;
|
||||||
;;;;;;;;;;;;;;;;;;;; Server Shortcut ;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;; Server Shortcuts ;;;;;;;;;;;;;;;;;;;;
|
||||||
;
|
;
|
||||||
; For typing `prod` and getting straight to a server, like in env-termux.
|
; For typing `prod` and getting straight to a server, like in env-termux.
|
||||||
;
|
;
|
||||||
; prod_host : Branch to use on this machine.
|
; Imagine the command:
|
||||||
|
; `ssh prod_user@prod_host:prod_port`
|
||||||
|
;
|
||||||
|
; prod_host : Hostname for the production server.
|
||||||
; Example: myserver.com, mywebhost.net
|
; Example: myserver.com, mywebhost.net
|
||||||
; Default: hyperling.com
|
; Default: hyperling.com
|
||||||
;
|
;
|
||||||
; prod_port : Provide the git host that the machine should poll.
|
; prod_port : Port for the production server.
|
||||||
; Example: 22, 222, 2222
|
; Example: 22, 222, 2222
|
||||||
; Default: 22
|
; Default: 22
|
||||||
;
|
;
|
||||||
; prod_user : Port of the server host to use for SSH requests.
|
; prod_user : Username for accessing the production server.
|
||||||
; Example: jim, bob, jeff, anne
|
; Example: jim, bob, jeff, anne
|
||||||
; Default: user
|
; Default: user
|
||||||
;
|
;
|
||||||
|
; For pushing MASTER directories to an SFTP server with `send-master`.
|
||||||
|
;
|
||||||
|
; Imagine the command:
|
||||||
|
; `rsync -auPhz --delete -e 'ssh -p prod_data_port' ./mydata-MASTER/ \
|
||||||
|
; prod_data_user@prod_data_host:/prod_data_dir/mydata-clone
|
||||||
|
; `
|
||||||
|
;
|
||||||
|
; prod_data_host : Branch to use on this machine.
|
||||||
|
; Example: sftp.myserver.com, sftp.mywebhost.net
|
||||||
|
; Default: hyperling.com
|
||||||
|
;
|
||||||
|
; prod_data_port : Provide the git host that the machine should poll.
|
||||||
|
; Example: 22, 222, 2222
|
||||||
|
; Default: 22
|
||||||
|
;
|
||||||
|
; prod_data_user : Port of the server host to use for SSH requests.
|
||||||
|
; Example: jim, bob, jeff, anne
|
||||||
|
; Default: user
|
||||||
|
;
|
||||||
|
; prod_data_dir : Port of the server host to use for SSH requests.
|
||||||
|
; Example: /srv/sftp/
|
||||||
|
; Default: /srv/sftp/
|
||||||
|
;
|
||||||
[global]
|
[global]
|
||||||
marker: '; {mark} MANAGED BY ANSIBLE | Generic Config'
|
marker: '; {mark} MANAGED BY ANSIBLE | Generic Config'
|
||||||
state: present
|
state: present
|
||||||
@@ -143,6 +169,15 @@
|
|||||||
prod_host: "{{ lookup('ini', 'prod_host file={{gen_file}} default=hyperling.com') }}"
|
prod_host: "{{ lookup('ini', 'prod_host file={{gen_file}} default=hyperling.com') }}"
|
||||||
prod_port: "{{ lookup('ini', 'prod_port file={{gen_file}} default=22') }}"
|
prod_port: "{{ lookup('ini', 'prod_port file={{gen_file}} default=22') }}"
|
||||||
prod_user: "{{ lookup('ini', 'prod_user file={{gen_file}} default=user') }}"
|
prod_user: "{{ lookup('ini', 'prod_user file={{gen_file}} default=user') }}"
|
||||||
|
prod_data_host: "{{ lookup('ini', 'prod_data_host file={{gen_file}} default=hyperling.com') }}"
|
||||||
|
prod_data_port: "{{ lookup('ini', 'prod_data_port file={{gen_file}} default=22') }}"
|
||||||
|
prod_data_user: "{{ lookup('ini', 'prod_data_user file={{gen_file}} default=user') }}"
|
||||||
|
prod_data_dir: "{{ lookup('ini', 'prod_data_dir file={{gen_file}} default=/srv/sftp') }}"
|
||||||
|
|
||||||
|
- name: General | Account Management | Provisioning Configuration | General | Boolean Check | Swap Block
|
||||||
|
set_fact:
|
||||||
|
swap_block: "{{ swap_block | bool }}"
|
||||||
|
when: swap_block in ("true", "false")
|
||||||
|
|
||||||
- name: General | Account Management | Provisioning Configuration | General | List
|
- name: General | Account Management | Provisioning Configuration | General | List
|
||||||
set_fact:
|
set_fact:
|
||||||
@@ -166,6 +201,10 @@
|
|||||||
- { 'prod_host': "{{ prod_host }}" }
|
- { 'prod_host': "{{ prod_host }}" }
|
||||||
- { 'prod_port': "{{ prod_port }}" }
|
- { 'prod_port': "{{ prod_port }}" }
|
||||||
- { 'prod_user': "{{ prod_user }}" }
|
- { 'prod_user': "{{ prod_user }}" }
|
||||||
|
- { 'prod_data_host': "{{ prod_data_host }}" }
|
||||||
|
- { 'prod_data_port': "{{ prod_data_port }}" }
|
||||||
|
- { 'prod_data_user': "{{ prod_data_user }}" }
|
||||||
|
- { 'prod_data_dir': "{{ prod_data_dir }}" }
|
||||||
|
|
||||||
|
|
||||||
## Workstation ##
|
## Workstation ##
|
||||||
@@ -223,6 +262,11 @@
|
|||||||
mobile: "{{ lookup('ini', 'mobile file={{wrk_file}} default=false') | bool }}"
|
mobile: "{{ lookup('ini', 'mobile file={{wrk_file}} default=false') | bool }}"
|
||||||
redmode: "{{ lookup('ini', 'redmode file={{wrk_file}} default=true' ) | bool }}"
|
redmode: "{{ lookup('ini', 'redmode file={{wrk_file}} default=true' ) | bool }}"
|
||||||
|
|
||||||
|
- name: General | Account Management | Provisioning Configuration | Workstation | Boolean Check | Editing
|
||||||
|
set_fact:
|
||||||
|
editing: "{{ editing | bool }}"
|
||||||
|
when: editing in ("true", "false")
|
||||||
|
|
||||||
- name: General | Account Management | Provisioning Configuration | Workstation | List
|
- name: General | Account Management | Provisioning Configuration | Workstation | List
|
||||||
set_fact:
|
set_fact:
|
||||||
provision_variables: "{{ provision_variables | combine(item) }}"
|
provision_variables: "{{ provision_variables | combine(item) }}"
|
||||||
|
|||||||
@@ -127,7 +127,7 @@
|
|||||||
alias_cp: alias cp='cp -v'
|
alias_cp: alias cp='cp -v'
|
||||||
alias_mv: alias mv='mv -v'
|
alias_mv: alias mv='mv -v'
|
||||||
alias_rm: alias rm='echo "Use mv ~/TRASH/ instead!"'
|
alias_rm: alias rm='echo "Use mv ~/TRASH/ instead!"'
|
||||||
export_path_additions: export PATH="~/bin:"{{ global_bin }}":$PATH"
|
export_path_additions: export PATH="~/bin:"{{ global_bin }}":"{{ shared_rc_bin }}":$PATH"
|
||||||
function_wttr: |
|
function_wttr: |
|
||||||
function weather() {
|
function weather() {
|
||||||
# 20210301 - Someone showed me an awesome weather API! Had to implement it!
|
# 20210301 - Someone showed me an awesome weather API! Had to implement it!
|
||||||
@@ -145,7 +145,39 @@
|
|||||||
fi
|
fi
|
||||||
curl "https://wttr.in/${1//\ /+}"
|
curl "https://wttr.in/${1//\ /+}"
|
||||||
}
|
}
|
||||||
export_PS1: export PS1='[\u@\h \w]\$ '
|
export_PS1: |
|
||||||
|
## Prompts ##
|
||||||
|
|
||||||
|
# Old Trusty
|
||||||
|
#export PS1='[\u@\h \w]\$ '
|
||||||
|
|
||||||
|
# 20251201 - Add time.
|
||||||
|
#export PS1='[\t \u@\h \w]\$ '
|
||||||
|
|
||||||
|
# 20251201 - Add colors.
|
||||||
|
# This helps to determine the color palette numbers:
|
||||||
|
# https://robotmoon.com/bash-prompt-generator/
|
||||||
|
# Colors have been moved to env-shared project's .rc_shared file.
|
||||||
|
|
||||||
|
if [[ "$USER" == "root" || $UID == 0 ]]; then
|
||||||
|
CLR_BRACKETS=$BOLD$YELLOW
|
||||||
|
CLR_TIME=$BOLD$ORANGE
|
||||||
|
CLR_USER=$BOLD$SCARLET
|
||||||
|
CLR_DIR=$BOLD$RED
|
||||||
|
CLR_PROMPT=$BOLD$GRAY
|
||||||
|
else
|
||||||
|
CLR_BRACKETS=$RESET
|
||||||
|
CLR_TIME=$BOLD$PURPLE
|
||||||
|
CLR_USER=$BOLD$ORANGE
|
||||||
|
CLR_DIR=$BOLD$GREEN
|
||||||
|
CLR_PROMPT=$RESET
|
||||||
|
fi
|
||||||
|
|
||||||
|
export PS1='\[$CLR_BRACKETS\][\[$CLR_TIME\]\t \[$CLR_USER\]\u@\h \[$CLR_DIR\]\w\[$CLR_BRACKETS\]]\[$CLR_PROMPT\]\$ \[$RESET\]'
|
||||||
|
|
||||||
|
export PS2='\[$CLR_BRACKETS\](\[$CLR_TIME\]>\[$CLR_USER\]^\[$CLR_DIR\].\[$CLR_USER\]^\[$CLR_BRACKETS\])\[$CLR_TIME\]> \[$RESET\]'
|
||||||
|
|
||||||
|
## End Prompts ##
|
||||||
alias_remount: |
|
alias_remount: |
|
||||||
alias remount='
|
alias remount='
|
||||||
sudo umount /mnt/*
|
sudo umount /mnt/*
|
||||||
@@ -259,6 +291,7 @@
|
|||||||
}
|
}
|
||||||
function goodbye {
|
function goodbye {
|
||||||
update -yg
|
update -yg
|
||||||
|
bye
|
||||||
}
|
}
|
||||||
metasploit_aliases: |
|
metasploit_aliases: |
|
||||||
alias metasploit="msfconsole"
|
alias metasploit="msfconsole"
|
||||||
@@ -297,7 +330,7 @@
|
|||||||
alias trashed-cleanup="clean-trashed"
|
alias trashed-cleanup="clean-trashed"
|
||||||
alias trashed-clean="clean-trashed"
|
alias trashed-clean="clean-trashed"
|
||||||
function_check_trash: |
|
function_check_trash: |
|
||||||
function check-trash() {
|
function check-trash-old() {
|
||||||
unset OPTIND
|
unset OPTIND
|
||||||
unset clean
|
unset clean
|
||||||
unset network
|
unset network
|
||||||
@@ -397,9 +430,9 @@
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
alias check_trash="check-trash"
|
alias check_trash="check-trash"
|
||||||
alias_clean_trash: alias clean-trash='check-trash --clean'
|
alias_trash_check: alias trash-check='check-trash-old'
|
||||||
alias_trash_check: alias trash-check='check-trash'
|
alias_clean_trash: alias clean-trash='check-trash-old --clean'
|
||||||
alias_trash_clean: alias trash-clean='trash-check --clean'
|
alias_trash_clean: alias trash-clean='clean-trash'
|
||||||
alias_clean_dir: |
|
alias_clean_dir: |
|
||||||
function clean-dir() {
|
function clean-dir() {
|
||||||
sudo du -hs
|
sudo du -hs
|
||||||
@@ -453,6 +486,13 @@
|
|||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ -f ./prep.sh ]]; then
|
||||||
|
echo "Running prep.sh first..."
|
||||||
|
./prep.sh
|
||||||
|
fi
|
||||||
|
|
||||||
|
export BUILD_TIMESTAMP="`date`"
|
||||||
|
|
||||||
docker compose build &&
|
docker compose build &&
|
||||||
docker compose down &&
|
docker compose down &&
|
||||||
docker compose up -d
|
docker compose up -d
|
||||||
@@ -475,6 +515,13 @@
|
|||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ -f ./prep.sh ]]; then
|
||||||
|
echo "Running prep.sh first..."
|
||||||
|
./prep.sh
|
||||||
|
fi
|
||||||
|
|
||||||
|
export BUILD_TIMESTAMP="`date`"
|
||||||
|
|
||||||
docker compose pull &&
|
docker compose pull &&
|
||||||
docker compose build &&
|
docker compose build &&
|
||||||
docker compose down &&
|
docker compose down &&
|
||||||
@@ -519,6 +566,14 @@
|
|||||||
docker ps
|
docker ps
|
||||||
return;
|
return;
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ -f ./prep.sh ]]; then
|
||||||
|
echo "Running prep.sh first..."
|
||||||
|
./prep.sh
|
||||||
|
fi
|
||||||
|
|
||||||
|
export BUILD_TIMESTAMP="`date`"
|
||||||
|
|
||||||
echo "*** Upgrading Images ***" &&
|
echo "*** Upgrading Images ***" &&
|
||||||
docker compose pull &&
|
docker compose pull &&
|
||||||
echo "*** Building Containers ***" &&
|
echo "*** Building Containers ***" &&
|
||||||
@@ -544,6 +599,11 @@
|
|||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ -f ./prep.sh ]]; then
|
||||||
|
echo "Running prep.sh first..."
|
||||||
|
./prep.sh
|
||||||
|
fi
|
||||||
|
|
||||||
docker compose down &&
|
docker compose down &&
|
||||||
docker compose up -d
|
docker compose up -d
|
||||||
|
|
||||||
@@ -559,33 +619,7 @@
|
|||||||
alias docker-start="docker compose up -d && docker compose start"
|
alias docker-start="docker compose up -d && docker compose start"
|
||||||
alias docker-prep="docker compose pull && docker compose build"
|
alias docker-prep="docker compose pull && docker compose build"
|
||||||
alias_code_check: |
|
alias_code_check: |
|
||||||
alias code-check='
|
alias code-check='git-check $HOME/Code'
|
||||||
echo "Checking ~/Code directory for git changes."
|
|
||||||
ls -d ~/Code/* | while read project; do
|
|
||||||
if [[ ! -d $project ]]; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
echo -e "\n*** `basename $project` ***"
|
|
||||||
cd $project
|
|
||||||
if [[ -d .git ]]; then
|
|
||||||
git ls-remote --exit-code --heads origin dev
|
|
||||||
dev_exists="$?"
|
|
||||||
if [[ "$dev_exists" == 0 ]]; then
|
|
||||||
git switch dev
|
|
||||||
elif [[ "$dev_exists" == 2 ]]; then
|
|
||||||
git switch main
|
|
||||||
else
|
|
||||||
echo "ERROR: Unknown status for dev_exists, '$dev_exists'."
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
git pull
|
|
||||||
git push
|
|
||||||
else
|
|
||||||
echo "Not a Git project, skipping!"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
echo -e "\nDone!"
|
|
||||||
'
|
|
||||||
alias code-sync='code-check'
|
alias code-sync='code-check'
|
||||||
alias_code_reset: |
|
alias_code_reset: |
|
||||||
alias code-reset='
|
alias code-reset='
|
||||||
@@ -686,8 +720,6 @@
|
|||||||
done
|
done
|
||||||
echo -e "\nDone!\n"
|
echo -e "\nDone!\n"
|
||||||
}
|
}
|
||||||
alias_clone: |
|
|
||||||
alias clone="rsync -auPhz --delete --exclude '.gradle' --exclude 'app/build'"
|
|
||||||
export_hyperling: |
|
export_hyperling: |
|
||||||
export HYPERLING6="2a07:e03:3:80::1"
|
export HYPERLING6="2a07:e03:3:80::1"
|
||||||
export HYPERLING4="185.130.47.173"
|
export HYPERLING4="185.130.47.173"
|
||||||
@@ -697,8 +729,19 @@
|
|||||||
if [[ -e $DOCKER_SOURCE && $LOGNAME == "root" ]]; then
|
if [[ -e $DOCKER_SOURCE && $LOGNAME == "root" ]]; then
|
||||||
source $DOCKER_SOURCE
|
source $DOCKER_SOURCE
|
||||||
fi
|
fi
|
||||||
alias_scan: |
|
export_prod:
|
||||||
alias scan="nmap -A -p- --script=vuln"
|
export PROD_HOST="{{ prod_host }}"
|
||||||
|
export PROD_PORT="{{ prod_port }}"
|
||||||
|
export PROD_USER="{{ prod_user }}"
|
||||||
|
|
||||||
|
export PROD_GIT_HOST="{{ git_host }}"
|
||||||
|
export PROD_GIT_PORT="{{ git_ssh_port }}"
|
||||||
|
export PROD_GIT_USER="{{ git_user }}"
|
||||||
|
|
||||||
|
export PROD_DATA_HOST="{{ prod_data_host }}"
|
||||||
|
export PROD_DATA_PORT="{{ prod_data_port }}"
|
||||||
|
export PROD_DATA_USER="{{ prod_data_user }}"
|
||||||
|
export PROD_DATA_DIR="{{ prod_data_dir }}"
|
||||||
alias_prod: |
|
alias_prod: |
|
||||||
alias prod="ssh -p {{ prod_port }} {{ prod_user }}@{{ prod_host }}"
|
alias prod="ssh -p {{ prod_port }} {{ prod_user }}@{{ prod_host }}"
|
||||||
function_clean_code: |
|
function_clean_code: |
|
||||||
@@ -779,23 +822,12 @@
|
|||||||
alias chmod='chmod -c'
|
alias chmod='chmod -c'
|
||||||
alias_iftop: |
|
alias_iftop: |
|
||||||
alias iftop='sudo iftop'
|
alias iftop='sudo iftop'
|
||||||
alias_ls: |
|
|
||||||
alias l='ls'
|
|
||||||
alias ll='ls -alh'
|
|
||||||
alias lh='ls -ash'
|
|
||||||
alias_progs: |
|
alias_progs: |
|
||||||
alias progs='ps -ef'
|
alias progs='ps -ef'
|
||||||
alias_nethogs: |
|
alias_nethogs: |
|
||||||
alias nethogs='sudo nethogs'
|
alias nethogs='sudo nethogs'
|
||||||
alias_ansible_facts: |
|
alias_ansible_facts: |
|
||||||
alias ansible-facts='ansible localhost -m setup --connection=local'
|
alias ansible-facts='ansible localhost -m setup --connection=local'
|
||||||
function_now: |
|
|
||||||
function now {
|
|
||||||
date "+%Y%m%d-%H%M%S"
|
|
||||||
}
|
|
||||||
function today {
|
|
||||||
date "+%Y%m%d"
|
|
||||||
}
|
|
||||||
function_backup: |
|
function_backup: |
|
||||||
export BACKUP_DIR="/srv/backup"
|
export BACKUP_DIR="/srv/backup"
|
||||||
function backup {
|
function backup {
|
||||||
@@ -861,13 +893,6 @@
|
|||||||
alias prod-backup="pull_prod_backups"
|
alias prod-backup="pull_prod_backups"
|
||||||
alias pull-prod="pull_prod_backups"
|
alias pull-prod="pull_prod_backups"
|
||||||
alias prod-pull="pull_prod_backups"
|
alias prod-pull="pull_prod_backups"
|
||||||
function_log: |
|
|
||||||
function log {
|
|
||||||
echo -e "$1"
|
|
||||||
}
|
|
||||||
function blog {
|
|
||||||
echo -e "\n\n$1\n\n"
|
|
||||||
}
|
|
||||||
function_debian_upgrade: |
|
function_debian_upgrade: |
|
||||||
function debian-upgrade {
|
function debian-upgrade {
|
||||||
typeset -l OLD NEW
|
typeset -l OLD NEW
|
||||||
@@ -1063,9 +1088,33 @@
|
|||||||
status="$?"
|
status="$?"
|
||||||
return "$status"
|
return "$status"
|
||||||
}
|
}
|
||||||
|
function_loop: |
|
||||||
|
function loop {
|
||||||
|
cmd="$1"
|
||||||
|
while true; do
|
||||||
|
$cmd
|
||||||
|
done;
|
||||||
|
}
|
||||||
|
alias try="loop "
|
||||||
|
source_shared: |
|
||||||
|
if [ -f ~/.rc_shared ]; then
|
||||||
|
source ~/.rc_shared
|
||||||
|
fi
|
||||||
|
process_notify_log: |
|
||||||
|
if [[ -e {{ notify_log_file }} ]]; then
|
||||||
|
cp "{{ notify_log_file }}" "{{ notify_log_file_wip }}" 1>/dev/null
|
||||||
|
echo -n "" > "{{ notify_log_file }}"
|
||||||
|
cat "{{ notify_log_file_wip }}" | while read title message; do
|
||||||
|
notify-send "$title" "$message"
|
||||||
|
done
|
||||||
|
sh -c "rm '{{ notify_log_file_wip }}'"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
- name: General | Account Management | Users | Files | Common Variable
|
- name: General | Account Management | Users | Files | Common Variable
|
||||||
set_fact:
|
set_fact:
|
||||||
|
rc_profile: |
|
||||||
|
{{ export_path_additions }}
|
||||||
rc_common: |
|
rc_common: |
|
||||||
# Fixes "command not found" when using aliases within functions.
|
# Fixes "command not found" when using aliases within functions.
|
||||||
shopt -s expand_aliases
|
shopt -s expand_aliases
|
||||||
@@ -1082,7 +1131,7 @@
|
|||||||
export server="{{ server }}"
|
export server="{{ server }}"
|
||||||
export domain="{{ domain }}"
|
export domain="{{ domain }}"
|
||||||
|
|
||||||
{{ export_path_additions }}
|
{{ source_shared }}
|
||||||
{{ alias_cp }}
|
{{ alias_cp }}
|
||||||
{{ alias_mv }}
|
{{ alias_mv }}
|
||||||
{{ alias_rm }}
|
{{ alias_rm }}
|
||||||
@@ -1116,10 +1165,9 @@
|
|||||||
{{ function_code_reseed }}
|
{{ function_code_reseed }}
|
||||||
{{ function_clean_filenames }}
|
{{ function_clean_filenames }}
|
||||||
{{ function_clean_filenames_tree }}
|
{{ function_clean_filenames_tree }}
|
||||||
{{ alias_clone }}
|
|
||||||
{{ export_hyperling }}
|
{{ export_hyperling }}
|
||||||
{{ source_docker_env }}
|
{{ source_docker_env }}
|
||||||
{{ alias_scan }}
|
{{ export_prod }}
|
||||||
{{ alias_prod }}
|
{{ alias_prod }}
|
||||||
{{ function_clean_code }}
|
{{ function_clean_code }}
|
||||||
{{ alias_kill_battery }}
|
{{ alias_kill_battery }}
|
||||||
@@ -1128,14 +1176,11 @@
|
|||||||
{{ function_ansible_vars }}
|
{{ function_ansible_vars }}
|
||||||
{{ alias_permission_commands }}
|
{{ alias_permission_commands }}
|
||||||
{{ alias_iftop }}
|
{{ alias_iftop }}
|
||||||
{{ alias_ls }}
|
|
||||||
{{ alias_progs }}
|
{{ alias_progs }}
|
||||||
{{ alias_nethogs }}
|
{{ alias_nethogs }}
|
||||||
{{ alias_ansible_facts }}
|
{{ alias_ansible_facts }}
|
||||||
{{ function_now }}
|
|
||||||
{{ function_backup }}
|
{{ function_backup }}
|
||||||
{{ function_pull_prod_backups }}
|
{{ function_pull_prod_backups }}
|
||||||
{{ function_log }}
|
|
||||||
{{ function_debian_upgrade }}
|
{{ function_debian_upgrade }}
|
||||||
{{ function_ebook_convert }}
|
{{ function_ebook_convert }}
|
||||||
{{ alias_sudo }}
|
{{ alias_sudo }}
|
||||||
@@ -1146,18 +1191,42 @@
|
|||||||
{{ alias_docker_other }}
|
{{ alias_docker_other }}
|
||||||
{{ alias_flatpak_clean }}
|
{{ alias_flatpak_clean }}
|
||||||
{{ alias_commit }}
|
{{ alias_commit }}
|
||||||
|
{{ function_loop }}
|
||||||
|
{{ process_notify_log }}
|
||||||
|
|
||||||
|
- name: General | Account Management | Users | Files | .profile
|
||||||
|
blockinfile:
|
||||||
|
path: "{{ item }}/.profile"
|
||||||
|
block: |
|
||||||
|
{{ rc_profile }}
|
||||||
|
|
||||||
|
[[ $(whoami) != "root" ]] &&
|
||||||
|
echo "`date` - Ansible .profile loaded successfully!"
|
||||||
|
marker: '# {mark} MANAGED BY ANSIBLE | Aliases'
|
||||||
|
state: present
|
||||||
|
create: yes
|
||||||
|
backup: no
|
||||||
|
loop:
|
||||||
|
- "{{ user_root.home }}"
|
||||||
|
- "{{ user_user.home }}"
|
||||||
|
ignore_errors: yes
|
||||||
|
when: user_root.home != "" and user_user.home != ""
|
||||||
|
|
||||||
- name: General | Account Management | Users | Files | .bashrc
|
- name: General | Account Management | Users | Files | .bashrc
|
||||||
blockinfile:
|
blockinfile:
|
||||||
path: "{{ item }}/.bashrc"
|
path: "{{ item }}/.bashrc"
|
||||||
block: |
|
block: |
|
||||||
{{ rc_common }}
|
{{ rc_common }}
|
||||||
|
|
||||||
|
# Export all functions! #
|
||||||
|
eval "$(declare -F | grep -v _ | sed 's/-f /-fx /')"
|
||||||
|
|
||||||
[[ $(whoami) != "root" ]] &&
|
[[ $(whoami) != "root" ]] &&
|
||||||
echo "`date` - Ansible .bashrc loaded successfully!"
|
echo "`date` - Ansible .bashrc loaded successfully!"
|
||||||
marker: '# {mark} MANAGED BY ANSIBLE | Aliases'
|
marker: '# {mark} MANAGED BY ANSIBLE | Aliases'
|
||||||
state: present
|
state: present
|
||||||
create: yes
|
create: yes
|
||||||
backup: yes
|
backup: no
|
||||||
loop:
|
loop:
|
||||||
- "{{ user_root.home }}"
|
- "{{ user_root.home }}"
|
||||||
- "{{ user_user.home }}"
|
- "{{ user_user.home }}"
|
||||||
@@ -1174,32 +1243,7 @@
|
|||||||
marker: '# {mark} MANAGED BY ANSIBLE | Aliases'
|
marker: '# {mark} MANAGED BY ANSIBLE | Aliases'
|
||||||
state: present
|
state: present
|
||||||
create: yes
|
create: yes
|
||||||
backup: yes
|
backup: no
|
||||||
loop:
|
|
||||||
- "{{ user_root.home }}"
|
|
||||||
- "{{ user_user.home }}"
|
|
||||||
ignore_errors: yes
|
|
||||||
when: user_root.home != "" and user_user.home != ""
|
|
||||||
|
|
||||||
- name: General | Account Management | Users | Files | .vimrc
|
|
||||||
blockinfile:
|
|
||||||
path: "{{ item }}/.vimrc"
|
|
||||||
block: |
|
|
||||||
" Turn off syntax, flashy lights, etc. Make VIM into a basic editor.
|
|
||||||
syntax off
|
|
||||||
set nohlsearch
|
|
||||||
set noautoindent noautowrite noshowmatch wrapmargin=0 report=1 ts=3
|
|
||||||
set ignorecase
|
|
||||||
|
|
||||||
" Turn off auto-commenting.
|
|
||||||
autocmd Filetype * set fo-=c fo-=r fo-=o
|
|
||||||
|
|
||||||
" qq shortcut for immediately exiting all files without saving.
|
|
||||||
nnoremap qq :qa!<cr>
|
|
||||||
marker: '" {mark} MANAGED BY ANSIBLE | vimrc'
|
|
||||||
state: present
|
|
||||||
create: yes
|
|
||||||
backup: yes
|
|
||||||
loop:
|
loop:
|
||||||
- "{{ user_root.home }}"
|
- "{{ user_root.home }}"
|
||||||
- "{{ user_user.home }}"
|
- "{{ user_user.home }}"
|
||||||
@@ -1214,11 +1258,11 @@
|
|||||||
loop:
|
loop:
|
||||||
- .bashrc
|
- .bashrc
|
||||||
- .zshrc
|
- .zshrc
|
||||||
- .vimrc
|
|
||||||
|
|
||||||
|
|
||||||
- name: General | Account Management | Users | Files | Helper Functions (Reset)
|
- name: General | Account Management | Users | Files | Helper Functions (Reset)
|
||||||
shell: "rm -v {{ global_bin }}/*.function"
|
shell: "rm -v {{ global_bin }}/*.function"
|
||||||
|
ignore_errors: yes
|
||||||
|
|
||||||
- name: General | Account Management | Users | Files | Helper Functions
|
- name: General | Account Management | Users | Files | Helper Functions
|
||||||
copy:
|
copy:
|
||||||
@@ -1229,3 +1273,52 @@
|
|||||||
mode: 0755
|
mode: 0755
|
||||||
with_fileglob:
|
with_fileglob:
|
||||||
- "functions/*.function"
|
- "functions/*.function"
|
||||||
|
|
||||||
|
|
||||||
|
# Shared Environment Setup #
|
||||||
|
|
||||||
|
- name: General | Account Management | Users | env-shared | Download / Update
|
||||||
|
git:
|
||||||
|
repo: https://git.hyperling.com/me/env-shared
|
||||||
|
version: "{{ branch }}"
|
||||||
|
dest: "{{ shared_rc_install_dir }}"
|
||||||
|
clone: true
|
||||||
|
force: true
|
||||||
|
update: true
|
||||||
|
#ignore_errors: yes
|
||||||
|
|
||||||
|
- name: General | Account Management | Users | env-shared | Install | .rc_shared
|
||||||
|
copy:
|
||||||
|
src: "{{ shared_rc_install_dir }}/rc_shared.sh"
|
||||||
|
dest: "{{ item }}/.rc_shared"
|
||||||
|
owner: root
|
||||||
|
group: "{{ root_group }}"
|
||||||
|
mode: 0755
|
||||||
|
loop:
|
||||||
|
- "{{ user_root.home }}"
|
||||||
|
- "{{ user_user.home }}"
|
||||||
|
#ignore_errors: yes
|
||||||
|
when: user_root.home != "" and user_user.home != ""
|
||||||
|
|
||||||
|
- name: General | Account Management | Users | env-shared | Install | .vimrc
|
||||||
|
copy:
|
||||||
|
src: "{{ shared_rc_install_dir }}/vimrc.vim"
|
||||||
|
dest: "{{ item }}/.vimrc"
|
||||||
|
owner: root
|
||||||
|
group: "{{ root_group }}"
|
||||||
|
mode: 0755
|
||||||
|
loop:
|
||||||
|
- "{{ user_root.home }}"
|
||||||
|
- "{{ user_user.home }}"
|
||||||
|
#ignore_errors: yes
|
||||||
|
when: user_root.home != "" and user_user.home != ""
|
||||||
|
|
||||||
|
- name: General | Account Management | Users | env-shared | Permissions
|
||||||
|
file:
|
||||||
|
path: "{{ user_user.home }}/{{ item }}"
|
||||||
|
owner: "{{ user }}"
|
||||||
|
mode: '0755'
|
||||||
|
loop:
|
||||||
|
- .rc_shared
|
||||||
|
- .vimrc
|
||||||
|
#ignore_errors: yes
|
||||||
|
|||||||
@@ -6,6 +6,11 @@
|
|||||||
metasploit_installer: msfinstall
|
metasploit_installer: msfinstall
|
||||||
when: ansible_system in ("Linux", "Darwin")
|
when: ansible_system in ("Linux", "Darwin")
|
||||||
|
|
||||||
|
- name: General | Software | Metasploit | Check Install Status
|
||||||
|
stat:
|
||||||
|
path: /usr/bin/msfconsole
|
||||||
|
register: metasploit_status
|
||||||
|
|
||||||
- name: General | Software | Metasploit | Refresh Apt Files
|
- name: General | Software | Metasploit | Refresh Apt Files
|
||||||
shell: "{{ item }}"
|
shell: "{{ item }}"
|
||||||
loop:
|
loop:
|
||||||
@@ -13,7 +18,8 @@
|
|||||||
- "mv -fv /usr/share/keyrings/metasploit-framework.gpg /tmp/apt/metasploit-framework.gpg.old"
|
- "mv -fv /usr/share/keyrings/metasploit-framework.gpg /tmp/apt/metasploit-framework.gpg.old"
|
||||||
- "mv -fv /etc/apt/sources.list.d/metasploit-framework.list /tmp/apt/metasploit-framework.list.old"
|
- "mv -fv /etc/apt/sources.list.d/metasploit-framework.list /tmp/apt/metasploit-framework.list.old"
|
||||||
- "mv -fv /etc/apt/preferences.d/pin-metasploit.pref /tmp/apt/pin-metasploit.pref.old"
|
- "mv -fv /etc/apt/preferences.d/pin-metasploit.pref /tmp/apt/pin-metasploit.pref.old"
|
||||||
when: ansible_system in ("Linux")
|
when: ansible_system in ("Linux") and
|
||||||
|
not metasploit_status.stat.exists
|
||||||
ignore_errors: true
|
ignore_errors: true
|
||||||
|
|
||||||
- name: General | Software | Metasploit | Install
|
- name: General | Software | Metasploit | Install
|
||||||
@@ -24,4 +30,5 @@
|
|||||||
- "mkdir -p {{ global_bin }}"
|
- "mkdir -p {{ global_bin }}"
|
||||||
- "mv -fv ./msfinstall {{ global_bin }}/{{ metasploit_installer }}"
|
- "mv -fv ./msfinstall {{ global_bin }}/{{ metasploit_installer }}"
|
||||||
- yes y | "{{ global_bin }}/{{ metasploit_installer }}"
|
- yes y | "{{ global_bin }}/{{ metasploit_installer }}"
|
||||||
when: ansible_system in ("Linux", "Darwin")
|
when: ansible_system in ("Linux", "Darwin") and
|
||||||
|
not metasploit_status.stat.exists
|
||||||
|
|||||||
@@ -98,14 +98,15 @@
|
|||||||
|
|
||||||
## Bluetooth ##
|
## Bluetooth ##
|
||||||
# Do people seriously depend on Bluetooth? Plug your devices in, silly!
|
# Do people seriously depend on Bluetooth? Plug your devices in, silly!
|
||||||
|
# Hehe, I use it now for a few rare things so disabling this for now.
|
||||||
|
|
||||||
- name: General | Software | Services | Bluetooth | Disable
|
#- name: General | Software | Services | Bluetooth | Disable
|
||||||
service:
|
# service:
|
||||||
name: "{{ bluetooth }}"
|
# name: "{{ bluetooth }}"
|
||||||
pattern: "{{ bluetooth_pattern }}"
|
# pattern: "{{ bluetooth_pattern }}"
|
||||||
state: stopped
|
# state: stopped
|
||||||
enabled: no
|
# enabled: no
|
||||||
ignore_errors: yes
|
# ignore_errors: yes
|
||||||
|
|
||||||
## NTP ##
|
## NTP ##
|
||||||
|
|
||||||
|
|||||||
@@ -126,8 +126,6 @@
|
|||||||
- system-images;android-35;google_apis_playstore;x86_64
|
- system-images;android-35;google_apis_playstore;x86_64
|
||||||
### 34 ###
|
### 34 ###
|
||||||
- build-tools;34.0.0
|
- build-tools;34.0.0
|
||||||
- platforms;android-34
|
|
||||||
- sources;android-34
|
|
||||||
# Images
|
# Images
|
||||||
- system-images;android-34;google_apis;x86_64
|
- system-images;android-34;google_apis;x86_64
|
||||||
- system-images;android-34;google_apis_playstore;x86_64
|
- system-images;android-34;google_apis_playstore;x86_64
|
||||||
@@ -243,14 +241,20 @@
|
|||||||
|
|
||||||
# These are safe to run multiple times, and uses the new `latest` version.
|
# These are safe to run multiple times, and uses the new `latest` version.
|
||||||
- name: Workstation | Linux | Software | Android | Install | Required Modules
|
- name: Workstation | Linux | Software | Android | Install | Required Modules
|
||||||
shell: "yes | {{ android_sdkmanager_final }} --install '{{ item }}' --sdk_root={{ android_sdk_location }}"
|
shell: |
|
||||||
|
if ! {{ android_sdkmanager_final }} --list_installed | grep -q '{{ item }}'; then
|
||||||
|
yes | {{ android_sdkmanager_final }} --install '{{ item }}' --sdk_root={{ android_sdk_location }}
|
||||||
|
fi
|
||||||
loop: "{{ android_downloads_required }}"
|
loop: "{{ android_downloads_required }}"
|
||||||
become_user: "{{ user }}"
|
become_user: "{{ user }}"
|
||||||
when: coding == true
|
when: coding == true
|
||||||
|
|
||||||
# Add more versions for testing across all the important platforms.
|
# Add more versions for testing across all the important platforms.
|
||||||
- name: Workstation | Linux | Software | Android | Install | Additional Modules
|
- name: Workstation | Linux | Software | Android | Install | Additional Modules
|
||||||
shell: "yes | {{ android_sdkmanager_final }} --install '{{ item }}' --sdk_root={{ android_sdk_location }}"
|
shell: |
|
||||||
|
if ! {{ android_sdkmanager_final }} --list_installed | grep -q '{{ item }}'; then
|
||||||
|
yes | {{ android_sdkmanager_final }} --install '{{ item }}' --sdk_root={{ android_sdk_location }}
|
||||||
|
fi
|
||||||
loop: "{{ android_downloads_additional }}"
|
loop: "{{ android_downloads_additional }}"
|
||||||
become_user: "{{ user }}"
|
become_user: "{{ user }}"
|
||||||
when: coding == true and sdks == true
|
when: coding == true and sdks == true
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
---
|
||||||
|
# 20260716 - Hyperling
|
||||||
|
# Begin customizing Cinnamon's dconf similar to GNOME.
|
||||||
|
|
||||||
|
# Favorites are handled in .config/cinnamon/spices/group*/*.json files.
|
||||||
|
# Does not seem as easy as GNOME and its dconf settings.
|
||||||
|
# Cinnamon does use some dconf though.
|
||||||
|
|
||||||
|
- name: Workstation | Linux | Software | Cinnamon | Facts | Defaults
|
||||||
|
set_fact:
|
||||||
|
cinnamon_package: cinnamon
|
||||||
|
|
||||||
|
- name: Workstation | Linux | Software | Cinnamon | Facts | Debian Derivitives
|
||||||
|
set_fact:
|
||||||
|
cinnamon_package: task-cinnamon-desktop
|
||||||
|
when: ansible_distribution in ("Debian", "Devuan")
|
||||||
|
|
||||||
|
- name: Workstation | Linux | Software | Cinnamon | Install
|
||||||
|
package:
|
||||||
|
name:
|
||||||
|
- "{{ cinnamon_package }}"
|
||||||
|
- "{{ lightdm }}"
|
||||||
|
state: present
|
||||||
|
update_cache: yes
|
||||||
@@ -44,11 +44,16 @@
|
|||||||
- { app: "com.transmissionbt.Transmission", name: "transmission", extra: "" }
|
- { app: "com.transmissionbt.Transmission", name: "transmission", extra: "" }
|
||||||
- { app: "app.grayjay.Grayjay", name: "grayjay", extra: "" }
|
- { app: "app.grayjay.Grayjay", name: "grayjay", extra: "" }
|
||||||
- { app: "com.github.xournalpp.xournalpp", name: "xournal", extra: "" }
|
- { app: "com.github.xournalpp.xournalpp", name: "xournal", extra: "" }
|
||||||
|
- { app: "network.loki.Session", name: "session", extra: "" }
|
||||||
|
- { app: "com.brave.Browser", name: "brave", extra: "" }
|
||||||
|
- { app: "net.ankiweb.Anki", name: "anki", extra: "" }
|
||||||
|
- { app: "app.organicmaps.desktop", name: "organic-maps", extra: "" }
|
||||||
flatpaks_coding:
|
flatpaks_coding:
|
||||||
- { app: "com.vscodium.codium", name: "codium-flatpak", extra: "" }
|
- { app: "com.vscodium.codium", name: "codium-flatpak", extra: "" }
|
||||||
- { app: "com.google.AndroidStudio", name: "android-studio", extra: "" }
|
- { app: "com.google.AndroidStudio", name: "android-studio", extra: "" }
|
||||||
- { app: "io.dbeaver.DBeaverCommunity", name: "dbeaver", extra: "" }
|
- { app: "io.dbeaver.DBeaverCommunity", name: "dbeaver", extra: "" }
|
||||||
- { app: "com.visualstudio.code-oss", name: "code-flatpak", extra: "" }
|
- { app: "com.visualstudio.code-oss", name: "code-flatpak", extra: "" }
|
||||||
|
- { app: "org.gnome.Boxes", name: "boxes", extra: "" }
|
||||||
flatpaks_editing_video:
|
flatpaks_editing_video:
|
||||||
- { app: "org.shotcut.Shotcut", name: "shotcut", extra: "" }
|
- { app: "org.shotcut.Shotcut", name: "shotcut", extra: "" }
|
||||||
- { app: "com.obsproject.Studio", name: "obs", extra: "" }
|
- { app: "com.obsproject.Studio", name: "obs", extra: "" }
|
||||||
@@ -57,6 +62,7 @@
|
|||||||
- { app: "org.tenacityaudio.Tenacity", name: "tenacity", extra: "" }
|
- { app: "org.tenacityaudio.Tenacity", name: "tenacity", extra: "" }
|
||||||
- { app: "io.lmms.LMMS", name: "lmms", extra: "" }
|
- { app: "io.lmms.LMMS", name: "lmms", extra: "" }
|
||||||
- { app: "net.sourceforge.VMPK", name: "vmpk", extra: "" }
|
- { app: "net.sourceforge.VMPK", name: "vmpk", extra: "" }
|
||||||
|
- { app: "org.musicbrainz.Picard", name: "picard", extra: "" }
|
||||||
flatpaks_gaming:
|
flatpaks_gaming:
|
||||||
- { app: "com.valvesoftware.Steam", name: "steam", extra: "" }
|
- { app: "com.valvesoftware.Steam", name: "steam", extra: "" }
|
||||||
- { app: "com.play0ad.zeroad", name: "zeroad", extra: "" }
|
- { app: "com.play0ad.zeroad", name: "zeroad", extra: "" }
|
||||||
|
|||||||
@@ -0,0 +1,69 @@
|
|||||||
|
---
|
||||||
|
# 20260716 - Hyperling
|
||||||
|
# Add the setup for a simple i3 configuration. It´s pretty easy to use and
|
||||||
|
# functions super well. Very easy to get going and does not need a whole lot of
|
||||||
|
# work to change things around. Good alternative to DWM and so lightweight that
|
||||||
|
# it doesn´t even matter if both are installed!!
|
||||||
|
|
||||||
|
- name: Workstation | Linux | Software | i3 | Facts | General [1/2]
|
||||||
|
set_fact:
|
||||||
|
i3_package: i3
|
||||||
|
i3_light: light
|
||||||
|
i3_config: "settings/i3.config"
|
||||||
|
i3_config_dir: "{{ user_user.home }}/.config/i3"
|
||||||
|
|
||||||
|
- name: Workstation | Linux | Software | i3 | Facts | General [1/2]
|
||||||
|
set_fact:
|
||||||
|
i3_config_file: "{{ i3_config_dir }}/config"
|
||||||
|
|
||||||
|
#- name: Workstation | Linux | Software | i3 | Facts | TBD
|
||||||
|
# set_fact:
|
||||||
|
# i3_package: i3-wm
|
||||||
|
# when: ansible_distribution in ("TBD")
|
||||||
|
|
||||||
|
- name: Workstation | Linux | Software | i3 | Install
|
||||||
|
package:
|
||||||
|
name:
|
||||||
|
- "{{ i3_package }}"
|
||||||
|
- "{{ lightdm }}"
|
||||||
|
- "{{ i3-light }}"
|
||||||
|
state: present
|
||||||
|
update_cache: yes
|
||||||
|
|
||||||
|
- name: Workstation | Linux | Software | i3 | Config | Create Dir
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: "{{ i3_config_dir }}"
|
||||||
|
state: directory
|
||||||
|
mode: '0755'
|
||||||
|
owner: "{{ user }}"
|
||||||
|
group: "{{ user }}"
|
||||||
|
|
||||||
|
- name: Workstation | Linux | Software | i3 | Config | Copy File
|
||||||
|
copy:
|
||||||
|
src: "{{ i3_config }}"
|
||||||
|
dest: "{{ i3_config_file }}"
|
||||||
|
owner: "{{ user }}"
|
||||||
|
group: "{{ user }}"
|
||||||
|
mode: '0664'
|
||||||
|
|
||||||
|
# TBD: Automate getting the brightness keys to work.
|
||||||
|
#
|
||||||
|
# User is already part of the video group. Just need to configure udev rules.
|
||||||
|
#
|
||||||
|
# Get the folder name from here: `ls /sys/class/backlight/`
|
||||||
|
#
|
||||||
|
# That is your <DEVICE> for the following lines, which go here: /etc/udev/rules.d/backlight.rules
|
||||||
|
# ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="<DEVICE>", RUN+="/bin/chgrp video /sys/class/backlight/%k/brightness"
|
||||||
|
# ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="<DEVICE>", RUN+="/bin/chmod g+w /sys/class/backlight/%k/brightness"
|
||||||
|
#
|
||||||
|
# So, for example:
|
||||||
|
# [18:12:20 root@device ~]# cat /etc/udev/rules.d/backlight.rules
|
||||||
|
# ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="intel_backlight", RUN+="/bin/chgrp video /sys/class/backlight/%k/brightness"
|
||||||
|
# ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="intel_backlight", RUN+="/bin/chmod g+w /sys/class/backlight/%k/brightness"
|
||||||
|
# [18:12:21 root@device ~]#
|
||||||
|
#
|
||||||
|
# It then required a reboot. Doing the commands below was not enough.
|
||||||
|
#
|
||||||
|
# # sudo udevadm control --reload-rules ^C
|
||||||
|
# # sudo udevadm trigger
|
||||||
|
#
|
||||||
@@ -2,6 +2,17 @@
|
|||||||
# Lutris for running Windows games not in Steam.
|
# Lutris for running Windows games not in Steam.
|
||||||
# https://lutris.net/downloads
|
# https://lutris.net/downloads
|
||||||
|
|
||||||
|
## Starcraft 2 ##
|
||||||
|
# 2026-05-06: #
|
||||||
|
# Using "System (10.0 (Debian 10.0-repack-6))" works, not Proton.
|
||||||
|
# - Fails to actually open SC2, but Battle.net worss great, lol.
|
||||||
|
# does not get to login, pop-up freezes
|
||||||
|
# - wine 8
|
||||||
|
# - proton hotfix
|
||||||
|
# - proton exp
|
||||||
|
# - proton GE stabele / default
|
||||||
|
# - proton 9 (beta)
|
||||||
|
|
||||||
# Paths
|
# Paths
|
||||||
|
|
||||||
- name: Workstation | Linux | Software | Lutris | Facts
|
- name: Workstation | Linux | Software | Lutris | Facts
|
||||||
@@ -34,10 +45,10 @@
|
|||||||
- name: Workstation | Linux | Software | Lutris | Add PPA (Debian)
|
- name: Workstation | Linux | Software | Lutris | Add PPA (Debian)
|
||||||
shell: "{{ item }}"
|
shell: "{{ item }}"
|
||||||
loop:
|
loop:
|
||||||
- "wget -q -O- https://download.opensuse.org/repositories/home:/strycore/Debian_12/Release.key \
|
- "wget -q -O- https://download.opensuse.org/repositories/home:/strycore/Debian_13/Release.key \
|
||||||
| gpg --dearmor \
|
| gpg --dearmor \
|
||||||
| sudo tee {{ lutris_keyfile }} > /dev/null"
|
| sudo tee {{ lutris_keyfile }} > /dev/null"
|
||||||
- "echo 'deb [signed-by={{ lutris_keyfile }}] https://download.opensuse.org/repositories/home:/strycore/Debian_12/ ./' \
|
- "echo 'deb [signed-by={{ lutris_keyfile }}] https://download.opensuse.org/repositories/home:/strycore/Debian_13/ ./' \
|
||||||
| sudo tee {{ lutris_source_list }} > /dev/null"
|
| sudo tee {{ lutris_source_list }} > /dev/null"
|
||||||
- "sudo apt update"
|
- "sudo apt update"
|
||||||
when: ansible_distribution in ("Debian") and gaming == true and not lutris_source_exists.stat.exists
|
when: ansible_distribution in ("Debian") and gaming == true and not lutris_source_exists.stat.exists
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
# 20260716 - Hyperling
|
||||||
|
# Giving this DE a shot but not liking it as much as others.
|
||||||
|
|
||||||
|
- name: Workstation | Linux | Software | LXQt | Facts | Defaults
|
||||||
|
set_fact:
|
||||||
|
lxqt_package: lxqt
|
||||||
|
|
||||||
|
- name: Workstation | Linux | Software | LXQt | Facts | Debian Derivitives
|
||||||
|
set_fact:
|
||||||
|
lxqt_package: task-lxqt-desktop
|
||||||
|
when: ansible_distribution in ("Debian", "Devuan")
|
||||||
|
|
||||||
|
- name: Workstation | Linux | Software | LXQt | Install
|
||||||
|
package:
|
||||||
|
name:
|
||||||
|
- "{{ lxqt_package }}"
|
||||||
|
- "{{ sddm }}"
|
||||||
|
state: present
|
||||||
|
update_cache: yes
|
||||||
@@ -40,6 +40,7 @@
|
|||||||
- "{{ evolution }}*"
|
- "{{ evolution }}*"
|
||||||
- gparted
|
- gparted
|
||||||
- hugo
|
- hugo
|
||||||
|
- wireless-tools
|
||||||
state: present
|
state: present
|
||||||
|
|
||||||
- name: Workstation | Linux | Software | Packages | GS Connect (KDE Connect, Android Tool)
|
- name: Workstation | Linux | Software | Packages | GS Connect (KDE Connect, Android Tool)
|
||||||
|
|||||||
@@ -0,0 +1,86 @@
|
|||||||
|
---
|
||||||
|
# 20260716 - Hyperling
|
||||||
|
# Attempt to save battery life by having a daemon tune the CPU and disable
|
||||||
|
# unneeded components like USB, Bluetooth, WiFi, etc when not in use.
|
||||||
|
|
||||||
|
## Variables ##
|
||||||
|
|
||||||
|
- name: Workstation | Linux | Software | TLP | Facts
|
||||||
|
set_fact:
|
||||||
|
tlp: "tlp"
|
||||||
|
tlp_rdw: "tlp-rdw"
|
||||||
|
tlp_smart: "smartmontools"
|
||||||
|
tlp_config: "/etc/tlp.conf"
|
||||||
|
tlp_service: "tlp"
|
||||||
|
ppd_package: "power-profiles-daemon"
|
||||||
|
ppd_service: "power-profiles-daemon"
|
||||||
|
acf_package: "auto-cpufreq"
|
||||||
|
acf_service: "auto-cpufreq"
|
||||||
|
|
||||||
|
## Conflicts ##
|
||||||
|
|
||||||
|
#- name: Workstation | Linux | Software | TLP | Conflicts | Disable
|
||||||
|
# service:
|
||||||
|
# name: "{{ item }}"
|
||||||
|
# state: stopped
|
||||||
|
# enabled: false
|
||||||
|
# loop:
|
||||||
|
# - "{{ ppd_service }}"
|
||||||
|
# - "{{ acf_service }}"
|
||||||
|
# ignore_errors: yes
|
||||||
|
|
||||||
|
- name: Workstation | Linux | Software | TLP | Conflicts | Remove
|
||||||
|
package:
|
||||||
|
name: "{{ ppd_package }} {{ acf_package }}"
|
||||||
|
state: absent
|
||||||
|
|
||||||
|
## Install TLP + Associated Software ##
|
||||||
|
|
||||||
|
- name: Workstation | Linux | Software | TLP | Install
|
||||||
|
package:
|
||||||
|
name:
|
||||||
|
- "{{ tlp }}"
|
||||||
|
- "{{ tlp_rdw }}"
|
||||||
|
- "{{ tlp_smart }}"
|
||||||
|
update_cache: yes
|
||||||
|
|
||||||
|
## Configuration ##
|
||||||
|
|
||||||
|
# Device choices:
|
||||||
|
# - bluetooth
|
||||||
|
# - nfc
|
||||||
|
# - wifi
|
||||||
|
# - wwan
|
||||||
|
|
||||||
|
# Bluetooth and WiFi are not always used so disable on boot.
|
||||||
|
# NFC and WWAN (cellular) are never used so always disable.
|
||||||
|
|
||||||
|
- name: Workstation | Linux | Software | TLP | Config
|
||||||
|
lineinfile:
|
||||||
|
path: "{{ tlp_config }}"
|
||||||
|
regexp: '{{ item.key }}'
|
||||||
|
line: '{{ item.value }} # MANAGED BY ANSIBLE'
|
||||||
|
state: present
|
||||||
|
create: yes
|
||||||
|
backup: yes
|
||||||
|
loop:
|
||||||
|
- { "key": '^[\#]?DEVICES_TO_DISABLE_ON_STARTUP', "value": 'DEVICES_TO_DISABLE_ON_STARTUP="bluetooth nfc wifi wwan"'}
|
||||||
|
# Ensure these stay commented, once the device is booted the user is in control. #
|
||||||
|
- { "key": '^[\#]?DEVICES_TO_ENABLE_ON_STARTUP', "value": '#DEVICES_TO_ENABLE_ON_STARTUP=""'}
|
||||||
|
- { "key": '^[\#]?DEVICES_TO_ENABLE_ON_AC', "value": '#DEVICES_TO_ENABLE_ON_AC=""'}
|
||||||
|
- { "key": '^[\#]?DEVICES_TO_DISABLE_ON_BAT', "value": '#DEVICES_TO_DISABLE_ON_BAT=""'}
|
||||||
|
# Help preserve battery life by not fully charging. #
|
||||||
|
- { "key": '^[\#]?START_CHARGE_THRESH_BAT0', "value": '{{ "" if battery else "#" }}START_CHARGE_THRESH_BAT0=75'}
|
||||||
|
- { "key": '^[\#]?STOP_CHARGE_THRESH_BAT0', "value": '{{ "" if battery else "#" }}STOP_CHARGE_THRESH_BAT0=80'}
|
||||||
|
- { "key": '^[\#]?START_CHARGE_THRESH_BAT1', "value": '{{ "" if battery else "#" }}START_CHARGE_THRESH_BAT1=75'}
|
||||||
|
- { "key": '^[\#]?STOP_CHARGE_THRESH_BAT1', "value": '{{ "" if battery else "#" }}STOP_CHARGE_THRESH_BAT1=80'}
|
||||||
|
|
||||||
|
## Enable + Start ##
|
||||||
|
|
||||||
|
# Ensure the service is running and will run after reboot.
|
||||||
|
|
||||||
|
- name: Workstation | Linux | Software | TLP | Enable + Start
|
||||||
|
service:
|
||||||
|
name: "{{ tlp_service }}"
|
||||||
|
state: started
|
||||||
|
enabled: true
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# TBD:
|
||||||
|
# - Decide whether this should be added to local.yml since wall does not work with gnome-terminal.
|
||||||
|
---
|
||||||
|
|
||||||
|
- name: Workstation | Shared | Cron | Root | Shutdown Warnings
|
||||||
|
cron:
|
||||||
|
user: root
|
||||||
|
name: "Shutdown Warnings"
|
||||||
|
minute: "*"
|
||||||
|
hour: "19-23"
|
||||||
|
job: /usr/bin/wall "Shutting down soon! Please save your work!" && /usr/sbin/shutdown --show
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Workstation | Shared | Cron | Root | Shutdown
|
||||||
|
cron:
|
||||||
|
user: root
|
||||||
|
name: "Shutdown"
|
||||||
|
minute: "*/5"
|
||||||
|
hour: "20-23"
|
||||||
|
job: /usr/sbin/shutdown -h 4
|
||||||
|
state: present
|
||||||
@@ -21,6 +21,7 @@
|
|||||||
, 'com.valvesoftware.Steam.desktop'
|
, 'com.valvesoftware.Steam.desktop'
|
||||||
, 'net.lutris.Lutris.desktop'
|
, 'net.lutris.Lutris.desktop'
|
||||||
, 'mullvad-vpn.desktop'
|
, 'mullvad-vpn.desktop'
|
||||||
|
, 'network.loki.Session.desktop'
|
||||||
, 'org.signal.Signal.desktop', 'signal-desktop.desktop'
|
, 'org.signal.Signal.desktop', 'signal-desktop.desktop'
|
||||||
, 'org.telegram.desktop.desktop'
|
, 'org.telegram.desktop.desktop'
|
||||||
, 'com.discordapp.Discord.desktop'
|
, 'com.discordapp.Discord.desktop'
|
||||||
@@ -172,6 +173,7 @@
|
|||||||
# End block for Dash To Dock.
|
# End block for Dash To Dock.
|
||||||
|
|
||||||
# Apply dconf settings through RC files due to distros without working psutil.
|
# Apply dconf settings through RC files due to distros without working psutil.
|
||||||
|
# Use the command 'dconf watch /' then change settings to see find these values.
|
||||||
- name: Workstation | Account Management | GNOME | Settings
|
- name: Workstation | Account Management | GNOME | Settings
|
||||||
blockinfile:
|
blockinfile:
|
||||||
path: "{{ user_user.home }}/{{ item }}"
|
path: "{{ user_user.home }}/{{ item }}"
|
||||||
@@ -185,52 +187,111 @@
|
|||||||
|
|
||||||
## Dash to Dock ##
|
## Dash to Dock ##
|
||||||
|
|
||||||
dconf write /org/gnome/shell/extensions/dash-to-dock/dock-position "'LEFT'" && inc_dconf &&
|
dconf write /org/gnome/shell/extensions/dash-to-dock/dock-position \
|
||||||
dconf write /org/gnome/shell/extensions/dash-to-dock/dock-fixed true && inc_dconf &&
|
"'LEFT'" && inc_dconf &&
|
||||||
dconf write /org/gnome/shell/extensions/dash-to-dock/dash-max-icon-size 24 && inc_dconf &&
|
dconf write /org/gnome/shell/extensions/dash-to-dock/dock-fixed \
|
||||||
|
true && inc_dconf &&
|
||||||
|
dconf write /org/gnome/shell/extensions/dash-to-dock/dash-max-icon-size \
|
||||||
|
24 && inc_dconf &&
|
||||||
|
|
||||||
dconf write /org/gnome/shell/favorite-apps "{{ gnome_favorites }}" && inc_dconf &&
|
dconf write /org/gnome/shell/favorite-apps \
|
||||||
|
"{{ gnome_favorites }}" && inc_dconf &&
|
||||||
|
|
||||||
|
dconf write /org/gnome/shell/extensions/dash-to-dock/apply-custom-theme \
|
||||||
|
true && inc_dconf &&
|
||||||
|
dconf write /org/gnome/shell/extensions/dash-to-dock/custom-theme-shrink \
|
||||||
|
true && inc_dconf &&
|
||||||
|
|
||||||
|
dconf write /org/gnome/shell/extensions/dash-to-dock/dock-fixed \
|
||||||
|
false && inc_dconf &&
|
||||||
|
dconf write /org/gnome/shell/extensions/dash-to-dock/intellihide-mode \
|
||||||
|
"'ALL_WINDOWS'" && inc_dconf &&
|
||||||
|
|
||||||
## Generic ##
|
## Generic ##
|
||||||
|
|
||||||
dconf write /org/gnome/desktop/interface/color-scheme "'prefer-dark'" && inc_dconf &&
|
dconf write /org/gnome/desktop/interface/color-scheme \
|
||||||
dconf write /org/gnome/desktop/interface/gtk-theme "'{{ dconf_theme }}'" && inc_dconf &&
|
"'prefer-dark'" && inc_dconf &&
|
||||||
dconf write /org/gnome/desktop/interface/icon-theme "'{{ dconf_icons }}'" && inc_dconf &&
|
dconf write /org/gnome/desktop/interface/gtk-theme \
|
||||||
|
"'{{ dconf_theme }}'" && inc_dconf &&
|
||||||
|
dconf write /org/gnome/desktop/interface/icon-theme \
|
||||||
|
"'{{ dconf_icons }}'" && inc_dconf &&
|
||||||
|
|
||||||
dconf write /org/gnome/desktop/interface/clock-show-date true && inc_dconf &&
|
dconf write /org/gnome/desktop/interface/clock-show-date \
|
||||||
dconf write /org/gnome/desktop/interface/clock-format "'24h'" && inc_dconf &&
|
true && inc_dconf &&
|
||||||
dconf write /org/gnome/desktop/interface/clock-show-seconds true && inc_dconf &&
|
dconf write /org/gnome/desktop/interface/clock-format \
|
||||||
dconf write /org/gnome/desktop/interface/clock-show-weekday true && inc_dconf &&
|
"'24h'" && inc_dconf &&
|
||||||
dconf write /org/gnome/desktop/calendar/show-weekdate true && inc_dconf &&
|
dconf write /org/gnome/desktop/interface/clock-show-seconds \
|
||||||
|
true && inc_dconf &&
|
||||||
|
dconf write /org/gnome/desktop/interface/clock-show-weekday \
|
||||||
|
true && inc_dconf &&
|
||||||
|
dconf write /org/gnome/desktop/calendar/show-weekdate \
|
||||||
|
true && inc_dconf &&
|
||||||
|
|
||||||
dconf write /org/gnome/desktop/interface/show-battery-percentage true && inc_dconf &&
|
dconf write /org/gnome/desktop/interface/show-battery-percentage \
|
||||||
|
true && inc_dconf &&
|
||||||
|
|
||||||
dconf write /org/gnome/desktop/wm/preferences/button-layout "'appmenu:minimize,maximize,close'" && inc_dconf &&
|
dconf write /org/gnome/desktop/wm/preferences/button-layout \
|
||||||
|
"'appmenu:minimize,maximize,close'" && inc_dconf &&
|
||||||
|
|
||||||
dconf write /org/gnome/desktop/wm/preferences/num-workspaces 1 && inc_dconf &&
|
dconf write /org/gnome/desktop/wm/preferences/num-workspaces \
|
||||||
dconf write /org/gnome/mutter/dynamic-workspaces false && inc_dconf &&
|
1 && inc_dconf &&
|
||||||
|
dconf write /org/gnome/mutter/dynamic-workspaces \
|
||||||
|
false && inc_dconf &&
|
||||||
|
|
||||||
dconf write /org/gnome/mutter/edge-tiling true && inc_dconf &&
|
dconf write /org/gnome/mutter/edge-tiling \
|
||||||
dconf write /org/gnome/desktop/interface/enable-hot-corners false && inc_dconf &&
|
true && inc_dconf &&
|
||||||
|
dconf write /org/gnome/desktop/interface/enable-hot-corners \
|
||||||
|
false && inc_dconf &&
|
||||||
|
|
||||||
dconf write /org/gnome/mutter/center-new-windows true && inc_dconf &&
|
dconf write /org/gnome/mutter/center-new-windows \
|
||||||
|
true && inc_dconf &&
|
||||||
|
|
||||||
dconf write /org/gnome/desktop/notifications/show-banners false && inc_dconf &&
|
dconf write /org/gnome/desktop/notifications/show-banners \
|
||||||
dconf write /org/gnome/desktop/notifications/application/org-gnome-evolution-alarm-notify/enable-sound-alerts false && inc_dconf &&
|
true && inc_dconf &&
|
||||||
dconf write /org/gnome/desktop/notifications/application/org-gnome-evolution-alarm-notify/enable false && inc_dconf &&
|
dconf write /org/gnome/desktop/notifications/application/org-gnome-evolution-alarm-notify/enable-sound-alerts \
|
||||||
dconf write /org/gnome/desktop/notifications/application/org-gnome-evolution/enable-sound-alerts false && inc_dconf &&
|
false && inc_dconf &&
|
||||||
dconf write /org/gnome/desktop/notifications/application/org-gnome-evolution/enable false && inc_dconf &&
|
dconf write /org/gnome/desktop/notifications/application/org-gnome-evolution-alarm-notify/enable \
|
||||||
|
false && inc_dconf &&
|
||||||
|
dconf write /org/gnome/desktop/notifications/application/org-gnome-evolution/enable-sound-alerts \
|
||||||
|
false && inc_dconf &&
|
||||||
|
dconf write /org/gnome/desktop/notifications/application/org-gnome-evolution/enable \
|
||||||
|
false && inc_dconf &&
|
||||||
|
|
||||||
|
# Stop Update Notifications
|
||||||
|
|
||||||
|
dconf write /org/gnome/software/allow-updates \
|
||||||
|
false && inc_dconf &&
|
||||||
|
dconf write /org/gnome/software/download-updates \
|
||||||
|
false && inc_dconf &&
|
||||||
|
dconf write /org/gnome/software/download-updates-notify \
|
||||||
|
false && inc_dconf &&
|
||||||
|
|
||||||
# Red Mode (Night Light)
|
# Red Mode (Night Light)
|
||||||
typeset -l redmode
|
(
|
||||||
redmode="{{ redmode }}"
|
typeset -l redmode
|
||||||
if [[ $redmode == "true" ]]; then
|
redmode="{{ redmode }}"
|
||||||
dconf write /org/gnome/settings-daemon/plugins/color/night-light-enabled true
|
if [[ $redmode == "true" ]]; then
|
||||||
fi
|
dconf write /org/gnome/settings-daemon/plugins/color/night-light-enabled \
|
||||||
dconf write /org/gnome/settings-daemon/plugins/color/night-light-schedule-automatic false
|
true && inc_dconf
|
||||||
dconf write /org/gnome/settings-daemon/plugins/color/night-light-temperature "uint32 3170"
|
fi
|
||||||
dconf write /org/gnome/settings-daemon/plugins/color/night-light-schedule-from 2.0
|
) &&
|
||||||
dconf write /org/gnome/settings-daemon/plugins/color/night-light-schedule-to 1.99
|
dconf write /org/gnome/settings-daemon/plugins/color/night-light-schedule-automatic \
|
||||||
|
false && inc_dconf &&
|
||||||
|
#dconf write /org/gnome/settings-daemon/plugins/color/night-light-schedule-from \
|
||||||
|
# 2.0 && inc_dconf &&
|
||||||
|
#dconf write /org/gnome/settings-daemon/plugins/color/night-light-schedule-to \
|
||||||
|
# 1.99 && inc_dconf &&
|
||||||
|
dconf write /org/gnome/settings-daemon/plugins/color/night-light-schedule-from \
|
||||||
|
19.00 && inc_dconf &&
|
||||||
|
dconf write /org/gnome/settings-daemon/plugins/color/night-light-schedule-to \
|
||||||
|
07.00 && inc_dconf &&
|
||||||
|
|
||||||
|
# 1700 is max through GNOME Settings, looks pretty red but can still see green vs blue.
|
||||||
|
# 1200 is max on f.lux type apps, pretty difficult to see the difference between green and blue.
|
||||||
|
# 0500 is the max on Red Moon, super intense on a laptop, not as much on a phone screen.
|
||||||
|
# - Basically makes everything like the dash of a Z31 300ZX, lol.
|
||||||
|
dconf write /org/gnome/settings-daemon/plugins/color/night-light-temperature \
|
||||||
|
"uint32 1700" && inc_dconf &&
|
||||||
|
|
||||||
## Keyboard Shortcuts ##
|
## Keyboard Shortcuts ##
|
||||||
|
|
||||||
@@ -255,24 +316,38 @@
|
|||||||
|
|
||||||
## Privacy ##
|
## Privacy ##
|
||||||
|
|
||||||
dconf write /org/gnome/desktop/privacy/disable-camera true && inc_dconf &&
|
dconf write /org/gnome/desktop/privacy/disable-camera \
|
||||||
dconf write /org/gnome/desktop/privacy/disable-microphone true && inc_dconf &&
|
true && inc_dconf &&
|
||||||
|
dconf write /org/gnome/desktop/privacy/disable-microphone \
|
||||||
|
true && inc_dconf &&
|
||||||
|
|
||||||
dconf write /org/gnome/desktop/privacy/recent-files-max-age 7 && inc_dconf &&
|
dconf write /org/gnome/desktop/privacy/recent-files-max-age \
|
||||||
dconf write /org/gnome/desktop/privacy/remember-recent-files false && inc_dconf &&
|
7 && inc_dconf &&
|
||||||
|
dconf write /org/gnome/desktop/privacy/remember-recent-files \
|
||||||
|
false && inc_dconf &&
|
||||||
|
|
||||||
dconf write /org/gnome/desktop/privacy/old-files-age "uint32 14" && inc_dconf &&
|
dconf write /org/gnome/desktop/privacy/old-files-age \
|
||||||
dconf write /org/gnome/desktop/privacy/remove-old-trash-files true && inc_dconf &&
|
"uint32 14" && inc_dconf &&
|
||||||
dconf write /org/gnome/desktop/privacy/remove-old-temp-files true && inc_dconf &&
|
dconf write /org/gnome/desktop/privacy/remove-old-trash-files \
|
||||||
|
true && inc_dconf &&
|
||||||
|
dconf write /org/gnome/desktop/privacy/remove-old-temp-files \
|
||||||
|
true && inc_dconf &&
|
||||||
|
|
||||||
dconf write /org/gnome/desktop/notifications/show-in-lock-screen false && inc_dconf &&
|
dconf write /org/gnome/desktop/notifications/show-in-lock-screen \
|
||||||
dconf write /org/gnome/desktop/screensaver/lock-enabled true && inc_dconf &&
|
false && inc_dconf &&
|
||||||
dconf write /org/gnome/desktop/screensaver/lock-delay "uint32 0" && inc_dconf &&
|
dconf write /org/gnome/desktop/screensaver/lock-enabled \
|
||||||
dconf write /org/gnome/desktop/session/idle-delay "uint32 900" && inc_dconf &&
|
true && inc_dconf &&
|
||||||
dconf write /org/gnome/settings-daemon/plugins/power/sleep-inactive-ac-type "'nothing'" && inc_dconf &&
|
dconf write /org/gnome/desktop/screensaver/lock-delay \
|
||||||
dconf write /org/gnome/settings-daemon/plugins/power/power-button-action "'nothing'" && inc_dconf &&
|
"uint32 0" && inc_dconf &&
|
||||||
|
dconf write /org/gnome/desktop/session/idle-delay \
|
||||||
|
"uint32 900" && inc_dconf &&
|
||||||
|
dconf write /org/gnome/settings-daemon/plugins/power/sleep-inactive-ac-type \
|
||||||
|
"'nothing'" && inc_dconf &&
|
||||||
|
dconf write /org/gnome/settings-daemon/plugins/power/power-button-action \
|
||||||
|
"'nothing'" && inc_dconf &&
|
||||||
|
|
||||||
dconf write /org/gnome/desktop/media-handling/autorun-never true && inc_dconf &&
|
dconf write /org/gnome/desktop/media-handling/autorun-never \
|
||||||
|
true && inc_dconf &&
|
||||||
|
|
||||||
## Gnome Terminal ##
|
## Gnome Terminal ##
|
||||||
|
|
||||||
@@ -281,6 +356,66 @@
|
|||||||
#/org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/preserve-working-directory
|
#/org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/preserve-working-directory
|
||||||
#'never'
|
#'never'
|
||||||
|
|
||||||
|
## Wellbeing ##
|
||||||
|
|
||||||
|
dconf write /org/gnome/desktop/screen-time-limits/daily-limit-enabled \
|
||||||
|
true && inc_dconf &&
|
||||||
|
dconf write /org/gnome/desktop/screen-time-limits/daily-limit-seconds \
|
||||||
|
"uint32 33333" && inc_dconf &&
|
||||||
|
dconf write /org/gnome/desktop/screen-time-limits/grayscale \
|
||||||
|
true && inc_dconf &&
|
||||||
|
dconf write /org/gnome/desktop/screen-time-limits/history-enabled \
|
||||||
|
true && inc_dconf &&
|
||||||
|
|
||||||
|
#dconf write /org/gnome/desktop/break-reminders/selected-breaks \
|
||||||
|
# "['eyesight', 'movement']" && inc_dconf &&
|
||||||
|
#dconf write /org/gnome/desktop/break-reminders/selected-breaks \
|
||||||
|
# "['movement']" && inc_dconf &&
|
||||||
|
dconf write /org/gnome/desktop/break-reminders/selected-breaks \
|
||||||
|
"@as []" && inc_dconf &&
|
||||||
|
|
||||||
|
dconf write /org/gnome/desktop/break-reminders/eyesight/duration-seconds \
|
||||||
|
"uint32 180" && inc_dconf &&
|
||||||
|
dconf write /org/gnome/desktop/break-reminders/eyesight/interval-seconds \
|
||||||
|
"uint32 1800" && inc_dconf &&
|
||||||
|
|
||||||
|
dconf write /org/gnome/desktop/break-reminders/eyesight/countdown \
|
||||||
|
false && inc_dconf &&
|
||||||
|
dconf write /org/gnome/desktop/break-reminders/eyesight/delay-seconds \
|
||||||
|
"uint32 180" && inc_dconf &&
|
||||||
|
dconf write /org/gnome/desktop/break-reminders/eyesight/fade-screen \
|
||||||
|
true && inc_dconf &&
|
||||||
|
dconf write /org/gnome/desktop/break-reminders/eyesight/notify \
|
||||||
|
false && inc_dconf &&
|
||||||
|
dconf write /org/gnome/desktop/break-reminders/eyesight/notify-overdue \
|
||||||
|
false && inc_dconf &&
|
||||||
|
dconf write /org/gnome/desktop/break-reminders/eyesight/notify-upcoming \
|
||||||
|
false && inc_dconf &&
|
||||||
|
dconf write /org/gnome/desktop/break-reminders/eyesight/play-sound \
|
||||||
|
false && inc_dconf &&
|
||||||
|
dconf write /org/gnome/desktop/break-reminders/eyesight/interval-seconds \
|
||||||
|
"uint32 1800" && inc_dconf &&
|
||||||
|
|
||||||
|
dconf write /org/gnome/desktop/break-reminders/movement/duration-seconds \
|
||||||
|
"uint32 180" && inc_dconf &&
|
||||||
|
dconf write /org/gnome/desktop/break-reminders/movement/interval-seconds \
|
||||||
|
"uint32 1800" && inc_dconf &&
|
||||||
|
|
||||||
|
dconf write /org/gnome/desktop/break-reminders/movement/countdown \
|
||||||
|
false && inc_dconf &&
|
||||||
|
dconf write /org/gnome/desktop/break-reminders/movement/delay-seconds \
|
||||||
|
"uint32 60" && inc_dconf &&
|
||||||
|
dconf write /org/gnome/desktop/break-reminders/movement/fade-screen \
|
||||||
|
false && inc_dconf &&
|
||||||
|
dconf write /org/gnome/desktop/break-reminders/movement/notify \
|
||||||
|
false && inc_dconf &&
|
||||||
|
dconf write /org/gnome/desktop/break-reminders/movement/notify-overdue \
|
||||||
|
false && inc_dconf &&
|
||||||
|
dconf write /org/gnome/desktop/break-reminders/movement/notify-upcoming \
|
||||||
|
false && inc_dconf &&
|
||||||
|
dconf write /org/gnome/desktop/break-reminders/movement/play-sound \
|
||||||
|
false && inc_dconf &&
|
||||||
|
|
||||||
## Success ##
|
## Success ##
|
||||||
|
|
||||||
sleep 0 ||
|
sleep 0 ||
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
---
|
||||||
|
# Copy everything from PROJECT/files/templates/ to User's home.
|
||||||
|
|
||||||
|
- name: Workstation | Settings | Templates | Variables
|
||||||
|
set_fact:
|
||||||
|
user_templates: "{{ user_user.home }}/Templates"
|
||||||
|
|
||||||
|
- name: Workstation | Settings | Templates | Ensure Directory Exists
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: "{{ user_templates }}"
|
||||||
|
state: directory
|
||||||
|
mode: '0755'
|
||||||
|
owner: "{{ user }}"
|
||||||
|
group: "{{ user }}"
|
||||||
|
|
||||||
|
- name: Workstation | Settings | Templates | Copy Files
|
||||||
|
copy:
|
||||||
|
src: 'templates/'
|
||||||
|
dest: "{{ user_templates }}/"
|
||||||
|
owner: "{{ user }}"
|
||||||
|
group: "{{ user }}"
|
||||||
|
mode: '0755'
|
||||||
Reference in New Issue
Block a user