commit d48ff80f07becb1f41e066fda5ddf2043ec37b93 Author: Bluemedia Date: Wed Nov 22 22:55:38 2023 +0100 Initial commit diff --git a/main.yml b/main.yml new file mode 100644 index 0000000..ed5f3bd --- /dev/null +++ b/main.yml @@ -0,0 +1,4 @@ +- hosts: localhost + roles: + - common + - desktop-environment \ No newline at end of file diff --git a/roles/common/tasks/main.yml b/roles/common/tasks/main.yml new file mode 100644 index 0000000..bc66e10 --- /dev/null +++ b/roles/common/tasks/main.yml @@ -0,0 +1,5 @@ +- name: Update packages + apt: + update_cache: true + upgrade: yes + become: true \ No newline at end of file diff --git a/roles/desktop-environment/files/.bash_profile b/roles/desktop-environment/files/.bash_profile new file mode 100644 index 0000000..7ab61fc --- /dev/null +++ b/roles/desktop-environment/files/.bash_profile @@ -0,0 +1,17 @@ +#!/bin/bash + +# set PATH so it includes user's private bin if it exists +if [ -d "$HOME/bin" ] ; then + PATH="$HOME/bin:$PATH" +fi + +# set PATH so it includes user's private bin if it exists +if [ -d "$HOME/.local/bin" ] ; then + PATH="$HOME/.local/bin:$PATH" +fi + +# Fix gpg for git commit signing +export GPG_TTY=$(tty) + +# Autostart sway at login +if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then exec sway; fi \ No newline at end of file diff --git a/roles/desktop-environment/files/.config/sway/background.png b/roles/desktop-environment/files/.config/sway/background.png new file mode 100644 index 0000000..3d0c67e Binary files /dev/null and b/roles/desktop-environment/files/.config/sway/background.png differ diff --git a/roles/desktop-environment/files/.config/sway/config b/roles/desktop-environment/files/.config/sway/config new file mode 100644 index 0000000..1fc864a --- /dev/null +++ b/roles/desktop-environment/files/.config/sway/config @@ -0,0 +1,247 @@ +input "type:keyboard" { + xkb_layout de + xkb_variant nodeadkeys + repeat_delay 200 + repeat_rate 40 +} + +input "type:touchpad" { + tap enabled + natural_scroll enabled +} + +set $mod Mod4 + +default_border pixel 2 +default_floating_border pixel 2 + +hide_edge_borders both + +bindsym $mod+u border none +bindsym $mod+y border pixel 1 +bindsym $mod+n border normal + +font xft:Fira Code 11 + +floating_modifier $mod + +bindsym $mod+Return exec flatpak run org.wezfurlong.wezterm + +# Window kill command +bindsym $mod+Shift+q kill + +# start program launcher +bindsym $mod+d exec --no-startup-id xfce4-appfinder --disable-server +for_window [title="Application Finder"] floating enable +for_window [title="Application Finder"] resize set 500 500 + +# change focus +bindsym $mod+j focus left +bindsym $mod+k focus down +bindsym $mod+l focus up +bindsym $mod+semicolon focus right + +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 + +bindsym $mod+Shift+Left move left +bindsym $mod+Shift+Down move down +bindsym $mod+Shift+Up move up +bindsym $mod+Shift+Right move right + +# workspace back and forth (with/without active container) +workspace_auto_back_and_forth yes +bindsym $mod+b workspace back_and_forth +bindsym $mod+Shift+b move container to workspace back_and_forth; workspace back_and_forth + +# split orientation +bindsym $mod+h split h;exec notify-send 'tile horizontally' +bindsym $mod+v split v;exec notify-send 'tile vertically' +bindsym $mod+q split toggle + +# toggle 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 + +# toggle sticky +bindsym $mod+Shift+s sticky toggle + +# focus the parent container +bindsym $mod+a focus parent + +# move the currently focused window to the scratchpad +bindsym $mod+Shift+minus move scratchpad + +# Show the next scratchpad window or hide the focused scratchpad window. +# If there are multiple scratchpad windows, this command cycles through them. +bindsym $mod+minus scratchpad show + +# navigate workspaces next / previous +bindsym $mod+Ctrl+Right workspace next +bindsym $mod+Ctrl+Left workspace prev + +# workspaces +set $ws1 1 +set $ws2 2 +set $ws3 3 +set $ws4 4 +set $ws5 5 +set $ws6 6 +set $ws7 7 +set $ws8 8 + +# switch to workspace +bindsym $mod+1 workspace $ws1 +bindsym $mod+2 workspace $ws2 +bindsym $mod+3 workspace $ws3 +bindsym $mod+4 workspace $ws4 +bindsym $mod+5 workspace $ws5 +bindsym $mod+6 workspace $ws6 +bindsym $mod+7 workspace $ws7 +bindsym $mod+8 workspace $ws8 + +# Move focused container to workspace +bindsym $mod+Ctrl+1 move container to workspace $ws1 +bindsym $mod+Ctrl+2 move container to workspace $ws2 +bindsym $mod+Ctrl+3 move container to workspace $ws3 +bindsym $mod+Ctrl+4 move container to workspace $ws4 +bindsym $mod+Ctrl+5 move container to workspace $ws5 +bindsym $mod+Ctrl+6 move container to workspace $ws6 +bindsym $mod+Ctrl+7 move container to workspace $ws7 +bindsym $mod+Ctrl+8 move container to workspace $ws8 + +# Move to workspace with focused container +bindsym $mod+Shift+1 move container to workspace $ws1; workspace $ws1 +bindsym $mod+Shift+2 move container to workspace $ws2; workspace $ws2 +bindsym $mod+Shift+3 move container to workspace $ws3; workspace $ws3 +bindsym $mod+Shift+4 move container to workspace $ws4; workspace $ws4 +bindsym $mod+Shift+5 move container to workspace $ws5; workspace $ws5 +bindsym $mod+Shift+6 move container to workspace $ws6; workspace $ws6 +bindsym $mod+Shift+7 move container to workspace $ws7; workspace $ws7 +bindsym $mod+Shift+8 move container to workspace $ws8; workspace $ws8 + +# Open specific applications in floating mode +for_window [window_role="About"] floating enable +for_window [title="alsamixer"] floating enable border pixel 1 +for_window [title="File Transfer*"] floating enable +for_window [class="eog"] floating enable +for_window [class="Galculator"] floating enable border pixel 1 +for_window [class="GParted"] floating enable border normal +for_window [class="(?i)gnome-calculator"] floating enable +for_window [class="Pavucontrol"] floating enable +for_window [class="qt5ct"] floating enable sticky enable border normal +for_window [class="Qtconfig-qt4"] floating enable sticky enable border normal +for_window [title="QEMU"] floating enable +for_window [class="Thus"] floating enable border normal +for_window [class="Timeset-gui"] floating enable border normal + +# switch to workspace with urgent window automatically +for_window [urgent=latest] focus + +# reload the configuration file +bindsym $mod+Shift+c reload + +# restart sway inplace (preserves layout/session) +bindsym $mod+Shift+r restart + +# exit sway +bindsym $mod+Shift+e exec "swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit'" + +# Set shut down, restart and locking features +set $mode_system (l)ock, (e)xit, (r)eboot, (Shift+s)hutdown +bindsym $mod+0 mode "$mode_system" +mode "$mode_system" { + bindsym l exec --no-startup-id swaylock -f -s fill -i ~/.config/sway/lockscreen.jpg, mode "default" + bindsym e exec --no-startup-id swaymsg exit, mode "default" + bindsym r exec --no-startup-id sudo systemctl reboot, mode "default" + bindsym Shift+s exec --no-startup-id sudo systemctl poweroff, mode "default" + + # exit system mode: "Enter" or "Escape" + bindsym Return mode "default" + bindsym Escape mode "default" +} + +# Resize window (you can also use the mouse for that) +bindsym $mod+r mode "resize" +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 5 px or 5 ppt + bindsym k resize grow height 5 px or 5 ppt + bindsym l resize shrink height 5 px or 5 ppt + bindsym semicolon resize grow width 5 px or 5 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 + + # exit resize mode: Enter or Escape + bindsym Return mode "default" + bindsym Escape mode "default" +} + +# Set background +output * bg ~/.config/sway/background.png fill + +# Use waybar +exec systemctl --user import-environment DISPLAY WAYLAND_DISPLAY SWAYSOCK +exec hash dbus-update-activation-environment 2>/dev/null && \ + dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK +exec waybar + +# Autostart applications +#exec waybar +exec --no-startup-id nextcloud --background + +# Theme colors +client.focused #c6c6c6 #1f1f1f #c6c6c6 #8abeb7 #8abeb7 +client.focused_inactive #c6c6c6 #1f1f1f #c6c6c6 #8abeb7 #8abeb7 +client.unfocused #c6c6c6 #1f1f1f #c6c6c6 #8abeb7 #8abeb7 +client.urgent #c6c6c6 #1f1f1f #c6c6c6 #8abeb7 #8abeb7 +client.placeholder #c6c6c6 #1f1f1f #c6c6c6 #8abeb7 #8abeb7 + +client.background #1f1f1f + +# backlight control + +bindsym XF86MonBrightnessUp exec --no-startup-id brightnessctl -d intel_backlight set +5% +bindsym XF86MonBrightnessDown exec --no-startup-id brightnessctl -d intel_backlight set 5%- + +# set power-manager and volume control + +bindsym XF86AudioRaiseVolume exec --no-startup-id amixer -c 0 -q set Master 2dB+ unmute +bindsym XF86AudioLowerVolume exec --no-startup-id amixer -c 0 -q set Master 2db- unmute +bindsym XF86AudioMute exec --no-startup-id amixer -q set Master toggle + +# touchpad on and off controller on laptop with Fn+ +bindsym XF86TouchpadOn exec --no-startup-id synclient Touchpadoff=0 +bindsym XF86TouchpadOff exec --no-startup-id synclient Touchpadoff=1 + +focus_follows_mouse no + +# User defined keys +#bindsym Print exec flameshot gui # TODO +#bindsym Shift+Print exec flameshot gui #TODO diff --git a/roles/desktop-environment/files/.config/sway/lockscreen.jpg b/roles/desktop-environment/files/.config/sway/lockscreen.jpg new file mode 100644 index 0000000..99a4b70 Binary files /dev/null and b/roles/desktop-environment/files/.config/sway/lockscreen.jpg differ diff --git a/roles/desktop-environment/files/.config/waybar/config b/roles/desktop-environment/files/.config/waybar/config new file mode 100644 index 0000000..77a03f2 --- /dev/null +++ b/roles/desktop-environment/files/.config/waybar/config @@ -0,0 +1,42 @@ +{ + "modules-left": ["sway/workspaces", "sway/mode"], + "modules-center": ["clock"], + "modules-right": ["cpu", "memory", "network", "pulseaudio", "battery", "custom/power"], + "sway/workspaces": { + "disable-scroll": true + }, + "clock": { + "format": " {:%H:%M %d.%m.}", + "timezone": "Europe/Berlin" + }, + "cpu": { + "interval": 5, + "format": " {usage}%" + }, + "memory": { + "interval": 5, + "format": " {used} GiB/{total} GiB ({percentage}%)" + }, + "network": { + "format-ethernet": " {ipaddr}", + "format-wifi": "{icon} {essid}", + "format-disconnected": "", + "format-icons": ["", "", "", "", ""] + }, + "pulseaudio": { + "format": "{icon} {volume}%", + "format-muted": " muted", + "format-icons": ["", "", ""], + "reverse-scrolling": true, + "on-click": "swaymsg exec amixer -q set Master toggle" + }, + "battery": { + "format": "{icon} {capacity}%", + "format-charging": " {capacity}%", + "format-icons": ["", "", "", "", ""] + }, + "custom/power":{ + "format":"  ", + "on-click":"swaynag -t warning -m 'Power Menu Options' -b 'Logout' 'swaymsg exit' -b 'Suspend' 'swaymsg exec sudo systemctl suspend' -b 'Reboot' 'swaymsg exec sudo systemctl reboot' -b 'Shutdown' 'swaymsg exec sudo systemctl poweroff'" + } +} diff --git a/roles/desktop-environment/tasks/main.yml b/roles/desktop-environment/tasks/main.yml new file mode 100644 index 0000000..953c304 --- /dev/null +++ b/roles/desktop-environment/tasks/main.yml @@ -0,0 +1,30 @@ +- name: Install packages for desktop environment + become: yes + apt: + state: latest + name: + - sway + - xwayland + - swaylock + - waybar + - xfce4-appfinder + - pipewire + - pipewire-pulse + - alsa-utils + - brightnessctl + - flatpak + - thunar + - adwaita-icon-theme + - fonts-firacode + - fonts-font-awesome + - fonts-noto-color-emoji + +- name: Install wezterm + become: yes + community.general.flatpak: + name: org.wezfurlong.wezterm + state: present + +- name: Copy config files + src: {{ role_path }}/files/ + dst: {{ ansible_env.HOME }} \ No newline at end of file