repozish 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. data/bin/repozish +119 -0
  2. data/lib/repozish.rb +0 -0
  3. metadata +66 -0
data/bin/repozish ADDED
@@ -0,0 +1,119 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'optparse'
4
+ require 'fileutils'
5
+ require 'yaml'
6
+
7
+ DOLLA_ZERO = File.basename $0
8
+ DOC_RUN_CONTROL = "~/.#{DOLLA_ZERO}rc"
9
+ RUN_CONTROL = File.expand_path DOC_RUN_CONTROL
10
+ USAGE = """
11
+ `#{DOLLA_ZERO}(1)` -- mac os x window layout utility
12
+ ===============================================
13
+
14
+ ## synopsis
15
+
16
+ #{DOLLA_ZERO} [-hg] [-a <app1>,<app2>,...] [<profile>]
17
+
18
+ ## description
19
+
20
+ nerd alert! `#{DOLLA_ZERO}(1)` repositions the windows of your applications to
21
+ your preferred layout.
22
+
23
+ ## getting the positions and sizes of windows:
24
+
25
+ executing the following:
26
+
27
+ #{DOLLA_ZERO} -g -a Safari,Terminal,Twitter,MacVim
28
+
29
+ will get the current positions and sizes of the listed applications, and write
30
+ them to your `#{DOC_RUN_CONTROL}` file.
31
+
32
+ ## setting the positions and sizes of windows:
33
+
34
+ executing the following:
35
+
36
+ #{DOLLA_ZERO}
37
+
38
+ will read the positions of the files in `#{DOC_RUN_CONTROL}` and position and
39
+ size the apps accordingly.
40
+
41
+ ## other notes
42
+
43
+ `#{DOLLA_ZERO}(1)` only operates on the front window of applications. it may
44
+ not work as desired with applications that have more than one window.
45
+
46
+ `#{DOLLA_ZERO}(1)` will first use the application list passed in with the '-a'
47
+ flag. if the '-a' flag isn't given, it will use the apps listed in
48
+ `#{DOC_RUN_CONTROL}`. otherwise it'll just like crash or something.
49
+
50
+ you may optionally specify a profile name. for instance if you want a different
51
+ window layout when you're doing a preso or some crap:
52
+
53
+ #{DOLLA_ZERO} -ga Safari,Terminal,Twitter,MacVim alt_layout
54
+ #{DOLLA_ZERO} alt_layout
55
+
56
+ when you omit the profile, `#{DOLLA_ZERO}(1)` picks a default profile name
57
+ that's specific to the monitor configuration. so as long as you've set up
58
+ profiles for the monitors that are currently plugged in, you can just run:
59
+
60
+ #{DOLLA_ZERO}
61
+
62
+ and it will choose the appropriate layout for the attached screens.
63
+
64
+ ## options
65
+
66
+ """
67
+
68
+ def set_dims(app, dims)
69
+ `osascript -e 'tell application "#{app}" to set the bounds of the front window to {#{dims.join ', '}}'`
70
+ end
71
+
72
+ def get_dims(app)
73
+ `osascript -e 'tell application "#{app}" to get the bounds of the front window'`
74
+ end
75
+
76
+ def displays()
77
+ display_data = YAML.load(`system_profiler SPDisplaysDataType`)
78
+ display_data['Graphics/Displays'].map do |d|
79
+ monitors = d[1]['Displays']
80
+ if monitors && monitors.length
81
+ monitors.map{|m| m[1]['Resolution']}.join('').gsub(' ', '')
82
+ end
83
+ end.find_all{|d| d}.join "_"
84
+ end
85
+
86
+ mode = 'set'
87
+ apps = nil
88
+
89
+ o = OptionParser.new do |o|
90
+ o.on('-a', '--apps app1,app2', 'apps to size and reposition') do |apps|
91
+ apps = apps.split ','
92
+ end
93
+ o.on('-g', '--get', "'get' mode -- just write the apps' positions") do
94
+ mode = 'get'
95
+ end
96
+ o.on('-h', '--help', 'print this help message') do
97
+ puts USAGE + o.summarize.join
98
+ exit
99
+ end
100
+ o.parse! # oh, parse!
101
+ end
102
+
103
+ profile = ARGV[0] || "_default" + displays
104
+
105
+ rc = File.exists?(RUN_CONTROL)? YAML::load_file(RUN_CONTROL) : {}
106
+ rc[profile] = {} unless rc[profile]
107
+
108
+ apps = rc[profile].keys unless apps
109
+
110
+ apps.each do |app|
111
+ if mode == 'get'
112
+ rc[profile][app] = get_dims(app).split(',').map {|s| s.to_i}
113
+ else
114
+ set_dims app, rc[profile][app] if rc[profile][app]
115
+ end
116
+ end
117
+
118
+ File.open(RUN_CONTROL, 'w') { |f| f.write(rc.to_yaml) }
119
+
data/lib/repozish.rb ADDED
File without changes
metadata ADDED
@@ -0,0 +1,66 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: repozish
3
+ version: !ruby/object:Gem::Version
4
+ hash: 31
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 0
10
+ version: 0.0.0
11
+ platform: ruby
12
+ authors:
13
+ - Aaron Stacy
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2012-12-10 00:00:00 Z
19
+ dependencies: []
20
+
21
+ description: "\n repozish allows you to move apps where you want them, save their sizes and\n positions to a profile, and then reposition everything to your desired\n layout. profiles by default are specific to the screens attached to your\n computer.\n "
22
+ email: aaron.r.stacy@gmail.com
23
+ executables:
24
+ - repozish
25
+ extensions: []
26
+
27
+ extra_rdoc_files: []
28
+
29
+ files:
30
+ - bin/repozish
31
+ - lib/repozish.rb
32
+ homepage: https://github.com/aaronj1335/repozish
33
+ licenses:
34
+ - MIT
35
+ post_install_message:
36
+ rdoc_options: []
37
+
38
+ require_paths:
39
+ - lib
40
+ required_ruby_version: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ hash: 3
46
+ segments:
47
+ - 0
48
+ version: "0"
49
+ required_rubygems_version: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ hash: 3
55
+ segments:
56
+ - 0
57
+ version: "0"
58
+ requirements: []
59
+
60
+ rubyforge_project:
61
+ rubygems_version: 1.8.24
62
+ signing_key:
63
+ specification_version: 3
64
+ summary: size and reposition windows in mac os x based on saved profiles
65
+ test_files: []
66
+