aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md27
-rw-r--r--config/fish/config.fish26
-rwxr-xr-xget_dotfiles_location.sh6
-rw-r--r--i3/config22
-rw-r--r--i3/conkyrc.json4
-rw-r--r--offlineimap/expandvars.patch13
-rw-r--r--offlineimap/offlineimap@.service1
-rw-r--r--offlineimap/offlineimaprc1128
-rwxr-xr-xscripts/media_control.sh2
-rwxr-xr-xscripts/media_status.sh6
-rwxr-xr-xsetup.py81
-rw-r--r--xinitrc6
-rw-r--r--zshrc3
13 files changed, 163 insertions, 1162 deletions
diff --git a/README.md b/README.md
index ac5a6dd..2ff0c0b 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,26 @@
---
## Installation
-Some scripts use a hardcoded location so please locate the dotfile repo
-at $HOME/.dotfiles.
-To do this run
-```git clone https://github.com/fischerling/dotfiles $HOME/.dotfiles```.
+
+For some scripts/snippets you don't know where they will be executed.
+Whenever a absolute path into the dotfile directory is needed the environment
+variable `DOTFILES_LOCATION` is used.
+
+The variable is exported in zshrc or config.fish or xinitrc.
+If you don't set it that way, please remember to export `DOTFILES_LOCATION`
+somewhere else.
+
+Good places are:
+
++ shell configs
++ at session start
+
+
+### Easy Installation
+
+If you just want to install all my dotfiles without customisation run:
+```sh
+git clone https://github.com/fischerling/dotfiles ~/.dotfiles
+cd ~/.dotfiles
+./setup.py
+```
diff --git a/config/fish/config.fish b/config/fish/config.fish
index 322df54..bcc608c 100644
--- a/config/fish/config.fish
+++ b/config/fish/config.fish
@@ -1,10 +1,16 @@
+# export the path to our dotfiles
+if not set -q $DOTFILES_LOCATION
+ set -Ux DOTFILES_LOCATION (get_dotfiles_location)
+end
+
+
# autoload functions and completions in .dotfiles
-set fish_function_path $HOME/.dotfiles/config/fish/functions $fish_function_path
-set fish_complete_path $HOME/.dotfiles/config/fish/completions $fish_complete_path
+set fish_function_path $DOTFILES_LOCATION/config/fish/functions $fish_function_path
+set fish_complete_path $DOTFILES_LOCATION/config/fish/completions $fish_complete_path
# add git-alias subdirectory to functions path
-set fish_function_path $HOME/.dotfiles/config/fish/functions/git-alias $fish_function_path
+set fish_function_path $DOTFILES_LOCATION/config/fish/functions/git-alias $fish_function_path
if not set -q __fish_git_prompt_show_informative_status
@@ -27,6 +33,16 @@ if not set -q SSH_KEY_PATH
set -Ux SSH_KEY_PATH $HOME/.ssh/rsa_id
end
+# set yaourt specific VARS
+if type -q yaourt
+ if not set -q AURUSEGIT
+ set -Ux AURUSEGIT 1
+ end
+ if not set -q AURSHOWDIFF
+ set -Ux AURSHOWDIFF 1
+ end
+end
+
# PATH Stuff
# include cargo binaries
@@ -38,6 +54,10 @@ if type -q multirust
end
end
+if not contains /bin/core_perl $PATH
+ set PATH /bin/core_perl $PATH
+end
+
if not contains ~/.local/bin $PATH
set PATH ~/.local/bin $PATH
end
diff --git a/get_dotfiles_location.sh b/get_dotfiles_location.sh
new file mode 100755
index 0000000..98bebde
--- /dev/null
+++ b/get_dotfiles_location.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# see:
+# http://stackoverflow.com/questions/59895/can-a-bash-script-tell-which-directory-it-is-stored-in
+
+echo $(dirname "$(readlink -f "$0")")
diff --git a/i3/config b/i3/config
index f28591b..0cb16a4 100644
--- a/i3/config
+++ b/i3/config
@@ -47,9 +47,9 @@ bindsym $mod+Shift+q kill
# bindsym $mod+d exec --no-startup-id i3-dmenu-desktop
# programm starter
-bindsym $mod+d exec ~/.dotfiles/scripts/program_starter.sh
+bindsym $mod+d exec $DOTFILES_LOCATION/scripts/program_starter.sh
# ssh starter
-bindsym $mod+Shift+d exec ~/.dotfiles/scripts/ssh_starter.sh
+bindsym $mod+Shift+d exec $DOTFILES_LOCATION/scripts/ssh_starter.sh
# change focus
bindsym $mod+$left focus left
@@ -174,20 +174,20 @@ bar {
# Audio shortcuts
# # Volume
-bindsym XF86AudioLowerVolume exec ~/.dotfiles/scripts/audio_control.sh -5
-bindsym XF86AudioRaiseVolume exec ~/.dotfiles/scripts/audio_control.sh +5
-bindsym XF86AudioMute exec ~/.dotfiles/scripts/audio_control.sh toggle
+bindsym XF86AudioLowerVolume exec $DOTFILES_LOCATION/scripts/audio_control.sh -5
+bindsym XF86AudioRaiseVolume exec $DOTFILES_LOCATION/scripts/audio_control.sh +5
+bindsym XF86AudioMute exec $DOTFILES_LOCATION/scripts/audio_control.sh toggle
# # Music
-bindsym XF86AudioPrev exec ~/.dotfiles/scripts/media_control.sh prev
-bindsym XF86AudioPlay exec ~/.dotfiles/scripts/media_control.sh toggle
-bindsym XF86AudioNext exec ~/.dotfiles/scripts/media_control.sh next
+bindsym XF86AudioPrev exec $DOTFILES_LOCATION/scripts/media_control.sh prev
+bindsym XF86AudioPlay exec $DOTFILES_LOCATION/scripts/media_control.sh toggle
+bindsym XF86AudioNext exec $DOTFILES_LOCATION/scripts/media_control.sh next
## brightnescontroll
bindsym XF86MonBrightnessUp exec /usr/bin/xbacklight +10
bindsym XF86MonBrightnessDown exec /usr/bin/xbacklight -10
# Toogle Touchpad with Batterybutton
-bindsym XF86Battery exec ~/.dotfiles/scripts/toggle_syn_touchpad.sh
+bindsym XF86Battery exec $DOTFILES_LOCATION/scripts/toggle_syn_touchpad.sh
#hide broders
new_window pixel 3
@@ -198,10 +198,10 @@ new_window pixel 3
exec --no-startup-id xrandr --output HDMI1 --right-of eDP1
# set i3lock as xscreensaver
-exec --no-startup-id xss-lock -- i3lock -i ~/.dotfiles/wallpapers/blue_screen.png #-lock
+exec --no-startup-id xss-lock -- i3lock -i $DOTFILES_LOCATION/wallpapers/blue_screen.png #-lock
# Autostart Programms
-exec --no-startup-id feh --bg-fill ~/.dotfiles/wallpapers/nsa_wallpaper.png
+exec --no-startup-id feh --bg-fill $DOTFILES_LOCATION/wallpapers/nsa_wallpaper.png
exec --no-startup-id syndaemon -i 1 -d
#exec --no-startup-id nm-applet
exec --no-startup-id owncloud
diff --git a/i3/conkyrc.json b/i3/conkyrc.json
index 7a3ff39..96d791a 100644
--- a/i3/conkyrc.json
+++ b/i3/conkyrc.json
@@ -44,7 +44,7 @@ TEXT
############### music/ spotify/ mpd ###################
${if_match "${nodename_short}"!="fishbowl"}
- {"name":"music", "color": "\#ffffff", "full_text": "${exec ~/.dotfiles/scripts/media_status.sh}"},
+ {"name":"music", "color": "\#ffffff", "full_text": "${exec $DOTFILES_LOCATION/scripts/media_status.sh}"},
${endif}
@@ -73,7 +73,7 @@ TEXT
################ Volume ########################
{"name": "volume status", "color": "\#ffffff", "full_text":
- "${exec ~/.dotfiles/scripts/audio_status.sh}"},
+ "${exec $DOTFILES_LOCATION/scripts/audio_status.sh}"},
################# Battery ####################
diff --git a/offlineimap/expandvars.patch b/offlineimap/expandvars.patch
new file mode 100644
index 0000000..3f36fae
--- /dev/null
+++ b/offlineimap/expandvars.patch
@@ -0,0 +1,13 @@
+diff --git a/offlineimap/repository/IMAP.py b/offlineimap/repository/IMAP.py
+index e61f53d..8da0e19 100644
+--- a/offlineimap/repository/IMAP.py
++++ b/offlineimap/repository/IMAP.py
+@@ -378,7 +378,7 @@ class IMAPRepository(BaseRepository):
+ # 3. read password from file specified in Repository 'remotepassfile'
+ passfile = self.getconf('remotepassfile', None)
+ if passfile != None:
+- fd = codecs.open(os.path.expanduser(passfile), 'r', 'UTF-8')
++ fd = codecs.open(os.path.expandvars(os.path.expanduser(passfile)), 'r', 'UTF-8')
+ password = fd.readline().strip()
+ fd.close()
+ return password.encode('UTF-8')
diff --git a/offlineimap/offlineimap@.service b/offlineimap/offlineimap@.service
index 7b85df0..5868c1b 100644
--- a/offlineimap/offlineimap@.service
+++ b/offlineimap/offlineimap@.service
@@ -5,6 +5,7 @@ After=network.target
[Service]
User=%i
+EnvironmentFile=/etc/systemd/system/offlineimap@fischerling.env
ExecStart=/usr/bin/offlineimap
KillSignal=SIGUSR2
Restart=always
diff --git a/offlineimap/offlineimaprc b/offlineimap/offlineimaprc
index 23be1b0..d1204c8 100644
--- a/offlineimap/offlineimaprc
+++ b/offlineimap/offlineimaprc
@@ -1,1142 +1,26 @@
-# Offlineimap sample configuration file
-
-# This file documents *all* possible options and can be quite scary.
-# Looking for a quick start? Take a look at offlineimap.conf.minimal.
-# More details can be found at http://www.offlineimap.org .
-
-##################################################
-# Overview
-##################################################
-
-# The default configuration file is "~/.offlineimaprc".
-#
-# OfflineIMAP ships with a file named "offlineimap.conf" that you should copy to
-# that location and then edit.
-#
-# OfflineIMAP also ships a file named "offlineimap.conf.minimal" that you can
-# also try. It's useful if you want to get started with the most basic feature
-# set, and you can read about other features later with "offlineimap.conf".
-#
-# If you want to be XDG-compatible, you can put your configuration file into
-# "$XDG_CONFIG_HOME/offlineimap/config".
-
-##################################################
-# General definitions
-##################################################
-
-# NOTE 1: Settings generally support python interpolation. This means
-# values can contain python format strings which refer to other values
-# in the same section, or values in a special DEFAULT section. This
-# allows you for example to use common settings for multiple accounts:
-#
-# [Repository Gmail1]
-# trashfolder: %(gmailtrashfolder)s
-#
-# [Repository Gmail2]
-# trashfolder: %(gmailtrashfolder)s
-#
-# [DEFAULT]
-# gmailtrashfolder = [Gmail]/Papierkorb
-#
-# would set the trashfolder setting for your German Gmail accounts.
-
-# NOTE 2: Above feature implies that any '%' needs to be encoded as '%%'
-
-# NOTE 3: Any variable that is subject to the environment variables
-# ($NAME) and tilde (~username/~) expansions will receive tilde
-# expansion first and only after the environment variable will be
-# expanded in the resulting string. This behaviour is intentional
-# as it coincides with typical shell expansion strategy.
-
-# NOTE 4: multiple same-named sections.
-# The library used to parse the configuration file has known issue when multiple
-# sections have the same name. In such case, only the last section is considered.
-# It is strongly discouraged to have multiple sections with the same name.
-# See https://github.com/OfflineIMAP/offlineimap/issues/143 for more details.
+# Sample minimal config file. Copy this to ~/.offlineimaprc and edit to
+# get started fast.
[general]
-
-# This specifies where OfflineIMAP is to store its metadata.
-# This directory will be created if it does not already exist.
-#
-# Tilde and environment variable expansions will be performed.
-#
-#metadata = ~/.offlineimap
-
-
-# This option stands in the [general] section.
-#
-# This variable specifies which accounts are defined. Separate them with commas.
-# Account names should be alphanumeric only. You will need to specify one
-# section per account below. You may not use "general" for an account name.
-#
-# Always use ASCII characters only.
-#
accounts = FAUMail
-
-# This option stands in the [general] section.
-#
-# Offlineimap can synchronize more than one account at a time. If you want to
-# enable this feature, set the below value to something greater than 1. To
-# force it to synchronize only one account at a time, set it to 1.
-#
-# NOTE: if you are using autorefresh and have more than one account, you must
-# set this number to be >= to the number of accounts you have; since any given
-# sync run never "finishes" due to a timer, you will never sync your additional
-# accounts if this is 1.
-#
-#maxsyncaccounts = 1
-
-
-# This option stands in the [general] section.
-#
-# You can specify one or more user interface. OfflineIMAP will try the first in
-# the list, and if it fails, the second, and so forth.
-#
-# The pre-defined options are:
-# Blinkenlights -- A fancy (terminal) interface
-# TTYUI -- a text-based (terminal) interface
-# Basic -- Noninteractive interface suitable for cron'ing
-# Quiet -- Noninteractive interface, generates no output
-# except for errors.
-# MachineUI -- Interactive interface suitable for machine
-# parsing.
-#
-# See also offlineimapui(7)
-#
-# You can override this with a command-line option -u.
-#
-#ui = basic
-
-
-# This option stands in the [general] section.
-#
-# If you try to synchronize messages to a folder which the IMAP server
-# considers read-only, OfflineIMAP will generate a warning. If you want
-# to suppress these warnings, set ignore-readonly to yes. Read-only
-# IMAP folders allow reading but not modification, so if you try to
-# change messages in the local copy of such a folder, the IMAP server
-# will prevent OfflineIMAP from propagating those changes to the IMAP
-# server. Note that ignore-readonly is UNRELATED to the "readonly"
-# setting which prevents a repository from being modified at all.
-#
-#ignore-readonly = no
-
-
-########## Advanced settings
-
-# This option stands in the [general] section.
-#
-# You can give a Python source filename here and all config file
-# python snippets will be evaluated in the context of that file.
-# This allows you to e.g. define helper functions in the Python
-# source file and call them from this config file. You can find
-# an example of this in the manual.
-#
-# Tilde and environment variable expansions will be performed.
-#
-#pythonfile = ~/.offlineimap.py
-
-
-# This option is in the [general] section.
-#
-# By default, OfflineIMAP will not exit due to a network error until the
-# operating system returns an error code. Operating systems can sometimes take
-# forever to notice this. Here you can activate a timeout on the socket. This
-# timeout applies to individual socket reads and writes, not to an overall sync
-# operation. You could perfectly well have a 30s timeout here and your sync
-# still take minutes.
-#
-# Values in the 30-120 second range are reasonable.
-#
-# The default is to have no timeout beyond the OS. Times are given in seconds.
-#
-#socktimeout = 60
-
-
-# This option stands in the [general] section.
-#
-# By default, OfflineIMAP will use fsync() to force data out to disk at
-# opportune times to ensure consistency. This can, however, reduce performance.
-# Users where /home is on SSD (Flash) may also wish to reduce write cycles.
-# Therefore, you can disable OfflineIMAP's use of fsync(). Doing so will come
-# at the expense of greater risk of message duplication in the event of a system
-# crash or power loss. Default is true. Set it to false to disable fsync.
-#
-#fsync = true
-
-
-##################################################
-# Mailbox name recorder
-##################################################
-
-[mbnames]
-
-# OfflineIMAP can record your mailbox names in a format you specify.
-# You can define the header, each mailbox item, the separator,
-# and the footer. Here is an example for Mutt.
-# If enabled is yes, all six setting must be specified, even if they
-# are just the empty string "".
-#
-# The header, peritem, sep, and footer are all Python expressions passed
-# through eval, so you can (and must) use Python quoting.
-#
-# The incremental setting controls whether the file is written after each
-# account completes or once all synced accounts are complete. This is usefull if
-# an account is sightly slower than the other. It allows keeping the previous
-# file rather than having it partially written.
-# This works best with "no" if in one-shot mode started by cron or systemd
-# timers. Default: no.
-#
-# The following hash key are available to the expansion for 'peritem':
-# - accountname: the name of the corresponding account;
-# - foldername: the name of the folder;
-# - localfolders: path to the local directory hosting all Maildir
-# folders for the account.
-#
-# Tilde and environment variable expansions will be performed
-# for "filename" knob.
-#
-#enabled = no
-#filename = ~/Mutt/muttrc.mailboxes
-#header = "mailboxes "
-#peritem = "+%(accountname)s/%(foldername)s"
-#sep = " "
-#footer = "\n"
-#incremental = no
-
-
-# This option stands in the [mbnames] section.
-#
-# You can also specify a folderfilter. It will apply to the *translated* folder
-# name here, and it takes TWO arguments: accountname and foldername. In all
-# other ways, it will behave identically to the folderfilter for accounts.
-# Please see the folderfilter option for more information and examples.
-#
-# This filter can be used only to further restrict mbnames to a subset of
-# folders that pass the account's folderfilter.
-#
-# You can customize the order in which mailbox names are listed in the generated
-# file by specifying a sort_keyfunc, which takes a single dict argument
-# containing keys 'accountname' and 'foldername'. This function will be called
-# once for each mailbox, and should return a suitable sort key that defines this
-# mailbox' position in the custom ordering.
-#
-# This is useful with e.g. Mutt-sidebar, which uses the mailbox order from the
-# generated file when listing mailboxes in the sidebar.
-#
-# Default setting is:
-#sort_keyfunc = lambda d: (d['accountname'], d['foldername'])
-
-
-##################################################
-# Accounts
-##################################################
-
-# This is an account definition clause. You'll have one of these for each
-# account listed in the "accounts" option in [general] section (above).
-
[Account FAUMail]
-
-# These settings specify the two folders that you will be syncing.
-# You'll need to have a "Repository ..." section for each one.
-
localrepository = Local
remoterepository = Remote
-
-########## Advanced settings
-
-# This option stands in the [Account Test] section.
-#
-# You can have OfflineIMAP continue running indefinitely, automatically syncing
-# your mail periodically. If you want that, specify how frequently to do that
-# (in minutes) here. Fractional minutes (ie, 3.25) is allowed.
-#
-autorefresh = 1
-
-
-# This option stands in the [Account Test] section.
-#
-# OfflineImap can replace a number of full updates by quick synchronizations.
-# This option is ignored if maxage or startdate are used.
-#
-# It only synchronizes a folder if
-#
-# 1) a Maildir folder has changed
-#
-# or
-#
-# 2) if an IMAP folder has received new messages or had messages deleted, ie
-# it does not update if only IMAP flags have changed.
-#
-# Full updates need to fetch ALL flags for all messages, so this makes quite a
-# performance difference (especially if syncing between two IMAP servers).
-#
-# Specify 0 for never, -1 for always (works even in non-autorefresh mode)
-#
-# A positive integer <n> to do <n> quick updates before doing another full
-# synchronization (requires autorefresh). Updates are always performed after
-# <autorefresh> minutes, be they quick or full.
-#
-quick = 10
-
-
-# This option stands in the [Account Test] section.
-#
-# You can specify a pre and post sync hook to execute a external command. In
-# this case a call to imapfilter to filter mail before the sync process starts
-# and a custom shell script after the sync completes.
-#
-# The pre sync script has to complete before a sync to the account will start.
-#
-#presynchook = imapfilter -c someotherconfig.lua
-#postsynchook = notifysync.sh
-
-
-# This option stands in the [Account Test] section.
-#
-# You can specify a newmail hook to execute an external command upon receipt
-# of new mail in the INBOX.
-#
-# This example plays a sound file of your chosing when new mail arrives.
-#
-#newmail_hook = lambda: os.system("cvlc --play-and-stop --play-and-exit /path/to/sound/file.mp3" +
-# " > /dev/null 2>&1")
-
-
-# This option stands in the [Account Test] section.
-#
-# OfflineImap caches the state of the synchronisation to e.g. be able to
-# determine if a mail has been added or deleted on either side.
-#
-# The default and historical backend is 'plain' which writes out the
-# state in plain text files. On Repositories with large numbers of
-# mails, the performance might not be optimal, as we write out the
-# complete file for each change. Another new backend 'sqlite' is
-# available which stores the status in sqlite databases.
-#
-# If you switch the backend, you may want to delete the old cache
-# directory in ~/.offlineimap/Account-<account>/LocalStatus manually
-# once you are sure that things work.
-#
-#status_backend = plain
-
-
-# This option stands in the [Account Test] section.
-#
-# If you have a limited amount of bandwidth available you can exclude larger
-# messages (e.g. those with large attachments etc). If you do this it will
-# appear to OfflineIMAP that these messages do not exist at all. They will not
-# be copied, have flags changed etc. For this to work on an IMAP server the
-# server must have server side search enabled. This works with Gmail and most
-# imap servers (e.g. cyrus etc)
-#
-# The maximum size should be specified in bytes - e.g. 2000000 for approx 2MB
-#
-#maxsize = 2000000
-
-
-# This option stands in the [Account Test] section.
-#
-# maxage enables you to sync only recent messages. There are two ways to specify
-# what "recent" means: if maxage is given as an integer, then only messages from
-# the last maxage days will be synced. If maxage is given as a date, then only
-# messages later than that date will be synced.
-#
-# Messages older than the cutoff will not be synced, their flags will not be
-# changed, they will not be deleted, etc. For OfflineIMAP it will be like these
-# messages do not exist. This will perform an IMAP search in the case of IMAP or
-# Gmail and therefore requires that the server support server side searching.
-#
-# Known edge cases are described in offlineimap(1).
-#
-# maxage is allowed only when the local folder is of type Maildir. It can't be
-# used with startdate.
-#
-# The maxage option expects an integer (for the number of days) or a date of the
-# form yyyy-mm-dd.
-#
-#maxage = 3
-#maxage = 2015-04-01
-
-
-# This option stands in the [Account Test] section.
-#
-# Maildir file format uses colon (:) separator between uniq name and info.
-# Unfortunatelly colon is not allowed character in windows file name. If you
-# enable maildir-windows-compatible option, OfflineIMAP will be able to store
-# messages on windows drive, but you will probably loose compatibility with
-# other programs working with the maildir.
-#
-#maildir-windows-compatible = no
-
-
-# This option stands in the [Account Test] section.
-#
-# Specifies if we want to sync GMail labels with the local repository.
-# Effective only for GMail IMAP repositories.
-#
-# Non-ASCII characters in labels are bad handled or won't work at all.
-#
-#synclabels = no
-
-
-# This option stands in the [Account Test] section.
-#
-# Name of the header to use for label storage. Format for the header
-# value differs for different headers, because there are some de-facto
-# "standards" set by popular clients:
-#
-# - X-Label or Keywords keep values separated with spaces; for these
-# you, obviously, should not have label values that contain spaces;
-#
-# - X-Keywords use comma (',') as the separator.
-#
-# To be consistent with the usual To-like headers, for the rest of header
-# types we use comma as the separator.
-#
-# Use ASCII characters only.
-#
-#labelsheader = X-Keywords
-
-
-# This option stands in the [Account Test] section.
-#
-# Set of labels to be ignored. Comma-separated list. GMail-specific
-# labels all start with backslash ('\').
-#
-# Use ASCII characters only.
-#
-#ignorelabels = \Inbox, \Starred, \Sent, \Draft, \Spam, \Trash, \Important
-
-
-# This option stands in the [Account Test] section.
-#
-# OfflineIMAP can strip off some headers when your messages are propagated
-# back to the IMAP server. This option carries the comma-separated list
-# of headers to trim off. Header name matching is case-sensitive.
-#
-# This knob is respected only by IMAP-based accounts. Value of labelsheader
-# for GMail-based accounts is automatically added to this list, you don't
-# need to specify it explicitely.
-#
-# Use ASCII characters only.
-#
-#filterheaders = X-Some-Weird-Header
-
-
-# This option stands in the [Account Test] section.
-#
-# Use proxy connection for this account. Usefull to bypass the GFW in China.
-# To specify a proxy connection, join proxy type, host and port with colons.
-# Available proxy types are SOCKS5, SOCKS4, HTTP.
-# You also need to install PySocks through pip.
-#
-# Currently, this feature leaks DNS support.
-#
-#proxy = SOCKS5:IP:9999
-
[Repository Local]
-
-# Each repository requires a "type" declaration. The types supported for
-# local repositories are Maildir, GmailMaildir and IMAP.
-#
type = Maildir
-
-
-# This option stands in the [Repository LocalExample] section.
-#
-# Specify local repository. Your IMAP folders will be synchronized
-# to maildirs created under this path. OfflineIMAP will create the
-# maildirs for you as needed.
-#
localfolders = ~/Mail
-
-# This option stands in the [Repository LocalExample] section.
-#
-# You can specify the "folder separator character" used for your Maildir
-# folders. It is inserted in-between the components of the tree. If you
-# want your folders to be nested directories, set it to "/". 'sep' is
-# ignored for IMAP repositories, as it is queried automatically.
-# Otherwise, default value is ".".
-#
-# Don't use quotes.
-#
-#sep = .
-
-
-# This option stands in the [Repository LocalExample] section.
-#
-# startdate syncs mails starting from a given date. It applies the date
-# restriction to LocalExample only. The remote repository MUST be empty
-# at the first sync where this option is used.
-#
-# Unlike maxage, this is supported for IMAP-IMAP sync.
-#
-# startdate can't be used with maxage.
-#
-# The startdate option expects a date in the format yyyy-mm-dd.
-#
-#startdate = 2015-04-01
-
-
-# This option stands in the [Repository LocalExample] section.
-#
-# Some users may not want the atime (last access time) of folders to be
-# modified by OfflineIMAP. If 'restoreatime' is set to yes, OfflineIMAP
-# will restore the atime of the "new" and "cur" folders in each maildir
-# folder to their original value after each sync.
-#
-# In nearly all cases, the default should be fine.
-#
-#restoreatime = no
-
-
-# This option stands in the [Repository LocalExample] section.
-#
-# Set modification time of messages basing on the message's "Date" header. This
-# option makes sense for the Maildir type, only.
-#
-# This is useful if you are doing some processing/finding on your Maildir (for
-# example, finding messages older than 3 months), without parsing each
-# file/message content.
-#
-# If enabled, this forbid the -q (quick mode) CLI option to work correctly.
-#
-# Default: no.
-#
-#utime_from_header = no
-
-
-# This option stands in the [Repository LocalExample] section.
-#
-# This option is similar to "utime_from_header" and could be use as a
-# complementary feature to keep track of a message date. This option only
-# makes sense for the Maildir type.
-#
-# By default each message is stored in a file which prefix is the fetch
-# timestamp and an order rank such as "1446590057_0". In a multithreading
-# environment message are fetched in a random order, then you can't trust
-# the file name to sort your boxes.
-#
-# If set to "yes" the file name prefix if build on the message "Date" header
-# (which should be present) or the "Received-date" if "Date" is not
-# found. If neither "Received-date" nor "Date" is found, the current system
-# date is used. Now you can quickly sort your messages using their file
-# names.
-#
-# Used in combination with "utime_from_header" all your message would be in
-# order with the correct mtime attribute.
-#
-#filename_use_mail_timestamp = no
-
-# This option stands in the [Repository LocalExample] section.
-#
-# Map IMAP [user-defined] keywords to lowercase letters, similar to Dovecot's
-# format described in http://wiki2.dovecot.org/MailboxFormat/Maildir . This
-# option makes sense for the Maildir type, only.
-#
-# Configuration example:
-# customflag_x = some_keyword
-#
-# With the configuration example above enabled, all IMAP messages that have
-# 'some_keyword' in their FLAGS field will have an 'x' in the flags part of the
-# maildir filename:
-# 1234567890.M20046P2137.mailserver,S=4542,W=4642:2,Sx
-#
-# Valid fields are customflag_[a-z], valid values are whatever the IMAP server
-# allows.
-#
-# Comparison in offlineimap is case-sensitive.
-#
-#customflag_a = some_keyword
-#customflag_b = $OtherKeyword
-#customflag_c = NonJunk
-#customflag_d = ToDo
-
-[Repository GmailLocalExample]
-
-# This type of repository enables syncing of Gmail. All Maildir
-# configuration settings are also valid here.
-#
-# This is a separate Repository type from Maildir because it involves
-# some extra overhead which sometimes may be significant. We look for
-# modified tags in local messages by looking only to the files
-# modified since last run. This is usually rather fast, but the first
-# time OfflineIMAP runs with synclabels enabled, it will have to check
-# the contents of all individual messages for labels and this may take
-# a while.
-#
-type = GmailMaildir
-
-
[Repository Remote]
-
-# The remote repository. We only support IMAP or Gmail here.
-#
type = IMAP
-
-
-# This option stands in the [Repository RemoteExample] section.
-#
-# Configure which address family to use for the connection. If not specified,
-# AF_UNSPEC is used as a fallback (default).
-#
-# AF_INET6:
-#ipv6 = True
-#
-# AF_INET:
-#ipv6 = False
-
-
-# These options stands in the [Repository RemoteExample] section.
-#
-# The following can fetch the account credentials via a python expression that
-# is parsed from the pythonfile parameter. For example, a function called
-# "getcredentials" that parses a file "filename" and returns the account
-# details for "hostname".
-#
-#remotehosteval = getcredentials("filename", "hostname", "hostname")
-#remoteporteval = getcredentials("filename", "hostname", "port")
-#remoteusereval = getcredentials("filename", "hostname", "user")
-#remotepasseval = getcredentials("filename", "hostname", "passwd")
-
-
-# This option stands in the [Repository RemoteExample] section.
-#
-# Specify the remote hostname.
-#
remotehost = faumail.uni-erlangen.de
-
-
-# This option stands in the [Repository RemoteExample] section.
-#
-# Whether or not to use SSL.
-#
-# Note: be care to configure the 'remotehost' line with the domain name defined
-# in the certificate. E.g., if you trust your provider and want to use the
-# certificate it provides on a shared server. Otherwise, OfflineIMAP will stop
-# and say that the domain is not named in the certificate.
-#
-ssl = yes
-
-
-# This option stands in the [Repository RemoteExample] section.
-#
-# SSL Client certificate (optional).
-#
-# Tilde and environment variable expansions will be performed.
-#
-#sslclientcert = /path/to/file.crt
-
-
-# This option stands in the [Repository RemoteExample] section.
-#
-# SSL Client key (optional).
-#
-# Tilde and environment variable expansions will be performed.
-#
-#sslclientkey = /path/to/file.key
-
-
-# This option stands in the [Repository RemoteExample] section.
-#
-# SSL CA Cert(s) to verify the server cert against (optional).
-# No SSL verification is done without this option. If it is
-# specified, the CA Cert(s) need to verify the Server cert AND
-# match the hostname (* wildcard allowed on the left hand side)
-# The certificate should be in PEM format.
-#
-# Tilde and environment variable expansions will be performed.
-#
-# Special value OS-DEFAULT makes OfflineIMAP to automatically
-# determine system-wide location of standard trusted CA roots file
-# for known OS distributions and use the first bundle encountered
-# (if any). If no system-wide CA bundle is found, OfflineIMAP
-# will refuse to continue; this is done to prevent creation
-# of false security expectations ("I had configured CA bundle,
-# thou certificate verification shalt be present").
-#
-# You can also use fingerprint verification via cert_fingerprint.
-# See below for more verbose explanation.
-#
-#sslcacertfile = /path/to/cacertfile.crt
-
-
-# This option stands in the [Repository RemoteExample] section.
-#
-# If you connect via SSL/TLS (ssl = yes) and you have no CA certificate
-# specified, OfflineIMAP will refuse to sync as it connects to a server
-# with an unknown "fingerprint". If you are sure you connect to the
-# correct server, you can then configure the presented server
-# fingerprint here. OfflineIMAP will verify that the server fingerprint
-# has not changed on each connect and refuse to connect otherwise.
-#
-# You can also configure fingerprint validation in addition to
-# CA certificate validation above and it will check both:
-# OfflineIMAP fill verify certificate first and if things will be fine,
-# fingerprint will be validated.
-#
-# Multiple fingerprints can be specified, separated by commas.
-#
-# In Windows, Microsoft uses the term "thumbprint" instead of "fingerprint".
-#
-# Fingerprints must be in hexadecimal form without leading '0x':
-# 40 hex digits like bbfe29cf97acb204591edbafe0aa8c8f914287c9.
-#
-cert_fingerprint = BB9EE687E92693794C752F57C53483076DEF2755
-
-
-# This option stands in the [Repository RemoteExample] section.
-#
-# Set SSL version to use (optional).
-#
-# It is best to leave this unset, in which case the correct version will be
-# automatically detected. In rare cases, it may be necessary to specify a
-# particular version from: tls1, ssl2, ssl3, ssl23.
-#
-# ssl23 is the highest protocol version that both the client and server support.
-# Despite the name, this option can select “TLS” protocols as well as “SSL”.
-#
-# See the configuration option tls_level to automatically disable insecure
-# protocols.
-#
-#ssl_version = ssl23
-
-
-# This option stands in the [Repository RemoteExample] section.
-#
-# TLS support level (optional).
-#
-# Specify the level of support that should be allowed for this repository.
-# Can be used to disallow insecure SSL versions as defined by IETF
-# (see https://tools.ietf.org/html/rfc6176).
-#
-# Supported values are:
-# tls_secure, tls_no_ssl, tls_compat (the default).
-#
-#tls_level = tls_compat
-
-
-# This option stands in the [Repository RemoteExample] section.
-#
-# Specify the port. If not specified, use a default port.
-#
remoteport = 993
-
-
-# This option stands in the [Repository RemoteExample] section.
-#
-# Specify the remote user name.
-#
remoteuser = aj46ezos
+remotepassfile = $DOTFILES_LOCATION/decrypted/FAU.IMAP.PASS
+ssl=yes
+cert_fingerprint = BB9EE687E92693794C752F57C53483076DEF2755
-# This option stands in the [Repository RemoteExample] section.
-#
-# Specify the user to be authorized as. Sometimes we want to
-# authenticate with our login/password, but tell the server that we
-# really want to be treated as some other user; perhaps server will
-# allow us to do that (or maybe not). Some IMAP servers migrate
-# account names using this functionality: your credentials remain
-# intact, but remote identity changes.
-#
-# Currently this variable is used only for SASL PLAIN authentication
-# mechanism, so consider using auth_mechanisms to prioritize PLAIN
-# or even make it the only mechanism to be tried.
-#
-#remote_identity = authzuser
-
-
-# This option stands in the [Repository RemoteExample] section.
-#
-# Specify which authentication/authorization mechanisms we should try and the
-# order in which OfflineIMAP will try them.
-#
-# NOTE: any given mechanism will be tried ONLY if it is supported by the remote
-# IMAP server.
-#
-# Default value is ranged is from strongest to more weak ones. Due to technical
-# limitations, if GSSAPI is set, it will be tried first, no matter where it was
-# specified in the list.
-#
-#auth_mechanisms = GSSAPI, CRAM-MD5, XOAUTH2, PLAIN, LOGIN
-
-
-# This option stands in the [Repository RemoteExample] section.
-#
-# XOAuth2 authentication (for instance, to use with Gmail).
-#
-# This option was tested on Gmail only, but should work
-# with type = IMAP for compatible servers.
-#
-# Mandatory parameters are "oauth2_client_id", "oauth2_client_secret" and
-# either "oauth2_refresh_token" or "oauth2_access_token".
-# See below to learn how to get those.
-#
-# Specify the OAuth2 client id and secret to use for the connection..
-# Here's how to register an OAuth2 client for Gmail, as of 10-2-2016:
-# - Go to the Google developer console
-# https://console.developers.google.com/project
-# - Create a new project
-# - In API & Auth, select Credentials
-# - Setup the OAuth Consent Screen
-# - Then add Credentials of type OAuth 2.0 Client ID
-# - Choose application type Other; type in a name for your client
-# - You now have a client ID and client secret
-#
-#oauth2_client_id = YOUR_CLIENT_ID
-#oauth2_client_secret = YOUR_CLIENT_SECRET
-
-# Specify the refresh token to use for the connection to the mail server.
-# Here's an example of a way to get a refresh token:
-# - Clone this project: https://github.com/google/gmail-oauth2-tools
-# - Type the following command-line in a terminal and follow the instructions
-# python python/oauth2.py --generate_oauth2_token \
-# --client_id=YOUR_CLIENT_ID --client_secret=YOUR_CLIENT_SECRET
-# - Access token can be obtained using refresh token with command
-# python python/oauth2.py --user=YOUR_EMAIL --client_id=YOUR_CLIENT_ID
-# --client_secret=YOUR_CLIENT_SECRET --refresh_token=REFRESH_TOKEN
-#
-#oauth2_refresh_token = REFRESH_TOKEN
-#oauth2_access_token = ACCESS_TOKEN
-
-########## Passwords
-
-# There are six ways to specify the password for the IMAP server:
-#
-# 1. No password at all specified in the config file.
-# If a matching entry is found in ~/.netrc (see netrc (5) for
-# information) this password will be used. Do note that netrc only
-# allows one entry per hostname. If there is no ~/.netrc file but
-# there is an /etc/netrc file, the password will instead be taken
-# from there. Otherwise you will be prompted for the password when
-# OfflineIMAP starts when using a UI that supports this.
-#
-# 2. The remote password stored in this file with the remotepass
-# option. Any '%' needs to be encoded as '%%'. Example:
-# remotepass = mypassword
-#
-# 3. The remote password stored as a single line in an external
-# file, which is referenced by the remotefile option. Example:
-# remotepassfile = ~/Password.IMAP.Account1
-#
-# 4. With a preauth tunnel. With this method, you invoke an external
-# program that is guaranteed *NOT* to ask for a password, but rather
-# to read from stdin and write to stdout an IMAP procotol stream that
-# begins life in the PREAUTH state. When you use a tunnel, you do
-# NOT specify a user or password (if you do, they'll be ignored.)
-# Instead, you specify a preauthtunnel, as this example illustrates
-# for Courier IMAP on Debian:
-# preauthtunnel = ssh -q imaphost '/usr/bin/imapd ./Maildir'
-#
-# 5. If you are using Kerberos and have the Python Kerberos package
-# installed, you should not specify a remotepass. If the user has a
-# valid Kerberos TGT, OfflineIMAP will figure out the rest all by
-# itself, and fall back to password authentication if needed.
-#
-# 6. Using arbitrary python code. With this method, you invoke a
-# function from your pythonfile. To use this method assign the name
-# of the function to the variable 'remotepasseval'. Example:
-# remotepasseval = get_password("imap.example.net")
-# You can also query for the username:
-# remoteusereval = get_username("imap.example.net")
-# This method can be used to design more elaborate setups, e.g. by
-# querying the gnome-keyring via its python bindings.
-
-remotepassfile = ~/.dotfiles/decrypted/FAU.IMAP.PASS
-
-########## Advanced settings
-
-
-# These options stands in the [Repository RemoteExample] section.
-#
-# Tunnels. There are two types:
-#
-# - preauth: they teleport your connection to the remote system
-# and you don't need to authenticate yourself there; the sole
-# fact that you succeeded to get the tunnel running is enough.
-# This tunnel type was explained above in the 'Passwords' section.
-#
-# - transport: the just provide the transport (probably encrypted)
-# to the IMAP server, but you still need to authenticate at the
-# IMAP server.
-#
-# Tunnels are currently working only with IMAP servers and their
-# derivatives (GMail currently). Additionally, for GMail accounts
-# preauth tunnel settings are ignored: we don't believe that there
-# are ways to preauthenticate at Google mail system IMAP servers.
-#
-# You must choose at most one tunnel type, be wise M'Lord!
-#
-#preauthtunnel = ssh -q imaphost '/usr/bin/imapd ./Maildir'
-#transporttunnel = openssl s_client -host myimap -port 993 -quiet
-
-
-# This option stands in the [Repository RemoteExample] section.
-#
-# Some IMAP servers need a "reference" which often refers to the "folder root".
-#
-# This is most commonly needed with UW IMAP, where you might need to specify the
-# directory in which your mail is stored. The 'reference' value will be prefixed
-# to all folder paths refering to that repository. E.g. accessing folder 'INBOX'
-# with "reference = Mail" will try to access Mail/INBOX.
-#
-# The nametrans and folderfilter functions will apply to the full path,
-# including the reference prefix. Most users will not need this.
-#
-#reference = Mail
-
-
-# This option stands in the [Repository RemoteExample] section.
-#
-# IMAP defines an encoding for non-ASCII ("international") characters. Enable
-# this option if you want to decode them to the nowadays ubiquitous UTF-8.
-#
-# Note that the IMAP 4rev1 specification (RFC 3501) allows both UTF-8 and
-# modified UTF-7 folder names.
-#
-# WARNING: with this option enabled:
-# - compatibility with any other version is NOT GUARANTED (including newer);
-# - no support is provided.
-#
-#decodefoldernames = no
-
-
-# This option stands in the [Repository RemoteExample] section.
-#
-# In between synchronisations, OfflineIMAP can monitor mailboxes for new
-# messages using the IDLE command. If you want to enable this, specify here the
-# folders you wish to monitor. IMAP protocol requires a separate connection for
-# each folder monitored in this way, so setting this option will force settings
-# for:
-#
-# - maxconnections: to be at least the number of folders you give
-# - holdconnectionopen: to be true
-# - keepalive: to be 29 minutes unless you specify otherwise
-#
-# This feature isn't complete and may well have problems. See the "Known Issues"
-# entry in the manual for more details.
-#
-# This option should return a Python list. For example
-#
-#idlefolders = ['INBOX', 'INBOX.Alerts']
-
-
-# This option stands in the [Repository RemoteExample] section.
-#
-# OfflineIMAP can use a compressed connection to the IMAP server.
-# This can result in faster downloads for some cases.
-#
-#usecompression = yes
-
-
-# This option stands in the [Repository RemoteExample] section.
-#
-# OfflineIMAP can use multiple connections to the server in order
-# to perform multiple synchronization actions simultaneously.
-# This may place a higher burden on the server. In most cases,
-# setting this value to 2 or 3 will speed up the sync, but in some
-# cases, it may slow things down. The safe answer is 1. You should
-# probably never set it to a value more than 5.
-#
-#maxconnections = 2
-
-
-# This option stands in the [Repository RemoteExample] section.
-#
-# OfflineIMAP normally closes IMAP server connections between refreshes if
-# the global option autorefresh is specified. If you wish it to keep the
-# connection open, set this to true. If not specified, the default is
-# false. Keeping the connection open means a faster sync start the
-# next time and may use fewer server resources on connection, but uses
-# more server memory. This setting has no effect if autorefresh is not set.
-#
holdconnectionopen = yes
-
-
-# This option stands in the [Repository RemoteExample] section.
-#
-# If you want to have "keepalives" sent while waiting between syncs, specify the
-# amount of time IN SECONDS between keepalives here. Note that sometimes more
-# than this amount of time might pass, so don't make it tight. This setting has
-# no effect if autorefresh and holdconnectionopen are not both set.
-#
-keepalive = 120
-
-
-# This option stands in the [Repository RemoteExample] section.
-#
-# Normally, OfflineIMAP will expunge deleted messages from the server. You can
-# disable that if you wish. This means that OfflineIMAP will mark them deleted
-# on the server, but not actually delete them. You must use some other IMAP
-# client to delete them if you use this setting; otherwise, the messages will
-# just pile up there forever. Therefore, this setting is definitely NOT
-# recommended for a long term.
-#
-#expunge = no
-
-
-# This option stands in the [Repository RemoteExample] section.
-#
-# Specify whether to process all mail folders on the server, or only
-# those listed as "subscribed".
-#
-#subscribedonly = no
-
-
-# This option stands in the [Repository RemoteExample] section.
-#
-# You can specify a folder translator. This must be a eval-able.
-#
-# Python expression that takes a foldername arg and returns the new value. A
-# lambda function is suggested.
-#
-# WARNING: you MUST construct it so that it NEVER returns the same value for two
-# folders, UNLESS the second values are filtered out by folderfilter below.
-# Failure to follow this rule will result in undefined behavior.
-#
-# If you enable nametrans, you will likely need to set the reversed nametrans on
-# the other side. See the user documentation for details and use cases. They
-# are also online at: http://www.offlineimap.org/doc/nametrans.html
-#
-# This example below will remove "INBOX." from the leading edge of folders
-# (great for Courier IMAP users).
-#
-#nametrans = lambda foldername: re.sub('^INBOX\.', '', foldername)
-#
-# Using Courier remotely and want to duplicate its mailbox naming locally? Try
-# this:
-#
-#nametrans = lambda foldername: re.sub('^INBOX\.*', '.', foldername)
-
-
-# This option stands in the [Repository RemoteExample] section.
-#
-# Determines if folderfilter will be invoked on each run (dynamic folder
-# filtering) or filtering status will be determined at startup (default
-# behaviour).
-#
-#dynamic_folderfilter = False
-
-
-# This option stands in the [Repository RemoteExample] section.
-#
-# You can specify which folders to sync using the folderfilter setting. You can
-# provide any python function (e.g. a lambda function) which will be invoked for
-# each foldername. If the filter function returns True, the folder will be
-# synced, if it returns False, it.
-#
-# The folderfilter operates on the *UNTRANSLATED* name (before any nametrans
-# translation takes place).
-#
-# Example 1: synchronizing only INBOX and Sent.
-#
-#folderfilter = lambda foldername: foldername in ['INBOX', 'Sent']
-#
-# Example 2: synchronizing everything except Trash.
-#
-#folderfilter = lambda foldername: foldername not in ['Trash']
-#
-# Example 3: Using a regular expression to exclude Trash and all folders
-# containing the characters "Del".
-#
-#folderfilter = lambda foldername: not re.search('(^Trash$|Del)', foldername)
-#
-# If folderfilter is not specified, ALL remote folders will be synchronized.
-#
-# You can span multiple lines by indenting the others. (Use backslashes at the
-# end when required by Python syntax) For instance:
-#
-#folderfilter = lambda foldername: foldername in [
-# 'INBOX', 'Sent Mail',
-# 'Deleted Items', 'Received']
-
-
-# This option stands in the [Repository RemoteExample] section.
-#
-# You can specify folderincludes to include additional folders. It should
-# return a Python list. This might be used to include a folder that was
-# excluded by your folderfilter rule, to include a folder that your server does
-# not specify with its LIST option, or to include a folder that is outside your
-# basic reference.
-#
-# The 'reference' value will not be prefixed to this folder name, even if you
-# have specified one. For example:
-#
-#folderincludes = ['debian.user', 'debian.personal']
-
-
-# This option stands in the [Repository RemoteExample] section.
-#
-# If you do not want to have any folders created on this repository,
-# set the createfolders variable to False, the default is True. Using
-# this feature you can e.g. disable the propagation of new folders to
-# the new repository.
-#
-#createfolders = True
-
-
-# This option stands in the [Repository RemoteExample] section.
-#
-# 'foldersort' determines how folders are sorted.
-#
-# This affects order of synchronization and mbnames. The expression should
-# return -1, 0, or 1, as the default Python cmp() does. The two arguments, x
-# and y, are strings representing the names of the folders to be sorted. The
-# sorting is applied *AFTER* nametrans, if any. The default is to sort IMAP
-# folders alphabetically (case-insensitive). Usually, you should never have to
-# modify this. To eg. reverse the sort:
-#
-#foldersort = lambda x, y: -cmp(x, y)
-
-
-# This option stands in the [Repository RemoteExample] section.
-#
-# Enable 1-way synchronization. When setting 'readonly' to True, this
-# repository will not be modified during synchronization. Usefull to
-# e.g. backup an IMAP server. The readonly setting can be applied to any
-# type of Repository (Maildir, Imap, etc).
-#
-#readonly = False
-
-
-[Repository GmailExample]
-
-# A repository using Gmail's IMAP interface.
-#
-# Any configuration parameter of "IMAP" type repositories can be used here.
-# Only "remoteuser" (or "remoteusereval" ) is mandatory. Default values for
-# other parameters are OK, and you should not need fiddle with those.
-#
-# The Gmail repository will use hard-coded values for "remotehost",
-# "remoteport", "tunnel" and "ssl". Any attempt to set those parameters will be
-# silently ignored. For details, see
-#
-# http://mail.google.com/support/bin/answer.py?answer=78799&topic=12814
-#
-# To enable GMail labels synchronisation, set the option "synclabels"
-# in the corresponding "Account" section.
-#
-type = Gmail
-
-
-# This option stands in the [Repository GmailExample] section.
-#
-# Specify the Gmail user name. This is the only mandatory parameter.
-#
-remoteuser = username@gmail.com
-
-
-# This option stands in the [Repository GmailExample] section.
-#
-# The trash folder name may be different from [Gmail]/Trash due to localization.
-# You should look for the localized names of the spam folder too: "spamfolder"
-# tunable will help you to override the standard name.
-#
-# For example on German Gmail, this setting should be:
-#
-#trashfolder = [Gmail]/Papierkorb
+keepalive = 180
diff --git a/scripts/media_control.sh b/scripts/media_control.sh
index d8f7f79..ae883db 100755
--- a/scripts/media_control.sh
+++ b/scripts/media_control.sh
@@ -53,7 +53,7 @@ then
exit
fi
- spotify_playing=$($HOME/.dotfiles/scripts/media_is_spotify_playing.sh)
+ spotify_playing=$($DOTFILES_LOCATION/scripts/media_is_spotify_playing.sh)
if mpc | grep "\[playing\]" &> /dev/null
then
mpd_playing=true
diff --git a/scripts/media_status.sh b/scripts/media_status.sh
index a7218ee..a2a7530 100755
--- a/scripts/media_status.sh
+++ b/scripts/media_status.sh
@@ -1,6 +1,6 @@
#!/bin/bash
mpd_playing=$(mpc 2>/dev/null | grep "\[playing\]")
-spotify_playing=$($HOME/.dotfiles/scripts/media_is_spotify_playing.sh)
+spotify_playing=$($DOTFILES_LOCATION/scripts/media_is_spotify_playing.sh)
if [[ $spotify_playing == "true" ]]
then
@@ -14,7 +14,7 @@ then
then
echo "Spotify: ad :/"
else
- echo Spotify: "▶" $($HOME/.dotfiles/scripts/media_print_spotify_info.sh)
+ echo Spotify: "▶" $($DOTFILES_LOCATION/scripts/media_print_spotify_info.sh)
fi
fi
elif [[ $mpd_playing != "" ]]
@@ -27,7 +27,7 @@ then
fi
elif pgrep spotify &>/dev/null
then
- echo Spotify: "▐▐" $($HOME/.dotfiles/scripts/media_print_spotify_info.sh)
+ echo Spotify: "▐▐" $($DOTFILES_LOCATION/scripts/media_print_spotify_info.sh)
elif pgrep mpd &>/dev/null
then
if type mpc &>/dev/null
diff --git a/setup.py b/setup.py
index 76d541d..1f5fe83 100755
--- a/setup.py
+++ b/setup.py
@@ -4,9 +4,11 @@
import argparse
import os
+import pwd
import sys
import subprocess
+user = pwd.getpwuid(os.getuid())[0]
home_dir = os.getenv("HOME")
cwd = os.getcwd()
@@ -38,6 +40,46 @@ def fish_config(quiet):
subprocess.run(["fish", dir_path+"fisher.fish"])
+def dotfile_loc_helper(quiet):
+ """Create a symlink of get_dotfiles_location.sh into the path"""
+
+ try:
+ os.symlink(cwd + "/get_dotfiles_location.sh",
+ home_dir + "/.local/bin/get_dotfiles_location")
+ except Exception as e:
+ if isinstance(e, FileExistsError):
+ pass
+ else:
+ return e
+
+def offlineimap_passwd(quiet):
+ """Write the environment file for the systemd unit"""
+ res = dotfile_loc_helper(quiet):
+ if res:
+ return res
+ env_file_path = "/etc/systemd/system/offlineimap@fischerling.env"
+ if not os.path.exists(env_file_path):
+ try:
+ subprocess.run(["get_dotfiles_location", ">",
+ env_file_path])
+ except Exception as e:
+ if isinstance(e, PermissionError):
+ subprocess.run(["get_dotfiles_location", "|", "sudo", "tee", "-a",
+ env_file_path, ">", "/dev/null"])
+ else:
+ return e
+
+def offlineimap_warn(quiet):
+ """Print a warning about my offlineimap setup"""
+
+ if not quiet:
+ print("! WARNING !")
+ print("My offlineimap setup uses a patched version !")
+ print("The patch can be found at offlineimap/expandvars.patch.")
+ print("Only proceed if you know what you are doing")
+ if input("Want to continue ? (y/N) ") not in ["Y","y"]:
+ exit("Aborting.")
+
# targets are a list of tuples<file name, link destination> and/or functions
targets = {
@@ -48,7 +90,8 @@ targets = {
"ssh-config":
[("ssh/config", home_dir + "/.ssh/config")],
"xinitrc":
- [("xinitrc", home_dir + "/.xinitrc")],
+ [("xinitrc", home_dir + "/.xinitrc"),
+ dotfile_loc_helper],
"Xresources":
[("Xresources", home_dir + "/.Xresources")],
"mutt":
@@ -58,21 +101,25 @@ targets = {
"zshrc":
[("zshrc", home_dir + "/zshrc")],
"i3-config":
- [("i3", home_dir + "/.i3")],
+ [("i3", home_dir + "/.i3"),
+ dotfile_loc_helper],
"dir_colors":
[("dir_colors", home_dir + "/.dir_colors")],
"fish-config":
[("config/fish/config.fish", home_dir + "/.config/fish/config.fish"),
("config/fish/fishfile", home_dir + "/.config/fish/fishfile"),
- fish_config],
+ fish_config,
+ dotfile_loc_helper],
"terminator-config":
[("config/terminator/config", home_dir +
"/.config/terminator/config")],
"offlineimap":
- [("offlineimap/offlineimaprc", home_dir + "/.offlineimaprc"),
- ("offlineimap/FAU.IMAP.PASS.gpg", ""),
+ [offlineimap_warn,
+ ("offlineimap/offlineimaprc", home_dir + "/.offlineimaprc"),
+ ("offlineimap/FAU.IMAP.PASS.gpg", home_dir +"/.fau_imap_pass"),
("offlineimap/offlineimap@.service",
- "/etc/systemd/system/offlineimap@.service")],
+ "/etc/systemd/system/offlineimap@" + user + ".service"),
+ offlineimap_passwd],
"FAU":
[("FAU/wl-FAU-STUD.gpg", "/etc/netctl/wl-FAU-STUD"),
("FAU/fau_stud.conf.gpg", "/etc/wpa_supplicant/fau_stud.conf"),
@@ -90,8 +137,9 @@ def install_target(target, quiet):
for instruction in targets[target]:
if isinstance(instruction, tuple):
if not os.path.exists(instruction[0]):
- print("Can't find", instruction[0] +
- ". Please make sure you are in the right directory.", file=sys.stderr)
+ print("Can't find", instruction[0],
+ ". Please make sure you are in the right directory.",
+ file=sys.stderr)
else:
# check if file is encrypted
if instruction[0][-4:] == ".gpg":
@@ -110,7 +158,8 @@ def install_target(target, quiet):
# set privacy friendly file permissions
if not subprocess.run(["chmod", "660", instruction[0]]):
print("Skipping because changing permissions of",
- instruction[1], "failed. This could be a privacy risk!")
+ instruction[1], "failed. This could be a",
+ "privacy risk!", file=sys.stderr)
continue
else:
print("Decrypting failed", file=sys.stderr)
@@ -129,7 +178,7 @@ def install_target(target, quiet):
subprocess.run(["sudo", "ln", "-s",
cwd + '/' + instruction[0], instruction[1]])
elif isinstance(e, FileExistsError):
- print("File already exists")
+ print("File already exists", file=sys.stderr)
else:
print(e, file=sys.stderr)
@@ -138,14 +187,14 @@ def install_target(target, quiet):
print("Running function", instruction)
res = instruction(quiet)
if res:
- if not quiet:
- print("The instruction", instruction, "of", target, "failed with", str(res) + ".")
- print("This can leaf your installation in a broken state")
- print("ABORTING to prevent failures.")
- exit(res)
+ print("The instruction", instruction, "of", target,
+ "failed with", str(res) + ".", file=sys.stderr)
+ print("This can leaf your installation in a broken state",
+ file=sys.stderr)
else:
print("I don't understand", instruction,
- "\nThe instruction musst be a tuple or a function.\nSKIPPING IT")
+ "\nThe instruction musst be a tuple or a function.",
+ "\nSKIPPING IT", file=sys.stderr)
if target in git_submodules_for:
choice = input(target + " uses git submodules want to pull them ? (Y/n) ")
diff --git a/xinitrc b/xinitrc
index 8352544..c3365ba 100644
--- a/xinitrc
+++ b/xinitrc
@@ -44,6 +44,12 @@ export LANG
[ -n "$LC_MEASUREMENT" ] && export LC_MEASUREMENT
[ -n "$LC_IDENTIFICATION" ] && export LC_IDENTIFICATION
+# Export DOTFILES_LOCATION (should be exported allready
+
+if [ -z "$DOTFILES_LOCATION" ]; then
+ export DOTFILES_LOCATION=$(get_dotfiles_location)
+fi
+
eval $(ssh-agent -s -a ~/.ssh/agent.sock)
[[ -f $HOME/.Xresources ]] && xrdb -merge $HOME/.Xresources
diff --git a/zshrc b/zshrc
index 2a4ddfc..3fad5e6 100644
--- a/zshrc
+++ b/zshrc
@@ -59,6 +59,9 @@ HIST_IGNORE_ALL_DUPS="true"
# You may need to manually set your language environment
# export LANG=en_US.UTF-8
+# Export the path of our dotfiles
+export DOTFILES_LOCATION=$(get_dotfiles_location)
+
# Preferred editor
export EDITOR='vim'