diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0037380 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +id_rsa +id_rsa.pub +known_hosts diff --git a/README.md b/README.md new file mode 100644 index 0000000..46e83c3 --- /dev/null +++ b/README.md @@ -0,0 +1,4 @@ +Ansible must be installed. + +Invoke with +`ansible-playbook -i hosts.ini dotfiles.yml -K` diff --git a/ansible.cfg b/ansible.cfg new file mode 100644 index 0000000..72bdd62 --- /dev/null +++ b/ansible.cfg @@ -0,0 +1,3 @@ +[defaults] +retry_files_enabled = False +interpreter_python=/usr/bin/python3 diff --git a/dotfiles.yml b/dotfiles.yml new file mode 100644 index 0000000..386104a --- /dev/null +++ b/dotfiles.yml @@ -0,0 +1,10 @@ +--- +# - fix symlinks for folders +- hosts: all + roles: + - bootstrap + - dotfiles + tasks: + - debug: + msg: + "System operating with {{ ansible_distribution }} {{ ansible_distribution_major_version }}" diff --git a/hosts.ini b/hosts.ini new file mode 100644 index 0000000..ea0dc67 --- /dev/null +++ b/hosts.ini @@ -0,0 +1,2 @@ +[dotfiles] +localhost ansible_connection=local diff --git a/roles/bootstrap/tasks/main.yml b/roles/bootstrap/tasks/main.yml new file mode 100644 index 0000000..38fd371 --- /dev/null +++ b/roles/bootstrap/tasks/main.yml @@ -0,0 +1,27 @@ +--- +- name: Install necessary packages + become: yes + become_method: su + become_user: root + apt: + name: "{{ packages_all }}" + state: present + cache_valid_time: 3600 +- name: Install ubuntu specific packages + become: yes + become_method: su + become_user: root + when: ansible_distribution == "Ubuntu" + apt: + name: "{{ packages_ubuntu }}" + state: present + cache_valid_time: 3600 +- name: Install debian specific packages + become: yes + become_method: su + become_user: root + when: ansible_distribution == "Debian" + apt: + name: "{{ packages_debian }}" + state: present + cache_valid_time: 3600 diff --git a/roles/bootstrap/vars/main.yaml b/roles/bootstrap/vars/main.yaml new file mode 100644 index 0000000..1b09145 --- /dev/null +++ b/roles/bootstrap/vars/main.yaml @@ -0,0 +1,17 @@ +--- +packages_all: + - ack + - build-essential + - fish + - htop + - ispell + - grimshot + - tmux + - sway + - swaylock + - waybar + - vim +packages_debian: + - vim +packages_ubuntu: + - vim diff --git a/roles/dotfiles/files/config/fish/config.fish b/roles/dotfiles/files/config/fish/config.fish new file mode 100644 index 0000000..fe170e5 --- /dev/null +++ b/roles/dotfiles/files/config/fish/config.fish @@ -0,0 +1,8 @@ +# variables +export EDITOR=vim +# Start X at login +if status --is-login + if test -z "$DISPLAY" -a $XDG_VTNR = 1 + exec startx + end +end diff --git a/roles/dotfiles/files/config/fish/fish_variables b/roles/dotfiles/files/config/fish/fish_variables new file mode 100644 index 0000000..ef481f5 --- /dev/null +++ b/roles/dotfiles/files/config/fish/fish_variables @@ -0,0 +1,35 @@ +# This file contains fish universal variable definitions. +# VERSION: 3.0 +SETUVAR __fish_init_2_3_0:\x1d +SETUVAR __fish_initialized:3100 +SETUVAR _fish_abbr_upd:sudo\x20apt\x20update +SETUVAR _fish_abbr_upg:sudo\x20apt\x20upgrade +SETUVAR fish_color_autosuggestion:555 +SETUVAR fish_color_cancel:normal +SETUVAR fish_color_command:ff5faf +SETUVAR fish_color_comment:990000 +SETUVAR fish_color_cwd:008000 +SETUVAR fish_color_cwd_root:800000 +SETUVAR fish_color_end:ffaf00 +SETUVAR fish_color_error:ff0000 +SETUVAR fish_color_escape:00a6b2 +SETUVAR fish_color_history_current:normal +SETUVAR fish_color_host:normal +SETUVAR fish_color_host_remote:yellow +SETUVAR fish_color_match:normal +SETUVAR fish_color_normal:normal +SETUVAR fish_color_operator:00a6b2 +SETUVAR fish_color_param:afd700 +SETUVAR fish_color_quote:d7ff5f +SETUVAR fish_color_redirection:af00ff +SETUVAR fish_color_search_match:ffff00 +SETUVAR fish_color_selection:c0c0c0 +SETUVAR fish_color_status:red +SETUVAR fish_color_user:00ff00 +SETUVAR fish_color_valid_path:normal +SETUVAR fish_greeting:Welcome\x20to\x20fish\x2c\x20the\x20friendly\x20interactive\x20shell +SETUVAR fish_key_bindings:fish_default_key_bindings +SETUVAR fish_pager_color_completion:normal +SETUVAR fish_pager_color_description:B3A06D\x1eyellow +SETUVAR fish_pager_color_prefix:white\x1e\x2d\x2dbold\x1e\x2d\x2dunderline +SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan diff --git a/roles/dotfiles/files/config/fish/functions/fish_prompt.fish b/roles/dotfiles/files/config/fish/functions/fish_prompt.fish new file mode 100644 index 0000000..670d4f4 --- /dev/null +++ b/roles/dotfiles/files/config/fish/functions/fish_prompt.fish @@ -0,0 +1,87 @@ +function fish_prompt + set -l __last_command_exit_status $status + + if not set -q -g __fish_robbyrussell_functions_defined + set -g __fish_robbyrussell_functions_defined + function _git_branch_name + set -l branch (git symbolic-ref --quiet HEAD 2>/dev/null) + if set -q branch[1] + echo (string replace -r '^refs/heads/' '' $branch) + else + echo (git rev-parse --short HEAD 2>/dev/null) + end + end + + function _is_git_dirty + echo (git status -s --ignore-submodules=dirty 2>/dev/null) + end + + function _is_git_repo + type -q git + or return 1 + git rev-parse --git-dir >/dev/null 2>&1 + end + + function _hg_branch_name + echo (hg branch 2>/dev/null) + end + + function _is_hg_dirty + echo (hg status -mard 2>/dev/null) + end + + function _is_hg_repo + fish_print_hg_root >/dev/null + end + + function _repo_branch_name + _$argv[1]_branch_name + end + + function _is_repo_dirty + _is_$argv[1]_dirty + end + + function _repo_type + if _is_hg_repo + echo 'hg' + return 0 + else if _is_git_repo + echo 'git' + return 0 + end + return 1 + end + end + + set -l cyan (set_color -o cyan) + set -l yellow (set_color -o yellow) + set -l red (set_color -o red) + set -l green (set_color -o green) + set -l blue (set_color -o blue) + set -l normal (set_color normal) + + set -l arrow_color "$green" + if test $__last_command_exit_status != 0 + set arrow_color "$red" + end + + set -l arrow "$arrow_color➜ " + if test "$USER" = 'root' + set arrow "$arrow_color# " + end + + set -l cwd $cyan(basename (prompt_pwd)) + + if set -l repo_type (_repo_type) + set -l repo_branch $red(_repo_branch_name $repo_type) + set repo_info "$blue $repo_type:($repo_branch$blue)" + + if [ (_is_repo_dirty $repo_type) ] + set -l dirty "$yellow ✗" + set repo_info "$repo_info$dirty" + end + end + + echo -n -s $arrow ' '$cwd $repo_info $normal ' ' +end diff --git a/roles/dotfiles/files/config/fish/functions/ll.fish b/roles/dotfiles/files/config/fish/functions/ll.fish new file mode 100644 index 0000000..3c8db5c --- /dev/null +++ b/roles/dotfiles/files/config/fish/functions/ll.fish @@ -0,0 +1,3 @@ +function ll --description 'List contents of directory using long format' + ls -lh $argv +end diff --git a/roles/dotfiles/files/config/foot/foot.ini b/roles/dotfiles/files/config/foot/foot.ini new file mode 100644 index 0000000..3910dad --- /dev/null +++ b/roles/dotfiles/files/config/foot/foot.ini @@ -0,0 +1,108 @@ +# -*- conf -*- + +font=Roboto Mono Medium:size=8 +bell=set-urgency +# initial-window-size-pixels=700x500 # Or, +# initial-window-size-chars= +# initial-window-mode=windowed +# pad=2x2 +# shell=$SHELL (if set, otherwise user's default shell from /etc/passwd) +# term=foot +# login-shell=no +# workers= + +[scrollback] +# lines=1000 +# multiplier=3.0 +# indicator-position=relative +# indicator-format= + +[cursor] +# style=block +# color=111111 dcdccc +# blink=no + +[mouse] +# hide-when-typing=no +# alternate-scroll-mode=yes + +[colors] +# alpha=0.9 +# foreground=dcdccc +# background=111111 +regular0=222222 # black +regular1=f92672 # red +regular2=82b414 # green +regular3=fd971f # yellow +regular4=268bd2 # blue +regular5=8c54fe # magenta +regular6=56c2d6 # cyan +regular7=ccccc6 # white +bright0=505354 # bright black +bright1=ff5995 # bright red +bright2=b7eb46 # bright green +bright3=feed6c # bright yellow +bright4=62ade3 # bright blue +bright5=bfa0fe # bright magenta +bright6=94d8e5 # bright cyan +bright7=f8f8f2 # bright white +# selection-foreground= +# selection-background= + +[csd] +# preferred=server +# size=26 +# color= +# button-width=26 +# button-minimize-color=ff0000ff +# button-maximize-color=ff00ff00 +# button-close-color=ffff0000 + +[key-bindings] +# scrollback-up-page=Shift+Page_Up +# scrollback-up-half-page=none +# scrollback-up-line=none +# scrollback-down-page=Shift+Page_Down +# scrollback-down-half-page=none +# scrollback-down-line=none +# clipboard-copy=Control+Shift+C +# clipboard-paste=Control+Shift+V +# primary-paste=Shift+Insert +# search-start=Control+Shift+R +# font-increase=Control+plus Control+equal Control+KP_Add +# font-decrease=Control+minus Control+KP_Subtract +# font-reset=Control+0 Control+KP_0 +# spawn-terminal=Control+Shift+N +# minimize=none +# maximize=none +# fullscreen=none +# pipe-visible=[sh -c "xurls | bemenu | xargs -r firefox"] none +# pipe-scrollback=[sh -c "xurls | bemenu | xargs -r firefox"] none +# pipe-selected=[xargs -r firefox] none + +[search-bindings] +# cancel=Control+g Escape +# commit=Return +# find-prev=Control+r +# find-next=Control+s +# cursor-left=Left Control+b +# cursor-left-word=Control+Left Mod1+b +# cursor-right=Right Control+f +# cursor-right-word=Control+Right Mod1+f +# cursor-home=Home Control+a +# cursor-end=End Control+e +# delete-prev=BackSpace +# delete-prev-word=Mod1+BackSpace Control+BackSpace +# delete-next=Delete +# delete-next-word=Mod1+d Control+Delete +# extend-to-word-boundary=Control+w +# extend-to-next-whitespace=Control+Shift+W + +[mouse-bindings] +# primary-paste=BTN_MIDDLE +# select-begin=BTN_LEFT +# select-begin-block=Control+BTN_LEFT +# select-extend=BTN_RIGHT +# select-word=BTN_LEFT-2 +# select-word-whitespace=Control+BTN_LEFT-2 +# select-row=BTN_LEFT-3 diff --git a/roles/dotfiles/files/config/sway/bg.png b/roles/dotfiles/files/config/sway/bg.png new file mode 100644 index 0000000..c962fc5 Binary files /dev/null and b/roles/dotfiles/files/config/sway/bg.png differ diff --git a/roles/dotfiles/files/config/sway/config b/roles/dotfiles/files/config/sway/config new file mode 100644 index 0000000..9ef9a84 --- /dev/null +++ b/roles/dotfiles/files/config/sway/config @@ -0,0 +1,188 @@ +# From /etc/sway/config +### Variables +# +# Logo key. Use Mod1 for Alt. +set $mod Mod4 +# Home row direction keys, like vim +set $left h +set $down j +set $up k +set $right l +# Your preferred terminal emulator +set $term foot +# Your preferred application launcher +# Note: pass the final command to swaymsg so that the resulting window can be opened +# on the original workspace that the command was run on. +set $menu dmenu_path | dmenu | xargs swaymsg exec -- + +include /etc/sway/config-vars.d/* + +### Output configuration +# +# Default wallpaper (more resolutions are available in /usr/share/backgrounds/sway/) +# output * bg /usr/share/backgrounds/sway/Sway_Wallpaper_Blue_1920x1080.png fill +output * bg ~/.config/sway/bg.png fill +# +# Example configuration: +# +# output HDMI-A-1 resolution 1920x1080 position 1920,0 +# +# You can get the names of your outputs by running: swaymsg -t get_outputs + +### Key bindings +# +# Basics: +# + # Start a terminal + bindsym $mod+Return exec $term + + # Kill focused window + bindsym $mod+Shift+q kill + + # Start your launcher + bindsym $mod+d exec $menu + + # 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 + + # 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' +# +# Moving around: +# + # Move your focus around + bindsym $mod+$left focus left + bindsym $mod+$down focus down + bindsym $mod+$up focus up + bindsym $mod+$right focus right + # Or use $mod+[up|down|left|right] + bindsym $mod+Left focus left + bindsym $mod+Down focus down + bindsym $mod+Up focus up + bindsym $mod+Right focus right + + # Move the focused window with the same, but add Shift + bindsym $mod+Shift+$left move left + bindsym $mod+Shift+$down move down + bindsym $mod+Shift+$up move up + bindsym $mod+Shift+$right move right + # Ditto, with arrow keys + bindsym $mod+Shift+Left move left + bindsym $mod+Shift+Down move down + bindsym $mod+Shift+Up move up + bindsym $mod+Shift+Right move right +# +# Workspaces: +# + # Switch to workspace + 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 + bindsym $mod+9 workspace number 9 + bindsym $mod+0 workspace number 10 + # Move focused container to workspace + 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 + bindsym $mod+Shift+9 move container to workspace number 9 + bindsym $mod+Shift+0 move container to workspace number 10 + # Note: workspaces can have any name you want, not just numbers. + # We just use 1-10 as the default. +# +# Layout stuff: +# + # You can "split" the current object of your focus with + # $mod+b or $mod+v, for horizontal and vertical splits + # respectively. + bindsym $mod+b splith + bindsym $mod+v splitv + + # Switch the current container between different layout styles + bindsym $mod+s layout stacking + bindsym $mod+w layout tabbed + bindsym $mod+e layout toggle split + + # Make the current focus fullscreen + bindsym $mod+f fullscreen + + # Toggle the current focus between tiling and floating mode + bindsym $mod+Shift+space floating toggle + + # Swap focus between the tiling area and the floating area + bindsym $mod+space focus mode_toggle + + # Move focus to the parent container + bindsym $mod+a focus parent +# +# 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 +# +# Resizing containers: +# +mode "resize" { + # left will shrink the containers width + # right will grow the containers width + # up will shrink the containers height + # down will grow the containers height + bindsym $left resize shrink width 10px + bindsym $down resize grow height 10px + bindsym $up resize shrink height 10px + bindsym $right resize grow width 10px + + # Ditto, with arrow keys + bindsym Left resize shrink width 10px + bindsym Down resize grow height 10px + bindsym Up resize shrink height 10px + bindsym Right resize grow width 10px + + # Return to default mode + bindsym Return mode "default" + bindsym Escape mode "default" +} +bindsym $mod+r mode "resize" + +include /etc/sway/config.d/* + +# custom +input * { + xkb_layout "de" +} +bar { + swaybar_command waybar +} +# remove header +default_border pixel +# Keys +bindsym Mod1+l exec swaylock -c 222222 +bindsym Mod1+s exec systemctl suspend +bindsym XF86AudioRaiseVolume exec "pactl set-sink-volume @DEFAULT_SINK@ +5%" +bindsym XF86AudioLowerVolume exec "pactl set-sink-volume @DEFAULT_SINK@ -5%" +bindsym XF86AudioMute exec "pactl set-sink-mute @DEFAULT_SINK@ toggle" +# Take a Screenshot with the region select (slurp) +bindsym Print exec grim -g "$(slurp)" ~/Pictures/shots/$(date +%Y-%m-%d_%H-%m-%S).png diff --git a/roles/dotfiles/files/config/waybar/config b/roles/dotfiles/files/config/waybar/config new file mode 100644 index 0000000..024f9f2 --- /dev/null +++ b/roles/dotfiles/files/config/waybar/config @@ -0,0 +1,163 @@ +{ + // "layer": "top", // Waybar at top layer + // "position": "bottom", // Waybar position (top|bottom|left|right) + "height": 24, // Waybar height (to be removed for auto height) + // "width": 1280, // Waybar width + // Choose the order of the modules + "modules-left": ["sway/workspaces", "sway/mode"], + //"modules-center": ["sway/window"], + "modules-right": ["cpu", "temperature","network", "pulseaudio", "battery", "battery#bat2", "custom/date", "custom/week", "custom/clock", "tray"], + // Modules configuration + "sway/workspaces": { + "disable-scroll": true, + "all-outputs": true, + "format": "{name}", + "persistent_workspaces": { + "1": [], + "2": [], + "3": [], + "4": [], + "5": [], + }, + "format-icons": { + "1": "", + "2": "", + "3": "", + "4": "", + "urgent": "", + "focused": "", + "default": "" + } + }, + "sway/mode": { + "format": "{}" + }, + "mpd": { + "format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ ", + "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": { +// "format": "{%Y-%m-%d %H:%M}" +// }, + "cpu": { + "format": " {usage}%", + "tooltip": false + }, + "memory": { + "format": " {}% " + }, + "temperature": { + // "thermal-zone": 2, + // "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input", + "critical-threshold": 80, + // "format-critical": "{temperatureC}°C {icon}", + "format": " {temperatureC}°C", + "format-icons": ["", "", ""] + }, + "backlight": { + // "device": "acpi_video1", + "format": "{percent}% {icon}", + "format-icons": ["", ""] + }, + "battery": { + "states": { + "good": 95, + "warning": 30, + "critical": 15 + }, + "format": "  {time} {capacity}%", + "format-charging": "  {time} {capacity}%", + "format-plugged": "  {time} {capacity}%", + "format-alt": "{time} {icon}", + // "format-good": "", // An empty format will hide the module + "format-full": " Full", + "format-icons": ["", "", "", "", ""] + }, + "battery#bat2": { + "bat": "BAT2" + }, + "network": { + // "interface": "wlp2*", // (Optional) To force the use of this interface + "format-wifi": " {essid} ({signalStrength}%)", + "format-ethernet": " {ipaddr}", + "format-linked": "{ifname} (No IP) ", + "format-disconnected": "Disconnected ⚠", + "format-alt": "{ifname}: {ipaddr}/{cidr}" + }, + "pulseaudio": { + // "scroll-step": 1, // %, can be a float + "format": "{icon} {volume}%", + "format-bluetooth": "{volume}% {icon} {format_source}", + "format-bluetooth-muted": " {icon} {format_source}", + "format-muted": "mute ", + "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 + }, + "custom/date": { + "exec": "date +' %a %_d. %b'", + "interval": 60 + }, + "custom/week": { + "exec": "date +'CW %V'", + "interval": 60 + }, + "custom/clock": { + "exec": "date +' %H:%M'", + "interval": 10 + } +} diff --git a/roles/dotfiles/files/config/waybar/style.css b/roles/dotfiles/files/config/waybar/style.css new file mode 100644 index 0000000..fe20598 --- /dev/null +++ b/roles/dotfiles/files/config/waybar/style.css @@ -0,0 +1,149 @@ +* { + border: none; + border-radius: 0; + /* `otf-font-awesome` is required to be installed for icons */ + font-family: Roboto Mono; + font-size: 14px; + min-height: 0; +} + +window#waybar { + background-color: #3b4252; + color: white; +} + +window#waybar.hidden { + opacity: 0.2; +} + +#workspaces button { + padding: 0 5px; + background-color: transparent; + color: #ffffff; + border-bottom: 3px solid transparent; +} + +/* 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: inherit; + border-bottom: 3px solid #ffffff; +} + +#workspaces button.focused { + background-color: #64727D; + border-bottom: 3px solid #ffffff; +} + +#workspaces button.urgent { + background-color: #eb4d4b; +} + +#mode { + background-color: #64727D; + border-bottom: 3px solid #ffffff; +} + +#clock, +#battery, +#cpu, +#memory, +#temperature, +#backlight, +#network, +#pulseaudio, +#custom-media, +#tray, +#mode, +#idle_inhibitor, +#custom-date, +#custom-clock, +#custom-week, +#mpd { + padding: 0px 10px; + /*margin: 2px 0px;*/ + color: #ffffff; + background-color: #4c566a; +} + +/*#clock { +/ background-color: #64727D; +}*/ + +/*#battery { + background-color: #ffffff; + color: #000000; +} + +#battery.charging { + color: #ffffff; + background-color: #26A65B; +}*/ + +@keyframes blink { + to { + background-color: #ffffff; + color: #000000; + } +} + +#battery.warning:not(.charging) { + background-color: #fd971f; +} +#battery.critical:not(.charging) { + background-color: #ff5995; +} + +label:focus { + background-color: #000000; +} +#network.disconnected { + background-color: #f53c3c; +} +#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.critical { + background-color: #eb4d4b; +} + +#tray { + background-color: #2980b9; +} + +#idle_inhibitor { + background-color: #2d3436; +} + +#idle_inhibitor.activated { + background-color: #ecf0f1; + color: #2d3436; +} + +#mpd { + background-color: #66cc99; + color: #2a5c45; +} + +#mpd.disconnected { + background-color: #f53c3c; +} + +#mpd.stopped { + background-color: #90b1b1; +} + +#mpd.paused { + background-color: #51a37a; +} diff --git a/roles/dotfiles/files/home/ssh/config b/roles/dotfiles/files/home/ssh/config new file mode 100644 index 0000000..d23646e --- /dev/null +++ b/roles/dotfiles/files/home/ssh/config @@ -0,0 +1,8 @@ +Host base + HostName skaq5lpru2kvl6hu.myfritz.net + Port 2222 + User johannes +Host ovh + HostName 51.89.23.55 + Port 2222 + User rothe diff --git a/tmux.conf b/roles/dotfiles/files/home/tmux.conf similarity index 100% rename from tmux.conf rename to roles/dotfiles/files/home/tmux.conf diff --git a/roles/dotfiles/files/home/vimrc b/roles/dotfiles/files/home/vimrc new file mode 100644 index 0000000..261e68c --- /dev/null +++ b/roles/dotfiles/files/home/vimrc @@ -0,0 +1,54 @@ +set number +set colorcolumn=80 +set background=dark +syntax on +colorscheme monokai + +" python +au BufNewFile,BufRead *.py set tabstop=4 softtabstop=4 shiftwidth=4 + \ textwidth=79 expandtab autoindent fileformat=unix +au BufNewFile,BufRead *.yaml set tabstop=2 softtabstop=2 shiftwidth=2 + \ textwidth=79 expandtab autoindent fileformat=unix +au BufNewFile,BufRead *.launch set filetype=xml + +" vim-plug +" :PlugInstall to install new one +call plug#begin('~/.vim/plugged') +Plug 'dense-analysis/ale' +Plug 'Valloric/YouCompleteMe' +" enhanced search +Plug 'junegunn/vim-slash' +Plug 'preservim/nerdtree' +Plug 'vim-airline/vim-airline' +Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } +Plug 'junegunn/fzf.vim' +Plug 'luochen1990/rainbow' +" Themes +Plug 'crusoexia/vim-monokai' +" Language specific +Plug 'vim-python/python-syntax' +call plug#end() +" Preconditions for plugins +" ale: apt install pylint flake8 + +" Ale +let g:ale_linters = { + \ 'python': ['flake8', 'pylint'], + \} + +" NERDTREE +" open nerdtree when no file is specified on startup +autocmd StdinReadPre * let s:std_in=1 +autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif +" toggle nerdtree keyboard shortcut +map :NERDTreeToggle + +" RAINBOW_PARENTHESES +au FileType c,cpp,py call rainbow#load() + +" python syntax +let g:python_highlight_all = 1 +let g:python_highlight_func_calls = 0 + +" enable rainbow brackets +let g:rainbow_active = 1 diff --git a/roles/dotfiles/tasks/main.yml b/roles/dotfiles/tasks/main.yml new file mode 100644 index 0000000..711c72a --- /dev/null +++ b/roles/dotfiles/tasks/main.yml @@ -0,0 +1,25 @@ +--- +- name: List files from config dir + find: + paths: "{{ role_path }}/files/config" + file_type: any + register: config_files +- name: List files for home dir + find: + paths: "{{ role_path }}/files/home" + file_type: any + register: home_files +- name: Link home files + file: + src: "{{ item.path }}" + path: "~/.{{ item.path | basename }}" + state: link + force: True + loop: "{{ home_files.files }}" +- name: Link config files + file: + src: "{{ item.path }}" + path: "~/.config/{{ item.path | basename }}" + state: link + force: True + loop: "{{ config_files.files }}"