diff --git a/.config/dunst/dunstrc b/.config/dunst/dunstrc new file mode 100644 index 0000000..657ee66 --- /dev/null +++ b/.config/dunst/dunstrc @@ -0,0 +1,302 @@ +[global] + font = Fira Sans + + # 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 %p\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 = 10 + + + # 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 = "500x5-25+25" + + # Shrink window if it's smaller than the width. Will be ignored if + # width is 0. + shrink = yes + + # 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 = 15 + + # 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. + # default 120 + 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 = keyboard + + # 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 "separator_height" pixel height between two + # notifications. + # Set to 0 to disable. + separator_height = 1 + + # Padding between text and separator. + # padding = 8 + padding = 8 + + # Horizontal padding. + horizontal_padding = 10 + + # 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 = #515151 + + # 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 = firefox + + # Align icons left/right/off + icon_position = left + + # Paths to default icons. + icon_folders = /usr/share/icons/Vertex-Icons/status/16/:/usr/share/icons/Vertex-Icons/devices/16/:/usr/share/icons/Vertex-Icons/apps/16/ + # icon_folders = /usr/share/icons/Adwaita/16x16/status/:/usr/share/icons/Adwaita/16x16/devices/:/usr/share/icons/Adwaita/16x16/apps/ + # icon_folders = /usr/share/icons/breeze-dark/status/16/:/usr/share/icons/breeze-dark/devices/16/:/usr/share/icons/breeze-dark/apps/16/ + +[frame] + width = 1 + color = "#6699cc" + +[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 = mod1+space + + # Close all notifications. + # close_all = ctrl+shift+space + close_all = ctrl+mod1+space + + # Redisplay last message(s). + # On the US keyboard layout "grave" is normally above TAB and left + # of "1". + history = ctrl+mod4+h + + # Context menu. + context = ctrl+mod1+c + +[urgency_low] + # IMPORTANT: colors have to be defined in quotation marks. + # Otherwise the "#" and following would be interpreted as a comment. + background = "#393939" + foreground = "#a09f93" + timeout = 10 + +[urgency_normal] + background = "#2d2d2d" + foreground = "#d3d0c8" + timeout = 10 + +[urgency_critical] + background = "#2d2d2d" + foreground = "#f2777a" + 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 +# +#[Claws Mail] +# appname = claws-mail +# category = email.arrived +# urgency = normal +# background = "#2F899E" +# foreground = "#FFA247" +# +#[mute.sh] +# appname = mute +# category = mute.sound +# script = mute.sh +# +#[JDownloader] +# appname = JDownloader +# category = JD +# background = "#FFA247" +# foreground = "#FFFFFF" +# +#[newsbeuter] +# summary = *article* +# background = "#98AA21" +# foreground = "#FFFFFF" +# +#[irc] +# appname = weechat +# timeout = 0 +# background = "#0033bb" +# foreground = "#dddddd" +# +#[weechat hl] +# appname = weechat +# category = weechat.HL +# background = "#FF5C47" +# foreground = "#FFFFFF" +# +#[weechat pn] +# appname = weechat +# category = weechat.PM +# background = "#D53B84" +# foreground = "#FFFFFF" +# +#[CMUS] +# appname = CMUS +# category = cmus +# background = "#6C4AB7" +# foreground = "#FFE756" +# +# +# background = "#30AB70" +# foreground = "#F67245" +# +# vim: ft=cfg diff --git a/.i3/config b/.i3/config index f8dea08..bd96608 100644 --- a/.i3/config +++ b/.i3/config @@ -53,7 +53,8 @@ bindsym $mod+n border normal 1 # Font for window titles. Will also be used by the bar unless a different font # is used in the bar {} block below. -font xft:xos4 Terminus,xft:TerminessTTF Nerd Font +font -xos4-terminus-medium-r-normal--14-140-72-72-c-80-iso10646-1 +# font xft:Cantarell # Use Mouse+$mod to drag floating windows floating_modifier $mod @@ -61,18 +62,20 @@ floating_modifier $mod # start a terminal bindsym $mod+Return exec terminal -e fish bindsym $mod+Ctrl+Return exec terminal +bindsym $mod+Shift+Return exec terminal -fn -xos4-terminus-medium-r-normal--32-320-72-72-c-160-iso10646-1 -e fish # kill focused window bindsym $mod+Shift+q kill # start program launcher -bindsym $mod+d exec --no-startup-id dmenu_recent -f -nb '#2d2d2d' -nf '#747369' -sb '#6699cc' -sf '#2d2d2d' -p 'execute' -fn 'xos4 Terminus' +# bindsym $mod+d exec --no-startup-id dmenu_recent -f -nb '#2d2d2d' -nf '#747369' -sb '#6699cc' -sf '#2d2d2d' -p 'execute' -fn 'xos4 Terminus' +bindsym $mod+d exec --no-startup-id dmenu_recent -f -fn 'Fira Mono' # launch desktop menu -bindsym $mod+z exec --no-startup-id i3-dmenu-desktop --dmenu='dmenu -f -i -fn "xos4 Terminus" -nb "#2d2d2d" -nf "#747369" -sb "#6699cc" -sf "#2d2d2d"' +bindsym $mod+z exec --no-startup-id i3-dmenu-desktop --dmenu='dmenu -f -p "Launch:" -i -fn "Fira Mono" -nb "#2d2d2d" -nf "#747369" -sb "#6699cc" -sf "#2d2d2d"' # launch without history -bindsym $mod+Ctrl+d exec --no-startup-id dmenu_run -f -nb '#2d2d2d' -nf '#747369' -sb '#6699cc' -sf '#2d2d2d' -p 'execute' -fn 'xos4 Terminus' +bindsym $mod+Ctrl+d exec --no-startup-id dmenu_run -f -p "Execute:" -nb '#2d2d2d' -nf '#747369' -sb '#6699cc' -sf '#2d2d2d' -fn 'Fira Mono' # HUD # exec ~/.i3/i3-appmenu-service.py @@ -107,8 +110,8 @@ bindsym --release Num_Lock exec --no-startup-id pkill -SIGRTMIN+12 i3blocks # Start Applications bindsym $mod+Ctrl+b exec i3-sensible-terminal +sb -e 'bmenu' -bindsym $mod+F2 exec firefox-nightly -bindsym $mod+Shift+F2 exec firefox-nightly --private-window +bindsym $mod+F2 exec $BROWSER +bindsym $mod+Shift+F2 exec $BROWSER --private-window bindsym $mod+Ctrl+F2 exec surf "https://www.qwant.com?l=fr&h=1&hc=2&a=1&s=1&b=0&i=1&r=FR&sr=fr" bindsym $mod+Ctrl+F3 exec pcmanfm bindsym $mod+F3 exec i3-sensible-terminal +sb -e ranger @@ -277,6 +280,7 @@ for_window [class="(?i)variety"] floating enable for_window [class="Yad"] floating enable # for_window [class="Firefox"] border pixel 1 for_window [title="(?i)pinentry"] floating enable +for_window [title="(?i)Minecraft"] border none # switch to workspace with urgent window automatically for_window [urgent=latest] focus @@ -350,7 +354,7 @@ exec ring.cx -r exec --no-startup-id sleep 10 && i3-msg '[class="Gnome-ring"] move scratchpad' #exec zeal #exec --no-startup-id qbittorrent -exec --no-startup-id sleep 2 && urxvtc +sb -e newsbeuter +exec --no-startup-id sleep 2 && urxvtc +sb -e newsboat exec --no-startup-id sleep 5 && i3-msg '[class="URxvt"] move scratchpad' #exec --no-startup-id variety #exec --no-startup-id while true; do feh --bg-center $HOME/Images/wallpapers/396396-blackangel.jpg; sleep 5m; feh --bg-max $HOME/Images/wallpapers/other-clock-tower-time-brick-gears-steampunk-high-quality-picture.jpg; sleep 5m; done @@ -359,10 +363,11 @@ exec --no-startup-id redshift-gtk #exec --no-startup-id ${HOME}/.screenlayout/home.sh #exec --no-startup-id sleep 5 && mocp -S #exec --no-startup-id mpv ~/Vidéos/wallpapers/pirate_flag.mp4 --wid 0 --loop-file -quiet -exec --no-startup-id setxkbmap fr oss +#exec --no-startup-id setxkbmap fr oss exec --no-startup-id btpd --bw-out 40 --max-peers 50 exec --no-startup-id nm-applet -exec --no-startup-id grive-indicator +exec --no-startup-id sudo droidmote 2302 1234 +exec --no-startup-id gdfs $HOME/.google_drive $HOME/Google_Drive/ # Start i3bar to display a workspace bar (plus the system information i3status if available) bar { @@ -376,7 +381,7 @@ bar { bindsym button4 nop bindsym button5 nop - font xft:xos4 Terminus + # font -xos4-terminus-medium-r-normal--14-140-72-72-c-80-iso10646-1 strip_workspace_numbers yes colors { diff --git a/.i3/config-bepo b/.i3/config-bepo new file mode 100644 index 0000000..c3d2b79 --- /dev/null +++ b/.i3/config-bepo @@ -0,0 +1,421 @@ +# i3 config file (v4) +# Please see http://i3wm.org/docs/userguide.html for a complete reference! + +# Set mod key (Mod1=, Mod4=) +set $mod Mod4 + +# set default desktop layout (default is tiling) +# workspace_layout tabbed + +# Configure border style +new_window normal +new_float normal + +# Hide borders +hide_edge_borders none + +# change borders +bindsym $mod+u border none +bindsym $mod+y border pixel 2 +bindsym $mod+n border normal + +# Font for window titles. Will also be used by the bar unless a different font +# is used in the bar {} block below. +# font xft:Fira Sans 10 +font 8x13 +# font "-misc-fixed-medium-r-normal--13-120-75-75-c-80-iso10646-1" + +# Use Mouse+$mod to drag floating windows +floating_modifier $mod + +# start a terminal +bindsym $mod+Return exec i3-sensible-terminal + +# kill focused window +bindsym $mod+Shift+q kill + +# start program launcher +bindsym $mod+d exec --no-startup-id dmenu_run + +# launch desktop menu +bindsym $mod+z exec --no-startup-id i3-dmenu-desktop + +################################################################################################ +## sound-section - DO NOT EDIT if you wish to automatically upgrade Alsa -> Pulseaudio later! ## +################################################################################################ + +#exec --no-startup-id volumeicon +#bindsym $mod+Ctrl+m exec terminal -e 'alsamixer' +exec --no-startup-id pulseaudio +#exec --no-startup-id pa-applet +bindsym $mod+Ctrl+m exec pavucontrol + +################################################################################################ + +# Screen brightness controls +bindsym XF86MonBrightnessUp exec "xbacklight -inc 10" +bindsym XF86MonBrightnessDown exec "xbacklight -dec 10" + +# Volume controls +bindsym XF86AudioRaiseVolume exec BLOCK_BUTTON=4 ${HOME}/.i3blocks/volume && pkill -RTMIN+10 i3blocks +bindsym XF86AudioLowerVolume exec BLOCK_BUTTON=5 ${HOME}/.i3blocks/volume && pkill -RTMIN+10 i3blocks +bindsym XF86AudioMute exec BLOCK_BUTTON=2 ${HOME}/.i3blocks/volume && pkill -RTMIN+10 i3blocks +bindsym XF86AudioMicMute exec BLOCK_BUTTON=2 BLOCK_INSTANCE=Capture ${HOME}/.i3blocks/volume && pkill -RTMIN+10 i3blocks + +# LEDs controls +bindsym --release Caps_Lock exec pkill -SIGRTMIN+11 i3blocks +bindsym --release Num_Lock exec pkill -SIGRTMIN+12 i3blocks + +# Start Applications +bindsym $mod+Ctrl+b exec i3-sensible-terminal +sb -e 'bmenu' +bindsym $mod+F2 exec firefox +bindsym $mod+Ctrl+F3 exec pcmanfm +bindsym $mod+F3 exec i3-sensible-terminal +sb -e ranger +bindsym $mod+Shift+F3 exec gksu pcmanfm +bindsym $mod+F5 exec i3-sensible-terminal +sb -e 'mocp' +bindsym $mod+t exec --no-startup-id pkill compton +bindsym $mod+Ctrl+t exec --no-startup-id compton -b +bindsym $mod+Shift+d --release exec "killall dunst; exec notify-send 'restart dunst'" +bindsym Print exec --no-startup-id i3-scrot +bindsym $mod+Print --release exec --no-startup-id i3-scrot -w +bindsym $mod+Shift+Print --release exec --no-startup-id i3-scrot -s +#bindsym $mod+Shift+h exec xdg-open /usr/share/doc/manjaro/i3_help.pdf +bindsym $mod+Ctrl+x --release exec --no-startup-id xkill +bindsym XF86MyComputer exec ${HOME}/Softs/keyboard_toggle + +set $mode_ide (a)tom (e)clipse (t)exmaker +mode "$mode_ide" { + bindsym a exec atom; mode default + bindsym e exec eclipse; mode default + bindsym t exec texmaker; mode default + + bindsym Return mode default + bindsym Escape mode default +} +bindsym $mod+F1 mode $mode_ide + +# focus_follows_mouse no + +# change focus +bindsym $mod+j focus left +bindsym $mod+k focus down +bindsym $mod+l focus up +bindsym $mod+odiaeresis focus right + +# alternatively, you can use the cursor keys: +bindsym $mod+Left focus left +bindsym $mod+Down focus down +bindsym $mod+Up focus up +bindsym $mod+Right focus right + +# move focused window +bindsym $mod+Shift+j move left +bindsym $mod+Shift+k move down +bindsym $mod+Shift+l move up +bindsym $mod+Shift+odiaeresis move right + +# alternatively, you can use the cursor keys: +bindsym $mod+Shift+Left move left +bindsym $mod+Shift+Down move down +bindsym $mod+Shift+Up move up +bindsym $mod+Shift+Right move right + +# workspace back and forth (with/without active container) +workspace_auto_back_and_forth yes +bindsym $mod+b workspace back_and_forth +bindsym $mod+Shift+b move container to workspace back_and_forth; workspace back_and_forth + +# split orientation +bindsym $mod+h split h +bindsym $mod+v split v +bindsym $mod+q split toggle + +# toggle fullscreen mode for the focused container +bindsym $mod+f fullscreen toggle + +# change container layout (stacked, tabbed, toggle split) +bindsym $mod+s layout stacking +bindsym $mod+w layout tabbed +bindsym $mod+e layout toggle split + +# toggle tiling / floating +bindsym $mod+Shift+space floating toggle + +# change focus between tiling / floating windows +bindsym $mod+space focus mode_toggle + +# toggle sticky +bindsym $mod+Shift+s sticky toggle + +# focus the parent container +bindsym $mod+a focus parent + +# move the currently focused window to the scratchpad +bindsym $mod+Shift+twosuperior 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 $mod+twosuperior scratchpad show + +#navigate workspaces next / previous +bindsym $mod+Ctrl+Right workspace next +bindsym $mod+Ctrl+Left workspace prev + +# Workspace names +# to display names or symbols instead of plain workspace numbers you can use +# something like: set $ws1 1:mail +# set $ws2 2: +set $ws1 1 +set $ws2 2 +set $ws3 3 +set $ws4 4 +set $ws5 5 +set $ws6 6 +set $ws7 7 +set $ws8 8 + +# switch to workspace +bindsym $mod+1 workspace $ws1 +bindsym $mod+2 workspace $ws2 +bindsym $mod+3 workspace $ws3 +bindsym $mod+4 workspace $ws4 +bindsym $mod+5 workspace $ws5 +bindsym $mod+6 workspace $ws6 +bindsym $mod+7 workspace $ws7 +bindsym $mod+8 workspace $ws8 + +# Move focused container to workspace +bindsym $mod+Ctrl+1 move container to workspace $ws1 +bindsym $mod+Ctrl+2 move container to workspace $ws2 +bindsym $mod+Ctrl+3 move container to workspace $ws3 +bindsym $mod+Ctrl+4 move container to workspace $ws4 +bindsym $mod+Ctrl+5 move container to workspace $ws5 +bindsym $mod+Ctrl+6 move container to workspace $ws6 +bindsym $mod+Ctrl+7 move container to workspace $ws7 +bindsym $mod+Ctrl+8 move container to workspace $ws8 + +# Move to workspace with focused container +bindsym $mod+Shift+1 move container to workspace $ws1; workspace $ws1 +bindsym $mod+Shift+2 move container to workspace $ws2; workspace $ws2 +bindsym $mod+Shift+3 move container to workspace $ws3; workspace $ws3 +bindsym $mod+Shift+4 move container to workspace $ws4; workspace $ws4 +bindsym $mod+Shift+5 move container to workspace $ws5; workspace $ws5 +bindsym $mod+Shift+6 move container to workspace $ws6; workspace $ws6 +bindsym $mod+Shift+7 move container to workspace $ws7; workspace $ws7 +bindsym $mod+Shift+8 move container to workspace $ws8; workspace $ws8 + +# Open applications on specific workspaces +# assign [class="Thunderbird"] $ws1 +# assign [class="Firefox"] $ws3 +#assign [class="(?i)Claws-mail"] $ws4 +# assign [class="Skype"] $ws5 + +# Open specific applications in floating mode +#for_window [title="alsamixer"] floating enable border pixel 1 +#for_window [class="Calamares"] floating enable border normal +#for_window [class="Clipgrab"] floating enable +for_window [title="File Transfer*"] floating enable +for_window [class="Galculator"] floating enable border pixel 1 +#for_window [class="GParted"] floating enable border normal +#for_window [title="i3_help"] floating enable sticky enable border normal +for_window [class="Lightdm-gtk-greeter-settings"] floating enable +for_window [class="Lxappearance"] floating enable sticky enable border normal +for_window [class="Manjaro Settings Manager"] floating enable border normal +for_window [class="Manjaro Welcome"] floating enable +for_window [title="MuseScore: Play Panel"] floating enable +for_window [class="Nitrogen"] floating enable sticky enable border normal +for_window [class="Oblogout"] fullscreen enable +#for_window [class="octopi"] floating enable +#for_window [class="Pamac-manager"] floating enable +for_window [class="Pavucontrol"] floating enable +for_window [class="qt5ct"] floating enable sticky enable border normal +for_window [class="Qtconfig-qt4"] floating enable sticky enable border normal +for_window [class="Simple-scan"] floating enable border normal +for_window [class="(?i)System-config-printer.py"] floating enable border normal +for_window [class="Skype"] floating enable border normal +for_window [class="Thus"] floating enable border normal +for_window [class="Timeset-gui"] floating enable border normal +#for_window [class="(?i)virtualbox"] floating enable border normal +for_window [class="Xfburn"] floating enable +for_window [class="(?i)variety"] floating enable + +# switch to workspace with urgent window automatically +for_window [urgent=latest] focus + +# reload the configuration file +bindsym $mod+Shift+c reload + +# restart i3 inplace (preserves your layout/session, can be used to upgrade i3) +bindsym $mod+Shift+r restart + +# exit i3 (logs you out of your X session) +bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'" + +# Set shut down, restart and locking features +bindsym $mod+0 mode "$mode_system" +set $mode_system (l)ock, (e)xit, switch_(u)ser, (s)uspend, (h)ibernate, (r)eboot, (S)hutdown +mode "$mode_system" { + bindsym l exec --no-startup-id xscreensaver-command -lock, mode "default" + bindsym s exec --no-startup-id xscreensaver-command -lock && sleep 3 && systemctl suspend, mode "default" + bindsym u exec --no-startup-id i3exit switch_user, mode "default" + bindsym e exec --no-startup-id i3exit logout, mode "default" + bindsym h exec --no-startup-id xscreensaver-command -lock && sleep 3 && systemctl hibernate, mode "default" + bindsym r exec --no-startup-id systemctl reboot, mode "default" + bindsym Shift+s exec --no-startup-id systemctl poweroff, mode "default" + + # exit system mode: "Enter" or "Escape" + bindsym Return mode "default" + bindsym Escape mode "default" +} + +# Resize window (you can also use the mouse for that) +bindsym $mod+r mode "resize" +mode "resize" { + # These bindings trigger as soon as you enter the resize mode + # Pressing left will shrink the window’s width. + # Pressing right will grow the window’s width. + # Pressing up will shrink the window’s height. + # Pressing down will grow the window’s height. + bindsym j resize shrink width 5 px or 5 ppt + bindsym k resize grow height 5 px or 5 ppt + bindsym l resize shrink height 5 px or 5 ppt + bindsym m resize grow width 5 px or 5 ppt + + # same bindings, but for the arrow keys + bindsym Left resize shrink width 5 px or 5 ppt + bindsym Down resize grow height 5 px or 5 ppt + bindsym Up resize shrink height 5 px or 5 ppt + bindsym Right resize grow width 5 px or 5 ppt + + # exit resize mode: Enter or Escape + bindsym Return mode "default" + bindsym Escape mode "default" +} + +# Lock screen +bindsym $mod+9 exec --no-startup-id xscreensaver-command -lock + +# Autostart applications +## adjustment of i3bar battery reading (only run at the very first login): +#exec --no-startup-id /usr/bin/adjust_i3statusconf +exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 +exec --no-startup-id compton -b +exec --no-startup-id nm-applet +#exec --no-startup-id xfce4-power-manager +exec --no-startup-id clipit +# exec --no-startup-id blueman +# exec_always --no-startup-id sbxkb +exec --no-startup-id conky +# exec --no-startup-id start_conky_green +exec --no-startup-id xscreensaver -no-splash +exec_always --no-startup-id setcursor +#exec --no-startup-id blueman-applet +exec claws-mail +exec ring.cx -r +#exec zeal +exec --no-startup-id terminal +sb -e $HOME/Softs/rtorrent +exec --no-startup-id terminal +sb -e newsbeuter +exec --no-startup-id sleep 3 && i3-msg '[class="(?i)urxvt"] move scratchpad' +exec --no-startup-id variety +exec --no-startup-id xinput --disable "AlpsPS/2 ALPS DualPoint TouchPad" +exec --no-startup-id redshift-gtk +exec --no-startup-id ${HOME}/.screenlayout/home.sh +exec --no-startup-id syncthing-gtk + +# Start i3bar to display a workspace bar (plus the system information i3status if available) +bar { + position top + status_command i3blocks + +## please set your primary output first. Example: 'xrandr --output eDP1 --primary' + tray_output primary + tray_output eDP1 +# output eDP1 + + bindsym button4 nop + bindsym button5 nop + #font xft:Fira Mono,FontAwesome 10 + strip_workspace_numbers yes + +# colors { +# # background $transparent +# background #2B2C2B +# statusline #F9FAF9 +# separator #454947 +# +# # border backgr. text +# focused_workspace #F9FAF9 #16A085 #2B2C2B +# active_workspace #595B5B #353836 #FDF6E3 +# inactive_workspace #595B5B #353836 #EEE8D5 +# urgent_workspace #16A085 #FDF6E3 #E5201D +# } +} + +# hide/unhide i3status bar +bindsym $mod+m bar mode toggle + +# Theme colors +# class border backgr. text indic. child_border +# client.focused #808280 #808280 #80FFF9 #FDF6E3 +# client.focused_inactive #434745 #434745 #16A085 #454948 +# client.unfocused #434745 #434745 #16A085 #454948 +# client.urgent #CB4B16 #FDF6E3 #16A085 #268BD2 +# client.placeholder #000000 #0c0c0c #ffffff #000000 #0c0c0c +# client.background #2B2C2B + +############################# +### settings for i3-gaps: ### +############################# + +# # Set inner/outer gaps +# gaps inner 10 +# gaps outer -4 +# +# # Additionally, you can issue commands with the following syntax. This is useful to bind keys to changing the gap size. +# # gaps inner|outer current|all set|plus|minus +# # gaps inner all set 10 +# # gaps outer all plus 5 +# +# # Smart gaps (gaps used if only more than one container on the workspace) +# smart_gaps on +# +# # Smart borders (draw borders around container only if it is not the only container on this workspace) +# # on|no_gaps (on=always activate and no_gaps=only activate if the gap size to the edge of the screen is 0) +# #smart_borders on +# +# # Press $mod+Shift+g to enter the gap mode. Choose o or i for modifying outer/inner gaps. Press one of + / - (in-/decrement for current workspace) or 0 (remove gaps for current workspace). If you also press Shift with these keys, the change will be global for all workspaces. +# set $mode_gaps Gaps: (o) outer, (i) inner +# set $mode_gaps_outer Outer Gaps: +|-|0 (local), Shift + +|-|0 (global) +# set $mode_gaps_inner Inner Gaps: +|-|0 (local), Shift + +|-|0 (global) +# bindsym $mod+Shift+g mode "$mode_gaps" +# +# mode "$mode_gaps" { +# bindsym o mode "$mode_gaps_outer" +# bindsym i mode "$mode_gaps_inner" +# bindsym Return mode "default" +# bindsym Escape mode "default" +# } +# mode "$mode_gaps_inner" { +# bindsym plus gaps inner current plus 5 +# bindsym minus gaps inner current minus 5 +# bindsym 0 gaps inner current set 0 +# +# bindsym Shift+plus gaps inner all plus 5 +# bindsym Shift+minus gaps inner all minus 5 +# bindsym Shift+0 gaps inner all set 0 +# +# bindsym Return mode "default" +# bindsym Escape mode "default" +# } +# mode "$mode_gaps_outer" { +# bindsym plus gaps outer current plus 5 +# bindsym minus gaps outer current minus 5 +# bindsym 0 gaps outer current set 0 +# +# bindsym Shift+plus gaps outer all plus 5 +# bindsym Shift+minus gaps outer all minus 5 +# bindsym Shift+0 gaps outer all set 0 +# +# bindsym Return mode "default" +# bindsym Escape mode "default" +# } diff --git a/.i3/config.base b/.i3/config.base new file mode 100644 index 0000000..40de253 --- /dev/null +++ b/.i3/config.base @@ -0,0 +1,398 @@ +## i3 config file (v4) +## Please see http://i3wm.org/docs/userguide.html for a complete reference! +# +### Base16 Eighties +## Author: Chris Kempson (http://chriskempson.com) +## +## You can use these variables anywhere in the i3 configuration file. +# +#set $base00 #2d2d2d +#set $base01 #393939 +#set $base02 #515151 +#set $base03 #747369 +#set $base04 #a09f93 +#set $base05 #d3d0c8 +#set $base06 #e8e6df +#set $base07 #f2f0ec +#set $base08 #f2777a +#set $base09 #f99157 +#set $base0A #ffcc66 +#set $base0B #99cc99 +#set $base0C #66cccc +#set $base0D #6699cc +#set $base0E #cc99cc +#set $base0F #d27b53 +# +## Basic color configuration using the Base16 variables for windows and borders. +## Property Name Border BG Text Indicator Child Border +#client.focused $base05 $base0D $base00 $base05 $base0D +#client.focused_inactive $base01 $base01 $base05 $base03 $base01 +#client.unfocused $base01 $base00 $base05 $base01 $base01 +#client.urgent $base08 $base08 $base00 $base08 $base08 +#client.placeholder $base00 $base00 $base05 $base00 $base00 +#client.background $base07 + +# $i3-theme-window + +# Set mod key (Mod1=, Mod4=) +set $mod Mod4 +exec --no-startup-id urxvtd + +# set default desktop layout (default is tiling) +# workspace_layout tabbed + +# Configure border style +new_window normal +new_float normal + +# Hide borders +hide_edge_borders none + +# change borders +bindsym $mod+u border none +bindsym $mod+y border pixel 2 +bindsym $mod+n border normal 2 + +# Font for window titles. Will also be used by the bar unless a different font +# is used in the bar {} block below. +font xft:xos4 Terminus + +# Use Mouse+$mod to drag floating windows +floating_modifier $mod + +# start a terminal +bindsym $mod+Return exec terminal -e fish +bindsym $mod+Ctrl+Return exec terminal + +# kill focused window +bindsym $mod+Shift+q kill + +# start program launcher +bindsym $mod+d exec --no-startup-id dmenu_recent -nb '#2d2d2d' -nf '#747369' -sb '#6699cc' -sf '#2d2d2d' -p 'execute' -fn 'xos4 Terminus' + +# launch desktop menu +bindsym $mod+z exec --no-startup-id i3-dmenu-desktop --dmenu='dmenu -i -fn "xos4 Terminus" -nb "#2d2d2d" -nf "#747369" -sb "#6699cc" -sf "#2d2d2d"' + +# launch without history +bindsym $mod+Ctrl+d exec --no-startup-id dmenu_run -nb '#2d2d2d' -nf '#747369' -sb '#6699cc' -sf '#2d2d2d' -p 'execute' -fn 'xos4 Terminus' + +# HUD +# exec ~/.i3/i3-appmenu-service.py +# bindsym $mod+x exec ~/.i3/i3-hud-menu.py +# bindsym $mod+x exec --no-startup-id qmenu_hud + +################################################################################################ +## sound-section - DO NOT EDIT if you wish to automatically upgrade Alsa -> Pulseaudio later! ## +################################################################################################ + +#exec --no-startup-id volumeicon +#bindsym $mod+Ctrl+m exec terminal -e 'alsamixer' +exec --no-startup-id pulseaudio +#exec --no-startup-id pa-applet +bindsym $mod+Ctrl+m exec pavucontrol + +################################################################################################ + +# Screen brightness controls +bindsym XF86MonBrightnessUp exec --no-startup-id echo $((( $(cat /sys/class/backlight/intel_backlight/actual_brightness) + 10 ))) > /sys/class/backlight/intel_backlight/brightness || echo 937 > /sys/class/backlight/intel_backlight/brightness +bindsym XF86MonBrightnessDown exec --no-startup-id echo $((( $(cat /sys/class/backlight/intel_backlight/actual_brightness) - 10 ))) > /sys/class/backlight/intel_backlight/brightness || echo 0 > /sys/class/backlight/intel_backlight/brightness + +# Volume controls +bindsym XF86AudioRaiseVolume exec --no-startup-id BLOCK_BUTTON=4 ${HOME}/.i3blocks/volume && pkill -RTMIN+10 i3blocks +bindsym XF86AudioLowerVolume exec --no-startup-id BLOCK_BUTTON=5 ${HOME}/.i3blocks/volume && pkill -RTMIN+10 i3blocks +bindsym XF86AudioMute exec --no-startup-id BLOCK_BUTTON=2 ${HOME}/.i3blocks/volume && pkill -RTMIN+10 i3blocks +bindsym XF86AudioMicMute exec --no-startup-id BLOCK_BUTTON=2 BLOCK_INSTANCE=Capture ${HOME}/.i3blocks/volume && pkill -RTMIN+10 i3blocks + +# LEDs controls +bindsym --release Caps_Lock exec --no-startup-id pkill -SIGRTMIN+11 i3blocks +bindsym --release Num_Lock exec --no-startup-id pkill -SIGRTMIN+12 i3blocks + +# Start Applications +bindsym $mod+Ctrl+b exec i3-sensible-terminal +sb -e 'bmenu' +bindsym $mod+Ctrl+F2 exec firefox +bindsym $mod+Shift+F2 exec firefox --private-window +bindsym $mod+F2 exec surf "https://www.qwant.com?l=fr&h=1&hc=2&a=1&s=1&b=0&i=1&r=FR&sr=fr" +bindsym $mod+Ctrl+F3 exec pcmanfm +bindsym $mod+F3 exec i3-sensible-terminal +sb -e ranger +bindsym $mod+F4 exec i3-sensible-terminal +sb -e bashmount +bindsym $mod+Shift+F3 exec gksu pcmanfm +bindsym $mod+F5 exec i3-sensible-terminal +sb -e 'mocp' +#bindsym $mod+t exec --no-startup-id pkill compton +#bindsym $mod+Ctrl+t exec --no-startup-id compton -b +bindsym $mod+Shift+d --release exec "killall dunst; exec notify-send 'restart dunst'" +bindsym Print exec --no-startup-id i3-scrot +bindsym $mod+Print --release exec --no-startup-id i3-scrot -w +bindsym $mod+Shift+Print --release exec --no-startup-id i3-scrot -s +#bindsym $mod+Shift+h exec xdg-open /usr/share/doc/manjaro/i3_help.pdf +bindsym $mod+Ctrl+x --release exec --no-startup-id xkill +bindsym XF86MyComputer exec ${HOME}/bin/keyboard_toggle + +set $mode_ide (a)tom (t)exmaker +mode "$mode_ide" { + bindsym a exec atom; mode default + bindsym t exec texmaker; mode default + + bindsym Return mode default + bindsym Escape mode default +} +bindsym $mod+F1 mode $mode_ide + +# focus_follows_mouse no + +# change focus +bindsym $mod+j focus left +bindsym $mod+k focus down +bindsym $mod+l focus up +bindsym $mod+m focus right + +# alternatively, you can use the cursor keys: +bindsym $mod+Left focus left +bindsym $mod+Down focus down +bindsym $mod+Up focus up +bindsym $mod+Right focus right + +# move focused window +bindsym $mod+Shift+j move left +bindsym $mod+Shift+k move down +bindsym $mod+Shift+l move up +bindsym $mod+Shift+m move right + +# alternatively, you can use the cursor keys: +bindsym $mod+Shift+Left move left +bindsym $mod+Shift+Down move down +bindsym $mod+Shift+Up move up +bindsym $mod+Shift+Right move right + +# workspace back and forth (with/without active container) +workspace_auto_back_and_forth yes +bindsym $mod+b workspace back_and_forth +bindsym $mod+Shift+b move container to workspace back_and_forth; workspace back_and_forth + +# split orientation +bindsym $mod+h split h +bindsym $mod+v split v +bindsym $mod+q split toggle + +# toggle fullscreen mode for the focused container +bindsym $mod+f fullscreen toggle + +# change container layout (stacked, tabbed, toggle split) +bindsym $mod+s layout stacking +bindsym $mod+w layout tabbed +bindsym $mod+e layout toggle split + +# toggle tiling / floating +bindsym $mod+Shift+space floating toggle + +# change focus between tiling / floating windows +bindsym $mod+space focus mode_toggle + +# toggle sticky +bindsym $mod+Shift+s sticky toggle + +# focus the parent container +bindsym $mod+a focus parent + +# move the currently focused window to the scratchpad +bindsym $mod+Shift+twosuperior 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 $mod+twosuperior scratchpad show + +#navigate workspaces next / previous +bindsym $mod+Ctrl+Right workspace next +bindsym $mod+Ctrl+Left workspace prev + +# Workspace names +# to display names or symbols instead of plain workspace numbers you can use +# something like: set $ws1 1:mail +# set $ws2 2: +set $ws1 1 +set $ws2 2 +set $ws3 3 +set $ws4 4 +set $ws5 5 +set $ws6 6 +set $ws7 7 +set $ws8 8 + +# switch to workspace +bindsym $mod+1 workspace $ws1 +bindsym $mod+2 workspace $ws2 +bindsym $mod+3 workspace $ws3 +bindsym $mod+4 workspace $ws4 +bindsym $mod+5 workspace $ws5 +bindsym $mod+6 workspace $ws6 +bindsym $mod+7 workspace $ws7 +bindsym $mod+8 workspace $ws8 + +# Move focused container to workspace +bindsym $mod+Ctrl+1 move container to workspace $ws1 +bindsym $mod+Ctrl+2 move container to workspace $ws2 +bindsym $mod+Ctrl+3 move container to workspace $ws3 +bindsym $mod+Ctrl+4 move container to workspace $ws4 +bindsym $mod+Ctrl+5 move container to workspace $ws5 +bindsym $mod+Ctrl+6 move container to workspace $ws6 +bindsym $mod+Ctrl+7 move container to workspace $ws7 +bindsym $mod+Ctrl+8 move container to workspace $ws8 + +# Move to workspace with focused container +bindsym $mod+Shift+1 move container to workspace $ws1; workspace $ws1 +bindsym $mod+Shift+2 move container to workspace $ws2; workspace $ws2 +bindsym $mod+Shift+3 move container to workspace $ws3; workspace $ws3 +bindsym $mod+Shift+4 move container to workspace $ws4; workspace $ws4 +bindsym $mod+Shift+5 move container to workspace $ws5; workspace $ws5 +bindsym $mod+Shift+6 move container to workspace $ws6; workspace $ws6 +bindsym $mod+Shift+7 move container to workspace $ws7; workspace $ws7 +bindsym $mod+Shift+8 move container to workspace $ws8; workspace $ws8 + +# Open applications on specific workspaces +#assign [class="Claws-mail"] $ws5 +#assign [class="Surf"] $ws2 +#assign [class="Vlc"] $ws3 +#assign [class="Atom"] $ws4 + +# Open specific applications in floating mode +#for_window [title="alsamixer"] floating enable border pixel 1 +#for_window [class="Calamares"] floating enable border normal +#for_window [class="Clipgrab"] floating enable +for_window [title="File Transfer*"] floating enable +for_window [class="Galculator"] floating enable border pixel 1 +#for_window [class="GParted"] floating enable border normal +#for_window [title="i3_help"] floating enable sticky enable border normal +#for_window [class="octopi"] floating enable +#for_window [class="Pamac-manager"] floating enable +for_window [class="Pavucontrol"] floating enable +for_window [class="qt5ct"] floating enable sticky enable border normal +for_window [class="Qtconfig-qt4"] floating enable sticky enable border normal +for_window [class="Simple-scan"] floating enable border normal +for_window [class="(?i)System-config-printer.py"] floating enable border normal +for_window [class="Skype"] floating enable border normal +for_window [class="Thus"] floating enable border normal +for_window [class="Timeset-gui"] floating enable border normal +#for_window [class="(?i)virtualbox"] floating enable border normal +for_window [class="Xfburn"] floating enable +for_window [class="(?i)variety"] floating enable +for_window [class="Yad"] floating enable + +# switch to workspace with urgent window automatically +for_window [urgent=latest] focus + +# reload the configuration file +bindsym $mod+Shift+c reload + +# restart i3 inplace (preserves your layout/session, can be used to upgrade i3) +bindsym $mod+Shift+r restart + +# exit i3 (logs you out of your X session) +bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'" + +# Set shut down, restart and locking features +bindsym $mod+0 mode "$mode_system" +set $mode_system (l)ock, (e)xit, (s)uspend, (h)ibernate, (r)eboot, (S)hutdown +mode "$mode_system" { + #bindsym l exec --no-startup-id xscreensaver-command -lock, mode "default" + bindsym l exec --no-startup-id i3lock-wrapper -e, mode "default" + bindsym s exec --no-startup-id i3lock-wrapper -e && systemctl suspend, mode "default" + bindsym e exec --no-startup-id i3-msg exit, mode "default" + bindsym h exec --no-startup-id i3lock-wrapper -e && systemctl hibernate, mode "default" + bindsym r exec --no-startup-id systemctl reboot, mode "default" + bindsym Shift+s exec --no-startup-id systemctl poweroff, mode "default" + + # exit system mode: "Enter" or "Escape" + bindsym Return mode "default" + bindsym Escape mode "default" +} + +# Resize window (you can also use the mouse for that) +bindsym $mod+r mode "resize" +mode "resize" { + # These bindings trigger as soon as you enter the resize mode + # Pressing left will shrink the window’s width. + # Pressing right will grow the window’s width. + # Pressing up will shrink the window’s height. + # Pressing down will grow the window’s height. + bindsym j resize shrink width 5 px or 5 ppt + bindsym k resize grow height 5 px or 5 ppt + bindsym l resize shrink height 5 px or 5 ppt + bindsym m resize grow width 5 px or 5 ppt + + # same bindings, but for the arrow keys + bindsym Left resize shrink width 5 px or 5 ppt + bindsym Down resize grow height 5 px or 5 ppt + bindsym Up resize shrink height 5 px or 5 ppt + bindsym Right resize grow width 5 px or 5 ppt + + # exit resize mode: Enter or Escape + bindsym Return mode "default" + bindsym Escape mode "default" +} + +# Lock screen +bindsym $mod+9 exec --no-startup-id i3lock-wrapper -e + +# Autostart applications +## adjustment of i3bar battery reading (only run at the very first login): +#exec --no-startup-id /usr/bin/adjust_i3statusconf +exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 +#exec --no-startup-id compton -b +exec --no-startup-id nm-applet +#exec --no-startup-id xfce4-power-manager +exec --no-startup-id clipit +# exec --no-startup-id blueman +# exec_always --no-startup-id sbxkb +exec --no-startup-id conky +# exec --no-startup-id start_conky_green +# exec --no-startup-id xscreensaver -no-splash +exec_always --no-startup-id setcursor +#exec --no-startup-id blueman-applet +exec claws-mail +exec ring.cx -r +exec --no-startup-id sleep 10 && i3-msg '[class="Gnome-ring"] move scratchpad' +#exec zeal +exec --no-startup-id transmission-gtk -m +exec --no-startup-id sleep 2 && urxvtc +sb -e newsbeuter +exec --no-startup-id sleep 5 && i3-msg '[class="URxvt"] move scratchpad' +exec --no-startup-id variety +#exec --no-startup-id while true; do feh --bg-center $HOME/Images/wallpapers/396396-blackangel.jpg; sleep 5m; feh --bg-max $HOME/Images/wallpapers/other-clock-tower-time-brick-gears-steampunk-high-quality-picture.jpg; sleep 5m; done +exec --no-startup-id xinput --disable "AlpsPS/2 ALPS DualPoint TouchPad" +exec --no-startup-id redshift-gtk +#exec --no-startup-id ${HOME}/.screenlayout/home.sh +#exec --no-startup-id sleep 5 && mocp -S +#exec --no-startup-id mpv ~/Vidéos/wallpapers/pirate_flag.mp4 --wid 0 --loop-file -quiet + +# Start i3bar to display a workspace bar (plus the system information i3status if available) +bar { +# position top + status_command i3blocks + +## please set your primary output first. Example: 'xrandr --output eDP1 --primary' + tray_output primary + tray_output eDP1 +# output eDP1 + + bindsym button4 nop + bindsym button5 nop +# font xft:ProFont 11 + strip_workspace_numbers yes + +# colors { +# background $base00 +# separator $base01 +# statusline $base04 +# +# # State Border BG Text +# focused_workspace $base05 $base0D $base00 +# active_workspace $base05 $base03 $base00 +# inactive_workspace $base03 $base01 $base05 +# urgent_workspace $base08 $base08 $base00 +# binding_mode $base00 $base0A $base00 +# } + + # $i3-theme-bar + +} + +# hide/unhide i3status bar +bindsym $mod+semicolon bar mode toggle diff --git a/.i3/i3-appmenu-service.py b/.i3/i3-appmenu-service.py new file mode 100755 index 0000000..054d46e --- /dev/null +++ b/.i3/i3-appmenu-service.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python3 + +from gi.repository import Gtk +import dbus +import dbus.service +from dbus.mainloop.glib import DBusGMainLoop + +class i3AppmenuService(dbus.service.Object): + def __init__(self): + bus_name = dbus.service.BusName('com.canonical.AppMenu.Registrar', bus = dbus.SessionBus()) + dbus.service.Object.__init__(self, bus_name, '/com/canonical/AppMenu/Registrar') + self.window_dict = dict() + + @dbus.service.method('com.canonical.AppMenu.Registrar', + in_signature='uo', + sender_keyword='sender') + def RegisterWindow(self, windowId, menuObjectPath, sender): + self.window_dict[windowId] = (sender, menuObjectPath) + + @dbus.service.method('com.canonical.AppMenu.Registrar', + in_signature='u', + out_signature='so') + def GetMenuForWindow(self, windowId): + if windowId in self.window_dict: + sender, menuObjectPath = self.window_dict[windowId] + return [dbus.String(sender), dbus.ObjectPath(menuObjectPath)] + + @dbus.service.method('com.canonical.AppMenu.Registrar') + def Q(self): + Gtk.main_quit() + +DBusGMainLoop(set_as_default=True) +myservice = i3AppmenuService() +Gtk.main() + +# GTK apps : get dbus service (xprop) \ No newline at end of file diff --git a/.i3/i3-hud-menu.py b/.i3/i3-hud-menu.py new file mode 100755 index 0000000..89ba46f --- /dev/null +++ b/.i3/i3-hud-menu.py @@ -0,0 +1,168 @@ +#!/usr/bin/env python3 + +import dbus +import subprocess + +""" + format_label_list +""" +def format_label_list(label_list): + head, *tail = label_list + result = head + for label in tail: + result = result + " > " + label + return result + +""" + try_appmenu_interface +""" +def try_appmenu_interface(window_id): + # --- Get Appmenu Registrar DBus interface + session_bus = dbus.SessionBus() + appmenu_registrar_object = session_bus.get_object('com.canonical.AppMenu.Registrar', '/com/canonical/AppMenu/Registrar') + appmenu_registrar_object_iface = dbus.Interface(appmenu_registrar_object, 'com.canonical.AppMenu.Registrar') + + # --- Get dbusmenu object path + try: + dbusmenu_bus, dbusmenu_object_path = appmenu_registrar_object_iface.GetMenuForWindow(window_id) + except dbus.exceptions.DBusException: + return + + # --- Access dbusmenu items + dbusmenu_object = session_bus.get_object(dbusmenu_bus, dbusmenu_object_path) + dbusmenu_object_iface = dbus.Interface(dbusmenu_object, 'com.canonical.dbusmenu') + dbusmenu_items = dbusmenu_object_iface.GetLayout(0, -1, ["label"]) + + dbusmenu_item_dict = dict() + + """ explore_dbusmenu_item """ + def explore_dbusmenu_item(item, label_list): + item_id = item[0] + item_props = item[1] + item_children = item[2] + + if 'label' in item_props: + new_label_list = label_list + [item_props['label']] + else: + new_label_list = label_list + + # FIXME: This is not excluding all unactivable menuitems. + if len(item_children) == 0: + dbusmenu_item_dict[format_label_list(new_label_list)] = item_id + else: + for child in item_children: + explore_dbusmenu_item(child, new_label_list) + + explore_dbusmenu_item(dbusmenu_items[1], []) + + # --- Run dmenu + dmenu_string = '' + head, *tail = dbusmenu_item_dict.keys() + dmenu_string = head + for m in tail: + dmenu_string += '\n' + dmenu_string += m + + dmenu_cmd = subprocess.Popen(['dmenu', '-i', '-l', '10', '-fn', 'xos4 Terminus'], stdout=subprocess.PIPE, stdin=subprocess.PIPE) + dmenu_cmd.stdin.write(dmenu_string.encode('utf-8')) + dmenu_result = dmenu_cmd.communicate()[0].decode('utf8') + dmenu_cmd.stdin.close() + + # --- Use dmenu result + if dmenu_result in dbusmenu_item_dict: + action = dbusmenu_item_dict[dmenu_result] + print(dbusmenu_object_iface.Event(action, 'clicked', 0, 0)) + + +""" + try_gtk_interface +""" +def try_gtk_interface(gtk_bus_name_cmd, gtk_object_path_cmd): + gtk_bus_name = gtk_bus_name_cmd.split(' ')[2].split('\n')[0].split('"')[1] + print(gtk_object_path_cmd) + gtk_object_path = gtk_object_path_cmd.split(' ')[2].split('\n')[0].split('"')[1] + print("GTK MenuModel Bus name and object path: ", gtk_bus_name, gtk_object_path) + + # --- Ask for menus over DBus --- + session_bus = dbus.SessionBus() + gtk_menubar_object = session_bus.get_object(gtk_bus_name, gtk_object_path) + gtk_menubar_object_iface = dbus.Interface(gtk_menubar_object, dbus_interface='org.gtk.Menus') + gtk_action_object_actions_iface = dbus.Interface(gtk_menubar_object, dbus_interface='org.gtk.Actions') + gtk_menubar_results = gtk_menubar_object_iface.Start([x for x in range(1024)]) + + # --- Construct menu list --- + gtk_menubar_menus = dict() + for gtk_menubar_result in gtk_menubar_results: + gtk_menubar_menus[(gtk_menubar_result[0], gtk_menubar_result[1])] = gtk_menubar_result[2] + + gtk_menubar_action_dict = dict() + gtk_menubar_target_dict = dict() + + """ explore_menu """ + def explore_menu(menu_id, label_list): + for menu in gtk_menubar_menus[menu_id]: + if 'label' in menu: + menu_label = menu['label'].replace('_', '') + else: + menu_label = '?' + + new_label_list = label_list + [menu_label] + formatted_label = format_label_list(new_label_list) + + if 'action' in menu: + menu_action = menu['action'] + gtk_menubar_action_dict[formatted_label] = menu_action + if 'target' in menu: + menu_target = menu['target'] + gtk_menubar_target_dict[formatted_label] = menu_target + + if ':section' in menu: + menu_section = menu[':section'] + section_menu_id = (menu_section[0], menu_section[1]) + explore_menu(section_menu_id, label_list) + + if ':submenu' in menu: + menu_submenu = menu[':submenu'] + submenu_menu_id = (menu_submenu[0], menu_submenu[1]) + explore_menu(submenu_menu_id, new_label_list) + + explore_menu((0,0), []) + + # --- Run dmenu + dmenu_string = '' + head, *tail = gtk_menubar_action_dict.keys() + dmenu_string = head + for m in tail: + dmenu_string += '\n' + dmenu_string += m + + dmenu_cmd = subprocess.Popen(['dmenu', '-i', '-l', '10', '-fn', 'xos4 Terminus'], stdout=subprocess.PIPE, stdin=subprocess.PIPE) + dmenu_cmd.stdin.write(dmenu_string.encode('utf-8')) + dmenu_result = dmenu_cmd.communicate()[0].decode('utf8') + dmenu_cmd.stdin.close() + + # --- Use dmenu result + if dmenu_result in gtk_menubar_action_dict: + action = gtk_menubar_action_dict[dmenu_result] + print('GTK Action :', action) + gtk_action_object_actions_iface.Activate(action.replace('unity.', ''), [], dict()) + +""" + main +""" + +# --- Get X Window ID --- +window_id_cmd = subprocess.check_output(['xprop', '-root', '-notype', '_NET_ACTIVE_WINDOW']).decode('utf-8') +window_id = window_id_cmd.split(' ')[4].split('\n')[0] + +print('Window id is :', window_id) + +# --- Get GTK MenuModel Bus name --- + +gtk_bus_name_cmd = subprocess.check_output(['xprop', '-id', window_id, '-notype', '_GTK_UNIQUE_BUS_NAME']).decode('utf-8') +gtk_object_path_cmd = subprocess.check_output(['xprop', '-id', window_id, '-notype', '_GTK_MENUBAR_OBJECT_PATH']).decode('utf-8') + +if gtk_bus_name_cmd == '_GTK_UNIQUE_BUS_NAME: not found.\n' or gtk_object_path_cmd == '_GTK_MENUBAR_OBJECT_PATH: not found.\n': + try_appmenu_interface(int(window_id, 16)) +else: + try_gtk_interface(gtk_bus_name_cmd, gtk_object_path_cmd) diff --git a/.i3blocks.conf b/.i3blocks.conf new file mode 100644 index 0000000..d06f796 --- /dev/null +++ b/.i3blocks.conf @@ -0,0 +1,204 @@ +# i3blocks config file +# +# Please see man i3blocks for a complete reference! +# The man page is also hosted at http://vivien.github.io/i3blocks +# +# List of valid properties: +# +# align +# color +# command +# full_text +# instance +# interval +# label +# min_width +# name +# separator +# separator_block_width +# short_text +# signal +# urgent + +# Global properties +# +# The top properties below are applied to every block, but can be overridden. +# Each block command defaults to the script name to avoid boilerplate. +command=${HOME}/.i3blocks/$BLOCK_NAME +separator_block_width=15 +markup=none + +#[window_title] +#command=echo $(xdotool getactivewindow getwindowname) +#interval=1 + +# CPU usage +# +# The script may be called with -w and -c switches to specify thresholds, +# see the script for details. +[cpu_usage] +#label= +label=cpu +interval=1 +#min_width= 99.99% +#separator=false + +[load_average] +#label= +label=load +interval=1 + +# Temperature +# +# Support multiple chips, though lm-sensors. +# The script may be called with -w and -c switches to specify thresholds, +# see the script for details. +[temperature] +#label= +label=cpu +instance=coretemp-isa-0000 +interval=3 +separator=false + +[temperature] +label=gpu +instance=radeon-pci-0300 +interval=3 +# Memory usage +# +# The type defaults to "mem" if the instance is not specified. +[memory] +label=ram +separator=false +interval=1 +#min_width=RAM 99.99% + +[memory] +label=swap +instance=swap +#separator=false +interval=1 +#min_width=SWAP 99.99% + +# Disk usage +# +# The directory defaults to $HOME if the instance is not specified. +# The script may be called with a optional argument to set the alert +# (defaults to 10 for 10%). +#[disk] +#label= +#instance=/ +#interval=30 +#separator=false + +#[disk] +#label= +#instance=/mnt/data +#interval=30 + +# Packages to update +[updates] +#label= +interval=300 + +# Network interface monitoring +# +# If the instance is not specified, use the interface used for default route. +# The address can be forced to IPv4 or IPv6 with -4 or -6 switches. +#[iface] +#label=wlan +#instance=wlp1s0 +#interval=10 +#separator=false + +#[public_ip] +#label= +#interval=60 +#separator=false + +#[vpn] +#interval=30 + +#[wifi] +##label= +##label=wlan +#instance=wlp1s0 +#interval=3 +#separator=false + +#[bandwidth] +#instance=wlp1s0 +#interval=1 +#min_width=d 999K u 999K + +#[bandwidth] +#instance=enp0s31f6 +#interval=1 +#min_width=IN 999K OUT 999K + + +# Battery indicator +# +# The battery instance defaults to 0. +[battery] +#label=BAT +#label=⚡ +instance=0 +interval=5 + +# Generic media player support +# +# This displays "ARTIST - SONG" if a music is playing. +# Supported players are: spotify, vlc, audacious, xmms2, mplayer, and others. +[mocp] +#instance=spotify +interval=20 +signal=13 + +# OpenVPN support +# +# Support multiple VPN, with colors. +#[openvpn] +#interval=20 + + +# Volume indicator +# +# The first parameter sets the step (and units to display) +# The second parameter overrides the mixer selection +# See the script for details. +[volume] +instance=Master +#instance=PCM +interval=once +signal=10 +separator=false + +[volume] +instance=Capture +#instance=PCM +interval=once +signal=10 + + +# Key indicators +# +# Add the following bindings to i3 config file: +# +# bindsym --release Caps_Lock exec pkill -SIGRTMIN+11 i3blocks +# bindsym --release Num_Lock exec pkill -SIGRTMIN+12 i3blocks +[keyindicator] +instance=CAPS +interval=once +signal=11 +separator=false + +[keyindicator] +instance=NUM +interval=once +signal=12 + +# Date Time +# +[time] +interval=1 diff --git a/.i3blocks/bandwidth b/.i3blocks/bandwidth new file mode 100755 index 0000000..0ed2f75 --- /dev/null +++ b/.i3blocks/bandwidth @@ -0,0 +1,90 @@ +#!/bin/bash +# Copyright (C) 2012 Stefan Breunig +# Copyright (C) 2014 kaueraal +# Copyright (C) 2015 Thiago Perrotta + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Use the provided interface, otherwise the device used for the default route. +if [[ -n $BLOCK_INSTANCE ]]; then + INTERFACE=$BLOCK_INSTANCE +else + INTERFACE=$(ip route | awk '/^default/ { print $5 ; exit }') +fi + +# Issue #36 compliant. +if ! [ -e "/sys/class/net/${INTERFACE}/operstate" ] || ! [ "`cat /sys/class/net/${INTERFACE}/operstate`" = "up" ] +then + #echo "$INTERFACE down" + #echo "$INTERFACE down" + #echo "#FF0000" + exit 0 +fi + +# path to store the old results in +path="/dev/shm/$(basename $0)-${INTERFACE}" + +# grabbing data for each adapter. +read rx < "/sys/class/net/${INTERFACE}/statistics/rx_bytes" +read tx < "/sys/class/net/${INTERFACE}/statistics/tx_bytes" + +# get time +time=$(date +%s) + +# write current data if file does not exist. Do not exit, this will cause +# problems if this file is sourced instead of executed as another process. +if ! [[ -f "${path}" ]]; then + echo "${time} ${rx} ${tx}" > "${path}" + chmod 0666 "${path}" +fi + +# read previous state and update data storage +read old < "${path}" +echo "${time} ${rx} ${tx}" > "${path}" + +# parse old data and calc time passed +old=(${old//;/ }) +time_diff=$(( $time - ${old[0]} )) + +# sanity check: has a positive amount of time passed +[[ "${time_diff}" -gt 0 ]] || exit + +# calc bytes transferred, and their rate in byte/s +rx_diff=$(( $rx - ${old[1]} )) +tx_diff=$(( $tx - ${old[2]} )) +rx_rate=$(( $rx_diff / $time_diff )) +tx_rate=$(( $tx_diff / $time_diff )) + +# shift by 10 bytes to get KiB/s. If the value is larger than +# 1024^2 = 1048576, then display MiB/s instead + +# incoming +echo -n " " +rx_kib=$(( $rx_rate >> 10 )) +if [[ "$rx_rate" -gt 1048576 ]]; then + printf '%sM' "`echo "scale=1; $rx_kib / 1024" | bc`" +else + echo -n "${rx_kib}K" +fi + +echo -n " " + +# outgoing +echo -n " " +tx_kib=$(( $tx_rate >> 10 )) +if [[ "$tx_rate" -gt 1048576 ]]; then + printf '%sM' "`echo "scale=1; $tx_kib / 1024" | bc`" +else + echo -n "${tx_kib}K" +fi diff --git a/.i3blocks/battery b/.i3blocks/battery new file mode 100755 index 0000000..426b779 --- /dev/null +++ b/.i3blocks/battery @@ -0,0 +1,151 @@ +#!/usr/bin/env bash +# batterybar; displays battery percentage as a bar on i3blocks +# +# Copyright 2015 Keftaa +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1301, USA. +# +# + + + +output=$(acpi battery) +percentage=$(echo "$output" | grep -o -m1 '[0-9]\{1,3\}%' | tr -d '%') +status=$(echo "$output" | egrep -o -m1 'Discharging|Charging|AC|Full|Unknown') +remaining=$( echo "$output" | egrep -o -m1 '[0-9][0-9]:[0-9][0-9]') +[[ -n $remaining ]] && remaining_formatted="($remaining)" +icon="" + + +#There are 8 colors that reflect the current battery percentage when +#discharging +dis_colors=("#f2777a" "#f99157" "#f99157" "#ffcc66" "#ffcc66" "#99cc99" + "#99cc99" "#66cccc") + +charging_color="#6699cc" +full_color="#6699cc" +ac_color="#6699cc" + +while getopts 1:2:3:4:5:6:7:8:c:f:a:h opt; do + case "$opt" in + 1) dis_colors[0]="$OPTARG";; + 2) dis_colors[1]="$OPTARG";; + 3) dis_colors[2]="$OPTARG";; + 4) dis_colors[3]="$OPTARG";; + 5) dis_colors[4]="$OPTARG";; + 6) dis_colors[5]="$OPTARG";; + 7) dis_colors[6]="$OPTARG";; + 8) dis_colors[7]="$OPTARG";; + c) charging_color="$OPTARG";; + f) full_color="$OPTARG";; + a) ac_color="$OPTARG";; + h) printf "Usage: batterybar [OPTION] color + When discharging, there are 8 [1-8] levels colors. + You can specify custom colors, for example: + + batterybar -1 red -2 \"#F6F6F6\" -8 green + + You can also specify the colors for the charging, AC and + charged states: + + batterybar -c green -f white -a \"#EEEEEE\"\n"; + exit 0; + esac +done + + + +#if (( percentage > 0 && percentage < 20 )); then +# #icon="" +# icon="----" +#elif (( percentage >= 20 && percentage < 40 )); then +# #icon="" +# icon="#---" +#elif (( percentage >= 40 && percentage < 60 )); then +# #icon="" +# icon="##--" +#elif (( percentage >= 60 && percentage < 80 )); then +# #icon="" +# icon="###-" +#elif (( percentage >=80 )); then +# #icon="" +# icon="####" +#fi +# +#if [[ "$status" = "Unknown" ]]; then +# icon="" +#fi + +icon="bat " + +case "$status" in +"Charging") + color="$charging_color" + icon="$icon↑" + if (( percentage >= 0 && percentage <= 10 )); then + color="${dis_colors[0]}" + echo 0 on > /proc/acpi/ibm/led + elif (( percentage > 10 && percentage <= 20 )); then + color="${dis_colors[1]}" + elif (( percentage > 20 && percentage <= 30 )); then + color="${dis_colors[2]}" + elif (( percentage > 30 && percentage <= 40 )); then + color="${dis_colors[3]}" + elif (( percentage > 40 && percentage <= 60 )); then + color="${dis_colors[4]}" + elif (( percentage > 60 && percentage <= 70 )); then + color="${dis_colors[5]}" + elif (( percentage > 70 && percentage <= 80 )); then + color="${dis_colors[6]}" + elif (( percentage > 80 )); then + color="${dis_colors[7]}" + fi +;; +"Full") + color="$full_color" + icon="=$icon" +;; +"AC") + color="$ac_color" + icon="$icon↑" + echo 0 on > /proc/acpi/ibm/led +;; +"Discharging"|"Unknown") + icon="$icon↓" + if (( percentage >= 0 && percentage <= 10 )); then + color="${dis_colors[0]}" + echo 0 blink > /proc/acpi/ibm/led + elif (( percentage > 10 && percentage <= 20 )); then + color="${dis_colors[1]}" + elif (( percentage > 20 && percentage <= 30 )); then + color="${dis_colors[2]}" + elif (( percentage > 30 && percentage <= 40 )); then + color="${dis_colors[3]}" + elif (( percentage > 40 && percentage <= 60 )); then + color="${dis_colors[4]}" + elif (( percentage > 60 && percentage <= 70 )); then + color="${dis_colors[5]}" + elif (( percentage > 70 && percentage <= 80 )); then + color="${dis_colors[6]}" + elif (( percentage > 80 )); then + color="${dis_colors[7]}" + fi +;; +esac + +echo "$icon $percentage% $remaining_formatted" +echo "$percentage%" +echo "$color" diff --git a/.i3blocks/cpu_usage b/.i3blocks/cpu_usage new file mode 100755 index 0000000..0cf297f --- /dev/null +++ b/.i3blocks/cpu_usage @@ -0,0 +1,61 @@ +#!/usr/bin/perl +# +# Copyright 2014 Pierre Mavro +# Copyright 2014 Vivien Didelot +# Copyright 2014 Andreas Guldstrand +# +# Licensed under the terms of the GNU GPL v3, or any later version. + +use strict; +use warnings; +use utf8; +use Getopt::Long; + +# default values +my $t_warn = 70; +my $t_crit = 90; +my $cpu_usage = -1; + +sub help { + print "Usage: cpu_usage [-w ] [-c ]\n"; + print "-w : warning threshold to become yellow\n"; + print "-c : critical threshold to become red\n"; + exit 0; +} + +GetOptions("help|h" => \&help, + "w=i" => \$t_warn, + "c=i" => \$t_crit); + +# Get CPU usage +$ENV{LC_ALL}="en_US"; # if mpstat is not run under en_US locale, things may break, so make sure it is +open (MPSTAT, 'mpstat 1 1 |') or die; +while () { + if (/^.*\s+(\d+\.\d+)\s+$/) { + $cpu_usage = 100 - $1; # 100% - %idle + last; + } +} +close(MPSTAT); + + +$cpu_usage eq -1 and die 'Can\'t find CPU information'; +# Print short_text, full_text +printf "%5.2f%%\n", $cpu_usage; +printf "%2d%%\n", $cpu_usage; + +# Print color, if needed +if ($cpu_usage >= $t_crit) { + print "#f2777a\n"; + #exit 33; +} elsif ($cpu_usage >= $t_warn) { + print "#f99157\n"; +} elsif ($cpu_usage >= 40) { + print "#ffcc66\n"; +} elsif ($cpu_usage >= 10) { + print "#99cc99\n"; +} else { + print "#66cccc\n"; +} + +exit 0; diff --git a/.i3blocks/disk b/.i3blocks/disk new file mode 100755 index 0000000..444c12c --- /dev/null +++ b/.i3blocks/disk @@ -0,0 +1,46 @@ +#!/bin/sh +# Copyright (C) 2014 Julien Bonjean + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +DIR="${BLOCK_INSTANCE:-$HOME}" +ALERT_LOW="${1:-10}" # color will turn red under this value (default: 10%) + +# df -h -P -l "$DIR" | awk -v alert_low=$ALERT_LOW ' +df -h -P -l "$DIR" | awk ' +/\/.*/ { + # full text + print $4 + + # short text + print $4 + + use=$5 + + # no need to continue parsing + exit 0 +} + +END { + gsub(/%$/,"",use) + if (100 - use < 10) { + # color + print "#0000FF" + } else if (100 - use < 20) { + print "#2E9DF2" + } else { + print "#00FFFF" + } +} +' diff --git a/.i3blocks/iface b/.i3blocks/iface new file mode 100755 index 0000000..85f2422 --- /dev/null +++ b/.i3blocks/iface @@ -0,0 +1,61 @@ +#!/bin/bash +# Copyright (C) 2014 Julien Bonjean +# Copyright (C) 2014 Alexander Keller + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +#------------------------------------------------------------------------ + +# Use the provided interface, otherwise the device used for the default route. +if [[ -n $BLOCK_INSTANCE ]]; then + IF=$BLOCK_INSTANCE +else + IF=$(ip route | awk '/^default/ { print $5 ; exit }') +fi + +#------------------------------------------------------------------------ + +# As per #36 -- It is transparent: e.g. if the machine has no battery or wireless +# connection (think desktop), the corresponding block should not be displayed. +[[ ! -d /sys/class/net/${IF} ]] && exit + +#------------------------------------------------------------------------ + +if [[ "$(cat /sys/class/net/$IF/operstate)" = 'down' ]]; then + echo down # full text + echo down # short text + echo \#F2777A # color + exit +fi + +case $1 in + -4) + AF=inet ;; + -6) + AF=inet6 ;; + *) + AF=inet6? ;; +esac + +# if no interface is found, use the first device with a global scope +IPADDR=$(ip addr show $IF | perl -n -e "/$AF ([^\/]+).* scope global/ && print \$1 and exit") + +case $BLOCK_BUTTON in + 3) echo -n "$IPADDR" | xclip -q -se c ;; +esac + +#------------------------------------------------------------------------ + +echo "$IPADDR" # full text +echo "$IPADDR" # short text diff --git a/.i3blocks/keyindicator b/.i3blocks/keyindicator new file mode 100755 index 0000000..cbe19ba --- /dev/null +++ b/.i3blocks/keyindicator @@ -0,0 +1,73 @@ +#!/usr/bin/perl +# +# Copyright 2014 Marcelo Cerri +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +use strict; +use warnings; +use utf8; +use Getopt::Long; +use File::Basename; + +# Default values +my $indicator = $ENV{BLOCK_INSTANCE} || "CAPS"; +my $color_on = "#99cc99"; +my $color_off = "#515151"; + +sub help { + my $program = basename($0); + printf "Usage: %s [-c ] [-C ]\n", $program; + printf " -c : hex color to use when indicator is on\n"; + printf " -C : hex color to use when indicator is off\n"; + printf "\n"; + printf "Note: environment variable \$BLOCK_INSTANCE should be one of:\n"; + printf " CAPS, NUM (default is CAPS).\n"; + exit 0; +} + +Getopt::Long::config qw(no_ignore_case); +GetOptions("help|h" => \&help, + "c=s" => \$color_on, + "C=s" => \$color_off) or exit 1; + +# Key mapping +my %indicators = ( + CAPS => 0x00000001, + NUM => 0x00000002, +); + +# Retrieve key flags +my $mask = 0; +open(XSET, "xset -q |") or die; +while () { + if (/LED mask:\s*([0-9]+)/) { + $mask = $1; + last; + } +} +close(XSET); + +my $indi = "N"; + +# Output +printf "%s\n", $indicator; +if ($indicator eq "CAPS") {$indi = "C";} +printf "%s\n", $indi; +if (($indicators{$indicator} || 0) & $mask) { + printf "%s\n", $color_on; +} else { + printf "%s\n", $color_off; +} +exit 0 diff --git a/.i3blocks/load_average b/.i3blocks/load_average new file mode 100755 index 0000000..5bc0507 --- /dev/null +++ b/.i3blocks/load_average @@ -0,0 +1,37 @@ +#!/bin/sh +# Copyright (C) 2014 Julien Bonjean + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +load="$(cut -d ' ' -f1 /proc/loadavg)" +all="$(cut -d ' ' -f1-3 /proc/loadavg)" +cpus="$(nproc)" + +# full text +echo "$all" + +# short text +echo "$load" + +# color if load is too high +awk -v cpus=$cpus -v cpuload=$load ' + BEGIN { + if (cpus <= cpuload) { + print "#f2777a"; + #exit 33; + } else { + print "#99cc99"; + } + } +' diff --git a/.i3blocks/mediaplayer b/.i3blocks/mediaplayer new file mode 100755 index 0000000..b3d3ecb --- /dev/null +++ b/.i3blocks/mediaplayer @@ -0,0 +1,76 @@ +#!/usr/bin/perl +# Copyright (C) 2014 Tony Crisci + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Requires playerctl binary to be in your path (except cmus) +# See: https://github.com/acrisci/playerctl + +# Set instance=NAME in the i3blocks configuration to specify a music player +# (playerctl will attempt to connect to org.mpris.MediaPlayer2.[NAME] on your +# DBus session). + +use Env qw(BLOCK_INSTANCE); + +my @metadata = (); +my $player_arg = ""; + +if ($BLOCK_INSTANCE) { + $player_arg = "--player='$BLOCK_INSTANCE'"; +} + +if ($ENV{'BLOCK_BUTTON'} == 1) { + system("playerctl $player_arg previous"); +} elsif ($ENV{'BLOCK_BUTTON'} == 2) { + system("playerctl $player_arg play-pause"); +} elsif ($ENV{'BLOCK_BUTTON'} == 3) { + system("playerctl $player_arg next"); +} + +if ($player_arg eq '' or $player_arg =~ /cmus$/) { + # try cmus first + my @cmus = split /^/, qx(cmus-remote -Q); + if ($? == 0) { + foreach my $line (@cmus) { + my @data = split /\s/, $line; + if (shift @data eq 'tag') { + my $key = shift @data; + my $value = join ' ', @data; + + @metadata[0] = $value if $key eq 'artist'; + @metadata[1] = $value if $key eq 'title'; + } + } + + if (@metadata) { + # metadata found so we are done + print(join ' - ', @metadata); + exit 0; + } + } + + # if cmus was given, we are done + exit 0 unless $player_arg eq ''; +} + +my $artist = qx(playerctl $player_arg metadata artist); +# exit status will be nonzero when playerctl cannot find your player +exit(0) if $?; +push(@metadata, $artist) if $artist; + +my $title = qx(playerctl $player_arg metadata title); +exit(0) if $?; +push(@metadata, $title) if $title; + +print(join(" - ", @metadata)) if @metadata; diff --git a/.i3blocks/memory b/.i3blocks/memory new file mode 100755 index 0000000..2106052 --- /dev/null +++ b/.i3blocks/memory @@ -0,0 +1,79 @@ +#!/bin/sh +# Copyright (C) 2014 Julien Bonjean + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +TYPE="${BLOCK_INSTANCE:-mem}" + +awk -v type=$TYPE ' +/^MemTotal:/ { + mem_total=$2 +} +/^MemFree:/ { + mem_free=$2 +} +/^Buffers:/ { + mem_free+=$2 +} +/^Cached:/ { + mem_free+=$2 +} +/^SwapTotal:/ { + swap_total=$2 +} +/^SwapFree:/ { + swap_free=$2 +} +END { + # full text + if (type == "swap") + #printf("%.1fG\n", swap_free/1024/1024) + printf("%5.2f%\n", (swap_total-swap_free)*100/swap_total) + else + #printf("%.1f%\n", mem_free/1024/1024) + printf("%5.2f%\n", (mem_total-mem_free)*100/mem_total) + + # TODO: short text + if (type == "swap") + #printf("%.1fG\n", swap_free/1024/1024) + printf("%2.0f%\n", (swap_total-swap_free)*100/swap_total) + else + #printf("%.1f%\n", mem_free/1024/1024) + printf("%2.0f%\n", (mem_total-mem_free)*100/mem_total) + + # TODO: color (if less than X%) + if (type == "swap") + if ((swap_total-swap_free)*100/swap_total > 90) + printf("#f2777a") + else if ((swap_total-swap_free)*100/swap_total > 70) + printf("#f99157") + else if ((swap_total-swap_free)*100/swap_total > 40) + printf("#ffcc66") + else if ((swap_total-swap_free)*100/swap_total > 10) + printf("#99cc99") + else + printf("#66cccc") + else + if ((mem_total-mem_free)*100/mem_total > 90) + printf("#f2777a") + else if ((mem_total-mem_free)*100/mem_total > 70) + printf("#f99157") + else if ((mem_total-mem_free)*100/mem_total > 40) + printf("#ffcc66") + else if ((mem_total-mem_free)*100/mem_total > 10) + printf("#99cc99") + else + printf("#66cccc") +} +' /proc/meminfo diff --git a/.i3blocks/mocp b/.i3blocks/mocp new file mode 100755 index 0000000..8d41ccb --- /dev/null +++ b/.i3blocks/mocp @@ -0,0 +1,18 @@ +#!/bin/bash + +case $BLOCK_BUTTON in + 1) mocp -r ;; + 2) mocp -G ;; + 3) mocp -f ;; + 4) mocp -j $(($(mocp -Q "%cs") - 5))s ;; + 5) mocp -j $(($(mocp -Q "%cs") + 5))s ;; +esac + +status=$(mocp -Q "%state") +case $status in + STOP ) status="[]" ;; + PAUSE ) status="||" ;; + PLAY ) status=" >" ;; +esac + +echo $status $(mocp -Q "%song") diff --git a/.i3blocks/openvpn b/.i3blocks/openvpn new file mode 100755 index 0000000..02aaba4 --- /dev/null +++ b/.i3blocks/openvpn @@ -0,0 +1,149 @@ +#!/usr/bin/perl +# Made by Pierre Mavro/Deimosfr +# Licensed under the terms of the GNU GPL v3, or any later version. +# Version: 0.2 + +# Usage: +# 1. The configuration name of OpenVPN should be familiar for you (home,work...) +# 2. The device name in your configuration file should be fully named (tun0,tap1...not only tun or tap) +# 3. When you launch one or multiple OpenVPN connexion, be sure the PID file is written in the correct folder (ex: --writepid /run/openvpn/home.pid) + +use strict; +use warnings; +use utf8; +use Getopt::Long; + +my $openvpn_enabled='/dev/shm/openvpn_i3blocks_enabled'; +my $openvpn_disabled='/dev/shm/openvpn_i3blocks_disabled'; + +# Print output +sub print_output { + my $ref_pid_files = shift; + my @pid_files = @$ref_pid_files; + my $change=0; + + # Total pid files + my $total_pid = @pid_files; + if ($total_pid == 0) { + print "VPN: down\n"x2; + # Delete OpenVPN i3blocks temp files + if (-f $openvpn_enabled) { + unlink $openvpn_enabled or die "Can't delete $openvpn_enabled\n"; + # Colorize if VPN has just went down + print '#FF0000\n'; + } + unless (-f $openvpn_disabled) { + open(my $shm, '>', $openvpn_disabled) or die "Can't write $openvpn_disabled\n"; + } + exit(0); + } + + # Check if interface device is present + my $vpn_found=0; + my $pid; + my $cmd_line; + my @config_name; + my @config_path; + my $interface; + my $current_config_path; + my $current_config_name; + foreach (@pid_files) { + # Get current PID + $pid=0; + open(PID, '<', $_); + while() { + chomp $_; + $pid = $_; + } + close(PID); + # Check if PID has been found + if ($pid ==0) { + print "Can't get PID $_: $!\n"; + } + + # Check if PID is still alive + $cmd_line='/proc/'.$pid.'/cmdline'; + if (-f $cmd_line) { + # Get config name + open(CMD_LINE, '<', $cmd_line); + while() { + chomp $_; + if ($_ =~ /--config\s*(.*\.conf)/) { + # Get interface from config file + $current_config_path = $1; + # Remove unwanted escape chars + $current_config_path =~ s/\x{00}//g; + $interface = 'null'; + # Get configuration name + if ($current_config_path =~ /(\w+).conf/) { + $current_config_name=$1; + } else { + $current_config_name='unknow'; + } + # Get OpenVPN interface device name + open(CONFIG, '<', $current_config_path) or die "Can't read config file '$current_config_path': $!\n"; + while() { + chomp $_; + if ($_ =~ /dev\s+(\w+)/) { + $interface=$1; + last; + } + } + close(CONFIG); + # check if interface exist + unless ($interface eq 'null') { + if (-d "/sys/class/net/$interface") { + push @config_name, $current_config_name; + $vpn_found=1; + # Write enabled file + unless (-f $openvpn_enabled) { + open(my $shm, '>', $openvpn_enabled) or die "Can't write $openvpn_enabled\n"; + $change=1; + } + } + } + } + } + close(CMD_LINE); + } + } + + # Check if PID found + my $names; + my $short_status; + if ($vpn_found == 1) { + $names = join('/', @config_name); + $short_status='up'; + } else { + $short_status='down'; + $names = $short_status; + } + + print "VPN: $names\n"; + print "VPN: $short_status\n"; + + # Print color if there were changes + print "#00FF00\n" if ($change == 1); + + exit(0); +} + +sub check_opts { + # Vars + my @pid_file=glob '/run/openvpn/*.pid'; + + # Set options + GetOptions( "help|h" => \&help, + "p=s" => \@pid_file); + + print_output(\@pid_file); +} + +sub help { + print "Usage: openvpn [-d pid folder files]\n"; + print "-d : pid folder files (default /run/openvpn/*.pid)\n"; + print "Note: devices in configuration file should be named with their number (ex: tun0, tap1)\n"; + exit(1); +} + +&check_opts; diff --git a/.i3blocks/public_ip b/.i3blocks/public_ip new file mode 100755 index 0000000..fedb329 --- /dev/null +++ b/.i3blocks/public_ip @@ -0,0 +1,6 @@ +#!/bin/sh + +curl ip.yunohost.org +echo +curl ip.yunohost.org +echo diff --git a/.i3blocks/temperature b/.i3blocks/temperature new file mode 100755 index 0000000..583a18f --- /dev/null +++ b/.i3blocks/temperature @@ -0,0 +1,82 @@ +#!/usr/bin/perl +# Copyright 2014 Pierre Mavro +# Copyright 2014 Vivien Didelot +# Copyright 2014 Andreas Guldstrand +# Copyright 2014 Benjamin Chretien + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +use strict; +use warnings; +use utf8; +use Getopt::Long; + +binmode(STDOUT, ":utf8"); + +# default values +my $t_warn = 60; +my $t_crit = 70; +my $chip = "$ENV{BLOCK_INSTANCE}"; +my $temperature = -9999; +my $color = "#d3d0c8"; +#my $status = ""; + +sub help { + print "Usage: temperature [-w ] [-c ] [--chip ]\n"; + print "-w : warning threshold to become yellow\n"; + print "-c : critical threshold to become red\n"; + print "--chip : sensor chip\n"; + exit 0; +} + +GetOptions("help|h" => \&help, + "w=i" => \$t_warn, + "c=i" => \$t_crit, + "chip=s" => \$chip); + +# Get chip temperature +open (SENSORS, "sensors -u $chip |") or die; +while () { + if (/^\s+temp1_input:\s+[\+]*([\-]*\d+\.\d)/) { + $temperature = $1; + last; + } +} +close(SENSORS); + +$temperature eq -9999 and die 'Cannot find temperature'; + +# Print color, if needed +if ($temperature >= $t_crit) { + $color = "#f2777a"; +# $status = ""; + #exit 33; +} elsif ($temperature >= $t_warn) { + $color = "#f99157"; +# $status = ""; +} elsif ($temperature >= 50) { + $color = "#ffcc66"; +# $status = ""; +} elsif ($temperature >=40) { + $color = "#99cc99"; +# $status = ""; +} else { + $color = "#66cccc"; +# $status = ""; +} + +#printf "$status %d°C\n%d°C\n$color\n", $temperature, $temperature; +printf "%d°C\n%d°C\n$color\n", $temperature, $temperature; + +exit 0; diff --git a/.i3blocks/time b/.i3blocks/time new file mode 100755 index 0000000..6c25d86 --- /dev/null +++ b/.i3blocks/time @@ -0,0 +1,4 @@ +#!/bin/sh + +date '+%x (%V) %X' +date '+%d/%m %R' diff --git a/.i3blocks/updates b/.i3blocks/updates new file mode 100755 index 0000000..e3b7b3d --- /dev/null +++ b/.i3blocks/updates @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +avail=$(checkupdates | wc -l ) +aur=$(yaourt -Qua | grep 'aur/' | wc -l) + +if [[ $(($aur+$avail)) -eq 0 ]] +then + echo "0 màj" + echo ok + echo "#99cc99" +else + echo "$avail màj" + echo "$avail" + echo "#f99157" +fi diff --git a/.i3blocks/volume b/.i3blocks/volume new file mode 100755 index 0000000..33c5f79 --- /dev/null +++ b/.i3blocks/volume @@ -0,0 +1,91 @@ +#!/bin/bash +# Copyright (C) 2014 Julien Bonjean +# Copyright (C) 2014 Alexander Keller + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +#------------------------------------------------------------------------ + +# The second parameter overrides the mixer selection +# For PulseAudio users, use "pulse" +# For Jack/Jack2 users, use "jackplug" +# For ALSA users, you may use "default" for your primary card +# or you may use hw:# where # is the number of the card desired +MIXER="default" +[ -n "$(lsmod | grep pulse)" ] && MIXER="pulse" +[ -n "$(lsmod | grep jack)" ] && MIXER="jackplug" +MIXER="${2:-$MIXER}" + +# The instance option sets the control to report and configure +# This defaults to the first control of your selected mixer +# For a list of the available, use `amixer -D $Your_Mixer scontrols` +SCONTROL="${BLOCK_INSTANCE:-$(amixer -D $MIXER scontrols | + sed -n "s/Simple mixer control '\([A-Za-z ]*\)',0/\1/p" | + head -n1 + )}" + +# The first parameter sets the step to change the volume by (and units to display) +# This may be in in % or dB (eg. 5% or 3dB) +STEP="${1:-5%}" + +#------------------------------------------------------------------------ + +capability() { # Return "Capture" if the device is a capture device + amixer -D $MIXER get $SCONTROL | + sed -n "s/ Capabilities:.*cvolume.*/Capture/p" +} + +volume() { + amixer -D $MIXER get $SCONTROL $(capability) +} + +format() { + TYPE="" + TYPE_MUTE="" + if [[ $SCONTROL = "Master" ]] + then + # TYPE_MUTE=" " + # TYPE=" " + TYPE="vol " + TYPE_MUTE="vol " + elif [[ $SCONTROL = "Capture" ]] + then + # TYPE_MUTE=" " + # TYPE=" " + TYPE="mic " + TYPE_MUTE="mic " + fi + perl_filter='if (/.*\[(\d+%)\] (\[(-?\d+.\d+dB)\] )?\[(on|off)\]/)' + perl_filter+='{CORE::say $4 eq "off" ? "' + perl_filter+=$TYPE_MUTE + perl_filter+=$([[ $STEP = *dB ]] && echo '$3' || echo '$1') + perl_filter+='\n\n#f2777a" : "' + perl_filter+=$TYPE + # If dB was selected, print that instead + perl_filter+=$([[ $STEP = *dB ]] && echo '$3' || echo '$1') + perl_filter+='\n\n#99cc99"; exit}' + perl -ne "$perl_filter" +} + +#------------------------------------------------------------------------ + +case $BLOCK_BUTTON in + 3) amixer -q -D $MIXER sset $SCONTROL $(capability) 1%+ ;; + 1) amixer -q -D $MIXER sset $SCONTROL $(capability) 1%- ;; + 2) amixer -q -D $MIXER sset $SCONTROL $(capability) toggle ;; # right click, mute/unmute + 4) amixer -q -D $MIXER sset $SCONTROL $(capability) ${STEP}+ ;; # scroll up, increase + 5) amixer -q -D $MIXER sset $SCONTROL $(capability) ${STEP}- ;; # scroll down, decrease +esac + +volume | format diff --git a/.i3blocks/vpn b/.i3blocks/vpn new file mode 100755 index 0000000..82eba0f --- /dev/null +++ b/.i3blocks/vpn @@ -0,0 +1,11 @@ +#!/bin/bash + +echo VPN +echo VPN + +if [ -e "/var/run/vpnc/defaultroute" ] +then + echo "#00FFFF" +else + echo "#386587" +fi diff --git a/.i3blocks/wifi b/.i3blocks/wifi new file mode 100755 index 0000000..ffaccab --- /dev/null +++ b/.i3blocks/wifi @@ -0,0 +1,46 @@ +#!/bin/bash +# Copyright (C) 2014 Alexander Keller + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +#------------------------------------------------------------------------ + +INTERFACE="${BLOCK_INSTANCE:-wlan0}" + +#------------------------------------------------------------------------ + +# As per #36 -- It is transparent: e.g. if the machine has no battery or wireless +# connection (think desktop), the corresponding block should not be displayed. +[[ ! -d /sys/class/net/${INTERFACE}/wireless ]] || + [[ "$(cat /sys/class/net/$INTERFACE/operstate)" = 'down' ]] && exit + +#------------------------------------------------------------------------ + +QUALITY=$(grep $INTERFACE /proc/net/wireless | awk '{ print int($3 * 100 / 70) }') + +#------------------------------------------------------------------------ + +echo $QUALITY% # full text +echo $QUALITY% # short text + +# color +if [[ $QUALITY -ge 80 ]]; then + echo "#00FF00" +elif [[ $QUALITY -lt 80 ]]; then + echo "#FFF600" +elif [[ $QUALITY -lt 60 ]]; then + echo "#FFAE00" +elif [[ $QUALITY -lt 40 ]]; then + echo "#FF0000" +fi diff --git a/.vim/.netrwhist b/.vim/.netrwhist index 7e72db0..3f3005e 100644 --- a/.vim/.netrwhist +++ b/.vim/.netrwhist @@ -1,3 +1,8 @@ let g:netrw_dirhistmax =10 -let g:netrw_dirhist_cnt =1 +let g:netrw_dirhist_cnt =6 let g:netrw_dirhist_1='/boot/grub/themes/Archlinux' +let g:netrw_dirhist_2='/home/breizh/.config/i3' +let g:netrw_dirhist_3='/home/breizh/projects' +let g:netrw_dirhist_4='/home/breizh/.config/fisherman/transfer' +let g:netrw_dirhist_5='/home/breizh/Documents/IUT/Licence/Admin_Réseaux' +let g:netrw_dirhist_6='/home/breizh/Documents/IUT/Licence/Admin_Réseaux/TP4' diff --git a/.vim/bundle/base16-vim b/.vim/bundle/base16-vim index 2d991f1..ee13503 160000 --- a/.vim/bundle/base16-vim +++ b/.vim/bundle/base16-vim @@ -1 +1 @@ -Subproject commit 2d991f14f688a38b7b2bcd397bad5efadd0f80a9 +Subproject commit ee13503508ee52c62b16a79ada86779e0cb46886 diff --git a/.vim/bundle/update.fish b/.vim/bundle/update.fish deleted file mode 100755 index 3f456b4..0000000 --- a/.vim/bundle/update.fish +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/fish - -for folder in * - echo -n "[ ] Mise à jour de $folder" - if test -d $folder - cd $folder - git pull >/dev/null ^/dev/null - and begin - echo -en "\r[ " - set_color green - echo -n OK - set_color normal - echo " ]" - end - or begin - echo -en "\r[" - set_color red - echo FAIL - set_color normal - echo -n "]" - end - cd - - else - echo -ne "\r[" - set_color yellow - echo -n SKIP - set_color normal - echo "]" - end -end diff --git a/.vim/bundle/vim-table-mode b/.vim/bundle/vim-table-mode index 9f383b9..40fe641 160000 --- a/.vim/bundle/vim-table-mode +++ b/.vim/bundle/vim-table-mode @@ -1 +1 @@ -Subproject commit 9f383b92beb73b75f8920d9cdebe11cc42c90d93 +Subproject commit 40fe641708c58476c3a1b9aeafb68dd888d4920b diff --git a/.vim/config/settings.vim b/.vim/config/settings.vim index 0457458..e7b392c 100644 --- a/.vim/config/settings.vim +++ b/.vim/config/settings.vim @@ -16,3 +16,4 @@ if filereadable(expand("~/.vimrc_background")) endif source ~/.vimrc_background endif +cmap w!! w !sudo tee > /dev/null %