Intial commit

This commit is contained in:
Severin Kaderli 2016-09-02 20:38:41 +02:00
parent 3bd75bf208
commit 4d7bdfdc88
7 changed files with 477 additions and 0 deletions

238
.config/i3/config Normal file
View file

@ -0,0 +1,238 @@
# 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).
#
set $mod Mod4
set $alt Mod1
new_window none
# Font for window titles. Will also be used by the bar unless a different font
# is used in the bar {} block below.
font pango:Roboto-Regular 10
# 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
# Use Mouse+$mod to drag floating windows to their wanted position
floating_modifier $mod
# start a terminal
bindsym $mod+Return exec gnome-terminal
# kill focused window
bindsym $mod+Shift+q kill
# Start rofi
bindsym $mod+r exec rofi -show run -opacity 100 -lines 5 -location 2
# change focus
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+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+w 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+a focus parent
# focus the child container
#bindsym $mod+d focus child
# Set monitor names
set $output1 first
set $output2 second
set $output3 third
# Set workspace titles
set $workspace1 "1: "
set $workspace2 "2: "
set $workspace3 "3: Editor"
set $workspace4 "4: "
set $workspace5 "5: Messaging"
set $workspace6 "6: "
set $workspace7 "7: "
set $workspace8 "8: "
set $workspace9 "9: "
set $workspace10 "10: "
# Assign workspaces to screens
workspace $workspace1 output $output1
workspace $workspace2 output $output1
workspace $workspace3 output $output1
workspace $workspace4 output $output2
workspace $workspace5 output $output1
workspace $workspace6 output $output2
workspace $workspace7 output $output1
workspace $workspace8 output $output1
workspace $workspace9 output $output2
workspace $workspace10 output $output1
# Workspace switching
bindsym $mod+1 workspace $workspace1
bindsym $mod+2 workspace $workspace2
bindsym $mod+3 workspace $workspace3
bindsym $mod+4 workspace $workspace4
bindsym $mod+5 workspace $workspace5
bindsym $mod+6 workspace $workspace6
bindsym $mod+7 workspace $workspace7
bindsym $mod+8 workspace $workspace8
bindsym $mod+9 workspace $workspace9
bindsym $mod+0 workspace $workspace10
bindsym $mod+KP_1 workspace $workspace1
bindsym $mod+KP_2 workspace $workspace2
bindsym $mod+KP_3 workspace $workspace3
bindsym $mod+KP_4 workspace $workspace4
bindsym $mod+KP_5 workspace $workspace5
bindsym $mod+KP_6 workspace $workspace6
bindsym $mod+KP_7 workspace $workspace7
bindsym $mod+KP_8 workspace $workspace8
bindsym $mod+KP_9 workspace $workspace9
bindsym $mod+KP_0 workspace $workspace10
# Moving container to workspace
bindsym $mod+Shift+1 move container to workspace $workspace1
bindsym $mod+Shift+2 move container to workspace $workspace2
bindsym $mod+Shift+3 move container to workspace $workspace3
bindsym $mod+Shift+4 move container to workspace $workspace4
bindsym $mod+Shift+5 move container to workspace $workspace5
bindsym $mod+Shift+6 move container to workspace $workspace6
bindsym $mod+Shift+7 move container to workspace $workspace7
bindsym $mod+Shift+8 move container to workspace $workspace8
bindsym $mod+Shift+9 move container to workspace $workspace9
bindsym $mod+Shift+0 move container to workspace $workspace10
bindsym $mod+Shift+KP_1 move container to workspace $workspace1
bindsym $mod+Shift+KP_2 move container to workspace $workspace2
bindsym $mod+Shift+KP_3 move container to workspace $workspace3
bindsym $mod+Shift+KP_4 move container to workspace $workspace4
bindsym $mod+Shift+KP_5 move container to workspace $workspace5
bindsym $mod+Shift+KP_6 move container to workspace $workspace6
bindsym $mod+Shift+KP_7 move container to workspace $workspace7
bindsym $mod+Shift+KP_8 move container to workspace $workspace8
bindsym $mod+Shift+KP_9 move container to workspace $workspace9
bindsym $mod+Shift+KP_0 move container to workspace $workspace10
# Reload configuration file
bindsym $mod+Shift+c reload
# Restart i3
bindsym $mod+Shift+r restart
# Logout from i3
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
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+x mode "resize"
# Start i3bar to display a workspace bar (plus the system information i3status
# finds out, if available)
bar {
font pango: Roboto-Regular, FontAwesome 10
status_command i3blocks -c ~/.config/i3/i3blocks.conf
position top
}
# Custom key bindings
###
# Lock the screen
bindsym $mod+l exec ~/bin/screenlock.sh
# Volume changing
bindsym $mod+KP_Add exec pactl set-sink-volume 0 +5%
bindsym $mod+KP_Subtract exec pactl set-sink-volume 0 -5%
# Music controls
bindsym $mod+KP_Enter exec audtool playback-playpause
bindsym $mod+Ctrl+Right exec audtool playlist-advance
bindsym $mod+Ctrl+Left exec audtool playlist-reverse
# Moving workspaces to other displays
bindsym $mod+$alt+Left move workspace to output left
bindsym $mod+$alt+Right move workspace to output right
# Run specific applications on start
###
# Compton
exec --no-startup-id compton
# Background-Image
exec_always --no-startup-id feh --bg-center /home/severin/GoogleDrive/02_Media/01_Images/01_Wallpaper/Desktop/Zelda_1.jpg
# Monitor settings
exec_always --no-startup-id xrandr --output $output2 --mode 1280x1024 --pos 1280x0 --rotate normal --output VIRTUAL1 --off --output DP1 --off --output $output1 --mode 1280x1024 --pos 0x0 --rotate normal
# Other applications
exec --no-startup-id google-chrome-beta
exec --no-startup-id gnome-terminal -x bash -c "sudo apt-get update && sudo apt-get upgrade -y"
exec --no-startup-id gnome-terminal
exec --no-startup-id thunar
exec --no-startup-id thunar
#exec --no-startup-id steam
#exec --no-startup-id keepass2
exec --no-startup-id audacious
# Assign programs to specific workspaces
###
assign [class="google-chrome-beta"] $workspace1
assign [class="Thunar"] $workspace4
assign [class="Gnome-terminal"] $workspace2
assign [class="Atom"] $workspace3
assign [class="Steam"] $workspace6
assign [class="KeePass2"] $workspace8
assign [class="vlc"] $workspace9
assign [class="Audacious"] $workspace10
# i3-gaps specific
# Disable window titlebars
for_window [class="^.*"] border pixel 0
# Gaps
gaps inner 10
gaps outer 10

2
.config/i3/i3bar/datetime.sh Executable file
View file

@ -0,0 +1,2 @@
#!/bin/bash
date '+ %d.%m.%Y  %H:%M:%S'

3
.config/i3/i3bar/music.sh Executable file
View file

@ -0,0 +1,3 @@
#!/bin/bash
echo "$(audtool current-song)"

185
.config/i3/i3bar/shutdown.sh Executable file
View file

@ -0,0 +1,185 @@
#!/bin/bash
#
# Use rofi/zenity to change system runstate thanks to systemd.
#
# Note: this currently relies on associative array support in the shell.
#
# Inspired from i3pystatus wiki:
# https://github.com/enkore/i3pystatus/wiki/Shutdown-Menu
#
# Copyright 2015 Benjamin Chrétien <chretien at lirmm dot fr>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#######################################################################
# BEGIN CONFIG #
#######################################################################
# Use a custom lock script
#LOCKSCRIPT="i3lock-extra -m pixelize"
# Colors: FG (foreground), BG (background), HL (highlighted)
FG_COLOR="#bbbbbb"
BG_COLOR="#111111"
HLFG_COLOR="#111111"
HLBG_COLOR="#bbbbbb"
BORDER_COLOR="#222222"
# Options not related to colors
ROFI_TEXT="Menu:"
ROFI_OPTIONS="-width -11 -location 3 -hide-scrollbar -bw 2"
# Zenity options
ZENITY_TITLE="Menu"
ZENITY_TEXT="Action:"
ZENITY_OPTIONS="--column= --hide-header"
#######################################################################
# END CONFIG #
#######################################################################
# Whether to ask for user's confirmation
enable_confirmation=false
# Preferred launcher if both are available
preferred_launcher="rofi"
usage="$(basename "$0") [-h] [-c] [-p name] -- display a menu for shutdown, reboot, lock etc.
where:
-h show this help text
-c ask for user confirmation
-p preferred launcher (rofi or zenity)
This script depends on:
- systemd,
- i3,
- rofi or zenity."
# Check whether the user-defined launcher is valid
launcher_list=(rofi zenity)
function check_launcher() {
if [[ ! "${launcher_list[@]}" =~ (^|[[:space:]])"$1"($|[[:space:]]) ]]; then
echo "Supported launchers: ${launcher_list[*]}"
exit 1
else
# Get array with unique elements and preferred launcher first
# Note: uniq expects a sorted list, so we cannot use it
i=1
launcher_list=($(for l in "$1" "${launcher_list[@]}"; do printf "%i %s\n" "$i" "$l"; let i+=1; done \
| sort -uk2 | sort -nk1 | cut -d' ' -f2- | tr '\n' ' '))
fi
}
# Parse CLI arguments
while getopts "hcp:" option; do
case "${option}" in
h) echo "${usage}"
exit 0
;;
c) enable_confirmation=true
;;
p) preferred_launcher="${OPTARG}"
check_launcher "${preferred_launcher}"
;;
*) exit 1
;;
esac
done
# Check whether a command exists
function command_exists() {
command -v "$1" &> /dev/null 2>&1
}
# systemctl required
if ! command_exists systemctl ; then
exit 1
fi
# menu defined as an associative array
typeset -A menu
# Menu with keys/commands
menu=(
[Shutdown]="systemctl poweroff"
[Reboot]="systemctl reboot"
[Hibernate]="systemctl hibernate"
[Suspend]="systemctl suspend"
[Halt]="systemctl halt"
[Lock]="~/bin/screenlock.sh"
[Logout]="i3-msg exit"
[Cancel]=""
)
menu_nrows=${#menu[@]}
# Menu entries that may trigger a confirmation message
menu_confirm="Shutdown Reboot Hibernate Suspend Halt Logout"
launcher_exe=""
launcher_options=""
rofi_colors=""
function prepare_launcher() {
if [[ "$1" == "rofi" ]]; then
rofi_colors="-bc ${BORDER_COLOR} -bg ${BG_COLOR} -fg ${FG_COLOR} \
-hlfg ${HLFG_COLOR} -hlbg ${HLBG_COLOR}"
launcher_exe="rofi"
launcher_options="-dmenu -i -lines ${menu_nrows} -p ${ROFI_TEXT} \
${rofi_colors} ${ROFI_OPTIONS}"
elif [[ "$1" == "zenity" ]]; then
launcher_exe="zenity"
launcher_options="--list --title=${ZENITY_TITLE} --text=${ZENITY_TEXT} \
${ZENITY_OPTIONS}"
fi
}
for l in "${launcher_list[@]}"; do
if command_exists "${l}" ; then
prepare_launcher "${l}"
break
fi
done
# No launcher available
if [[ -z "${launcher_exe}" ]]; then
exit 1
fi
launcher="${launcher_exe} ${launcher_options}"
selection="$(printf '%s\n' "${!menu[@]}" | sort | ${launcher})"
function ask_confirmation() {
if [ "${launcher_exe}" == "rofi" ]; then
confirmed=$(echo -e "Yes\nNo" | rofi -dmenu -i -lines 2 -p "${selection}?" \
${rofi_colors} ${ROFI_OPTIONS})
[ "${confirmed}" == "Yes" ] && confirmed=0
elif [ "${launcher_exe}" == "zenity" ]; then
zenity --question --text "Are you sure you want to ${selection,,}?"
confirmed=$?
fi
if [ "${confirmed}" == 0 ]; then
i3-msg -q "exec ${menu[${selection}]}"
fi
}
if [[ $? -eq 0 && ! -z ${selection} ]]; then
if [[ "${enable_confirmation}" = true && \
${menu_confirm} =~ (^|[[:space:]])"${selection}"($|[[:space:]]) ]]; then
ask_confirmation
else
i3-msg -q "exec ${menu[${selection}]}"
fi
fi

11
.config/i3/i3bar/volume.sh Executable file
View file

@ -0,0 +1,11 @@
#!/bin/bash
# volume.sh
volume=$(/usr/share/i3blocks/volume 5 pulse)
if [ ${volume::-1} -ge "35" ]; then
echo "$volume"
elif [ ${volume::-1} -gt "0" ]; then
echo "$volume"
else
echo "$volume"
fi

34
.config/i3/i3blocks.conf Normal file
View file

@ -0,0 +1,34 @@
# i3blocks config file
# Global properties
command=/usr/share/i3blocks/$BLOCK_NAME
markup=none
full_text=
align=center
separator=false
separator_block_width=10
[Music]
markup=pango
command=~/.config/i3/i3bar/music.sh
interval=1
[seperator]
[Volume]
full_text=
command=~/.config/i3/i3bar/volume.sh
interval=repeat
[seperator]
[Datetime]
command=~/.config/i3/i3bar/datetime.sh
interval=1
[Shutdown]
full_text=
command=~/.config/i3/i3bar/shutdown.sh -c -p rofi

4
bin/screenlock.sh Executable file
View file

@ -0,0 +1,4 @@
#!/bin/bash
scrot /tmp/screenshot.png
convert /tmp/screenshot.png -blur 0x5 /tmp/screenshotblur.png
i3lock -i /tmp/screenshotblur.png