From 0f8aeafb686490ddb1786f0f2aa7cb68b729d71c Mon Sep 17 00:00:00 2001 From: downhill Date: Sat, 23 Mar 2019 22:25:08 +0100 Subject: [PATCH] Okay, without symlinks now, seems easier --- .config/dunst/dunstrc | 258 +++++++++++++++++++++++++++++++++++++++++- .i3/config | 230 ++++++++++++++++++++++++++++++++++++- .i3/workspace3.json | 52 ++++++++- bin/brightness.sh | 21 +++- bin/lock.sh | 8 +- bin/sleep.sh | 13 ++- bin/sound.sh | 23 +++- 7 files changed, 598 insertions(+), 7 deletions(-) mode change 120000 => 100644 .config/dunst/dunstrc mode change 120000 => 100644 .i3/config mode change 120000 => 100644 .i3/workspace3.json mode change 120000 => 100755 bin/brightness.sh mode change 120000 => 100755 bin/lock.sh mode change 120000 => 100755 bin/sleep.sh mode change 120000 => 100755 bin/sound.sh diff --git a/.config/dunst/dunstrc b/.config/dunst/dunstrc deleted file mode 120000 index 0faa1f8..0000000 --- a/.config/dunst/dunstrc +++ /dev/null @@ -1 +0,0 @@ -../../../.config/dunst/dunstrc \ No newline at end of file diff --git a/.config/dunst/dunstrc b/.config/dunst/dunstrc new file mode 100644 index 0000000..15a5ca5 --- /dev/null +++ b/.config/dunst/dunstrc @@ -0,0 +1,257 @@ +[global] + font = Monospace 8 + + # Allow a small subset of html markup: + # bold + # italic + # strikethrough + # underline + # + # For a complete reference see + # . + # If markup is not allowed, those tags will be stripped out of the + # message. + allow_markup = yes + + # The format of the message. Possible variables are: + # %a appname + # %s summary + # %b body + # %i iconname (including its path) + # %I iconname (without its path) + # %p progress value if set ([ 0%] to [100%]) or nothing + # Markup is allowed + format = "%s\n%b" + + # Sort messages by urgency. + sort = yes + + # Show how many messages are currently hidden (because of geometry). + indicate_hidden = yes + + # Alignment of message text. + # Possible values are "left", "center" and "right". + alignment = left + + # The frequency with wich text that is longer than the notification + # window allows bounces back and forth. + # This option conflicts with "word_wrap". + # Set to 0 to disable. + bounce_freq = 0 + + # Show age of message if message is older than show_age_threshold + # seconds. + # Set to -1 to disable. + show_age_threshold = 60 + + # Split notifications into multiple lines if they don't fit into + # geometry. + word_wrap = yes + + # Ignore newlines '\n' in notifications. + ignore_newline = no + + + # The geometry of the window: + # [{width}]x{height}[+/-{x}+/-{y}] + # The geometry of the message window. + # The height is measured in number of notifications everything else + # in pixels. If the width is omitted but the height is given + # ("-geometry x2"), the message window expands over the whole screen + # (dmenu-like). If width is 0, the window expands to the longest + # message displayed. A positive x is measured from the left, a + # negative from the right side of the screen. Y is measured from + # the top and down respectevly. + # The width can be negative. In this case the actual width is the + # screen width minus the width defined in within the geometry option. + geometry = "300x5-30+20" + + # Shrink window if it's smaller than the width. Will be ignored if + # width is 0. + shrink = no + + # The transparency of the window. Range: [0; 100]. + # This option will only work if a compositing windowmanager is + # present (e.g. xcompmgr, compiz, etc.). + transparency = 0 + + # Don't remove messages, if the user is idle (no mouse or keyboard input) + # for longer than idle_threshold seconds. + # Set to 0 to disable. + idle_threshold = 120 + + # Which monitor should the notifications be displayed on. + monitor = 0 + + # Display notification on focused monitor. Possible modes are: + # mouse: follow mouse pointer + # keyboard: follow window with keyboard focus + # none: don't follow anything + # + # "keyboard" needs a windowmanager that exports the + # _NET_ACTIVE_WINDOW property. + # This should be the case for almost all modern windowmanagers. + # + # If this option is set to mouse or keyboard, the monitor option + # will be ignored. + follow = mouse + + # Should a notification popped up from history be sticky or timeout + # as if it would normally do. + sticky_history = yes + + # Maximum amount of notifications kept in history + history_length = 20 + + # Display indicators for URLs (U) and actions (A). + show_indicators = yes + + # The height of a single line. If the height is smaller than the + # font height, it will get raised to the font height. + # This adds empty space above and under the text. + line_height = 0 + + # Draw a line of "separatpr_height" pixel height between two + # notifications. + # Set to 0 to disable. + separator_height = 2 + + # Padding between text and separator. + padding = 8 + + # Horizontal padding. + horizontal_padding = 8 + + # Define a color for the separator. + # possible values are: + # * auto: dunst tries to find a color fitting to the background; + # * foreground: use the same color as the foreground; + # * frame: use the same color as the frame; + # * anything else will be interpreted as a X color. + separator_color = frame + + # Print a notification on startup. + # This is mainly for error detection, since dbus (re-)starts dunst + # automatically after a crash. + startup_notification = false + + # dmenu path. + dmenu = /usr/bin/dmenu -p dunst: + + # Browser for opening urls in context menu. + browser = /usr/bin/firefox -new-tab + + # Align icons left/right/off + icon_position = off + + # Paths to default icons. + icon_folders = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/ + +[frame] + width = 3 + color = "#aaaaaa" + +[shortcuts] + + # Shortcuts are specified as [modifier+][modifier+]...key + # Available modifiers are "ctrl", "mod1" (the alt-key), "mod2", + # "mod3" and "mod4" (windows-key). + # Xev might be helpful to find names for keys. + + # Close notification. + close = ctrl+space + + # Close all notifications. + close_all = ctrl+shift+space + + # Redisplay last message(s). + # On the US keyboard layout "grave" is normally above TAB and left + # of "1". + history = ctrl+grave + + # Context menu. + context = ctrl+shift+period + +[urgency_low] + # IMPORTANT: colors have to be defined in quotation marks. + # Otherwise the "#" and following would be interpreted as a comment. + background = "#222222" + foreground = "#888888" + timeout = 10 + +[urgency_normal] + background = "#285577" + foreground = "#ffffff" + timeout = 10 + +[urgency_critical] + background = "#900000" + foreground = "#ffffff" + timeout = 0 + + +# Every section that isn't one of the above is interpreted as a rules to +# override settings for certain messages. +# Messages can be matched by "appname", "summary", "body", "icon", "category", +# "msg_urgency" and you can override the "timeout", "urgency", "foreground", +# "background", "new_icon" and "format". +# Shell-like globbing will get expanded. +# +# SCRIPTING +# You can specify a script that gets run when the rule matches by +# setting the "script" option. +# The script will be called as follows: +# script appname summary body icon urgency +# where urgency can be "LOW", "NORMAL" or "CRITICAL". +# +# NOTE: if you don't want a notification to be displayed, set the format +# to "". +# NOTE: It might be helpful to run dunst -print in a terminal in order +# to find fitting options for rules + +[soundnotify] + summary = "*Sound*to*" + timeout = 1 + +[soundmute] + summary = "*Sound*muted*" + timeout = 1 + +[brightnessnotify] + summary = "*Brightness*to*" + timeout = 1 + +#[espeak] +# summary = "*" +# script = dunst_espeak.sh + +#[script-test] +# summary = "*script*" +# script = dunst_test.sh + +#[ignore] +# # This notification will not be displayed +# summary = "foobar" +# format = "" + +#[signed_on] +# appname = Pidgin +# summary = "*signed on*" +# urgency = low +# +#[signed_off] +# appname = Pidgin +# summary = *signed off* +# urgency = low +# +#[says] +# appname = Pidgin +# summary = *says* +# urgency = critical +# +#[twitter] +# appname = Pidgin +# summary = *twitter.com* +# urgency = normal +# +# vim: ft=cfg diff --git a/.i3/config b/.i3/config deleted file mode 120000 index bd5213a..0000000 --- a/.i3/config +++ /dev/null @@ -1 +0,0 @@ -../../.i3/config \ No newline at end of file diff --git a/.i3/config b/.i3/config new file mode 100644 index 0000000..76dfc60 --- /dev/null +++ b/.i3/config @@ -0,0 +1,229 @@ +# i3 config file (v4) +# +# Please see http://i3wm.org/docs/userguide.html for a complete reference! +# +# This config file uses keycodes (bindsym) and was written for the QWERTY +# layout. +# +# To get a config file with the same key positions, but for your current +# layout, use the i3-config-wizard +# + +# 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 these keys for focus, movement, and resize directions when reaching for +# the arrows is not convenient +set $up l +set $down k +set $left j +set $right semicolon + +# use Mouse+Mod4 to drag floating windows to their wanted position +floating_modifier Mod4 + +# toggle window borders between normal (title bar), pixel 1 and none +bindsym Mod4+b border toggle + +# start a terminal +#bindsym Mod4+Return exec i3-sensible-terminal +bindsym Mod4+Return exec --no-startup-id urxvt + +bindsym Mod4+i exec firefox +bindsym Mod4+Delete exec /home/downhill/bin/lock.sh + +# Hide borders for windows if not necessary (only one window) +hide_edge_borders smart +# Standard borders are none +# Remember to change this with new version when stable gets updated +# devuan stable is 4.13 now, so this is still applicable +new_window none + +# brightness +# -m is reset to 100% brightness, -u is up 10%, -d is down 10% + +bindsym XF86MonBrightnessDown exec --no-startup-id /home/downhill/bin/brightness.sh -d +bindsym XF86MonBrightnessUp exec --no-startup-id /home/downhill/bin/brightness.sh -u +bindsym XF86Display exec --no-startup-id /home/downhill/bin/brightness.sh -m + +# sound +# -m is mute toggle, -u is up 10%, -d is down 10% + +bindsym XF86AudioMute exec --no-startup-id /home/downhill/bin/sound.sh -m +bindsym XF86AudioRaiseVolume exec --no-startup-id /home/downhill/bin/sound.sh -u +bindsym XF86AudioLowerVolume exec --no-startup-id /home/downhill/bin/sound.sh -d + +# sleep +# uses the cog key on the e480 (F9) +# -r is to ram, -d is to disk + +bindsym XF86Tools exec --no-startup-id /home/downhill/bin/sleep.sh -r +bindsym Mod4+XF86Tools exec --no-startup-id /home/downhill/bin/sleep.sh -d + + +# kill focused window +bindsym Mod4+Shift+q kill + +# start dmenu (a program launcher) +bindsym Mod4+d exec dmenu_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 Mod4+d exec --no-startup-id i3-dmenu-desktop + +# change focus +bindsym Mod4+$left focus left +bindsym Mod4+$down focus down +bindsym Mod4+$up focus up +bindsym Mod4+$right focus right + +# alternatively, you can use the cursor keys: +bindsym Mod4+Left focus left +bindsym Mod4+Down focus down +bindsym Mod4+Up focus up +bindsym Mod4+Right focus right + +# move focused window +bindsym Mod4+Shift+$left move left +bindsym Mod4+Shift+$down move down +bindsym Mod4+Shift+$up move up +bindsym Mod4+Shift+$right move right + +# alternatively, you can use the cursor keys: +bindsym Mod4+Shift+Left move left +bindsym Mod4+Shift+Down move down +bindsym Mod4+Shift+Up move up +bindsym Mod4+Shift+Right move right + +# split in horizontal orientation +bindsym Mod4+h split h + +# split in vertical orientation +bindsym Mod4+v split v + +# enter fullscreen mode for the focused container +bindsym Mod4+f fullscreen toggle + +# change container layout (stacked, tabbed, toggle split) +bindsym Mod4+s layout stacking +bindsym Mod4+w layout tabbed +bindsym Mod4+e layout toggle split + +# toggle tiling / floating +bindsym Mod4+Shift+space floating toggle + +# change focus between tiling / floating windows +bindsym Mod4+space focus mode_toggle + +# focus the parent container +bindsym Mod4+a focus parent + +# focus the child container +#bindsym Mod4+d focus child + +# move the currently focused window to the scratchpad +bindsym Mod4+Shift+minus move scratchpad + +# Show the next scratchpad window or hide the focused scratchpad window. +# If there are multiple scratchpad windows, this command cycles through them. +bindsym Mod4+minus scratchpad show + +# switch to workspace +bindsym Mod4+1 workspace 1 +bindsym Mod4+2 workspace 2 +bindsym Mod4+3 workspace 3 +bindsym Mod4+4 workspace 4 +bindsym Mod4+5 workspace 5 +bindsym Mod4+6 workspace 6 +bindsym Mod4+7 workspace 7 +bindsym Mod4+8 workspace 8 +bindsym Mod4+9 workspace 9 +bindsym Mod4+0 workspace 10 + +# move focused container to workspace +bindsym Mod4+Shift+1 move container to workspace 1 +bindsym Mod4+Shift+2 move container to workspace 2 +bindsym Mod4+Shift+3 move container to workspace 3 +bindsym Mod4+Shift+4 move container to workspace 4 +bindsym Mod4+Shift+5 move container to workspace 5 +bindsym Mod4+Shift+6 move container to workspace 6 +bindsym Mod4+Shift+7 move container to workspace 7 +bindsym Mod4+Shift+8 move container to workspace 8 +bindsym Mod4+Shift+9 move container to workspace 9 +bindsym Mod4+Shift+0 move container to workspace 10 + +# reload the configuration file +bindsym Mod4+Shift+c reload +# restart i3 inplace (preserves your layout/session, can be used to upgrade i3) +bindsym Mod4+Shift+r restart +# exit i3 (logs you out of your X session) +bindsym Mod4+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 $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 + + # 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 Mod4+r mode "resize" + +# Start i3bar to display a workspace bar (plus the system information i3status +# finds out, if available) +bar { + status_command i3status +} + +# Startup config +# Seems like timing/race condition is fully in play here, this seems to work fine + +# like a small bit of border on the scratchpad +for_window [class="^URxvt$" instance="toscratchpad"] border pixel 1, move scratchpad +# one full sized terminal on workspace one, usually used for ssh to server for mutt, irssi and other things +for_window [class="^URxvt$" instance="toworkspace1"] move workspace 1 +# firefox on workspace 2 +exec --no-startup-id "i3-msg 'workspace 2, exec firefox'" +# Layout for workspace 3 is one terminal on the left, 50% of screen, and two on the right, both +# 25% of the space on top of each other. HD with sensible fonts this works fine +exec --no-startup-id "i3-msg 'workspace 3, append_layout /home/downhill/.i3/workspace3.json'" +# the 3 terminals workspace three 'swallows' +exec --no-startup-id urxvt -name "w3terminal1" +exec --no-startup-id urxvt -name "w3terminal2" +exec --no-startup-id urxvt -name "w3terminal3" +# the terminal for the scratchpad, love that feature +exec --no-startup-id urxvt -name "toscratchpad" +# the terminal for workspace one +exec --no-startup-id urxvt -name "toworkspace1" +# Change to workspace one for startup. start from the beginning +exec --no-startup-id "i3-msg 'workspace 1'" +# And the notification daemon, I like to see little messages when I change brightness/soundlevel +exec --no-startup-id dunst -config ~/.config/dunst/dunstrc diff --git a/.i3/workspace3.json b/.i3/workspace3.json deleted file mode 120000 index db2c28a..0000000 --- a/.i3/workspace3.json +++ /dev/null @@ -1 +0,0 @@ -../../.i3/workspace3.json \ No newline at end of file diff --git a/.i3/workspace3.json b/.i3/workspace3.json new file mode 100644 index 0000000..f93b520 --- /dev/null +++ b/.i3/workspace3.json @@ -0,0 +1,51 @@ +// vim:ts=4:sw=4:et +{ + "layout":"splith", + "percent": 0.5, + "type":"con", + "nodes": [ + { + "layout": "splitv", + "name": "w3terminal1", + "percent": 0.5, + "type": "con", + "swallows": [ + { + "class": "^URxvt$", + "instance": "w3terminal1" + } + ] + }, + { + "layout": "splitv", + "percent": 0.5, + "type": "con", + "nodes": [ + { + "name": "w3terminal2", + "percent": 0.5, + "type": "con", + "swallows": [ + { + "class": "^URxvt$", + "instance": "w3terminal2" + } + ] + }, + { + "name": "w3terminal3", + "percent": 0.5, + "type": "con", + "swallows": [ + { + "class": "^URxvt$", + "instance": "w3terminal3" + } + ] + } + ] + } + ] +} + + diff --git a/bin/brightness.sh b/bin/brightness.sh deleted file mode 120000 index e4382bb..0000000 --- a/bin/brightness.sh +++ /dev/null @@ -1 +0,0 @@ -../../bin/brightness.sh \ No newline at end of file diff --git a/bin/brightness.sh b/bin/brightness.sh new file mode 100755 index 0000000..dab4597 --- /dev/null +++ b/bin/brightness.sh @@ -0,0 +1,20 @@ +#!/bin/sh +if [ $1 = '-d' ]; then + current=$(xrandr --verbose | grep -m 1 -i brightness | awk -F' ' '{ print $2 }') + new=$(echo "$current - 0.1" | bc -l) + xrandr --output eDP-1 --brightness 0$new + percent=$(echo "$new * 100" | bc -l) + notify-send "Brightness lowered to ${percent}%" +elif [ $1 = '-u' ]; then + current=$(xrandr --verbose | grep -m 1 -i brightness | awk -F' ' '{ print $2 }') + new=$(echo "$current + 0.1" | bc -l) + xrandr --output eDP-1 --brightness 0$new + percent=$(echo "$new * 100" | bc -l) + notify-send "Brightness raised to ${percent}%" +elif [ $1 = '-m' ]; then + xrandr --output eDP-1 --brightness 1 + notify-send "Brightness reset to 100%" +else + xrandr --output eDP-1 --brightness $1 +fi + diff --git a/bin/lock.sh b/bin/lock.sh deleted file mode 120000 index 0ef5398..0000000 --- a/bin/lock.sh +++ /dev/null @@ -1 +0,0 @@ -../../bin/lock.sh \ No newline at end of file diff --git a/bin/lock.sh b/bin/lock.sh new file mode 100755 index 0000000..54073f3 --- /dev/null +++ b/bin/lock.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +# pause notification daemon during screensaver, get notifications +# after unlocking +killall -SIGUSR1 dunst +i3lock -c 000000 -n +killall -SIGUSR2 dunst diff --git a/bin/sleep.sh b/bin/sleep.sh deleted file mode 120000 index f4e687e..0000000 --- a/bin/sleep.sh +++ /dev/null @@ -1 +0,0 @@ -../../bin/sleep.sh \ No newline at end of file diff --git a/bin/sleep.sh b/bin/sleep.sh new file mode 100755 index 0000000..c9bf023 --- /dev/null +++ b/bin/sleep.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +# Small script to lock the screen before sleeping + +# suspend to ram or suspend to disk? +if [ $1 = '-r' ]; then + sleeptype="/usr/sbin/s2ram" +elif [ $1 = '-d' ]; then + sleeptype="/usr/sbin/s2disk" +fi + +/usr/bin/i3lock -c 000000 && /usr/bin/sudo $sleeptype diff --git a/bin/sound.sh b/bin/sound.sh deleted file mode 120000 index 8ebbf57..0000000 --- a/bin/sound.sh +++ /dev/null @@ -1 +0,0 @@ -../../bin/sound.sh \ No newline at end of file diff --git a/bin/sound.sh b/bin/sound.sh new file mode 100755 index 0000000..071ec87 --- /dev/null +++ b/bin/sound.sh @@ -0,0 +1,22 @@ +#!/bin/sh + +# control for the mute key, toggles mute/unmute + +if [ $1 = '-m' ]; then + mutecontrol=$(amixer get Master | grep 'Front Left:' | awk '{ print $6 }') + if [ $mutecontrol = "[on]" ]; then + amixer set Master mute + notify-send "Sound muted." + elif [ $mutecontrol = "[off]" ]; then + amixer set Master unmute + notify-send "Sound unmuted." + fi +elif [ $1 = "-d" ]; then + amixer set Master 10%- + volume=$(amixer get Master |grep 'Front Left:' |awk '{ print $5 }' |sed -e 's/\[//' |sed -e 's/\]//') + notify-send "Sound lowered to $volume" +elif [ $1 = "-u" ]; then + amixer set Master 10%+ + volume=$(amixer get Master |grep 'Front Left:' |awk '{ print $5 }' |sed -e 's/\[//' |sed -e 's/\]//') + notify-send "Sound raised to $volume" +fi