Compare commits
14 Commits
ca482245cc
...
b1ae3a7587
| Author | SHA1 | Date | |
|---|---|---|---|
| b1ae3a7587 | |||
| 4f20bdfa1b | |||
| c43e589235 | |||
| f3a3ac63ea | |||
| 4f31769802 | |||
| ab5a35a133 | |||
| faeef04ca4 | |||
| 87f5c39a9a | |||
| bd29c74d21 | |||
| eb70ee7a34 | |||
| 816ff990b3 | |||
| cda28a2c4e | |||
| 1ff0e3624f | |||
| f70ebba7e7 |
@@ -11,6 +11,8 @@
|
||||
ntp_server: chrony
|
||||
dig: dig
|
||||
neofetch: neofetch
|
||||
lightdm: lightdm
|
||||
sddm: sddm
|
||||
|
||||
- name: General | Facts | Package | Parrot OS Fixes
|
||||
set_fact:
|
||||
|
||||
@@ -0,0 +1,209 @@
|
||||
# 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 i3-sensible-terminal
|
||||
|
||||
# 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
|
||||
|
||||
# Define names for default workspaces for which we configure key bindings later on.
|
||||
# We use variables to avoid repeating the names in multiple places.
|
||||
set $ws1 "1 - CMD"
|
||||
set $ws2 "2 - WEB"
|
||||
set $ws3 "3 - PRG"
|
||||
set $ws4 "4"
|
||||
set $ws5 "5"
|
||||
set $ws6 "6"
|
||||
set $ws7 "7"
|
||||
set $ws8 "8"
|
||||
set $ws9 "9"
|
||||
set $ws10 "10"
|
||||
|
||||
# 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).*Brave.*"] $ws2
|
||||
|
||||
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
|
||||
@@ -124,13 +124,21 @@
|
||||
- include_tasks: tasks/workstation/freebsd/software/gpu.yml
|
||||
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
|
||||
when: ansible_system == "FreeBSD"
|
||||
|
||||
- include_tasks: tasks/workstation/linux/software/gnome.yml
|
||||
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 #
|
||||
- include_tasks: tasks/workstation/linux/software/packages.yml
|
||||
@@ -171,6 +179,8 @@
|
||||
|
||||
- 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) #
|
||||
|
||||
@@ -491,7 +491,7 @@
|
||||
./prep.sh
|
||||
fi
|
||||
|
||||
BUILD_TIMESTAMP="`date`"
|
||||
export BUILD_TIMESTAMP="`date`"
|
||||
|
||||
docker compose build &&
|
||||
docker compose down &&
|
||||
@@ -520,7 +520,7 @@
|
||||
./prep.sh
|
||||
fi
|
||||
|
||||
BUILD_TIMESTAMP="`date`"
|
||||
export BUILD_TIMESTAMP="`date`"
|
||||
|
||||
docker compose pull &&
|
||||
docker compose build &&
|
||||
@@ -572,7 +572,7 @@
|
||||
./prep.sh
|
||||
fi
|
||||
|
||||
BUILD_TIMESTAMP="`date`"
|
||||
export BUILD_TIMESTAMP="`date`"
|
||||
|
||||
echo "*** Upgrading Images ***" &&
|
||||
docker compose pull &&
|
||||
@@ -619,33 +619,7 @@
|
||||
alias docker-start="docker compose up -d && docker compose start"
|
||||
alias docker-prep="docker compose pull && docker compose build"
|
||||
alias_code_check: |
|
||||
alias code-check='
|
||||
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-check='git-check $HOME/Code'
|
||||
alias code-sync='code-check'
|
||||
alias_code_reset: |
|
||||
alias code-reset='
|
||||
|
||||
@@ -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
|
||||
@@ -0,0 +1,45 @@
|
||||
---
|
||||
# 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_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 }}"
|
||||
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'
|
||||
@@ -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
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user