@@ -9,3 +9,43 @@ kanboard_api_settings: "{{ lookup('file', '~/.eralitex/kanboard_api_settings.jso | |||||
# kanboard_api_url: https://kanboard.katyx.net/jsonrpc.php | # kanboard_api_url: https://kanboard.katyx.net/jsonrpc.php | ||||
# kanboard_api_user: ka | # kanboard_api_user: ka | ||||
# kanboard_api_key: xxx | # kanboard_api_key: xxx | ||||
home_eralitex_vdesk_started_and_enabled: false | |||||
eralitex_directory: ~/.eralitex | |||||
eralitex_profile: desktop | |||||
eralitex_terminal: urxvt | |||||
eralitex_browser: firefox | |||||
# feature flags | |||||
eralitex_with_activity: false | |||||
eralitex_applications: | |||||
a: atom | |||||
w: lowriter | |||||
c: localc | |||||
i: loimpress | |||||
d: lodraw | |||||
F: catfish # search | |||||
j: "{{eralitex_jupyter_console_command}}" | |||||
s: xfce4-screenshooter | |||||
l: catfish | |||||
f: "{{eralitex_file_browser_command}}" # files | |||||
m: "{{eralitex_mail_command}}" | |||||
r: arandr | |||||
eralitex_lock_command: /usr/local/bin/screensaver-lock | |||||
eralitex_enable_screensaver_command: /usr/local/bin/screensaver-enable | |||||
eralitex_disable_screensaver_command: /usr/local/bin/screensaver-disable | |||||
eralitex_suspend_command: systemctl suspend | |||||
eralitex_reboot_command: systemctl reboot | |||||
eralitex_poweroff_command: systemctl poweroff | |||||
eralitex_file_browser_command: thunar | |||||
eralitex_calculator_command: "{{eralitex_jupyter_console_command}}" | |||||
eralitex_jupyter_console_command: jupyter qtconsole --no-confirm-exit | |||||
eralitex_mail_command: thunderbird | |||||
eralitex_background_image: false |
@@ -0,0 +1,2 @@ | |||||
#!/usr/bin/python3 | |||||
# -*- coding: utf-8 -*- |
@@ -0,0 +1,5 @@ | |||||
#!/usr/bin/fish | |||||
set DIR (cd (dirname (status -f)); and pwd) | |||||
i3-msg -t subscribe -m '["workspace"]' | jq --raw-output --unbuffered 'select(.change == "focus").current.name' | xargs -n1 -r $DIR/on-focus-workspace & |
@@ -0,0 +1,17 @@ | |||||
#!/usr/bin/fish | |||||
if count $argv | |||||
set ws $argv[1] | |||||
else | |||||
set ws (i3-msg -t get_workspaces | jq --raw-output '.[]|select(.focused == true).name') | |||||
end | |||||
set script ~/.eralitex/workspace-cmd/$ws.focus | |||||
set oscript ~/.eralitex/workspace-cmd/other-focus | |||||
if type -q $script | |||||
$script | |||||
else | |||||
if type -q $oscript | |||||
$oscript | |||||
end | |||||
end |
@@ -0,0 +1,8 @@ | |||||
#!/usr/bin/fish | |||||
set ws (i3-msg -t get_workspaces | jq --raw-output '.[]|select(.focused == true).name') | |||||
set script ~/.eralitex/workspace-cmd/$ws.space | |||||
if type -q $script | |||||
$script | |||||
end |
@@ -0,0 +1,8 @@ | |||||
#!/usr/bin/fish | |||||
switch $argv[1] | |||||
case "activity" | |||||
/opt/activity/select_activity | |||||
case "end" | |||||
/opt/activity/activity | |||||
end |
@@ -1,4 +1,5 @@ | |||||
--- | --- | ||||
- name: systemd daemon-reload | - name: systemd daemon-reload | ||||
systemd: | systemd: | ||||
daemon_reload: yes | daemon_reload: yes | ||||
@@ -1,7 +1,115 @@ | |||||
--- | --- | ||||
- import_role: | |||||
name: eralitex | |||||
- name: eralitex directory | |||||
file: | |||||
path: "{{eralitex_directory}}" | |||||
state: directory | |||||
- name: profile directories | |||||
file: | |||||
path: "{{eralitex_directory}}/{{item}}" | |||||
state: directory | |||||
with_items: "{{ eralitex_profiles }}" | |||||
- name: i3 config | |||||
template: | |||||
src: i3.config.j2 | |||||
dest: "{{eralitex_directory}}/{{item}}/i3.config" | |||||
with_items: "{{ eralitex_profiles }}" | |||||
- name: check i3 config | |||||
command: i3 -c {{eralitex_directory}}/{{item}}/i3.config -C | |||||
with_items: "{{ eralitex_profiles }}" | |||||
changed_when: false | |||||
- name: i3blocks config | |||||
template: | |||||
src: i3blocks.config.j2 | |||||
dest: "{{eralitex_directory}}/{{item}}/i3blocks.config" | |||||
with_items: "{{ eralitex_profiles }}" | |||||
- name: xsession scripts | |||||
template: | |||||
src: xsession.sh.j2 | |||||
dest: "{{eralitex_directory}}/{{item}}/xsession" | |||||
mode: 0755 | |||||
with_items: "{{ eralitex_profiles }}" | |||||
- name: session reload scripts | |||||
template: | |||||
src: reload.sh.j2 | |||||
dest: "{{eralitex_directory}}/{{item}}/reload" | |||||
mode: 0755 | |||||
with_items: "{{ eralitex_profiles }}" | |||||
- name: rofi themes | |||||
template: | |||||
src: rofi.theme.j2 | |||||
dest: "{{eralitex_directory}}/{{item}}/rofi.theme" | |||||
mode: 0755 | |||||
with_items: "{{ eralitex_profiles }}" | |||||
- name: Xmodmap | |||||
template: | |||||
src: Xmodmap.j2 | |||||
dest: "{{eralitex_directory}}/Xmodmap" | |||||
- name: urxvt Xresources system config | |||||
template: | |||||
src: urxvt.Xresources.j2 | |||||
dest: "{{eralitex_directory}}/urxvt.Xresources" | |||||
- name: eralitex bin directory | |||||
copy: | |||||
src: bin/ | |||||
dest: "{{eralitex_directory}}/bin/" | |||||
mode: 0755 | |||||
- name: link selected profile as active | |||||
file: | |||||
dest: "{{eralitex_directory}}/active-profile" | |||||
src: "{{eralitex_profile}}" | |||||
state: link | |||||
- name: vdesk user service | |||||
template: | |||||
src: eralitex-vdesk.service.j2 | |||||
dest: ~/.config/systemd/user/eralitex@.service | |||||
- name: link etx cli utility from users bin | |||||
file: | |||||
dest: ~/bin/etx | |||||
src: "{{eralitex_directory}}/bin/etx" | |||||
state: link | |||||
- name: link selected profile as active | |||||
file: | |||||
dest: "{{eralitex_directory}}/active-profile" | |||||
src: "{{eralitex_profile}}" | |||||
state: link | |||||
- name: points counter | |||||
copy: | |||||
content: 0 | |||||
dest: "{{eralitex_directory}}/points" | |||||
force: no | |||||
- name: background image directory | |||||
file: | |||||
path: "{{eralitex_directory}}/backgrounds" | |||||
state: directory | |||||
when: eralitex_background_image is defined | |||||
- name: background image | |||||
copy: | |||||
src: "{{eralitex_background_image}}" | |||||
dest: "{{eralitex_background_image_path}}" | |||||
when: eralitex_background_image is defined | |||||
- name: workspace-cmd directory | |||||
file: | |||||
path: "{{eralitex_directory}}/workspace-cmd" | |||||
state: directory | |||||
- name: other workspace focus script | - name: other workspace focus script | ||||
template: | template: | ||||
@@ -34,3 +142,14 @@ | |||||
src: vnc-options.fish.j2 | src: vnc-options.fish.j2 | ||||
dest: ~/.eralitex/workspace-cmd/vnc-options | dest: ~/.eralitex/workspace-cmd/vnc-options | ||||
mode: 0755 | mode: 0755 | ||||
- name: flush handlers | |||||
meta: flush_handlers | |||||
- name: enable and start eralitex vdesk user service | |||||
systemd: | |||||
name: eralitex@:16.service | |||||
state: started | |||||
enabled: true | |||||
user: true | |||||
when: home_eralitex_vdesk_started_and_enabled |
@@ -1,5 +1,6 @@ | |||||
--- | --- | ||||
- import_tasks: structure.yaml | |||||
- import_tasks: ssh.yaml | - import_tasks: ssh.yaml | ||||
- import_tasks: vnc.yaml | - import_tasks: vnc.yaml | ||||
- import_tasks: tmux.yaml | - import_tasks: tmux.yaml | ||||
@@ -8,3 +9,5 @@ | |||||
- import_tasks: eralitex.yaml | - import_tasks: eralitex.yaml | ||||
when: home_eralitex | when: home_eralitex | ||||
- import_tasks: x11.yaml | |||||
when: home_eralitex |
@@ -17,3 +17,11 @@ | |||||
line: Include config.auto | line: Include config.auto | ||||
insertbefore: BOF | insertbefore: BOF | ||||
create: true | create: true | ||||
- name: enable and start ssh-agent user service | |||||
systemd: | |||||
name: ssh-agent.service | |||||
state: started | |||||
enabled: true | |||||
user: true | |||||
when: home_eralitex_vdesk_started_and_enabled |
@@ -0,0 +1,11 @@ | |||||
--- | |||||
- name: ~/bin directory | |||||
file: | |||||
path: ~/bin | |||||
state: directory | |||||
- name: systemd user config directory | |||||
file: | |||||
path: ~/.config/systemd/user | |||||
state: directory |
@@ -10,11 +10,13 @@ | |||||
file: | file: | ||||
path: ~/.config/systemd/user | path: ~/.config/systemd/user | ||||
state: directory | state: directory | ||||
- name: tmux systemd user service unit | - name: tmux systemd user service unit | ||||
template: | template: | ||||
src: tmux@.service.j2 | src: tmux@.service.j2 | ||||
dest: ~/.config/systemd/user/tmux@.service | dest: ~/.config/systemd/user/tmux@.service | ||||
notify: systemd daemon-reload | notify: systemd daemon-reload | ||||
- name: tmux systemd user service unit | - name: tmux systemd user service unit | ||||
template: | template: | ||||
src: tmux@.service.j2 | src: tmux@.service.j2 | ||||
@@ -0,0 +1,6 @@ | |||||
--- | |||||
- name: xsessionrc | |||||
copy: | |||||
content: exec fish {{eralitex_directory}}/active-profile/xsession | |||||
dest: ~/.xsessionrc |
@@ -0,0 +1,24 @@ | |||||
! {{ ansible_managed }} | |||||
! | |||||
! xmodmap {{eralitex_directory}}/Xmodmap | |||||
! | |||||
! default modifier configuration | |||||
! | |||||
!xmodmap: up to 4 keys per modifier, (keycodes in parentheses): | |||||
! | |||||
!shift Shift_L (0x32), Shift_R (0x3e) | |||||
!lock Caps_Lock (0x42) | |||||
!control Control_L (0x25), Control_R (0x69) | |||||
!mod1 Alt_L (0x40), Meta_L (0xcd) | |||||
!mod2 Num_Lock (0x4d) | |||||
!mod3 | |||||
!mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf) | |||||
!mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb) | |||||
clear lock | |||||
clear mod3 | |||||
clear mod4 | |||||
keycode 66 = Hyper_L | |||||
add mod3 = Hyper_L | |||||
add mod4 = Super_L |
@@ -0,0 +1,28 @@ | |||||
{{ ansible_managed | comment }} | |||||
# | |||||
# /usr/lib/systemd/user/vncserver@.service | |||||
# | |||||
# 1. Switches for vncserver should be entered in ~/.vnc/config rather than | |||||
# hard-coded into this unit file. See the vncserver(1) manpage. | |||||
# | |||||
# 2. Users wishing for the server to continue running after the owner logs | |||||
# out MUST enable 'linger' with loginctl like this: | |||||
# `loginctl enable-linger username` | |||||
# | |||||
# 3. The server can be enabled and started like this once configured: | |||||
# `systemctl --user start eralitex@:<display>.service` | |||||
# `systemctl --user enable eralitex@:<display>.service` | |||||
[Unit] | |||||
Description=eralitex vdesk service - display %i | |||||
After=syslog.target network.target | |||||
[Service] | |||||
Type=forking | |||||
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :' | |||||
ExecStart=/usr/bin/fish -c "/usr/bin/vncserver -xstartup {{eralitex_directory}}/vdesk/xsession %i" | |||||
ExecStop=/usr/bin/vncserver -kill %i | |||||
[Install] | |||||
WantedBy=default.target |
@@ -0,0 +1,411 @@ | |||||
{{ ansible_managed | comment }} | |||||
# i3 config file (v4) | |||||
# | |||||
# Please see http://i3wm.org/docs/userguide.html for a complete reference! | |||||
{% set workspace_switcher = "exec fish -c \"i3-msg workspace (i3-msg -t get_workspaces | jq --raw-output '.[]|select(.num == -1).name' | rofi -dmenu -p workspace )\"" %} | |||||
{% set on_focus_workspace = "exec --no-startup-id " + eralitex_directory + "/bin/on-focus-workspace" %} | |||||
### Font | |||||
font pango:Terminus 14px | |||||
### Modifier Key | |||||
set $mod Mod4 | |||||
set $plexmod Mod3 | |||||
# Use Mouse+$mod to drag floating windows to their wanted position | |||||
floating_modifier $mod | |||||
### key patterns | |||||
set $up l | |||||
set $down k | |||||
set $left j | |||||
set $right odiaeresis | |||||
### default/local mode | |||||
## special keys | |||||
bindsym XF86Sleep exec {{eralitex_lock_command}} | |||||
bindsym XF86Mail exec {{eralitex_mail_command}} | |||||
bindsym XF86HomePage exec {{eralitex_browser}} | |||||
bindsym XF86Calculator exec {{eralitex_calculator_command}} | |||||
## Special modes | |||||
bindsym $mod+t mode timer | |||||
bindsym $mod+s mode session | |||||
bindsym $mod+c mode clipboard | |||||
bindcode $mod+49 mode "remote" | |||||
## Applications | |||||
bindsym $mod+Return exec "{{eralitex_terminal}}" | |||||
bindsym $mod+b exec "{{eralitex_browser}}" | |||||
bindsym $mod+d exec rofi -show drun -show-icons | |||||
bindsym $mod+e exec rofi -show run | |||||
bindsym $mod+a mode "apps" | |||||
bindsym $mod+space exec "{{eralitex_directory}}/bin/on-space-shortcut" | |||||
## Workspaces | |||||
bindsym $mod+w {{workspace_switcher}} | |||||
{% for ws in eralitex_numbered_workspace_keymaps %} | |||||
bindsym $mod+{{ws.keysym}} workspace "{{ws.workspace}}" | |||||
{% endfor %} | |||||
# focus workspace | |||||
bindsym $mod+Prior workspace next | |||||
bindsym $mod+Next workspace prev | |||||
bindsym $mod+ssharp scratchpad show | |||||
bindsym $mod+g sticky toggle | |||||
## Layout | |||||
bindsym $mod+y mode "layout" | |||||
bindsym $mod+h split h | |||||
bindsym $mod+v split v | |||||
## Focus | |||||
bindsym $mod+Left focus left | |||||
bindsym $mod+$left focus left | |||||
bindsym $mod+Down focus down | |||||
bindsym $mod+$down focus down | |||||
bindsym $mod+Up focus up | |||||
bindsym $mod+$up focus up | |||||
bindsym $mod+Right focus right | |||||
bindsym $mod+$right focus right | |||||
bindsym $mod+p focus parent | |||||
# change focus between tiling / floating windows | |||||
bindsym $mod+Tab focus mode_toggle | |||||
## Window | |||||
# The middle button over a titlebar kills the window | |||||
bindsym --release button2 kill | |||||
# The middle button and a modifer over any part of the window kills the window | |||||
bindsym --whole-window $mod+button2 kill | |||||
bindsym $mod+BackSpace kill | |||||
bindsym $mod+q kill | |||||
bindsym $mod+f fullscreen | |||||
bindsym $mod+z floating toggle | |||||
bindsym $mod+m mode move | |||||
bindsym $mod+r mode resize | |||||
bindsym $mod+x exec xkill | |||||
# points | |||||
bindsym $mod+minus exec {{eralitex_points_down_command}} | |||||
bindsym $mod+plus exec {{eralitex_points_up_command}} | |||||
# unlearn | |||||
#exec {{eralitex_points_down_command}} | |||||
## stuff that is available in default and remote mode | |||||
{% macro overall() %} | |||||
{% if item == "desktop" %} | |||||
bindsym $plexmod+space exec "{{eralitex_directory}}/bin/on-space-shortcut" | |||||
bindsym $plexmod+BackSpace kill | |||||
bindsym $plexmod+w {{workspace_switcher}} | |||||
{% for ws in eralitex_numbered_workspace_keymaps %} | |||||
bindsym $plexmod+{{ws.keysym}} workspace "{{ws.workspace}}" | |||||
{% endfor %} | |||||
{% for ws in eralitex_letter_workspace_keymaps %} | |||||
bindsym $plexmod+{{ws.keysym}} workspace "{{ws.workspace}}" | |||||
{% endfor %} | |||||
# focus workspace | |||||
bindsym $plexmod+Prior workspace next | |||||
bindsym $plexmod+Next workspace prev | |||||
{% endif %} | |||||
# focus output | |||||
bindsym $plexmod+Shift+p focus output primary | |||||
bindsym $plexmod+Shift+o exec fish -c "i3-msg focus output ( i3-msg -t get_outputs | jq --raw-output '.[]|select(.active == true).name' | rofi -dmenu -p 'focus output' )" | |||||
bindsym $plexmod+Left focus output left | |||||
bindsym $plexmod+Down focus output down | |||||
bindsym $plexmod+Up focus output up | |||||
bindsym $plexmod+Right focus output right | |||||
# Special modes | |||||
bindsym $plexmod+s mode session | |||||
bindsym $plexmod+t mode timer | |||||
{% endmacro %} | |||||
{{ overall() }} | |||||
### remote mode | |||||
mode "remote" { | |||||
bindcode $mod+9 mode "default" | |||||
bindsym XF86Sleep exec {{eralitex_lock_command}} | |||||
# The middle button over a titlebar kills the window | |||||
bindsym --release button2 kill | |||||
{{ overall() }} | |||||
} | |||||
### Applications mode | |||||
mode "apps" { | |||||
{% for key, app in eralitex_applications.iteritems() %} | |||||
bindsym {{key}} exec {{app}}; mode "default" | |||||
{% endfor %} | |||||
bindsym Escape mode "default" | |||||
} | |||||
### Session | |||||
mode "session" { | |||||
bindsym q exit | |||||
bindsym r reload; exec --no-startup-id {{eralitex_directory}}/{{item}}/reload; mode "default"; {{on_focus_workspace}} | |||||
bindsym s exec --no-startup-id {{eralitex_lock_command}}; exec --no-startup-{{eralitex_suspend_command}}; mode "default"; {{on_focus_workspace}} | |||||
bindsym x exec --no-startup-id {{eralitex_lock_command}}; mode "default"; {{on_focus_workspace}} | |||||
bindsym e exec --no-startup-id {{eralitex_enable_screensaver_command}}; mode "default"; {{on_focus_workspace}} | |||||
bindsym d exec --no-startup-id {{eralitex_disable_screensaver_command}}; mode "default"; {{on_focus_workspace}} | |||||
bindsym b exec --no-startup-id xsetroot -solid black; mode "default"; {{on_focus_workspace}} | |||||
bindsym Shift+R exec --no-startup-id {{eralitex_reboot_command}}; mode "default"; {{on_focus_workspace}} | |||||
bindsym Shift+P exec --no-startup-id {{eralitex_poweroff_command}}; mode "default"; {{on_focus_workspace}} | |||||
# back to normal: Escape | |||||
bindsym Escape mode "default"; {{on_focus_workspace}} | |||||
} | |||||
### Timer | |||||
mode "timer" { | |||||
bindsym a exec "{{eralitex_directory}}/bin/timer activity"; mode "default"; {{on_focus_workspace}} | |||||
bindsym e exec "{{eralitex_directory}}/bin/timer end"; mode "default"; {{on_focus_workspace}} | |||||
bindsym u exec "{{eralitex_directory}}/bin/timer update"; mode "default"; {{on_focus_workspace}} | |||||
# back to normal: Escape | |||||
bindsym Escape mode "default"; {{on_focus_workspace}} | |||||
} | |||||
### Clipboard | |||||
mode "clipboard" { | |||||
# back to normal: Escape | |||||
bindsym Escape mode "default" | |||||
} | |||||
### Layout | |||||
# set default layout to tabbed | |||||
workspace_layout tabbed | |||||
mode "layout" { | |||||
bindsym s layout stacking; mode "default"; | |||||
bindsym t layout tabbed; mode "default"; | |||||
bindsym e layout toggle split; mode "default"; | |||||
bindsym h layout splith; mode "default" | |||||
bindsym v layout splitv; mode "default" | |||||
bindsym b mode bar | |||||
# back to normal: Escape | |||||
bindsym Escape mode "default" | |||||
} | |||||
mode "bar" { | |||||
bindsym h bar mode hide; mode "default" | |||||
bindsym d bar mode dock; mode "default" | |||||
# back to normal: Escape | |||||
bindsym Escape mode "default" | |||||
} | |||||
### Move mode | |||||
mode "move" { | |||||
# move window | |||||
bindsym Left move left | |||||
bindsym $left move left | |||||
bindsym Down move down | |||||
bindsym $down move down | |||||
bindsym Up move up | |||||
bindsym $up move up | |||||
bindsym Right move right | |||||
bindsym $right move right | |||||
# move window to workspace | |||||
{% for ws in eralitex_numbered_workspace_keymaps %} | |||||
bindsym {{ws.keysym}} move container to workspace "{{ws.workspace}}"; mode "default" | |||||
{% endfor %} | |||||
bindsym w exec fish -c "i3-msg move container to workspace (i3-msg -t get_workspaces | jq --raw-output '.[]|select(.num == -1).name' | rofi -dmenu -p 'move to workspace' )"; mode "default" | |||||
bindsym ssharp move scratchpad | |||||
# move workspace to output | |||||
bindsym Shift+Left move workspace to output left | |||||
bindsym Shift+$left move workspace to output left | |||||
bindsym Shift+Down move workspace to output down | |||||
bindsym Shift+$down move workspace to output down | |||||
bindsym Shift+Up move workspace to output up | |||||
bindsym Shift+$up move workspace to output up | |||||
bindsym Shift+Right move workspace to output right | |||||
bindsym Shift+$right move workspace to output right | |||||
bindsym o exec fish -c "i3-msg move workspace to output ( i3-msg -t get_outputs | jq --raw-output '.[]|select(.active == true).name' | rofi -dmenu -p 'move workspace to output' )"; mode "default" | |||||
bindsym p move workspace to output primary; mode "default" | |||||
# back to normal: Escape | |||||
bindsym Escape mode "default" | |||||
} | |||||
### Resize window mode | |||||
# resize window (you can also use the mouse for that) | |||||
mode "resize" { | |||||
# These bindings trigger as soon as you enter the resize mode | |||||
# Pressing left will shrink the window’s width. | |||||
bindsym Left resize shrink width 10 px or 10 ppt | |||||
bindsym $left resize shrink width 10 px or 10 ppt | |||||
# Pressing down will grow the window’s height. | |||||
bindsym Down resize grow height 10 px or 10 ppt | |||||
bindsym $down resize grow height 10 px or 10 ppt | |||||
# Pressing up will shrink the window’s height. | |||||
bindsym Up resize shrink height 10 px or 10 ppt | |||||
bindsym $up resize shrink height 10 px or 10 ppt | |||||
# Pressing right will grow the window’s width. | |||||
bindsym Right resize grow width 10 px or 10 ppt | |||||
bindsym $right resize grow width 10 px or 10 ppt | |||||
bindsym 1 resize set 10 ppt 10 ppt; mode "default" | |||||
bindsym 2 resize set 20 ppt 20 ppt; mode "default" | |||||
bindsym 3 resize set 30 ppt 30 ppt; mode "default" | |||||
bindsym 4 resize set 40 ppt 40 ppt; mode "default" | |||||
bindsym 5 resize set 50 ppt 50 ppt; mode "default" | |||||
bindsym 6 resize set 60 ppt 60 ppt; mode "default" | |||||
bindsym 7 resize set 70 ppt 70 ppt; mode "default" | |||||
bindsym 8 resize set 80 ppt 80 ppt; mode "default" | |||||
bindsym 9 resize set 90 ppt 90 ppt; mode "default" | |||||
bindsym 0 resize set 100 ppt 100 ppt; mode "default" | |||||
bindsym v resize set 640 480; mode "default" | |||||
bindsym y resize set 870 628; mode "default" | |||||
# back to normal: Escape | |||||
bindsym Escape mode "default" | |||||
} | |||||
### Bar | |||||
bar { | |||||
position top | |||||
strip_workspace_numbers yes | |||||
tray_output primary | |||||
status_command "i3blocks -c {{eralitex_directory}}/{{item}}/i3blocks.config" | |||||
colors { | |||||
background #000000 | |||||
statusline #ffffff | |||||
separator #666666 | |||||
# <colorclass> <border> <background> <text> | |||||
{% if item == "desktop" %} | |||||
# lila: Farbton 274 | |||||
focused_workspace #774C99 #552877 #ffffff | |||||
{% endif %} | |||||
{% if item == "vdesk" %} | |||||
# grün: Farbton 110 | |||||
focused_workspace #4D994C #357728 #ffffff | |||||
{% endif %} | |||||
{% if item == "presentation" %} | |||||
# gelb: Farbton 60 | |||||
focused_workspace #99994C #777728 #ffffff | |||||
{% endif %} | |||||
active_workspace #333333 #696969 #ffffff | |||||
inactive_workspace #333333 #222222 #888888 | |||||
urgent_workspace #2f343a #900000 #ffffff | |||||
binding_mode #2f343a #900000 #ffffff | |||||
} | |||||
} | |||||
### Design | |||||
# class border backgr. text indicator child_border | |||||
{% if item == "desktop" %} | |||||
# lila: Farbton 274 | |||||
client.focused #784C99 #552877 #ffffff #9E2EF4 #552877 | |||||
{% endif %} | |||||
{% if item == "vdesk" %} | |||||
# grün: Farbton 110 | |||||
client.focused #59994C #357728 #ffffff #4FF42E #357728 | |||||
{% endif %} | |||||
{% if item == "presentation" %} | |||||
# gelb: Farbton 60 | |||||
client.focused #99994C #777728 #ffffff #F4F42E #777728 | |||||
{% endif %} | |||||
client.focused_inactive #333333 #6A6A6A #ffffff #505050 #6A6A6A | |||||
client.unfocused #333333 #222222 #888888 #2E2E2E #222222 | |||||
client.urgent #2f343a #900000 #ffffff #900000 #900000 | |||||
client.placeholder #000000 #0c0c0c #ffffff #000000 #0c0c0c | |||||
client.background #ffffff | |||||
default_border normal | |||||
hide_edge_borders both | |||||
default_floating_border normal | |||||
### general settings | |||||
focus_on_window_activation urgent | |||||
### Application specific rule | |||||
for_window [class="^Vncviewer$"] border none | |||||
for_window [window_role="^About$"] floating enable | |||||
for_window [class="^Pavu"] floating enable | |||||
for_window [class="^Paman$"] floating enable | |||||
for_window [class="^Blueman"] floating enable | |||||
for_window [class="^URxvt$" title="^tmux-workspace$"] border none | |||||
### Autostart | |||||
exec "{{eralitex_terminal}}" | |||||
{% if item == "desktop" %} | |||||
exec --no-startup-id "{{eralitex_directory}}/bin/i3-watchers" | |||||
{% endif %} | |||||
### free keys | |||||
# $mod+i | |||||
# $mod+j | |||||
# $mod+k | |||||
# $mod+l | |||||
# $mod+n | |||||
# $mod+o | |||||
# $mod+u | |||||
# $mod+adiaeresis | |||||
# $mod+odiaeresis | |||||
# $mod+udiaeresis | |||||
# $mod+comma | |||||
# $mod+period | |||||
# $mod+numbersign | |||||
# $mod+Home | |||||
# $mod+End | |||||
# $mod+Pause | |||||
# $mod+Delete | |||||
# $mod+Insert | |||||
# $mod+Print | |||||
# $mod+Scroll_Lock | |||||
# $mod+less |
@@ -0,0 +1,108 @@ | |||||
{{ ansible_managed | comment }} | |||||
# i3blocks config file | |||||
# | |||||
# Please see man i3blocks for a complete reference! | |||||
# The man page is also hosted at http://vivien.github.io/i3blocks | |||||
# | |||||
# List of valid properties: | |||||
# | |||||
# align | |||||
# color | |||||
# command | |||||
# full_text | |||||
# instance | |||||
# interval | |||||
# label | |||||
# min_width | |||||
# name | |||||
# separator | |||||
# separator_block_width | |||||
# short_text | |||||
# signal | |||||
# urgent | |||||
# Global properties | |||||
# | |||||
# The top properties below are applied to every block, but can be overridden. | |||||
# Each block command defaults to the script name to avoid boilerplate. | |||||
command=/usr/share/i3blocks/$BLOCK_NAME | |||||
separator_block_width=15 | |||||
markup=none | |||||
{% if eralitex_with_activity %} | |||||
# activity | |||||
[activity] | |||||
command=/opt/activity/i3blocks-activity | |||||
interval=persist | |||||
markup=pango | |||||
{% endif %} | |||||
# hostinfo | |||||
[hostinfo] | |||||
command=echo "$USER@`hostname -s`" | |||||
interval=once | |||||
# Load Average | |||||
[load_average] | |||||
interval=10 | |||||
# CPU usage | |||||
# | |||||
# The script may be called with -w and -c switches to specify thresholds, | |||||
# see the script for details. | |||||
#[cpu_usage] | |||||
#label=CPU | |||||
#interval=10 | |||||
#min_width=CPU: 100.00% | |||||
# Memory usage | |||||
# | |||||
# The type defaults to "mem" if the instance is not specified. | |||||
[memory] | |||||
label=MEM | |||||
separator=false | |||||
interval=30 | |||||
[memory] | |||||
label=SWAP | |||||
instance=swap | |||||
interval=30 | |||||
# Disk usage | |||||
# | |||||
# The directory defaults to $HOME if the instance is not specified. | |||||
# The script may be called with a optional argument to set the alert | |||||
# (defaults to 10 for 10%). | |||||
#[disk] | |||||
#label=HOME | |||||
#instance=/mnt/data | |||||
#interval=30 | |||||
# Battery indicator | |||||
# | |||||
# The battery instance defaults to 0. | |||||
[battery] | |||||
#label=BAT | |||||
label=⚡ | |||||
#instance=1 | |||||
interval=30 | |||||
# Volume indicator | |||||
# | |||||
# The first parameter sets the step (and units to display) | |||||
# The second parameter overrides the mixer selection | |||||
# See the script for details. | |||||
[volume] | |||||
#label=VOL | |||||
label=♪ | |||||
instance=Master | |||||
#instance=PCM | |||||
interval=once | |||||
signal=10 | |||||
# Date Time | |||||
# | |||||
[time] | |||||
command=date '+%Y-%m-%d W%V %a %H:%M %Z' | |||||
interval=5 |
@@ -0,0 +1,22 @@ | |||||
#!/usr/bin/fish | |||||
# keymap | |||||
setxkbmap de | |||||
xmodmap {{eralitex_directory}}/Xmodmap | |||||
setxkbmap -option caps:hyper | |||||
xmodmap {{eralitex_directory}}/Xmodmap | |||||
# background | |||||
xsetroot -solid black | |||||
{% if eralitex_background_image is defined %} | |||||
{{eralitex_background_command}} | |||||
{% endif %} | |||||
# urxvt config | |||||
xrdb -merge {{eralitex_directory}}/urxvt.Xresources | |||||
# rofi config | |||||
rofi -theme {{eralitex_directory}}/{{item}}/rofi.theme -dump-xresources | xrdb -merge | |||||
# screensaver settings | |||||
/usr/local/bin/screensaver-settings |
@@ -0,0 +1,148 @@ | |||||
/****************************************************************************** | |||||
* ROFI Color theme | |||||
* User: Rasi | |||||
* Copyright: Rasmus Steinke | |||||
******************************************************************************/ | |||||
* { | |||||
border-color: #333333; | |||||
separatorcolor: #6A6A6A; | |||||
foreground: #888888; | |||||
input-foreground: #ffffff; | |||||
normal-foreground: #888888; | |||||
urgent-foreground: #ffffff; | |||||
active-foreground: #ffffff; | |||||
selected-normal-foreground: #ffffff; | |||||
selected-urgent-foreground: #ffffff; | |||||
selected-active-foreground: #ffffff; | |||||
background-color: #222222; | |||||
background: #222222; | |||||
normal-background: #222222; | |||||
urgent-background: #900000; | |||||
active-background: #6A6A6A; | |||||
selected-urgent-background: #2f343a; | |||||
{% if item == "desktop" %} | |||||
selected-normal-background: #552877; | |||||
selected-active-background: #784C99; | |||||
{% endif %} | |||||
{% if item == "vdesk" %} | |||||
selected-normal-background: #357728; | |||||
selected-active-background: #59994C; | |||||
{% endif %} | |||||
{% if item == "presentation" %} | |||||
selected-normal-background: #99994C; | |||||
selected-active-background: #777728; | |||||
{% endif %} | |||||
spacing: 2; | |||||
font: "Terminus 12"; | |||||
} | |||||
#window { | |||||
background-color: @background; | |||||
border: 1; | |||||
padding: 5; | |||||
} | |||||
#mainbox { | |||||
border: 0; | |||||
padding: 0; | |||||
} | |||||
#message { | |||||
border: 1px dash 0px 0px ; | |||||
border-color: @separatorcolor; | |||||
padding: 1px ; | |||||
} | |||||
#textbox { | |||||
text-color: @input-foreground; | |||||
} | |||||
#listview { | |||||
fixed-height: 0; | |||||
border: 1px dash 0px 0px ; | |||||
border-color: @separatorcolor; | |||||
spacing: 2px ; | |||||
scrollbar: true; | |||||
padding: 2px 0px 0px ; | |||||
} | |||||
#element { | |||||
border: 0; | |||||
padding: 1px ; | |||||
} | |||||
#element.normal.normal { | |||||
background-color: @normal-background; | |||||
text-color: @normal-foreground; | |||||
} | |||||
#element.normal.urgent { | |||||
background-color: @urgent-background; | |||||
text-color: @urgent-foreground; | |||||
} | |||||
#element.normal.active { | |||||
background-color: @active-background; | |||||
text-color: @active-foreground; | |||||
} | |||||
#element.selected.normal { | |||||
background-color: @selected-normal-background; | |||||
text-color: @selected-normal-foreground; | |||||
} | |||||
#element.selected.urgent { | |||||
background-color: @selected-urgent-background; | |||||
text-color: @selected-urgent-foreground; | |||||
} | |||||
#element.selected.active { | |||||
background-color: @selected-active-background; | |||||
text-color: @selected-active-foreground; | |||||
} | |||||
#element.alternate.normal { | |||||
background-color: @normal-background; | |||||
text-color: @normal-foreground; | |||||
} | |||||
#element.alternate.urgent { | |||||
background-color: @urgent-background; | |||||
text-color: @urgent-foreground; | |||||
} | |||||
#element.alternate.active { | |||||
background-color: @active-background; | |||||
text-color: @active-foreground; | |||||
} | |||||
#scrollbar { | |||||
width: 4px ; | |||||
border: 0; | |||||
handle-width: 8px ; | |||||
padding: 0; | |||||
} | |||||
#sidebar { | |||||
border: 1px dash 0px 0px ; | |||||
border-color: @separatorcolor; | |||||
} | |||||
#button.selected { | |||||
background-color: @selected-normal-background; | |||||
text-color: @selected-normal-foreground; | |||||
} | |||||
#inputbar { | |||||
spacing: 0; | |||||
text-color: @normal-foreground; | |||||
padding: 1px ; | |||||
} | |||||
#case-indicator { | |||||
spacing: 0; | |||||
text-color: @normal-foreground; | |||||
} | |||||
#entry { | |||||
spacing: 0; | |||||
text-color: @input-foreground; | |||||
} | |||||
#prompt { | |||||
spacing: 0; | |||||
text-color: @normal-foreground; | |||||
} | |||||
#inputbar { | |||||
children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; | |||||
} | |||||
#textbox-prompt-colon { | |||||
expand: false; | |||||
str: ":"; | |||||
margin: 0px 0.3em 0em 0em ; | |||||
text-color: @normal-foreground; | |||||
} |
@@ -0,0 +1,34 @@ | |||||
! set font to Terminus | |||||
urxvt*font: xft:Terminus:pixelsize=14 | |||||
urxvt*boldFont: xft:Terminus:pixelsize=14 | |||||
! set colors | |||||
URxvt*background: black | |||||
URxvt*foreground: white | |||||
! save number lines in the scrollback buffer | |||||
URxvt.saveLines: 10000 | |||||
! disable scrollbar | |||||
URxvt*scrollBar: false | |||||
! do not scroll with output | |||||
URxvt*scrollTtyOutput: false | |||||
! scroll in relation to buffer (with mouse scroll or Shift+Page Up) | |||||
URxvt*scrollWithBuffer: true | |||||
! scroll back to the bottom on keypress | |||||
URxvt*scrollTtyKeypress: true | |||||
! scrollback buffer in secondary screen | |||||
URxvt.secondaryScreen: 1 | |||||
URxvt.secondaryScroll: 0 | |||||
{% if not ansible_lsb.id == "Raspbian" %} | |||||
! fake transparency | |||||
urxvt*transparent: true | |||||
urxvt*shading: 30 | |||||
! https://bbs.archlinux.org/viewtopic.php?id=222070 | |||||
URxvt*ineheritPixmap: true | |||||
{% endif %} |
@@ -0,0 +1,30 @@ | |||||
#!/usr/bin/fish | |||||
{{ ansible_managed | comment }} | |||||
# set PATH so it includes users | |||||
# private bin directory if it exists | |||||
if test -d "$HOME/bin" | |||||
set -x PATH "$HOME/bin:$PATH" | |||||
end | |||||
# reload script | |||||
source {{eralitex_directory}}/{{item}}/reload | |||||
{% if item != "vdesk" %} | |||||
blueman-applet & | |||||
pasystray & | |||||
nm-applet & | |||||
{% endif %} | |||||
{% if item != "presentation" and item != "vdesk" %} | |||||
/usr/local/bin/screensaver-start & | |||||
{% endif %} | |||||
{% if item == "presentation" %} | |||||
unclutter & | |||||
{% endif %} | |||||
exec /usr/bin/i3 -c {{eralitex_directory}}/{{item}}/i3.config |
@@ -0,0 +1,119 @@ | |||||
eralitex_profiles: | |||||
- desktop | |||||
- vdesk | |||||
- presentation | |||||
eralitex_numbered_workspace_keymaps: | |||||
- keysym: 1 | |||||
workspace: 1 | |||||
- keysym: 2 | |||||
workspace: 2 | |||||
- keysym: 3 | |||||
workspace: 3 | |||||
- keysym: 4 | |||||
workspace: 4 | |||||
- keysym: 5 | |||||
workspace: 5 | |||||
- keysym: 6 | |||||
workspace: 6 | |||||
- keysym: 7 | |||||
workspace: 7 | |||||
- keysym: 8 | |||||
workspace: 8 | |||||
- keysym: 9 | |||||
workspace: 9 | |||||
- keysym: 0 | |||||
workspace: 10 | |||||
- keysym: F1 | |||||
workspace: 11 | |||||
- keysym: F2 | |||||
workspace: 12 | |||||
- keysym: F3 | |||||
workspace: 13 | |||||
- keysym: F4 | |||||
workspace: 14 | |||||
- keysym: F5 | |||||
workspace: 15 | |||||
- keysym: F6 | |||||
workspace: 16 | |||||
- keysym: F7 | |||||
workspace: 17 | |||||
- keysym: F8 | |||||
workspace: 18 | |||||
- keysym: F9 | |||||
workspace: 19 | |||||
- keysym: F10 | |||||
workspace: 20 | |||||
- keysym: F11 | |||||
workspace: 21 | |||||
- keysym: F12 | |||||
workspace: 22 | |||||
eralitex_letter_workspace_keymaps: | |||||
- keysym: a | |||||
workspace: 23:a | |||||
- keysym: b | |||||
workspace: 24:b | |||||
- keysym: c | |||||
workspace: 25:c | |||||
- keysym: d | |||||
workspace: 26:d | |||||
- keysym: e | |||||
workspace: 27:e | |||||
- keysym: f | |||||
workspace: 28:f | |||||
- keysym: g | |||||
workspace: 29:g | |||||
- keysym: h | |||||
workspace: 30:h | |||||
- keysym: i | |||||
workspace: 31:i | |||||
- keysym: j | |||||
workspace: 32:j | |||||
- keysym: k | |||||
workspace: 33:k | |||||
- keysym: l | |||||
workspace: 34:l | |||||
- keysym: m | |||||
workspace: 35:m | |||||
- keysym: n | |||||
workspace: 36:n | |||||
- keysym: o | |||||
workspace: 37:o | |||||
- keysym: p | |||||
workspace: 38:p | |||||
- keysym: q | |||||
workspace: 39:q | |||||
- keysym: r | |||||
workspace: 40:r | |||||
# - keysym: s | |||||
# workspace: 41:s | |||||
# - keysym: t | |||||
# workspace: 42:t | |||||
- keysym: u | |||||
workspace: 43:u | |||||
- keysym: v | |||||
workspace: 44:v | |||||
#- keysym: w | |||||
# workspace: 45:w | |||||
- keysym: x | |||||
workspace: 46:x | |||||
- keysym: y | |||||
workspace: 47:y | |||||
- keysym: z | |||||
workspace: 48:z | |||||
- keysym: adiaeresis | |||||
workspace: 49:ä | |||||
- keysym: odiaeresis | |||||
workspace: 50:ö | |||||
- keysym: udiaeresis | |||||
workspace: 51:ü | |||||
- keysym: ssharp | |||||
workspace: 52:ß | |||||
eralitex_points_up_command: fish -c "echo (expr (cat ~/.eralitex/points) + 1 > ~/.eralitex/points) (i3-nagbar -m (cat ~/.eralitex/points)\ €)" | |||||
eralitex_points_down_command: fish -c "echo (expr (cat ~/.eralitex/points) - 1 > ~/.eralitex/points) (i3-nagbar -m (cat ~/.eralitex/points)\ €)" | |||||
eralitex_background_image_path: "{{eralitex_directory}}/backgrounds/{{eralitex_background_image|basename}}" | |||||
eralitex_background_command: feh --no-fehbg --bg-fill {{eralitex_background_image_path}} |