From 321d929e5ac3a75710ebbde1cf3807bddd97fdbb Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Fri, 8 Jul 2022 04:10:19 +0100 Subject: [PATCH 01/67] wip --- group_vars/all.yml | 32 ++--- host_vars/victor.yml | 7 ++ hosts | 1 + local.yml | 9 +- roles/autofs/templates/auto.sshfs.j2 | 2 +- .../fish/files/conf.d/virtualfish-loader.fish | 4 +- roles/git/tasks/main.yml | 4 +- roles/python/tasks/main.yml | 5 + roles/sway/files/config | 1 + roles/sway/files/config.d/00-default | 16 +++ roles/sway/files/config.d/01-vars | 27 ++++ roles/sway/files/config.d/10-input | 5 + roles/sway/files/config.d/50-appearance | 5 + roles/sway/files/config.d/50-bar | 18 +++ roles/sway/files/config.d/50-idle | 12 ++ roles/sway/files/config.d/50-keys-launch | 32 +++++ roles/sway/files/config.d/50-keys-media | 7 ++ roles/sway/files/config.d/50-keys-navigation | 116 ++++++++++++++++++ roles/sway/files/config.d/50-keys-resize | 30 +++++ roles/sway/files/config.d/50-keys-sway | 8 ++ roles/sway/files/config.d/50-keys-window | 9 ++ roles/sway/files/config.d/50-per-window | 19 +++ roles/sway/files/config.d/60-exec | 3 + roles/sway/files/workstyle.toml | 57 +++++++++ roles/sway/tasks/main.yml | 48 ++++++++ roles/sway/vars/main.yml | 11 ++ 26 files changed, 463 insertions(+), 25 deletions(-) create mode 100644 host_vars/victor.yml create mode 100644 roles/sway/files/config create mode 100644 roles/sway/files/config.d/00-default create mode 100644 roles/sway/files/config.d/01-vars create mode 100644 roles/sway/files/config.d/10-input create mode 100644 roles/sway/files/config.d/50-appearance create mode 100644 roles/sway/files/config.d/50-bar create mode 100644 roles/sway/files/config.d/50-idle create mode 100644 roles/sway/files/config.d/50-keys-launch create mode 100644 roles/sway/files/config.d/50-keys-media create mode 100644 roles/sway/files/config.d/50-keys-navigation create mode 100644 roles/sway/files/config.d/50-keys-resize create mode 100644 roles/sway/files/config.d/50-keys-sway create mode 100644 roles/sway/files/config.d/50-keys-window create mode 100644 roles/sway/files/config.d/50-per-window create mode 100644 roles/sway/files/config.d/60-exec create mode 100644 roles/sway/files/workstyle.toml create mode 100644 roles/sway/tasks/main.yml create mode 100644 roles/sway/vars/main.yml diff --git a/group_vars/all.yml b/group_vars/all.yml index 0e4b40e..c3b6100 100644 --- a/group_vars/all.yml +++ b/group_vars/all.yml @@ -28,20 +28,20 @@ apt_repos: repo: ppa:libreoffice/ppa apt_packages: - - arandr + # - arandr - audacity - baobab - build-essential - - chromium-browser + # - chromium-browser - code - curl - dconf-editor - - default-jre - - feh + # - default-jre + # - feh - flameshot - fonts-noto - gimp - - gnupg2 + # - gnupg2 - gpick - htop - httpie @@ -50,9 +50,9 @@ apt_packages: - iperf - libjpeg-dev - libpq-dev - - libreoffice + # - libreoffice - libxslt1-dev - - lxappearance + # - lxappearance - meld - mpv - ncdu @@ -65,26 +65,26 @@ apt_packages: - playerctl - powertop - pwgen - - ruby - - ruby-dev + # - ruby + # - ruby-dev - screen - screenruler - - software-properties-common + # - software-properties-common - spotify-client - sshfs - sudo - syncthing - tailscale - tmux - - units + # - units - unrar - vim - vlc - wget - whois - wine - - xautomation - - xdotool + # - xautomation + # - xdotool - zbar-tools deb_packages: @@ -102,9 +102,9 @@ deb_packages: version: "0.20.1" - pkg: steam-launcher url: https://steamcdn-a.akamaihd.net/client/installer/steam.deb - - pkg: dug - url: https://github.com/unfrl/dug/releases/download/0.0.85/dug.0.0.85.linux-x64.deb - version: "0.0.85" + # - pkg: dug + # url: https://github.com/unfrl/dug/releases/download/0.0.85/dug.0.0.85.linux-x64.deb + # version: "0.0.85" bins: - name: aws-vault diff --git a/host_vars/victor.yml b/host_vars/victor.yml new file mode 100644 index 0000000..f1beca3 --- /dev/null +++ b/host_vars/victor.yml @@ -0,0 +1,7 @@ +git_email: will@wjdp.uk +git_signing_key: 4DC1AA6287F8CC4A + +wallpaper: ~/dotfiles/wallpapers/1440p/dennis-schweizer-18nR85wWyLY-unsplash.jpg + +screen_left: DP-2.8 +screen_right: DP-5 diff --git a/hosts b/hosts index ad55061..ba928a3 100644 --- a/hosts +++ b/hosts @@ -1,6 +1,7 @@ dux vulcan vulcan-london +victor [all:vars] ansible_connection=local diff --git a/local.yml b/local.yml index cb2d297..f636389 100644 --- a/local.yml +++ b/local.yml @@ -2,16 +2,17 @@ hosts: "{{ host }}" roles: - { role: apt, tags: ["apt"] } - - { role: bin, tags: ["bin"] } + # - { role: bin, tags: ["bin"] } - { role: linux, tags: ["linux"] } - - { role: dotfiles, tags: ["dotfiles"] } + - { role: python, tags: ["python"] } + # - { role: dotfiles, tags: ["dotfiles"] } - { role: autofs, tags: ["autofs"] } - { role: fish, tags: ["fish"] } - { role: fonts, tags: ["fonts"] } - { role: gnome, tags: ["gnome"] } - - { role: regolith } + # - { role: regolith } + - { role: sway, tags: ["sway"] } - { role: git, tags: ["git"] } - - { role: python, tags: ["python"] } - { role: node, tags: ["node"] } - { role: vim, tags: ["vim"] } - { role: sublime, tags: ["sublime"] } diff --git a/roles/autofs/templates/auto.sshfs.j2 b/roles/autofs/templates/auto.sshfs.j2 index 74eba70..ecb9dae 100644 --- a/roles/autofs/templates/auto.sshfs.j2 +++ b/roles/autofs/templates/auto.sshfs.j2 @@ -1,3 +1,3 @@ {% for mount in mounts %} -{{mount.name}} -fstype=fuse,rw,uid=1000,gid=1000,nodev,nonempty,noatime,allow_other,Ciphers=aes128-ctr,Compression=no :sshfs\#{{mount.host}}\:{{mount.path}} +{{mount.name}} -fstype=fuse,rw,uid=1000,gid=1000,nodev,noatime,allow_other,Ciphers=aes128-ctr,Compression=no :sshfs\#{{mount.host}}\:{{mount.path}} {% endfor %} diff --git a/roles/fish/files/conf.d/virtualfish-loader.fish b/roles/fish/files/conf.d/virtualfish-loader.fish index 839b90a..209dd5e 100644 --- a/roles/fish/files/conf.d/virtualfish-loader.fish +++ b/roles/fish/files/conf.d/virtualfish-loader.fish @@ -1,5 +1,5 @@ set -g VIRTUALFISH_VERSION 2.5.0 set -g VIRTUALFISH_PYTHON_EXEC /usr/bin/python3 -source /home/will/.local/lib/python3.8/site-packages/virtualfish/virtual.fish -source /home/will/.local/lib/python3.8/site-packages/virtualfish/auto_activation.fish +source /home/will/.local/lib/python3.10/site-packages/virtualfish/virtual.fish +source /home/will/.local/lib/python3.10/site-packages/virtualfish/auto_activation.fish emit virtualfish_did_setup_plugins diff --git a/roles/git/tasks/main.yml b/roles/git/tasks/main.yml index c73e8c7..d582007 100644 --- a/roles/git/tasks/main.yml +++ b/roles/git/tasks/main.yml @@ -1,10 +1,10 @@ - name: Install git apt: name=git state=present - become_method: sudo + become: yes - name: Install git-lfs apt: name=git-lfs state=present - become_method: sudo + become: yes - name: Link global gitignore file file: diff --git a/roles/python/tasks/main.yml b/roles/python/tasks/main.yml index 63054ef..94fd0d9 100644 --- a/roles/python/tasks/main.yml +++ b/roles/python/tasks/main.yml @@ -5,8 +5,13 @@ - python3 - python3-pip - python3-dev + - python3.8 + - python3.8-dev - python3.9 - python3.9-dev + - python3.10 + - python3.10-dev + - python-is-python3 state: present - name: Check if poetry is installed diff --git a/roles/sway/files/config b/roles/sway/files/config new file mode 100644 index 0000000..54adc14 --- /dev/null +++ b/roles/sway/files/config @@ -0,0 +1 @@ +include ~/.config/sway/config.d/* diff --git a/roles/sway/files/config.d/00-default b/roles/sway/files/config.d/00-default new file mode 100644 index 0000000..4a04b68 --- /dev/null +++ b/roles/sway/files/config.d/00-default @@ -0,0 +1,16 @@ +include /etc/sway/config.d/* + + + +# +# Scratchpad: +# + # Sway has a "scratchpad", which is a bag of holding for windows. + # You can send windows there and get them back later. + + # 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 diff --git a/roles/sway/files/config.d/01-vars b/roles/sway/files/config.d/01-vars new file mode 100644 index 0000000..51e92d9 --- /dev/null +++ b/roles/sway/files/config.d/01-vars @@ -0,0 +1,27 @@ +### Variables + +set $wallpaper ~/dotfiles/wallpapers/1080p/ltmWANZ.png + +# WM key. Use Mod1 for Alt. +set $mod Mod4 +set $alt Mod1 + +# Home row direction keys, like vim +set $left h +set $down j +set $up k +set $right l + +# Apps +set $term gnome-terminal +set $menu dmenu_path | dmenu | xargs swaymsg exec -- +set $launcher-daemon /usr/bin/python3 /usr/bin/ulauncher --hide-window 1 > /tmp/ulauncher.log 2>&1 +set $launcher ulauncher-toggle +set $program.files /usr/bin/nemo + +# Session management +set $program.lock swaylock -c 172032 -ef -i $HOME/dotfiles/wallpapers/dual/firewatch-hike.png && playerctl -a pause +set $program.logout /usr/bin/gnome-session-quit --logout --no-prompt +set $program.reboot reboot +set $program.shutdown poweroff +set $program.sleep systemctl suspend diff --git a/roles/sway/files/config.d/10-input b/roles/sway/files/config.d/10-input new file mode 100644 index 0000000..60ba637 --- /dev/null +++ b/roles/sway/files/config.d/10-input @@ -0,0 +1,5 @@ +input type:keyboard { + xkb_layout gb +} + +seat seat0 hide_cursor 500 diff --git a/roles/sway/files/config.d/50-appearance b/roles/sway/files/config.d/50-appearance new file mode 100644 index 0000000..8c191c7 --- /dev/null +++ b/roles/sway/files/config.d/50-appearance @@ -0,0 +1,5 @@ +output * bg $wallpaper fill + +hide_edge_borders smart + +default_border normal 2 diff --git a/roles/sway/files/config.d/50-bar b/roles/sway/files/config.d/50-bar new file mode 100644 index 0000000..b45f426 --- /dev/null +++ b/roles/sway/files/config.d/50-bar @@ -0,0 +1,18 @@ +bar { + position top + + # When the status_command prints a new line to stdout, swaybar updates. + # The default just shows the current date and time. + status_command while date +'%Y-%m-%d %I:%M:%S %p'; do sleep 1; done + + font pango:DejaVu Sans Mono 12 + + colors { + statusline #ffffff + background #0c0c0c + focused_background #1b101f00 + focused_workspace #1659c4 #1659c4 #ffffff + inactive_workspace #00000000 #00000000 #ffffff88 + urgent_workspace #ff0000 #ff0000 #ffffff + } +} diff --git a/roles/sway/files/config.d/50-idle b/roles/sway/files/config.d/50-idle new file mode 100644 index 0000000..a34c646 --- /dev/null +++ b/roles/sway/files/config.d/50-idle @@ -0,0 +1,12 @@ +### Idle configuration +# +# Example configuration: +# +# exec swayidle -w \ +# timeout 300 'swaylock -f -c 000000' \ +# timeout 600 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \ +# before-sleep 'swaylock -f -c 000000' +# +# This will lock your screen after 300 seconds of inactivity, then turn off +# your displays after another 300 seconds, and turn your screens back on when +# resumed. It will also lock your screen before your computer goes to sleep. diff --git a/roles/sway/files/config.d/50-keys-launch b/roles/sway/files/config.d/50-keys-launch new file mode 100644 index 0000000..1a95bd7 --- /dev/null +++ b/roles/sway/files/config.d/50-keys-launch @@ -0,0 +1,32 @@ +# Launcher +bindsym $mod+d exec $launcher +bindsym $mod+Space exec $launcher +bindsym $mod+Shift+d exec $menu + +# Terminal +bindsym $mod+Return exec $term + +## Launch // Web Browser // <◇> c ## +bindsym $mod+c exec gtk-launch $(xdg-settings get default-web-browser) +bindsym $mod+Shift+c exec firefox --private-window + +## Launch // File Browser // <◇> n ## +bindsym $mod+n exec $program.files + +## Lock Screen +bindsym $mod+l exec $program.lock + +## Session Management +set $mode_system SYS +mode "$mode_system" { + bindsym l exec $program.lock, mode "default" + bindsym Control+l exec $program.logout logout, mode "default" + bindsym s exec $program.sleep, mode "default" + bindsym Control+r exec $program.reboot, mode "default" + bindsym Control+s exec $program.shutdown, mode "default" + + # back to normal: Enter or Escape + bindsym Return mode "default" + bindsym Escape mode "default" +} +bindsym $mod+Escape mode "$mode_system" diff --git a/roles/sway/files/config.d/50-keys-media b/roles/sway/files/config.d/50-keys-media new file mode 100644 index 0000000..fbb2e21 --- /dev/null +++ b/roles/sway/files/config.d/50-keys-media @@ -0,0 +1,7 @@ +# Media controls +## Launch // Play / Pause // <◇> p ## +bindsym $mod+p exec playerctl play-pause +## Launch // Prev Track // <◇> [ ## +bindsym $mod+bracketleft exec playerctl previous +## Launch // Next Track // <◇> ] ## +bindsym $mod+bracketright exec playerctl next diff --git a/roles/sway/files/config.d/50-keys-navigation b/roles/sway/files/config.d/50-keys-navigation new file mode 100644 index 0000000..9155c0c --- /dev/null +++ b/roles/sway/files/config.d/50-keys-navigation @@ -0,0 +1,116 @@ +bindsym $mod+Left focus left +bindsym $mod+Down focus down +bindsym $mod+Up focus up +bindsym $mod+Right focus right + +## Modify // Window Position // <◇> ↑ ↓ ← → ## +bindsym $mod+Shift+Left move left +bindsym $mod+Shift+Down move down +bindsym $mod+Shift+Up move up +bindsym $mod+Shift+Right move right + +## Modify // Containing Workspace // <◇> ↑ ↓ ← → ## +bindsym $mod+Ctrl+Left move workspace to output left +bindsym $mod+Ctrl+Down move workspace to output down +bindsym $mod+Ctrl+Up move workspace to output up +bindsym $mod+Ctrl+Right move workspace to output right + +## Modify // Split Direction // <◇> h / v ## +bindsym $mod+h splith +bindsym $mod+v splitv + +## Modify // Toggle Tabbed // <◇> w ## +## Modify // Toggle Split // <◇> e ## +bindsym $mod+w layout tabbed +bindsym $mod+e layout toggle splith splitv + +## Modify // Sticky Toggle // <◇> k ## +bindsym $mod+k sticky toggle + +## Modify // Window Fullscreen Toggle // <◇> f ## +bindsym $mod+f fullscreen + +## Modify // Float Toggle // <◇> f ## +bindsym $mod+Shift+f floating toggle + +## Navigate // Next Workspace // <◇> Tab ## +bindsym $mod+Tab workspace next_on_output + +## Navigate // Previous Workspace // <◇> Tab ## +bindsym $mod+Shift+Tab workspace prev_on_output + +## Navigate // Focus Parent // <◇> a ## +bindsym $mod+a focus parent + +## Navigate // Focus Child // <◇> s ## +bindsym $mod+s focus child + +## Navigate // Switch to Urgent // <◇> x ## +bindsym $mod+x [urgent=latest] focus + +## Navigate // Back and Forth // <◇> z ## +bindsym $mod+z workspace back_and_forth + +## Navigate // Workspaces 1-10 // <◇> 0..9 ## +bindsym $mod+1 workspace number 1 +bindsym $mod+2 workspace number 2 +bindsym $mod+3 workspace number 3 +bindsym $mod+4 workspace number 4 +bindsym $mod+5 workspace number 5 +bindsym $mod+6 workspace number 6 +bindsym $mod+7 workspace number 7 +bindsym $mod+8 workspace number 8 +## Navigate // Workspace 11 - 19 // <◇> 0..9 ## +bindsym $mod+Ctrl+1 workspace number 11 +bindsym $mod+Ctrl+2 workspace number 12 +bindsym $mod+Ctrl+3 workspace number 13 +bindsym $mod+Ctrl+4 workspace number 14 +bindsym $mod+Ctrl+5 workspace number 15 +bindsym $mod+Ctrl+6 workspace number 16 +bindsym $mod+Ctrl+7 workspace number 17 +bindsym $mod+Ctrl+8 workspace number 18 +## Navigate // Workspace A-D // <◇> J,K,L,P ## +bindsym $mod+$alt+Ctrl+j workspace A +bindsym $mod+$alt+Ctrl+k workspace B +bindsym $mod+$alt+Ctrl+l workspace C +bindsym $mod+$alt+Ctrl+p workspace D + +## Modify // Move Window to Workspace 1 - 10 // <◇> 0..9 ## +bindsym $mod+Shift+1 move container to workspace number 1 +bindsym $mod+Shift+2 move container to workspace number 2 +bindsym $mod+Shift+3 move container to workspace number 3 +bindsym $mod+Shift+4 move container to workspace number 4 +bindsym $mod+Shift+5 move container to workspace number 5 +bindsym $mod+Shift+6 move container to workspace number 6 +bindsym $mod+Shift+7 move container to workspace number 7 +bindsym $mod+Shift+8 move container to workspace number 8 + +## Modify // Move Window to Workspace 11 - 19// <◇> 0..9 ## +bindsym $mod+Shift+Ctrl+1 move container to workspace number 11 +bindsym $mod+Shift+Ctrl+2 move container to workspace number 12 +bindsym $mod+Shift+Ctrl+3 move container to workspace number 13 +bindsym $mod+Shift+Ctrl+4 move container to workspace number 14 +bindsym $mod+Shift+Ctrl+5 move container to workspace number 15 +bindsym $mod+Shift+Ctrl+6 move container to workspace number 16 +bindsym $mod+Shift+Ctrl+7 move container to workspace number 17 +bindsym $mod+Shift+Ctrl+8 move container to workspace number 18 + +# move focused container to workspace, move to workspace +## Modify // Carry Window to Workspace 1 - 10// <◇> 0..9 ## +bindsym $mod+$alt+1 move container to workspace number 1; workspace number 1 +bindsym $mod+$alt+2 move container to workspace number 2; workspace number 2 +bindsym $mod+$alt+3 move container to workspace number 3; workspace number 3 +bindsym $mod+$alt+4 move container to workspace number 4; workspace number 4 +bindsym $mod+$alt+5 move container to workspace number 5; workspace number 5 +bindsym $mod+$alt+6 move container to workspace number 6; workspace number 6 +bindsym $mod+$alt+7 move container to workspace number 7; workspace number 7 +bindsym $mod+$alt+8 move container to workspace number 8; workspace number 8 +## Modify // Carry Window to Workspace 11 - 19 // <◇> 0..9 ## +bindsym $mod+$alt+Ctrl+1 move container to workspace number 11; workspace number 11 +bindsym $mod+$alt+Ctrl+2 move container to workspace number 12; workspace number 12 +bindsym $mod+$alt+Ctrl+3 move container to workspace number 13; workspace number 13 +bindsym $mod+$alt+Ctrl+4 move container to workspace number 14; workspace number 14 +bindsym $mod+$alt+Ctrl+5 move container to workspace number 15; workspace number 15 +bindsym $mod+$alt+Ctrl+6 move container to workspace number 16; workspace number 16 +bindsym $mod+$alt+Ctrl+7 move container to workspace number 17; workspace number 17 +bindsym $mod+$alt+Ctrl+8 move container to workspace number 18; workspace number 18 diff --git a/roles/sway/files/config.d/50-keys-resize b/roles/sway/files/config.d/50-keys-resize new file mode 100644 index 0000000..f150708 --- /dev/null +++ b/roles/sway/files/config.d/50-keys-resize @@ -0,0 +1,30 @@ +set $resize_md 4 +set $resize_lg 16 + +## Resize // Enter Resize Mode // <◇> r ## +mode "RESIZE" { + # These bindings trigger as soon as you enter the resize mode + + ## Resize // Resize Window // ↑ ↓ ← → ## + bindsym Left resize shrink width $resize_md px or $resize_md ppt + bindsym Down resize grow height $resize_md px or $resize_md ppt + bindsym Up resize shrink height $resize_md px or $resize_md ppt + bindsym Right resize grow width $resize_md px or $resize_md ppt + + bindsym Shift+Left resize shrink width $resize_lg px or $resize_lg ppt + bindsym Shift+Down resize grow height $resize_lg px or $resize_lg ppt + bindsym Shift+Up resize shrink height $resize_lg px or $resize_lg ppt + bindsym Shift+Right resize grow width $resize_lg px or $resize_lg ppt + + ## Resize // Window Gaps // + - ## + bindsym minus gaps inner current minus 6 + bindsym plus gaps inner current plus 6 + bindsym Shift+minus gaps inner current minus 12 + bindsym Shift+plus gaps inner current plus 12 + + ## Resize // Exit Resize Mode // Escape or Enter ## + bindsym Return mode "default" + bindsym Escape mode "default" + bindsym $mod+r mode "default" +} +bindsym $mod+r mode "RESIZE" diff --git a/roles/sway/files/config.d/50-keys-sway b/roles/sway/files/config.d/50-keys-sway new file mode 100644 index 0000000..6c34ddc --- /dev/null +++ b/roles/sway/files/config.d/50-keys-sway @@ -0,0 +1,8 @@ +# Reload the configuration file +bindsym $mod+Shift+r reload + +# Exit sway (logs you out of your Wayland session) +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' + +## Modify // Toggle Bar // <◇> i ## +bindsym $mod+i bar mode toggle diff --git a/roles/sway/files/config.d/50-keys-window b/roles/sway/files/config.d/50-keys-window new file mode 100644 index 0000000..16cc5a9 --- /dev/null +++ b/roles/sway/files/config.d/50-keys-window @@ -0,0 +1,9 @@ +# Kill focused window +bindsym $mod+q kill + +# Drag floating windows by holding down $mod and left mouse button. +# Resize them with right mouse button + $mod. +# Despite the name, also works for non-floating windows. +# Change normal to inverse to use left mouse button for resizing and right +# mouse button for dragging. +floating_modifier $mod normal diff --git a/roles/sway/files/config.d/50-per-window b/roles/sway/files/config.d/50-per-window new file mode 100644 index 0000000..ca90fa5 --- /dev/null +++ b/roles/sway/files/config.d/50-per-window @@ -0,0 +1,19 @@ +for_window [app_id="gnome-control-center"] floating enable +for_window [app_id="ulauncher"] border none +for_window [app_id="gnome-terminal-server"] opacity 0.95 + +# from i3 +for_window [class="jetbrains-pycharm" title="win0"] floating enable +for_window [class="plexamp"] floating enable +for_window [class="java-lang-Thread"] floating enable +for_window [class="Workrave"] border none +for_window [class="Workrave"] floating enable +for_window [class="jetbrains-toolbox"] floating enable +for_window [class="1Password"] floating enable +for_window [class="1password"] floating enable +for_window [class="plexamp"] floating enable +for_window [class="Plexamp"] floating enable +for_window [title="About Mozilla Firefox"] floating enable +for_window [class="jetbrains-pycharm" title="win0"] floating enable +for_window [title="Welcome to PyCharm"] floating enable +for_window [class="MPlayer"] floating enable diff --git a/roles/sway/files/config.d/60-exec b/roles/sway/files/config.d/60-exec new file mode 100644 index 0000000..e6d930d --- /dev/null +++ b/roles/sway/files/config.d/60-exec @@ -0,0 +1,3 @@ +exec $launcher-daemon +exec_always --no-startup-id ~/.cargo/bin/workstyle &> /tmp/workstyle.log +exec wmname LG3D # for java apps like pycharm diff --git a/roles/sway/files/workstyle.toml b/roles/sway/files/workstyle.toml new file mode 100644 index 0000000..f66d4dc --- /dev/null +++ b/roles/sway/files/workstyle.toml @@ -0,0 +1,57 @@ +# Config for workstyle +# +# Format: +# "pattern" = "icon" +# +# The pattern will be used to match against the application name, class_id or WM_CLASS. +# The icon will be used to represent that application. +# +# Note if multiple patterns are present in the same application name, +# precedence is given in order of apparition in this file. + +"alacritty" = "" +"github" = "" +"rust" = "" +"google" = "" +"private browsing" = "" +"firefox" = "" +"chrome" = "" +"file manager" = "" +"libreoffice calc" = "" +"libreoffice writer" = "" +"libreoffice" = "" +"vim" = "" +"gthumb" = "" +"menu" = "" +"calculator" = "" +"transmission" = "" +"videostream" = "" +"mpv" = "" +"music" = "" +"disk usage" = "" +".pdf" = "" +"spotify" = "" +"foot" = "" +"gnome-terminal-server"="" +"sublime_text" = "" +"pavucontrol" = "" +"ulauncher" = "▼" +"code" = "" +"nemo" = "" +"file-roller" = "遲" +"sublime_merge" = "" +"jetbrains-pycharm" = "" +"eog" = "" +"software" = "" +"gnome-power-statistics"="" +"audacity"="" +"gimp"="" +"inkscape"="" +"plex"="" +"youtube"="" +"obsidian"="💎" +"printer"="" +"steam"="" +[other] +fallback_icon = "🤨" +deduplicate_icons = true diff --git a/roles/sway/tasks/main.yml b/roles/sway/tasks/main.yml new file mode 100644 index 0000000..1d86467 --- /dev/null +++ b/roles/sway/tasks/main.yml @@ -0,0 +1,48 @@ +- name: Add repos + loop: "{{ sway_apt_repos }}" + become: yes + apt_repository: + repo: "{{ item }}" + state: present + +- name: Install apt packages + become: yes + apt: name={{ sway_apt_packages }} state=present + +- name: Link fdfind to fd + become: yes + file: + src: "/usr/bin/fdfind" + dest: "/usr/bin/fd" + state: link + force: yes + +- name: Ensure directories exist + file: + path: "{{ item }}" + state: directory + mode: 0775 + loop: + - "{{ dotfiles_user_home }}/.config/sway" + - "{{ dotfiles_user_home }}/.config/workstyle" + +- name: Link sway config + file: + src: "{{ dotfiles_home }}/roles/sway/files/config" + dest: "{{ dotfiles_user_home }}/.config/sway/config" + state: link + force: yes + +- name: Link sway config.d + file: + src: "{{ dotfiles_home }}/roles/sway/files/config.d" + dest: "{{ dotfiles_user_home }}/.config/sway/config.d" + state: link + force: yes + +- name: Link workstyle config + file: + src: "{{ dotfiles_home }}/roles/sway/files/workstyle.toml" + dest: "{{ dotfiles_user_home }}/.config/workstyle/config.toml" + state: link + force: yes diff --git a/roles/sway/vars/main.yml b/roles/sway/vars/main.yml new file mode 100644 index 0000000..cc7d0d3 --- /dev/null +++ b/roles/sway/vars/main.yml @@ -0,0 +1,11 @@ +sway_apt_repos: + - ppa:agornostal/ulauncher + +sway_apt_packages: + - sway + - swaylock + - swayidle + - ulauncher + - fd-find + - wl-clipboard + - suckless-tools From 47f486468721f8b3e501dea88bb0b4a343374443 Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Sat, 28 Jan 2023 05:37:43 +0000 Subject: [PATCH 02/67] Update with dux new case --- host_vars/dux.yml | 2 +- .../files/sublime-text/Package Control.sublime-settings | 2 +- .../files/sublime-text/Preferences.sublime-settings | 8 +++++++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/host_vars/dux.yml b/host_vars/dux.yml index 19670f2..bb14645 100644 --- a/host_vars/dux.yml +++ b/host_vars/dux.yml @@ -4,4 +4,4 @@ git_signing_key: 4DC1AA6287F8CC4A wallpaper: ~/dotfiles/wallpapers/1440p/dennis-schweizer-18nR85wWyLY-unsplash.jpg screen_left: DisplayPort-3 -screen_right: DisplayPort-2 +screen_right: DisplayPort-1 diff --git a/roles/sublime/files/sublime-text/Package Control.sublime-settings b/roles/sublime/files/sublime-text/Package Control.sublime-settings index 0537fc1..26b21b5 100644 --- a/roles/sublime/files/sublime-text/Package Control.sublime-settings +++ b/roles/sublime/files/sublime-text/Package Control.sublime-settings @@ -18,6 +18,6 @@ "Sass", "TypeScript", "TypeScript Syntax", - "WordCount" + "WordingStatus" ] } diff --git a/roles/sublime/files/sublime-text/Preferences.sublime-settings b/roles/sublime/files/sublime-text/Preferences.sublime-settings index eda587e..d10d253 100644 --- a/roles/sublime/files/sublime-text/Preferences.sublime-settings +++ b/roles/sublime/files/sublime-text/Preferences.sublime-settings @@ -53,7 +53,13 @@ "font_size": 14, "highlight_line": true, "highlight_modified_tabs": true, - "ignored_packages": ["Rust", "Rust Enhanced", "Vintage"], + "ignored_packages": [ + "Rust", + "Rust Enhanced", + "TypeScript", + "TypeScript Syntax", + "Vintage" + ], "rulers": [120], "save_on_focus_lost": true, "show_encoding": true, From a04d6d1d4d9a96390bbdfd897cd848499da1652b Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Sat, 4 Feb 2023 19:47:40 +0000 Subject: [PATCH 03/67] Remove migrated config from regolith --- roles/regolith/files/i3.config | 321 +-------------------------------- 1 file changed, 6 insertions(+), 315 deletions(-) diff --git a/roles/regolith/files/i3.config b/roles/regolith/files/i3.config index f2202c9..8789413 100644 --- a/roles/regolith/files/i3.config +++ b/roles/regolith/files/i3.config @@ -1,79 +1,4 @@ -############################################################################### -# i3-gaps config file for the Regolith Desktop Environment -# -# Please see http://i3wm.org/docs/userguide.html for a complete reference! -# -############################################################################### -# -# In this config file, may values are taken from Xresources with the directive -# set_from_resource: -# -# set_from_resource -# -# This configuration file utilizes Xresource variables to enable users to -# change the configuration without having to make a copy of this config file. -# The benefit to not copying this file is easier upgrading in the future. -# To update a value in this config without making a copy, update the Xresource -# value in the file ~/.config/regolith/Xresources. -# -# For example, to change the bar position to the top of the screen this is the -# i3 config entry: -# set_from_resource $i3-wm.bar.position i3-wm.bar.position bottom -# -# So add this line to ~/.config/regolith/Xresources to change it's value: -# i3-wm.bar.position: top -# -# Reload i3 after making Xresource changes. Learn more at -# https://regolith-linux.org/docs/howto/override-xres/ -# -############################################################################### -# -# This file uses a machine-parsable format for comments. The schema: -# ## // // ## -# Learn more at https://github.com/regolith-linux/remontoire -# -############################################################################### - -############################################################################### -# Meta Key Mappings -# Alt key is Mod1, and Super key is Mod4 -############################################################################### - -set_from_resource $mod i3-wm.mod Mod4 -set_from_resource $alt i3-wm.alt Mod1 - -############################################################################### -# Workspace Names -# These are the labels which define each i3 workspace. -############################################################################### -set_from_resource $ws1 i3-wm.workspace.01.name "1" -set_from_resource $ws2 i3-wm.workspace.02.name "2" -set_from_resource $ws3 i3-wm.workspace.03.name "3" -set_from_resource $ws4 i3-wm.workspace.04.name "4" -set_from_resource $ws5 i3-wm.workspace.05.name "5" -set_from_resource $ws6 i3-wm.workspace.06.name "6" -set_from_resource $ws7 i3-wm.workspace.07.name "7" -set_from_resource $ws8 i3-wm.workspace.08.name "8" -#set_from_resource $ws9 i3-wm.workspace.09.name "9" -#set_from_resource $ws10 i3-wm.workspace.10.name "10" -set_from_resource $ws11 i3-wm.workspace.11.name "11" -set_from_resource $ws12 i3-wm.workspace.12.name "12" -set_from_resource $ws13 i3-wm.workspace.13.name "13" -set_from_resource $ws14 i3-wm.workspace.14.name "14" -set_from_resource $ws15 i3-wm.workspace.15.name "15" -set_from_resource $ws16 i3-wm.workspace.16.name "16" -set_from_resource $ws17 i3-wm.workspace.17.name "17" -set_from_resource $ws18 i3-wm.workspace.18.name "18" -#set_from_resource $ws19 i3-wm.workspace.19.name "19" -set_from_resource $wsA i3-wm.workspace.A.name "A" -set_from_resource $wsB i3-wm.workspace.B.name "B" -set_from_resource $wsC i3-wm.workspace.C.name "C" -set_from_resource $wsD i3-wm.workspace.D.name "D" - -set_from_resource $screen_left wjdp.screen_left "HDMI-A-0" -set_from_resource $screen_right wjdp.screen_right "DisplayPort-1" -set_from_resource $screen_internal wjdp.screen_internal "eDP" # Need to refer by index https://github.com/regolith-linux/regolith-desktop/issues/84#issuecomment-520169715 workspace "$ws1" output $screen_left @@ -103,49 +28,10 @@ workspace $wsD output $screen_internal # Launcher dialogs ############################################################################### -## Launch // Terminal // <◇> Enter ## -bindsym $mod+Return exec /usr/bin/x-terminal-emulator - -## Launch // Web Browser // <◇> c ## -bindsym $mod+c exec gtk-launch $(xdg-settings get default-web-browser) -bindsym $mod+Shift+c exec firefox --private-window - -## Launch // File Browser // <◇> n ## -set_from_resource $i3-wm.program.files i3-wm.program.files /usr/bin/nemo -bindsym $mod+n exec $i3-wm.program.files - ## Launch // Password Manager // <◇> j ## set_from_resource $i3-wm.program.password i3-wm.program.password bindsym $mod+j exec $i3-wm.program.password -set_from_resource $rofiTheme rofi.theme /etc/regolith/styles/cahuella/rofi.rasi - -## Launch // Application // <◇> Space ## -set_from_resource $i3-wm.program.launcher.app i3-wm.program.launcher.app rofi -show drun -theme $rofiTheme -bindsym $mod+space exec $i3-wm.program.launcher.app -bindsym $mod+d exec $i3-wm.program.launcher.app - -## Launch // Command // <◇> Space ## -set_from_resource $i3-wm.program.launcher.cmd i3-wm.program.launcher.cmd rofi -show run -theme $rofiTheme -bindsym $mod+Shift+space exec $i3-wm.program.launcher.cmd - -## Navigate // Window by Name // <◇> Space ## -set_from_resource $i3-wm.program.launcher.window i3-wm.program.launcher.window rofi -show window -theme $rofiTheme -bindsym $mod+Ctrl+space exec $i3-wm.program.launcher.window - -## Launch // File Search // <◇> Space ## -set_from_resource $i3-wm.program.file_search i3-wm.program.file_search rofi -show find -modi find:/usr/share/rofi/modi/finder.sh -bindsym $mod+$alt+space exec $i3-wm.program.file_search - -## Launch // SSH // <◇> G ## -bindsym $mod+g exec rofi -show ssh -theme $rofiTheme - -## Launch // Emojii Picker // <◇> U ## -bindsym $mod+u exec /home/will/.local/bin/rofimoji -f emojis - -## Launch // Help // <◇> ? ## -set_from_resource $i3-wm.program.help i3-wm.program.help /usr/bin/remontoire-toggle -bindsym $mod+question exec --no-startup-id $i3-wm.program.help ## Launch // Type Date // <◇> y ## bindsym $mod+y exec "sleep 0.5 && date +%Y-%m-%d | sed 's/./usleep 2,str &,/g' | xargs -d, xte" @@ -154,60 +40,11 @@ bindsym $mod+y exec "sleep 0.5 && date +%Y-%m-%d | sed 's/./usleep 2,str &,/g' # Window and Workspace Navigation ############################################################################### -## Navigate // Relative Window // <◇> ↑ ↓ ← → ## -bindsym $mod+Left focus left -bindsym $mod+Down focus down -bindsym $mod+Up focus up -bindsym $mod+Right focus right - -## Navigate // Workspaces 1-10 // <◇> 0..9 ## -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 -## Navigate // Workspace 11 - 19 // <◇> 0..9 ## -bindsym $mod+Ctrl+1 workspace number $ws11 -bindsym $mod+Ctrl+2 workspace number $ws12 -bindsym $mod+Ctrl+3 workspace number $ws13 -bindsym $mod+Ctrl+4 workspace number $ws14 -bindsym $mod+Ctrl+5 workspace number $ws15 -bindsym $mod+Ctrl+6 workspace number $ws16 -bindsym $mod+Ctrl+7 workspace number $ws17 -bindsym $mod+Ctrl+8 workspace number $ws18 -bindsym $mod+Ctrl+9 workspace number $ws19 -## Navigate // Workspace A-D // <◇> J,K,L,P ## -bindsym $mod+$alt+Ctrl+j workspace $wsA -bindsym $mod+$alt+Ctrl+k workspace $wsB -bindsym $mod+$alt+Ctrl+l workspace $wsC -bindsym $mod+$alt+Ctrl+p workspace $wsD - -## Navigate // Next Workspace // <◇> Tab ## -bindsym $mod+Tab workspace next_on_output - -## Navigate // Previous Workspace // <◇> Tab ## -bindsym $mod+Shift+Tab workspace prev_on_output + ## Navigate // Scratchpad // <◇> a ## bindsym $mod+Ctrl+a scratchpad show -## Navigate // Focus Parent // <◇> a ## -bindsym $mod+a focus parent - -## Navigate // Focus Child // <◇> s ## -bindsym $mod+s focus child - -## Navigate // Switch to Urgent // <◇> x ## -bindsym $mod+x [urgent=latest] focus - -## Navigate // Back and Forth // <◇> z ## -bindsym $mod+z workspace back_and_forth - ## Navigate // Named Workspace // <◇>? _ ## bindsym $mod+minus exec i3-input -f 'pango:Inconsolata 20' -F 'workspace %s' -P 'GOTO: ' @@ -216,27 +53,6 @@ bindsym $mod+minus exec i3-input -f 'pango:Inconsolata 20' -F 'workspace %s' -P # Window and Workspace Configuration ############################################################################### -## Modify // Window Position // <◇> ↑ ↓ ← → ## -bindsym $mod+Shift+Left move left -bindsym $mod+Shift+Down move down -bindsym $mod+Shift+Up move up -bindsym $mod+Shift+Right move right - -## Modify // Containing Workspace // <◇> ↑ ↓ ← → ## -bindsym $mod+Ctrl+Left move workspace to output left -bindsym $mod+Ctrl+Down move workspace to output down -bindsym $mod+Ctrl+Up move workspace to output up -bindsym $mod+Ctrl+Right move workspace to output right - -## Modify // Split Direction // <◇> h / v ## -bindsym $mod+h split h -bindsym $mod+v split v - -## Modify // Window Fullscreen Toggle // <◇> f ## -bindsym $mod+f fullscreen toggle - -## Modify // Float Toggle // <◇> f ## -bindsym $mod+Shift+f floating toggle ## Modify // Move to Scratchpad // <◇> m ## bindsym $mod+Ctrl+m move to scratchpad @@ -244,58 +60,9 @@ bindsym $mod+Ctrl+m move to scratchpad ## Modify // Tile/Float Focus Toggle // <◇> t ## bindsym $mod+Shift+t focus mode_toggle -## Modify // Toggle Tabbed // <◇> w ## -## Modify // Toggle Split // <◇> e ## -bindsym $mod+w layout tabbed -bindsym $mod+e layout toggle splith splitv - -## Modify // Sticky Toggle // <◇> k ## -bindsym $mod+k sticky toggle - -## Modify // Move Window to Workspace 1 - 10 // <◇> 0..9 ## -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 -## Modify // Move Window to Workspace 11 - 19// <◇> 0..9 ## -bindsym $mod+Shift+Ctrl+1 move container to workspace number $ws11 -bindsym $mod+Shift+Ctrl+2 move container to workspace number $ws12 -bindsym $mod+Shift+Ctrl+3 move container to workspace number $ws13 -bindsym $mod+Shift+Ctrl+4 move container to workspace number $ws14 -bindsym $mod+Shift+Ctrl+5 move container to workspace number $ws15 -bindsym $mod+Shift+Ctrl+6 move container to workspace number $ws16 -bindsym $mod+Shift+Ctrl+7 move container to workspace number $ws17 -bindsym $mod+Shift+Ctrl+8 move container to workspace number $ws18 -#bindsym $mod+Shift+Ctrl+9 move container to workspace number $ws19 - -# move focused container to workspace, move to workspace -## Modify // Carry Window to Workspace 1 - 10// <◇> 0..9 ## -bindsym $mod+$alt+1 move container to workspace number $ws1; workspace number $ws1 -bindsym $mod+$alt+2 move container to workspace number $ws2; workspace number $ws2 -bindsym $mod+$alt+3 move container to workspace number $ws3; workspace number $ws3 -bindsym $mod+$alt+4 move container to workspace number $ws4; workspace number $ws4 -bindsym $mod+$alt+5 move container to workspace number $ws5; workspace number $ws5 -bindsym $mod+$alt+6 move container to workspace number $ws6; workspace number $ws6 -bindsym $mod+$alt+7 move container to workspace number $ws7; workspace number $ws7 -bindsym $mod+$alt+8 move container to workspace number $ws8; workspace number $ws8 -#bindsym $mod+$alt+9 move container to workspace number $ws9; workspace number $ws9 -#bindsym $mod+$alt+0 move container to workspace number $ws10; workspace number $ws10 -## Modify // Carry Window to Workspace 11 - 19 // <◇> 0..9 ## -bindsym $mod+$alt+Ctrl+1 move container to workspace number $ws11; workspace number $ws11 -bindsym $mod+$alt+Ctrl+2 move container to workspace number $ws12; workspace number $ws12 -bindsym $mod+$alt+Ctrl+3 move container to workspace number $ws13; workspace number $ws13 -bindsym $mod+$alt+Ctrl+4 move container to workspace number $ws14; workspace number $ws14 -bindsym $mod+$alt+Ctrl+5 move container to workspace number $ws15; workspace number $ws15 -bindsym $mod+$alt+Ctrl+6 move container to workspace number $ws16; workspace number $ws16 -bindsym $mod+$alt+Ctrl+7 move container to workspace number $ws17; workspace number $ws17 -bindsym $mod+$alt+Ctrl+8 move container to workspace number $ws18; workspace number $ws18 -#bindsym $mod+$alt+Ctrl+9 move container to workspace number $ws19; workspace number $ws19 + + + ## Modify // Move To Named Workspace // <◇> _ ## bindsym $mod+Shift+minus exec i3-input -f 'pango:Inconsolata 20' -F 'move container to workspace %s' -P 'MVTO: ' @@ -306,50 +73,13 @@ bindsym $mod+numbersign exec i3-input -f 'pango:Inconsolata 20' -F 'title_format # Use Mouse+$mod to drag floating windows to their wanted position floating_modifier $mod -hide_edge_borders smart - ############################################################################### # Session Management ############################################################################### -## Session // Exit App // <◇> q ## -bindsym $mod+q [con_id="__focused__"] kill - ## Session // Terminate App // <◇> q ## bindsym $mod+Shift+q [con_id="__focused__"] exec --no-startup-id kill -9 $(xdotool getwindowfocus getwindowpid) -## Session // Reload i3 Config // <◇> c ## -bindsym $mod+Shift+r reload - -## Session // Refresh Session // <◇> r ## -set_from_resource $i3-wm.program.refresh_ui i3-wm.program.refresh_ui /usr/bin/regolith-look refresh -bindsym $mod+$alt+r exec --no-startup-id $i3-wm.program.refresh_ui - -## Session // Restart i3 // <◇> r ## -bindsym $mod+Ctrl+r restart - -## Session // Lock Screen // <◇> l ## -set_from_resource $i3-wm.program.lock i3-wm.program.lock dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock -bindsym $mod+l exec $i3-wm.program.lock - -set_from_resource $i3-wm.program.logout i3-wm.program.logout /usr/bin/gnome-session-quit --logout --no-prompt -set_from_resource $i3-wm.program.reboot i3-wm.program.reboot reboot -set_from_resource $i3-wm.program.shutdown i3-wm.program.shutdown poweroff -set_from_resource $i3-wm.program.sleep i3-wm.program.sleep systemctl suspend - -set $mode_system SYS -mode "$mode_system" { - bindsym l exec $i3-wm.program.lock, mode "default" - bindsym Control+l exec $i3-wm.program.logout logout, mode "default" - bindsym s exec $i3-wm.program.sleep, mode "default" - bindsym Control+r exec $i3-wm.program.reboot, mode "default" - bindsym Control+s exec $i3-wm.program.shutdown, mode "default" - - # back to normal: Enter or Escape - bindsym Return mode "default" - bindsym Escape mode "default" -} -bindsym $mod+Escape mode "$mode_system" ####################################k########################################### # System Management @@ -368,13 +98,6 @@ bindsym $mod+Shift+n exec $i3-wm.program.notificatiohen_ui bindsym --release Print exec --no-startup-id flameshot gui bindsym --release $mod+m exec --no-startup-id flameshot gui -# Media controls -## Launch // Play / Pause // <◇> p ## -bindsym $mod+p exec playerctl play-pause -## Launch // Prev Track // <◇> [ ## -bindsym $mod+bracketleft exec playerctl previous -## Launch // Next Track // <◇> ] ## -bindsym $mod+bracketright exec playerctl next ############################################################################### @@ -387,48 +110,16 @@ bindsym $mod+comma exec /usr/bin/i3-snapshot -o > /tmp/i3-snapshot ## Modify // Load Window Layout // <◇> . ## bindsym $mod+period exec /usr/bin/i3-snapshot -c < /tmp/i3-snapshot -# Toggle bar visibility -## Modify // Toggle Bar // <◇> i ## -bindsym $mod+i bar mode toggle + # Cause Settings app to float above tiled windows floating_maximum_size -1 x -1 -for_window [class="Gnome-control-center"] floating enable ############################################################################### # Window Resize and Gaps ############################################################################### -set $resize_md 4 -set $resize_lg 16 - -## Resize // Enter Resize Mode // <◇> r ## -mode "RESIZE" { - # These bindings trigger as soon as you enter the resize mode - - ## Resize // Resize Window // ↑ ↓ ← → ## - bindsym Left resize shrink width $resize_md px or $resize_md ppt - bindsym Down resize grow height $resize_md px or $resize_md ppt - bindsym Up resize shrink height $resize_md px or $resize_md ppt - bindsym Right resize grow width $resize_md px or $resize_md ppt - - bindsym Shift+Left resize shrink width $resize_lg px or $resize_lg ppt - bindsym Shift+Down resize grow height $resize_lg px or $resize_lg ppt - bindsym Shift+Up resize shrink height $resize_lg px or $resize_lg ppt - bindsym Shift+Right resize grow width $resize_lg px or $resize_lg ppt - - ## Resize // Window Gaps // + - ## - bindsym minus gaps inner current minus 6 - bindsym plus gaps inner current plus 6 - bindsym Shift+minus gaps inner current minus 12 - bindsym Shift+plus gaps inner current plus 12 - - ## Resize // Exit Resize Mode // Escape or Enter ## - bindsym Return mode "default" - bindsym Escape mode "default" - bindsym $mod+r mode "default" -} -bindsym $mod+r mode "RESIZE" + bindsym --whole-window --border $mod+shift+button4 resize shrink height 5 px or 5 ppt bindsym --whole-window --border $mod+shift+button5 resize grow height 5 px or 5 ppt From 5d462e9042523cf9625dceb5fc68575fcca2a561 Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Sat, 4 Feb 2023 23:02:27 +0000 Subject: [PATCH 04/67] Always launch firefox on mod+c --- roles/sway/files/config.d/50-keys-launch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/sway/files/config.d/50-keys-launch b/roles/sway/files/config.d/50-keys-launch index 1a95bd7..c818c8e 100644 --- a/roles/sway/files/config.d/50-keys-launch +++ b/roles/sway/files/config.d/50-keys-launch @@ -7,7 +7,7 @@ bindsym $mod+Shift+d exec $menu bindsym $mod+Return exec $term ## Launch // Web Browser // <◇> c ## -bindsym $mod+c exec gtk-launch $(xdg-settings get default-web-browser) +bindsym $mod+c exec firefox bindsym $mod+Shift+c exec firefox --private-window ## Launch // File Browser // <◇> n ## From dfa82faf0d0380b6d85517bd1a21801c70286d61 Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Sun, 12 Feb 2023 04:52:38 +0000 Subject: [PATCH 05/67] Use full paths in dot-bootstrap as PATH isn't set up then --- bin/dot-bootstrap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/dot-bootstrap b/bin/dot-bootstrap index 69c4db9..e2aada3 100755 --- a/bin/dot-bootstrap +++ b/bin/dot-bootstrap @@ -2,4 +2,4 @@ set -e echo "Setting up local environment..." -ansible-playbook -i ~/dotfiles/hosts -e host=$(hostname) ~/dotfiles/local.yml --ask-become-pass +~/.local/bin/ansible-playbook -i ~/dotfiles/hosts -e host=$(hostname) ~/dotfiles/local.yml --ask-become-pass From 3755779c89731c4f3dece15e67ab8bedb38a8ee1 Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Sun, 12 Feb 2023 04:53:32 +0000 Subject: [PATCH 06/67] Fixup jetbrains install --- group_vars/all.yml | 1 + roles/jetbrains/tasks/main.yml | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/group_vars/all.yml b/group_vars/all.yml index 31df8fc..06bc001 100644 --- a/group_vars/all.yml +++ b/group_vars/all.yml @@ -86,6 +86,7 @@ apt_packages: # - xautomation # - xdotool - zbar-tools + - libfuse2 # Needed for AppImages deb_packages: - pkg: bat diff --git a/roles/jetbrains/tasks/main.yml b/roles/jetbrains/tasks/main.yml index 7233d65..e90b004 100644 --- a/roles/jetbrains/tasks/main.yml +++ b/roles/jetbrains/tasks/main.yml @@ -1,3 +1,11 @@ +- name: "Ensure {{ toolbox_install_dir }} exists" + file: + path: "{{ toolbox_install_dir }}" + state: "directory" + owner: "{{ user }}" + group: "{{ user }}" + mode: "0755" + - name: "Check if {{ application_name }} is installed" find: name: "{{ toolbox_install_dir }}" From 79f1ef349aac8598ab93bf3ef6649d67bfe521a7 Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Sun, 12 Feb 2023 04:53:44 +0000 Subject: [PATCH 07/67] Update spotify key --- group_vars/all.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/group_vars/all.yml b/group_vars/all.yml index 06bc001..a7a1b89 100644 --- a/group_vars/all.yml +++ b/group_vars/all.yml @@ -15,7 +15,7 @@ apt_repos: key: https://pkgs.tailscale.com/stable/ubuntu/focal.gpg - name: spotify repo: deb http://repository.spotify.com stable non-free - key: https://download.spotify.com/debian/pubkey_5E3C45D7B312C643.gpg + key: https://download.spotify.com/debian/pubkey_7A3A762FAFD4A51F.gpg - name: vscode repo: deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main key: https://packages.microsoft.com/keys/microsoft.asc From f4d977d289e93c763e539ec129191d1f03aaa162 Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Sun, 12 Feb 2023 04:54:13 +0000 Subject: [PATCH 08/67] Remove deadsnakes PPA --- group_vars/all.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/group_vars/all.yml b/group_vars/all.yml index a7a1b89..05acca5 100644 --- a/group_vars/all.yml +++ b/group_vars/all.yml @@ -19,8 +19,6 @@ apt_repos: - name: vscode repo: deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main key: https://packages.microsoft.com/keys/microsoft.asc - - name: deadsnakes - repo: ppa:deadsnakes/ppa - name: syncthing repo: deb https://apt.syncthing.net/ syncthing stable key: https://syncthing.net/release-key.gpg @@ -60,6 +58,7 @@ apt_packages: - p7zip-full - pass - pass-extension-otp + - webext-browserpass - pasystray - pavucontrol - playerctl @@ -86,6 +85,7 @@ apt_packages: # - xautomation # - xdotool - zbar-tools + - speedcrunch - libfuse2 # Needed for AppImages deb_packages: From e62dda599fdc1059a1577161183d2097205cf944 Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Sun, 12 Feb 2023 04:54:42 +0000 Subject: [PATCH 09/67] Remove nonempty option from auto.sshfs No longer needed and breaks mounting in newer versions --- roles/autofs/templates/auto.sshfs.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/autofs/templates/auto.sshfs.j2 b/roles/autofs/templates/auto.sshfs.j2 index 6fa5802..214ed31 100644 --- a/roles/autofs/templates/auto.sshfs.j2 +++ b/roles/autofs/templates/auto.sshfs.j2 @@ -1,3 +1,3 @@ {% for mount in mounts %} -{{mount.name}} -fstype=fuse,rw,uid=1000,gid=1000,nodev,nonempty,noatime,allow_other,Ciphers=aes128-ctr,Compression=no,max_read=65536 :sshfs\#{{mount.host}}\:{{mount.path}} +{{mount.name}} -fstype=fuse,rw,uid=1000,gid=1000,nodev,noatime,allow_other,Ciphers=aes128-ctr,Compression=no,max_read=65536 :sshfs\#{{mount.host}}\:{{mount.path}} {% endfor %} From f4a0c458e0f62332c069e46ae93571dcfc00cdc4 Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Sun, 12 Feb 2023 04:55:54 +0000 Subject: [PATCH 10/67] Various sway changes, inc adding waybar --- roles/sway/files/config.d/01-vars | 2 +- roles/sway/files/config.d/02-screen-sharing | 2 + roles/sway/files/config.d/05-outputs | 20 ++ roles/sway/files/config.d/10-input | 2 +- roles/sway/files/config.d/50-appearance | 13 +- roles/sway/files/config.d/50-bar | 17 +- roles/sway/files/config.d/50-keys-launch | 2 +- roles/sway/files/config.d/50-keys-sway | 3 + roles/sway/files/config.d/50-per-window | 1 + roles/sway/files/waybar/config | 195 ++++++++++++++ roles/sway/files/waybar/style.css | 269 ++++++++++++++++++++ roles/sway/tasks/main.yml | 7 + roles/sway/vars/main.yml | 3 + 13 files changed, 515 insertions(+), 21 deletions(-) create mode 100644 roles/sway/files/config.d/02-screen-sharing create mode 100644 roles/sway/files/config.d/05-outputs create mode 100644 roles/sway/files/waybar/config create mode 100644 roles/sway/files/waybar/style.css diff --git a/roles/sway/files/config.d/01-vars b/roles/sway/files/config.d/01-vars index 51e92d9..6788cb9 100644 --- a/roles/sway/files/config.d/01-vars +++ b/roles/sway/files/config.d/01-vars @@ -21,7 +21,7 @@ set $program.files /usr/bin/nemo # Session management set $program.lock swaylock -c 172032 -ef -i $HOME/dotfiles/wallpapers/dual/firewatch-hike.png && playerctl -a pause -set $program.logout /usr/bin/gnome-session-quit --logout --no-prompt +set $program.logout swaymsg exit set $program.reboot reboot set $program.shutdown poweroff set $program.sleep systemctl suspend diff --git a/roles/sway/files/config.d/02-screen-sharing b/roles/sway/files/config.d/02-screen-sharing new file mode 100644 index 0000000..bed865d --- /dev/null +++ b/roles/sway/files/config.d/02-screen-sharing @@ -0,0 +1,2 @@ +exec "systemctl --user import-environment" +exec dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway diff --git a/roles/sway/files/config.d/05-outputs b/roles/sway/files/config.d/05-outputs new file mode 100644 index 0000000..2d95db2 --- /dev/null +++ b/roles/sway/files/config.d/05-outputs @@ -0,0 +1,20 @@ +output DP-4 pos 0 0 res 2560x1440 +output DP-2 pos 2560 0 res 1920x1080 + +workspace 1 output DP-4 +workspace 2 output DP-4 +workspace 3 output DP-4 +workspace 4 output DP-4 +workspace 5 output DP-4 +workspace 6 output DP-4 +workspace 7 output DP-4 +workspace 8 output DP-4 + +workspace 11 output DP-2 +workspace 12 output DP-2 +workspace 13 output DP-2 +workspace 14 output DP-2 +workspace 15 output DP-2 +workspace 16 output DP-2 +workspace 17 output DP-2 +workspace 18 output DP-2 \ No newline at end of file diff --git a/roles/sway/files/config.d/10-input b/roles/sway/files/config.d/10-input index 60ba637..ba9c30b 100644 --- a/roles/sway/files/config.d/10-input +++ b/roles/sway/files/config.d/10-input @@ -2,4 +2,4 @@ input type:keyboard { xkb_layout gb } -seat seat0 hide_cursor 500 +seat seat0 hide_cursor 2000 diff --git a/roles/sway/files/config.d/50-appearance b/roles/sway/files/config.d/50-appearance index 8c191c7..658173e 100644 --- a/roles/sway/files/config.d/50-appearance +++ b/roles/sway/files/config.d/50-appearance @@ -1,5 +1,14 @@ output * bg $wallpaper fill -hide_edge_borders smart +hide_edge_borders --i3 smart +smart_borders on -default_border normal 2 +default_border normal 3 + +font pango:Roboto Medium 8 + +# client. [] +client.focused #48647a #48647a #ffffff #2e9ef4 #48647a +client.focused_inactive #5f676a #5f676a #cccccc #484e50 #5f676a +client.unfocused #222222 #222222 #888888 #292d2e #222222 +client.urgent #900000 #900000 #ffffff #900000 #900000 diff --git a/roles/sway/files/config.d/50-bar b/roles/sway/files/config.d/50-bar index b45f426..51d047e 100644 --- a/roles/sway/files/config.d/50-bar +++ b/roles/sway/files/config.d/50-bar @@ -1,18 +1,3 @@ bar { - position top - - # When the status_command prints a new line to stdout, swaybar updates. - # The default just shows the current date and time. - status_command while date +'%Y-%m-%d %I:%M:%S %p'; do sleep 1; done - - font pango:DejaVu Sans Mono 12 - - colors { - statusline #ffffff - background #0c0c0c - focused_background #1b101f00 - focused_workspace #1659c4 #1659c4 #ffffff - inactive_workspace #00000000 #00000000 #ffffff88 - urgent_workspace #ff0000 #ff0000 #ffffff - } + swaybar_command /home/will/bin/waybar } diff --git a/roles/sway/files/config.d/50-keys-launch b/roles/sway/files/config.d/50-keys-launch index c818c8e..7d23262 100644 --- a/roles/sway/files/config.d/50-keys-launch +++ b/roles/sway/files/config.d/50-keys-launch @@ -20,7 +20,7 @@ bindsym $mod+l exec $program.lock set $mode_system SYS mode "$mode_system" { bindsym l exec $program.lock, mode "default" - bindsym Control+l exec $program.logout logout, mode "default" + bindsym Control+l exit, mode "default" bindsym s exec $program.sleep, mode "default" bindsym Control+r exec $program.reboot, mode "default" bindsym Control+s exec $program.shutdown, mode "default" diff --git a/roles/sway/files/config.d/50-keys-sway b/roles/sway/files/config.d/50-keys-sway index 6c34ddc..9f35fd4 100644 --- a/roles/sway/files/config.d/50-keys-sway +++ b/roles/sway/files/config.d/50-keys-sway @@ -6,3 +6,6 @@ bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. ## Modify // Toggle Bar // <◇> i ## bindsym $mod+i bar mode toggle + +## Toggle border styles +bindsym $mod+b border toggle diff --git a/roles/sway/files/config.d/50-per-window b/roles/sway/files/config.d/50-per-window index ca90fa5..eea629b 100644 --- a/roles/sway/files/config.d/50-per-window +++ b/roles/sway/files/config.d/50-per-window @@ -17,3 +17,4 @@ for_window [title="About Mozilla Firefox"] floating enable for_window [class="jetbrains-pycharm" title="win0"] floating enable for_window [title="Welcome to PyCharm"] floating enable for_window [class="MPlayer"] floating enable +for_window [app_id="firefox"] border pixel diff --git a/roles/sway/files/waybar/config b/roles/sway/files/waybar/config new file mode 100644 index 0000000..41e8bca --- /dev/null +++ b/roles/sway/files/waybar/config @@ -0,0 +1,195 @@ +{ + // "layer": "top", // Waybar at top layer + // "position": "bottom", // Waybar position (top|bottom|left|right) + "height": 30, // Waybar height (to be removed for auto height) + // "width": 1280, // Waybar width + "spacing": 4, // Gaps between modules (4px) + // Choose the order of the modules + "modules-left": ["sway/workspaces", "sway/mode", "custom/media"], + "modules-center": ["sway/window"], + "modules-right": [ + // // "mpd", + "tray", + "idle_inhibitor", + // "custom/media", + "pulseaudio", + "bluetooth", + "network", + "disk", + "memory", + "cpu", + "temperature", + // "backlight", + // "keyboard-state", + // // "sway/language", + // "battery", + // "battery#bat2", + "clock" + // end + ], + // Modules configuration + "sway/workspaces": { + "disable-scroll": false, + "all-outputs": false, + // "format": "{name}: {icon}", + // "format-icons": { + // "1": "", + // "2": "", + // "3": "", + // "4": "", + // "5": "", + // "urgent": "", + // "focused": "", + // "default": "" + // } + }, + "keyboard-state": { + "numlock": true, + "capslock": true, + "format": "{name} {icon}", + "format-icons": { + "locked": "", + "unlocked": "" + } + }, + "sway/mode": { + "format": "{}" + }, + "mpd": { + "format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ", + "format-disconnected": "Disconnected ", + "format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ", + "unknown-tag": "N/A", + "interval": 2, + "consume-icons": { + "on": " " + }, + "random-icons": { + "off": " ", + "on": " " + }, + "repeat-icons": { + "on": " " + }, + "single-icons": { + "on": "1 " + }, + "state-icons": { + "paused": "", + "playing": "" + }, + "tooltip-format": "MPD (connected)", + "tooltip-format-disconnected": "MPD (disconnected)" + }, + "idle_inhibitor": { + "format": "{icon}", + "format-icons": { + "activated": "", + "deactivated": "" + } + }, + "tray": { + // "icon-size": 21, + "spacing": 10 + }, + "clock": { + // "timezone": "America/New_York", + "tooltip-format": "{:%Y %B}\n{calendar}", + "format-alt": "{:%Y-%m-%d}" + }, + "cpu": { + "format": "{usage}% ", + "tooltip": false, + "interval": 2 + }, + "memory": { + "format": "{}% ", + "interval": 2 + }, + "disk": { + "format": "{free} ", + "format-alt": "{percentage_free}% ", + "path": "/" + }, + "temperature": { + // "thermal-zone": 2, + "hwmon-path": "/sys/class/hwmon/hwmon3/temp1_input", + "critical-threshold": 80, + // "format-critical": "{temperatureC}°C {icon}", + "format": "{temperatureC}°C {icon}", + "format-icons": ["", "", ""], + "interval": 2 + }, + "backlight": { + // "device": "acpi_video1", + "format": "{percent}% {icon}", + "format-icons": ["", ""] + }, + "battery": { + "states": { + // "good": 95, + "warning": 30, + "critical": 15 + }, + "format": "{capacity}% {icon}", + "format-charging": "{capacity}% ", + "format-plugged": "{capacity}% ", + "format-alt": "{time} {icon}", + // "format-good": "", // An empty format will hide the module + // "format-full": "", + "format-icons": ["", "", "", "", ""] + }, + "battery#bat2": { + "bat": "BAT2" + }, + "bluetooth": { + // "controller": "controller1", // specify the alias of the controller if there are more than 1 on the system + "format": " 0", + "format-disabled": " OFF", // an empty format will hide the module + "format-connected": " {num_connections}" + // "tooltip-format": "{controller_alias}\t{controller_address}", + // "tooltip-format-connected": "{controller_alias}\t{controller_address}\n\n{device_enumerate}", + // "tooltip-format-enumerate-connected": "{device_alias}\t{device_address}" + }, + "network": { + // "interface": "wlp2*", // (Optional) To force the use of this interface + "format-wifi": "{essid} ({signalStrength}%) ", + "format-ethernet": "{ipaddr}/{cidr} ", + "tooltip-format": "{ifname} via {gwaddr} ", + "format-linked": "{ifname} (No IP) ", + "format-disconnected": "Disconnected ⚠", + "format-alt": "{ifname}: {ipaddr}/{cidr}" + }, + "pulseaudio": { + // "scroll-step": 1, // %, can be a float + "format": "{volume}% {icon} {format_source}", + "format-bluetooth": "{volume}% {icon} {format_source}", + "format-bluetooth-muted": " {icon} {format_source}", + "format-muted": " {format_source}", + "format-source": "{volume}% ", + "format-source-muted": "", + "format-icons": { + "headphone": "", + "hands-free": "", + "headset": "", + "phone": "", + "portable": "", + "car": "", + "default": ["", "", ""] + }, + "on-click": "pavucontrol" + }, + "custom/media": { + "format": "{icon} {}", + "return-type": "json", + "max-length": 40, + "format-icons": { + "spotify": "", + "default": "🎜" + }, + "escape": true, + "exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder + // "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name + } +} + diff --git a/roles/sway/files/waybar/style.css b/roles/sway/files/waybar/style.css new file mode 100644 index 0000000..5b4e33b --- /dev/null +++ b/roles/sway/files/waybar/style.css @@ -0,0 +1,269 @@ +* { + /* `otf-font-awesome` is required to be installed for icons */ + font-family: Roboto, Helvetica, Arial, sans-serif; + font-size: 14px; +} + +window#waybar { + background-color: rgba(43, 48, 59, 0.4); + border-bottom: 3px solid rgba(100, 114, 125, 0.5); + color: #ffffff; + transition-property: background-color; + transition-duration: .5s; +} + +window#waybar.hidden { + opacity: 0.2; +} + +/* +window#waybar.empty { + background-color: transparent; +} +window#waybar.solo { + background-color: #FFFFFF; +} +*/ + +window#waybar.termite { + background-color: #3F3F3F; +} + +window#waybar.chromium { + background-color: #000000; + border: none; +} + +#workspaces button { + padding: 0 7px; + background-color: transparent; + color: #ffffff; + /* Use box-shadow instead of border so the text isn't offset */ + box-shadow: inset 0 -3px transparent; + /* Avoid rounded borders under each workspace name */ + border: none; + border-radius: 0; +} + +/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */ +#workspaces button:hover { + background: rgba(0, 0, 0, 0.2); + box-shadow: inset 0 -3px #ffffff; +} + +#workspaces button.visible { + background-color: rgba(72, 100, 122, 0.5); + box-shadow: inset 0 -3px #ffffff; +} + +#workspaces button.focused { + background-color: rgba(72, 100, 122, 1); +} + +#workspaces button.urgent { + background-color: #eb4d4b; +} + +#mode { + background-color: #c00; + border-bottom: 3px solid #f55; + font-weight: 900; +} + +#clock, +#battery, +#cpu, +#memory, +#disk, +#temperature, +#backlight, +#network, +#pulseaudio, +#custom-media, +#tray, +#mode, +#idle_inhibitor, +#mpd, +#bluetooth { + padding: 0 6px; + color: #ccc; +} + +#clock { + padding: 0 10px; +} + +#window, +#workspaces { + margin: 0 4px; +} + +/* If workspaces is the leftmost module, omit left margin */ +.modules-left > widget:first-child > #workspaces { + margin-left: 0; +} + +/* If workspaces is the rightmost module, omit right margin */ +.modules-right > widget:last-child > #workspaces { + margin-right: 0; +} + +#clock { + background-color: #64727D; +} + +#battery { + background-color: #ffffff; + color: #000000; +} + +#battery.charging, #battery.plugged { + color: #ffffff; + background-color: #26A65B; +} + +@keyframes blink { + to { + background-color: #ffffff; + color: #000000; + } +} + +#battery.critical:not(.charging) { + background-color: #f53c3c; + color: #ffffff; + animation-name: blink; + animation-duration: 0.5s; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; +} + +label:focus { + background-color: #000000; +} + +/* #cpu { + background-color: #2ecc71; + color: #000000; +} */ + +#cpu.critical { + background-color: #eb4d4b; +} + +/* +#memory { + background-color: #9b59b6; +} + +#disk { + background-color: #964B00; +} + +#backlight { + background-color: #90b1b1; +} + +#network { + background-color: #2980b9; +} */ + +#network.disconnected { + background-color: #f53c3c; +} + +/* #pulseaudio { + background-color: #f1c40f; + color: #000000; +} */ + +#pulseaudio.muted { + background-color: #90b1b1; + color: #2a5c45; +} + +/* #custom-media { + background-color: #66cc99; + color: #2a5c45; + min-width: 100px; +} + +#custom-media.custom-spotify { + background-color: #66cc99; +} + +#custom-media.custom-vlc { + background-color: #ffa000; +} + +#temperature { + background-color: #f0932b; +} */ + +#temperature.critical { + background-color: #eb4d4b; +} + +/* #tray { + background-color: #2980b9; +} */ + +#tray > .passive { + -gtk-icon-effect: dim; +} + +#tray > .needs-attention { + -gtk-icon-effect: highlight; + background-color: #eb4d4b; +} + +/* #idle_inhibitor { + background-color: #2d3436; +} */ + +#idle_inhibitor.activated { + background-color: #fcba03; + color: #2d3436; +} + +/* #mpd { + background-color: #66cc99; + color: #2a5c45; +} + +#mpd.disconnected { + background-color: #f53c3c; +} + +#mpd.stopped { + background-color: #90b1b1; +} + +#mpd.paused { + background-color: #51a37a; +} */ + +#language { + background: #00b093; + color: #740864; + padding: 0 5px; + margin: 0 5px; + min-width: 16px; +} + +#keyboard-state { + background: #97e1ad; + color: #000000; + padding: 0 0px; + margin: 0 5px; + min-width: 16px; +} + +#keyboard-state > label { + padding: 0 5px; +} + +#keyboard-state > label.locked { + background: rgba(0, 0, 0, 0.2); +} diff --git a/roles/sway/tasks/main.yml b/roles/sway/tasks/main.yml index 1d86467..3dd7bf7 100644 --- a/roles/sway/tasks/main.yml +++ b/roles/sway/tasks/main.yml @@ -46,3 +46,10 @@ dest: "{{ dotfiles_user_home }}/.config/workstyle/config.toml" state: link force: yes + +- name: Link waybar config + file: + src: "{{ dotfiles_home }}/roles/sway/files/waybar" + dest: "{{ dotfiles_user_home }}/.config/waybar" + state: link + force: yes diff --git a/roles/sway/vars/main.yml b/roles/sway/vars/main.yml index cc7d0d3..9022526 100644 --- a/roles/sway/vars/main.yml +++ b/roles/sway/vars/main.yml @@ -1,5 +1,6 @@ sway_apt_repos: - ppa:agornostal/ulauncher + - ppa:nschloe/waybar sway_apt_packages: - sway @@ -9,3 +10,5 @@ sway_apt_packages: - fd-find - wl-clipboard - suckless-tools + - waybar + - fonts-font-awesome From 897e150e9d02a8b5006de08160371969e36df45f Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Tue, 14 Feb 2023 21:14:38 +0000 Subject: [PATCH 11/67] Disable python role for now --- local.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/local.yml b/local.yml index f636389..b22f0a1 100644 --- a/local.yml +++ b/local.yml @@ -4,7 +4,7 @@ - { role: apt, tags: ["apt"] } # - { role: bin, tags: ["bin"] } - { role: linux, tags: ["linux"] } - - { role: python, tags: ["python"] } + # - { role: python, tags: ["python"] } # - { role: dotfiles, tags: ["dotfiles"] } - { role: autofs, tags: ["autofs"] } - { role: fish, tags: ["fish"] } From d69f6b43a74875517ce1eceded4bbd8b5165bf74 Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Wed, 15 Feb 2023 22:38:58 +0000 Subject: [PATCH 12/67] Add wgt152 config --- group_vars/all.yml | 1 + host_vars/wgt152.yml | 7 +++++++ hosts | 1 + roles/sway/files/config.d/02-screen-sharing | 2 ++ roles/sway/files/config.d/50-per-window | 4 ++++ roles/sway/vars/main.yml | 3 ++- 6 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 host_vars/wgt152.yml diff --git a/group_vars/all.yml b/group_vars/all.yml index 05acca5..3d06e03 100644 --- a/group_vars/all.yml +++ b/group_vars/all.yml @@ -87,6 +87,7 @@ apt_packages: - zbar-tools - speedcrunch - libfuse2 # Needed for AppImages + - wdisplays deb_packages: - pkg: bat diff --git a/host_vars/wgt152.yml b/host_vars/wgt152.yml new file mode 100644 index 0000000..b31faaf --- /dev/null +++ b/host_vars/wgt152.yml @@ -0,0 +1,7 @@ +git_email: will@wegift.io +git_signing_key: 1B48523D91781A7F5CEC929B7CA9BF9F444BF7C8 + +wallpaper: ~/dotfiles/wallpapers/1440p/dennis-schweizer-18nR85wWyLY-unsplash.jpg + +screen_left: DisplayPort-3 +screen_right: DisplayPort-2 diff --git a/hosts b/hosts index ba928a3..8cb1f7a 100644 --- a/hosts +++ b/hosts @@ -2,6 +2,7 @@ dux vulcan vulcan-london victor +wgt152 [all:vars] ansible_connection=local diff --git a/roles/sway/files/config.d/02-screen-sharing b/roles/sway/files/config.d/02-screen-sharing index bed865d..d2ba827 100644 --- a/roles/sway/files/config.d/02-screen-sharing +++ b/roles/sway/files/config.d/02-screen-sharing @@ -1,2 +1,4 @@ +# https://soyuka.me/make-screen-sharing-wayland-sway-work/ + exec "systemctl --user import-environment" exec dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway diff --git a/roles/sway/files/config.d/50-per-window b/roles/sway/files/config.d/50-per-window index eea629b..492a986 100644 --- a/roles/sway/files/config.d/50-per-window +++ b/roles/sway/files/config.d/50-per-window @@ -1,3 +1,5 @@ +# swaymsg -t get_tree | bat -l json + for_window [app_id="gnome-control-center"] floating enable for_window [app_id="ulauncher"] border none for_window [app_id="gnome-terminal-server"] opacity 0.95 @@ -18,3 +20,5 @@ for_window [class="jetbrains-pycharm" title="win0"] floating enable for_window [title="Welcome to PyCharm"] floating enable for_window [class="MPlayer"] floating enable for_window [app_id="firefox"] border pixel +for_window [class="Slack"] border pixel +for_window [title="Firefox — Sharing Indicator"] floating enable \ No newline at end of file diff --git a/roles/sway/vars/main.yml b/roles/sway/vars/main.yml index 9022526..82a739c 100644 --- a/roles/sway/vars/main.yml +++ b/roles/sway/vars/main.yml @@ -1,6 +1,6 @@ sway_apt_repos: - ppa:agornostal/ulauncher - - ppa:nschloe/waybar +# - ppa:nschloe/waybar sway_apt_packages: - sway @@ -12,3 +12,4 @@ sway_apt_packages: - suckless-tools - waybar - fonts-font-awesome + - xdg-desktop-portal-wlr From fa19b2f320b47060c19dd272dd168a413aecaf43 Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Wed, 15 Feb 2023 22:54:21 +0000 Subject: [PATCH 13/67] Move fish abbreviations to config file Using abbr command doesn't seem to save them anymore. Removed in 3.6.0. --- group_vars/all.yml | 16 ---------------- roles/fish/files/conf.d/abbr.fish | 9 +++++++++ roles/fish/tasks/main.yml | 4 ---- 3 files changed, 9 insertions(+), 20 deletions(-) create mode 100644 roles/fish/files/conf.d/abbr.fish diff --git a/group_vars/all.yml b/group_vars/all.yml index 3d06e03..2a9af87 100644 --- a/group_vars/all.yml +++ b/group_vars/all.yml @@ -120,22 +120,6 @@ fish_paths: - "/usr/local/go/bin" - "~/go/bin" -fish_abbr: - - word: dc - expansion: docker compose - - word: g - expansion: git - - word: gc - expansion: git commit - - word: p - expansion: gopass - - word: tf - expansion: terraform - - word: avx - expansion: aws-vault exec - - word: avl - expansion: aws-vault login - fish_variables: - name: fish_greeting value: "" diff --git a/roles/fish/files/conf.d/abbr.fish b/roles/fish/files/conf.d/abbr.fish new file mode 100644 index 0000000..0ebb863 --- /dev/null +++ b/roles/fish/files/conf.d/abbr.fish @@ -0,0 +1,9 @@ +# Abbreviations + +abbr -ag dc "docker compose" +abbr -ag g "git" +abbr -ag gc "git commit" +abbr -ag p "gopass" +abbr -ag tf "terraform" +abbr -ag avx "aws-vault exec" +abbr -ag avl "aws-vault login" diff --git a/roles/fish/tasks/main.yml b/roles/fish/tasks/main.yml index c297d80..65ad63a 100644 --- a/roles/fish/tasks/main.yml +++ b/roles/fish/tasks/main.yml @@ -52,10 +52,6 @@ failed_when: fish_path.rc > 1 changed_when: fish_path.rc == 0 -- name: Set fish abbreviations - loop: "{{ fish_abbr }}" - include_tasks: abbr.yml - - name: Set fish variables loop: "{{ fish_variables }}" include_tasks: variable.yml From 65f859d3d6ed664479f7600bc90e645d97a32ee8 Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Wed, 15 Feb 2023 23:03:07 +0000 Subject: [PATCH 14/67] Update python role and re-enable --- local.yml | 2 +- roles/fish/files/completions/poetry.fish | 186 +++++++++++++++++------ roles/python/tasks/main.yml | 17 ++- 3 files changed, 159 insertions(+), 46 deletions(-) diff --git a/local.yml b/local.yml index b22f0a1..f636389 100644 --- a/local.yml +++ b/local.yml @@ -4,7 +4,7 @@ - { role: apt, tags: ["apt"] } # - { role: bin, tags: ["bin"] } - { role: linux, tags: ["linux"] } - # - { role: python, tags: ["python"] } + - { role: python, tags: ["python"] } # - { role: dotfiles, tags: ["dotfiles"] } - { role: autofs, tags: ["autofs"] } - { role: fish, tags: ["fish"] } diff --git a/roles/fish/files/completions/poetry.fish b/roles/fish/files/completions/poetry.fish index 312f521..0733738 100644 --- a/roles/fish/files/completions/poetry.fish +++ b/roles/fish/files/completions/poetry.fish @@ -1,6 +1,6 @@ -function __fish_poetry_5b552cddee832200_complete_no_subcommand +function __fish_poetry_b41ea164dc76238d_complete_no_subcommand for i in (commandline -opc) - if contains -- $i about add build cache check config debug env export help init install lock new publish remove run search self shell show update version + if contains -- $i about add build 'cache clear' 'cache list' check config 'debug info' 'debug resolve' 'env info' 'env list' 'env remove' 'env use' export help init install list lock new publish remove run search 'self add' 'self install' 'self lock' 'self remove' 'self show' 'self show plugins' 'self update' shell show 'source add' 'source remove' 'source show' update version return 1 end end @@ -8,38 +8,56 @@ function __fish_poetry_5b552cddee832200_complete_no_subcommand end # global options -complete -c poetry -n '__fish_poetry_5b552cddee832200_complete_no_subcommand' -l ansi -d 'Force ANSI output' -complete -c poetry -n '__fish_poetry_5b552cddee832200_complete_no_subcommand' -l help -d 'Display this help message' -complete -c poetry -n '__fish_poetry_5b552cddee832200_complete_no_subcommand' -l no-ansi -d 'Disable ANSI output' -complete -c poetry -n '__fish_poetry_5b552cddee832200_complete_no_subcommand' -l no-interaction -d 'Do not ask any interactive question' -complete -c poetry -n '__fish_poetry_5b552cddee832200_complete_no_subcommand' -l quiet -d 'Do not output any message' -complete -c poetry -n '__fish_poetry_5b552cddee832200_complete_no_subcommand' -l verbose -d 'Increase the verbosity of messages: "-v" for normal output, "-vv" for more verbose output and "-vvv" for debug' -complete -c poetry -n '__fish_poetry_5b552cddee832200_complete_no_subcommand' -l version -d 'Display this application version' +complete -c poetry -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -l ansi -d 'Force ANSI output.' +complete -c poetry -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -l directory -d 'The working directory for the Poetry command (defaults to the current working directory).' +complete -c poetry -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -l help -d 'Display help for the given command. When no command is given display help for the list command.' +complete -c poetry -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -l no-ansi -d 'Disable ANSI output.' +complete -c poetry -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -l no-cache -d 'Disables Poetry source caches.' +complete -c poetry -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -l no-interaction -d 'Do not ask any interactive question.' +complete -c poetry -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -l no-plugins -d 'Disables plugins.' +complete -c poetry -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -l quiet -d 'Do not output any message.' +complete -c poetry -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -l verbose -d 'Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug.' +complete -c poetry -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -l version -d 'Display this application version.' # commands -complete -c poetry -f -n '__fish_poetry_5b552cddee832200_complete_no_subcommand' -a about -d 'Shows information about Poetry.' -complete -c poetry -f -n '__fish_poetry_5b552cddee832200_complete_no_subcommand' -a add -d 'Adds a new dependency to pyproject.toml.' -complete -c poetry -f -n '__fish_poetry_5b552cddee832200_complete_no_subcommand' -a build -d 'Builds a package, as a tarball and a wheel by default.' -complete -c poetry -f -n '__fish_poetry_5b552cddee832200_complete_no_subcommand' -a cache -d 'Interact with Poetry\'s cache' -complete -c poetry -f -n '__fish_poetry_5b552cddee832200_complete_no_subcommand' -a check -d 'Checks the validity of the pyproject.toml file.' -complete -c poetry -f -n '__fish_poetry_5b552cddee832200_complete_no_subcommand' -a config -d 'Manages configuration settings.' -complete -c poetry -f -n '__fish_poetry_5b552cddee832200_complete_no_subcommand' -a debug -d 'Debug various elements of Poetry.' -complete -c poetry -f -n '__fish_poetry_5b552cddee832200_complete_no_subcommand' -a env -d 'Interact with Poetry\'s project environments.' -complete -c poetry -f -n '__fish_poetry_5b552cddee832200_complete_no_subcommand' -a export -d 'Exports the lock file to alternative formats.' -complete -c poetry -f -n '__fish_poetry_5b552cddee832200_complete_no_subcommand' -a help -d 'Display the manual of a command' -complete -c poetry -f -n '__fish_poetry_5b552cddee832200_complete_no_subcommand' -a init -d 'Creates a basic pyproject.toml file in the current directory.' -complete -c poetry -f -n '__fish_poetry_5b552cddee832200_complete_no_subcommand' -a install -d 'Installs the project dependencies.' -complete -c poetry -f -n '__fish_poetry_5b552cddee832200_complete_no_subcommand' -a lock -d 'Locks the project dependencies.' -complete -c poetry -f -n '__fish_poetry_5b552cddee832200_complete_no_subcommand' -a new -d 'Creates a new Python project at .' -complete -c poetry -f -n '__fish_poetry_5b552cddee832200_complete_no_subcommand' -a publish -d 'Publishes a package to a remote repository.' -complete -c poetry -f -n '__fish_poetry_5b552cddee832200_complete_no_subcommand' -a remove -d 'Removes a package from the project dependencies.' -complete -c poetry -f -n '__fish_poetry_5b552cddee832200_complete_no_subcommand' -a run -d 'Runs a command in the appropriate environment.' -complete -c poetry -f -n '__fish_poetry_5b552cddee832200_complete_no_subcommand' -a search -d 'Searches for packages on remote repositories.' -complete -c poetry -f -n '__fish_poetry_5b552cddee832200_complete_no_subcommand' -a self -d 'Interact with Poetry directly.' -complete -c poetry -f -n '__fish_poetry_5b552cddee832200_complete_no_subcommand' -a shell -d 'Spawns a shell within the virtual environment.' -complete -c poetry -f -n '__fish_poetry_5b552cddee832200_complete_no_subcommand' -a show -d 'Shows information about packages.' -complete -c poetry -f -n '__fish_poetry_5b552cddee832200_complete_no_subcommand' -a update -d 'Update the dependencies as according to the pyproject.toml file.' -complete -c poetry -f -n '__fish_poetry_5b552cddee832200_complete_no_subcommand' -a version -d 'Shows the version of the project or bumps it when a valid bump rule is provided.' +complete -c poetry -f -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -a about -d 'Shows information about Poetry.' +complete -c poetry -f -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -a add -d 'Adds a new dependency to pyproject.toml.' +complete -c poetry -f -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -a build -d 'Builds a package, as a tarball and a wheel by default.' +complete -c poetry -f -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -a 'cache clear' -d 'Clears a Poetry cache by name.' +complete -c poetry -f -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -a 'cache list' -d 'List Poetry\'s caches.' +complete -c poetry -f -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -a check -d 'Checks the validity of the pyproject.toml file.' +complete -c poetry -f -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -a config -d 'Manages configuration settings.' +complete -c poetry -f -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -a 'debug info' -d 'Shows debug information.' +complete -c poetry -f -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -a 'debug resolve' -d 'Debugs dependency resolution.' +complete -c poetry -f -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -a 'env info' -d 'Displays information about the current environment.' +complete -c poetry -f -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -a 'env list' -d 'Lists all virtualenvs associated with the current project.' +complete -c poetry -f -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -a 'env remove' -d 'Remove virtual environments associated with the project.' +complete -c poetry -f -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -a 'env use' -d 'Activates or creates a new virtualenv for the current project.' +complete -c poetry -f -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -a export -d 'Exports the lock file to alternative formats.' +complete -c poetry -f -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -a help -d 'Displays help for a command.' +complete -c poetry -f -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -a init -d 'Creates a basic pyproject.toml file in the current directory.' +complete -c poetry -f -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -a install -d 'Installs the project dependencies.' +complete -c poetry -f -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -a list -d 'Lists commands.' +complete -c poetry -f -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -a lock -d 'Locks the project dependencies.' +complete -c poetry -f -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -a new -d 'Creates a new Python project at .' +complete -c poetry -f -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -a publish -d 'Publishes a package to a remote repository.' +complete -c poetry -f -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -a remove -d 'Removes a package from the project dependencies.' +complete -c poetry -f -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -a run -d 'Runs a command in the appropriate environment.' +complete -c poetry -f -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -a search -d 'Searches for packages on remote repositories.' +complete -c poetry -f -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -a 'self add' -d 'Add additional packages to Poetry\'s runtime environment.' +complete -c poetry -f -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -a 'self install' -d 'Install locked packages (incl. addons) required by this Poetry installation.' +complete -c poetry -f -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -a 'self lock' -d 'Lock the Poetry installation\'s system requirements.' +complete -c poetry -f -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -a 'self remove' -d 'Remove additional packages from Poetry\'s runtime environment.' +complete -c poetry -f -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -a 'self show' -d 'Show packages from Poetry\'s runtime environment.' +complete -c poetry -f -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -a 'self show plugins' -d 'Shows information about the currently installed plugins.' +complete -c poetry -f -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -a 'self update' -d 'Updates Poetry to the latest version.' +complete -c poetry -f -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -a shell -d 'Spawns a shell within the virtual environment.' +complete -c poetry -f -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -a show -d 'Shows information about packages.' +complete -c poetry -f -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -a 'source add' -d 'Add source configuration for project.' +complete -c poetry -f -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -a 'source remove' -d 'Remove source configured for the project.' +complete -c poetry -f -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -a 'source show' -d 'Show information about sources configured for the project.' +complete -c poetry -f -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -a update -d 'Update the dependencies as according to the pyproject.toml file.' +complete -c poetry -f -n '__fish_poetry_b41ea164dc76238d_complete_no_subcommand' -a version -d 'Shows the version of the project or bumps it when a valid bump rule is provided.' # command options @@ -47,9 +65,11 @@ complete -c poetry -f -n '__fish_poetry_5b552cddee832200_complete_no_subcommand' # add complete -c poetry -A -n '__fish_seen_subcommand_from add' -l allow-prereleases -d 'Accept prereleases.' -complete -c poetry -A -n '__fish_seen_subcommand_from add' -l dev -d 'Add as a development dependency.' +complete -c poetry -A -n '__fish_seen_subcommand_from add' -l dev -d 'Add as a development dependency. (Deprecated)' complete -c poetry -A -n '__fish_seen_subcommand_from add' -l dry-run -d 'Output the operations but do not execute anything (implicitly enables --verbose).' +complete -c poetry -A -n '__fish_seen_subcommand_from add' -l editable -d 'Add vcs/path dependencies as editable.' complete -c poetry -A -n '__fish_seen_subcommand_from add' -l extras -d 'Extras to activate for the dependency.' +complete -c poetry -A -n '__fish_seen_subcommand_from add' -l group -d 'The group to add the dependency to.' complete -c poetry -A -n '__fish_seen_subcommand_from add' -l lock -d 'Do not perform operations (only update the lockfile).' complete -c poetry -A -n '__fish_seen_subcommand_from add' -l optional -d 'Add as an optional dependency.' complete -c poetry -A -n '__fish_seen_subcommand_from add' -l platform -d 'Platforms for which the dependency must be installed.' @@ -59,7 +79,10 @@ complete -c poetry -A -n '__fish_seen_subcommand_from add' -l source -d 'Name of # build complete -c poetry -A -n '__fish_seen_subcommand_from build' -l format -d 'Limit the format to either sdist or wheel.' -# cache +# 'cache clear' +complete -c poetry -A -n '__fish_seen_subcommand_from 'cache clear'' -l all -d 'Clear all entries in the cache.' + +# 'cache list' # check @@ -68,17 +91,36 @@ complete -c poetry -A -n '__fish_seen_subcommand_from config' -l list -d 'List c complete -c poetry -A -n '__fish_seen_subcommand_from config' -l local -d 'Set/Get from the project\'s local configuration.' complete -c poetry -A -n '__fish_seen_subcommand_from config' -l unset -d 'Unset configuration setting.' -# debug +# 'debug info' + +# 'debug resolve' +complete -c poetry -A -n '__fish_seen_subcommand_from 'debug resolve'' -l extras -d 'Extras to activate for the dependency.' +complete -c poetry -A -n '__fish_seen_subcommand_from 'debug resolve'' -l install -d 'Show what would be installed for the current system.' +complete -c poetry -A -n '__fish_seen_subcommand_from 'debug resolve'' -l python -d 'Python version(s) to use for resolution.' +complete -c poetry -A -n '__fish_seen_subcommand_from 'debug resolve'' -l tree -d 'Display the dependency tree.' + +# 'env info' +complete -c poetry -A -n '__fish_seen_subcommand_from 'env info'' -l path -d 'Only display the environment\'s path.' + +# 'env list' +complete -c poetry -A -n '__fish_seen_subcommand_from 'env list'' -l full-path -d 'Output the full paths of the virtualenvs.' -# env +# 'env remove' +complete -c poetry -A -n '__fish_seen_subcommand_from 'env remove'' -l all -d 'Remove all managed virtual environments associated with the project.' + +# 'env use' # export -complete -c poetry -A -n '__fish_seen_subcommand_from export' -l dev -d 'Include development dependencies.' +complete -c poetry -A -n '__fish_seen_subcommand_from export' -l dev -d 'Include development dependencies. (Deprecated)' complete -c poetry -A -n '__fish_seen_subcommand_from export' -l extras -d 'Extra sets of dependencies to include.' -complete -c poetry -A -n '__fish_seen_subcommand_from export' -l format -d 'Format to export to. Currently, only requirements.txt is supported.' +complete -c poetry -A -n '__fish_seen_subcommand_from export' -l format -d 'Format to export to. Currently, only constraints.txt and requirements.txt are supported.' +complete -c poetry -A -n '__fish_seen_subcommand_from export' -l only -d 'The only dependency groups to include.' complete -c poetry -A -n '__fish_seen_subcommand_from export' -l output -d 'The name of the output file.' +complete -c poetry -A -n '__fish_seen_subcommand_from export' -l with -d 'The optional dependency groups to include.' complete -c poetry -A -n '__fish_seen_subcommand_from export' -l with-credentials -d 'Include credentials for extra indices.' +complete -c poetry -A -n '__fish_seen_subcommand_from export' -l without -d 'The dependency groups to ignore.' complete -c poetry -A -n '__fish_seen_subcommand_from export' -l without-hashes -d 'Exclude hashes from the exported file.' +complete -c poetry -A -n '__fish_seen_subcommand_from export' -l without-urls -d 'Exclude source repository urls from the exported file.' # help @@ -92,17 +134,27 @@ complete -c poetry -A -n '__fish_seen_subcommand_from init' -l name -d 'Name of complete -c poetry -A -n '__fish_seen_subcommand_from init' -l python -d 'Compatible Python versions.' # install +complete -c poetry -A -n '__fish_seen_subcommand_from install' -l all-extras -d 'Install all extra dependencies.' complete -c poetry -A -n '__fish_seen_subcommand_from install' -l dry-run -d 'Output the operations but do not execute anything (implicitly enables --verbose).' complete -c poetry -A -n '__fish_seen_subcommand_from install' -l extras -d 'Extra sets of dependencies to install.' -complete -c poetry -A -n '__fish_seen_subcommand_from install' -l no-dev -d 'Do not install the development dependencies.' +complete -c poetry -A -n '__fish_seen_subcommand_from install' -l no-dev -d 'Do not install the development dependencies. (Deprecated)' complete -c poetry -A -n '__fish_seen_subcommand_from install' -l no-root -d 'Do not install the root package (the current project).' -complete -c poetry -A -n '__fish_seen_subcommand_from install' -l remove-untracked -d 'Removes packages not present in the lock file.' +complete -c poetry -A -n '__fish_seen_subcommand_from install' -l only -d 'The only dependency groups to include.' +complete -c poetry -A -n '__fish_seen_subcommand_from install' -l only-root -d 'Exclude all dependencies.' +complete -c poetry -A -n '__fish_seen_subcommand_from install' -l remove-untracked -d 'Removes packages not present in the lock file. (Deprecated)' +complete -c poetry -A -n '__fish_seen_subcommand_from install' -l sync -d 'Synchronize the environment with the locked packages and the specified groups.' +complete -c poetry -A -n '__fish_seen_subcommand_from install' -l with -d 'The optional dependency groups to include.' +complete -c poetry -A -n '__fish_seen_subcommand_from install' -l without -d 'The dependency groups to ignore.' + +# list # lock +complete -c poetry -A -n '__fish_seen_subcommand_from lock' -l check -d 'Check that the poetry.lock file corresponds to the current version of pyproject.toml.' complete -c poetry -A -n '__fish_seen_subcommand_from lock' -l no-update -d 'Do not update locked versions, only refresh lock file.' # new complete -c poetry -A -n '__fish_seen_subcommand_from new' -l name -d 'Set the resulting package name.' +complete -c poetry -A -n '__fish_seen_subcommand_from new' -l readme -d 'Specify the readme file format. One of md (default) or rst' complete -c poetry -A -n '__fish_seen_subcommand_from new' -l src -d 'Use the src layout for the project.' # publish @@ -112,31 +164,77 @@ complete -c poetry -A -n '__fish_seen_subcommand_from publish' -l client-cert -d complete -c poetry -A -n '__fish_seen_subcommand_from publish' -l dry-run -d 'Perform all actions except upload the package.' complete -c poetry -A -n '__fish_seen_subcommand_from publish' -l password -d 'The password to access the repository.' complete -c poetry -A -n '__fish_seen_subcommand_from publish' -l repository -d 'The repository to publish the package to.' +complete -c poetry -A -n '__fish_seen_subcommand_from publish' -l skip-existing -d 'Ignore errors from files already existing in the repository.' complete -c poetry -A -n '__fish_seen_subcommand_from publish' -l username -d 'The username to access the repository.' # remove -complete -c poetry -A -n '__fish_seen_subcommand_from remove' -l dev -d 'Remove a package from the development dependencies.' +complete -c poetry -A -n '__fish_seen_subcommand_from remove' -l dev -d 'Remove a package from the development dependencies. (Deprecated)' complete -c poetry -A -n '__fish_seen_subcommand_from remove' -l dry-run -d 'Output the operations but do not execute anything (implicitly enables --verbose).' +complete -c poetry -A -n '__fish_seen_subcommand_from remove' -l group -d 'The group to remove the dependency from.' # run # search -# self +# 'self add' +complete -c poetry -A -n '__fish_seen_subcommand_from 'self add'' -l allow-prereleases -d 'Accept prereleases.' +complete -c poetry -A -n '__fish_seen_subcommand_from 'self add'' -l dry-run -d 'Output the operations but do not execute anything (implicitly enables --verbose).' +complete -c poetry -A -n '__fish_seen_subcommand_from 'self add'' -l editable -d 'Add vcs/path dependencies as editable.' +complete -c poetry -A -n '__fish_seen_subcommand_from 'self add'' -l extras -d 'Extras to activate for the dependency.' +complete -c poetry -A -n '__fish_seen_subcommand_from 'self add'' -l source -d 'Name of the source to use to install the package.' + +# 'self install' +complete -c poetry -A -n '__fish_seen_subcommand_from 'self install'' -l dry-run -d 'Output the operations but do not execute anything (implicitly enables --verbose).' +complete -c poetry -A -n '__fish_seen_subcommand_from 'self install'' -l sync -d 'Synchronize the environment with the locked packages and the specified groups.' + +# 'self lock' +complete -c poetry -A -n '__fish_seen_subcommand_from 'self lock'' -l check -d 'Check that the poetry.lock file corresponds to the current version of pyproject.toml.' +complete -c poetry -A -n '__fish_seen_subcommand_from 'self lock'' -l no-update -d 'Do not update locked versions, only refresh lock file.' + +# 'self remove' +complete -c poetry -A -n '__fish_seen_subcommand_from 'self remove'' -l dry-run -d 'Output the operations but do not execute anything (implicitly enables --verbose).' + +# 'self show' +complete -c poetry -A -n '__fish_seen_subcommand_from 'self show'' -l addons -d 'List only add-on packages installed.' +complete -c poetry -A -n '__fish_seen_subcommand_from 'self show'' -l latest -d 'Show the latest version.' +complete -c poetry -A -n '__fish_seen_subcommand_from 'self show'' -l outdated -d 'Show the latest version but only for packages that are outdated.' +complete -c poetry -A -n '__fish_seen_subcommand_from 'self show'' -l tree -d 'List the dependencies as a tree.' + +# 'self show plugins' + +# 'self update' +complete -c poetry -A -n '__fish_seen_subcommand_from 'self update'' -l dry-run -d 'Output the operations but do not execute anything (implicitly enables --verbose).' +complete -c poetry -A -n '__fish_seen_subcommand_from 'self update'' -l preview -d 'Allow the installation of pre-release versions.' # shell # show complete -c poetry -A -n '__fish_seen_subcommand_from show' -l all -d 'Show all packages (even those not compatible with current system).' complete -c poetry -A -n '__fish_seen_subcommand_from show' -l latest -d 'Show the latest version.' -complete -c poetry -A -n '__fish_seen_subcommand_from show' -l no-dev -d 'Do not list the development dependencies.' +complete -c poetry -A -n '__fish_seen_subcommand_from show' -l no-dev -d 'Do not list the development dependencies. (Deprecated)' +complete -c poetry -A -n '__fish_seen_subcommand_from show' -l only -d 'The only dependency groups to include.' complete -c poetry -A -n '__fish_seen_subcommand_from show' -l outdated -d 'Show the latest version but only for packages that are outdated.' complete -c poetry -A -n '__fish_seen_subcommand_from show' -l tree -d 'List the dependencies as a tree.' +complete -c poetry -A -n '__fish_seen_subcommand_from show' -l why -d 'When showing the full list, or a --tree for a single package, also display why it\'s included.' +complete -c poetry -A -n '__fish_seen_subcommand_from show' -l with -d 'The optional dependency groups to include.' +complete -c poetry -A -n '__fish_seen_subcommand_from show' -l without -d 'The dependency groups to ignore.' + +# 'source add' +complete -c poetry -A -n '__fish_seen_subcommand_from 'source add'' -l default -d 'Set this source as the default (disable PyPI). A default source will also be the fallback source if you add other sources.' +complete -c poetry -A -n '__fish_seen_subcommand_from 'source add'' -l secondary -d 'Set this source as secondary.' + +# 'source remove' + +# 'source show' # update complete -c poetry -A -n '__fish_seen_subcommand_from update' -l dry-run -d 'Output the operations but do not execute anything (implicitly enables --verbose).' complete -c poetry -A -n '__fish_seen_subcommand_from update' -l lock -d 'Do not perform operations (only update the lockfile).' -complete -c poetry -A -n '__fish_seen_subcommand_from update' -l no-dev -d 'Do not update the development dependencies.' +complete -c poetry -A -n '__fish_seen_subcommand_from update' -l no-dev -d 'Do not update the development dependencies. (Deprecated)' +complete -c poetry -A -n '__fish_seen_subcommand_from update' -l only -d 'The only dependency groups to include.' +complete -c poetry -A -n '__fish_seen_subcommand_from update' -l with -d 'The optional dependency groups to include.' +complete -c poetry -A -n '__fish_seen_subcommand_from update' -l without -d 'The dependency groups to ignore.' # version +complete -c poetry -A -n '__fish_seen_subcommand_from version' -l dry-run -d 'Do not update pyproject.toml file' complete -c poetry -A -n '__fish_seen_subcommand_from version' -l short -d 'Output the version number only' diff --git a/roles/python/tasks/main.yml b/roles/python/tasks/main.yml index 94fd0d9..3754541 100644 --- a/roles/python/tasks/main.yml +++ b/roles/python/tasks/main.yml @@ -1,3 +1,9 @@ +- name: Install deadsnakes repo + become: yes + apt_repository: + repo: "ppa:deadsnakes/ppa" + register: apt_repo + - name: Install python become: yes apt: @@ -7,13 +13,22 @@ - python3-dev - python3.8 - python3.8-dev + - python3.8-distutils - python3.9 - python3.9-dev + - python3.9-distutils - python3.10 - python3.10-dev + - python3.10-distutils - python-is-python3 state: present +- name: Ensure user pip is up to date + pip: + name: pip + state: latest + extra_args: --user + - name: Check if poetry is installed stat: path: "{{ dotfiles_user_home }}/.poetry/bin/poetry" @@ -26,7 +41,7 @@ executable: /usr/bin/bash shell: | set -o pipefail && - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python - + curl -sSL https://install.python-poetry.org | python - - name: Install user python packages pip: From fb7f5cf08050afc3f07a77c894e1499f17eb7cdb Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Wed, 15 Feb 2023 23:04:51 +0000 Subject: [PATCH 15/67] Update bin role and re-enable --- group_vars/all.yml | 2 +- local.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/group_vars/all.yml b/group_vars/all.yml index 2a9af87..5c8df40 100644 --- a/group_vars/all.yml +++ b/group_vars/all.yml @@ -110,7 +110,7 @@ deb_packages: bins: - name: aws-vault - url: https://github.com/99designs/aws-vault/releases/download/v6.3.1/aws-vault-linux-amd64 + url: https://github.com/99designs/aws-vault/releases/download/v6.6.2/aws-vault-linux-amd64 fish_paths: - "~/bin" diff --git a/local.yml b/local.yml index f636389..f9a31e3 100644 --- a/local.yml +++ b/local.yml @@ -2,7 +2,7 @@ hosts: "{{ host }}" roles: - { role: apt, tags: ["apt"] } - # - { role: bin, tags: ["bin"] } + - { role: bin, tags: ["bin"] } - { role: linux, tags: ["linux"] } - { role: python, tags: ["python"] } # - { role: dotfiles, tags: ["dotfiles"] } From c03bc7d43b88f8f5835728d1d989b25031651179 Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Wed, 15 Feb 2023 23:06:00 +0000 Subject: [PATCH 16/67] Remove unused dotfiles and re-enable dotfiles role --- local.yml | 2 +- roles/dotfiles/files/screenrc | 8 -------- roles/dotfiles/files/tmux.conf | 19 ------------------- roles/dotfiles/files/xsession | 1 - roles/dotfiles/tasks/main.yml | 6 ------ 5 files changed, 1 insertion(+), 35 deletions(-) delete mode 100644 roles/dotfiles/files/screenrc delete mode 100644 roles/dotfiles/files/tmux.conf delete mode 100644 roles/dotfiles/files/xsession diff --git a/local.yml b/local.yml index f9a31e3..41764e8 100644 --- a/local.yml +++ b/local.yml @@ -5,7 +5,7 @@ - { role: bin, tags: ["bin"] } - { role: linux, tags: ["linux"] } - { role: python, tags: ["python"] } - # - { role: dotfiles, tags: ["dotfiles"] } + - { role: dotfiles, tags: ["dotfiles"] } - { role: autofs, tags: ["autofs"] } - { role: fish, tags: ["fish"] } - { role: fonts, tags: ["fonts"] } diff --git a/roles/dotfiles/files/screenrc b/roles/dotfiles/files/screenrc deleted file mode 100644 index 98ef35a..0000000 --- a/roles/dotfiles/files/screenrc +++ /dev/null @@ -1,8 +0,0 @@ -startup_message off - -term screen-256color - -backtick 1 60 60 ~/bin/screen_gcal - -hardstatus alwayslastline -hardstatus string '[ $1` ] %{= kG}[ %{G}%H %{g}][%= %{= kw} %?%-w%?%{r}(%{W}%n %t%?(%u)%?%{r})%{w}%?%+w%?%?%= %{g}][%{B} %d/%m %{W}%c %{g}]' diff --git a/roles/dotfiles/files/tmux.conf b/roles/dotfiles/files/tmux.conf deleted file mode 100644 index 2c86d6a..0000000 --- a/roles/dotfiles/files/tmux.conf +++ /dev/null @@ -1,19 +0,0 @@ -# force config reload -unbind r -bind r source-file ~/.tmux.conf - -# quick pane cycling -unbind ^A -bind ^A select-pane -t :.+ - -# gcal fun -set-option -g status-interval 60 -set-option -g status-left "#[fg=blue,bright]#(~/bin/screen_gcal )#[default]" - -# 256 colours -set -g default-terminal "screen-256color" - -# Mouse scrolling -set -g mouse on -bind m set -g mouse off -bind M set -g mouse on diff --git a/roles/dotfiles/files/xsession b/roles/dotfiles/files/xsession deleted file mode 100644 index b3743dc..0000000 --- a/roles/dotfiles/files/xsession +++ /dev/null @@ -1 +0,0 @@ -eval $(gpg-agent --daemon) diff --git a/roles/dotfiles/tasks/main.yml b/roles/dotfiles/tasks/main.yml index d11456c..cefe587 100644 --- a/roles/dotfiles/tasks/main.yml +++ b/roles/dotfiles/tasks/main.yml @@ -2,12 +2,6 @@ loop: - src: alacritty.yml dest: .alacritty.yml - - src: screenrc - dest: .screenrc - - src: tmux.conf - dest: .tmux.conf - - src: xsession - dest: .xsession file: src: "{{ dotfiles_home }}/roles/dotfiles/files/{{ item.src }}" dest: "{{ dotfiles_user_home }}/{{ item.dest }}" From 72929f61121b7ec11ed7375744c9c288e0cf1599 Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Wed, 15 Feb 2023 23:08:26 +0000 Subject: [PATCH 17/67] Remove remaining regolith config --- local.yml | 1 - roles/regolith/files/compton.config | 223 ---------------- roles/regolith/files/dunstrc | 332 ------------------------ roles/regolith/files/i3.config | 341 ------------------------- roles/regolith/files/rofimoji.rc | 1 - roles/regolith/handlers/main.yml | 3 - roles/regolith/tasks/config.yml | 13 - roles/regolith/tasks/main.yml | 6 - roles/regolith/tasks/setup.yml | 54 ---- roles/regolith/templates/Xresources.j2 | 29 --- roles/regolith/templates/i3status.j2 | 93 ------- 11 files changed, 1096 deletions(-) delete mode 100644 roles/regolith/files/compton.config delete mode 100644 roles/regolith/files/dunstrc delete mode 100644 roles/regolith/files/i3.config delete mode 100644 roles/regolith/files/rofimoji.rc delete mode 100644 roles/regolith/handlers/main.yml delete mode 100644 roles/regolith/tasks/config.yml delete mode 100644 roles/regolith/tasks/main.yml delete mode 100644 roles/regolith/tasks/setup.yml delete mode 100644 roles/regolith/templates/Xresources.j2 delete mode 100644 roles/regolith/templates/i3status.j2 diff --git a/local.yml b/local.yml index 41764e8..b51d52b 100644 --- a/local.yml +++ b/local.yml @@ -10,7 +10,6 @@ - { role: fish, tags: ["fish"] } - { role: fonts, tags: ["fonts"] } - { role: gnome, tags: ["gnome"] } - # - { role: regolith } - { role: sway, tags: ["sway"] } - { role: git, tags: ["git"] } - { role: node, tags: ["node"] } diff --git a/roles/regolith/files/compton.config b/roles/regolith/files/compton.config deleted file mode 100644 index b9aa3df..0000000 --- a/roles/regolith/files/compton.config +++ /dev/null @@ -1,223 +0,0 @@ -################################# -# -# Adapted for Regolith from https://gist.github.com/vemacs/458d101ad0bfb79ab70792ecb977c40c -# -################################# - -################################# -# -# Backend -# -################################# - -# Backend to use: "xrender" or "glx". -# GLX backend is typically much faster but depends on a sane driver. -backend = "glx"; - -################################# -# -# GLX backend -# -################################# - -glx-no-stencil = true; - -# GLX backend: Copy unmodified regions from front buffer instead of redrawing them all. -# My tests with nvidia-drivers show a 10% decrease in performance when the whole screen is modified, -# but a 20% increase when only 1/4 is. -# My tests on nouveau show terrible slowdown. -# Useful with --glx-swap-method, as well. -glx-copy-from-front = false; - -# GLX backend: Use MESA_copy_sub_buffer to do partial screen update. -# My tests on nouveau shows a 200% performance boost when only 1/4 of the screen is updated. -# May break VSync and is not available on some drivers. -# Overrides --glx-copy-from-front. -# glx-use-copysubbuffermesa = true; - -# GLX backend: Avoid rebinding pixmap on window damage. -# Probably could improve performance on rapid window content changes, but is known to break things on some drivers (LLVMpipe). -# Recommended if it works. -glx-no-rebind-pixmap = true; -use-damage = false; - - -################################# -# -# Shadows -# -################################# - -# Enabled client-side shadows on windows. -shadow = true; -# The blur radius for shadows. (default 12) -shadow-radius = 7; -# The left offset for shadows. (default -15) -shadow-offset-x = -5; -# The top offset for shadows. (default -15) -shadow-offset-y = -5; -# The translucency for shadows. (default .75) -shadow-opacity = 0.8; - -# Set if you want different colour shadows -# shadow-red = 0.0; -# shadow-green = 0.0; -# shadow-blue = 0.0; - -# The shadow exclude options are helpful if you have shadows enabled. Due to the way compton draws its shadows, certain applications will have visual glitches -# (most applications are fine, only apps that do weird things with xshapes or argb are affected). -# This list includes all the affected apps I found in my testing. The "! name~=''" part excludes shadows on any "Unknown" windows, this prevents a visual glitch with the XFWM alt tab switcher. -shadow-exclude = [ - "! name~=''", - "name = 'Notification'", - "name = 'Plank'", - "name = 'Docky'", - "name = 'Kupfer'", - "name = 'xfce4-notifyd'", - "name *= 'VLC'", - "name *= 'compton'", - "name *= 'cpt_frame_window'", - "name *= 'Chromium'", - "name *= 'Chrome'", - "name *= 'wrapper-2.0'", - "class_g = 'Firefox' && argb", - "class_g = 'Conky'", - "class_g = 'Kupfer'", - "class_g = 'Synapse'", - "class_g ?= 'Notify-osd'", - "class_g ?= 'Cairo-dock'", - "_GTK_FRAME_EXTENTS@:c" -]; -# Avoid drawing shadow on all shaped windows (see also: --detect-rounded-corners) -shadow-ignore-shaped = false; - -################################# -# -# Opacity -# -################################# - -inactive-opacity = 1; -active-opacity = 1; -frame-opacity = 1; -inactive-opacity-override = false; - -# Dim inactive windows. (0.0 - 1.0) -inactive-dim = 0.03; -# Do not let dimness adjust based on window opacity. -inactive-dim-fixed = true; -# Blur background of transparent windows. Bad performance with X Render backend. GLX backend is preferred. -# blur-background = true; -# Blur background of opaque windows with transparent frames as well. -# blur-background-frame = true; -# Do not let blur radius adjust based on window opacity. -blur-background-fixed = false; -blur-background-exclude = [ - "window_type = 'dock'", - "window_type = 'desktop'" -]; - -################################# -# -# Fading -# -################################# - -# Fade windows during opacity changes. -fading = true; -# The time between steps in a fade in milliseconds. (default 10). -fade-delta = 3; -# Opacity change between steps while fading in. (default 0.028). -fade-in-step = 0.03; -# Opacity change between steps while fading out. (default 0.03). -fade-out-step = 0.03; -# Fade windows in/out when opening/closing -# no-fading-openclose = true; - -# Specify a list of conditions of windows that should not be faded. -fade-exclude = [ ]; - -################################# -# -# Other -# -################################# - -# Try to detect WM windows and mark them as active. -mark-wmwin-focused = true; -# Mark all non-WM but override-redirect windows active (e.g. menus). -mark-ovredir-focused = true; -# Use EWMH _NET_WM_ACTIVE_WINDOW to determine which window is focused instead of using FocusIn/Out events. -# Usually more reliable but depends on a EWMH-compliant WM. -use-ewmh-active-win = true; -# Detect rounded corners and treat them as rectangular when --shadow-ignore-shaped is on. -detect-rounded-corners = true; - -# Detect _NET_WM_OPACITY on client windows, useful for window managers not passing _NET_WM_OPACITY of client windows to frame windows. -# This prevents opacity being ignored for some apps. -# For example without this enabled my xfce4-notifyd is 100% opacity no matter what. -detect-client-opacity = true; - -# Specify refresh rate of the screen. -# If not specified or 0, compton will try detecting this with X RandR extension. -refresh-rate = 0; - -vsync = true; - -# Enable DBE painting mode, intended to use with VSync to (hopefully) eliminate tearing. -# Reported to have no effect, though. -dbe = false; - -# Limit compton to repaint at most once every 1 / refresh_rate second to boost performance. -# This should not be used with --vsync drm/opengl/opengl-oml as they essentially does --sw-opti's job already, -# unless you wish to specify a lower refresh rate than the actual value. -sw-opti = false; - -# Unredirect all windows if a full-screen opaque window is detected, to maximize performance for full-screen windows, like games. -# Known to cause flickering when redirecting/unredirecting windows. -# paint-on-overlay may make the flickering less obvious. -unredir-if-possible = false; - -# Specify a list of conditions of windows that should always be considered focused. -focus-exclude = [ ]; - -# Use WM_TRANSIENT_FOR to group windows, and consider windows in the same group focused at the same time. -detect-transient = true; -# Use WM_CLIENT_LEADER to group windows, and consider windows in the same group focused at the same time. -# WM_TRANSIENT_FOR has higher priority if --detect-transient is enabled, too. -detect-client-leader = true; - -# Prevent shadows from drawing across displays. -xinerama-shadow-crop = true; - -################################# -# -# Window type settings -# -################################# - -wintypes: -{ - tooltip = - { - # fade: Fade the particular type of windows. - fade = true; - # shadow: Give those windows shadow - shadow = false; - # opacity: Default opacity for the type of windows. - opacity = 0.85; - # focus: Whether to always consider windows of this type focused. - focus = true; - }; - dock = { shadow = true; } - dnd = { shadow = false; } - popup_menu = { - opacity = 1.0; - shadow = false; - fade = false; - } - dropdown_menu = { - opacity = 1.0; - fade = false; - } -}; diff --git a/roles/regolith/files/dunstrc b/roles/regolith/files/dunstrc deleted file mode 100644 index 1924c7d..0000000 --- a/roles/regolith/files/dunstrc +++ /dev/null @@ -1,332 +0,0 @@ -[global] - ### Display ### - - # Which monitor should the notifications be displayed on. - monitor = 0 - - # Display notification on focused monitor. Possible modes are: - # mouse: follow mouse pointer - # keyboard: follow window with keyboard focus - # none: don't follow anything - # - # "keyboard" needs a window manager that exports the - # _NET_ACTIVE_WINDOW property. - # This should be the case for almost all modern window managers. - # - # If this option is set to mouse or keyboard, the monitor option - # will be ignored. - follow = mouse - - # The geometry of the window: - # [{width}]x{height}[+/-{x}+/-{y}] - # The geometry of the message window. - # The height is measured in number of notifications everything else - # in pixels. If the width is omitted but the height is given - # ("-geometry x2"), the message window expands over the whole screen - # (dmenu-like). If width is 0, the window expands to the longest - # message displayed. A positive x is measured from the left, a - # negative from the right side of the screen. Y is measured from - # the top and down respectively. - # The width can be negative. In this case the actual width is the - # screen width minus the width defined in within the geometry option. - geometry = "300x5-0+20" - - # Show how many messages are currently hidden (because of geometry). - indicate_hidden = yes - - # Shrink window if it's smaller than the width. Will be ignored if - # width is 0. - shrink = no - - # The transparency of the window. Range: [0; 100]. - # This option will only work if a compositing window manager is - # present (e.g. xcompmgr, compiz, etc.). - transparency = 0 - - # The height of the entire notification. If the height is smaller - # than the font height and padding combined, it will be raised - # to the font height and padding. - notification_height = 0 - - # Draw a line of "separator_height" pixel height between two - # notifications. - # Set to 0 to disable. - separator_height = 1 - - # Padding between text and separator. - padding = 8 - - # Horizontal padding. - horizontal_padding = 8 - - # Defines width in pixels of frame around the notification window. - # Set to 0 to disable. - frame_width = 0 - - # Defines color of the frame around the notification window. - frame_color = "#aaaaaa" - - # Define a color for the separator. - # possible values are: - # * auto: dunst tries to find a color fitting to the background; - # * foreground: use the same color as the foreground; - # * frame: use the same color as the frame; - # * anything else will be interpreted as a X color. - separator_color = frame - - # Sort messages by urgency. - sort = yes - - # Don't remove messages, if the user is idle (no mouse or keyboard input) - # for longer than idle_threshold seconds. - # Set to 0 to disable. - # Transient notifications ignore this setting. - idle_threshold = 120 - - ### Text ### - - font = DejaVu Sans Mono 10 - - # The spacing between lines. If the height is smaller than the - # font height, it will get raised to the font height. - line_height = 1 - - # Possible values are: - # full: Allow a small subset of html markup in notifications: - # bold - # italic - # strikethrough - # underline - # - # For a complete reference see - # . - # - # strip: This setting is provided for compatibility with some broken - # clients that send markup even though it's not enabled on the - # server. Dunst will try to strip the markup but the parsing is - # simplistic so using this option outside of matching rules for - # specific applications *IS GREATLY DISCOURAGED*. - # - # no: Disable markup parsing, incoming notifications will be treated as - # plain text. Dunst will not advertise that it has the body-markup - # capability if this is set as a global setting. - # - # It's important to note that markup inside the format option will be parsed - # regardless of what this is set to. - markup = full - - # The format of the message. Possible variables are: - # %a appname - # %s summary - # %b body - # %i iconname (including its path) - # %I iconname (without its path) - # %p progress value if set ([ 0%] to [100%]) or nothing - # %n progress value if set without any extra characters - # %% Literal % - # Markup is allowed - format = "%s\n%b" - - # Alignment of message text. - # Possible values are "left", "center" and "right". - alignment = left - - # Show age of message if message is older than show_age_threshold - # seconds. - # Set to -1 to disable. - show_age_threshold = 60 - - # Split notifications into multiple lines if they don't fit into - # geometry. - word_wrap = yes - - # When word_wrap is set to no, specify where to ellipsize long lines. - # Possible values are "start", "middle" and "end". - ellipsize = middle - - # Ignore newlines '\n' in notifications. - ignore_newline = no - - # Merge multiple notifications with the same content - stack_duplicates = true - - # Hide the count of merged notifications with the same content - hide_duplicate_count = false - - # Display indicators for URLs (U) and actions (A). - show_indicators = yes - - ### Icons ### - - # Align icons left/right/off - icon_position = left - - # Scale larger icons down to this size, set to 0 to disable - max_icon_size = 32 - - # Paths to default icons. - icon_path = /usr/share/icons/gnome/32x32/status/:/usr/share/icons/gnome/32x32/devices/ - - ### History ### - - # Should a notification popped up from history be sticky or timeout - # as if it would normally do. - sticky_history = yes - - # Maximum amount of notifications kept in history - history_length = 20 - - ### Misc/Advanced ### - - # dmenu path. - dmenu = /usr/bin/dmenu -p dunst: - - # Browser for opening urls in context menu. - browser = /usr/bin/google-chrome - - # Always run rule-defined scripts, even if the notification is suppressed - always_run_script = true - - # Define the title of the windows spawned by dunst - title = Dunst - - # Define the class of the windows spawned by dunst - class = Dunst - - # Print a notification on startup. - # This is mainly for error detection, since dbus (re-)starts dunst - # automatically after a crash. - startup_notification = false - - ### Legacy - - # Use the Xinerama extension instead of RandR for multi-monitor support. - # This setting is provided for compatibility with older nVidia drivers that - # do not support RandR and using it on systems that support RandR is highly - # discouraged. - # - # By enabling this setting dunst will not be able to detect when a monitor - # is connected or disconnected which might break follow mode if the screen - # layout changes. - force_xinerama = false - -# Experimental features that may or may not work correctly. Do not expect them -# to have a consistent behaviour across releases. -[experimental] - # Calculate the dpi to use on a per-monitor basis. - # If this setting is enabled the Xft.dpi value will be ignored and instead - # dunst will attempt to calculate an appropriate dpi value for each monitor - # using the resolution and physical size. This might be useful in setups - # where there are multiple screens with very different dpi values. - per_monitor_dpi = false - -[shortcuts] - - # Shortcuts are specified as [modifier+][modifier+]...key - # Available modifiers are "ctrl", "mod1" (the alt-key), "mod2", - # "mod3" and "mod4" (windows-key). - # Xev might be helpful to find names for keys. - - # Close notification. - close = mod4+slash - - # Close all notifications. - close_all = mod4+shift+slash - - # Redisplay last message(s). - # On the US keyboard layout "grave" is normally above TAB and left - # of "1". Make sure this key actually exists on your keyboard layout, - # e.g. check output of 'xmodmap -pke' - history = mod4+grave - - # Context menu. - context = mod4+semicolon - -[urgency_low] - # IMPORTANT: colors have to be defined in quotation marks. - # Otherwise the "#" and following would be interpreted as a comment. - background = "#222222" - foreground = "#888888" - timeout = 10 - # Icon for notifications with low urgency, uncomment to enable - #icon = /path/to/icon - -[urgency_normal] - background = "#285577" - foreground = "#ffffff" - frame_color = "#0e64a5" - timeout = 10 - # Icon for notifications with normal urgency, uncomment to enable - #icon = /path/to/icon - -[urgency_critical] - background = "#900000" - foreground = "#ffffff" - frame_color = "#ff0000" - timeout = 0 - # Icon for notifications with critical urgency, uncomment to enable - #icon = /path/to/icon - -# Every section that isn't one of the above is interpreted as a rules to -# override settings for certain messages. -# Messages can be matched by "appname", "summary", "body", "icon", "category", -# "msg_urgency" and you can override the "timeout", "urgency", "foreground", -# "background", "new_icon" and "format". -# Shell-like globbing will get expanded. -# -# SCRIPTING -# You can specify a script that gets run when the rule matches by -# setting the "script" option. -# The script will be called as follows: -# script appname summary body icon urgency -# where urgency can be "LOW", "NORMAL" or "CRITICAL". -# -# NOTE: if you don't want a notification to be displayed, set the format -# to "". -# NOTE: It might be helpful to run dunst -print in a terminal in order -# to find fitting options for rules. - -#[espeak] -# summary = "*" -# script = dunst_espeak.sh - -#[script-test] -# summary = "*script*" -# script = dunst_test.sh - -#[ignore] -# # This notification will not be displayed -# summary = "foobar" -# format = "" - -#[history-ignore] -# # This notification will not be saved in history -# summary = "foobar" -# history_ignore = yes - -#[signed_on] -# appname = Pidgin -# summary = "*signed on*" -# urgency = low -# -#[signed_off] -# appname = Pidgin -# summary = *signed off* -# urgency = low -# -#[says] -# appname = Pidgin -# summary = *says* -# urgency = critical -# -#[twitter] -# appname = Pidgin -# summary = *twitter.com* -# urgency = normal -# -# vim: ft=cfg - -[slack] - appname = Slack - background = "#472545" - frame_color = "#990f8f" diff --git a/roles/regolith/files/i3.config b/roles/regolith/files/i3.config deleted file mode 100644 index fb990ee..0000000 --- a/roles/regolith/files/i3.config +++ /dev/null @@ -1,341 +0,0 @@ - - -# Need to refer by index https://github.com/regolith-linux/regolith-desktop/issues/84#issuecomment-520169715 -workspace "$ws1" output $screen_left -workspace "$ws2" output $screen_left -workspace "$ws3" output $screen_left -workspace "$ws4" output $screen_left -workspace "$ws5" output $screen_left -workspace "$ws6" output $screen_left -workspace "$ws7" output $screen_left -workspace "$ws8" output $screen_left - -workspace "$ws11" output $screen_right -workspace "$ws12" output $screen_right -workspace "$ws13" output $screen_right -workspace "$ws14" output $screen_right -workspace "$ws15" output $screen_right -workspace "$ws16" output $screen_right -workspace "$ws17" output $screen_right -workspace "$ws18" output $screen_right - -workspace $wsA output $screen_internal -workspace $wsB output $screen_internal -workspace $wsC output $screen_internal -workspace $wsD output $screen_internal - -############################################################################### -# Launcher dialogs -############################################################################### - -## Launch // Password Manager // <◇> j ## -set_from_resource $i3-wm.program.password i3-wm.program.password -bindsym $mod+j exec $i3-wm.program.password - - -## Launch // Type Date // <◇> y ## -bindsym $mod+y exec "sleep 0.5 && date +%Y-%m-%d | sed 's/./usleep 2,str &,/g' | xargs -d, xte" - -############################################################################### -# Window and Workspace Navigation -############################################################################### - - - -## Navigate // Scratchpad // <◇> a ## -bindsym $mod+Ctrl+a scratchpad show - -## Navigate // Named Workspace // <◇>? _ ## -bindsym $mod+minus exec i3-input -f 'pango:Inconsolata 20' -F 'workspace %s' -P 'GOTO: ' - - -############################################################################### -# Window and Workspace Configuration -############################################################################### - - -## Modify // Move to Scratchpad // <◇> m ## -bindsym $mod+Ctrl+m move to scratchpad - -## Modify // Tile/Float Focus Toggle // <◇> t ## -bindsym $mod+Shift+t focus mode_toggle - - - - - -## Modify // Move To Named Workspace // <◇> _ ## -bindsym $mod+Shift+minus exec i3-input -f 'pango:Inconsolata 20' -F 'move container to workspace %s' -P 'MVTO: ' - -## Modify // Tab Name // <◇># _ ## -bindsym $mod+numbersign exec i3-input -f 'pango:Inconsolata 20' -F 'title_format %s' -P 'NAME: ' - -# Use Mouse+$mod to drag floating windows to their wanted position -floating_modifier $mod - -############################################################################### -# Session Management -############################################################################### - -## Session // Terminate App // <◇> q ## -bindsym $mod+Shift+q [con_id="__focused__"] exec --no-startup-id kill -9 $(xdotool getwindowfocus getwindowpid) - - -####################################k########################################### -# System Management -############################################################################### - -## Launch // Settings // <◇> F2 ## -set_from_resource $i3-wm.program.settings i3-wm.program.settings gnome-control-center -bindsym $mod+F2 exec $i3-wm.program.settings - -## Launch // Notification Viewer // <◇> n ## -set_from_resource $i3-wm.program.notification_ui i3-wm.program.notification_ui /usr/bin/rofication-gui -bindsym $mod+Shift+n exec $i3-wm.program.notificatiohen_ui - -## Launch // Screenshot // ## -## Launch // Screenshot // <◇> m ## -bindsym --release Print exec --no-startup-id flameshot gui -bindsym --release $mod+m exec --no-startup-id flameshot gui - - - -############################################################################### -# Workspace Management -############################################################################### - -# i3-snapshot for load/save current layout -## Modify // Save Window Layout // <◇> , ## -bindsym $mod+comma exec /usr/bin/i3-snapshot -o > /tmp/i3-snapshot -## Modify // Load Window Layout // <◇> . ## -bindsym $mod+period exec /usr/bin/i3-snapshot -c < /tmp/i3-snapshot - - - -# Cause Settings app to float above tiled windows -floating_maximum_size -1 x -1 - -############################################################################### -# Window Resize and Gaps -############################################################################### - - - -bindsym --whole-window --border $mod+shift+button4 resize shrink height 5 px or 5 ppt -bindsym --whole-window --border $mod+shift+button5 resize grow height 5 px or 5 ppt -bindsym --whole-window --border $mod+button5 resize shrink width 5 px or 5 ppt -bindsym --whole-window --border $mod+button4 resize grow width 5 px or 5 ppt - -### -# HA -### - -bindsym Mod1+Mod4+u exec $HOME/bin/hass service call scene.turn_on --arguments entity_id=scene.bedroom_day -bindsym Mod1+Mod4+i exec $HOME/bin/hass service call scene.turn_on --arguments entity_id=scene.bedroom_evening_desk -bindsym Mod1+Mod4+o exec $HOME/bin/hass service call scene.turn_on --arguments entity_id=scene.bedroom_evening -bindsym Mod1+Mod4+semicolon exec $HOME/bin/hass service call scene.turn_on --arguments entity_id=scene.bedroom_off - -############################################################################### -# i3 Appearance and Behavior -############################################################################### - -# Disable titlebar -set_from_resource $i3-wm.window.border.size i3-wm.window.border.size 1 -set_from_resource $i3-wm.floatingwindow.border.size i3-wm.floatingwindow.border.size 1 -default_border normal 1 -default_floating_border pixel $i3-wm.floatingwindow.border.size - -# Specify the distance between windows in pixels. (i3-gaps) -set_from_resource $i3-wm.gaps.inner.size i3-wm.gaps.inner.size 0 -set_from_resource $i3-wm.gaps.outer.size i3-wm.gaps.outer.size 0 -gaps inner $i3-wm.gaps.inner.size -gaps outer $i3-wm.gaps.outer.size - -# Only enable gaps on a workspace when there is at least one container -set_from_resource $i3-wm.gaps.smart i3-wm.gaps.smart on -smart_gaps $i3-wm.gaps.smart - -# Enable popup during fullscreen -set_from_resource $i3-wm.gaps.popup_during_fullscreen i3-wm.gaps.popup_during_fullscreen smart -popup_during_fullscreen $i3-wm.gaps.popup_during_fullscreen - -# window focus follows your mouse movements as the mouse crosses window borders -set_from_resource $i3-wm.gaps.focus_follows_mouse i3-wm.gaps.focus_follows_mouse yes -focus_follows_mouse $i3-wm.gaps.focus_follows_mouse - -############################################################################### -# i3 Colors and Fonts -############################################################################### - -# Create variables from Xresources for i3's look. -set_from_resource $focused.color.border i3-wm.client.focused.color.border "#002b36" -set_from_resource $focused.color.background i3-wm.client.focused.color.background "#586e75" -set_from_resource $focused.color.text i3-wm.client.focused.color.text "#fdf6e3" -set_from_resource $focused.color.indicator i3-wm.client.focused.color.indicator "#268bd2" -set_from_resource $focused.color.child_border i3-wm.client.focused.color.child_border - -set_from_resource $focused_inactive.color.border i3-wm.client.focused_inactive.color.border "#002b36" -set_from_resource $focused_inactive.color.background i3-wm.client.focused_inactive.color.background "#073642" -set_from_resource $focused_inactive.color.text i3-wm.client.focused_inactive.color.text "#839496" -set_from_resource $focused_inactive.color.indicator i3-wm.client.focused_inactive.color.indicator "#073642" -set_from_resource $focused_inactive.color.child_border i3-wm.client.focused_inactive.color.child_border - -set_from_resource $unfocused.color.border i3-wm.client.unfocused.color.border "#002b36" -set_from_resource $unfocused.color.background i3-wm.client.unfocused.color.background "#073642" -set_from_resource $unfocused.color.text i3-wm.client.unfocused.color.text "#839496" -set_from_resource $unfocused.color.indicator i3-wm.client.unfocused.color.indicator "#073642" -set_from_resource $unfocused.color.child_border i3-wm.client.unfocused.color.child_border - -set_from_resource $urgent.color.border i3-wm.client.urgent.color.border "#002b36" -set_from_resource $urgent.color.background i3-wm.client.urgent.color.background "#dc322f" -set_from_resource $urgent.color.text i3-wm.client.urgent.color.text "#fdf6e3" -set_from_resource $urgent.color.indicator i3-wm.client.urgent.color.indicator "#002b36" -set_from_resource $urgent.color.child_border i3-wm.client.urgent.color.child_border - - -# Window Border color -# class border background text indicator child_border -#client.focused $focused.color.border $focused.color.background $focused.color.text $focused.color.indicator $focused.color.child_border -#client.focused_inactive $focused_inactive.color.border $focused_inactive.color.background $focused_inactive.color.text $focused_inactive.color.indicator $focused_inactive.color.child_border -#client.unfocused $unfocused.color.border $unfocused.color.background $unfocused.color.text $unfocused.color.indicator $unfocused.color.child_border -#client.urgent $urgent.color.border $urgent.color.background $urgent.color.text $urgent.color.indicator $urgent.color.child_border - -# class border backgr. text indicator child_border -client.focused #005B9F #005B9F #ffffff #f505f3 #0e8ceb -client.focused_inactive #333333 #184363 #ffffff #484e50 #5f676a -client.unfocused #1D1D1D #1D1D1D #888888 #292d2e #222222 -client.urgent #EA141E #900000 #ffffff #900000 #ff0000 -client.placeholder #000000 #0c0c0c #ffffff #000000 #0c0c0c - -# Create variables from Xresources for i3bars's look. -set_from_resource $i3-wm.bar.background.color i3-wm.bar.background.color "#000000" -set_from_resource $i3-wm.bar.statusline.color i3-wm.bar.statusline.color "#93a1a1" -set_from_resource $i3-wm.bar.separator.color i3-wm.bar.separator.color "#268bd2" - -set_from_resource $i3-wm.bar.workspace.focused.border.color i3-wm.bar.workspace.focused.border.color "#073642" -set_from_resource $i3-wm.bar.workspace.focused.background.color i3-wm.bar.workspace.focused.background.color "#073642" -set_from_resource $i3-wm.bar.workspace.focused.text.color i3-wm.bar.workspace.focused.text.color "#eee8d5" - -set_from_resource $i3-wm.bar.workspace.active.border.color i3-wm.bar.workspace.active.border.color "#073642" -set_from_resource $i3-wm.bar.workspace.active.background.color i3-wm.bar.workspace.active.background.color "#073642" -set_from_resource $i3-wm.bar.workspace.active.text.color i3-wm.bar.workspace.active.text.color "#586e75" - -set_from_resource $i3-wm.bar.workspace.inactive.border.color i3-wm.bar.workspace.inactive.border.color "#002b36" -set_from_resource $i3-wm.bar.workspace.inactive.background.color i3-wm.bar.workspace.inactive.background.color "#002b36" -set_from_resource $i3-wm.bar.workspace.inactive.text.color i3-wm.bar.workspace.inactive.text.color "#586e75" - -set_from_resource $i3-wm.bar.workspace.urgent.border.color i3-wm.bar.workspace.urgent.border.color "#dc322f" -set_from_resource $i3-wm.bar.workspace.urgent.background.color i3-wm.bar.workspace.urgent.background.color "#dc322f" -set_from_resource $i3-wm.bar.workspace.urgent.text.color i3-wm.bar.workspace.urgent.text.color "#fdf6e3" - -# Sets i3 font for dialogs -set_from_resource $i3-wm.font i3-wm.font pango:DejaVu Sans Mono 9 -font pango:DejaVu Sans Mono 9 - -############################################################################### -# i3 Bar -############################################################################### - -set_from_resource $i3-wm.bar.position i3-wm.bar.position bottom -set_from_resource $i3-wm.bar.font i3-wm.bar.font pango:DejaVu Sans Mono 9, Material Design Icons 13 -set_from_resource $i3-wm.bar.separator i3-wm.bar.separator "|" -set_from_resource $i3-wm.bar.trayoutput i3-wm.bar.trayoutput none -set_from_resource $i3-wm.bar.stripworkspacenumbers i3-wm.bar.stripworkspacenumbers yes - -# i3xrocks config file. Override this for custom status indicators on the bar. -set_from_resource $i3-wm.bar.status_command i3-wm.bar.status_command i3xrocks -u ~/.config/regolith/i3xrocks/conf.d -d /etc/regolith/i3xrocks/conf.d - -# The bar configuration -bar { - position $i3-wm.bar.position - font pango:DejaVu Sans Mono 10 - separator_symbol $i3-wm.bar.separator - status_command i3status - tray_output primary - strip_workspace_numbers $i3-wm.bar.stripworkspacenumbers - - colors { - background #000000 - statusline $i3-wm.bar.statusline.color - separator "#444444" - -# BORDER BACKGROUND TEXT -# focused_workspace $i3-wm.bar.workspace.focused.border.color $i3-wm.bar.workspace.focused.background.color $i3-wm.bar.workspace.focused.text.color -# active_workspace $i3-wm.bar.workspace.active.border.color $i3-wm.bar.workspace.active.background.color $i3-wm.bar.workspace.active.text.color -# inactive_workspace $i3-wm.bar.workspace.inactive.border.color $i3-wm.bar.workspace.inactive.background.color $i3-wm.bar.workspace.inactive.text.color -# urgent_workspace $i3-wm.bar.workspace.urgent.border.color $i3-wm.bar.workspace.urgent.background.color $i3-wm.bar.workspace.urgent.text.color - - focused_workspace #005B9F #005B9F #ffffff - active_workspace #707070 #707070 #ffffff - inactive_workspace #333333 #333333 #888888 - urgent_workspace #900000 #900000 #ffffff - binding_mode #CC0000 #900000 #ffffff - } -} - -############################################################################### -# External programs launched with i3 -############################################################################### - -# Start the installed regolith-compositor -set_from_resource $i3-wm.program.compositor i3-wm.program.compositor /usr/share/regolith-compositor/init -exec --no-startup-id $i3-wm.program.compositor - -# Start Rofication for notifications -set_from_resource $i3-wm.program.notifications i3-wm.program.notifications /usr/bin/rofication-daemon -exec --no-startup-id $i3-wm.program.notifications - -# Launch first time user experience script -set_from_resource $i3-wm.program.ftui i3-wm.program.ftui /usr/bin/regolith-ftue -exec --no-startup-id $i3-wm.program.ftui - -# Hide the mouse pointer if unused for a duration -set_from_resource $i3-wm.program.unclutter i3-wm.program.unclutter /usr/bin/regolith-ftue /usr/bin/unclutter -b -exec --no-startup-id $i3-wm.program.unclutter - -# User programs from Xresources -# To use, define an Xresource key i3-wm.program.[1-3] with the value of the program to launch. -# See https://regolith-linux.org/docs/howto/override-xres/ for details. -set_from_resource $i3-wm.program.1 i3-wm.program.1 : -exec --no-startup-id $i3-wm.program.1 -set_from_resource $i3-wm.program.2 i3-wm.program.2 : -exec --no-startup-id $i3-wm.program.2 -set_from_resource $i3-wm.program.3 i3-wm.program.3 : -exec --no-startup-id $i3-wm.program.3 - -#### -# Floating windows -#### - -for_window [class="Arandr"] floating enable -for_window [class="SimpleScreenRecorder"] floating enable -for_window [class="plexamp"] floating enable -for_window [class="Ulauncher"] floating enable -for_window [class="java-lang-Thread"] floating enable -for_window [class="Workrave"] border none -for_window [class="Workrave"] floating enable -for_window [class="jetbrains-toolbox"] floating enable -for_window [class="1Password"] floating enable -for_window [class="1password"] floating enable -for_window [class="plexamp"] floating enable -for_window [class="Plexamp"] floating enable -for_window [title="About Mozilla Firefox"] floating enable -for_window [class="jetbrains-pycharm" title="win0"] floating enable -for_window [title="Welcome to PyCharm"] floating enable -for_window [class="MPlayer"] floating enable - -#### -# Workspace assignment -#### - -assign [class="jetbrains-pycharm"] "$ws1" -for_window [class="jetbrains-pycharm"] move to workspace "$ws1" -assign [class="Slack"] "$ws18" -assign [class="Mumble"] "$ws18" -assign [class="Spotify"] "$ws17" -assign [class="zoom"] "$ws15" - - -# Borders -for_window [class="obsidian"] border pixel 1 -for_window [class="firefox"] border pixel 1 diff --git a/roles/regolith/files/rofimoji.rc b/roles/regolith/files/rofimoji.rc deleted file mode 100644 index fc67924..0000000 --- a/roles/regolith/files/rofimoji.rc +++ /dev/null @@ -1 +0,0 @@ -files = [emojis, arrows, geometric_shapes, letterlike_symbols, mathematical_operators, miscellaneous_technical] diff --git a/roles/regolith/handlers/main.yml b/roles/regolith/handlers/main.yml deleted file mode 100644 index 40d1ead..0000000 --- a/roles/regolith/handlers/main.yml +++ /dev/null @@ -1,3 +0,0 @@ -- name: Restart i3 - command: "regolith-look refresh" - tags: i3 diff --git a/roles/regolith/tasks/config.yml b/roles/regolith/tasks/config.yml deleted file mode 100644 index 57172d5..0000000 --- a/roles/regolith/tasks/config.yml +++ /dev/null @@ -1,13 +0,0 @@ -- name: Update Xresources - template: - src: "Xresources.j2" - dest: "{{ dotfiles_user_home }}/.config/regolith/Xresources" - mode: 0664 - notify: Restart i3 - -- name: Update i3status - template: - src: "i3status.j2" - dest: "{{ dotfiles_user_home }}/.config/i3status/config" - mode: 0664 - notify: Restart i3 diff --git a/roles/regolith/tasks/main.yml b/roles/regolith/tasks/main.yml deleted file mode 100644 index fab9a7d..0000000 --- a/roles/regolith/tasks/main.yml +++ /dev/null @@ -1,6 +0,0 @@ -- name: Window manager setup - import_tasks: roles/regolith/tasks/setup.yml - tags: ["regolith"] -- name: Window manager config - import_tasks: roles/regolith/tasks/config.yml - tags: ["regolith", "wm"] diff --git a/roles/regolith/tasks/setup.yml b/roles/regolith/tasks/setup.yml deleted file mode 100644 index a2b557e..0000000 --- a/roles/regolith/tasks/setup.yml +++ /dev/null @@ -1,54 +0,0 @@ -- name: Install packages - become: yes - apt: - pkg: - - i3lock - - dunst - state: present - -- name: Remove regolith-rofication - become: yes - apt: - pkg: - - regolith-rofication - state: absent - purge: yes - -- name: Ensure directories exist - file: - path: "{{ item }}" - state: directory - mode: 0775 - - loop: - - "{{ dotfiles_user_home }}/.config/regolith/i3" - - "{{ dotfiles_user_home }}/.config/regolith/compton" - - "{{ dotfiles_user_home }}/.config/i3status" - -- name: Link i3 config - file: - src: "{{ dotfiles_home }}/roles/regolith/files/i3.config" - dest: "{{ dotfiles_user_home }}/.config/regolith/i3/config" - state: link - force: yes - -- name: Link compton config - file: - src: "{{ dotfiles_home }}/roles/regolith/files/compton.config" - dest: "{{ dotfiles_user_home }}/.config/regolith/compton/config" - state: link - force: yes - -- name: Link dunst config - file: - src: "{{ dotfiles_home }}/roles/regolith/files/dunstrc" - dest: "{{ dotfiles_user_home }}/.config/dunst/dunstrc" - state: link - force: yes - -- name: Link rofimoji config - file: - src: "{{ dotfiles_home }}/roles/regolith/files/rofimoji.rc" - dest: "{{ dotfiles_user_home }}/.config/rofimoji.rc" - state: link - force: yes diff --git a/roles/regolith/templates/Xresources.j2 b/roles/regolith/templates/Xresources.j2 deleted file mode 100644 index c9a3dae..0000000 --- a/roles/regolith/templates/Xresources.j2 +++ /dev/null @@ -1,29 +0,0 @@ -i3-wm.bar.background.color: #000000 - -St.color0: #000000 -St.color1: #cc0000 -St.color2: #60C302 -St.color3: #ECC100 -St.color4: #0E71F1 -St.color5: #C901EA -St.color6: #09bdbf -St.color7: #D3D7CF - -St.color8: #555753 -St.color9: #ff3c3c -St.color10: #8EF827 -St.color11: #FCE94F -St.color12: #66ABF5 -St.color13: #f44be1 -St.color14: #11EEEE -St.color15: #ffffff - -gnome.wallpaper: {{ wallpaper }} -gnome.terminal.font: JetBrains Mono 12 - -i3-wm.program.lock: i3lock -c 172032 -ef -i $HOME/dotfiles/wallpapers/dual/firewatch-hike.png && playerctl -a pause -i3-wm.program.password: {{ password_manager_launcher }} - -wjdp.screen_left: {{ screen_left }} -wjdp.screen_right: {{ screen_right }} -wjdp.screen_internal: {{ screen_internal|default('eDP') }} diff --git a/roles/regolith/templates/i3status.j2 b/roles/regolith/templates/i3status.j2 deleted file mode 100644 index f64f1de..0000000 --- a/roles/regolith/templates/i3status.j2 +++ /dev/null @@ -1,93 +0,0 @@ -# i3status configuration file. -# see "man i3status" for documentation. - -# It is important that this file is edited as UTF-8. -# The following line should contain a sharp s: -# ß -# If the above line is not correctly displayed, fix your editor first! - -general { - colors = true - color_good = "#02e53a" - color_degraded = "#e5c602" - color_bad = "#e51c02" - interval = 1 -} - -order += "volume master" -{% if has_wireless %} -order += "wireless _first_" -{% endif %} -order += "ethernet _first_" -order += "battery 0" -order += "disk /" -order += "cpu_usage" -# order += "cpu_temperature 0" -order += "memory" -order += "load" -order += "tztime local" - -cpu_usage { - format = "CPU %usage" - # separator = false - # separator_block_width = 6 -} - -memory { - format = "MEM %percentage_used" - threshold_degraded = "4G" - threshold_critical = "1G" -} - -wireless _first_ { - format_up = "WLN %quality" - format_down = "WLN" - color_bad = "#444444" - format_quality="%02d" -} - -ethernet _first_ { - # if you use %speed, i3status requires root privileges - format_up = "ETH" - format_down = "ETH" - color_bad = "#444444" -} - -battery 0 { - format = "%status %percentage %remaining" - integer_battery_capacity = true - hide_seconds = true - - status_full = "FUL" - status_chr = "CHR" - status_bat = "BAT" - format_down = "NOBAT" -} - -tztime local { - format = "%Y-%m-%d %H:%M:%S" -} - -load { - format = "LAV %1min %5min %15min" - max_threshold = "8" -} - -cpu_temperature 0 { - format = "TMP %degreesC" - max_threshold = 70 - path = "/sys/devices/platform/nct6775.2592/hwmon/hwmon0/temp1_input" -} - -disk "/" { - format = "DSK %avail" - prefix_type = "decimal" - low_threshold = 10 -} - -volume master { - format = "VOL %volume" - format_muted = "MUT %volume" - device = "pulse" - color_degraded = "#444444" -} From 94d3a7d44f0b0c055f18284f75901178925afea3 Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Wed, 15 Feb 2023 23:14:03 +0000 Subject: [PATCH 18/67] Generate sway output config per machine --- host_vars/dux.yml | 8 ++++++-- roles/sway/files/config.d/.gitignore | 1 + roles/sway/files/config.d/05-outputs | 2 +- roles/sway/tasks/main.yml | 6 ++++++ roles/sway/templates/outputs.j2 | 20 ++++++++++++++++++++ 5 files changed, 34 insertions(+), 3 deletions(-) create mode 100644 roles/sway/files/config.d/.gitignore create mode 100644 roles/sway/templates/outputs.j2 diff --git a/host_vars/dux.yml b/host_vars/dux.yml index bb14645..22ccbc2 100644 --- a/host_vars/dux.yml +++ b/host_vars/dux.yml @@ -3,5 +3,9 @@ git_signing_key: 4DC1AA6287F8CC4A wallpaper: ~/dotfiles/wallpapers/1440p/dennis-schweizer-18nR85wWyLY-unsplash.jpg -screen_left: DisplayPort-3 -screen_right: DisplayPort-1 +screen_left: DP-4 +screen_right: DP-2 +screen_left_w: 2560 +screen_left_h: 1440 +screen_right_w: 1920 +screen_right_h: 1080 diff --git a/roles/sway/files/config.d/.gitignore b/roles/sway/files/config.d/.gitignore new file mode 100644 index 0000000..70b5b46 --- /dev/null +++ b/roles/sway/files/config.d/.gitignore @@ -0,0 +1 @@ +05-outputs diff --git a/roles/sway/files/config.d/05-outputs b/roles/sway/files/config.d/05-outputs index 2d95db2..2eaf545 100644 --- a/roles/sway/files/config.d/05-outputs +++ b/roles/sway/files/config.d/05-outputs @@ -17,4 +17,4 @@ workspace 14 output DP-2 workspace 15 output DP-2 workspace 16 output DP-2 workspace 17 output DP-2 -workspace 18 output DP-2 \ No newline at end of file +workspace 18 output DP-2 diff --git a/roles/sway/tasks/main.yml b/roles/sway/tasks/main.yml index 3dd7bf7..4796209 100644 --- a/roles/sway/tasks/main.yml +++ b/roles/sway/tasks/main.yml @@ -53,3 +53,9 @@ dest: "{{ dotfiles_user_home }}/.config/waybar" state: link force: yes + +- name: Update output config + template: + src: "outputs.j2" + dest: "{{ dotfiles_user_home }}/.config/sway/config.d/05-outputs" + mode: 0664 diff --git a/roles/sway/templates/outputs.j2 b/roles/sway/templates/outputs.j2 new file mode 100644 index 0000000..7aa886b --- /dev/null +++ b/roles/sway/templates/outputs.j2 @@ -0,0 +1,20 @@ +output {{ screen_left }} pos 0 0 res {{ screen_left_w }}x{{ screen_left_h }} +output {{ screen_right }} pos {{ screen_left_w }} 0 res {{ screen_right_w }}x{{ screen_right_h }} + +workspace 1 output {{ screen_left }} +workspace 2 output {{ screen_left }} +workspace 3 output {{ screen_left }} +workspace 4 output {{ screen_left }} +workspace 5 output {{ screen_left }} +workspace 6 output {{ screen_left }} +workspace 7 output {{ screen_left }} +workspace 8 output {{ screen_left }} + +workspace 11 output {{ screen_right }} +workspace 12 output {{ screen_right }} +workspace 13 output {{ screen_right }} +workspace 14 output {{ screen_right }} +workspace 15 output {{ screen_right }} +workspace 16 output {{ screen_right }} +workspace 17 output {{ screen_right }} +workspace 18 output {{ screen_right }} From 3f7fe680f677176e2220ac2ad4d8857efe1d2265 Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Wed, 15 Feb 2023 23:16:47 +0000 Subject: [PATCH 19/67] Remove unused scripts --- scripts/package-1password.sh | 6 ------ scripts/package-go.sh | 10 ---------- scripts/package-keybase.sh | 10 ---------- scripts/package-lsd.sh | 5 ----- scripts/package-pass.sh | 10 ---------- scripts/package-steam.sh | 5 ----- 6 files changed, 46 deletions(-) delete mode 100755 scripts/package-1password.sh delete mode 100755 scripts/package-go.sh delete mode 100755 scripts/package-keybase.sh delete mode 100755 scripts/package-lsd.sh delete mode 100755 scripts/package-pass.sh delete mode 100755 scripts/package-steam.sh diff --git a/scripts/package-1password.sh b/scripts/package-1password.sh deleted file mode 100755 index 9a5659e..0000000 --- a/scripts/package-1password.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash - -sudo apt-key --keyring /usr/share/keyrings/1password.gpg adv --keyserver keyserver.ubuntu.com --recv-keys 3FEF9748469ADBE15DA7CA80AC2D62742012EA22 -echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/1password.gpg] https://downloads.1password.com/linux/debian edge main' | sudo tee /etc/apt/sources.list.d/1password.list -sudo apt-get -qqy update -sudo apt-get install -qqy 1password diff --git a/scripts/package-go.sh b/scripts/package-go.sh deleted file mode 100755 index 9be9fc2..0000000 --- a/scripts/package-go.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -cd /tmp -# This needs bumping to go version desired -wget https://golang.org/dl/go1.15.5.linux-amd64.tar.gz -O go.tar.gz -sudo rm -rf /usr/local/go -sudo tar -C /usr/local -xzf go.tar.gz - -# Go apps I use -go get -u github.com/gopasspw/gopass diff --git a/scripts/package-keybase.sh b/scripts/package-keybase.sh deleted file mode 100755 index 0069209..0000000 --- a/scripts/package-keybase.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -cd /tmp -curl -O https://prerelease.keybase.io/keybase_amd64.deb -# if you see an error about missing `libappindicator1` -# from the next command, you can ignore it, as the -# subsequent command corrects it -sudo dpkg -i keybase_amd64.deb -sudo apt-get install -f -run_keybase diff --git a/scripts/package-lsd.sh b/scripts/package-lsd.sh deleted file mode 100755 index a7af21a..0000000 --- a/scripts/package-lsd.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -cd /tmp -wget https://github.com/Peltoche/lsd/releases/download/0.19.0/lsd_0.19.0_amd64.deb -O lsd.deb -sudo dpkg -i lsd.deb diff --git a/scripts/package-pass.sh b/scripts/package-pass.sh deleted file mode 100755 index 5d679d6..0000000 --- a/scripts/package-pass.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -go get github.com/gopasspw/gopass - -sudo apt install -qy oathtool expect zbar-tools - -cd ~/local -git clone https://github.com/tadfisher/pass-otp -cd pass-otp -sudo make install diff --git a/scripts/package-steam.sh b/scripts/package-steam.sh deleted file mode 100755 index 03256f6..0000000 --- a/scripts/package-steam.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -cd /tmp -wget https://steamcdn-a.akamaihd.net/client/installer/steam.deb -sudo dpkg -i steam.deb From 60ddcff124859e9a646b2068b8975a95d2cbd0a5 Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Wed, 15 Feb 2023 23:42:57 +0000 Subject: [PATCH 20/67] Set env vars needed for flameshot to work --- roles/fish/files/conf.d/keychain.fish | 2 +- roles/fish/files/conf.d/sway.fish | 7 +++++++ roles/sway/vars/main.yml | 3 +++ 3 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 roles/fish/files/conf.d/sway.fish diff --git a/roles/fish/files/conf.d/keychain.fish b/roles/fish/files/conf.d/keychain.fish index 6ff97ef..f796cde 100644 --- a/roles/fish/files/conf.d/keychain.fish +++ b/roles/fish/files/conf.d/keychain.fish @@ -1,4 +1,4 @@ -set -x XDG_CURRENT_DESKTOP GNOME +set -x XDG_CURRENT_DESKTOP sway export (gnome-keyring-daemon -s) set -x GPG_TTY (tty) set -x GPGKEY D8FC66D2 diff --git a/roles/fish/files/conf.d/sway.fish b/roles/fish/files/conf.d/sway.fish new file mode 100644 index 0000000..781efca --- /dev/null +++ b/roles/fish/files/conf.d/sway.fish @@ -0,0 +1,7 @@ +# As fish is the login shell we can set global environment variables here + +set -gx SDL_VIDEODRIVER wayland +set -gx _JAVA_AWT_WM_NONREPARENTING 1 +set -gx QT_QPA_PLATFORM wayland +set -gx XDG_CURRENT_DESKTOP sway +set -gx XDG_SESSION_DESKTOP sway diff --git a/roles/sway/vars/main.yml b/roles/sway/vars/main.yml index 82a739c..4bd94d3 100644 --- a/roles/sway/vars/main.yml +++ b/roles/sway/vars/main.yml @@ -13,3 +13,6 @@ sway_apt_packages: - waybar - fonts-font-awesome - xdg-desktop-portal-wlr + - wf-recorder + - grim + - slurp From ab6a8eb43627b9b332eabb01a816e8221d25939d Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Wed, 15 Feb 2023 23:43:48 +0000 Subject: [PATCH 21/67] Add a screen recording script --- bin/record | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100755 bin/record diff --git a/bin/record b/bin/record new file mode 100755 index 0000000..1316ea2 --- /dev/null +++ b/bin/record @@ -0,0 +1,6 @@ +#!/bin/fish +set file ~/Videos/recording_$(date +%F_%H-%M-%S).mp4 +# when user presses ctrl+c copy the file path to clipboard +trap 'echo -n $file | wl-copy' INT + +wf-recorder -g "$(slurp)" -f $file $argv From 167a571592cb86443092033810b9cb732bedfff1 Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Wed, 15 Feb 2023 23:47:46 +0000 Subject: [PATCH 22/67] Add screenshot script --- bin/screenshot | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100755 bin/screenshot diff --git a/bin/screenshot b/bin/screenshot new file mode 100755 index 0000000..65070cf --- /dev/null +++ b/bin/screenshot @@ -0,0 +1,12 @@ +#!/bin/fish +set DIR ~/Pictures/Screenshots + +if test ! -e "$DIR" + mkdir -p "$DIR" +end +set file $DIR/$(date +%F_%H-%M-%S).jpg + +grim -g "$(slurp)" $file + +# Copy file to clipboard +wl-copy < $file From 6de8a288d74401afceff5af6d93fa1fab13bf68a Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Thu, 16 Feb 2023 01:02:02 +0000 Subject: [PATCH 23/67] Cleanup group_vars/all.yml, mostly packages --- group_vars/all.yml | 25 ++++++------------------- 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/group_vars/all.yml b/group_vars/all.yml index 5c8df40..186d0ad 100644 --- a/group_vars/all.yml +++ b/group_vars/all.yml @@ -1,5 +1,5 @@ dotfiles_user_home: "{{ '~' | expanduser }}" -dotfiles_home: "{{dotfiles_user_home}}/dotfiles" +dotfiles_home: "{{ dotfiles_user_home }}/dotfiles" user: will full_name: Will Pimblett @@ -26,20 +26,16 @@ apt_repos: repo: ppa:libreoffice/ppa apt_packages: - # - arandr - audacity - baobab - build-essential - # - chromium-browser + - chromium-browser - code - curl - dconf-editor - # - default-jre - # - feh - flameshot - fonts-noto - gimp - # - gnupg2 - gpick - htop - httpie @@ -48,9 +44,8 @@ apt_packages: - iperf - libjpeg-dev - libpq-dev - # - libreoffice + - libreoffice - libxslt1-dev - # - lxappearance - meld - mpv - ncdu @@ -64,30 +59,25 @@ apt_packages: - playerctl - powertop - pwgen - # - ruby - # - ruby-dev - screen - - screenruler - # - software-properties-common + - software-properties-common - spotify-client - sshfs - sudo - syncthing - tailscale - tmux - # - units + - units - unrar - vim - vlc - wget - whois - wine - # - xautomation - # - xdotool - zbar-tools - speedcrunch - libfuse2 # Needed for AppImages - - wdisplays + - wdisplays # arandr but for wayland deb_packages: - pkg: bat @@ -104,9 +94,6 @@ deb_packages: version: "0.20.1" - pkg: steam-launcher url: https://steamcdn-a.akamaihd.net/client/installer/steam.deb - # - pkg: dug - # url: https://github.com/unfrl/dug/releases/download/0.0.85/dug.0.0.85.linux-x64.deb - # version: "0.0.85" bins: - name: aws-vault From b6b8cbe2790add7895d088a29975eb4f90bdb3ad Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Thu, 16 Feb 2023 01:05:02 +0000 Subject: [PATCH 24/67] Add archive support to bin role and add difft to handled bins --- group_vars/all.yml | 3 +++ roles/bin/tasks/bin.yml | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/group_vars/all.yml b/group_vars/all.yml index 186d0ad..d6a63f3 100644 --- a/group_vars/all.yml +++ b/group_vars/all.yml @@ -98,6 +98,9 @@ deb_packages: bins: - name: aws-vault url: https://github.com/99designs/aws-vault/releases/download/v6.6.2/aws-vault-linux-amd64 + - name: difft + url: https://github.com/Wilfred/difftastic/releases/download/0.43.1/difft-x86_64-unknown-linux-gnu.tar.gz + archive: true fish_paths: - "~/bin" diff --git a/roles/bin/tasks/bin.yml b/roles/bin/tasks/bin.yml index 348fcbf..cdd421a 100644 --- a/roles/bin/tasks/bin.yml +++ b/roles/bin/tasks/bin.yml @@ -24,6 +24,14 @@ dest: ~/bin/{{ item.name }} mode: "0755" +- name: If {{ item.name }} is an archive, extract it + when: to_install and item.archive + unarchive: + src: ~/bin/{{ item.name }} + dest: ~/bin + remote_src: yes + mode: "0755" + - name: Write installed version (url) to file when: to_install copy: From 4bca5906ebd154ab4de523ae3712d373ddc2a072 Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Thu, 16 Feb 2023 01:13:35 +0000 Subject: [PATCH 25/67] Implement role to install blackd --- local.yml | 1 + roles/blackd/files/blackd.service | 10 ++++++++++ roles/blackd/tasks/main.yml | 17 +++++++++++++++++ 3 files changed, 28 insertions(+) create mode 100644 roles/blackd/files/blackd.service create mode 100644 roles/blackd/tasks/main.yml diff --git a/local.yml b/local.yml index b51d52b..6ad9ab5 100644 --- a/local.yml +++ b/local.yml @@ -24,3 +24,4 @@ go_version: 1.17.8 GOPATH: /home/will/go become: yes + - { role: blackd, tags: ["blackd"] } diff --git a/roles/blackd/files/blackd.service b/roles/blackd/files/blackd.service new file mode 100644 index 0000000..31ab091 --- /dev/null +++ b/roles/blackd/files/blackd.service @@ -0,0 +1,10 @@ +[Unit] +Description=Black Formatter + +[Service] +ExecStart=/home/will/.local/bin/blackd --bind-host=127.0.0.1 +Restart=on-failure +SyslogIdentifier=blackd + +[Install] +WantedBy=default.target diff --git a/roles/blackd/tasks/main.yml b/roles/blackd/tasks/main.yml new file mode 100644 index 0000000..bbd3a14 --- /dev/null +++ b/roles/blackd/tasks/main.yml @@ -0,0 +1,17 @@ +- name: Install blackd as user python package + pip: + name: black[d] + state: present + +- name: Link blackd service file + file: + src: "{{ dotfiles_home }}/roles/blackd/files/blackd.service" + dest: "{{ dotfiles_user_home }}/.config/systemd/user/blackd.service" + state: link + +- name: Enable blackd user service + systemd: + name: blackd + scope: user + enabled: true + state: started From 0e31b81dea4d8b70fc8a78839372d6cfc57485a0 Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Thu, 16 Feb 2023 01:49:41 +0000 Subject: [PATCH 26/67] Add role to set up syncthing --- group_vars/all.yml | 3 --- local.yml | 1 + roles/syncthing/tasks/main.yml | 42 ++++++++++++++++++++++++++++++++++ 3 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 roles/syncthing/tasks/main.yml diff --git a/group_vars/all.yml b/group_vars/all.yml index d6a63f3..5bb9240 100644 --- a/group_vars/all.yml +++ b/group_vars/all.yml @@ -19,9 +19,6 @@ apt_repos: - name: vscode repo: deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main key: https://packages.microsoft.com/keys/microsoft.asc - - name: syncthing - repo: deb https://apt.syncthing.net/ syncthing stable - key: https://syncthing.net/release-key.gpg - name: libreoffice repo: ppa:libreoffice/ppa diff --git a/local.yml b/local.yml index 6ad9ab5..b8a1471 100644 --- a/local.yml +++ b/local.yml @@ -25,3 +25,4 @@ GOPATH: /home/will/go become: yes - { role: blackd, tags: ["blackd"] } + - { role: syncthing, tags: ["syncthing"] } diff --git a/roles/syncthing/tasks/main.yml b/roles/syncthing/tasks/main.yml new file mode 100644 index 0000000..4fb21f1 --- /dev/null +++ b/roles/syncthing/tasks/main.yml @@ -0,0 +1,42 @@ +- name: Ensure syncthing repo will have priority over system packages + become: yes + copy: + content: "Package: *\nPin: origin apt.syncthing.net\nPin-Priority: 990\n" + dest: /etc/apt/preferences.d/syncthing + owner: root + group: root + mode: 0644 + +- name: Add synthing apt key + become: yes + apt_key: + url: https://syncthing.net/release-key.gpg + state: present + +- name: Add synthing apt repo + become: yes + apt_repository: + repo: deb https://apt.syncthing.net/ syncthing stable + state: present + +- name: Install syncthing + become: yes + apt: + name: syncthing + state: present + +- name: Fetch syncthing systemd unit file + become: yes + get_url: + url: https://raw.githubusercontent.com/syncthing/syncthing/main/etc/linux-systemd/system/syncthing%40.service + dest: /etc/systemd/system/syncthing@.service + owner: root + group: root + mode: 0644 + +- name: Enable syncthing service running as {{ user }} + become: yes + systemd: + name: syncthing@{{ user }}.service + enabled: true + state: started From fb90f14009bc21dadc06f81283d8c2512e8c295d Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Thu, 16 Feb 2023 10:38:16 +0000 Subject: [PATCH 27/67] Add output config for wgt152 --- group_vars/all.yml | 1 + host_vars/wgt152.yml | 8 ++++++-- roles/sway/files/config.d/05-outputs | 20 -------------------- 3 files changed, 7 insertions(+), 22 deletions(-) delete mode 100644 roles/sway/files/config.d/05-outputs diff --git a/group_vars/all.yml b/group_vars/all.yml index 5bb9240..b7a9fdb 100644 --- a/group_vars/all.yml +++ b/group_vars/all.yml @@ -95,6 +95,7 @@ deb_packages: bins: - name: aws-vault url: https://github.com/99designs/aws-vault/releases/download/v6.6.2/aws-vault-linux-amd64 + archive: false - name: difft url: https://github.com/Wilfred/difftastic/releases/download/0.43.1/difft-x86_64-unknown-linux-gnu.tar.gz archive: true diff --git a/host_vars/wgt152.yml b/host_vars/wgt152.yml index b31faaf..4df62eb 100644 --- a/host_vars/wgt152.yml +++ b/host_vars/wgt152.yml @@ -3,5 +3,9 @@ git_signing_key: 1B48523D91781A7F5CEC929B7CA9BF9F444BF7C8 wallpaper: ~/dotfiles/wallpapers/1440p/dennis-schweizer-18nR85wWyLY-unsplash.jpg -screen_left: DisplayPort-3 -screen_right: DisplayPort-2 +screen_left: DP-2 +screen_right: HDMI-A-1 +screen_left_w: 2560 +screen_left_h: 1440 +screen_right_w: 2560 +screen_right_h: 1440 diff --git a/roles/sway/files/config.d/05-outputs b/roles/sway/files/config.d/05-outputs deleted file mode 100644 index 2eaf545..0000000 --- a/roles/sway/files/config.d/05-outputs +++ /dev/null @@ -1,20 +0,0 @@ -output DP-4 pos 0 0 res 2560x1440 -output DP-2 pos 2560 0 res 1920x1080 - -workspace 1 output DP-4 -workspace 2 output DP-4 -workspace 3 output DP-4 -workspace 4 output DP-4 -workspace 5 output DP-4 -workspace 6 output DP-4 -workspace 7 output DP-4 -workspace 8 output DP-4 - -workspace 11 output DP-2 -workspace 12 output DP-2 -workspace 13 output DP-2 -workspace 14 output DP-2 -workspace 15 output DP-2 -workspace 16 output DP-2 -workspace 17 output DP-2 -workspace 18 output DP-2 From f09e333fd0dc05b115a8096ad34eba6a84ee3dfb Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Thu, 16 Feb 2023 10:47:24 +0000 Subject: [PATCH 28/67] Fix blackd role, ensure user systemd path exists --- roles/blackd/tasks/main.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/roles/blackd/tasks/main.yml b/roles/blackd/tasks/main.yml index bbd3a14..a6ceb7f 100644 --- a/roles/blackd/tasks/main.yml +++ b/roles/blackd/tasks/main.yml @@ -3,6 +3,11 @@ name: black[d] state: present +- name: Ensure ~/.config/systemd/user/ exists + file: + path: "{{ dotfiles_user_home }}/.config/systemd/user/" + state: directory + - name: Link blackd service file file: src: "{{ dotfiles_home }}/roles/blackd/files/blackd.service" From d5447cfc23d5ab5c8385056fd312ed4e0e34c9ba Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Thu, 16 Feb 2023 16:31:49 +0000 Subject: [PATCH 29/67] Add mako for notifications --- roles/sway/files/config.d/60-exec | 1 + roles/sway/files/mako | 18 ++++++++++++++++++ roles/sway/files/waybar/style.css | 2 +- roles/sway/tasks/main.yml | 13 +++++++++++++ roles/sway/vars/main.yml | 1 + 5 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 roles/sway/files/mako diff --git a/roles/sway/files/config.d/60-exec b/roles/sway/files/config.d/60-exec index e6d930d..3e29cf3 100644 --- a/roles/sway/files/config.d/60-exec +++ b/roles/sway/files/config.d/60-exec @@ -1,3 +1,4 @@ exec $launcher-daemon exec_always --no-startup-id ~/.cargo/bin/workstyle &> /tmp/workstyle.log exec wmname LG3D # for java apps like pycharm +exec_always --no-startup-id mako diff --git a/roles/sway/files/mako b/roles/sway/files/mako new file mode 100644 index 0000000..bb30b0b --- /dev/null +++ b/roles/sway/files/mako @@ -0,0 +1,18 @@ +anchor=top-right +font=Roboto +background-color=#475159 +background-color=#475159 +margin=0 +padding=5,5,10,5 + +border-size=1 +border-color=#475159dd + +default-timeout=10000 + +[urgency=high] +background-color=#cc0000 + +# slack is purple +[app-name=Slack] +background-color=#4a154b diff --git a/roles/sway/files/waybar/style.css b/roles/sway/files/waybar/style.css index 5b4e33b..bf0cc8b 100644 --- a/roles/sway/files/waybar/style.css +++ b/roles/sway/files/waybar/style.css @@ -6,7 +6,7 @@ window#waybar { background-color: rgba(43, 48, 59, 0.4); - border-bottom: 3px solid rgba(100, 114, 125, 0.5); + border-bottom: 3px solid #475159; color: #ffffff; transition-property: background-color; transition-duration: .5s; diff --git a/roles/sway/tasks/main.yml b/roles/sway/tasks/main.yml index 4796209..83c2096 100644 --- a/roles/sway/tasks/main.yml +++ b/roles/sway/tasks/main.yml @@ -54,6 +54,19 @@ state: link force: yes +- name: Ensure mako config directory exists + file: + path: "{{ dotfiles_user_home }}/.config/mako" + state: directory + mode: 0775 + +- name: Link mako config + file: + src: "{{ dotfiles_home }}/roles/sway/files/mako" + dest: "{{ dotfiles_user_home }}/.config/mako/config" + state: link + force: yes + - name: Update output config template: src: "outputs.j2" diff --git a/roles/sway/vars/main.yml b/roles/sway/vars/main.yml index 4bd94d3..29bc459 100644 --- a/roles/sway/vars/main.yml +++ b/roles/sway/vars/main.yml @@ -16,3 +16,4 @@ sway_apt_packages: - wf-recorder - grim - slurp + - mako-notifier From 28c7b621bf70ad9921487b7857c3d4279d184170 Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Thu, 16 Feb 2023 16:42:27 +0000 Subject: [PATCH 30/67] Firefox PiP should float --- roles/sway/files/config.d/50-per-window | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/roles/sway/files/config.d/50-per-window b/roles/sway/files/config.d/50-per-window index 492a986..61ac5cc 100644 --- a/roles/sway/files/config.d/50-per-window +++ b/roles/sway/files/config.d/50-per-window @@ -21,4 +21,5 @@ for_window [title="Welcome to PyCharm"] floating enable for_window [class="MPlayer"] floating enable for_window [app_id="firefox"] border pixel for_window [class="Slack"] border pixel -for_window [title="Firefox — Sharing Indicator"] floating enable \ No newline at end of file +for_window [title="Firefox — Sharing Indicator"] floating enable +for_window [title="Picture-in-Picture"] floating enable From 659e46a348bf08cdb0345f75ec1e1b41725d1d3c Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Thu, 16 Feb 2023 16:47:46 +0000 Subject: [PATCH 31/67] Add resize by scroll and modifier --- roles/sway/files/config.d/50-keys-resize | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/roles/sway/files/config.d/50-keys-resize b/roles/sway/files/config.d/50-keys-resize index f150708..30e45d6 100644 --- a/roles/sway/files/config.d/50-keys-resize +++ b/roles/sway/files/config.d/50-keys-resize @@ -28,3 +28,15 @@ mode "RESIZE" { bindsym $mod+r mode "default" } bindsym $mod+r mode "RESIZE" + +# resize window by holding mod and scrolling +bindsym --whole-window --release $mod+button4 resize grow width 5 px or 5 ppt +bindsym --whole-window --release $mod+button5 resize shrink width 5 px or 5 ppt + +# with shift for height +bindsym --whole-window --release $mod+Shift+button4 resize grow height 5 px or 5 ppt +bindsym --whole-window --release $mod+Shift+button5 resize shrink height 5 px or 5 ppt + +# with alt for both but maintain 16:9 aspect ratio, useful for videos +bindsym --whole-window --release $mod+Alt+button4 resize grow width 16 px or 16 ppt; resize grow height 9 px or 9 ppt +bindsym --whole-window --release $mod+Alt+button5 resize shrink width 16 px or 16 ppt; resize shrink height 9 px or 9 ppt From 67b46d7105550ee6c81460c7e483c54fbffa16c3 Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Thu, 16 Feb 2023 17:22:01 +0000 Subject: [PATCH 32/67] Tweak mako --- roles/sway/files/mako | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/roles/sway/files/mako b/roles/sway/files/mako index bb30b0b..6ae0e2b 100644 --- a/roles/sway/files/mako +++ b/roles/sway/files/mako @@ -1,3 +1,4 @@ +# To reload config use `makoctl reload` anchor=top-right font=Roboto background-color=#475159 @@ -8,7 +9,7 @@ padding=5,5,10,5 border-size=1 border-color=#475159dd -default-timeout=10000 +default-timeout=15000 [urgency=high] background-color=#cc0000 From 93ce8bd7ec7ecc0ceec69fd113b0fd2dc7d87878 Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Thu, 16 Feb 2023 18:04:15 +0000 Subject: [PATCH 33/67] Ulauncher preferences should float --- roles/sway/files/config.d/50-per-window | 1 + 1 file changed, 1 insertion(+) diff --git a/roles/sway/files/config.d/50-per-window b/roles/sway/files/config.d/50-per-window index 61ac5cc..a113ea4 100644 --- a/roles/sway/files/config.d/50-per-window +++ b/roles/sway/files/config.d/50-per-window @@ -23,3 +23,4 @@ for_window [app_id="firefox"] border pixel for_window [class="Slack"] border pixel for_window [title="Firefox — Sharing Indicator"] floating enable for_window [title="Picture-in-Picture"] floating enable +for_window [app_id="ulauncher"] floating enable From 7062b1d8c3ef51039b3bfedde8c60caf963d2d58 Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Thu, 16 Feb 2023 19:23:15 +0000 Subject: [PATCH 34/67] Add jetbrains toolbox scripts to path --- group_vars/all.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/group_vars/all.yml b/group_vars/all.yml index b7a9fdb..53915d7 100644 --- a/group_vars/all.yml +++ b/group_vars/all.yml @@ -107,6 +107,7 @@ fish_paths: - "~/.poetry/bin" - "/usr/local/go/bin" - "~/go/bin" + - "~/.local/share/JetBrains/Toolbox/scripts" fish_variables: - name: fish_greeting From b4e53e96572f02582be88398045be30eb350499c Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Thu, 16 Feb 2023 19:24:04 +0000 Subject: [PATCH 35/67] Attempt to allow user to change backlight brightness --- roles/sway/files/udev/90-backlight.rules | 5 +++++ roles/sway/handlers/main.yml | 3 +++ roles/sway/tasks/main.yml | 17 +++++++++++++++++ 3 files changed, 25 insertions(+) create mode 100644 roles/sway/files/udev/90-backlight.rules create mode 100644 roles/sway/handlers/main.yml diff --git a/roles/sway/files/udev/90-backlight.rules b/roles/sway/files/udev/90-backlight.rules new file mode 100644 index 0000000..9931c0d --- /dev/null +++ b/roles/sway/files/udev/90-backlight.rules @@ -0,0 +1,5 @@ +# Allow video group to control backlight and leds +ACTION=="add", SUBSYSTEM=="backlight", RUN+="/bin/chgrp video /sys/class/backlight/%k/brightness" +ACTION=="add", SUBSYSTEM=="backlight", RUN+="/bin/chmod g+w /sys/class/backlight/%k/brightness" +ACTION=="add", SUBSYSTEM=="leds", RUN+="/bin/chgrp video /sys/class/leds/%k/brightness" +ACTION=="add", SUBSYSTEM=="leds", RUN+="/bin/chmod g+w /sys/class/leds/%k/brightness" diff --git a/roles/sway/handlers/main.yml b/roles/sway/handlers/main.yml new file mode 100644 index 0000000..8c25d9f --- /dev/null +++ b/roles/sway/handlers/main.yml @@ -0,0 +1,3 @@ +- name: Reload udev + command: udevadm control --reload-rules + become: yes diff --git a/roles/sway/tasks/main.yml b/roles/sway/tasks/main.yml index 83c2096..6ce9b78 100644 --- a/roles/sway/tasks/main.yml +++ b/roles/sway/tasks/main.yml @@ -17,6 +17,23 @@ state: link force: yes +- name: Copy backlight udev rules + become: yes + copy: + src: "{{ dotfiles_home }}/roles/sway/files/udev/90-backlight.rules" + dest: "/etc/udev/rules.d/90-backlight.rules" + mode: 0664 + owner: root + group: root + notify: Reload udev + +- name: Add {{ user }} to video group + become: yes + user: + name: "{{ user }}" + groups: video + append: yes + - name: Ensure directories exist file: path: "{{ item }}" From 711c77beb0d7ea6fe722210289ab02ba0ed4ea03 Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Fri, 17 Feb 2023 16:48:54 +0000 Subject: [PATCH 36/67] Make obsidian run in Wayland mode --- local.yml | 1 + roles/wayland-tweaks/tasks/main.yml | 8 ++++++++ 2 files changed, 9 insertions(+) create mode 100644 roles/wayland-tweaks/tasks/main.yml diff --git a/local.yml b/local.yml index b8a1471..d2ab57b 100644 --- a/local.yml +++ b/local.yml @@ -26,3 +26,4 @@ become: yes - { role: blackd, tags: ["blackd"] } - { role: syncthing, tags: ["syncthing"] } + - { role: wayland-tweaks, tags: ["wayland-tweaks"] } diff --git a/roles/wayland-tweaks/tasks/main.yml b/roles/wayland-tweaks/tasks/main.yml new file mode 100644 index 0000000..9d1dacf --- /dev/null +++ b/roles/wayland-tweaks/tasks/main.yml @@ -0,0 +1,8 @@ +- name: Modify Obsidian .desktop file to launch in Wayland mode + lineinfile: + path: /usr/share/applications/obsidian.desktop + regexp: '^Exec=' + line: 'Exec=env OBSIDIAN_USE_WAYLAND=1 obsidian %U' + state: present + backup: yes + become: yes From 8c3354a1b81d95fd0281703f69b5be6591d0b252 Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Sat, 18 Feb 2023 19:24:17 +0000 Subject: [PATCH 37/67] Tweak snapshot script --- bin/screenshot | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/screenshot b/bin/screenshot index 65070cf..8aa04f0 100755 --- a/bin/screenshot +++ b/bin/screenshot @@ -6,7 +6,7 @@ if test ! -e "$DIR" end set file $DIR/$(date +%F_%H-%M-%S).jpg -grim -g "$(slurp)" $file +grim -g "$(slurp)" "$file" # Copy file to clipboard -wl-copy < $file +wl-copy < "$file" From 45ef7611d0ccc2b5391765859376477b8be63b4e Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Sat, 18 Feb 2023 19:24:28 +0000 Subject: [PATCH 38/67] Add 'snap' role to control snap Hopefully will ensure Firefox is installed from Mozilla PPA rather than snap. --- local.yml | 1 + roles/snap/NOTES.md | 4 ++++ roles/snap/tasks/main.yml | 21 +++++++++++++++++++++ 3 files changed, 26 insertions(+) create mode 100644 roles/snap/NOTES.md create mode 100644 roles/snap/tasks/main.yml diff --git a/local.yml b/local.yml index b8a1471..0f19987 100644 --- a/local.yml +++ b/local.yml @@ -1,6 +1,7 @@ - name: Set up local machine hosts: "{{ host }}" roles: + - { role: snap, tags: ["snap"] } - { role: apt, tags: ["apt"] } - { role: bin, tags: ["bin"] } - { role: linux, tags: ["linux"] } diff --git a/roles/snap/NOTES.md b/roles/snap/NOTES.md new file mode 100644 index 0000000..227bec9 --- /dev/null +++ b/roles/snap/NOTES.md @@ -0,0 +1,4 @@ +``` +snap remove --purge firefox +sudo apt remove --autoremove firefox + diff --git a/roles/snap/tasks/main.yml b/roles/snap/tasks/main.yml new file mode 100644 index 0000000..ae59307 --- /dev/null +++ b/roles/snap/tasks/main.yml @@ -0,0 +1,21 @@ +- name: Add mozillateam PPAs + become: yes + apt_repository: + repo: "ppa:mozillateam/ppa" + state: present + +- name: Prioritise mozillateam ppa over system packages + become: yes + copy: + content: | + Package: firefox* + Pin: release o=LP-PPA-mozillateam + Pin-Priority: 990 + + Package: firefox* + Pin: release o=Ubuntu + Pin-Priority: -1 + dest: /etc/apt/preferences.d/mozillateam + owner: root + group: root + mode: 0644 From c7b7ac5f42fafd7642522dcf8595de362ae31f0c Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Sat, 18 Feb 2023 20:56:56 +0000 Subject: [PATCH 39/67] Add note to mako config --- roles/sway/files/mako | 3 +++ 1 file changed, 3 insertions(+) diff --git a/roles/sway/files/mako b/roles/sway/files/mako index 6ae0e2b..07f4c23 100644 --- a/roles/sway/files/mako +++ b/roles/sway/files/mako @@ -1,3 +1,6 @@ +# There's a bug in distro package, if mako fails to load do `sudo aa-disable /etc/apparmor.d/fr.emersion.Mako` +# See https://github.com/emersion/mako/issues/257 + # To reload config use `makoctl reload` anchor=top-right font=Roboto From d02e2ca0125a04cadc30ebcaa00724e261a81ea7 Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Mon, 20 Feb 2023 14:51:33 +0000 Subject: [PATCH 40/67] Add task to priortise fish PPA --- roles/apt/tasks/deb.yml | 3 +++ roles/apt/tasks/misc.yml | 15 +++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 roles/apt/tasks/misc.yml diff --git a/roles/apt/tasks/deb.yml b/roles/apt/tasks/deb.yml index 48f8913..ff689ed 100644 --- a/roles/apt/tasks/deb.yml +++ b/roles/apt/tasks/deb.yml @@ -1,3 +1,6 @@ +- name: Run misc tasks + include_tasks: misc.yml + - name: Check if {{ item.pkg }} is installed set_fact: package_installed: "{{ item.pkg in ansible_facts.packages }}" diff --git a/roles/apt/tasks/misc.yml b/roles/apt/tasks/misc.yml new file mode 100644 index 0000000..a46b25b --- /dev/null +++ b/roles/apt/tasks/misc.yml @@ -0,0 +1,15 @@ +- name: Prioritise fish PPA takes over Ubuntu's + become: yes + copy: + content: | + Package: fish + Pin: release o=LP-PPA-fish-shell + Pin-Priority: 990 + + Package: fish + Pin: release o=Ubuntu + Pin-Priority: -1 + dest: /etc/apt/preferences.d/fish + owner: root + group: root + mode: 0644 From e5585068d3edf234e492c815536cd616304ac326 Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Mon, 20 Feb 2023 14:51:57 +0000 Subject: [PATCH 41/67] Split firefox snap tasks into own file --- roles/snap/tasks/firefox.yml | 21 +++++++++++++++++++++ roles/snap/tasks/main.yml | 23 ++--------------------- 2 files changed, 23 insertions(+), 21 deletions(-) create mode 100644 roles/snap/tasks/firefox.yml diff --git a/roles/snap/tasks/firefox.yml b/roles/snap/tasks/firefox.yml new file mode 100644 index 0000000..ae59307 --- /dev/null +++ b/roles/snap/tasks/firefox.yml @@ -0,0 +1,21 @@ +- name: Add mozillateam PPAs + become: yes + apt_repository: + repo: "ppa:mozillateam/ppa" + state: present + +- name: Prioritise mozillateam ppa over system packages + become: yes + copy: + content: | + Package: firefox* + Pin: release o=LP-PPA-mozillateam + Pin-Priority: 990 + + Package: firefox* + Pin: release o=Ubuntu + Pin-Priority: -1 + dest: /etc/apt/preferences.d/mozillateam + owner: root + group: root + mode: 0644 diff --git a/roles/snap/tasks/main.yml b/roles/snap/tasks/main.yml index ae59307..ed06805 100644 --- a/roles/snap/tasks/main.yml +++ b/roles/snap/tasks/main.yml @@ -1,21 +1,2 @@ -- name: Add mozillateam PPAs - become: yes - apt_repository: - repo: "ppa:mozillateam/ppa" - state: present - -- name: Prioritise mozillateam ppa over system packages - become: yes - copy: - content: | - Package: firefox* - Pin: release o=LP-PPA-mozillateam - Pin-Priority: 990 - - Package: firefox* - Pin: release o=Ubuntu - Pin-Priority: -1 - dest: /etc/apt/preferences.d/mozillateam - owner: root - group: root - mode: 0644 +- name: Run firefox tasks + include_tasks: firefox.yml From 80fedac24e7b7fffbcebc9efebf88a1afe48588e Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Sat, 25 Feb 2023 01:17:55 +0000 Subject: [PATCH 42/67] Handle not havving defined left/right screens --- host_vars/victor.yml | 3 --- roles/sway/templates/outputs.j2 | 2 ++ 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/host_vars/victor.yml b/host_vars/victor.yml index f1beca3..e1a4261 100644 --- a/host_vars/victor.yml +++ b/host_vars/victor.yml @@ -2,6 +2,3 @@ git_email: will@wjdp.uk git_signing_key: 4DC1AA6287F8CC4A wallpaper: ~/dotfiles/wallpapers/1440p/dennis-schweizer-18nR85wWyLY-unsplash.jpg - -screen_left: DP-2.8 -screen_right: DP-5 diff --git a/roles/sway/templates/outputs.j2 b/roles/sway/templates/outputs.j2 index 7aa886b..eccf2f5 100644 --- a/roles/sway/templates/outputs.j2 +++ b/roles/sway/templates/outputs.j2 @@ -1,3 +1,4 @@ +{% if screen_left is defined and screen_right is defined %} output {{ screen_left }} pos 0 0 res {{ screen_left_w }}x{{ screen_left_h }} output {{ screen_right }} pos {{ screen_left_w }} 0 res {{ screen_right_w }}x{{ screen_right_h }} @@ -18,3 +19,4 @@ workspace 15 output {{ screen_right }} workspace 16 output {{ screen_right }} workspace 17 output {{ screen_right }} workspace 18 output {{ screen_right }} +{% endif %} From 8b39ed59c6faa6c899d27d2e5b06f87d748607f4 Mon Sep 17 00:00:00 2001 From: Will Pimblett Date: Sat, 25 Feb 2023 01:20:58 +0000 Subject: [PATCH 43/67] Add built waybar --- bin/waybar | Bin 0 -> 3114952 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100755 bin/waybar diff --git a/bin/waybar b/bin/waybar new file mode 100755 index 0000000000000000000000000000000000000000..10cc653a19a40a4a0d5f944feb0654cfb2dd3c5d GIT binary patch literal 3114952 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 z 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