├── ansible.cfg ├── files ├── pictures │ └── monk-wallpaper.jpg └── configs │ ├── myi3blocks │ ├── myi3date │ ├── myi3memory │ ├── myi3temp │ ├── myi3load │ ├── myi3battery │ └── myi3weather │ ├── config │ ├── rofi │ │ └── config │ ├── i3blocks │ │ └── config │ ├── compton.conf │ └── dunst │ │ └── dunstrc │ ├── robbyrussell.zsh-theme │ ├── misc-scripts │ ├── blurlock │ └── i3exit │ ├── tmux.conf │ └── i3 │ └── config ├── docs ├── ubuntu-specific.md ├── zsh.md ├── applications.md └── i3-shortcuts.md ├── README.md ├── setup.yaml └── tasks ├── configure-user.yaml ├── configure-software-ubuntu.yaml ├── configure-software-manjaro.yaml ├── configure-software-fedora.yaml └── configure-i3.yaml /ansible.cfg: -------------------------------------------------------------------------------- 1 | [localhost] 2 | 127.0.0.1 ansible_connection=local 3 | -------------------------------------------------------------------------------- /files/pictures/monk-wallpaper.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bexxmodd/myi3setup/main/files/pictures/monk-wallpaper.jpg -------------------------------------------------------------------------------- /files/configs/myi3blocks/myi3date: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo $(date '+%a, %b %d %I:%M %p') 4 | 5 | case $BLOCK_BUTTON in 6 | 1) gsimplecal ;; 7 | *) ;; 8 | esac 9 | -------------------------------------------------------------------------------- /files/configs/config/rofi/config: -------------------------------------------------------------------------------- 1 | rofi.theme: android_notification 2 | rofi.terminal: gnome-terminal 3 | rofi.ssh-client: ssh 4 | rofi.ssh-command: {terminal} -- {ssh-client} {host} 5 | -------------------------------------------------------------------------------- /files/configs/myi3blocks/myi3memory: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | MEM_STAT=$(free -m | grep Mem | awk '{print $2,$3}') 4 | MEM_USED_MB=${MEM_STAT##* } 5 | MEM_USED_GB=$(echo "scale=2;$MEM_USED_MB/1024" | bc -l) 6 | echo "$MEM_USED_GB GB" 7 | -------------------------------------------------------------------------------- /docs/ubuntu-specific.md: -------------------------------------------------------------------------------- 1 | ## Ubuntu specific tweaks 2 | #### Install pre-requisites 3 | ``` 4 | sudo apt install -y git ansible python curl i3 5 | ``` 6 | #### Install i3-gaps from third party ppa 7 | 8 | ``` 9 | sudo add-apt-repository ppa:kgilmer/speed-ricer 10 | sudo apt-get update 11 | sudo apt-get install -y i3-gaps 12 | ``` 13 | -------------------------------------------------------------------------------- /files/configs/myi3blocks/myi3temp: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | readonly TEMP_RAW=$(sensors | grep Package | sed -n "s/.*+\(.*C\) .*/\1/p") 4 | 5 | echo "${TEMP_RAW}" 6 | echo "${TEMP_RAW}" 7 | 8 | TEMP_ROUND=${TEMP_RAW%.*} 9 | 10 | if (( $(echo "$TEMP_ROUND > 80" | bc -l) )) 11 | then 12 | echo "#FF6666" 13 | elif (( $(echo "$TEMP_ROUND > 60" | bc -l) )) 14 | then 15 | echo "#FFBF00" 16 | else 17 | echo "#33CC33" 18 | fi 19 | -------------------------------------------------------------------------------- /files/configs/robbyrussell.zsh-theme: -------------------------------------------------------------------------------- 1 | local ret_status="%(?:%{$fg_bold[green]%}🞂🞂:%{$fg_bold[red]%}🞂🞂)" 2 | PROMPT='%{$fg_bold[cyan]%}%c%{$reset_color%} $(git_prompt_info) ${ret_status}%{$reset_color%} ' 3 | 4 | ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_bold[blue]%}git:(%{$fg[red]%}" 5 | ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%} " 6 | ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[blue]%}) %{$fg[yellow]%}🟍" 7 | ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[blue]%})" 8 | -------------------------------------------------------------------------------- /files/configs/misc-scripts/blurlock: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # /usr/bin/blurlock 3 | 4 | # take screenshot 5 | import -window root /tmp/screenshot.png 6 | 7 | # blur it 8 | convert /tmp/screenshot.png -blur 0x12 /tmp/screenshotblur.png 9 | rm /tmp/screenshot.png 10 | 11 | # lock the screen 12 | i3lock -i /tmp/screenshotblur.png 13 | 14 | # sleep 1 adds a small delay to prevent possible race conditions with suspend 15 | sleep 10 16 | 17 | xset dpms force off 18 | 19 | exit 0 20 | -------------------------------------------------------------------------------- /docs/zsh.md: -------------------------------------------------------------------------------- 1 | ## oh-my-zsh with zsh-autosuggestions 2 | 3 | ``` 4 | sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" 5 | cp $HOME/myi3/files/configs/robbyrussell.zsh-theme $HOME/.oh-my-zsh/themes/robbyrussell.zsh-theme 6 | git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions 7 | ``` 8 | Update $HOME/.zshrc 9 | ``` 10 | plugins=(zsh-autosuggestions) 11 | ``` 12 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # My i3 Setup 2 | 3 | #### Install Pre-reqs 4 | ``` 5 | $ sudo pacman -S ansible i3 (for Arch Linux) 6 | $ sudo dnf install ansible (for Fedora, i3 will be installed during ansible run) 7 | ``` 8 | (for Ubuntu refer docs/ubuntu-specific.md) 9 | 10 | #### Clone my repo and run ansible 11 | ``` 12 | $ git clone https://github.com/bexxmodd/myi3setup.git 13 | $ cd myi3setup 14 | $ ansible-playbook -i ansible.cfg setup.yaml (edit the username in setup.yaml before running) 15 | ``` 16 | -------------------------------------------------------------------------------- /files/configs/myi3blocks/myi3load: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | readonly LOAD_AVG=$(cat /proc/loadavg | awk '{print $1,$2,$3}') 4 | LOAD_AVG_1m=$(echo ${LOAD_AVG} | awk '{print $1}') 5 | 6 | echo "${LOAD_AVG}" 7 | echo "${LOAD_AVG}" 8 | 9 | if (( $(echo "$LOAD_AVG_1m > 5.0" | bc -l) )) 10 | then 11 | echo "#FF6666" 12 | elif (( $(echo "$LOAD_AVG_1m > 2.5" | bc -l) )) 13 | then 14 | echo "#FFBF00" 15 | else 16 | echo "#33CC33" 17 | fi 18 | 19 | case $BLOCK_BUTTON in 20 | 1) gnome-terminal -- htop ;; 21 | *) ;; 22 | esac 23 | -------------------------------------------------------------------------------- /setup.yaml: -------------------------------------------------------------------------------- 1 | - hosts: localhost 2 | become: true 3 | 4 | vars: 5 | username: "user" 6 | userhome: "/home/{{ username }}" 7 | 8 | tasks: 9 | 10 | - include: tasks/configure-software-manjaro.yaml 11 | when: ansible_facts["os_family"] == "Archlinux" 12 | - include: tasks/configure-software-ubuntu.yaml 13 | when: ansible_facts["os_family"] == "Debian" 14 | - include: tasks/configure-software-fedora.yaml 15 | when: ansible_facts["os_family"] == "RedHat" 16 | - include: tasks/configure-user.yaml 17 | - include: tasks/configure-i3.yaml 18 | -------------------------------------------------------------------------------- /docs/applications.md: -------------------------------------------------------------------------------- 1 | ## My applications 2 | 3 | |Applicaiton|Description| 4 | |---|---| 5 | |rofi|Application launcher and window switcher| 6 | |i3blocks|i3 status bar| 7 | |dunst|Notification for i3| 8 | |alacritty|Terminal| 9 | |xrandr|monitor and screen setup| 10 | |arandr|screen settings (GUI for xrandr)(save layout as a sh file and add to the config for Autostart apps)| 11 | |ranger|command line file manager| 12 | |mousepad/leafpad|Editor| 13 | |flameshot|Screenshot utility| 14 | |pavucontrol|foraudio settings| 15 | |feh|for setting wallpaper| 16 | |lxappearance|to customize window appearance (themes and icons)| 17 | -------------------------------------------------------------------------------- /files/configs/misc-scripts/i3exit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # /usr/bin/i3exit 3 | 4 | case "$1" in 5 | lock) 6 | blurlock 7 | ;; 8 | logout) 9 | i3-msg exit 10 | ;; 11 | switch_user) 12 | dm-tool switch-to-greeter 13 | ;; 14 | suspend) 15 | blurlock && systemctl suspend 16 | ;; 17 | hibernate) 18 | blurlock && systemctl hibernate 19 | ;; 20 | reboot) 21 | systemctl reboot 22 | ;; 23 | shutdown) 24 | systemctl poweroff 25 | ;; 26 | *) 27 | echo "== ! i3exit: missing or invalid argument ! ==" 28 | echo "Try again with: lock | logout | switch_user | suspend | hibernate | reboot | shutdown" 29 | exit 2 30 | esac 31 | 32 | exit 0 33 | -------------------------------------------------------------------------------- /tasks/configure-user.yaml: -------------------------------------------------------------------------------- 1 | - name: User Configuration - Add sudoers entry for "{{ username }}" 2 | lineinfile: 3 | path: "/etc/sudoers.d/{{ username }}" 4 | line: "{{ username }} ALL=(ALL) NOPASSWD: ALL" 5 | create: yes 6 | mode: "0640" 7 | 8 | - name: User Configuration - Copy tmux configuration 9 | copy: 10 | src: "files/configs/tmux.conf" 11 | dest: "{{ userhome }}/.tmux.conf" 12 | owner: "{{ username }}" 13 | group: "{{ username }}" 14 | 15 | - name: User Configuration - Copy pictures 16 | become_user: "{{ username }}" 17 | copy: 18 | src: files/pictures/ 19 | dest: "{{ userhome }}/Pictures/" 20 | 21 | - name: User Configuration - Create opt/scripts directory 22 | become_user: "{{ username }}" 23 | file: 24 | path: "{{ userhome }}/opt/scripts" 25 | state: directory 26 | -------------------------------------------------------------------------------- /files/configs/config/i3blocks/config: -------------------------------------------------------------------------------- 1 | # i3blocks config file 2 | command=/usr/lib/i3blocks/$BLOCK_NAME 3 | separator_block_width=15 4 | markup=none 5 | 6 | [myi3temp] 7 | command=$HOME/opt/scripts/myi3blocks/myi3temp 8 | label= 9 | interval=5 10 | 11 | [myi3memory] 12 | command=$HOME/opt/scripts/myi3blocks/myi3memory 13 | label= 14 | interval=5 15 | 16 | [myi3load] 17 | command=$HOME/opt/scripts/myi3blocks/myi3load 18 | label= 19 | interval=5 20 | 21 | [myi3battery] 22 | command=$HOME/opt/scripts/myi3blocks/myi3battery 23 | label= 24 | instance=0 25 | interval=10 26 | 27 | [iface] 28 | label= 29 | color=#33CCFF 30 | interval=30 31 | 32 | [myi3weather-cam] 33 | command=$HOME/opt/scripts/myi3blocks/myi3weather 34 | label=ℂ 35 | instance=2653941 36 | interval=600 37 | 38 | [time] 39 | command=$HOME/opt/scripts/myi3blocks/myi3date 40 | interval=5 41 | -------------------------------------------------------------------------------- /tasks/configure-software-ubuntu.yaml: -------------------------------------------------------------------------------- 1 | - name: Package Installation - Update Apt package cache 2 | apt: 3 | update_cache: true 4 | changed_when: false 5 | 6 | - name: Package Installation - Productivity Tools 7 | package: 8 | name: [ 9 | 'alacritty', 10 | 'ranger', 11 | 'leafpad' 12 | ] 13 | state: present 14 | 15 | - name: Package Installation - Development Tools 16 | package: 17 | name: [ 18 | 'binutils' 19 | ] 20 | state: present 21 | 22 | - name: Package Installation - Media 23 | package: 24 | name: [ 25 | 'flameshot', 26 | 'imagemagick', 27 | 'pavucontrol', 28 | 'feh' 29 | ] 30 | state: present 31 | 32 | - name: Package Installation - System Desktop 33 | package: 34 | name: [ 35 | 'rofi', 36 | 'nitrogen', 37 | 'dunst', 38 | 'i3blocks', 39 | 'xrandr', 40 | 'arandr', 41 | 'lxappearance' 42 | ] 43 | state: present 44 | 45 | -------------------------------------------------------------------------------- /tasks/configure-software-manjaro.yaml: -------------------------------------------------------------------------------- 1 | - name: Package Installation - Update Pacman package cache 2 | pacman: 3 | update_cache: true 4 | changed_when: false 5 | 6 | - name: Package Installation - Productivity Tools 7 | package: 8 | name: [ 9 | 'alacritty', 10 | 'ranger', 11 | 'leafpad' 12 | ] 13 | state: present 14 | 15 | - name: Package Installation - Development Tools 16 | package: 17 | name: [ 18 | 'binutils' 19 | ] 20 | state: present 21 | 22 | - name: Package Installation - Media 23 | package: 24 | name: [ 25 | 'flameshot', 26 | 'imagemagick', 27 | 'pavucontrol', 28 | 'feh' 29 | ] 30 | state: present 31 | 32 | - name: Package Installation - System Desktop 33 | package: 34 | name: [ 35 | 'rofi', 36 | 'nitrogen', 37 | 'dunst', 38 | 'i3blocks', 39 | 'xrandr', 40 | 'arandr', 41 | 'lxappearance' 42 | ] 43 | state: present 44 | -------------------------------------------------------------------------------- /tasks/configure-software-fedora.yaml: -------------------------------------------------------------------------------- 1 | - name: Package Installation - Enable gregw/i3desktop copr 2 | command: dnf copr enable -y gregw/i3desktop 3 | args: 4 | warn: no 5 | register: gregw 6 | 7 | - name: Package Installation - Productivity Tools 8 | package: 9 | name: [ 10 | 'gnome-terminal', 11 | 'ranger', 12 | 'leafpad' 13 | ] 14 | state: present 15 | 16 | - name: Package Installation - Development Tools 17 | package: 18 | name: [ 19 | 'binutils', 20 | ] 21 | state: present 22 | 23 | - name: Package Installation - Media 24 | package: 25 | name: [ 26 | 'flameshot', 27 | 'ImageMagick' 28 | ] 29 | state: present 30 | 31 | - name: Package Installation - System Desktop 32 | package: 33 | name: [ 34 | 'rofi', 35 | 'nitrogen', 36 | 'arandr', 37 | 'dunst' 38 | ] 39 | state: present 40 | 41 | - name: Package Installation - I3 Desktop 42 | package: 43 | name: [ 44 | 'i3-gaps', 45 | 'i3lock', 46 | 'i3blocks' 47 | ] 48 | state: present 49 | when: 50 | gregw.rc == 0 51 | -------------------------------------------------------------------------------- /files/configs/myi3blocks/myi3battery: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl 2 | 3 | use strict; 4 | use warnings; 5 | use utf8; 6 | 7 | my $acpi; 8 | my $status; 9 | my $percent; 10 | my $full_text; 11 | my $short_text; 12 | my $bat_number = $ENV{BLOCK_INSTANCE} || 0; 13 | 14 | # read the first line of the "acpi" command output 15 | open (ACPI, "acpi -b | grep 'Battery $bat_number' |") or die; 16 | $acpi = ; 17 | close(ACPI); 18 | 19 | # fail on unexpected output 20 | if ($acpi !~ /: (\w+), (\d+)%/) { 21 | die "$acpi\n"; 22 | } 23 | 24 | $status = $1; 25 | $percent = $2; 26 | $full_text = "$percent%"; 27 | 28 | if ($status eq 'Discharging') { 29 | $full_text = ' ' . $full_text; 30 | } elsif ($status eq 'Charging') { 31 | $full_text = '⚡ ' . $full_text; 32 | } else { 33 | $full_text = '☻ ' . $full_text; 34 | } 35 | 36 | $short_text = $full_text; 37 | 38 | if ($acpi =~ /(\d\d:\d\d):/) { 39 | $full_text .= " ($1)"; 40 | } 41 | 42 | # print text 43 | print "$full_text\n"; 44 | print "$short_text\n"; 45 | 46 | # consider color and urgent flag only on discharge 47 | if ($status eq 'Discharging') { 48 | 49 | if ($percent < 20) { 50 | print "#FF0000\n"; 51 | } elsif ($percent < 40) { 52 | print "#FFAE00\n"; 53 | } elsif ($percent < 60) { 54 | print "#FFF600\n"; 55 | } elsif ($percent < 85) { 56 | print "#A8FF00\n"; 57 | } 58 | 59 | if ($percent < 5) { 60 | exit(33); 61 | } 62 | } 63 | 64 | exit(0); 65 | -------------------------------------------------------------------------------- /files/configs/tmux.conf: -------------------------------------------------------------------------------- 1 | ############################## 2 | # _ 3 | # | |_ _ __ ___ _ ___ __ 4 | # | __| '_ ` _ \| | | \ \/ / 5 | # | |_| | | | | | |_| |> < 6 | # \__|_| |_| |_|\__,_/_/\_\ 7 | # 8 | ############################# 9 | 10 | # start window indexing at one instead of zero 11 | set -g base-index 1 12 | 13 | # ============ 14 | # Key Bindings 15 | # ============ 16 | bind R source-file ~/.tmux.conf \; display-message "Config reloaded..." 17 | bind -n F2 new-window 18 | 19 | # Window Navigation 20 | bind -n F3 prev 21 | bind -n F4 next 22 | 23 | # Split Windows 24 | bind -n F5 split-window -v 25 | bind -n F6 split-window -h 26 | bind -n F7 copy-mode 27 | bind -n F8 command-prompt 'rename-window %%' 28 | bind -n F9 break-pane 29 | bind -n F10 set-window-option synchronize-panes 30 | bind -n F12 kill-pane 31 | 32 | # Pane Navigation 33 | bind -n M-h select-pane -L 34 | bind -n M-l select-pane -R 35 | bind -n M-k select-pane -U 36 | bind -n M-j select-pane -D 37 | 38 | # =============== 39 | # General Options 40 | # =============== 41 | set -g allow-rename off 42 | set -g history-limit 10000 43 | set -g default-terminal "xterm-256color" 44 | set-option -g default-command zsh 45 | # No delay for escape key press 46 | set -sg escape-time 0 47 | 48 | # ======================== 49 | # set window notifications 50 | # ======================== 51 | set-option -g visual-activity on 52 | set-option -g visual-bell on 53 | set-window-option -g monitor-activity on 54 | set -g status-interval 2 55 | source /usr/lib/python3.7/site-packages/powerline/bindings/tmux/powerline.conf 56 | -------------------------------------------------------------------------------- /docs/i3-shortcuts.md: -------------------------------------------------------------------------------- 1 | ## My Custom i3 shortcuts 2 | 3 | |Shortcut|Description| 4 | |---|---| 5 | |mod+q|Close/Kill window| 6 | |mod+space|Open Rofi application launcher| 7 | |mod+f|Fullscreen a window/container| 8 | |mod+s|Change layout to stack mode| 9 | |mod+d|Change layout to split mode| 10 | |mod+PrintScr|Open Flameshot screenshot application| 11 | |mod+enter|Open Terminal| 12 | |mod+shift+f|Open Ranger command line file manager| 13 | |mod+shift+e|Open Mousepad editor| 14 | |mod+h|Switch focus to container on the left| 15 | |mod+l|Switch focus to container on the right| 16 | |mod+k|Switch focus to container at the top| 17 | |mod+j|Switch focus to container at the bottom| 18 | |mod+shift+h|Move current container to left| 19 | |mod+shift+l|Move current container to right| 20 | |mod+shift+k|Move current container to top| 21 | |mod+shift+j|Move current container to bottom| 22 | |mod+shift+space|Toggle floating mode of container/window| 23 | |mod+shift+minus|Move current window to scratchpad| 24 | |mod+minus|Bring windows from scratchpad| 25 | |mod+Ctrl+left|Move to worksapce left| 26 | |mod+Ctrl+right|Move to worksapce right| 27 | |mod+1|Move to workspace 1| 28 | |mod+2|Move to workspace 2| 29 | |mod+3|Move to workspace 3| 30 | |mod+4|Move to workspace 4| 31 | |mod+Shift+1|Move the current window to workspace 1| 32 | |mod+Shift+2|Move the current window to workspace 2| 33 | |mod+Shift+3|Move the current window to workspace 3| 34 | |mod+Shift+4|Move the current window to workspace 4| 35 | |mod+r|(up,down,left,right) Resize current window| 36 | |mod+Ctrl+r|Restart i3| 37 | |mod+Ctrl+Del|Show (e)xit, (h)ibernate, (r)eboot, (s)hutdown (o)ption| 38 | -------------------------------------------------------------------------------- /files/configs/myi3blocks/myi3weather: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Based on http://openweathermap.org/current 3 | 4 | API_KEY="e0160e7f77434e10242b1d7bab182e19" 5 | 6 | # Check on http://openweathermap.org/find 7 | CITY_ID="${BLOCK_INSTANCE}" 8 | 9 | URGENT_LOWER=0 10 | URGENT_HIGHER=30 11 | 12 | ICON_SUNNY="" 13 | ICON_CLOUDY="" 14 | ICON_RAINY="" 15 | ICON_STORM="" 16 | ICON_SNOW="" 17 | ICON_FOG="" 18 | 19 | SYMBOL_CELSIUS="℃" 20 | 21 | WEATHER_URL="http://api.openweathermap.org/data/2.5/weather?id=${CITY_ID}&appid=${API_KEY}&units=metric" 22 | 23 | WEATHER_INFO=$(wget -qO- "${WEATHER_URL}") 24 | WEATHER_MAIN=$(echo "${WEATHER_INFO}" | grep -o -e '\"main\":\"[a-Z]*\"' | awk -F ':' '{print $2}' | tr -d '"') 25 | WEATHER_TEMP=$(echo "${WEATHER_INFO}" | grep -o -e '\"temp\":\-\?[0-9]*' | awk -F ':' '{print $2}' | tr -d '"') 26 | 27 | if [[ "${WEATHER_MAIN}" = *Snow* ]]; then 28 | echo "${ICON_SNOW} ${WEATHER_TEMP}${SYMBOL_CELSIUS}" 29 | echo "${ICON_SNOW} ${WEATHER_TEMP}${SYMBOL_CELSIUS}" 30 | echo "" 31 | elif [[ "${WEATHER_MAIN}" = *Rain* ]] || [[ "${WEATHER_MAIN}" = *Drizzle* ]]; then 32 | echo "${ICON_RAINY} ${WEATHER_TEMP}${SYMBOL_CELSIUS}" 33 | echo "${ICON_RAINY} ${WEATHER_TEMP}${SYMBOL_CELSIUS}" 34 | echo "" 35 | elif [[ "${WEATHER_MAIN}" = *Thunderstorm* ]]; then 36 | echo "${ICON_STORM} ${WEATHER_TEMP}${SYMBOL_CELSIUS}" 37 | echo "${ICON_STORM} ${WEATHER_TEMP}${SYMBOL_CELSIUS}" 38 | echo "" 39 | elif [[ "${WEATHER_MAIN}" = *Cloud* ]]; then 40 | echo "${ICON_CLOUDY} ${WEATHER_TEMP}${SYMBOL_CELSIUS}" 41 | echo "${ICON_CLOUDY} ${WEATHER_TEMP}${SYMBOL_CELSIUS}" 42 | echo "" 43 | elif [[ "${WEATHER_MAIN}" = *Clear* ]]; then 44 | echo "${ICON_SUNNY} ${WEATHER_TEMP}${SYMBOL_CELSIUS}" 45 | echo "${ICON_SUNNY} ${WEATHER_TEMP}${SYMBOL_CELSIUS}" 46 | echo "" 47 | elif [[ "${WEATHER_MAIN}" = *Fog* ]] || [[ "${WEATHER_MAIN}" = *Mist* ]]; then 48 | echo "${ICON_FOG} ${WEATHER_TEMP}${SYMBOL_CELSIUS}" 49 | echo "${ICON_FOG} ${WEATHER_TEMP}${SYMBOL_CELSIUS}" 50 | echo "" 51 | else 52 | echo "${WEATHER_MAIN} ${WEATHER_TEMP}${SYMBOL_CELSIUS}" 53 | echo "${WEATHER_MAIN} ${WEATHER_TEMP}${SYMBOL_CELSIUS}" 54 | echo "" 55 | fi 56 | 57 | if [[ "${WEATHER_TEMP}" -lt "${URGENT_LOWER}" ]] || [[ "${WEATHER_TEMP}" -gt "${URGENT_HIGHER}" ]]; then 58 | exit 33 59 | fi 60 | -------------------------------------------------------------------------------- /tasks/configure-i3.yaml: -------------------------------------------------------------------------------- 1 | - name: i3 Configuration - Create .i3 directory 2 | become_user: "{{ username }}" 3 | file: 4 | path: "{{ userhome }}/.i3" 5 | state: directory 6 | 7 | - name: i3 Configuration - Copy "{{ userhome }}/.i3/config" 8 | become_user: "{{ username }}" 9 | copy: 10 | src: "files/configs/i3/i3/config" 11 | dest: "{{ userhome }}/.i3/config" 12 | 13 | - name: i3 Configuration - Copy "{{ userhome }}/.config/compton.conf" 14 | become_user: "{{ username }}" 15 | copy: 16 | src: "files/configs/i3/config/compton.conf" 17 | dest: "{{ userhome }}/.config/compton.conf" 18 | 19 | - name: i3 Configuration - Create dunst directory 20 | become_user: "{{ username }}" 21 | file: 22 | path: "{{ userhome }}/.config/dunst" 23 | state: directory 24 | 25 | - name: i3 Configuration - Copy "{{ userhome }}/.config/dunst/dunstrc" 26 | become_user: "{{ username }}" 27 | copy: 28 | src: "files/configs/i3/config/dunst/dunstrc" 29 | dest: "{{ userhome }}/.config/dunst/dunstrc" 30 | 31 | - name: i3 Configuration - Create i3blocks directory 32 | become_user: "{{ username }}" 33 | file: 34 | path: "{{ userhome }}/.config/i3blocks" 35 | state: directory 36 | 37 | - name: i3 Configuration - Copy "{{ userhome }}/.config/i3blocks/config" 38 | become_user: "{{ username }}" 39 | copy: 40 | src: "files/configs/i3/config/i3blocks/config" 41 | dest: "{{ userhome }}/.config/i3blocks/config" 42 | 43 | - name: i3 Configuration - Create rofi directory 44 | become_user: "{{ username }}" 45 | file: 46 | path: "{{ userhome }}/.config/rofi" 47 | state: directory 48 | 49 | - name: i3 Configuration - Copy "{{ userhome }}/.config/rofi/config" 50 | become_user: "{{ username }}" 51 | copy: 52 | src: "files/configs/i3/config/rofi/config" 53 | dest: "{{ userhome }}/.config/rofi/config" 54 | 55 | - name: i3 Configuration - Copy "{{ userhome }}/opt/scripts/myi3blocks" scripts 56 | become_user: "{{ username }}" 57 | copy: 58 | src: files/configs/i3/myi3blocks/ 59 | dest: "{{ userhome }}/opt/scripts/myi3blocks/" 60 | mode: "0755" 61 | 62 | - name: i3 Configuration - Copy i3exit script 63 | copy: 64 | src: files/configs/misc-scripts/i3exit 65 | dest: /usr/bin/i3exit 66 | mode: '0777' 67 | 68 | - name: i3 Configuration - Copy blurlock script 69 | copy: 70 | src: files/configs/misc-scripts/blurlock 71 | dest: /usr/bin/blurlock 72 | mode: '0777' 73 | -------------------------------------------------------------------------------- /files/configs/config/compton.conf: -------------------------------------------------------------------------------- 1 | # Shadow 2 | shadow = true; 3 | # no-dnd-shadow = true; 4 | no-dock-shadow = true; 5 | clear-shadow = true; 6 | detect-rounded-corners = true; 7 | shadow-radius = 5; 8 | shadow-offset-x = 1; 9 | shadow-offset-y = 1; 10 | shadow-opacity = .3; 11 | shadow-ignore-shaped = false; 12 | shadow-exclude = [ 13 | "name = 'Notification'", 14 | # workaround for conky until it provides window properties: 15 | "override_redirect = 1 && !WM_CLASS@:s", 16 | "class_g ?= 'Dmenu'", 17 | # "class_g ?= 'Dunst'", 18 | # disable shadows for hidden windows: 19 | "_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'", 20 | "_GTK_FRAME_EXTENTS@:c", 21 | # disables shadows on sticky windows: 22 | # "_NET_WM_STATE@:32a *= '_NET_WM_STATE_STICKY'", 23 | # disables shadows on i3 frames 24 | "class_g ?= 'i3-frame'" 25 | ]; 26 | 27 | # shadow-exclude-reg = "x10+0+0"; 28 | # xinerama-shadow-crop = true; 29 | 30 | #menu-opacity = 0.95; 31 | #inactive-opacity = 0.93; 32 | #active-opacity = 1; 33 | #alpha-step = 0.01; 34 | #inactive-dim = 0.0; 35 | #blur-background = false; 36 | #blur-kern = "3x3box"; 37 | 38 | fading = true; 39 | fade-delta = 4; 40 | fade-in-step = 0.03; 41 | fade-out-step = 0.03; 42 | fade-exclude = [ ]; 43 | 44 | backend = "glx"; 45 | mark-wmwin-focused = true; 46 | mark-ovredir-focused = true; 47 | detect-client-opacity = true; 48 | unredir-if-possible = true; 49 | refresh-rate = 0; 50 | vsync = "opengl-swc"; 51 | dbe = false; 52 | paint-on-overlay = true; 53 | focus-exclude = [ "class_g = 'Cairo-clock'" ]; 54 | detect-transient = true; 55 | detect-client-leader = true; 56 | invert-color-include = [ ]; 57 | glx-copy-from-front = false; 58 | glx-swap-method = "1"; 59 | 60 | opacity-rule = [ 61 | "80:class_g = 'Gnome-terminal'", 62 | "80:class_g = 'Rofi'", 63 | "80:class_g = 'Leafpad'", 64 | "80:class_g = 'Evolution'", 65 | "80:class_g = 'Pidgin'", 66 | "80:class_g = 'Pcmanfm'", 67 | "80:class_g = 'Virt-manager'", 68 | "80:class_g = 'i3bar'" 69 | ]; 70 | #"50:class_g = 'Terminal'" 71 | #"99:name *?= 'Call'", 72 | #"99:class_g = 'Chromium'", 73 | #"99:name *?= 'Conky'", 74 | #"99:class_g = 'Darktable'", 75 | #"50:class_g = 'Dmenu'", 76 | #"99:name *?= 'Event'", 77 | #"99:class_g = 'Firefox'", 78 | #"99:class_g = 'GIMP'", 79 | #"99:name *?= 'Image'", 80 | #"99:class_g = 'Lazpaint'", 81 | #"99:class_g = 'Midori'", 82 | #"99:name *?= 'Minitube'", 83 | #"99:class_g = 'Mousepad'", 84 | #"99:name *?= 'MuseScore'", 85 | #"90:name *?= 'Page Info'", 86 | #"99:name *?= 'Pale Moon'", 87 | #"90:name *?= 'Panel'", 88 | #"99:class_g = 'Pinta'", 89 | #"90:name *?= 'Restart'", 90 | #"99:name *?= 'sudo'", 91 | #"99:name *?= 'Screenshot'", 92 | #"99:class_g = 'Viewnior'", 93 | #"99:class_g = 'VirtualBox'", 94 | #"99:name *?= 'VLC'", 95 | #"99:name *?= 'Write'", 96 | #"93:class_g = 'URxvt' && !_NET_WM_STATE@:32a", 97 | #"0:_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'", 98 | #"96:_NET_WM_STATE@:32a *= '_NET_WM_STATE_STICKY'" 99 | #]; 100 | 101 | wintypes : 102 | { 103 | tooltip : 104 | { 105 | fade = true; 106 | shadow = false; 107 | opacity = 0.85; 108 | focus = true; 109 | }; 110 | fullscreen : 111 | { 112 | fade = true; 113 | shadow = false; 114 | opacity = 1; 115 | focus = true; 116 | }; 117 | }; 118 | -------------------------------------------------------------------------------- /files/configs/config/dunst/dunstrc: -------------------------------------------------------------------------------- 1 | [global] 2 | frame_width = 1 3 | frame_color = "#788388" 4 | 5 | font = Noto Sans 10 6 | 7 | # Allow a small subset of html markup: 8 | # bold 9 | # italic 10 | # strikethrough 11 | # underline 12 | # 13 | # For a complete reference see 14 | # . 15 | # If markup is not allowed, those tags will be stripped out of the 16 | # message. 17 | markup = yes 18 | 19 | # The format of the message. Possible variables are: 20 | # %a appname 21 | # %s summary 22 | # %b body 23 | # %i iconname (including its path) 24 | # %I iconname (without its path) 25 | # %p progress value if set ([ 0%] to [100%]) or nothing 26 | # Markup is allowed 27 | format = "%s %p\n%b" 28 | 29 | # Sort messages by urgency. 30 | sort = yes 31 | 32 | # Show how many messages are currently hidden (because of geometry). 33 | indicate_hidden = yes 34 | 35 | # Alignment of message text. 36 | # Possible values are "left", "center" and "right". 37 | alignment = left 38 | 39 | # The frequency with wich text that is longer than the notification 40 | # window allows bounces back and forth. 41 | # This option conflicts with "word_wrap". 42 | # Set to 0 to disable. 43 | bounce_freq = 5 44 | 45 | 46 | # Show age of message if message is older than show_age_threshold 47 | # seconds. 48 | # Set to -1 to disable. 49 | show_age_threshold = 60 50 | 51 | # Split notifications into multiple lines if they don't fit into 52 | # geometry. 53 | word_wrap = yes 54 | 55 | # Ignore newlines '\n' in notifications. 56 | ignore_newline = no 57 | 58 | 59 | # The geometry of the window: 60 | # [{width}]x{height}[+/-{x}+/-{y}] 61 | # The geometry of the message window. 62 | # The height is measured in number of notifications everything else 63 | # in pixels. If the width is omitted but the height is given 64 | # ("-geometry x2"), the message window expands over the whole screen 65 | # (dmenu-like). If width is 0, the window expands to the longest 66 | # message displayed. A positive x is measured from the left, a 67 | # negative from the right side of the screen. Y is measured from 68 | # the top and down respectevly. 69 | # The width can be negative. In this case the actual width is the 70 | # screen width minus the width defined in within the geometry option. 71 | geometry = "800x4-25+25" 72 | 73 | # Shrink window if it's smaller than the width. Will be ignored if 74 | # width is 0. 75 | shrink = yes 76 | 77 | # The transparency of the window. Range: [0; 100]. 78 | # This option will only work if a compositing windowmanager is 79 | # present (e.g. xcompmgr, compiz, etc.). 80 | transparency = 0 81 | 82 | # Don't remove messages, if the user is idle (no mouse or keyboard input) 83 | # for longer than idle_threshold seconds. 84 | # Set to 0 to disable. 85 | # default 120 86 | idle_threshold = 0 87 | 88 | # Which monitor should the notifications be displayed on. 89 | monitor = 0 90 | 91 | # Display notification on focused monitor. Possible modes are: 92 | # mouse: follow mouse pointer 93 | # keyboard: follow window with keyboard focus 94 | # none: don't follow anything 95 | # 96 | # "keyboard" needs a windowmanager that exports the 97 | # _NET_ACTIVE_WINDOW property. 98 | # This should be the case for almost all modern windowmanagers. 99 | # 100 | # If this option is set to mouse or keyboard, the monitor option 101 | # will be ignored. 102 | follow = mouse 103 | 104 | # Should a notification popped up from history be sticky or timeout 105 | # as if it would normally do. 106 | sticky_history = yes 107 | 108 | # Maximum amount of notifications kept in history 109 | history_length = 20 110 | 111 | # Display indicators for URLs (U) and actions (A). 112 | show_indicators = yes 113 | 114 | # The height of a single line. If the height is smaller than the 115 | # font height, it will get raised to the font height. 116 | # This adds empty space above and under the text. 117 | line_height = 0 118 | 119 | # Draw a line of "separator_height" pixel height between two 120 | # notifications. 121 | # Set to 0 to disable. 122 | separator_height = 1 123 | 124 | # Padding between text and separator. 125 | # padding = 8 126 | padding = 8 127 | 128 | # Horizontal padding. 129 | horizontal_padding = 10 130 | 131 | # Define a color for the separator. 132 | # possible values are: 133 | # * auto: dunst tries to find a color fitting to the background; 134 | # * foreground: use the same color as the foreground; 135 | # * frame: use the same color as the frame; 136 | # * anything else will be interpreted as a X color. 137 | separator_color = #263238 138 | 139 | # Print a notification on startup. 140 | # This is mainly for error detection, since dbus (re-)starts dunst 141 | # automatically after a crash. 142 | startup_notification = false 143 | 144 | # dmenu path. 145 | dmenu = /usr/bin/dmenu -p dunst: 146 | 147 | # Browser for opening urls in context menu. 148 | browser = palemoon 149 | 150 | # Align icons left/right/off 151 | icon_position = left 152 | 153 | # Paths to default icons. 154 | icon_path = /usr/share/icons/Adwaita/16x16/status/:/usr/share/icons/Adwaita/16x16/devices/ 155 | 156 | # Limit icons size. 157 | max_icon_size=64 158 | 159 | [shortcuts] 160 | 161 | # Shortcuts are specified as [modifier+][modifier+]...key 162 | # Available modifiers are "ctrl", "mod1" (the alt-key), "mod2", 163 | # "mod3" and "mod4" (windows-key). 164 | # Xev might be helpful to find names for keys. 165 | 166 | # Close notification. 167 | close = mod1+space 168 | 169 | # Close all notifications. 170 | # close_all = ctrl+shift+space 171 | close_all = ctrl+mod1+space 172 | 173 | # Redisplay last message(s). 174 | # On the US keyboard layout "grave" is normally above TAB and left 175 | # of "1". 176 | history = ctrl+mod4+h 177 | 178 | # Context menu. 179 | context = ctrl+mod1+c 180 | 181 | [urgency_low] 182 | # IMPORTANT: colors have to be defined in quotation marks. 183 | # Otherwise the "#" and following would be interpreted as a comment. 184 | background = "#263238" 185 | foreground = "#556064" 186 | timeout = 8 187 | 188 | [urgency_normal] 189 | background = "#263238" 190 | foreground = "#F9FAF9" 191 | timeout = 8 192 | 193 | [urgency_critical] 194 | background = "#D62929" 195 | foreground = "#F9FAF9" 196 | timeout = 8 197 | 198 | 199 | # Every section that isn't one of the above is interpreted as a rules to 200 | # override settings for certain messages. 201 | # Messages can be matched by "appname", "summary", "body", "icon", "category", 202 | # "msg_urgency" and you can override the "timeout", "urgency", "foreground", 203 | # "background", "new_icon" and "format". 204 | # Shell-like globbing will get expanded. 205 | # 206 | # SCRIPTING 207 | # You can specify a script that gets run when the rule matches by 208 | # setting the "script" option. 209 | # The script will be called as follows: 210 | # script appname summary body icon urgency 211 | # where urgency can be "LOW", "NORMAL" or "CRITICAL". 212 | # 213 | # NOTE: if you don't want a notification to be displayed, set the format 214 | # to "". 215 | # NOTE: It might be helpful to run dunst -print in a terminal in order 216 | # to find fitting options for rules. 217 | 218 | #[espeak] 219 | # summary = "*" 220 | # script = dunst_espeak.sh 221 | 222 | #[script-test] 223 | # summary = "*script*" 224 | # script = dunst_test.sh 225 | 226 | #[ignore] 227 | # # This notification will not be displayed 228 | # summary = "foobar" 229 | # format = "" 230 | 231 | #[signed_on] 232 | # appname = Pidgin 233 | # summary = "*signed on*" 234 | # urgency = low 235 | # 236 | #[signed_off] 237 | # appname = Pidgin 238 | # summary = *signed off* 239 | # urgency = low 240 | # 241 | #[says] 242 | # appname = Pidgin 243 | # summary = *says* 244 | # urgency = critical 245 | # 246 | #[twitter] 247 | # appname = Pidgin 248 | # summary = *twitter.com* 249 | # urgency = normal 250 | # 251 | #[Claws Mail] 252 | # appname = claws-mail 253 | # category = email.arrived 254 | # urgency = normal 255 | # background = "#2F899E" 256 | # foreground = "#FFA247" 257 | # 258 | #[mute.sh] 259 | # appname = mute 260 | # category = mute.sound 261 | # script = mute.sh 262 | # 263 | #[JDownloader] 264 | # appname = JDownloader 265 | # category = JD 266 | # background = "#FFA247" 267 | # foreground = "#FFFFFF" 268 | # 269 | #[newsbeuter] 270 | # summary = *Feeds* 271 | # background = "#A8EB41" 272 | # foreground = "#FFFFFF" 273 | # 274 | [irc] 275 | appname = weechat 276 | timeout = 0 277 | background = "#0033bb" 278 | foreground = "#dddddd" 279 | # 280 | [weechat hl] 281 | appname = weechat 282 | category = weechat.HL 283 | background = "#FF5C47" 284 | foreground = "#FFFFFF" 285 | # 286 | [weechat pn] 287 | appname = weechat 288 | category = weechat.PM 289 | background = "#D53B84" 290 | foreground = "#FFFFFF" 291 | # 292 | #[CMUS] 293 | # appname = CMUS 294 | # category = cmus 295 | # background = "#6C4AB7" 296 | # foreground = "#FFE756" 297 | # 298 | # 299 | # background = "#30AB70" 300 | # foreground = "#F67245" 301 | # 302 | # vim: ft=cfg 303 | -------------------------------------------------------------------------------- /files/configs/i3/config: -------------------------------------------------------------------------------- 1 | # Please see http://i3wm.org/docs/userguide.html for a complete reference! 2 | set $mod Mod1 3 | 4 | # Configure border style 5 | new_window pixel 1 6 | new_float normal 7 | 8 | # Hide borders 9 | hide_edge_borders none 10 | 11 | # Window title font 12 | font xft:FiraCode 11 13 | 14 | # Use Mouse+$mod to drag floating windows 15 | floating_modifier $mod 16 | 17 | # Focus follows mouse 18 | focus_follows_mouse no 19 | 20 | # change container layout (stacked, tabbed, toggle split) 21 | bindsym $mod+s layout stacking 22 | bindsym $mod+d layout toggle split 23 | 24 | # Set screen resolution to 1920x1080 25 | #exec --no-startup-id xrandr --output eDP-1 --mode 1920x1080 26 | 27 | # Enable touchpad natural scrolling 28 | #exec_always --no-startup-id xinput set-prop "DELL07E6:00 06CB:76AF Touchpad" "libinput Natural Scrolling Enabled" 1 29 | 30 | bindsym $mod+Shift+Return exec alacritty 31 | bindsym $mod+Shift+w exec firefox 32 | bindsym $mod+Shift+f exec gnome-terminal -e ranger 33 | bindsym $mod+Shift+e exec neovim 34 | bindsym $mod+Shift+s exec steam 35 | 36 | bindsym $mod+space --release exec "rofi -combi-modi drun,window,ssh -show combi -modi combi" 37 | bindsym $mod+q kill 38 | 39 | bindsym $mod+Ctrl+p exec pavucontrol 40 | bindsym $mod+Ctrl+b exec gnome-terminal -e 'bmenu' 41 | bindsym $mod+Print --release exec --no-startup-id flameshot gui 42 | 43 | # Autostart applications 44 | exec --no-startup-id xrandr 45 | exec --no-startup-id ~/.screenlayout/dual_layout.sh 46 | exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 47 | exec --no-startup-id nitrogen --restore; sleep 1; compton -b 48 | exec --no-startup-id nm-applet 49 | exec --no-startup-id xfce4-power-manager 50 | exec --no-startup-id pamac-tray 51 | exec --no-startup-id blueman-applet 52 | exec --no-startup-id xautolock -time 10 -locker blurlock 53 | exec --no-startup-id pulseaudio 54 | exec --no-startup-id /usr/lib/geoclue-2.0/demos/agent 55 | exec --no-startup-id redshift-gtk 56 | exec --no-startup-id i3-msg "workspace 1: ; exec alacritty" 57 | exec --no-startup-id volumeicon 58 | exec_always --no-startup-id ff-theme-util 59 | exec_always --no-startup-id fix_xcursor 60 | 61 | # Move between windows 62 | bindsym $mod+h focus left 63 | bindsym $mod+j focus down 64 | bindsym $mod+k focus up 65 | bindsym $mod+l focus right 66 | 67 | # Move focused window 68 | bindsym $mod+Shift+h move left 69 | bindsym $mod+Shift+j move down 70 | bindsym $mod+Shift+k move up 71 | bindsym $mod+Shift+l move right 72 | 73 | bindsym $mod+z split toggle 74 | bindsym $mod+f fullscreen toggle 75 | bindsym $mod+Shift+space floating toggle 76 | 77 | bindsym $mod+Ctrl+Right workspace next 78 | bindsym $mod+Ctrl+Left workspace prev 79 | 80 | set $monitor_main "DisplayPort-0" 81 | set $monitor_left "DisplayPort-1" 82 | 83 | # Workspace names 84 | set $ws1 "1: " 85 | set $ws2 "2: " 86 | set $ws3 "3: " 87 | set $ws4 "4: " 88 | set $ws5 5 89 | set $ws6 6 90 | set $ws7 7 91 | set $ws8 8 92 | 93 | # Switch to workspace 94 | bindsym $mod+1 workspace number $ws1 95 | bindsym $mod+2 workspace number $ws2 96 | bindsym $mod+3 workspace number $ws3 97 | bindsym $mod+4 workspace number $ws4 98 | bindsym $mod+5 workspace number $ws5 99 | bindsym $mod+6 workspace number $ws6 100 | bindsym $mod+7 workspace number $ws7 101 | bindsym $mod+8 workspace number $ws8 102 | 103 | # Move to workspace with focused container 104 | bindsym $mod+Shift+1 move container to workspace $ws1; workspace $ws1 105 | bindsym $mod+Shift+2 move container to workspace $ws2; workspace $ws2 106 | bindsym $mod+Shift+3 move container to workspace $ws3; workspace $ws3 107 | bindsym $mod+Shift+4 move container to workspace $ws4; workspace $ws4 108 | bindsym $mod+Shift+5 move container to workspace $ws5; workspace $ws5 109 | bindsym $mod+Shift+6 move container to workspace $ws6; workspace $ws6 110 | bindsym $mod+Shift+7 move container to workspace $ws7; workspace $ws7 111 | bindsym $mod+Shift+8 move container to workspace $ws8; workspace $ws8 112 | 113 | # Open applications on specific workspaces 114 | assign [class="alacritty"] $ws1 115 | assign [class="firefox"] $ws2 116 | assign [class="Steam"] $ws4 117 | 118 | # Assign workspace to monitor 119 | workspace $ws1 output $monitor_main 120 | workspace $ws2 output $monitor_left 121 | workspace $ws3 output $monitor_main 122 | workspace $ws4 output $monitor_main 123 | 124 | # Open specific applications in floating mode 125 | for_window [title="alsamixer"] floating enable border pixel 1 126 | for_window [class="calamares"] floating enable border normal 127 | for_window [title="File Transfer*"] floating enable 128 | for_window [class="Galculator"] floating enable border pixel 1 129 | for_window [class="GParted"] floating enable border normal 130 | for_window [class="Lightdm-settings"] floating enable 131 | for_window [class="Lxappearance"] floating enable sticky enable border normal 132 | for_window [class="Manjaro-hello"] floating enable 133 | for_window [class="Manjaro Settings Manager"] floating enable border normal 134 | for_window [title="MuseScore: Play Panel"] floating enable 135 | for_window [class="Nitrogen"] floating enable sticky enable border normal 136 | for_window [class="Oblogout"] fullscreen enable 137 | for_window [class="octopi"] floating enable 138 | for_window [class="Pamac-manager"] floating enable 139 | for_window [class="Pavucontrol"] floating enable 140 | for_window [class="qt5ct"] floating enable sticky enable border normal 141 | for_window [class="Qtconfig-qt4"] floating enable sticky enable border normal 142 | for_window [class="Simple-scan"] floating enable border normal 143 | for_window [class="(?i)System-config-printer.py"] floating enable border normal 144 | for_window [class="Zoom"] floating enable border normal 145 | for_window [class="Timeset-gui"] floating enable border normal 146 | for_window [class="SimpleScreenRecorder"] floating enable border normal 147 | for_window [class="MPlayer"] floating enable 148 | for_window [class="Spotify"] floating enable 149 | for_window [class="Calculator"] floating enable 150 | 151 | # switch to workspace with urgent window automatically 152 | for_window [urgent=latest] focus 153 | 154 | # restart i3 inplace (preserves your layout/session, can be used to upgrade i3) 155 | bindsym $mod+Ctrl+r restart 156 | 157 | # Set shut down, restart and locking features 158 | bindsym $mod+Ctrl+Delete mode "$mode_system" 159 | set $mode_system (e)xit │ switch_(u)ser │ (h)ibernate │ (r)eboot │ (s)hutdown 160 | mode "$mode_system" { 161 | bindsym u exec --no-startup-id i3exit switch_user, mode "default" 162 | bindsym e exec --no-startup-id i3exit logout, mode "default" 163 | bindsym h exec --no-startup-id i3exit hibernate, mode "default" 164 | bindsym r exec --no-startup-id i3exit reboot, mode "default" 165 | bindsym s exec --no-startup-id i3exit shutdown, mode "default" 166 | 167 | # exit system mode: "Enter" or "Escape" 168 | bindsym Return mode "default" 169 | bindsym Escape mode "default" 170 | } 171 | 172 | # Resize window (you can also use the mouse for that) 173 | bindsym $mod+r mode "resize" 174 | mode "resize" { 175 | # same bindings, but for the arrow keys 176 | bindsym h resize shrink width 10 px or 10 ppt 177 | bindsym k resize grow height 10 px or 10 ppt 178 | bindsym j resize shrink height 10 px or 10 ppt 179 | bindsym l resize grow width 10 px or 10 ppt 180 | 181 | # exit resize mode: Enter or Escape 182 | bindsym Return mode "default" 183 | bindsym Escape mode "default" 184 | } 185 | 186 | # Lock screen 187 | bindsym $mod+Ctrl+l exec --no-startup-id blurlock 188 | 189 | 190 | # Color palette used for the terminal ( ~/.Xresources file ) 191 | # Colors are gathered based on the documentation: 192 | # https://i3wm.org/docs/userguide.html#xresources 193 | # Change the variable name at the place you want to match the color 194 | # of your terminal like this: 195 | # [example] 196 | # If you want your bar to have the same background color as your 197 | # terminal background change the line 362 from: 198 | # background #14191D 199 | # to: 200 | # background $term_background 201 | # Same logic applied to everything else. 202 | set_from_resource $term_background background 203 | set_from_resource $term_foreground foreground 204 | set_from_resource $term_color0 color0 205 | set_from_resource $term_color1 color1 206 | set_from_resource $term_color2 color2 207 | set_from_resource $term_color3 color3 208 | set_from_resource $term_color4 color4 209 | set_from_resource $term_color5 color5 210 | set_from_resource $term_color6 color6 211 | set_from_resource $term_color7 color7 212 | set_from_resource $term_color8 color8 213 | set_from_resource $term_color9 color9 214 | set_from_resource $term_color10 color10 215 | set_from_resource $term_color11 color11 216 | set_from_resource $term_color12 color12 217 | set_from_resource $term_color13 color13 218 | set_from_resource $term_color14 color14 219 | set_from_resource $term_color15 color15 220 | 221 | # Set color variables 222 | set $bg-color #2f343f 223 | set $inactive-bg-color #2f343f 224 | set $text-color #f3f4f5 225 | set $inactive-text-color #676E7D 226 | set $urgent-bg-color #E53935 227 | 228 | # Start i3bar 229 | bar { 230 | font xft:FiraCode 12 231 | separator_symbol "│" 232 | i3bar_command i3bar 233 | status_command i3blocks 234 | position bottom 235 | 236 | # please set your primary output first. Example: 'xrandr --output eDP1 --primary' 237 | tray_output primary 238 | 239 | colors { 240 | background $bg-color 241 | # separator #F9FAF9 242 | statusline #757575 243 | 244 | # border background text 245 | focused_workspace $bg-color $bg-color $text-color 246 | inactive_workspace $inactive-bg-color $inactive-bg-color $inactive-text-color 247 | urgent_workspace $urgent-bg-color $urgent-bg-color $text-color 248 | } 249 | } 250 | 251 | # hide/unhide i3bar 252 | bindsym $mod+m bar mode toggle 253 | 254 | # Theme colors 255 | # class border backgr. text indic. child_border 256 | client.focused #556064 #556064 #80FFF9 #FDF6E3 257 | client.focused_inactive #2F3D44 #2F3D44 #1ABC9C #454948 258 | client.unfocused #2F3D44 #2F3D44 #1ABC9C #454948 259 | client.urgent #CB4B16 #FDF6E3 #1ABC9C #268BD2 260 | client.placeholder #000000 #0c0c0c #ffffff #000000 261 | 262 | client.background #2B2C2B 263 | 264 | ############################# 265 | ### settings for i3-gaps: ### 266 | ############################# 267 | 268 | # Set inner/outer gaps 269 | gaps inner 5 270 | gaps outer 0 271 | 272 | # Additionally, you can issue commands with the following syntax. This is useful to bind keys to changing the gap size. 273 | # gaps inner|outer current|all set|plus|minus 274 | # gaps inner all set 10 275 | # gaps outer all plus 5 276 | 277 | # Smart gaps (gaps used if only more than one container on the workspace) 278 | smart_gaps on 279 | 280 | # Smart borders (draw borders around container only if it is not the only container on this workspace) 281 | # on|no_gaps (on=always activate and no_gaps=only activate if the gap size to the edge of the screen is 0) 282 | smart_borders on 283 | 284 | # Press $mod+Shift+g to enter the gap mode. Choose o or i for modifying outer/inner gaps. Press one of + / - (in-/decrement for current workspace) or 0 (remove gaps for current workspace). If you also press Shift with these keys, the change will be global for all workspaces. 285 | set $mode_gaps Gaps: (o) outer, (i) inner 286 | set $mode_gaps_outer Outer Gaps: +|-|0 (local), Shift + +|-|0 (global) 287 | set $mode_gaps_inner Inner Gaps: +|-|0 (local), Shift + +|-|0 (global) 288 | bindsym $mod+Shift+g mode "$mode_gaps" 289 | 290 | mode "$mode_gaps" { 291 | bindsym o mode "$mode_gaps_outer" 292 | bindsym i mode "$mode_gaps_inner" 293 | bindsym Return mode "default" 294 | bindsym Escape mode "default" 295 | } 296 | mode "$mode_gaps_inner" { 297 | bindsym plus gaps inner current plus 5 298 | bindsym minus gaps inner current minus 5 299 | bindsym 0 gaps inner current set 0 300 | 301 | bindsym Shift+plus gaps inner all plus 5 302 | bindsym Shift+minus gaps inner all minus 5 303 | bindsym Shift+0 gaps inner all set 0 304 | 305 | bindsym Return mode "default" 306 | bindsym Escape mode "default" 307 | } 308 | mode "$mode_gaps_outer" { 309 | bindsym plus gaps outer current plus 5 310 | bindsym minus gaps outer current minus 5 311 | bindsym 0 gaps outer current set 0 312 | 313 | bindsym Shift+plus gaps outer all plus 5 314 | bindsym Shift+minus gaps outer all minus 5 315 | bindsym Shift+0 gaps outer all set 0 316 | 317 | bindsym Return mode "default" 318 | bindsym Escape mode "default" 319 | } 320 | 321 | # Persist wallpaper 322 | exec_always feh --bg-scale /home/rox/Pictures/Wallpapers/wallpapersden.com_netflix-dark-everything-is-connected_2560x1600.jpg 323 | --------------------------------------------------------------------------------