diff --git a/.config/dmenu_script/config b/.config/dmenu_script/config new file mode 100644 index 0000000..6fad7e6 --- /dev/null +++ b/.config/dmenu_script/config @@ -0,0 +1,5 @@ +scripts_root=$HOME/Scripts/dmenu_script/ + +run () { + "$1" | rofi -dmenu -i +} diff --git a/.config/dunst/dunstrc b/.config/dunst/dunstrc new file mode 100644 index 0000000..48d7e66 --- /dev/null +++ b/.config/dunst/dunstrc @@ -0,0 +1,47 @@ +[global] + font = "Google Sans 10" + markup = yes + format = "%s\n%b" + sort = yes + indicate_hidden = yes + alignment = center + bounce_freq = 0 + show_age_threshold = 60 + word_wrap = yes + ignore_newline = no + geometry = "300x50-12+60" + transparency = 20 + idle_threshold = 120 + monitor = 0 + follow = mouse + sticky_history = yes + line_height = 0 + separator_height = 1 + padding = 8 + horizontal_padding = 8 + separator_color = auto + startup_notification = false + frame_width = 1 + frame_color = "#383838" + + +[shortcuts] + close = ctrl+space + close_all = ctrl+shift+space + history = ctrl+grave + context = ctrl+shift+period + +[urgency_low] + background = "#181818" + foreground = "#FFFFFF" + timeout = 5 + +[urgency_normal] + background = "#181818" + foreground = "#FFFFFF" + timeout = 20 + +[urgency_critical] + background = "#181818" + foreground = "#FFFFFF" + timeout = 0 diff --git a/.config/dunst/dunstrc.template b/.config/dunst/dunstrc.template new file mode 100644 index 0000000..9732450 --- /dev/null +++ b/.config/dunst/dunstrc.template @@ -0,0 +1,47 @@ +[global] + font = "Open Sans 10" + markup = yes + format = "%s\n%b" + sort = yes + indicate_hidden = yes + alignment = center + bounce_freq = 0 + show_age_threshold = 60 + word_wrap = yes + ignore_newline = no + geometry = "300x50-12+60" + transparency = 20 + idle_threshold = 120 + monitor = 0 + follow = mouse + sticky_history = yes + line_height = 0 + separator_height = 1 + padding = 8 + horizontal_padding = 8 + separator_color = auto + startup_notification = false + frame_width = 1 + frame_color = "#383838" + + +[shortcuts] + close = ctrl+space + close_all = ctrl+shift+space + history = ctrl+grave + context = ctrl+shift+period + +[urgency_low] + background = ${bg-color} + foreground = ${fg-color} + timeout = 5 + +[urgency_normal] + background = ${bg-color} + foreground = ${fg-color} + timeout = 20 + +[urgency_critical] + background = ${bg-color} + foreground = ${fg-color} + timeout = 0 diff --git a/.config/i3/.config.un~ b/.config/i3/.config.un~ new file mode 100644 index 0000000..a1f1c7a Binary files /dev/null and b/.config/i3/.config.un~ differ diff --git a/.config/i3/.exit.sh.un~ b/.config/i3/.exit.sh.un~ new file mode 100755 index 0000000..ce3f170 Binary files /dev/null and b/.config/i3/.exit.sh.un~ differ diff --git a/.config/i3/.factorio.sh.un~ b/.config/i3/.factorio.sh.un~ new file mode 100755 index 0000000..a50847f Binary files /dev/null and b/.config/i3/.factorio.sh.un~ differ diff --git a/.config/i3/.mmc.sh.un~ b/.config/i3/.mmc.sh.un~ new file mode 100755 index 0000000..b24b1de Binary files /dev/null and b/.config/i3/.mmc.sh.un~ differ diff --git a/.config/i3/.music.sh.un~ b/.config/i3/.music.sh.un~ new file mode 100755 index 0000000..fb76276 Binary files /dev/null and b/.config/i3/.music.sh.un~ differ diff --git a/.config/i3/auto-xrandr b/.config/i3/auto-xrandr new file mode 100755 index 0000000..6ffb2a1 --- /dev/null +++ b/.config/i3/auto-xrandr @@ -0,0 +1,51 @@ +#!/bin/bash + +# preferred order of monitors (highest to lowest priority) +order=(DP HDMI) +# preferred position of monitors (relative to previsous monitor in $order) +position=${1:-above} +# maximum number of monitors to use (only names from $order will be used) +max=10 + +if [[ "$1" = -h || "$1" = --help ]]; then + echo "Usage: $(basename "$0") [position]" >&2 + exit +fi + +connected=($(xrandr | grep ' connected ' | cut -f 1 -d ' ')) +options=() + +for choice in ${order[@]}; do + # iterate over the indices of the connected monitors + for monitor in ${!connected[@]}; do + if [[ ${connected[$monitor]} =~ $choice ]]; then + if [[ ${#options[@]} -eq 0 ]]; then + # set first match from $order as primary monitor + options=(--output ${connected[$monitor]} --auto --primary) + else + # put monitor in $position of the $last one + options=(${options[@]} --output ${connected[$monitor]} --auto --$position $last) + fi + # remember this monitor to position the next one + last=${connected[$monitor]} + # delete this monitor from the list of connected monitors + unset connected[$monitor] + connected=(${connected[@]}) + # count down the number of monitors that is desired at most + ((max--)) + if [[ $max -eq 0 ]]; then + break 2 + else + break + fi + fi + done +done + +# let xrandr turn all disconnected monitors off (just in case) and also all +# connected monitors that where above the maximum number of desired monitors +for disconnected in $(xrandr | grep disconnected | cut -f 1 -d ' ') ${connected[@]}; do + options=(${options[@]} --output $disconnected --off) +done + +xrandr --verbose ${options[@]} diff --git a/.config/i3/autorandr b/.config/i3/autorandr new file mode 100755 index 0000000..c2c3384 --- /dev/null +++ b/.config/i3/autorandr @@ -0,0 +1,290 @@ +#!/bin/sh +# +# Automatically select a display configuration based on connected devices +# +# Stefan Tomanek +# +# How to use: +# +# Save your current display configuration and setup with: +# $ autorandr --save mobile +# +# Connect an additional display, configure your setup and save it: +# $ autorandr --save docked +# +# Now autorandr can detect which hardware setup is active: +# $ autorandr +# mobile +# docked (detected) +# +# To automatically reload your setup, just append --change to the command line +# +# To manually load a profile, you can use the --load option. +# +# autorandr tries to avoid reloading an identical configuration. To force the +# (re)configuration, apply --force. +# +# To prevent a profile from being loaded, place a script call "block" in its +# directory. The script is evaluated before the screen setup is inspected, and +# in case of it returning a value of 0 the profile is skipped. This can be used +# to query the status of a docking station you are about to leave. +# +# If no suitable profile can be identified, the current configuration is kept. +# To change this behaviour and switch to a fallback configuration, specify +# --default +# +# Another script called "postswitch "can be placed in the directory +# ~/.autorandr as well as in all profile directories: The scripts are executed +# after a mode switch has taken place and can notify window managers or other +# applications about it. +# +# +# While the script uses xrandr by default, calling it by the name "autodisper" +# or "auto-disper" forces it to use the "disper" utility, which is useful for +# controlling nvidia chipsets. The formats for fingerprinting the current setup +# and saving/loading the current configuration are adjusted accordingly. + +XRANDR=/usr/bin/xrandr +DISPER=/usr/bin/disper +XDPYINFO=/usr/bin/xdpyinfo +PROFILES=~/.autorandr/ +CONFIG=~/.autorandr.conf + +CHANGE_PROFILE=0 +FORCE_LOAD=0 +DEFAULT_PROFILE="" +SAVE_PROFILE="" + +FP_METHODS="setup_fp_xrandr_edid setup_fp_sysfs_edid" +CURRENT_CFG_METHOD="current_cfg_xrandr" +LOAD_METHOD="load_cfg_xrandr" + +SCRIPTNAME="$(basename $0)" +# when called as autodisper/auto-disper, we assume different defaults +if [ "$SCRIPTNAME" = "auto-disper" ] || [ "$SCRIPTNAME" = "autodisper" ]; then + echo "Assuming disper defaults..." >&2 + FP_METHODS="setup_fp_disper" + CURRENT_CFG_METHOD="current_cfg_disper" + LOAD_METHOD="load_cfg_disper" +fi + +if [ -f $CONFIG ]; then + echo "Loading configuration from '$CONFIG'" >&2 + . $CONFIG +fi + +setup_fp_xrandr_edid() { + $XRANDR -q --verbose | awk ' + /^[^ ]+ (dis)?connected / { DEV=$1; } + $1 ~ /^[a-f0-9]+$/ { ID[DEV] = ID[DEV] $1 } + END { for (X in ID) { print X " " ID[X]; } }' +} + +setup_fp_sysfs_edid() { + # xrandr triggers the reloading of EDID data + $XRANDR -q > /dev/null + # hash the EDIDs of all _connected_ devices + for P in /sys/class/drm/card*-*/; do + # nothing found + [ ! -d "$P" ] && continue + if grep -q "^connected$" < "${P}status"; then + echo -n "$(basename "$P") " + md5sum ${P}edid | awk '{print $1}' + fi + done +} + +setup_fp_disper() { + $DISPER -l | grep '^display ' +} + +setup_fp() { + local FP=""; + for M in $FP_METHODS; do + FP="$($M)" + if [ -n "$FP" ]; then + break + fi + done + if [ -z "$FP" ]; then + echo "Unable to fingerprint display configuration" >&2 + return + fi + echo "$FP" +} + +current_cfg_xrandr() { + local PRIMARY_SETUP=""; + if [ -x "$XDPYINFO" ]; then + PRIMARY_SETUP="$($XDPYINFO -ext XINERAMA | awk '/^ head #0:/ {printf $3 $5}')" + fi + $XRANDR -q | awk -v primary_setup="${PRIMARY_SETUP}" ' + # display is connected and has a mode + /^[^ ]+ connected [^(]/ { + split($3, A, "+"); + print "output "$1; + print "mode "A[1]; + print "pos "A[2]"x"A[3]; + if ($4 !~ /^\(/) { + print "rotate "$4; + } + if (A[1] A[2] "," A[3] == primary_setup) + print "primary"; + next; + } + # disconnected or disabled displays + /^[^ ]+ (dis)?connected / || + /^[^ ]+ unknown connection / { + print "output "$1; + print "off"; + next; + }' +} + +current_cfg_disper() { + $DISPER -p +} + +current_cfg() { + $CURRENT_CFG_METHOD; +} + +blocked() { + local PROFILE="$1" + [ ! -x "$PROFILES/$PROFILE/block" ] && return 1 + + "$PROFILES/$PROFILE/block" "$PROFILE" +} + +config_equal() { + local PROFILE="$1" + if [ "$(cat "$PROFILES/$PROFILE/config")" = "$(current_cfg)" ]; then + echo "Config already loaded" + return 0 + else + return 1 + fi +} + +load_cfg_xrandr() { + sed 's!^!--!' "$1" | xargs $XRANDR +} + +load_cfg_disper() { + $DISPER -i < "$1" +} + +load() { + local PROFILE="$1" + local CONF="$PROFILES/$PROFILE/config" + if [ -e "$CONF" ] ; then + echo " -> loading profile $PROFILE" + $LOAD_METHOD "$CONF" + + [ -x "$PROFILES/$PROFILE/postswitch" ] && \ + "$PROFILES/$PROFILE/postswitch" "$PROFILE" + [ -x "$PROFILES/postswitch" ] && \ + "$PROFILES/postswitch" "$PROFILE" + fi +} + +help() { + cat < save your current setup to profile +-l, --load load profile +-d, --default make profile the default profile +--force force (re)loading of a profile +--fingerprint fingerprint your current hardware setup +--config dump your current xrandr setup + + To prevent a profile from being loaded, place a script call "block" in its + directory. The script is evaluated before the screen setup is inspected, and + in case of it returning a value of 0 the profile is skipped. This can be used + to query the status of a docking station you are about to leave. + + If no suitable profile can be identified, the current configuration is kept. + To change this behaviour and switch to a fallback configuration, specify + --default . + + Another script called "postswitch "can be placed in the directory + ~/.autorandr as well as in any profile directories: The scripts are executed + after a mode switch has taken place and can notify window managers. + + When called by the name "autodisper" or "auto-disper", the script uses "disper" + instead of "xrandr" to detect, configure and save the display configuration. + +EOH + exit +} +# process parameters +OPTS=$(getopt -n autorandr -o s:l:d:cfh --long change,default:,save:,load:,force,fingerprint,config,help -- "$@") +if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi +eval set -- "$OPTS" + +while true; do + case "$1" in + -c|--change) CHANGE_PROFILE=1; shift ;; + -d|--default) DEFAULT_PROFILE="$2"; shift 2 ;; + -s|--save) SAVE_PROFILE="$2"; shift 2 ;; + -l|--load) LOAD_PROFILE="$2"; shift 2 ;; + -h|--help) help ;; + --force) FORCE_LOAD=1; shift ;; + --fingerprint) setup_fp; exit 0;; + --config) current_cfg; exit 0;; + --) shift; break ;; + *) echo "Error: $1"; exit 1;; + esac +done + +CURRENT_SETUP="$(setup_fp)" + +if [ -n "$SAVE_PROFILE" ]; then + echo "Saving current configuration as profile '${SAVE_PROFILE}'" + mkdir -p "$PROFILES/$SAVE_PROFILE" + echo "$CURRENT_SETUP" > "$PROFILES/$SAVE_PROFILE/setup" + $CURRENT_CFG_METHOD > "$PROFILES/$SAVE_PROFILE/config" + exit 0 +fi + +if [ -n "$LOAD_PROFILE" ]; then + CHANGE_PROFILE=1 FORCE_LOAD=1 load "$LOAD_PROFILE" + exit $? +fi + +for SETUP_FILE in $PROFILES/*/setup; do + if ! [ -e $SETUP_FILE ]; then + break + fi + PROFILE="$(basename $(dirname "$SETUP_FILE"))" + echo -n "$PROFILE" + + if blocked "$PROFILE"; then + echo " (blocked)" + continue + fi + + FILE_SETUP="$(cat "$PROFILES/$PROFILE/setup")" + if [ "$CURRENT_SETUP" = "$FILE_SETUP" ]; then + echo " (detected)" + if [ "$CHANGE_PROFILE" -eq 1 ]; then + if [ "$FORCE_LOAD" -eq 1 ] || ! config_equal "$PROFILE"; then + load "$PROFILE" + fi + fi + # found the profile, exit with success + exit 0 + else + echo "" + fi +done + +# we did not find the profile, load default +if [ -n "$DEFAULT_PROFILE" ]; then + echo "No suitable profile detected, falling back to $DEFAULT_PROFILE" + load "$DEFAULT_PROFILE" +fi +exit 1 diff --git a/.config/i3/config b/.config/i3/config new file mode 100644 index 0000000..2eb9b0e --- /dev/null +++ b/.config/i3/config @@ -0,0 +1,270 @@ +# This file has been auto-generated by i3-config-wizard(1). +# It will not be overwritten, so edit it as you like. +# Should you change your keyboard layout some time, delete +# this file and re-run i3-config-wizard(1). +# + +# i3 config file (v4) +# +# Please see https://i3wm.org/docs/userguide.html for a complete reference! + +set $mod Mod4 + +set_from_resource $bright i3wm.color2 #ff0000 +#set_from_resource $bg i3wm.color7 #ff0000 +set_from_resource $light i3wm.color4 #ff0000 +set_from_resource $fg i3wm.color4 #ff0000 +set_from_resource $bg i3wm.color3 #ff0000 + +set $bg-color #000000 +set $inactive-bg-color #2f343f +set $text-color #FFFFFF +set $inactive-text-color #676E7D +set $urgent-bg-color #E53935 +set $bordercolor #c5cbd6 +set $bg-highlight #556177 + + +gaps inner 10 +gaps outer 7 +gaps top -5 + +smart_gaps on + +set $mode_gaps Toggle gaps: (1) on (2) off +bindsym $mod+g mode "$mode_gaps" +mode "$mode_gaps" { + bindsym 1 mode "default", gaps inner all set 10, gaps outer all set 4, gaps top all set -5 + bindsym 2 mode "default", gaps inner all set 0, gaps outer all set 0 + bindsym Return mode "default" + bindsym Escape mode "default" +} + + +# Brightness + +bindsym XF86MonBrightnessUp exec --no-startup-id xbacklight -inc 5 +bindsym XF86MonBrightnessDown exec --no-startup-id xbacklight -dec 5 +bindsym Ctrl+XF86MonBrightnessUp exec --no-startup-id xbacklight -inc 1 +bindsym Ctrl+XF86MonBrightnessDown exec --no-startup-id xbacklight -dec 1 + +# Auto startup + +exec_always --no-startup-id xfce4-power-manager +#exec --no-startup-id xrandr | grep -q HDMI1 && xrandr --output eDP1 --auto --output HDMI1 --auto --above eDP1 + +# ! Lock Screen +#exec_always --no-startup-id xss-lock -- i3lock -i /home/daan/Pictures/wallpapers/wallpaper.png & +bindsym $mod+shift+x exec --no-startup-id i3lock -i $backgroud & + +exec_always --no-startup-id libinput-gestures-setup start +#exec_always --no-startup-id export QT_QPA_PLATFORMTHEME="qt5ct" +exec_always --no-startup-id /usr/lib/kdeconnectd & +exec_always --no-startup-id indicator-kdeconnect +#exec_always --no-startup-id nm-applet --agent +exec_always --no-startup-id ~/.config/i3/auto-xrandr +# +exec_always --no-startup-id ~/.config/compton/launch.sh +exec_always --no-startup-id ~/.config/polybar/launch.sh +#exec_always --no-startup-id /home/daan/.screenlayout/HDMI.sh +exec_always --no-startup-id ~/setbg.sh & +#exec_always --no-startup-id hsetroot -solid "#ffffff" +exec_always --no-startup-id dunst & +#exec_always --no-startup-id ~/.config/i3/oneko.sh +exec_always --no-startup-id ~/.config/tilda/launch.sh & +exec_always --no-startup-id touchegg & + +#bindsym $mod+w exec --no-startup-id guake-toggle & + + +# Application + +bindsym $mod+Shift+e exec --no-startup-id ~/.config/i3/exit.sh + +bindsym $mod+Shift+m exec --no-startup-id dmenu_script minecraft.sh + +bindsym $mod+Shift+f exec --no-startup-id dmenu_script factorio.sh + +bindsym $mod+t exec --no-startup-id ~/.config/i3/run.sh + +bindsym $mod+Shift+g exec --no-startup-id dmenu_script lutris.sh + +#exec_always --no-startup-id ~/.config/i3/rotate.sh + +bindsym $mod+Shift+p exec --no-startup-id systemctl --user restart music +bindsym $mod+Ctrl+p exec --no-startup-id systemctl --user stop music + +bindsym $mod+Shift+s exec --no-startup-id emacs +bindsym $mod+Shift+n exec networkmanager_dmenu + +# Rotation + +bindsym $mod+Ctrl+Shift+Down exec --no-startup-id ~/.config/i3/rotate.sh normal +bindsym $mod+Ctrl+Shift+Up exec --no-startup-id ~/.config/i3/rotate.sh bottom-up +bindsym $mod+Ctrl+Shift+Right exec --no-startup-id ~/.config/i3/rotate.sh left-up +bindsym $mod+Ctrl+Shift+Left exec --no-startup-id ~/.config/i3/rotate.sh right-up + +# window border size +new_window pixel 0 +new_float pixel 0 + +# default font +font pango:Open Sans 10 + +# Use Mouse+$mod to drag floating windows to their wanted position +floating_modifier $mod + +# start a terminal +bindsym $mod+Return exec termite + +# kill focused window +bindsym $mod+Shift+q kill + +# start rofi +bindsym $mod+d exec rofi -show run --no-startup-id + +# workspaces + +workspace 1 output eDP1 +workspace 2 output HDMI1 +workspace 3 output HDMI1 + +# change focus +bindsym $mod+j focus left +bindsym $mod+k focus down +bindsym $mod+l focus up +bindsym $mod+m focus right + +# alternatively, you can use the cursor keys: +bindsym $mod+Left focus left +bindsym $mod+Down focus down +bindsym $mod+Up focus up +bindsym $mod+Right focus right + +# move focused window +bindsym $mod+Shift+j move left +bindsym $mod+Shift+k move down +bindsym $mod+Shift+i move up +bindsym $mod+Shift+l move right + +bindsym $mod+Shift+Left move left +bindsym $mod+Shift+Down move down +bindsym $mod+Shift+Up move up +bindsym $mod+Shift+Right move right + +bindsym $mod+Control+Left workspace prev +bindsym $mod+Control+Right workspace next + +# split in horizontal orientation +bindsym $mod+h split h + +# split in vertical orientation +bindsym $mod+v split v + +# enter fullscreen mode for the focused container +bindsym $mod+f fullscreen toggle + +# toggle tiling / floating +bindsym $mod+Shift+space floating toggle + +# change focus between tiling / floating windows +bindsym $mod+space focus mode_toggle + +# focus the parent container +bindsym $mod+q focus parent + +# focus the child container +#bindsym $mod+d focus child + +# switch to workspace +bindsym $mod+1 workspace 1 +bindsym $mod+2 workspace 2 +bindsym $mod+3 workspace 3 +bindsym $mod+4 workspace 4 +bindsym $mod+5 workspace 5 +bindsym $mod+6 workspace 6 +bindsym $mod+7 workspace 7 +bindsym $mod+8 workspace 8 +bindsym $mod+9 workspace 9 +bindsym $mod+0 workspace 10 + +# move focused container to workspace +bindsym $mod+Shift+1 move container to workspace 1 +bindsym $mod+Shift+2 move container to workspace 2 +bindsym $mod+Shift+3 move container to workspace 3 +bindsym $mod+Shift+4 move container to workspace 4 +bindsym $mod+Shift+5 move container to workspace 5 +bindsym $mod+Shift+6 move container to workspace 6 +bindsym $mod+Shift+7 move container to workspace 7 +bindsym $mod+Shift+8 move container to workspace 8 +bindsym $mod+Shift+9 move container to workspace 9 +bindsym $mod+Shift+0 move container to workspace 10 + +bindsym $mod+Shift+greater move workspace to output up +bindsym $mod+Shift+less move workspace to output down + +# reload the configuration file +bindsym $mod+Shift+c reload +# restart i3 inplace (preserves your layout/session, can be used to upgrade i3) +bindsym $mod+Shift+r exec ~/.config/i3/auto-xrandr && i3-msg restart +# exit i3 (logs you out of your X session) +#bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'" + +# 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. + # Pressing right will grow the window’s width. + # Pressing up will shrink the window’s height. + # Pressing down will grow the window’s height. + bindsym j resize shrink width 10 px or 10 ppt + bindsym k resize grow height 10 px or 10 ppt + bindsym l resize shrink height 10 px or 10 ppt + bindsym m resize grow width 10 px or 10 ppt + + # same bindings, but for the arrow keys + bindsym Left resize shrink width 10 px or 10 ppt + bindsym Down resize grow height 10 px or 10 ppt + bindsym Up resize shrink height 10 px or 10 ppt + bindsym Right resize grow width 10 px or 10 ppt + + # back to normal: Enter or Escape + bindsym Return mode "default" + bindsym Escape mode "default" +} + +bindsym $mod+r mode "resize" + +# Pulse Audio controls +bindsym XF86AudioRaiseVolume exec --no-startup-id sh -c "pactl set-sink-mute 0 false && pactl set-sink-volume 0 +5%" +bindsym XF86AudioLowerVolume exec --no-startup-id sh -c "pactl set-sink-mute 0 false && pactl set-sink-volume 0 -5%" +bindsym XF86AudioMute exec --no-startup-id sh -c "pactl set-sink-mute 0 toggle" + + +# Workspace assignment + +assign [class="^code-oss$"] 3 +for_window [class="^code-oss$"] focus + +assign [window_role="browser"] 2 +for_window [window_role="browser"] focus + +## Plasma Integration +# Try to kill the wallpaper set by Plasma (it takes up the entire workspace and hides everythiing) +exec --no-startup-id wmctrl -c Plasma +for_window [title="Desktop — Plasma"] kill; floating enable; border none + +## Avoid tiling popups, dropdown windows from plasma +# for the first time, manually resize them, i3 will remember the setting for floating windows +for_window [class="plasmashell"] floating enable; +for_window [class="Plasma"] floating enable; border none +for_window [title="plasma-desktop"] floating enable; border none +for_window [title="win7"] floating enable; border none +for_window [class="krunner"] floating enable; border none +for_window [class="Kmix"] floating enable; border none +for_window [class="Klipper"] floating enable; border none +for_window [class="Plasmoidviewer"] floating enable; border none + + + diff --git a/.config/i3/config~ b/.config/i3/config~ new file mode 100644 index 0000000..bca8cdb --- /dev/null +++ b/.config/i3/config~ @@ -0,0 +1,214 @@ +# This file has been auto-generated by i3-config-wizard(1). +# It will not be overwritten, so edit it as you like. +# Should you change your keyboard layout some time, delete +# this file and re-run i3-config-wizard(1). +# + +# i3 config file (v4) +# +# Please see https://i3wm.org/docs/userguide.html for a complete reference! + +set $mod Mod1 + +set_from_resource $bright i3wm.color2 #ff0000 +#set_from_resource $bg i3wm.color7 #ff0000 +set_from_resource $light i3wm.color4 #ff0000 +set_from_resource $fg i3wm.color4 #ff0000 +set_from_resource $bg i3wm.color3 #ff0000 + +set $bg-color #000000 +set $inactive-bg-color #2f343f +set $text-color #FFFFFF +set $inactive-text-color #676E7D +set $urgent-bg-color #E53935 +set $bordercolor #c5cbd6 +set $bg-highlight #556177 + +# window border background text indicator +client.focused $bg $bg-color $text-color $fg $fg +client.unfocused $light $inactive-bg-color $inactive-text-color $light $light +client.focused_inactive $light $inactive-bg-color $inactive-text-color $light $light +client.urgent $strong $urgent-bg-color $text-color $strong $strong + +# resize gaps +mode "borders" { + + # ijkl keys + bindsym i gaps inner all plus 5 + bindsym k gaps inner all minus 5 + bindsym l gaps outer all plus 5 + bindsym j gaps outer all minus 5 + + # custom profiles 1,2,3,4 + bindsym 1 gaps inner all set 0; gaps outer all set 0 + bindsym 2 gaps inner all set 5; gaps outer all set 0 + bindsym 3 gaps inner all set 5; gaps outer all set 5 + bindsym 4 gaps inner all set 10; gaps outer all set 0 + bindsym 5 gaps inner all set 10; gaps outer all set 5 + bindsym 6 gaps inner all set 30; gaps outer all set 15 + bindsym 7 gaps inner all set 60; gaps outer all set 30 + + # enter : back, escape : reset + bindsym Return mode "default" + bindsym Escape mode "default"; gaps inner all set 10; gaps outer all set 5 +} + +# window border size +new_window pixel 2 +new_float pixel 2 + +# default font +font pango:DejaVu Sans Mono 10 + +gaps inner 10 +gaps outer 10 + + +# Font for window titles. Will also be used by the bar unless a different font +# is used in the bar {} block below. +#font pango:monospace 8 + +# This font is widely installed, provides lots of unicode glyphs, right-to-left +# text rendering and scalability on retina/hidpi displays (thanks to pango). +#font pango:DejaVu Sans Mono 8 + +# Before i3 v4.8, we used to recommend this one as the default: +# font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1 +# The font above is very space-efficient, that is, it looks good, sharp and +# clear in small sizes. However, its unicode glyph coverage is limited, the old +# X core fonts rendering does not support right-to-left and this being a bitmap +# font, it doesn’t scale on retina/hidpi displays. + +# Use Mouse+$mod to drag floating windows to their wanted position +floating_modifier $mod + +exec_always --no-startup-id ~/.config/compton/launch.sh +exec_always --no-startup-id ~/.config/polybar/launch.sh +exec_always --no-startup-id ~/.fehbg & + +# start a terminal +bindsym $mod+Return exec urxvt + +# kill focused window +bindsym $mod+Shift+a kill + +# start rofi (a program launcher) +bindsym $mod+d exec rofi -show run + +# There also is the (new) i3-dmenu-desktop which only displays applications +# shipping a .desktop file. It is a wrapper around dmenu, so you need that +# installed. +# bindsym $mod+d exec --no-startup-id i3-dmenu-desktop + +# change focus +bindsym $mod+j focus left +bindsym $mod+k focus down +bindsym $mod+l focus up +bindsym $mod+m focus right + +# alternatively, you can use the cursor keys: +bindsym $mod+Left focus left +bindsym $mod+Down focus down +bindsym $mod+Up focus up +bindsym $mod+Right focus right + +# move focused window +bindsym $mod+Shift+j move left +bindsym $mod+Shift+k move down +bindsym $mod+Shift+i move up +bindsym $mod+Shift+l move right + +# alternatively, you can use the cursor 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 + +# split in horizontal orientation +bindsym $mod+h split h + +# split in vertical orientation +bindsym $mod+v split v + +# enter fullscreen mode for the focused container +bindsym $mod+f fullscreen toggle + +# change container layout (stacked, tabbed, toggle split) +bindsym $mod+s layout stacking +bindsym $mod+z layout tabbed +bindsym $mod+e layout toggle split + +# toggle tiling / floating +bindsym $mod+Shift+space floating toggle + +# change focus between tiling / floating windows +bindsym $mod+space focus mode_toggle + +# focus the parent container +bindsym $mod+q focus parent + +# focus the child container +#bindsym $mod+d focus child + +# switch to workspace +bindsym $mod+ampersand workspace 1 +bindsym $mod+eacute workspace 2 +bindsym $mod+quotedbl workspace 3 +bindsym $mod+apostrophe workspace 4 +bindsym $mod+parenleft workspace 5 +bindsym $mod+section workspace 6 +bindsym $mod+egrave workspace 7 +bindsym $mod+exclam workspace 8 +bindsym $mod+ccedilla workspace 9 +bindsym $mod+agrave workspace 10 + +# move focused container to workspace +bindsym $mod+Shift+ampersand move container to workspace 1 +bindsym $mod+Shift+eacute move container to workspace 2 +bindsym $mod+Shift+quotedbl move container to workspace 3 +bindsym $mod+Shift+apostrophe move container to workspace 4 +bindsym $mod+Shift+5 move container to workspace 5 +bindsym $mod+Shift+section move container to workspace 6 +bindsym $mod+Shift+egrave move container to workspace 7 +bindsym $mod+Shift+exclam move container to workspace 8 +bindsym $mod+Shift+ccedilla move container to workspace 9 +bindsym $mod+Shift+agrave move container to workspace 10 + +# reload the configuration file +bindsym $mod+Shift+c reload +# restart i3 inplace (preserves your layout/session, can be used to upgrade i3) +bindsym $mod+Shift+r restart +# exit i3 (logs you out of your X session) +bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'" + +# 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. + # Pressing right will grow the window’s width. + # Pressing up will shrink the window’s height. + # Pressing down will grow the window’s height. + bindsym j resize shrink width 10 px or 10 ppt + bindsym k resize grow height 10 px or 10 ppt + bindsym l resize shrink height 10 px or 10 ppt + bindsym m resize grow width 10 px or 10 ppt + + # same bindings, but for the arrow keys + bindsym Left resize shrink width 10 px or 10 ppt + bindsym Down resize grow height 10 px or 10 ppt + bindsym Up resize shrink height 10 px or 10 ppt + bindsym Right resize grow width 10 px or 10 ppt + + # back to normal: Enter or Escape + bindsym Return mode "default" + bindsym Escape mode "default" +} + +bindsym $mod+r mode "resize" +# resize borders +bindsym $mod+b mode "borders" + +# Pulse Audio controls +bindsym XF86AudioRaiseVolume exec --no-startup-id amixer -D pulse sset Master 5%+ +bindsym XF86AudioLowerVolume exec --no-startup-id amixer -D pulse sset Master 5%- diff --git a/.config/i3/dmenufm b/.config/i3/dmenufm new file mode 100755 index 0000000..40d6a02 --- /dev/null +++ b/.config/i3/dmenufm @@ -0,0 +1,271 @@ +#!/bin/bash + +about=" +### Dmen File Manager ############################################# +# Version 0.1.2 by Scott Garrett # +###################################################################" + +### Changelog ##################################################### +# 0.1.0 # * Initial version # +# 0.1.1 # + Option 'Open last used dir' # +# # + Options 'Always open dirs' and 'Always open files' # +# 0.1.2 # + Config moved to $XDG_CONFIG_HOME # +# # + Options for dmenu styling # +# # + Option to change executor # +# # + Option to open file manager in current directory # +# # + Plugins support # +# see repo (github.com/hangtwenty/dmenfm) for changes since 0.1.2 # +################################################################### + +function defaults { + show_hidden=0 + show_backup=0 + always_open_files=0 + always_open_dirs=0 + open_last=1 + dmenu_caseinsens=1 + dmenu_onbottom=1 + dmenu_bg='#000000' + dmenu_fg='#9999CC' + dmenu_sbg='#000066' + dmenu_sfg='#FFFFFF' + executor='xdg-open' + editor='vim' + filemanager='dolphin' +} + +function saveconfig { + echo "show_hidden=$show_hidden +show_backup=$show_backup +always_open_dirs=$always_open_dirs +always_open_files=$always_open_files +open_last=$open_last +dmenu_caseinsens=$dmenu_caseinsens +dmenu_onbottom=$dmenu_onbottom +dmenu_bg='$dmenu_bg' +dmenu_fg='$dmenu_fg' +dmenu_sbg='$dmenu_sbg' +dmenu_sfg='$dmenu_sfg' +editor=\"$editor\" +executor='xdg' +filemanager=\"$filemanager\" +last_dir=\"$(pwd)\" +" > "$config" +} + +function setmenu { + menu="$menu $([ "$dmenu_caseinsens" == '1' ] && echo '-i') $([ "$dmenu_onbottom" == '1' ] && echo '-b') -nb $dmenu_bg -nf $dmenu_fg -sb $dmenu_sbg -sf $dmenu_sfg" +} + +if [ -z "$XDG_CONFIG_HOME" ]; then + xdg_config_home="$HOME/.config" +else + xdg_config_home=$XDG_CONFIG_HOME +fi + +file=1 +config_file="preferences" +config_dir="$xdg_config_home/dmenfm" +config="$config_dir/$config_file" +plugins_dir="$config_dir/plugins" +menu='rofi -dmenu' + +[ ! -d "$config_dir" ] && mkdir "$config_dir" +[ ! -d "$plugins_dir" ] && mkdir "$plugins_dir" +[ ! -d "$plugins_dir/browser" ] && mkdir "$plugins_dir/browser" +[ ! -d "$plugins_dir/operations" ] && mkdir "$plugins_dir/operations" +[ ! -d "$plugins_dir/preferences" ] && mkdir "$plugins_dir/preferences" +[ -e "$HOME/.dmanfs" ] && mv "$HOME/.dmanfs" "$config" + +defaults +touch "$config" +source "$config" +setmenu +[[ "$last_dir" && "$open_last" == 1 ]] && cd "$last_dir" + +while [ "$file" ]; do + file=$((echo -e '..\n.'; ls $([[ "$show_hidden" == '1' ]] && echo '-A') $([[ "$show_backup" == '1' ]] && echo '-B'); echo -e "[Preferences]\n[Open in $filemanager]"; ls -B "$plugins_dir/browser") | $menu -p "$(basename $(pwd))") + if [ "$file" ]; then + if [ -e "$file" ]; then + if $([ -d "$file" ] && [[ "$always_open_dirs" != '1' && "$file" != "." && "$file" != ".." ]]) || $([ -f "$file" ] && [[ "$always_open_files" != '1' ]]); then + owd=$(pwd) + opt=$((echo 'Open'; ([ -f "$file" ] && echo 'Edit'); echo -e 'Copy\nMove\nRename\nDelete'; ls -B "$plugins_dir/operations") | $menu -p "<$file>") + else + opt='Open' + fi + case "$opt" in + 'Open') + if [ -d "$file" ]; then + cd "$file" + else + if [ "$executor" ] && which "$executor" &> /dev/null; then + exec "$executor" "$owd/$file" & + unset file + elif which exo-open &> /dev/null; then + exo-open "$owd/$file" + unset file + elif gnome-open &> /dev/null; then + gnome-open "$owd/$file" + unset file + else + xmessage 'No executor found. Set one in [Preferences].' + fi + fi + ;; + 'Edit') + if [ "$editor" ] && which "$editor" &> /dev/null; then + exec "$editor" "$owd/$file" & + unset file + elif which geany &> /dev/null; then + exec geany "$owd/$file" + unset file + elif which gedit &> /dev/null; then + exec gedit "$owd/$file" + unset file + elif which kwrite &> /dev/null; then + exec kwrite "$owd/$file" + unset file + else + xmessage 'No editor found. Set one in [Preferences].' + fi + ;; + 'Copy') + cdir=1 + while [ "$cdir" ]; do + cdir=$((echo -e '..\n.'; ls $([[ "$show_hidden" == 1 ]] && echo "-A") $([[ "$show_backup" == 1 ]] && echo "-B") -d */) | $menu -p "Copy <$file> to:") + if [[ "$cdir" ]]; then + opt=$(echo -e 'Open\nCopy' | $menu -p "Copy <$file> to <$cdir>:") + if [[ "$opt" == "Open" ]]; then + cd "$cdir" + elif [[ "$opt" == "Copy" ]]; then + echo "$file" + [ -e "$cdir/$file" ] && opt=$(echo -e "No\nYes" | $menu -p "Replace existing <$file>?") + [[ "$opt" == "Copy" || "$opt" == "Yes" ]] && cp -af "$owd/$file" "$cdir/$file" + unset cdir + fi + fi + done + ;; + 'Move') + cdir=1 + while [ "$cdir" ]; do + cdir=$((echo -e '..\n.' && ls $([[ "$show_hidden" == 1 ]] && echo "-A") $([[ "$show_backup" == 1 ]] && echo "-B") -d */) | $menu -p "Move <$file> to:") + if [[ "$cdir" ]]; then + opt=$(echo -e 'Open\nMove' | $menu -p "Move <$file> to <$cdir>:") + if [[ "$opt" == "Open" ]]; then + cd "$cdir" + elif [[ "$opt" == "Move" ]]; then + echo "$file" + [ -e "$cdir/$file" ] && opt=$(echo -e "No\nYes" | $menu -p "Replace existing <$file>?") + [[ "$opt" == "Move" || "$opt" == "Yes" ]] && mv -f "$owd/$file" "$cdir/$file" + unset cdir + fi + fi + done + ;; + 'Rename') + opt=$(echo "" | $menu -p "Rename <$file> to:") + [ "$opt" ] && mv -f "$file" "$opt" + ;; + 'Delete') + opt=$(echo -e "No\nYes" | $menu -p "Really delete <$file>?") + [[ "$opt" == "Yes" ]] && rm -rf "$file" + ;; + *) [ "$opt" ] && [ -e "$plugins_dir/operations/$opt" ] && source "$plugins_dir/operations/$opt" ;; + esac + elif [[ "$file" =~ '[Open in' ]]; then + which "$filemanager" &> /dev/null && exec "$filemanager" . & + unset file + elif [[ "$file" == '[Preferences]' ]]; then + opt=1 + while [ "$opt" ]; do + opt=$((echo "[$show_hidden] Show hidden files +[$show_backup] Show backup files +[$always_open_dirs] Always open dirs +[$always_open_files] Always open files +[$open_last] Open last used dir +[$dmenu_caseinsens] Case-insensitive +[$dmenu_onbottom] Display on bottom +[$dmenu_bg] Background +[$dmenu_fg] Foreground +[$dmenu_sbg] Selected background +[$dmenu_sfg] Selected foreground +[$executor] Executor +[$editor] Editor +[$filemanager] File manager +Set defaults +About"; ls -B "$plugins_dir/preferences") | $menu -p "Preferences") + case "$opt" in + *'hidden files') (('show_hidden=!show_hidden')) ;; + *'backup dirs') (('show_backup=!show_backup')) ;; + *'open dirs') (('always_open_dirs=!always_open_dirs')) ;; + *'open files') (('always_open_files=!always_open_files')) ;; + *'used dir') (('open_last=!open_last')) ;; + *'insensitive') (('dmenu_caseinsens=!dmenu_caseinsens')) ;; + *'on bottom') (('dmenu_onbottom=!dmenu_onbottom')) ;; + *'Background') + opt=$(echo -e "$dmenu_bg\n[Default]" | $menu -p "Background:") + [[ "$opt" == '[Default]' ]] && opt='000000' + [ "$opt" ] && dmenu_bg="$opt" + dmenu_test=1 + ;; + *'Foreground') + opt=$(echo -e "$dmenu_fg\n[Default]" | $menu -p "Foreground:") + [[ "$opt" == '[Default]' ]] && opt='9999CC' + [ "$opt" ] && dmenu_fg="$opt" + dmenu_test=1 + ;; + *'Selected background') + opt=$(echo -e "$dmenu_bg\n[Default]" | $menu -p "Selected background:") + [[ "$opt" == '[Default]' ]] && opt='000066' + [ "$opt" ] && dmenu_sbg="$opt" + dmenu_test=1 + ;; + *'Selected foreground') + opt=$(echo -e "$dmenu_bg\n[Default]" | $menu -p "Selected foreground:") + [[ "$opt" == '[Default]' ]] && opt='FFFFFF' + [ "$opt" ] && dmenu_sfg="$opt" + dmenu_test=1 + ;; + *'Executor') + opt=$(echo -e "$executor\n[Default]" | $menu -p "Executor:") + [[ "$opt" == '[Default]' ]] && opt='exo' + [ "$opt" ] && editor="$opt" + ;; + *'Editor') + opt=$(echo -e "$editor\n[Default]" | $menu -p "Editor:") + [[ "$opt" == '[Default]' ]] && opt='geany' + [ "$opt" ] && editor="$opt" + ;; + *'File manager') + opt=$(echo -e "$filemanager\n[Default]" | $menu -p "File manager:") + [[ "$opt" == '[Default]' ]] && opt='thunar' + [ "$opt" ] && filemanager="$opt" + ;; + *'defaults') + opt=$(echo -e "No\nYes" | $menu -p "Really set defaults?") + [[ "$opt" == "Yes" ]] && defaults + ;; + 'About') xmessage -maxWidth 80 -maxHeight 80 "$about" ;; + *) + [ "$opt" ] && [ -e "$plugins_dir/preferences/$opt" ] && source "$plugins_dir/preferences/$opt" + ;; + esac + done + menu="$menu $([ "$dmenu_caseinsens" == '1' ] && echo '-i') $([ "$dmenu_onbottom" == '1' ] && echo '-b') -nb $dmenu_bg -nf $dmenu_fg -sb $dmenu_sbg -sf $dmenu_sfg" + if [[ "$dmenu_test" == '1' ]]; then + if [[ "OK" != "$(echo 'OK' | $menu -p 'Dmenu settings changed.')" ]]; then + defaults + source "$config" + setmenu + echo 'OK' | $menu -p 'Error in Dmenu settings. Reverted.' + fi + fi + saveconfig + elif [ -e "$plugins_dir/browser/$file" ]; then + source "$plugins_dir/browser/$file" + fi + fi +done + +saveconfig diff --git a/.config/i3/exit.sh b/.config/i3/exit.sh new file mode 100755 index 0000000..39c88af --- /dev/null +++ b/.config/i3/exit.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +ANSWER=$(echo -e "suspend\nlock\nlogout\nshutdown\nreboot" | rofi -dmenu) + +case $ANSWER in + "suspend") systemctl suspend;; + "lock") xset s activate;; + "logout") i3-msg exit;; + "shutdown") shutdown now;; + "reboot") reboot;; +esac diff --git a/.config/i3/factorio.sh b/.config/i3/factorio.sh new file mode 100755 index 0000000..b8a3d13 --- /dev/null +++ b/.config/i3/factorio.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +PACKPATH="$HOME/Games/Factorio/Modpacks/" +INSTANCE=$(ls $PACKPATH | rofi -dmenu -i) + +echo $INSTANCE + +if test -n "$INSTANCE"; then + cd $(<"${PACKPATH}${INSTANCE}/pack.conf") && padsp ./factorio --mod-directory ${PACKPATH}${INSTANCE}/ & +fi diff --git a/.config/i3/factorio.sh! b/.config/i3/factorio.sh! new file mode 100644 index 0000000..52248a8 --- /dev/null +++ b/.config/i3/factorio.sh! @@ -0,0 +1,9 @@ +#!/bin/bash + +INSTANCE=$(ls ~/Documents/Games/Factorio/Modpacks/ | rofi -dmenu -i) + +echo $INSTANCE + +if test -n "$INSTANCE"; then + $(<"${INSTANCE}/pack.conf") --mod-directory $INSTANCE +fi diff --git a/.config/i3/mmc.sh b/.config/i3/mmc.sh new file mode 100755 index 0000000..3b08ce3 --- /dev/null +++ b/.config/i3/mmc.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +INSTANCE=$(ls ~/.local/share/multimc/instances/ | rofi -dmenu -i) + +echo $INSTANCE + +if test -n "$INSTANCE"; then + multimc -l $INSTANCE +fi diff --git a/.config/i3/monitor-rotate.sh b/.config/i3/monitor-rotate.sh new file mode 100755 index 0000000..cba3e65 --- /dev/null +++ b/.config/i3/monitor-rotate.sh @@ -0,0 +1,141 @@ +#!/bin/bash +# Auto rotate screen based on device orientation + +# Screen orientation and launcher location is set based upon accelerometer position +# This script should be added to startup applications for the user + +if [ -n "${DEBUG+set}" ]; then echo debug on; DEBUG=1; fi + +### configuration +# find your Touchscreen and Touchpad device with `xinput` +TouchscreenDevice='ELAN Touchscreen' +TouchpadDevice='SynPS/2 Synaptics TouchPad' +KeyboardDevice='AT Translated Set 2 keyboard' + +### arguments +if [ "$1" == '-nosd' ]; then NOSD="true" ; fi + +### functions +rotatescreen() { + # Contributors: Ruben Barkow: https://gist.github.com/rubo77/daa262e0229f6e398766 + + touchpadEnabled=$(xinput --list-props "$TouchpadDevice" | awk '/Device Enabled/{print $NF}') + screenMatrix=$(xinput --list-props "$TouchscreenDevice" | awk '/Coordinate Transformation Matrix/{print $5$6$7$8$9$10$11$12$NF}') + + # Matrix for rotation + # ⎡ 1 0 0 ⎤ + # ⎜ 0 1 0 ⎥ + # ⎣ 0 0 1 ⎦ + normal='1 0 0 0 1 0 0 0 1' + normal_float='1.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,1.000000' + + #⎡ -1 0 1 ⎤ + #⎜ 0 -1 1 ⎥ + #⎣ 0 0 1 ⎦ + inverted='-1 0 1 0 -1 1 0 0 1' + inverted_float='-1.000000,0.000000,1.000000,0.000000,-1.000000,1.000000,0.000000,0.000000,1.000000' + + # 90° to the left + # ⎡ 0 -1 1 ⎤ + # ⎜ 1 0 0 ⎥ + # ⎣ 0 0 1 ⎦ + left='0 -1 1 1 0 0 0 0 1' + left_float='0.000000,-1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000' + + # 90° to the right + #⎡ 0 1 0 ⎤ + #⎜ -1 0 1 ⎥ + #⎣ 0 0 1 ⎦ + right='0 1 0 -1 0 1 0 0 1' + + if [ "$1" == "-u" ]; then + echo "Upside down" + xrandr -o inverted + xinput set-prop "$TouchscreenDevice" 'Coordinate Transformation Matrix' $inverted + xinput disable "$TouchpadDevice" + xinput disable "$KeyboardDevice" + # if onboard isn't running and NOSD != true, start it + if [[ "$NOSD" != "true" ]]; then + [[ `pgrep onboard` ]] || onboard 2>/dev/null & + fi + elif [ "$1" == "-l" ]; then + echo "90° to the left" + xrandr -o left + xinput set-prop "$TouchscreenDevice" 'Coordinate Transformation Matrix' $left + xinput disable "$TouchpadDevice" + xinput disable "$KeyboardDevice" + if [[ "$NOSD" != "true" ]]; then + [[ `pgrep onboard` ]] || onboard 2>/dev/null & + fi + elif [ "$1" == "-r" ]; then + echo "90° right up" + xrandr -o right + xinput set-prop "$TouchscreenDevice" 'Coordinate Transformation Matrix' $right + xinput disable "$TouchpadDevice" + xinput disable "$KeyboardDevice" + if [[ "$NOSD" != "true" ]]; then + [[ `pgrep onboard` ]] || onboard 2>/dev/null & + fi + elif [ "$1" == "-n" ]; then + echo "Back to normal" + xrandr -o normal + xinput set-prop "$TouchscreenDevice" 'Coordinate Transformation Matrix' $normal + xinput enable "$TouchpadDevice" + xinput enable "$KeyboardDevice" + killall -q onboard + fi +} + +### dependencies +( command -v monitor-sensor >/dev/null 2>&1 ) || { echo >&2 "$0 requires monitor-sensor but it's not installed. Please install iio-sensor-proxy (https://github.com/hadess/iio-sensor-proxy)."; exit 1; } +( command -v xrandr >/dev/null 2>&1 ) || { echo >&2 "$0 requires xrandr but it's not installed. Aborting."; exit 1; } +# transparently disable onboard support if it's not installed +( command -v onboard >/dev/null 2>&1 ) || { echo >&2 "Not using onboard keyboard"; NOSD="true"; } + +### main script + +# check for running instance exit if exists +myname=$(basename $0) +runningPID=$(ps -ef | grep ".*bash.*$myname" | grep -v "grep \| $$" | awk '{print $2}') +if [[ $runningPID != "" ]] ; then + echo $myname is already running with PID $runningPID + exit +fi + +killall -q -v monitor-sensor + +LOG=/tmp/sensor.log +mkfifo $LOG +monitor-sensor > $LOG & + +PID=$! +# kill monitor-sensor and rm log if this script exits +trap "[ ! -e /proc/$PID ] || kill $PID && rm -v $LOG" SIGHUP SIGINT SIGQUIT SIGTERM SIGPIPE +LASTORIENT='unset' + +echo 'monitoring for screen rotation...' +while read -r; do + line=$(echo "$REPLY" | sed -E '/orient/!d;s/.*orient.*: ([a-z\-]*)\)??/\1/;' ) + # read a line from the pipe, set var if not whitespace + [[ $line == *[^[:space:]]* ]] || continue + ORIENT=$line + if [[ "$ORIENT" != "$LASTORIENT" ]]; then + echo "$LASTORIENT > $ORIENT" + LASTORIENT=$ORIENT + # Set the actions to be taken for each possible orientation + case "$ORIENT" in + normal) + #rotatescreen -n;; + if [ $DEBUG ]; then echo "normal" ;else rotatescreen -n; fi ;; + bottom-up) + if [ $DEBUG ]; then echo "up" ;else rotatescreen -u; fi ;; + #rotatescreen -u;; + right-up) + if [ $DEBUG ]; then echo "right" ;else rotatescreen -r; fi ;; + #rotatescreen -r;; + left-up) + if [ $DEBUG ]; then echo "left" ;else rotatescreen -l; fi ;; + #rotatescreen -l;; + esac + fi +done < $LOG diff --git a/.config/i3/music.sh b/.config/i3/music.sh new file mode 100755 index 0000000..a0278d0 --- /dev/null +++ b/.config/i3/music.sh @@ -0,0 +1,2 @@ +#!/bin/sh +arecord -f dat -D hw:0 | aplay -f dat -D pulse diff --git a/.config/i3/oneko.sh b/.config/i3/oneko.sh new file mode 100755 index 0000000..3e6eb9e --- /dev/null +++ b/.config/i3/oneko.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env sh + +killall oneko +oneko -tofocus + diff --git a/.config/i3/recent_files b/.config/i3/recent_files new file mode 100644 index 0000000..a8486dc --- /dev/null +++ b/.config/i3/recent_files @@ -0,0 +1,14 @@ +cursus-2018.pdf +Physics-for-Scintists-Engineers-by-Giancoli-4th-Edition (1).pdf +Algorithms-4th-Ed-Robert-Sedgewick-Kevin-Wayne-2011 (1).pdf +report.pdf +opgave.pdf +Algorithms-4th-Ed-Robert-Sedgewick-Kevin-Wayne-2011.pdf +2019Cursus-WiskundeII-3sp.pdf +Logica.pdf +bvp.les4.correctheidsbewijzen(1).pdf +bvp.les8.complexiteit(1).pdf +cursustekst-bri 2018.pdf +a.out +taak3 +bri_taak_2 diff --git a/.config/i3/rofifm.sh b/.config/i3/rofifm.sh new file mode 100755 index 0000000..80d0d8b --- /dev/null +++ b/.config/i3/rofifm.sh @@ -0,0 +1,65 @@ +#!/bin/sh + +RECENT_FILES=~/.config/i3/recent_files +FILE_MANAGER=dolphin +TERMINAL="termite -d" +DMENU="rofi -dmenu -i" + +open_file() { + sed -i "\:$1:d" $RECENT_FILES + echo -e "$1\n$(cat $RECENT_FILES)" > $RECENT_FILES + xdg-open "$1" +} + +recent_files() { + ITEM=$(cat $RECENT_FILES | sed 's!.*/!!' | $DMENU -format i) + + if [[ -z $ITEM ]]; then + return + fi + + ITEM=$(($ITEM+1)) + echo $ITEM + + open_file "$(sed -n "${ITEM}p" < $RECENT_FILES)" +} + +DONE=false + +if ! [[ -f $RECENT_FILES ]]; then + touch $RECENT_FILES +fi + +cd ~ + +ITEM=$({ echo "Recent Files"; echo "Open in terminal"; echo "Show in $FILE_MANAGER"; ls; } | $DMENU) + +while [ $DONE != true ]; do + + if [[ -z $ITEM ]]; then + break + fi + + if [[ $ITEM = "Open in terminal" ]]; then + $TERMINAL "$PWD" + break + elif [[ $ITEM = "Show in $FILE_MANAGER" ]]; then + $FILE_MANAGER . + break + elif [[ $ITEM = "Recent Files" ]]; then + recent_files + break + elif [[ -d $ITEM ]]; then + cd "$ITEM" + continue + elif [[ -f $ITEM ]]; then + open_file "$ITEM" + break + fi + + ITEM=$({ echo "Open in terminal"; echo "Show in $FILE_MANAGER"; ls; } | rofi -dmenu -i) + +done + + + diff --git a/.config/i3/rotate.sh b/.config/i3/rotate.sh new file mode 100755 index 0000000..45fa65d --- /dev/null +++ b/.config/i3/rotate.sh @@ -0,0 +1,61 @@ +#!/bin/sh + +LOG=/run/user/$(id -u $USER)/sensor.log +DNAME=eDP1 + +function rotate { + #echo ---- rotete ---- + ORIENTATION=$1 + CUR_ROT=$(xrandr -q --verbose | grep $DNAME | cut -d" " -f6) + + NEW_ROT="normal" + CTM="1 0 0 0 1 0 0 0 1" + + # Set the actions to be taken for each possible orientation + case "$ORIENTATION" in + normal) + NEW_ROT="normal" + CTM="1 0 0 0 1 0 0 0 1" + ;; + bottom-up) + NEW_ROT="inverted" + CTM="-1 0 1 0 -1 1 0 0 1" + ;; + right-up) + NEW_ROT="right" + CTM="0 1 0 -1 0 1 0 0 1" + ;; + left-up) + NEW_ROT="left" + CTM="0 -1 1 1 0 0 0 0 1" + ;; + esac + + xrandr -o $NEW_ROT + xinput set-prop "Wacom HID 50DB Finger" --type=float "Coordinate Transformation Matrix" $CTM + +} + +rotate "$1" + +# kill old monitor-sensor +#killall monitor-sensor + +# Clear sensor.log so it doesn't get too long over time +#> $LOG + +# Launch monitor-sensor and store the output in a variable that can be parsed by the rest of the script +#monitor-sensor >> $LOG 2>&1 & + +# Parse output or monitor sensor to get the new orientation whenever the log file is updated +# Possibles are: normal, bottom-up, right-up, left-up +# Light data will be ignored +#while inotifywait -e modify $LOG; do +# # Read the last line that was added to the file and get the orientation +# ORIENTATION=$(tail -n 1 $LOG | grep 'orientation' | grep -oE '[^ ]+$') +# +# if [ ! -z $ORIENTATION ] ; then +# rotate $ORIENTATION +# fi +# +#done diff --git a/.config/i3/rotate_normal.sh b/.config/i3/rotate_normal.sh new file mode 100755 index 0000000..607a1bb --- /dev/null +++ b/.config/i3/rotate_normal.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +#landscape (normal) + +xrandr -o normal +xinput set-prop "Wacom HID 50DB Finger" --type=float "Coordinate Transformation Matrix" 0 0 0 0 0 0 0 0 0 diff --git a/.config/i3/run.sh b/.config/i3/run.sh new file mode 100755 index 0000000..978b1f3 --- /dev/null +++ b/.config/i3/run.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +COMMAND=$(rofi -dmenu -i) + +if test -n "$COMMAND"; then + termite -e zsh -c "${COMMAND}" +fi diff --git a/.config/polybar/.config.un~ b/.config/polybar/.config.un~ new file mode 100644 index 0000000..5ddb084 Binary files /dev/null and b/.config/polybar/.config.un~ differ diff --git a/.config/polybar/config b/.config/polybar/config new file mode 100644 index 0000000..cc6f9c0 --- /dev/null +++ b/.config/polybar/config @@ -0,0 +1,610 @@ +===================================================== +; +; To learn more about how to configure Polybar +; go to https://github.com/jaagr/polybar +; +; The README contains alot of information +; +;===================================================== + +[colors] +background = #00 +background-alt = #00 +;foreground = ${xrdb:color3:#222} +;foreground-alt = ${xrdb:color3:#222} +;primary = ${xrdb:color1:#222} +;secondary = ${xrdb:color2:#222} +foreground = #FFFFFF +foreground-alt = #FFFFFF +primary = #FFFFFF +secondary = #FFFFFF +alert = ${xrdb:color3:#222} + +[bar/bar1] +width = 100% +height = 25 +radius = 0 +fixed-center = true +bottom = false +monitor=${env:MONITOR:} + +background = ${colors.background} +foreground = ${colors.foreground} + +line-size = 2 +line-color = #f00 + +border-size = 10 +border-color = #00000000 + +padding-left = 2 +padding-right = 2 + +module-margin-left = 3 +module-margin-right = 0 + +font-0 = "Hack":pixelsize=12;1" +font-1 = unifont:fontformat=truetype:size=12:antialias=false;0 +font-2 = "Wuncon Siji:pixelsize=9;1" +font-3 = "Font Awesome 5 Free:style=Regular:pixelsize=12;1" +font-4 = "Font Awesome 5 Free:style=Solid:pixelsize=12;1" +font-5 = "Font Awesome 5 Brands:pixelsize=12;1" + +modules-left = i3 workspaces-xmonad +modules-center = xwindow +;weather update installed +modules-right = temperature xbacklight volume wlan battery date + +tray-postion = right + +override-redirect = false + +cursor-click = pointer +cursor-scroll = ns-resize + +[bar/touchbar] +width = 100% +height = 25 +radius = 0 +fixed-center = true +bottom = true +monitor=${env:MONITOR:} + +background = ${colors.background} +foreground = ${colors.foreground} + +line-size = 2 +line-color = #f00 + +border-size = 10 +border-color = #00000000 + +padding-left = 2 +padding-right = 2 + +module-margin-left = 3 +module-margin-right = 0 + +font-0 = "Hack":pixelsize=12;1" +font-1 = unifont:fontformat=truetype:size=12:antialias=false;0 +font-2 = "Wuncon Siji:pixelsize=9;1" +font-3 = "Font Awesome 5 Free:style=Regular:pixelsize=12;1" +font-4 = "Font Awesome 5 Free:style=Solid:pixelsize=12;1" +font-5 = "Font Awesome 5 Brands:pixelsize=12;1" + +modules-left = touchvolmute touchvoldown touchvolup touchbrightdown touchbrightup +modules-center = i3touchmenu +modules-right = touchrofi touchkeyboard +override-redirect = false +enable-ipc = true + + +[module/workspaces-xmonad] +type = custom/script +exec = tail -F /tmp/.xmonad-workspace-log +exec-if = [ -p /tmp/.xmonad-workspace-log ] +tail = true + +[module/title-xmonad] +type = custom/script +exec = tail -F /tmp/.xmonad-title-log +exec-if = [ -p /tmp/.xmonad-title-log ] +tail = true + +[module/touchkeyboard] +;; Open onscreen keyboard (onboard) +type=custom/text +content=" " +content-foreground=#fff +click-left=onboard + +[module/touchrofi] +type=custom/text +content=" " +content-foreground=#fff +click-left=rofi -show run + +[module/touchbrightdown] +;; Brightness down +type=custom/text +content=" " +content-foreground=#fff +click-left=xbacklight -dec 10 + +[module/touchbrightup] +;; Brightness up +type=custom/text +content=" " +content-foreground=#fff +click-left=xbacklight -inc 10 + +[module/touchvolmute] +;; Mute +type=custom/text +content=" " +content-foreground=#fff +click-left=pactl set-sink-mute 0 toggle + +[module/touchvoldown] +;; Volume down +type=custom/text +content=" " +content-foreground=#fff +click-left=pactl set-sink-mute 0 false && pactl set-sink-volume 0 -5% + +[module/touchvolup] +;; Volume up +type=custom/text +content=" " +content-foreground=#fff +click-left=pactl set-sink-mute 0 false && pactl set-sink-volume 0 +5% + + +[module/update] +type = custom/script +label-foreground = ${colors.foreground-alt} + +interval = 30 +format =