2 Commits e02f6e0bea ... bdf9f60d47

Author SHA1 Message Date
  Fabrizio Romano Genovese bdf9f60d47 i3-copy-scripts updated. Now it manages symbols as ~ in the paths specified. 7 years ago
  Fabrizio Romano Genovese 712beb75ec dunst config file added. Minor changes made. 7 years ago
3 changed files with 314 additions and 67 deletions
  1. 24 51
      README
  2. 245 0
      dunstrc
  3. 45 16
      i3-copy-scripts

+ 24 - 51
README

@@ -1,55 +1,28 @@
-##############
-##Background##
-##############
-#Install feh, then give only once:
+######################
+##Desktop Background##
+######################
+# Install feh, then give only once:
 feh --bg-scale /usr/share/wallpapers/ColdRipple/contents/images/1920x1080.jpg
-#If it does not work, change the wallpaper path. It could have been removed in a later version of qubes.
-#Use this command with a different path to change background. Once you give it the i3 config file will allow you to remember the configuration at every login.
-#If you lost the i3 config file add this line to make it remember the background:
+# If it does not work, change the wallpaper path. 
+# It could have been removed in a later version of qubes.
+# Use this command with a different path to change background. 
+# Once you give it the i3 config file will allow you to remember 
+# the configuration at every login.
+# If you lost the i3 config file add this line to make 
+# it remember the background:
 exec ~/.fehbg
 
-#install dunst, a lightweight notification system.
-#Then you have to give
+# Install dunst, a lightweight notification system.
+# Then you have to give
 sudo mv /usr/share/dbus-1/services/org.xfce.xfce4-notifyd.Notifications.service /usr/share/dbus-1/services/org.xfce.xfce4-notifyd.Notifications.service.disabled 
-#Too disable xfce-notifyid in order to make dunst work. You also have to restart your pc for this change to take effect.
-#In this folder you will also find the dunstrc configuration file you need.
-
-###############
-##Screensaver##
-###############
-#script: i3-lock
-#Just give 'i3-lock' on a terminal and the screensaver will start.
-#Invoke the script with xautolock in the i3 config file.
-
-########################
-##Screen Toggle Script##
-########################
-#script: i3-xrandr-toggle
-#And add this to the i3 config file
-bindsym $mod+F8 exec i3-xrandr-toggle
-
-####################################
-##Log in/out/reboot/.. environment##
-####################################
-#script: i3-exit
-#And add this to the i3 config file
-set $mode_system System (l) lock, (e) logout, (s) suspend, (h) hibernate, (r) reboot, (Shift+s) shutdown
-mode "$mode_system" {
-    bindsym l exec --no-startup-id i3-exit lock, mode "default"
-    bindsym e exec --no-startup-id i3-exit logout, mode "default"
-    bindsym s exec --no-startup-id i3-exit suspend, mode "default"
-    bindsym h exec --no-startup-id i3-exit hibernate, mode "default"
-    bindsym r exec --no-startup-id i3-exit reboot, mode "default"
-    bindsym Shift+s exec --no-startup-id i3-exit shutdown, mode "default"
-
-    # back to normal: Enter or Escape
-    bindsym Return mode "default"
-    bindsym Escape mode "default"
-}
-bindcode 135 mode "$mode_system"
-
-################
-##Environments##
-################
-
-
+# To disable xfce-notifyid in order to make dunst work. 
+# You also have to restart your pc for this change to take effect.
+# In this folder you will also find the dunstrc 
+# configuration file you need.
+
+###########
+##Scripts##
+###########
+# All the scripts in this folder get called at some point.
+# In the i3 configuration file. All the scripts are adequately
+# commented to understand what they do.

+ 245 - 0
dunstrc

@@ -0,0 +1,245 @@
+[global]
+    font = Monospace 8
+    
+    # Allow a small subset of html markup:
+    #   <b>bold</b>
+    #   <i>italic</i>
+    #   <s>strikethrough</s>
+    #   <u>underline</u>
+    # 
+    # For a complete reference see
+    # <http://developer.gnome.org/pango/stable/PangoMarkupFormat.html>.
+    # 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 = "<b>%s</b>\n%b"
+    
+    # Sort messages by urgency.
+    sort = yes
+    
+    # Show how many messages are currently hidden (because of geometry).
+    indicate_hidden = no
+    
+    # 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 = 90
+    
+    # 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 = left
+
+    # Paths to default icons.
+    icon_folders = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/
+
+[frame]
+    width = 1
+    color = "#383838"
+
+[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+delete
+    
+    # Close all notifications.
+    #close_all = ctrl+shift+delete
+    
+    # Redisplay last message(s).
+    # On the US keyboard layout "grave" is normally above TAB and left
+    # of "1".
+    history = ctrl+space
+    
+    # Context menu.
+    close= 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 = "#181818"
+    foreground = "#E3C7AF"
+    timeout = 10
+
+[urgency_normal]
+    background = "#181818"
+    foreground = "#546470"
+    timeout = 10
+
+[urgency_critical]
+    background = "#181818"
+    foreground = "#DB7272"
+    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.
+
+#[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

+ 45 - 16
i3-copy-scripts

@@ -25,33 +25,36 @@
 
 # The subroutine that copies files
 
-version=1.0
-config_file=~/.config/i3/i3-copy-scripts
-
+version=1.1
+scripts_file=$HOME/.config/i3/i3-copy-scripts
+configs_file=$HOME/.config/i3/i3-copy-configs
 # This is the subroutine that performs the copying.
 # It checks that the config file exists and is not empty before
 # proceeding.
 
 copy_scripts()
 {
-line_number=1
-if [ ! -f $config_file ]; then
-        echo "The config file does not exist!"
+if [ ! -f $scripts_file ]; then
+        echo "The scrips file does not exist!"
         exit 2
-elif [ -z `sed -n "1p" $config_file` ]; then
-        echo "The config file is empty!"
+elif [ -z `sed -n "1p" $scripts_file` ]; then
+        echo "The scripts file is empty!"
         exit 2
 else
 
 # Here we copy all the scripts specified in the file
 # until we hit an empty line
+	line_number=1
+	while [ ! -z `sed -n "${line_number}p"  $scripts_file` ]; do
+		script=`sed -n "${line_number}p" $scripts_file`
+
+# Evaluate ~ if present
+		script="${script/#\~/$HOME}"
 
-	while [ ! -z `sed -n "${line_number}p" $config_file` ]; do
-		script=`sed -n "${line_number}p" $config_file`
+		echo "Copying $script..."
 
 # Here we abort if a script specified in the file does not exist
 # or cannot be located
-
 		if [ ! -f $script ]; then
 			echo "The script '$script' does not exist or I cannot find it."
 			echo "Aborting."
@@ -63,18 +66,41 @@ else
 # and we make it executable again for dom0. The change of permission must be done
 # locally, since invoking it with qvm-run within the appvm causes permission
 # problems.	
-
 		sudo chmod -x $script
 		qvm-copy-to-vm $1 $script
 		sudo chmod +x $script
 		let line_number=line_number+1
 	done
+
+# Here we copy all the configurations specified in the file
+# until we hit an empty line
+        line_number=1
+        while [ ! -z `sed -n "${line_number}p" $configs_file` ]; do
+                config=`sed -n "${line_number}p" $configs_file`
+
+# Evaluate ~ if present
+                config="${config/#\~/$HOME}"
+
+		echo "Copying $config..."
+
+# Here we abort if a configuration file specified in the file does not exist
+# or cannot be located
+                if [ ! -f $config ]; then
+                        echo "The configuration file '$config' does not exist or I cannot find it."
+                        echo "Aborting."
+                        exit 2
+                fi
+
+# Here we copy to appvm
+		qvm-copy-to-vm $1 $config
+                let line_number=line_number+1
+        done
+
 fi
 }
 
 
 # Here we give help messages and the like
-
 if [[ $# -le 1 ]]; then
          case $1 in
                -v | --version)
@@ -83,11 +109,12 @@ if [[ $# -le 1 ]]; then
                         ;;
                 -h | --help)
 			echo "This script is QubesOS specific."
-			echo "It copies all the scripts specified in a file to a vm of your choice."
-			echo "All the scripts must be specified in the format"
+			echo "It copies all the scripts/configuration files specified in a file to a vm of your choice."
+			echo "All the inputs must have the format"
 			echo "/path/to/script/script"
-			echo "There has to be one script per line, whithout empty lines."
+			echo "There has to be one input per line, whithout empty lines."
 			echo "The scripts to copy have to be specified in the file ~./config/i3/i3-copy-scripts."
+			echo "The configuration files to copy have to be specified in the file ~./config/i3/i3-copy-configs."
                         echo "- v, --version            Display current version"
                         echo "-h, --help                Display this message"
                         echo "vmname                    Copies the scripts to vmname appvm"
@@ -99,6 +126,7 @@ if [[ $# -le 1 ]]; then
                         	echo "Usage: $0 {-v, --version|-h, --help|up|toggle|down}"
                                 exit 2 
                         fi
+
 # Check if the appvm exists
 			if [ ! -d /var/lib/qubes/appvms/${1} ]; then 
 				echo "The appvm '$1' does not exist."
@@ -106,6 +134,7 @@ if [[ $# -le 1 ]]; then
 				echo "Aborting."
 				exit 2
 			else 
+
 # If the appvm exists, it copies the files
 			copy_scripts $1	
 			fi