Focus on disabled JComponent
How do i get the focus in a JComponent, say a JTextField or a JComboBox, that is disabled?
I noticed that the DefaultKeyboardFocusManager ignores disabled fields when the i go through them with the tab button
from DefaultKeyboardFocusManager
public boolean dispatchKeyEvent(KeyEvent e) {
Component focusOwner = (((AWTEvent)e).isPosted) ? getFocusOwner() : e.getComponent();
if (focusOwner != null && focusOwner.isShowing() &&
focusOwner.isFocusable() && focusOwner.isEnabled()) {
if (!e.isConsumed()) {
Component comp = e.getComponent();
if (comp != null && comp.isEnabled()) {
redispatchEvent(comp, e);
}is it possible?
Edited by: u_steven on Jul 12, 2012 9:53 AM
You can't. For text fields you can make them not editable instead of disabled, but that doesn't work for comboboxes.
Similar Messages
-
Allow focus after disabling JTextField
I have a form with several textfields. Two textfields are mutually exclusive; you can modify one or the other, but not both. Upon edit of one, I disable the other. This works perfectly. My problem is the tab order disappears upon disabling the textfield. If I edit fieldA, fieldB is appropriately disabled upon focusLost of fieldA. I can use the tab key multiple times, but focus is never set to another component on the form. How can I get around this?
Here's the sample code:
fieldA.addFocusListener(
new FocusAdapter()
public void focusLost(FocusEvent focusEvent)
JTextField field = (JTextField)focusEvent.getSource();
// if the value was changed, disallow editing in trade field
String newValue = field.getText();
if (!newValue.equalsIgnoreCase(original))
fieldB.setEnabled(false);
// need else block in case the user changes the value, then changes it back to the original value
else
fieldB.setEnabled(true);
);public void focusLost(FocusEvent e)
if (textField2 == e.getOppositeComponent())
textField2.transferFocus();
textField2.setEnabled( false );
} -
Prevent BEx from stealing windows focus and disable nag screen
Hi all,
Whenever I start BEx Analyzer or QueryDesigner (3.5) it takes a couple of minutes until the application is loaded. During that time a welcome screen turns up, which prevents me from doing anything else but staring at the photo of the SAP Building.
For some reason the log on pad pops up as well.
When reloading a query in Bex Analyzer, the application steals the windows focus several times.
Does anyone know how I can disable these "features"?
Thanks
GerritWe have the same problem when reloading queries in BeX Analyzer.
Did you find a solution to prevent the application to steal the windows focus several times.
Thanks for your answer. -
Focusing any JComponent in a JTree
Hi !
I have a problem with the focus in my jtree. the problem is, that i have a jcomponent hierarchie as theUserObject of every DefaultMutableTreeNode, which has the following structure:
abstract MyPanel extends JPanel / (has flowlayout and adds a jlabel)
MyJComponentPanel extends MyPanel / adds a JComponent to the MyPanel (behind the jlabel)
now i want to set the focus on the JComponent in 2 ways:
1. when going through the tree with the cursor-keys (i think the panel gains the focus, but not the component.)
2. by pressing tab or return and putting the focus on the next jcomponent in such structure
thanks for any suggestion
andreasNo idea anybody on how I could insert JComponents of my own in a JEditorPane ?
Why the simple Document.insertString () don't work in a JEditorPane if the style is not HTML ?
Is it possible to tweak JTextPane to make it render HTML (using a Kit) then insert my own styles in it ?
Thx.
Matthieu -
Hi all,
How does one give focus back or just plain giving focus to a JComponent
e.g. JTextField, JButton, etc.
This puzzles, me please help?That method was introduced in 1.4, but the API recommends you use requestFocusInWindow()
-
Flex and accessibility/disability
Hi All
Given the recent focus on disability discrimination, how do
Flex apps perform with assistive technologies such as screen
readers?
What about complying with standards such as
Section 508 and
WCAG?
I know it's a dull question, but any information would be
extremely helpful.
Many Thanks
BarryI know the Flex Developer's Guide has a chapter on "Creating
Accessible Applications" that will probably answer many of your
questions if you haven't read it yet.
Tim -
Hi everyone!
I have the following problem:
my JTree has DefaultMutableTreeNodes. Every userObject of a node is a JPanel with a JLabel and a JComponent.
Now I want to put the focus on the JComponent !!!
it works, by clicking on the JComponent, but not if i go through the tree with the cursor-keys (although the selection is changed to the nodes!)
requestFocusInWindow() does not work, because isDisplayable() of the JComponent returns false!
PEASE HELP !!!
Thanks for any suggestions !Hi,
May be you need this :
DECLARE
htree ITEM;
parent_node NODE;
BEGIN
-- Find the tree itself.
htree := Find_Item('tree_block.htree3');
-- Get the parent of the node clicked on.
parent_node := Ftree.Get_Tree_Node_Parent(htree, :SYSTEM.TRIGGER_NODE);
...END;
And then
node_value := Ftree.Get_Tree_Node_Property(htree, :SYSTEM.TRIGGER_NODE, Ftree.NODE_VALUE); -
JTree - focusing userObjects (JComponents)
Hi everyone!
I have the following problem and i am despairing:
my JTree has DefaultMutableTreeNodes. Every userObject of a node is a JPanel with a JLabel and a JComponent (normally JTextFields or JComboBoxes).
Now I want to put the focus on the JComponent !!!
it works, by clicking on the JComponent, but not if i go through the tree with the cursor-keys (although the selection is changed to the nodes!)
requestFocusInWindow() does not work, because isDisplayable() of the JComponent returns false!
PEASE HELP !!!
Thanks for any suggestions !Hi Denis !
I think I haven't configured the editor in the right way !?! Here's more information:
I have a cellRenderer, a cellEditor and a selectionListener.
From the selectionListener I call the startEditing Method:
public void valueChanged(TreeSelectionEvent e) {
TreePath tp = e.getNewLeadSelectionPath();
DefaultMutableTreeNode node = (DefaultMutableTreeNode) tp.getLastPathComponent();
if (node == null)
return;
if (MyTreeCellEditor.isCellEditable(node))
theTree.startEditingAtPath(tp);
}startEditingAtPath throws a NullPointerException if I click on a Node
at javax.swing.plaf.basic.BasicLookAndFeel.compositeRequestFocus(BasicLookAndFeel.java:1748)
and going through the tree with the cursor-keys doesn't work at all !!?!?!?
the cellEditor Method:
public Component getTreeCellEditorComponent(JTree tree, Object value, boolean isSelected,
boolean expanded, boolean leaf, int row) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
Object userObject = node.getUserObject();
if (userObject instanceof MyPanel)
return (MyPanel) userObject;
// else:
return super.getTreeCellEditorComponent(tree, value, isSelected, expanded, leaf, row);
}Thanks for help !
Andreas -
i have the bad habit of using keyboard to navigate among awesome clients and forgetting that the mouse in an inconvenient position (ie conferring focus to the client that it is positioned over rather than the one which i have chosen with mod4+j/k). i have perused the rc.lua file briefly but im not that familliar with the object model of awesome (at least the way its defined there) so im reluctant to hack away if someone else has a cut and paste solution. awesome is awesome, but its an acquired taste.
TIAthat worked, thanks anrxc. however it would be convenient to be able to toggle soft focus as the need arises. i tried to edit the rc.lua file to incorporate this functionality but it seems the soft focus is still disabled (like i want it to be 99% of the time) when i try to enable it with "modkey+Shift s"
global variable to tell awesome whether the follow the mouse:
makesloppy = 1
added global keybinding for toggling makesloppy
-- Toggle Sloppy focus
awful.key({ modkey, "Shift" }, "s",
function ()
if makesloppy then
makesloppy = 0
else
makesloppy = 1
end
end)
in the hooks section which you pointed out earlier, added a conditional to the focus statement
awful.hooks.mouse_enter.register(function (c)
-- Sloppy focus, but disabled for magnifier layout
if awful.layout.get(c.screen) ~= awful.layout.suit.magnifier
and awful.client.focus.filter(c)
and makesloppy then
client.focus = c
end
end)
my stupid mistake is going to pop right out at you!
Last edited by poopship21 (2009-10-27 18:28:25) -
Awesome not reading rc.lua
I'm trying to give awesome3.1 a go, but it isn't reading my rc.lua. It just keeps the default everything. Really all I've changed is the theme.
-- Include awesome libraries, with lots of useful function!
require("awful")
require("beautiful")
-- {{{ Variable definitions
-- Themes define colours, icons, and wallpapers
theme_path = "/home/shawn/.config/awesome/theme"
-- Actually load theme
beautiful.init(theme_path)
-- This is used later as the default terminal and editor to run.
terminal = "xterm"
editor = os.getenv("EDITOR") or "vi"
editor_cmd = terminal .. " -e " .. editor
-- Default modkey.
-- Usually, Mod4 is the key with a logo between Control and Alt.
-- If you do not like this or do not have such a key,
-- I suggest you to remap Mod4 to another key using xmodmap or other tools.
-- However, you can use another modifier like Mod1, but it may interact with others.
modkey = "Mod4"
-- Table of layouts to cover with awful.layout.inc, order matters.
layouts =
"tile",
"tileleft",
"tilebottom",
"tiletop",
"fairh",
"fairv",
"magnifier",
"max",
"fullscreen",
"spiral",
"dwindle",
"floating"
-- Table of clients that should be set floating. The index may be either
-- the application class or instance. The instance is useful when running
-- a console app in a terminal like (Music on Console)
-- xterm -name mocp -e mocp
floatapps =
-- by class
["MPlayer"] = true,
["pinentry"] = true,
["gimp"] = true,
-- by instance
["mocp"] = true
-- Applications to be moved to a pre-defined tag by class or instance.
-- Use the screen and tags indices.
apptags =
-- ["Firefox"] = { screen = 1, tag = 2 },
-- ["mocp"] = { screen = 2, tag = 4 },
-- Define if we want to use titlebar on all applications.
use_titlebar = false
-- {{{ Tags
-- Define tags table.
tags = {}
for s = 1, screen.count() do
-- Each screen has its own tag table.
tags[s] = {}
-- Create 9 tags per screen.
for tagnumber = 1, 3 do
tags[s][tagnumber] = tag({ name = tag_settings[tagnumber].name, layout = tag_settings[tagnumber].layouts })
-- Add tags to screen one by one
tags[s][tagnumber].screen = s
end
-- I'm sure you want to see at least one tag.
tags[s][1].selected = true
end
tag_settings = {
{ name="main", layout=layouts[1] },
{ name="work", layout=layouts[1] },
{ name="float", layout=layouts[12] }
-- {{{ Wibox
-- Create a textbox widget
mytextbox = widget({ type = "textbox", align = "right" })
-- Set the default text in textbox
mytextbox.text = "<b><small> " .. AWESOME_RELEASE .. " </small></b>"
-- Create a laucher widget and a main menu
myawesomemenu = {
{ "manual", terminal .. " -e man awesome" },
{ "edit config", editor_cmd .. " " .. awful.util.getdir("config") .. "/rc.lua" },
{ "restart", awesome.restart },
{ "quit", awesome.quit }
mymainmenu = awful.menu.new({ items = { { "awesome", myawesomemenu, beautiful.awesome_icon },
{ "open terminal", terminal }
mylauncher = awful.widget.launcher({ image = beautiful.awesome_icon,
menu = mymainmenu })
-- Create a systray
mysystray = widget({ type = "systray", align = "right" })
-- Create a wibox for each screen and add it
mywibox = {}
mypromptbox = {}
mylayoutbox = {}
mytaglist = {}
mytaglist.buttons = { button({ }, 1, awful.tag.viewonly),
button({ modkey }, 1, awful.client.movetotag),
button({ }, 3, function (tag) tag.selected = not tag.selected end),
button({ modkey }, 3, awful.client.toggletag),
button({ }, 4, awful.tag.viewnext),
button({ }, 5, awful.tag.viewprev) }
mytasklist = {}
mytasklist.buttons = { button({ }, 1, function (c) client.focus = c; c:raise() end),
button({ }, 3, function () awful.menu.clients({ width=250 }) end),
button({ }, 4, function () awful.client.focus.byidx(1) end),
button({ }, 5, function () awful.client.focus.byidx(-1) end) }
for s = 1, screen.count() do
-- Create a promptbox for each screen
mypromptbox[s] = widget({ type = "textbox", align = "left" })
-- Create an imagebox widget which will contains an icon indicating which layout we're using.
-- We need one layoutbox per screen.
mylayoutbox[s] = widget({ type = "imagebox", align = "right" })
mylayoutbox[s]:buttons({ button({ }, 1, function () awful.layout.inc(layouts, 1) end),
button({ }, 3, function () awful.layout.inc(layouts, -1) end),
button({ }, 4, function () awful.layout.inc(layouts, 1) end),
button({ }, 5, function () awful.layout.inc(layouts, -1) end) })
-- Create a taglist widget
mytaglist[s] = awful.widget.taglist.new(s, awful.widget.taglist.label.all, mytaglist.buttons)
-- Create a tasklist widget
mytasklist[s] = awful.widget.tasklist.new(function(c)
return awful.widget.tasklist.label.currenttags(c, s)
end, mytasklist.buttons)
-- Create the wibox
mywibox[s] = wibox({ position = "top", fg = beautiful.fg_normal, bg = beautiful.bg_normal })
-- Add widgets to the wibox - order matters
mywibox[s].widgets = { mylauncher,
mytaglist[s],
mytasklist[s],
mypromptbox[s],
mytextbox,
mylayoutbox[s],
s == 1 and mysystray or nil }
mywibox[s].screen = s
end
-- {{{ Mouse bindings
awesome.buttons({
button({ }, 3, function () mymainmenu:toggle() end),
button({ }, 4, awful.tag.viewnext),
button({ }, 5, awful.tag.viewprev)
-- {{{ Key bindings
-- Bind keyboard digits
-- Compute the maximum number of digit we need, limited to 9
keynumber = 0
for s = 1, screen.count() do
keynumber = math.min(9, math.max(#tags[s], keynumber));
end
for i = 1, keynumber do
keybinding({ modkey }, i,
function ()
local screen = mouse.screen
if tags[screen][i] then
awful.tag.viewonly(tags[screen][i])
end
end):add()
keybinding({ modkey, "Control" }, i,
function ()
local screen = mouse.screen
if tags[screen][i] then
tags[screen][i].selected = not tags[screen][i].selected
end
end):add()
keybinding({ modkey, "Shift" }, i,
function ()
if client.focus then
if tags[client.focus.screen][i] then
awful.client.movetotag(tags[client.focus.screen][i])
end
end
end):add()
keybinding({ modkey, "Control", "Shift" }, i,
function ()
if client.focus then
if tags[client.focus.screen][i] then
awful.client.toggletag(tags[client.focus.screen][i])
end
end
end):add()
end
keybinding({ modkey }, "Left", awful.tag.viewprev):add()
keybinding({ modkey }, "Right", awful.tag.viewnext):add()
keybinding({ modkey }, "Escape", awful.tag.history.restore):add()
-- Standard program
keybinding({ modkey }, "Return", function () awful.util.spawn(terminal) end):add()
keybinding({ modkey, "Control" }, "r", function ()
mypromptbox[mouse.screen].text =
awful.util.escape(awful.util.restart())
end):add()
keybinding({ modkey, "Shift" }, "q", awesome.quit):add()
-- Client manipulation
keybinding({ modkey }, "m", awful.client.maximize):add()
keybinding({ modkey }, "f", function () if client.focus then client.focus.fullscreen = not client.focus.fullscreen end end):add()
keybinding({ modkey, "Shift" }, "c", function () if client.focus then client.focus:kill() end end):add()
keybinding({ modkey }, "j", function () awful.client.focus.byidx(1); if client.focus then client.focus:raise() end end):add()
keybinding({ modkey }, "k", function () awful.client.focus.byidx(-1); if client.focus then client.focus:raise() end end):add()
keybinding({ modkey, "Shift" }, "j", function () awful.client.swap.byidx(1) end):add()
keybinding({ modkey, "Shift" }, "k", function () awful.client.swap.byidx(-1) end):add()
keybinding({ modkey, "Control" }, "j", function () awful.screen.focus(1) end):add()
keybinding({ modkey, "Control" }, "k", function () awful.screen.focus(-1) end):add()
keybinding({ modkey, "Control" }, "space", awful.client.togglefloating):add()
keybinding({ modkey, "Control" }, "Return", function () if client.focus then client.focus:swap(awful.client.getmaster()) end end):add()
keybinding({ modkey }, "o", awful.client.movetoscreen):add()
keybinding({ modkey }, "Tab", awful.client.focus.history.previous):add()
keybinding({ modkey }, "u", awful.client.urgent.jumpto):add()
keybinding({ modkey, "Shift" }, "r", function () if client.focus then client.focus:redraw() end end):add()
-- Layout manipulation
keybinding({ modkey }, "l", function () awful.tag.incmwfact(0.05) end):add()
keybinding({ modkey }, "h", function () awful.tag.incmwfact(-0.05) end):add()
keybinding({ modkey, "Shift" }, "h", function () awful.tag.incnmaster(1) end):add()
keybinding({ modkey, "Shift" }, "l", function () awful.tag.incnmaster(-1) end):add()
keybinding({ modkey, "Control" }, "h", function () awful.tag.incncol(1) end):add()
keybinding({ modkey, "Control" }, "l", function () awful.tag.incncol(-1) end):add()
keybinding({ modkey }, "space", function () awful.layout.inc(layouts, 1) end):add()
keybinding({ modkey, "Shift" }, "space", function () awful.layout.inc(layouts, -1) end):add()
-- Prompt
keybinding({ modkey }, "F1", function ()
awful.prompt.run({ prompt = "Run: " }, mypromptbox[mouse.screen], awful.util.spawn, awful.completion.bash,
awful.util.getdir("cache") .. "/history")
end):add()
keybinding({ modkey }, "F4", function ()
awful.prompt.run({ prompt = "Run Lua code: " }, mypromptbox[mouse.screen], awful.util.eval, awful.prompt.bash,
awful.util.getdir("cache") .. "/history_eval")
end):add()
keybinding({ modkey, "Ctrl" }, "i", function ()
local s = mouse.screen
if mypromptbox[s].text then
mypromptbox[s].text = nil
elseif client.focus then
mypromptbox[s].text = nil
if client.focus.class then
mypromptbox[s].text = "Class: " .. client.focus.class .. " "
end
if client.focus.instance then
mypromptbox[s].text = mypromptbox[s].text .. "Instance: ".. client.focus.instance .. " "
end
if client.focus.role then
mypromptbox[s].text = mypromptbox[s].text .. "Role: ".. client.focus.role
end
end
end):add()
-- Client awful tagging: this is useful to tag some clients and then do stuff like move to tag on them
keybinding({ modkey }, "t", awful.client.togglemarked):add()
for i = 1, keynumber do
keybinding({ modkey, "Shift" }, "F" .. i,
function ()
local screen = mouse.screen
if tags[screen][i] then
for k, c in pairs(awful.client.getmarked()) do
awful.client.movetotag(tags[screen][i], c)
end
end
end):add()
end
-- {{{ Hooks
-- Hook function to execute when focusing a client.
awful.hooks.focus.register(function (c)
if not awful.client.ismarked(c) then
c.border_color = beautiful.border_focus
end
end)
-- Hook function to execute when unfocusing a client.
awful.hooks.unfocus.register(function (c)
if not awful.client.ismarked(c) then
c.border_color = beautiful.border_normal
end
end)
-- Hook function to execute when marking a client
awful.hooks.marked.register(function (c)
c.border_color = beautiful.border_marked
end)
-- Hook function to execute when unmarking a client.
awful.hooks.unmarked.register(function (c)
c.border_color = beautiful.border_focus
end)
-- Hook function to execute when the mouse enters a client.
awful.hooks.mouse_enter.register(function (c)
-- Sloppy focus, but disabled for magnifier layout
if awful.layout.get(c.screen) ~= "magnifier"
and awful.client.focus.filter(c) then
client.focus = c
end
end)
-- Hook function to execute when a new client appears.
awful.hooks.manage.register(function (c)
if use_titlebar then
-- Add a titlebar
awful.titlebar.add(c, { modkey = modkey })
end
-- Add mouse bindings
c:buttons({
button({ }, 1, function (c) client.focus = c; c:raise() end),
button({ modkey }, 1, function (c) c:mouse_move() end),
button({ modkey }, 3, function (c) c:mouse_resize() end)
-- New client may not receive focus
-- if they're not focusable, so set border anyway.
c.border_width = beautiful.border_width
c.border_color = beautiful.border_normal
-- Check if the application should be floating.
local cls = c.class
local inst = c.instance
if floatapps[cls] then
c.floating = floatapps[cls]
elseif floatapps[inst] then
c.floating = floatapps[inst]
end
-- Check application->screen/tag mappings.
local target
if apptags[cls] then
target = apptags[cls]
elseif apptags[inst] then
target = apptags[inst]
end
if target then
c.screen = target.screen
awful.client.movetotag(tags[target.screen][target.tag], c)
end
-- Do this after tag mapping, so you don't see it on the wrong tag for a split second.
client.focus = c
-- Set the windows at the slave,
-- i.e. put it at the end of others instead of setting it master.
-- awful.client.setslave(c)
-- Honor size hints: if you want to drop the gaps between windows, set this to false.
-- c.honorsizehints = false
end)
-- Hook function to execute when arranging the screen.
-- (tag switch, new client, etc)
awful.hooks.arrange.register(function (screen)
local layout = awful.layout.get(screen)
if layout then
mylayoutbox[screen].image = image(beautiful["layout_" .. layout])
else
mylayoutbox[screen].image = nil
end
-- Give focus to the latest client in history if no window has focus
-- or if the current window is a desktop or a dock one.
if not client.focus then
local c = awful.client.focus.history.get(screen, 0)
if c then client.focus = c end
end
-- Uncomment if you want mouse warping
if client.focus then
local c_c = client.focus:fullgeometry()
local m_c = mouse.coords()
if m_c.x < c_c.x or m_c.x >= c_c.x + c_c.width or
m_c.y < c_c.y or m_c.y >= c_c.y + c_c.height then
if table.maxn(m_c.buttons) == 0 then
mouse.coords({ x = c_c.x + 5, y = c_c.y + 5})
end
end
end
end)
-- Hook called every second
awful.hooks.timer.register(1, function ()
-- For unix time_t lovers
mytextbox.text = " " .. os.time() .. " time_t "
-- Otherwise use:
-- mytextbox.text = " " .. os.date() .. " "
end)
Then if I try this one, I just get a black screen, I have all the required things:
-- Version 2
-- This config is for use with awesome 3.0 stable.
-- If you have any suggestions or questions, feel free
-- to pass me a message, find me in #awesome on OFTC, or
-- email me at <lucas[at]glacicle.com>
-- I use both wicked and eminent, so to use it,
-- you'll need to get both those helper libraries too.
-- Note that I use all-custom keybindings, so you might
-- want to copy the default rc.lua's keybindings
-- into here if you wish to use those, although you might
-- find you like mine better :P
---- {{{ Require lua libraries
-- Shipped with awesome
require("awful")
require("beautiful")
-- External
require("wicked") -- Widgets
require("eminent") -- Dynamic tagging
---- {{{ 'Beautiful' theme settings
-- Font
beautiful.font = "Dina 8"
-- Background
beautiful.bg_normal = '#414141'
beautiful.bg_focus = '#414141'
beautiful.bg_sbfocus = '#414141'
beautiful.bg_urgent = '#414141'
-- Foreground
beautiful.fg_normal = '#999999'
beautiful.fg_focus = '#335565'
beautiful.fg_urgent = '#A000000'
-- Border
beautiful.border_width = 2
beautiful.border_normal = '#414141'
beautiful.border_focus = '#335565'
beautiful.border_marked = '#91231c'
-- Wallpaper
-- wallpaper_cmd = awsetbg /storage/images/backgrounds/nature/looking.jpg
---- {{{ Modkeys
key = {}
key.none = {}
key.alt = {"Mod1"}
key.super = {"Mod4"}
key.shift = {"Shift"}
key.control = {"Control"}
key.super_alt = {key.super[1], key.alt[1]}
key.super_shift = {key.super[1], key.shift[1]}
key.super_control = {key.super[1], key.control[1]}
key.control_alt = {key.control[1], key.alt[1]}
key.shift_alt = {key.shift[1], key.alt[1]}
---- {{{ Settings
-- Initialise tables
settings = {}
settings.widget = {}
settings.apps = {}
settings.tag = {}
settings.bindings = {}
-- {{{ General
-- Widget spacer and separator
settings.widget_spacer = " "
settings.widget_separator = " "
-- Warp mouse
settings.warp_mouse = true
-- New become master
settings.new_become_master = false
-- Tag mwfact
settings.tag.mwfact = 0.618033988769
-- {{{ Applications
-- Terminal application
settings.apps.terminal = 'urxvt'
-- Command to lock the screen
settings.apps.lock_screen = 'xscreensaver-command -lock'
-- Command to turn screen off with DPMS
settings.apps.screen_off = 'sleep 1; xset dpms force off'
-- File manager application
settings.apps.filemanager = settings.apps.terminal..' -e zsh -c "vifm %s"'
-- {{{ Floating windows
settings.floating = {
["gimp"] = true,
["urxvtcnotify"] = true,
["MPlayer"] = true,
-- {{{ Other
-- Check what widget mode to use
settings.widget_mode = 'desktop'
-- Highlight statusbar of focussed screen on multiple-monitor setups
if screen.count() > 1 then
settings.statusbar_highlight_focus = {true, 1}
end
---- {{{ Keybindings
-- Initialise table
settings.bindings.wm = {}
settings.bindings.mouse = {}
-- {{{ Open the filemanager at specific locations
settings.bindings.filemanager = {
-- Alt+d: Data partition
["/storage"] = {key.alt, "#40"},
-- Alt+a: Home Directory
[os.getenv("HOME")] = {key.alt, "#38"},
-- {{{ Run specific commands
settings.bindings.commands = {
-- Alt+q: Open Terminal
[settings.apps.terminal] = {key.alt, "#24"},
-- Mod+k: GNU Screen
-- [settings.apps.gnu_screen] = {key.super, "#45"},
-- Mod+l: Lock screen
[settings.apps.lock_screen] = {key.super, "#46"},
-- Mod+o: Screen off with DPMS
[settings.apps.screen_off] = {key.super, "#32"},
-- {{{ Tag bindings
settings.bindings.wm.tag = {
-- Mod+a: Switch to previous tag
[function() eminent.tag.prev(mouse.screen) end] = {key.super, "#38"},
-- Mod+s: Switch to next tag
[function() eminent.tag.next(mouse.screen) end] = {key.super, "#39"},
-- Alt+\: Switch to float layout
[function() awful.layout.set('floating') end] = {key.alt, "#51"},
-- Alt+z: Switch to max layout
[function() awful.layout.set('max') end] = {key.alt, "#52"},
-- Alt+x: Switch to tile layout
[function() awful.layout.set('tile') end] = {key.alt, "#53"},
-- {{{ Prompt bindings
settings.bindings.prompt = {
-- Alt+w: Run prompt
[{awful.spawn, " Run: "}] = {key.alt, "#25"},
-- Mod+Alt+w: Lua eval prompt
[{awful.eval, " Run Lua: "}] = {key.super_alt, "#25"},
-- {{{ Miscellaneous bindings
settings.bindings.wm.misc = {
-- Mod+Alt+r: Restart awesome
[awesome.restart] = {key.super_alt, "#27"},
-- Mod+e: Switch focus to next screen
[function() awful.screen.focus(1) end] = {key.super, "#26"},
-- Mod+d: Switch focus to previous screen
[function() awful.screen.focus(-1) end] = {key.super, "#40"},
-- {{{ Keyboard digit bindings
settings.bindings.digits = {
-- Mod+##: View tag
[awful.tag.viewonly] = key.super,
-- Mod+Shift+##: Toggle tag view
[function(t) t.selected = not t.selected end] = key.super_shift,
-- Mod+Control+##: Move window to tag
[awful.client.movetotag] = key.super_control,
-- Mod+Alt+##: Toggle window on tag
[awful.client.toggletag] = key.super_alt,
-- {{{ Mouse bindings
settings.bindings.mouse.desktop = {
-- Right click on desktop: Open terminal
[function() awful.spawn(settings.apps.terminal) end] = {key.none, 3},
settings.bindings.mouse.client = {
-- Alt+Left: Move window
[function(c) c:mouse_move() end] = {key.alt, 1},
-- Alt+Right: Resize window
[function(c) c:mouse_resize({corner="bottomright"}) end] = {key.alt, 3},
---- {{{ Markup helper functions
-- Inline markup is a tad ugly, so use these functions
-- to dynamically create markup, we hook them into
-- the beautiful namespace for clarity.
beautiful.markup = {}
function beautiful.markup.bg(color, text)
return '<bg color="'..color..'" />'..text
end
function beautiful.markup.fg(color, text)
return '<span color="'..color..'">'..text..'</span>'
end
function beautiful.markup.font(font, text)
return '<span font_desc="'..font..'">'..text..'</span>'
end
function beautiful.markup.title(t)
return t
end
function beautiful.markup.title_normal(t)
return beautiful.title(t)
end
function beautiful.markup.title_focus(t)
return beautiful.markup.bg(beautiful.bg_focus, beautiful.markup.fg(beautiful.fg_focus, beautiful.markup.title(t)))
end
function beautiful.markup.title_urgent(t)
return beautiful.markup.bg(beautiful.bg_urgent, beautiful.markup.fg(beautiful.fg_urgent, beautiful.markup.title(t)))
end
function beautiful.markup.bold(text)
return '<b>'..text..'</b>'
end
function beautiful.markup.heading(text)
return beautiful.markup.fg(beautiful.fg_focus, beautiful.markup.bold(text))
end
---- {{{ Widgets
settings.statusbars = {}
settings.widgets = {}
settings.statusbars[1] = {{
position = "top",
height = 18,
fg = beautiful.fg_normal,
bg = beautiful.bg_normal,
name = "mainstatusbar",
}, "all"}
settings.promptbar = {
position = "top",
height = 18,
fg = beautiful.fg_normal,
bg = beautiful.bg_normal,
name = "promptbar",
-- {{{ Taglist
maintaglist = widget({
type = 'taglist',
name = 'maintaglist'
function maintaglist.label(t)
return awful.widget.taglist.label.noempty(t)
end
maintaglist:mouse_add(mouse(key.none, 1, function (o, t) awful.tag.viewonly(t) end))
table.insert(settings.widgets, {1, maintaglist})
if settings.widget_mode ~= 'none' then
-- {{{ MPD Widget
mpdwidget = widget({
type = 'textbox',
name = 'mpdwidget',
align = 'right'
wicked.register(mpdwidget, wicked.widgets.mpd, function (widget, args)
-- I don't want the stream name on my statusbar, so I gsub it out,
-- feel free to remove this bit
return settings.widget_spacer..beautiful.markup.heading('MPD')..': '
..args[1]:gsub('AnimeNfo Radio | Serving you the best Anime music!: ','')
..settings.widget_spacer..settings.widget_separator end)
table.insert(settings.widgets, {1, mpdwidget})
-- {{{ GMail Widget
gmailwidget = widget({
type = 'textbox',
name = 'gmailwidget',
align = 'right'
gmailwidget:mouse_add(mouse(key.none, 1, function () wicked.update(gmailwidget) end))
function read_gmail_temp(format)
local f = io.open('/tmp/gmail-temp')
if f == nil then
return {'n/a'}
end
local n = f:read()
if n == nil or f == ' ' or f == '' then
f:close()
return {'n/a'}
end
return {n}
end
wicked.register(gmailwidget, read_gmail_temp, function (widget, args)
local n = args[1]
local out = settings.widget_spacer..beautiful.markup.heading('GMail')..': '
if n ~= "n/a" and tonumber(n) > 0 then
out = out..beautiful.markup.bg(beautiful.bg_urgent, beautiful.markup.fg(beautiful.fg_urgent, tostring(n)))
else
out = out..tostring(n)
end
out = out..settings.widget_spacer..settings.widget_separator
return out
end, 120)
-- Start timer to fill the temp file
awful.hooks.timer.register(110, function ()
-- Call GMail check script to check for new email
os.execute(os.getenv("HOME")..'/other/.gmail.py > /tmp/gmail-temp &')
end, true)
wicked.update(gmailwidget)
table.insert(settings.widgets, {1, gmailwidget})
-- {{{ Load Averages Widget
loadwidget = widget({
type = 'textbox',
name = 'loadwidget',
align = 'right'
function widget_loadavg(format)
-- Use /proc/loadavg to get the average system load on 1, 5 and 15 minute intervals
local f = io.open('/proc/loadavg')
local n = f:read()
f:close()
-- Find the third space
local pos = n:find(' ', n:find(' ', n:find(' ')+1)+1)
return {n:sub(1,pos-1)}
end
wicked.register(loadwidget, widget_loadavg,
settings.widget_spacer..beautiful.markup.heading('Load')..': $1'..settings.widget_spacer..settings.widget_separator, 2)
table.insert(settings.widgets, {1, loadwidget})
-- {{{ CPU Usage Widget
cputextwidget = widget({
type = 'textbox',
name = 'cputextwidget',
align = 'right'
wicked.register(cputextwidget, wicked.widgets.cpu,
settings.widget_spacer..beautiful.markup.heading('CPU')..': $1%'..settings.widget_spacer..settings.widget_separator,
nil, nil, 2)
table.insert(settings.widgets, {1, cputextwidget})
-- {{{ CPU Graph Widget
cpugraphwidget = widget({
type = 'graph',
name = 'cpugraphwidget',
align = 'right'
cpugraphwidget.height = 0.85
cpugraphwidget.width = 45
cpugraphwidget.bg = '#333333'
cpugraphwidget.border_color = '#0a0a0a'
cpugraphwidget.grow = 'left'
cpugraphwidget:plot_properties_set('cpu', {
fg = '#AEC6D8',
fg_center = '#285577',
fg_end = '#285577',
vertical_gradient = false
wicked.register(cpugraphwidget, wicked.widgets.cpu, '$1', 1, 'cpu')
table.insert(settings.widgets, {1, cpugraphwidget})
-- {{{ Memory Usage Widget
memtextwidget = widget({
type = 'textbox',
name = 'memtextwidget',
align = 'right'
wicked.register(memtextwidget, wicked.widgets.mem,
settings.widget_spacer..beautiful.markup.heading('MEM')..': '..
'$1% ($2/$3)'..settings.widget_spacer..settings.widget_separator,
3, nil, {2, 4, 4})
table.insert(settings.widgets, {1, memtextwidget})
-- {{{ Memory Graph Widget
memgraphwidget = widget({
type = 'graph',
name = 'memgraphwidget',
align = 'right'
memgraphwidget.height = 0.85
memgraphwidget.width = 45
memgraphwidget.bg = '#333333'
memgraphwidget.border_color = '#0a0a0a'
memgraphwidget.grow = 'left'
memgraphwidget:plot_properties_set('mem', {
fg = '#AEC6D8',
fg_center = '#285577',
fg_end = '#285577',
vertical_gradient = false
wicked.register(memgraphwidget, wicked.widgets.mem, '$1', 1, 'mem')
table.insert(settings.widgets, {1, memgraphwidget})
-- {{{ Other Widget
settings.widget_spacerwidget = widget({ type = 'textbox', name = 'settings.widget_spacerwidget', align = 'right' })
settings.widget_spacerwidget.text = settings.widget_spacer..settings.widget_separator
table.insert(settings.widgets, {1, settings.widget_spacerwidget})
end
-- You shouldn't have to edit the code after this,
-- it takes care of applying the settings above.
---- {{{ Initialisations
-- Register beautiful with awful
awful.beautiful.register(beautiful)
-- Set default colors
awesome.colors_set({
fg = beautiful.fg_normal,
bg = beautiful.bg_normal })
-- Set default font
awesome.font_set(beautiful.font)
-- Table of layouts to cover with awful.layout.inc, order matters.
layouts =
"tile",
"tileleft",
"tilebottom",
"tiletop",
"fairh",
"fairv",
"magnifier",
"max",
"fullscreen",
"spiral",
"dwindle",
"floating"
-- Define tag tables
tag_settings = {
{ name="main", layout=layouts[1] },
{ name="work", layout=layouts[1] },
{ name="float", layout=layouts[12] }
-- Initialize tags in awesome 3.1
tags = {}
for s = 1, screen.count() do
tags[s] = {}
for tagnumber = 1, 3 do
tags[s][tagnumber] = tag({ name = tag_settings[tagnumber].name, layout = tag_settings[tagnumber].layout })
tags[s][tagnumber].screen = s
awful.layout.set(layouts[1], tags[s][tagnumber])
end
tags[s][1].selected = true
end
---- {{{ Create statusbars
local mainstatusbar = {}
for i, b in pairs(settings.statusbars) do
mainstatusbar[i] = {}
for s=1,screen.count() do
this_screen = false
if b[2] ~= "all" then
for sc in pairs(b[2]) do
if sc == s then
this_screen = true
break
end
end
end
if b[2] == "all" or this_screen then
mainstatusbar[i][s] = statusbar(b[1])
local widgets = {}
for ii, w in pairs(settings.widgets) do
if w[1] == i then
table.insert(widgets, w[2])
end
end
mainstatusbar[i][s]:widgets(widgets)
mainstatusbar[i][s].screen = s
end
end
end
---- {{{ Create prompt statusbar
local mainpromptbar = statusbar(settings.promptbar)
local mainpromptbox = widget({type = "textbox", align = "left", name = "mainpromptbox"})
mainpromptbar:widgets({mainpromptbox})
mainpromptbar.screen = nil
---- {{{ Useful functions
-- {{{ Mouse warp function
function mouse_warp(c, force)
-- Allow skipping a warp
if warp_skip then
warp_skip = false
return
end
-- Get vars
local sel = c or client.focus
if sel == nil then return end
local coords = sel:coords()
local m = mouse.coords()
-- Settings
mouse_padd = 6
border_area = 5
-- Check if mouse is not already inside the window
if (( m.x < coords.x-border_area or
m.y < coords.y-border_area or
m.x > coords.x+coords.width+border_area or
m.y > coords.y+coords.height+border_area
) and (
table.maxn(m.buttons) == 0
)) or force
then
mouse.coords({ x=coords.x+mouse_padd, y=coords.y+mouse_padd})
end
end
-- {{{ Prompt with statusbar
function prompt_statusbar(s, callback, prompt)
if not callback then callback = awful.spawn end
if not prompt then prompt = " Run: " end
for i, b in pairs(mainstatusbar) do
for ii, bb in pairs(b) do
if bb.screen == s then
bb.screen = nil
end
end
end
mainpromptbar.screen = s
awful.prompt.run({prompt = prompt}, mainpromptbox, callback,
awful.completion.bash, os.getenv("HOME") .. "/.cache/awesome_history", 50, function ()
mainpromptbar.screen = nil
for i, b in pairs(mainstatusbar) do
for ii, bb in pairs(b) do
if ii == s then
bb.screen = ii
end
end
end
end)
end
---- {{{ Create bindings
--- This reads the binding tables and turns them into actual keybindings
-- Always qwerty
-- WM Bindings
for i,table in pairs(settings.bindings.wm) do
for f, keys in pairs(table) do
keybinding(keys[1], keys[2], f):add()
end
end
-- Keyboard digit bindings
for i=1,9 do
for f, mod in pairs(settings.bindings.digits) do
keybinding(mod, i, function()
t = eminent.tag.getn(i, nil, true)
if not t then return end
f(t)
end):add()
end
end
-- Prompt Bindings
for prompt, keys in pairs(settings.bindings.prompt) do
keybinding(keys[1], keys[2], function() prompt_statusbar(mouse.screen, unpack(prompt)) end):add()
end
-- Filemanager bindings
for loc, keys in pairs(settings.bindings.filemanager) do
keybinding(keys[1], keys[2], function() awful.spawn(string.format(settings.apps.filemanager, loc)) end):add()
end
-- Custom command bindings
for command, keys in pairs(settings.bindings.commands) do
keybinding(keys[1], keys[2], function() awful.spawn(command) end):add()
end
-- Desktop mouse bindings
for f, keys in pairs(settings.bindings.mouse.desktop) do
awesome.mouse_add(mouse(keys[1], keys[2], f))
end
---- {{{ Set hooks
-- {{{ Focus hook
awful.hooks.focus.register(function (c)
-- Skip over my urxvtcnotify
if c.name and c.name:lower():find('urxvtcnotify') and awful.client.next(1) ~= c then
awful.client.focusbyidx(1)
return
end
-- Set border
c.border_color = beautiful.border_focus
-- Raise the client
c:raise()
-- Set statusbar color
if settings.statusbar_highlight_focus and settings.statusbar_highlight_focus[1] then
if last_screen == nil or last_screen ~= c.screen then
mainstatusbar[settings.statusbar_highlight_focus[2]][c.screen].bg = beautiful.bg_sbfocus
if last_screen then
mainstatusbar[settings.statusbar_highlight_focus[2]][last_screen].bg = beautiful.bg_normal
end
end
last_screen = c.screen
end
end)
-- {{{ Unfocus hook
awful.hooks.unfocus.register(function (c)
-- Set border
c.border_color = beautiful.border_normal
end)
-- {{{ Mouseover hook
awful.hooks.mouseover.register(function (c)
-- Set focus for sloppy focus
client.focus = c
end)
-- {{{ Manage hook
awful.hooks.manage.register(function (c)
local class = ""
local name = ""
if c.class then
class = c.class:lower()
end
if c.name then
name = c.name:lower()
end
-- Create border
c.border_width = beautiful.border_width
c.border_color = beautiful.border_normal
-- Add mouse bindings
for f, keys in pairs(settings.bindings.mouse.client) do
c:mouse_add(mouse(keys[1], keys[2], f))
end
-- Check if floating
for app, i in pairs(settings.floating) do
if class:find(app) or name:find(app) then
c.floating = i
break
end
end
if name:find('urxvtcnotify') then
-- I got sick of libnotify/notification-daemon
-- and their dependencies, so I'm using a little
-- urxvtc window with some text in it as notifications :P
-- This makes it appear at the correct place,
-- feel free to remove the whole section, you probably
-- won't need it.
c.screen = 3
c:coords({
x = 1680*2+1400,
y = 18,
width = 276,
height = 106
c.border_color = beautiful.border_normal
local tags = {}
for i,t in pairs(eminent.tags[3]) do
if eminent.tag.isoccupied(3, t) then
table.insert(tags, t)
end
end
c:tags(tags)
return 0
end
-- Focus new clients
client.focus = c
-- Prevent new windows from becoming master
if not settings.new_become_master then
awful.client.swap(1, c)
end
-- Don't honor size hints
c.honorsizehints = false
end)
-- {{{ Arrange hook
awful.hooks.arrange.register(function(s)
-- Warp the mouse
if settings.warp_mouse then
mouse_warp()
end
-- Check focus
if not client.focus then
local c = awful.client.focus.history.get(s, 0)
if c then client.focus = c end
end
end)
-- vim: set filetype=lua fdm=marker tabstop=4 shiftwidth=4 expandtab smarttab autoindent smartindent nu:The most likely reason for you seeing the default settings, or nothing is that there is some error in the configuration file. You would have to take a look at the error output of xorg. Since I start X using startx I can look at it on the first sterminal (ALT - CTRL - F1). I don't know where the output would go if you use GDM or something similar.
If there are errors you could post them here and people might be able to help.
If the comment of the second config file is correct then the config most likely wont work with awesome 3.1 since the sytax of the config file changed between 3.0 and 3.1
Another possibility to get a working config would be to copy the default awesome config into your ~/.config/awesome folder and then gradually make changes to it, exchanging content for stuff from other configs, that way you'd know which change brakes something. -
[SOLVED] dual-screen problem with awesome3.2 and firefox/gedit
Hi,
my problem is that firefox/gedit (+maybe other apps, i don't know yet) are starting in awesome like they are fullscreen apps. Firefox covers the wibox at the top of the screen, and even overlaps a bit to the seconds screen. So the keyboard-shortcuts doenst work well, because awesome then changes the tags in bots screens when on one tag firefox is opened.
I dont know why this happens, here is my rc.lua:
-- Load libraries
require("awful")
require("beautiful")
require("wicked")
-- {{{ Variable definitions
-- User styles for windows, statusbars, titlebars and widgets
theme_path = os.getenv("HOME") .. "/.config/awesome/themes/zenburn"
beautiful.init(theme_path)
-- Modifier keys
modkey = "Mod4" -- Super_L
-- Window titlebars
use_titlebar = true
-- Window management layouts
layouts = {
awful.layout.suit.tile, -- 1
awful.layout.suit.tile.left, -- 2
awful.layout.suit.tile.bottom, -- 3
awful.layout.suit.tile.top, -- 4
awful.layout.suit.fair, -- 5
awful.layout.suit.fair.horizontal, -- 6
awful.layout.suit.max, -- 7
-- awful.layout.suit.max.fullscreen, -- /
awful.layout.suit.magnifier, -- 8
awful.layout.suit.floating -- 9
-- Application specific behaviour
apprules = {
-- Class Instance Name Screen Tag Floating
{ "Firefox", nil, nil, nil, 2, false },
{ "Firefox", "Download", nil, nil, nil, true },
{ "Firefox", "Places", nil, nil, nil, true },
{ "Firefox", "Extension", nil, nil, nil, true },
{ "MPlayer", nil, nil, nil, nil, true },
{ nil, nil, "VLC media player", nil, nil, true },
{ "Gimp", nil, nil, nil, nil, true },
{ "Xmessage", "xmessage", nil, nil, nil, true },
{ "Skype", nil, nil, nil, 1, true },
{ "Pidgin", nil, nil, nil, 1, true },
-- {{{ Tags
-- Define tags table
tags = {}
tags.settings = {
{ name = "im", layout = layouts[9] },
{ name = "www", layout = layouts[1] },
{ name = "terms", layout = layouts[3] },
{ name = "dev", layout = layouts[3] },
{ name = "other", layout = layouts[5] },
-- Initialize tags
for s = 1, screen.count() do
tags[s] = {}
for i, v in ipairs(tags.settings) do
tags[s][i] = tag(v.name)
tags[s][i].screen = s
awful.tag.setproperty(tags[s][i], "layout", v.layout)
awful.tag.setproperty(tags[s][i], "setslave", v.setslave)
end
tags[s][1].selected = true
end
-- {{{ Wibox
-- Widgets configuration
-- Reusable separators
myspace = widget({ type = "textbox", name = "myspace", align = "right" })
myseparator = widget({ type = "textbox", name = "myseparator", align = "right" })
myspace.text = " "
myseparator.text = "|"
-- Date, time and...
mydateicon = widget({ type = "imagebox", name = "mydateicon", align = "right" })
mydateicon.image = image(beautiful.widget_date)
mydatewidget = widget({ type = "textbox", name = "mydatewidget", align = "right" })
wicked.register(mydatewidget, wicked.widgets.date, "%b %e, %R", 60)
-- a Calendar
function calendar_select(offset)
local datespec = os.date("*t")
datespec = datespec.year * 12 + datespec.month - 1 + offset
awful.util.spawn("cal -m " .. (datespec % 12 + 1) .. " " .. math.floor(datespec / 12) .. " | xmessage -geometry +1135+17 -file -")
end
mydatewidget:buttons({
button({ }, 1, function () calendar_select(0) end),
button({ }, 4, function () calendar_select(1) end),
button({ }, 5, function () calendar_select(-1) end)
-- System tray
mysystray = widget({ type = "systray", align = "right" })
-- Create a wibox and...
mywibox = {}
mypromptbox = {}
mylayoutbox = {}
mytaglist = {}
mytaglist.buttons = { button({ }, 1, awful.tag.viewonly),
button({ modkey }, 1, awful.client.movetotag),
button({ }, 3, function (tag) tag.selected = not tag.selected end),
button({ modkey }, 3, awful.client.toggletag),
button({ }, 4, awful.tag.viewnext),
button({ }, 5, awful.tag.viewprev) }
-- ...add it to each screen
for s = 1, screen.count() do
-- Create a promptbox
mypromptbox[s] = widget({ type = "textbox", align = "left" })
-- Create an imagebox widget with icons indicating active layout
mylayoutbox[s] = widget({ type = "imagebox", align = "left" })
mylayoutbox[s]:buttons({ button({ }, 1, function () awful.layout.inc(layouts, 1) end),
button({ }, 3, function () awful.layout.inc(layouts, -1) end),
button({ }, 4, function () awful.layout.inc(layouts, 1) end),
button({ }, 5, function () awful.layout.inc(layouts, -1) end) })
-- Create the taglist
mytaglist[s] = awful.widget.taglist.new(s, awful.widget.taglist.label.all, mytaglist.buttons)
-- Create the wibox
mywibox[s] = wibox({ position = "top", height = "14", fg = beautiful.fg_normal, bg = beautiful.bg_normal })
-- Add widgets to the wibox (order matters)
mywibox[s].widgets = { mylayoutbox[s],
mytaglist[s],
mypromptbox[s],
myspace,
mydateicon, mydatewidget,
myspace,
s == screen.count() and mysystray or nil
mywibox[s].screen = s
end
-- {{{ Mouse bindings
root.buttons({
button({ }, 4, awful.tag.viewnext),
button({ }, 5, awful.tag.viewprev)
-- {{{ Key bindings
globalkeys = {
-- Applications
key({ modkey }, "Return",function () awful.util.spawn("uxterm") end),
-- Prompt menus
key({ modkey }, "F2", function () awful.prompt.run({ prompt = "Run: " }, mypromptbox[mouse.screen],
awful.util.spawn, awful.completion.shell, awful.util.getdir("cache") .. "/history")
end),
-- Awesome controls
key({ modkey, "Shift" }, "q", awesome.quit),
key({ modkey, "Shift" }, "r", function () mypromptbox[mouse.screen].text = awful.util.escape(awful.util.restart()) end),
-- Layout manipulation
key({ modkey, "Shift" }, "Plus", function () awful.client.incwfact(-0.05) end),
key({ modkey, "Shift" }, "Minus", function () awful.client.incwfact(0.05) end),
key({ modkey }, "space", function () awful.layout.inc(layouts, 1) end),
key({ modkey, "Shift" }, "space", function () awful.layout.inc(layouts, -1) end),
-- Focus controls
key({ modkey }, "Tab", function () awful.client.focus.history.previous(); if client.focus then client.focus:raise() end end),
key({ modkey }, "Down", function () awful.client.focus.bydirection("down"); if client.focus then client.focus:raise() end end),
key({ modkey }, "Up", function () awful.client.focus.bydirection("up"); if client.focus then client.focus:raise() end end),
key({ modkey }, "Left", function () awful.client.focus.bydirection("left"); if client.focus then client.focus:raise() end end),
key({ modkey }, "Right", function () awful.client.focus.bydirection("right");if client.focus then client.focus:raise() end end),
key({ modkey, "Shift" }, "Down", function () awful.client.swap.bydirection("down") end),
key({ modkey, "Shift" }, "Up", function () awful.client.swap.bydirection("up") end),
key({ modkey, "Shift" }, "Left", function () awful.client.swap.bydirection("left") end),
key({ modkey, "Shift" }, "Right", function () awful.client.swap.bydirection("right") end),
-- Client manipulation
clientkeys = {
key({ modkey, "Control" }, "space", awful.client.floating.toggle),
-- Bind keyboard digits
keynumber = 0
for s = 1, screen.count() do
keynumber = math.min(9, math.max(#tags[s], keynumber));
end
-- Tag controls
for i = 1, keynumber do
table.insert(globalkeys,
key({ modkey }, i,
function ()
local screen = mouse.screen
if tags[screen][i] then
awful.tag.viewonly(tags[screen][i])
end
end))
table.insert(globalkeys,
key({ modkey, "Shift" }, i,
function ()
if client.focus and tags[client.focus.screen][i] then
awful.client.movetotag(tags[client.focus.screen][i])
end
end))
end
-- Set keys
root.keys(globalkeys)
-- {{{ Hooks
-- Hook function to execute when focusing a client
awful.hooks.focus.register(function (c)
if not awful.client.ismarked(c) then
c.border_color = beautiful.border_focus
end
end)
-- Hook function to execute when unfocusing a client
awful.hooks.unfocus.register(function (c)
if not awful.client.ismarked(c) then
c.border_color = beautiful.border_normal
end
end)
-- Hook function to execute when marking a client
awful.hooks.marked.register(function (c)
c.border_color = beautiful.border_marked
end)
-- Hook function to execute when unmarking a client
awful.hooks.unmarked.register(function (c)
c.border_color = beautiful.border_focus
end)
-- Hook function to execute when the mouse enters a client
awful.hooks.mouse_enter.register(function (c)
-- Sloppy focus (but disabled for magnifier layout)
if awful.layout.get(c.screen) ~= awful.layout.suit.magnifier
and awful.client.focus.filter(c) then
client.focus = c
end
end)
-- Hook function to execute when a new client appears
awful.hooks.manage.register(function (c)
-- If we are not managing this application at startup, move it to the screen where the mouse is
if not startup and awful.client.focus.filter(c) then
c.screen = mouse.screen
end
-- Add a titlebar to each client
if use_titlebar then
awful.titlebar.add(c, { modkey = modkey })
end
-- Set client mouse bindings
c:buttons({
button({ }, 1, function (c) client.focus = c; c:raise() end),
button({ modkey }, 1, awful.mouse.client.move),
button({ modkey }, 3, awful.mouse.client.resize)
-- New clients may not receive focus if they're not focusable, so set the border anyway
c.border_width = beautiful.border_width
c.border_color = beautiful.border_normal
-- Check application->screen/tag mappings and floating state
local target_screen
local target_tag
local target_float
for index, rule in pairs(apprules) do
if (((rule[1] == nil) or (c.class and c.class == rule[1]))
and ((rule[2] == nil) or (c.instance and c.instance == rule[2]))
and ((rule[3] == nil) or (c.name and string.find(c.name, rule[3], 1, true)))) then
target_screen = rule[4]
target_tag = rule[5]
target_float = rule[6]
end
end
-- Apply mappings, if any
if target_float then
awful.client.floating.set(c, target_float)
end
if target_screen then
c.screen = target_screen
awful.client.movetotag(tags[target_screen][target_tag], c)
end
-- Focus after tag mapping
client.focus = c
-- Set client key bindings
c:keys(clientkeys)
-- Put windows at the end of others instead of setting them as a master
--awful.client.setslave(c)
-- ...or do it selectively for certain tags
if awful.tag.getproperty(awful.tag.selected(mouse.screen), "setslave") then
awful.client.setslave(c)
end
-- New floating windows don't cover the wibox and don't overlap until it's unavoidable
awful.placement.no_offscreen(c)
--awful.placement.no_overlap(c)
-- Honoring size hints: false to remove gaps between windows
c.size_hints_honor = false
end)
-- Hook function to execute when arranging the screen
awful.hooks.arrange.register(function (screen)
-- Update layout imagebox widget with an icon indicating active layout
local layout = awful.layout.getname(awful.layout.get(screen))
if layout and beautiful["layout_" ..layout] then
mylayoutbox[screen].image = image(beautiful["layout_" .. layout])
else
mylayoutbox[screen].image = nil
end
-- Give focus to the latest client in history if no window has focus
-- or if the current window is a desktop or a dock one
if not client.focus then
local c = awful.client.focus.history.get(screen, 0)
if c then client.focus = c end
end
-- Fine grained border controls
local visible_clients = awful.client.visible(screen)
if #visible_clients > 0 then
for unused, current in pairs(visible_clients) do
-- Floating clients always have borders
if awful.client.floating.get(current) or (layout == 'floating') then
current.border_width = beautiful.border_width
-- Floating clients always on top
if not current.fullscreen then
current.ontop = true
end
-- Don't draw the border if there is only one tiled client visible
elseif (#visible_clients == 1) or (layout == 'max') then
visible_clients[1].border_width = 0
else
current.border_width = beautiful.border_width
end
end
end
end)
I added "xrandr --output DVI-1 -- right-of DVI-0" to the .xinitrc to get the extended desktop i want.
Any suggestions?
Last edited by Wishes (2009-03-29 10:52:00)Still the same
Edit: i deleted my ~/.mozilla folder. Now firefox starts not overlapping with the wibox, but still a bit overlapping to the other screen, so hat my keystrokes toggle both screens. it seems that it start in floating mode, because i can move it with the mouse. When i move it a bit towarts the wibox and a bit right, it seems to get stuck in the chosen tile-layout and everything is fine... until i quit firefox and start it again.
Edit2: Hmmm, ok, i think i found it... or at least something:
-- New floating windows don't cover the wibox and don't overlap until it's unavoidable
--awful.placement.no_offscreen(c) //THIS was first uncommented
awful.placement.no_overlap(c) //THIS was first commented
So now with no_overlap it seems to work finde (although i cannot move gedit between the screens with the mouse, but i dont know if this isn't normal. Firefox is moveable between the screens.), no overlapping anymore with the wibox or to the other screen.
When i uncomment both lines, firefox and gedit are starting both on the 2nd screen (the left one), and gedit cannot be moved to the right one (although firefox can be moved.).
Last edited by Wishes (2009-03-28 20:24:52) -
Awesome3 dialog boxes and pop-ups appearing partly offscreen
Dialog boxes like when opening a specific file in evince (with C-o or file->open) are appearing floating (as they should) but with almost half of the box offscreen. Its irritating to have to move my hand to my mouse every time and move the window into full view as otherwise I use the keyboard exclusively, so I'm wondering if anyone knows how to set a default location on screen for pop-up dialog boxes like this.
Thanks for any help provided.
here is my rc.lua:
-- awesome 3 configuration file
-- Include awesome library, with lots of useful function!
require("awful")
require("tabulous")
require("beautiful")
--extra non-default library
require("wicked")
-- {{{ Variable definitions
-- This is a file path to a theme file which will defines colors.
theme_path = "/home/ojcp/.config/awesome/themes/default"
-- This is used later as the default terminal to run.
terminal = "terminal"
editor = "emacs"
browserName = "Gran Paradiso"
browser = "firefox"
pdfview = "evince"
office = "abiword"
spreadsheet = "Gnumeric"
-- Default modkey.
-- Usually, Mod4 is the key with a logo between Control and Alt.
-- If you do not like this or do not have such a key,
-- I suggest you to remap Mod4 to another key using xmodmap or other tools.
-- However, you can use another modifier like Mod1, but it may interact with others.
modkey = "Mod4"
-- Table of layouts to cover with awful.layout.inc, order matters.
layouts =
"tile",
"tileleft",
"tilebottom",
"tiletop",
"fairh",
"fairv",
"magnifier",
"max",
"spiral",
"dwindle",
"floating"
-- Table of clients that should be set floating. The index may be either
-- the application class or instance. The instance is useful when running
-- a console app in a terminal like (Music on Console)
-- xterm -name mocp -e mocp
floatapps =
-- by class
["MPlayer"] = true,
["pinentry"] = true,
["gimp"] = true,
-- by instance
["mocp"] = true
-- Applications to be moved to a pre-defined tag by class or instance.
-- Use the screen and tags indices.
apptags =
[browserName] = {screen = 1, tag = 2},
[editor] = {screen = 1, tag = 4},
[office] = {screen = 1, tag = 3},
[pdfview] = {screen = 1, tag = 3},
[spreadsheet] = {screen = 1, tag = 3}
-- Define if we want to use titlebar on all applications.
use_titlebar = false
-- {{{ Initialization
-- Initialize theme (colors).
beautiful.init(theme_path)
-- Register theme in awful.
-- This allows to not pass plenty of arguments to each function
-- to inform it about colors we want it to draw.
awful.beautiful.register(beautiful)
-- Uncomment this to activate autotabbing
-- tabulous.autotab_start()
-- {{{ Tags
-- Define tags table.
tags = {}
for s = 1, screen.count() do
-- Each screen has its own tag table.
tags[s] = {}
tagnames = {"chmu","net","doc","emacs", "misc", "float"}
-- Create 9 tags per screen.
for tagnumber = 1, 6 do
if tagnumber < 6 then
tags[s][tagnumber] = tag({ name = tagnames[tagnumber], layout = layouts[1] })
else
tags[s][tagnumber] = tag({ name = tagnames[tagnumber], layout = layouts[11] })
end
-- Add tags to screen one by one
tags[s][tagnumber].screen = s
end
-- I'm sure you want to see at least one tag.
tags[s][1].selected = true
end
-- {{{ Statusbar
-- Create a taglist widget
mytaglist = widget({ type = "taglist", name = "mytaglist" })
mytaglist:mouse_add(mouse({}, 1, function (object, tag) awful.tag.viewonly(tag) end))
mytaglist:mouse_add(mouse({ modkey }, 1, function (object, tag) awful.client.movetotag(tag) end))
mytaglist:mouse_add(mouse({}, 3, function (object, tag) tag.selected = not tag.selected end))
mytaglist:mouse_add(mouse({ modkey }, 3, function (object, tag) awful.client.toggletag(tag) end))
mytaglist:mouse_add(mouse({ }, 4, awful.tag.viewnext))
mytaglist:mouse_add(mouse({ }, 5, awful.tag.viewprev))
mytaglist.label = awful.widget.taglist.label.all
-- Create a tasklist widget
mytasklist = widget({ type = "tasklist", name = "mytasklist" })
mytasklist:mouse_add(mouse({ }, 1, function (object, c) client.focus = c; c:raise() end))
mytasklist:mouse_add(mouse({ }, 4, function () awful.client.focusbyidx(1) end))
mytasklist:mouse_add(mouse({ }, 5, function () awful.client.focusbyidx(-1) end))
mytasklist.label = awful.widget.tasklist.label.currenttags
-- Create a textbox widget
mytextbox = widget({ type = "textbox", name = "mytextbox", align = "right" })
-- Set the default text in textbox
mytextbox.text = "<b><small> awesome " .. AWESOME_VERSION .. " </small></b>"
mypromptbox = widget({ type = "textbox", name = "mypromptbox", align = "left" })
-- Create an iconbox widget
myiconbox = widget({ type = "textbox", name = "myiconbox", align = "left" })
myiconbox.text = "<bg image=\"/usr/share/awesome/icons/awesome16.png\" resize=\"true\"/>"
-- Create a systray
mysystray = widget({ type = "systray", name = "mysystray", align = "right" })
-- Create an iconbox widget which will contains an icon indicating which layout we're using.
-- We need one layoutbox per screen.
mylayoutbox = {}
for s = 1, screen.count() do
mylayoutbox[s] = widget({ type = "textbox", name = "mylayoutbox", align = "right" })
mylayoutbox[s]:mouse_add(mouse({ }, 1, function () awful.layout.inc(layouts, 1) end))
mylayoutbox[s]:mouse_add(mouse({ }, 3, function () awful.layout.inc(layouts, -1) end))
mylayoutbox[s]:mouse_add(mouse({ }, 4, function () awful.layout.inc(layouts, 1) end))
mylayoutbox[s]:mouse_add(mouse({ }, 5, function () awful.layout.inc(layouts, -1) end))
mylayoutbox[s].text = "<bg image=\"/usr/share/awesome/icons/layouts/tilew.png\" resize=\"true\"/>"
end
-- Create battery widget
batterytext = widget({type = "textbox", name = "batterytext", align = "right"})
batterytext.text = " bat: "
mybatterymonitor = widget({type = "progressbar", name = "batterywidget", align = "right" })
mybatterymonitor.width = 50
mybatterymonitor.height = 0.6
mybatterymonitor.border_padding = 1
mybatterymonitor.border_width = 1
mybatterymonitor.ticks_count = 20
mybatterymonitor.ticks_gap = 1
mybatterymonitor.vertical = false
mybatterymonitor:bar_properties_set('bat', {
bg = 'black',
fg = 'blue4',
fg_off = 'black',
reverse = false,
min_value = 0,
max_value = 100
-- Create membar
membartext = widget({ type = "textbox", name = "membartext", align = "right" })
membartext.text = " mem: "
membarwidget = widget({
type = 'progressbar',
name = 'membarwidget',
align = 'right'
membarwidget.width = 50
membarwidget.height = 0.6
membarwidget.border_padding = 1
membarwidget.gap = 5
membarwidget.ticks_count = 20
membarwidget.ticks_gap = 1
membarwidget:bar_properties_set('mem', {
bg = 'black',
fg = '#285577',
fg_center = '#285577',
fg_end = '#285577',
fg_off = 'black',
reverse = false,
min_value = 0,
max_value = 100
wicked.register(membarwidget, wicked.widgets.mem, '$1', 1, 'mem')
-- CPU graph
cputext = widget ({ type = "textbox", name = "cputext", align = "right"})
cputext.text = " cpu: "
cpugraphwidget = widget({
type = 'graph',
name = 'cpugraphwidget',
align = 'right'
cpugraphwidget.height = 0.85
cpugraphwidget.width = 45
cpugraphwidget.bg = 'black'
cpugraphwidget.border_width = 1
cpugraphwidget.grow = 'left'
cpugraphwidget:plot_properties_set('cpu', {
fg = '#AEC6D8',
fg_center = '#285577',
fg_end = '#285577',
vertical_gradient = false
wicked.register(cpugraphwidget, wicked.widgets.cpu, '$1', 1, 'cpu')
-- mpd display
--mpdwidget = widget({
-- type = 'textbox',
-- name = 'mpdwidget',
-- align = 'left'
--wicked.register(mpdwidget, wicked.widgets.mpd,
-- function (widget, args)
-- if args[1]:find("volume:") == nil then
-- return ' <span color="white">Now Playing:</span> '..args[1]
-- else
-- return ''
-- end
-- end)
-- Create a statusbar for each screen and add it
mystatusbar = {}
for s = 1, screen.count() do
mystatusbar[s] = statusbar({ position = "top", name = "mystatusbar" .. s,
fg = beautiful.fg_normal, bg = beautiful.bg_normal })
-- Add widgets to the statusbar - order matters
mystatusbar[s]:widgets({
mytaglist,
--mytasklist,
myiconbox,
mypromptbox,
mytasklist,
--mpdwidget,
cputext,
cpugraphwidget,
membartext,
membarwidget,
batterytext,
mybatterymonitor,
mytextbox,
mylayoutbox[s],
s == 1 and mysystray or nil
mystatusbar[s].screen = s
end
--bottomStatusBar = {}
--for s = 1, screen.count() do
-- bottomStatusBar[s] = statusbar({ position = "bottom", name = "bottomStatusBar" .. s,
-- fg = beautiful.fg_normal, bg = beautiful.bg_normal })
-- -- Add widgets to the statusbar - order matters
-- bottomStatusBar[s]:widgets({
-- --mytaglist,
-- mytasklist,
-- --myiconbox,
-- --mypromptbox,
-- --testbox,
-- --mytextbox,
-- --mylayoutbox[s],
-- --s == 1 and mysystray or nil
-- bottomStatusBar[s].screen = s
--end
-- {{{ Mouse bindings
awesome.mouse_add(mouse({ }, 3, function () awful.spawn(terminal) end))
awesome.mouse_add(mouse({ }, 4, awful.tag.viewnext))
awesome.mouse_add(mouse({ }, 5, awful.tag.viewprev))
-- {{{ Key bindings
-- Bind keyboard digits
-- Compute the maximum number of digit we need, limited to 9
keynumber = 0
for s = 1, screen.count() do
keynumber = math.min(9, math.max(#tags[s], keynumber));
end
for i = 1, keynumber do
keybinding({ modkey }, i,
function ()
local screen = mouse.screen
if tags[screen][i] then
awful.tag.viewonly(tags[screen][i])
end
end):add()
keybinding({ modkey, "Control" }, i,
function ()
local screen = mouse.screen
if tags[screen][i] then
tags[screen][i].selected = not tags[screen][i].selected
end
end):add()
keybinding({ modkey, "Shift" }, i,
function ()
local sel = client.focus
if sel then
if tags[sel.screen][i] then
awful.client.movetotag(tags[sel.screen][i])
end
end
end):add()
keybinding({ modkey, "Control", "Shift" }, i,
function ()
local sel = client.focus
if sel then
if tags[sel.screen][i] then
awful.client.toggletag(tags[sel.screen][i])
end
end
end):add()
end
keybinding({ modkey }, "Left", awful.tag.viewprev):add()
keybinding({ modkey }, "Right", awful.tag.viewnext):add()
keybinding({ modkey }, "Escape", awful.tag.history.restore):add()
-- Standard program
keybinding({ modkey }, "Return", function () awful.spawn(terminal) end):add()
keybinding({ }, "F4", function () awful.spawn(browser) end):add()
keybinding({ modkey, "Control" }, "r", awesome.restart):add()
keybinding({ modkey, "Shift" }, "q", awesome.quit):add()
-- Client manipulation
keybinding({ modkey }, "m", awful.client.maximize):add()
keybinding({ modkey, "Shift" }, "c", function () client.focus:kill() end):add()
keybinding({ modkey }, "d", function () awful.client.focusbyidx(1); client.focus:raise() end):add()
keybinding({ modkey }, "f", function () awful.client.focusbyidx(-1); client.focus:raise() end):add()
keybinding({ modkey, "Shift" }, "d", function () awful.client.swap(1) end):add()
keybinding({ modkey, "Shift" }, "f", function () awful.client.swap(-1) end):add()
keybinding({ modkey, "Control" }, "d", function () awful.screen.focus(1) end):add()
keybinding({ modkey, "Control" }, "f", function () awful.screen.focus(-1) end):add()
keybinding({ modkey, "Control" }, "space", awful.client.togglefloating):add()
keybinding({ modkey, "Control" }, "Return", function () client.focus:swap(awful.client.master()) end):add()
keybinding({ modkey }, "o", awful.client.movetoscreen):add()
keybinding({ modkey }, "Tab", awful.client.focus.history.previous):add()
keybinding({ modkey }, "u", awful.client.urgent.jumpto):add()
keybinding({ modkey, "Shift" }, "r", function () client.focus:redraw() end):add()
-- Layout manipulation
keybinding({ modkey }, "l", function () awful.tag.incmwfact(0.05) end):add()
keybinding({ modkey }, "h", function () awful.tag.incmwfact(-0.05) end):add()
keybinding({ modkey, "Shift" }, "h", function () awful.tag.incnmaster(1) end):add()
keybinding({ modkey, "Shift" }, "l", function () awful.tag.incnmaster(-1) end):add()
keybinding({ modkey, "Control" }, "h", function () awful.tag.incncol(1) end):add()
keybinding({ modkey, "Control" }, "l", function () awful.tag.incncol(-1) end):add()
keybinding({ modkey }, "space", function () awful.layout.inc(layouts, 1) end):add()
keybinding({ modkey, "Shift" }, "space", function () awful.layout.inc(layouts, -1) end):add()
-- Prompt
keybinding({ modkey }, "F1", function ()
awful.prompt.run({ prompt = "Run: " }, mypromptbox, awful.spawn, awful.completion.bash,
os.getenv("HOME") .. "/.cache/awesome/history") end):add()
keybinding({ modkey }, "F4", function ()
awful.prompt.run({ prompt = "Run Lua code: " }, mypromptbox, awful.eval, awful.prompt.bash,
os.getenv("HOME") .. "/.cache/awesome/history_eval") end):add()
keybinding({ modkey, "Ctrl" }, "i", function ()
if mypromptbox.text then
mypromptbox.text = nil
else
mypromptbox.text = nil
if client.focus.class then
mypromptbox.text = "Class: " .. client.focus.class .. " "
end
if client.focus.instance then
mypromptbox.text = mypromptbox.text .. "Instance: ".. client.focus.instance .. " "
end
if client.focus.role then
mypromptbox.text = mypromptbox.text .. "Role: ".. client.focus.role
end
end
end):add()
--- Tabulous, tab manipulation
keybinding({ modkey, "Control" }, "y", function ()
local tabbedview = tabulous.tabindex_get()
local nextclient = awful.client.next(1)
if not tabbedview then
tabbedview = tabulous.tabindex_get(nextclient)
if not tabbedview then
tabbedview = tabulous.tab_create()
tabulous.tab(tabbedview, nextclient)
else
tabulous.tab(tabbedview, client.focus)
end
else
tabulous.tab(tabbedview, nextclient)
end
end):add()
keybinding({ modkey, "Shift" }, "y", tabulous.untab):add()
keybinding({ modkey }, "y", function ()
local tabbedview = tabulous.tabindex_get()
if tabbedview then
local n = tabulous.next(tabbedview)
tabulous.display(tabbedview, n)
end
end):add()
-- Client awful tagging: this is useful to tag some clients and then do stuff like move to tag on them
keybinding({ modkey }, "t", awful.client.togglemarked):add()
keybinding({ modkey, 'Shift' }, "t", function ()
local tabbedview = tabulous.tabindex_get()
local clients = awful.client.getmarked()
if not tabbedview then
tabbedview = tabulous.tab_create(clients[1])
table.remove(clients, 1)
end
for k,c in pairs(clients) do
tabulous.tab(tabbedview, c)
end
end):add()
for i = 1, keynumber do
keybinding({ modkey, "Shift" }, "F" .. i,
function ()
local screen = mouse.screen
if tags[screen][i] then
for k, c in pairs(awful.client.getmarked()) do
awful.client.movetotag(tags[screen][i], c)
end
end
end):add()
end
-- {{{ Hooks
-- Hook function to execute when focusing a client.
function hook_focus(c)
if not awful.client.ismarked(c) then
c.border_color = beautiful.border_focus
end
end
-- Hook function to execute when unfocusing a client.
function hook_unfocus(c)
if not awful.client.ismarked(c) then
c.border_color = beautiful.border_normal
end
end
-- Hook function to execute when marking a client
function hook_marked(c)
c.border_color = beautiful.border_marked
end
-- Hook function to execute when unmarking a client
function hook_unmarked(c)
c.border_color = beautiful.border_focus
end
-- Hook function to execute when the mouse is over a client.
function hook_mouseover(c)
-- Sloppy focus, but disabled for magnifier layout
if awful.layout.get(c.screen) ~= "magnifier" then
client.focus = c
end
end
-- Hook function to execute when a new client appears.
function hook_manage(c)
-- Set floating placement to be smart!
c.floating_placement = "smart"
if use_titlebar then
-- Add a titlebar
awful.titlebar.add(c, { modkey = modkey })
end
-- Add mouse bindings
c:mouse_add(mouse({ }, 1, function (c) client.focus = c; c:raise() end))
c:mouse_add(mouse({ modkey }, 1, function (c) c:mouse_move() end))
c:mouse_add(mouse({ modkey }, 3, function (c) c:mouse_resize() end))
-- New client may not receive focus
-- if they're not focusable, so set border anyway.
c.border_width = beautiful.border_width
c.border_color = beautiful.border_normal
client.focus = c
-- Check if the application should be floating.
local cls = c.class
local inst = c.instance
if floatapps[cls] then
c.floating = floatapps[cls]
elseif floatapps[inst] then
c.floating = floatapps[inst]
end
-- Check application->screen/tag mappings.
local target
if apptags[cls] then
target = apptags[cls]
elseif apptags[inst] then
target = apptags[inst]
end
if target then
c.screen = target.screen
awful.client.movetotag(tags[target.screen][target.tag], c)
end
-- Set the windows at the slave,
-- i.e. put it at the end of others instead of setting it master.
-- awful.client.setslave(c)
-- Honor size hints
c.honorsizehints = true
end
-- Hook function to execute when arranging the screen
-- (tag switch, new client, etc)
function hook_arrange(screen)
local layout = awful.layout.get(screen)
if layout then
mylayoutbox[screen].text =
"<bg image=\"/usr/share/awesome/icons/layouts/" .. awful.layout.get(screen) .. "w.png\" resize=\"true\"/>"
else
mylayoutbox[screen].text = "No layout."
end
-- If no window has focus, give focus to the latest in history
if not client.focus then
local c = awful.client.focus.history.get(screen, 0)
if c then client.focus = c end
end
-- Uncomment if you want mouse warping
local sel = client.focus
if sel then
local c_c = sel:coords()
local m_c = mouse.coords()
if m_c.x < c_c.x or m_c.x >= c_c.x + c_c.width or
m_c.y < c_c.y or m_c.y >= c_c.y + c_c.height then
if table.maxn(m_c.buttons) == 0 then
mouse.coords({ x = c_c.x + 5, y = c_c.y + 5})
end
end
end
end
-- Hook called every second
function hook_timer ()
-- For unix time_t lovers
-- mytextbox.text = " " .. os.time() .. " time_t "
-- Otherwise use:
mytextbox.text = " " .. os.date() .. " "
end
-- Custom functions
local function get_bat()
local a = io.open("/sys/class/power_supply/BAT0/energy_full")
for line in a:lines() do
full = line
end
a:close()
local b = io.open("/sys/class/power_supply/BAT0/energy_now")
for line in b:lines() do
now = line
end
b:close()
batt=math.floor(now*100/full)
mybatterymonitor:bar_data_add("bat",batt)
end
-- Set up some hooks
awful.hooks.focus.register(hook_focus)
awful.hooks.unfocus.register(hook_unfocus)
awful.hooks.marked.register(hook_marked)
awful.hooks.unmarked.register(hook_unmarked)
awful.hooks.manage.register(hook_manage)
awful.hooks.mouseover.register(hook_mouseover)
awful.hooks.arrange.register(hook_arrange)
awful.hooks.timer.register(1, hook_timer)
awful.hooks.timer.register(5, get_bat)
--startup scriptSame problem here. Also happens to me in wmii. I think if the WM puts the window in floating mode without telling it where to appear somethings will appear wrong.
For me it's the Firefox Upload selection box.
It doesn't happen in ratpoison, but you can tell the floating window is getting moved after it spawns. (ratpoison has editable rules for where to put these windows)
Last edited by Procyon (2008-11-07 22:34:40) -
In need of some help with awesome
So I got it installed, and I started editing everything, but what I can't seem to figure out, is how to add items to the root-esque "awesome-menu". I see the lines of code in rc.lua but from there I'm lost to say the least lol. The documentation on the site seems to be outdated as well; seeing as its not even in the same syntax, let alone the same language in all probability.
If somebody would be so kind as to post their menu setup, or at least give me a point in the right direction id be really thankful.the way i figured it out was by examining other peoples rc.lua (available at awesome wiki)
as an example i will show you mine..
-- Include awesome libraries, with lots of useful function!
require("awful")
require("beautiful")
-- {{{ Variable definitions
-- Themes define colours, icons, and wallpapers
-- The default is a dark theme
theme_path = "/usr/share/awesome/themes/default/theme"
-- Uncommment this for a lighter theme
-- theme_path = "/usr/share/awesome/themes/sky/theme"
-- Actually load theme
beautiful.init(theme_path)
-- These are used later as the default apps to run.
terminal = "gnome-terminal"
editor = os.getenv("EDITOR") or "nano"
editor_cmd = terminal .. " -e " .. editor
browser = "/usr/bin/swiftfox"
gimp = "/usr/bin/gimp"
transmission = "/usr/bin/transmission"
-- Default modkey.
-- Usually, Mod4 is the key with a logo between Control and Alt.
-- If you do not like this or do not have such a key,
-- I suggest you to remap Mod4 to another key using xmodmap or other tools.
-- However, you can use another modifier like Mod1, but it may interact with others.
modkey = "Mod4"
-- Table of layouts to cover with awful.layout.inc, order matters.
layouts =
"tile",
"tileleft",
"tilebottom",
"tiletop",
"fairh",
"fairv",
"magnifier",
"max",
"fullscreen",
"spiral",
"dwindle",
"floating"
-- Table of clients that should be set floating. The index may be either
-- the application class or instance. The instance is useful when running
-- a console app in a terminal like (Music on Console)
-- xterm -name mocp -e mocp
floatapps =
-- by class
["MPlayer"] = true,
["pinentry"] = true,
["gimp"] = true,
["gimp-2.6"] = true,
-- by instance
["mocp"] = true
-- Applications to be moved to a pre-defined tag by class or instance.
-- Use the screen and tags indices.
apptags =
-- ["Firefox"] = { screen = 1, tag = 2 },
-- ["mocp"] = { screen = 2, tag = 4 },
-- Define if we want to use titlebar on all applications.
use_titlebar = false
-- {{{ Tags
-- Define tags table.
tags = {}
for s = 1, screen.count() do
-- Each screen has its own tag table.
tags[s] = {}
-- Create 6 tags per screen.
tags[1][1] = tag({ name = "One", layout = layouts[6] })
tags[1][2] = tag({ name = "Two", layout = layouts[6] })
tags[1][3] = tag({ name = "Three", layout = layouts[6] })
tags[1][4] = tag({ name = "Four", layout = layouts[6] })
tags[1][5] = tag({ name = "Five", layout = layouts[6] })
tags[1][6] = tag({ name = "Six", layout = layouts[6] })
-- Add tags to screen one by one
for tagnumber = 1, 6 do
tags[s][tagnumber].screen = s
end
-- I'm sure you want to see at least one tag.
tags[s][1].selected = true
end
-- {{{ Wibox
-- Create a textbox widget
mytextbox = widget({ type = "textbox", align = "right" })
-- Set the default text in textbox
mytextbox.text = "<b><small> " .. AWESOME_RELEASE .. " </small></b>"
-- Create a laucher widget and a main menu
myawesomemenu = {
{ "manual", terminal .. "man awesome" },
{ "edit config", editor_cmd .. " " .. awful.util.getdir("config") .. "/rc.lua" },
{ "restart", awesome.restart },
{ "quit", awesome.quit }
mymainmenu = awful.menu.new({ items = { { "web browser", browser },
{ "transmission", transmission },
{ "terminal", terminal },
{ "gimp", gimp },
{ "awesome", myawesomemenu, beautiful.awesome_icon }
mylauncher = awful.widget.launcher({ image = beautiful.awesome_icon,
menu = mymainmenu })
-- Create a systray
mysystray = widget({ type = "systray", align = "right" })
-- Create a wibox for each screen and add it
mywibox = {}
mypromptbox = {}
mylayoutbox = {}
mytaglist = {}
mytaglist.buttons = { button({ }, 1, awful.tag.viewonly),
button({ modkey }, 1, awful.client.movetotag),
button({ }, 3, function (tag) tag.selected = not tag.selected end),
button({ modkey }, 3, awful.client.toggletag),
button({ }, 4, awful.tag.viewnext),
button({ }, 5, awful.tag.viewprev) }
mytasklist = {}
mytasklist.buttons = { button({ }, 1, function (c) client.focus = c; c:raise() end),
button({ }, 3, function () awful.menu.clients({ width=250 }) end),
button({ }, 4, function () awful.client.focus.byidx(1) end),
button({ }, 5, function () awful.client.focus.byidx(-1) end) }
for s = 1, screen.count() do
-- Create a promptbox for each screen
mypromptbox[s] = widget({ type = "textbox", align = "left" })
-- Create an imagebox widget which will contains an icon indicating which layout we're using.
-- We need one layoutbox per screen.
mylayoutbox[s] = widget({ type = "imagebox", align = "right" })
mylayoutbox[s]:buttons({ button({ }, 1, function () awful.layout.inc(layouts, 1) end),
button({ }, 3, function () awful.layout.inc(layouts, -1) end),
button({ }, 4, function () awful.layout.inc(layouts, 1) end),
button({ }, 5, function () awful.layout.inc(layouts, -1) end) })
-- Create a taglist widget
mytaglist[s] = awful.widget.taglist.new(s, awful.widget.taglist.label.all, mytaglist.buttons)
-- Create a tasklist widget
mytasklist[s] = awful.widget.tasklist.new(function(c)
return awful.widget.tasklist.label.currenttags(c, s)
end, mytasklist.buttons)
-- Create the wibox
mywibox[s] = wibox({ position = "top", fg = beautiful.fg_normal, bg = beautiful.bg_normal })
-- Add widgets to the wibox - order matters
mywibox[s].widgets = { mylauncher,
mytaglist[s],
mytasklist[s],
mypromptbox[s],
mytextbox,
mylayoutbox[s],
s == 1 and mysystray or nil }
mywibox[s].screen = s
end
-- {{{ Mouse bindings
awesome.buttons({
button({ }, 3, function () mymainmenu:toggle() end),
button({ }, 4, awful.tag.viewnext),
button({ }, 5, awful.tag.viewprev)
-- {{{ Key bindings
-- Bind keyboard digits
-- Compute the maximum number of digit we need, limited to 9
keynumber = 0
for s = 1, screen.count() do
keynumber = math.min(9, math.max(#tags[s], keynumber));
end
for i = 1, keynumber do
keybinding({ modkey }, i,
function ()
local screen = mouse.screen
if tags[screen][i] then
awful.tag.viewonly(tags[screen][i])
end
end):add()
keybinding({ modkey, "Control" }, i,
function ()
local screen = mouse.screen
if tags[screen][i] then
tags[screen][i].selected = not tags[screen][i].selected
end
end):add()
keybinding({ modkey, "Shift" }, i,
function ()
if client.focus then
if tags[client.focus.screen][i] then
awful.client.movetotag(tags[client.focus.screen][i])
end
end
end):add()
keybinding({ modkey, "Control", "Shift" }, i,
function ()
if client.focus then
if tags[client.focus.screen][i] then
awful.client.toggletag(tags[client.focus.screen][i])
end
end
end):add()
end
keybinding({ modkey }, "Left", awful.tag.viewprev):add()
keybinding({ modkey }, "Right", awful.tag.viewnext):add()
keybinding({ modkey }, "Escape", awful.tag.history.restore):add()
-- XF86Audio
keybinding( {none}, "XF86AudioMute", function () awful.util.spawn("amixer -c 0 set Master toggle") end):add()
keybinding( {none}, "XF86AudioRaiseVolume", function () awful.util.spawn("amixer -c 0 set Master 1%+") end):add()
keybinding( {none}, "XF86AudioLowerVolume", function () awful.util.spawn("amixer -c 0 set Master 1%-") end):add()
-- Standard program
keybinding({ modkey }, "Return", function () awful.util.spawn(terminal) end):add()
keybinding({ modkey, "Control" }, "r", function ()
mypromptbox[mouse.screen].text =
awful.util.escape(awful.util.restart())
end):add()
keybinding({ modkey, "Shift" }, "q", awesome.quit):add()
-- Client manipulation
keybinding({ modkey }, "m", awful.client.maximize):add()
keybinding({ modkey }, "f", function () if client.focus then client.focus.fullscreen = not client.focus.fullscreen end end):add()
keybinding({ modkey, "Shift" }, "c", function () if client.focus then client.focus:kill() end end):add()
keybinding({ modkey }, "j", function () awful.client.focus.byidx(1); if client.focus then client.focus:raise() end end):add()
keybinding({ modkey }, "k", function () awful.client.focus.byidx(-1); if client.focus then client.focus:raise() end end):add()
keybinding({ modkey, "Shift" }, "j", function () awful.client.swap.byidx(1) end):add()
keybinding({ modkey, "Shift" }, "k", function () awful.client.swap.byidx(-1) end):add()
keybinding({ modkey, "Control" }, "j", function () awful.screen.focus(1) end):add()
keybinding({ modkey, "Control" }, "k", function () awful.screen.focus(-1) end):add()
keybinding({ modkey, "Control" }, "space", awful.client.togglefloating):add()
keybinding({ modkey, "Control" }, "Return", function () if client.focus then client.focus:swap(awful.client.getmaster()) end end):add()
keybinding({ modkey }, "o", awful.client.movetoscreen):add()
keybinding({ modkey }, "Tab", awful.client.focus.history.previous):add()
keybinding({ modkey }, "u", awful.client.urgent.jumpto):add()
keybinding({ modkey, "Shift" }, "r", function () if client.focus then client.focus:redraw() end end):add()
-- Layout manipulation
keybinding({ modkey }, "l", function () awful.tag.incmwfact(0.05) end):add()
keybinding({ modkey }, "h", function () awful.tag.incmwfact(-0.05) end):add()
keybinding({ modkey, "Shift" }, "h", function () awful.tag.incnmaster(1) end):add()
keybinding({ modkey, "Shift" }, "l", function () awful.tag.incnmaster(-1) end):add()
keybinding({ modkey, "Control" }, "h", function () awful.tag.incncol(1) end):add()
keybinding({ modkey, "Control" }, "l", function () awful.tag.incncol(-1) end):add()
keybinding({ modkey }, "space", function () awful.layout.inc(layouts, 1) end):add()
keybinding({ modkey, "Shift" }, "space", function () awful.layout.inc(layouts, -1) end):add()
-- Prompt
keybinding({ modkey }, "F1", function ()
awful.prompt.run({ prompt = "Run: " }, mypromptbox[mouse.screen], awful.util.spawn, awful.completion.bash,
awful.util.getdir("cache") .. "/history")
end):add()
keybinding({ modkey }, "F4", function ()
awful.prompt.run({ prompt = "Run Lua code: " }, mypromptbox[mouse.screen], awful.util.eval, awful.prompt.bash,
awful.util.getdir("cache") .. "/history_eval")
end):add()
keybinding({ modkey, "Ctrl" }, "i", function ()
local s = mouse.screen
if mypromptbox[s].text then
mypromptbox[s].text = nil
elseif client.focus then
mypromptbox[s].text = nil
if client.focus.class then
mypromptbox[s].text = "Class: " .. client.focus.class .. " "
end
if client.focus.instance then
mypromptbox[s].text = mypromptbox[s].text .. "Instance: ".. client.focus.instance .. " "
end
if client.focus.role then
mypromptbox[s].text = mypromptbox[s].text .. "Role: ".. client.focus.role
end
end
end):add()
-- Client awful tagging: this is useful to tag some clients and then do stuff like move to tag on them
keybinding({ modkey }, "t", awful.client.togglemarked):add()
for i = 1, keynumber do
keybinding({ modkey, "Shift" }, "F" .. i,
function ()
local screen = mouse.screen
if tags[screen][i] then
for k, c in pairs(awful.client.getmarked()) do
awful.client.movetotag(tags[screen][i], c)
end
end
end):add()
end
-- {{{ Hooks
-- Hook function to execute when focusing a client.
awful.hooks.focus.register(function (c)
if not awful.client.ismarked(c) then
c.border_color = beautiful.border_focus
end
end)
-- Hook function to execute when unfocusing a client.
awful.hooks.unfocus.register(function (c)
if not awful.client.ismarked(c) then
c.border_color = beautiful.border_normal
end
end)
-- Hook function to execute when marking a client
awful.hooks.marked.register(function (c)
c.border_color = beautiful.border_marked
end)
-- Hook function to execute when unmarking a client.
awful.hooks.unmarked.register(function (c)
c.border_color = beautiful.border_focus
end)
-- Hook function to execute when the mouse enters a client.
awful.hooks.mouse_enter.register(function (c)
-- Sloppy focus, but disabled for magnifier layout
if awful.layout.get(c.screen) ~= "magnifier"
and awful.client.focus.filter(c) then
client.focus = c
end
end)
-- Hook function to execute when a new client appears.
awful.hooks.manage.register(function (c)
if use_titlebar then
-- Add a titlebar
awful.titlebar.add(c, { modkey = modkey })
end
-- Add mouse bindings
c:buttons({
button({ }, 1, function (c) client.focus = c; c:raise() end),
button({ modkey }, 1, function (c) c:mouse_move() end),
button({ modkey }, 3, function (c) c:mouse_resize() end)
-- New client may not receive focus
-- if they're not focusable, so set border anyway.
c.border_width = beautiful.border_width
c.border_color = beautiful.border_normal
-- Check if the application should be floating.
local cls = c.class
local inst = c.instance
if floatapps[cls] then
c.floating = floatapps[cls]
elseif floatapps[inst] then
c.floating = floatapps[inst]
end
-- Check application->screen/tag mappings.
local target
if apptags[cls] then
target = apptags[cls]
elseif apptags[inst] then
target = apptags[inst]
end
if target then
c.screen = target.screen
awful.client.movetotag(tags[target.screen][target.tag], c)
end
-- Do this after tag mapping, so you don't see it on the wrong tag for a split second.
client.focus = c
-- Set the windows at the slave,
-- i.e. put it at the end of others instead of setting it master.
-- awful.client.setslave(c)
-- Honor size hints: if you want to drop the gaps between windows, set this to false.
-- c.honorsizehints = false
end)
-- Hook function to execute when arranging the screen.
-- (tag switch, new client, etc)
awful.hooks.arrange.register(function (screen)
local layout = awful.layout.get(screen)
if layout then
mylayoutbox[screen].image = image(beautiful["layout_" .. layout])
else
mylayoutbox[screen].image = nil
end
-- Give focus to the latest client in history if no window has focus
-- or if the current window is a desktop or a dock one.
if not client.focus then
local c = awful.client.focus.history.get(screen, 0)
if c then client.focus = c end
end
-- Uncomment if you want mouse warping
if client.focus then
local c_c = client.focus:fullgeometry()
local m_c = mouse.coords()
if m_c.x < c_c.x or m_c.x >= c_c.x + c_c.width or
m_c.y < c_c.y or m_c.y >= c_c.y + c_c.height then
if table.maxn(m_c.buttons) == 0 then
mouse.coords({ x = c_c.x + 5, y = c_c.y + 5})
end
end
end
end)
-- Hook called every second
awful.hooks.timer.register(1, function ()
-- For unix time_t lovers
-- mytextbox.text = " " .. os.time() .. " time_t "
-- Otherwise use:
mytextbox.text = " " .. os.date() .. " "
end)
first, notice this part
-- These are used later as the default apps to run.
terminal = "gnome-terminal"
editor = os.getenv("EDITOR") or "nano"
editor_cmd = terminal .. " -e " .. editor
browser = "/usr/bin/swiftfox"
gimp = "/usr/bin/gimp"
transmission = "/usr/bin/transmission"
then this part
-- Create a laucher widget and a main menu
myawesomemenu = {
{ "manual", terminal .. "man awesome" },
{ "edit config", editor_cmd .. " " .. awful.util.getdir("config") .. "/rc.lua" },
{ "restart", awesome.restart },
{ "quit", awesome.quit }
mymainmenu = awful.menu.new({ items = { { "web browser", browser },
{ "transmission", transmission },
{ "terminal", terminal },
{ "gimp", gimp },
{ "awesome", myawesomemenu, beautiful.awesome_icon }
mylauncher = awful.widget.launcher({ image = beautiful.awesome_icon,
menu = mymainmenu })
Last edited by tjwoosta (2009-01-03 05:22:55) -
This is re:398 nature template
I'm using CC, if that matters.
I'm amateur, please be kind If you will kindly reference the template, I will compensate with appreciation.
Problem A.) I have tried for HOURS--cannot make this image fill the page (I plan to have a different background image on different pages). I read around and pasted in it's exact size, etc. It doesn't move and it's cut off top & bottom. Left & right are perfect. Here is where I am so far:
<div class="image-section">
<div class="image-container">
<img src="images/cover_A.jpg" id="home-img" class="main-img inactive" alt="Home" height="2700" width="3946" >
<img src="images/main_modified.jpg" id="about-img" class="inactive" alt="About">
<img src="images/main_modified.jpg" id="news-img" class="inactive" alt="news">
<img src="images/main_modified.jpg" id="excerpt-img" class="inactive" alt="excerpt">
<img src="images/main_modified.jpg" id="purchase-img" class="inactive" alt="Contact">
</div>
</div>
.image-section {
position: fixed;
.image-container {
position: relative;
max-height:2700px;
max-width:3946px;
padding: 100px 5px 2px;
.image-container img {
position:relative;
height:2700px;
width:3946px;
padding: 100px 5px 2px;
Problem B.) This somewhat transparent block..I need to move it. I can't figure out what it's called and Dreamweaver hardly lets me select it.
<div class="row">
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12 col-lg-offset-6 col-md-offset-6 templatemo-content-wrapper">
<div class="templatemo-content">
<section id="home-text" class="active templatemo-content-section">
I'm not even sure if this applies to it:
.templatemo-site-title a, .templatemo-site-title a:hover {
color: #fff;
text-decoration: none;
font-family: raleway;
font-weight: 500;
font-size: 37pt;
font-style: normal;
img.slide {
width: 100%;
z-index: -9999999;
position: absolute;
.active {
display: block;
.inactive {
left: 703px;
display: none;
Problem C.) Probably simple: I was able to get the menu horizontal (actually through this forum's help) how can I get it to center on the top of the page?
.menu {
position: fixed;
width:auto;
z-index: 1;
top: 28px;
#menu-list {
background-color: rgba(0, 0, 0,0.5);
font-size:18px;
padding: 0;
float: left;
list-style: none;
width: 100%;
#menu-list > li {
float:left;
#menu-list > li > a {
font-family: 'Raleway', sans-serif;
padding: 10px 50px 10px 50px;
text-decoration: none;
display: block;
color: #fff;
font-weight:bold;
If this is totally messed up (possibly a great chance of this..), don't be shy to politely ask or see the template! I am desperate and will reply immediately. THANKS SO MUCH! The floating white square (I want to use it on some pages, but in a different place) and the image being cut off are particularly painful. I am sure I'll run into other things, but I have exhausted my time on the problems above and am stuckHi! Oh I am so glad someone replied!
Unfortunately, it's not on a server yet. I can paste the full code here, if that's ok.
<!DOCTYPE html>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
<head>
<meta charset="utf-8">
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><![endif]-->
<title>AdobeForumHelpPlaceholder</title>
<meta name="keywords" content="" />
<meta name="description" content="" />
<!--
Nature Template
http://www.templatemo.com/preview/templatemo_398_nature
-->
<meta name="viewport" content="width=device-width">
<!-- Google Web Font Embed -->
<link href='http://fonts.googleapis.com/css?family=Raleway:400,600,500,300,700' rel='stylesheet' type='text/css'>
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="css/templatemo_main.css">
<!--The following script tag downloads a font from the Adobe Edge Web Fonts server for use within the web page. We recommend that you do not modify it.--><script>var __adobewebfontsappname__="dreamweaver"</script><script src="http://use.edgefonts.net/raleway:n1,n5:default.js" type="text/javascript"></script>
</head>
<body>
<div id="main-wrapper">
<!--[if lt IE 7]>
<p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a rel="nofollow" href="http://browsehappy.com">upgrade your browser</a> or <a rel="nofollow" href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
<![endif]-->
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12 affix text-center" style="z-index: 1;">
<ul id="responsive" style="display:none" class="hidden-lg hidden-md"></ul><!-- /.responsive -->
</div>
<div class="menu visible-md visible-lg">
<ul id="menu-list">
<li class="active home-menu"><a href="#home">Home</a></li>
<li class="about-menu"><a href="#about">The Author</a></li>
<li class="news-menu"><a href="#news">News Release</a></li>
<li class="excerpt-menu"><a href="#excerpt">Excerpt</a></li>
<li class="purchase-menu"><a href="#purchase">Buy the Book!</a></li>
</ul>
</div><!-- /.menu -->
<div class="image-section">
<div class="image-container">
<img src="images/cover_A.jpg" id="home-img" class="main-img inactive" alt="Home" height="2700" width="3946" >
<img src="images/main_modified.jpg" id="about-img" class="inactive" alt="About">
<img src="images/main_modified.jpg" id="news-img" class="inactive" alt="news">
<img src="images/main_modified.jpg" id="excerpt-img" class="inactive" alt="excerpt">
<img src="images/main_modified.jpg" id="purchase-img" class="inactive" alt="Contact">
</div>
</div>
<div class="row">
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12 col-lg-offset-6 col-md-offset-6 templatemo-content-wrapper">
<div class="templatemo-content">
<section id="home-text" class="active templatemo-content-section">
<h1 class="text-center">Welcome</h1>
<div class="col-sm-12 col-md-12 col-lg-12">
<p>Quisque non tempus lacus, non placerat arcu. Donec nibh ipsum, pharetra nec pellentesque at, mattis ut lorem. Fusce dapibus tristique neque, eget ultricies lorem tincidunt vitae. Aliquam erat volutpat. Integer vulputate ultricies nisl, sed vehicula justo accumsan non.</p>
</div>
</section><!-- /.home-text -->
<section id="about-text" class="inactive">
<h2 class="text-center">About Us</h2>
<div class="col-sm-6 col-md-6">
<p>Nullam sit amet enim vitae magna malesuada pharetra. Etiam sodales consequat purus non vulputate. Aliquam erat volutpat. Pellentesque rutrum, ligula vel fermentum imperdiet, lectus eros volutpat urna, id mollis dolor justo vulputate justo ut sit amet ante luctus metus.</p>
</div>
<div class="col-sm-6 col-md-6">
<p>Vestibulum sodales nulla eu tortor condimentum venenatis. In tellus ipsum, ullamcorper vitae justo sit amet, mattis consequat tortor. Suspendisse risus urna, posuere id orci ut, facilisis accumsan ipsum. Sed vehicula lacinia porta. Vivamus faucibus dui nulla, a aliquet nunc porta in.</p>
</div>
</section><!-- /.about-text -->
<section id="news-text" class="inactive">
<h2 class="text-center">News Release</h2>
<div class="col-sm-4 col-md-4">
<h3>Web Design</h3>
<p>Integer posuere quam a orci tempor, ut eleifend est vulputate. Nullam vitae lectus dui. Donec vulputate ac tortor id convallis. Sed nisi mauris, laoreet vitae lacus at, viverra viverra neque. Curabitur nec aliquam lacus.</p>
</div>
<div class="col-sm-4 col-md-4">
<h3>Mobile Ready</h3>
<p>This is a <a href="#">mobile website template</a> that can be viewed in mobile phones. Maecenas aliquam vitae urna sit amet elementum. Cras consequat libero nisi, vel condimentum nibh eleifend ut. Donec consequat arcu id diam viverra.</p>
</div>
<div class="col-sm-4 col-md-4">
<h3>Pixel Perfect</h3>
<p>Vestibulum sodales nulla eu tortor condimentum venenatis. In tellus ipsum, ullamcorper vitae justo sit amet, mattis consequat tortor. Suspendisse risus urna, posuere id orci ut, facilisis accumsan ipsum. Sed vehicula lacinia porta.</p>
</div>
</section><!-- /.news-text -->
<section id="excerpt-text" class="inactive">
<div class="col-sm-12 col-md-12">
<h2>Excerpt</h2>
<p>Aenean quis semper metus. Maecenas adipiscing, leo a facilisis tempor, mi quam feugiat eros, ullamcorper porttitor elit turpis ac risus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse non sem a leo mattis dapibus. Duis vel ornare arcu. Quisque at malesuada tortor.</p>
<p>Quisque non tempus lacus, non placerat arcu. Donec nibh ipsum, pharetra nec pellentesque at, mattis ut lorem. Fusce dapibus tristique neque, eget ultricies lorem tincidunt vitae. Aliquam erat volutpat. Integer vulputate ultricies nisl, sed vehicula justo accumsan non.</p>
</div>
</section><!-- /.excerpt-text -->
<section id="purchase-text" class="inactive">
<div class="col-sm-12 col-md-12">
<div class="row">
<div class="col-sm-12 col-md-12"><h2>Contact</h2></div>
<div class="clearfix"></div>
</div>
<div class="row">
<div class="col-sm-6 col-md-6">
<div id="map-canvas"></div>
<p>120 Aenean quis semper. Maecenas adipiscing, facilisis tempor, mi quam feugiat 10450</p>
</div>
<div class="col-sm-6 col-md-6">
<form action="#" method="post">
<div class="form-group">
<!--<label for="contact_name">Name:</label>-->
<input type="text" id="contact_name" class="form-control" placeholder="Name" />
</div>
<div class="form-group">
<!--<label for="contact_email">Email:</label>-->
<input type="text" id="contact_email" class="form-control" placeholder="Email Address" />
</div>
<div class="form-group">
<!--<label for="contact_message">Message:</label>-->
<textarea id="contact_message" class="form-control" rows="9" placeholder="Write a message"></textarea>
</div>
<button type="submit" class="btn btn-primary">Send</button>
</form>
</div>
<div class="clearfix"></div>
</div>
</div>
</section><!-- /.purchase-text -->
</div><!-- /.templatemo-content -->
</div><!-- /.templatemo-content-wrapper -->
</div>
<!-- /.row -->
<div class="row">
<div class="image-container">
<p class="footer-text">Copyright © 2015</p>
</div><!-- /.footer -->
</div>
</div><!-- /#main-wrapper -->
<div id="preloader">
<div id="status"> </div>
</div><!-- /#preloader -->
<script src="js/jquery.min.js"></script>
<script src="js/jquery.backstretch.min.js"></script>
<script src="js/templatemo_script.js"></script>
<!-- templatemo 398 nature -->
</body>
</html>
Nature Template
http://www.templatemo.com/preview/templatemo_398_nature
body, html { overflow-x: hidden; }
body {
font-size: 1em;
line-height: 1.4;
font-family: 'Raleway', sans-serif;
font-style: normal;
-webkit-font-smoothing: antialiased; /* Fix for webkit rendering */
-webkit-text-size-adjust: 100%;
h1, h2, h3, h4, h5, h6, span, p { font-family: 'Raleway', sans-serif; }
hr {
display: block;
height: 1px;
border: 0;
border-top: 1px solid #ccc;
margin: 1em 0;
padding: 0;
img {
vertical-align: middle;
/* Preloader */
#preloader {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #fff; /* change if the mask should have another color then white */
z-index: 99; /* makes sure it stays on top */
#status {
width: 200px;
height: 200px;
position: absolute;
left: 50%; /* centers the loading animation horizontally one the screen */
top: 50%; /* centers the loading animation vertically one the screen */
background-image: url(../images/status.gif); /* path to your loading animation */
background-repeat: no-repeat;
background-position: center;
margin: -100px 0 0 -100px; /* is width and height divided by two */
/* General */
#main-wrapper {
overflow: hidden;
.templatemo-site-title {
color: #fff !important;
text-shadow: 0px 2px 3px rgba(0, 0, 0, 1);
font-size: 48px;
.templatemo-site-title a, .templatemo-site-title a:hover {
color: #fff;
text-decoration: none;
font-family: raleway;
font-weight: 500;
font-size: 37pt;
font-style: normal;
img.slide {
width: 100%;
z-index: -9999999;
position: absolute;
.active {
display: block;
.inactive {
left: 703px;
display: none;
.image-section {
position: fixed;
.image-container {
position: relative;
max-height:2700px;
max-width:3946px;
padding: 100px 5px 2px;
.image-container img {
position:relative;
height:2700px;
width:3946px;
padding: 100px 5px 2px;
.templatemo-content {
position: static;
overflow: hidden;
margin-top: 36%;
.templatemo-content section {
font-family: 'Raleway', sans-serif;
position: relative;
overflow: hidden;
top: 0;
background-color: rgba(255,255,255,0.75);
padding-bottom: 20px;
.templatemo-content-wrapper {
overflow: hidden;
.templatemo-content h2 {
color: #000;
font-family: 'Raleway', sans-serif;
.templatemo-content p {
font-family: 'Raleway', sans-serif;
color: #000;
font-size: 16px;
.menu {
position: fixed;
width:auto;
z-index: 1;
top: 28px;
#menu-list {
background-color: rgba(0, 0, 0,0.5);
font-size:18px;
padding: 0;
float: left;
list-style: none;
width: 100%;
#menu-list > li {
float:left;
#menu-list > li > a {
font-family: 'Raleway', sans-serif;
padding: 10px 50px 10px 50px;
text-decoration: none;
display: block;
color: #fff;
font-weight:bold;
#menu-list > .active > a,
#menu-list > li > a:hover {
background-color: rgba(255,255,255,0.25);
#responsive {
font-size: 16px;
padding: 0;
background-color: rgba(0,0,0,0.5);
#responsive li {
display: block;
#responsive li a {
font-family: 'Raleway', sans-serif;
color: #fff;
text-decoration: none;
padding: 10px 0;
display: block;
#responsive > .active > a,
#responsive li a:hover {
background-color: rgba(0,0,0,0.5);
#map-canvas {
height: 256px;
margin-bottom: 10px;
.templatemo-content {
padding-bottom: 6%;
.footer {
overflow: hidden;
position: fixed;
bottom: 10px;
.footer-text {
font-family: 'Raleway', sans-serif;
color: #fff;
text-shadow: 0px 2px 3px rgba(0, 0, 0, 1);
margin-left: 30px;
font-size: 14px;
.footer-text a, .footer-text a:hover {
color: #fff;
text-decoration: none;
#menu-list .about-menu a {
@media (max-width: 992px) {
.footer {
overflow:hidden;
position:static;
text-align: center;
.footer-text {
margin-left: 0;
bootstrap
* Bootstrap v3.1.1 (http://getbootstrap.com)
* Copyright 2011-2014 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
/*! normalize.css v3.0.0 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}bod y{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,s ummary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:basel ine}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{backgroun d:0 0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0 ;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}sv g:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}cod e,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select, textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-tr ansform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor: pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0; padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:borde r-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit- outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-siz ing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]:: -webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appeara nce:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{bor der-collapse:collapse;border-spacing:0}td,th{padding:0}@media print{*{text-shadow:none!important;color:#000!important;background:transparent!important; box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:av oid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}s elect{background:#fff!important}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000! important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:bor der-box}:before,:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing :border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-famil y:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;backgro und-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-hei ght:inherit}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decora tion:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.i mg-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%; height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.428571 43;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50% }hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidde n;clip:rect(0,0,0,0);border:0}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inheri t;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:400;line-height:1;color:#999}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;marg in-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4 ,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}cite{font-style:normal }.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.t ext-justify{text-align:justify}.text-muted{color:#999}.text-primary{color:#428bca}a.text-p rimary:hover{color:#3071a9}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c} .text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.tex t-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534 }.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover{background-color:#3071 a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-in fo{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{backgroun d-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f 2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40 px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-lef t:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px ;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font -weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellip sis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#999}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border -right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:20px;font-styl e:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Couri er New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;white-space:nowrap;border-radius :4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;colo r:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:tran sparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{marg in-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-lef t:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col -xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col -sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col -md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col -lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col -xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-x s-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;p adding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.c ol-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-x s-11{width:92.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width: 66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667% }.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{w idth:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:92.66666667%}.col-xs-pul l-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs -pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col -xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}. col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:0}.col-xs-push-12{left:100%}.col-xs-p ush-11{left:92.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs -push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs -push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs -push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:0}.col-xs-of fset-12{margin-left:100%}.col-xs-offset-11{margin-left:92.66666667%}.col-xs-offset-10{marg in-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.6666 6667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-o ffset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset- 3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8 .33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,. col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col- sm-11{width:92.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width :66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667 %}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{ width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:92.66666667%}.col-sm-pu ll-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-s m-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.co l-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%} .col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:0}.col-sm-push-12{left:100%}.col-sm- push-11{left:92.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-s m-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-s m-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-s m-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:0}.col-sm-o ffset-12{margin-left:100%}.col-sm-offset-11{margin-left:92.66666667%}.col-sm-offset-10{mar gin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.666 66667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm- offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset -3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left: 8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,. col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col- md-11{width:92.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width :66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667 %}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{ width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:92.66666667%}.col-md-pu ll-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-m d-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.co l-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%} .col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:0}.col-md-push-12{left:100%}.col-md- push-11{left:92.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-m d-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-m d-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-m d-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:0}.col-md-o ffset-12{margin-left:100%}.col-md-offset-11{margin-left:92.66666667%}.col-md-offset-10{mar gin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.666 66667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md- offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset -3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left: 8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7, .col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col -lg-11{width:92.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{widt h:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.6666666 7%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1 {width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:92.66666667%}.col-lg-p ull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col- lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.c ol-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667% }.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:0}.col-lg-push-12{left:100%}.col-lg -push-11{left:92.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col- lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col- lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col- lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:0}.col-lg- offset-12{margin-left:100%}.col-lg-offset-11{margin-left:92.66666667%}.col-lg-offset-10{ma rgin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66 666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg -offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offse t-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left :8.33333333%}.col-lg-offset-0{margin-left:0}}table{max-width:100%;background-color:transpa rent}th{text-align:left}.table{width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbo dy>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{paddi ng:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.tabl e>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgro up+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table> tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.t able-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.tabl e-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th, .table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border :1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.tab le-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background -color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-co lor:#f5f5f5}table col[class*=col-]{position:static;float:none;display:table-column}table td[class*=col-],table th[class*=col-]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,. table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody> tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td ,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoo t>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover >tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.acti ve:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success ,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>t foot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.s uccess>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th {background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th. success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>t h{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr >td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>th ead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.ta ble>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>t r>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.t able-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.tab le>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody> tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warnin g>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.tab le>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.ta ble-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tb ody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr >td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,. table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot> tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th {background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.d anger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th{ba ckground-color:#ebcccc}@media (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;overf low-x:scroll;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-res ponsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>t foot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.tabl e-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{borde r:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bor dered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.t able-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered> tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-l eft:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bo rdered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.ta ble-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tb ody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right :0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-borde red>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table -responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;mar gin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;fo nt-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px;font-weight:700}input[type=search]{- webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=r adio],input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;widt h:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=radio]: focus,input[type=checkbox]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-si ze:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34 px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-im age:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:- ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form- control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{he ight:auto}input[type=search]{-webkit-appearance:none}input[type=date]{line-height:34px}.fo rm-group{margin-bottom:15px}.radio,.checkbox{display:block;min-height:20px;margin-top:10px ;margin-bottom:10px;padding-left:20px}.radio label,.checkbox label{display:inline;font-weight:400;cursor:pointer}.radio input[type=radio],.radio-inline input[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{float:left;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margi n-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bo ttom:0;vertical-align:middle;font-weight:400;cursor:pointer}.radio-inline+.radio-inline,.c heckbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type=radio][disabled], input[type=checkbox][disabled],.radio[disabled],.radio-inline[disabled],.checkbox[disabled ],.checkbox-inline[disabled],fieldset[disabled] input[type=radio],fieldset[disabled] input[type=checkbox],fieldset[disabled] .radio,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-he ight:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.input-lg{height:46px;pa dding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-h eight:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.has-feedback{position: relative}.has-feedback .form-control{padding-right:42.5px}.has-feedback .form-control-feedback{position:absolute;top:25px;right:0;display:block;width:34px;height :34px;line-height:34px;text-align:center}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-succe ss .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warni ng .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.form-control-static{margin-bottom:0}.help-block{dis play:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align :middle}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{float:none;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .control-label,.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:15px}.btn{display:inline-block;margin-bottom:0;font-we ight:400;text-align:center;vertical-align:middle;cursor:pointer;background-image:none;bord er:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-mo z-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn .active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decora tion:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit- box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color :#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.bt n-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[dis abled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disa bled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[di sabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[d isabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#428bca; border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primar y.active,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.bt n-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[dis abled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disa bled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[di sabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[d isabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-success{color:#fff;background-color:#5cb8 5c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-suc cess.active,.open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.bt n-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[dis abled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disa bled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[di sabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[d isabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de; border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.op en .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.btn-i nfo:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fi eldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad 4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-war ning.active,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.bt n-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[dis abled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disa bled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[di sabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[d isabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534 f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger. active,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.btn -danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabl ed],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disable d] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disab led] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disa bled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#428bca;font-weight:400;cursor :pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link, .btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover, .btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn- link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding :5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding: 1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%; padding-left:0;padding-right:0}.btn-block+.btn-block{margin-top:5px}input[type=submit].btn -block,input[type=reset].btn-block,input[type=button].btn-block{width:100%}.fade{opacity:0 ;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{p osition:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons -halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregu lar) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyp hicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antiali ased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon -plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{ content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content :"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"} .glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphico n-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empt y:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{con tent:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e01 1"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{con -
Aperture is displaying the metering grid on my images - how do I turn this off?
Aperture is displaying the metering grid from my camera - how do I turn this off? If I use the loop the grid is not there.....any thoughts whould be appericated.
Does the command "View > Show Focus Points" disable the grid? I don't know of any other control that would show the metering details.
Maybe you are looking for
-
Stock Aging report with current date
Dear Experts Can we able to take stock aging report with current date? Thanks&Regards, Vinoth Raj K
-
Movie with BEST POSSIBLE QUALITY on DVD
Hi, I completed a short family movie (15 min) in PAL format with Final Cut Express HD. How do I get it from there onto a DVD in PAL format with the BEST POSSIBLE QUALITY? Thank you in advance for your help, Thomas Dual 2.7 GHz Power Mac G5 Mac OS X
-
RAM issues when plugging in external devices
When I plug external devices in such as a USB drive, iPhone or a Firewire external HDD the RAM usage on my Mac shoots up beyond normal levels. This has only started happening recently. Say for example I plug in my iPhone to sync it. With only iTunes
-
Mac Pro 5,1 processor compatibility?
I have a 2010 8 core 2.4GHz Mac Pro and for curiosity's sake I wanted to know what my options were in terms of upgrade? I just got the unit, so no changes are immediate. But it's my understanding that I could eventually swap the 2.4 chips for faster
-
Handling Image Drag Event in MVVM?
HI All, Am Developing WPF App Where in my requirement is drag and drop images,I can do this easily using code behind file but i need to do the same thing in Viewmodel. I tried Following Code. <Grid> <DockPanel> <ListBox x:Name="Images"> <ListBox.Reso